Dr.com在linux下的客戶端使用指南

Dr.com是在全國廣泛使用的寬帶計費系統,但是卻沒有提供linux下的客戶端,但是有linux愛好者開發了非官方的版本-drcom-client,本文即對drcom-client在linux若干發行版的使用做詳細的描述。點擊此處可以下載
 1.前言:

Dr.com是城市熱點公司開發的寬帶計費系統,在全國高校,企業,政府機關廣泛使用,但是遺憾的是這麼大的企業居然沒有開發Linux下的客戶端,雖然Dr.com可以在web瀏覽器下完成登陸驗證註銷等工作,但是很多學校和ISP取消了這樣的功能,而取而代之是windows下專用的客戶端。

由於沒有客戶端,所以Linux上網成了問題,通常的解決方案是利用代理服務器接入,利用wine模擬運行drcom的官方客戶端,但是這樣做並不是完美的解決方案,例如使用代理服務器對於端口有限制,並且某些軟件並不提供設置代理的功能,而利用wine模擬運行在Dr.com 2.95版本不能成功,至少我還沒有看到有成功的案例,在本人學校沒有,在網上也沒有看到有例子。爲了解決此問題,有愛好者對Dr.com的聯網原理進行分析,開發了 Dr.com的客戶端,我記得最早是在2004年就有相關的文章來分析了,具體情況可以Google一下,在這裏再次要感謝這些先驅們。本人的學校從去年開始才正式的運行Dr.com進行校園網絡的控制和管理,我也是到了今年纔開始關注這個,我想做一個Linux的客戶端,上網查到了drcom-client。drcom-client現在是sourceforge上的一個項目,以GPL協議發佈,它包括window平臺下的版本drcom-client-win32和Linux下的版本drcomsuite,它的主頁地址是:http://sourceforge.net/projects/drcom-client。本文主要介紹Linux下的版本drcomsuite在Linux幾個主流發行版的使用,它的主要作者是wpyh,drcomsuite到現在已經比較成熟了,可以應用於2.4.x內核和2.6.x內核。但是wpyh的第一語言不是漢語,所有的文檔是以英文發佈的;另外使用文檔也不完善,這樣對於開發者或者熟悉linux的人也許不成問題,但是對於使用Linux的普通用戶和Linux的新手們就有些困難了。還有就是這個客戶端是在北京海淀區的寬帶接入應用環境開發的,它的測試區在北京海淀寬帶聯盟論壇,這是一個內部網站,僅面向海淀寬帶的用戶,而且關閉了註冊,我現在得到的消息是藉助google搜索提供的零星的片段(要登陸論壇纔可以查看全文內容),所以我現在連wpyh其人也不是很瞭解。

我準備在drcom-client的基礎上開發更人性化功能的Dr.com客戶端,並且提供基於GTK的圖形界面版本,現在windows下的版本已經比較好用了,但是也缺乏一個用戶指南,用這個開源的版本帶來的好處是:支持共享上網,不會默認打開某些網站(我就特反感這個,本人機器比較慢,原來用windows的時候自動打開IE連到校主頁,要等好幾秒的時間,不爽)而Linux下的版本能用了,但是還存在某些bug,比如有的時候不穩定,不能登陸成功;有的時候退出的時候,進程會無法正常中止;這些都還不是大問題;現在最大的問題是安裝使用起來有點困難,特別是對於Linux新手,或者說只是普通用戶而言。我在http://www.gro.clinux.org上申請開通了一個項目,叫做q-drcom,項目主頁就是https://gro.clinux.org/projects/q-drcom/;名字中q的意義一方面是本人在學校所在的工作組名字的首字母,所以開發的東西會叫做q-xxx;另外q是cute的意思,cute在英文中意爲靈巧的,漂亮的,惹人喜愛的意思,這是我做東西的一個原則:,它能怎麼樣跑得最快?怎麼讓人喜歡它?解釋了這麼多,就是想讓你記住它,如果你對使用drcom有什麼問題你就能到項目主頁上尋求答案了:);說實在的,本人也不是什麼開發高手,並且對於Linux下的編程,特別是內核模塊方面的也是在學習中,drcom-suite的源代碼我正在消化,但是我有信心不久之後就推出q-drcom的beta版本;所以目前q-drcom項目暫時只是提供drcom-client的用戶支持,除了文檔而沒有自己的東西出來,並且從用戶的反饋和問題,也能讓我更好的發展q-drcom,---A cute version of Dr.com's client!所以也請大家有使用上的問題及時反饋,更希望有更多的志願者加入到其中來。看到城市熱點的官方主頁上說在高校的應用有300多家,按我的理解就是:有多少在高校的成功案例,就有多少個高校裏的linuxer被奴役!

