劉芷茵
(廣州市越秀區(qū)圖書(shū)館,廣東 廣州 510030)
隨書(shū)光盤(pán)是圖書(shū)的一種補(bǔ)充,幫助讀者加深對(duì)圖書(shū)內(nèi)容的理解,起到輔助學(xué)習(xí)的作用。但隨書(shū)光盤(pán)在流通過(guò)程中容易出現(xiàn)磨損、丟失等情況,造成光盤(pán)保存和管理極為不便。為了更好地保存、管理與利用隨書(shū)光盤(pán),目前國(guó)內(nèi)不少圖書(shū)館開(kāi)始使用隨書(shū)光盤(pán)管理系統(tǒng),將光盤(pán)內(nèi)容壓縮后存儲(chǔ)在服務(wù)器上,通過(guò)網(wǎng)絡(luò)進(jìn)行光盤(pán)資源管理和應(yīng)用。這種服務(wù)方式,即使隨書(shū)光盤(pán)能夠以數(shù)字化形式長(zhǎng)久保存,又提高了隨書(shū)光盤(pán)的使用效率,體現(xiàn)了圖書(shū)館開(kāi)拓?cái)?shù)字化、信息化服務(wù)的理念。然而隨書(shū)光盤(pán)管理系統(tǒng)在使用過(guò)程中會(huì)遇到很多問(wèn)題,其中版權(quán)保護(hù)就是比較關(guān)鍵的一個(gè)問(wèn)題。筆者從版權(quán)保護(hù)出發(fā),探究設(shè)計(jì)隨書(shū)光盤(pán)管理系統(tǒng)時(shí)規(guī)避侵權(quán)風(fēng)險(xiǎn)的策略,并在此基礎(chǔ)上提出了系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)的方案。
圖書(shū)館作為公益性的社會(huì)文化教育機(jī)構(gòu),承擔(dān)著保障公眾文化權(quán)益、讓公眾共享文化成果的責(zé)任,理應(yīng)為公眾提供免費(fèi)的隨書(shū)光盤(pán)數(shù)字資源服務(wù)。但隨書(shū)光盤(pán)是隨圖書(shū)一同發(fā)行的電子出版物,依法應(yīng)受到版權(quán)保護(hù)。那么,圖書(shū)館利用隨書(shū)光盤(pán)管理系統(tǒng)在網(wǎng)絡(luò)上傳播隨書(shū)光盤(pán)資源將涉及版權(quán)問(wèn)題?!吨腥A人民共和國(guó)著作權(quán)法》和《信息網(wǎng)絡(luò)傳播權(quán)保護(hù)條例》均規(guī)定了版權(quán)作品合理使用的多種情形及未經(jīng)著作權(quán)人許可、通過(guò)信息網(wǎng)絡(luò)傳播版權(quán)作品應(yīng)遵守的規(guī)定,為圖書(shū)館合理地、正當(dāng)?shù)貫楣娦畔①Y源服務(wù)提供了法律依據(jù)。因此,圖書(shū)館應(yīng)以保護(hù)版權(quán)為前提,遵守法律規(guī)定,從以下幾方面著手進(jìn)行隨書(shū)光盤(pán)管理系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā),規(guī)避侵權(quán)風(fēng)險(xiǎn)。
《中華人民共和國(guó)著作權(quán)法》第四十七條規(guī)定,未經(jīng)著作權(quán)人或者與著作權(quán)有關(guān)的權(quán)利人許可,故意刪除或者改變作品、錄音錄像制品等的權(quán)利管理電子信息的行為都是侵權(quán)行為,應(yīng)承擔(dān)相應(yīng)的法律責(zé)任。在隨書(shū)光盤(pán)管理系統(tǒng)使用過(guò)程中,加工隨書(shū)光盤(pán)時(shí),不可對(duì)光盤(pán)內(nèi)容作任何刪改,直接壓縮整張光盤(pán)的數(shù)據(jù),以保證光盤(pán)內(nèi)容的完整性。
《信息網(wǎng)絡(luò)傳播權(quán)保護(hù)條例》第七條規(guī)定,圖書(shū)館可以不經(jīng)著作權(quán)人許可,通過(guò)信息網(wǎng)絡(luò)向本館館舍內(nèi)服務(wù)對(duì)象提供本館收藏的合法出版的數(shù)字作品和依法為陳列或者保存版本的需要以數(shù)字化形式復(fù)制的作品,不向其支付報(bào)酬,但不得直接或者間接獲得經(jīng)濟(jì)利益?!缎畔⒕W(wǎng)絡(luò)傳播權(quán)保護(hù)條例》第十條規(guī)定,圖書(shū)館未經(jīng)著作權(quán)人許可、通過(guò)信息網(wǎng)絡(luò)向公眾提供其作品,應(yīng)當(dāng)采取技術(shù)措施,防止圖書(shū)館服務(wù)對(duì)象以外的其他人獲得著作權(quán)人的作品。根據(jù)以上條例,只要圖書(shū)館采取有效技術(shù)保護(hù)措施,控制隨書(shū)光盤(pán)數(shù)字資源網(wǎng)絡(luò)傳播的對(duì)象和范圍,向本館讀者提供免費(fèi)服務(wù),不以盈利為目的,則可避免侵權(quán)風(fēng)險(xiǎn)。[1]
《信息網(wǎng)絡(luò)傳播權(quán)保護(hù)條例》第二十二條規(guī)定,網(wǎng)絡(luò)服務(wù)提供者通過(guò)信息網(wǎng)絡(luò)向公眾提供作品、表演、錄音錄像制品,應(yīng)明確標(biāo)示該信息存儲(chǔ)空間是為服務(wù)對(duì)象所提供,并公開(kāi)網(wǎng)絡(luò)服務(wù)提供者的名稱、聯(lián)系人、網(wǎng)絡(luò)地址。隨書(shū)光盤(pán)管理系統(tǒng)的下載頁(yè)面,應(yīng)公布版權(quán)聲明。版權(quán)聲明內(nèi)容除了上述條例提到的內(nèi)容外,還可以包括用戶合理使用光盤(pán)資源的行為說(shuō)明和侵權(quán)行為說(shuō)明。圖書(shū)館發(fā)表版權(quán)聲明,是為了避免用戶直接侵權(quán)行為的發(fā)生,同時(shí)也是為了履行法律關(guān)于注意義務(wù)的要求,免除可能產(chǎn)生的圖書(shū)館間接侵權(quán)責(zé)任。[2]
筆者基于以上策略,設(shè)計(jì)和開(kāi)發(fā)了隨書(shū)光盤(pán)管理系統(tǒng),系統(tǒng)架構(gòu)為Java+Jsp+Tomcat+SQL Server2005。
本系統(tǒng)主要實(shí)現(xiàn)隨書(shū)光盤(pán)的下載利用與系統(tǒng)管理人員對(duì)隨書(shū)光盤(pán)的管理和維護(hù),系統(tǒng)包含用戶驗(yàn)證、光盤(pán)資源下載、光盤(pán)資源管理、用戶管理、日志管理等功能模塊。
3.1.1 用戶驗(yàn)證。本模塊用于用戶身份驗(yàn)證,判斷用戶是否為圖書(shū)館的合法用戶,通過(guò)驗(yàn)證才能登錄系統(tǒng),驗(yàn)證信息包括讀者證號(hào)和密碼。
3.1.2 光盤(pán)資源下載。本模塊用于隨書(shū)光盤(pán)的下載使用。只有系統(tǒng)認(rèn)可的合法用戶才有權(quán)限下載和使用隨書(shū)光盤(pán)。
3.1.3 光盤(pán)資源管理。本模塊用于系統(tǒng)管理人員對(duì)隨書(shū)光盤(pán)進(jìn)行加工、上傳、修改、刪除等操作,實(shí)現(xiàn)隨書(shū)光盤(pán)的管理和維護(hù)。
3.1.4 用戶管理。本模塊采用多用戶多角色管理機(jī)制,實(shí)現(xiàn)對(duì)系統(tǒng)各級(jí)用戶的角色設(shè)置和權(quán)限分配,確保不同級(jí)別的用戶登錄系統(tǒng)后只能夠執(zhí)行屬于自己權(quán)限范圍內(nèi)的操作,保障系統(tǒng)的安全性。
3.1.5 日志管理。本模塊跟蹤記錄用戶所進(jìn)行的操作,形成操作日志,并提供日志查詢功能,以便系統(tǒng)管理人員監(jiān)控用戶的操作行為。
根據(jù)系統(tǒng)功能模塊的劃分,系統(tǒng)的數(shù)據(jù)庫(kù)主要包含如下數(shù)據(jù)表:①光盤(pán)資源信息表。包括光盤(pán)編號(hào)、索取號(hào)、光盤(pán)名稱、光盤(pán)文件名、書(shū)名、文件大小、上傳時(shí)間七個(gè)字段。②用戶信息表。包括用戶編號(hào)、用戶名、用戶密碼、角色編號(hào)四個(gè)字段。③用戶角色表。包括角色編號(hào)、角色名稱、角色說(shuō)明三個(gè)字段。④操作權(quán)限表。包括權(quán)限編號(hào)、權(quán)限名稱、權(quán)限說(shuō)明三個(gè)字段。⑤角色權(quán)限關(guān)聯(lián)表。包括關(guān)聯(lián)記錄編號(hào)、角色編號(hào)、權(quán)限編號(hào)三個(gè)字段。⑥操作日志表。包括日志編號(hào)、操作類型編號(hào)、操作對(duì)象、操作執(zhí)行結(jié)果、流量、用戶編號(hào)、操作時(shí)間、IP地址八個(gè)字段。⑦操作日志類型表。包括操作類型編號(hào)、操作類型名稱、操作類型說(shuō)明三個(gè)字段。
4.1.1 在Tomcat的conf目錄下找到server.xml文件,配置文件路徑:
<Context path="/iso"docBase="G:disk_data"debug="0"reloadable="true"crossContext="true"/>
其中,path是光盤(pán)資源發(fā)布到網(wǎng)上下載的虛擬路徑,docBase是光盤(pán)資源在服務(wù)器存放的物理路徑。
4.1.2 在Tomcat的conf目錄下找到web.xml文件,指定需要下載文件的MIME類型為iso:
<mime-mapping>
<extension>iso</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
加工隨書(shū)光盤(pán),可以用WinlSO或UltralSO等軟件把光盤(pán)壓縮成ISO鏡像文件并上傳到服務(wù)器。ISO文件是一種符合ISO 9660國(guó)際標(biāo)準(zhǔn)的光盤(pán)鏡像文件格式,擴(kuò)充的ISO 9660可以支持市場(chǎng)上幾乎所有的光盤(pán)。使用標(biāo)準(zhǔn)的ISO 9660格式壓縮光盤(pán)可以保證整張光盤(pán)內(nèi)容的完整性,避免光盤(pán)部分信息的丟失。用戶下載ISO鏡像文件后可通過(guò)Daemon等虛擬光驅(qū)軟件將其虛擬成光盤(pán)直接使用[3]。考慮到鏡像文件比較大,為了節(jié)省數(shù)據(jù)庫(kù)空間和提高速度,可在服務(wù)器上建立存放光盤(pán)鏡像的文件夾,把光盤(pán)鏡像直接上傳到服務(wù)器上。隨書(shū)光盤(pán)與圖書(shū)采用一致的索取號(hào),以索取號(hào)作為光盤(pán)鏡像的文件名,然后把光盤(pán)鏡像的文件名寫(xiě)進(jìn)數(shù)據(jù)庫(kù)。
由于隨書(shū)光盤(pán)管理系統(tǒng)數(shù)據(jù)庫(kù)不具備讀者信息,用戶驗(yàn)證交由圖書(shū)館管理系統(tǒng)處理。隨書(shū)光盤(pán)管理系統(tǒng)設(shè)置用戶登錄界面,獲取用戶的讀者證號(hào)和密碼,然后通過(guò)基于HTTP協(xié)議的讀者身份驗(yàn)證接口為用戶進(jìn)行身份驗(yàn)證,再獲取接口返回的驗(yàn)證結(jié)果,如驗(yàn)證通過(guò)則允許用戶登錄。
接口返回的驗(yàn)證結(jié)果可采取XML作為數(shù)據(jù)描述文件格式。XML是為互聯(lián)網(wǎng)的數(shù)據(jù)交換而設(shè)計(jì)的,是一種簡(jiǎn)單的數(shù)據(jù)存儲(chǔ)語(yǔ)言,使用一系列簡(jiǎn)單的標(biāo)記描述數(shù)據(jù)。系統(tǒng)可以先用專門處理HTTP請(qǐng)求和響應(yīng)的工具包,比如HttpClient,來(lái)獲取XML格式的驗(yàn)證結(jié)果,然后再用DOM、DOM4J、SAX和JDOM等四種解析器中的一種來(lái)解析XML。
下面筆者編寫(xiě)了一個(gè)以讀者證號(hào)和密碼為參數(shù)的ReaderCheck函數(shù),來(lái)進(jìn)行用戶身份驗(yàn)證。代碼如下:
public static String ReaderCheck(String rdid,String pwd){
//用HttpClient獲取XML
HttpClient httpClient=new HttpClient();
String urlName="……";
PostMethod postMethod=new PostMethod(url-Name);
try{
int responseCode = httpClient.executeMethod(postMethod);
if(responseCode==200){
System.out.println("請(qǐng)求成功.");
String res = postMethod.getResponseBodyAs-String();
//用DOM解析XML
DocumentBuilderFactory dbf=DocumentBuilder-Factory.newInstance();
StringReader reader=new StringReader(res);
InputSource insource = new InputSource(reader);
DocumentBuilder db=dbf.newDocumentBuilder();
Document doc=db.parse(insource);Element root=doc.getDocumentElement();
……}
4.4.1 只允許圖書(shū)館借了圖書(shū)的讀者下載所借圖書(shū)的隨書(shū)光盤(pán)。隨書(shū)光盤(pán)和圖書(shū)是配套使用的,只學(xué)習(xí)光盤(pán)內(nèi)容而不看書(shū)籍會(huì)使學(xué)習(xí)效果打折扣。而且不加限制地允許用戶大量下載隨書(shū)光盤(pán),會(huì)存在侵權(quán)的潛在風(fēng)險(xiǎn)。雖然可以由系統(tǒng)監(jiān)控用戶的下載行為,但只能發(fā)現(xiàn)短期內(nèi)同一帳號(hào)大量下載隨書(shū)光盤(pán)的行為,對(duì)于多個(gè)賬號(hào)分時(shí)少量下載的行為則較難檢測(cè)和判斷。
為了實(shí)現(xiàn)此功能,可以由圖書(shū)館管理系統(tǒng)提供取得讀者當(dāng)前借閱信息的接口,隨書(shū)光盤(pán)管理系統(tǒng)通過(guò)該接口獲取用戶當(dāng)前的借閱信息,如所借圖書(shū)帶有隨書(shū)光盤(pán),則提示用戶下載。
用戶當(dāng)前借閱信息的獲取方法可參照用戶身份驗(yàn)證功能的實(shí)現(xiàn)方式操作。
4.4.2 做好防盜鏈處理,防止非授權(quán)用戶下載隨書(shū)光盤(pán)。盜鏈就是一些網(wǎng)站為了豐富自己網(wǎng)站的內(nèi)容,而盜取其他網(wǎng)站的圖片、音樂(lè)、文件的下載地址,放到自己網(wǎng)站上。防盜鏈就是防止這種行為的發(fā)生,杜絕非法下載,實(shí)現(xiàn)版權(quán)保護(hù)。
筆者采用的防盜鏈方法是下載光盤(pán)資源時(shí)隱藏其真實(shí)的下載地址。具體流程:根據(jù)讀者當(dāng)前所借圖書(shū)的索取號(hào),利用圖書(shū)與光盤(pán)索取號(hào)一致的關(guān)聯(lián)關(guān)系在數(shù)據(jù)庫(kù)中找到對(duì)應(yīng)的光盤(pán)文件名,然后把下載鏈接設(shè)為“http://xxx/download.jsp?fn=yyy”,其中,xxx是隨書(shū)光盤(pán)管理系統(tǒng)域名,yyy是光盤(pán)文件名。在download.jsp頁(yè)面里,先判斷下載請(qǐng)求的來(lái)源頁(yè)是否為外部網(wǎng)站,如果是則提示用戶登錄,如果不是則動(dòng)態(tài)生成光盤(pán)資源真實(shí)的下載地址,并實(shí)現(xiàn)光盤(pán)資源的下載。
動(dòng)態(tài)生成下載地址的原理:把光盤(pán)的索取號(hào)作為光盤(pán)的文件名,由于索取號(hào)中帶有的“/”不能作為文件名,因此用“_”代替“/”,比如索取號(hào)為H31/165,則文件名為H31_165.iso。然后,再按分類號(hào)對(duì)光盤(pán)文件分類存放,如H類的放在文件名為“h”的文件夾下,那么H31_165.iso在服務(wù)器中存放的相對(duì)路徑就是“/iso/h/H31_165.iso”。按照這個(gè)規(guī)則,系統(tǒng)就可以在用戶點(diǎn)擊下載鏈接時(shí)再由程序生成每個(gè)光盤(pán)文件的真實(shí)下載地址。
實(shí)現(xiàn)防盜鏈的主要代碼如下:
(1)用戶登錄狀態(tài)判斷
if((String)session.getAttribute("Username")==null)
{response.sendRedirect("login.jsp");//跳轉(zhuǎn)到登錄頁(yè)面要求用戶登錄}
(2)動(dòng)態(tài)生成下載地址
public static String isopath(String fn){
String filename=fn;
char c=filename.charAt(0);
int i=(int)c;
if(i>=65&&i<=90){
String p=filename.substring(0,1).toLowerCase();
String realpath = "/iso/" + p + "/" +filename;//生成下載地址
}
else
{
System.out.println(“文件名錯(cuò)誤!”);
}
……
}
(3)下載光盤(pán)資源
public String downloadFile(HttpServletRequest request,
HttpServletResponse response){
……
int filelength=0;
try{
response.setContentType(this.getContentType(filename));
response.setHeader("Content-disposition","attachment;filename="+filename);
InputStream fis = new FileInputStream(realpath);
BufferedInputStream bis = new BufferedInput-Stream(fis);
OutputStream fos = response.getOutputStream();
BufferedOutputStream bos=new BufferedOutput-Stream(fos);
int bytesRead=0;
byte bytes=new byte[512000];
while((byteslen=bis.read(bytes))!=-1)
{
filelength+ =byteslen;
bos.write(bytes,0,byteslen);//發(fā)送到客戶端
}
……
}catch(IOException e){
……
}
}
系統(tǒng)在用戶進(jìn)行登錄和退出、下載文件,對(duì)光盤(pán)資源進(jìn)行增刪改等操作時(shí),用SQL的insert into語(yǔ)句在操作日志表中插入一條記錄,記錄操作用戶、操作類型、操作對(duì)象、操作執(zhí)行結(jié)果、產(chǎn)生的流量、操作時(shí)間、所在IP地址等日志信息。用戶登錄和退出日志的記錄可以利用HttpSessionBindingListener接口,通過(guò)監(jiān)聽(tīng)session的新建和撤銷來(lái)實(shí)現(xiàn)。
有了日志記錄,就可以利用SQL語(yǔ)句對(duì)操作日志表執(zhí)行查詢和統(tǒng)計(jì),生成統(tǒng)計(jì)報(bào)表。統(tǒng)計(jì)報(bào)表可直觀反映隨書(shū)光盤(pán)的下載頻率和用戶下載隨書(shū)光盤(pán)的情況。管理人員根據(jù)用戶的下載頻率和下載流量就可判斷其使用行為是否合理。[4]
本系統(tǒng)現(xiàn)已在廣州市越秀區(qū)圖書(shū)館使用,效果良好。本系統(tǒng)在解決版權(quán)問(wèn)題的同時(shí),使隨書(shū)光盤(pán)得以長(zhǎng)久保存,使讀者能夠通過(guò)網(wǎng)絡(luò)便捷地獲取到所需要的隨書(shū)光盤(pán)資源,為圖書(shū)館開(kāi)展信息資源服務(wù)提供了有效途徑。
[1] 陳小萍,吳高.隨書(shū)光盤(pán)利用的版權(quán)風(fēng)險(xiǎn)與對(duì)策研究[J].圖書(shū)館論壇,2009(5):53-55.
[2][4]韋景竹,湯罡輝,郭超.圖書(shū)館知識(shí)產(chǎn)權(quán)風(fēng)險(xiǎn)規(guī)避自律機(jī)制的觀察與分析[J].圖書(shū)情報(bào)知識(shí),2010(2):92-99.
[3] 戴麗娜.無(wú)錫科技職業(yè)學(xué)院圖書(shū)館隨書(shū)光盤(pán)管理系統(tǒng)的設(shè)計(jì)[J].內(nèi)蒙古科技與經(jīng)濟(jì).2009(19):147-149.