|
|
@@ -2,6 +2,7 @@
|
|
|
package serv_rpc
|
|
|
|
|
|
import (
|
|
|
+ "encoding/json"
|
|
|
"fmt"
|
|
|
"log"
|
|
|
"net"
|
|
|
@@ -147,6 +148,21 @@ func (sf *ServRpc) newBot(login, pass string) error {
|
|
|
if err != nil {
|
|
|
return fmt.Errorf("ServRpc.newBot(): in create bot, err=\n\t%w", err)
|
|
|
}
|
|
|
+ strData, err := store.Get("/bots/list")
|
|
|
+ if err != nil {
|
|
|
+ return fmt.Errorf("ServRpc.newBot(): in get list bots, err=\n\t%w", err)
|
|
|
+ }
|
|
|
+ lstBots := make([]string, 0)
|
|
|
+ err = json.Unmarshal([]byte(strData), &lstBots)
|
|
|
+ if err != nil {
|
|
|
+ return fmt.Errorf("ServRpc.newBot(): in unmarshall bots/list, err=\n\t%w", err)
|
|
|
+ }
|
|
|
+ lstBots = append(lstBots, login)
|
|
|
+ binData, _ := json.Marshal(lstBots)
|
|
|
+ err = store.Put("/bots/list", string(binData))
|
|
|
+ if err != nil {
|
|
|
+ return fmt.Errorf("ServRpc.newBot(): in save list bots, err=\n\t%w", err)
|
|
|
+ }
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
@@ -173,3 +189,29 @@ func (sf *ServRpc) checkUser(login, pass string) bool {
|
|
|
strPass := string(binData)
|
|
|
return pass == strPass
|
|
|
}
|
|
|
+
|
|
|
+// BotStartReq -- запрос старта бота
|
|
|
+type BotStartReq struct {
|
|
|
+ Login string
|
|
|
+ Pass string
|
|
|
+ BotLogin string
|
|
|
+}
|
|
|
+
|
|
|
+// BotStartResp -- ответ на запрос старта бота
|
|
|
+type BotStartResp struct {
|
|
|
+ Result string
|
|
|
+}
|
|
|
+
|
|
|
+// BotStart -- стартует выбранного бота
|
|
|
+func (sf *ServRpc) BotStart(req *BotStartReq, resp *BotStartResp) error {
|
|
|
+ log.Println("ServRpc.BotStart()")
|
|
|
+ if !sf.checkUser(req.Login, req.Pass) {
|
|
|
+ return fmt.Errorf("ServRpc.BotStart(): bad login/pass")
|
|
|
+ }
|
|
|
+ err := sf.serv.ServBots().BotStart(req.BotLogin)
|
|
|
+ if err != nil {
|
|
|
+ return fmt.Errorf("ServRpc.BotStart(): in run bot(%v), err=\n\t%w", req.BotLogin, err)
|
|
|
+ }
|
|
|
+ resp.Result = "ok"
|
|
|
+ return nil
|
|
|
+}
|