|
2ch 風にリンク張れるようにしてみました。^(>>|@)\d+ は リンクが張られます。ただ、2ch のように数字に identify を 持たせたくないなぁ。 >>1453 さんの言うように…してみたところ、うまく動きました とかはちょっと嫌。 >>1455 rosegarden さん > 論点ずれた挙げ句に大量のゴミみたいな > メッセージを書き込んでしまい申し訳ありませんでした。 いいえ〜。こういう機会でもないとなかなかソース 読まないタチなので、この手の話は歓迎です。 ちなみに僕はデバッガ使えないようなレベルなので (bt しか知らない)、今後ともいろいろと御教示下さい。 >>1449 kiki@TL さん > GNOME+enlightenmentで すいませんが、GNOME も E も KDE もほとんど使ったことが ありませんので、僕はわかりません。 |
|
こんにちは。 >>1441のmerryです。 68userさん >>1444で質問に答えていただきありがとうございます。 rotateを調べてみたいと思います。 |
|
こんにちは UNIXでsendmailを使ってメールを送信するスクリプトを Perlで作ろうと思っているのですが、 添付ファイルを付けることは可能なのでしょうか? よろしくお願いします。 |
|
はじめまして。 crontabで毎日12:00にabcというスクリプトを 起動するといった設定を現在しているんですが、 これを最終金曜日だけ11:00起動でそれ以外は12:00に起動させるっていう 方法はあるんでしょうか? 教えていただきたく。 |
|
初めまして、辻 です。 HTTPでGETするプログラムを作成しています。HTTP クライアントを作ってみよう(4) を参考にさせていただいて、URLのエンコードしようとしています。 で、 /~user/hoge.cgi?fuga=ABC!"$ DEF+ が /%7euser/hoge.cgi?fuga%3DABC%21%22%5C%24+DEF%20 と書かれています。自分で作ったプログラムで確かめてみると、 /%7euser/hoge.cgi?fuga%3dABC%21%22%24+DEF%2b となりました。 また、URLのエンコードの対象はURL全てですか?それとも、CGIとかで使われる、?の後ろのみなのでしょうか?~が含まれるので、そんなことはないでしょうが。?そのものは、対象にならないようですし、ファイル名に@等がついてたりしたらどうなるのでしょうか? ちなみに、 string yHttpGet::UrlEncode(string url) { char buff[10]; for(int i=0; i<url.length(); i++) { char c = url.at(i); if(((c <'0') || ('9' < c)) && ((c < 'a') || ('z' < c)) && ((c < 'A') || ('Z' < c)) && ('/' != c) && ('?' != c) && (' ' != c) && ('_' != c) && ('-' != c) && ('.' != c) && ('*' != c)) { sprintf(buff, "%%%02x", c); url.replace(i, 1, buff); } else if(c == ' ') { url.replace(i, 1, "+"); } } return url; } 今のところ、このようなコードを書いています。 |
|
@1458 masa さん > UNIXでsendmailを使ってメールを送信するスクリプトをPerlで作ろうと > 思っているのですが、添付ファイルを付けることは可能なのでしょうか? モジュールが使えるなら http://www.parkcity.ne.jp/~chaichan/qanda/qa425.htm?00-12-13-19-49 で、ふじさんが述べておられる方法がお勧めです。 @1459 M.K さん > これを最終金曜日だけ11:00起動でそれ以外は12:00に起動させる > っていう方法はあるんでしょうか? 少なくとも FreeBSD の crontab では、それを実現する簡単な 方法はありません。 金曜日の 11:00 毎日 12:00 という二つのエントリを作って、スクリプト内で 最終金曜日で12時台なら、処理終了 金曜日 && 最終金曜日でない && 11時台なら、処理終了 とするのがいいでしょう。 試してませんが、*BSD や GNU の date なら、 date +%m … 現在の月を求める date -v+7d +%m … 一週間後の月を求める を利用して 0 11 * * 5 [ `date +%m`!=`date -v+7d +%m` ] && run-script 0 12 * * * [ `date +%w'!='5' -o `date +%m`!=`date -v+7d +%m` ) ] && run-script てなことが可能かもしれません (条件合ってるかな?)。 @1460 辻さん foo.cgi?.... という GET 形式は、? 以降の文字が QUERY_STRING (疑問符文字列) という名前で取り出せることからわかるように、 ? はエンコードする必要はありません。疑問符であることが重要なのです。 > URLのエンコードの対象はURL全てですか? 全て、というかパス (/~user...) も含めてエンコードが必要です。 ただし、引数を渡したい場合は ? はエンコードしません。 でなくて、ファイル名の一部に ? が含まれる場合は エンコードが必要です。 この掲示板の上にある発言フォームから文字を入力すると、 Name … 68user Email … 68user@X68000.startshop.co.jp Message … ほげほげ というような、対応関係が生まれます。このようなフォームで 生成されたデータを POST で送るとき、クライアントは application/x-www-form-urlencoded という mime type で 送信しなければいけません。「HTTP クライアントを作ってみよう」 では手抜きして送ってませんが、本来は送るべきです。 で、GET の場合も同様に x-www-form-urlencoded 形式ならば ?foo=bar は ?foo=bar でよいです。= は URL エンコードしません。 しかし、そうではなく 「foo=bar」という引数を渡したいのなら ?foo%3Dbar となります。 というふうに、本当は /~user/hoge.cgi?fuga=ABC!"$ DEF+ という例だけでは、どこをエンコードすべきかは明確には なりません。なので、あの解説はあまりよろしくないですね。 例えば hoge.cgi?foo=bar&def=ghi は、フォームに foo、 bar という要素があるならこのまま送ればよいですが、 foo=「bar&def=ghi」という意味なら foo=bar%26def%3Dghi」 とすべきです。どちらなのかは hoge.cgi?foo=bar&def=ghi だけでは正確には判断できません。 |
|
こんばんは、質問をした本人のレスが遅れて申し訳ありません。 (しかも、ソースまで見て頂いて恐縮です。) >サーバアプリケーションの名前を教えてください。qpopper ですか? 一般のプロバイダで実験したので、わかりませんでした。 今度他の qmail, sendmail が動いているサーバーで実験してみます。 さて、私も手元にあった、qpopper3.0.2 のソースを眺めてみました。 (POP_TERMINATE は '.' buffer は buffer[MAXMSGLINELEN] (MAMSGLINELEN=1024) と宣言されています) pop_sendline ( p, buffer ) POP * p; char * buffer; { char * bp; /* * Byte stuff lines that begin with the termination octet */ if ( *buffer == POP_TERMINATE ) (void)fputc ( POP_TERMINATE, p->output ); /* * Terminate the string at a <NL> if one exists in the buffer */ bp = index ( buffer, NEWLINE ); if ( bp != NULL ) *bp = 0; /* * Send the line to the client */ (void) fputs ( buffer, p->output ); /* * Put a <CR><NL> if a newline was removed from the buffer */ if ( bp != NULL ) (void) fputs ( "\r\n", p->output ); } これをみると、やはり、\n がなければそのまま出力されて しまうようですね。なんとなく、最初から、\n があることを 想定しているような感じも受けます。 |
|
68user さん、何度もありがとうございます。 私は、HTMLにある<A>タグでリンクされているHTMLをGETするプログラムを作っています。フォームに関わるCGIを作ってるわけではないのですが、リンク先が掲示板で?で引数を渡すリンクがある場合は、正しく渡して、取り出したいと考えています。 この場合、GETなのか、POSTなのかはわからないのですが。ブラウザがフォームからの結果以外で単純にリンクから、ページを読み込むときは、GETを使っているのだと思うので、GETでいいのですか? で、よくわかっていないのですが。この場合も、URLを%とかでエンコードすべきかは判断できないのですか?ブラウザはやっているように思えるのですが。。。 |
|
行頭に「>>1461」または「@1461」と書くと、 >>1461 68user というふうにリンクを張るようにしました。このとき、自動的に リンク先の発言者の名前を補完します。「さん」付けは なしですが、御了承下さい。 また、「>>1461 ほげほげ」と、数字の後に何かを書くと、 >>1461 ほげほげ とリンクだけが張られ、名前の補完はされません。しかしスクリプトが どんどん汚くなってきた…。brush up が必要だなぁ。 >>1463 辻 義一 > GETでいいのですか? foo.cgi?hoge.. という形式なら GET でよいです。 要は、HTML を読んで <A HREF="foo.cgi?hoge=fuga">..</A> という 部分から foo.cgi?hoge=fuga という文字列を切り出した場合、どこを エンコードすべきかということですよね。普通は何もエンコードせず デコードせず、そのまま使えばいいと思います。アンカーに書く URL は既に URL エンコードされているはずだからです。 それを無理にエンコードする必要はないですが、あえて行うならば ?=&%#/.-*_ 以外の記号と 0x80〜0xff はエンコード、でいいのでは ないでしょうか。 >>1462 nac > これをみると、やはり、\n がなければそのまま出力されて > しまうようですね。 そうですね。POP3 サーバとしては、本文の行がどれだけ長くても、 改行は付加しないのが普通ではないかと思います。基本的にクライ アントにデータを流すだけですから。 |
|
>それを無理にエンコードする必要はないですが、あえて行うならば >?=&%#/.-*_ 以外の記号と 0x80〜0xff はエンコード、でいいのでは >ないでしょうか。 html の文法的には hoge.cgi?foo=1&bar=2 は hoge.cgi?foo=1&bar=2 と書くそうなので、そういった html の文字参照の変換は 必要になるかも知れません。例えば、$ とか…。 |
|
68user さん。 ありがとうございます、エンコードもデコードもしなくて良いと言うことですか。楽は楽なのですが。~もそのままで良いのかな。。今のプログラムでGETできているので、このままで行こうかと思います。 rosegarden さん。 その変換について走っていますが、、タグ内の文字列(""で囲まれた部分)までは適用しなくても良いと思うのですが。しているのも見たことありませんし。 |
|
>>1466 辻 義一さん http://www.ne.jp/asahi/minazuki/bakera/html/opinion/ampersand が、良くまとまっています。ご参考まで。 ※ 僕のサイトは、どうしてたかなぁ・・・ |
|
たまたま、この件で大ハマリしてました (1時間悩んだ)。 http://X68000.startshop.co.jp/~68user/tmp/amp.html FreeBSD jman へのリンクを張ろうとしていたのですが、 上のリンクは mroff.cgi?.....&dir=jpman-4.2.0%2Fman§=8 と書いていますが、うまくいきません。よく知りませんが、&sec か § という実体参照があるのでしょう。で、ブラウザ (FreeBSD+NN4.75) がその文字に置き換えてリクエストを送るので、mroff.cgi 側に こちらの意図したデータを渡せないのでしょう。 下のリンクは mroff.cgi?.....&dir=jpman-4.2.0%2Fman&sect=8 としているので OK です。 うちのページは何も考えず & のままにしていますね。いかんなぁ。 |
|
>>1467 (自己フォロー) http://www.asahi-net.or.jp/%7Ejy3k-sm/i_net/url.html にも、色々あります。 >>1468 68user 雨が降って、ひまなので、ついでに、調べてみました。 http://www.w3.org/TR/REC-html40/sgml/entities.html によると、sectはsection signだそうです。 因みに、win98/IE4,NN4では§、bidi-mozilla(11-13)では%A1%F8 になりました。 |
|
どうも、お世話になります。 最近、DNSの勉強していて、試しに立ててみようと 思っています。(Redhat Linux) そこで、質問なんですけど、 ・ダイヤルアップ接続でDNSサーバは動かせますか? #もちろん一時的でいいんで‥ ・DNSサーバで必要なものは何でしょうか? 気をつける点等.. #そういうHPを知っていたら教えて下さい。 よろしくお願いします。 |
|
>・DNSサーバで必要なものは何でしょうか? 気をつける点等.. >#そういうHPを知っていたら教えて下さい。 Linux-HOWTO で詳しく書いたものがありましたよ。 |
|
>>1471参照 ついでだったので、調べておきました。 http://www.linux.or.jp/JF/JFdocs/DNS-HOWTO.html JF インストールすれば大抵入っています。 |
|
rosegardenさん有難う御座います。 教えてくれたページを見て勉強します。 これからもよろしくお願いします。 |
|
ども。お世話になってます。 管理モードのパスワードとかって、普通crypt()でハッシュしますよね。 でもDESの場合辞書アタックとかで簡単に破られちゃいますよね。 なのでmd5(md5sum)コマンドで「4fcf95ef97e1b7b248698bca83781902」みたいに ハッシュしているのですが、これはcrypt()のDES、MD5($1$...$)と比べてどっちが セキュリティ的によろしいのでしょうか。 |
|
URLエンコードの件ありがとうございました。 URIですか?に&をそのまま入れているページはたくさんあります。自分のホームページ上のCGIもそうだし、検索エンジンとかもそう。修正しようか迷っています。登録されている実体参照と重なっていないようなので、事実上大丈夫なのでしょうが。勉強になりました。これを、CGIに反映させるかは迷っているのですが。 現在作っているプログラムでは、色々動かして問題がないようですので、このままにしておきます。ブラウザでも正しくエンコードされていない、ページを開くときに支障があるぐらいですから、こちらで変換すれば上手く出来そうですが、ページの責任と言うことで。終わらせます。 ありがとうございました。 今回は、 |
|
こんちはーっす。 ず、ずいぶんまえに、ここに(そのときとはURL違うような気もするが) 永久保存版の過去ログなかったっすか? 久しぶりに見たくなって検索したのですが・・・・ 最近行ってないけどtestボードまだ、げんきなのかなー・・・・ |
|
>>1474 ぷに辻 > 管理モードのパスワードとかって、普通crypt()でハッシュしますよね。 DESやmd5を1方向関数として使用している点は了解していると仮定します。 (余談1 ハッシュ関数と1方向関数は同義と言ってもよいですが、一応別物です。 1方向関数は(結果的に)ハッシュ関数ですが、逆は必ずしも真ではありません。 moduloはハッシュ関数ですが、出力から元の値が容易に推測可能なので良い1方向関数ではありません。) > でもDESの場合辞書アタックとかで簡単に破られちゃいますよね。 辞書アタックと言っているのは、1方向関数でエンコードされたパスワードを奪われて、それに対して、しらみつぶしにパスワードを探索していると仮定します。 (余談2 暗号化パスワードと呼ぶ場合もありますが、復号化するわけではないので、誤用に近いと思っています。) 辞書アタックは、ワードを同じ1方向関数でエンコードして、マッチするものを探すことですから、同じ長さのパスワードなら、探索にかかるコストは、DESでもmd5でも大差無いと思います。 ただ、DESの場合、鍵長が56bitで、パスワード自体を鍵に使うことで(本来、暗号化アルゴリズムであるDESを)1方向関数にしているので、パスワードの長さが8文字に制限されます。 md5は(本来から1方向関数で)元データの長さに(現実的な)制限はないので、もっと長いパスワードが選べます。 この差は大きいですが、弱い(or 短い)パスワードを使っている限り、辞書アタックに対する強さは変わらないと思います。 (辞書アタック以外の探索法に対する強さは分かりません。 DESが簡単に破られる、と言っているのは、3年ぐらい前(もっと前?)のRSAコンテストで、約半年かかって破られたことを根拠にしていると思いますが、逆に言えば、未だ辞書アタックしか有効な手が無いという辺り、腐ってもDESと思わせるものもあります。) |
|
>>1476 SabaCurry > 永久保存版の過去ログなかったっすか? はい、ありました。半永久保存版は1997年9月16日だけですが、 一応 1997/9/29〜1998/09/20 の分は保存してあります。 データはありながらも閲覧用 CGI スクリプトがどっか行っちゃって 見られない状態が続いてましたが、さきほど発掘してきました。 見てたら恥ずかしくなったので (笑)、URL はメールで送ります。 そのうちアナウンスもなくひっそりと公開します。 >>1474 ぷに辻 > crypt()のDES、MD5($1$...$)と比べてどっちがセキュリティ的に > よろしいのでしょうか。 md5 より crypt+md5 の方が、salt という仕組みがある分 強固ではないかと思います。推測にしか過ぎませんが。 >>1477 gixs > RSAコンテストで、約半年かかって破られたこと 専用ハードウェアを使うと、56bit DES 解読に要する時間は 22時間くらいでしたっけ。剣呑剣呑。 |
|
>>1478 68user > URL はメールで送ります。 From: MAILER-DAEMON@lala.v3.com (Mail Delivery System) <tetuya@i.am>: unknown user: "tetuya" ということで、メールが送れませんでした。 |
|
>>1478 68user さん >md5 より crypt+md5 の方が、salt という仕組みがある分 >強固ではないかと思います。推測にしか過ぎませんが。 そう言えば、perl スクリプトなどから crypt 使うと FreeBSD の最近の RELEASE では DES で決めうちになっていることが多いようです。 ことに 4.1.1-RELEASE 以降の暗号解禁リリースの話です。 無論 DES 入れなければ、MD5 ですが。 システム全体では、切替え用のライブラリ関数もあって DES と MD5 を切替えて使えるのに perl が FreeBSD の切替えメカニズムに追従できていないようなんです。 それともできるのかな?ご存知の方いたらスクリプトレベルでの 切替え法を教わりたいです。 断定はしませんが、ソースをちょっと見た印象として、 -current は、login.conf で切替えられて、 デフォルトは MD5 です。今の所。4-stable は DES 入れると 有無を言わさず DES みたいですね。 |
|
>>1480 参照 >ことに 4.1.1-RELEASE 以降の暗号解禁リリースの話です。 正確にはDES が気軽に使えるようになったのは 4.0-RELEASE からですね。 |
|
>>1480 rosegarden > システム全体では、切替え用のライブラリ関数もあって > DES と MD5 を切替えて使えるのに perl が FreeBSD の > 切替えメカニズムに追従できていないようなんです。 あ、そうなんですか。全然知りませんでした。 /usr/lib/libcrypt* -> libscript* というリンクなら MD5、 /usr/lib/libcrypt* -> libdescript* なら DES、くらいの切り替え方法しかないのかと思ってました。 4.2-BETA (make world しなきゃな〜) のソースを見た限りでは よくわからなかったのですが、切り替え用ライブラリ関数とは どれのことでしょうか? |