[PREVIOUS CHAPTER]
 [NEXT CHAPTER]
4	内部構造
%Procedure というのが内部で使っているコマンド定義のハッシュテーブルで
す。このハッシュを操作する手段が以下の配列やハッシュです。
4.1	MLで使えるコマンドを増やすor減らす
../remote_control 4.10
config.ph でコントロールできます。いくつかの変数がありますが、次のよう
に作動します
   1	@PermitProcedure が定義してあるなら
	@PermitProcedure で許しているコマンドだけを設定します。
	もし、定義されていなければデフォールトのすべてのコマンドが
	利用可能になります。
	これらの設定はグローバル変数の %Procedure に定義されます。
   2	%LocalProcedure が定義されているなら
	1 で定義された %Procedure を %LocalProcedure で上書きします。
   3	@DenyProcedure が定義されているなら
	@DenyProcedure のコマンドだけを使えなくする
Example:
	○ guide と summary のみを使用可能、それ以外はすべて使用不可
	@PermitProcedure = ('guide', 'summary');
	○デフォールトに加え自分で定義した hack コマンドも使える
	%LocalProcedure = ('hack', 'ProcHack');
	もちろんこの場合はどこかで sub ProcHack { ...; } があって
	この関数を用意しておく必要がある。
	○デフォールトの中で get 関係は使えなくする
	@DenyProcedure = ('get', 'send', 'mget', 'msend');
	○ メンバーリストなどを取れないようにする
	@DenyProcedure = ('member', 'active', 'members', 'actives', 'status', 'stat');
4.2	ハッシュ %Procedure の特殊なキー
ハッシュ %Procedure には特別な書き方があります。通常は
	ハッシュのキー	値
	----------------------------------------
	コマンド名	関数名
ですが、
	ハッシュのキー	値
	----------------------------------------
	key		Function Name (e.g. ProcHoeHoe)
	#key		file name
	r#key		1 or 0
	r2a#key		1 or 0
	l#key		the maximum request for key in one mail
○ #key はファイルを送り返す関数でのファイル名です。実はファイルを送り
返す関数は共通なので、これを利用すると好きなファイルを送り返す新しいコ
マンドがほいほい作れます。
例: "help" コマンドは $HELP_FILE ("#help"の値) を送り返す。
		    # help for usage of commands
		    'help',	'ProcFileSendBack',
		    '#help',	$HELP_FILE,
Example: add your new command "news" to send back "$DIR/news" file.
2.3
%LocalProcedure = ('news',	'ProcFileSendBack',
		   '#news',	"$DIR/news");
○ r#key はこのコマンドを実行したら実行のログをユーザーに送り返します。
例: "off" コマンドではログをユーザーに送り返す。
		    'off',    'ProcSetDeliveryMode',
		    'r#off', 1,
○ r2a#key はこのコマンドを実行したら実行のログを管理者に送り返します。
* If "r2a#key" is defined, FML sends the trace log of the command to
$MAINTAINER. 
例: "bye" や "unsubscribe" のコマンドの実行ログは管理者にも送る。
		    'bye',             'ProcSetMemberList',
		    'r#bye',           1,
		    'r2a#bye',         1,
		    'unsubscribe',     'ProcSetMemberList',
		    'r#unsubscribe',   1,
		    'r2a#unsubscribe', 1,
Ex 2: "chaddr" case.
		    'chaddr',         'ProcSetMemberList',
		    'r#chaddr', 1,
○ l#key
一通のメールの中のコマンド 'command' リクエストを最大でも
$Procedure{"l#command"} 個までに制限する。コマンドごとに制限は変えられ
る。$MAXNUM_COMMAND_INPUT は一つのメールの中のコマンドの合計への制限に
なっている(種別を問わず足し合わせた値)。
例: "get" は1メールで10個まで
	             'l#get',      10,
4.3	コマンドの # syntax 
コマンドはデフォールトで "# get 1" と "#get 1" は同じものとみなしてい
ます。# で始まるか否かだけで判定しています。--ctladdr で fml.pl を呼び
出している場合(例えば include-ctl を使っている場合)は # も必要ありませ
ん。
	$COMMAND_SYNTAX_EXTENSION = 1; (default 1)
がデフォールトです。
III	コマンド各論
[PREVIOUS CHAPTER]
 [NEXT CHAPTER]