x
This commit is contained in:
+8
-1
@@ -6,6 +6,7 @@ import (
|
|||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
|
"path/filepath"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
@@ -195,7 +196,13 @@ func init() {
|
|||||||
ar := strings.SplitN(bk, ".", 2)
|
ar := strings.SplitN(bk, ".", 2)
|
||||||
if len(ar) == 2 {
|
if len(ar) == 2 {
|
||||||
if vv, ok := plugins_id.Load(ar[1]); ok {
|
if vv, ok := plugins_id.Load(ar[1]); ok {
|
||||||
os.WriteFile(vv.(string), []byte(fmt.Sprint(v)), 0755)
|
filename := vv.(string)
|
||||||
|
vs := fmt.Sprint(v)
|
||||||
|
if vs == "" {
|
||||||
|
os.RemoveAll(filepath.Dir(filename))
|
||||||
|
} else {
|
||||||
|
os.WriteFile(filename, []byte(vs), 0755)
|
||||||
|
}
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
msg, changed, err := SetBucketKeyValue(MakeBucket(ar[0]), ar[1], v)
|
msg, changed, err := SetBucketKeyValue(MakeBucket(ar[0]), ar[1], v)
|
||||||
|
|||||||
+4
-4
@@ -21,10 +21,10 @@ func init() {
|
|||||||
{
|
{
|
||||||
Admin: true,
|
Admin: true,
|
||||||
Rules: []string{"identify sublink [地址] [组织]"},
|
Rules: []string{"identify sublink [地址] [组织]"},
|
||||||
ImType: &common.Filter{
|
// ImType: &common.Filter{
|
||||||
BlackMode: true,
|
// BlackMode: true,
|
||||||
Items: []string{"pgm"},
|
// Items: []string{"pgm"},
|
||||||
},
|
// },
|
||||||
Handle: func(s common.Sender, _ func(vm *goja.Runtime)) interface{} {
|
Handle: func(s common.Sender, _ func(vm *goja.Runtime)) interface{} {
|
||||||
address := s.Get(0)
|
address := s.Get(0)
|
||||||
organization := s.Get(1)
|
organization := s.Get(1)
|
||||||
|
|||||||
+23
-4
@@ -82,31 +82,50 @@ func init() {
|
|||||||
|
|
||||||
func unzip(filename string, perm fs.FileMode) error {
|
func unzip(filename string, perm fs.FileMode) error {
|
||||||
zipFile, err := zip.OpenReader(filename)
|
zipFile, err := zip.OpenReader(filename)
|
||||||
dir := filepath.Dir(filename)
|
|
||||||
// fmt.Println(filename, err)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer zipFile.Close()
|
defer zipFile.Close()
|
||||||
|
|
||||||
for _, file := range zipFile.File {
|
for _, file := range zipFile.File {
|
||||||
// 忽略以 "__MACOSX/" 开头的文件
|
// 忽略以 "__MACOSX/" 开头的文件
|
||||||
if strings.HasPrefix(file.Name, "__MACOSX/") {
|
if strings.HasPrefix(file.Name, "__MACOSX/") {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
path := filepath.Join(filepath.Dir(filename), file.Name)
|
||||||
|
if file.FileInfo().IsDir() {
|
||||||
|
// 如果是目录则创建目录
|
||||||
|
err = os.MkdirAll(path, perm)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 创建文件的父目录
|
||||||
|
err = os.MkdirAll(filepath.Dir(path), perm)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建文件并解压缩数据
|
||||||
zipFile, err := file.Open()
|
zipFile, err := file.Open()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer zipFile.Close()
|
defer zipFile.Close()
|
||||||
localFile, err := os.OpenFile(dir+"/"+file.Name, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, perm)
|
|
||||||
|
localFile, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, perm)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer localFile.Close()
|
defer localFile.Close()
|
||||||
|
|
||||||
_, err = io.Copy(localFile, zipFile)
|
_, err = io.Copy(localFile, zipFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return err
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -190,10 +190,14 @@ func AddNodePlugin(path, name string) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
script := string(data)
|
||||||
|
if script == "" {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
uuid := nameUuid(name)
|
uuid := nameUuid(name)
|
||||||
plugins_id.Store(uuid, path)
|
plugins_id.Store(uuid, path)
|
||||||
// fmt.Println("add,", uuid, name)
|
// fmt.Println("add,", uuid, name)
|
||||||
f, cbs := pluginParse(string(data), uuid)
|
f, cbs := pluginParse(script, uuid)
|
||||||
f.Suffix = ".js"
|
f.Suffix = ".js"
|
||||||
f.Type = "typescript"
|
f.Type = "typescript"
|
||||||
f.Handle = func(s common.Sender, f func(vm *goja.Runtime)) interface{} {
|
f.Handle = func(s common.Sender, f func(vm *goja.Runtime)) interface{} {
|
||||||
|
|||||||
+2
-1
@@ -149,10 +149,11 @@ func initPlugins() {
|
|||||||
Error: err,
|
Error: err,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
fmt.Println(zipfile)
|
||||||
defer os.Remove(zipfile)
|
defer os.Remove(zipfile)
|
||||||
if err := unzip(zipfile, 0755); err != nil {
|
if err := unzip(zipfile, 0755); err != nil {
|
||||||
return &storage.Final{
|
return &storage.Final{
|
||||||
Error: errors.New("安装异常!"),
|
Error: errors.New("安装异常!" + err.Error()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return &storage.Final{
|
return &storage.Final{
|
||||||
|
|||||||
Reference in New Issue
Block a user