2.基礎知識:(對於Linux新手,其他人可以跳過)

(1)Linux從源代碼安裝軟件的一般過程是Configure,make,make install;configure是一個shell腳本,負責根據機器或用戶的的設置生成一個叫Makefile的文件。

而make命令就是讓編譯器(gcc等)根據Makefile文件自動的編譯和連接以生成目標代碼(可執行文件,在windows下就是exe文件);make install就是根據Makefile的表述把目標代碼以及相關的文件拷貝的設定的目錄。簡單說,make就是Unix,Linux平臺下的工程管理器,它能自動編譯和安裝軟件。對於某些軟件的安裝,也就是最後一步(這裏假設你在自己的家目錄中完成了前面兩步)需要root用戶權限,因爲make install可能要把一些文件拷貝到之有root用戶有權限寫入的目錄,對於本文中要安裝的drcom-suite就是如此,它要將一些文件拷貝到/sbin ,/etc等目錄中,另外,在本例中drcomsuite的安裝不要用Configure,它也沒有提供這個腳本,它已經提供了Makefile,直接運行make,make install就可以了。

(2)軟件是有相關性的,一些程序爲另外的程序提供服務,所以軟件的安裝是有順序的,並且有的時候不能顛倒(有新手要不耐煩了,發難了,windows下怎麼沒有那麼麻煩阿?windows下有dll文件,叫做動態連結庫,你雙擊安裝的exe程序已經把它要用的那些庫打包到exe文件裏面,安裝時就提取出來放到它的安裝目錄了,寫過vb的知道,你寫個程序但是不把一些dll文件打包安裝,它在沒有裝VB的機器上就不能運行,基本道理一樣,另外一般windows下的軟件都是以二進制可執行文件的形式發佈,而不是源代碼,“Linux is not windows ”,所以請不要總是把時間花在它們的比較之上。我之前不用windows是我買不起正版windows,我對自己的要求是:如果我還寫代碼,那麼我就儘可能不用盜版軟件,我必須尊重其他的軟件作者。當然,爲什麼儘可能呢,如果老師讓我交AutoCAD的課程設計,那我該怎麼辦呢?:)但是,請你相信,當你開始瞭解了linux,並且嘗試用它來解決你的學習工作的問題,而不是把它當玩物,那麼你會象我一樣對它如癡如醉的,這讓我想起了一句名言:學一點點知識是一件可怕的事情 :)。當然,整天打遊戲的人除外,呵呵,整天打遊戲的人也不會看這篇文章了),具體來說,在本例中一定要先安裝libdrcom,只有先安裝了libdrcom,drcomsuite纔可能編譯成功,因爲drcomsuite的編譯需要libdrcom,不完善的說法是編譯drcomsuite時需要libdrcom的一個drcom.h的頭文件,安裝了libdrcom之後,drcom.h文件會被拷貝到/usr/include文件夾中,這樣編譯drcomsuite時編譯器才能找到drcom.h;這是drcomsuite在一般發行版本上的需要注意的地方,另外對於特定的發行版本還有其他的東西,比如在ubuntu 5.10的安裝,還要依賴其他的東西,這個在後面特定的發行版的說明中具體討論。

(3)gcc的版本問題。開源軟件之所以這麼有活力的一個原因就是來自全世界的黑客們都在持續的改進它們的程序,版本會不斷的升級,會越來越趨向於完美。版本的更新換代太快,但是這也是被某些商業軟件的支持者指責的地方,版本的更新太快造成維護上的成本增加。這簡直是跟強姦了某女然後把責任推託說是“怪你過分美麗”上一樣沒有道理!(不好意思,偏激了,我不恨微軟,甚至有些同意某些人說的,不知道對不對,我只是引用不加評論,“如果沒有微軟,計算機就不會如此老少皆宜”,微軟提供了漂亮的界面,易用的操作方式,在中國更是如此,拿三塊錢買一張盜版光盤,馬上就有一個可用的系統了;但我轉向linux之後,我驚喜的發現linux可以跟window xp一樣漂亮,甚至更漂亮,而我居然開始喜歡了命令行的操作方式,這個可以更高效!唉,廢話有點多,見諒)不同的gcc版本用於編譯的參數可能不一樣,它可能不支持某個Makefile中給的gcc編譯參數,在本例中就是如此,造成了在某些發行版本上不做某些改動就不能編譯成功。還有,如果你要編譯內核的模塊,那麼一定要用和當前內核相同的gcc的版本,系統上缺乏編譯內核所用的gcc版本,就可能造成編譯drcomsuite中就可能不成功,這個問題在ubuntu 5.10上體現了,後面會詳細提到。

(4)內核頭文件與內核模塊。有了內核頭文件,你纔可能編譯內核的模塊,一個簡單的例子就是需要編譯一個設備的驅動程序。內核模塊是可以動態載入內存的,比如你通常的網卡,聲卡驅動都是編譯成模塊的 ( 也可以編譯進內核,根據內核配置文件)。運行/sbin/lsmod可以查看現在在內存中的模塊。這個問題也出現在我在ubuntu 5.10下測試時,這個問題在後面ubuntu下的安裝那一節具體來講。




3.drcomsuite在各主要發行版下的安裝

(1)在redhat 9下的安裝

首先從drcom-client的項目主頁http://sourceforge.net/projects/drcom-client上下載libdrcom-0.0-20050423-2.tar.bz2和drcomsuite-0.1.12.tar.bz2兩個文件, 記得要先安裝libdrcom,解壓縮:

tar -xjvf libdrcom*.bz2

tar -xjvf drcomsuite*.bz2

轉換到root用戶完成編譯和安裝:

su

#輸入你的root用戶密碼

#進入libdrcom的目錄

cd libdrcom*

#redhat9會由於默認的gcc版本的原因,需要稍微修改Makefile文件,用你喜歡的編輯器打開Makefile

vi Makefile

#注意到其中有這樣的一行,第三行 WARN = -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes -pedantic

#把-Wextra改成 -W

#然後運行make和make install編譯

make

#等待,你應該可以編譯成功,然後安裝

make install




按照同樣的作法,進入到drcomsuite的目錄,然後make ,make install編譯安裝drcomsuite,所不同的是 drcomsuite中的Makefile 本來就是帶的-W,所以不需要改。

如果這都沒有出現錯誤的化,那麼恭喜你,你已經成功了一半了,現在我們來看配置文件。

drcom的配置文件是/etc/drcom.conf,安裝drcomsuite時已經把一個叫做drcom.conf.new的文件拷貝到你的/etc目錄下,所以你需要把它改名爲drcom.conf,然後完成相應的配置,裏面有簡單的英文提示,應該不成問題,有下面幾點要注意的:

1. 

username=cyi_02 #用戶名

password=*******# 你的密碼

mac= #mac地址,可以通過運行ifconfig命令查得本機的mac地址,類似如 00:00:E8:18:07:69的形式

nic0=10.1.43.190 #你的IP地址,一般都是單網卡用戶,後面的空白

nic1=

nic2=

nic3=

dnsp=202.113.32.6 #主dns

dnss=211.94.193.129 #次dns,這個必須填,不填程序會出錯,如果沒有次dns,填一個合法的ip地址

dhcp= #一般都不是由dhcp指配的ip,所以這裏也留空




hostip=

servip=192.168.100.251 #輸入你用drcom時打開瀏覽器被自動引導如提示你登陸的那個地址就可以了,這個是我們學校的登陸地址,其他的留空默認

