まるぼ実験場

今年専門を卒業したけど就活サボってしまいました(関係ない職種でフリーター生活中)。どうすんだよこれ。

『もっと書き込み隊2』を令和のサーバーで動かし隊

懐かしの掲示スクリプト、『もっと書き込み隊2』を現代のサーバーで動かしたくて試行錯誤したメモ。

tackysroom.com

これ見た目がかわいいだけじゃなく、機能面もかなり高機能なんですよねー。
トリップ機能とか昇格機能とか他じゃ見かけない。昇格を楽しみについつい書き込みたくなっちゃう。
個人サイト全盛期は人気があったみたいで、一時期かなりのサイトで採用されていたと記憶している。
それでちょっとした懐かしさというか愛着がある、この掲示板を復活させたい!…と思いましてね…。

まずは普通にサーバーに転送してパーミッションなどをマニュアル通りに設定してみるも上手く動作せず。
一度ローカル環境を用意してから解析作業を行った。

動作環境:ロリポップレンタルサーバー スタンダード(Perl5.30)、スタードメイン無料サーバー
確認環境:Mac OS Monterey 12.0.1(Perl5.30.3)

事前準備

ソースコードを全てUTF-8(LF)に変換。
Macだとなぜかうまく変換されなかったのでWindowsVSCodeで変換してからMacに持って行った。…なんでそのまま全てWindowsでやらなかったのかって?環境構築が面倒だから(オイ
ソースの文字コードを変換したことに伴い、ソースコード内のHTMLヘッダーなどShift-JISが指定されていた箇所を全てUTF-8に書き換えます。

ログで発生していたエラー

defined(%hash) is deprecated ~

発生箇所を見るに原因は使用されているモジュール、「jcode.pl」絡みのエラー。
jcode.plは大昔に更新が停止しており、後継のモジュールも出ているのでそちらに乗り換えることにした。
今回は標準で搭載されている、『Encode』に乗り換えました。

mkakikomitai2.cgi

use utf8;
use Encode;
binmode(STDOUT, ":utf8");

初期設定の冒頭に追加。binmode(STDIN, ":utf8");は使われていなかったので入れなかった。
use utf8も要らないかも知れない…が当該の処理が使われているか解析までのする気力が無かったのでとりあえず書いておいた。
詳しくは参考資料のサイトへ。

その後、jcode.pl絡みの記述を全てコメントアウト

#require './jcode.pl'

次に、mkakikomitai2.cgiとmkakikomitai2_pc.pl内を$jcodeで検索し、出てきた所の行頭をコメントアウトする。

この状態でローカルサーバーでテストし、文字化けなしで書き込めることを確認できました。

一カ所、気になったところがあったので修正

mkakikomitai2_pc.pl
入力フォーム、メールのフォームを作成している所

#if ( $mailerr ) { $dmy="style={display:none;}"; $c_email=""; } else { $dmy=""; }
if ( $mailerr ) { $dmy="style=display:none;"; $c_email=""; } else { $dmy=""; }

ホームページアドレスのフォームを作成している所

#if ( $urlerr ) { $dmy="style={display:none;}"; $c_hp=""; } else { $dmy=""; }
if ( $urlerr ) { $dmy="style=display:none;"; $c_hp=""; } else { $dmy=""; }

メールとホームページの欄に入力された場合スパム扱いする設定を行った際、メールとホームページアドレスの入力欄が隠されるのだが、それがうまく働いていなかったので上記のように変更した。(コメントアウト文:変更前、下の文:変更後)

これらをサーバーに転送して動作することを確認。

正直これだけで良かったのだろうか…と思っていたりするので、間違いとか指摘とかあったら教えてください。
元がかなり古いスクリプトでセキュリティ対策とかに不安な面があるため、まだ手を入れる必要があると思いますが、
ひとまずお気に入りのスクリプトが無事動いたので嬉しいです(^^*)

参考資料
PerlのCGIのutf8改造で文字化けしたときの処方箋