Serv-u的ODBC数据库做法(完整版)
作者:wang 日期:2009-10-22
为什么要写这个呢? 因为这种做法可以通过数据库方便的管理FTP用户... 如果你是网络空间商. 这种做法无疑会减少很多工作量
这个是用sqlserver 2000 做的
1. 首先建立一个 servu的数据库 ( 你也可以建一个自己的数据名字 ) 将以下sql语句在这个库里 的"查询分析器"里运行, 这个库里就增加了serv-u所需要的表和字段...
创建su的数据库的表的sql语句:
Create TABLE [groupaccounts] (
[id] int IDENTITY (1,1) PRIMARY KEY,
[Index] int Default 0,
[Name] nVarChar(50) default '',
[Notes] nVarChar(255) default ''
)
Create INDEX [Name] on [groupaccounts]([Name] )
Create TABLE [groupdiraccess] (
[id] int IDENTITY PRIMARY KEY,
[Access] nVarChar(255) default '',
[Index] int Default 0,
[Name] nVarChar(50) default ''
)
Create INDEX [Name] on [groupdiraccess]([Name] )
Create TABLE [groupipaccess] (
[id] int IDENTITY PRIMARY KEY,
[Access] nVarChar(255) default '',
[Index] int Default 0,
[Name] nVarChar(50) default ''
)
Create INDEX [Name] on [groupipaccess]([Name] )
Create TABLE [useraccounts] (
[id] int IDENTITY PRIMARY KEY,
[Access] nVarChar(255) default '',
[AlwaysLogin] int Default 0,
[ChangePass] int Default 0,
[Disable] int Default 0,
[Expirationtype] int Default 0,
[Expiration] datetime Default '1980-1-1',
[Groups] nVarChar(50) default '',
[HideHidden] int Default 0,
[HomeDir] nVarChar(100) default '',
[idleTimeOut] int Default 0,
[LogMesfile] nVarChar(100) default '',
[MaxIp] int Default -1,
[MaxSpeedDown] decimal Default 0,
[MaxSpeedUp] decimal Default 0,
[MaxUsers] int Default -1,
[Name] nVarChar(50) default '',
[Needsecure] int Default 0,
[Notes] nVarChar(255) default '',
[PassType] int Default 0,
[Password] nVarChar(50) default '',
[Privilege] int Default 0,
[QuotaCurrent] decimal Default 0,
[QuotaEnable] int Default 0,
[QuotaMax] decimal Default 0,
[RatioCredit] decimal Default 0,
[RatioDown] int Default 0,
[RatioType] int Default 0,
[RatioUP] int Default 0,
[RelPaths] int Default 0,
[SessionTimeOut] int Default 0,
[SkeyValues] nVarChar(50) default '',
[dacl] [char] (10) default NULL
)
Create INDEX [Name] on [useraccounts]([Name] )
Create TABLE [userdiraccess] (
[id] int IDENTITY PRIMARY KEY,
[Access] nVarChar(255) default '',
[Index] int Default 0,
[Name] nVarChar(50) default ''
)
Create INDEX [Name] on [userdiraccess]([Name] )
Create TABLE [useripaccess] (
[id] int IDENTITY PRIMARY KEY,
[Access] nVarChar(255) default '',
[Index] int Default 0,
[Name] nVarChar(50) default ''
)
Create INDEX [Name] on [useripaccess]([Name] )
2. 好了, 库已经建好了!
现在配置ODBC数据源
这里的数据源名称为ServU
(1). 如果你在数据库中设置了该数据库用户的话, 就在这里填写你的用户名和密码就可以了(2). 如果没有设置的话, 就用"使用网络登录ID的windows NT 验证" 这个选项, 这样, 就可以用默认的sa管理员进入了, 要是你的sa用户设置的密码, 还是要用(1)
的,2. 在serv-u 建立一个域, 当设置到下面这个界面时:这里选择用 "ODBC 数据库" 存储.. 其它的用默认设置就ok了设置完之后你会发现这个新建的域是打了红线的, 这说明这个域还没有配置好.到serv-u的安装目录下, 找到 ServUDaemon.ini 文件会找到以下内容:CacheTTL=60
ODBCSource=||
ODBCTables=|||||
ODBCColumns=||||||||||||||||||||||||||||||||将其改为:Serv-U中ServUDaemon.ini 的配置:CacheTTL=60
ODBCSource=ServU|tt|5034
ODBCTables=useraccounts|groupaccounts|userdiraccess|groupdiraccess|useripaccess|groupipaccess
ODBCColumns=Name|Password|SkeyValues|HomeDir|LogMesfile|Access|Disable|Needsecure|RelPaths|HideHidden|
AlwaysLogin|ChangePass|QuotaEnable|MaxIp|MaxSpeedUp|MaxSpeedDown|MaxUsers|idleTimeOut|SessionTimeOut|R
atioUP|RatioDown|RatioCredit|QuotaCurrent|QuotaMax|Expiration|Privilege|PassType|RatioType|Groups|Note
s|Index|dacl|
保存说明一下:ODBCSource=ServU|tt|5034 : 意为: ODBCSource=数据源名称|数据库登录名|密码(因为是加过密的, 可以在serv-U中改)
3. 启动serv_u服务 打开你会看到: 这里你可以更改你的数据库的密码, 如果中的红线去掉了, 说明你的设置正确了,数据库已经连好了, 添加用户, 会发现用户已经添加到了数据库中了...总算写完了, 不明白的留言吧...4. 下面说一下, 在网页中修改ftp用户的密码的一个简单例子:index.asp
<%
dim act,UserName,OldPassword,NewPassword,reNewPassword
act = Request.form("act")
if act = "update" Then
UserName = Request.form("UserName")
OldPassword = Request.form("OldPassword")
NewPassword = Request.form("NewPassword")
reNewPassword = Request.form("reNewPassword")
UserName = Replace(UserName,"'","'")
if len(UserName)<1 or len(OldPassword)<1 or len(NewPassword)<1 or len(reNewPassword)<1 Then
alert("表单没有填写完整")
end If
if trim(NewPassword)<>trim(reNewPassword) Then
alert("密码与确认密码不一样")
end If
Sql0 = "select top 1 name,[password] from [useraccounts] where name = '"& UserName &"'"
set rs0 = conn.execute(Sql0)
if rs0.eof and rs0.bof Then
alert("用户名不存在")
Else
dbname = rs0("name")
dbpassword = rs0("password")
end If
cdbpassword = left(dbpassword,2) & md5(left(dbpassword,2) & OldPassword)
if trim(cdbpassword) <> trim(dbpassword) Then
alert("旧密码错误")
Else
rndstr = MyRandc(2) '两位随机字母
newdbpassword = rndstr & md5(rndstr & NewPassword)
sql2 = "update [useraccounts] set [password] = '"& newdbpassword &"' where name='"& UserName &"'"
conn.execute(sql2)
alert("密码已经更改,可能要几钟后才能生效")
end If
end If
function alert(x)
response.write ""
conn.close
set conn = Nothing
response.End
end Function
function MyRandc(n) '生成随机字符,n为字符的个数
thechr = ""
for i=1 to n
Randomize timer
zNum = cint(25*Rnd)
if zNum mod 2 = 0 Then
zNum = zNum + 97
Else
zNum = zNum + 65
end If
thechr = thechr & chr(zNum)
Next
MyRandc = thechr
end Function
%>
更改FTP (Serv-U) 密码 - hi.baidu.com/zwfec
这个是用sqlserver 2000 做的
1. 首先建立一个 servu的数据库 ( 你也可以建一个自己的数据名字 ) 将以下sql语句在这个库里 的"查询分析器"里运行, 这个库里就增加了serv-u所需要的表和字段...
创建su的数据库的表的sql语句:
Create TABLE [groupaccounts] (
[id] int IDENTITY (1,1) PRIMARY KEY,
[Index] int Default 0,
[Name] nVarChar(50) default '',
[Notes] nVarChar(255) default ''
)
Create INDEX [Name] on [groupaccounts]([Name] )
Create TABLE [groupdiraccess] (
[id] int IDENTITY PRIMARY KEY,
[Access] nVarChar(255) default '',
[Index] int Default 0,
[Name] nVarChar(50) default ''
)
Create INDEX [Name] on [groupdiraccess]([Name] )
Create TABLE [groupipaccess] (
[id] int IDENTITY PRIMARY KEY,
[Access] nVarChar(255) default '',
[Index] int Default 0,
[Name] nVarChar(50) default ''
)
Create INDEX [Name] on [groupipaccess]([Name] )
Create TABLE [useraccounts] (
[id] int IDENTITY PRIMARY KEY,
[Access] nVarChar(255) default '',
[AlwaysLogin] int Default 0,
[ChangePass] int Default 0,
[Disable] int Default 0,
[Expirationtype] int Default 0,
[Expiration] datetime Default '1980-1-1',
[Groups] nVarChar(50) default '',
[HideHidden] int Default 0,
[HomeDir] nVarChar(100) default '',
[idleTimeOut] int Default 0,
[LogMesfile] nVarChar(100) default '',
[MaxIp] int Default -1,
[MaxSpeedDown] decimal Default 0,
[MaxSpeedUp] decimal Default 0,
[MaxUsers] int Default -1,
[Name] nVarChar(50) default '',
[Needsecure] int Default 0,
[Notes] nVarChar(255) default '',
[PassType] int Default 0,
[Password] nVarChar(50) default '',
[Privilege] int Default 0,
[QuotaCurrent] decimal Default 0,
[QuotaEnable] int Default 0,
[QuotaMax] decimal Default 0,
[RatioCredit] decimal Default 0,
[RatioDown] int Default 0,
[RatioType] int Default 0,
[RatioUP] int Default 0,
[RelPaths] int Default 0,
[SessionTimeOut] int Default 0,
[SkeyValues] nVarChar(50) default '',
[dacl] [char] (10) default NULL
)
Create INDEX [Name] on [useraccounts]([Name] )
Create TABLE [userdiraccess] (
[id] int IDENTITY PRIMARY KEY,
[Access] nVarChar(255) default '',
[Index] int Default 0,
[Name] nVarChar(50) default ''
)
Create INDEX [Name] on [userdiraccess]([Name] )
Create TABLE [useripaccess] (
[id] int IDENTITY PRIMARY KEY,
[Access] nVarChar(255) default '',
[Index] int Default 0,
[Name] nVarChar(50) default ''
)
Create INDEX [Name] on [useripaccess]([Name] )
2. 好了, 库已经建好了!
现在配置ODBC数据源
这里的数据源名称为ServU
(1). 如果你在数据库中设置了该数据库用户的话, 就在这里填写你的用户名和密码就可以了(2). 如果没有设置的话, 就用"使用网络登录ID的windows NT 验证" 这个选项, 这样, 就可以用默认的sa管理员进入了, 要是你的sa用户设置的密码, 还是要用(1)
的,2. 在serv-u 建立一个域, 当设置到下面这个界面时:这里选择用 "ODBC 数据库" 存储.. 其它的用默认设置就ok了设置完之后你会发现这个新建的域是打了红线的, 这说明这个域还没有配置好.到serv-u的安装目录下, 找到 ServUDaemon.ini 文件会找到以下内容:CacheTTL=60
ODBCSource=||
ODBCTables=|||||
ODBCColumns=||||||||||||||||||||||||||||||||将其改为:Serv-U中ServUDaemon.ini 的配置:CacheTTL=60
ODBCSource=ServU|tt|5034
ODBCTables=useraccounts|groupaccounts|userdiraccess|groupdiraccess|useripaccess|groupipaccess
ODBCColumns=Name|Password|SkeyValues|HomeDir|LogMesfile|Access|Disable|Needsecure|RelPaths|HideHidden|
AlwaysLogin|ChangePass|QuotaEnable|MaxIp|MaxSpeedUp|MaxSpeedDown|MaxUsers|idleTimeOut|SessionTimeOut|R
atioUP|RatioDown|RatioCredit|QuotaCurrent|QuotaMax|Expiration|Privilege|PassType|RatioType|Groups|Note
s|Index|dacl|
保存说明一下:ODBCSource=ServU|tt|5034 : 意为: ODBCSource=数据源名称|数据库登录名|密码(因为是加过密的, 可以在serv-U中改)
3. 启动serv_u服务 打开你会看到: 这里你可以更改你的数据库的密码, 如果中的红线去掉了, 说明你的设置正确了,数据库已经连好了, 添加用户, 会发现用户已经添加到了数据库中了...总算写完了, 不明白的留言吧...4. 下面说一下, 在网页中修改ftp用户的密码的一个简单例子:index.asp
<%
dim act,UserName,OldPassword,NewPassword,reNewPassword
act = Request.form("act")
if act = "update" Then
UserName = Request.form("UserName")
OldPassword = Request.form("OldPassword")
NewPassword = Request.form("NewPassword")
reNewPassword = Request.form("reNewPassword")
UserName = Replace(UserName,"'","'")
if len(UserName)<1 or len(OldPassword)<1 or len(NewPassword)<1 or len(reNewPassword)<1 Then
alert("表单没有填写完整")
end If
if trim(NewPassword)<>trim(reNewPassword) Then
alert("密码与确认密码不一样")
end If
Sql0 = "select top 1 name,[password] from [useraccounts] where name = '"& UserName &"'"
set rs0 = conn.execute(Sql0)
if rs0.eof and rs0.bof Then
alert("用户名不存在")
Else
dbname = rs0("name")
dbpassword = rs0("password")
end If
cdbpassword = left(dbpassword,2) & md5(left(dbpassword,2) & OldPassword)
if trim(cdbpassword) <> trim(dbpassword) Then
alert("旧密码错误")
Else
rndstr = MyRandc(2) '两位随机字母
newdbpassword = rndstr & md5(rndstr & NewPassword)
sql2 = "update [useraccounts] set [password] = '"& newdbpassword &"' where name='"& UserName &"'"
conn.execute(sql2)
alert("密码已经更改,可能要几钟后才能生效")
end If
end If
function alert(x)
response.write ""
conn.close
set conn = Nothing
response.End
end Function
function MyRandc(n) '生成随机字符,n为字符的个数
thechr = ""
for i=1 to n
Randomize timer
zNum = cint(25*Rnd)
if zNum mod 2 = 0 Then
zNum = zNum + 97
Else
zNum = zNum + 65
end If
thechr = thechr & chr(zNum)
Next
MyRandc = thechr
end Function
%>
[本日志由 wang 于 2009-10-22 03:55 PM 编辑]
上一篇: asp开发学校OA项目中常用到知识点(7)FTP下一篇: 用PHP实现Ftp用户的在线管理
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:
评论: 0 | 引用: 0 | 查看次数: 4287
发表评论