Am programul meu golang care rulează ca serviciu rădăcină și încerc să setez setarea proxy folosind comanda gsettings din programul meu. Pot citi aceste setări în programul meu golang folosind următorul cod de comandă în golang:
u, erru:= user.Lookup("dimdimuser")
if erru != nil {
returnează „”,fmt.Errorf(„informații utilizator necunoscut”)
}
uid, err = strconv.ParseInt(u.Uid, 10, 32)
gid, err = strconv.ParseInt(u.Gid, 10, 32)
cmd := exec.Command ("/usr/bin/gsettings", "get", "org.gnome.system.proxy", "autoconfig-url")
cmd.Stdout = &out
cmd.Stderr = &stderr
cmd.SysProcAttr = &syscall.SysProcAttr{}
cmd.SysProcAttr.Credential = &syscall.Credential{Uid: uint32(uid), Gid: uint32(gid)}
err = cmd.Run()
daca greseste != nil {
returnează „”, fmt.Errorf(„Eșuat „/usr/bin/gsettings” %s %s „, getOrSet, opțiune)
}
return out.String(), nil
dar când încerc să setez aceste setări, comanda nu raportează nicio eroare, dar setarea nu se schimbă. iată codul pe care încerc să-l setez autoconfig-url:
cmd := exec.Command ("/usr/bin/gsettings", "set", "org.gnome.system.proxy", "autoconfig-url","HTTP://localhost/dimdimproxy")
cmd.Stdout = &out
cmd.Stderr = &stderr
cmd.SysProcAttr = &syscall.SysProcAttr{}
cmd.SysProcAttr.Credential = &syscall.Credential{Uid: uint32(uid), Gid: uint32(gid)}
err = cmd.Run()
daca greseste != nil {
returnează „”, fmt.Errorf(„Eșuat”)
}
return out.String(), nil
Am încercat să folosesc dbus-launch, care schimbă setarea dacă încerc să recuperez din programul meu sau din altă filă de terminal cu privilegii de utilizator local. dar gnome UI nu se reflectă. și, de asemenea, browserul de sistem nu acceptă modificările făcute prin următoarea comandă.
sudo -Hu dimdim dbus-launch gsettings set org.gnome.system.proxy autoconfig-url htt://localhost/dimdimproxy