Etherpad-Lite 使用 Radius 认证

本文介绍了如何在Etherpad-Lite中添加Radius认证功能,使用了Node.js的radius库和async库进行数据库同步处理。在Linux Mint 17环境下,通过修改user_pad和user_pad_frontend插件,实现了登录时的Radius验证。注册功能被简化,仅在Radius认证成功后在数据库创建用户,登录部分使用了async模块进行操作。
摘要由CSDN通过智能技术生成

最近打工的地方要求写一个插件给Etherpad-Lite 提供 Radius 的认证方式, 经过筛选后选择了node js 的一个Radius 库, 代码的实现中也有用到node js 的一个async的库作为数据库处理同步的方法。我自己的系统环境是Linux Mint 17, 希望能够为有这方面需求的朋友提供一些方便, 自己以前没有接触过JavaScript也希望大家能够不吝指教。

关于Etherpad-Lite的介绍在 http://etherpad.org/

关于Etherpad-Lite的安装在 https://help.ubuntu.com/community/Etherpad-liteInstallation

关于使用的node js 的两个库分别在 https://github.com/retailnext/node-radius 和 https://github.com/caolan/async

我的Radius认证方式实在Etherpad-Lite的插件user_pad和user_pad_frontend上实现的。其实我只是做了以下的修改:


I. Radius 库函数, 主要是为了让返回值为数字, 不知道是我自己处理错误还是怎样,返回字符时候总是出错.

 
    Original:
    //var ret = {};
    //ret.code = code_map[packet.readUInt8(0)];
 
    Changed:
    var ret = {};
    ret.code = packet.readUInt8(0);



II. 插件user_pad_frontend中的hooks.js  和 register.js

hooks.js 中主要是改了registerUser, login, 和 userAthentication方法。

1. registerUser,

由于我们没有register的需求,所以我把这一部分邮件注册的功能删除了。由于我们的Radius数据库在LDAP中,我们Etherpad-Lite只是来保存用户名,密码没有要求,只要Radius认证成功,就在数据库中创建用户,让后默认其他属性。更改后的代码如下:

//register user who are not in database
    var registerUser = function (user, cb) {
        var existUser = "SELECT * from User where User.name = ?";
        var retValue = existValueInDatabase(existUser, [user.email], function (exists) {
            if (exists) {
                //cb(false, USER_EXISTS);
                cb(tru
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值