2013年2月24日 星期日

保護隱私的社交圈 RetroShare 基本安裝及使用

在這個各大廠商及政府均視個人隱私為糞土的時代,還在為了能和朋友一起分享些許資料或為了和朋友分享資料,必需將資料上傳到第三方的伺服器中,導致隱私外洩,這都是不必要的,因為現在有了 retroshare,不需要再妥協,立刻使用,馬上可以安心的和朋友分享各種資料。

retroshare 是跨平台的,分散式的社交軟體,retroshare 並沒有中央伺服器,而是存在於每個人的個人電腦中。

retroshare 支援很多功能:

- instant message: 即時訊息,類似 msn 或 gtalk

- chat: 多人聊天室,類似 irc

- voip: 一對一語音聊天,類似 skype

- message: 訊息,類似 email

- file share: 從硬碟中直接分享檔案,類似 BT

- channel: 頻道,建立頻道和朋友直接分享相片或短影片等等

- forum: 論譠


這邊介紹在 debian wheezy 中使用, retroshare 官方有提供很多 distribution 的 package,但是少了 debian x86_64 的 deb,因此這裡要從原始碼開始編。

首先裝上編譯 retroshare 需要的檔案
$ sudo apt-get install libghc-bzlib-dev libgpg-error-dev libupnp-dev libssl-dev libgnome-keyring-dev libxss-dev subversion gnupg-agent libupnp6 libqt4-dev g++ libgpgme11-dev

由 retroshare 官方網站下載原始碼
http://retroshare.sourceforge.net/downloads.html

解開原始碼
$ tar xvf RetroShare-v0.5.4d.tar.gz

$ cd trunk/libbitdht/src
$ qmake
$ make

$ cd ../../libretroshare/src
$ qmake
$ make

$ cd ../../openpgpsdk/src/
$ qmake
$ make

$ cd ../../retroshare-gui/src
$ qmake
$ make

上面四個部份都完成沒問題後,將之打包成 deb 檔
$ cd ../../build_scripts/Debian/

不過,由於在 debian wheezy 和 debian squeeze 有些不同,因此我們要改其中的相依性,將 control file 中的 libunpn3 改成 libupnp6、將 libssl0.9.8 改成 libssl1.0.0,這樣打包出來的 deb 檔才能在 wheezy 中安裝。
$ tar xvf retroshare.tgz
$ mv retroshare.tgz retroshare.tgz.backup
$ sed -i 's/libupnp3,libgpgme11,libssl0.9.8/libupnp6,libgpgme11,libssl1.0.0/' retroshare/DEBIAN/control
$ tar zcvf retroshare.tgz retroshare

$ sudo ./make.sh
會在目前目錄下產生一個 RetroShare_0.5.4.5995_debian_amd64.deb,直接安裝即可。

$ sudo dpkg --install RetroShare_0.5.4.5995_debian_amd64.deb

安裝時若還有錯誤,說缺少 libqt4-core, libqt4-gui 之類的,用下列指令會自動安裝幫忙安裝並解決相依性問題。
$ sudo apt-get -f install


安裝完成後,第一次執行會要求產生一組 pgp key ( 私鑰及公鑰),若你之前已有使用 pgp 來加、解密文件及驗證 email,想直接拿來給 retroshare 用,抱歉,現在 retroshare 0.5.4d 版無法支援由 gnupg 所建立的 pgp key。

因為 gnupg 於產生金鑰時,會建立一個 master key,一個 sub key,master key 用來簽署文件及別人的 public key 用,而 sub key 則專門用來加、解密。但是 retroshare 是則採用 openpgp-sdk 來產生金鑰,而 openpgp-sdk 並不支援 sub key,所以 retroshare 的 pgp key 只有一個 master key ,而全部功能(包括簽署及加、解密)都使用這個 master key。

產生 pgp key 時,
Name 是讓朋友能認出你的名字,可用中文
Email 就填入你的 email.
password 在此不是一般的密碼,而是 pass phrase,也就是說,可以輸入一整個英文句子,中間可以有空格,幫助記憶。(不過千萬不能忘了這個 pass phrase,否則這個 pgp key 就沒用了)
Location: 電腦的位置,一個人可有多台電腦,但是都要用同一個 pgp key,因此,location 就可以區分不同電腦,如 laptop、desktop 等等。

資料都輸入完整後,按最下方的 Generate new Identity 按鈕,會再確認一次你的 pass phrase,跟著出現另一個小視窗,寫著 “RetroShare has detected an unregistered plugin. This happens in two cases:” ,說 voip plugin 有變更過,由於是第一次,所以會問要不要授權外掛程式,若沒用到 voip 及 linkscloud 二個外掛,則可選 No,之後反悔可到設定中修改,完成後即會自動進入 retroshare 的 GUI。

