123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- package ganserv
- import (
- "errors"
- "fmt"
- "net"
- "imuslab.com/zoraxy/mod/database"
- )
- type Node struct {
- Auth bool
- ClientID string
- MAC string
- Name string
- Description string
- ManagedIP net.IP
- LastSeen int64
- ClientVersion string
- PublicIP net.IP
- }
- type Network struct {
- UID string
- Name string
- Description string
- CIDR string
- Nodes []*Node
- }
- type NetworkManagerOptions struct {
- Database *database.Database
- }
- type NetworkManager struct {
- option *NetworkManagerOptions
- networks []*Network
- }
- func NewNetworkManager(option *NetworkManagerOptions) *NetworkManager {
- option.Database.NewTable("ganserv")
- existingNetworks := []*Network{}
- if option.Database.KeyExists("ganserv", "networks") {
- option.Database.Read("ganserv", "networks", &existingNetworks)
- }
- return &NetworkManager{
- option: option,
- networks: existingNetworks,
- }
- }
- func (m *NetworkManager) ListNetworks() []*Network {
- return m.networks
- }
- func (m *NetworkManager) AddNetwork(n *Network) error {
- if m.NetworkExists(n.UID) {
- return errors.New("network with given id already exists")
- }
- m.networks = append(m.networks, n)
-
- m.option.Database.Write("ganserv", "networks", m.networks)
- return nil
- }
- func (m *NetworkManager) RemoveNetwork(id string) error {
- for i, n := range m.networks {
- if n.UID == id {
- m.networks = append(m.networks[:i], m.networks[i+1:]...)
-
- m.option.Database.Write("ganserv", "networks", m.networks)
- return nil
- }
- }
- return fmt.Errorf("network not found: %s", id)
- }
- func (m *NetworkManager) GetNetworkByID(id string) (*Network, error) {
- for _, n := range m.networks {
- if n.UID == id {
- return n, nil
- }
- }
- return nil, fmt.Errorf("network not found: %s", id)
- }
- func (m *NetworkManager) NetworkExists(id string) bool {
- _, err := m.GetNetworkByID(id)
- return err == nil
- }
|