some improvements
This commit is contained in:
parent
3c5be25cb3
commit
58a0dc36d5
25 changed files with 233 additions and 105 deletions
|
|
@ -173,30 +173,30 @@ func rawHandler(ctx *Context) {
|
|||
http.ServeContent(ctx.Response, ctx.Request, fi.Name(), fi.ModTime(), f)
|
||||
}
|
||||
|
||||
func scanFile(ctx *Context, path string) (err error) {
|
||||
err = ctx.Srv.FS.AddScan(path)
|
||||
func scanFile(srv *HTTPServer, path string) (err error) {
|
||||
err = srv.FS.AddScan(path)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
go func() {
|
||||
defer ctx.Srv.FS.RemoveScan(path)
|
||||
l := ctx.Srv.FS.Log
|
||||
file, txt, err := ctx.Srv.Scanner.Scan(path)
|
||||
defer srv.FS.RemoveScan(path)
|
||||
l := srv.Log
|
||||
file, txt, err := srv.Scanner.Scan(path)
|
||||
if err != nil {
|
||||
l.Printf("scanner: %s: %s", path, err)
|
||||
return
|
||||
}
|
||||
tags, err := ctx.Srv.DB.GetAllRTags()
|
||||
tags, err := srv.DB.GetAllRTags()
|
||||
if err != nil {
|
||||
l.Printf("getTags: %s: %s", path, err)
|
||||
}
|
||||
found := tags.Match(txt)
|
||||
id, err := ctx.Srv.DB.Index.Add(txt, found)
|
||||
id, err := srv.DB.Index.Add(txt, found)
|
||||
if err != nil {
|
||||
l.Printf("index: %s: %s", path, err)
|
||||
return
|
||||
}
|
||||
err = ctx.Srv.DB.NewFile(id, file, found)
|
||||
err = srv.DB.NewFile(id, file, found)
|
||||
if err != nil {
|
||||
l.Printf("newFile: %s: %s", path, err)
|
||||
}
|
||||
|
|
@ -214,14 +214,19 @@ func indexHandler(ctx *Context) {
|
|||
path := ctx.Path()
|
||||
if strings.HasPrefix(path, core.IndexPrefix) {
|
||||
fpath = strings.TrimPrefix(path, core.IndexPrefix)
|
||||
err = scanFile(ctx, fpath)
|
||||
err = scanFile(ctx.Srv, fpath)
|
||||
}
|
||||
if strings.HasPrefix(path, core.ReindexPrefix) {
|
||||
fpath = strings.TrimPrefix(path, core.ReindexPrefix)
|
||||
if strings.HasPrefix(path, core.RetagPrefix) {
|
||||
fpath = strings.TrimPrefix(path, core.RetagPrefix)
|
||||
if fpath == "" {
|
||||
err = ctx.Srv.DB.ReindexAll()
|
||||
go func() {
|
||||
err := ctx.Srv.DB.RetagAll()
|
||||
if err != nil {
|
||||
ctx.Srv.Log.Printf("retagAll: %s", err)
|
||||
}
|
||||
}()
|
||||
} else {
|
||||
err = ctx.Srv.DB.Reindex(fpath, nil)
|
||||
err = ctx.Srv.DB.Retag(fpath, nil)
|
||||
}
|
||||
}
|
||||
p, _ := filepath.Split(fpath)
|
||||
|
|
@ -237,6 +242,19 @@ func indexHandler(ctx *Context) {
|
|||
return
|
||||
}
|
||||
ctx.Redirect(p, http.StatusFound)
|
||||
case "POST":
|
||||
if ctx.Path() != core.IndexPrefix+"/all" || !ctx.CheckXsrf() {
|
||||
ctx.Redirect(core.IndexURI, http.StatusFound)
|
||||
return
|
||||
}
|
||||
go func() {
|
||||
for _, f := range ctx.Srv.FS.RecursiveFiles("/") {
|
||||
if !ctx.Srv.DB.IsIndexed(f) {
|
||||
scanFile(ctx.Srv, f)
|
||||
}
|
||||
}
|
||||
}()
|
||||
ctx.Redirect(core.IndexURI, http.StatusFound)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -457,13 +475,21 @@ func dirHandler(ctx *Context) {
|
|||
Title: "Document Viewer | " + path,
|
||||
}
|
||||
ctx.Template("fileHandler")
|
||||
f := ctx.Srv.DB.IsIndexed(path)
|
||||
ctx.Data.Data = core.Path{
|
||||
Name: path,
|
||||
Abs: core.RawPrefix + path,
|
||||
Flag: ctx.Srv.DB.IsIndexed(path),
|
||||
Flag: f,
|
||||
Scan: ctx.Srv.FS.CheckScan(path),
|
||||
}
|
||||
ctx.Data.Paths = fs.Paths(path)
|
||||
if f {
|
||||
ctx.Data.Tags, err = ctx.Srv.DB.GetTag(path)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
}
|
||||
ctx.Exec()
|
||||
default:
|
||||
p := fs.Clean(path)
|
||||
|
|
@ -573,19 +599,18 @@ func searchHandler(ctx *Context) {
|
|||
Title: "Search",
|
||||
BodyTitle: "Search",
|
||||
}
|
||||
switch ctx.Method() {
|
||||
case "GET":
|
||||
ctx.Exec()
|
||||
case "POST":
|
||||
if !ctx.CheckXsrf() {
|
||||
m := ctx.Method()
|
||||
switch m {
|
||||
case "GET", "POST":
|
||||
if m == "POST" && !ctx.CheckXsrf() {
|
||||
return
|
||||
}
|
||||
s := ctx.Form("search")
|
||||
ctx.Data.Search = s
|
||||
if s == "" {
|
||||
s = `""`
|
||||
q := ctx.GetForm("query")
|
||||
ctx.Data.Query = q
|
||||
if q == "" {
|
||||
q = `""`
|
||||
}
|
||||
res, err := ctx.Srv.DB.Index.Search(s)
|
||||
res, err := ctx.Srv.DB.Index.Search(q)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
|
|
@ -706,7 +731,7 @@ func logsHandler(ctx *Context) {
|
|||
}
|
||||
switch ctx.Method() {
|
||||
case "GET":
|
||||
ctx.Data.Data = ctx.Srv.FS.Log.Logs()
|
||||
ctx.Data.Data = ctx.Srv.Log.Logs()
|
||||
ctx.Exec()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue