package
0.0.0-20230805082922-57710327dea0
Repository: https://github.com/golang-common/sangfor.git
Documentation: pkg.go.dev

# README

深信服上网行为管理操作库

本库编写时使用的测试设备版本为 AC13.0.18

1 使用示例

安装

go get github.com/golang-common/sangfor

运行

package main

import (
	"fmt"
	"github.com/golang-common/sangfor/ac"
)

func main() {
	AClient := ac.NewAC("172.22.0.73:9999", "secret", true)
	ver, err := AClient.Status().Version()
	if err != nil {
		panic(err)
	}
	fmt.Println(ver)
}

正常时输出结果

AC13.0.18.046 Build20210909

2 支持的操作

状态操作:

  • 获取版本号
  • 获取在线用户数
  • 获取当前设备会话数
  • 获取内置库版本信息(包含病毒库,URL库等模块)
  • 获取日志计数统计(拦截日志,记录日志)
  • 获取设备的实时CPU使用率(百分比整数)
  • 获取设备的实时内存使用率(百分比整数)
  • 获取设备的磁盘使用率(百分比整数)
  • 获取带宽使用率
  • 获取设备的当前系统时间
  • 获取设备当前上行和下行流量
  • 获取用户流量排行
  • 获取应用流量排行

用户操作:

  • 添加用户
  • 删除用户
  • 修改用户
  • 获取用户详细信息
  • 获取用户的上网策略列表
  • 设置用户的上网策略
  • 获取用户的流控策略
  • 设置用户的流控策略
  • 验证用户密码(单元测试不通过)

组操作:

  • 添加组
  • 删除组
  • 修改组
  • 设置组的上网策略
  • 获取组的上网策略

绑定操作:

  • 查询用户和IP/MAC的绑定关系
  • 增加用户和IP/MAC的绑定关系
  • 删除用户和IP/MAC的绑定关系
  • 查询IP/Mac绑定关系
  • 增加IP/Mac的绑定关系
  • 删除IP/MAC的绑定关系

策略操作:

  • 获取设备已有上网策略信息
  • 获取设备已有流控策略信息

在线用户操作:

  • 获取在线用户列表
  • 强制注销在线用户(踢下线)
  • 上线在线用户(单点登录)

3 问题列表

  • 增加用户时赞只支持基本属性,扩展属性暂不生效,有可能是版本问题
  • 验证用户密码接口未生效,需要进一步确认

# Functions

IndentJson 将对象转换为更适合阅读的json格式 通常在调试程序时使用.
No description provided by the author
NewAC 创建深信服AC操作对象,target为ip+端口,secret为AC上配置的密钥 e.g: target=192.168.1.1:9999(默认端口为9999), secret=YR9nQngmvhX&9BE83K.

# Structs

