飴屋

開発日記 / 2017年の日記

2017/12/27

年の瀬です。ちょっと時間が空いた時にメールクライアントのThunderbirdのアドオン(extension)を初めて書いてみました。やりたかったことは新調したマウスにマクロ用のボタンがついていたので、ボタンを押したらフォルダーペインがよく使う二つ(「未読フォルダ(コンパクト)」と「お気に入りフォルダ(コンパクト)」)に切り替わるというだけの機能です。機能自体の実装はすぐ済んだのですが、マクロボタンに割り当てるショートカットキーの登録になぜかつまづきました。

<keyset>
<key id="switch-fp-key" modifiers="control shift" key="1" oncommand="switchPanel();" />
</keyset>

Ctrl+Shift+1キーを押したら処理が行われるように↑こんな感じで書いてみたものの、キーを押しても無反応でした。

<keyset>
<key id="switch-fp-key" modifiers="control shift" key="!" oncommand="switchPanel();" />
</keyset>

正解はShiftキーが押されているので「1」ではなく「!」とすればよいというだけでした。よそのアドオンを参考にしつつ、やっとたどり着いた正解でした。

2017/9/19

管理サイトを順次SSL化し始めているのですが、そのときに気が付いたのでメモ。

https://soft.candychip.net/?%e9%96%8b%e7%99%ba%e6%97%a5%e8%a8%98

このサイトなどは元々Pukiwikiを使っていたので、各記事が↑こんな感じのURLになります。マルチバイト文字がエンコードされているわけです。

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

サイトのプロトコルを統一するために.htaccessファイルに↑こんな記述を加えて、http経由のアクセスはhttps経由になるようにリダイレクトさせました。

http://soft.candychip.net/?%e9%96%8b%e7%99%ba%e6%97%a5%e8%a8%98

では、↑このURLは無事にhttps経由の同じリソースにアクセスされるかというとそうはならないのでした。

http://soft.candychip.net/?%25e9%2596%258b%25e7%2599%25ba%25e6%2597%25a5%25e8%25a8%2598

リダイレクト先は↑こんな感じになってしまいます。エンコードで付与された「%」文字が再エンコードされて「%25」になってしまっているわけです。これではhttp経由でアクセスしてきた方は変なURLにリダイレクトされてしまうのでした。

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]

対策は簡単でした。RewriteRuleに「NE」オプションを付与してあげるだけです。確か「NE」は「noescape」のエイリアスです。

2017/9/1

このサイトをPukiwikiで長いこと更新してきましたが、自前のWikiシステムに換装しなおしました。一部機能はそのままでは使えなくなりましたが、省略したり、作り直したり、ある程度は対応しました。

それとともにhttps化作業も行いました。

2017/1/9

新年早々、このサイトでも使用しているPukiWikiの編集権限アカウントのログインができなくなったので、解決したお話。直前に行った行為の中で怪しいのが、サーバーで使用するPHPのバージョンを5.3系から5.6系に上げたことだったので、5.3系に戻してみるもログインできないままでした。

そこでPukiWikiのオーソライズ系のスクリプト(lib/auth.php)を覗いてみることに。BASIC認証のダイアログへの入力値がどうなっているか確認してみたところ、$_SERVER['PHP_AUTH_USER']も$_SERVER ['PHP_AUTH_PW']も空でした。

セキュリティ関連ソフトが悪さをしているのかもとも思ったのですが、それもなさそうなので、さらに調べたところPHPの高速化にFastCGIを使うと同様の事象が起こるとのこと。しかしFastCGIの設定を行った記憶はありません。

悩んだ結果、やはりPHPのバージョンを5.6系に上げた際に自動的にFastCGIを有効にする設定もされていたのが原因でした。5.3系に下げたあともFastCGIは有効なままになっていたのが原因でした。無効にしたら認証が通るようになり、こうして日記も書けました。

FastCGIを有効にしつつFastCGIの設定を変更してBASIC認証を使うようにもできるとかなんとかとのことですが、とりあえず、このままにしておきます。PukiWikiを使い続けているのも、そろそろ限界な気がするし、リプレースを考える時期なのかもしれません。

(追記)

SetEnvIfNoCase Authorization "^(Basic .*)$" HTTP_AUTHORIZATION=$1

.htaccessに↑このように追記すればよいらしい

開発日記

Last-Modified