首页
关于我们
服务项目
作品展示
服务支持
联系我们
友情链接
网站地图
 您当前位置:网络学院 -> 编程开发系-> 编程开发-> Asp教程
用asp制作虚拟主机管理系统
作者:admin 来源:IT网络学院
日期: 2008-3-28
站内搜索
文章页数:[1] 

前言

打算做虚拟主机业务。
网上找了一些虚拟主机的管理系统,没什么用,基本上都是数据库操作,很少有对FTP、IIS、MAIL操作的考虑了半天 ,还是自己写一个算了!

第一部分    虚拟主机管理系统规划

程序需要的功能有:
(1)订单提交方式多样:非会员可以直接提交产品订单,实时开通产品可以定义为手工开通。
(2)试用时间自由设定:可以针对某一具体产品设定试用时间,以天为单位。
(3)管理界面操作简化:比其它同类产品而言,该系统操作界面灵活,特别体现在财务上。
(4)域名接口选择更多:可以同时容纳多个域名实时注册管理接口。
(4)独有产品赠送功能:每一产品可以定义最多三个赠送品,如买主机送域名送邮局。
(5)独有套餐定义功能:可以定义5个产品以内的任意组合套餐。
(6)系统查询功能强大:管理员后台拥有众多查询功能,能迅速定位到所需记录上。
(7)代理系统无限开设:利用系统递归,可以开设无限级别的下级代理系统。
(8)支持后台在线重启服务器
系统模块可分为:
(1)顶级域名实时注册管理模块
(2)虚拟主机实时开设管理模块
(3)企业邮局实时开设管理模块
(4)MSSQL数据库开设管理模块
(5)非实时产品的订单提交模块(包括中文域名、通用网址、网站推广、租用托管、网站建设)
(6)财务管理模块
(7)日志查询模块(包括订单查询、操作查询以及登录查询)
(8)会员管理模块
(9)系统设置模块
(10)服务器重要服务重启模块(包括FTP/SMTP/POP3/IIS/DNS/MSSQL等服务重启)
(11)信息通讯管理(包括行业新闻发布管理、本站通知发布管理、以及邮件自动发送模版)
(12)英文域名、虚拟主机、企业邮局以及MSSQL具备独立的控制面板

一、技术难点
分析完整个系统的功能以后,我们来看一下关键的技术难点:
(1)在线实时开通FTP帐号;
(2)在线实时开通虚拟站点;
(3)在线实时开通EMAIL帐号;
(4)操作IIS/MSSQL/FTP/MAIL系统的启动、停止;

    除以上难点以外,其他的功能无非就是简单的数据库录入、查询、修改、删除操作,所以,只要解决以上难点,系统即实现基本功能。

二、解决方案
(1)在线实时开通FTP帐号:
    在这里,我们使用的FTP服务器端系统为Serv-U 6.0版,通过改写ServUDaemon.ini文件来增加、删除、修改用户。以下是增加FTP用户的原代码:
<%
'**************************************************
'* 原作者:awaysrain(绝对零度) *
'* 完成时间:2003-10-10 *
'* 修改时间:2005-01-11 *
'* 测试环境:WIN2000SERVER,SERV-U 6.0beta版 *
'**************************************************
Dim iniPath,iniFileName,iniStr,tmpStr,n
Dim userName,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:\Program Files\Serv-U" 'ini文件的路径
iniFileName = "ServUDaemon.ini" 'ini的文件名

