forked from x/ContextOS
kid mod web
This commit is contained in:
parent
c686d60f55
commit
cc702194b4
@ -1956,11 +1956,11 @@ var Index = &Context{Name: "ctx", Help: "模块中心",
|
|||||||
m.Echo(" ARM Linux HTTP\n")
|
m.Echo(" ARM Linux HTTP\n")
|
||||||
m.Echo("\n")
|
m.Echo("\n")
|
||||||
|
|
||||||
m.Color(31, "Content ").Color(32, "Message\n")
|
m.Color(31, "Context ").Color(32, "Message\n")
|
||||||
m.Color(32, "ctx ").Color(33, "cli ").Color(31, "aaa ").Color(33, "web\n")
|
m.Color(32, "ctx ").Color(33, "cli ").Color(31, "aaa ").Color(33, "web\n")
|
||||||
m.Color(32, "lex ").Color(33, "yac ").Color(31, "log ").Color(33, "gdb\n")
|
m.Color(32, "lex ").Color(33, "yac ").Color(31, "log ").Color(33, "gdb\n")
|
||||||
m.Color(32, "tcp ").Color(33, "nfs ").Color(31, "ssh ").Color(33, "mdb\n")
|
m.Color(32, "tcp ").Color(33, "nfs ").Color(31, "ssh ").Color(33, "mdb\n")
|
||||||
m.Color(31, "template ").Color(32, "script\n")
|
m.Color(31, "script ").Color(32, "template\n")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -153,14 +153,17 @@ func (web *WEB) generate(m *ctx.Message, uri string, arg ...string) string { //
|
|||||||
}
|
}
|
||||||
|
|
||||||
// }}}
|
// }}}
|
||||||
|
|
||||||
func (web *WEB) AppendJson(msg *ctx.Message) string { // {{{
|
func (web *WEB) AppendJson(msg *ctx.Message) string { // {{{
|
||||||
meta := map[string][]string{}
|
meta := map[string][]string{}
|
||||||
if !msg.Has("result") && !msg.Has("append") {
|
if !msg.Has("result") && !msg.Has("append") {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
if meta["result"] = msg.Meta["result"]; msg.Has("append") {
|
if len(msg.Meta["result"]) > 0 {
|
||||||
|
meta["result"] = msg.Meta["result"]
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(msg.Meta["append"]) > 0 {
|
||||||
meta["append"] = msg.Meta["append"]
|
meta["append"] = msg.Meta["append"]
|
||||||
for _, v := range msg.Meta["append"] {
|
for _, v := range msg.Meta["append"] {
|
||||||
meta[v] = msg.Meta[v]
|
meta[v] = msg.Meta[v]
|
||||||
@ -603,6 +606,88 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
|||||||
m.Copy(msg, "result")
|
m.Copy(msg, "result")
|
||||||
// }}}
|
// }}}
|
||||||
}},
|
}},
|
||||||
|
"/travel": &ctx.Command{Name: "/travel", Help: "文件上传", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
||||||
|
if !m.Options("module") { //{{{
|
||||||
|
m.Option("module", "ctx")
|
||||||
|
}
|
||||||
|
|
||||||
|
r := m.Data["request"].(*http.Request)
|
||||||
|
w := m.Data["response"].(http.ResponseWriter)
|
||||||
|
|
||||||
|
// 权限检查
|
||||||
|
if m.Option("method") == "POST" {
|
||||||
|
if m.Options("domain") {
|
||||||
|
msg := m.Find("ssh", true)
|
||||||
|
msg.Detail(0, "send", "domain", m.Option("domain"), "context", "find", m.Option("module"), m.Option("ccc"))
|
||||||
|
if m.Options("name") {
|
||||||
|
msg.Add("detail", m.Option("name"))
|
||||||
|
}
|
||||||
|
if m.Options("value") {
|
||||||
|
msg.Add("detail", m.Option("value"))
|
||||||
|
}
|
||||||
|
|
||||||
|
msg.CallBack(true, func(sub *ctx.Message) *ctx.Message {
|
||||||
|
m.Copy(sub, "result").Copy(sub, "append")
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
msg := m.Find(m.Option("module"), true)
|
||||||
|
if msg == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
switch m.Option("ccc") {
|
||||||
|
case "cache":
|
||||||
|
m.Echo(msg.Cap(m.Option("name")))
|
||||||
|
case "config":
|
||||||
|
if m.Options("value") {
|
||||||
|
m.Echo(msg.Conf(m.Option("name"), m.Option("value")))
|
||||||
|
} else {
|
||||||
|
m.Echo(msg.Conf(m.Option("name")))
|
||||||
|
}
|
||||||
|
case "command":
|
||||||
|
msg = msg.Spawn(msg.Target())
|
||||||
|
msg.Detail(0, m.Option("name"))
|
||||||
|
if m.Options("value") {
|
||||||
|
msg.Add("detail", m.Option("value"))
|
||||||
|
}
|
||||||
|
|
||||||
|
msg.Cmd()
|
||||||
|
m.Copy(msg, "result").Copy(msg, "append")
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 解析模板
|
||||||
|
render := m.Spawn(m.Target()).Put("option", "request", r).Put("option", "response", w)
|
||||||
|
defer render.Cmd(m.Conf("travel_main"), m.Conf("travel_tmpl"))
|
||||||
|
|
||||||
|
if msg := m.Find(m.Option("module"), true); msg != nil {
|
||||||
|
m.Option("tmpl", "")
|
||||||
|
for _, v := range []string{"cache", "config", "command", "module", "domain"} {
|
||||||
|
if m.Options("domain") {
|
||||||
|
msg = m.Find("ssh", true)
|
||||||
|
msg.Detail(0, "send", "domain", m.Option("domain"), "context", "find", m.Option("module"), v)
|
||||||
|
msg.CallBack(true, func(sub *ctx.Message) *ctx.Message {
|
||||||
|
msg.Copy(sub, "result").Copy(sub, "append")
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
msg = msg.Spawn(msg.Target())
|
||||||
|
msg.Cmd("context", "find", m.Option("module"), v)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(msg.Meta["append"]) > 0 {
|
||||||
|
render.Option("current_module", m.Option("module"))
|
||||||
|
render.Option("current_domain", m.Option("domain"))
|
||||||
|
render.Sesss(v, msg).Add("option", "tmpl", v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// }}}
|
||||||
|
}},
|
||||||
"/upload": &ctx.Command{Name: "/upload", Help: "文件上传", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
"/upload": &ctx.Command{Name: "/upload", Help: "文件上传", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
||||||
r := m.Data["request"].(*http.Request) // {{{
|
r := m.Data["request"].(*http.Request) // {{{
|
||||||
w := m.Data["response"].(http.ResponseWriter)
|
w := m.Data["response"].(http.ResponseWriter)
|
||||||
@ -611,37 +696,28 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
|||||||
m.Option("file", m.Cap("directory"))
|
m.Option("file", m.Cap("directory"))
|
||||||
}
|
}
|
||||||
|
|
||||||
// 权限检查
|
auth := m.Spawn(m.Target()).Put("option", "request", r).Put("option", "response", w)
|
||||||
m.Option("right", "")
|
auth.CallBack(true, func(aaa *ctx.Message) *ctx.Message {
|
||||||
m.Option("message", "")
|
m.Log("fuck", nil, "upload-----------%v", aaa.Meta)
|
||||||
m.Option("username", "")
|
if aaa != nil {
|
||||||
aaa := m.Find("aaa").Cmd("login", m.Option("sessid"))
|
m.Sesss("aaa", aaa)
|
||||||
if aaa.Result(0) == "error: " {
|
|
||||||
m.Option("sessid", "")
|
|
||||||
m.Option("message", "login failure")
|
|
||||||
} else {
|
|
||||||
m.Option("username", aaa.Result(0))
|
|
||||||
msg := m.Spawn(m.Target()).Cmd("right", "check", aaa.Cap("group"), "command", "/upload", "file", m.Option("file"))
|
|
||||||
if msg.Result(0) == "ok" {
|
|
||||||
m.Option("right", aaa.Cap("group"))
|
|
||||||
} else {
|
|
||||||
m.Option("message", "your do not have the right of ", m.Option("file"))
|
|
||||||
}
|
}
|
||||||
|
return aaa
|
||||||
|
}, "/check", "command", "/upload", "file", m.Option("file"))
|
||||||
|
m.Log("fuck", nil, "upload>>>>>>>>>>>%v", auth.Meta)
|
||||||
|
|
||||||
|
if auth.Append("right") != "ok" {
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if m.Option("method") == "POST" {
|
if m.Option("method") == "POST" {
|
||||||
if !m.Options("right") {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if m.Options("notshareto") { // 取消共享
|
if m.Options("notshareto") { // 取消共享
|
||||||
msg := m.Spawn(m.Target())
|
msg := m.Spawn(m.Target())
|
||||||
msg.Cmd("right", "del", m.Option("notshareto"), "command", "/upload", "file", m.Option("sharefile"))
|
msg.Cmd("right", "del", m.Option("notshareto"), "command", "/upload", "file", m.Option("sharefile"))
|
||||||
m.Append("link", "hello")
|
m.Append("link", "hello")
|
||||||
return
|
return
|
||||||
} else if m.Options("shareto") { //共享目录
|
} else if m.Options("shareto") { //共享目录
|
||||||
msg := aaa.Spawn(m.Target())
|
msg := m.Spawn(m.Target()) //TODO
|
||||||
msg.Sesss("aaa", aaa)
|
|
||||||
msg.Cmd("right", "add", m.Option("shareto"), "command", "/upload", "file", m.Option("sharefile"))
|
msg.Cmd("right", "add", m.Option("shareto"), "command", "/upload", "file", m.Option("sharefile"))
|
||||||
m.Append("link", "hello")
|
m.Append("link", "hello")
|
||||||
return
|
return
|
||||||
@ -684,18 +760,8 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 解析模板
|
// 解析模板
|
||||||
tmpl := template.Must(template.New("fuck").Funcs(ctx.CGI).ParseGlob(path.Join(m.Conf("template_dir"), m.Conf("common_tmpl"))))
|
render := m.Spawn(m.Target()).Put("option", "request", r).Put("option", "response", w)
|
||||||
tmpl = template.Must(tmpl.ParseGlob(path.Join(m.Conf("template_dir"), m.Conf("upload_tmpl"))))
|
defer render.Cmd(m.Conf("upload_main"), m.Conf("upload_tmpl"))
|
||||||
defer func() {
|
|
||||||
w.Header().Add("Content-Type", "text/html")
|
|
||||||
m.Assert(tmpl.ExecuteTemplate(w, m.Conf("upload_main"), m))
|
|
||||||
}()
|
|
||||||
|
|
||||||
if !m.Options("right") {
|
|
||||||
m.Option("title", "login")
|
|
||||||
m.Option("tmpl", "login")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// 输出文件
|
// 输出文件
|
||||||
s, e := os.Stat(m.Option("file"))
|
s, e := os.Stat(m.Option("file"))
|
||||||
@ -707,8 +773,8 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
|||||||
// 共享列表
|
// 共享列表
|
||||||
share := m.Sesss("share", m.Target())
|
share := m.Sesss("share", m.Target())
|
||||||
index := share.Target().Index
|
index := share.Target().Index
|
||||||
if index != nil && index[m.Option("right")] != nil {
|
if index != nil && index[m.Option("group")] != nil {
|
||||||
for k, v := range index[m.Option("right")].Index {
|
for k, v := range index[m.Option("group")].Index {
|
||||||
for i, j := range v.Commands {
|
for i, j := range v.Commands {
|
||||||
for v, n := range j.Shares {
|
for v, n := range j.Shares {
|
||||||
for _, nn := range n {
|
for _, nn := range n {
|
||||||
@ -803,118 +869,64 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
|||||||
m.Option("tmpl", "userinfo", "share", "list", "git", "upload", "create")
|
m.Option("tmpl", "userinfo", "share", "list", "git", "upload", "create")
|
||||||
// }}}
|
// }}}
|
||||||
}},
|
}},
|
||||||
"/travel": &ctx.Command{Name: "/travel", Help: "文件上传", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
"/render": &ctx.Command{Name: "/render [main [tmpl]]", Help: "生成模板", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
||||||
w := m.Data["response"].(http.ResponseWriter) // {{{
|
w := m.Data["response"].(http.ResponseWriter)
|
||||||
|
|
||||||
if m.Option("method") == "POST" {
|
tpl := template.Must(template.New("fuck").Funcs(ctx.CGI).ParseGlob(path.Join(m.Conf("template_dir"), m.Conf("common_tmpl"))))
|
||||||
if m.Options("domain") {
|
if len(arg) > 1 {
|
||||||
msg := m.Find("ssh", true)
|
tpl = template.Must(tpl.ParseGlob(path.Join(m.Conf("template_dir"), arg[1])))
|
||||||
msg.Detail(0, "send", "domain", m.Option("domain"), "context", "find", m.Option("module"), m.Option("ccc"))
|
|
||||||
if m.Options("name") {
|
|
||||||
msg.Add("detail", m.Option("name"))
|
|
||||||
}
|
|
||||||
if m.Options("value") {
|
|
||||||
msg.Add("detail", m.Option("value"))
|
|
||||||
}
|
|
||||||
|
|
||||||
msg.CallBack(true, func(sub *ctx.Message) *ctx.Message {
|
|
||||||
m.Copy(sub, "result").Copy(sub, "append")
|
|
||||||
return nil
|
|
||||||
})
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
module := "ctx"
|
|
||||||
if m.Options("module") {
|
|
||||||
module = m.Option("module")
|
|
||||||
}
|
|
||||||
msg := m.Find(module, true)
|
|
||||||
if msg == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
switch m.Option("ccc") {
|
|
||||||
case "cache":
|
|
||||||
m.Echo(msg.Cap(m.Option("name")))
|
|
||||||
case "config":
|
|
||||||
if m.Options("value") {
|
|
||||||
m.Echo(msg.Conf(m.Option("name"), m.Option("value")))
|
|
||||||
} else {
|
|
||||||
m.Echo(msg.Conf(m.Option("name")))
|
|
||||||
}
|
|
||||||
case "command":
|
|
||||||
msg = msg.Spawn(msg.Target())
|
|
||||||
msg.Detail(0, m.Option("name"))
|
|
||||||
if m.Options("value") {
|
|
||||||
msg.Add("detail", m.Option("value"))
|
|
||||||
}
|
|
||||||
|
|
||||||
msg.Cmd()
|
|
||||||
m.Copy(msg, "result").Copy(msg, "append")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
module := "ctx"
|
main := m.Conf("common_main")
|
||||||
if m.Options("module") {
|
if len(arg) > 0 {
|
||||||
module = m.Option("module")
|
main = arg[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
w.Header().Add("Content-Type", "text/html")
|
w.Header().Add("Content-Type", "text/html")
|
||||||
tmpl := template.Must(template.Must(template.New("fuck").Funcs(ctx.CGI).ParseGlob(m.Conf("template_dir") + "/common/*.html")).ParseGlob(m.Conf("template_dir") + "travel.html"))
|
m.Assert(tpl.ExecuteTemplate(w, main, m))
|
||||||
m.Assert(tmpl)
|
|
||||||
|
|
||||||
m.Assert(tmpl.ExecuteTemplate(w, "head", m.Meta))
|
|
||||||
|
|
||||||
if msg := m.Find(module, true); msg != nil {
|
|
||||||
for _, v := range []string{"cache", "config", "command", "module", "domain"} {
|
|
||||||
if m.Options("domain") {
|
|
||||||
msg = m.Find("ssh", true)
|
|
||||||
msg.Detail(0, "send", "domain", m.Option("domain"), "context", "find", module, v)
|
|
||||||
msg.CallBack(true, func(sub *ctx.Message) *ctx.Message {
|
|
||||||
msg.Copy(sub, "result").Copy(sub, "append")
|
|
||||||
return nil
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
msg = msg.Spawn(msg.Target())
|
|
||||||
msg.Cmd("context", "find", module, v)
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(msg.Meta["append"]) > 0 {
|
|
||||||
msg.Option("current_module", module)
|
|
||||||
msg.Option("current_domain", m.Option("domain"))
|
|
||||||
m.Assert(tmpl.ExecuteTemplate(w, v, msg.Meta))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
m.Assert(tmpl.ExecuteTemplate(w, "tail", m.Meta))
|
|
||||||
delete(m.Meta, "result")
|
|
||||||
delete(m.Meta, "append")
|
|
||||||
// }}}
|
|
||||||
}},
|
}},
|
||||||
"/check": &ctx.Command{Name: "/check", Help: "文件上传", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
"/check": &ctx.Command{Name: "/check sessid", Help: "权限检查", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
||||||
m.Option("right", "")
|
r := m.Data["request"].(*http.Request)
|
||||||
m.Option("message", "")
|
|
||||||
m.Option("username", "")
|
|
||||||
aaa := m.Find("aaa").Cmd("login", m.Option("sessid"))
|
|
||||||
if aaa.Result(0) == "error: " {
|
|
||||||
m.Option("sessid", "")
|
|
||||||
m.Option("message", "login failure")
|
|
||||||
} else {
|
|
||||||
m.Option("username", aaa.Result(0))
|
|
||||||
msg := m.Spawn(m.Target()).Cmd("right", "check", aaa.Cap("group"), "command", "/upload", "file", m.Option("file"))
|
|
||||||
if msg.Result(0) == "ok" {
|
|
||||||
m.Option("right", aaa.Cap("group"))
|
|
||||||
} else {
|
|
||||||
m.Option("message", "your do not have the right of ", m.Option("file"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}},
|
|
||||||
"/login": &ctx.Command{Name: "/login", Help: "文件上传", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
|
||||||
w := m.Data["response"].(http.ResponseWriter)
|
w := m.Data["response"].(http.ResponseWriter)
|
||||||
msg := m.Find("aaa").Cmd("login", m.Option("username"), m.Option("password"))
|
|
||||||
http.SetCookie(w, &http.Cookie{Name: "sessid", Value: msg.Result(0)})
|
user := m.Spawn(m.Target()).Put("option", "request", r).Put("option", "response", w)
|
||||||
|
user.CallBack(true, func(aaa *ctx.Message) *ctx.Message {
|
||||||
|
if aaa.Caps("group") {
|
||||||
|
msg := aaa.Spawn(m.Target()).Cmd("right", "check", aaa.Cap("group"), arg)
|
||||||
|
m.Append("right", msg.Result(0))
|
||||||
|
}
|
||||||
|
m.Log("fuck", nil, "aaa: %v", aaa)
|
||||||
|
return aaa
|
||||||
|
}, "/login")
|
||||||
|
m.Log("fuck", nil, "aaa----: %v", m)
|
||||||
|
}},
|
||||||
|
"/login": &ctx.Command{Name: "/login", Help: "用户登录", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
||||||
|
r := m.Data["request"].(*http.Request)
|
||||||
|
w := m.Data["response"].(http.ResponseWriter)
|
||||||
|
|
||||||
|
if m.Options("sessid") {
|
||||||
|
if aaa := m.Find("aaa").Cmd("login", m.Option("sessid")); aaa.Result(0) != "error: " {
|
||||||
|
m.Append("username", aaa.Cap("username"))
|
||||||
|
m.Append("group", aaa.Cap("group"))
|
||||||
|
m.Back(aaa)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sessid := ""
|
||||||
|
if m.Options("password") {
|
||||||
|
msg := m.Find("aaa").Cmd("login", m.Option("username"), m.Option("password"))
|
||||||
|
sessid = msg.Result(0)
|
||||||
|
http.SetCookie(w, &http.Cookie{Name: "sessid", Value: sessid})
|
||||||
|
}
|
||||||
|
|
||||||
|
if sessid != "" {
|
||||||
|
http.Redirect(w, r, "/upload", http.StatusFound)
|
||||||
|
} else {
|
||||||
|
render := m.Spawn(m.Target()).Put("option", "request", r).Put("option", "response", w)
|
||||||
|
render.Cmd("/render", "login.html")
|
||||||
|
}
|
||||||
|
m.Back(m)
|
||||||
}},
|
}},
|
||||||
"temp": &ctx.Command{Name: "temp", Help: "应用示例", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
"temp": &ctx.Command{Name: "temp", Help: "应用示例", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
||||||
msg := m.Spawn(m.Target())
|
msg := m.Spawn(m.Target())
|
||||||
@ -938,9 +950,6 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
|||||||
tmpl.ExecuteTemplate(w, "head", m)
|
tmpl.ExecuteTemplate(w, "head", m)
|
||||||
tmpl.ExecuteTemplate(w, "tail", m.Meta)
|
tmpl.ExecuteTemplate(w, "tail", m.Meta)
|
||||||
}},
|
}},
|
||||||
"hi": &ctx.Command{Name: "hi", Help: "应用示例", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
|
||||||
m.Echo("hello")
|
|
||||||
}},
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,25 +1,11 @@
|
|||||||
{{define "login"}}
|
{{define "login"}}
|
||||||
<fieldset><legend>login</legend>
|
<fieldset><legend>login</legend>
|
||||||
<form method="POST" onsubmit="return login(event)">
|
<form method="POST" action="/login">
|
||||||
<label>username:</label><input type="text" name="username" value="{{meta .username}}" required autofocus>
|
<label>username:</label><input type="text" name="username" value="{{meta .username}}" required autofocus>
|
||||||
<label>password:</label><input type="password" name="password" required>
|
<label>password:</label><input type="password" name="password" required>
|
||||||
<input type="submit">
|
<input type="submit">
|
||||||
</form>
|
</form>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<script>
|
|
||||||
function login(event) {
|
|
||||||
var fields = event.target.elements;
|
|
||||||
ctx.POST("/login", {
|
|
||||||
username: fields["username"].value,
|
|
||||||
password: fields["password"].value
|
|
||||||
}, function(msg) {
|
|
||||||
if (ctx.Cookie("sessid")) {
|
|
||||||
ctx.Refresh()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
{{define "userinfo"}}
|
{{define "userinfo"}}
|
||||||
@ -93,3 +79,13 @@
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
|
{{$msg := .}}
|
||||||
|
{{$meta := .Meta}}
|
||||||
|
|
||||||
|
{{template "head" $meta}}
|
||||||
|
{{if meta $meta.message}}
|
||||||
|
{{template "message" $meta}}
|
||||||
|
{{end}}
|
||||||
|
{{template "login" $meta}}
|
||||||
|
{{template "tail" $meta}}
|
||||||
|
@ -11,6 +11,9 @@
|
|||||||
cursor:pointer;
|
cursor:pointer;
|
||||||
background-color:lightgray;
|
background-color:lightgray;
|
||||||
}
|
}
|
||||||
|
code {
|
||||||
|
font-size:14px;
|
||||||
|
}
|
||||||
.name {
|
.name {
|
||||||
padding-left:10px;
|
padding-left:10px;
|
||||||
text-align:left;
|
text-align:left;
|
||||||
@ -27,9 +30,6 @@
|
|||||||
padding-left:10px;
|
padding-left:10px;
|
||||||
text-align:left;
|
text-align:left;
|
||||||
}
|
}
|
||||||
code {
|
|
||||||
font-size:14px;
|
|
||||||
}
|
|
||||||
.result {
|
.result {
|
||||||
background-color:black;
|
background-color:black;
|
||||||
color:white;
|
color:white;
|
||||||
@ -245,3 +245,22 @@
|
|||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
|
{{define "main"}}
|
||||||
|
{{$msg := .}}
|
||||||
|
{{$meta := .Meta}}
|
||||||
|
{{$sess := $msg.Sessions}}
|
||||||
|
{{range .Meta.tmpl}}
|
||||||
|
{{if eq . "cache"}}
|
||||||
|
{{template "cache" $sess.cache.Meta}}
|
||||||
|
{{else if eq . "config"}}
|
||||||
|
{{template "config" $sess.config.Meta}}
|
||||||
|
{{else if eq . "command"}}
|
||||||
|
{{template "command" $sess.command.Meta}}
|
||||||
|
{{else if eq . "module"}}
|
||||||
|
{{template "module" $sess.module.Meta}}
|
||||||
|
{{else if eq . "domain"}}
|
||||||
|
{{template "domain" $sess.domain.Meta}}
|
||||||
|
{{end}}
|
||||||
|
{{end}}
|
||||||
|
{{end}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user