[文章]將IRC log轉為html放到web上供人瀏覽及搜尋

今天要分享如何自動將irc的log紀錄下來,並定期將其轉為html並放到web上供人瀏覽及搜尋
我本身架設起來的結果是開機會自動開啟irssi,自動connect和join及log
再定期將log轉為html頁面放到web上供人瀏覽及搜尋

先前已簡單分享IRC server架設及irssi client軟體的使用
今天則是要分享如何自動將irc的log紀錄下來,並定期將其轉為html並放到web上供人瀏覽

及搜尋
其中有些地方我並沒有詳查其內容,僅就功能面來分享
我本身架設起來的結果是開機會自動開啟irssi,自動connect和join及log
再定期將log轉為html頁面放到web上供人瀏覽及搜尋
若我寫的有誤或有更好的方法歡迎指教

 


1.需要的程式和軟體:
已經簡介過的irc server及client就不再重複,此次是在CentOS上以rpm方式安裝,載點如下


irc server: 
http://rpm.pbone.net/index.php3/stat/4/idpl/9548553/dir/redhat_el_5/com/ircd-ratbox-2.2.8-2.el5.x86_64.rpm.html
http://www.ircd-ratbox.org/


irc client: 
http://packages.sw.be/irssi/
http://www.irssi.org/

irclog2html: (此為將irclog轉為html的程式)
http://rpm.pbone.net/index.php3/stat/4/idpl/13713450/dir/redhat_el_5/com/irclog2html-2.7-3.svn68.el5.noarch.rpm.html
http://pypi.python.org/pypi/irclog2html


因為要將網頁放到web上,故這邊就以apache作為web server

在此簡單列出其它參考的網站:
willie 及 rellik 大大的親身指導 XD

http://linux.vbird.org/
http://blog.seety.org/everydaywork/2005/3/15/253/


2.設定流程:
先以rpm安裝所有程式後
第一步是設定開機能自動以irclog身份開啟irssi,並自動connect  join  log
第二步是定期將log轉為html檔
第三步是將html放到web上且可搜尋

 


3.設定自動連線及儲存log:
在client的irssi上(假設目前client和server在同一台)以irclog身份(自建帳號)登入
並假設irc server的network為chatnet,聊天室名稱為chat
修改~/.irssi/config內容中含有以下設定

servers = (

  { address = "127.0.0.1"; chatnets = "chatnet"; port = "6667"; autoconnect = "yes";  },
);

 

chatnets = {
  chatnet = {
    type = "IRC";
  };

 

};

 

channels = (
  { name = "#chat"; chatnet = "chatnet"; autojoin = "yes"; },
);

 

settings = {
  core = { user_name = "irclog"; nick = "irclog"; real_name = "irclog"; };
  "fe-common/core" = { autolog = "yes"; autolog_path = "~/irclogs/chat/%Y-%m-%d.log"; autolog_level = "ALL"; };
  "fe-text" = { actlist_sort = "refnum"; };
};

 

logs = {
  "~/irclogs/chat/%Y-%m-%d.log" = {
    level = "ALL";
    items = ( { type = "target"; name = "#chat"; server = "chatnet"; auto_open = "yes"; } );
  };
};

 

 
開啟irssi登入並join #chat後,於irssi中依序執行以下命令
/network add chatnet
/server add -auto -network chatnet 127.0.0.1
/channel add -auto #chat chatnet


再建立~/.irssi/startup,使其自動log(但不包含join、leave和quit的訊息),操作如下
vim ~/.irssi/startup
/LOG OPEN -targets #chat ~/irclogs/chat/%Y-%m-%d.log ALL -JOINS -QUITS -PARTS

或是於irssi中執行

/set autolog ON
/set autolog_level ALL -JOINS -QUITS -PARTS
/set autolog_path ~/irclogs/chat/%Y-%m-%d.log



而如果是不要在channel中顯示join、leave和quit的訊息可執行
/IGNORE #chat JOINS QUITS PARTS
如果哪天又想再看到可執行
/IGNORE #chat -JOINS -QUITS -PARTS

 

設定開機後自動以irclog身份啟動screen保持Detached狀態,並開啟irssi
vim /etc/rc.local
su -l irclog -c '/usr/bin/screen -dms bash /usr/bin/irssi'

 
 

4.定期將log轉為html檔:

 

以irclog身份設定crontab,每小時的10分時自動將.log轉為.html(-S代表含search功能)

同時將/home/irclog/irclogs/chat/*設定為apache可讀(web需要)

crontab -e

10 * * * * /usr/share/irclog2html/logs2html.py -S /home/irclog/irclogs/chat/ && /bin/chmod 744 /home/irclog/irclogs/chat/*
 
再將/home/irclog/irclogs/chat/目錄設定為可rx,代表允許apache進入並列表,才能讓CGI作搜尋的動作
chmod 755 /home/irclog/irclogs/chat/
 

5.


將html放到web上且可搜尋:

於httpd.conf中加入
 
Alias /log "/home/irclog/irclogs/chat"
<Directory "/home/irclog/irclogs/chat">
   Options Indexes MultiViews SymLinksIfOwnerMatch
   AllowOverride None
   Order allow,deny
   Allow from all
</Directory>

RewriteRule ^/home/irclog/irclogs/chat/search/$ /home/irclog/irclogs/chat/search [R,L]
ScriptAlias /log/search /usr/share/irclog2html/irclogsearch.py
<Location /log/search>
  SetEnv IRCLOG_LOCATION "/home/irclog/irclogs/chat/"
</Location>

最後就可以用web瀏覽器連到 http://SERVER-IP/log 中查看並搜尋irc log

 


從諮商輔導人心
到諮商輔導資訊系統及網路世界
雖繞了一大圈 但都是極具意義的事
秉持著過去所學 朝著自己的興趣
體驗著一輩子只有一次的人生~~