|
|
@@ -1,46 +0,0 @@
|
|
|
-package controller
|
|
|
-
|
|
|
-import (
|
|
|
- "net"
|
|
|
- "net/url"
|
|
|
-)
|
|
|
-
|
|
|
-// Interface can be implemented by VPN servers that can be controlled via GridVPN.
|
|
|
-type Interface interface {
|
|
|
- // Start MUST cause the underlying VPN server to start accepting connections
|
|
|
- // by using the config at hand.
|
|
|
- Start() error
|
|
|
-
|
|
|
- // Stop MUST cause the underlying VPN server to stop accepting connections and freeing
|
|
|
- // the resources it had allocated.
|
|
|
- Stop() error
|
|
|
-
|
|
|
- // Reload SHOULD cause the underlying VPN server to take in effect the changes made
|
|
|
- // on the config at hand.
|
|
|
- Reload() error
|
|
|
-
|
|
|
- // Status MUST return the appropriate StatusProvider according to the state that the server is in.
|
|
|
- Status() StatusProvider
|
|
|
-
|
|
|
- // Configure accepts a new config and SHOULD reflect the changes that are made to the config at hand,
|
|
|
- // but SHOULD NOT take those changes in effect.
|
|
|
- //
|
|
|
- // Invoking Configure(ConfigProvider) with a nil ConfigProvider implies a server config reset/init.
|
|
|
- Configure(ConfigProvider) error
|
|
|
-
|
|
|
- // Config MUST return the config at hand.
|
|
|
- Config() (ConfigProvider, error)
|
|
|
-}
|
|
|
-
|
|
|
-// ConfigProvider interface represents a VPN server configuration.
|
|
|
-type ConfigProvider interface {
|
|
|
- Kind() string // The kind of the server. OpenVPN, L2TP etc..
|
|
|
- ListenAddrs() []url.URL // Server addresses to listen at.
|
|
|
- NameServers() []net.IP // DNS server addresses to push to the peers.
|
|
|
-}
|
|
|
-
|
|
|
-// StatusProvider interface represents the current status of the VPN server.
|
|
|
-type StatusProvider interface {
|
|
|
- State() string
|
|
|
- // ConnectedPeers() []Peer // Currently connected peers on the VPN server.
|
|
|
-}
|