feat: discard syncthing log (#272)

This commit is contained in:
naison
2024-06-22 10:33:37 +08:00
committed by GitHub
parent 28d2e78d04
commit 4aeee5f8d8
6 changed files with 22 additions and 10 deletions

View File

@@ -12,6 +12,9 @@ const (
SyncthingGUIDir = "gui"
DefaultRemoteDir = "/kubevpn-data"
// EnvDisableSyncthingLog disable syncthing log, because it can not set output writer, only write os.Stdout or io.Discard
EnvDisableSyncthingLog = "LOGGER_DISCARD"
)
var LocalCert tls.Certificate

View File

@@ -6,7 +6,6 @@ import (
"fmt"
"net"
"net/url"
"os"
"path/filepath"
"sort"
"strconv"
@@ -132,6 +131,10 @@ func (d *CloneOptions) SetContext(ctx context.Context) {
* 4) modify podTempSpec inject kubevpn container
*/
func (d *CloneOptions) DoClone(ctx context.Context, kubeconfigJsonBytes []byte) error {
var args []string
if len(d.Headers) != 0 {
args = append(args, "--headers", labels.Set(d.Headers).String())
}
for _, workload := range d.Workloads {
log.Infof("clone workload %s", workload)
object, err := util.GetUnstructuredObject(d.factory, d.Namespace, workload)
@@ -281,17 +284,16 @@ func (d *CloneOptions) DoClone(ctx context.Context, kubeconfigJsonBytes []byte)
Name: config.ContainerSidecarVPN,
Image: config.Image,
// https://stackoverflow.com/questions/32918849/what-process-signal-does-pod-receive-when-executing-kubectl-rolling-update
Command: []string{
Command: append([]string{
"kubevpn",
"proxy",
workload,
"--kubeconfig", "/tmp/.kube/" + config.KUBECONFIG,
"--namespace", d.Namespace,
"--headers", labels.Set(d.Headers).String(),
"--image", config.Image,
"--engine", string(d.Engine),
"--foreground",
},
}, args...),
Env: []v1.EnvVar{{
Name: config.EnvStartSudoKubeVPNByKubeVPN,
Value: "1",
@@ -411,8 +413,6 @@ func (d *CloneOptions) DoClone(ctx context.Context, kubeconfigJsonBytes []byte)
remoteAddr := net.JoinHostPort(list[0].Status.PodIP, strconv.Itoa(libconfig.DefaultTCPPort))
localPort, _ := util.GetAvailableTCPPortOrDie()
localAddr := net.JoinHostPort("127.0.0.1", strconv.Itoa(localPort))
// disable synchting log, because it can not set output writer, only write std.Out or discard
_ = os.Setenv("LOGGER_DISCARD", "1")
err = syncthing.StartClient(d.ctx, d.LocalDir, localAddr, remoteAddr)
if err != nil {
return err

View File

@@ -10,6 +10,8 @@ import (
log "github.com/sirupsen/logrus"
"k8s.io/client-go/tools/clientcmd"
"github.com/wencaiwulue/kubevpn/v2/pkg/config"
)
func RunCmdWithElevated(exe string, args []string) error {
@@ -25,7 +27,7 @@ func RunCmdWithElevated(exe string, args []string) error {
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
cmd.Stdin = os.Stdin
cmd.Env = append(os.Environ(), envStartSudoKubeVPNByKubeVPN+"=1")
cmd.Env = append(os.Environ(), envStartSudoKubeVPNByKubeVPN+"=1", config.EnvDisableSyncthingLog+"=1")
err := cmd.Start()
if err != nil {
return err
@@ -52,7 +54,7 @@ func RunCmd(exe string, args []string) error {
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
cmd.Stdin = os.Stdin
cmd.Env = append(os.Environ(), envStartSudoKubeVPNByKubeVPN+"=1")
cmd.Env = append(os.Environ(), envStartSudoKubeVPNByKubeVPN+"=1", config.EnvDisableSyncthingLog+"=1")
err := cmd.Start()
if err != nil {
return err

View File

@@ -11,6 +11,8 @@ import (
"github.com/sirupsen/logrus"
"golang.org/x/sys/windows"
"github.com/wencaiwulue/kubevpn/v2/pkg/config"
)
// ref https://stackoverflow.com/questions/31558066/how-to-ask-for-administer-privileges-on-windows-with-go
@@ -42,6 +44,7 @@ func RunCmdWithElevated(exe string, arg []string) error {
//https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-showwindow
var showCmd int32 = 0 //SW_NORMAL
os.Setenv(config.EnvDisableSyncthingLog, "1")
err = windows.ShellExecute(0, verbPtr, exePtr, argPtr, cwdPtr, showCmd)
if err != nil {
logrus.Warn(err)

View File

@@ -33,7 +33,7 @@ func RunWithElevated() {
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
cmd.Stdin = os.Stdin
cmd.Env = append(os.Environ(), envStartSudoKubeVPNByKubeVPN+"=1")
cmd.Env = append(os.Environ(), envStartSudoKubeVPNByKubeVPN+"=1", config.EnvDisableSyncthingLog+"=1")
// while send single CTRL+C, command will quit immediately, but output will cut off and print util quit final
// so, mute single CTRL+C, let inner command handle single only
go func() {

View File

@@ -11,6 +11,8 @@ import (
"github.com/sirupsen/logrus"
"golang.org/x/sys/windows"
"github.com/wencaiwulue/kubevpn/v2/pkg/config"
)
// ref https://stackoverflow.com/questions/31558066/how-to-ask-for-administer-privileges-on-windows-with-go
@@ -27,6 +29,7 @@ func RunWithElevated() {
var showCmd int32 = 1 //SW_NORMAL
os.Setenv(config.EnvDisableSyncthingLog, "1")
err := windows.ShellExecute(0, verbPtr, exePtr, argPtr, cwdPtr, showCmd)
if err != nil {
logrus.Warn(err)
@@ -45,7 +48,8 @@ func RunWithElevatedInnerExec() error {
join := strings.Join(append([]string{executable}, os.Args[1:]...), " ")
// Powershell Start C:\Users\naison\Desktop\kubevpn-windows-amd64.exe -Verb Runas -Wait -WindowStyle Hidden
c, _ := syscall.UTF16PtrFromString(fmt.Sprintf(`%s Start "%s" -Verb Runas`, path, join))
err = windows.CreateProcess(nil, c, nil, nil, true, windows.INHERIT_PARENT_AFFINITY, nil, nil, &si, &pi)
env, _ := syscall.UTF16PtrFromString(config.EnvDisableSyncthingLog + "=1")
err = windows.CreateProcess(nil, c, nil, nil, true, windows.INHERIT_PARENT_AFFINITY, env, nil, &si, &pi)
if err != nil {
return err
}