- CRUD REST HTTP server - `/v1` HTTP server prefix - Retrocompatible with older routes (redirects to v1 or handles the requests directly) - DNS, Updater and Openvpn refactored to have a REST-like state with new methods to change their states synchronously - Openvpn, Unbound and Updater status, see #287
68 lines
1.6 KiB
Go
68 lines
1.6 KiB
Go
package models
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
type (
|
|
// VPNDevice is the device name used to tunnel using Openvpn.
|
|
VPNDevice string
|
|
// DNSProvider is a DNS over TLS server provider name.
|
|
DNSProvider string
|
|
// DNSHost is the DNS host to use for TLS validation.
|
|
DNSHost string
|
|
// URL is an HTTP(s) URL address.
|
|
URL string
|
|
// Filepath is a local filesytem file path.
|
|
Filepath string
|
|
// VPNProvider is the name of the VPN provider to be used.
|
|
VPNProvider string
|
|
// NetworkProtocol contains the network protocol to be used to communicate with the VPN servers.
|
|
NetworkProtocol string
|
|
// Loop status such as stopped or running.
|
|
LoopStatus string
|
|
)
|
|
|
|
func (ls LoopStatus) String() string {
|
|
return string(ls)
|
|
}
|
|
|
|
func marshalJSONString(s string) (data []byte, err error) {
|
|
return []byte(fmt.Sprintf("%q", s)), nil
|
|
}
|
|
|
|
func unmarshalJSONString(data []byte) (s string) {
|
|
s = string(data)
|
|
s = strings.TrimPrefix(s, "\"")
|
|
s = strings.TrimSuffix(s, "\"")
|
|
return s
|
|
}
|
|
|
|
func (v *VPNProvider) MarshalJSON() ([]byte, error) {
|
|
return marshalJSONString(string(*v))
|
|
}
|
|
|
|
func (v *VPNProvider) UnmarshalJSON(data []byte) error {
|
|
*v = VPNProvider(unmarshalJSONString(data))
|
|
return nil
|
|
}
|
|
|
|
func (n *NetworkProtocol) MarshalJSON() ([]byte, error) {
|
|
return marshalJSONString(string(*n))
|
|
}
|
|
|
|
func (n *NetworkProtocol) UnmarshalJSON(data []byte) error {
|
|
*n = NetworkProtocol(unmarshalJSONString(data))
|
|
return nil
|
|
}
|
|
|
|
func (f *Filepath) MarshalJSON() ([]byte, error) {
|
|
return marshalJSONString(string(*f))
|
|
}
|
|
|
|
func (f *Filepath) UnmarshalJSON(data []byte) error {
|
|
*f = Filepath(unmarshalJSONString(data))
|
|
return nil
|
|
}
|