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"
|
||||
kit "github.com/shylinux/toolkits"
|
||||
|
||||
"fmt"
|
||||
"os"
|
||||
"os/exec"
|
||||
"strings"
|
||||
)
|
||||
@ -23,7 +21,6 @@ func _daemon_show(m *ice.Message, cmd *exec.Cmd, out, err string) {
|
||||
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) {
|
||||
return
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ func _dream_show(m *ice.Message, name string) {
|
||||
m.Optionv(cli.CMD_DIR, p)
|
||||
m.Optionv(cli.CMD_ENV, kit.Simple(
|
||||
"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"),
|
||||
))
|
||||
// 启动任务
|
||||
|
@ -56,7 +56,6 @@ func init() {
|
||||
m.Cmdy("web.code.publish", "contexts", "tmux")
|
||||
m.Cmdy("web.code.publish", "contexts", "base")
|
||||
m.Cmdy("web.code.publish", "contexts", "miss")
|
||||
|
||||
m.Cmdy("web.wiki.image", "qrcode", m.Option(ice.MSG_USERWEB))
|
||||
}},
|
||||
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
|
||||
}
|
||||
|
||||
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") != "" {
|
||||
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)
|
||||
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
|
||||
}
|
||||
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))
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
@ -241,8 +241,10 @@ func init() {
|
||||
Configs: map[string]*ice.Config{
|
||||
SERVE: {Name: SERVE, Help: "服务器", Value: kit.Data(
|
||||
kit.MDB_SHORT, kit.MDB_NAME,
|
||||
"logheaders", "false", "black", kit.Dict(), "white", kit.Dict(
|
||||
"space", true, "share", true, "plugin", true, "publish", true,
|
||||
"logheaders", "false",
|
||||
"localhost", "true",
|
||||
"black", kit.Dict(), "white", kit.Dict(
|
||||
"login", true, "space", true, "share", true, "plugin", true, "publish", true,
|
||||
),
|
||||
|
||||
"static", kit.Dict("/", "usr/volcanos/"),
|
||||
|
@ -212,7 +212,7 @@ func init() {
|
||||
Commands: map[string]*ice.Command{
|
||||
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) {
|
||||
_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) {
|
||||
if len(arg) < 2 {
|
||||
|
@ -38,12 +38,7 @@ func init() {
|
||||
main := kit.Select("src/main.go", arg, 2)
|
||||
arch := kit.Select(m.Conf(cli.RUNTIME, "host.GOARCH"), arg, 1)
|
||||
goos := kit.Select(m.Conf(cli.RUNTIME, "host.GOOS"), arg, 0)
|
||||
file := ""
|
||||
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)
|
||||
}
|
||||
file := path.Join(m.Conf(cmd, "meta.path"), kit.Keys(kit.Select("ice"), goos, arch))
|
||||
if goos == "windows" {
|
||||
// file += ".exe"
|
||||
}
|
||||
|
2
init.go
2
init.go
@ -154,7 +154,7 @@ func Run(arg ...string) string {
|
||||
Pulse.root = Pulse
|
||||
Pulse.Option("cache.limit", "30")
|
||||
Pulse.Option("begin_time", Pulse.Time())
|
||||
_log_disable = false
|
||||
_log_disable = true
|
||||
switch kit.Select("", arg, 0) {
|
||||
case "space", "serve":
|
||||
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 {
|
||||
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
|
||||
}
|
||||
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
|
||||
}
|
||||
func (m *Message) Right(arg ...interface{}) bool {
|
||||
|
@ -67,7 +67,7 @@ const (
|
||||
const (
|
||||
APP = "app"
|
||||
SHIP = "ship"
|
||||
USER = "user"
|
||||
USERS = "users"
|
||||
GROUP = "group"
|
||||
|
||||
SEND = "send"
|
||||
@ -91,9 +91,9 @@ var Index = &ice.Context{Name: "lark", Help: "机器人",
|
||||
ADD_BOT, "我来也~", P2P_CHAT_CREATE, "让我们做好朋友吧~",
|
||||
),
|
||||
)},
|
||||
SHIP: {Name: SHIP, Help: "组织配置", Value: kit.Data(kit.MDB_SHORT, SHIP_ID)},
|
||||
USER: {Name: USER, Help: "用户配置", Value: kit.Data(kit.MDB_SHORT, OPEN_ID)},
|
||||
HOME: {Name: HOME, Help: "卡片配置", Value: kit.Data(kit.MDB_SHORT, OPEN_ID)},
|
||||
SHIP: {Name: SHIP, Help: "组织配置", Value: kit.Data(kit.MDB_SHORT, SHIP_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)},
|
||||
META: {Name: META, Help: "卡片配置", Value: kit.Data(
|
||||
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())
|
||||
}},
|
||||
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{
|
||||
@ -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{}) {
|
||||
data := raw(m, "/open-apis/contact/v1/department/user/list",
|
||||
"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{}) {
|
||||
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("gender", kit.Select("男", "女", msg.Append("gender") == "2"))
|
||||
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 {
|
||||
// 用户列表
|
||||
m.Cmdy(m.Prefix(SHIP), USER, arg[0])
|
||||
m.Cmdy(m.Prefix(SHIP), USERS, arg[0])
|
||||
return
|
||||
}
|
||||
// 用户通知
|
||||
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_") {
|
||||
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])
|
||||
@ -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{
|
||||
"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{}) {
|
||||
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{}) {
|
||||
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("gender", kit.Select("男", "女", msg.Append("gender") == "2"))
|
||||
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 {
|
||||
// 用户列表
|
||||
m.Cmdy(m.Prefix(GROUP), USER, arg[0])
|
||||
m.Cmdy(m.Prefix(GROUP), USERS, arg[0])
|
||||
return
|
||||
}
|
||||
// 用户通知
|
||||
@ -328,7 +328,7 @@ var Index = &ice.Context{Name: "lark", Help: "机器人",
|
||||
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) {
|
||||
msg := m.Cmd(GROUP, "user", m.Option(OPEN_CHAT_ID))
|
||||
msg := m.Cmd(GROUP, USERS, m.Option(OPEN_CHAT_ID))
|
||||
list := msg.Appendv("name")
|
||||
if strings.Contains(m.Option("content"), "誰") {
|
||||
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.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"),
|
||||
"mobile", msg.Append("mobile"), "avatar_url", msg.Append("avatar_url"),
|
||||
"gender", kit.Select("女", "男", msg.Append("gender") == "1"),
|
||||
|
Loading…
x
Reference in New Issue
Block a user