一、 功能設計
“網絡硬盤”是將用戶的文件存放在互聯網上,方便用戶“攜帶”他們的文件,方便用戶與他的親朋好友“分享”他們的文件,所有操作是通過瀏覽器的頁面上完成。用戶可以完成下載、上傳" title="上傳">上傳、復制、移動、刪除文件等操作,文件類型不作限制。管理員可以開設、凍結、刪除、修改下級賬號,并能設定其下級用戶的家目錄、磁盤空間等操作。下面是對這些功能的詳細描述:
?1.1 帳號" title="帳號">帳號管理
?本系統的用戶管理是以域 (或者組)為單位進行管理,每一個域有指定的管理員,并且每一個域在建立時,被指定了特定的磁盤空間,域管理員對磁盤的分配只能在本空間范圍內進行,域管理員可以在本域范圍內進行用戶管理:
.?域管理
超級管理員可以建立、刪除指定的域,并可以為每一域設定域管理員帳號,并可設置域磁盤空間的大小。在刪除域時,回收本域的所有磁盤空間。
. 增加域用戶
域管理員增加新的域用戶及密碼,并設定用戶的家目錄、磁盤空間大小。
. 刪除域用戶
域管理員刪除指定域用戶,并回收其所有磁盤空間。
. 修改域用戶
域管理員可以對域內任何一用戶的用戶名、密碼、磁盤空間進行修改。
?1.2用戶文件操作
?? ?用戶可以圖形界面中對自已家目錄下的文件及目錄進行任何操作:
. 目錄操作
可在家目錄下建立、刪除、移動目錄。
.?文件操作
可在家目錄下刪除、移動、復制文件,并且可把本地文件上傳到遠端的家目錄下,也可把家目錄下的文件下載到本地磁盤中。
1.3文件共享操作
?用戶可以把家目錄下的指定的目錄共享給其所在域中的任何用戶,共享方式有:
.?完全共享
被授權共享的用戶可以對本目錄進行刪除、移動、復制文件,并可在共享目錄下建立、刪除、移動目錄,也能上傳與下載文件。
.?只讀共享
被授權共享的用戶可以對本目錄進行復制文件到自已的家目錄,也可以下載文件到本地磁盤中,但不能對共享目錄進行寫操作。
二、?系統結構
??? 由于考慮到本系統的可擴展性及用戶的多樣性,系統采用B/S" title="B/S">B/S結構,域及用戶管理通過LDAP來實現,用戶端通過Applet(或ActiveX)實現,所有對遠程的操作完全通過HTTP協議來實現。系統架構如下圖:
??? 如上圖所示,管理員使用瀏覽器通過HTTP協議調用Servlet/Jsp,對LDAP Server進行操作,完成對域和用戶的管理。用戶登錄后,首先獲得自已家目錄的信息,并從家目錄下的配置文件獲取共享文件的信息。用戶對文件的上傳與下載通過HTTP協議中的GET與POST來完成。
??? 由于考慮到系統將支持大龐大的用戶數,而LDAP Server的特點是讀操作的效率高,寫操作效率相對低,因此用戶操作比較頻繁的共享操作使用用戶家目錄下的配置文件來實現。
三、?技術實現方法
??? 以下針對系統的功能進行說明其實現方法" title="實現方法">實現方法:
?3.1帳號管理
??? 管理員的域操作以及用戶操作時,不僅對LDAP Server進行操作,而且同時還對文件系統" title="文件系統">文件系統進行相應的建立、刪除、移動等操作。
3.2用戶文件操作
??? 當用戶進行下載與上傳操作時,分別是通過Http中的GET與POST方法,用JSP對文件系統進行I/O操作;而用戶的刪除、移動、拷貝命令通過JSP轉換為操作系統相關的文件操作命令。
3.3文件共享操作
?
??? 當用戶要把指定的目錄共享時,首先取得其所在域中的所有用戶列表,通過圖形界面把共享目錄授權給用戶列表中的指定用戶,然后系統取得指定用戶家目錄中的配置文件,并把共享目錄的路徑加入到配置文件中,同時注明共享方式。
與此同時,也在自已的家目錄中修改相應的配置文件,注明目錄共享給誰,以便取消共享時能定位共享的用戶。
四、 數據結構
4.1用戶信息
??? 用戶帳號存儲于LDAP Server中,其基本結構如下:
dn: cn=username, dc=domain,dc=com
objectclass: storeuser
cn: username
sn: username
userpassword: 123456
mail: username @domain.com
mailhost: domain.com
storehost: store.domain.com
uid: username
homedirectory: /store/domain/001/username/
deliverymode: normal
storequota: 20000000M
creatorsname: cn=admin,dc=domain,dc=com
createtimestamp: 20030727000000
modifytimestamp: 20030727000000
modifiersname: cn= admin,dc= domain,dc=com
4.2共享配置文件
??? 在用戶家目錄下的共享配置文件如下:
#共享目錄????????目錄擁有者??權限
/store/domain/001/username/dir1???username ??r
/store/domain/001/username/dir2???username ??w
#目錄被共享???????共享人???o表示是自已的目錄
/store/domain/001/username1/dir???username2???o
五、?參照規范及標準
HTTP?1.0/1.1??HyperText Transmiting Protocol
JNDI?1.2??JAVA NAMING AND DIRECTORY INTERFACE
RFC 1487? --? X.500 Lightweight Directory Access Protocol (obsoleted by RFC 1777)
RFC 1558? -- A String Representation of LDAP Search Filters (obsoleted by RFC 1960)
RFC 1777? -- Lightweight Directory Access Protocol
RFC 1778 ?-- The String Representation of Standard Attribute Syntaxes
RFC 1779? -- String Representation of Distinguished Names
RFC 1959? -- An LDAP URL Format (obsoleted by RFC 2255)
RFC 1960? -- A String Representation of LDAP Search Filters (obsoleted by RFC 2254)
RFC 2251? -- Lightweight Directory Access Protocol (v3)
RFC 2252? -- Lightweight Directory Access Protocol (v3): Attribute Syntax Definitions
RFC 2253 ?-- Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names
RFC 2254 -- The String Representation of LDAP Search Filters
RFC 2255? -- The LDAP URL Format
RFC 2256? -- A Summary of the X.500(96) User Schema for use with LDAPv3
RFC 1823 ?-- The LDAP Application Program Interface
RFC 2079? -- Definition of an X.500 Attribute Type and an Object Class to Hold Uniform Resource Identifiers
RFC 2116? -- X.500 Implementations Catalog-96
RFC 2164? -- Use of an X.500/LDAP directory to support MIXER address mapping
RFC 2247? -- Using DNS Domain names in LDAP/X.500 Distinguished Names
RFC 2307? -- An Approach for Using LDAP as a Network Information Service
RFC 2377? -- Naming Plan for Internet Directory-Enabled Applications
RFC 2559? -- Internet X.509 Public Key Infrastructure Operational Protocols - LDAPv2
RFC 2596? -- Use of Language Codes in LDAP
RFC 2649? -- An LDAP Control and Schema for Holding Operation Signatures
RFC 2696? -- LDAP Control Extension for Simple Paged Results Manipulation