scaffolding to support 'vpn' backend mode

This commit is contained in:
Michael Quigley 2024-04-08 13:07:58 -04:00
parent 5a8ffdfd7e
commit eb721bb916
No known key found for this signature in database
GPG Key ID: 9B60314A9DD20A62
9 changed files with 92 additions and 6 deletions

View File

@ -9,10 +9,12 @@ command -v swagger >/dev/null 2>&1 || {
command -v openapi >/dev/null 2>&1 || { command -v openapi >/dev/null 2>&1 || {
echo >&2 "command 'openapi' not installed. see: https://www.npmjs.com/package/openapi-client for installation" echo >&2 "command 'openapi' not installed. see: https://www.npmjs.com/package/openapi-client for installation"
exit 1
} }
command -v swagger-codegen 2>&1 || { command -v swagger-codegen 2>&1 || {
echo >&2 "command 'swagger-codegen. see: https://github.com/swagger-api/swagger-codegen for installation" echo >&2 "command 'swagger-codegen. see: https://github.com/swagger-api/swagger-codegen for installation"
exit 1
} }
scriptPath=$(realpath $0) scriptPath=$(realpath $0)

View File

@ -0,0 +1,3 @@
-- +migrate Up
alter type backend_mode add value 'vpn';

View File

@ -0,0 +1,71 @@
-- +migrate Up
alter table shares rename to shares_old;
create table shares (
id integer primary key,
environment_id integer constraint fk_environments_shares references environments on delete cascade,
z_id string not null unique,
token string not null,
share_mode string not null,
backend_mode string not null,
frontend_selection string,
frontend_endpoint string,
backend_proxy_endpoint string,
reserved boolean not null default(false),
created_at datetime not null default(strftime('%Y-%m-%d %H:%M:%f', 'now')),
updated_at datetime not null default(strftime('%Y-%m-%d %H:%M:%f', 'now')),
deleted boolean not null default(false),
permission_mode string not null default('open'),
constraint chk_z_id check (z_id <> ''),
constraint chk_token check (token <> ''),
constraint chk_share_mode check (share_mode == 'public' or share_mode == 'private'),
constraint chk_backend_mode check (backend_mode == 'proxy' or backend_mode == 'web' or backend_mode == 'tcpTunnel' or backend_mode == 'udpTunnel' or backend_mode == 'caddy' or backend_mode == 'drive' or backend_mode == 'socks' or backend_mode == 'vpn')
);
insert into shares select * from shares_old;
drop index shares_token_idx;
create unique index shares_token_idx ON shares(token) WHERE deleted is false;
alter table frontends rename to frontends_old;
create table frontends (
id integer primary key,
environment_id integer references environments(id),
token varchar(32) not null unique,
z_id varchar(32) not null,
public_name varchar(64) unique,
url_template varchar(1024),
reserved boolean not null default(false),
created_at datetime not null default(strftime('%Y-%m-%d %H:%M:%f', 'now')),
updated_at datetime not null default(strftime('%Y-%m-%d %H:%M:%f', 'now')),
deleted boolean not null default(false),
private_share_id integer references shares(id)
);
insert into frontends select * from frontends_old;
drop table frontends_old;
alter table share_limit_journal rename to share_limit_journal_old;
create table share_limit_journal (
id integer primary key,
share_id integer references shares(id),
rx_bytes bigint not null,
tx_bytes bigint not null,
action limit_action_type not null,
created_at datetime not null default(strftime('%Y-%m-%d %H:%M:%f', 'now')),
updated_at datetime not null default(strftime('%Y-%m-%d %H:%M:%f', 'now'))
);
insert into share_limit_journal select * from share_limit_journal_old;
drop table share_limit_journal_old;
alter table access_grants rename to access_grants_old;
create table access_grants (
id integer primary key,
share_id integer references shares(id),
account_id integer references accounts(id),
created_at datetime not null default(strftime('%Y-%m-%d %H:%M:%f', 'now')),
updated_at datetime not null default(strftime('%Y-%m-%d %H:%M:%f', 'now')),
deleted boolean not null default(false)
);
insert into access_grants select * from access_grants_old;
drop table access_grants_old;
drop table shares_old;

View File

@ -31,7 +31,7 @@ type ShareRequest struct {
AuthUsers []*AuthUser `json:"authUsers"` AuthUsers []*AuthUser `json:"authUsers"`
// backend mode // backend mode
// Enum: [proxy web tcpTunnel udpTunnel caddy drive socks] // Enum: [proxy web tcpTunnel udpTunnel caddy drive socks vpn]
BackendMode string `json:"backendMode,omitempty"` BackendMode string `json:"backendMode,omitempty"`
// backend proxy endpoint // backend proxy endpoint
@ -128,7 +128,7 @@ var shareRequestTypeBackendModePropEnum []interface{}
func init() { func init() {
var res []string var res []string
if err := json.Unmarshal([]byte(`["proxy","web","tcpTunnel","udpTunnel","caddy","drive","socks"]`), &res); err != nil { if err := json.Unmarshal([]byte(`["proxy","web","tcpTunnel","udpTunnel","caddy","drive","socks","vpn"]`), &res); err != nil {
panic(err) panic(err)
} }
for _, v := range res { for _, v := range res {
@ -158,6 +158,9 @@ const (
// ShareRequestBackendModeSocks captures enum value "socks" // ShareRequestBackendModeSocks captures enum value "socks"
ShareRequestBackendModeSocks string = "socks" ShareRequestBackendModeSocks string = "socks"
// ShareRequestBackendModeVpn captures enum value "vpn"
ShareRequestBackendModeVpn string = "vpn"
) )
// prop value enum // prop value enum

View File

@ -1589,7 +1589,8 @@ func init() {
"udpTunnel", "udpTunnel",
"caddy", "caddy",
"drive", "drive",
"socks" "socks",
"vpn"
] ]
}, },
"backendProxyEndpoint": { "backendProxyEndpoint": {
@ -3344,7 +3345,8 @@ func init() {
"udpTunnel", "udpTunnel",
"caddy", "caddy",
"drive", "drive",
"socks" "socks",
"vpn"
] ]
}, },
"backendProxyEndpoint": { "backendProxyEndpoint": {

View File

@ -11,6 +11,8 @@ const (
UdpTunnelBackendMode BackendMode = "udpTunnel" UdpTunnelBackendMode BackendMode = "udpTunnel"
CaddyBackendMode BackendMode = "caddy" CaddyBackendMode BackendMode = "caddy"
DriveBackendMode BackendMode = "drive" DriveBackendMode BackendMode = "drive"
SocksBackendMode BackendMode = "socks"
VpnBackendMode BackendMode = "vpn"
) )
type ShareMode string type ShareMode string

View File

@ -7,6 +7,9 @@ WEB_BACKEND_MODE: BackendMode = "web"
TCP_TUNNEL_BACKEND_MODE: BackendMode = "tcpTunnel" TCP_TUNNEL_BACKEND_MODE: BackendMode = "tcpTunnel"
UDP_TUNNEL_BACKEND_MODE: BackendMode = "udpTunnel" UDP_TUNNEL_BACKEND_MODE: BackendMode = "udpTunnel"
CADDY_BACKEND_MODE: BackendMode = "caddy" CADDY_BACKEND_MODE: BackendMode = "caddy"
DRIVE_BACKEND_MODE: BackendMode = "drive"
SOCKS_BACKEND_MODE: BackendMode = "socks"
VPN_BACKEND_MODE: BackendMode = "vpn"
ShareMode = str ShareMode = str

View File

@ -194,7 +194,7 @@ class ShareRequest(object):
:param backend_mode: The backend_mode of this ShareRequest. # noqa: E501 :param backend_mode: The backend_mode of this ShareRequest. # noqa: E501
:type: str :type: str
""" """
allowed_values = ["proxy", "web", "tcpTunnel", "udpTunnel", "caddy", "drive", "socks"] # noqa: E501 allowed_values = ["proxy", "web", "tcpTunnel", "udpTunnel", "caddy", "drive", "socks", "vpn"] # noqa: E501
if backend_mode not in allowed_values: if backend_mode not in allowed_values:
raise ValueError( raise ValueError(
"Invalid value for `backend_mode` ({0}), must be one of {1}" # noqa: E501 "Invalid value for `backend_mode` ({0}), must be one of {1}" # noqa: E501

View File

@ -1039,7 +1039,7 @@ definitions:
type: string type: string
backendMode: backendMode:
type: string type: string
enum: ["proxy", "web", "tcpTunnel", "udpTunnel", "caddy", "drive", "socks"] enum: ["proxy", "web", "tcpTunnel", "udpTunnel", "caddy", "drive", "socks", "vpn"]
backendProxyEndpoint: backendProxyEndpoint:
type: string type: string
authScheme: authScheme: