BV1AL 之無所不記

2010-02-24

msnlib 體積小功用多

雖然有點後知後覺,但是這個還是不錯用!
http://blitiri.com.ar/p/msnlib/
(最新版本是2009-11-01)

之前包括centerim(centericq), finch(pidgin的副產品)
不是體積大就是update太慢以致無法通訊,直到最近找到
這個 python module msnlib 發現它又小(真正用得到的
library 及程式大約 100KB)又俱備 MSN基本功能(目前不能
傳檔)

搭配它付的 msn 就可以進行 MSN 通訊
它付的另一個 msnbot 也可以用來搭配系統做自動送訊

整個package 解開後也不必用root 身份安裝就直接可用
其實只要將其中的 msncb.py msnlib.py 及 msn msnbot
四個檔案放在任何地方的同一個 directory 內就能用了

不過原始的 msn 有點麻煩, 它一定要有
$HOME/.msn/msnrc (裡面用來放 MSN E-Mail account)
才能執行,只要稍微改一下,讓它能讀取 sys.argv[1]
來設為 MSN E-Mail account 即可.

至於 msnbot 它的原始程式有些問題,像是無法送漢字
以及每次執行完不會中斷退出,還有傳送對象以及message
都要寫死在程式內,是蠻不方便的

加上 import os 以及 m.encoding = os.environ['LANG']
就可以正確傳送漢字(或其它非 iso-8859-1 的字集)

在 do_work() 這個 function 裡將原本的延遲時間
起始為15 秒,結束的30 秒都嫌太久了,所以改成各為 4 秒
,使用上並未發現問題

m.sendmsg( ... ) 原本寫死,改成讀取 sys.argv

執行時帶入參數的用法改為
msnbot Your-EMail Contact-EMail "message"

msnbot Your-EMail Contact-EMail "message" Password

可以利用 if len(sys.argv) < 4, 或 == 4 或 == 5 來引入

原程式裡用 sys.exit(0) 事實上並無法中斷 thread 所以
執行完後 process 仍存活,所以改成
os.system('pkill msnbot') 讓它自殺

這樣改過之後可用度就變得更高了,例如利用 crond 來
執行它, 將系統 information 即時傳給 MSN, 如果要送出
較多的 msg 時可以改成像是
msnbot Your-EMail Contact-EMail "`df`" Password
這樣就可以看到系統磁碟空間

總之 msnbot 可以做出千變萬化的各種應用,又不花一毛錢!

標籤: ,

2010-02-04

限制 user 只能 git 不能進機組亂逛, 以及透過 tor 來 git

git server 使用ssh protocol 時,不想讓user 進機組亂逛,只讓user 可以
git pull/push, 怎麼辦?

很簡單!不要往 sshd 往 chroot 往 rbash 那些方向想,因為那太費事了。

Torvalds 大神早就想到、做好了!

請直接把該user 的login shell 從system default 的/bin/bash 換成 /usr/bin/git-shell
一切就搞定。(user 便不能ssh 或sftp 進機組)

然後以root 身份到user $HOME mkdir 一個git dir 再做git 最基本的 init add commit
完成後記得 chown -R user_id.user_id 這個dir, 然後請user 第一次以clone 抓回去
往後就可以修改再push 回git server 了.

可以將user 這個git dir link 到system git 下, 便可以讓任何人以git protocol
直接clone 抓回去用了.

?? 忽然想到git 如何透過tor pull/push ??

找到這一篇 http://threebytesfull.com/2008/04/git-with-and-without-proxy/

但是當自行跑tor 時port 不同, 要將 1080 改成 9050
基本做法就是要設定 GIT_SSH 跟 GIT_PROXY_COMMAND 這兩個環境變數

首先在path 的$HOME/bin/下建立第一個 script, 名子例如叫 tor-ssh 內容有三行
export GIT_SSH="${HOME}/bin/socks-ssh"
export GIT_PROXY_COMMAND="$HOME/bin/socks-gw"
$@

不過可以在起頭加上提示如何使用參數
if [ "$1x" == "x" ]; then
echo "$0 git command ssh://ID@host/path/GIT"
exit 1
fi

接下來建立 socks-ssh 內容是
ssh -o ProxyCommand="$HOME/bin/socks-gw %h %p" $@

以及另一個 socks-gw 內容是
/usr/bin/connect -4 -S localhost:9050 $@
(該作者用的proxy port 是1080)

這樣如果要透過 tor 來git 就是下令
tor-ssh git command options
不透過tor 的話就是
git command options

標籤: