2014年02月09日

Calendar and Contacts Server を自動的に走らせる

 Calendar and Contacts Server は、サーバ上ではなく普段使いの Mac 上で走らせることにする。なお、Calendar and Contacts Server は /Applications/CalendarServer にインストールし直した。また、バージョンは 4.3 でも OK だった(5.1 だと途中でエラーが出てインストールできなかった)。自分がログインすると同時に立ち上がるのが好ましいので、こんな風に細工。

・次のファイルを作成し、/Applications/CalendarServer/exec_calendarserver.sh として保存。chmod +x で実行可能にしておく。(注:十分にテストしてないので動作不良があるかも。)

#!/usr/bin/env bash # Rotate log and run Calendar Server LOG=$HOME/Library/Logs/caldav.log if [ -e $LOG ]; then if [ $(( `wc -c $LOG | (read a b; echo $a)` > 1000000 )) == '1' ]; then # Rotate log rm -f $LOG.7.bz2 mv -f $LOG.6.bz2 $LOG.7.bz2 mv -f $LOG.5.bz2 $LOG.6.bz2 mv -f $LOG.4.bz2 $LOG.5.bz2 mv -f $LOG.3.bz2 $LOG.4.bz2 mv -f $LOG.2.bz2 $LOG.3.bz2 mv -f $LOG.1.bz2 $LOG.2.bz2 mv -f $LOG.0.bz2 $LOG.1.bz2 bzip2 $LOG mv -f $LOG.bz2 $LOG.0.bz2 touch $LOG fi fi exec /Applications/CalendarServer/CalendarServer/run -d >>$LOG 2>&1

・次のファイルを作成し、~/Library/LaunchAgents/com.darwincalendarandcontacts.server.plist として保存。

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Disabled</key> <false/> <key>Label</key> <string>com.darwincalendarandcontacts.server</string> <key>ProgramArguments</key> <array> <string>/Applications/CalendarServer/exec_calendarserver.sh</string> </array> <key>RunAtLoad</key> <true/> </dict> </plist>

 自動実行はこれで実現できるが、ついでに admin 以外のユーザー・パスワードも作っておく。/Applications/CalendarServer/CalendarServer/conf/auth/accounts-test.xml の中で <user>...</user> が並んでいるところを見つけ、次の記述を書き加える。パスワードは平文で書く。

<user> <uid>nagata</uid> <guid>nagata</guid> <password>xxxxxxxxxxxx</password> <name>Toshi Nagata</name> <first-name>Toshi</first-name> <last-name>Nagata</last-name> </user>

 iCal は nagata@127.0.0.1 のアカウントにアクセスすればよい。予定と ToDo リストは違うカレンダーに入れないといけない(デフォルトでは "calendar" と "tasks")。これはちょっと面倒だな。アドレスブックはどうしようかな。実はアドレスブックはほとんど携帯側でしか見ないので、Mac 上で見られなくてもそう困らないかも。

Posted at 2014年02月09日 20:28:53
email.png