Documentation ¶
Index ¶
- Constants
- Variables
- type Config
- type Device
- func (d Device) GetConfig() wgtypes.Config
- func (d Device) GetConfigFile(peers []Peer, friendlyNames bool) ([]byte, error)
- func (d Device) GetDNSServers() []string
- func (d Device) GetDefaultAllowedIPs() []string
- func (d Device) GetIPAddresses() []string
- func (d Device) IsValid() bool
- func (d *Device) SetDNSServers(addresses ...string)
- func (d *Device) SetDefaultAllowedIPs(addresses ...string)
- func (d *Device) SetIPAddresses(addresses ...string)
- type DeviceType
- type Manager
- func (m *Manager) AddPeer(device string, cfg wgtypes.PeerConfig) error
- func (m *Manager) GetDeviceInfo(device string) (*wgtypes.Device, error)
- func (m *Manager) GetIPAddress(device string) ([]string, error)
- func (m *Manager) GetMTU(device string) (int, error)
- func (m *Manager) GetPeer(device string, pubKey string) (*wgtypes.Peer, error)
- func (m *Manager) GetPeerList(device string) ([]wgtypes.Peer, error)
- func (m *Manager) Init() error
- func (m *Manager) RemovePeer(device string, pubKey string) error
- func (m *Manager) SetIPAddress(device string, cidrs []string) error
- func (m *Manager) SetMTU(device string, mtu int) error
- func (m *Manager) UpdateDevice(device string, cfg wgtypes.Config) error
- func (m *Manager) UpdatePeer(device string, cfg wgtypes.PeerConfig) error
- type Peer
- func (p Peer) GetAllowedIPs() []string
- func (p Peer) GetAllowedIPsSrv() []string
- func (p Peer) GetConfig(dev *Device) wgtypes.PeerConfig
- func (p Peer) GetConfigFile(device Device) ([]byte, error)
- func (p Peer) GetConfigFileName() string
- func (p Peer) GetDNSServers() []string
- func (p Peer) GetIPAddresses() []string
- func (p Peer) GetQRCode() ([]byte, error)
- func (p Peer) IsDeactivated() bool
- func (p Peer) IsExpired() bool
- func (p Peer) IsValid() bool
- func (p *Peer) SetAllowedIPs(addresses ...string)
- func (p *Peer) SetDNSServers(addresses ...string)
- func (p *Peer) SetIPAddresses(addresses ...string)
- func (p Peer) WillExpire() bool
- type PeerManager
- func (m *PeerManager) CreatePeer(peer Peer) error
- func (m *PeerManager) DeletePeer(peer Peer) error
- func (m *PeerManager) GetActivePeers(device string) []Peer
- func (m *PeerManager) GetAllPeers(device string) []Peer
- func (m *PeerManager) GetAllReservedIps(device string) ([]string, error)
- func (m *PeerManager) GetAvailableIp(device string, cidr string) (string, error)
- func (m *PeerManager) GetDevice(device string) Device
- func (m *PeerManager) GetFilteredAndSortedPeers(device, sortKey, sortDirection, search string) []Peer
- func (m *PeerManager) GetPeerByKey(publicKey string) Peer
- func (m *PeerManager) GetPeersByMail(mail string) []Peer
- func (m *PeerManager) GetSortedPeersForEmail(sortKey, sortDirection, email string) []Peer
- func (m *PeerManager) IsIPReserved(device string, cidr string) bool
- func (m *PeerManager) UpdateDevice(device Device) error
- func (m *PeerManager) UpdatePeer(peer Peer) error
Constants ¶
View Source
const ( DeactivatedReasonExpired = "expired" DeactivatedReasonUserEdit = "user edit action" DeactivatedReasonUserCreate = "user create action" DeactivatedReasonAdminEdit = "admin edit action" DeactivatedReasonAdminCreate = "admin create action" DeactivatedReasonApiEdit = "api edit action" DeactivatedReasonApiCreate = "api create action" DeactivatedReasonLdapMissing = "missing in ldap" DeactivatedReasonUserMissing = "missing user" )
View Source
const DefaultMTU = 1420
Variables ¶
View Source
var Templates embed.FS
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct { DeviceNames []string `yaml:"devices" envconfig:"WG_DEVICES"` // managed devices DefaultDeviceName string `yaml:"defaultDevice" envconfig:"WG_DEFAULT_DEVICE"` // this device is used for auto-created peers, use GetDefaultDeviceName() to access this field ConfigDirectoryPath string `yaml:"configDirectory" envconfig:"WG_CONFIG_PATH"` // optional, if set, updates will be written to this path, filename: <devicename>.conf ManageIPAddresses bool `yaml:"manageIPAddresses" envconfig:"MANAGE_IPS"` // handle ip-address setup of interface UserManagePeers bool `yaml:"userManagePeers" envconfig:"USER_MANAGE_PEERS"` // user can manage own peers }
func (Config) GetDefaultDeviceName ¶ added in v1.0.4
type Device ¶ added in v1.0.4
type Device struct { Interface *wgtypes.Device `gorm:"-" json:"-"` Peers []Peer `gorm:"foreignKey:DeviceName" binding:"-" json:"-"` // linked WireGuard peers Type DeviceType `form:"devicetype" binding:"required,oneof=client server"` DeviceName string `form:"device" gorm:"primaryKey" binding:"required" validator:"regexp=[0-9a-zA-Z\\-]+"` DisplayName string `form:"displayname" binding:"omitempty,max=200"` // Core WireGuard Settings (Interface section) PrivateKey string `form:"privkey" binding:"required,base64"` ListenPort int `form:"port" binding:"required_if=Type server,omitempty,gt=0,lt=65535"` FirewallMark int32 `form:"firewallmark" binding:"gte=0"` // Misc. WireGuard Settings PublicKey string `form:"pubkey" binding:"required,base64"` Mtu int `form:"mtu" binding:"gte=0,lte=1500"` // the interface MTU, wg-quick addition IPsStr string `form:"ip" binding:"required,cidrlist"` // comma separated list of the IPs of the client, wg-quick addition DNSStr string `form:"dns" binding:"dnsList"` // comma separated list of the DNS servers of the client, wg-quick addition RoutingTable string `form:"routingtable"` // the routing table, wg-quick addition PreUp string `form:"preup"` // pre up script, wg-quick addition PostUp string `form:"postup"` // post up script, wg-quick addition PreDown string `form:"predown"` // pre down script, wg-quick addition PostDown string `form:"postdown"` // post down script, wg-quick addition SaveConfig bool `form:"saveconfig"` // if set to `true', the configuration is saved from the current state of the interface upon shutdown, wg-quick addition // Settings that are applied to all peer by default DefaultEndpoint string `form:"endpoint" binding:"required_if=Type server,omitempty,hostname_port"` DefaultAllowedIPsStr string `form:"allowedip" binding:"cidrlist"` // comma separated list of IPs that are used in the client config file DefaultPersistentKeepalive int `form:"keepalive" binding:"gte=0"` CreatedAt time.Time UpdatedAt time.Time }
func (Device) GetConfigFile ¶ added in v1.0.4
func (Device) GetDNSServers ¶ added in v1.0.5
func (Device) GetDefaultAllowedIPs ¶ added in v1.0.5
func (Device) GetIPAddresses ¶ added in v1.0.5
func (*Device) SetDNSServers ¶ added in v1.0.5
func (*Device) SetDefaultAllowedIPs ¶ added in v1.0.5
func (*Device) SetIPAddresses ¶ added in v1.0.5
type DeviceType ¶ added in v1.0.5
type DeviceType string
const ( DeviceTypeServer DeviceType = "server" DeviceTypeClient DeviceType = "client" )
type Manager ¶
type Manager struct { Cfg *Config // contains filtered or unexported fields }
Manager offers a synchronized management interface to the real WireGuard interface.
func (*Manager) GetDeviceInfo ¶
func (*Manager) GetIPAddress ¶ added in v1.0.2
func (*Manager) SetIPAddress ¶ added in v1.0.2
func (*Manager) UpdateDevice ¶
func (*Manager) UpdatePeer ¶
func (m *Manager) UpdatePeer(device string, cfg wgtypes.PeerConfig) error
type Peer ¶ added in v1.0.4
type Peer struct { Peer *wgtypes.Peer `gorm:"-" json:"-"` // WireGuard peer Config string `gorm:"-" json:"-"` UID string `form:"uid" binding:"required,alphanum"` // uid for html identification DeviceName string `gorm:"index" form:"device" binding:"required"` // server interface name DeviceType DeviceType `gorm:"-" form:"devicetype" binding:"required,oneof=client server"` // the device type of the server (not the peer device) Identifier string `form:"identifier" binding:"required,max=64"` // Identifier AND Email make a WireGuard peer unique Email string `gorm:"index" form:"mail" binding:"required,email"` IgnoreGlobalSettings bool `form:"ignoreglobalsettings"` IsOnline bool `gorm:"-" json:"-"` IsNew bool `gorm:"-" json:"-"` LastHandshake string `gorm:"-" json:"-"` LastHandshakeTime string `gorm:"-" json:"-"` // Core WireGuard Settings PublicKey string `gorm:"primaryKey" form:"pubkey" binding:"required,base64"` // the public key of the peer itself AllowedIPsStr string `form:"allowedip" binding:"cidrlist"` // a comma separated list of IPs that are used in the client config file AllowedIPsSrvStr string `form:"allowedipSrv" binding:"cidrlist"` // a comma separated list of IPs that are used in the server config file Endpoint string `form:"endpoint" binding:"omitempty,hostname_port"` PersistentKeepalive int `form:"keepalive" binding:"gte=0"` // Misc. WireGuard Settings PrivateKey string `form:"privkey" binding:"omitempty,base64"` IPsStr string `form:"ip" binding:"cidrlist,required_if=DeviceType server"` // a comma separated list of IPs of the client DNSStr string `form:"dns" binding:"dnsList"` // comma separated list of the DNS servers for the client // Global Device Settings (can be ignored, only make sense if device is in server mode) Mtu int `form:"mtu" binding:"gte=0,lte=1500"` DeactivatedAt *time.Time `json:",omitempty"` DeactivatedReason string `json:",omitempty"` ExpiresAt *time.Time `json:",omitempty" form:"expires_at" binding:"omitempty" time_format:"2006-01-02"` CreatedBy string UpdatedBy string CreatedAt time.Time UpdatedAt time.Time }
func (Peer) GetAllowedIPs ¶ added in v1.0.5
func (Peer) GetAllowedIPsSrv ¶ added in v1.0.9
func (Peer) GetConfigFile ¶ added in v1.0.4
func (Peer) GetConfigFileName ¶ added in v1.0.4
func (Peer) GetDNSServers ¶ added in v1.0.5
func (Peer) GetIPAddresses ¶ added in v1.0.5
func (Peer) IsDeactivated ¶ added in v1.0.16
func (*Peer) SetAllowedIPs ¶ added in v1.0.5
func (*Peer) SetDNSServers ¶ added in v1.0.5
func (*Peer) SetIPAddresses ¶ added in v1.0.5
func (Peer) WillExpire ¶ added in v1.0.16
type PeerManager ¶ added in v1.0.4
type PeerManager struct {
// contains filtered or unexported fields
}
func NewPeerManager ¶ added in v1.0.4
func NewPeerManager(db *gorm.DB, wg *Manager) (*PeerManager, error)
func (*PeerManager) CreatePeer ¶ added in v1.0.4
func (m *PeerManager) CreatePeer(peer Peer) error
func (*PeerManager) DeletePeer ¶ added in v1.0.4
func (m *PeerManager) DeletePeer(peer Peer) error
func (*PeerManager) GetActivePeers ¶ added in v1.0.4
func (m *PeerManager) GetActivePeers(device string) []Peer
func (*PeerManager) GetAllPeers ¶ added in v1.0.4
func (m *PeerManager) GetAllPeers(device string) []Peer
func (*PeerManager) GetAllReservedIps ¶ added in v1.0.4
func (m *PeerManager) GetAllReservedIps(device string) ([]string, error)
func (*PeerManager) GetAvailableIp ¶ added in v1.0.4
func (m *PeerManager) GetAvailableIp(device string, cidr string) (string, error)
GetAvailableIp search for an available ip in cidr against a list of reserved ips
func (*PeerManager) GetDevice ¶ added in v1.0.4
func (m *PeerManager) GetDevice(device string) Device
func (*PeerManager) GetFilteredAndSortedPeers ¶ added in v1.0.4
func (m *PeerManager) GetFilteredAndSortedPeers(device, sortKey, sortDirection, search string) []Peer
func (*PeerManager) GetPeerByKey ¶ added in v1.0.4
func (m *PeerManager) GetPeerByKey(publicKey string) Peer
func (*PeerManager) GetPeersByMail ¶ added in v1.0.4
func (m *PeerManager) GetPeersByMail(mail string) []Peer
func (*PeerManager) GetSortedPeersForEmail ¶ added in v1.0.4
func (m *PeerManager) GetSortedPeersForEmail(sortKey, sortDirection, email string) []Peer
func (*PeerManager) IsIPReserved ¶ added in v1.0.4
func (m *PeerManager) IsIPReserved(device string, cidr string) bool
func (*PeerManager) UpdateDevice ¶ added in v1.0.4
func (m *PeerManager) UpdateDevice(device Device) error
func (*PeerManager) UpdatePeer ¶ added in v1.0.4
func (m *PeerManager) UpdatePeer(peer Peer) error
Click to show internal directories.
Click to hide internal directories.