store and api changes for socks backend (#558)

This commit is contained in:
Michael Quigley 2024-02-08 13:11:19 -05:00
parent 31bc4b6833
commit 1db29fdc11
No known key found for this signature in database
GPG Key ID: 9B60314A9DD20A62
6 changed files with 71 additions and 6 deletions

View File

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

View File

@ -0,0 +1,57 @@
-- +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),
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')
);
insert into shares select * from shares_old;
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;
drop table shares_old;

View File

@ -28,7 +28,7 @@ type ShareRequest struct {
AuthUsers []*AuthUser `json:"authUsers"` AuthUsers []*AuthUser `json:"authUsers"`
// backend mode // backend mode
// Enum: [proxy web tcpTunnel udpTunnel caddy drive] // Enum: [proxy web tcpTunnel udpTunnel caddy drive socks]
BackendMode string `json:"backendMode,omitempty"` BackendMode string `json:"backendMode,omitempty"`
// backend proxy endpoint // backend proxy endpoint
@ -117,7 +117,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"]`), &res); err != nil { if err := json.Unmarshal([]byte(`["proxy","web","tcpTunnel","udpTunnel","caddy","drive","socks"]`), &res); err != nil {
panic(err) panic(err)
} }
for _, v := range res { for _, v := range res {
@ -144,6 +144,9 @@ const (
// ShareRequestBackendModeDrive captures enum value "drive" // ShareRequestBackendModeDrive captures enum value "drive"
ShareRequestBackendModeDrive string = "drive" ShareRequestBackendModeDrive string = "drive"
// ShareRequestBackendModeSocks captures enum value "socks"
ShareRequestBackendModeSocks string = "socks"
) )
// prop value enum // prop value enum

View File

@ -1476,7 +1476,8 @@ func init() {
"tcpTunnel", "tcpTunnel",
"udpTunnel", "udpTunnel",
"caddy", "caddy",
"drive" "drive",
"socks"
] ]
}, },
"backendProxyEndpoint": { "backendProxyEndpoint": {
@ -3099,7 +3100,8 @@ func init() {
"tcpTunnel", "tcpTunnel",
"udpTunnel", "udpTunnel",
"caddy", "caddy",
"drive" "drive",
"socks"
] ]
}, },
"backendProxyEndpoint": { "backendProxyEndpoint": {

View File

@ -184,7 +184,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"] # noqa: E501 allowed_values = ["proxy", "web", "tcpTunnel", "udpTunnel", "caddy", "drive", "socks"] # 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

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