Source — /opt/splice-src/agent/apply_unix.go

/opt/splice-src/agent/apply_unix.go

//go:build linux || darwin

package main

import (
	"fmt"
	"os"
	"os/exec"
	"path/filepath"
)

func applyConfig(iface, config string) error {
	dir := "/etc/wireguard"
	if err := os.MkdirAll(dir, 0700); err != nil {
		return err
	}
	path := filepath.Join(dir, iface+".conf")
	if err := os.WriteFile(path, []byte(config), 0600); err != nil {
		return err
	}
	exec.Command("wg-quick", "down", iface).Run()
	if out, err := exec.Command("wg-quick", "up", iface).CombinedOutput(); err != nil {
		return fmt.Errorf("wg-quick up: %v: %s", err, out)
	}
	return nil
}