作者:UDFS / 來源:Ulord社區
黑名單過濾的本質是防止不被期望的文件傳播到UDFS網絡中,或者已經傳播到UDFS網絡的文件,能夠被清除掉。針對還未入網的文件,UDFS在網關層面提供了一層認證,即所有想要入網的文件,必須經過許可,才能入網。對于已經傳播到UDFS網絡中的文件,因為UDFS網絡是一個分布式P2P網絡,內容會在被訪問的過程中不斷傳播,無法直接實時的一次性清除,所以只能間接防止進一步傳播的同時,每個節點負責清理掉自身的黑名單內容。
具體實現上,我們分為網關層過濾和節點黑名單清理。
一.網關層過濾
UDFS網關層是UDFS網絡中文件的入口和出口,在這里限制黑名單文件的流入和流出,對外來說就相當于黑名單文件不可訪問了。目前UDFS的網關層,所有的文件出入請求,都會向UOS做查詢,驗證文件hash是否有效,只有有效的hash會被放行。
二.節點黑名單清理
如果黑名單文件已經在UDFS網絡中進行過傳播了,那么首先要防止文件進一步的傳播,這在網關層過濾中已經可以實現。其次,已經有黑名單文件的UDFS節點,需要進一步對黑名單文件做清理,達到黑名單文件在UDFS網絡內也不復存在的目的
每個節點(A)處理黑名單的流程如下:
節點黑名單處理過程
完整的黑名單發布到處理的過程為:
固定一個節點做黑名單發布節點(Node.Blacklist),通過IPNS進行發布黑名單目錄。這里要說明下黑名單目錄的規范:
a)黑名單目錄內不存在子目錄,只存在以文件創建時的時間戳命名的文件,這個文件名為10位數值(時間戳精確到秒,不足10位的前面補0)。
b)黑名單列表以一行一個的形式存放在黑名單文件中。我們約定一個黑名單文件的可變更周期為7天,即文件名時間戳代表的時間開始,到之后的7天內,都允許修改。超過7天后就需要添加新的黑名單文件。
UDFS的其他節點,周期性的向固定的IPNS地址請求黑名單目錄,并遍歷黑名單目錄內的文件。
檢測文件名所代表的時間戳如果在可變更周期內,則對該文件內列出的黑名單hash進行本地掃描,存在則清除掉。否則跳過處理下一個文件。