進入後可看到最上方一排大圖示橫向工具列,左方有一排小圖示縱向工具列,這二個工具列都可以按住開頭地方有很多小細線地方來移動,以調整工具列位置。

剛進來是位於第一個 Network 這個功能,目前都還沒加任何朋友,因此只能看到自己,沒有朋友就失去 retroshare 的樂趣了,先加個朋友吧。要加朋友首先要將朋友的憑證滙入,然後自己也要將自己的憑證寄給朋友讓他匯入他的電腦,憑證是由 openssl 將一開始產生的 pgp public key 加上一些個人資訊,如姓名、email 編碼後所組成。要能和朋友溝通前,必須雙方都滙入憑證加成朋友後才能開始溝通。

按下左方工具列第一個圖示來加朋友,選第三個 “Send an Invitation by Email” 將自己的憑證寄給朋友,若朋友只收到信而沒看到憑證的話,就改用第二個 ”You got a certificate file from your friend” -> “Export my certificate” 將自己的憑證存成檔案,再將憑證檔寄給朋友。收到朋友寄來他的憑證後,一樣從這個匯入朋友的憑證。

主選單第二個功能是 Friends ,成功加了朋友後,就可以從這裡查看目前朋友是否有上線。在朋友名字上方按滑鼠右鍵,點選 chat 即可開始和他一對一聊天,點選 chat lobbies 可建立一個多人的聊天室。

在一開始還不大熟介面時,可以用左方工具列第五個按鈕 “Quick Start Wizard” 來幫忙設定 "網路連線方式及上下傳頻寬“、”分享哪些目錄“ 等等。


主選單上第三個功能是 Search,從這裡可以用關鍵字來搜尋檔案。

主選單上第四個功能是 Transfers,查看目前檔案下載、上傳的狀況。

主選單上第五個功能是 Files,直接瀏覽朋友分享的檔案,下方為自己分享的,檢查看看有沒有設錯,是否分享了不想分享的檔案。

主選單上第六個功能是 Messages,可留訊息給離線的朋友。

主選單上第七個功能是 Channels,建立頻道和朋友分享一些檔案,若朋友訂閱這個頻道,則會自動下載頻道中的檔案,當然也可以將自動下載的功能關掉。不過要特別注意,channels 的運作方式是,一旦你訂閱了此頻道,在頻道有新的發布,就會自動送到你的電腦來,要特別注意,因此覺得,頻道不適合發布大的檔案,用於一些短片或照片就好。

主選單上第八個功能是 Forums,和外面的論譠功能類似,可以設定成只有受邀者才可看,也可設定匿名發言之類的。

主選單上第九個功能是 LinksCloud,感覺是個檔案熱門度排行榜,可將想分享的檔案連結 post 到此,也可匿名發佈,然後,可對別人發佈的檔案加分或減分。


左方工具列第一個功能 Add a friend wizard,新增朋友及匯出自己的憑證。

左方工具列第二個功能 Add share,可以設定哪些檔案要分享,按下左方工具列第二個圖示 ”Add Share” 會彈出 Share Manager 視窗,預設裡面已經有一個分享目錄,就是預設的下載目錄。按 Share Manager 左下方 “Add” 鈕來新增目錄,瀏覽要分享的目錄,例如 /media/share/wallpaper,接著 Virtual Folder 則填入 wallpaper 即可。再來就是分享權限,預設是任何人都不能直接瀏覽你的目錄,只能透過匿名通道來搜尋,若此目錄想讓朋友可以直接從主選單 “Files” 中從你的名字來瀏覽你的檔案,就要打開權限。

左方工具列第三個功能 Messenger,和朋友二個人聊天,在聊天視窗的右下方可以看到麥克風圖示,從這裡可以用語音和朋友聊天。

左方工具列第四個功能 About,關於,在這視窗上按滑鼠按鍵,可玩俄羅斯方塊 :) 。

左方工具列第五個功能 Quick Start Wizard,快速設定精靈。

左方工具列第六個功能 Options,設定,選項很多,僅挑幾個重要的說明。
General -> Start Minimized 啟動後就將視窗最小化。
Server -> Dynamic DNS 可配合 DDNS 來使用。
Ttansfer -> Default Chunk Strategy ,預設為 random,這樣就可以從很多 node 同時下載,加快下載速度;streaming 的話,就是從頭開始抓,優點是若是影片,可以預覽。
VOIP: 可設定語音通話的模式,連續、語音偵測或 push to talk, 預設為連續。

左方工具列第七個功能 Quit,結束 retroshare。


感覺上少了一個相簿的功能,因為和朋友間滿常分享相片的說。


