<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[gOxiA=苏繁=SuFan Blog]]></title> 
<link>https://maytide.net/index.php</link> 
<description><![CDATA[gOxiA,苏繁,sufan,Microsoft MVP]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[gOxiA=苏繁=SuFan Blog]]></copyright>
<item>
<link>https://maytide.net/read.php/834.htm</link>
<title><![CDATA[摘录“ASP + Serv-u 实现FTP的代码”]]></title> 
<author>gOxiA &lt;sufan_cn@msn.com&gt;</author>
<category><![CDATA[网络编程]]></category>
<pubDate>Wed, 04 Aug 2004 09:38:14 +0000</pubDate> 
<guid>https://maytide.net/read.php/834.htm</guid> 
<description>
<![CDATA[ 
	“ASP + Serv-u 实现FTP的代码”awaysrain [原作]<div class="code">&lt;!--#include file=&quot;md5.asp&quot;--&gt; <br />&lt;% <br />'************************************************** <br />'* 作者：awaysrain(绝对零度) * <br />'* 完成时间：2003-10-10 * <br />'* 测试环境：WIN2000SERVER，SERV-U 4.2-beta版 * <br />'************************************************** <br />Dim iniPath,iniFileName,iniStr,tmpStr,n <br />Dim userName,passWord,tmp <br /><br />userName = &quot;myfso222&quot; '用户名 <br />passWord = &quot;awaysrain&quot; '密码 <br />tmp = &quot;ai&quot; '随机生成两个小写字母，（应该是随机生成的，但是我这里省略了） <br />passWord = tmp &amp; UCase(md5(passWord)) '密码，是MD5加密过的，用动网的MD5加密程序，具体算法是随机生成两位小写字母，然后和你的密码连接后进行MD5加密，把随机生成的密码和MD5加密后的结果作为密码存放，举个例子来说比如下面的awaysrain用户，我的密码为awaysrain先随机生成两位小写字母ai，和我的密码awaysrain连接得到aiawaysrain把aiawaysrain进行MD5加密得到9118BFD94A9CE9CF37AE5BAA947ED596把随机生成两位小写字母ai和MD5加密后的结果9118BFD94A9CE9CF37AE5BAA947ED596连接得到密码ai9118BFD94A9CE9CF37AE5BAA947ED596 <br /><br />iniPath=&quot;D:\Program Files\Serv-U&quot; 'ini文件的路径 <br />iniFileName = &quot;ServUDaemon.ini&quot; 'ini的文件名 <br /><br />Set fso=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;) <br />Set ServUIni = fso.OpenTextFile(iniPath &amp; &quot;\&quot; &amp; iniFileName,1,false) <br /><br />iniStr = &quot;&quot; <br />n = 0 <br />addedUserList = false <br /><br />Set tf = fso.CreateTextFile(iniPath &amp; &quot;\&quot; &amp; iniFileName &amp; &quot;._awaysrain.tmp&quot;, True) <br />'生成新的临时INI文件 <br /><br />Do While not ServUIni.AtEndOfStream <br />tmpStr = ServUIni.ReadLine <br /><br />If Instr(&quot;awaysrain||&quot; &amp; tmpStr,&quot;awaysrain||User&quot;)&gt;0 Then <br />'记录用户原来的数量 <br />n = n+1 <br />End If <br /><br />If Instr(&quot;awaysrain||&quot; &amp; tmpStr,&quot;awaysrain||[USER=&quot;)&gt;0 and not addedUserList Then <br />'往用户列表的部分添加现在的用户 <br />n = n +1 <br />tf.WriteLine(&quot;User&quot; &amp; n &amp; &quot;=&quot; &amp; userName &amp; &quot;|1|0&quot;) <br />addedUserList = true <br />End If <br />tf.WriteLine(tmpStr) <br />Loop <br />ServUIni.Close <br /><br />'添加新用户的信息，具体内容可以在SERV-U中新建用户并对照INI文件 <br /><br />tf.WriteLine(&quot;[USER=&quot; &amp; userName &amp; &quot;|1]&quot;) '用户名 <br />tf.WriteLine(&quot;Password=&quot; &amp; passWord) '密码 <br />tf.WriteLine(&quot;HomeDir=e:\temp&quot;) '主目录 <br />tf.WriteLine(&quot;RelPaths=1&quot;) '是否锁定用户于主目录 <br />tf.WriteLine(&quot;MaxUsersLoginPerIP=1&quot;) '相同IP同时登录数 <br />tf.WriteLine(&quot;SpeedLimitDown=102400&quot;) '最大下载速度 <br />tf.WriteLine(&quot;TimeOut=600&quot;) '空闲超时时间（秒） <br />tf.WriteLine(&quot;Access1=E:\Temp|RLP&quot;) '可访问目录,可以不是一个，比如 'Access2=E:\Temp1|RLP' <br /><br />tf.Close <br />'--------------------备份原来的INI文件-------------------------- <br />Set f1 = fso.GetFile(iniPath &amp; &quot;\&quot; &amp; iniFileName) <br />f1.Copy (iniPath &amp; &quot;\&quot; &amp; iniFileName &amp; &quot;._awaysrain.bak&quot;) <br />f1.Delete <br />'--------------------把生成的临时INI文件改为正式的INI-------------------------- <br />Set f1 = fso.GetFile(iniPath &amp; &quot;\&quot; &amp; iniFileName &amp; &quot;._awaysrain.tmp&quot;) <br />f1.Copy (iniPath &amp; &quot;\&quot; &amp; iniFileName) <br />f1.Delete <br /><br />Set fso = nothing <br />%&gt;<br /><!--#include file=\"md5.asp\"--><!--<br/>'************************************************** <br/>'* 作者：awaysrain(绝对零度) * <br/>'* 完成时间：2003-10-10 * <br/>'* 测试环境：WIN2000SERVER，SERV-U 4.2-beta版 * <br/>'************************************************** <br/>Dim iniPath,iniFileName,iniStr,tmpStr,n <br/>Dim userName,passWord,tmp <br/><br/>userName = \"myfso222\" '用户名 <br/>passWord = \"awaysrain\" '密码 <br/>tmp = \"ai\" '随机生成两个小写字母，（应该是随机生成的，但是我这里省略了） <br/>passWord = tmp & UCase(md5(passWord)) '密码，是MD5加密过的，用动网的MD5加密程序，具体算法是随机生成两位小写字母，然后和你的密码连接后进行MD5加密，把随机生成的密码和MD5加密后的结果作为密码存放，举个例子来说比如下面的awaysrain用户，我的密码为awaysrain先随机生成两位小写字母ai，和我的密码awaysrain连接得到aiawaysrain把aiawaysrain进行MD5加密得到9118BFD94A9CE9CF37AE5BAA947ED596把随机生成两位小写字母ai和MD5加密后的结果9118BFD94A9CE9CF37AE5BAA947ED596连接得到密码ai9118BFD94A9CE9CF37AE5BAA947ED596 <br/><br/>iniPath=\"D:\Program Files\Serv-U\" 'ini文件的路径 <br/>iniFileName = \"ServUDaemon.ini\" 'ini的文件名 <br/><br/>Set fso=Server.CreateObject(\"Scripting.FileSystemObject\") <br/>Set ServUIni = fso.OpenTextFile(iniPath & \"\\" & iniFileName,1,false) <br/><br/>iniStr = \"\" <br/>n = 0 <br/>addedUserList = false <br/><br/>Set tf = fso.CreateTextFile(iniPath & \"\\" & iniFileName & \"._awaysrain.tmp\", True) <br/>'生成新的临时INI文件 <br/><br/>Do While not ServUIni.AtEndOfStream <br/>tmpStr = ServUIni.ReadLine <br/><br/>If Instr(\"awaysrain||\" & tmpStr,\"awaysrain||User\")>0 Then <br/>'记录用户原来的数量 <br/>n = n+1 <br/>End If <br/><br/>If Instr(\"awaysrain||\" & tmpStr,\"awaysrain||[USER=\")>0 and not addedUserList Then <br/>'往用户列表的部分添加现在的用户 <br/>n = n +1 <br/>tf.WriteLine(\"User\" & n & \"=\" & userName & \"|1|0\") <br/>addedUserList = true <br/>End If <br/>tf.WriteLine(tmpStr) <br/>Loop <br/>ServUIni.Close <br/><br/>'添加新用户的信息，具体内容可以在SERV-U中新建用户并对照INI文件 <br/><br/>tf.WriteLine(\"[USER=\" & userName & \"|1]\") '用户名 <br/>tf.WriteLine(\"Password=\" & passWord) '密码 <br/>tf.WriteLine(\"HomeDir=e:\temp\") '主目录 <br/>tf.WriteLine(\"RelPaths=1\") '是否锁定用户于主目录 <br/>tf.WriteLine(\"MaxUsersLoginPerIP=1\") '相同IP同时登录数 <br/>tf.WriteLine(\"SpeedLimitDown=102400\") '最大下载速度 <br/>tf.WriteLine(\"TimeOut=600\") '空闲超时时间（秒） <br/>tf.WriteLine(\"Access1=E:\Temp|RLP\") '可访问目录,可以不是一个，比如 'Access2=E:\Temp1|RLP' <br/><br/>tf.Close <br/>'--------------------备份原来的INI文件-------------------------- <br/>Set f1 = fso.GetFile(iniPath & \"\\" & iniFileName) <br/>f1.Copy (iniPath & \"\\" & iniFileName & \"._awaysrain.bak\") <br/>f1.Delete <br/>'--------------------把生成的临时INI文件改为正式的INI-------------------------- <br/>Set f1 = fso.GetFile(iniPath & \"\\" & iniFileName & \"._awaysrain.tmp\") <br/>f1.Copy (iniPath & \"\\" & iniFileName) <br/>f1.Delete <br/><br/>Set fso = nothing <br/>--></div>注：以上代码假设ServUDaemon.ini中的格式只有一个域并已经至少有一个用户 <span style="color: blue;">测试的ServUDaemon.ini文件结构如下：</span> ================================== [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 <span style="color: blue;">生成后的文件结构如下</span> ================================== [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 
]]>
</description>
</item>
</channel>
</rss>