58 lines
1.1 KiB
Go
58 lines
1.1 KiB
Go
package adapter
|
|
|
|
import (
|
|
"net/netip"
|
|
"time"
|
|
)
|
|
|
|
const (
|
|
OpenVPNStateConnecting = "connecting"
|
|
OpenVPNStateAuthPending = "auth-pending"
|
|
OpenVPNStateConnected = "connected"
|
|
OpenVPNStateError = "error"
|
|
)
|
|
|
|
type OpenVPNEndpoint interface {
|
|
Endpoint
|
|
OpenVPNStatus() OpenVPNStatus
|
|
StatusUpdated() <-chan struct{}
|
|
CompleteChallenge(challengeID string, response OpenVPNChallengeResponse) error
|
|
CancelChallenge(challengeID string) error
|
|
}
|
|
|
|
type OpenVPNStatus struct {
|
|
State string
|
|
Challenge *OpenVPNChallenge
|
|
Error string
|
|
TunnelInfo *OpenVPNTunnelInfo
|
|
}
|
|
|
|
type OpenVPNTunnelInfo struct {
|
|
Server string
|
|
Network string
|
|
Cipher string
|
|
IPv4 []netip.Prefix
|
|
IPv6 []netip.Prefix
|
|
DNS []netip.Addr
|
|
MTU uint32
|
|
ConnectedSince time.Time
|
|
}
|
|
|
|
type OpenVPNChallenge struct {
|
|
ID string
|
|
Kind string
|
|
Username string
|
|
Message string
|
|
URL string
|
|
SecretMessage string
|
|
Echo bool
|
|
PreviousError string
|
|
Deadline time.Time
|
|
}
|
|
|
|
type OpenVPNChallengeResponse struct {
|
|
Username string
|
|
Password string
|
|
Secret string
|
|
}
|