123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- package main
- import (
- "fmt"
- "git.swzry.com/zry/go-zSshRpcServer/easyophdl"
- "git.swzry.com/zry/go-zSshRpcServer/server"
- "github.com/bitly/go-simplejson"
- "net"
- )
- func main() {
- conf, err := zsshrpc_server.NewDefaultZSshRpcServerCfg("hostkey.key")
- if err != nil {
- fmt.Println("Error: ", err)
- return
- }
- passwdMgr := zsshrpc_server.NewSimplePasswordMgr()
- passwdMgr.AddUserWithStringPassword("admin", "114514")
- conf.UsePasswordAuth(passwdMgr.PasswordCheckCallback)
- conf.UseLogger(func(level int, msg string, err error) {
- level_string := "[NIL]"
- switch level {
- case zsshrpc_server.SvrLogLevel_DEBUG:
- level_string = "[DBG]"
- break
- case zsshrpc_server.SvrLogLevel_INFO:
- level_string = "[INF]"
- break
- case zsshrpc_server.SvrLogLevel_WARNING:
- level_string = "[WRN]"
- break
- case zsshrpc_server.SvrLogLevel_ERROR:
- level_string = "[ERR]"
- break
- }
- if err != nil {
- fmt.Println("<FrontEnd>", level_string, msg, ":", err)
- } else {
- fmt.Println("<FrontEnd>", level_string, msg)
- }
- })
- hdl := easyophdl.NewEasyOperationHandler()
- hdl.EnableDebug()
- hdl.EnableUriSuggestWhenNotFound()
- hdl.UseLogger(func(level int, msg string, err error) {
- level_string := "[NIL]"
- switch level {
- case zsshrpc_server.SvrLogLevel_DEBUG:
- level_string = "[DBG]"
- break
- case zsshrpc_server.SvrLogLevel_INFO:
- level_string = "[INF]"
- break
- case zsshrpc_server.SvrLogLevel_WARNING:
- level_string = "[WRN]"
- break
- case zsshrpc_server.SvrLogLevel_ERROR:
- level_string = "[ERR]"
- break
- }
- if err != nil {
- fmt.Println("<BackEnd>", level_string, msg, ":", err)
- } else {
- fmt.Println("<BackEnd>", level_string, msg)
- }
- })
- conf.SetHandler(hdl)
- server := zsshrpc_server.NewZSshRpcServer(conf)
- bindaddr, err := net.ResolveTCPAddr("tcp4", "0.0.0.0:19180")
- if err != nil {
- fmt.Println("Failed Bind Address: ", err)
- return
- }
- server.ListenTCP("tcp4", bindaddr)
- fmt.Printf("Listening At %v\n", bindaddr.String())
- hdl.AddHandler("/info", zsshrpc_server.RpcMethod_GET, func(request *easyophdl.EasyOpHdlRequest, response *easyophdl.EasyOpHdlResponse) {
- response.UseSimpleJson()
- response.SimplePut("hello", "gensokyo")
- sj := simplejson.New()
- sj.Set("client_ver", request.GetClientVersion())
- sj.Set("username", request.GetUserName())
- sj.Set("remote_addr", request.GetRemoteAddr())
- })
- reqinfo := func(request *easyophdl.EasyOpHdlRequest, response *easyophdl.EasyOpHdlResponse) {
- request.ProcGJson()
- response.UseSimpleJson()
- response.SimplePut("uri", request.RawRequest.URI)
- response.SimplePut("method", request.GetMethodName())
- response.SimplePut("arg1", request.GJsonGet("arg1").Value())
- response.SimplePut("arg2", request.GJsonGet("arg2").Value())
- response.SimplePut("arg3", request.GJsonGet("arg3").Value())
- response.SimplePut("arg4", request.GJsonGet("arg4").Value())
- }
- hdl.AddHandler("/reqinfo", zsshrpc_server.RpcMethod_CALL, reqinfo)
- hdl.AddHandler("/reqinfo", zsshrpc_server.RpcMethod_ADD, reqinfo)
- hdl.AddHandler("/reqinfo", zsshrpc_server.RpcMethod_DEL, reqinfo)
- hdl.AddHandler("/reqinfo", zsshrpc_server.RpcMethod_GET, reqinfo)
- hdl.AddHandler("/reqinfo", zsshrpc_server.RpcMethod_SET, reqinfo)
- hdl.AddHandler("/test1", zsshrpc_server.RpcMethod_GET, reqinfo)
- hdl.AddHandler("/test1", zsshrpc_server.RpcMethod_SET, reqinfo)
- hdl.AddHandler("/rjtest1", zsshrpc_server.RpcMethod_SET, func(request *easyophdl.EasyOpHdlRequest, response *easyophdl.EasyOpHdlResponse) {
- type testtype struct {
- arg1 int `json:"num"`
- arg2 string `json:"val"`
- }
- var test testtype
- if request.ProcRegularJson(test) {
- var out testtype
- out.arg1 = test.arg1 + 114
- out.arg2 = test.arg2 + "514"
- response.UseRegularJson(out)
- }
- })
- wch := make(chan int)
- <-wch
- }
|