GithubHelp home page GithubHelp logo

yh-radius's Introduction

yh-RADIUS系统

yh-radius 是一个使用golang语言开发的radius协议实现,目前已适配华为,思科,中兴,RouterOS(MikroTik)以及标准协议,其他厂商协议后续陆续补充。

编译安装

可以使用github上已经发布的release版本

也可以自行编译相应平台的安装包: 例如在windows平台下:

    cd source_code_dir
    set CGO_ENABLED=0
    set GOOS=linux
    set GOARCH=amd64 
    go build

release版本:

系统采用前后端分离的方式开发: radius server后端 + 管理系统前端

管理系统前端需要运行在web服务器环境(nginx, tomcat等),radius server后端是编译后的二进制版本可按照下述方式运行

yh-radius系统介绍

编译完成,复制以下目录或者文件至你的运行目录: yh-radius, attributes, config, startup.sh, shutdown.sh

目录结构如下:

yh-radius
    |___ attributes

    |___ config

    |__ yh-radius

    |__ startup.sh

    |__ shutdown.sh

在Linux系统中运行系统:

chmod +x startup.sh

./startup.sh

Linux系统中停止系统:

chmod +x shutdown.sh

./shutdown.sh

配置文件解释

字段名 默认值 类型 描述
auth.port 1812 int radius认证端口
acct.port 1813 int radius计费端口
encrypt.key 支持16,24,32长度的十六进制字符串 string 用于加密用户密码
radius.session.timeout 604800 int 默认一周的秒数
limiter.limit 100 int 用于限制每次添加到令牌桶中的token数量,间接控制go协程并发数量, 服务器环境可根据实际情况调整
limiter.burst 1000 int 用于限制最多的可用token数量,间接控制go协程并发数量,服务器环境可根据实际情况调整
product.stage debug string 控制gin日志,sql显示;可选值:test,debug,release 发布生产环境时请修改此配置为:release

数据库表结构

数据库表定义在radius-v2.sql中

使用radius-web管理平台

这里有一个可用的radius管理平台,实现了用户管理,套餐管理,nas管理,在线用户管理,管理员管理,角色管理等yh-radius-web web平台默认的登陆用户: admin/123456

首页 用户管理 套餐管理 在线用户管理 系统设置 角色管理

许可协议

MIT

yh-radius's People

Contributors

cometowell avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

yh-radius's Issues

有考虑支持 mschapv2吗

我使用wifi认证,报错信息如下,chap和pap可以正常验证,但是mschap不可以

ERRO[2023-06-29 18:23:09.425] recovery invoke runtime error: invalid memory address or nil pointer dereference 
[xorm] [info]  2023/06/29 18:23:09.425625 [SQL] ROLL BACK
ERRO[2023-06-29 18:23:09.46] occur unknown error: runtime error: invalid memory address or nil pointer dereference 
DEBU[2023-06-29 18:23:09.46] 异常堆栈信息:goroutine 123 [running]:
runtime/debug.Stack()
        /usr/local/go/src/runtime/debug/stack.go:24 +0x65
go-rad/radius.RecoveryFunc.func1.1()
        /Users/akiraka/Downloads/yh-radius-master/radius/common_middleware.go:54 +0x1ad
panic({0x14e5e60, 0x18c19d0})
        /usr/local/go/src/runtime/panic.go:884 +0x213
go-rad/radius.pap({0xc00041c448?, 0x1?}, {0xc00041cc50, 0x6}, {0x1, 0x18, 0xc8, {0xa2, 0xce, 0x98, ...}, ...})
        /Users/akiraka/Downloads/yh-radius-master/radius/verify_password.go:34 +0x32b
go-rad/radius.UserVerify(0xc0000d0500)
        /Users/akiraka/Downloads/yh-radius-master/radius/auth_middleware.go:47 +0x1cb
go-rad/radius.(*Context).Next(...)
        /Users/akiraka/Downloads/yh-radius-master/radius/context.go:30
go-rad/radius.NasValidation(0xc0000d0500)
        /Users/akiraka/Downloads/yh-radius-master/radius/common_middleware.go:25 +0x2a5
go-rad/radius.(*Context).Next(...)
        /Users/akiraka/Downloads/yh-radius-master/radius/context.go:30
go-rad/radius.RecoveryFunc.func1(0xc0000c4dc0?)
        /Users/akiraka/Downloads/yh-radius-master/radius/common_middleware.go:60 +0x8f
go-rad/radius.(*Context).Next(...)
        /Users/akiraka/Downloads/yh-radius-master/radius/context.go:30
go-rad/radius.(*radEngine).HandlePackage.func1({0xc0001d0000?, 0xc0004c4f90?, 0xc0004c4fd0?}, 0xc000012010, 0xc000147260)
        /Users/akiraka/Downloads/yh-radius-master/radius/radius_engine.go:86 +0x282
created by go-rad/radius.(*radEngine).HandlePackage
        /Users/akiraka/Downloads/yh-radius-master/radius/radius_engine.go:69 +0x44a 
INFO[2023-06-29 18:23:09.46] 响应报文:RadiusPackage:{
        Code=2
                Identifier=24
                Length=41
                Authenticator=939c8bd39e575b5415663235eff3ce02
                isChap=false
                RadiusAttrs: [
                         Reply-Message=occur unknown error]
        } 

流量扣除异常

acct_middleware.go
第151行,修改前后生成的语句区别如下,问题表现为所有用户的流量信息都被更改了。
_, err = cxt.Session.Cols("available_flow", "available_time").Update(&user)
UPDATE rad_user SET available_time = ?, available_flow = ? []interface {}{0, 197384046}

_, err = cxt.Session.ID(user.Id).Cols("available_flow", "available_time").Update(&user)
UPDATE rad_user SET available_time = ?, available_flow = ? WHERE id=? []interface {}{0, 197384046, 361}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.