torgtaitai / dodontof Goto Github PK
View Code? Open in Web Editor NEWオンラインセッション統合ツールどどんとふ用
Home Page: http://www.dodontof.com/
オンラインセッション統合ツールどどんとふ用
Home Page: http://www.dodontof.com/
ご無沙汰しています。
どどんとふの実装について、久方ぶりで恐縮ですが、対応願いたい事がありましたので記載いたします。
(公式サイトのBBSの方に記載するのが本筋かとも思いましたが、あちらは上手く投稿ができませんでした)
内容としては件名にある通りなのですが、dodontof.swf
内からPOSTデータを送信の際にContent-Typeを現状のapplication/x-www-form-urlencoded
ではなく、application/x-msgpack
が設定されるようにしていただきたいです。
ここの値が問題となる事は公式で推奨されている範囲ではほとんど無いとは思うのですが、一応以下のような観点から可能な限りx-www-form-urlencoded
でない値に変更した方が好ましいと考えています。
application/x-www-form-urlencoded
はデファクトな規格が存在し、一部のアプリケーションサーバやミドルウェアの機能でContent-Typeにこの値が指定されている場合にその規格を前提とした処理を暗黙裡に行う場合がある対応としてはsrc_actionScript/
配下のSaredDataSender#getUrlRequestForSendCommandDataメソッド辺りでcontentTypeを指定するのが最も簡易なやり方になると思います。
本来であればPullReq経由で修正箇所を送るべきではあるのですが、私の方の環境の問題か最新版のdodontof.swfのビルドが正常に完了できていないため十分な検証が行えていませんので一旦Issueのみ送らせていただきました。
以上です。
ご検討いただければ幸いです。
「どどんとふ」は どどんとふ安定版 Ver.1.36.00(2012/03/03)
I'm using mobantoF_Ver.0.01.00,and i want to translate to other language, where can i find Ver.1.36.00 source code
Because the copyright, please remove the chinese coc/coc 7th extratables (short /longer) that i upload.
it is my fault.
thank you for your help.
imageInfo.json にハードコーディングされている画像までのパスは使えなくなり、新しいディレクトリまでのパスを config.rb (config_local.rb) に変数 $imageUploadDir として記述しても、{$imageUploadDir}/(room_[NUMBER])/imageInfo.json のファイル内容は変更されないため、すべての画像が読み込み不能になります。
ファイルのアップロード時は相対パスでjsonに記述し、読み込み時に変数展開して画像までのパスを作ることはできないでしょうか?
最近のリファクタリングでコミット数が増えたため、リリース時のコミットが埋もれがちになってきました。そこで、GitHubの他のリポジトリと同様、リリース時にコミットへのタグを付けてみてはいかがでしょうか?
例えば、以下のようなコマンドで行うことができます。
# リリース分のコミットが終わったときに
git tag v1.48.00
# コミットを指定することも可能
git tag v1.47.24 94c3c04
# GitHub にタグをアップロードする
git push --tags origin master
また、GitHubではリリース(≒タグ、リポジトリトップの上部の「Releases」)ごとにソースコードと別にバイナリファイルをアップロードすることができます。これを利用すると、リポジトリ中に重い .swf ファイルを含めず、アップロードするバイナリファイル(例えばどどんとふ公式で配布している .zip のアーカイブ)にのみ含めることができます。このようにしてリポジトリの軽量化を行うのはいかがでしょうか?
Webインターフェースを呼び出したとき、parseWebIfMessageData()
に進んでいないようです。意図的かどうかはっきりしませんでしたが、一応報告いたします。
「printResult() 以下」の階層が深くなっているので、ここを単純化できると見通しがよくなりそうに見えます。
nil
が返るgetCgiParams() において、HTTPのGETメソッドの場合には、以下に到達し得る DodontoFServer::getMessagePackFromData() を通りません。
参考:
Lines 6939 to 6946 in 94c3c04
webifのgetBusyInfoを呼び出したときのログです。
D, [2016-04-17T21:48:00.022753 #7960] DEBUG -- : :getCgiParams Begin
D, [2016-04-17T21:48:00.022854 #7960] DEBUG -- : ENV[REQUEST_METHOD]:GET
D, [2016-04-17T21:48:00.022930 #7960] DEBUG -- : messagePackedData:{}
D, [2016-04-17T21:48:00.022961 #7960] DEBUG -- : :getCgiParams End
D, [2016-04-17T21:48:00.022989 #7960] DEBUG -- : :main called
D, [2016-04-17T21:48:00.023022 #7960] DEBUG -- : getRequestData key:room
D, [2016-04-17T21:48:00.023058 #7960] DEBUG -- : saveDataKeyName:chatMessageDataLog
D, [2016-04-17T21:48:00.023085 #7960] DEBUG -- : saveFileName:chat.json
D, [2016-04-17T21:48:00.023111 #7960] DEBUG -- : :getDirName begin..
D, [2016-04-17T21:48:00.023138 #7960] DEBUG -- : requestData:nil
D, [2016-04-17T21:48:00.023169 #7960] DEBUG -- : saveDataDirIndexObject:nil
D, [2016-04-17T21:48:00.023199 #7960] DEBUG -- : saveDataDirIndex:0
D, [2016-04-17T21:48:00.023230 #7960] DEBUG -- : saveDataDirIndex:0
D, [2016-04-17T21:48:00.023285 #7960] DEBUG -- : saveDataDirName created:../../saveData/data_0
D, [2016-04-17T21:48:00.023317 #7960] DEBUG -- : saveDataDirName:../../saveData/data_0
D, [2016-04-17T21:48:00.023347 #7960] DEBUG -- : saveDataKeyName:map
D, [2016-04-17T21:48:00.023373 #7960] DEBUG -- : saveFileName:map.json
D, [2016-04-17T21:48:00.023397 #7960] DEBUG -- : :getDirName begin..
D, [2016-04-17T21:48:00.023421 #7960] DEBUG -- : requestData:nil
D, [2016-04-17T21:48:00.023452 #7960] DEBUG -- : saveDataDirIndexObject:nil
D, [2016-04-17T21:48:00.023479 #7960] DEBUG -- : saveDataDirIndex:0
D, [2016-04-17T21:48:00.023508 #7960] DEBUG -- : saveDataDirIndex:0
D, [2016-04-17T21:48:00.023538 #7960] DEBUG -- : saveDataDirName created:../../saveData/data_0
D, [2016-04-17T21:48:00.023563 #7960] DEBUG -- : saveDataDirName:../../saveData/data_0
D, [2016-04-17T21:48:00.023590 #7960] DEBUG -- : saveDataKeyName:characters
D, [2016-04-17T21:48:00.023615 #7960] DEBUG -- : saveFileName:characters.json
D, [2016-04-17T21:48:00.023639 #7960] DEBUG -- : :getDirName begin..
D, [2016-04-17T21:48:00.023663 #7960] DEBUG -- : requestData:nil
D, [2016-04-17T21:48:00.023693 #7960] DEBUG -- : saveDataDirIndexObject:nil
D, [2016-04-17T21:48:00.023720 #7960] DEBUG -- : saveDataDirIndex:0
D, [2016-04-17T21:48:00.023749 #7960] DEBUG -- : saveDataDirIndex:0
D, [2016-04-17T21:48:00.023778 #7960] DEBUG -- : saveDataDirName created:../../saveData/data_0
D, [2016-04-17T21:48:00.023804 #7960] DEBUG -- : saveDataDirName:../../saveData/data_0
D, [2016-04-17T21:48:00.023852 #7960] DEBUG -- : saveDataKeyName:time
D, [2016-04-17T21:48:00.023891 #7960] DEBUG -- : saveFileName:time.json
D, [2016-04-17T21:48:00.023918 #7960] DEBUG -- : :getDirName begin..
D, [2016-04-17T21:48:00.023943 #7960] DEBUG -- : requestData:nil
D, [2016-04-17T21:48:00.023973 #7960] DEBUG -- : saveDataDirIndexObject:nil
D, [2016-04-17T21:48:00.024026 #7960] DEBUG -- : saveDataDirIndex:0
D, [2016-04-17T21:48:00.024064 #7960] DEBUG -- : saveDataDirIndex:0
D, [2016-04-17T21:48:00.024095 #7960] DEBUG -- : saveDataDirName created:../../saveData/data_0
D, [2016-04-17T21:48:00.024120 #7960] DEBUG -- : saveDataDirName:../../saveData/data_0
D, [2016-04-17T21:48:00.024148 #7960] DEBUG -- : saveDataKeyName:effects
D, [2016-04-17T21:48:00.024173 #7960] DEBUG -- : saveFileName:effects.json
D, [2016-04-17T21:48:00.024197 #7960] DEBUG -- : :getDirName begin..
D, [2016-04-17T21:48:00.024221 #7960] DEBUG -- : requestData:nil
D, [2016-04-17T21:48:00.024251 #7960] DEBUG -- : saveDataDirIndexObject:nil
D, [2016-04-17T21:48:00.024278 #7960] DEBUG -- : saveDataDirIndex:0
D, [2016-04-17T21:48:00.024307 #7960] DEBUG -- : saveDataDirIndex:0
D, [2016-04-17T21:48:00.024336 #7960] DEBUG -- : saveDataDirName created:../../saveData/data_0
D, [2016-04-17T21:48:00.024361 #7960] DEBUG -- : saveDataDirName:../../saveData/data_0
D, [2016-04-17T21:48:00.024388 #7960] DEBUG -- : saveDataKeyName:playRoomInfo
D, [2016-04-17T21:48:00.024413 #7960] DEBUG -- : saveFileName:playRoomInfo.json
D, [2016-04-17T21:48:00.024436 #7960] DEBUG -- : :getDirName begin..
D, [2016-04-17T21:48:00.024482 #7960] DEBUG -- : requestData:nil
D, [2016-04-17T21:48:00.024517 #7960] DEBUG -- : saveDataDirIndexObject:nil
D, [2016-04-17T21:48:00.024544 #7960] DEBUG -- : saveDataDirIndex:0
D, [2016-04-17T21:48:00.024573 #7960] DEBUG -- : saveDataDirIndex:0
D, [2016-04-17T21:48:00.024602 #7960] DEBUG -- : saveDataDirName created:../../saveData/data_0
D, [2016-04-17T21:48:00.024627 #7960] DEBUG -- : saveDataDirName:../../saveData/data_0
D, [2016-04-17T21:48:00.024659 #7960] DEBUG -- : :server created
D, [2016-04-17T21:48:00.024687 #7960] DEBUG -- : :========================================>CGI begin.
D, [2016-04-17T21:48:00.024716 #7960] DEBUG -- : getRequestData key:cmd
D, [2016-04-17T21:48:00.024746 #7960] DEBUG -- : commandName:nil
D, [2016-04-17T21:48:00.024774 #7960] DEBUG -- : :getResponseTextWhenNoCommandName Begin
D, [2016-04-17T21:48:00.024800 #7960] DEBUG -- : :analyzeWebInterfaceCatched begin
D, [2016-04-17T21:48:00.024825 #7960] DEBUG -- : getRequestData key:webif
D, [2016-04-17T21:48:00.024948 #7960] DEBUG -- : commandName:getBusyInfo
D, [2016-04-17T21:48:00.024982 #7960] DEBUG -- : getRequestData key:marker
D, [2016-04-17T21:48:00.025009 #7960] DEBUG -- : commandName:getBusyInfo
D, [2016-04-17T21:48:00.025092 #7960] DEBUG -- : getRequestData key:callback
D, [2016-04-17T21:48:00.025127 #7960] DEBUG -- : :callBack
D, [2016-04-17T21:48:00.025184 #7960] DEBUG -- : {"loginCount"=>0, "maxLoginCount"=>30, "version"=>"Ver.1.47.24(2016/04/07)", "result"=>"OK"}:analyzeWebInterfaceCatched end result
D, [2016-04-17T21:48:00.025273 #7960] DEBUG -- : CGI response original length:85
D, [2016-04-17T21:48:00.025305 #7960] DEBUG -- : RESPONSE header:Content-Type: text/plain; charset=utf-8
D, [2016-04-17T21:48:00.025338 #7960] DEBUG -- : :========================================>CGI end.
D, [2016-04-17T21:48:00.025363 #7960] DEBUG -- : :printResult called
http://www.hktrpg.com/DodontoF/chat.html
it cant get the chat log
but i dont know why does it happenT_T
先ほど git --rebase したところ DodontoF.swf が削除されサービスが提供できなくなりました。
調べたところ f9ecb75 で削除されたようですが、パッケージとの差分は意図的なものでしょうか。
というのもパッケージ版を確認したところ
index.htmlで指定されているembedタグのsrc属性はそのままで、
DodontoF.swfが同梱されていました。
もしかして今後は、tagに対応したパッケージの方から
DodontoF.swfだけを取り込むという運用か。
あるいは、各々コンパイルする方式で行うということでしょうか。
Github には、バージョンごとにソースやビルド済みバイナリを圧縮ファイルで配布する機能があります。
ref: https://github.com/neovim/neovim/releases
マークダウンで情報も記載でき、Github でホスティングすることで www.dodontof.com の負荷を減らせる想定です。
いかがでしょうか。
fix the
Server directory "language" files has problem. please change language file.
Language data has different,
before:
after:Chinese-Traditional
diff length before:972, after:971
diff item
before: "chatPalletDeleteTab"
after: "chatPalletEdit"
and
add some string DiceBotName
https://drive.google.com/file/d/0BzpM4z9_kUseRlJiQ3dJOEphcUU/view?usp=sharing
Hi, I am dodontof chinese user,
I just update to Ver.1.49.04.01(2019/04/30リリース).
But there is a problem.
The japanese extratables is work fine.
But ChineseTraditional wont work.
example:
I try to put Cthulhu7th_ChineseTraditional_Realtime and Cthulhu7th_Realtime to folder extratables2 and extratables.
In japanese mode, it is work.
but ChineseTraditional wont.
https://www.taruki.com/DodontoF_srv4/
it just show the name i use before when i am in other play room, whatever i input any word in the "your name" like Anonymous
DodontoF:"" login.
DodontoF:"" is logout.
DodontoF:"GMMM" login.
DodontoF:This server connection will be disconected after 24.0時間.
DodontoF:"GMMM" login.
部屋内で行えるほとんどのコマンドについて、パスワードなしに実行が可能になっています。
実行可能コマンドにchangePlayRoomを含むため、パスワードを変更してしまえば全てのコマンドが実行可能になります。
msgpackの利用設定がされていない場合、POSTデータでも一部の実行が可能なためより深刻だと思われます。
先日config.rbに追加された部屋名チェッカーの設定にスペルミスがありました。
$wordChecker = {
"changePlayRoomNameChaker" => { # Chaker ではなく Checker?
}
}
まだ利用者が少ないと思われますので、これは直せるのではないでしょうか?
リポジトリとリリースファイルを比較していて気づいたのですが、リリースファイルではGemfileが意図的に削除されているのでしょうか? もしそうでしたら、Gemfileの削除処理は行わないでいただきたいです。
Gemfileが存在すれば、Rubyの新しいバージョン移行に伴いライブラリを入れ直さなければならないとき(例:TRPG.NETサーバでは、2.3.1→2.4.1のときにこのようになりました)でも、必要なライブラリのインストールを bundle install
というコマンドによって自動で行うことができます。msgpackだけとはいえ、何のライブラリが必要か考えずに実行できるのが非常に便利です。
#76 と関連することです。どどんとふのリポジトリとリリースファイルのディレクトリ構成は異なっていますが、リリースファイルの生成手順は公開できませんでしょうか?
必要性を感じた理由は以下のとおりです。
もし生成スクリプトのようなものがございましたら、同様の手順を rake package
のようなコマンドで実行できるようにRakefileに移植できないかと考えています。ご検討よろしくお願いいたします。
これは作業中に気づいたんですが直してなかったのでissueの起票だけ。
TableFileData::getTableDataFromFile()
は内部的に
&:symbol
形式の Proc
オブジェクト生成を行って、これを使って処理を書いている部分があります。
しかし1.8系にこの機能は有りません。
オススメです。
ruby的に1.8系列は2014年7月31日に(Herokuの助力で6か月終了を伸ばしたうえで)サポート終了しており
(それどころか実は2.0.0もサポートは終了してしまっており... https://www.ruby-lang.org/ja/news/2016/02/24/support-plan-of-ruby-2-0-0-and-2-1/)
その後いくつものセキュリティパッチがあったんですが、1.8系には取り込まれていないので単純に使うと危険なので……。
(DodontoFServerを動かすとこにどれくらいのセキュリティが求められるかというのはもちろんありますが。
またDodontoF自体がエラーを生んでるというよりもruby1.8を入れてるサーバの脆弱性ではあるので。)
単純に技術的には以下で解決します。
diff --git a/src_bcdice/TableFileData.rb b/src_bcdice/TableFileData.rb
index 6f4d2b5..5cf866d 100644
--- a/src_bcdice/TableFileData.rb
+++ b/src_bcdice/TableFileData.rb
@@ -131,7 +131,8 @@ class TableFileData
def getTableDataFromFile(fileName)
table = []
- lines = File.read(fileName).toutf8.lines.map(&:chomp)
+ lines = File.read(fileName).toutf8.lines.map { |s| s.chomp }
defineLine = lines.shift
dice, title = getDiceAndTitle(defineLine)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.