きのうの続き。主なポイントは、Radicale のディレクトリ構成だった。Radicale では、設定ファイルの filesystem_folder
で指定するディレクトリに .ics
や.vcf
ファイルを入れることになっている。これまでは、こんな構成にしていた。
ところが、DAVdroid はこの構成を認識できない。.ics
ファイルは collections/(username)
の直下にないといけない。
もう一つ、これは Mac 特有の問題。構成を変えるために Finder 上でファイルをいじっていたら、今度は DAVdroid でこんなエラーが出るようになった。
HTTP error: 500 Dude, this is whack!
これにはほとほと困ってしまった。いろいろ探しても全然情報が見つからない。手がかりをつかんだのは、Mac の Terminal 上でコマンドラインから Radicale を走らせてみた時だった。上記のエラーと同時に、コンソールに python のバックトレースが出てきた。
とりあえず、サーバが python でエラーを起こして、端末に変なメッセージが出ていることはわかった。最後の python のメッセージから判断すると、バイナリファイルを間違って読んでいるような雰囲気である。バックトレースに出てくる行の直前に print
文を入れて実行してみると、.DS_Store
を読みに行っていることがわかった。こういうことが簡単にできるのが、スクリプト言語で書かれているシステムの強みだな。結局、次のように修正。
# Line 191 of __init__.py for item in items: if item.name == ".DS_Store": # Added continue # Added if isinstance(item, ical.Collection):
ちゃんと動くようになりました。やれやれ。ちなみに、DAVdroid 側の設定は、サーバアドレスを http://xxx.xxx.xxx.xxx:8008/
(config
の設定に合わせる)とすれば、その下のカレンダーとアドレスブックを自動的に認識してくれる。iCal も同様の設定で接続できた。