Perlスクリプトで、ネットワークプログラミングを行っています。
標準プロトコルを使って、独自にサーバやクライアントを作成すれば、ログの採取やアクセス制限やアクセス元の調査やハッカーに対するトラップの作成などを自由にできます。
プログラムでは、strictモードで作成していますし、下位のSocketモジュールを使っていますので、C言語への移植も簡単にできるでしょう。
ソースは、ASHの許可を得て、転載しています。
Helloサーバは、クライアントからアクセスがあると、HelloWorldを返却するスクリプトです。
Helloクライアントは、Helloサーバにアクセスし、返却されたメッセージを表示するスクリプトです。
Hello Worldは、プログラムの基本ですよね。
詳細は、ASHのネットワークプログラミングを参照してください。
hellosv.pl Helloサーバスクリプト hellocl.pl Helloクライアントスクリプト |
機能は、HTTPヘッダとHTMLソースを表示するスクリプトです。
画面イメージは、自分で想像してください。
HTTPプロトコルの勉強のために作成したのですが、HTTPヘッダが見れるブラウザとして、重宝しています。
改造ブラウザに対する、CGIのチェックにも使えます。
詳細は、ASHの「Perlでブラウズ(HTTP)」を参照してください。
http.pl 簡易HTTPブラウジングスクリプト |
FTPコマンドの-dオプションと同じような動きをするPerlスクリプトです。
Passiveモードで、実際にファイルも転送できます。
詳細は、ASHの「Perlでファイル転送(FTP)」を参照してください。
ftp.pl 簡易FTPスクリプト |
コマンドラインでメールが読めます。
mailコマンドよりも使いにくいけど、perlで作成されています。
telnetでPOP3ポートにアクセスするのと、どう違うかと言われると、ほとんど同じです。
LISTでSubjectの一覧ぐらいは表示したいのですが、MIMEデコードがちょっと面倒なので、対応できていません。
pop.pl 簡易POPメール参照スクリプト Usage: pop.pl [host [port]] ユーザとパスワードを入力すると、以下のコマンドが使えます。 list メール番号の一覧を表示 show メール番号 指定したメール番号のメールを表示 quit 終了 |
もう少しがんばって、CGIによる、Webメーラに拡張する予定です。 Net::POP3モジュールなどのモジュールを使えば、簡単にできそうなのですけど、Socketを使ってプログラムを行うというポリシーに反するので、迷っています。 性能や信頼性など、実用性を考えるなら、モジュールを使うべきなんですけど、MIMEデコードぐらい、自分でやりたいという気持ちもありますので・・・