feat: wireguard / vproxy configuration
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user