Initial 2024-01-26
This commit is contained in:
122
cmpSnipper/cmpSnipper.go
Normal file
122
cmpSnipper/cmpSnipper.go
Normal file
@@ -0,0 +1,122 @@
|
||||
|
||||
package cmpSnipper
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"plugin"
|
||||
)
|
||||
|
||||
type cmpPluginStruct struct {
|
||||
Name string
|
||||
Plug *plugin.Plugin
|
||||
}
|
||||
|
||||
|
||||
type App struct {
|
||||
Conf interface{}
|
||||
ErrIsDir error // = errors.New("Is directory")
|
||||
|
||||
CliList []cmpWbsCliStruct
|
||||
|
||||
cmpSnipperHttpServ cmpSnipperHttpServ
|
||||
|
||||
Rand4d int
|
||||
|
||||
PlugList []cmpPluginStruct
|
||||
|
||||
SshList []cmpSshCliStruct
|
||||
}
|
||||
|
||||
func (app *App) PlugInit(name string, file string) {
|
||||
qqq := map[string]interface{}{
|
||||
"Aaa": "Bbb",
|
||||
}
|
||||
|
||||
var plug cmpPluginStruct
|
||||
|
||||
var p *plugin.Plugin
|
||||
|
||||
p, err := plugin.Open(file)
|
||||
|
||||
if err != nil {
|
||||
app.Log(err)
|
||||
return
|
||||
}
|
||||
|
||||
plug.Name = name
|
||||
plug.Plug = p
|
||||
|
||||
plugInitReq, err := plug.Plug.Lookup("CmpPlug1Init")
|
||||
|
||||
if err != nil {
|
||||
app.Log(err)
|
||||
return
|
||||
}
|
||||
|
||||
plugInitFnc := plugInitReq.(func(int, func(any, ...interface{}), map[string]interface{}) interface{})
|
||||
|
||||
plugInitRes := plugInitFnc(33, app.Log, qqq)
|
||||
|
||||
app.Log("%+v", plugInitRes)
|
||||
|
||||
app.PlugList = append(app.PlugList, plug)
|
||||
}
|
||||
|
||||
func (app *App) PlugCall(pnam string, fnam string) {
|
||||
for _, plug := range app.PlugList {
|
||||
if plug.Name != pnam {
|
||||
continue
|
||||
}
|
||||
|
||||
plugFuncReq, err := plug.Plug.Lookup(fnam)
|
||||
|
||||
if err != nil {
|
||||
app.Log(err)
|
||||
return
|
||||
}
|
||||
|
||||
plugFuncFnc := plugFuncReq.(func() error)
|
||||
|
||||
plugFuncRes := plugFuncFnc()
|
||||
|
||||
app.Log("%+v", plugFuncRes)
|
||||
}
|
||||
}
|
||||
|
||||
func (app *App) Prep() (error) {
|
||||
app.ErrIsDir = errors.New("Is directory")
|
||||
|
||||
app.LogSetup()
|
||||
|
||||
var err = app.ConfLoadFile("secret/zest.json");
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (app *App) Proc() error {
|
||||
var err error // = make(chan error, 1)
|
||||
|
||||
var term = make(chan bool, 1)
|
||||
|
||||
go app.WaitSignal(term)
|
||||
|
||||
err = app.HttpServStart()
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
<-term
|
||||
|
||||
app.HttpServStop()
|
||||
|
||||
app.Log("Terminating")
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// end
|
Reference in New Issue
Block a user