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
本文完全原创,请尊重作者劳动,转载请注明出处,谢谢。
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!