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 }