免费图书馆电子资源远程访问系统的实现

来源 :中国集体经济·上 | 被引量 : 0次 | 上传用户:xxm181512619
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:文章提供了一套免费的代理服务器解决方案,采用squid的最新稳定版,具有价格低廉、运行稳定、性能可靠、高可定制性等优点,满足大多数图书馆的代理服务需求,提供校外利用校内电子资源的有效途径,主要实现了认证接口、访问控制和日志分析的功能。
  关键词:代理服务器;squid;认证;访问控制;日志分析
  
  随着高校数字图书馆技术的不断发展,高校师生对电子资源的利用率越来越高。但是,电子资源访问一般都采用了IP限制的方式局限于校园网内,而大多数教师在家中也希望可以查询这部分资料,因此代理服务器功能发挥了重要的作用。现在主流的实现校外访问的方式有VPN,代理和地址重写(EZProxy,OCLC推荐使用的校外访问软件),考虑到本图书馆的实际情况,处于网路中心的二级节点,使用软、硬件的VPN方式都不具备条件,EZProxy的价格为499美元,而squid是自由软件。在访问其他大学图书馆中发现复旦大学和武汉大学均采用了squid作校外访问的方式,但在前期的资料收集时发现虽然有很多采用了squid方式提供代理服务,但应用在图书馆却很少并且在适合图书馆应用方面的认证接口、访问控制和日志分析却无一提及,于是整理此文以便同行借鉴。
  
  一、代理服务器的架设
  
  Squid可以运行在多种操作系统上,鉴于大多数图书馆有外部IP的服务器为windows平台和图书馆管理人员计算机水平的相对落后,下面以windows系统和C#编程语言为例,以便快速实现。
  (一)下载软件包
  访问官方网站获取已经编译的程序,或下载软件包自行编译,目前的最新版为squid 2.7 STABLE release,相比与linux的版本号较滞后,下载地址http://www.acmeconsulting.it,下载后根据软件说明文档修改配置文件。
  (二)修改配置文件
  Squid的主要配置只要把etc目录下的带.default的文件名去掉就可以了:
  我们主要需要修改的就是squid.conf文件,该配置文件中#开头的表示注释掉的文件。
  建立该代理服务器的目的是为了校外的用户可以访问校内的图书馆资源,所以任何用户提供了正确的读者证号和密码就可以访问
  下面按顺序修改配置文件:
  1、监听端口
  # Squid normally listens to port 3128
  http_port 3128
  在3128端口上建立服务,您也可以修改成自己喜欢的,比如:8000等,但是需要注意的是该端口不能和其他程序冲突。
  2、定义认证的方式
  虽然在linux里面常用的htpasswd格式对用户进行认证,该认证模块,在Squid中是由ncsa_auch模块完成的,但这显然不符合图书馆的实际需要,必须编写自己的认证模块和读者数据库联系起来。
  auth_param basic program c: /squid/ libexec / auth.exe
  定义登陆时候显示信息,可修改为自己学校的标题
  auth_param basic realm长江大学图书馆校外访问系统
  3、允许用户输入密码登陆使用代理
  acl password proxy_auth REQUIRED
  4、定义访问权限,允许登陆的账户使用代理功能
  http_access allow password
  5、修改机器名,一般使用自己的域名
  visible_hostname lib.yangtzeu.edu.cn
  至此,保存squid.conf,简单的Squid for Windows的配置已经完成。
  初始化运行,软件说明文档有详细的说明,可参考执行。
  
  二、主要添加模块
  
  虽然squid支持多种方式验证,但实际情况是我们如果想和图书馆的集成管理系统联系起来就必须编写自己的认证模块,比如在长江大学图书馆的认证方式为借鉴ilasII的网上读者管理模块来实现认证,规则为先注册为本馆读者,然后修改初始密码。因为该馆的ILASII网上图书馆的注册必须在校园网内完成,所以避免了外界的干扰。
  Squid在基本的验证器之间的接口非常简单。squid发送用户名和密码到验证器进程,它们以空格分开并以新行结束。验证器在stdin里读取用户名和密码。在检查信用后,验证器将OK或者ERR写入stdout,在C#中可以利用HttpWebRequest来取得读者的基本信息后进行验证。
  现在就可以实现校外读者的远程访问了,但还不能进行日志审核和权限控制,这些就要从日志中来实现了。如果要实现日志的分析统计,就要将日志解析到数据库中然后用SQL来实现,squid对于每次访问都有详细的日志记录,格式为:
  (1.时间戳、2.响应时间、3.客户端地址、4.结果/状态码、5.传输size、6.请求方式、7.URI、8.客户端身份、9.对端编码/对端主机、10.内容类型)
  通过C#强大的数据库操作功能可以将日志解析到数据库中,然后我们可以在这个数据库中监控整个校外访问的一切记录,并可以实现对用户的监控,报表的统计分析等,如查看各个账号的在线时间和流量可以用一句SQL语句便可轻松解决:
  SELECT log.kehdsf AS 用户名, sum(xiangysj)/1000 AS 所用时间, sum(chuansdx) AS 下载流量, count(shijc) AS 下载次数 FROM log GROUP BY log.kehdsf
  有了这样的统计报表,我们可以用它来限定账号登录的时间和下载的流量。比如为了防止数据库的非法下载,可以限定登录的时间为2小时或者每天200M的流量。为了方便管理,我们可以用asp.net来实现后台的管理,包括日志查看、用户管理、规则管理等。
  在使用代理中需要在IE中设置,为了用户在访问许可站点时才用到代理,就必须用到代理脚本。比如长江大学图书馆的部分脚本为:
  //只有用户在访问cnki时候在使用代理服务器,对于其他站点则不使用。
  function FindProxyForURL(url, host)
  {
  if(isPlainHostName(host) || dnsDomainIs(host,"lib.yangtzeu.edu.cn"))return "DIRECT";
  else if(isPlainHostName(host) || dnsDomainIs(host,"cnki.net"))return "PROXY lib.yangtzeu.edu.cn:3128";
  else return "DIRECT";
  }
  
  三、结束语
  
  本文所介绍的代理服务器系统已经在长江大学图书馆试运行一年多,效果令人满意。虽然购买一套代理服务器价格也仅仅几千元左右,但是使用自己建设的系统却有更多的优势:我们可以获得无限制的用户数、灵活的升级方式、高度可扩展的功能和完全定制的界面等。未来我们还会按照需求对系统进行功能扩充、减少安装的复杂程度、提供更多的管理功能。
  比如形成一个代理集群,如果在几所石油类高校图书馆均使用这种代理服务器,那么可以通过统一的用户库来集中认证、通过流量控制或者时间控制的方式来实现集团内部的费用结算。用代理脚本让读者以透明的方式访问所有高校的电子资源 ,在外文资源日益昂贵的现状下可以通过集团共享的方式大幅降低采购经费,并提供文献资源的保障率。
  
  参考文献:
  1、夏敏捷.Visual C#.NET开发技术原理与实践教程[M].电子工业出版社,2007.
  *本文为2008年湖北省教育厅人文社会科学研究项目,项目编号2008y419。
  (作者单位:长江大学图书馆)
其他文献
目的探讨p73基因mRNA失表达与儿童急性淋巴细胞白血病(ALL)的发病和预后的关系.方法采用反转录聚合酶链反应(RT-PCR)方法检测了34例ALL患儿骨髓单个核细胞内p73 mRNA的表达情