APP下载

基于ASP技术的学生作业FTP站点管理系统的实现

2009-01-08张志杰

中国教育信息化·高教职教 2009年12期

张志杰

摘要:笔者在多年从事机房管理的过程中,摸索出一套较好的数据盘还原方法。利用Serv-U支持ODBC数据库的功能,再使用ASP开发Web站点,来管理FTP站点,完成学生作业的保存与教师对学生作业的批阅功能。

关键词:系统盘还原 数据盘还原 ODBC数据库 ASP

中图分类号:TP393.18 文献标识码:B 文章编号:1673-8454(2009)23-0026-04

机房是学生的重要实践场所,保证计算机的完好率是机房管理的主要任务,为了完成这一任务,现在机房大多采用硬件还原技术。在设置硬盘还原参数时,如果只还原系统盘,数据盘上留存的数据给系统正常运行留下了安全隐患;如果系统盘与数据盘同时还原,学生的作业无法保存,特别是设计类课程,过程的重要性更不允许数据盘还原,管理人员往往处于两难境地。那么,有没有一个两全方案呢?笔者在多年从事机房管理的过程中,摸索出解决这一两难问题的方法。利用Serv-U支持ODBC数据库的功能,再使用ASP开发Web站点,来管理FTP站点,完成学生作业的保存与教师对学生作业的批阅功能。下文是该系统实现的方法介绍。

一、数据库结构

在SQL Server、Access、MySQL等支持ODBC的数据库管理系统中,建立一个名为FTP的数据库(本文采用SQL Server作为数据库平台),该数据库中主要的表与表结构如下:

1.用户帐号表(User_accounts)

用户帐号表(User_accounts)是Serv-U从数据库中读取的主要信息数据表,此表是本系统的核心数据表。具体内容如表1所示。

User_accounts表中关键字段介绍:

(1)Access(目录与访问规则)字段

该字段值是表示用户对目录的访问权限。格式是:目录名称、权限。

用户对目录的访问权限有R(读取)、W(写入)、A(附加)、M(修改)、E(执行——由于安全原因,所有帐号均不能开启此权限)、L(目录)列表、C(建立目录)、D(删除目录)、P(将权限继承给子目录)等9种权限。

例如:用户可访问的目录是h:ftpsj软件0611班张三20060101001。访问权限是:读取、写入、修改、列表、建立目录、删除目录、将权限继承给子目录。该字段的值就是h:ftpsj软件0611班张三20060101001|RWMLCDP

(2)HomeDir(用户可访问的主目录)字段

该字段值表示用户可访问的主目录,建议在设置用户目录时分三层来建立,第一层主目录,第二层为班级目录,第三层为用户目录。其结构如图1所示。

(3)Password(用户口令)字段

Serv-U密码加密算法为随机码与MD5 32 位加密。算法为随机产生2个字符,如ar。将ar+明文密码(如password)使用MD5加密,如MD5("arpassword"),生成密码后将所有小写字符变为大写,最前加上这两个随机字符"ar"+" 3F6D159FF468A70E54E209C3F556601C ",生成最终密码。

(4)QuotaMax(最大使用硬盘空间)字段

该字段是用来设置用户FTP的最大容量的,单位以字节(byte)。

(5)Type(用户类型)字段

Type字段是用来保存用户类型的,在学校一般用户类型有三类:学生、职工、教师。学生与职工只能使用查看自己的FTP信息;任课教师既能管理和使用自己的FTP数据,又能查看自己所带班级的FTP数据,这样任课教师就可以在任何时间、任何地点查阅学生的作业。

2.班级信息表

表2用于保存使用FTP的学生班级情况。

3.教师任课班级表

二、Serv-U的主要设置说明

1.企业版的Serv-U(4.1以上版本)才够支持ODBC。在Serv-U安装完成后,根据向导建立新的域MyFtp,并将Serv-U的域类型设置为“存储于ODBC数据库中”,如图2所示。

2.选择MyFtp在ODBC源名称框内输入ODBC数据源名称ftp。在ODBC帐号名文本框内输入数据库管理员用户名,在ODBC帐号密码文本框内输入数据库管理员口令。如图3所示。

3.退出Serv-U应用程序,并结束ServUDaemon.exe进程。

4.使用记事本打开Serv-U的配置文件ServUDaemon.ini。做如下修改:

ODBCSource=ftp|“数据库管理员帐号”、“数据库管理员口令”

ODBCTables=user_accounts|group_accounts|user_ access|group_access|user_IP_access|group_IP_access

ODBCColumns=user|password|skey|homedir||access|disable||relpaths|||changepass|quotaenable||||maxusers|||ratioup|ratiodown|ratiocredit|quotacurrent|quotamax|expiration|privilege|passtype|ratiotype|groups|notes|indexno

至此Serv-U设置完成。

三、编写用于管理Serv-U用户帐号的ASP站点

1.班级信息的添加

班级信息添加时重点要在服务器的硬盘上建立该班级学生存放作业的文件夹。主要代码如下:

<%

set conn=server.createobject("adodb.connection")

conn.open "driver={SQL Server};server=(LOCAL);database=FTP;uid=sa;pwd=;"

class_1=request.form("class1")

′从添加班级信息页面读取班级名称

dim asan_class_folder

asan_class_folder="F:ftpsj"&class;_1

′创建用户所在的目录文件夹

Set fso = CreateObject("Scripting.FileSystemObject")

