mirror of
https://github.com/bettercap/bettercap
synced 2025-08-14 02:36:57 -07:00
new: exporting available network interfaces in /api/session for api.rest
This commit is contained in:
parent
4f54b12ee1
commit
72370dec58
2 changed files with 103 additions and 65 deletions
84
session/session_json.go
Normal file
84
session/session_json.go
Normal file
|
@ -0,0 +1,84 @@
|
|||
package session
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net"
|
||||
"runtime"
|
||||
"time"
|
||||
|
||||
"github.com/bettercap/bettercap/caplets"
|
||||
"github.com/bettercap/bettercap/core"
|
||||
"github.com/bettercap/bettercap/network"
|
||||
"github.com/bettercap/bettercap/packets"
|
||||
)
|
||||
|
||||
type ifaceJSON struct {
|
||||
Index int `json:"index"`
|
||||
MTU int `json:"mtu"`
|
||||
Name string `json:"name"`
|
||||
MAC string `json:"mac"`
|
||||
Flags net.Flags `json:"flags"`
|
||||
}
|
||||
|
||||
type sessionJSON struct {
|
||||
Version string `json:"version"`
|
||||
OS string `json:"os"`
|
||||
Arch string `json:"arch"`
|
||||
GoVersion string `json:"goversion"`
|
||||
Interfaces []ifaceJSON `json:"interfaces"`
|
||||
Options core.Options `json:"options"`
|
||||
Interface *network.Endpoint `json:"interface"`
|
||||
Gateway *network.Endpoint `json:"gateway"`
|
||||
Env *Environment `json:"env"`
|
||||
Lan *network.LAN `json:"lan"`
|
||||
WiFi *network.WiFi `json:"wifi"`
|
||||
BLE *network.BLE `json:"ble"`
|
||||
HID *network.HID `json:"hid"`
|
||||
Queue *packets.Queue `json:"packets"`
|
||||
StartedAt time.Time `json:"started_at"`
|
||||
Active bool `json:"active"`
|
||||
GPS GPS `json:"gps"`
|
||||
Modules ModuleList `json:"modules"`
|
||||
Caplets []*caplets.Caplet `json:"caplets"`
|
||||
}
|
||||
|
||||
func (s *Session) MarshalJSON() ([]byte, error) {
|
||||
doc := sessionJSON{
|
||||
Version: core.Version,
|
||||
OS: runtime.GOOS,
|
||||
Arch: runtime.GOARCH,
|
||||
GoVersion: runtime.Version(),
|
||||
Interfaces: make([]ifaceJSON, 0),
|
||||
Options: s.Options,
|
||||
Interface: s.Interface,
|
||||
Gateway: s.Gateway,
|
||||
Env: s.Env,
|
||||
Lan: s.Lan,
|
||||
WiFi: s.WiFi,
|
||||
BLE: s.BLE,
|
||||
HID: s.HID,
|
||||
Queue: s.Queue,
|
||||
StartedAt: s.StartedAt,
|
||||
Active: s.Active,
|
||||
GPS: s.GPS,
|
||||
Modules: s.Modules,
|
||||
Caplets: caplets.List(),
|
||||
}
|
||||
|
||||
ifaces, err := net.Interfaces()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for _, iface := range ifaces {
|
||||
doc.Interfaces = append(doc.Interfaces, ifaceJSON{
|
||||
Index: iface.Index,
|
||||
MTU: iface.MTU,
|
||||
Name: iface.Name,
|
||||
MAC: iface.HardwareAddr.String(),
|
||||
Flags: iface.Flags,
|
||||
})
|
||||
}
|
||||
|
||||
return json.Marshal(doc)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue