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 }