mirror of
https://shylinux.com/x/icebergs
synced 2025-04-28 18:22:02 +08:00
opt chat
This commit is contained in:
parent
3208f8bf8a
commit
3a7338a425
@ -38,11 +38,14 @@ func init() {
|
|||||||
mdb.REVERT: {Name: "revert", Help: "恢复", Hand: func(m *ice.Message, arg ...string) {
|
mdb.REVERT: {Name: "revert", Help: "恢复", Hand: func(m *ice.Message, arg ...string) {
|
||||||
Rename(m, m.Option(FILE), m.Option(FROM))
|
Rename(m, m.Option(FILE), m.Option(FROM))
|
||||||
mdb.HashRemove(m, m.OptionSimple(mdb.HASH))
|
mdb.HashRemove(m, m.OptionSimple(mdb.HASH))
|
||||||
|
m.ProcessRefresh()
|
||||||
}},
|
}},
|
||||||
mdb.CREATE: {Name: "create path", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
mdb.CREATE: {Name: "create path", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||||
p := path.Join(ice.VAR_TRASH, path.Base(m.Option(PATH)))
|
p := path.Join(ice.VAR_TRASH, path.Base(m.Option(PATH)))
|
||||||
RemoveAll(m, p)
|
RemoveAll(m, p)
|
||||||
if MkdirAll(m, path.Dir(p)); !m.Warn(Rename(m, m.Option(PATH), p)) {
|
if MkdirAll(m, path.Dir(p)); !m.Warn(Rename(m, m.Option(PATH), p)) {
|
||||||
|
mdb.HashCreate(m, FROM, m.Option(PATH), FILE, p)
|
||||||
|
m.ProcessRefresh()
|
||||||
m.Echo(p)
|
m.Echo(p)
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
|
@ -149,6 +149,9 @@ func RenderWebsite(m *ice.Message, pod string, dir string, arg ...string) *ice.M
|
|||||||
return m.Echo(m.Cmdx(Space(m, pod), "web.chat.website", lex.PARSE, dir, arg)).RenderResult()
|
return m.Echo(m.Cmdx(Space(m, pod), "web.chat.website", lex.PARSE, dir, arg)).RenderResult()
|
||||||
}
|
}
|
||||||
func RenderCmd(m *ice.Message, index string, args ...ice.Any) {
|
func RenderCmd(m *ice.Message, index string, args ...ice.Any) {
|
||||||
|
if index == "" {
|
||||||
|
return
|
||||||
|
}
|
||||||
list := index
|
list := index
|
||||||
if index != "" {
|
if index != "" {
|
||||||
msg := m.Cmd(ctx.COMMAND, index)
|
msg := m.Cmd(ctx.COMMAND, index)
|
||||||
|
@ -60,7 +60,7 @@ func _share_local(m *ice.Message, arg ...string) {
|
|||||||
return // 没有权限
|
return // 没有权限
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
if !aaa.Right(m, ls) {
|
if !aaa.Right(m, ls) && m.Option(ice.POD) == "" {
|
||||||
m.Render(STATUS, http.StatusUnauthorized, ice.ErrNotRight)
|
m.Render(STATUS, http.StatusUnauthorized, ice.ErrNotRight)
|
||||||
return // 没有权限
|
return // 没有权限
|
||||||
}
|
}
|
||||||
|
@ -12,25 +12,23 @@ footer.go
|
|||||||
template.go
|
template.go
|
||||||
|
|
||||||
section "集群"
|
section "集群"
|
||||||
|
sso.go
|
||||||
pod.go
|
pod.go
|
||||||
cmd.go
|
cmd.go
|
||||||
website.go
|
website.go
|
||||||
div.go
|
div.go
|
||||||
sso.go
|
|
||||||
oauth
|
oauth
|
||||||
|
|
||||||
section "应用"
|
section "应用"
|
||||||
keyboard.go
|
|
||||||
iframe.go
|
iframe.go
|
||||||
paste.go
|
paste.go
|
||||||
media.go
|
|
||||||
files.go
|
files.go
|
||||||
trans.go
|
trans.go
|
||||||
|
media.go
|
||||||
scan.go
|
scan.go
|
||||||
scan.js
|
|
||||||
location.go
|
|
||||||
location.shy
|
|
||||||
topic.go
|
|
||||||
meet.go
|
meet.go
|
||||||
room.go
|
room.go
|
||||||
|
topic.go
|
||||||
|
keyboard.go
|
||||||
|
location.go
|
||||||
|
location.shy
|
||||||
|
@ -26,13 +26,7 @@ func _cmd_file(m *ice.Message, arg ...string) bool {
|
|||||||
web.RenderCmd(m, "web.wiki.word", p)
|
web.RenderCmd(m, "web.wiki.word", p)
|
||||||
|
|
||||||
case nfs.IML:
|
case nfs.IML:
|
||||||
if m.Option(ice.MSG_USERPOD) == "" {
|
m.RenderRedirect(web.MergePodWebSite(m, "", strings.TrimPrefix(p, SRC_WEBSITE)))
|
||||||
m.RenderRedirect(path.Join(CHAT_WEBSITE, strings.TrimPrefix(p, SRC_WEBSITE)))
|
|
||||||
m.Option(ice.MSG_ARGS, m.Option(ice.MSG_ARGS))
|
|
||||||
} else {
|
|
||||||
m.RenderRedirect(path.Join("/chat/pod", m.Option(ice.MSG_USERPOD), "website", strings.TrimPrefix(p, SRC_WEBSITE)))
|
|
||||||
m.Option(ice.MSG_ARGS, m.Option(ice.MSG_ARGS))
|
|
||||||
}
|
|
||||||
|
|
||||||
case nfs.ZML:
|
case nfs.ZML:
|
||||||
web.RenderCmd(m, "can.parse", m.Cmdx(nfs.CAT, p))
|
web.RenderCmd(m, "can.parse", m.Cmdx(nfs.CAT, p))
|
||||||
@ -56,7 +50,6 @@ func init() {
|
|||||||
CMD: {Name: "cmd path auto upload up home", Help: "命令", Actions: ice.MergeActions(ice.Actions{
|
CMD: {Name: "cmd path auto upload up home", Help: "命令", Actions: ice.MergeActions(ice.Actions{
|
||||||
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
|
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmd(aaa.ROLE, aaa.WHITE, aaa.VOID, CMD)
|
m.Cmd(aaa.ROLE, aaa.WHITE, aaa.VOID, CMD)
|
||||||
m.Cmdy(CMD, mdb.CREATE, mdb.TYPE, nfs.SHY, mdb.NAME, "web.wiki.word")
|
|
||||||
m.Cmdy(CMD, mdb.CREATE, mdb.TYPE, nfs.SVG, mdb.NAME, "web.wiki.draw")
|
m.Cmdy(CMD, mdb.CREATE, mdb.TYPE, nfs.SVG, mdb.NAME, "web.wiki.draw")
|
||||||
m.Cmdy(CMD, mdb.CREATE, mdb.TYPE, nfs.CSV, mdb.NAME, "web.wiki.data")
|
m.Cmdy(CMD, mdb.CREATE, mdb.TYPE, nfs.CSV, mdb.NAME, "web.wiki.data")
|
||||||
m.Cmdy(CMD, mdb.CREATE, mdb.TYPE, nfs.JSON, mdb.NAME, "web.wiki.json")
|
m.Cmdy(CMD, mdb.CREATE, mdb.TYPE, nfs.JSON, mdb.NAME, "web.wiki.json")
|
||||||
@ -64,14 +57,15 @@ func init() {
|
|||||||
m.Cmdy(CMD, mdb.CREATE, mdb.TYPE, k, mdb.NAME, "web.code.inner")
|
m.Cmdy(CMD, mdb.CREATE, mdb.TYPE, k, mdb.NAME, "web.code.inner")
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
}, mdb.HashAction(mdb.SHORT, "type", nfs.PATH, nfs.PWD), ctx.CmdAction(), web.ApiAction()), Hand: func(m *ice.Message, arg ...string) {
|
}, mdb.HashAction(mdb.SHORT, mdb.TYPE, nfs.PATH, nfs.PWD), ctx.CmdAction(), web.ApiAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||||
if _cmd_file(m, arg...) {
|
if _cmd_file(m, arg...) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if ctx.PodCmd(m, ctx.COMMAND, arg[0]) && !m.IsErr() {
|
if len(arg[0]) == 0 || arg[0] == "" {
|
||||||
web.RenderCmd(m, arg[0], arg[1:]) // 远程命令
|
return
|
||||||
} else if m.Cmdy(ctx.COMMAND, arg[0]); m.Length() > 0 {
|
}
|
||||||
web.RenderCmd(m, arg[0], arg[1:]) // 本地命令
|
if m.Cmdy(ctx.COMMAND, arg[0]); m.Length() > 0 {
|
||||||
|
web.RenderCmd(m, arg[0], arg[1:])
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
})
|
})
|
||||||
|
@ -2,6 +2,7 @@ package chat
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
ice "shylinux.com/x/icebergs"
|
ice "shylinux.com/x/icebergs"
|
||||||
|
"shylinux.com/x/icebergs/base/cli"
|
||||||
"shylinux.com/x/icebergs/base/mdb"
|
"shylinux.com/x/icebergs/base/mdb"
|
||||||
"shylinux.com/x/icebergs/base/nfs"
|
"shylinux.com/x/icebergs/base/nfs"
|
||||||
"shylinux.com/x/icebergs/base/web"
|
"shylinux.com/x/icebergs/base/web"
|
||||||
@ -23,7 +24,8 @@ func init() {
|
|||||||
if m.PushDownload(mdb.LINK, value[mdb.NAME], link); len(arg) > 0 && kit.ExtIsImage(value[mdb.NAME]) {
|
if m.PushDownload(mdb.LINK, value[mdb.NAME], link); len(arg) > 0 && kit.ExtIsImage(value[mdb.NAME]) {
|
||||||
m.PushImages("image", link)
|
m.PushImages("image", link)
|
||||||
}
|
}
|
||||||
})
|
m.PushQRCode(cli.QRCODE, web.MergeURL2(m, link))
|
||||||
|
}).PushAction(mdb.REMOVE)
|
||||||
}},
|
}},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -22,8 +22,7 @@ func init() {
|
|||||||
if mdb.HashSelect(m, arg...); len(arg) == 0 || arg[0] == "" {
|
if mdb.HashSelect(m, arg...); len(arg) == 0 || arg[0] == "" {
|
||||||
m.Action(mdb.CREATE, mdb.PRUNES)
|
m.Action(mdb.CREATE, mdb.PRUNES)
|
||||||
} else {
|
} else {
|
||||||
m.StatusTime(mdb.LINK, m.Append(mdb.LINK))
|
m.Action(cli.OPEN).StatusTime(mdb.LINK, m.Append(mdb.LINK))
|
||||||
m.Action(cli.OPEN)
|
|
||||||
ctx.DisplayLocal(m, "")
|
ctx.DisplayLocal(m, "")
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
|
@ -11,8 +11,9 @@ import (
|
|||||||
kit "shylinux.com/x/toolkits"
|
kit "shylinux.com/x/toolkits"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const MEDIA = "media"
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
const MEDIA = "media"
|
|
||||||
Index.MergeCommands(ice.Commands{
|
Index.MergeCommands(ice.Commands{
|
||||||
MEDIA: {Name: "media path auto", Help: "媒体", Actions: ice.MergeActions(ice.Actions{
|
MEDIA: {Name: "media path auto", Help: "媒体", Actions: ice.MergeActions(ice.Actions{
|
||||||
web.UPLOAD: {Hand: func(m *ice.Message, arg ...string) {
|
web.UPLOAD: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
@ -20,6 +20,7 @@ func init() {
|
|||||||
if mdb.HashSelect(m, arg...); len(arg) > 0 {
|
if mdb.HashSelect(m, arg...); len(arg) > 0 {
|
||||||
m.PushScript(ssh.SCRIPT, m.Append(mdb.TEXT))
|
m.PushScript(ssh.SCRIPT, m.Append(mdb.TEXT))
|
||||||
m.PushQRCode(cli.QRCODE, m.Append(mdb.TEXT))
|
m.PushQRCode(cli.QRCODE, m.Append(mdb.TEXT))
|
||||||
|
m.PushAction(mdb.REMOVE)
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
})
|
})
|
||||||
|
@ -39,15 +39,11 @@ func init() {
|
|||||||
web.RenderIndex(m, ice.VOLCANOS) // 节点首页
|
web.RenderIndex(m, ice.VOLCANOS) // 节点首页
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} else if arg[1] == CMD {
|
||||||
|
m.Cmdy(web.SPACE, arg[0], m.Prefix(CMD), path.Join(arg[2:]...)) // 节点命令
|
||||||
|
|
||||||
} else if arg[1] == WEBSITE {
|
} else if arg[1] == WEBSITE {
|
||||||
web.RenderWebsite(m, arg[0], path.Join(arg[2:]...)) // 节点网页
|
web.RenderWebsite(m, arg[0], path.Join(arg[2:]...)) // 节点网页
|
||||||
|
|
||||||
} else if arg[1] == CMD {
|
|
||||||
m.Option(ice.POD, "")
|
|
||||||
m.Cmdy(web.SPACE, arg[0], m.Prefix(CMD), path.Join(arg[2:]...)) // 节点命令
|
|
||||||
} else {
|
|
||||||
m.Cmdy(web.SPACE, m.Option(ice.MSG_USERPOD), "web.chat."+strings.TrimPrefix(path.Join(arg[1:]...), "chat/"))
|
|
||||||
// m.Cmdy(web.SPACE, m.Option(ice.MSG_USERPOD), "web.chat."+ice.PS+path.Join(arg[1:]...))
|
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
})
|
})
|
||||||
|
@ -22,6 +22,7 @@ func init() {
|
|||||||
}
|
}
|
||||||
m.PushScript(ssh.SCRIPT, m.Append(mdb.TEXT))
|
m.PushScript(ssh.SCRIPT, m.Append(mdb.TEXT))
|
||||||
m.PushQRCode(cli.QRCODE, m.Append(mdb.TEXT))
|
m.PushQRCode(cli.QRCODE, m.Append(mdb.TEXT))
|
||||||
|
m.PushAction(mdb.REMOVE)
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
})
|
})
|
||||||
|
@ -1,15 +0,0 @@
|
|||||||
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) {
|
|
||||||
can.onmotion.clear(can), can.base.isFunc(cb) && cb(msg)
|
|
||||||
can.onappend.table(can, msg)
|
|
||||||
can.onappend.board(can, msg)
|
|
||||||
},
|
|
||||||
})
|
|
||||||
Volcanos(chat.ONACTION, {help: "控件交互",
|
|
||||||
scanQRCode0: function(event, can) { can.user.agent.scanQRCode() },
|
|
||||||
scanQRCode: function(event, can, button) { can.user.agent.scanQRCode(function(text, data) {
|
|
||||||
can.runAction(can.request(event, data), data.action||button, [], function(msg) {
|
|
||||||
can.user.toastSuccess(can, text), can.Update()
|
|
||||||
}, true)
|
|
||||||
}, can) },
|
|
||||||
})
|
|
||||||
|
|
@ -13,7 +13,7 @@ const SSO = "sso"
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Index.MergeCommands(ice.Commands{
|
Index.MergeCommands(ice.Commands{
|
||||||
"/sso": {Name: "/sso", Help: "登录", Actions: ice.Actions{
|
web.P(SSO): {Name: "/sso", Help: "登录", Actions: ice.Actions{
|
||||||
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { m.Cmd(aaa.ROLE, aaa.WHITE, aaa.VOID, SSO) }},
|
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { m.Cmd(aaa.ROLE, aaa.WHITE, aaa.VOID, SSO) }},
|
||||||
}, Hand: func(m *ice.Message, arg ...string) {
|
}, Hand: func(m *ice.Message, arg ...string) {
|
||||||
if m.Option(ice.MSG_USERNAME) == "" {
|
if m.Option(ice.MSG_USERNAME) == "" {
|
||||||
@ -23,8 +23,8 @@ func init() {
|
|||||||
if m.Warn(m.Option(cli.BACK) == "") {
|
if m.Warn(m.Option(cli.BACK) == "") {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
args := []string{aaa.USERNAME, m.Option(ice.MSG_USERNAME), aaa.USERROLE, m.Option(ice.MSG_USERROLE), aaa.USERNICK, m.Option(ice.MSG_USERNICK)}
|
sessid := aaa.UserRoot(m).Cmdx(web.SPACE, m.Option(web.SPACE), aaa.SESS, mdb.CREATE, aaa.USERNAME, m.Option(ice.MSG_USERNAME),
|
||||||
sessid := aaa.UserRoot(m).Cmdx(web.SPACE, m.Option(web.SPACE), aaa.SESS, mdb.CREATE, args)
|
aaa.USERROLE, m.Option(ice.MSG_USERROLE), aaa.USERNICK, m.Option(ice.MSG_USERNICK))
|
||||||
m.RenderRedirect(kit.MergeURL(m.Option(cli.BACK), ice.MSG_SESSID, sessid))
|
m.RenderRedirect(kit.MergeURL(m.Option(cli.BACK), ice.MSG_SESSID, sessid))
|
||||||
}},
|
}},
|
||||||
})
|
})
|
||||||
|
@ -115,8 +115,8 @@ func (m *Message) ProcessHistory(arg ...Any) {
|
|||||||
func (m *Message) ProcessConfirm(arg ...Any) {
|
func (m *Message) ProcessConfirm(arg ...Any) {
|
||||||
m.Process(PROCESS_CONFIRM, arg...)
|
m.Process(PROCESS_CONFIRM, arg...)
|
||||||
}
|
}
|
||||||
func (m *Message) ProcessRefresh(delay string) {
|
func (m *Message) ProcessRefresh(arg ...string) { // delay
|
||||||
if d, e := time.ParseDuration(delay); e == nil {
|
if d, e := time.ParseDuration(kit.Select("300ms", arg, 0)); e == nil {
|
||||||
m.Option("_delay", int(d/time.Millisecond))
|
m.Option("_delay", int(d/time.Millisecond))
|
||||||
}
|
}
|
||||||
m.Process(PROCESS_REFRESH)
|
m.Process(PROCESS_REFRESH)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user