━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
投げ銭アプリ
──────────────────────────────────────────────────
URL    : http://www.curewallet.org/
MAIL   : nezumi-kozo@outlook.jp
AUTHOR : Nezumi Kozo

仮想通貨寄付アドレス
MONACOIN : M8FTao8RwLc89988PxcEEwV8JAC5b4iRwG
KUMACOIN : KLRUHfRZ2pX5wtPnPLHNoyT2SWgitscFv4
RINGO    : RDo62ak2Yurqo6fzWb2vs1JwKcTEgJttEX
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
投げ銭アプリはMonacoinやKumacoinなどの仮想通貨(暗号通貨)の投げ銭プログラムです。
現バージョンでは2ちゃんねるの書き込みに対する投げ銭のみ対応しています。

実行にはJava6以上のインストールと設定が必要です。
また現バージョン(1.x)は設定等にXML等の知識がある方が前提となっているため、
利用の難易度が少し高めです。将来的にはGUI化も考えております。


──────────────────────────────────────────────────
初めに(免責事項等)
──────────────────────────────────────────────────
本ソフトウェアは Apache License, Version 2.0 の元に配布されます。
本ソフトウェアを利用することによって生じる如何なる損害についても著作者は一切責任を負いません。
特に仮想通貨という通貨を扱うプログラムであるため、
ご利用される際には十分に評価をした上で自己責任の上ご利用ください。


以下に利用方法等を説明しますが、細かい説明はWebに記載予定です。
http://www.curewallet.org/entry/nagesen

──────────────────────────────────────────────────
ファイル構成
──────────────────────────────────────────────────
nagesen
　|- bat : 投げ銭を実行するファイル
　　|- 2ch-nagesen.bat : 投げ銭実行ファイル(要修正)
　　|- 2ch-test-kumacoin.bat : Kumacoinテスト用投げ銭実行ファイル
　　|- 2ch-test-monacoin.bat : Monacoinテスト用投げ銭実行ファイル
　　|- 2ch-test-ringo.bat : Ringoテスト用投げ銭実行ファイル
　|- conf : 設定ファイル
　　|- 2ch-kumacoin.dicon : Kumacoin用設定ファイル
　　|- 2ch-monacoin.dicon : Monacoin用設定ファイル
　　|- 2ch-ringo.dicon : Ringo用設定ファイル
　　|- 2ch-test-kumacoin.dicon : Kumacoinテスト用設定ファイル
　　|- 2ch-test-monacoin.dicon : Monacoinテスト用設定ファイル
　　|- 2ch-test-ringo.dicon : Ringoテスト用設定ファイル
　|- developer
　　|- apidocs : JavaDoc
　　|- nagesen-${バージョン}.jar : 投げ銭アプリ(lib配下と同じ)
　　|- nagesen-${バージョン}-source.zip : ソースコード
　|- lib : 必要なライブラリ
　　|- nagesen-${バージョン}.jar
　　|- その他


──────────────────────────────────────────────────
動作環境、ライブラリなど
──────────────────────────────────────────────────
対応ＯＳ：Windows, MacOS, Linux ※Java6以降をダウンロードできる環境
動作検証：Windows 8.1 64bit

必要なソフトウェア
　- Javaの6.0以降
　- Bitcoin準拠のJSON-RPC APIの利用できる仮想通貨ウォレット(qtなど)

利用ライブラリ(同梱)
　- aopalliance-1.0.jar
　- commons-beanutils-1.9.2.jar
　- commons-cli-1.2.jar
　- commons-codec-1.9.jar
　- commons-collections-3.2.1.jar
　- commons-io-2.2.jar
　- commons-lang3-3.3.2.jar
　- commons-logging-1.1.3.jar
　- curewallet-lib-0.4.1.jar
　- httpclient-4.3.4.jar
　- httpcore-4.3.2.jar
　- javassist-3.4.ga.jar
　- jsonic-1.3.5.jar
　- log4j-1.2.17.jar
　- ognl-2.6.9-patch-20090427.jar
　- s2-framework-2.4.47.jar
　- slf4j-api-1.7.7.jar
　- slf4j-log4j12-1.7.7.jar
　- slf4j-nop-1.7.7.jar


──────────────────────────────────────────────────
仮想通貨のウォレットの設定
──────────────────────────────────────────────────
[設定例] Windows 8.1でMonacoinの設定
C:\Users\hirotaka\AppData\Roaming\Monacoinにmonacoin.confを作成します。
※詳しくは各仮想通貨の公式やWikiなどを参照。

↓↓↓ここから↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
rpcuser=1
rpcpassword=2
rpcallowip=127.0.0.1
rpcport=9302
daemon=1
server=1
gen=0
↑↑↑ここまで↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

主な設定内容
　- rpcuser：ウォレットに接続するためのユーザ名 
　- rpcpassword：ウォレットに接続するためのパスワード
　- rpcallowip：ウォレットに接続可能なIPアドレス(ワイルドカード化)
　- rpcport：ポート番号
　- server：1にするとサーバーモードで起動