hostport=

servport=




#後面的四項是用來假冒windows xp主機的,不填就可以了。

hostname=

winver=

winbuild=

servicepack=




這樣配置文件就好了,接下來就可以來上網了,下面的命令都需要你用root用戶來運行

su切換到root用戶,因爲你是以普通用戶運行的,所以你的搜索目錄裏面可能沒有/sbin,所以你運行source來讀取root的環境變量設置

source /etc/profile

modprobe drcom

drcomcd #運行drcom的守護進程

如果提示類似於下面的這樣的信息,那麼就表示啓動成功了,如果不是,你需要檢查你的配置文件drcom.conf是否有語法錯誤:

1139480048 DEBUG drcomcd: Redirecting stderr to /var/log/drcomcd...

登陸,在終端輸入命令:

drcomc login

提示這樣的信息: 

1139480181 DEBUG drcomc: Creating socket...

1139480181 DEBUG drcomc: Connecting...

1139480181 DEBUG drcomc: Sending login command...

1139480181 DEBUG drcomc: Receiving reply (login)...

Login succeeded

表示你登陸成功了,這樣你就可以上網了!如果有提示出錯信息,比如你就要確認你的帳戶是不是用完了,然後再殺掉drcomcd並且再次啓動,或者從新引導一次系統試試,一般是不需要的。但是有可能有不穩定,隨機的情況出現。

 

#殺掉drcomcd

killall drcomcd #同樣需要你以根用戶的身份運行

用redhat9基本會成功的,本來它的開發就是基於2.4內核, redhat 9基於2.4.20內核。 drcom.o是2.4內核的內核模塊,當你安裝drcomsuite時它被安裝到了/lib/modules/{kerner_version}/kernel/misc中;{kernel_version}代表你的內核版本號。

用fedora core4的差不多,只是fedora的gcc比較新,所以編譯的時候Makefile文件是不用修改的,其他的過程一個樣,2.6內核的後綴名爲 .ko; drcom.ko被安裝到了/lib/modules/{kernel_version}/kernel/extra目錄中。




我自己的機器在宿舍裏鎖着了,裝的是gentoo2005.1,現在工作室裏沒有gentoo的機器,安裝過程也一個樣,但是我記得剛剛考完研放寒假時我安裝之後的gentoo聯網不成功,提示說failed,reason 0;但是那個時候可能是學校網絡的原因,我覺得應該可以成功的,畢竟這邊三臺機器全部成功了。




(2)drcomsuite在ubuntu 5.10下的安裝

下面具體說一下在ubuntu的安裝過程,可能要稍微複雜一點,因爲ubuntu是開發來用做服務器或者桌面應用的,但是在開發方面可能就要考慮少一點,但是不是說它不合適做開發,有了apt,有了“新立得”什麼拿不到呢?並且我們的工作站就是裝ubuntu,只不過你在做內核方面的東西時要裝些東西上來,讓它具有這個環境,ubuntu的設計理念是“Linux for human beings”,所以預裝的軟件包不會包括編譯環境。ubuntu非常的漂亮,沒有其他的一些複雜的東西要設置,放上去就能用,所以選它做事情是非常合適的,我很喜歡它!具體的安裝我就不說了,在ubuntu中文網站上有詳細的教程,http://www.ubuntu.org.cn, ubuntu中文上的資料非常的好而且多, ubuntu很適合新手,我覺得在這個方面比fedora還好(那個yumex真的有夠“鬱悶”的,運行慢,與“新立得”比差遠了,還有源就清華還有個freshrpms的鏡像,個人意見)。

首要因素是你要安裝 build-essential

如果你沒有安裝過,請利用下面的命令安裝

sudo apt-get install build-essential

當然你可以用“新立得”,我就很喜歡新立得!

你需要做的第二件事就是安裝libssl-dev,這個包包括了drcom需要用到的用於認證加密的md5函數,它需要一個md5.h的頭文件,而這個文件在libssl-dev中有,另外libssl-dev還包括了其他好多的用於加密的頭文件哦。

第三,你需要安裝對應內核版本的頭文件,這個用 uname -r命令可以得到關於你機器的信息,比如我的:

