forked from x/icebergs
47 lines
1.0 KiB
Go
47 lines
1.0 KiB
Go
package tcp
|
|
|
|
import (
|
|
"github.com/shylinux/icebergs"
|
|
|
|
"net"
|
|
"strings"
|
|
)
|
|
|
|
var Index = &ice.Context{Name: "tcp", Help: "网络模块",
|
|
Caches: map[string]*ice.Cache{},
|
|
Configs: map[string]*ice.Config{},
|
|
Commands: map[string]*ice.Command{
|
|
"ifconfig": {Name: "ifconfig [name]", Help: "网络配置", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
|
if ifs, e := net.Interfaces(); m.Assert(e) {
|
|
for _, v := range ifs {
|
|
if len(arg) > 0 && !strings.Contains(v.Name, arg[0]) {
|
|
continue
|
|
}
|
|
if ips, e := v.Addrs(); m.Assert(e) {
|
|
for _, x := range ips {
|
|
ip := strings.Split(x.String(), "/")
|
|
if strings.Contains(ip[0], ":") || len(ip) == 0 {
|
|
continue
|
|
}
|
|
if len(v.HardwareAddr.String()) == 0 {
|
|
continue
|
|
}
|
|
|
|
m.Push("index", v.Index)
|
|
m.Push("name", v.Name)
|
|
m.Push("ip", ip[0])
|
|
m.Push("mask", ip[1])
|
|
m.Push("hard", v.HardwareAddr.String())
|
|
}
|
|
}
|
|
}
|
|
m.Table()
|
|
}
|
|
}},
|
|
},
|
|
}
|
|
|
|
func init() {
|
|
ice.Index.Register(Index, nil)
|
|
}
|