mirror of
https://github.com/akyaiy/GoSally-mvp.git
synced 2026-01-03 19:32:26 +00:00
rename lL to L
This commit is contained in:
@@ -162,7 +162,7 @@ func dbExec(L *lua.LState) int {
|
|||||||
var result lua.LValue = lua.LNil
|
var result lua.LValue = lua.LNil
|
||||||
var errorMsg lua.LValue = lua.LNil
|
var errorMsg lua.LValue = lua.LNil
|
||||||
|
|
||||||
L.SetField(ctx, "wait", L.NewFunction(func(lL *lua.LState) int {
|
L.SetField(ctx, "wait", L.NewFunction(func(L *lua.LState) int {
|
||||||
res := <-resCh
|
res := <-resCh
|
||||||
L.SetField(ctx, "done", lua.LBool(true))
|
L.SetField(ctx, "done", lua.LBool(true))
|
||||||
|
|
||||||
@@ -175,35 +175,35 @@ func dbExec(L *lua.LState) int {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if res.err != nil {
|
if res.err != nil {
|
||||||
lL.Push(lua.LNil)
|
L.Push(lua.LNil)
|
||||||
lL.Push(lua.LString(res.err.Error()))
|
L.Push(lua.LString(res.err.Error()))
|
||||||
return 2
|
return 2
|
||||||
}
|
}
|
||||||
lL.Push(lua.LNumber(res.rowsAffected))
|
L.Push(lua.LNumber(res.rowsAffected))
|
||||||
lL.Push(lua.LNil)
|
L.Push(lua.LNil)
|
||||||
return 2
|
return 2
|
||||||
}))
|
}))
|
||||||
|
|
||||||
L.SetField(ctx, "check", L.NewFunction(func(lL *lua.LState) int {
|
L.SetField(ctx, "check", L.NewFunction(func(L *lua.LState) int {
|
||||||
select {
|
select {
|
||||||
case res := <-resCh:
|
case res := <-resCh:
|
||||||
lL.SetField(ctx, "done", lua.LBool(true))
|
L.SetField(ctx, "done", lua.LBool(true))
|
||||||
if res.err != nil {
|
if res.err != nil {
|
||||||
errorMsg = lua.LString(res.err.Error())
|
errorMsg = lua.LString(res.err.Error())
|
||||||
result = lua.LNil
|
result = lua.LNil
|
||||||
lL.Push(lua.LNil)
|
L.Push(lua.LNil)
|
||||||
lL.Push(lua.LString(res.err.Error()))
|
L.Push(lua.LString(res.err.Error()))
|
||||||
return 2
|
return 2
|
||||||
} else {
|
} else {
|
||||||
result = lua.LNumber(res.rowsAffected)
|
result = lua.LNumber(res.rowsAffected)
|
||||||
errorMsg = lua.LNil
|
errorMsg = lua.LNil
|
||||||
lL.Push(lua.LNumber(res.rowsAffected))
|
L.Push(lua.LNumber(res.rowsAffected))
|
||||||
lL.Push(lua.LNil)
|
L.Push(lua.LNil)
|
||||||
return 2
|
return 2
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
lL.Push(result)
|
L.Push(result)
|
||||||
lL.Push(errorMsg)
|
L.Push(errorMsg)
|
||||||
return 2
|
return 2
|
||||||
}
|
}
|
||||||
}))
|
}))
|
||||||
|
|||||||
@@ -48,20 +48,20 @@ func (h *HandlerV1) handleLUA(sid string, r *http.Request, req *rpc.RPCRequest,
|
|||||||
|
|
||||||
seed := rand.Int()
|
seed := rand.Int()
|
||||||
|
|
||||||
loadSessionMod := func(lL *lua.LState) int {
|
loadSessionMod := func(L *lua.LState) int {
|
||||||
llog.Debug("import module session", slog.String("script", path))
|
llog.Debug("import module session", slog.String("script", path))
|
||||||
sessionMod := lL.NewTable()
|
sessionMod := L.NewTable()
|
||||||
inTable := lL.NewTable()
|
inTable := L.NewTable()
|
||||||
paramsTable := lL.NewTable()
|
paramsTable := L.NewTable()
|
||||||
|
|
||||||
fetchedParamsTable := lL.NewTable()
|
fetchedParamsTable := L.NewTable()
|
||||||
if fetchedParams, ok := req.Params.(map[string]any); ok {
|
if fetchedParams, ok := req.Params.(map[string]any); ok {
|
||||||
for k, v := range fetchedParams {
|
for k, v := range fetchedParams {
|
||||||
lL.SetField(fetchedParamsTable, k, ConvertGolangTypesToLua(lL, v))
|
L.SetField(fetchedParamsTable, k, ConvertGolangTypesToLua(L, v))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
getter := lL.NewFunction(func(L *lua.LState) int {
|
getter := L.NewFunction(func(L *lua.LState) int {
|
||||||
path := L.OptString(1, "")
|
path := L.OptString(1, "")
|
||||||
def := L.Get(2)
|
def := L.Get(2)
|
||||||
|
|
||||||
@@ -95,27 +95,27 @@ func (h *HandlerV1) handleLUA(sid string, r *http.Request, req *rpc.RPCRequest,
|
|||||||
return 1
|
return 1
|
||||||
})
|
})
|
||||||
|
|
||||||
lL.SetField(paramsTable, "get", getter)
|
L.SetField(paramsTable, "get", getter)
|
||||||
lL.SetField(inTable, "params", paramsTable)
|
L.SetField(inTable, "params", paramsTable)
|
||||||
|
|
||||||
outTable := lL.NewTable()
|
outTable := L.NewTable()
|
||||||
resultTable := lL.NewTable()
|
resultTable := L.NewTable()
|
||||||
lL.SetField(outTable, "result", resultTable)
|
L.SetField(outTable, "result", resultTable)
|
||||||
|
|
||||||
lL.SetField(inTable, "address", lua.LString(r.RemoteAddr))
|
L.SetField(inTable, "address", lua.LString(r.RemoteAddr))
|
||||||
lL.SetField(sessionMod, "request", inTable)
|
L.SetField(sessionMod, "request", inTable)
|
||||||
lL.SetField(sessionMod, "response", outTable)
|
L.SetField(sessionMod, "response", outTable)
|
||||||
|
|
||||||
lL.SetField(sessionMod, "id", lua.LString(sid))
|
L.SetField(sessionMod, "id", lua.LString(sid))
|
||||||
|
|
||||||
lL.SetField(sessionMod, "__gosally_internal", lua.LString(fmt.Sprint(seed)))
|
L.SetField(sessionMod, "__gosally_internal", lua.LString(fmt.Sprint(seed)))
|
||||||
lL.Push(sessionMod)
|
L.Push(sessionMod)
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
loadLogMod := func(lL *lua.LState) int {
|
loadLogMod := func(L *lua.LState) int {
|
||||||
llog.Debug("import module log", slog.String("script", path))
|
llog.Debug("import module log", slog.String("script", path))
|
||||||
logMod := lL.NewTable()
|
logMod := L.NewTable()
|
||||||
|
|
||||||
logFuncs := map[string]func(string, ...any){
|
logFuncs := map[string]func(string, ...any){
|
||||||
"info": llog.Info,
|
"info": llog.Info,
|
||||||
@@ -126,8 +126,8 @@ func (h *HandlerV1) handleLUA(sid string, r *http.Request, req *rpc.RPCRequest,
|
|||||||
|
|
||||||
for name, logFunc := range logFuncs {
|
for name, logFunc := range logFuncs {
|
||||||
fun := logFunc
|
fun := logFunc
|
||||||
lL.SetField(logMod, name, lL.NewFunction(func(lL *lua.LState) int {
|
L.SetField(logMod, name, L.NewFunction(func(L *lua.LState) int {
|
||||||
msg := lL.Get(1)
|
msg := L.Get(1)
|
||||||
converted := ConvertLuaTypesToGolang(msg)
|
converted := ConvertLuaTypesToGolang(msg)
|
||||||
fun(fmt.Sprintf("the script says: %s", converted), slog.String("script", path))
|
fun(fmt.Sprintf("the script says: %s", converted), slog.String("script", path))
|
||||||
return 0
|
return 0
|
||||||
@@ -143,8 +143,8 @@ func (h *HandlerV1) handleLUA(sid string, r *http.Request, req *rpc.RPCRequest,
|
|||||||
{"event_error", h.x.Log.Printf, colors.PrintError},
|
{"event_error", h.x.Log.Printf, colors.PrintError},
|
||||||
{"event_warn", h.x.Log.Printf, colors.PrintWarn},
|
{"event_warn", h.x.Log.Printf, colors.PrintWarn},
|
||||||
} {
|
} {
|
||||||
lL.SetField(logMod, fn.field, lL.NewFunction(func(lL *lua.LState) int {
|
L.SetField(logMod, fn.field, L.NewFunction(func(L *lua.LState) int {
|
||||||
msg := lL.Get(1)
|
msg := L.Get(1)
|
||||||
converted := ConvertLuaTypesToGolang(msg)
|
converted := ConvertLuaTypesToGolang(msg)
|
||||||
if fn.color != nil {
|
if fn.color != nil {
|
||||||
h.x.Log.Printf("%s: %s: %s", fn.color(), path, converted)
|
h.x.Log.Printf("%s: %s: %s", fn.color(), path, converted)
|
||||||
@@ -155,24 +155,24 @@ func (h *HandlerV1) handleLUA(sid string, r *http.Request, req *rpc.RPCRequest,
|
|||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
lL.SetField(logMod, "__gosally_internal", lua.LString(fmt.Sprint(seed)))
|
L.SetField(logMod, "__gosally_internal", lua.LString(fmt.Sprint(seed)))
|
||||||
lL.Push(logMod)
|
L.Push(logMod)
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
loadNetMod := func(lL *lua.LState) int {
|
loadNetMod := func(L *lua.LState) int {
|
||||||
llog.Debug("import module net", slog.String("script", path))
|
llog.Debug("import module net", slog.String("script", path))
|
||||||
netMod := lL.NewTable()
|
netMod := L.NewTable()
|
||||||
netModhttp := lL.NewTable()
|
netModhttp := L.NewTable()
|
||||||
|
|
||||||
lL.SetField(netModhttp, "get_request", lL.NewFunction(func(lL *lua.LState) int {
|
L.SetField(netModhttp, "get_request", L.NewFunction(func(L *lua.LState) int {
|
||||||
logRequest := lL.ToBool(1)
|
logRequest := L.ToBool(1)
|
||||||
url := lL.ToString(2)
|
url := L.ToString(2)
|
||||||
|
|
||||||
req, err := http.NewRequest("GET", url, nil)
|
req, err := http.NewRequest("GET", url, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
lL.Push(lua.LNil)
|
L.Push(lua.LNil)
|
||||||
lL.Push(lua.LString(err.Error()))
|
L.Push(lua.LString(err.Error()))
|
||||||
return 2
|
return 2
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -181,16 +181,16 @@ func (h *HandlerV1) handleLUA(sid string, r *http.Request, req *rpc.RPCRequest,
|
|||||||
client := &http.Client{}
|
client := &http.Client{}
|
||||||
resp, err := client.Do(req)
|
resp, err := client.Do(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
lL.Push(lua.LNil)
|
L.Push(lua.LNil)
|
||||||
lL.Push(lua.LString(err.Error()))
|
L.Push(lua.LString(err.Error()))
|
||||||
return 2
|
return 2
|
||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
|
|
||||||
body, err := io.ReadAll(resp.Body)
|
body, err := io.ReadAll(resp.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
lL.Push(lua.LNil)
|
L.Push(lua.LNil)
|
||||||
lL.Push(lua.LString(err.Error()))
|
L.Push(lua.LString(err.Error()))
|
||||||
return 2
|
return 2
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -204,34 +204,34 @@ func (h *HandlerV1) handleLUA(sid string, r *http.Request, req *rpc.RPCRequest,
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
result := lL.NewTable()
|
result := L.NewTable()
|
||||||
lL.SetField(result, "status", lua.LNumber(resp.StatusCode))
|
L.SetField(result, "status", lua.LNumber(resp.StatusCode))
|
||||||
lL.SetField(result, "status_text", lua.LString(resp.Status))
|
L.SetField(result, "status_text", lua.LString(resp.Status))
|
||||||
lL.SetField(result, "body", lua.LString(body))
|
L.SetField(result, "body", lua.LString(body))
|
||||||
lL.SetField(result, "content_length", lua.LNumber(resp.ContentLength))
|
L.SetField(result, "content_length", lua.LNumber(resp.ContentLength))
|
||||||
|
|
||||||
headers := lL.NewTable()
|
headers := L.NewTable()
|
||||||
for k, v := range resp.Header {
|
for k, v := range resp.Header {
|
||||||
lL.SetField(headers, k, ConvertGolangTypesToLua(lL, v))
|
L.SetField(headers, k, ConvertGolangTypesToLua(L, v))
|
||||||
}
|
}
|
||||||
lL.SetField(result, "headers", headers)
|
L.SetField(result, "headers", headers)
|
||||||
|
|
||||||
lL.Push(result)
|
L.Push(result)
|
||||||
return 1
|
return 1
|
||||||
}))
|
}))
|
||||||
|
|
||||||
lL.SetField(netModhttp, "post_request", lL.NewFunction(func(lL *lua.LState) int {
|
L.SetField(netModhttp, "post_request", L.NewFunction(func(L *lua.LState) int {
|
||||||
logRequest := lL.ToBool(1)
|
logRequest := L.ToBool(1)
|
||||||
url := lL.ToString(2)
|
url := L.ToString(2)
|
||||||
contentType := lL.ToString(3)
|
contentType := L.ToString(3)
|
||||||
payload := lL.ToString(4)
|
payload := L.ToString(4)
|
||||||
|
|
||||||
body := strings.NewReader(payload)
|
body := strings.NewReader(payload)
|
||||||
|
|
||||||
req, err := http.NewRequest("POST", url, body)
|
req, err := http.NewRequest("POST", url, body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
lL.Push(lua.LNil)
|
L.Push(lua.LNil)
|
||||||
lL.Push(lua.LString(err.Error()))
|
L.Push(lua.LString(err.Error()))
|
||||||
return 2
|
return 2
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -242,16 +242,16 @@ func (h *HandlerV1) handleLUA(sid string, r *http.Request, req *rpc.RPCRequest,
|
|||||||
client := &http.Client{}
|
client := &http.Client{}
|
||||||
resp, err := client.Do(req)
|
resp, err := client.Do(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
lL.Push(lua.LNil)
|
L.Push(lua.LNil)
|
||||||
lL.Push(lua.LString(err.Error()))
|
L.Push(lua.LString(err.Error()))
|
||||||
return 2
|
return 2
|
||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
|
|
||||||
respBody, err := io.ReadAll(resp.Body)
|
respBody, err := io.ReadAll(resp.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
lL.Push(lua.LNil)
|
L.Push(lua.LNil)
|
||||||
lL.Push(lua.LString(err.Error()))
|
L.Push(lua.LString(err.Error()))
|
||||||
return 2
|
return 2
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -266,47 +266,47 @@ func (h *HandlerV1) handleLUA(sid string, r *http.Request, req *rpc.RPCRequest,
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
result := lL.NewTable()
|
result := L.NewTable()
|
||||||
lL.SetField(result, "status", lua.LNumber(resp.StatusCode))
|
L.SetField(result, "status", lua.LNumber(resp.StatusCode))
|
||||||
lL.SetField(result, "status_text", lua.LString(resp.Status))
|
L.SetField(result, "status_text", lua.LString(resp.Status))
|
||||||
lL.SetField(result, "body", lua.LString(respBody))
|
L.SetField(result, "body", lua.LString(respBody))
|
||||||
lL.SetField(result, "content_length", lua.LNumber(resp.ContentLength))
|
L.SetField(result, "content_length", lua.LNumber(resp.ContentLength))
|
||||||
|
|
||||||
headers := lL.NewTable()
|
headers := L.NewTable()
|
||||||
for k, v := range resp.Header {
|
for k, v := range resp.Header {
|
||||||
lL.SetField(headers, k, ConvertGolangTypesToLua(lL, v))
|
L.SetField(headers, k, ConvertGolangTypesToLua(L, v))
|
||||||
}
|
}
|
||||||
lL.SetField(result, "headers", headers)
|
L.SetField(result, "headers", headers)
|
||||||
|
|
||||||
lL.Push(result)
|
L.Push(result)
|
||||||
return 1
|
return 1
|
||||||
}))
|
}))
|
||||||
|
|
||||||
lL.SetField(netMod, "http", netModhttp)
|
L.SetField(netMod, "http", netModhttp)
|
||||||
|
|
||||||
lL.SetField(netMod, "__gosally_internal", lua.LString(fmt.Sprint(seed)))
|
L.SetField(netMod, "__gosally_internal", lua.LString(fmt.Sprint(seed)))
|
||||||
lL.Push(netMod)
|
L.Push(netMod)
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
loadCryptbcryptMod := func(lL *lua.LState) int {
|
loadCryptbcryptMod := func(L *lua.LState) int {
|
||||||
llog.Debug("import module crypt.bcrypt", slog.String("script", path))
|
llog.Debug("import module crypt.bcrypt", slog.String("script", path))
|
||||||
bcryptMod := lL.NewTable()
|
bcryptMod := L.NewTable()
|
||||||
|
|
||||||
lL.SetField(bcryptMod, "MinCost", lua.LNumber(bcrypt.MinCost))
|
L.SetField(bcryptMod, "MinCost", lua.LNumber(bcrypt.MinCost))
|
||||||
lL.SetField(bcryptMod, "MaxCost", lua.LNumber(bcrypt.MaxCost))
|
L.SetField(bcryptMod, "MaxCost", lua.LNumber(bcrypt.MaxCost))
|
||||||
lL.SetField(bcryptMod, "DefaultCost", lua.LNumber(bcrypt.DefaultCost))
|
L.SetField(bcryptMod, "DefaultCost", lua.LNumber(bcrypt.DefaultCost))
|
||||||
|
|
||||||
lL.SetField(bcryptMod, "generate", lL.NewFunction(func(l *lua.LState) int {
|
L.SetField(bcryptMod, "generate", L.NewFunction(func(l *lua.LState) int {
|
||||||
password := ConvertLuaTypesToGolang(lL.Get(1))
|
password := ConvertLuaTypesToGolang(L.Get(1))
|
||||||
passwordStr, ok := password.(string)
|
passwordStr, ok := password.(string)
|
||||||
if !ok {
|
if !ok {
|
||||||
lL.Push(lua.LNil)
|
L.Push(lua.LNil)
|
||||||
lL.Push(lua.LString("error: password must be a string"))
|
L.Push(lua.LString("error: password must be a string"))
|
||||||
return 2
|
return 2
|
||||||
}
|
}
|
||||||
|
|
||||||
cost := ConvertLuaTypesToGolang(lL.Get(2))
|
cost := ConvertLuaTypesToGolang(L.Get(2))
|
||||||
costInt := bcrypt.DefaultCost
|
costInt := bcrypt.DefaultCost
|
||||||
switch v := cost.(type) {
|
switch v := cost.(type) {
|
||||||
case int:
|
case int:
|
||||||
@@ -316,48 +316,48 @@ func (h *HandlerV1) handleLUA(sid string, r *http.Request, req *rpc.RPCRequest,
|
|||||||
case nil:
|
case nil:
|
||||||
// ok, use DefaultCost
|
// ok, use DefaultCost
|
||||||
default:
|
default:
|
||||||
lL.Push(lua.LNil)
|
L.Push(lua.LNil)
|
||||||
lL.Push(lua.LString("error: cost must be an integer"))
|
L.Push(lua.LString("error: cost must be an integer"))
|
||||||
return 2
|
return 2
|
||||||
}
|
}
|
||||||
|
|
||||||
hashBytes, err := bcrypt.GenerateFromPassword([]byte(passwordStr), costInt)
|
hashBytes, err := bcrypt.GenerateFromPassword([]byte(passwordStr), costInt)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
lL.Push(lua.LNil)
|
L.Push(lua.LNil)
|
||||||
lL.Push(lua.LString("error: " + err.Error()))
|
L.Push(lua.LString("error: " + err.Error()))
|
||||||
return 2
|
return 2
|
||||||
}
|
}
|
||||||
|
|
||||||
lL.Push(lua.LString(string(hashBytes)))
|
L.Push(lua.LString(string(hashBytes)))
|
||||||
lL.Push(lua.LNil)
|
L.Push(lua.LNil)
|
||||||
return 2
|
return 2
|
||||||
}))
|
}))
|
||||||
|
|
||||||
lL.SetField(bcryptMod, "compare", lL.NewFunction(func(l *lua.LState) int {
|
L.SetField(bcryptMod, "compare", L.NewFunction(func(l *lua.LState) int {
|
||||||
hash := ConvertLuaTypesToGolang(lL.Get(1))
|
hash := ConvertLuaTypesToGolang(L.Get(1))
|
||||||
hashStr, ok := hash.(string)
|
hashStr, ok := hash.(string)
|
||||||
if !ok {
|
if !ok {
|
||||||
lL.Push(lua.LString("error: hash must be a string"))
|
L.Push(lua.LString("error: hash must be a string"))
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
password := ConvertLuaTypesToGolang(lL.Get(2))
|
password := ConvertLuaTypesToGolang(L.Get(2))
|
||||||
passwordStr, ok := password.(string)
|
passwordStr, ok := password.(string)
|
||||||
if !ok {
|
if !ok {
|
||||||
lL.Push(lua.LString("error: password must be a string"))
|
L.Push(lua.LString("error: password must be a string"))
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
err := bcrypt.CompareHashAndPassword([]byte(hashStr), []byte(passwordStr))
|
err := bcrypt.CompareHashAndPassword([]byte(hashStr), []byte(passwordStr))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
lL.Push(lua.LFalse)
|
L.Push(lua.LFalse)
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
lL.Push(lua.LTrue)
|
L.Push(lua.LTrue)
|
||||||
return 1
|
return 1
|
||||||
}))
|
}))
|
||||||
|
|
||||||
lL.SetField(bcryptMod, "__gosally_internal", lua.LString(fmt.Sprint(seed)))
|
L.SetField(bcryptMod, "__gosally_internal", lua.LString(fmt.Sprint(seed)))
|
||||||
lL.Push(bcryptMod)
|
L.Push(bcryptMod)
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user