要於第二台電腦上同時執行 retroshare,不要使用 retroshare 的工具,因為在另一台新電腦第一次執行時,並沒有匯入的功能,變成都要再重新產生一組 pgp key,這樣是不對的。

作法如下:
直接將 ~/.retroshare/pgp 整個目錄拷貝到另一台機器上,只要 pgp 那個目錄就好,然後在第一次啟動 retroshare 時,會出現 “Create a new location” 視窗,在 Location 中填入資料,如 Desktop,然後再按下方 Generate new Location 即可,接著會問之前設定好的 pgp pass phrase,完成後就會進入。


通常我們執行 retroshare 必須在 X window 下才行,這樣滿耗資源的,沒問題,在原始碼中也有另一個 retroshare-nogui,編出執行檔,由於 retroshare-nogui 沒有設定介面,因此,要先用 retroshare 在 X window 中將一切都設定好後,結束 retroshare,以後都改用 retorshare-nogui,這樣就可以在一開機沒開 X window 的狀況下執行 retorshare-nogui,省很多資源。

retroshare 滿複雜的,在此只做基本的介紹。


參考文件:
1. http://newtoypia.blogspot.tw/2012/03/retroshare-pgp.html
2. http://retroshare.sourceforge.net/wiki/index.php/Documentation

2013年2月21日 星期四

從 linux 裡設定電腦自動開機

通常,要設定電腦自動時間開機,要從 BIOS 裡設,但是,像我的 notebook 的 BIOS 找不到可設定的地方,但是沒關係,可以直接從 linux 裡直接設定。

要能定時自動開機,核心要先有支援 RTC,不過大部份的 linux 預設都有支援就是。

檢視目前狀況,若是有這個檔案,核心就是有支援 RTC。
$ cat /proc/driver/rtc
rtc_time : 20:43:36
rtc_date : 2013-02-21
alrm_time : 01:41:19
alrm_date : 2013-02-22
alarm_IRQ : no
alrm_pending : no
update IRQ enabled : no
periodic IRQ enabled : no
periodic IRQ frequency : 1024
max user IRQ frequency : 64
24hr : yes
periodic_IRQ : no
update_IRQ : no
HPET_emulated : yes
BCD : yes
DST_enable : no
periodic_freq : 1024
batt_status : okay

只介紹前五個,其他的目前沒用到
rtc_time 目前 realtime clock 的時間
rtc_date 目前 realtime clock 的日期
alarm_time 設定開機的時間
alarm_date 設定開機的日期
alarm_IRQ 是否有設定鬧鐘(若有設定成功,這個一定會變成 yes)

要設定開機時間,要從 /sys 裡動手:
$ cat /sys/class/rtc/rtc0/wakealarm

內容是空的,沒有輸出任何東西,若有設定,值為設定開機時間的 unix time.
設定方式很簡單,只要將要開機的時間以 unix time 寫入 wakealarm 這個檔案即可。

設定十分鐘後開機:
$ echo $(date +%s -d “now + 10 minutes”) | sudo tee /sys/class/rtc/rtc0/wakealarm

檢查看看有沒有值了:
$ cat /sys/class/rtc/rtc0/wakealarm

還是沒東西,再檢查一下另一個檔
$ cat /proc/driver/rtc
rtc_time : 21:06:58
rtc_date : 2013-02-21
alrm_time : 21:11:46
alrm_date : 2013-02-21
alarm_IRQ : no

看前面 5 行就好,1-4 行看起來沒問題啊,不過,第 5 行是 no,所以沒成功。

原來設定這個要以 UTC 來設定,因為我是設成 localtime,但由於 taiwan 時區是 GMT+8 所以 rtc_time 會自動加上 8 小時,所以我們設鬧鐘時間也要加 8 小時,如果系統時鐘是設成 UTC 就沒這問題。

設定 8 小時 10 分鐘後開機:
$ echo $(date +%s -d “now + 8 hours 10 minutes”) | sudo tee /sys/class/rtc/rtc0/wakealarm

檢查看看,果然有值了
$ cat /sys/class/rtc/rtc0/wakealarm
1361482760

$ head -n5 /proc/driver/rtc
rtc_time : 21:30:26
rtc_date : 2013-02-21
alrm_time : 21:39:20
alrm_date : 2013-02-21
alarm_IRQ : yes

果然 alarm_time 在 10 分鐘後,而且 alarm_IRQ 為 yes

因此,趕快收一收在 10 分鐘內關機,等到 10 分鐘後看會不會自動開機,理論上是沒問題了。

不過,關機要用軟體關機,不可以按電源開關來關機就是。


參考文件:
1. http://jamyy.dyndns.org/blog/2012/12/4259.html