| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- package core
- import (
- "fmt"
- "strings"
- "github.com/beego/beego/v2/adapter/httplib"
- "github.com/dop251/goja_nodejs/require"
- )
- func mapFileSystemSourceLoader(uuid string) require.SourceLoader {
- return func(path string) ([]byte, error) {
- path = strings.ReplaceAll(path, `node_modules/`, "")
- var data []byte
- var address = ""
- ls := plugin_list
- for _, f := range ls {
- if f.UUID == uuid {
- address = f.Address
- break
- }
- }
- if address != "" {
- for _, f := range ls {
- if f.Address == address && f.Title == path {
- data = plugins.GetBytes(f.UUID)
- }
- }
- if data == nil {
- for _, l := range ls {
- if l.Address == address && l.Title == path {
- data = fetchScript(l.Address, l.UUID)
- if data == nil {
- return nil, fmt.Errorf("无法从订阅源获取%s模块", path)
- } else {
- console.Log("已从订阅源获取%s模块", path)
- plugins.Set(l.UUID, string(data))
- }
- break
- }
- }
- }
- }
- if len(data) == 0 {
- fs := Functions
- for _, f := range fs {
- if f.Title == path {
- data = plugins.GetBytes(f.UUID)
- }
- }
- }
- if data == nil {
- return nil, fmt.Errorf("缺少%s模块", path) //require.ModuleFileDoesNotExistError
- }
- su := &ScriptUtils{
- script: string(data),
- }
- if su.GetValue("encrypt") == "true" {
- data = []byte(DecryptPlugin(su.script))
- }
- data = []byte(halfDeEct(string(data)))
- return data, nil
- }
- }
- func fetchScript(address, uuid string) (data []byte) {
- var prefix = "?uuid=" + uuid
- if !strings.HasSuffix(address, "list.json") {
- address = address + "/api/plugins/download" + prefix
- } else {
- address = strings.ReplaceAll(address, "list.json", "download"+prefix)
- }
- data, _ = httplib.Get(address).Bytes()
- return
- }
|