feat: wireguard / vproxy configuration

This commit is contained in:
jb
2026-03-11 16:00:26 -03:00
parent 085cda7251
commit c622abf194
10 changed files with 398 additions and 45 deletions
+47
View File
@@ -30,6 +30,7 @@ func GenerateConfigTOML(cv ConfigValues) (string, error) {
// [certificate]
sb.WriteString("# Certificate Options\n")
sb.WriteString("[certificate]\n")
sb.WriteString(fmt.Sprintf("mapped_dir = %q\n", cv.Cert["cert_dir_path"]))
sb.WriteString(fmt.Sprintf("cert_path = %q\n", "/app/certs/"+cv.Cert["cert_name"]))
sb.WriteString(fmt.Sprintf("key_path = %q\n", "/app/certs/"+cv.Cert["key_name"]))
sb.WriteString(fmt.Sprintf("ca_path = %q\n", "/app/certs/"+cv.Cert["ca_name"]))
@@ -52,6 +53,36 @@ func GenerateConfigTOML(cv ConfigValues) (string, error) {
return sb.String(), nil
}
func GenerateWireguardConfig(cv ConfigValues) (string, error) {
var sb strings.Builder
// Primary Wireguard Settings
sb.WriteString(fmt.Sprintf("PRIVKEY=%s\n", cv.Wireguard["privkey"]))
sb.WriteString(fmt.Sprintf("VIP=%s\n", cv.Wireguard["vip"]))
sb.WriteString(fmt.Sprintf("PSK=%s\n", cv.Wireguard["psk"]))
sb.WriteString(fmt.Sprintf("PROXY_EDPS=%s\n", cv.Wireguard["proxy_edps"]))
sb.WriteString("\n# MTU Opcional\n")
if mtu, ok := cv.Wireguard["mtu"]; ok && mtu != "" {
sb.WriteString(fmt.Sprintf("MTU=%s\n", mtu))
} else {
sb.WriteString("# MTU=1380\n")
}
sb.WriteString("\n# Especifica o protocolo de transmissao\n")
sb.WriteString("# Default: UDP -> Manter se possivel, melhor performance e estabilidade.\n")
sb.WriteString("# Alguns firewalls restritivos podem impedir o trafego UDP.\n")
sb.WriteString("# Se nao for possivel negociar a abertura com o cliente, tentar usar TCP\n")
proto := cv.Wireguard["proto"]
if proto == "" {
proto = "UDP"
}
sb.WriteString(fmt.Sprintf("PROTO=%s\n", proto))
return sb.String(), nil
}
func WriteConfigFile(cv ConfigValues, path string) error {
// Validate numeric fields before writing
numericFields := map[string]string{
@@ -73,3 +104,19 @@ func WriteConfigFile(cv ConfigValues, path string) error {
return os.WriteFile(path, []byte(content), 0644)
}
func WriteWireguardConfigFile(cv ConfigValues, path string) error {
// Validate numeric fields before writing
if mtu, ok := cv.Wireguard["mtu"]; ok && mtu != "" {
if _, err := strconv.Atoi(mtu); err != nil {
return fmt.Errorf("o campo MTU deve ser um número, recebido: %q", mtu)
}
}
content, err := GenerateWireguardConfig(cv)
if err != nil {
return err
}
return os.WriteFile(path, []byte(content), 0644)
}