目录
目录readme.md

golang搭建的ocserv服务系统

功能介绍:

  1. ocserv服务系统
  2. ocserv用户管理

系统技术架构:

  1. 前端:js+html (能用boostrap框架最好) 前端要求兼容移动端和PC端

  2. 后端:golang (gin框架带gorm完成增删查改)

  3. 数据库:mysql (数据库中已存在user表并存在用户数据) 数据库表结构:

    1. user表:用户表 包含字段:id,create_time,name,email,password,role(整型类型,角色管理员为0,普通用户为1),status(整型类型,停用状态为0,启用状态为1),update_time(更新时间,datetime类型),end_time(到期时间,datetime类型)

    2. freeradius服务默认搭建radcheck表:ocserv服务验证用户表 表结构:

    CREATE TABLE radreply ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(64) NOT NULL, attribute VARCHAR(64) NOT NULL, op CHAR(2) DEFAULT ‘=’, value VARCHAR(253) NOT NULL );

    1. 以上user表中name,password字段与radius_user表中的name,password字段对应,且业务操作要实时同步到radius_user表中
  4. 服务器:linux(Ubuntu)

  5. redis:redis服务(用于存储ocserv用户在线信息,将必要的信息存在其中,减少数据库查询次数)

后端接口实现:

  1. 登录系统 登录接口 /login 请求方式:POST 请求参数:name,password 返回参数:token 功能描述:请求中带有入参name,password,查询user表后如果信息正确,使用JWT生成token,返回给前端,否则返回错误信息。

    注册接口 /register 请求方式:POST 请求参数:name,password,email 返回参数:token 功能描述:请求中带有入参name,password,email,查询user表后如果信息正确,使用JWT生成token,返回给前端,否则返回错误信息。

    用户信息详情查询接口 /user_info 请求方式:GET 请求参数:token 返回参数:用户信息 功能描述:请求中带有入参token,查询user表后如果信息正确,返回用户信息,否则返回错误信息。

    用户列表查询接口 /user_list 请求方式:GET 请求参数:token 返回参数:用户列表 功能描述:请求中带有入参token,如果token对应用户的角色是管理员(user表role字段为0)是查询user表后如果信息正确,返回用户列表,否则返回错误信息。

    用户信息修改接口 /user_update 请求方式:POST 请求参数:token,id,name,email,password,role,status,end_time,updata_time 返回参数:用户信息 功能描述:请求中带有入参token,id,name,email,password,role,status,end_time,updata_time,如果token对应用户的角色是管理员(user表role字段为0)是查询user表后如果信息正确,修改用户信息,否则返回错误信息。

  2. ocserv服务管理

启用用户接口 /ocserv_user_start 请求方式:POST 请求参数:times,name 返回参数:用户信息 功能描述:请求中有入参times(默认120),name,如果user表中存在name且对应status字段为0,则修改此name对应的end_time和update_time,end_time=当前时间+times天,update_time=当前时间并将status置为1。如果name存在且status字段为1,则修改此name对应的end_time=end_time+times天,update_time=当前时间。如果name不存在,则返回错误信息。同时对在radius服务对应的radcheck表中增加一条记录,username赋值name,attribute赋值’Cleartext-Password’,op赋值’:=’,value赋值password。

停用用户接口 /ocserv_user_stop 请求方式:POST 请求参数:name 返回参数:用户信息 功能描述:请求中有入参name,如果user表中存在name且对应status字段为1,并且当前时间>end_time,则修改此name对应的status字段为0,update_time=当前时间。如果name不存在,则返回错误信息。同时对在radius服务对应的radcheck表中删除一条满足username=name的记录。

关于
35.0 KB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

©Copyright 2023 CCF 开源发展委员会
Powered by Trustie& IntelliDE 京ICP备13000930号