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    }