added base path filter
This commit is contained in:
parent
98b53d3a33
commit
ec5a376733
15 changed files with 104 additions and 44 deletions
|
|
@ -15,8 +15,6 @@ import (
|
|||
"time"
|
||||
)
|
||||
|
||||
//TODO add missing CSRF checks
|
||||
|
||||
const noSuchFile = "no such file or directory"
|
||||
|
||||
type notFoundHandler struct {
|
||||
|
|
@ -95,7 +93,6 @@ func authHandler(h ctxHandler) ctxHandler {
|
|||
h(ctx)
|
||||
return
|
||||
}
|
||||
//ctx.Forbidden()
|
||||
ctx.Redirect(core.LoginURI, http.StatusFound)
|
||||
}
|
||||
}
|
||||
|
|
@ -229,6 +226,9 @@ func uploadHandler(ctx *Context) {
|
|||
case "GET":
|
||||
ctx.Exec()
|
||||
case "POST":
|
||||
if !ctx.CheckXsrf() {
|
||||
return
|
||||
}
|
||||
f, orig, err := ctx.File("file")
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
|
|
@ -255,6 +255,9 @@ func newDirHandler(ctx *Context) {
|
|||
case "GET":
|
||||
ctx.Exec()
|
||||
case "POST":
|
||||
if !ctx.CheckXsrf() {
|
||||
return
|
||||
}
|
||||
err := ctx.Srv.FS.Mkdir(path, ctx.Form("name"))
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
|
|
@ -298,6 +301,9 @@ func moveHandler(ctx *Context) {
|
|||
case "GET":
|
||||
ctx.Exec()
|
||||
case "POST":
|
||||
if !ctx.CheckXsrf() {
|
||||
return
|
||||
}
|
||||
name := ctx.Form("name")
|
||||
dest := ctx.Form("destination")
|
||||
newfile, err := ctx.Srv.FS.Move(path, dest, name)
|
||||
|
|
@ -347,6 +353,9 @@ func deleteHandler(ctx *Context) {
|
|||
case "GET":
|
||||
ctx.Exec()
|
||||
case "POST":
|
||||
if !ctx.CheckXsrf() {
|
||||
return
|
||||
}
|
||||
files, err := ctx.Srv.FS.Delete(path)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
|
|
@ -405,6 +414,11 @@ func dirHandler(ctx *Context) {
|
|||
}
|
||||
ctx.Data.Paths = fs.Paths(path)
|
||||
ctx.Exec()
|
||||
default:
|
||||
ctx.Data = webData{
|
||||
Title: "Viewer",
|
||||
}
|
||||
ctx.Error(noSuchFile)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -638,5 +652,5 @@ func logoutHandler(ctx *Context) {
|
|||
log.Println("logout:", user)
|
||||
ctx.Srv.JWT.Invalidate(&ctx.Token)
|
||||
ctx.SetCookie(nil, 0)
|
||||
ctx.Redirect(core.IndexURI, http.StatusFound)
|
||||
ctx.Redirect(core.LoginURI, http.StatusFound)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ const (
|
|||
</ol>
|
||||
<div class="btn-group btn-breadcrumb">
|
||||
<a href="/upload{{.Path}}" class="btn btn-sm btn-success">Upload</a>
|
||||
<a href="/new{{.Path}}" class="btn btn-sm btn-primary">New Directory</a>
|
||||
<a href="/new{{.Path}}" class="btn btn-sm btn-primary">New</a>
|
||||
<a href="/move{{.Path}}" class="btn btn-sm btn-primary">Move</a>
|
||||
<a href="/delete{{.Path}}" class="btn btn-sm btn-danger">Delete</a>
|
||||
</div>
|
||||
|
|
@ -139,7 +139,7 @@ const (
|
|||
<title>DocStore | {{.Title}}</title>
|
||||
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" integrity="sha256-bgotk/IPq4Yvt6s8AQGPTM5ZjPjQ6rrBRa2EyxpnFSc="></link>
|
||||
<link rel="stylesheet" type="text/css" href="/bootstrap.css" media="screen" integrity="sha256-3YeveuySvBgp2GItUS8eV1R/9T1zcPMyvw22SyVf8qo="></link>
|
||||
<link rel="stylesheet" type="text/css" href="/custom.css" media="screen" integrity="sha256-L50A9TBaaysKaYOQWW5+H5nHTNLFLH4+F7Au3o4enAM="></link>
|
||||
<link rel="stylesheet" type="text/css" href="/custom.css" media="screen" integrity="sha256-VMvzVve7KY7ia4G8uBrASNEZ/Qc/5jCqVV3WWU+Y9ao="></link>
|
||||
<meta name="theme-color" content="#375a7f">
|
||||
<meta name="description" content="{{.Title}}">
|
||||
</head>
|
||||
|
|
@ -365,7 +365,7 @@ const (
|
|||
</div>
|
||||
</div>
|
||||
<div class="row mt-3">
|
||||
<div class="col">
|
||||
<div class="col col-nopad">
|
||||
<form class="form-horizontal" action="/search" method="post">
|
||||
<input type="hidden" name="token" value="{{.Token}}">
|
||||
<div class="form-group">
|
||||
|
|
@ -397,7 +397,7 @@ const (
|
|||
<br><pre class="wrap">{{$item.HTML}}</pre>
|
||||
{{end}}
|
||||
</td>
|
||||
<td>{{if $item.Keyword}}<span class="badge badge-primary">{{$item.Keyword}}</span>{{end}}</td>
|
||||
<td>{{$item.Keyword}}</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
{{else}}
|
||||
|
|
@ -661,6 +661,10 @@ html, body, .container, .content {
|
|||
.full-width {
|
||||
width: 100%;
|
||||
}
|
||||
.col-nopad {
|
||||
padding-left: 0;
|
||||
padding-right: 0;
|
||||
}
|
||||
.relative {
|
||||
position: relative;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue