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 }