Yakumo BBS Script次バージョン以降blogbanでの使用禁止

理由
blogbanの管理人まなべたかしはフリーウェアの作者でしかない小林を、サイト利用者の質問に対しスタッフと誤解させる表現で紹介し対応を丸投げしたため、多大な迷惑を受けた。

私は無責任な嘘が嫌いです。

禁止1禁止2禁止3

Yakumo BBS Script 人柱版1.01gアップ

http://hp.vector.co.jp/authors/VA012059/

今回は規制の処理を全面的に見直したので手間がかかりました。
新しい職場に慣れるのに手間が掛かったのも有りますけど(^^;

今回の目玉は.htaccessによる自動アクセス制限のつもりが、リライトワードかもしれない。

readmeの説明が長文になってます。流し読みでも良いので全文目を通してくださいな。

しかし・・・8月24日のブログのアクセス数が1万を超えてますよ・・・一体何が有った?

Yakumo BBS Script 人柱版1.01eアップ

http://hp.vector.co.jp/authors/VA012059/

今回の目玉はパソコンやスマホ等のクッキーにIDを記録して携帯のように規制できるようになった点です。
クッキーを消去したり、ブラウザを変更されたらそれまでですが、どんな規制が掛かっているか分からなければそれなりに有効です。

最近のスパムはクッキーを記録して来るようで、スパム対策には余り有効では有りません。スパムに有効なのはnoname_hostとpcx0.0.0.0の規制で、有名なBBQより効果があります。

次のバージョンは.htaccessを使った自動アクセス制限です。余裕が有れば連投規制も入れるかもしれません。


Yakumo BBS Script人柱版1.01dアップ

 掲示板スクリプトの最新版です。ここからダウンロードできます。

 今回は携帯のAAモードでアスキーアートを自動変換できるようにしました。
 携帯で長文を省略しない全文表示モードを追加しました。

 1.01c以降でcronが正常に動作しない場合が有りましたらサポート掲示板まで情報をお寄せ下さい。

Yakumo BBS Script人柱版1.01cアップ

 掲示板スクリプトの最新版です。ここからダウンロードできます。

 今回はスレッド圧縮機能を追加しました。cronでも投稿時でも設定できます。
 上限に達したスレッドを過去ログ倉庫送りまたは削除するのもスレッド圧縮に含まれます。しかし板のスレッド数を減らすのは板の圧縮じゃぁないのか?と疑問に思わなくもないですが、一番手間の掛かりそうな処理だったので、できてひと安心です。不具合が出なければ良いですが。

 規制項目としてHTTP_X_FORWARDED_FORを使えるようにしました。効果が有るのか無いのかよく分かりませんが、BBQが不要になるくらいの効果を期待。
 そういえばHTTP_X_FORWARDED_FORを記録するようになってからスパム投稿が全くありません。スパム業者はこれをどうしているのか興味は尽きないですが、やっぱりスパム業者は遠慮願いたいです。

その他目に付いた不具合の修正をしています。

 なんだかんだで予想以上の手間が掛かりました。スレッドを削除や過去ログ倉庫送りにする方法を変更するのは、かなり大規模な仕様変更になりますね。設計段階で考慮しておくべきでした。


UTF-8でアスキーアートがずれない方法

 Yakumo BBS ScriptはUTF-8でも運用できるのですが、その場合半角フォントが他の文字コードと違う為にアスキーアートを表示するとずれてしまいます。でも解決方法が見つかりました。

 思い立ってから半日ほどネットを調べていたのですが、結論は簡単な物でした。
headタグの中に次の3行を入れるだけです。

<style type="text/css">
body {font-family:'MS Pゴシック','IPA モナー Pゴシック',sans-serif;} 
</style>

read.cgiなら
ヘッダを表示するサブルーチンに

    print "<style type='text/css'>¥n";
    print enc_str("body {font-family:'MS Pゴシック','IPA モナー Pゴシック',sans-serif;}¥n");
    print "</style>¥n";

と入れるだけで済みました。

 副産物としてUTF-8以外でもMacやUNIX系のOSから閲覧する場合に、IPA モナー Pゴシックがインストールしてあれば、アスキーアートをずれずに見る事ができるようになります。

 この変更は今月末か来月始めにアップする予定の人柱版に組み込みます。


Yakumo BBS Script 暫定バージョンアップ用ページを作りました

掲示板スクリプトの暫定バージョンアップページを作りました。

ロリポップはダウンロードサイトの作成は禁止なのでベクターで作者用ホームページスペースを借りた為、意外と手間取りました。

不具合や要望など有りましたらサポート掲示板やこのブログのコメントに投稿して下さい。

バージョンアップで大変なのはマニュアル作りなので、その辺りの手抜きができればもう少し頻繁にバージョンアップできるかもしれません。

次の予定はクッキー規制です。


トップページをパソコン携帯スマフォで切り替える

 掲示板スクリプトのバージョンアップ用にindex.cgiを作成したのですが、掲示板サイト以外でも使えそうなので記事として書いておきます。
 もっともApacheを使っているサーバーなら.htaccessの変更で対応できるのですけど。

index.cgi
#!/usr/bin/perl

$file1 = 'top.html';
$file2 = 'mobile.html';
$file3 = 'smart.html';

use CGI;
$cgi = CGI->new();
$parm = $cgi->param('mode');

if ($parm eq 'p') {            #パソコン
    $fname = $file1;
} elsif($parm eq 'm') {    #携帯
    $fname = $file2;
} elsif($parm eq 's') {   #スマートフォン
    $fname = $file3;
} else {               #自動判定
    if (check_mobile()) {
        $fname = $file2;    #携帯用
    } else {
        $fname = $file1;    #パソコン用
        $agent =$ENV{'HTTP_USER_AGENT'};    #スマフォ用
        if ($agent =~ /mobile/i) {$fname = $file3;}
        if ($agent =~ /android/i) {$fname = $file3;}
        if ($agent =~ /Windows.*Phone/i) {$fname = $file3;}
    }
}

open(TOP,"<$fname") or error_exit();
flock(TOP,1);
print "Content-type: text/html¥n¥n";
while(<TOP>) {
    print;
}
close(TOP);
exit;

sub error_exit {
    print "Status: 404 Not Found¥n";
    exit;
}

sub check_mobile {
    my $host = $ENV{'REMOTE_HOST'};
    my $addr = $ENV{'REMOTE_ADDR'};
    if ($host eq "" || $host eq $addr) {
        $host = gethostbyaddr(pack("C4",split(/¥./,$addr)),2) || $addr;
    }
    if ($host =~ /.+docomo¥.ne¥.jp$/) {return(1);}  #ドコモ
    if ($host =~ /.+jp-.¥.ne¥.jp$/) {return(1);}  #ソフトバンク
    if ($host =~ /.+ezweb¥.ne¥.jp$/) {return(1);}  #au
    if ($host =~ /.+pool¥.e-mobile¥.ne¥.jp$/ && $ENV{'HTTP_X_EM_UID'}) {return(1);} #イーモバイル
    if ($host =~ /.+pool¥.emobile¥.ad¥.jp$/ && $ENV{'HTTP_X_EM_UID'}) {return(1);} #イーモバイル
    if ($host =~ /.+ppp¥.prin¥.ne¥.jp$/) {return(1);} #Willcom
    return(0);
}

 使い方としては、file1にパソコンで表示させたいファイル名、file2に携帯で表示させたいファイル名、file3にスマフォで表示させたいファイル名を記述しておきます。
 スマフォを厳密に判定する方法は現在のところ有りません。ユーザーエージェントはブラウザによって変わりますし、リモートホストはWi-Fi接続すればパソコンと同じ物になります。
 その為にオプションを付けました。?mode=pでパソコン、?mode=mで携帯?mode=sでスマフォのページを表示するようにしています。
 ファイルの表示ではなくページ移動にすれば良さそうですが、携帯ではページ移動しない場合が有るのでこんな仕様になっています。

 掲示板スクリプトではfile1=〜file3=までの所をスクリプトで書き換えるようにします。もっともスマフォビューアーの予定はまだまだ先なのですけど。


Yakumo BBS Script 1.01公開

ベクターに1.01が公開されました。
以前にも書いたように今回のバージョンアップは少なめです。

 バージョンアップで面倒な点は、マニュアルの変更だったりします。マニュアル無しならもっと早くバージョンアップができるのにと思うものの、マニュアルが無ければ使ってもらいないというジレンマが有ります。

 ベクターに作者用ホームページスペースを借りられるように依頼を出していますが、申請に不備が有るのか単に登録まで時間が掛かるだけなのか、まだ返信が有りません。
 借りているサーバーにダウンロードサイトの作成、cgiの配布や貸し出し禁止の制限が有るために新版の公開は時間が掛かります。
 作者用ページが借りられれば暫定バージョンの公開も簡単にできると思うのですが・・・


トップページ編集機能改仕様

トップページで携帯とPCを振り分けるのはフレームを使うという簡単な方法を採っていたのですが、最近はフレームの読める携帯が想像以上に多いようで対策が必要になりました。実際にプログラミングするのはまだ先の話ですが、仕組みを思いついたのでメモしておきます。実力が有ってバージョンアップまで待てないという方はヒントにして改造して下さい。

掲示板のトップにはindex.htmlではなくindex.cgiを置く
urlのファイル名を省略するとindex.html/index.htm/index.cgi/index.phpを読みに行くサーバーが多いですが、稀にindex.cgiを読んでくれないサーバーが有るかもしれません。そういう場合は携帯でもパソコンでも読める小さなindex.htmlを用意して携帯用とパソコン用のファイルへのリンクを貼って頂きます。

index.cgiで携帯かパソコンかを判定してどちらかのトップページを表示
index.cgiで読み込むhtmlファイル名は管理者ページから携帯用とパソコン用を登録
index.cgiで設定用ファイルを読み込んで、そこに書かれた名前のファイルを読み込むという2段構えにしても良いのですが、少しでも動作を軽くする為に管理者ページからindex.cgiに直接ファイル名を書き込む方が良さそう。
暫定改造をするならindex.cgiにcheck_mobileサブルーチンをコピー、携帯ならmobile.htmlを読み込んで表示、パソコンならパソコン用のトップページを読み込んで表示、トップページ編集機能でindex.htmlにしている部分をmobile.htmlに改造、tmp_mobile.htmlを作る。

index.cgiから読み込むファイルは普通のhtmlファイル
パソコンのボード一覧はbbsmenu.htmlに書き込まれるからフレームを使ったtop.html辺りを読み込めば良さそう、携帯はスクリプトでボード一覧を記述したmobile.htmlをデフォルトでは読むようにすれば良さそう。
ボード一覧の無いトップページを表示してから、ボード一覧が有るページを表示したい場合は別のファイル名を登録すれば良い事になります。

この仕様だとトップページの構成が今より柔軟に設定できますね、index.cgiを表示してくれないサーバーが少ない事を祈りますが・・・


| 1/8PAGES | >>

calendar

S M T W T F S
 123456
78910111213
14151617181920
21222324252627
28293031   
<< May 2017 >>

テスト

笑える霊体験まとめサイト
の表紙作成に使ったソフト

Poser 10

新品価格
¥14,316から
(2014/4/9 14:19時点)

広告だったり

オリジナル電子書籍

selected entries

categories

archives

recent comment

links

profile

search this site.

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM