文/陳琳 張學(xué)燕
山東大學(xué):“學(xué)生之家”成資源集散地
文/陳琳1張學(xué)燕2
對中國教育和科研計(jì)算機(jī)網(wǎng)統(tǒng)一認(rèn)證與資源共享基礎(chǔ)設(shè)施(CARSI)項(xiàng)目接口與開源平臺(tái)的整合、PT應(yīng)用和其他應(yīng)用與開源平臺(tái)的整合進(jìn)行漸進(jìn)式二次開發(fā),根據(jù)需要經(jīng)由開源平臺(tái)對CARSI聯(lián)盟用戶進(jìn)行管理,并且可以通過這個(gè)平臺(tái)訪問CARSI聯(lián)盟,與其他聯(lián)盟成員互享資源。
山東大學(xué)學(xué)生之家(以下簡稱:學(xué)生之家)是“CNGI08下一代互聯(lián)網(wǎng)校園學(xué)習(xí)生活交流平臺(tái)”的一個(gè)站點(diǎn)資源。該平臺(tái)是基于中國教育和科研計(jì)算機(jī)網(wǎng)統(tǒng)一認(rèn)證與資源共享基礎(chǔ)設(shè)施(CARSI)而建立的,能夠?qū)崿F(xiàn)CARSI聯(lián)盟內(nèi)部共享各大高校資源。山東大學(xué)學(xué)生之家是一個(gè)IPv6PT下載站,具有IPv4無可比擬的網(wǎng)絡(luò)和帶寬優(yōu)勢,下載速度快,每秒可達(dá)8M,這極大地方便校園用戶的資源共享,并有效地利用校內(nèi)帶寬,減少校外IPv6出口壓力,為CARSI聯(lián)盟提供了一個(gè)強(qiáng)大的資源站點(diǎn)。
學(xué)生之家成立于2011年3月份,經(jīng)過近一個(gè)月的完善之后,逐漸形成資源的整潔分類,目前有高清資源和普通資源。在給用戶提供完美的視聽盛宴享受的同時(shí),學(xué)生之家還專門設(shè)置一個(gè)學(xué)習(xí)專區(qū),該專區(qū)囊括學(xué)習(xí)軟件、教學(xué)視頻、課件文檔和中外讀物等板塊,便于學(xué)生分享學(xué)習(xí)資源。此外,為促進(jìn)學(xué)生生活交流,學(xué)生之家還設(shè)置一個(gè)生活區(qū)。學(xué)生之家與云應(yīng)用平臺(tái)EyeOS的整合已接近尾聲,并開始著手該平臺(tái)面向移動(dòng)客戶端的LBS服務(wù)的開發(fā)。從3月末到4月初,論壇注冊人數(shù)已經(jīng)超過2380人,在線人數(shù)在最高峰時(shí)可達(dá)602人,而且人氣日益攀升。
根據(jù)CARSI項(xiàng)目的要求以及山東大學(xué)在IPv6服務(wù)上的現(xiàn)實(shí)情況,我們選擇建設(shè)以IPv6PT站點(diǎn)為核心,交互式應(yīng)用為輔助的IPv6平臺(tái)學(xué)生生活應(yīng)用。
我們對CARSI項(xiàng)目接口與開源平臺(tái)的整合、PT應(yīng)用和其他應(yīng)用與開源平臺(tái)的整合進(jìn)行漸進(jìn)式二次開發(fā)(如圖1所示),根據(jù)需要通過開源平臺(tái)對CARSI聯(lián)盟用戶進(jìn)行用戶管理,并且可以通過這個(gè)平臺(tái)訪問CARSI聯(lián)盟。
面對主流的開源社區(qū),我們選擇在DiscuzX1.5的基礎(chǔ)上開發(fā)論壇軟件。選擇的原因如下:
1.Crossday Discuz! Board 論壇系統(tǒng)(簡稱Discuz!論壇)是一個(gè)采用PHP和MySQL等其他多種數(shù)據(jù)庫構(gòu)建的高效論壇解決方案。Discuz!在代碼質(zhì)量,運(yùn)行效率、負(fù)載能力、安全等級、功能可操控性和權(quán)限嚴(yán)密性等方面都在廣大用戶中有良好的口碑。
2.DiscuzX1.5有豐富的二次開發(fā)API接口以及清晰的數(shù)據(jù)庫結(jié)構(gòu)說明,便于開發(fā)人員的理解與開發(fā)。
3.DiscuzX1.5有很好的人員權(quán)限控制,方便我們對CARSI聯(lián)盟用戶的權(quán)限管理和行為記錄。
我們在開發(fā)之前,必須對以下內(nèi)容進(jìn)行詳細(xì)的了解:
1.DiscuzX1.5的文件系統(tǒng)目錄、數(shù)據(jù)庫中每個(gè)表的功能和每個(gè)表中每個(gè)字段的功能。
2.對于文件目錄系統(tǒng)需要了解哪些文件是屬于模型層(model),哪些文件是屬于視圖層(view),哪些文件是屬于控制層(control)。
3. MVC構(gòu)架:雖然DiscuzX1.5不是完全按照MVC架構(gòu)來設(shè)計(jì)的,但是了解MVC構(gòu)架的原理是有必要的。
4.全局變量和一些基本的系統(tǒng)函數(shù)。
5.對CARSI項(xiàng)目接口進(jìn)行了解,對認(rèn)證機(jī)制進(jìn)行分析。
具體開發(fā)流程有三大步驟。
用戶注冊與登錄
對于本校學(xué)生注冊,由于我們使用實(shí)名制的學(xué)生激活策略(需要學(xué)生學(xué)號和身份證的驗(yàn)證),與現(xiàn)在的論壇注冊方式不同,我們進(jìn)行了二次開發(fā)與修改。
需要了解修改DiscuzX1.5文件系統(tǒng)目錄下的文件。source/module/member/Member_register.php是用戶注冊的腳本文件,template/default/member/register.html是用戶注冊的模板文件。在這里我們只需要修改用戶注冊的模板文件,添加對用戶的驗(yàn)證。調(diào)用session來獲得參數(shù),對普通用戶和CARSI用戶進(jìn)行區(qū)分。如果是本校學(xué)生則調(diào)用本校學(xué)生的注冊頁面。
如果不是CARSI用戶: , 那么對學(xué)生學(xué)號和身份證號驗(yàn)證:
效果如圖2所示。
圖2 對本校非CARSI用戶的學(xué)生進(jìn)行注冊
PT是Private Tracker(私用種子服務(wù)器)的簡稱,可以統(tǒng)計(jì)用戶的上傳和下載量,計(jì)算用戶的分享率。PT可以被簡單理解為BT的升級版,在擁有BT所有功能的同時(shí),需要達(dá)到一定的分享率才能不被刪除賬號。PT(Private Tracker)下載其實(shí)也是BT下載的一種,但有兩個(gè)明顯的改進(jìn):一是私密的小范圍下載,二是進(jìn)行流量統(tǒng)計(jì),根據(jù)上載量決定權(quán)限。
對于CARSI用戶注冊,我們需要針對CARSI用戶接口的特性進(jìn)行定制。
首先,對CARSI用戶的判定同樣是在template/default/member/register.html用戶注冊的模板文件中進(jìn)行:
然后進(jìn)行注冊驗(yàn)證,如下:
接下來我們需要?jiǎng)?chuàng)建CARSI用戶的登錄界面(如圖3所示),通過聯(lián)盟認(rèn)證的用戶才能登錄。
對于CARSI用戶,我們單獨(dú)建立用戶組來管理。我們需要在論壇后臺(tái)設(shè)置一個(gè)用戶組,將所有的CARSI用戶都放置在這個(gè)用戶組之下。當(dāng)查找HTTP請求中名為Shib-Identity-Provider的請求頭時(shí),該用戶已經(jīng)通過驗(yàn)證,在H T T P請求中獲得$_SERVER['HTTP_INSTITUTION'],$_SERVER['HTTP_USERNAME']和$_SERVER['HTTP_USERNAME'],然后設(shè)置session參數(shù),這樣就可以在用戶注冊頁面中通過調(diào)用session來使用這些參數(shù)。
PT功能與平臺(tái)的整合
首先從P T原理來分析:在用戶上傳種子時(shí),需要通過解碼腳本計(jì)算出種子文件的一些信息,比如文件的infohash和文件的大小,然后存入數(shù)據(jù)庫。在用戶下載種子的時(shí)候,要把當(dāng)前用戶的passkey寫進(jìn)種子文件,再輸出給用戶下載。用戶下載完之后通過uTorrent服務(wù)器與Tracker服務(wù)器通信。
對于PT,需要修改附件上傳的過程。如果附件是torrent類型,就要進(jìn)行種子解碼,再將種子的一些信息寫入數(shù)據(jù)庫。這些腳本包括兩種:Source/class/class_forumupload.php和Source/class/class_upload.php。種子文件的解碼文件主要參考TBSource項(xiàng)目里的benc.php文件。接下來要處理用戶下載種子的過程,如果用戶下載的附件是種子文件,那么可以通過數(shù)據(jù)庫找到該用戶的passkey,再寫入種子文件,輸出后供用戶下載。修改的腳本文件有Source/function/function_attachment.php。tracker腳本主要參考TBSource項(xiàng)目的announce.php頁面。這樣就基本實(shí)現(xiàn)學(xué)生之家的內(nèi)容。
EyeOS與平臺(tái)整合
EyeOS是一款Web桌面環(huán)境,俗稱Web Operating System (Web OS)或者Web Office。EyeOS是開源軟件,用戶可以自由下載或者在EyeOS的服務(wù)器 EyeOS Server 上使用?;镜南到y(tǒng)附帶一些辦公軟件和PIM應(yīng)用,并且在官方網(wǎng)站(http://eyeOS.org)上可以找到完整的程序代碼。
EyeOS是B/S的設(shè)計(jì)模式,用戶需要先下載EyeOS的服務(wù)器文件并在用戶的網(wǎng)頁服務(wù)器上安裝。用戶還可以從免費(fèi)的公開服務(wù)器 EyeOS.info上試用一個(gè)demo,它還為那些不想安裝自己的服務(wù)器的用戶提供免費(fèi)的賬戶。
EyeOS是一個(gè)基于插件擴(kuò)展,并由世界各地的開源社區(qū)共同維護(hù)的Web OS。它默認(rèn)自帶日歷、計(jì)算器、地址本、RSS閱讀器、的文字處理器、FTP客戶端、瀏覽器、服務(wù)器內(nèi)部消息、多款游戲、聊天室以及其他若干程序,用戶可以在http://www.EyeOS-apps.org下載并安裝豐富的插件,可以更改EyeOS皮膚(eyeTheme)。EyeOS支持多國語系,對中文進(jìn)行完美支持。中文語系(包括插件漢化)由EyeOS中文官方社區(qū)制作維護(hù)。
EyeOS代碼使用PHP5開發(fā),數(shù)據(jù)庫采用MySQL,是完全開源的在線操作系統(tǒng),源代碼可以到官方網(wǎng)站上下載。運(yùn)行服務(wù)器采用Apache。
安裝方法如下:
1.下載壓縮文件,網(wǎng)址:http://EyeOS.org;
2. 將其解壓到Web Server根目錄下;
3.在服務(wù)器上創(chuàng)建一個(gè)數(shù)據(jù)庫,用于存放EyeOS的數(shù)據(jù)表;
4.創(chuàng)建必要的數(shù)據(jù)表,按照下面順序和路徑執(zhí)行所有的SQL腳本:
5.在“/settings.php”文件的貯存部分(STORAGE)設(shè)置數(shù)據(jù)庫連接:
6.把 “dbname=EyeOS” 替換成數(shù)據(jù)庫名:“dbname=你的數(shù)據(jù)庫名”;
7.把 “127.0.0.1” 替換成數(shù)據(jù)庫所在主機(jī)地址;
8.把 “root” 替換成連接數(shù)據(jù)庫的用戶名和密碼。
在shell中執(zhí)行下列命令,以設(shè)置正確的權(quán)限:
EyeOS所存在目錄是“/var/www/EyeOS”
在二次開發(fā)上主要進(jìn)行的是用戶關(guān)系以及用戶庫的調(diào)整。
由于EyeOS與discuz都使用相同的PHP MySQL框架,因此,只要對用戶注冊表關(guān)系進(jìn)行整合或者是編寫注冊API就可以實(shí)現(xiàn)兩個(gè)系統(tǒng)的融合。
我們現(xiàn)在只是編寫API進(jìn)行站內(nèi)激活,并沒有改變兩個(gè)數(shù)據(jù)庫關(guān)系,相當(dāng)于進(jìn)行統(tǒng)一認(rèn)證。
進(jìn)入系統(tǒng)后可以看到很多Web云應(yīng)用(如圖4所示)。
圖4 系統(tǒng)上顯示多種Web云應(yīng)用
我們已經(jīng)開始著手進(jìn)行學(xué)生之家應(yīng)用平臺(tái)移動(dòng)客戶端的開發(fā)以及建立相應(yīng)的LBS(Location Based Service,基于位置的服務(wù))。
LBS是通過電信移動(dòng)運(yùn)營商的無線電通訊網(wǎng)絡(luò)(如GSM網(wǎng)、CDMA網(wǎng))或外部定位方式(如GPS)獲取移動(dòng)終端用戶的位置信息(地理坐標(biāo)或大地坐標(biāo)),在GIS(Geographic Information System,地理信息系統(tǒng))平臺(tái)的支持下,為用戶提供相應(yīng)服務(wù)的一種增值業(yè)務(wù)。現(xiàn)在流行的LBS服務(wù)有切客、簽到、校內(nèi)導(dǎo)航等。
這種服務(wù)的最主要的技術(shù)點(diǎn)是坐標(biāo)的定位,我們需要對GIS系統(tǒng)進(jìn)行了解,并對不同的主流手機(jī)操作系統(tǒng)進(jìn)行開發(fā)。如果擁有GPRS功能,就可以通過坐標(biāo)定位;如果沒有,需要對接入點(diǎn)的AP地理位置進(jìn)行統(tǒng)計(jì),這是我們下一步工作需要解決的問題。
在項(xiàng)目的實(shí)施和開源系統(tǒng)的二次開發(fā)中,我們首先需要根據(jù)自己的需求與實(shí)際情況,對開源系統(tǒng)進(jìn)行選擇。然后對開源系統(tǒng)進(jìn)行深層次的了解,包括功能、性能、安全。最后根據(jù)自己的要求進(jìn)行二次開發(fā)。開源系統(tǒng)的優(yōu)勢是提供了很好的協(xié)作平臺(tái),對其開發(fā)機(jī)制的領(lǐng)會(huì)和運(yùn)用都將幫助開發(fā)者迅速實(shí)現(xiàn)技術(shù)升級。通過開源軟件,我們可以掌握更多的核心技術(shù),獲得更好的協(xié)作平臺(tái)和研發(fā)機(jī)制,二次開發(fā)開源系統(tǒng)將是實(shí)現(xiàn)校園開放平臺(tái)的創(chuàng)新出路。
(作者單位:1為山東大學(xué)網(wǎng)絡(luò)與信息中心,2為山東政治青年學(xué)院)
CNGI08及其資源
CNGI08下一代互聯(lián)網(wǎng)校園學(xué)習(xí)生活交流平臺(tái)是基于中國教育和科研計(jì)算機(jī)網(wǎng)統(tǒng)一認(rèn)證與資源共享基礎(chǔ)設(shè)施(CARSI)而建立的。CNGI08提供了較為豐富的資源索引和聯(lián)盟登錄。加入聯(lián)盟的高??梢栽诼?lián)盟內(nèi)部共享高校資源。
目前,可共享內(nèi)容主要包括:BBS系統(tǒng)、Blog系統(tǒng)、視頻資源共享系統(tǒng)等。除此之外,學(xué)習(xí)資料、經(jīng)典講座、就業(yè)創(chuàng)業(yè)、課程在線、微軟校園先鋒等相關(guān)內(nèi)容仍在不斷擴(kuò)充,以期為聯(lián)盟內(nèi)高校的教師和學(xué)生提供更完善的校園學(xué)習(xí)生活交流渠道。
表 CNGI08的聯(lián)盟用戶及其資源