« 2009/01, Vol. 156 PChome Magazine | 首頁 | 自動登入 Linux 系統 »

2009年01月12日

Open WebMail 行事曆進階應用

公用行事曆

# 新增公用行事曆管理帳號
useradd -s /sbin/nologin global
passwd global

以 global 身分登入 openwebmail, 讓 global 家目錄產生 .openwebmail 資料夾與相關檔案

# 公用行事曆系統環境設定
mkdir /var/spool/webcal
cd /var/spool/webcal
touch global_calendar.book
chown global:root global_calendar.book
chmod 644 global_calendar.book
vi /var/www/cgi-bin/openwebmail/etc/openwebmail.conf

加入: global_calendarbook /var/spool/webcal/global_calendar.book

ln -s /var/spool/webcal/global_calendar.book ~global/.openwebmail/webcal/calendar.book

日後只要使用 global 登入 openwebmail 即可編輯公用行事曆內容, 其餘帳號皆可在他們的 openwebmail 行事曆看到公用行事曆的行程.


部門公用行事曆

1. 建立部門公用行事曆檔案

mkdir /var/spool/webcal
cd /var/spool/webcal

touch 部門1_calendar.book
chown root:部門1 部門1_calendar.book
chmod 660 部門1_calendar.book

touch 部門2_calendar.book
chown root:部門2 部門2_calendar.book
chmod 660 部門2_calendar.book

ps. 若想預設行事曆唯讀, 只允許某人有修改權, 可修改 calendar.book 權限:
      chown 某人:部門n 部門n_calendar.book; chmod 640 部門n_calendar.book

2. 將部門成員的 calendar.book 連結到部門公用行事曆, 並匯入各員原本的行事曆內容

cd ~部門1的成員A/.openwebmail/webcal
cat calendar.book >> /var/spool/webcal/部門1_calendar.book
ln -sf /var/spool/webcal/部門1_calendar.book calendar.book

cd ~部門1的成員B/.openwebmail/webcal
cat calendar.book >> /var/spool/webcal/部門1_calendar.book
ln -sf /var/spool/webcal/部門1_calendar.book calendar.book

3. 處理彙整後的部門公用行事曆資料檔

cd /var/spool/webcal
cat 部門n_calendar.book | sort -t '@' -k 4 | sed -e 's/^[0-9]*@/@/' | nl -s '' -w 1 > sorted.output
cat sorted.output > 部門n_calendar.book
rm -f sorted.output

"部門公用行事曆" 原理其實很簡單, 就是把每個人的 ~/.openwebmail/webcal/calendar.book 依部門別連結到共用的 /var/spool/webcal/部門n_calendar.book, 這樣同部門的人就可以共用同一本行事曆. 缺點是: 每個人所張貼的行程都會被同部門的人看到, 即犧牲掉 "個人行事曆" 的功能. 若要兩全其美, 須修改 OpenWebMail 程式, 補充於文末.


參考資料: Open WebMail 進階說明 by Chung-Kie Tung


-- 2009.01.14 補充: 部門行事曆 + 個人行事曆 for OpenWebMail v2.53

下載點: http://cha.homeip.net/downloads/openwebmail-cal.tar.bz2

安裝步驟:

tar pjxf openwebmail-cal.tar.bz2

mv *.gif /var/www/data/openwebmail/images/iconsets/Cool3D.Chinese.Traditional/

for i in *.pl; do cp -a /var/www/cgi-bin/openwebmail/$i /var/www/cgi-bin/openwebmail/$i.backup; done

mv *.pl /var/www/cgi-bin/openwebmail/

說明:

  • 適用版本: OpenWebMail v2.53
  • 圖示種類: Cool3D.Chinese.Traditional
  • 檔頭: #!/usr/bin/suidspeedy (原始版本: #!/usr/bin/suidperl -T)
  • 部門行事曆檔案: ~/.openwebmail/webcal/calendar.book
    個人行事曆檔案: ~/.openwebmail/webcal/personal_calendar.book

Posted by Jamyy at 2009年01月12日 10:05