tcprules cdb tmp
tcpserver では TCP 接続を許可するかどうかを決めるために規則が書けます。 例えば、
18.23.0.32:denyという規則は IP アドレス 18.23.0.32 からの接続を禁止します。
tcprules は標準入力から規則を読み、tcpserver が高速アクセスできるようなバイナリ形式で cdb に書き出します。
tcprules は tcpserver が動作中でも使えます。 cdb がアトミックに更新されることを保証します。 まず始めに tmp に規則を書き、それから cdb として tmp を移動します。 tmp がすでに存在していたら、壊されます。 cdb と tmp を含むディレクトリは tcprules にとって書き込み可能でなければなりません。 また同一ファイルシステム上になければなりません。
入力 や tmpに問題があれば、tcprules はメッセージを出し、cdb を変更せずに終了します。
バイナリ cdb 形式はマシン間で可搬性があります。
各規則は余計なスペースを含めずに、アドレス、コロン、命令の一覧の順に書きます。 tcpserver がそのアドレスから接続されると、その命令に従います。
例えば、次のような規則があったとします:
joe@127.0.0.1:first 18.23.0.32:second :third 127.:fourth$TCPREMOTEIP が 10.119.75.38 であれば、tcpserver は third の命令に従うでしょう。
$TCPREMOTEIP が 18.23.0.32 であれば、tcpserver は second の命令に従うでしょう。
$TCPREMOTEIP が 127.0.0.1 であり、$TCPREMOTEINFO が bill であれば、tcpserver は fourth の命令に従うでしょう。
$TCPREMOTEIP が 127.0.0.1 であり、$TCPREMOTEINFO が joe であれば、tcpserver は first の命令に従うでしょう。
tcprulescheck を使えば、tcpserver が cdb の規則をどのように解釈しているかわかります。
:denyは他のどの規則も適応されなかったアドレスからの接続を切るように tcpserver に命令します。
命令は var="x" という形式でいくつかの環境変数を設定して続けられます。 tcpserver は x という値を持つ環境変数 $var を付け加えます。 例えば、
10.0.:allow,RELAYCLIENT="@fix.me"は @fix.me という値を持った環境変数 $RELAYCLIENT を付け加えます。 ここで引用符は次のように繰り返される任意の文字で置き換えてかまいません。
10.0.:allow,RELAYCLIENT=/@fix.me/次のように変数は何個でも並べることができます:
127.0.0.1:allow,RELAYCLIENT="",TCPLOCALHOST="movie.edu"