monacoin.confを作成し、ウォレットを起動すれば設定値でサーバーモードで起動します。


──────────────────────────────────────────────────
アプリの設定
──────────────────────────────────────────────────
conf配下のxxxx.diconが設定ファイルの元になります。
送金処理のされないテスト用設定ファイルは「2ch-test-仮想通貨名.dicon」、
送金用設定ファイルは「2ch-仮想通貨名.dicon」となります。

設定ファイルはXMLとなるため、<!--  -->に囲まれた箇所がコメント(処理されない内容)となります。
また文字列は" "で囲み、数値は" "で囲みません(この辺はテスト用で調整してください)。

ここでは変更の必要な箇所のみを説明します。

■host, port, user, passwordをウォレットのconfファイルに設定した内容と同じにしてください。
	<component name="HttpClient" class="org.curewallet.lib.httpclient.BasicAuthenticationHttpClient">
		<property name="host">"localhost"</property>
		<property name="port">9302</property>
		<property name="user">"1"</property>
		<property name="password">"2"</property>

■重複検証
　デフォルトはIDもしくはアドレスの重複には送金しません。
	<component name="UniqueValidator" class="org.curewallet.nagesen.validator.unique.OverlapNGUniqueValidator"></component>

　重複に対しても送金する場合は以下のように変更します。
	<component name="UniqueValidator" class="org.curewallet.nagesen.validator.unique.NoCheckUniqueValidator"></component>

■レス本文の検証
　デフォルトはレス本文の内容により送金の有無を決定することはありません。
	<component name="MessageValidator" class="org.curewallet.nagesen.validator.message.IncludeMessageValidator">
		<property name="checkString">new String[]{}</property>
	</component>

　例えば pochi もしくは ポチ が含まれる場合に送金する場合は以下のように変更します。
	<component name="MessageValidator" class="org.curewallet.nagesen.validator.message.IncludeMessageValidator">
		<property name="checkString">new String[]{"pochi","ポチ"}</property>
	</component>

■送金額の指定
　デフォルトは固定金額0.01を送金します。
	<component name="Amount" class="org.curewallet.nagesen.amount.FixedAmount">
		<property name="amount">0.01</property>
	</component>

　例えば変動で0.01～0.1の間で送金する場合は以下のように変更します。
	<component name="Amount" class="org.curewallet.nagesen.amount.RandomAmount">
		<property name="max">0.1</property>
		<property name="min">0.01</property>
	</component>

■2ちゃんねるの情報を設定します。
	<component name="Executer" class="org.curewallet.nagesen.nich.NichExecuter">
		<property name="url">"http://anago.2ch.net/test/read.cgi/software/1401366844/"</property> <!-- スレッドのURL -->
		<property name="startResNo">1</property>				<!-- 送金を開始するレス番号 -->
		<property name="endResNo">1000</property>				<!-- 送金を終了するレス番号 -->
		<property name="includeMessageAddress">true</property>	<!-- 本文中のアドレスも含める場合はtrue、含めない場合はfalse -->


■ウォレットの情報を設定します。
	<component name="WalletInfo" class="org.curewallet.nagesen.wallet.WalletInfo">
		<property name="passphrase">"1"</property>			<!-- 暗号化してる場合はパスワード、してなければ""を指定 -->
		<property name="fromAccount">"develop"</property>	<!-- ラベルを指定して送金する場合はラベル名、指定しなければ""を指定 -->


──────────────────────────────────────────────────
実行方法
──────────────────────────────────────────────────
ここではWindowsのbatファイルについて説明します。
MacOSやLinuxの場合はbashなどで同様の内容でシェルを作成してください。

bat配下の2ch-xxxx.batが実行ファイルの元になります。
送金処理のされないテスト用実行ファイルは「2ch-test-仮想通貨名.bat」となり、
送金用実行ファイルは「2ch-nagesen.bat」として存在しない設定ファイル(2ch-xxxx.dicon)を指定しているため、
送金用設定ファイルを指定するよう修正します。

java -cp クラスパス org.curewallet.nagesen.Main -d 設定ファイル -m 投げる人数 -i datチェック間隔(ミリ秒)

[実行例] 50人に送金し、スレッドは30秒毎にチェック
java -cp .;../conf;../lib/* org.curewallet.nagesen.Main -d 2ch-monacoin.dicon -m 50 -i 30000

必ずテスト用のbatファイルでエラーが発生しないことを確認して下さい。
エラーはERRORやExceptionといったメッセージがログやコンソールに出力されます。
以下のようなメッセージがで続けていれば成功しています。

Response info: status-code=200, Last-Modified=Sun, 08 Jun 2014 11:02:04 GMT, byte-size=111958
monacoin M8FTao8RwLc89988PxcEEwV8JAC5b4iRwG 0.01 201406090152265
※コイン名 送金先アドレス 送金額 時刻

実行したフォルダにlogフォルダが作成され、ログはそこに出力されます。
　- nagesen.log：アプリのログ
　- send.log：送金ログ
