diff --git a/base/web/dream.go b/base/web/dream.go index bc74d8fd..e788e16f 100644 --- a/base/web/dream.go +++ b/base/web/dream.go @@ -56,8 +56,7 @@ func _dream_show(m *ice.Message, name string) { cli.CTX_OPS, "http://localhost:"+m.CmdAppend(SERVE, tcp.PORT), cli.PATH, cli.BinPath(kit.Path(p, ice.BIN)), cli.USER, ice.Info.UserName, kit.EnvSimple(cli.HOME, cli.TERM, cli.SHELL), m.Configv(cli.ENV), - )) - m.Optionv(cli.CMD_OUTPUT, path.Join(p, ice.BIN_BOOT_LOG)) + ), cli.CMD_OUTPUT, path.Join(p, ice.BIN_BOOT_LOG)) defer m.Options(cli.CMD_DIR, "", cli.CMD_ENV, "", cli.CMD_OUTPUT, "") gdb.Event(m, DREAM_CREATE, m.OptionSimple(mdb.NAME, mdb.TYPE)) bin := kit.Select(os.Args[0], cli.SystemFind(m, ice.ICE_BIN, nfs.PWD+path.Join(p, ice.BIN), nfs.PWD+ice.BIN)) diff --git a/base/web/share.go b/base/web/share.go index 798f26c1..485ffac7 100644 --- a/base/web/share.go +++ b/base/web/share.go @@ -20,22 +20,14 @@ import ( ) func _share_render(m *ice.Message, arg ...string) { - ice.AddRender(ice.RENDER_DOWNLOAD, func(msg *ice.Message, args ...ice.Any) string { - list := []string{} - if msg.Option(ice.MSG_USERPOD) != "" { - list = append(list, ice.POD, msg.Option(ice.MSG_USERPOD)) - } - - arg := kit.Simple(args...) - if len(arg) > 1 { - list = append(list, "filename", arg[0]) - } - return fmt.Sprintf(`%s`, - _share_link(msg, kit.Select(arg[0], arg, 1), list), path.Base(arg[0]), arg[0]) + ice.AddRender(ice.RENDER_DOWNLOAD, func(msg *ice.Message, arg ...ice.Any) string { + args := kit.Simple(arg...) + list := []string{ice.POD, msg.Option(ice.MSG_USERPOD), "filename", kit.Select("", args[0], len(args) > 1)} + return fmt.Sprintf(`%s`, _share_link(msg, kit.Select(args[0], args, 1), list), path.Base(args[0]), args[0]) }) } func _share_link(m *ice.Message, p string, arg ...ice.Any) string { - p = kit.Select("", SHARE_LOCAL, !strings.HasPrefix(p, ice.PS)) + p + p = kit.Select("", SHARE_LOCAL, !strings.HasPrefix(p, ice.PS) && !strings.HasPrefix(p, ice.HTTP)) + p return tcp.PublishLocalhost(m, MergeLink(m, p, arg...)) } func _share_cache(m *ice.Message, arg ...string) { @@ -54,45 +46,33 @@ func _share_cache(m *ice.Message, arg ...string) { func _share_local(m *ice.Message, arg ...string) { p := path.Join(arg...) switch ls := strings.Split(p, ice.PS); ls[0] { - case ice.ETC, ice.VAR: // 私有文件 - if m.Option(ice.MSG_USERROLE) == aaa.VOID { - m.Render(STATUS, http.StatusUnauthorized, ice.ErrNotRight) - return // 没有权限 + case ice.ETC, ice.VAR: + if m.Warn(m.Option(ice.MSG_USERROLE) == aaa.VOID, ice.ErrNotRight, p) { + return } default: - if !aaa.Right(m, ls) && m.Option(ice.POD) == "" { - m.Render(STATUS, http.StatusUnauthorized, ice.ErrNotRight) - return // 没有权限 + if m.Option(ice.POD) == "" && !aaa.Right(m, ls) { + return } } - if m.Option(ice.POD) == "" { m.RenderDownload(p) - return // 本地文件 + return } - pp := path.Join(ice.VAR_PROXY, m.Option(ice.POD), p) - cache, size := time.Now().Add(-time.Hour*240000), int64(0) + cache, size := time.Now().Add(-time.Hour*24), int64(0) if s, e := file.StatFile(pp); e == nil { cache, size = s.ModTime(), s.Size() } - - // 上传文件 if p == ice.BIN_ICE_BIN { aaa.UserRoot(m).Cmd(SPACE, m.Option(ice.POD), SPIDE, "submit", MergeURL2(m, SHARE_PROXY, nfs.PATH, ""), m.Option(ice.POD), p, size, cache.Format(ice.MOD_TIME)) } else { m.Cmd(SPACE, m.Option(ice.POD), SPIDE, ice.DEV, SPIDE_RAW, MergeURL2(m, SHARE_PROXY, nfs.PATH, ""), SPIDE_PART, m.OptionSimple(ice.POD), nfs.PATH, p, nfs.SIZE, size, CACHE, cache.Format(ice.MOD_TIME), UPLOAD, "@"+p) } - if s, e := file.StatFile(pp); e == nil && !s.IsDir() { - p = pp + if !m.Warn(!file.ExistsFile(pp), ice.ErrNotFound, pp) { + m.RenderDownload(pp) } - - if m.Warn(!file.ExistsFile(p)) { - m.RenderStatusNotFound() - return - } - m.RenderDownload(p) } func _share_proxy(m *ice.Message) { switch p := path.Join(ice.VAR_PROXY, m.Option(ice.POD), m.Option(nfs.PATH)); m.R.Method { @@ -166,8 +146,8 @@ func init() { } } }}, - }, mdb.HashAction(mdb.FIELD, "time,hash,userrole,username,usernick,river,storm,type,name,text", mdb.EXPIRE, "72h"), ServeAction(), aaa.WhiteAction()), Hand: func(m *ice.Message, arg ...string) { - if ctx.PodCmd(m, SHARE, arg) && m.Length() > 0 { + }, mdb.HashAction(mdb.FIELD, "time,hash,username,usernick,userrole,river,storm,type,name,text", mdb.EXPIRE, "72h"), ServeAction(), aaa.WhiteAction()), Hand: func(m *ice.Message, arg ...string) { + if ctx.PodCmd(m, SHARE, arg) { return } if mdb.HashSelect(m, arg...); len(arg) > 0 { @@ -181,7 +161,7 @@ func init() { }}, PP(SHARE): {Name: "/share/", Help: "共享链", Hand: func(m *ice.Message, arg ...string) { msg := m.Cmd(SHARE, m.Option(SHARE, kit.Select(m.Option(SHARE), arg, 0))) - if m.Warn(msg.Append(mdb.TIME) < msg.Time(), ice.ErrNotValid, kit.Select(m.Option(SHARE), arg, 0), msg.Append(mdb.TIME)) { + if IsNotValidShare(m, msg.Append(mdb.TIME)) { m.RenderResult(kit.Format("共享超时, 请联系 %s(%s), 重新分享 %s %s", msg.Append(aaa.USERNAME), msg.Append(aaa.USERNICK), msg.Append(mdb.TYPE), msg.Append(mdb.NAME))) return @@ -218,10 +198,6 @@ func init() { }) } -func IsNotValidShare(m *ice.Message, value ice.Maps) bool { - _source := logs.FileLineMeta(logs.FileLine(2)) - if m.Warn(value[mdb.TIME] < m.Time(), ice.ErrNotValid, m.Option(SHARE), value[mdb.TIME], m.Time(), _source) { - return true - } - return false +func IsNotValidShare(m *ice.Message, time string) bool { + return m.Warn(time < m.Time(), ice.ErrNotValid, m.Option(SHARE), time, m.Time(), logs.FileLineMeta(2)) } diff --git a/core/code/xterm.go b/core/code/xterm.go index b7eca64d..8db48173 100644 --- a/core/code/xterm.go +++ b/core/code/xterm.go @@ -106,19 +106,7 @@ func init() { web.WEBSITE: {Name: "website", Help: "网页", Hand: func(m *ice.Message, arg ...string) { web.ProcessWebsite(m, "", "", m.OptionSimple(mdb.HASH)) }}, - web.DREAM_TABLES: {Hand: func(m *ice.Message, arg ...string) { - switch m.Option(mdb.TYPE) { - case web.SERVER, web.WORKER: - m.PushButton(kit.Dict(m.CommandKey(), "终端")) - } - }}, - web.DREAM_ACTION: {Hand: func(m *ice.Message, arg ...string) { - if arg[1] == m.CommandKey() { - web.ProcessIframe(m, web.MergePodCmd(m, m.Option(mdb.NAME), m.PrefixKey(), mdb.HASH, m.Cmdx(SPACE, m.Option(mdb.NAME), m.PrefixKey(), mdb.CREATE, mdb.TYPE, nfs.SH, m.OptionSimple(mdb.NAME))), arg...) - // web.ProcessWebsite(m, m.Option(mdb.NAME), m.PrefixKey(), mdb.HASH, m.Cmdx(SPACE, m.Option(mdb.NAME), m.PrefixKey(), mdb.CREATE, mdb.TYPE, nfs.SH, m.OptionSimple(mdb.NAME))) - } - }}, - }, mdb.HashAction(mdb.FIELD, "time,hash,type,name,text,view", mdb.TOOLS, FAVOR), ctx.CmdAction(), ctx.ProcessAction(), web.DreamAction()), Hand: func(m *ice.Message, arg ...string) { + }, mdb.HashAction(mdb.FIELD, "time,hash,type,name,text,view", mdb.TOOLS, FAVOR), ctx.CmdAction(), ctx.ProcessAction()), Hand: func(m *ice.Message, arg ...string) { if mdb.HashSelect(m, arg...); len(arg) == 0 { m.PushAction(web.WEBSITE, mdb.REMOVE) m.Action(mdb.CREATE, mdb.PRUNES)