Serv-U是一種被廣泛運用的FTP伺服器端軟體,支援3x/9x/ME/NT/2K等全Windows系列。可以設定多個FTP伺服器、限定登入使用者的許可權、登入主目錄及空間大小等,功能非常完備。 它具有非常完備的安全特性,支援SSl FTP傳輸,支援在多個Serv-U和FTP用戶端通過SSL加密串連保護您的資料安全等。
Serv-U 支援基於ODBC資料庫的使用者和使用者組設定,這為我們基於Serv-U編程提供了良好的介面,接下來我們介紹如何具體實現。
一、使用ODBC資料庫管理Serv-U
前提條件:企業版的Serv-U(4.1以上版本)才能夠支援ODBC,常見可支援的資料庫包括access、mysql、oracle和mssql等。
Serv-U英文官方網站上提供了部分資料庫樣本,本站提供下載,請選擇:
·Access樣本:MS Access ODBC Example
·Ms SQL樣本:MS SQL Server ODBC Example
·MySQL樣本:MySQL ODBC Example
·Oracle建立表結構的SQL檔案:Oracle database for use with Serv-U
以下以Ms SQL為例介紹使用方法
1、安裝好Serv-U企業版(4.1以上版本),建立一個新的域,在第四步中,域類型選擇“儲存於ODBC資料庫中”,
2、下載MS SQL Server ODBC Example樣本包,獲得CreateServUTables.sql(用於在mssql中建立Serv-U的對應表結構)檔案,並在mssql中執
行該檔案,建立六個表,分別為:
·ftp_users
·ftp_userIPs
·ftp_userAccess
·ftp_groups
·ftp_groupIPs
·ftp_groupAccess
其中ftp_users為存放使用者的表,最為重要。
3、建立ODBC。樣本過程如下
(1)添加系統DSN(系統資料來源),選擇SQL Server,填好資料來源名稱和伺服器(本機使用local)
(2)登入驗證方式根據你的mssql設定決定,這裡用SQL驗證的方式登入
(3)更改資料庫為你建立好Serv-U表的資料庫,確認,完成ODBC設定。現在你有了一個名為Serv-U的系統資料來源,記得這個名字和登入使用使用者和密碼。
4、配置Serv-U
(1)關閉Serv-U,從MS SQL Server ODBC Example樣本包中獲得Add-to-Ini.txt檔案,開啟此檔案,完整複製以下代碼:
[Domain1]
ODBCTables=ftp_users|ftp_groups|ftp_userAccess|ftp_groupAccess|ftp_userIPs|ftp_groupIPs
ODBCColumns=ftpUserName|ftpPassword|sKey|dirHome|loginMsgFile|accessRule|disabled|sessionEncryption|dirHomeLock|hideHidden|alwaysAllowLogin|changePassword|quotaEnable|maxUsersLoginPerIP|speedLimitUp|speedLimitDown|maxUsersConcurrent|timeOutIdle|timeOutSession|ratioUp|ratioDown|ratioCredit|quotaCurrent|quotaMax|expiration|privilege|ftpPasswordType|ratioType|groups|notes|indexNo
(2)開啟Serv-U的安裝目錄,找到ServUDaemon.ini檔案,將對應[Domain1]及其後面的對應設定用上面的代碼替換。
(3)重新開啟你的Serv-U,找到剛才你建立的域,在ODBC設定中應該已經能夠看到ODBC連結設定中,除了ODBC源名稱、帳號和密碼部分空的外,其他的表名和列名都已經設定好了。
(4)填寫好你的ODBC源名稱、帳號和密碼,應用設定,如果你的設定沒有問題的話,域前面的表徵圖將不再是禁止的樣子,表示已經設定好了
(5)隨便建立一個使用者,然後對應在你的ftp_users表中尋找看是否存在,如果沒有問題,你已經完成了Serv-U的ODBC設定。
二、編程實現ODBC管理Serv-U使用者
有了資料庫,用編程實現管理Serv-U使用者應該是一件非常簡單而輕鬆的事情,唯一的痛點在於密碼的加密。
我們知道Serv-U三種密碼編譯演算法,預設情況下是32位的md5密碼編譯演算法,這和有的16位和64位密碼編譯演算法有所不同,因此我們在編程中要使用32位的
MD5密碼編譯演算法來實現密碼的加密。以下以ASP編程為例:
用以下兩個函數完成對密碼的加密,32位MD5加密檔案在此下載MD5.ASP
Function SerUPassEnCode(strPass)
Dim Char1,Char2,Seed,prePass,EncodePass,FinalPass
If IsNull(strPass) Or strPass="" Then Exit Function
Char1 = Chr(Rand(97,122))
Char2 = Chr(Rand(97,122))
Seed = Char1 & Char2
prePass = Seed & strPass
EnCodePass = Ucase(md5(prePass)) '32位md5
FinalPass = Seed & EnCodePass
SerUPassEnCode = FinalPass
End Function
Function Rand(n,m)
Dim a,b,t
a = n : b = m
If b < a Then t = b : b = a : a = t
Randomize
Rand = Int(rnd*(b-a+1)+a)
End Function
本文完全原創,請尊重作者勞動,轉載請註明出處,謝謝。