mirror of
https://github.com/Eggbertx/gochan.git
synced 2025-09-16 20:26:24 -07:00
Make zerolog error Event usage more consistent (Caller on the same line as Err)
This commit is contained in:
parent
c2d834c712
commit
bd6992cb87
13 changed files with 129 additions and 163 deletions
|
@ -107,7 +107,7 @@ func editPost(checkedPosts []int, editBtn string, doEdit string, writer http.Res
|
||||||
}
|
}
|
||||||
post, err := gcsql.GetPostFromID(postid, true)
|
post, err := gcsql.GetPostFromID(postid, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Int("postid", postid).
|
Int("postid", postid).
|
||||||
Msg("Unable to find post")
|
Msg("Unable to find post")
|
||||||
server.ServeError(writer, "Unable to find post: "+err.Error(), wantsJSON, map[string]interface{}{
|
server.ServeError(writer, "Unable to find post: "+err.Error(), wantsJSON, map[string]interface{}{
|
||||||
|
|
|
@ -150,11 +150,10 @@ func parseCommandLine() {
|
||||||
fmt.Printf("Creating new staff: %q, with password: %q and rank: %d from command line", arr[0], arr[1], rank)
|
fmt.Printf("Creating new staff: %q, with password: %q and rank: %d from command line", arr[0], arr[1], rank)
|
||||||
if _, err = gcsql.NewStaff(arr[0], arr[1], rank); err != nil {
|
if _, err = gcsql.NewStaff(arr[0], arr[1], rank); err != nil {
|
||||||
fmt.Printf("Failed creating new staff account for %q: %s\n", arr[0], err.Error())
|
fmt.Printf("Failed creating new staff account for %q: %s\n", arr[0], err.Error())
|
||||||
gcutil.LogFatal().
|
gcutil.LogFatal().Err(err).Caller().
|
||||||
Str("staff", "add").
|
Str("staff", "add").
|
||||||
Str("source", "commandLine").
|
Str("source", "commandLine").
|
||||||
Str("username", arr[0]).
|
Str("username", arr[0]).
|
||||||
Err(err).
|
|
||||||
Msg("Failed creating new staff account")
|
Msg("Failed creating new staff account")
|
||||||
}
|
}
|
||||||
gcutil.LogInfo().
|
gcutil.LogInfo().
|
||||||
|
|
|
@ -65,8 +65,8 @@ func BuildBoardPages(board *gcsql.Board) error {
|
||||||
|
|
||||||
threads, err := board.GetThreads(true, true, true)
|
threads, err := board.GetThreads(true, true, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Caller().Msg("Failed getting board threads")
|
Msg("Failed getting board threads")
|
||||||
return fmt.Errorf("error getting threads for /%s/: %s", board.Dir, err.Error())
|
return fmt.Errorf("error getting threads for /%s/: %s", board.Dir, err.Error())
|
||||||
}
|
}
|
||||||
topPosts, err := getBoardTopPosts(board.ID)
|
topPosts, err := getBoardTopPosts(board.ID)
|
||||||
|
@ -89,8 +89,8 @@ func BuildBoardPages(board *gcsql.Board) error {
|
||||||
}
|
}
|
||||||
errEv.Int("threadID", thread.ID)
|
errEv.Int("threadID", thread.ID)
|
||||||
if catalogThread.Images, err = thread.GetReplyFileCount(); err != nil {
|
if catalogThread.Images, err = thread.GetReplyFileCount(); err != nil {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Caller().Msg("Failed getting file count")
|
Msg("Failed getting file count")
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,15 +105,13 @@ func BuildBoardPages(board *gcsql.Board) error {
|
||||||
}
|
}
|
||||||
catalogThread.Replies, err = thread.GetReplyCount()
|
catalogThread.Replies, err = thread.GetReplyCount()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().Msg("Failed getting reply count")
|
||||||
Caller().Msg("Failed getting reply count")
|
|
||||||
return errors.New("Error getting reply count: " + err.Error())
|
return errors.New("Error getting reply count: " + err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
catalogThread.Posts, err = getThreadPosts(&thread)
|
catalogThread.Posts, err = getThreadPosts(&thread)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().Msg("Failed getting replies")
|
||||||
Caller().Msg("Failed getting replies")
|
|
||||||
return errors.New("Failed getting replies: " + err.Error())
|
return errors.New("Failed getting replies: " + err.Error())
|
||||||
}
|
}
|
||||||
if len(catalogThread.Posts) == 0 {
|
if len(catalogThread.Posts) == 0 {
|
||||||
|
@ -127,8 +125,7 @@ func BuildBoardPages(board *gcsql.Board) error {
|
||||||
}
|
}
|
||||||
catalogThread.uploads, err = thread.GetUploads()
|
catalogThread.uploads, err = thread.GetUploads()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().Msg("Failed getting thread uploads")
|
||||||
Caller().Msg("Failed getting thread uploads")
|
|
||||||
return errors.New("Failed getting thread uploads: " + err.Error())
|
return errors.New("Failed getting thread uploads: " + err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -186,9 +183,9 @@ func BuildBoardPages(board *gcsql.Board) error {
|
||||||
"useCaptcha": captchaCfg.UseCaptcha(),
|
"useCaptcha": captchaCfg.UseCaptcha(),
|
||||||
"captcha": captchaCfg,
|
"captcha": captchaCfg,
|
||||||
}, boardPageFile, "text/html"); err != nil {
|
}, boardPageFile, "text/html"); err != nil {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Str("page", "board.html").
|
Str("page", "board.html").
|
||||||
Caller().Msg("Failed building board")
|
Msg("Failed building board")
|
||||||
return fmt.Errorf("failed building /%s/: %s", board.Dir, err.Error())
|
return fmt.Errorf("failed building /%s/: %s", board.Dir, err.Error())
|
||||||
}
|
}
|
||||||
return boardPageFile.Close()
|
return boardPageFile.Close()
|
||||||
|
@ -272,16 +269,9 @@ func BuildBoardPages(board *gcsql.Board) error {
|
||||||
catalogPages.pages = append(catalogPages.pages, page)
|
catalogPages.pages = append(catalogPages.pages, page)
|
||||||
}
|
}
|
||||||
|
|
||||||
var catalogJSON []byte
|
if err = json.NewEncoder(catalogJSONFile).Encode(catalog.pages); err != nil {
|
||||||
if catalogJSON, err = json.Marshal(catalog.pages); err != nil {
|
errEv.Err(err).Caller().Msg("Unable to write catalog JSON to file")
|
||||||
errEv.Err(err).
|
return errors.New("failed to marshal to catalog JSON")
|
||||||
Caller().Send()
|
|
||||||
return errors.New("failed to marshal to JSON: " + err.Error())
|
|
||||||
}
|
|
||||||
if _, err = catalogJSONFile.Write(catalogJSON); err != nil {
|
|
||||||
errEv.Err(err).
|
|
||||||
Caller().Msg("Failed writing catalog.json")
|
|
||||||
return fmt.Errorf("failed writing /%s/catalog.json: %s", board.Dir, err.Error())
|
|
||||||
}
|
}
|
||||||
return catalogJSONFile.Close()
|
return catalogJSONFile.Close()
|
||||||
}
|
}
|
||||||
|
@ -415,21 +405,18 @@ func buildBoard(board *gcsql.Board, force bool) error {
|
||||||
thumbInfo, _ := os.Stat(thumbPath)
|
thumbInfo, _ := os.Stat(thumbPath)
|
||||||
if dirInfo != nil {
|
if dirInfo != nil {
|
||||||
if !force {
|
if !force {
|
||||||
errEv.Err(os.ErrExist).
|
errEv.Err(os.ErrExist).Caller().
|
||||||
Str("dirPath", dirPath).
|
Str("dirPath", dirPath).Send()
|
||||||
Caller().Send()
|
|
||||||
return fmt.Errorf(pathExistsStr, dirPath)
|
return fmt.Errorf(pathExistsStr, dirPath)
|
||||||
}
|
}
|
||||||
if !dirInfo.IsDir() {
|
if !dirInfo.IsDir() {
|
||||||
errEv.Err(os.ErrExist).
|
errEv.Err(os.ErrExist).Caller().
|
||||||
Str("dirPath", dirPath).
|
Str("dirPath", dirPath).Send()
|
||||||
Caller().Send()
|
|
||||||
return fmt.Errorf(dirIsAFileStr, dirPath)
|
return fmt.Errorf(dirIsAFileStr, dirPath)
|
||||||
}
|
}
|
||||||
} else if err = os.Mkdir(dirPath, config.GC_DIR_MODE); err != nil {
|
} else if err = os.Mkdir(dirPath, config.GC_DIR_MODE); err != nil {
|
||||||
errEv.Err(os.ErrExist).
|
errEv.Err(os.ErrExist).Caller().
|
||||||
Str("dirPath", dirPath).
|
Str("dirPath", dirPath).Send()
|
||||||
Caller().Send()
|
|
||||||
return fmt.Errorf(genericErrStr, dirPath, err.Error())
|
return fmt.Errorf(genericErrStr, dirPath, err.Error())
|
||||||
}
|
}
|
||||||
if err = config.TakeOwnership(dirPath); err != nil {
|
if err = config.TakeOwnership(dirPath); err != nil {
|
||||||
|
@ -441,23 +428,20 @@ func buildBoard(board *gcsql.Board, force bool) error {
|
||||||
if resInfo != nil {
|
if resInfo != nil {
|
||||||
if !force {
|
if !force {
|
||||||
err = fmt.Errorf(pathExistsStr, resPath)
|
err = fmt.Errorf(pathExistsStr, resPath)
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Str("resPath", resPath).
|
Str("resPath", resPath).Send()
|
||||||
Caller().Send()
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if !resInfo.IsDir() {
|
if !resInfo.IsDir() {
|
||||||
err = fmt.Errorf(dirIsAFileStr, resPath)
|
err = fmt.Errorf(dirIsAFileStr, resPath)
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Str("resPath", resPath).
|
Str("resPath", resPath).Send()
|
||||||
Caller().Send()
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
} else if err = os.Mkdir(resPath, config.GC_DIR_MODE); err != nil {
|
} else if err = os.Mkdir(resPath, config.GC_DIR_MODE); err != nil {
|
||||||
err = fmt.Errorf(genericErrStr, resPath, err.Error())
|
err = fmt.Errorf(genericErrStr, resPath, err.Error())
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Str("resPath", resPath).
|
Str("resPath", resPath).Send()
|
||||||
Caller().Send()
|
|
||||||
return fmt.Errorf(genericErrStr, resPath, err.Error())
|
return fmt.Errorf(genericErrStr, resPath, err.Error())
|
||||||
}
|
}
|
||||||
if err = config.TakeOwnership(resPath); err != nil {
|
if err = config.TakeOwnership(resPath); err != nil {
|
||||||
|
@ -469,23 +453,20 @@ func buildBoard(board *gcsql.Board, force bool) error {
|
||||||
if srcInfo != nil {
|
if srcInfo != nil {
|
||||||
if !force {
|
if !force {
|
||||||
err = fmt.Errorf(pathExistsStr, srcPath)
|
err = fmt.Errorf(pathExistsStr, srcPath)
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Str("srcPath", srcPath).
|
Str("srcPath", srcPath).Send()
|
||||||
Caller().Send()
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if !srcInfo.IsDir() {
|
if !srcInfo.IsDir() {
|
||||||
err = fmt.Errorf(dirIsAFileStr, srcPath)
|
err = fmt.Errorf(dirIsAFileStr, srcPath)
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Str("srcPath", srcPath).
|
Str("srcPath", srcPath).Send()
|
||||||
Caller().Send()
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
} else if err = os.Mkdir(srcPath, config.GC_DIR_MODE); err != nil {
|
} else if err = os.Mkdir(srcPath, config.GC_DIR_MODE); err != nil {
|
||||||
err = fmt.Errorf(genericErrStr, srcPath, err.Error())
|
err = fmt.Errorf(genericErrStr, srcPath, err.Error())
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Str("srcPath", srcPath).
|
Str("srcPath", srcPath).Send()
|
||||||
Caller().Send()
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if config.TakeOwnership(srcPath); err != nil {
|
if config.TakeOwnership(srcPath); err != nil {
|
||||||
|
|
|
@ -86,8 +86,7 @@ func BuildCatalog(boardID int) error {
|
||||||
|
|
||||||
board, err := gcsql.GetBoardFromID(boardID)
|
board, err := gcsql.GetBoardFromID(boardID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().Msg("Unable to get board information")
|
||||||
Caller().Msg("Unable to get board information")
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
errEv.Str("boardDir", board.Dir)
|
errEv.Str("boardDir", board.Dir)
|
||||||
|
@ -101,13 +100,13 @@ func BuildCatalog(boardID int) error {
|
||||||
|
|
||||||
if err = config.TakeOwnershipOfFile(catalogFile); err != nil {
|
if err = config.TakeOwnershipOfFile(catalogFile); err != nil {
|
||||||
errEv.Err(err).Caller().Send()
|
errEv.Err(err).Caller().Send()
|
||||||
return fmt.Errorf("failed taking ownership of /%s/catalog.html: %s", board.Dir, err.Error())
|
return fmt.Errorf("failed taking ownership of /%s/catalog.html", board.Dir)
|
||||||
}
|
}
|
||||||
|
|
||||||
threadOPs, err := getBoardTopPosts(boardID)
|
threadOPs, err := getBoardTopPosts(boardID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errEv.Err(err).Caller().Send()
|
errEv.Err(err).Caller().Send()
|
||||||
return fmt.Errorf("failed building catalog for /%s/: %s", board.Dir, err.Error())
|
return fmt.Errorf("failed building catalog for /%s/", board.Dir)
|
||||||
}
|
}
|
||||||
boardConfig := config.GetBoardConfig(board.Dir)
|
boardConfig := config.GetBoardConfig(board.Dir)
|
||||||
|
|
||||||
|
@ -119,7 +118,7 @@ func BuildCatalog(boardID int) error {
|
||||||
"threads": threadOPs,
|
"threads": threadOPs,
|
||||||
}, catalogFile, "text/html"); err != nil {
|
}, catalogFile, "text/html"); err != nil {
|
||||||
errEv.Err(err).Caller().Send()
|
errEv.Err(err).Caller().Send()
|
||||||
return fmt.Errorf("failed building catalog for /%s/: %s", board.Dir, err.Error())
|
return fmt.Errorf("failed building catalog for /%s/", board.Dir)
|
||||||
}
|
}
|
||||||
return catalogFile.Close()
|
return catalogFile.Close()
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,22 +61,20 @@ func BuildThreadPages(op *gcsql.Post) error {
|
||||||
|
|
||||||
board, err := op.GetBoard()
|
board, err := op.GetBoard()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().Msg("failed building thread")
|
||||||
Caller().Msg("failed building thread")
|
return errors.New("failed building thread")
|
||||||
return errors.New("failed building thread: " + err.Error())
|
|
||||||
}
|
}
|
||||||
errEv.Str("boardDir", board.Dir)
|
errEv.Str("boardDir", board.Dir)
|
||||||
thread, err := gcsql.GetThread(op.ThreadID)
|
thread, err := gcsql.GetThread(op.ThreadID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().Msg("Unable to get thread info")
|
||||||
Caller().Msg("Unable to get thread info")
|
return errors.New("unable to get thread info")
|
||||||
return errors.New("unable to get thread info: " + err.Error())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
posts, err := getThreadPosts(thread)
|
posts, err := getThreadPosts(thread)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errEv.Err(err).Caller().Send()
|
errEv.Err(err).Caller().Send()
|
||||||
return errors.New("failed building thread: " + err.Error())
|
return errors.New("failed getting thread posts")
|
||||||
}
|
}
|
||||||
criticalCfg := config.GetSystemCriticalConfig()
|
criticalCfg := config.GetSystemCriticalConfig()
|
||||||
os.Remove(path.Join(criticalCfg.DocumentRoot, board.Dir, "res", strconv.Itoa(op.ID)+".html"))
|
os.Remove(path.Join(criticalCfg.DocumentRoot, board.Dir, "res", strconv.Itoa(op.ID)+".html"))
|
||||||
|
@ -122,26 +120,21 @@ func BuildThreadPages(op *gcsql.Post) error {
|
||||||
os.O_CREATE|os.O_RDWR|os.O_TRUNC, config.GC_FILE_MODE)
|
os.O_CREATE|os.O_RDWR|os.O_TRUNC, config.GC_FILE_MODE)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errEv.Err(err).Caller().Send()
|
errEv.Err(err).Caller().Send()
|
||||||
return fmt.Errorf("failed opening /%s/res/%d.json: %s", board.Dir, posts[0].ID, err.Error())
|
return fmt.Errorf("failed opening /%s/res/%d.json", board.Dir, posts[0].ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = config.TakeOwnershipOfFile(threadJSONFile); err != nil {
|
if err = config.TakeOwnershipOfFile(threadJSONFile); err != nil {
|
||||||
errEv.Err(err).Caller().Send()
|
errEv.Err(err).Caller().Send()
|
||||||
return fmt.Errorf("failed setting file permissions for /%s/res/%d.json: %s", board.Dir, posts[0].ID, err.Error())
|
return fmt.Errorf("failed setting file permissions for /%s/res/%d.json", board.Dir, posts[0].ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
threadMap := make(map[string][]Post)
|
threadMap := make(map[string][]Post)
|
||||||
|
|
||||||
threadMap["posts"] = posts
|
threadMap["posts"] = posts
|
||||||
threadJSON, err := json.Marshal(threadMap)
|
if err = json.NewEncoder(threadJSONFile).Encode(threadMap); err != nil {
|
||||||
if err != nil {
|
errEv.Err(err).Caller().
|
||||||
gcutil.LogError(err).Send()
|
Msg("Unable to write thread JSON file")
|
||||||
return errors.New("failed to marshal to JSON: " + err.Error())
|
return fmt.Errorf("failed writing /%s/res/%d.json", board.Dir, posts[0].ID)
|
||||||
}
|
|
||||||
if _, err = threadJSONFile.Write(threadJSON); err != nil {
|
|
||||||
errEv.Err(err).
|
|
||||||
Caller().Send()
|
|
||||||
return fmt.Errorf("failed writing /%s/res/%d.json: %s", board.Dir, posts[0].ID, err.Error())
|
|
||||||
}
|
}
|
||||||
return threadJSONFile.Close()
|
return threadJSONFile.Close()
|
||||||
}
|
}
|
||||||
|
|
|
@ -178,9 +178,9 @@ func boardsCallback(_ http.ResponseWriter, request *http.Request, staff *gcsql.S
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
if board, err = gcsql.GetBoardFromID(boardID); err != nil {
|
if board, err = gcsql.GetBoardFromID(boardID); err != nil {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Int("boardID", boardID).
|
Int("boardID", boardID).
|
||||||
Caller().Msg("Unable to get board info")
|
Msg("Unable to get board info")
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
case "modify":
|
case "modify":
|
||||||
|
@ -330,25 +330,24 @@ func cleanupCallback(_ http.ResponseWriter, request *http.Request, _ *gcsql.Staf
|
||||||
if request.FormValue("run") == "Run Cleanup" {
|
if request.FormValue("run") == "Run Cleanup" {
|
||||||
outputStr += "Removing deleted posts from the database.<hr />"
|
outputStr += "Removing deleted posts from the database.<hr />"
|
||||||
if err = gcsql.PermanentlyRemoveDeletedPosts(); err != nil {
|
if err = gcsql.PermanentlyRemoveDeletedPosts(); err != nil {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Str("cleanup", "removeDeletedPosts").
|
Str("cleanup", "removeDeletedPosts").Send()
|
||||||
Caller().Send()
|
err = errors.New("unable to remove deleted posts from database")
|
||||||
err = errors.New("Error removing deleted posts from database: " + err.Error())
|
|
||||||
return outputStr + "<tr><td>" + err.Error() + "</td></tr></table>", err
|
return outputStr + "<tr><td>" + err.Error() + "</td></tr></table>", err
|
||||||
}
|
}
|
||||||
|
|
||||||
outputStr += "Optimizing all tables in database.<hr />"
|
outputStr += "Optimizing all tables in database.<hr />"
|
||||||
err = gcsql.OptimizeDatabase()
|
err = gcsql.OptimizeDatabase()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Str("sql", "optimization").
|
Str("sql", "optimization").Send()
|
||||||
Caller().Send()
|
|
||||||
err = errors.New("Error optimizing SQL tables: " + err.Error())
|
err = errors.New("Error optimizing SQL tables: " + err.Error())
|
||||||
return outputStr + "<tr><td>" + err.Error() + "</td></tr></table>", err
|
return outputStr + "<tr><td>" + err.Error() + "</td></tr></table>", err
|
||||||
}
|
}
|
||||||
outputStr += "Cleanup finished"
|
outputStr += "Cleanup finished"
|
||||||
} else {
|
} else {
|
||||||
outputStr += `<form action="` + config.GetSystemCriticalConfig().WebRoot + `manage/cleanup" method="post">` +
|
|
||||||
|
outputStr += `<form action="` + config.WebPath("manage/cleanup") + `" method="post">` +
|
||||||
`<input name="run" id="run" type="submit" value="Run Cleanup" />` +
|
`<input name="run" id="run" type="submit" value="Run Cleanup" />` +
|
||||||
`</form>`
|
`</form>`
|
||||||
}
|
}
|
||||||
|
|
|
@ -141,13 +141,12 @@ func appealsCallback(_ http.ResponseWriter, request *http.Request, staff *gcsql.
|
||||||
// approving an appeal
|
// approving an appeal
|
||||||
approveID, err := strconv.Atoi(approveStr)
|
approveID, err := strconv.Atoi(approveStr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Str("approveStr", approveStr).Caller().Send()
|
Str("approveStr", approveStr).Send()
|
||||||
}
|
}
|
||||||
if err = gcsql.ApproveAppeal(approveID, staff.ID); err != nil {
|
if err = gcsql.ApproveAppeal(approveID, staff.ID); err != nil {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Int("approveAppeal", approveID).
|
Int("approveAppeal", approveID).Send()
|
||||||
Caller().Send()
|
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -182,9 +181,8 @@ func fileBansCallback(_ http.ResponseWriter, request *http.Request, staff *gcsql
|
||||||
if boardidStr != "" {
|
if boardidStr != "" {
|
||||||
boardid, err = strconv.Atoi(boardidStr)
|
boardid, err = strconv.Atoi(boardidStr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Str("boardid", boardidStr).
|
Str("boardid", boardidStr).Send()
|
||||||
Caller().Send()
|
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -199,9 +197,8 @@ func fileBansCallback(_ http.ResponseWriter, request *http.Request, staff *gcsql
|
||||||
_, err = regexp.Compile(filename)
|
_, err = regexp.Compile(filename)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// invalid regular expression
|
// invalid regular expression
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Str("regex", filename).
|
Str("regex", filename).Send()
|
||||||
Caller().Send()
|
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -273,15 +270,13 @@ func fileBansCallback(_ http.ResponseWriter, request *http.Request, staff *gcsql
|
||||||
// user requested a checksum ban ID to delete
|
// user requested a checksum ban ID to delete
|
||||||
delChecksumBanID, err := strconv.Atoi(delChecksumBanIDStr)
|
delChecksumBanID, err := strconv.Atoi(delChecksumBanIDStr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Str("deleteChecksumBanIDStr", delChecksumBanIDStr).
|
Str("deleteChecksumBanIDStr", delChecksumBanIDStr).Send()
|
||||||
Caller().Send()
|
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
if err = (gcsql.FileBan{ID: delChecksumBanID}).Deactivate(staff.ID); err != nil {
|
if err = (gcsql.FileBan{ID: delChecksumBanID}).Deactivate(staff.ID); err != nil {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Int("deleteChecksumBanID", delChecksumBanID).
|
Int("deleteChecksumBanID", delChecksumBanID).Send()
|
||||||
Caller().Send()
|
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
infoEv.Int("deleteChecksumBanID", delChecksumBanID).Msg("File checksum ban deleted")
|
infoEv.Int("deleteChecksumBanID", delChecksumBanID).Msg("File checksum ban deleted")
|
||||||
|
@ -293,8 +288,8 @@ func fileBansCallback(_ http.ResponseWriter, request *http.Request, staff *gcsql
|
||||||
var filterBoardID int
|
var filterBoardID int
|
||||||
if filterBoardIDstr != "" {
|
if filterBoardIDstr != "" {
|
||||||
if filterBoardID, err = strconv.Atoi(filterBoardIDstr); err != nil {
|
if filterBoardID, err = strconv.Atoi(filterBoardIDstr); err != nil {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Str("filterboardid", filterBoardIDstr).Caller().Send()
|
Str("filterboardid", filterBoardIDstr).Send()
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -337,15 +332,14 @@ func nameBansCallback(_ http.ResponseWriter, request *http.Request, staff *gcsql
|
||||||
if deleteIDstr != "" {
|
if deleteIDstr != "" {
|
||||||
deleteID, err := strconv.Atoi(deleteIDstr)
|
deleteID, err := strconv.Atoi(deleteIDstr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Str("delStr", deleteIDstr).
|
Str("delStr", deleteIDstr).Send()
|
||||||
Caller().Send()
|
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
if err = gcsql.DeleteNameBan(deleteID); err != nil {
|
if err = gcsql.DeleteNameBan(deleteID); err != nil {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Int("deleteID", deleteID).
|
Int("deleteID", deleteID).
|
||||||
Caller().Msg("Unable to delete name ban")
|
Msg("Unable to delete name ban")
|
||||||
return "", errors.New("Unable to delete name ban: " + err.Error())
|
return "", errors.New("Unable to delete name ban: " + err.Error())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -367,9 +361,9 @@ func nameBansCallback(_ http.ResponseWriter, request *http.Request, staff *gcsql
|
||||||
}
|
}
|
||||||
isRegex := request.FormValue("isregex") == "on"
|
isRegex := request.FormValue("isregex") == "on"
|
||||||
if _, err = gcsql.NewNameBan(name, isRegex, boardID, staff.ID, request.FormValue("staffnote")); err != nil {
|
if _, err = gcsql.NewNameBan(name, isRegex, boardID, staff.ID, request.FormValue("staffnote")); err != nil {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Str("name", name).
|
Str("name", name).
|
||||||
Int("boardID", boardID)
|
Int("boardID", boardID).Send()
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -439,9 +433,8 @@ func reportsCallback(_ http.ResponseWriter, request *http.Request, staff *gcsql.
|
||||||
}
|
}
|
||||||
found, err := gcsql.ClearReport(dismissID, staff.ID, block != "" && staff.Rank == 3)
|
found, err := gcsql.ClearReport(dismissID, staff.ID, block != "" && staff.Rank == 3)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Int("postID", dismissID).
|
Int("postID", dismissID).Send()
|
||||||
Caller().Send()
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if !found {
|
if !found {
|
||||||
|
|
|
@ -49,9 +49,9 @@ func ipBanFromRequest(ban *gcsql.IPBan, request *http.Request, infoEv *zerolog.E
|
||||||
durationStr := request.FormValue("duration")
|
durationStr := request.FormValue("duration")
|
||||||
duration, err := durationutil.ParseLongerDuration(durationStr)
|
duration, err := durationutil.ParseLongerDuration(durationStr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Str("duration", durationStr).
|
Str("duration", durationStr).
|
||||||
Caller().Msg("Invalid duration")
|
Msg("Invalid duration")
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
ban.ExpiresAt = now.Add(duration)
|
ban.ExpiresAt = now.Add(duration)
|
||||||
|
|
|
@ -60,9 +60,8 @@ func CallManageFunction(writer http.ResponseWriter, request *http.Request) {
|
||||||
staff = &gcsql.Staff{}
|
staff = &gcsql.Staff{}
|
||||||
err = nil
|
err = nil
|
||||||
} else if err != nil && err != sql.ErrNoRows {
|
} else if err != nil && err != sql.ErrNoRows {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Str("request", "getCurrentFullStaff").
|
Str("request", "getCurrentFullStaff").Send()
|
||||||
Caller().Send()
|
|
||||||
server.ServeError(writer, "Error getting staff info from request: "+err.Error(), wantsJSON, nil)
|
server.ServeError(writer, "Error getting staff info from request: "+err.Error(), wantsJSON, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,9 +46,9 @@ func createSession(key, username, password string, request *http.Request, writer
|
||||||
staff, err := gcsql.GetStaffByUsername(username, true)
|
staff, err := gcsql.GetStaffByUsername(username, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err != sql.ErrNoRows {
|
if err != sql.ErrNoRows {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Str("remoteAddr", request.RemoteAddr).
|
Str("remoteAddr", request.RemoteAddr).
|
||||||
Caller().Msg("Unrecognized username")
|
Msg("Unrecognized username")
|
||||||
}
|
}
|
||||||
return ErrBadCredentials
|
return ErrBadCredentials
|
||||||
}
|
}
|
||||||
|
@ -56,8 +56,7 @@ func createSession(key, username, password string, request *http.Request, writer
|
||||||
err = bcrypt.CompareHashAndPassword([]byte(staff.PasswordChecksum), []byte(password))
|
err = bcrypt.CompareHashAndPassword([]byte(staff.PasswordChecksum), []byte(password))
|
||||||
if err == bcrypt.ErrMismatchedHashAndPassword {
|
if err == bcrypt.ErrMismatchedHashAndPassword {
|
||||||
// password mismatch
|
// password mismatch
|
||||||
errEv.Caller().
|
errEv.Caller().Msg("Invalid password")
|
||||||
Msg("Invalid password")
|
|
||||||
return ErrBadCredentials
|
return ErrBadCredentials
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -110,8 +110,8 @@ func handleAppeal(writer http.ResponseWriter, request *http.Request, infoEv *zer
|
||||||
}
|
}
|
||||||
banID, err := strconv.Atoi(banIDstr)
|
banID, err := strconv.Atoi(banIDstr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Str("banIDstr", banIDstr).Caller().Send()
|
Str("banIDstr", banIDstr).Send()
|
||||||
server.ServeErrorPage(writer, fmt.Sprintf("Invalid banid value %q", banIDstr))
|
server.ServeErrorPage(writer, fmt.Sprintf("Invalid banid value %q", banIDstr))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -158,9 +158,9 @@ func handleAppeal(writer http.ResponseWriter, request *http.Request, infoEv *zer
|
||||||
server.ServeErrorPage(writer, "You are not able to appeal this ban until "+ban.AppealAt.Format(config.GetBoardConfig("").DateTimeFormat))
|
server.ServeErrorPage(writer, "You are not able to appeal this ban until "+ban.AppealAt.Format(config.GetBoardConfig("").DateTimeFormat))
|
||||||
}
|
}
|
||||||
if err = ban.Appeal(appealMsg); err != nil {
|
if err = ban.Appeal(appealMsg); err != nil {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Str("appealMsg", appealMsg).
|
Str("appealMsg", appealMsg).
|
||||||
Caller().Msg("Unable to submit appeal")
|
Msg("Unable to submit appeal")
|
||||||
server.ServeErrorPage(writer, "Unable to submit appeal")
|
server.ServeErrorPage(writer, "Unable to submit appeal")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,6 +81,22 @@ func attachFlag(request *http.Request, post *gcsql.Post, board string, errEv *ze
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func handleRecover(writer http.ResponseWriter, wantsJSON bool, infoEv *zerolog.Event, errEv *zerolog.Event) {
|
||||||
|
if a := recover(); a != nil {
|
||||||
|
if writer != nil {
|
||||||
|
writer.WriteHeader(http.StatusInternalServerError)
|
||||||
|
server.ServeError(writer, "Internal server error", wantsJSON, nil)
|
||||||
|
}
|
||||||
|
errEv.Caller().
|
||||||
|
Str("recover", fmt.Sprintf("%v", a)).
|
||||||
|
Bytes("stack", debug.Stack()).
|
||||||
|
Msg("Recovered from panic")
|
||||||
|
debug.PrintStack()
|
||||||
|
}
|
||||||
|
errEv.Discard()
|
||||||
|
infoEv.Discard()
|
||||||
|
}
|
||||||
|
|
||||||
// MakePost is called when a user accesses /post. Parse form data, then insert and build
|
// MakePost is called when a user accesses /post. Parse form data, then insert and build
|
||||||
func MakePost(writer http.ResponseWriter, request *http.Request) {
|
func MakePost(writer http.ResponseWriter, request *http.Request) {
|
||||||
request.ParseMultipartForm(maxFormBytes)
|
request.ParseMultipartForm(maxFormBytes)
|
||||||
|
@ -91,19 +107,7 @@ func MakePost(writer http.ResponseWriter, request *http.Request) {
|
||||||
Str("IP", ip)
|
Str("IP", ip)
|
||||||
infoEv := gcutil.LogInfo().
|
infoEv := gcutil.LogInfo().
|
||||||
Str("IP", ip)
|
Str("IP", ip)
|
||||||
defer func() {
|
defer handleRecover(writer, wantsJSON, infoEv, errEv)
|
||||||
if a := recover(); a != nil {
|
|
||||||
writer.WriteHeader(http.StatusInternalServerError)
|
|
||||||
server.ServeError(writer, "Internal server error", wantsJSON, nil)
|
|
||||||
errEv.Caller().
|
|
||||||
Str("recover", fmt.Sprintf("%v", a)).
|
|
||||||
Bytes("stack", debug.Stack()).
|
|
||||||
Msg("Recovered from panic")
|
|
||||||
debug.PrintStack()
|
|
||||||
}
|
|
||||||
errEv.Discard()
|
|
||||||
infoEv.Discard()
|
|
||||||
}()
|
|
||||||
|
|
||||||
var formName string
|
var formName string
|
||||||
var formEmail string
|
var formEmail string
|
||||||
|
@ -132,20 +136,19 @@ func MakePost(writer http.ResponseWriter, request *http.Request) {
|
||||||
if threadidStr != "" {
|
if threadidStr != "" {
|
||||||
// post is a reply
|
// post is a reply
|
||||||
if opID, err = strconv.Atoi(threadidStr); err != nil {
|
if opID, err = strconv.Atoi(threadidStr); err != nil {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Str("opIDstr", threadidStr).
|
Str("opIDstr", threadidStr).
|
||||||
Caller().Msg("Invalid threadid value")
|
Msg("Invalid threadid value")
|
||||||
server.ServeError(writer, "Invalid form data (invalid threadid)", wantsJSON, map[string]interface{}{
|
server.ServeError(writer, "Invalid form data (invalid threadid)", wantsJSON, map[string]any{
|
||||||
"threadid": threadidStr,
|
"threadid": threadidStr,
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if opID > 0 {
|
if opID > 0 {
|
||||||
if post.ThreadID, err = gcsql.GetTopPostThreadID(opID); err != nil {
|
if post.ThreadID, err = gcsql.GetTopPostThreadID(opID); err != nil {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().
|
||||||
Int("opID", opID).
|
Int("opID", opID).Send()
|
||||||
Caller().Send()
|
server.ServeError(writer, err.Error(), wantsJSON, map[string]any{
|
||||||
server.ServeError(writer, err.Error(), wantsJSON, map[string]interface{}{
|
|
||||||
"opID": opID,
|
"opID": opID,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -156,7 +159,7 @@ func MakePost(writer http.ResponseWriter, request *http.Request) {
|
||||||
boardID, err := strconv.Atoi(boardidStr)
|
boardID, err := strconv.Atoi(boardidStr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errEv.Str("boardid", boardidStr).Caller().Msg("Invalid boardid value")
|
errEv.Str("boardid", boardidStr).Caller().Msg("Invalid boardid value")
|
||||||
server.ServeError(writer, "Invalid form data (invalid boardid)", wantsJSON, map[string]interface{}{
|
server.ServeError(writer, "Invalid form data (invalid boardid)", wantsJSON, map[string]any{
|
||||||
"boardid": boardidStr,
|
"boardid": boardidStr,
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
|
@ -166,7 +169,7 @@ func MakePost(writer http.ResponseWriter, request *http.Request) {
|
||||||
errEv.Err(err).Caller().
|
errEv.Err(err).Caller().
|
||||||
Int("boardid", boardID).
|
Int("boardid", boardID).
|
||||||
Msg("Unable to get board info")
|
Msg("Unable to get board info")
|
||||||
server.ServeError(writer, "Unable to get board info", wantsJSON, map[string]interface{}{
|
server.ServeError(writer, "Unable to get board info", wantsJSON, map[string]any{
|
||||||
"boardid": boardID,
|
"boardid": boardID,
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
|
@ -202,7 +205,7 @@ func MakePost(writer http.ResponseWriter, request *http.Request) {
|
||||||
errEv.
|
errEv.
|
||||||
Int("messageLength", len(post.MessageRaw)).
|
Int("messageLength", len(post.MessageRaw)).
|
||||||
Int("maxMessageLength", postBoard.MaxMessageLength).Send()
|
Int("maxMessageLength", postBoard.MaxMessageLength).Send()
|
||||||
server.ServeError(writer, "Message is too long", wantsJSON, map[string]interface{}{
|
server.ServeError(writer, "Message is too long", wantsJSON, map[string]any{
|
||||||
"messageLength": len(post.MessageRaw),
|
"messageLength": len(post.MessageRaw),
|
||||||
"boardid": boardID,
|
"boardid": boardID,
|
||||||
})
|
})
|
||||||
|
@ -211,7 +214,7 @@ func MakePost(writer http.ResponseWriter, request *http.Request) {
|
||||||
|
|
||||||
if post.MessageRaw, err = ApplyWordFilters(post.MessageRaw, postBoard.Dir); err != nil {
|
if post.MessageRaw, err = ApplyWordFilters(post.MessageRaw, postBoard.Dir); err != nil {
|
||||||
errEv.Err(err).Caller().Msg("Error formatting post")
|
errEv.Err(err).Caller().Msg("Error formatting post")
|
||||||
server.ServeError(writer, "Error formatting post: "+err.Error(), wantsJSON, map[string]interface{}{
|
server.ServeError(writer, "Error formatting post: "+err.Error(), wantsJSON, map[string]any{
|
||||||
"boardDir": postBoard.Dir,
|
"boardDir": postBoard.Dir,
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
|
@ -278,7 +281,7 @@ func MakePost(writer http.ResponseWriter, request *http.Request) {
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errEv.Err(err).Caller().Str("boardDir", postBoard.Dir).Msg("Unable to check post cooldown")
|
errEv.Err(err).Caller().Str("boardDir", postBoard.Dir).Msg("Unable to check post cooldown")
|
||||||
server.ServeError(writer, "Error checking post cooldown: "+err.Error(), wantsJSON, map[string]interface{}{
|
server.ServeError(writer, "Error checking post cooldown: "+err.Error(), wantsJSON, map[string]any{
|
||||||
"boardDir": postBoard.Dir,
|
"boardDir": postBoard.Dir,
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
|
@ -298,8 +301,7 @@ func MakePost(writer http.ResponseWriter, request *http.Request) {
|
||||||
|
|
||||||
captchaSuccess, err := submitCaptchaResponse(request)
|
captchaSuccess, err := submitCaptchaResponse(request)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errEv.Err(err).
|
errEv.Err(err).Caller().Send()
|
||||||
Caller().Send()
|
|
||||||
server.ServeError(writer, "Error submitting captcha response:"+err.Error(), wantsJSON, nil)
|
server.ServeError(writer, "Error submitting captcha response:"+err.Error(), wantsJSON, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -379,7 +381,7 @@ func MakePost(writer http.ResponseWriter, request *http.Request) {
|
||||||
os.Remove(thumbPath)
|
os.Remove(thumbPath)
|
||||||
os.Remove(catalogThumbPath)
|
os.Remove(catalogThumbPath)
|
||||||
post.Delete()
|
post.Delete()
|
||||||
server.ServeError(writer, "Unable to attach upload", wantsJSON, map[string]interface{}{
|
server.ServeError(writer, "Unable to attach upload", wantsJSON, map[string]any{
|
||||||
"filename": upload.OriginalFilename,
|
"filename": upload.OriginalFilename,
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
|
@ -416,7 +418,7 @@ func MakePost(writer http.ResponseWriter, request *http.Request) {
|
||||||
topPost, _ = post.TopPostID()
|
topPost, _ = post.TopPostID()
|
||||||
}
|
}
|
||||||
writer.Header().Set("Content-Type", "application/json")
|
writer.Header().Set("Content-Type", "application/json")
|
||||||
json.NewEncoder(writer).Encode(map[string]interface{}{
|
json.NewEncoder(writer).Encode(map[string]any{
|
||||||
"time": post.CreatedOn,
|
"time": post.CreatedOn,
|
||||||
"id": post.ID,
|
"id": post.ID,
|
||||||
"thread": config.WebPath(postBoard.Dir, "/res/", strconv.Itoa(topPost)+".html"),
|
"thread": config.WebPath(postBoard.Dir, "/res/", strconv.Itoa(topPost)+".html"),
|
||||||
|
|
|
@ -7,19 +7,21 @@ import (
|
||||||
|
|
||||||
"github.com/gochan-org/gochan/pkg/config"
|
"github.com/gochan-org/gochan/pkg/config"
|
||||||
"github.com/gochan-org/gochan/pkg/gcutil"
|
"github.com/gochan-org/gochan/pkg/gcutil"
|
||||||
|
"github.com/rs/zerolog"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ValidReferer checks to make sure that the incoming request is from the same domain (or if debug mode is enabled)
|
// ValidReferer checks to make sure that the incoming request is from the same domain (or if debug mode is enabled)
|
||||||
func ValidReferer(request *http.Request) bool {
|
func ValidReferer(request *http.Request, errEv ...*zerolog.Event) bool {
|
||||||
if config.VerboseMode() {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
referer := request.Referer()
|
referer := request.Referer()
|
||||||
rURL, err := url.ParseRequestURI(referer)
|
rURL, err := url.ParseRequestURI(referer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
gcutil.Logger().Err(err).
|
var ev *zerolog.Event
|
||||||
Str("referer", referer).
|
if len(errEv) == 1 {
|
||||||
Msg("Error parsing referer URL")
|
ev = gcutil.LogError(err).Caller()
|
||||||
|
} else {
|
||||||
|
ev = errEv[0].Err(err).Caller()
|
||||||
|
}
|
||||||
|
ev.Str("referer", referer).Msg("Error parsing referer URL")
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
return strings.Index(rURL.Path, config.GetSystemCriticalConfig().WebRoot) == 0
|
return strings.Index(rURL.Path, config.GetSystemCriticalConfig().WebRoot) == 0
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue