ASP + servu实现FTP功能的代码示例.docx
- 文档编号:26159896
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:17
- 大小:18.49KB
ASP + servu实现FTP功能的代码示例.docx
《ASP + servu实现FTP功能的代码示例.docx》由会员分享,可在线阅读,更多相关《ASP + servu实现FTP功能的代码示例.docx(17页珍藏版)》请在冰豆网上搜索。
ASP+servu实现FTP功能的代码示例
--#includefile="md5.asp"-->
<%
'ASP+Serv-U实现FTP的代码
'**************************************************
'*作者:
awaysrain(绝对零度)*
'*完成时间:
2003-10-10*
'*测试环境:
WIN2000SERVER,SERV-U4.2-beta版*
'**************************************************
DiminiPath,iniFileName,iniStr,tmpStr,n
DimuserName,passWord,tmp
userName="myfso222"'用户名
passWord="awaysrain"'密码
tmp="ai"'随机生成两个小写字母,(应该是随机生成的,但是我这里省略了)
passWord=tmp&UCase(md5(passWord))'密码,是MD5加密过的,用动网的MD5加密程序,具体算法是随机生成两位小写字母,然后和你的密码连接后进行MD5加密,把随机生成的密码和MD5加密后的结果作为密码存放,举个例子来说比如下面的awaysrain用户,我的密码为awaysrain先随机生成两位小写字母ai,和我的密码awaysrain连接得到aiawaysrain把aiawaysrain进行MD5加密得到9118BFD94A9CE9CF37AE5BAA947ED596把随机生成两位小写字母ai和MD5加密后的结果9118BFD94A9CE9CF37AE5BAA947ED596连接得到密码ai9118BFD94A9CE9CF37AE5BAA947ED596
iniPath="D:
\ProgramFiles\Serv-U"'ini文件的路径
iniFileName="ServUDaemon.ini"'ini的文件名
Setfso=Server.CreateObject("Scripting.FileSystemObject")
SetServUIni=fso.OpenTextFile(iniPath&"\"&iniFileName,1,false)
iniStr=""
n=0
addedUserList=false
Settf=fso.CreateTextFile(iniPath&"\"&iniFileName&"._awaysrain.tmp",True)
'生成新的临时INI文件
DoWhilenotServUIni.AtEndOfStream
tmpStr=ServUIni.ReadLine
IfInstr("awaysrain||"&tmpStr,"awaysrain||User")>0Then
'记录用户原来的数量
n=n+1
EndIf
IfInstr("awaysrain||"&tmpStr,"awaysrain||[USER=")>0andnotaddedUserListThen
'往用户列表的部分添加现在的用户
n=n+1
tf.WriteLine("User"&n&"="&userName&"|1|0")
addedUserList=true
EndIf
tf.WriteLine(tmpStr)
Loop
ServUIni.Close
'添加新用户的信息,具体内容可以在SERV-U中新建用户并对照INI文件
tf.WriteLine("[USER="&userName&"|1]")'用户名
tf.WriteLine("Password="&passWord)'密码
tf.WriteLine("HomeDir=e:
\temp")'主目录
tf.WriteLine("RelPaths=1")'是否锁定用户于主目录
tf.WriteLine("MaxUsersLoginPerIP=1")'相同IP同时登录数
tf.WriteLine("SpeedLimitDown=102400")'最大下载速度
tf.WriteLine("TimeOut=600")'空闲超时时间(秒)
tf.WriteLine("Access1=E:
\Temp|RLP")'可访问目录,可以不是一个,比如'Access2=E:
\Temp1|RLP'
tf.Close
'--------------------备份原来的INI文件--------------------------
Setf1=fso.GetFile(iniPath&"\"&iniFileName)
f1.Copy(iniPath&"\"&iniFileName&"._awaysrain.bak")
f1.Delete
'--------------------把生成的临时INI文件改为正式的INI--------------------------
Setf1=fso.GetFile(iniPath&"\"&iniFileName&"._awaysrain.tmp")
f1.Copy(iniPath&"\"&iniFileName)
f1.Delete
Setfso=nothing
%>
注:
以上代码假设ServUDaemon.ini中的格式只有一个域并已经至少有一个用户
测试的ServUDaemon.ini文件结构如下:
==================================
[Domain1]
User1=222|1|0
User2=myfso111|1|0
[USER=222|1]
Password=hwB1ECF70CDAF5DAE2B981AE394EEFCDC0
HomeDir=E:
\Temp
RelPaths=1
TimeOut=600
Access1=E:
\Temp|RLP
[USER=myfso111|1]
Password=ai9118BFD94A9CE9CF37AE5BAA947ED596
HomeDir=e:
\temp
RelPaths=1
TimeOut=600
Access1=E:
\Temp|RLP
生成后的文件结构如下
==================================
[Domain1]
User1=222|1|0
User2=myfso111|1|0
User3=myfso222|1|0
[USER=222|1]
Password=hwB1ECF70CDAF5DAE2B981AE394EEFCDC0
HomeDir=E:
\Temp
RelPaths=1
TimeOut=600
Access1=E:
\Temp|RLP
[USER=myfso111|1]
Password=ai9118BFD94A9CE9CF37AE5BAA947ED596
HomeDir=e:
\temp
RelPaths=1
TimeOut=600
Access1=E:
\Temp|RLP
[USER=myfso222|1]
Password=ai9118BFD94A9CE9CF37AE5BAA947ED596
HomeDir=e:
\temp
RelPaths=1
TimeOut=600
Access1=E:
\Temp|RLP
附MD5.ASP
==========================================
<%
PrivateConstBITS_TO_A_BYTE=8
PrivateConstBYTES_TO_A_WORD=4
PrivateConstBITS_TO_A_WORD=32
Privatem_lOnBits(30)
Privatem_l2Power(30)
PrivateFunctionLShift(lValue,iShiftBits)
IfiShiftBits=0Then
LShift=lValue
ExitFunction
ElseIfiShiftBits=31Then
IflValueAnd1Then
LShift=&H80000000
Else
LShift=0
EndIf
ExitFunction
ElseIfiShiftBits<0OriShiftBits>31Then
Err.Raise6
EndIf
If(lValueAndm_l2Power(31-iShiftBits))Then
LShift=((lValueAndm_lOnBits(31-(iShiftBits+1)))*m_l2Power(iShiftBits))Or&H80000000
Else
LShift=((lValueAndm_lOnBits(31-iShiftBits))*m_l2Power(iShiftBits))
EndIf
EndFunction
PrivateFunctionRShift(lValue,iShiftBits)
IfiShiftBits=0Then
RShift=lValue
ExitFunction
ElseIfiShiftBits=31Then
IflValueAnd&H80000000Then
RShift=1
Else
RShift=0
EndIf
ExitFunction
ElseIfiShiftBits<0OriShiftBits>31Then
Err.Raise6
EndIf
RShift=(lValueAnd&H7FFFFFFE)\m_l2Power(iShiftBits)
If(lValueAnd&H80000000)Then
RShift=(RShiftOr(&H40000000\m_l2Power(iShiftBits-1)))
EndIf
EndFunction
PrivateFunctionRotateLeft(lValue,iShiftBits)
RotateLeft=LShift(lValue,iShiftBits)OrRShift(lValue,(32-iShiftBits))
EndFunction
PrivateFunctionAddUnsigned(lX,lY)
DimlX4
DimlY4
DimlX8
DimlY8
DimlResult
lX8=lXAnd&H80000000
lY8=lYAnd&H80000000
lX4=lXAnd&H40000000
lY4=lYAnd&H40000000
lResult=(lXAnd&H3FFFFFFF)+(lYAnd&H3FFFFFFF)
IflX4AndlY4Then
lResult=lResultXor&H80000000XorlX8XorlY8
ElseIflX4OrlY4Then
IflResultAnd&H40000000Then
lResult=lResultXor&HC0000000XorlX8XorlY8
Else
lResult=lResultXor&H40000000XorlX8XorlY8
EndIf
Else
lResult=lResultXorlX8XorlY8
EndIf
AddUnsigned=lResult
EndFunction
PrivateFunctionmd5_F(x,y,z)
md5_F=(xAndy)Or((Notx)Andz)
EndFunction
PrivateFunctionmd5_G(x,y,z)
md5_G=(xAndz)Or(yAnd(Notz))
EndFunction
PrivateFunctionmd5_H(x,y,z)
md5_H=(xXoryXorz)
EndFunction
PrivateFunctionmd5_I(x,y,z)
md5_I=(yXor(xOr(Notz)))
EndFunction
PrivateSubmd5_FF(a,b,c,d,x,s,ac)
a=AddUnsigned(a,AddUnsigned(AddUnsigned(md5_F(b,c,d),x),ac))
a=RotateLeft(a,s)
a=AddUnsigned(a,b)
EndSub
PrivateSubmd5_GG(a,b,c,d,x,s,ac)
a=AddUnsigned(a,AddUnsigned(AddUnsigned(md5_G(b,c,d),x),ac))
a=RotateLeft(a,s)
a=AddUnsigned(a,b)
EndSub
PrivateSubmd5_HH(a,b,c,d,x,s,ac)
a=AddUnsigned(a,AddUnsigned(AddUnsigned(md5_H(b,c,d),x),ac))
a=RotateLeft(a,s)
a=AddUnsigned(a,b)
EndSub
PrivateSubmd5_II(a,b,c,d,x,s,ac)
a=AddUnsigned(a,AddUnsigned(AddUnsigned(md5_I(b,c,d),x),ac))
a=RotateLeft(a,s)
a=AddUnsigned(a,b)
EndSub
PrivateFunctionConvertToWordArray(sMessage)
DimlMessageLength
DimlNumberOfWords
DimlWordArray()
DimlBytePosition
DimlByteCount
DimlWordCount
ConstMODULUS_BITS=512
ConstCONGRUENT_BITS=448
lMessageLength=Len(sMessage)
lNumberOfWords=(((lMessageLength+((MODULUS_BITS-CONGRUENT_BITS)\BITS_TO_A_BYTE))\(MODULUS_BITS\BITS_TO_A_BYTE))+1)*(MODULUS_BITS\BITS_TO_A_WORD)
ReDimlWordArray(lNumberOfWords-1)
lBytePosition=0
lByteCount=0
DoUntillByteCount>=lMessageLength
lWordCount=lByteCount\BYTES_TO_A_WORD
lBytePosition=(lByteCountModBYTES_TO_A_WORD)*BITS_TO_A_BYTE
lWordArray(lWordCount)=lWordArray(lWordCount)OrLShift(Asc(Mid(sMessage,lByteCount+1,1)),lBytePosition)
lByteCount=lByteCount+1
Loop
lWordCount=lByteCount\BYTES_TO_A_WORD
lBytePosition=(lByteCountModBYTES_TO_A_WORD)*BITS_TO_A_BYTE
lWordArray(lWordCount)=lWordArray(lWordCount)OrLShift(&H80,lBytePosition)
lWordArray(lNumberOfWords-2)=LShift(lMessageLength,3)
lWordArray(lNumberOfWords-1)=RShift(lMessageLength,29)
ConvertToWordArray=lWordArray
EndFunction
PrivateFunctionWordToHex(lValue)
DimlByte
DimlCount
ForlCount=0To3
lByte=RShift(lValue,lCount*BITS_TO_A_BYTE)Andm_lOnBits(BITS_TO_A_BYTE-1)
WordToHex=WordToHex&Right("0"&Hex(lByte),2)
Next
EndFunction
PublicFunctionMD5(sMessage)
m_lOnBits(0)=CLng
(1)
m_lOnBits
(1)=CLng(3)
m_lOnBits
(2)=CLng(7)
m_lOnBits(3)=CLng(15)
m_lOnBits(4)=CLng(31)
m_lOnBits(5)=CLng(63)
m_lOnBits(6)=CLng(127)
m_lOnBits(7)=CLng(255)
m_lOnBits(8)=CLng(511)
m_lOnBits(9)=CLng(1023)
m_lOnBits(10)=CLng(2047)
m_lOnBits(11)=CLng(4095)
m_lOnBits(12)=CLng(8191)
m_lOnBits(13)=CLng(16383)
m_lOnBits(14)=CLng(32767)
m_lOnBits(15)=CLng(65535)
m_lOnBits(16)=CLng(131071)
m_lOnBits(17)=CLng(262143)
m_lOnBits(18)=CLng(524287)
m_lOnBits(19)=CLng(1048575)
m_lOnBits(20)=CLng(2097151)
m_lOnBits(21)=CLng(4194303)
m_lOnBits(22)=CLng(8388607)
m_lOnBits(23)=CLng(16777215)
m_lOnBits(24)=CLng(33554431)
m_lOnBits(25)=CLng(67108863)
m_lOnBits(26)=CLng(134217727)
m_lOnBits(27)=CLng(268435455)
m_lOnBits(28)=CLng(536870911)
m_lOnBits(29)=CLng(1073741823)
m_lOnBits(30)=CLng(2147483647)
m_l2Power(0)=CLng
(1)
m_l2Power
(1)=CLng
(2)
m_l2Power
(2)=CLng(4)
m_l2Power(3)=CLng(8)
m_l2Power(4)=CLng(16)
m_l2Power(5)=CLng(32)
m_l2Power(6)=CLng(64)
m_l2Power(7)=CLng(128)
m_l2Power(8)=CLng(256)
m_l2Power(9)=CLng(512)
m_l2Power(10)=CLng(1024)
m_l2Power(11)=CLng(2048)
m_l2Power(12)=CLng(4096)
m_l2Power(13)=CLng(8192)
m_l2Power(14)=CLng(16384)
m_l2Power(15)=CLng(32768)
m_l2Power(16)=CLng(65536)
m_l2Power(17)=CLng(131072)
m_l2Power(18)=CLng(262144)
m_l2Power(19)=CLng(524288)
m_l2Power(20)=CLng(1048576)
m_l2Power(21)=CLng(2097152)
m_l2Power(22)=CLng(4194304)
m_l2Power(23)=CLng(8388608)
m_l2Power(24)=CLng(16777216)
m_l2Power(25)=CLng(33554432)
m_l2Power(26)=CLng(67108864)
m_l2Power(27)=CLng(134217728)
m_l2Power(28)=CLng(268435456)
m_l2Power(29)=CLng(536870912)
m_l2Power(30)=CLng(1073741824)
Dimx
Dimk
DimAA
DimBB
DimCC
DimDD
Dima
Dimb
Dimc
Dimd
ConstS11=7
ConstS12=12
ConstS13=17
ConstS14=22
ConstS21=5
ConstS22=9
ConstS23=14
ConstS24=20
ConstS31=4
ConstS32=11
ConstS33=16
ConstS34=23
ConstS41=6
ConstS42=10
ConstS43=15
ConstS44=21
x=Conve
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ASP servu实现FTP功能的代码示例 servu 实现 FTP 功能 代码 示例