1
0
mirror of https://shylinux.com/x/icebergs synced 2025-04-26 01:24:05 +08:00
This commit is contained in:
harveyshao 2022-12-01 01:25:23 +08:00
parent fbdca73905
commit 46193f5f2f
3 changed files with 29 additions and 59 deletions

View File

@ -16,21 +16,7 @@ import (
func _cache_name(m *ice.Message, h string) string { func _cache_name(m *ice.Message, h string) string {
return path.Join(ice.VAR_FILE, h[:2], h) return path.Join(ice.VAR_FILE, h[:2], h)
} }
func _cache_save(m *ice.Message, kind, name, text string, arg ...string) { // file size func _cache_type(m *ice.Message, kind, name string) string {
if name == "" {
return
}
if len(text) > 512 || kind == nfs.GO { // 存入文件
p := m.Cmdx(nfs.SAVE, _cache_name(m, kit.Hashs(text)), text)
text, arg = p, kit.Simple(p, len(text))
}
// 添加数据
size := kit.Int(kit.Select(kit.Format(len(text)), arg, 1))
file := kit.Select("", arg, 0)
text = kit.Select(file, text)
h := mdb.HashCreate(m, kit.SimpleKV("", kind, name, text), nfs.FILE, file, nfs.SIZE, size)
if kind == "application/octet-stream" { if kind == "application/octet-stream" {
if kit.ExtIsImage(name) { if kit.ExtIsImage(name) {
kind = "image/"+kit.Ext(name) kind = "image/"+kit.Ext(name)
@ -38,14 +24,23 @@ func _cache_save(m *ice.Message, kind, name, text string, arg ...string) { // fi
kind = "video/"+kit.Ext(name) kind = "video/"+kit.Ext(name)
} }
} }
return kind
// 返回结果 }
func _cache_save(m *ice.Message, kind, name, text string, arg ...string) {
m.Assert(name == "", ice.ErrNotValid, mdb.NAME)
if len(text) > 512 || kind == nfs.GO {
p := m.Cmdx(nfs.SAVE, _cache_name(m, kit.Hashs(text)), text)
text, arg = p, kit.Simple(p, len(text))
}
file, size := kit.Select("", arg, 0), kit.Int(kit.Select(kit.Format(len(text)), arg, 1))
kind, text = _cache_type(kind, name), kit.Select(file, text)
h := mdb.HashCreate(m, kit.SimpleKV("", kind, name, text), nfs.FILE, file, nfs.SIZE, size)
m.Push(mdb.TIME, m.Time()) m.Push(mdb.TIME, m.Time())
m.Push(mdb.TYPE, kind) m.Push(mdb.TYPE, kind)
m.Push(mdb.NAME, name) m.Push(mdb.NAME, name)
m.Push(mdb.TEXT, text) m.Push(mdb.TEXT, text)
m.Push(nfs.SIZE, size)
m.Push(nfs.FILE, file) m.Push(nfs.FILE, file)
m.Push(nfs.SIZE, size)
m.Push(mdb.HASH, h) m.Push(mdb.HASH, h)
m.Push(mdb.DATA, h) m.Push(mdb.DATA, h)
} }
@ -59,26 +54,18 @@ func _cache_watch(m *ice.Message, key, file string) {
}) })
} }
func _cache_catch(m *ice.Message, name string) (file, size string) { func _cache_catch(m *ice.Message, name string) (file, size string) {
if f, e := nfs.OpenFile(m, name); m.Assert(e) { if msg := m.Cmd(nfs.DIR, name, "hash,size"); msg.Length() > 0 {
defer f.Close() return m.Cmdx(nfs.LINK, _cache_name(m, msg.Append(mdb.HASH)), name), mdb.Append(mdb.SIZE)
if s, e := nfs.StatFile(m, name); m.Assert(e) {
return m.Cmdx(nfs.LINK, _cache_name(m, kit.Hashs(f)), name), kit.Format(s.Size())
}
} }
return "", "0" return "", "0"
} }
func _cache_upload(m *ice.Message, r *http.Request) (kind, name, file, size string) { func _cache_upload(m *ice.Message, r *http.Request) (kind, name, file, size string) {
if b, h, e := r.FormFile(UPLOAD); m.Assert(e) { if b, h, e := r.FormFile(UPLOAD); !m.Warn(e, ice.ErrNotValid, UPLOAD) {
defer b.Close() defer b.Close()
if f, p, e := miss.CreateFile(_cache_name(m, kit.Hashs(b))); !m.Warn(e, ice.ErrNotValid, UPLOAD) {
// 创建文件
if f, p, e := miss.CreateFile(_cache_name(m, kit.Hashs(b))); m.Assert(e) {
defer f.Close() defer f.Close()
// 导入数据
b.Seek(0, os.SEEK_SET) b.Seek(0, os.SEEK_SET)
if n, e := io.Copy(f, b); m.Assert(e) { if n, e := io.Copy(f, b); !m.Warn(e, ice.ErrNotValid, UPLOAD) {
m.Logs(mdb.IMPORT, nfs.FILE, p, nfs.SIZE, kit.FmtSize(int64(n))) m.Logs(mdb.IMPORT, nfs.FILE, p, nfs.SIZE, kit.FmtSize(int64(n)))
return h.Header.Get(ContentType), h.Filename, p, kit.Format(n) return h.Header.Get(ContentType), h.Filename, p, kit.Format(n)
} }

View File

@ -159,7 +159,7 @@ func init() {
m.Sleep30ms().Cmd(ssh.PRINTF, kit.Dict(nfs.CONTENT, "\r"+ice.Render(m, ice.RENDER_QRCODE, m.Cmdx(SPACE, DOMAIN))+ice.NL)) m.Sleep30ms().Cmd(ssh.PRINTF, kit.Dict(nfs.CONTENT, "\r"+ice.Render(m, ice.RENDER_QRCODE, m.Cmdx(SPACE, DOMAIN))+ice.NL))
}}, }},
SERVE_REWRITE: {Hand: func(m *ice.Message, arg ...string) { SERVE_REWRITE: {Hand: func(m *ice.Message, arg ...string) {
if arg[0] != SPIDE_GET { if arg[0] != http.MethodGet {
return return
} }
switch arg[1] { switch arg[1] {

View File

@ -76,25 +76,14 @@ func _share_local(m *ice.Message, arg ...string) {
} }
func _share_proxy(m *ice.Message) { func _share_proxy(m *ice.Message) {
switch p := path.Join(ice.VAR_PROXY, m.Option(ice.POD), m.Option(nfs.PATH)); m.R.Method { switch p := path.Join(ice.VAR_PROXY, m.Option(ice.POD), m.Option(nfs.PATH)); m.R.Method {
case http.MethodGet: // 下发文件 case http.MethodGet:
m.RenderDownload(path.Join(p, m.Option(mdb.NAME))) m.RenderDownload(path.Join(p, m.Option(mdb.NAME)))
case http.MethodPost:
case http.MethodPost: // 上传文件
m.Cmdy(CACHE, UPLOAD) m.Cmdy(CACHE, UPLOAD)
m.Cmdy(CACHE, WATCH, m.Option(mdb.DATA), p) m.Cmdy(CACHE, WATCH, m.Option(mdb.DATA), p)
m.RenderResult(m.Option(nfs.PATH)) m.RenderResult(m.Option(nfs.PATH))
} }
} }
func _share_repos(m *ice.Message, repos string, arg ...string) {
if repos == ice.Info.Make.Module && nfs.ExistsFile(m, path.Join(arg...)) {
m.RenderDownload(path.Join(arg...))
return
}
if !nfs.ExistsFile(m, path.Join(ice.ISH_PLUGED, repos)) { // 克隆代码
m.Cmd("web.code.git.repos", mdb.CREATE, nfs.REPOS, "https://"+repos, nfs.PATH, path.Join(ice.ISH_PLUGED, repos))
}
m.RenderDownload(path.Join(ice.ISH_PLUGED, repos, path.Join(arg...)))
}
const ( const (
TOPIC = "topic" TOPIC = "topic"
@ -118,14 +107,12 @@ func init() {
Index.MergeCommands(ice.Commands{ Index.MergeCommands(ice.Commands{
SHARE: {Name: "share hash auto prunes", Help: "共享链", Actions: ice.MergeActions(ice.Actions{ SHARE: {Name: "share hash auto prunes", Help: "共享链", Actions: ice.MergeActions(ice.Actions{
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { _share_render(m) }}, ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { _share_render(m) }},
mdb.CREATE: {Name: "create type name text", Help: "创建", Hand: func(m *ice.Message, arg ...string) { mdb.CREATE: {Name: "create type name text", Hand: func(m *ice.Message, arg ...string) {
mdb.HashCreate(m, arg, aaa.USERROLE, m.Option(ice.MSG_USERROLE), aaa.USERNAME, m.Option(ice.MSG_USERNAME), aaa.USERNICK, m.Option(ice.MSG_USERNICK)) mdb.HashCreate(m, arg, aaa.USERNAME, m.Option(ice.MSG_USERNAME), aaa.USERNICK, m.Option(ice.MSG_USERNICK), aaa.USERROLE, m.Option(ice.MSG_USERROLE))
m.Option(mdb.LINK, _share_link(m, PP(SHARE)+m.Result())) m.Option(mdb.LINK, _share_link(m, PP(SHARE)+m.Result()))
}}, }},
LOGIN: {Name: "login userrole=void,tech username", Help: "登录", Hand: func(m *ice.Message, arg ...string) { LOGIN: {Name: "login userrole=void,tech username", Hand: func(m *ice.Message, arg ...string) {
msg := m.Cmd(SHARE, mdb.CREATE, mdb.TYPE, LOGIN, m.OptionSimple(aaa.USERROLE, aaa.USERNAME)) m.EchoQRCode(m.Cmd(SHARE, mdb.CREATE, mdb.TYPE, LOGIN).Option(mdb.LINK)).ProcessInner()
m.EchoQRCode(msg.Option(mdb.LINK))
m.ProcessInner()
}}, }},
SERVE_PARSE: {Hand: func(m *ice.Message, arg ...string) { SERVE_PARSE: {Hand: func(m *ice.Message, arg ...string) {
if kit.Select("", arg, 0) != SHARE { if kit.Select("", arg, 0) != SHARE {
@ -134,7 +121,7 @@ func init() {
switch arg[1] { switch arg[1] {
case "local": case "local":
default: default:
m.Logs("refer", arg[0], arg[1]) m.Logs("Refer", arg[0], arg[1])
m.Option(arg[0], arg[1]) m.Option(arg[0], arg[1])
} }
}}, }},
@ -173,7 +160,6 @@ func init() {
RenderIndex(m, ice.VOLCANOS) RenderIndex(m, ice.VOLCANOS)
} }
}}, }},
SHARE_TOAST: {Name: "/share/toast/", Help: "推送流", Hand: func(m *ice.Message, arg ...string) { SHARE_TOAST: {Name: "/share/toast/", Help: "推送流", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(SPACE, m.Option(ice.POD), m.Optionv("cmds")) m.Cmdy(SPACE, m.Option(ice.POD), m.Optionv("cmds"))
}}, }},
@ -184,17 +170,14 @@ func init() {
_share_local(m, arg...) _share_local(m, arg...)
}}, }},
SHARE_LOCAL_AVATAR: {Name: "avatar", Help: "头像", Hand: func(m *ice.Message, arg ...string) { SHARE_LOCAL_AVATAR: {Name: "avatar", Help: "头像", Hand: func(m *ice.Message, arg ...string) {
m.RenderDownload(strings.TrimPrefix(m.Cmd(aaa.USER, m.Option(ice.MSG_USERNAME)).Append(aaa.AVATAR), SHARE_LOCAL)) m.RenderDownload(strings.TrimPrefix(m.CmdAppend(aaa.USER, m.Option(ice.MSG_USERNAME), aaa.AVATAR), SHARE_LOCAL))
}}, }},
SHARE_LOCAL_BACKGROUND: {Name: "background", Help: "壁纸", Hand: func(m *ice.Message, arg ...string) { SHARE_LOCAL_BACKGROUND: {Name: "background", Help: "背景", Hand: func(m *ice.Message, arg ...string) {
m.RenderDownload(strings.TrimPrefix(m.Cmd(aaa.USER, m.Option(ice.MSG_USERNAME)).Append(aaa.BACKGROUND), SHARE_LOCAL)) m.RenderDownload(strings.TrimPrefix(m.CmdAppend(aaa.USER, m.Option(ice.MSG_USERNAME), aaa.BACKGROUND), SHARE_LOCAL))
}}, }},
SHARE_PROXY: {Name: "/share/proxy/", Help: "文件流", Hand: func(m *ice.Message, arg ...string) { SHARE_PROXY: {Name: "/share/proxy/", Help: "文件流", Hand: func(m *ice.Message, arg ...string) {
_share_proxy(m) _share_proxy(m)
}}, }},
SHARE_REPOS: {Name: "/share/repos/", Help: "代码库", Hand: func(m *ice.Message, arg ...string) {
_share_repos(m, path.Join(arg[0], arg[1], arg[2]), arg[3:]...)
}},
}) })
} }