目次
←201306^start|目次^..:2014:201402→
2013-08 日記コピー
2013-08-08 phttpgetだめだめすぎんだろ
[FreeBSD] FireWallの奥にあるFreeBSDでportsnapを実行する方法
FireWallがあるとportsnapコマンド実行に支障が出ることがあります。 ひとつはFireWallに答えなきゃいけない認証情報。 もうひとつはFireWallが通信内容を検査するためにかかってしまう通信の遅延。
# portsnap --debug fetch
とかやってデバグ情報を出したりpsコマンドでどんなコマンドが呼び出されているか調べると、/usr/bin/fetchと/usr/libexec/phttpgetが使われていることがわかりました。
PROXYの指定
fetchであれば、FireWall(PROXY)は環境変数 HTTP_PROXYでPROXYを指定してあげればいい。
# setenv HTTP_PROXY "http://proxy.ne.jp:8080"
のように。PROXYに認証情報がいるなら
# setenv HTTP_PROXY "http://userid:password@proxy.ne.jp:8080"
となります。
タイムアウトが発生する場合
今回食らった環境では、FireWallでダウンロードファイルを先にウイルス検査するため、大きいファイルのダウンロードほど通信に遅延が発生します。fetchコマンドのソースを見てみると遅延許容時間はデフォルトが120秒のようです。
この値は環境変数HTTP_TIMEOUTで変更できます。今回は30分を設定してみたので
# setenv HTTP_TIMEOUT 1800
となります。…68MBダウンロードされました。
最後にphttpgetの対処
ところがfetchが通ったあとなぜか servname not supported のメッセージが。
よくよく見ると、
phttpget: host = userid, port = password@proxy.ne.jp:8080: servname not supported for ai_socktype
とか…
要はphttpgetコマンドは環境変数HTTP_PROXYに設定したURIのuseridとpasswordを正しくパースできないわけですね。
fetchのソースを見ると、環境変数HTTP_PROXY_AUTHが使えるようなので、環境変数HTTP_PROXYから認証情報をはずし、環境変数HTTP_PROXY_AUTHに記述しました。
# setenv HTTP_PROXY_AUTH "basic:*:userid:password" # setenv HTTP_PROXY "http://proxy.ne.jp:8080"
こんな感じ。
ここまでやって、ようやく portsnap fetch が終了できました。
2013-08-11 リスメールはメンテが大変みたい
[FreeBSD][mail] PHP5.5でsquirrelmailを動かす
→taka2.info Webメールソフト SquirrelMail の PHP5.4対応
自宅のサーバに仕込んでたsquirrelmailが動かなくなってしまったんでバージョンアップしたけどこれがちょっとはまった。PHP5.3とそれ以降のバージョンの非互換が引き起こしたものとのこと。この非互換は件名や本文に日本語が混じると表示されない事象を引き起こします。
まずPHP再インストール
squirrelmail自体をportupgradeで更新しようとしたら、今のPHPバージョンじゃ動かせないよとのエラー。
cannot be installed: doesn't work with lang/php5 port (doesn't support PHP 5.4)
とおっしゃいます。
この時点で『あ、もしかしてもうSMじゃPHP5.5じゃないと駄目ってことにしたのかしら?』と思ったんで、すでに入っていたPHP-5.4.17を消して、PHP-5.5.0を導入。実際、Ports Treeからは PHP-5.4が消えているからなー。php5-xxx-5.4.xx のPortsはそれぞれphp55-xxx-5.5.0で置き換えを実施。
実際は後述の互換性の問題のことを言ってるんだけど、このときは考えもしなかった。だっていまさら5.3にしないでしょ?
さて、apache再起動してphpinfo()を組み込んだ.phpを呼び出して確認すると、mbstringやgettextの情報が出力されていない。あらら?….よくよく調べると /usr/local/etc/php/extensions.ini が作成されていない。
ディレクトリ /usr/local/etc/php 自体が作られていません。こちらについては、lang/php55-extensions をインストールすればよく、選択したモジュールのインストールとextensions.iniの作成と追加までやってくれます。デフォルトで選択されているモジュールのいくつかはコンパイルに失敗するものがあるので、エラーに遭遇したら make config で再度一覧を出して該当モジュールのチェックをはずし、あらためて make installを実行します。
再度phpinfo()で確認し不足なくモジュールが組み込まれたことを確認できたら、squirrelmailをportupgradeでアップグレードできます。
squirrelmailのロケール情報の入手
インストールが終わり、http://host/squirrelmail/src/configtest.php を呼び出すと、あら不思議。ja_JPロケールを指定しているけどそんなロケール知らんがな、とのたまいます。
locale/README.locales をみて、必要なロケール情報を持ってきて展開する必要があると判明。早速 ja_JP-1.4.18-20090526.tar.gz を入手。展開した結果をそのままsquirrelmailのインストールディレクトリへコピー。
squirrelmailの日本語が見えない事象
さてログイン..あれ?ボタンに「ログイン」って出るはずなんだけどな…
表示された画面中、メニューやフォルダ名は出てるんだけど、メールの件名なんか表示されてない(表示されてないからメールの内容を表示できない)。件名に日本語がなくて本文に日本語があるようなメールだと、本文がまったく表示されないか、アルファベットが少しだけ残って表示されている状態になる。
これ、PHPの組み込み関数 htmlspecialchars の互換性の問題から引き起こされているとの事。先のURLにある説明をどうぞ。こちらでは説明と解決ソリューションを明示しています。ありがたく使わせていただきました。
組み込み関数の振舞いいまさら変えるとか、ちょっとどうかしているんじゃないかなぁとも思う。でもまぁ、PHPお得意の切り替え用の設定をphp.iniに持たせるとかしないのは強い意志の表れ….ということにしておこう。
2013-08-19 あーおっかねぇ
[www] 中国からのSSH接続多すぎw
公開鍵認証にしてたJailのSSHに休みの間中接続を試みていた人等がいて、接続元のIPを調べたらなんかぜーんぶ中国ぽいですなぁ。
www# dig -x 210.32.157.92 ; <<>> DiG 9.8.3-P4 <<>> -x 210.32.157.92 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 3336 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;92.157.32.210.in-addr.arpa. IN PTR ;; AUTHORITY SECTION: 157.32.210.in-addr.arpa. 10800 IN SOA alpha.zju.edu.cn. root.zju.edu.cn. 2012112902 10800 3600 604800 86400 ;; Query time: 563 msec ;; SERVER: xxx.xxx.xxx.xxx#53(xxx.xxx.xxx.xxx) ;; WHEN: Mon Aug 19 13:59:03 2013 ;; MSG SIZE rcvd: 101 www#
[うちのコンソールより引用]
2013-08-21 うー
[雑記] SuExecじゃないんだよね
今借りてるレンタルサーバ、SuExecじゃないからCGI経由で作ったファイルとかを編集するのが大変。あとRubyのバージョンもちと古くて日記の最新版が動作させられない。rootつかえる適当なVMに引っ越そうかなぁ…
2013-08-26
[雑記] レシピ
思ったより読める。びっくり。もっとお堅い文面だと思ってた。でも作り方あっさりしすぎじゃないかなぁw 第二汁物→二十四カレー汁