mirror of
https://github.com/kemko/xc.git
synced 2026-01-01 15:55:43 +03:00
passmgr reload when turned off/on
This commit is contained in:
@@ -440,6 +440,7 @@ func doOnOff(propName string, propRef *bool, args []string) bool {
|
|||||||
term.Warnf("%s is %s\n", propName, value)
|
term.Warnf("%s is %s\n", propName, value)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
prev := *propRef
|
||||||
switch args[0] {
|
switch args[0] {
|
||||||
case "on":
|
case "on":
|
||||||
*propRef = true
|
*propRef = true
|
||||||
@@ -449,7 +450,7 @@ func doOnOff(propName string, propRef *bool, args []string) bool {
|
|||||||
term.Errorf("Invalid %s vaue. Please use either \"on\" or \"off\"\n", propName)
|
term.Errorf("Invalid %s vaue. Please use either \"on\" or \"off\"\n", propName)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
return true
|
return prev != *propRef
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cli) setRaiseType(rt string) {
|
func (c *Cli) setRaiseType(rt string) {
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import (
|
|||||||
"syscall"
|
"syscall"
|
||||||
|
|
||||||
"github.com/viert/xc/passmgr"
|
"github.com/viert/xc/passmgr"
|
||||||
|
|
||||||
"github.com/viert/xc/remote"
|
"github.com/viert/xc/remote"
|
||||||
"github.com/viert/xc/term"
|
"github.com/viert/xc/term"
|
||||||
)
|
)
|
||||||
@@ -50,6 +49,7 @@ func (c *Cli) setupCmdHandlers() {
|
|||||||
c.handlers["p_runscript"] = c.doPRunScript
|
c.handlers["p_runscript"] = c.doPRunScript
|
||||||
c.handlers["use_password_manager"] = c.doUsePasswordManager
|
c.handlers["use_password_manager"] = c.doUsePasswordManager
|
||||||
c.handlers["distribute_type"] = c.doDistributeType
|
c.handlers["distribute_type"] = c.doDistributeType
|
||||||
|
c.handlers["_passmgr_debug"] = c.doPassmgrDebug
|
||||||
|
|
||||||
commands := make([]string, len(c.handlers))
|
commands := make([]string, len(c.handlers))
|
||||||
i := 0
|
i := 0
|
||||||
@@ -299,6 +299,9 @@ func (c *Cli) doUsePasswordManager(name string, argsLine string, args ...string)
|
|||||||
term.Errorf("Password manager is not ready\n")
|
term.Errorf("Password manager is not ready\n")
|
||||||
c.usePasswordMgr = false
|
c.usePasswordMgr = false
|
||||||
}
|
}
|
||||||
|
if c.usePasswordMgr {
|
||||||
|
passmgr.Reload()
|
||||||
|
}
|
||||||
remote.SetUsePasswordManager(c.usePasswordMgr)
|
remote.SetUsePasswordManager(c.usePasswordMgr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -463,3 +466,7 @@ func (c *Cli) doCRunScript(name string, argsLine string, args ...string) {
|
|||||||
func (c *Cli) doPRunScript(name string, argsLine string, args ...string) {
|
func (c *Cli) doPRunScript(name string, argsLine string, args ...string) {
|
||||||
c.dorunscript(emParallel, argsLine)
|
c.dorunscript(emParallel, argsLine)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *Cli) doPassmgrDebug(name string, argsLine string, args ...string) {
|
||||||
|
passmgr.PrintDebug()
|
||||||
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import (
|
|||||||
"plugin"
|
"plugin"
|
||||||
|
|
||||||
"github.com/viert/xc/log"
|
"github.com/viert/xc/log"
|
||||||
|
"github.com/viert/xc/term"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -14,6 +15,8 @@ const (
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
p *plugin.Plugin
|
p *plugin.Plugin
|
||||||
|
initialFilename string
|
||||||
|
initialOptions map[string]string
|
||||||
initialized bool
|
initialized bool
|
||||||
pluginInit func(map[string]string, func(string, ...interface{})) error
|
pluginInit func(map[string]string, func(string, ...interface{})) error
|
||||||
pluginAcquire func(string) string
|
pluginAcquire func(string) string
|
||||||
@@ -22,6 +25,10 @@ var (
|
|||||||
// Load loads a password manager library
|
// Load loads a password manager library
|
||||||
func Load(filename string, options map[string]string) error {
|
func Load(filename string, options map[string]string) error {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
|
initialFilename = filename
|
||||||
|
initialOptions = options
|
||||||
|
|
||||||
p, err = plugin.Open(filename)
|
p, err = plugin.Open(filename)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -63,3 +70,32 @@ func GetPass(hostname string) string {
|
|||||||
func Ready() bool {
|
func Ready() bool {
|
||||||
return initialized
|
return initialized
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Reload reloads previously initialized plugin
|
||||||
|
func Reload() error {
|
||||||
|
term.Warnf("Reloading password manager from %s\n", initialFilename)
|
||||||
|
return Load(initialFilename, initialOptions)
|
||||||
|
}
|
||||||
|
|
||||||
|
// PrintDebug proxies a call to plugin's PrintDebug function if it exists
|
||||||
|
func PrintDebug() {
|
||||||
|
if !initialized {
|
||||||
|
term.Errorf("password manager is not initialized\n")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
printsym, err := p.Lookup("PrintDebug")
|
||||||
|
if err != nil {
|
||||||
|
term.Errorf("the password manager doesn't have PrintDebug() handler\n")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
printfunc, ok := printsym.(func())
|
||||||
|
if !ok {
|
||||||
|
term.Errorf("the passwordd manager PrintDebug() handler has invalid signature (must be func())\n")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
term.Warnf("running password manager PrintDebug()\n")
|
||||||
|
printfunc()
|
||||||
|
fmt.Println()
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user