2015年09月10日

DAVdroid と Radicale でハマる(続き)

 きのうの続き。主なポイントは、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 も同様の設定で接続できた。

Posted at 2015年09月10日 00:35:33
email.png