1. としきのやしき正門
  2. 電算棟
  3. 板塀(掲示板)の手入れ(改造)
  4. 外枠オプション転送

外枠オプション転送

当分新機能をつけるつもりはなかったんですが、やってみたら10行以下で追加できてしまったもので。

繰り返しアナウンスしていることですが、この掲示板、自宅サーバで提供しています。自宅のIPアドレスは、プロバイダ(地主)からDHCPでもらっています。そのため、いつ、IPアドレスが変化するかわかりません。通常、このような時は DynamicDNS を使ってドメイン名を取得し、それでアクセスするようにすることにより、いつIPアドレスが変化してもいいような体制を採用するものです。が、うちではそのようなことはせずに、生のIPアドレスでそのままサービスを提供しています。IPアドレス変動対策としては、掲示板をフレーム化し、掲示板本体はフレームの内側とすることにより、外枠のURLは常に一定となるようにしています。IPアドレス変動時には、外枠のファイルに記述してある内容がIPアドレスの変動に追従することで、アクセスが維持できるようになっています。

途絶防止という観点からはこれで十分なんですが、デメリットもあります。
フレーム内の呼び出しは常にオプションなしなので、一番最初の表示時はデフォルト表示になってしまうという事です。デフォルトは何かというと、通常はツリー表示ですね。ある特定のブラウザの場合はスレッド表示がデフォルトになるようにしてあるのですが、対象となる利用者はほとんど私だけでしょう。
つまり、この掲示板にアクセスした時の一番最初の表示を、例えば新規順表示や新着記事表示画面にしたいとなった場合、外枠ではなくフレーム内部の掲示板のURLに直リンクするしかないわけです。そしてその場合、上記のIPアドレス変動時のデメリットは、直リンクした側が全て負うしかないわけです。

現在、アクセスログから判明しているのは、そのような直リンクをしているサイトは、検索エンジンを除くと約2〜3ヶ所。その他、ブックマークに直接掲示板本体のURLを入れておられると思しきアクセスがやはり2〜3人。
この程度の数だと、無視してしまっても構わないのかもしれません。
あるいは逆に、そのようなアクセスは遮断してしまい、強制的に外枠経由とすることも不可能ではありません。が、その場合は、オプション付のアクセスができなくなるというわけで、若干のデメリットに泣いてもらう事になります。

この問題の解決を図るために、この板塀に新たな機能を追加しました。
すなわち、外枠経由のアクセスで、かつ、この掲示板に対する直接のオプション指定がない、という2つの条件が満たされた時、もし仮に外枠の方にオプション指定があれば、そのオプションをそのままこの板塀のオプションとする、というものです。
具体的には、以下のような指定ができる事になります。

http://toshiki.la.coocan.jp/bbs.html?mode=newsort

具体的には、以下のようなコードになりました。


    if ($ENV{'REQUEST_METHOD'} eq "POST") {
        $post_flag = 1;
        if ($ENV{'CONTENT_LENGTH'} > $maxData) {
            &error("投稿量が大きすぎます");
        }
        read(STDIN, $buf, $ENV{'CONTENT_LENGTH'});
    } else {
        $buf = $ENV{'QUERY_STRING'};
        if ($buf eq "") {
            if (($ENV{'HTTP_REFERER'} =~ /^http:..www.hinocatv.ne.jp/) &&
                ($ENV{'HTTP_REFERER'} =~ /toshiki.bbs.html/)          ){
                $buf = $ENV{'HTTP_REFERER'};
                $buf =~ s/^.*\?//;
            }
        }
    }

コードを見てわかると思いますが、あんまり厳密な比較にはなっていません。
とりあえず、チルダのみがURLエンコードされた場合は無事表示できるようにしました。でも、極端なことを言えばURLの全ての文字列がURLエンコードされる場合もありうるわけですが、そんなものには対応しません、と、割り切ってしまいます。その他、URL表記にはDNSを使わないIPアドレス直接指定など、いろいろなバリエーションが考えられるわけですが、そういうものも一切無視しています。

もし、なにかヘンなことになっていたらご連絡ください。
多分、大丈夫だとは思いますけどね。
でも、そのうち、本気で直リンク遮断をするかも。
あ、いや、遮断というのは語弊があるかな。
直リンク強制転送、というのが正しい。
つまり、直リンクでのアクセス時のQUERY_STRINGをそのままbbs.htmlに付加する形でリロードさせる、というもの。
かなり極悪な動きになるので、今のところ導入する気は全くないのですが、場合によっては、スパム対応の一環として、もしかしたら、ひょっとして。


板塀(掲示板)の手入れ(改造)
電算棟
やしきの間取り


Copyright © 2008,2010 としき
このページの情報及び著作権は「としき」に帰属します。
Toshiki / toshiki @ jcom.zaq.ne.jp