WalRack - Walrus File Rack CGI
|
WalRack - Walrus File Rack CGI
http://localhost/WalRack.cgi
WalRack (Walrus File Rack CGI)は、Web上にファイルの一時預かりスペースを作るためのCGIです。
WalRackは、Webページ上から設置者のWebファイルスペースにファイルをアップロードするためのCGIです。
WalRackには以下のような機能があります。
WalRackは、CGI-Liteのサンプルスクリプトを発展させた例として作成されています。
WalRack2は、CGU-LiteからCGI::Liteへの以降のサンプルスクリプトとして作成されています。
ドキュメント部分を除けば300行のスクリプト部分に、上記の機能を収めてあります。
独自のファイル管理CGIを作成する時に、参考になるかも知れません。
WalRackは、Perl5を利用できるサーバー上で動作します。
JPerlについては未検証です。もしかしたら、日本語のファイル名を持つファイルの処理などで問題が発生するかもしれません。
Walrus, DigitからWalRack2.lzhまたはWalRack2.tar.gzを取得して下さい。
これにはCGI本体に加え、CGI::Lite.pmを多少改変したものと、jcode.plが一緒に圧縮書庫化されています。
これを解凍して下さい。
http://digit.que.ne.jp/
利用環境によって、修正すべき部分があります。
修正個所は、先頭行のPerlパスおよび先頭付近の環境設定部です。
修正後は、スクリプトをEUCコードで保存して下さい。
Windowsでは、秀丸など多くのエディタがこの文字コードに対応しています。
- Perlのパス
1行目のPerlのパスを、設置するサーバーにあわせて修正してください。
多くの場合、'#!/usr/bin/perl'ですが、'#!/usr/local/bin/perl'など、その他のパスになることもあります。
これが何になるのかは、私に聞いていただいても回答できません。
ご利用のサーバー管理者、プロバイダ、レンタルサーバー業者などにお問い合わせください。
- プラットフォームとファイル名の文字コード ($platform, $filecode)
$platformを、サーバーのOSにあわせて、Unix、Windows、Macのいずれかに設定して下さい。
プラットフォームは(CGI-Liteモジュールが)ファイルパスの区切り文字を判別するのに使います。
例えばDOSやWindowsCEであれば、同じく区切り文字をもつWindowsに設定して下さい。
同様に、$filecodeをサーバーのOSにあわせて、'euc'、'sjis'、'jis'のいずれかに設定して下さい。
Windowsではsjis、UNIXでは'euc'か、'sjis'が一般的です。
- ディレクトリ ($directory)
$directoryを、CGIからファイルを保存するディレクトリへの相対パスに書き直してください。
デフォルトでは、CGIと同じディレクトリに「file」というディレクトリを作成し、その下にファイルを保存します。
このディレクトリのパーミッションは666にして下さい。
- パスワード ($password)
$passwordを適切なパスワードに変更してください。
- 利用制限 ($access、$upload、$delete)
パスワードによる利用制限をしたいものを0に設定します。
パスワード制限が不要であれば、1に直してください。
$accessは利用全般、$uploadファイルのアップロード、$deleteはファイルの削除時の制限に対応しています。
- ファイルサイズの上限 ($maxfilesize)
ファイルサイズの上限をキロバイト数で指定します。
制限しない場合は0にします。
デフォルトでは100キロバイトに設定されています。
- ファイルのパーミッション ($permission)
アップロードされたファイルの、OS上でのパーミッション設定です。
「$permission = 0644」のように、ダブルクォート等で括らずに、指定してください。
表示について、以下の設定があります。
ファイル名について、以下の自動変換関連の設定があります。
- テキストとして扱う拡張子 (@name_add_txt)
'.txt'を付加したい拡張子を@name_add_txtに含めます。
この目的は、対象ファイルがサーバー上でCGIなどとみなされて実行されたり、
あるいはPC上でHTMLだとみなされて中に含まれているJavaScript等が実行されるのを避けることです。
デフォルトでは、'pl'、'cgi'、'php'、'rb'、'htm'、'html'、'shtml'が含まれています。
これらの拡張子のファイルが送信されると、'.txt'という拡張子を付加します。
- バイナリとして扱う拡張子 (@name_add_bin)
'.bin'を付加したい拡張子を@name_add_binに含めます。
この目的は、対象ファイルがサーバー上で実行ファイルとみなされて実行されるのを避けることです。
デフォルトでは、'exe'が含まれています。
これらの拡張子のファイルが送信されると、'.bin'という拡張子を付加します。
- 半角カナの扱い ($name_do_h2z)
ファイル名中の半角カナをそのまま残す時は0、全角に変換する時は1にします。
デフォルトは1です。
半角カナは、環境によっては事故の元になることに注意してください。
- 禁止文字 ($name_incorrect_char)
ファイル名に含めるべきではない文字(<>[]?_*/\)の扱いを決定します。
0の時は削除、1の時は全角に変換します。
デフォルトは1です。
- 全角英数字 ($name_conv_2byte)
全角の英数字、括弧、ハイフンなどの扱いを決定します。
0の時は削除、1の時は半角に変換します。
デフォルトは1です。
次のファイルをASCIIモードでFTPアップロードして下さい。
ファイル・ディレクトリ パーミッション 内容
---------------------- ----------------- -------------
+-- WalRack.cgi 711 CGI本体
+-- lib/ 755 ディレクトリ
+-- jcode.pl 644 文字コード変換ライブラリ
+-- CGI/ 755 ディレクトリ
+-- Lite.pm 644 CGI::Liteモジュール
この他に、$directoryに設定したディレクトリを作成し、パーミッションを777にして下さい。
デフォルトの設定であれば、WalRack.cgiと同じディレクトリに「file」というディレクトリを追加し、これのパーミッションを777に変更します。
WalRack.cgiのURLを入力し、アクセスしてみて下さい。
ログイン画面か、ファイルリスト&ファイルアップロードの画面が出れば、設置できています。
一般的な問題には、以下のようなものが考えられます。
- ASCIIモードで転送していない
Internal Server Errorが発生します。
このCGIはASCIIモードでサーバーに送って下さい。
- Perlのパスが正しくない
Internal Server Errorが発生します。
Perlのバージョンが古い時にも、起こる可能性が考えられます。
ご利用のサーバー管理者、プロバイダ、レンタルサーバー業者などに確認してみて下さい。
分からない場合は、作成者(塚本 牧生)まで問い合わせてみて下さい。
このCGIは、Windows98se + AnHTTPd v.1.32 + ActivePerl 628の環境下で作成、試験されました。
また、FreeBSD 4.1.1 + Apache 1.3.x + Perl 5.005_03の環境下で動作を確認されました。
最新版は、Windows2000 + AnHTTPd v.1.41e + ActivePerl 633の環境下で修正、試験されました。
私はこれ以外の環境を持っていないため、他の環境での動作は確認しておりません。
おそらく、Perl5.005以上が利用できる環境であれば、動作すると思われます。
- 表示
Netscape Comunicator 6.02では枠線が乱れます。
これはCSSの解釈によるもののようですが、Internet Explolerでこちらの意図どおりに表示され、かつこちらの解釈が正しく思われるため、これ以上の調整は行いません。
もし、本当に必要があれば、<table>タグでレイアウトを行うことで容易に解決できるでしょう。
WalRack1.0.1版ではNetscapeでは非常に表示が乱れましたが、1.1.1版で現状まで調整されました。
- ディレクトリ
ディレクトリの作成や管理というのは、必要性が高いかもしれません。
しかし、この機能はおそらく実装されません。
難しくはないと思いますので、興味のある方はぜひ追加してみて下さい。
- 複数のユーザー名とパスワード
ユーザー名とパスワードによるログインや、複数のユーザー/パスワードの登録もほしいところでしょう。
しかし、この機能もおそらく実装されませんので、チャレンジしてみて下さい。
このCGIは、ファイル保管ディレクトリ下に一時ファイルディレクトリ「temp」を作成します。
ユーザー/パスワードファイルは同様に、「user」ディレクトリなどを作成し、その中に保管すると良いでしょう。
- Ver.2.0.6
-
1.1.8をベースとして更新。
WalRack1.1.8およびWalRack2.0.6にはファイル削除周りでのセキュリティフィックスをしています。必ず旧版から入れ替えてください。
- Ver.2.0.5
-
1.1.7をベースとした2.0.3版に、2.0.4半間での修正に加え下記の内容の更新。
URLエンコード関連のバグを修正。
- Ver.2.0.4
-
1.1.7をベースとした2.0.3版に、下記の内容の更新。
CGI::Liteを2.02版をベースとしたものに差し替え。
- Ver.2.0.3
-
1.1.7をベースとして、下記の内容の更新。
特定の拡張子については、従来は拡張子を削除していたが、'.txt'または'.bin'を付加するように変更。
ファイルサイズ制限をキロバイト単位で指定するように変更。
ファイルサイズ制限がある場合、ファイルアップロードフォームの表示するように修正。
制限を越えるサイズのファイルが送信されたとき、tempディレクトリから削除されない問題の修正。
ファイルを指定せずに「送信」を押すと、0バイトのファイルが作成される問題の修正。
- Ver.2.0.2
-
KCatchの使用を停止。
ディレクトリ構成を変更。(ライブラリを'lib'に移動)
ライブラリのあるディレクトリを明示的に指定。
- Ver.2.0.1
-
1.1.6をベースとして、CGI_LiteのかわりにCGI::Liteモジュールを使用。
Copyright 2001-2004, TSUKAMOTO, Makio
このCGIはフリーソフトウェアです。
Perl自身と同じ、「Artistic License」の条項の下で自由に改変し、再配布することを認めます。
塚本 牧生 < walrus@digit.que.ne.jp > ( http://digit.que.ne.jp/ )
WalRack - Walrus File Rack CGI
|