Set fso=Server.CreateObject("Scripting.FileSystemObject")
Set ServUIni = fso.OpenTextFile(iniPath & "\" & iniFileName,1,false)

iniStr = ""
n = 0
addedUserList = false

Set tf = fso.CreateTextFile(iniPath & "\" & iniFileName & "._awaysrain.tmp", True)
'生成新的临时INI文件

Do While not ServUIni.AtEndOfStream
tmpStr = ServUIni.ReadLine

If Instr("awaysrain||" & tmpStr,"awaysrain||User")>0 Then
'记录用户原来的数量
n = n+1
End If

If Instr("awaysrain||" & tmpStr,"awaysrain||[USER=")>0 and not addedUserList Then
'往用户列表的部分添加现在的用户
n = n +1
tf.WriteLine("User" & n & "=" & userName & "|1|0")
addedUserList = true
End If
tf.WriteLine(tmpStr)
Loop
ServUIni.Close

'添加新用户的信息,具体内容可以在SERV-U中新建用户并对照INI文件

tf.WriteLine("[USER=" & userName & "|1]") '用户名
tf.WriteLine("Password=" & passWord) '密码
tf.WriteLine("HomeDir=D:\temp") '主目录
tf.WriteLine("RelPaths=1") '是否锁定用户于主目录
tf.WriteLine("MaxUsersLoginPerIP=1") '相同IP同时登录数
tf.WriteLine("SpeedLimitDown=102400") '最大下载速度
tf.WriteLine("TimeOut=600") '空闲超时时间(秒)
tf.WriteLine("Access1=D:\Temp|RLP") '可访问目录,可以不是一个,比如 'Access2=E:\Temp1|RLP'

tf.Close
'--------------------备份原来的INI文件--------------------------
Set f1 = fso.GetFile(iniPath & "\" & iniFileName)
f1.Copy (iniPath & "\" & iniFileName & "._awaysrain.bak")
f1.Delete
'--------------------把生成的临时INI文件改为正式的INI--------------------------
Set f1 = fso.GetFile(iniPath & "\" & iniFileName & "._awaysrain.tmp")
f1.Copy (iniPath & "\" & iniFileName)
f1.Delete

Set fso = nothing
%>

    这里我对原作者的程序进行了一点修改,把原有的对密码的加密去了,这样,存在INI文件中的密码是直接看见的,为什么要这样呢……因为6.0和4.2的加密算法好象不大一样(如果有知道加密算法的朋友请告诉我),而且,我们现在做虚拟主机管理系统的重点也不在这里,所以把这一部分舍去了。此处的SERV-U的设置有以下几点需要注意的:
   1 必须已经有一个域,且有至少一个用户存在的情况下,才能成功。
   2 因为去除了对密码的加密算法,所以在域的设置里的高级选项中的“将密码存储于加密的窗体中”选项去除。

(2)在线实时开通虚拟站点:
    为了将来能满足域名转向功能,所以,我们这里要求在线实时开通“虚拟站点”,而不是开通“虚拟目录”,目录是不能控制转向的。
    网上找了一些资料可以建立虚拟站点的,可是都失败了……不知道为什么,比如通过“ADSI修改IIS信息”,不行,提示“权限不够”。后来查了些资料,发现基本上都是通过c:\Inetpub\adminscript下的VBS脚本来实现对IIS的管理的,我通过ASP来调用时,出现了权限不够的问题,所有就换个思路,通过组件来调用这些脚本来控制IIS。
    首先先建立一个VB的组件:
    一、建立一个ActiveX DLL工程
    二、更改工程名ServerShell
    三、更改类名:Cmd
    四、修改类代码:
        Public Function ServerCmd(strCMD)
            Shell strCMD, vbHide
            '就这么简单就行了!
        End Function
    五、生成并注册DLL文件

然后在ASP中调用这个组件
<%
set CMD = server.createobject("ServerShell.Cmd")
CMD.ServerCMD("cmd.exe /c C:\Inetpub\AdminScripts\mkw3site -r ""e:\inetpub"" -c ""db"" -o 88 -i 192.168.0.3 -h db -t ""testwebSite""")
'创建虚拟 Web 站点
'要创建虚拟 Web 站点,请在命令提示符下键入以下命令:
'Mkw3site -r 根目录 驱动器盘符:\文件夹名 -t 新服务器名 -h 主机名 www.我的新 Web 站点.com
%>

OK,现在可以通过“Internet 服务管理器”发现已经增加了一个testwebSite的虚拟站点了,这里对Adminscript下的脚本不做其他的解释了,有兴趣的朋友可以参考以下站点:
从命令提示符执行 IIS 中的管理任务 或者 点击到百度搜索

另外,这里事实上还有一个简单的办法,不需要经过组件一样能达到效果:
<%
Set Shell = Server.CreateObject("WScript.Shell")
cmd = "cmd.exe /c C:\Inetpub\AdminScripts\mkw3site -r ""e:\inetpub"" -c ""db"" -o 88 -i 192.168.0.3 -h db -t ""testwebSite"""
Shell.Run cmd,1, True
%>
因为有些服务器会把WSCRIPT对象禁止掉,所以就无法正常用了。

===============================================
事实上在线开通FTP还有更简单的方式,自从Serv-U5以后,它支持使用数据库来存这些信息,具体的数据库模板可以到它的官方网上去下载一个,配好数据源后,你要改FTP帐号的信息,只要像平时那些数据库操作一样的.
Serv-U5的加密方式,就是那上面写的那个方式:先随机取两个字母,然后,把这两个字母和以后每位密码相连,分别作MD5加密,取加密后结果的前两位,再和前两个随机字母串回起来.就得到了加密结果.
===============================================

文章页数:[1] 
放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·ASP生成静态Html文件技术杂谈
·ASP中实现小偷程序的原理和简单示例
·ASP六大对象介绍
·ASP开发中存储过程应用全接触
·如何把ASP编写成DLL
·用ASP+CSS实现随机背景
·看人家用使用InstallShield制作ASP安装程序
·ASP正则表达式详解
·使用ADO.net将数据导出到Excel并提供下载
·破解网站发布系统 ASP生成静态页面方法
最新文章
·用asp制作虚拟主机管理系统
·在ASP中轻松实现记录集分页显示
·在ASP中访问和更新Cookies集合
·ASP.NET中实现Flash与.NET的紧密集成
·解析ASP的Application和Session对象
·[asp]让你知道codepage的重要,关于多语言编码
·ASP中实现小偷程序的原理和简单示例
·ASP程序中使用断开的数据记录集
·利用ASP发送和接收XML数据的处理方法
·ASP开发中存储过程应用全接触
相关主题
版权申明:除部分特别声明不要转载,或者授权本站独家播发的文章外,大家可以自由转载本站的原创文章,但原作者和来自本站的链接必须保留(非本站原创的,按照原来自一节,自行链接)。文章版权归本站和作者共有。
转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去本站水印。
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
发表评论  打印  刷新  推荐给朋友  返回顶部  关闭

网上大名: