Skip to content

Latest commit

 

History

History
84 lines (47 loc) · 3.62 KB

README.markdown

File metadata and controls

84 lines (47 loc) · 3.62 KB

pysrun

pysrun 是用Python编写的北师大上网认证网关客户端

用法简述

安装

本脚本无需安装其它程序库, 只需要下载即可执行. 需要用到的文件有两个:

  1. pysrun: 可执行Python脚本,
  2. ~/.pysrun.cfg: 配置文件.

本软件包内提供了样例配置文件pysrun.cfg.example. 第一次使用前, 请将其拷贝到 ~/.pysrun.cfg, 同时填入包括用户名密码在内的相关信息.

配置

配置文件分为如下部分, 每个部分中有若干个选项.

  1. [Server] 填写北师大认证服务器信息. 默认值是现在可用的服务器.
  • address: 服务器IP地址或主机名.
  • port: 服务器监听端口. 客户端通过向这个端口上监听的服务器发送信息来工作.
  1. [Client] 用于配置客户端所运行需要的主机信息.
  • interface: 在哪个网络界面上认证. 此界面的MAC地址将成为认证信息的一部分.
  1. [Account] 填写用户帐号信息.
  • username: 帐号 (通常为学工号)
  • password: 密码
  1. [Session] 用于配置会话状态的保存.
  • uidfile: 保存所谓"uid"信息的文件路径. 每次登入, 服务器会返回一个uid. 登出时需要使用这个uid退出. uidfile路径所指示的文件用来存放每次登入所返回的uid. 在登出前, 不要修改这个文件的内容或者移动乃至删除这个文件.

登入, 登出和强制离线操作

  1. 登入: 使用pysrun login命令. 登入成功后将安静地退出.
  2. 登出: 使用pysrun logout命令.
  3. 强制离线: 又称踢人, 即让所有占用这个帐号的IP地址离线, 使用pysrun kick命令.

注意: 需要让pysrun所在目录在您的PATH环境变量中, 或者使用类似./pysrun的绝对路径启动程序.

适用系统

目前在Linux系统上经过基本测试, 可以满足最简单的功能需要. 在各种BSD系统上(包括Free/Net/Open/DragonFlyBSD)也可以使用, 但未经过测试.

本程序不依赖于系统是32或64位.

背景

北师大提供的"官方"Linux客户端是一个动态编译的32位程序. 它具有如下不足:

  • 不适用于64位系统, 需要在64位系统上再安装32位C标准库.
  • 是"黑箱"程序, 无源码, 不知其工作原理, 必须诉诸逆向工程.
  • 自Linux 2.6.35后, 出现了官方客户端无法使用的情况. 其原因是官方客户端在进行bind()调用时采取了不规范的用法, 被较新的内核认为是错误的调用而无法执行 (参见https://lkml.org/lkml/2011/7/9/37, 或 Linux commit d0733d2e). 这导致在较新的系统上官方客户端完全失效.

附注: 在更新的系统上, bind()AF_UNSPEC类型的地址被允许用于地址为INADDR_ANY, 见 Linux commit 29c486df, 而这也正是官方客户端所做的. 所以对于此commit以后的内核版本, 上一点不能用于作为否定官方客户端的较强论据.

同时, 北师大也没有给出对各种BSD系统的支持. 尽管很多BSD系统建有Linux兼容层, 但通过兼容层运行本来就编写甚为sloppy的Linux程序可能遇到各种问题.

因此, 我们需要一个新的客户端可以改变以上所列的不足. 新客户端支持Linux和各种BSD, 支持32位和64位系统, 有开放的源码, 而且避免了原客户端中的不规范编程.

授权

BSD许可证, 见文件COPYRIGHT