if not fso.FolderExists(asan_class_folder) then

′检查文件夹是否存在

fso.createFolder(asan_class_folder)

end if

exec="select * from class"

set rs=server.createobject("adodb.recordset")

class_2="select * from class where class=′"&class;_1&"′"

rs.open class_2,conn,1,3

if rs.recordcount>0 then

response.write("")

else

rs.close

rs.open exec,conn,1,3

if class_1<>"" then

exec="insert into class(class) values(′"&class;_1&"′)"

conn.execute exec

response.write("")

else

response.write("")

rs.close

set rs=nothing

conn.close

set conn=nothing

end if

end if

2.学生信息的添加

学生信息的添加是学生作业FTP站点管理程序的重要工作,如何快速、准确地添加学生帐号信息,并进行相应的设置,是该系统成功与否的关键。笔者采用将EXCEL文档导入SQL数据表的方法,先将EXCEL文档上传至站点的“EXCEL”文件夹中,然后再将EXCEL文档的学生信息逐一添加到SQL数据库的User_accounts表中。具体实现方法如下:

(1)EXCEL文档结构

EXCEL文档的第一个工作表名称为“user_accounts”,有两个字段:xh(学号)、user_true(学生姓名),具体结构如图4所示。

(2)关键代码

′==========处理上传EXCEL文件=========

Set fso = CreateObject("Scripting.FileSystemObject")

fle_name=fso.FileExists(Server.MapPath("/") &"excel wwww.xls")

if fle_name then

Dim Connexcel,Driver,DBPath,Rs

′建立Connection对象

Set ConnExcel=Server.CreateObject("ADODB.Connection")

driver="driver={icrosoft EXCEL driver (*.xls)};dbq="&server.mappath;("..excelwwww.xls")

′调用Open方法EXCEL

Connexcel.Open driver

′注意表名一定要以下边这种格式“[表名$]"书写

set rs=server.createobject("adodb.recordset")

Sql="Select * From [User_accounts$] "

Rs.open sql,connexcel,1,1

Set ConnSQL=Server.CreateObject("ADODB.Connection")

connSQL.open "driver={SQL Server};server=(LOCAL);database=FTP;uid=sa;pwd=;"

set recor=server.createobject("adodb.recordset")

recor.open "select * from user_accounts where [user]=′"&trim;(rs("xh"))&"′",connSQL,1,1

if recor.recordcount>0 then

recor.close

response.write("")

response.end

else

recor.close

′===========写入数据库=========

do while not rs.eof

rndstr = MyRandc(2) ′两位随机字母

newdbpassword = rndstr & md5(rndstr & trim(rs("xh")))

‘MD5()函数将明码转换为MD5密码

asan_class_folder=user_folder&session;("class")&""&trim;(rs("user_true"))&trim;(rs("xh"))

′user_folder: ASP的全局变量,作业存放的主目录

′session("class"): html页面选择班级的值

′创建用户所在的目录文件夹。

If not fso.FolderExists(asan_class_folder) then

′′检查文件夹是否存在

fso.createFolder(asan_class_folder)

end if

′添加学生信息

exe="insert into User_accounts ([User],Access,HomeDir,user_true,class,class_id,password,type,skey,ratiotype,quotacurrent,quotaenable,QuotaMax) "& " values " &"(′"&rs;("xh")&"′,′"& user_folder&session;("class")&""&trim;(rs("user_true"))&trim;(rs("xh"))&ServUAccess;&"′,′"&user;_ folder&session;("class")&""&trim;(rs("user_true"))&trim;(rs("xh"))&"′,′"&trim;(rs("user_true"))&"′,′"&session;("class")&"′"&","&session;("class_id")&",′"&newdbpassword;&"′"&", ′学生′,′′,0,0,1,20971520)"

‘默认学生的FTP空间为20M

connSQL.Execute(exe)

rs.movenext

loop

Response.Redirect "query.asp"

rs.close()

set connSQL=nothing

set connEXcel=nothing

fso.DeleteFile(Server.MapPath("/") &"excelwwww.xls")

end if

end if

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

′==========处理上传EXCEL文件完成===========

3.任课教师FTP站点管理

任课教师帐号的添加可参考学生信息的添加,只要将字段“type”的值设置为“任课教师”即可。

任课教师通过Web站点登录后,可设置登录FTP站点查阅内容为自己的数据或所带班级的作业数据,该功能的实现只要修改教师用户的Access与HomeDir两个字段的值为相应的目录即可,限于篇幅这里不再叙述。

四、结束语

只要我们认真研究Serv-U的数据库结构,就可以使用ASP编程来实现对Serv-U建立的FTP站点全面管理,如FTP站点的注册、审批、计费等管理业务。笔者在近几年的使用过程中,每学期都有新功能的添加,为学院计算机教学提供了有力的技术保障。

参考文献:

[1]Serv-U的ODBC数据库做法[DB/OL].http://hi.baidu.com/my100du/blog/item/b1db1ad7f1a3bdd5a044df08.html.

[2]简析如何使用Serv-U的ODBC功能[DB/OL].http://www.51cto.com/art/200701/38695.htm.

[3]用程序来自动建立FTP账号[DB/OL].http://www.west263.com/www/info/23983-1.htm.

[4]使用ODBC数据库管理Serv-U的FTP用户及相关ASP编程[EB/OL].http://www.jb51.net/article/12711.htm.

(编辑:杨馥红)