uname -r

2.6.12-10-686 

這是我的內核版本,我用的是Intel P4的CPU,所以我安裝的是這個內核,ubuntu默認安裝的是 2.6.12-9-386,當你第一次系統更新時就會安裝 2.6.12-10-386,然後一般人都會根據自己的CPU類型選擇合適的內核版本,AMD用戶會選擇 2.6.12-10-k7;

另外你得到信息的方法就是查看/proc/version文件,這裏有你機器的一般信息,包括編譯內核採用的gcc版本,這也是呆會要用的。

cat /proc/version

比如我的信息顯示爲:

Linux version 2.6.12-10-686 (buildd@rothera) (gcc version 3.4.5 20050809 (prerelease) (Ubuntu 3.4.4-6ubuntu8)) #1 Mon Jan 16 17:58:04 UTC 2006

它不但告訴了我內核版本還告訴了我gcc的版本是3.4.5,因爲你編譯新的內核模塊時要用到和編譯內核同樣版本的gcc版本。

那麼就在你的“新立得”裏面搜索“linux-headers”找到你需要版本的linux頭文件

Linux-header-file-{yourversion},比如我的就安裝linux-header-2.6.12-10-686

雖然你剛纔已經安裝了編譯的環境build-essential,但是安裝的gcc版本是更新的4.0版本,它在用來編譯內核模塊時是不合適的。

在你的“新立得”搜索gcc,安裝gcc3.4,至此你就建立了一個可以編譯drcomsuite的環境了,按照前面的方法編譯安裝。

ubuntu有它的一套,它不能su到root帳戶,你可能願意開啓一個root shell,那麼就運行sudo -s -H; 完成你的編譯安裝,如果你按照在“在redhat中的安裝”這一節詳細介紹的,編譯安裝了,配置了。但是你可能當運行modprobe時提示找不到 drcom模塊,至少在我這裏是這樣;這個不用着急,你用root權限,把drcomsute編譯目錄下的/modules/Linux/2.6.x/下的drcom.ko文件複製到/lib/modules/{kernel_version}/kernel/drivers/net下就可以了,複製到其他目錄也可以,在這裏我認爲它是一個網絡驅動。所以我複製到這裏driver/net文件夾中。

還差一步:運行如下的命令自動建立模塊的依賴關係:

depmod -a

如果你不運行上面的命令,可能當要載入模塊時就會提示找不到模塊。

接下來,你就可以modprobe drmod把drcom載入內存了。

然後就是正常的使用步驟了,具體操作參照“在redhat 9下的安裝”這一節。







終於寫完了,我現在能做的也就是這麼多了,由於個人水平所限,如果上面的文檔中有什麼錯誤歡迎指出來,您有什麼問題,或者對這個項目感興趣,都可以發送郵件到alva.yi At gmail Dot com.

希望我所做的工作對於在高校或者其他地方的被Dr.com所“禁錮”的linux用戶有作用,還等什麼,不用擔心你用linux上不了網了,從你的電腦上分出幾個G出來裝linux用吧,分多點,至少5個G吧,別隻是玩它,裝些有用的東西,實際的用它來解決你的工作和學習上的問題!也別滿足於在虛擬機上,畢竟虛擬機只是虛擬機,據個人經驗,gentoo就在VMware station 4.0上裝不成(在windows xp上,盜版的:) ),另外在一個操作系統上跑另外一個操作系統,內存只有一半了,這樣你就總是以爲linux慢了,其實它一點也不慢,另外如果你是開發者,用linux可以讓你工作得更舒服,比如筆者自己的機器只有1.2G,256M,但是用gentoo,只用了一個fvwm和Rox-filer做桌面環境,這樣我就不用看着某些程序乾着急了。另外滿足日常的需要,linux足夠了,QQ聊天,MSN,瀏覽網頁,下電影……引用某個牛人的話說:“linux不是隻是計算機系的才用的,linux也不是隻有男生才用的”,我就不是計算機系,但是我是男生~~hehe:) 希望06年開學聽到大家能上網的消息!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章