Changeset 12950
- Timestamp:
- 06/01/08 00:41:29 (5 years ago)
- Location:
- lang/perl/tiarra/branches/module-reload
- Files:
-
- 6 modified
- 6 copied
-
README.txt (copied) (copied from lang/perl/tiarra/trunk/README.txt)
-
all.conf (modified) (5 diffs)
-
doc/auto-reply-comparison.txt (copied) (copied from lang/perl/tiarra/trunk/doc/auto-reply-comparison.txt)
-
doc/module-reload.txt (modified) (2 diffs)
-
doc/module/Auto.html (modified) (5 diffs)
-
main/Tiarra/Resolver.pm (modified) (1 diff)
-
make-password.bat (copied) (copied from lang/perl/tiarra/trunk/make-password.bat)
-
mini.conf (copied) (copied from lang/perl/tiarra/trunk/mini.conf)
-
module/Auto/Reply.pm (modified) (5 diffs)
-
module/System/WebClient.pm (modified) (10 diffs)
-
module/Tools/Reload.pm (copied) (copied from lang/perl/tiarra/trunk/module/Tools/Reload.pm)
-
run-tiarra.bat (copied) (copied from lang/perl/tiarra/trunk/run-tiarra.bat)
Legend:
- Unmodified
- Added
- Removed
-
lang/perl/tiarra/branches/module-reload/all.conf
r12849 r12950 835 835 836 836 # 機能: 837 # - 通常応答 838 # - 登録数確認(count-query )839 # - 反応確認(request )840 # - 反応追加(add )841 # - 反応削除(remove )837 # - 通常応答(mask) 838 # - 登録数確認(count-query/mask) 839 # - 反応確認(request/modifier) 840 # - 反応追加(add/modifier) 841 # - 反応削除(remove/modifier) 842 842 # 通常応答以外は設定を省略することで機能を無効にできます。 843 843 … … 868 868 # plum: mask: *!*@* 869 869 870 # このブロックが発言に反応する確率を指定します。870 # マッチした1つの反応マスクが実際に発言に反応する確率を指定します。 871 871 # 百分率です。省略された場合は100と見做されます。 872 872 rate: 100 873 874 875 # 反応の確認を行うためのキーワードを指定します。876 # 実際の指定方法は、「<requestで指定したキーワード> <チェックしたい発言>」です。877 # 省略するとこの機能は無効になります。878 # 指定したときだけこの機能が有効になります。879 request: 反応チェック880 881 # request に反応するときのフォーマットを指定します。882 # #(key) がキーワード、 #(message) が発言に置換されます。883 # request を指定したときのみ必要。884 reply-format: 「#(key)」という発言に「#(message)」と反応します。885 886 # request に反応する最大個数(ブロックの数)を指定します。887 # あまり大きな値を指定すると、アタックが可能になったり、ログが流れて邪魔なので注意してください。888 # 通常の反応には関与しません。また、応答の行数ではありません。889 max-reply: 5890 873 891 874 # メッセージの登録数を返答するキーワードを指定します。 892 875 # 省略するとこの機能は無効になります。 893 876 # 指定したときだけこの機能が有効になります。 877 # mask で許可された人(通常応答を返す人)が使えます。 894 878 count-query: 反応登録数 895 879 … … 904 888 # 省略するとこの機能は無効になります。 905 889 # 指定したときだけこの機能が有効になります。 890 # modifier で許可された人だけ使えます。 906 891 #add: 反応追加 907 892 … … 914 899 # 省略するとこの機能は無効になります。 915 900 # 指定したときだけこの機能が有効になります。 901 # modifier で許可された人だけ使えます。 916 902 #remove: 反応削除 917 903 … … 920 906 removed-format: #(name|nick.now): #(key) #(message;に対する反応 %s|;) を #(count) 件削除しました。 921 907 922 # addとremoveを許可する人。省略された場合は「* *!*@*」と見做します。 908 # 反応の確認を行うためのキーワードを指定します。 909 # 通常応答と違って, multivalue-limit の制限を受けずに全てのマッチした応答を返します。 910 # 実際の指定方法は、「<requestで指定したキーワード> <チェックしたい発言>」です。 911 # 省略するとこの機能は無効になります。 912 # 指定したときだけこの機能が有効になります。 913 # modifier で許可された人だけ使えます。 914 request: 反応チェック 915 916 # request に反応するときのフォーマットを指定します。 917 # #(key) がキーワード、 #(message) が発言に置換されます。 918 # request を指定したときのみ必要。 919 reply-format: 「#(key)」という発言に「#(message)」と反応します。 920 921 # request に反応する最大個数(反応マスクの数)を指定します。 922 # (1つの反応マスクに対応するメッセージの数は制限されません。) 923 # あまり大きな値を指定すると、アタックが可能になったり、ログが流れて邪魔なので注意してください。 924 # 通常の反応には関与しません。また、応答の行数ではありません。 925 max-reply: 5 926 927 # 編集系コマンド, add とremove と request を許可する人。 928 # 省略された場合は「* *!*@*」(全員許可)と見做します。 923 929 modifier: * *!*@* 924 930 -
lang/perl/tiarra/branches/module-reload/doc/module-reload.txt
r12496 r12950 59 59 --- 60 60 61 BBSを用いる. 62 main いじらなくていいのでお手軽. 63 64 とりあえず Tools::Rreload をつくってみた. 65 動作確認してないからうごくかはわかんない. 66 67 my $my_key = __PACKAGE__; 68 69 # At destruct(). 70 Tools::Reload->store($my_key, $value); 71 72 # At new(). 73 my $value = Tools::Reload->fetch($my_key); 74 if( !$value ) 75 { 76 # new loading. 77 }else 78 { 79 # reloading. 80 } 81 82 案4 83 --- 84 61 85 思いついたらふやす. 62 86 … … 81 105 module_destruct を Timer, Hook, ExternalSocket, Tiarra::Socket, それから 82 106 Tiarra::WrapMainLoop に実装した. あと何かありましたっけ. 107 108 [EOF] -
lang/perl/tiarra/branches/module-reload/doc/module/Auto.html
r12849 r12950 764 764 <p class="comment"> 765 765 機能:<br /> 766 - 通常応答 <br />767 - 登録数確認(count-query )<br />768 - 反応確認(request )<br />769 - 反応追加(add )<br />770 - 反応削除(remove )<br />766 - 通常応答(mask)<br /> 767 - 登録数確認(count-query/mask)<br /> 768 - 反応確認(request/modifier)<br /> 769 - 反応追加(add/modifier)<br /> 770 - 反応削除(remove/modifier)<br /> 771 771 通常応答以外は設定を省略することで機能を無効にできます。<br /> 772 772 </p> … … 806 806 </p> 807 807 <p class="comment"> 808 このブロックが発言に反応する確率を指定します。<br />808 マッチした1つの反応マスクが実際に発言に反応する確率を指定します。<br /> 809 809 百分率です。省略された場合は100と見做されます。<br /> 810 810 </p> 811 811 <div class="element"><span class="key">rate</span>:<span class="value">100</span></div> 812 <p class="comment">813 反応の確認を行うためのキーワードを指定します。<br />814 実際の指定方法は、「<requestで指定したキーワード> <チェックしたい発言>」です。<br />815 省略するとこの機能は無効になります。<br />816 指定したときだけこの機能が有効になります。<br />817 </p>818 <div class="element"><span class="key">request</span>:<span class="value">反応チェック</span></div>819 <p class="comment">820 request に反応するときのフォーマットを指定します。<br />821 #(key) がキーワード、 #(message) が発言に置換されます。<br />822 request を指定したときのみ必要。<br />823 </p>824 <div class="element"><span class="key">reply-format</span>:<span class="value">「#(key)」という発言に「#(message)」と反応します。</span></div>825 <p class="comment">826 request に反応する最大個数(ブロックの数)を指定します。<br />827 あまり大きな値を指定すると、アタックが可能になったり、ログが流れて邪魔なので注意してください。<br />828 通常の反応には関与しません。また、応答の行数ではありません。<br />829 </p>830 <div class="element"><span class="key">max-reply</span>:<span class="value">5</span></div>831 812 <p class="comment"> 832 813 メッセージの登録数を返答するキーワードを指定します。<br /> 833 814 省略するとこの機能は無効になります。<br /> 834 815 指定したときだけこの機能が有効になります。<br /> 816 mask で許可された人(通常応答を返す人)が使えます。<br /> 835 817 </p> 836 818 <div class="element"><span class="key">count-query</span>:<span class="value">反応登録数</span></div> … … 847 829 省略するとこの機能は無効になります。<br /> 848 830 指定したときだけこの機能が有効になります。<br /> 831 modifier で許可された人だけ使えます。<br /> 849 832 </p> 850 833 <div class="element"><span class="key">add</span>:<span class="value">反応追加</span></div> … … 859 842 省略するとこの機能は無効になります。<br /> 860 843 指定したときだけこの機能が有効になります。<br /> 844 modifier で許可された人だけ使えます。<br /> 861 845 </p> 862 846 <div class="element"><span class="key">remove</span>:<span class="value">反応削除</span></div> … … 867 851 <div class="element"><span class="key">removed-format</span>:<span class="value">#(name|nick.now): #(key) #(message;に対する反応 %s|;) を #(count) 件削除しました。</span></div> 868 852 <p class="comment"> 869 addとremoveを許可する人。省略された場合は「* *!*@*」と見做します。<br /> 853 反応の確認を行うためのキーワードを指定します。<br /> 854 通常応答と違って, multivalue-limit の制限を受けずに全てのマッチした応答を返します。<br /> 855 実際の指定方法は、「<requestで指定したキーワード> <チェックしたい発言>」です。<br /> 856 省略するとこの機能は無効になります。<br /> 857 指定したときだけこの機能が有効になります。<br /> 858 modifier で許可された人だけ使えます。<br /> 859 </p> 860 <div class="element"><span class="key">request</span>:<span class="value">反応チェック</span></div> 861 <p class="comment"> 862 request に反応するときのフォーマットを指定します。<br /> 863 #(key) がキーワード、 #(message) が発言に置換されます。<br /> 864 request を指定したときのみ必要。<br /> 865 </p> 866 <div class="element"><span class="key">reply-format</span>:<span class="value">「#(key)」という発言に「#(message)」と反応します。</span></div> 867 <p class="comment"> 868 request に反応する最大個数(反応マスクの数)を指定します。<br /> 869 (1つの反応マスクに対応するメッセージの数は制限されません。)<br /> 870 あまり大きな値を指定すると、アタックが可能になったり、ログが流れて邪魔なので注意してください。<br /> 871 通常の反応には関与しません。また、応答の行数ではありません。<br /> 872 </p> 873 <div class="element"><span class="key">max-reply</span>:<span class="value">5</span></div> 874 <p class="comment"> 875 編集系コマンド, add とremove と request を許可する人。<br /> 876 省略された場合は「* *!*@*」(全員許可)と見做します。<br /> 870 877 </p> 871 878 <div class="element"><span class="key">modifier</span>:<span class="value">* *!*@*</span></div> -
lang/perl/tiarra/branches/module-reload/main/Tiarra/Resolver.pm
r11407 r12950 66 66 our $use_threads_state_checking; 67 67 BEGIN { 68 $use_threads = Tiarra::OptionalModules->threads;68 $use_threads = !$^C && Tiarra::OptionalModules->threads; 69 69 if ($use_threads) { 70 70 require threads; -
lang/perl/tiarra/branches/module-reload/module/Auto/Reply.pm
r12849 r12950 256 256 257 257 # 機能: 258 # - 通常応答 259 # - 登録数確認(count-query )260 # - 反応確認(request )261 # - 反応追加(add )262 # - 反応削除(remove )258 # - 通常応答(mask) 259 # - 登録数確認(count-query/mask) 260 # - 反応確認(request/modifier) 261 # - 反応追加(add/modifier) 262 # - 反応削除(remove/modifier) 263 263 # 通常応答以外は設定を省略することで機能を無効にできます。 264 264 … … 289 289 # plum: mask: *!*@* 290 290 291 # このブロックが発言に反応する確率を指定します。291 # マッチした1つの反応マスクが実際に発言に反応する確率を指定します。 292 292 # 百分率です。省略された場合は100と見做されます。 293 293 rate: 100 294 295 296 # 反応の確認を行うためのキーワードを指定します。297 # 実際の指定方法は、「<requestで指定したキーワード> <チェックしたい発言>」です。298 # 省略するとこの機能は無効になります。299 # 指定したときだけこの機能が有効になります。300 request: 反応チェック301 302 # request に反応するときのフォーマットを指定します。303 # #(key) がキーワード、 #(message) が発言に置換されます。304 # request を指定したときのみ必要。305 reply-format: 「#(key)」という発言に「#(message)」と反応します。306 307 # request に反応する最大個数(ブロックの数)を指定します。308 # あまり大きな値を指定すると、アタックが可能になったり、ログが流れて邪魔なので注意してください。309 # 通常の反応には関与しません。また、応答の行数ではありません。310 max-reply: 5311 294 312 295 # メッセージの登録数を返答するキーワードを指定します。 313 296 # 省略するとこの機能は無効になります。 314 297 # 指定したときだけこの機能が有効になります。 298 # mask で許可された人(通常応答を返す人)が使えます。 315 299 count-query: 反応登録数 316 300 … … 325 309 # 省略するとこの機能は無効になります。 326 310 # 指定したときだけこの機能が有効になります。 311 # modifier で許可された人だけ使えます。 327 312 -add: 反応追加 328 313 … … 335 320 # 省略するとこの機能は無効になります。 336 321 # 指定したときだけこの機能が有効になります。 322 # modifier で許可された人だけ使えます。 337 323 -remove: 反応削除 338 324 … … 341 327 removed-format: #(name|nick.now): #(key) #(message;に対する反応 %s|;) を #(count) 件削除しました。 342 328 343 # addとremoveを許可する人。省略された場合は「* *!*@*」と見做します。 329 # 反応の確認を行うためのキーワードを指定します。 330 # 通常応答と違って, multivalue-limit の制限を受けずに全てのマッチした応答を返します。 331 # 実際の指定方法は、「<requestで指定したキーワード> <チェックしたい発言>」です。 332 # 省略するとこの機能は無効になります。 333 # 指定したときだけこの機能が有効になります。 334 # modifier で許可された人だけ使えます。 335 request: 反応チェック 336 337 # request に反応するときのフォーマットを指定します。 338 # #(key) がキーワード、 #(message) が発言に置換されます。 339 # request を指定したときのみ必要。 340 reply-format: 「#(key)」という発言に「#(message)」と反応します。 341 342 # request に反応する最大個数(反応マスクの数)を指定します。 343 # (1つの反応マスクに対応するメッセージの数は制限されません。) 344 # あまり大きな値を指定すると、アタックが可能になったり、ログが流れて邪魔なので注意してください。 345 # 通常の反応には関与しません。また、応答の行数ではありません。 346 max-reply: 5 347 348 # 編集系コマンド, add とremove と request を許可する人。 349 # 省略された場合は「* *!*@*」(全員許可)と見做します。 344 350 modifier: * *!*@* 345 351 -
lang/perl/tiarra/branches/module-reload/module/System/WebClient.pm
r12849 r12950 24 24 use Scalar::Util qw(weaken); 25 25 26 our $VERSION = '0.0 2';26 our $VERSION = '0.03'; 27 27 28 28 our $DEBUG = 0; … … 470 470 } 471 471 472 $DEBUG and $this->_debug("$peer: check auth ..."); 472 473 my $accepted = $this->auth($conflist, $req); 473 474 if( @$accepted ) … … 535 536 foreach my $conf (@$conflist) 536 537 { 538 $DEBUG and $this->_debug("$req->{peer}: check auth for $conf->{name}"); 537 539 my $authlist = $conf->{auth} or next; 538 540 foreach my $auth (@$authlist) 539 541 { 540 $auth or next; 542 if( !$auth ) 543 { 544 $DEBUG and ::printmsg("$req->{peer}: - skip: empty value"); 545 } 541 546 my @param = split(' ', $auth) or next; 542 547 $param[0] =~ /^:/ or unshift(@param, ':basic'); … … 544 549 if( !$sub ) 545 550 { 551 $DEBUG and ::printmsg("$req->{peer}: - skip: unsupported: $param[0]"); 546 552 next; 547 553 } … … 549 555 if( $ok ) 550 556 { 557 $DEBUG and $this->_debug("$req->{peer}: - $conf->{name} accepted ($param[0])"); 551 558 push(@accepts, $conf); 552 559 }elsif( defined($ok) ) 553 560 { 561 $DEBUG and $this->_debug("$req->{peer}: auth denied by $conf->{name}"); 554 562 return undef; 555 563 } … … 566 574 567 575 my $line = $req->{Header}{Authorization}; 568 $line or return; 576 if( !$line ) 577 { 578 $DEBUG and ::printmsg("$req->{peer}: no Authorization: header"); 579 return; 580 } 569 581 570 582 my ($type, $val) = split(' ', $line, 2); 571 $type eq 'Basic' or return; 583 if( $type ne 'Basic' ) 584 { 585 $DEBUG and ::printmsg("$req->{peer}: not Basic Authorization (got $type)"); 586 return; 587 } 572 588 573 589 require MIME::Base64; … … 587 603 return; 588 604 } 605 $DEBUG and ::printmsg("$req->{peer}: accept user $param->[0] pass $param->[2] with '$user' '$pass'"); 589 606 1; 590 607 } … … 920 937 # パスワードの比較検証. 921 938 # "{MD5}xxx" (MD5) 939 # "{SMD5}xxx" (Salted MD5, hex(md5(pass+salt)+salt) 922 940 # "{B}xxx" (BASE64) 923 941 # "{RAW}xxx" (生パスワード) 942 # "{CRYPT}xxx" (cryptパスワード) 924 943 # "xxx" (生パスワード) 925 944 # … … 951 970 } 952 971 my $cmp = Digest::MD5::md5_hex($plain); 953 return $enc eq $cmp; 972 return $cmp eq lc($enc); 973 }elsif( $type =~ /^(SMD5)\z/ ) 974 { 975 eval { require Digest::MD5; }; 976 if( $@ ) 977 { 978 die "no Digest::MD5"; 979 } 980 my $enc_hex = substr($enc, 0, 32); 981 my $enc_salt = pack("H*",substr($enc, 32)); 982 my $cmp = Digest::MD5::md5_hex($plain.$enc_salt); 983 return $cmp eq lc($enc_hex); 954 984 }elsif( $type =~ /^(RAW)\z/ ) 955 985 { 956 986 return $enc eq $plain; 987 }elsif( $type =~ /^(CRYPT)\z/ ) 988 { 989 my $cmp = crypt($plain,substr($enc,0,2)); 990 if( length($plain) > 8 ) 991 { 992 my $cmp2 = crypt(substr($plain, 0, 8),substr($enc,0,2)); 993 if( $cmp eq $cmp2 ) 994 { 995 die "CRYPT supports upto 8 bytes"; 996 return; 997 } 998 } 999 return $cmp eq $enc; 957 1000 }else 958 1001 { … … 1951 1994 # auth: :softbank <UID> 1952 1995 # auth: :au <SUBNO> 1953 # <pass> には {MD5}xxxx や {B}xxx を利用可能.1996 # 各値(<pass>等)には {MD5}xxxx や {B}xxx や {CRYPT}xxx を利用可能. 1954 1997 # そのままべた書きも出来るけれど. 1955 1998 auth: :basic user pass
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)