# CN Lab (第二組) Final Project Report ## 專題動機 隨著智慧型手機的普及,現代人的手機內往往存放著大量的照片、影片。然而,如何將手機內的檔案存到電腦備份,或者是與家人共享檔案,成為一個有點麻煩的問題。 檔案傳輸部分,雖然已有一些服務能做到手機、電腦間檔案互傳,但是往往會有作業系統的限制,而且無法同時達到檔案共享的功能。例如:Airdrop 只支援蘋果裝置間的檔案傳輸 (iPhone, iPad, Mac等),而NAS雖然可以做到跨平台傳檔與檔案共享,但價格較高,且有些NAS僅提供有線網路連接(並非每個家庭都有有線網路)。 有鑑於NAS的各種缺點,因此,我們想要設計1款Software NAS,讓使用者可以透過自己的PC作為類似NAS server的功能,讓其他手機、電腦能夠把檔案傳上去,並透過權限控制等技術,達到點對點傳輸檔案、與多人同時共享檔案等功能。 ## 專題介紹 本次專題的主題為"Software NAS",透過選定一台(或多台)電腦作為server,讓手機與server在同一個子網域中。如此一來,其他裝置(如:手機)就能透過設計好的App,進行broadcast,並找到可以存取的server。 找到欲連線的server後,透過先前設定的帳號、密碼進行身分驗證。確認身分後,他將有權限讀/寫Public storage與"他自己的"Private storage。其中,Public storage可與其他成員共享照片、影片等檔案,而Private storage可將自己的檔案傳到電腦(同時不讓其他人讀取/更改)。 ## 網路架構 ## 實驗步驟 1. 定位server - server 開啟 Zeroconf 服務 - client 透過 mDNS (multicast DNS) 尋找有提供服務的 server - server 回覆它的 IP address 及 Port number 2. Authentication (採用 OAuth 2.0) - client 傳送帳號、密碼 - server 將密碼 hash 並與資料庫比對 - 若密碼正確,則用JSON Web Token (JWT)製作token 3. Request with token - 將 token 夾帶到 http request header 內 ## 結果呈現 text ## 實驗總結 text ## 分工/貢獻度 text