0x00前言
這個項目做了很久,主要是模擬百度網盤實現文件在線存儲、上傳下載、分享以及管理,界面比百度網盤簡陋,只有B/S模式,也沒有PC客戶端和安卓客戶端,另外百度網盤的存儲服務器其實是分佈式的文件系統,限於我的能力和機器資源有限,此項目做成單服務器系統,沒有使用任何分佈式技術。但該有的基本功能如上傳、重命名、刪除、移動、下載、分享、預覽、文件夾新建等等都有。
此處記錄下來僅供往後查詢。我並不打算公開源碼,需要源碼請按組合鍵:ALT+F4,或前往這裏:cloudreve下載thinkPHP的開源網盤系統。
0x01系統使用框架
1.數據庫:mysql/oracle 11g,當使用11g時使用c3p0連接池。
2.後端框架:SpringMVC+Spring+MyBatis+java8
3.前端:bootstrap+jquery+jsp,部分功能使用了ajax
4.web容器:tomcat9
5.其他:預覽功能使用了openoffice4將office文件轉爲pdf,然後安裝了Adobe acrobat實現在線預覽
6.文件加密模塊:使用AES算法,密鑰長度爲128位,加密模式爲CBC,填充方式爲PKCS5Padding,向上層提供文件加解密及字符串加解密服務。該模塊對於輸入的字符串密鑰,首先計算密鑰的128位摘要作爲AES的初始種子密鑰,使用該比特密鑰對文件及字符串進行加解密,該模式與網絡上常見上的加解密工具不通用。
7.密碼存儲:使用SHA-1計算密碼摘要存儲
0x02系統功能
系統分爲管理員與普通用戶兩種角色,管理員擁有普通用戶所有的功能,同時具有管理權限,具體功能如下:
1、普通用戶
1.註冊
2.登錄
3.退出
4.上傳文件(同名文件自動重命名)
5.加密上傳及存儲(選擇加密上傳時,文件上傳到服務器後採用AES加密後存儲在服務器上)
6.單文件下載
7.文件批量下載
8.新建文件夾
9.刪除文件夾
10.切換各級文件夾
11.預覽
12.重命名文件
13.移動文件
14.刪除文件
15.回收站(恢復、永久刪除文件)
16.自定義頭像
17.分享:生成分享鏈接,設置提取碼及過期時間
18.點對點發送文件
19.最大容量、已用容量、剩餘容量顯示
20.發起擴容請求
21.文件分類展示
22.搜索
23.修改密碼
2、管理員
24.管理員帳戶註冊(僅開放一次,註冊結束即關閉)
25.切換用戶模式與管理員模式
26.部署時註冊管理員
27.對普通用戶權限設置
28.封禁用戶
29.刪除用戶
30.退出管理員模式
31.處理擴容請求
32.開啓\關閉擴容請求自動處理功能
33.解禁用戶
0x03部署前的準備工作
安裝oracle11g
口令:Test12345678
安裝PL/SQL
pl/sql安裝完畢後下載64轉32位的客戶端
直接將oracle安裝目錄下的oci.dll複製過去
用戶管理裏SYS以DBA登錄後創建用戶cloud,口令Test12345678,指定默認表空間。
SYS as SYSDBA
create user cloud identified by "Test12345678";
grant create session to cloud 賦予登錄權限
grant unlimited tablespace to cloud 賦予無限表空間
grant create table to cloud 賦予創建表權限
grant connect,resource to cloud 賦予創建會話的權限
解決中文亂碼問題:
select userenv('language') from dual;
select * from V$NLS_PARAMETERS; 查看是否一致,如不一致則新建系統變量NLS_LANG使值與上一語句查出的一致,重啓plsql
在線預覽環境安裝:
邏輯:
通過openOffice將office文件轉成pdf
安裝adobe
此處需對server.xml配置虛擬路徑,重啓服務器
程序版本:
OpenOffice4
流程:
1、安裝OpenOffice4.exe
2、安裝Adobe acrobat
3、配置虛擬路徑
配置程序數據區
cloud文件夾下頭像文件夾、預覽文件夾需要配置虛擬路徑
關於加密形式:
對於賦予了加密存儲權限的用戶,系統自動生成一個密鑰,用戶上傳文件(文件夾暫不支持)時可勾選“加密存儲”若勾選該選項,該份文件加密後存儲
對於此類加密存儲的文件的分享,各用戶下載時自動搜索密鑰表查找密鑰後解密下載
Openoffice服務安裝地址:
"C:\\Program Files (x86)\\OpenOffice 4\\"
如不安裝在上述文件夾下,需修改
做完上述工作,再需要對tomcat進行配置虛擬路徑。以便頭像及預覽的訪問。
做完這些,安裝前的準備工作就完成了。
0x04數據庫設計
數據庫分爲6張表:
1.用戶表
2.文件表
3.分享列表
4.擴容請求列表
5.消息通知表
6.預覽記錄表
0x05效果圖
登錄:
主界面:
管理員模式:
預覽:
提取分享文件:
生成分享鏈接:
發起擴容請求: