001    /*
002     * Copyright (c) 2009 The openGion Project.
003     *
004     * Licensed under the Apache License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     *     http://www.apache.org/licenses/LICENSE-2.0
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
013     * either express or implied. See the License for the specific language
014     * governing permissions and limitations under the License.
015     */
016    package org.opengion.plugin.token;
017    
018    import java.io.IOException;
019    
020    import org.opengion.fukurou.util.LogWriter;
021    import org.opengion.fukurou.util.StringUtil;
022    import org.opengion.fukurou.util.URLConnect;
023    import org.opengion.hayabusa.common.HybsSystem;
024    import org.opengion.hayabusa.html.AbstractCreateToken;
025    
026    import aspera.tokengen.ASToken;
027    import aspera.tokengen.ASTokenGen;
028    import aspera.tokengen.Direction;
029    /**
030     * Asperaのト?クンを付加するためのプラグインです?
031     * 
032     * 毎回tokengenをcallするため利用する場合?若干時間がかかります?
033     * 
034     * 
035     * 以下をシス?リソースで設定可能で?
036     * AS_NODE_USER         : ノ?ドユーザ。?期?はnode_user
037     * AS_NODE_PASS         : ノ?ドユーザのパスワード?初期値はnode_pass
038     * AS_TOKEN_ENCR        : ト?クン作?時?暗号化キー。サーバ?設定を利用する。?期?はuuidgen
039     * AS_TOKENGEN_PATH : astokengenのフルパス。?期?はHドライブ?aspera-redist/bin/windows-32-msvc2012/astokengen
040     * AS_NODE_URL          : ノ?ド?アドレス。?期?はhttp://devdemo.asperasoft.com:9092
041     * 
042     * tokenを利用した認証につ?はAsperaの開発?イ?
043     *  Home
044     *  >  GENERAL REFERENCE
045     *  >  Authentication and authorization in FASP transfers
046     *  >  Authorization
047     * を参照してください?
048     * 
049     * Home
050     * >  WEB APIs
051     * >  Node
052     * >  v1
053     * >  Rest API - Transfer Operations
054     * でNodeAPIにつ?の解説があります?
055     *
056     * @og.group 画面表示
057     * @og.rev 5.8.2.2 (2014/12/19)
058     *
059     * @version  5.0
060     * @author       Takahashi Masakazu
061     * @since    JDK5.0,
062     */
063    public class CreateToken_Aspera extends AbstractCreateToken {
064            //* こ?プログラ??VERSION??を設定します?       {@value} */
065            private static final String VERSION = "5.8.2.1 (2014/12/13)" ;
066            
067            private static final String AS_NODE_USER         = StringUtil.nval(HybsSystem.sys( "AS_TOKEN_USER " ),"node_user" );
068            private static final String AS_NODE_PASS         = StringUtil.nval(HybsSystem.sys( "AS_TOKEN_USER " ),"node_pass" );//buU7x17L
069            private static final String AS_TOKEN_ENCR        = StringUtil.nval(HybsSystem.sys( "AS_TOKEN_ENC " ),"uuidgen" );
070            private static final String AS_TOKENGEN_PATH = StringUtil.nval(HybsSystem.sys( "AS_TOKENGEN_PATH " ),"H:\\aspera-redist\\bin\\windows-32-msvc2012\\astokengen");
071    //      private static final String AS_CONF_PATH         = StringUtil.nval(HybsSystem.sys( "AS_CONF_PATH " ),"H:\\aspera-redist\\etc\\aspera.conf");
072            private static final String AS_NODE_URL  = StringUtil.nval(HybsSystem.sys( "AS_NODE_URL " ),"https://drive2.muratec.co.jp:9092" );
073            
074            private static String AS_NODE_API = AS_NODE_URL + "/files/download_setup";
075            private URLConnect conn                 = null;
076            
077            private ASTokenGen generator; // static化するとセキュリ?上危険な可能性がある?で?ておく(transferPathの削除が?来な?ぽ??
078            
079            /**
080             * ?ォルトコンストラクター?
081             *
082             */
083            public CreateToken_Aspera(){
084    //      ト?クンを作?する場?
085    //              generator = new ASTokenGen( AS_NODE_USER, null, Direction.DOWNLOAD);
086    //              generator.setAsTokenGenPath( AS_TOKENGEN_PATH );
087    //              generator.setEncryptionKey( AS_TOKEN_ENCR );
088                    
089                    conn = new URLConnect(AS_NODE_API ,AS_NODE_USER +":"+AS_NODE_PASS);
090                    conn.setRequestProperty( "Content-Type,Accept", "application/json,application/json" );
091            }
092    
093    
094            /**
095             * アスペラのト?クンを付けたURLを返します?
096             *
097             *
098             * @return  URL
099             */
100            @Override
101            public String  generateURL( final String inURL, final long time, final String user, final String[] param ){
102    //              tokenGeneratorでのト?クン作?方?
103    //              generator.addTransferPath( inURL ); 
104    //      generator.setLifeSeconds(3600);
105    //        ASToken token = generator.generateASToken();
106    //      if( token == null ){
107    //              System.out.println("Aspera token is null : " + inURL);
108    //              return inURL;
109    //      }
110    //              token.toString();
111            
112            // AsperaNodeAPIを利用してト?クン付JSONを取得す?
113            // ユーザはト?クン用の共通ユーザを利用してconnectする?
114                    String rtnMessage = inURL;
115            conn.setPostData( "{ \"transfer_requests\" : [ { \"transfer_request\" : { \"paths\" : [ { \"source\" : \""+inURL+"\" } ] } } ] }" );
116            try{
117                            conn.connect();
118                            rtnMessage = conn.getMessage();
119            }
120            catch( IOException ex ) {
121                    System.out.println(ex);
122                            String errMsg = "Daemon_URLConnect:??タ取得中にエラーが発生しました? + HybsSystem.CR
123                                                    + " inURL=[" + inURL + "]" + HybsSystem.CR
124                                                    + ex;
125                            LogWriter.log( errMsg );
126                    }
127                    finally {
128                            if( conn != null ) { conn.disconnect(); }
129                    }
130            
131                    //エラーが発生した?合などはそ?まま返す事になる?
132                    return rtnMessage;
133            }       
134    
135    }