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.BufferedReader;
019 import java.io.IOException;
020 import java.net.URLDecoder;
021 import java.net.URLEncoder;
022
023 import org.opengion.fukurou.util.LogWriter;
024 import org.opengion.fukurou.util.StringUtil;
025 import org.opengion.fukurou.util.URLConnect;
026 import org.opengion.hayabusa.common.HybsSystem;
027 import org.opengion.hayabusa.html.AbstractCreateToken;
028
029 import aspera.tokengen.ASTokenGen;
030 /**
031 * Asperaのト?クンを付加するためのプラグインです?
032 *
033 * 毎回tokengenをcallするため利用する場合?若干時間がかかります?
034 *
035 *
036 * 以下をシス?リソースで設定可能で?
037 * AS_NODE_USER : ノ?ドユーザ。?期?はnode_user
038 * AS_NODE_PASS : ノ?ドユーザのパスワード?初期値はnode_pass
039 * AS_NODE_URL : ノ?ド?アドレス。?期?はhttp://devdemo.asperasoft.com:9092
040 *
041 * tokenを利用した認証につ?はAsperaの開発?イ?
042 * https://developer.asperasoft.com/Home
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" );
069 private static final String AS_NODE_URL = StringUtil.nval(HybsSystem.sys( "AS_NODE_URL " ),"http://devdemo.asperasoft.com:9092" );
070
071 private static String AS_NODE_API = AS_NODE_URL + "/files/download_setup";
072 private URLConnect conn = null;
073
074 // private ASTokenGen generator; // static化するとセキュリ?上危険な可能性がある?で?ておく(transferPathの削除が?来な?ぽ??
075
076 /**
077 * ?ォルトコンストラクター?
078 *
079 */
080 public CreateToken_Aspera(){
081 // ト?クンを作?する場?
082 // generator = new ASTokenGen( AS_NODE_USER, null, Direction.DOWNLOAD);
083 // generator.setAsTokenGenPath( AS_TOKENGEN_PATH );
084 // generator.setEncryptionKey( AS_TOKEN_ENCR );
085
086 conn = new URLConnect(AS_NODE_API ,AS_NODE_USER +":"+AS_NODE_PASS);
087 conn.setRequestProperty( "Content-Type,Accept", "application/json; charset=UTF8,application/json" );
088 }
089
090
091 /**
092 * アスペラのト?クンを付けたURLを返します?
093 *
094 *
095 * @return URL
096 */
097 @Override
098 public String generateURL( final String inURL, final long time, final String user, final String[] param ){
099 // tokenGeneratorでのト?クン作?方?
100 // generator.addTransferPath( inURL );
101 // generator.setLifeSeconds(3600);
102 // ASToken token = generator.generateASToken();
103 // if( token == null ){
104 // System.out.println("Aspera token is null : " + inURL);
105 // return inURL;
106 // }
107 // token.toString();
108
109 // AsperaNodeAPIを利用してト?クン付JSONを取得す?
110 // ユーザはト?クン用の共通ユーザを利用してconnectする?
111 StringBuffer rtnMessage = new StringBuffer("");
112 try{
113 String encURL = URLEncoder.encode( inURL, "UTF-8" );
114 //String encURL = inURL;
115 conn.setPostData( "{ \"transfer_requests\" : [ { \"transfer_request\" : { \"paths\" : [ { \"source\" : \""+encURL+"\" } ] } } ] }" );
116
117 conn.connect();
118
119 BufferedReader reader = conn.getReader();
120 String s;
121 while ((s = reader.readLine()) != null) {
122 rtnMessage.append( URLDecoder.decode( s, "UTF-8" ) );
123 }
124 reader.close();
125
126 }
127 catch( IOException ex ) {
128 System.out.println(ex);
129 String errMsg = "Daemon_URLConnect:??タ取得中にエラーが発生しました? + HybsSystem.CR
130 + " inURL=[" + inURL + "]" + HybsSystem.CR
131 + ex;
132 LogWriter.log( errMsg );
133 rtnMessage = new StringBuffer(inURL);
134 }
135 catch( Exception ex){
136 System.out.println(ex);
137 String errMsg = "Daemon_URLConnect:??タ取得中にエラーが発生しました? + HybsSystem.CR
138 + " inURL=[" + inURL + "]" + HybsSystem.CR
139 + ex;
140 LogWriter.log( errMsg );
141 rtnMessage = new StringBuffer(inURL);
142 }
143 finally {
144 if( conn != null ) { conn.disconnect(); }
145 }
146
147 // エラー時も無視してそ?ままJSON形式を返却する?
148 // aspera用のJavaScripptを画面に読み込ませておく?あり?
149
150
151 return "javascript:fileControls.selectFolder(" + rtnMessage.toString().replace( "\"", """ ) + ")";
152 }
153
154 }