forked from x/icebergs
opt lark
This commit is contained in:
parent
fe7c0209a0
commit
9ec30c3d53
@ -6,8 +6,6 @@ import (
|
|||||||
"github.com/shylinux/icebergs/base/mdb"
|
"github.com/shylinux/icebergs/base/mdb"
|
||||||
kit "github.com/shylinux/toolkits"
|
kit "github.com/shylinux/toolkits"
|
||||||
|
|
||||||
"fmt"
|
|
||||||
"os"
|
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
@ -23,7 +21,6 @@ func _daemon_show(m *ice.Message, cmd *exec.Cmd, out, err string) {
|
|||||||
cmd.Stderr = f
|
cmd.Stderr = f
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd.Env = append(cmd.Env, fmt.Sprintf("PATH=%s", os.Getenv("PATH")))
|
|
||||||
if e := cmd.Start(); m.Warn(e != nil, ErrStart, cmd.Args, " ", e) {
|
if e := cmd.Start(); m.Warn(e != nil, ErrStart, cmd.Args, " ", e) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,7 @@ func _dream_show(m *ice.Message, name string) {
|
|||||||
m.Optionv(cli.CMD_DIR, p)
|
m.Optionv(cli.CMD_DIR, p)
|
||||||
m.Optionv(cli.CMD_ENV, kit.Simple(
|
m.Optionv(cli.CMD_ENV, kit.Simple(
|
||||||
"ctx_dev", m.Conf(cli.RUNTIME, "conf.ctx_dev"),
|
"ctx_dev", m.Conf(cli.RUNTIME, "conf.ctx_dev"),
|
||||||
"PATH", kit.Path(path.Join(p, "bin"))+":"+os.Getenv("PATH"),
|
"PATH", kit.Path(path.Join(p, "bin"))+":"+kit.Path("bin")+":"+os.Getenv("PATH"),
|
||||||
"USER", ice.Info.UserName, m.Confv(DREAM, "meta.env"),
|
"USER", ice.Info.UserName, m.Confv(DREAM, "meta.env"),
|
||||||
))
|
))
|
||||||
// 启动任务
|
// 启动任务
|
||||||
|
@ -56,7 +56,6 @@ func init() {
|
|||||||
m.Cmdy("web.code.publish", "contexts", "tmux")
|
m.Cmdy("web.code.publish", "contexts", "tmux")
|
||||||
m.Cmdy("web.code.publish", "contexts", "base")
|
m.Cmdy("web.code.publish", "contexts", "base")
|
||||||
m.Cmdy("web.code.publish", "contexts", "miss")
|
m.Cmdy("web.code.publish", "contexts", "miss")
|
||||||
|
|
||||||
m.Cmdy("web.wiki.image", "qrcode", m.Option(ice.MSG_USERWEB))
|
m.Cmdy("web.wiki.image", "qrcode", m.Option(ice.MSG_USERWEB))
|
||||||
}},
|
}},
|
||||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
@ -64,6 +64,24 @@ func _serve_main(m *ice.Message, w http.ResponseWriter, r *http.Request) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if strings.HasPrefix(r.URL.Path, "/debug") {
|
||||||
|
r.URL.Path = strings.Replace(r.URL.Path, "/debug", "/code", -1)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
if b, ok := ice.BinPack[r.URL.Path]; ok {
|
||||||
|
if strings.HasSuffix(r.URL.Path, ".css") {
|
||||||
|
w.Header().Set("Content-Type", "text/css; charset=utf-8")
|
||||||
|
}
|
||||||
|
w.Write(b)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
if r.URL.Path == "/" && strings.Contains(r.Header.Get("User-Agent"), "curl") {
|
||||||
|
http.ServeFile(w, r, path.Join(m.Conf(SERVE, "meta.intshell.path"), m.Conf(SERVE, "meta.intshell.index")))
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
// 单点登录
|
// 单点登录
|
||||||
if r.URL.Path == "/" && m.Conf(SERVE, "meta.sso") != "" {
|
if r.URL.Path == "/" && m.Conf(SERVE, "meta.sso") != "" {
|
||||||
sessid := r.FormValue(ice.MSG_SESSID)
|
sessid := r.FormValue(ice.MSG_SESSID)
|
||||||
@ -82,26 +100,8 @@ func _serve_main(m *ice.Message, w http.ResponseWriter, r *http.Request) bool {
|
|||||||
http.Redirect(w, r, m.Conf(SERVE, "meta.sso"), http.StatusTemporaryRedirect)
|
http.Redirect(w, r, m.Conf(SERVE, "meta.sso"), http.StatusTemporaryRedirect)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
return true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if strings.HasPrefix(r.URL.Path, "/debug") {
|
|
||||||
r.URL.Path = strings.Replace(r.URL.Path, "/debug", "/code", -1)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
if b, ok := ice.BinPack[r.URL.Path]; ok {
|
|
||||||
if strings.HasSuffix(r.URL.Path, ".css") {
|
|
||||||
w.Header().Set("Content-Type", "text/css; charset=utf-8")
|
|
||||||
}
|
|
||||||
w.Write(b)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
if r.URL.Path == "/" && strings.Contains(r.Header.Get("User-Agent"), "curl") {
|
|
||||||
http.ServeFile(w, r, path.Join(m.Conf(SERVE, "meta.intshell.path"), m.Conf(SERVE, "meta.intshell.index")))
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
func _serve_handle(key string, cmd *ice.Command, msg *ice.Message, w http.ResponseWriter, r *http.Request) {
|
func _serve_handle(key string, cmd *ice.Command, msg *ice.Message, w http.ResponseWriter, r *http.Request) {
|
||||||
@ -197,7 +197,7 @@ func _serve_login(msg *ice.Message, cmds []string, w http.ResponseWriter, r *htt
|
|||||||
aaa.SessCheck(msg, msg.Option(ice.MSG_SESSID))
|
aaa.SessCheck(msg, msg.Option(ice.MSG_SESSID))
|
||||||
}
|
}
|
||||||
|
|
||||||
if !msg.Options(ice.MSG_USERNAME) && tcp.IsLocalHost(msg, msg.Option(ice.MSG_USERIP)) {
|
if !msg.Options(ice.MSG_USERNAME) && tcp.IsLocalHost(msg, msg.Option(ice.MSG_USERIP)) && msg.Conf(SERVE, "meta.localhost") == "true" {
|
||||||
// 自动认证
|
// 自动认证
|
||||||
aaa.UserLogin(msg, ice.Info.UserName, ice.Info.PassWord)
|
aaa.UserLogin(msg, ice.Info.UserName, ice.Info.PassWord)
|
||||||
}
|
}
|
||||||
@ -241,8 +241,10 @@ func init() {
|
|||||||
Configs: map[string]*ice.Config{
|
Configs: map[string]*ice.Config{
|
||||||
SERVE: {Name: SERVE, Help: "服务器", Value: kit.Data(
|
SERVE: {Name: SERVE, Help: "服务器", Value: kit.Data(
|
||||||
kit.MDB_SHORT, kit.MDB_NAME,
|
kit.MDB_SHORT, kit.MDB_NAME,
|
||||||
"logheaders", "false", "black", kit.Dict(), "white", kit.Dict(
|
"logheaders", "false",
|
||||||
"space", true, "share", true, "plugin", true, "publish", true,
|
"localhost", "true",
|
||||||
|
"black", kit.Dict(), "white", kit.Dict(
|
||||||
|
"login", true, "space", true, "share", true, "plugin", true, "publish", true,
|
||||||
),
|
),
|
||||||
|
|
||||||
"static", kit.Dict("/", "usr/volcanos/"),
|
"static", kit.Dict("/", "usr/volcanos/"),
|
||||||
|
@ -212,7 +212,7 @@ func init() {
|
|||||||
Commands: map[string]*ice.Command{
|
Commands: map[string]*ice.Command{
|
||||||
SPACE: {Name: "space name cmd auto", Help: "空间站", Action: map[string]*ice.Action{
|
SPACE: {Name: "space name cmd auto", Help: "空间站", Action: map[string]*ice.Action{
|
||||||
"connect": {Name: "connect dev name", Help: "连接", Hand: func(m *ice.Message, arg ...string) {
|
"connect": {Name: "connect dev name", Help: "连接", Hand: func(m *ice.Message, arg ...string) {
|
||||||
_space_dial(m, arg[0], kit.Select(ice.Info.NodeName, arg[1]))
|
_space_dial(m, arg[0], kit.Select(ice.Info.NodeName, arg, 1))
|
||||||
}},
|
}},
|
||||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
if len(arg) < 2 {
|
if len(arg) < 2 {
|
||||||
|
@ -38,12 +38,7 @@ func init() {
|
|||||||
main := kit.Select("src/main.go", arg, 2)
|
main := kit.Select("src/main.go", arg, 2)
|
||||||
arch := kit.Select(m.Conf(cli.RUNTIME, "host.GOARCH"), arg, 1)
|
arch := kit.Select(m.Conf(cli.RUNTIME, "host.GOARCH"), arg, 1)
|
||||||
goos := kit.Select(m.Conf(cli.RUNTIME, "host.GOOS"), arg, 0)
|
goos := kit.Select(m.Conf(cli.RUNTIME, "host.GOOS"), arg, 0)
|
||||||
file := ""
|
file := path.Join(m.Conf(cmd, "meta.path"), kit.Keys(kit.Select("ice"), goos, arch))
|
||||||
if m.Option(cli.CMD_DIR) == "" {
|
|
||||||
file = path.Join(m.Conf(cmd, "meta.path"), kit.Keys(kit.Select("ice", m.Option("name")), goos, arch))
|
|
||||||
} else {
|
|
||||||
file = kit.Keys(kit.Select("ice", m.Option("name")), goos, arch)
|
|
||||||
}
|
|
||||||
if goos == "windows" {
|
if goos == "windows" {
|
||||||
// file += ".exe"
|
// file += ".exe"
|
||||||
}
|
}
|
||||||
|
2
init.go
2
init.go
@ -154,7 +154,7 @@ func Run(arg ...string) string {
|
|||||||
Pulse.root = Pulse
|
Pulse.root = Pulse
|
||||||
Pulse.Option("cache.limit", "30")
|
Pulse.Option("cache.limit", "30")
|
||||||
Pulse.Option("begin_time", Pulse.Time())
|
Pulse.Option("begin_time", Pulse.Time())
|
||||||
_log_disable = false
|
_log_disable = true
|
||||||
switch kit.Select("", arg, 0) {
|
switch kit.Select("", arg, 0) {
|
||||||
case "space", "serve":
|
case "space", "serve":
|
||||||
if _log_disable = false; frame.Begin(Pulse.Spawns(), arg...).Start(Pulse, arg...) {
|
if _log_disable = false; frame.Begin(Pulse.Spawns(), arg...).Start(Pulse, arg...) {
|
||||||
|
4
misc.go
4
misc.go
@ -37,11 +37,11 @@ func (m *Message) Watch(key string, arg ...string) *Message {
|
|||||||
if len(arg) == 0 {
|
if len(arg) == 0 {
|
||||||
arg = append(arg, m.Prefix("auto"))
|
arg = append(arg, m.Prefix("auto"))
|
||||||
}
|
}
|
||||||
m.Cmd("gdb.event", "listen", "event", key, "cmd", strings.Join(arg, " "))
|
m.Cmd("gdb.event", "action", "listen", "event", key, "cmd", strings.Join(arg, " "))
|
||||||
return m
|
return m
|
||||||
}
|
}
|
||||||
func (m *Message) Event(key string, arg ...string) *Message {
|
func (m *Message) Event(key string, arg ...string) *Message {
|
||||||
m.Cmd("gdb.event", "action", "event", key, strings.Join(arg, " "))
|
m.Cmd("gdb.event", "action", "action", "event", key, arg)
|
||||||
return m
|
return m
|
||||||
}
|
}
|
||||||
func (m *Message) Right(arg ...interface{}) bool {
|
func (m *Message) Right(arg ...interface{}) bool {
|
||||||
|
@ -67,7 +67,7 @@ const (
|
|||||||
const (
|
const (
|
||||||
APP = "app"
|
APP = "app"
|
||||||
SHIP = "ship"
|
SHIP = "ship"
|
||||||
USER = "user"
|
USERS = "users"
|
||||||
GROUP = "group"
|
GROUP = "group"
|
||||||
|
|
||||||
SEND = "send"
|
SEND = "send"
|
||||||
@ -92,7 +92,7 @@ var Index = &ice.Context{Name: "lark", Help: "机器人",
|
|||||||
),
|
),
|
||||||
)},
|
)},
|
||||||
SHIP: {Name: SHIP, Help: "组织配置", Value: kit.Data(kit.MDB_SHORT, SHIP_ID)},
|
SHIP: {Name: SHIP, Help: "组织配置", Value: kit.Data(kit.MDB_SHORT, SHIP_ID)},
|
||||||
USER: {Name: USER, Help: "用户配置", Value: kit.Data(kit.MDB_SHORT, OPEN_ID)},
|
USERS: {Name: USERS, Help: "用户配置", Value: kit.Data(kit.MDB_SHORT, OPEN_ID)},
|
||||||
HOME: {Name: HOME, Help: "卡片配置", Value: kit.Data(kit.MDB_SHORT, OPEN_ID)},
|
HOME: {Name: HOME, Help: "卡片配置", Value: kit.Data(kit.MDB_SHORT, OPEN_ID)},
|
||||||
META: {Name: META, Help: "卡片配置", Value: kit.Data(
|
META: {Name: META, Help: "卡片配置", Value: kit.Data(
|
||||||
kit.MDB_SHORT, "url",
|
kit.MDB_SHORT, "url",
|
||||||
@ -105,7 +105,7 @@ var Index = &ice.Context{Name: "lark", Help: "机器人",
|
|||||||
m.Cmd(DUTY, "boot", m.Conf(cli.RUNTIME, "boot.hostname"), m.Time())
|
m.Cmd(DUTY, "boot", m.Conf(cli.RUNTIME, "boot.hostname"), m.Time())
|
||||||
}},
|
}},
|
||||||
ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
m.Save(APP, SHIP, USER, META)
|
m.Save(APP, SHIP, USERS, META)
|
||||||
}},
|
}},
|
||||||
|
|
||||||
APP: {Name: "app [name] auto", Help: "应用", Action: map[string]*ice.Action{
|
APP: {Name: "app [name] auto", Help: "应用", Action: map[string]*ice.Action{
|
||||||
@ -143,13 +143,13 @@ var Index = &ice.Context{Name: "lark", Help: "机器人",
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
}},
|
}},
|
||||||
"user": {Name: "user ship_id", Hand: func(m *ice.Message, arg ...string) {
|
"users": {Name: "users ship_id", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Richs(APP, nil, "bot", func(key string, value map[string]interface{}) {
|
m.Richs(APP, nil, "bot", func(key string, value map[string]interface{}) {
|
||||||
data := raw(m, "/open-apis/contact/v1/department/user/list",
|
data := raw(m, "/open-apis/contact/v1/department/user/list",
|
||||||
"department_id", arg[0], "page_size", "100", "fetch_child", "true")
|
"department_id", arg[0], "page_size", "100", "fetch_child", "true")
|
||||||
|
|
||||||
kit.Fetch(kit.Value(data, "data.user_list"), func(index int, value map[string]interface{}) {
|
kit.Fetch(kit.Value(data, "data.user_list"), func(index int, value map[string]interface{}) {
|
||||||
msg := m.Cmd(m.Prefix(USER), value[OPEN_ID])
|
msg := m.Cmd(USERS, value[OPEN_ID])
|
||||||
// m.Push("avatar", m.Cmdx(mdb.RENDER, web.RENDER.IMG, msg.Append("avatar_72")))
|
// m.Push("avatar", m.Cmdx(mdb.RENDER, web.RENDER.IMG, msg.Append("avatar_72")))
|
||||||
m.Push("gender", kit.Select("男", "女", msg.Append("gender") == "2"))
|
m.Push("gender", kit.Select("男", "女", msg.Append("gender") == "2"))
|
||||||
m.Push(kit.MDB_NAME, msg.Append(kit.MDB_NAME))
|
m.Push(kit.MDB_NAME, msg.Append(kit.MDB_NAME))
|
||||||
@ -174,13 +174,13 @@ var Index = &ice.Context{Name: "lark", Help: "机器人",
|
|||||||
}
|
}
|
||||||
if len(arg) == 1 {
|
if len(arg) == 1 {
|
||||||
// 用户列表
|
// 用户列表
|
||||||
m.Cmdy(m.Prefix(SHIP), USER, arg[0])
|
m.Cmdy(m.Prefix(SHIP), USERS, arg[0])
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 用户通知
|
// 用户通知
|
||||||
m.Cmdy(m.Prefix(SEND), OPEN_ID, arg[1], arg[2:])
|
m.Cmdy(m.Prefix(SEND), OPEN_ID, arg[1], arg[2:])
|
||||||
}},
|
}},
|
||||||
USER: {Name: "user open_id|mobile|email", Help: "用户", Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
|
USERS: {Name: "users open_id|mobile|email", Help: "用户", Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
|
||||||
if strings.HasPrefix(arg[0], "ou_") {
|
if strings.HasPrefix(arg[0], "ou_") {
|
||||||
m.Richs(APP, nil, "bot", func(key string, value map[string]interface{}) {
|
m.Richs(APP, nil, "bot", func(key string, value map[string]interface{}) {
|
||||||
data := raw(m, "/open-apis/contact/v1/user/batch_get", "open_ids", arg[0])
|
data := raw(m, "/open-apis/contact/v1/user/batch_get", "open_ids", arg[0])
|
||||||
@ -201,12 +201,12 @@ var Index = &ice.Context{Name: "lark", Help: "机器人",
|
|||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
GROUP: {Name: "group chat_id open_id text", Help: "群组", Action: map[string]*ice.Action{
|
GROUP: {Name: "group chat_id open_id text", Help: "群组", Action: map[string]*ice.Action{
|
||||||
"user": {Name: "user id", Hand: func(m *ice.Message, arg ...string) {
|
"users": {Name: "users id", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Richs(APP, nil, "bot", func(key string, value map[string]interface{}) {
|
m.Richs(APP, nil, "bot", func(key string, value map[string]interface{}) {
|
||||||
data := raw(m, "/open-apis/chat/v4/info", "chat_id", arg[0])
|
data := raw(m, "/open-apis/chat/v4/info", "chat_id", arg[0])
|
||||||
|
|
||||||
kit.Fetch(kit.Value(data, "data.members"), func(index int, value map[string]interface{}) {
|
kit.Fetch(kit.Value(data, "data.members"), func(index int, value map[string]interface{}) {
|
||||||
msg := m.Cmd(m.Prefix(USER), value[OPEN_ID])
|
msg := m.Cmd(USERS, value[OPEN_ID])
|
||||||
// m.Push("avatar", m.Cmdx(mdb.RENDER, web.RENDER.IMG, msg.Append("avatar_72")))
|
// m.Push("avatar", m.Cmdx(mdb.RENDER, web.RENDER.IMG, msg.Append("avatar_72")))
|
||||||
m.Push("gender", kit.Select("男", "女", msg.Append("gender") == "2"))
|
m.Push("gender", kit.Select("男", "女", msg.Append("gender") == "2"))
|
||||||
m.Push(kit.MDB_NAME, msg.Append(kit.MDB_NAME))
|
m.Push(kit.MDB_NAME, msg.Append(kit.MDB_NAME))
|
||||||
@ -234,7 +234,7 @@ var Index = &ice.Context{Name: "lark", Help: "机器人",
|
|||||||
}
|
}
|
||||||
if len(arg) == 1 {
|
if len(arg) == 1 {
|
||||||
// 用户列表
|
// 用户列表
|
||||||
m.Cmdy(m.Prefix(GROUP), USER, arg[0])
|
m.Cmdy(m.Prefix(GROUP), USERS, arg[0])
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 用户通知
|
// 用户通知
|
||||||
@ -328,7 +328,7 @@ var Index = &ice.Context{Name: "lark", Help: "机器人",
|
|||||||
m.Cmdy(SEND, m.Conf(APP, "meta.duty"), arg)
|
m.Cmdy(SEND, m.Conf(APP, "meta.duty"), arg)
|
||||||
}},
|
}},
|
||||||
RAND: {Name: "rand", Help: "随机", Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
|
RAND: {Name: "rand", Help: "随机", Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
|
||||||
msg := m.Cmd(GROUP, "user", m.Option(OPEN_CHAT_ID))
|
msg := m.Cmd(GROUP, USERS, m.Option(OPEN_CHAT_ID))
|
||||||
list := msg.Appendv("name")
|
list := msg.Appendv("name")
|
||||||
if strings.Contains(m.Option("content"), "誰") {
|
if strings.Contains(m.Option("content"), "誰") {
|
||||||
m.Echo(strings.Replace(m.Option("content"), "誰", list[rand.Intn(len(list))], 1))
|
m.Echo(strings.Replace(m.Option("content"), "誰", list[rand.Intn(len(list))], 1))
|
||||||
@ -531,7 +531,7 @@ var Index = &ice.Context{Name: "lark", Help: "机器人",
|
|||||||
m.Render("redirect", m.Conf(web.SHARE, "meta.domain"))
|
m.Render("redirect", m.Conf(web.SHARE, "meta.domain"))
|
||||||
|
|
||||||
m.Option(aaa.USERNAME, user)
|
m.Option(aaa.USERNAME, user)
|
||||||
msg := m.Cmd(m.Prefix(USER), user)
|
msg := m.Cmd(USERS, user)
|
||||||
m.Cmd(aaa.USER, mdb.MODIFY, aaa.USERZONE, LARK, aaa.USERNICK, msg.Append("name"),
|
m.Cmd(aaa.USER, mdb.MODIFY, aaa.USERZONE, LARK, aaa.USERNICK, msg.Append("name"),
|
||||||
"mobile", msg.Append("mobile"), "avatar_url", msg.Append("avatar_url"),
|
"mobile", msg.Append("mobile"), "avatar_url", msg.Append("avatar_url"),
|
||||||
"gender", kit.Select("女", "男", msg.Append("gender") == "1"),
|
"gender", kit.Select("女", "男", msg.Append("gender") == "1"),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user