mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-08-24 03:47:15 +00:00
bd6a6aba43
* feat(pia): add login-and-add WireGuard outbounds (#2) * fix(pia): keep PIA outbounds identifiable after the editor strips hostname The outbound editor drops piaHostname, so last-segment matching failed for hyphenated servers. Identify rows by the computed tag, re-encrypt stored tokens onto the active key, skip unusable catalog rows, and always release the catalog refresh latch.
44 lines
826 B
Go
44 lines
826 B
Go
// Package pia is a standalone PIA WireGuard control-plane client.
|
|
package pia
|
|
|
|
import (
|
|
"context"
|
|
"net/netip"
|
|
"time"
|
|
)
|
|
|
|
type Region struct {
|
|
ID string
|
|
Name string
|
|
CountryCode string
|
|
Geo bool
|
|
PortForwarding bool
|
|
WireGuard []WireGuardServer
|
|
}
|
|
|
|
type WireGuardServer struct {
|
|
Hostname string
|
|
IP netip.Addr
|
|
}
|
|
|
|
type Token struct {
|
|
Value []byte
|
|
ExpiresAt time.Time
|
|
}
|
|
|
|
type Registration struct {
|
|
PeerIP netip.Prefix
|
|
ServerKey string
|
|
ServerIP netip.Addr
|
|
ServerPort uint16
|
|
DNSServers []netip.Addr
|
|
}
|
|
|
|
type Authenticator interface {
|
|
Authenticate(ctx context.Context, username string, password []byte) (Token, error)
|
|
}
|
|
|
|
type Registrar interface {
|
|
RegisterKey(ctx context.Context, server WireGuardServer, token string, publicKey string) (Registration, error)
|
|
}
|