mirror of
https://github.com/tobychui/zoraxy.git
synced 2025-06-23 07:53:05 +02:00
56 lines
930 B
Go
56 lines
930 B
Go
package netstat
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net"
|
|
"net/http"
|
|
|
|
"imuslab.com/zoraxy/mod/utils"
|
|
)
|
|
|
|
type NetworkInterface struct {
|
|
Name string
|
|
ID int
|
|
IPs []string
|
|
}
|
|
|
|
func HandleListNetworkInterfaces(w http.ResponseWriter, r *http.Request) {
|
|
nic, err := ListNetworkInterfaces()
|
|
if err != nil {
|
|
utils.SendErrorResponse(w, err.Error())
|
|
return
|
|
}
|
|
|
|
js, _ := json.Marshal(nic)
|
|
utils.SendJSONResponse(w, string(js))
|
|
}
|
|
|
|
func ListNetworkInterfaces() ([]NetworkInterface, error) {
|
|
var interfaces []NetworkInterface
|
|
|
|
ifaces, err := net.Interfaces()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
for _, iface := range ifaces {
|
|
var ips []string
|
|
addrs, err := iface.Addrs()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
for _, addr := range addrs {
|
|
ips = append(ips, addr.String())
|
|
}
|
|
|
|
interfaces = append(interfaces, NetworkInterface{
|
|
Name: iface.Name,
|
|
ID: iface.Index,
|
|
IPs: ips,
|
|
})
|
|
}
|
|
|
|
return interfaces, nil
|
|
}
|