x
This commit is contained in:
@@ -76,8 +76,6 @@ var GetUserNumber = func() int {
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
core.RegistFuncs["Broadcast2WebUser"] = Broadcast2WebUser
|
core.RegistFuncs["Broadcast2WebUser"] = Broadcast2WebUser
|
||||||
core.GinApi(core.GET, "/api/web_chat", func(ctx *gin.Context) {
|
|
||||||
if adapter == nil {
|
|
||||||
adapter = &core.Factory{}
|
adapter = &core.Factory{}
|
||||||
adapter.Init("web", "default")
|
adapter.Init("web", "default")
|
||||||
adapter.SetIsAdmin(func(s string) bool {
|
adapter.SetIsAdmin(func(s string) bool {
|
||||||
@@ -97,7 +95,10 @@ func init() {
|
|||||||
sendWebMessage(&message)
|
sendWebMessage(&message)
|
||||||
return ""
|
return ""
|
||||||
})
|
})
|
||||||
}
|
core.GinApi(core.GET, "/api/web_chat", func(ctx *gin.Context) {
|
||||||
|
// if adapter == nil {
|
||||||
|
|
||||||
|
// }
|
||||||
rid := ctx.Query("rid")
|
rid := ctx.Query("rid")
|
||||||
ctt := ctx.Query("ctt")
|
ctt := ctx.Query("ctt")
|
||||||
token, _ := ctx.Cookie("token")
|
token, _ := ctx.Cookie("token")
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
package core
|
package core
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"regexp"
|
||||||
|
|
||||||
"github.com/dop251/goja"
|
"github.com/dop251/goja"
|
||||||
)
|
)
|
||||||
@@ -12,6 +14,24 @@ func MakeHeadersObject(vm *goja.Runtime, header http.Header) *goja.Object {
|
|||||||
return header.Get(name)
|
return header.Get(name)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
obj.Set("gets", func(name string) []string {
|
||||||
|
return header.Values(name)
|
||||||
|
})
|
||||||
|
|
||||||
|
obj.Set("values", func(name string) []string {
|
||||||
|
return header.Values(name)
|
||||||
|
})
|
||||||
|
|
||||||
|
obj.Set("cookie", func(name string) string {
|
||||||
|
for _, v := range header.Values("Set-Cookie") {
|
||||||
|
res := regexp.MustCompile(fmt.Sprintf("%s=([^;]+)", name)).FindStringSubmatch(v)
|
||||||
|
if len(res) > 0 {
|
||||||
|
return res[1]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
})
|
||||||
|
|
||||||
obj.Set("has", func(name string) bool {
|
obj.Set("has", func(name string) bool {
|
||||||
return header.Get(name) != ""
|
return header.Get(name) != ""
|
||||||
})
|
})
|
||||||
|
|||||||
+43
-11
@@ -36,6 +36,30 @@ func (sender *Strings) JoinFilepath(elem ...string) string {
|
|||||||
return filepath.Join(elem...)
|
return filepath.Join(elem...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ForeachObject(m map[string]interface{}, callback func(key, value interface{}) bool) bool {
|
||||||
|
for k, v := range m {
|
||||||
|
switch v := v.(type) {
|
||||||
|
case map[string]interface{}:
|
||||||
|
if ForeachObject(v, callback) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
case []interface{}:
|
||||||
|
for _, u := range v {
|
||||||
|
if um, ok := u.(map[string]interface{}); ok {
|
||||||
|
if ForeachObject(um, callback) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case string:
|
||||||
|
if callback(k, v) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
func (sender *Strings) Trim(s, cutset string) string {
|
func (sender *Strings) Trim(s, cutset string) string {
|
||||||
return strings.Trim(s, cutset)
|
return strings.Trim(s, cutset)
|
||||||
}
|
}
|
||||||
@@ -66,15 +90,21 @@ func (sender *Strings) Dir(path string) string {
|
|||||||
func (sender *Strings) Contains(s string, substr interface{}) bool {
|
func (sender *Strings) Contains(s string, substr interface{}) bool {
|
||||||
switch substr := substr.(type) {
|
switch substr := substr.(type) {
|
||||||
case string:
|
case string:
|
||||||
return strings.Contains(s, substr)
|
if strings.Contains(s, substr) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
case []string:
|
case []string:
|
||||||
for _, sub := range substr {
|
for _, sub := range substr {
|
||||||
return strings.Contains(s, sub)
|
if strings.Contains(s, sub) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
case []interface{}:
|
case []interface{}:
|
||||||
for _, sub := range substr {
|
for _, sub := range substr {
|
||||||
return strings.Contains(s, sub.(string))
|
if strings.Contains(s, sub.(string)) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
@@ -141,23 +171,25 @@ func (sender *Strings) EncodeQueryString(params map[string]interface{}) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (sender *Strings) DecodeQueryString(querystring string) map[string]interface{} {
|
func (sender *Strings) DecodeQueryString(querystring string) map[string]interface{} {
|
||||||
values, err := url.ParseQuery(querystring)
|
u, err := url.Parse(querystring)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
params := make(map[string]interface{})
|
params := make(map[string]interface{})
|
||||||
for key, values := range values {
|
for key, values := range u.Query() {
|
||||||
if len(values) > 0 {
|
if len(values) > 0 {
|
||||||
value := values[0]
|
value := values[0]
|
||||||
if intValue, err := strconv.Atoi(value); err == nil {
|
// if intValue, err := strconv.Atoi(value); err == nil {
|
||||||
params[key] = intValue
|
// params[key] = intValue
|
||||||
} else if boolValue, err := strconv.ParseBool(value); err == nil {
|
// } else if boolValue, err := strconv.ParseBool(value); err == nil {
|
||||||
params[key] = boolValue
|
// params[key] = boolValue
|
||||||
} else {
|
// } else {
|
||||||
|
// params[key] = value
|
||||||
|
// }
|
||||||
params[key] = value
|
params[key] = value
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return params
|
return params
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -437,6 +437,7 @@ func SetPluginMethod(vm *goja.Runtime, uuid string, on_start bool, running func(
|
|||||||
osjs := getJsOs(vm, running)
|
osjs := getJsOs(vm, running)
|
||||||
vm.Set("os", osjs)
|
vm.Set("os", osjs)
|
||||||
vm.Set("fs", osjs)
|
vm.Set("fs", osjs)
|
||||||
|
vm.Set("forObject", ForeachObject)
|
||||||
}
|
}
|
||||||
|
|
||||||
func EncryptPlugin(script string) string {
|
func EncryptPlugin(script string) string {
|
||||||
|
|||||||
Reference in New Issue
Block a user