No description provided by the author
AppRank 应用流量排行数据.
AppRankFilter 应用流量排行过滤参数 Top - TopN排行 Line - 线路号(0:所有线路,1-N:具体线路) Groups - 要过滤的组(以"/"开头).
AppRankUser 应用流量排行中的用户信息.
BindIpMac IP/MAC绑定关系 Ip - IP地址 Mac - MAC地址 Desc - 描述.
No description provided by the author
No description provided by the author
FluxPolicy 流控策略结构 Id - 通道ID Name - 通道名 FatherId - 父通道名称 IpGroup - 目标IP组(多个逗号分隔) Object - 适用对象(多个逗号分隔,位置/用户/终端...) Service - 适用应用(多个逗号分隔) Time - 生效时间(e.g.:全天) Status - 策略是否启用,true:启用,false:禁用 Assured - 保证带宽,数组包含上行和下行,-1表示无限制 Max - 最大带宽,数组包含上行和下行,-1表示无限制 Single - 单用户限制带宽,数组包含上行和下行,-1表示无限制 IsDefaultChild - 是否为默认通道,true:是默认通道,false:不是默认通道 Childrens - 子通道对象数组 IsLowSpeed - 域属性信息 TargetUsers - 目标用户(多个用户逗号分隔) IpGroup - 目标IP组(多组逗号分隔) FIXME: 注释中的字段均为API文档中有但实际请求中不一致或不存在的值,需厂商更新API(深信服垃圾).
Group 组信息 Path - 组路径,最多支持15层级目录创建(以"/"开头,且不支持向域 用户组添加组) Desc - 组描述.
GroupPolicyOper 用户策略操作 Group - 需要修改策略的组 Opr - 操作字段 - add:在原有策略上增加 - del:在原有策略上删除(无法删除 应用所有用户的策略,无法删除只应用单个用户的策略) - modify:将策略设置为policy字段所指定的,会清除原有策略 Dn - 域名 Policy - 策略名列表.
No description provided by the author
InsideLib 内置库结构体(病毒库,URL库等).
IpMacBind IP/MAC绑定关系.
No description provided by the author
LogCount 日志统计.
NetPolicy 上网策略结构 PolicyInfo - 策略信息 UserInfo - 策略关联的用户信息.
NetPolicyInfo 上网策略信息 Name - 策略名 Type - 策略类型 Founder - 策略创建者 Expire - 过期时间 Status - 是否启用 Depict - 策略描述信息.
NetPolicyUserInfo 上网策略关联的用户信息 Ou - 在线用户信息 Aduser - 域用户信息 Adgroup - 域安全组信息 ExcAduser - 排除域用户信息 Attribute - 域属性信息 UserAttrGrp - 用户,组属性信息 Sourceip - 源IP Location - 位置列表 Terminal - 终端列表 TargetArea - 目标区域 Local - 关联(适用)的用户.
Noauth 免认证配置 Enable - 是否启用免认证 ExpireTime - 免认证过期时间, Unix时间戳, 为0表示永不过期, >0表示过期时 间戳.
OnlineFilter 获取在线用户是的过滤选项 Status - 用户状态(all-所有,frozen-已冻结,active-活跃) Terminal - all-所有 pc-PC用户 mobile-移动终端 multi-多终端 iot-哑终端 armarium-医疗设备 custom-用户自定义设备 FilterType - 搜索类型(user-用户组名,ip-IP地址数组,mac-mac地址数组) FilterValue - 与搜索类型对应的值数组(用户名支持模糊查询).
No description provided by the author
OnlineUser 在线用户结构 Name - 用户名 ShowName - 显示名 FatherPath - 组路径(在外发上线请求时,字段名会被解析为group) Ip - 用户当前IP地址 Mac - 用户当前MAC地址 Terminal - 与 OnlineFilter.Terminal 中定义一致 Authway - 认证方式,0为不需要认证,1为密码认证,2为短信认证,3为单点 登录,4为免认证 LoginTime - 登录时间戳(Unix 时间戳) OnlineTime - 在线时长,单位秒.
No description provided by the author
No description provided by the author
Throughput 设备的上行和下行流速返回结构体.
ThroughputFilter 上下行流速请求过滤.
Time 符合AC要求的时间格式.
No description provided by the author
UserAdd 用户增加.
UserBasic 用户基本信息 Name - 用户名 Desc - 用户描述 FatherPath - 用户所在组 ExpireTime - 过期时间.
UserBind 用户/IP/MAC绑定关系 Name - 用户名 Enable - 是否启用 Desc - 描述 AddrType - 绑定类型, ip / mac / ipmac Addr - 绑定对象 - 当 AddrType 为ip时,取值为ip地址(e.g.:192.168.1.1) - 当 AddrType 为mac时,取值为mac地址(e.g.:ff-ff-ff-ff-ff-ff) - 当 AddrType 为ipmac时,取值为ipmac地址(e.g.:192.168.1.1+ff-ff-ff-ff-ff-ff) Limitlogon - 是否启用限制登录 Noauth - 免认证配置.
UserBindCfg 用户绑定信息 Ip - e.g:192.168.1.2 Mac - e.g:ac-ed-ee-ee-ee-ee OutTime - 过期时间(e.g:2019-10-31) Bindgoal - 绑定方式(noauth:免认证,loginlimit:限制登录,noauth_and_loginlimit:免认证且限制登录) Desc - 绑定描述.
UserCommon 用户通用属性 AllowChange - 是否允许修改本地密码 Enable - 是否允许多人使用该账号登录.
UserDetail 用户查询,搜索.
UserExpire 用户过期信息 Enable - 是否启用用户过期 Date - 过期日期(YYYY-MM-DD).
UserExtend 用户扩展信息 Enable - 是否启用用户 Desc - 用户描述 SelfPass - 本地账号密码配置 BindCfg - 用户绑定信息列表 CustomCfg - 用户自定义属性键值对 Logout - 密码认证成功后是否弹出注销窗口 CommonUser - 用户通用属性 LimitIpmac - 限制登录地址(IP或MAC,IP支持单个或IP段 (192.168.1.1-192.168.1.2),MAC格式ee-ee-ee-ee-ee-ee) TODO: 增加或修改用户时所有的扩展属性都不生效,需要与厂商确认.
UserLimit 用户登录限制 Enable - 是否开启限制 Ipmac - 限制的IP或MAC(IP或MAC,IP支持单个或IP段 (192.168.1.1-192.168.1.2),MAC格式ee-ee-ee-ee-ee-ee).
UserModify 用户修改 Name - 用户名(必填).
UserPolicyOper 用户策略操作 User - 需要修改策略的用户 Opr - 操作字段 - add:在原有策略上增加 - del:在原有策略上删除(无法删除 应用所有用户的策略,无法删除只应用单个用户的策略) - modify:将策略设置为policy字段所指定的,会清除原有策略 Dn - 域名 Policy - 策略名列表.
UserRank 用户流量排行数据.
UserRankDetail 用户流量排行明细 Id - 用户流量明细中的排序 App - 应用名称 Up - 上行字节数 Down - 下行字节数 Total - 总字节数 Percent - 该应用占用户总流量的百分比.
UserRankFilter 用户流量排行过滤参数 过滤字段"groups","users","ips",同时只能选择其中一种过滤条件来过滤, 若同时传入多个过滤条件,则过滤条件只会生效1种,优先级为"groups > users > ips".
UserSearch 用户搜索传入结构体(最多返回100个) SearchType - 搜索类型(user/ip/mac) SearchValue - 搜索值 - 当类型为user时,搜索值为用户名(支持模糊搜索),e.g.:张三 - 当类型为ip时,搜索用户IP段,e.g.:{"start":"1.1.1.1","end":"1.1.1.10"} - 当类型为mac时,搜索用户绑定mac地址,e.g.:ee-ee-ee-ee-ee-ee Extend - 搜索扩展字段.
UserSearchEX 搜索扩展字段 FatherPath - 指定搜索father_path组中的用户,默认为"/" CustomCfg - 自定义属性的键值对(不支持同时搜索多个自定义属性) UserStatus - 用户状态(共有3种,all:启用和禁用 enabled:启用 disabled:禁用,默认为"all") Public - true:搜索过滤出允许多人同时使用的帐号,默认为false Expire - 账号过期时间(start:起始时间 end:结束时间 start和end成 对出现,组成时间段).
UserSelfPass 用户本地密码 Enable - 是否启用密码 Password - 密码文本(只在插入时使用,无法从设备读取到) ModifyOnce - 初次认证是否修改密码.
No description provided by the author