最近都埋首在 ftpidx 的開發,上星期寫完 v0.4 學了很多新東西,得找個時間整理。v0.4 改為直接連 server 查詢,和 idx server 間的通訊用 ssl 加密,帳號跟 ftp server 同步。剛寫完時很滿意,不過才用了兩天就又想砍掉重寫 XD 這部份就等 v0.5 出來後再說了。。。

各 ftp server 帳號機制不同,要全都支援有點麻煩,idx server 將帳號認證部份獨立出來,可以使用簡單的文字檔或是 source 各 ftp 專用的 code。我的 ftp 用 pure-ftpd + mysql,當初是想說主機上有 mysql,且有人寫 php 的帳號管理還蠻方便的,現在的話會想自己寫 pure-ftpd的認證模組,把帳號資料存在 sqlite (最近老是想把東西都往 sqlite 中塞,真的是太好用了~),好處是可以自行加入更多的管控功能,例如流量超過多少會被 ban 幾天之類的。

Tcl 用 sqlite 很方便,其實連 mysql 也是超簡單。pure-ftpd 連 mysql 的資訊存在 pureftpd-mysql.conf 中,以官網的範例來說,須先抓到下列資料

MYSQLUser root
MYSQLPassword rootpw
MYSQLDatabase pureftpd
MYSQLCrypt cleartext
只要一行就可連上 (連線+指定 db)
set sql [mysqlconnect -host localhost -user root -password rootpw -db pureftpd]
查密碼、關閉連線
set pwr [mysqlsel $sql [subst {SELECT Password FROM users WHERE \
    User='$id'}] -flatlist]
mysqlclose $sql
再依據 MYSQLCrypt 設定的加密方式將傳入的密碼和查詢的密碼比較即可知道是否正確。