Skip to content

Commit 68dc7d9

Browse files
committed
Merge branch 'hi-develop' into hi
* hi-develop: fix: 修改删除终端dhcp为同步模式 fix: 修改删除终端dhcp为同步模式 fix:b1300 qos fix:qos feat: 设备已被绑定,改名为: 路由器已被绑定,请重置路由器后重试 feat: 获取wan口信息接口 feat: 删除终端 feat:add del Device feat:add del Device feat:add del Device fix:qos stop fix:限速stop删除配置 feat:限速删除set -e判断,新增stop动作 feat:限速添加set -e判断,新增stop动作 fix:b1300 oping网络检查不生效问题
2 parents 74a14a8 + 21456f7 commit 68dc7d9

File tree

4 files changed

+102
-20
lines changed

4 files changed

+102
-20
lines changed

api.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -611,7 +611,7 @@ func apiStart(br *broker) {
611611
// 查询信息 action=dhcp|wifi|static_leases devid=设备id
612612
r.GET("/hi/base/get/:action/:devid", baseGet(br))
613613

614-
// 设置信息(需要设备在线才可以设置) action=wifi|static_leases|blocked|qos devid=设备id
614+
// 设置信息(需要设备在线才可以设置) action=wifi|static_leases|blocked|qos|delDevice devid=设备id
615615
r.POST("/hi/base/set/:action/:devid", baseSet(br))
616616

617617
// 设备

hi/constants.go

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2726,8 +2726,8 @@ cat >/tmp/net_ping_detected<<EOF
27262726
node_host={{.nodeHost}}
27272727
import_ip=\$(uci get wireguard.@peers[0].end_point|awk -F':' '{print \$1}')
27282728
echo "#------------ping start--------------">/var/log/ping.log
2729-
oping -c5 -O /var/log/ping.log \$import_ip \$node_host 8.8.8.8
2730-
if [ -n "\$(cat /var/log/ping.log|grep '\\-1.00')" ]; then
2729+
oping -c5 \$import_ip \$node_host 8.8.8.8 >>/var/log/ping.log
2730+
if [ -n "\$(cat /var/log/ping.log|grep 'timeout')" ]; then
27312731
echo "#------------ping end--------------">>/var/log/ping.log
27322732
cat /var/log/ping.log>>/var/log/exec.log
27332733
fi
@@ -2756,6 +2756,18 @@ fi
27562756
// 直接执行--已添加set -e
27572757
const ClientQos = string(`
27582758
#-----------{{.date}}-------------
2759+
if [ "$(cat /etc/openwrt_version)" == "15.05.1" ]; then
2760+
kernel=$(uname -r)
2761+
[ -z "$(lsmod | grep sch_ingress)" ] && {
2762+
insmod /lib/modules/${kernel}/cls_flow.ko 1>/dev/null 2>&1
2763+
insmod /lib/modules/${kernel}/sch_cbq.ko 1>/dev/null 2>&1
2764+
insmod /lib/modules/${kernel}/sch_prio.ko 1>/dev/null 2>&1
2765+
insmod /lib/modules/${kernel}/xt_u32.ko 1>/dev/null 2>&1
2766+
insmod /lib/modules/${kernel}/cls_u32.ko 1>/dev/null 2>&1
2767+
insmod /lib/modules/${kernel}/sch_ingress.ko 1>/dev/null 2>&1
2768+
insmod /lib/modules/${kernel}/sch_sfq.ko 1>/dev/null 2>&1
2769+
}
2770+
fi
27592771
[ ! -e "/etc/config/qos" ] && {
27602772
/etc/init.d/eqos start
27612773
}
@@ -2766,7 +2778,21 @@ set -e
27662778
[ -z "$status" ] && eqos start 125000 125000
27672779
{{.setRule}}
27682780
set +e
2769-
hi-clients &
2781+
hi-clients
2782+
`)
2783+
2784+
// 直接执行--已添加set -e
2785+
const DelDeviceContent = string(`
2786+
#!/bin/bash
2787+
#-----------{{.date}}-------------
2788+
# delete
2789+
{{.delDevice}}
2790+
uci commit dhcp
2791+
# report
2792+
if [ -f "/usr/sbin/hi-static-leases" ]; then
2793+
/usr/sbin/hi-static-leases
2794+
hi-clients
2795+
fi
27702796
`)
27712797

27722798
func FromTemplateContent(templateContent string, envMap map[string]interface{}) string {
@@ -2925,3 +2951,8 @@ func ClientQosTemplate(envMap map[string]interface{}) string {
29252951
sb.Write([]byte(ClientQos))
29262952
return FromTemplateContent(sb.String(), envMap)
29272953
}
2954+
func DelDeviceTemplate(envMap map[string]interface{}) string {
2955+
var sb strings.Builder
2956+
sb.Write([]byte(DelDeviceContent))
2957+
return FromTemplateContent(sb.String(), envMap)
2958+
}

hi/router.go

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,10 @@ func VersionCmd(name string) string {
6363
return GetVersion(name)
6464
}
6565

66+
func WanInfoCmd() string {
67+
return "ubus -v call network.interface.wan status"
68+
}
69+
6670
func WireguardCmd(wg WgModel) string {
6771
var cmds []string
6872
//
@@ -98,7 +102,7 @@ func StaticLeasesCmd(list []StaticLeasesModel, mode string) string {
98102
//
99103
for _, item := range list {
100104
if IsIp(item.Ip) {
101-
name := RandString(6)
105+
name := strings.Replace(item.Mac, ":", "", -1)
102106
cmds = append(cmds, fmt.Sprintf("uci set dhcp.%s=host", name))
103107
cmds = append(cmds, fmt.Sprintf("uci set dhcp.%s.name=\"%s\"", name, item.Name))
104108
cmds = append(cmds, fmt.Sprintf("uci set dhcp.%s.ip=\"%s\"", name, item.Ip))
@@ -276,14 +280,20 @@ func DiagnosisCmd(callbackUrl, typ, batch, ip string) string {
276280

277281
func ClientQosCmd(list []QosModal, action string) string {
278282
var cmds []string
279-
for _, item := range list {
280-
if action == "add" {
281-
cmds = append(cmds, fmt.Sprintf("eqos add %s %s %s", item.Mac, item.Dl, item.Ul))
282-
} else if action == "del" {
283-
cmds = append(cmds, fmt.Sprintf("eqos del %s ", item.Mac))
284-
} else if action == "update" {
285-
cmds = append(cmds, fmt.Sprintf("[ -n \"$(grep %s /etc/config/qos| grep -v '#')\" ] && eqos del %s only_remove_ts", strings.ToLower(item.Mac), item.Mac))
286-
cmds = append(cmds, fmt.Sprintf("eqos add %s %s %s", item.Mac, item.Dl, item.Ul))
283+
if action == "stop" {
284+
cmds = append(cmds, "ubus call uci delete '{\"config\":\"qos\",\"type\":\"queue\"}'")
285+
cmds = append(cmds, "uci commit qos")
286+
cmds = append(cmds, "eqos stop")
287+
} else {
288+
for _, item := range list {
289+
if action == "add" {
290+
cmds = append(cmds, fmt.Sprintf("eqos add %s %s %s", item.Mac, item.Dl, item.Ul))
291+
} else if action == "del" {
292+
cmds = append(cmds, fmt.Sprintf("eqos del %s ", item.Mac))
293+
} else if action == "update" {
294+
cmds = append(cmds, fmt.Sprintf("[ -n \"$(grep %s /etc/config/qos| grep -v '#')\" ] && eqos del %s only_remove_ts", strings.ToLower(item.Mac), item.Mac))
295+
cmds = append(cmds, fmt.Sprintf("eqos add %s %s %s", item.Mac, item.Dl, item.Ul))
296+
}
287297
}
288298
}
289299
var envMap = make(map[string]interface{})
@@ -335,3 +345,16 @@ func SameDHCPMacAndIPs(dbResult, result string) bool {
335345
}
336346
return same
337347
}
348+
349+
func DelDeviceCmd(list []StaticLeasesModel) string {
350+
var cmds []string
351+
//
352+
for _, item := range list {
353+
name := strings.Replace(item.Mac, ":", "", -1)
354+
cmds = append(cmds, fmt.Sprintf("uci delete dhcp.%s", name))
355+
cmds = append(cmds, fmt.Sprintf("sed -i '/%s/d' /etc/clients", item.Mac))
356+
}
357+
var envMap = make(map[string]interface{})
358+
envMap["delDevice"] = strings.Join(cmds, "\n")
359+
return DelDeviceTemplate(envMap)
360+
}

hiapi.go

Lines changed: 35 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"encoding/json"
55
"errors"
66
"fmt"
7-
"gorm.io/gorm"
87
"io/ioutil"
98
"net/http"
109
"rttys/hi"
@@ -13,6 +12,8 @@ import (
1312
"strings"
1413
"time"
1514

15+
"gorm.io/gorm"
16+
1617
"github.com/gin-gonic/gin"
1718
jsoniter "github.com/json-iterator/go"
1819
"github.com/nahid/gohttp"
@@ -38,6 +39,7 @@ const (
3839
SyncWireguard = "sync_wireguard"
3940
ClearCustomWifi = "clear_custom_wifi"
4041
GetVersion = "get_version"
42+
GetWanInfo = "get_wan_info"
4143
Connected = "connected"
4244
Disconnected = "disconnected"
4345
FetchLog = "fetch_log"
@@ -517,6 +519,26 @@ func baseSet(br *broker) gin.HandlerFunc {
517519
return
518520
}
519521
}
522+
if action == "delDevice" {
523+
list := jsoniter.Get(content, "list").ToString()
524+
//callUrl := jsoniter.Get(content, "call_url").ToString()
525+
var data []hi.StaticLeasesModel
526+
if ok := json.Unmarshal([]byte(list), &data); ok == nil {
527+
cmdr, terr := hi.CreateCmdr(db, devid, onlyid, hi.DelDeviceCmd(data), UpdateStaticIp)
528+
if terr != nil {
529+
c.JSON(http.StatusOK, gin.H{
530+
"ret": 0,
531+
"msg": "创建执行任务失败",
532+
"data": gin.H{
533+
"error": terr.Error(),
534+
},
535+
})
536+
} else {
537+
hiExecRequest(br, c, cmdr)
538+
}
539+
return
540+
}
541+
}
520542

521543
c.JSON(http.StatusOK, gin.H{
522544
"ret": 0,
@@ -578,7 +600,7 @@ func deviceList(br *broker) gin.HandlerFunc {
578600
}
579601
}
580602

581-
// deviceAction 设备绑定、解绑、重启、获取版本、连接
603+
// deviceAction 设备绑定、解绑、重启、获取版本、连接、获取wan口信息
582604
func deviceAction(br *broker) gin.HandlerFunc {
583605
return func(c *gin.Context) {
584606
action := c.Param("action")
@@ -637,7 +659,7 @@ func deviceAction(br *broker) gin.HandlerFunc {
637659
// 已被绑定
638660
c.JSON(http.StatusOK, gin.H{
639661
"ret": 0,
640-
"msg": "设备已被绑定",
662+
"msg": "路由器已被绑定,请重置路由器后重试",
641663
"data": nil,
642664
})
643665
return
@@ -674,9 +696,8 @@ func deviceAction(br *broker) gin.HandlerFunc {
674696
})
675697
}
676698
return
677-
} else if action == "version" {
678-
// 获取版本
679-
name := c.Query("name")
699+
} else if action == "version" || action == "wan_info" {
700+
// 获取版本 or wan口信息
680701
onlyid := devidGetOnlyid(br, devid)
681702
if len(onlyid) == 0 {
682703
c.JSON(http.StatusOK, gin.H{
@@ -685,7 +706,14 @@ func deviceAction(br *broker) gin.HandlerFunc {
685706
"data": nil,
686707
})
687708
} else {
688-
cmdr, terr := hi.CreateCmdr(db, devid, onlyid, hi.VersionCmd(name), GetVersion)
709+
var cmdr *hi.CmdrModel
710+
var terr error
711+
if action == "version" {
712+
name := c.Query("name")
713+
cmdr, terr = hi.CreateCmdr(db, devid, onlyid, hi.VersionCmd(name), GetVersion)
714+
} else {
715+
cmdr, terr = hi.CreateCmdr(db, devid, onlyid, hi.WanInfoCmd(), GetWanInfo)
716+
}
689717
if terr != nil {
690718
c.JSON(http.StatusOK, gin.H{
691719
"ret": 0,

0 commit comments

Comments
 (0)