しなしなです。 某所の萌々ぼ〜ど(正式名:被羅目板,通称:萌え板)をgithubに登録しました。
背景
某所で大変お世話になっていたCGIですが,すでに作者のえうのすさん,R七瀬さん,月読さんのサイトは電子の塵になってしまっています。当時はFLASHもはれる一番人気の萌え板CGIだったのですが,このまま無くなるのも惜しいので,今までの恩返しも兼ねて github に登録してみました。https://github.com/sina2/moe/
動作環境
Centos6.7 + perl5.10.1 + Encode.pm で動作確認しています。標準モジュールのEncode.pm使ってるのでPerl5.8以降で動くはず・・・・
Perl のパスは /usr/bin/perl です。
cgi-lib.plはSteven E.Brenner氏のライブラリを再配布するものです。
主な変更点(下のほうが古いです)
・コンフィグファイルをマークダウン形式にしました。・セキュリティ対策を多少しました。
コマンドインジェクション対策に open() をsysopen()に変更しました。ただしmail関係とgzip関係は除く。
https://www.ipa.go.jp/security/awareness/vendor/programmingv1/a04_01.html
このサイトを元に1対1対応で置換。
→ use Fcntl;
open( $fh , $filename ) → sysopen( $fh , $filename , O_RDONLY )
open( $fh , > $filename ) → sysopen( $fh , $filename , O_WRONLY | O_TRUNC | O_CREAT )
open( $fh , +< $filename ) → sysopen( $fh , $filename , O_RDWR )
その他のsystem exec backticks fileglob glob eval 関数は使ってなさそう。
・git (git fetch & git merge origin/master ) でアップデートできるようにしました。
ログファイルや設定ファイルの類はバージョン管理から外しました。
#他のファイルは最初の一回目のアクセス時に新規で開くように修正したつもり・・・・元の変更はコメントアウトで残しています。
・UTF-8に対応しました。
iconv 使って スクリプト(.pl,.cgi)を全部UTF-8にしました。
jcode.plはUTF-8に対応していないため jcode.pl → Jcode.pm → Encode.pm と機械的に置換しています。
&jcode’convert(*hoge,'euc'); → Jcode::convert(*hoge,'euc'); → $hoge = Encode::encode('euc-jp', $hoge)
&jcode’convert(*hoge,'jis'); → Jcode::convert(*hoge,'jis'); → $hoge = Encode::encode('iso-2022-jp-1', $hoge)
スクリプトファイル内でHTTPヘッダをつくってるところを置換
HTTP-EQUIV=”Content-type” CONTENT=”text/html; charset=EUC-JP”
→ HTTP-EQUIV=”Content-type” CONTENT=”text/html; charset=utf-8″
・cgi-lib.plでもサイズの大きなファイルをアップロードできるように変更しました。
cgi-lib.pl では131072(2^17)bytesが最大ですが,それ以上のファイルサイズでもアップロードできるように変更してます。とりあえず手元の環境では動いている模様。
・再配布用に cgi-lib.pl に戻しました。
インストール(public_html以下にインストールする例)
$ cd public_html
$ git clone https://github.com/sina2/moe.git
$ cd moe
$ chmod 755 *.cgi
$ chmod 777 Icon img moelog moelog/pass.cgi
(必要があれば.htaccess を作ってください。)
この後アクセスすると初期画面になります。
パスワードを入力する
NEXTをクリックすると開始します。
セキュリティの関係もあるので,最初は[設定変更]をクリックして管理用パスワードを変更してください。
同じフォルダに.htaccess とかおいてパスワードつけると,さらにセキュリティは上がるかも(小並感)
アップデート
$ cd public_html/moe$ git fetch
$ git merge origin/master
$ chmod 755 *.cgi
TODO?
・スマホ対応?FLASHからHTML5へ変換とか,BGMの再生方法とか・スパム/荒らしの対策とかいるんだろうなぁ
・use warnings とか use strict は一度試してみてあまりの多さに心折れたので,対応する予定は無いです。オープンにしたから誰か対応してプルリクくれると喜びます。
・phpへの変換でも喜びます。
・過去ログ機能,基本OFFにしてますにしてます。動作のさせ方がわからない(`;ω;´)
・せっかくgithubにあげたのでいつかはWebhookとかで自動更新できると将来便利かも?
(追記)ものは見つけたが,backticks使うのでセキュリティ的な意味と,強制アップデートはどうなのかという意味で悩む。https://gist.github.com/mugifly/5087897
最後におまじない
当サイトの掲載内容を利用することにより、万一利用者に損害や不利益が生じたとしても、当サイトは一切責任を負わないこととします。
0 件のコメント:
コメントを投稿