mirror of
https://github.com/Eggbertx/gochan.git
synced 2025-08-02 15:06:23 -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)
|
||||
if err != nil {
|
||||
errEv.Err(err).
|
||||
errEv.Err(err).Caller().
|
||||
Int("postid", postid).
|
||||
Msg("Unable to find post")
|
||||
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)
|
||||
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())
|
||||
gcutil.LogFatal().
|
||||
gcutil.LogFatal().Err(err).Caller().
|
||||
Str("staff", "add").
|
||||
Str("source", "commandLine").
|
||||
Str("username", arr[0]).
|
||||
Err(err).
|
||||
Msg("Failed creating new staff account")
|
||||
}
|
||||
gcutil.LogInfo().
|
||||
|
|
|
@ -65,8 +65,8 @@ func BuildBoardPages(board *gcsql.Board) error {
|
|||
|
||||
threads, err := board.GetThreads(true, true, true)
|
||||
if err != nil {
|
||||
errEv.Err(err).
|
||||
Caller().Msg("Failed getting board threads")
|
||||
errEv.Err(err).Caller().
|
||||
Msg("Failed getting board threads")
|
||||
return fmt.Errorf("error getting threads for /%s/: %s", board.Dir, err.Error())
|
||||
}
|
||||
topPosts, err := getBoardTopPosts(board.ID)
|
||||
|
@ -89,8 +89,8 @@ func BuildBoardPages(board *gcsql.Board) error {
|
|||
}
|
||||
errEv.Int("threadID", thread.ID)
|
||||
if catalogThread.Images, err = thread.GetReplyFileCount(); err != nil {
|
||||
errEv.Err(err).
|
||||
Caller().Msg("Failed getting file count")
|
||||
errEv.Err(err).Caller().
|
||||
Msg("Failed getting file count")
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -105,15 +105,13 @@ func BuildBoardPages(board *gcsql.Board) error {
|
|||
}
|
||||
catalogThread.Replies, err = thread.GetReplyCount()
|
||||
if err != nil {
|
||||
errEv.Err(err).
|
||||
Caller().Msg("Failed getting reply count")
|
||||
errEv.Err(err).Caller().Msg("Failed getting reply count")
|
||||
return errors.New("Error getting reply count: " + err.Error())
|
||||
}
|
||||
|
||||
catalogThread.Posts, err = getThreadPosts(&thread)
|
||||
if err != nil {
|
||||
errEv.Err(err).
|
||||
Caller().Msg("Failed getting replies")
|
||||
errEv.Err(err).Caller().Msg("Failed getting replies")
|
||||
return errors.New("Failed getting replies: " + err.Error())
|
||||
}
|
||||
if len(catalogThread.Posts) == 0 {
|
||||
|
@ -127,8 +125,7 @@ func BuildBoardPages(board *gcsql.Board) error {
|
|||
}
|
||||
catalogThread.uploads, err = thread.GetUploads()
|
||||
if err != nil {
|
||||
errEv.Err(err).
|
||||
Caller().Msg("Failed getting thread uploads")
|
||||
errEv.Err(err).Caller().Msg("Failed getting thread uploads")
|
||||
return errors.New("Failed getting thread uploads: " + err.Error())
|
||||
}
|
||||
|
||||
|
@ -186,9 +183,9 @@ func BuildBoardPages(board *gcsql.Board) error {
|
|||
"useCaptcha": captchaCfg.UseCaptcha(),
|
||||
"captcha": captchaCfg,
|
||||
}, boardPageFile, "text/html"); err != nil {
|
||||
errEv.Err(err).
|
||||
errEv.Err(err).Caller().
|
||||
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 boardPageFile.Close()
|
||||
|
@ -272,16 +269,9 @@ func BuildBoardPages(board *gcsql.Board) error {
|
|||
catalogPages.pages = append(catalogPages.pages, page)
|
||||
}
|
||||
|
||||
var catalogJSON []byte
|
||||
if catalogJSON, err = json.Marshal(catalog.pages); err != nil {
|
||||
errEv.Err(err).
|
||||
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())
|
||||
if err = json.NewEncoder(catalogJSONFile).Encode(catalog.pages); err != nil {
|
||||
errEv.Err(err).Caller().Msg("Unable to write catalog JSON to file")
|
||||
return errors.New("failed to marshal to catalog JSON")
|
||||
}
|
||||
return catalogJSONFile.Close()
|
||||
}
|
||||
|
@ -415,21 +405,18 @@ func buildBoard(board *gcsql.Board, force bool) error {
|
|||
thumbInfo, _ := os.Stat(thumbPath)
|
||||
if dirInfo != nil {
|
||||
if !force {
|
||||
errEv.Err(os.ErrExist).
|
||||
Str("dirPath", dirPath).
|
||||
Caller().Send()
|
||||
errEv.Err(os.ErrExist).Caller().
|
||||
Str("dirPath", dirPath).Send()
|
||||
return fmt.Errorf(pathExistsStr, dirPath)
|
||||
}
|
||||
if !dirInfo.IsDir() {
|
||||
errEv.Err(os.ErrExist).
|
||||
Str("dirPath", dirPath).
|
||||
Caller().Send()
|
||||
errEv.Err(os.ErrExist).Caller().
|
||||
Str("dirPath", dirPath).Send()
|
||||
return fmt.Errorf(dirIsAFileStr, dirPath)
|
||||
}
|
||||
} else if err = os.Mkdir(dirPath, config.GC_DIR_MODE); err != nil {
|
||||
errEv.Err(os.ErrExist).
|
||||
Str("dirPath", dirPath).
|
||||
Caller().Send()
|
||||
errEv.Err(os.ErrExist).Caller().
|
||||
Str("dirPath", dirPath).Send()
|
||||
return fmt.Errorf(genericErrStr, dirPath, err.Error())
|
||||
}
|
||||
if err = config.TakeOwnership(dirPath); err != nil {
|
||||
|
@ -441,23 +428,20 @@ func buildBoard(board *gcsql.Board, force bool) error {
|
|||
if resInfo != nil {
|
||||
if !force {
|
||||
err = fmt.Errorf(pathExistsStr, resPath)
|
||||
errEv.Err(err).
|
||||
Str("resPath", resPath).
|
||||
Caller().Send()
|
||||
errEv.Err(err).Caller().
|
||||
Str("resPath", resPath).Send()
|
||||
return err
|
||||
}
|
||||
if !resInfo.IsDir() {
|
||||
err = fmt.Errorf(dirIsAFileStr, resPath)
|
||||
errEv.Err(err).
|
||||
Str("resPath", resPath).
|
||||
Caller().Send()
|
||||
errEv.Err(err).Caller().
|
||||
Str("resPath", resPath).Send()
|
||||
return err
|
||||
}
|
||||
} else if err = os.Mkdir(resPath, config.GC_DIR_MODE); err != nil {
|
||||
err = fmt.Errorf(genericErrStr, resPath, err.Error())
|
||||
errEv.Err(err).
|
||||
Str("resPath", resPath).
|
||||
Caller().Send()
|
||||
errEv.Err(err).Caller().
|
||||
Str("resPath", resPath).Send()
|
||||
return fmt.Errorf(genericErrStr, resPath, err.Error())
|
||||
}
|
||||
if err = config.TakeOwnership(resPath); err != nil {
|
||||
|
@ -469,23 +453,20 @@ func buildBoard(board *gcsql.Board, force bool) error {
|
|||
if srcInfo != nil {
|
||||
if !force {
|
||||
err = fmt.Errorf(pathExistsStr, srcPath)
|
||||
errEv.Err(err).
|
||||
Str("srcPath", srcPath).
|
||||
Caller().Send()
|
||||
errEv.Err(err).Caller().
|
||||
Str("srcPath", srcPath).Send()
|
||||
return err
|
||||
}
|
||||
if !srcInfo.IsDir() {
|
||||
err = fmt.Errorf(dirIsAFileStr, srcPath)
|
||||
errEv.Err(err).
|
||||
Str("srcPath", srcPath).
|
||||
Caller().Send()
|
||||
errEv.Err(err).Caller().
|
||||
Str("srcPath", srcPath).Send()
|
||||
return err
|
||||
}
|
||||
} else if err = os.Mkdir(srcPath, config.GC_DIR_MODE); err != nil {
|
||||
err = fmt.Errorf(genericErrStr, srcPath, err.Error())
|
||||
errEv.Err(err).
|
||||
Str("srcPath", srcPath).
|
||||
Caller().Send()
|
||||
errEv.Err(err).Caller().
|
||||
Str("srcPath", srcPath).Send()
|
||||
return err
|
||||
}
|
||||
if config.TakeOwnership(srcPath); err != nil {
|
||||
|
|
|
@ -86,8 +86,7 @@ func BuildCatalog(boardID int) error {
|
|||
|
||||
board, err := gcsql.GetBoardFromID(boardID)
|
||||
if err != nil {
|
||||
errEv.Err(err).
|
||||
Caller().Msg("Unable to get board information")
|
||||
errEv.Err(err).Caller().Msg("Unable to get board information")
|
||||
return err
|
||||
}
|
||||
errEv.Str("boardDir", board.Dir)
|
||||
|
@ -101,13 +100,13 @@ func BuildCatalog(boardID int) error {
|
|||
|
||||
if err = config.TakeOwnershipOfFile(catalogFile); err != nil {
|
||||
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)
|
||||
if err != nil {
|
||||
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)
|
||||
|
||||
|
@ -119,7 +118,7 @@ func BuildCatalog(boardID int) error {
|
|||
"threads": threadOPs,
|
||||
}, catalogFile, "text/html"); err != nil {
|
||||
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()
|
||||
}
|
||||
|
|
|
@ -61,22 +61,20 @@ func BuildThreadPages(op *gcsql.Post) error {
|
|||
|
||||
board, err := op.GetBoard()
|
||||
if err != nil {
|
||||
errEv.Err(err).
|
||||
Caller().Msg("failed building thread")
|
||||
return errors.New("failed building thread: " + err.Error())
|
||||
errEv.Err(err).Caller().Msg("failed building thread")
|
||||
return errors.New("failed building thread")
|
||||
}
|
||||
errEv.Str("boardDir", board.Dir)
|
||||
thread, err := gcsql.GetThread(op.ThreadID)
|
||||
if err != nil {
|
||||
errEv.Err(err).
|
||||
Caller().Msg("Unable to get thread info")
|
||||
return errors.New("unable to get thread info: " + err.Error())
|
||||
errEv.Err(err).Caller().Msg("Unable to get thread info")
|
||||
return errors.New("unable to get thread info")
|
||||
}
|
||||
|
||||
posts, err := getThreadPosts(thread)
|
||||
if err != nil {
|
||||
errEv.Err(err).Caller().Send()
|
||||
return errors.New("failed building thread: " + err.Error())
|
||||
return errors.New("failed getting thread posts")
|
||||
}
|
||||
criticalCfg := config.GetSystemCriticalConfig()
|
||||
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)
|
||||
if err != nil {
|
||||
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 {
|
||||
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["posts"] = posts
|
||||
threadJSON, err := json.Marshal(threadMap)
|
||||
if err != nil {
|
||||
gcutil.LogError(err).Send()
|
||||
return errors.New("failed to marshal to JSON: " + err.Error())
|
||||
}
|
||||
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())
|
||||
if err = json.NewEncoder(threadJSONFile).Encode(threadMap); err != nil {
|
||||
errEv.Err(err).Caller().
|
||||
Msg("Unable to write thread JSON file")
|
||||
return fmt.Errorf("failed writing /%s/res/%d.json", board.Dir, posts[0].ID)
|
||||
}
|
||||
return threadJSONFile.Close()
|
||||
}
|
||||
|
|
|
@ -178,9 +178,9 @@ func boardsCallback(_ http.ResponseWriter, request *http.Request, staff *gcsql.S
|
|||
return "", err
|
||||
}
|
||||
if board, err = gcsql.GetBoardFromID(boardID); err != nil {
|
||||
errEv.Err(err).
|
||||
errEv.Err(err).Caller().
|
||||
Int("boardID", boardID).
|
||||
Caller().Msg("Unable to get board info")
|
||||
Msg("Unable to get board info")
|
||||
return "", err
|
||||
}
|
||||
case "modify":
|
||||
|
@ -330,25 +330,24 @@ func cleanupCallback(_ http.ResponseWriter, request *http.Request, _ *gcsql.Staf
|
|||
if request.FormValue("run") == "Run Cleanup" {
|
||||
outputStr += "Removing deleted posts from the database.<hr />"
|
||||
if err = gcsql.PermanentlyRemoveDeletedPosts(); err != nil {
|
||||
errEv.Err(err).
|
||||
Str("cleanup", "removeDeletedPosts").
|
||||
Caller().Send()
|
||||
err = errors.New("Error removing deleted posts from database: " + err.Error())
|
||||
errEv.Err(err).Caller().
|
||||
Str("cleanup", "removeDeletedPosts").Send()
|
||||
err = errors.New("unable to remove deleted posts from database")
|
||||
return outputStr + "<tr><td>" + err.Error() + "</td></tr></table>", err
|
||||
}
|
||||
|
||||
outputStr += "Optimizing all tables in database.<hr />"
|
||||
err = gcsql.OptimizeDatabase()
|
||||
if err != nil {
|
||||
errEv.Err(err).
|
||||
Str("sql", "optimization").
|
||||
Caller().Send()
|
||||
errEv.Err(err).Caller().
|
||||
Str("sql", "optimization").Send()
|
||||
err = errors.New("Error optimizing SQL tables: " + err.Error())
|
||||
return outputStr + "<tr><td>" + err.Error() + "</td></tr></table>", err
|
||||
}
|
||||
outputStr += "Cleanup finished"
|
||||
} 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" />` +
|
||||
`</form>`
|
||||
}
|
||||
|
|
|
@ -141,13 +141,12 @@ func appealsCallback(_ http.ResponseWriter, request *http.Request, staff *gcsql.
|
|||
// approving an appeal
|
||||
approveID, err := strconv.Atoi(approveStr)
|
||||
if err != nil {
|
||||
errEv.Err(err).
|
||||
Str("approveStr", approveStr).Caller().Send()
|
||||
errEv.Err(err).Caller().
|
||||
Str("approveStr", approveStr).Send()
|
||||
}
|
||||
if err = gcsql.ApproveAppeal(approveID, staff.ID); err != nil {
|
||||
errEv.Err(err).
|
||||
Int("approveAppeal", approveID).
|
||||
Caller().Send()
|
||||
errEv.Err(err).Caller().
|
||||
Int("approveAppeal", approveID).Send()
|
||||
return "", err
|
||||
}
|
||||
}
|
||||
|
@ -182,9 +181,8 @@ func fileBansCallback(_ http.ResponseWriter, request *http.Request, staff *gcsql
|
|||
if boardidStr != "" {
|
||||
boardid, err = strconv.Atoi(boardidStr)
|
||||
if err != nil {
|
||||
errEv.Err(err).
|
||||
Str("boardid", boardidStr).
|
||||
Caller().Send()
|
||||
errEv.Err(err).Caller().
|
||||
Str("boardid", boardidStr).Send()
|
||||
return "", err
|
||||
}
|
||||
}
|
||||
|
@ -199,9 +197,8 @@ func fileBansCallback(_ http.ResponseWriter, request *http.Request, staff *gcsql
|
|||
_, err = regexp.Compile(filename)
|
||||
if err != nil {
|
||||
// invalid regular expression
|
||||
errEv.Err(err).
|
||||
Str("regex", filename).
|
||||
Caller().Send()
|
||||
errEv.Err(err).Caller().
|
||||
Str("regex", filename).Send()
|
||||
return "", err
|
||||
}
|
||||
}
|
||||
|
@ -273,15 +270,13 @@ func fileBansCallback(_ http.ResponseWriter, request *http.Request, staff *gcsql
|
|||
// user requested a checksum ban ID to delete
|
||||
delChecksumBanID, err := strconv.Atoi(delChecksumBanIDStr)
|
||||
if err != nil {
|
||||
errEv.Err(err).
|
||||
Str("deleteChecksumBanIDStr", delChecksumBanIDStr).
|
||||
Caller().Send()
|
||||
errEv.Err(err).Caller().
|
||||
Str("deleteChecksumBanIDStr", delChecksumBanIDStr).Send()
|
||||
return "", err
|
||||
}
|
||||
if err = (gcsql.FileBan{ID: delChecksumBanID}).Deactivate(staff.ID); err != nil {
|
||||
errEv.Err(err).
|
||||
Int("deleteChecksumBanID", delChecksumBanID).
|
||||
Caller().Send()
|
||||
errEv.Err(err).Caller().
|
||||
Int("deleteChecksumBanID", delChecksumBanID).Send()
|
||||
return "", err
|
||||
}
|
||||
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
|
||||
if filterBoardIDstr != "" {
|
||||
if filterBoardID, err = strconv.Atoi(filterBoardIDstr); err != nil {
|
||||
errEv.Err(err).
|
||||
Str("filterboardid", filterBoardIDstr).Caller().Send()
|
||||
errEv.Err(err).Caller().
|
||||
Str("filterboardid", filterBoardIDstr).Send()
|
||||
return "", err
|
||||
}
|
||||
}
|
||||
|
@ -337,15 +332,14 @@ func nameBansCallback(_ http.ResponseWriter, request *http.Request, staff *gcsql
|
|||
if deleteIDstr != "" {
|
||||
deleteID, err := strconv.Atoi(deleteIDstr)
|
||||
if err != nil {
|
||||
errEv.Err(err).
|
||||
Str("delStr", deleteIDstr).
|
||||
Caller().Send()
|
||||
errEv.Err(err).Caller().
|
||||
Str("delStr", deleteIDstr).Send()
|
||||
return "", err
|
||||
}
|
||||
if err = gcsql.DeleteNameBan(deleteID); err != nil {
|
||||
errEv.Err(err).
|
||||
errEv.Err(err).Caller().
|
||||
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())
|
||||
}
|
||||
}
|
||||
|
@ -367,9 +361,9 @@ func nameBansCallback(_ http.ResponseWriter, request *http.Request, staff *gcsql
|
|||
}
|
||||
isRegex := request.FormValue("isregex") == "on"
|
||||
if _, err = gcsql.NewNameBan(name, isRegex, boardID, staff.ID, request.FormValue("staffnote")); err != nil {
|
||||
errEv.Err(err).
|
||||
errEv.Err(err).Caller().
|
||||
Str("name", name).
|
||||
Int("boardID", boardID)
|
||||
Int("boardID", boardID).Send()
|
||||
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)
|
||||
if err != nil {
|
||||
errEv.Err(err).
|
||||
Int("postID", dismissID).
|
||||
Caller().Send()
|
||||
errEv.Err(err).Caller().
|
||||
Int("postID", dismissID).Send()
|
||||
return nil, err
|
||||
}
|
||||
if !found {
|
||||
|
|
|
@ -49,9 +49,9 @@ func ipBanFromRequest(ban *gcsql.IPBan, request *http.Request, infoEv *zerolog.E
|
|||
durationStr := request.FormValue("duration")
|
||||
duration, err := durationutil.ParseLongerDuration(durationStr)
|
||||
if err != nil {
|
||||
errEv.Err(err).
|
||||
errEv.Err(err).Caller().
|
||||
Str("duration", durationStr).
|
||||
Caller().Msg("Invalid duration")
|
||||
Msg("Invalid duration")
|
||||
return err
|
||||
}
|
||||
ban.ExpiresAt = now.Add(duration)
|
||||
|
|
|
@ -60,9 +60,8 @@ func CallManageFunction(writer http.ResponseWriter, request *http.Request) {
|
|||
staff = &gcsql.Staff{}
|
||||
err = nil
|
||||
} else if err != nil && err != sql.ErrNoRows {
|
||||
errEv.Err(err).
|
||||
Str("request", "getCurrentFullStaff").
|
||||
Caller().Send()
|
||||
errEv.Err(err).Caller().
|
||||
Str("request", "getCurrentFullStaff").Send()
|
||||
server.ServeError(writer, "Error getting staff info from request: "+err.Error(), wantsJSON, nil)
|
||||
return
|
||||
}
|
||||
|
|
|
@ -46,9 +46,9 @@ func createSession(key, username, password string, request *http.Request, writer
|
|||
staff, err := gcsql.GetStaffByUsername(username, true)
|
||||
if err != nil {
|
||||
if err != sql.ErrNoRows {
|
||||
errEv.Err(err).
|
||||
errEv.Err(err).Caller().
|
||||
Str("remoteAddr", request.RemoteAddr).
|
||||
Caller().Msg("Unrecognized username")
|
||||
Msg("Unrecognized username")
|
||||
}
|
||||
return ErrBadCredentials
|
||||
}
|
||||
|
@ -56,8 +56,7 @@ func createSession(key, username, password string, request *http.Request, writer
|
|||
err = bcrypt.CompareHashAndPassword([]byte(staff.PasswordChecksum), []byte(password))
|
||||
if err == bcrypt.ErrMismatchedHashAndPassword {
|
||||
// password mismatch
|
||||
errEv.Caller().
|
||||
Msg("Invalid password")
|
||||
errEv.Caller().Msg("Invalid password")
|
||||
return ErrBadCredentials
|
||||
}
|
||||
|
||||
|
|
|
@ -110,8 +110,8 @@ func handleAppeal(writer http.ResponseWriter, request *http.Request, infoEv *zer
|
|||
}
|
||||
banID, err := strconv.Atoi(banIDstr)
|
||||
if err != nil {
|
||||
errEv.Err(err).
|
||||
Str("banIDstr", banIDstr).Caller().Send()
|
||||
errEv.Err(err).Caller().
|
||||
Str("banIDstr", banIDstr).Send()
|
||||
server.ServeErrorPage(writer, fmt.Sprintf("Invalid banid value %q", banIDstr))
|
||||
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))
|
||||
}
|
||||
if err = ban.Appeal(appealMsg); err != nil {
|
||||
errEv.Err(err).
|
||||
errEv.Err(err).Caller().
|
||||
Str("appealMsg", appealMsg).
|
||||
Caller().Msg("Unable to submit appeal")
|
||||
Msg("Unable to submit appeal")
|
||||
server.ServeErrorPage(writer, "Unable to submit appeal")
|
||||
return
|
||||
}
|
||||
|
|
|
@ -81,6 +81,22 @@ func attachFlag(request *http.Request, post *gcsql.Post, board string, errEv *ze
|
|||
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
|
||||
func MakePost(writer http.ResponseWriter, request *http.Request) {
|
||||
request.ParseMultipartForm(maxFormBytes)
|
||||
|
@ -91,19 +107,7 @@ func MakePost(writer http.ResponseWriter, request *http.Request) {
|
|||
Str("IP", ip)
|
||||
infoEv := gcutil.LogInfo().
|
||||
Str("IP", ip)
|
||||
defer func() {
|
||||
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()
|
||||
}()
|
||||
defer handleRecover(writer, wantsJSON, infoEv, errEv)
|
||||
|
||||
var formName string
|
||||
var formEmail string
|
||||
|
@ -132,20 +136,19 @@ func MakePost(writer http.ResponseWriter, request *http.Request) {
|
|||
if threadidStr != "" {
|
||||
// post is a reply
|
||||
if opID, err = strconv.Atoi(threadidStr); err != nil {
|
||||
errEv.Err(err).
|
||||
errEv.Err(err).Caller().
|
||||
Str("opIDstr", threadidStr).
|
||||
Caller().Msg("Invalid threadid value")
|
||||
server.ServeError(writer, "Invalid form data (invalid threadid)", wantsJSON, map[string]interface{}{
|
||||
Msg("Invalid threadid value")
|
||||
server.ServeError(writer, "Invalid form data (invalid threadid)", wantsJSON, map[string]any{
|
||||
"threadid": threadidStr,
|
||||
})
|
||||
return
|
||||
}
|
||||
if opID > 0 {
|
||||
if post.ThreadID, err = gcsql.GetTopPostThreadID(opID); err != nil {
|
||||
errEv.Err(err).
|
||||
Int("opID", opID).
|
||||
Caller().Send()
|
||||
server.ServeError(writer, err.Error(), wantsJSON, map[string]interface{}{
|
||||
errEv.Err(err).Caller().
|
||||
Int("opID", opID).Send()
|
||||
server.ServeError(writer, err.Error(), wantsJSON, map[string]any{
|
||||
"opID": opID,
|
||||
})
|
||||
}
|
||||
|
@ -156,7 +159,7 @@ func MakePost(writer http.ResponseWriter, request *http.Request) {
|
|||
boardID, err := strconv.Atoi(boardidStr)
|
||||
if err != nil {
|
||||
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,
|
||||
})
|
||||
return
|
||||
|
@ -166,7 +169,7 @@ func MakePost(writer http.ResponseWriter, request *http.Request) {
|
|||
errEv.Err(err).Caller().
|
||||
Int("boardid", boardID).
|
||||
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,
|
||||
})
|
||||
return
|
||||
|
@ -202,7 +205,7 @@ func MakePost(writer http.ResponseWriter, request *http.Request) {
|
|||
errEv.
|
||||
Int("messageLength", len(post.MessageRaw)).
|
||||
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),
|
||||
"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 {
|
||||
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,
|
||||
})
|
||||
return
|
||||
|
@ -278,7 +281,7 @@ func MakePost(writer http.ResponseWriter, request *http.Request) {
|
|||
}
|
||||
if err != nil {
|
||||
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,
|
||||
})
|
||||
return
|
||||
|
@ -298,8 +301,7 @@ func MakePost(writer http.ResponseWriter, request *http.Request) {
|
|||
|
||||
captchaSuccess, err := submitCaptchaResponse(request)
|
||||
if err != nil {
|
||||
errEv.Err(err).
|
||||
Caller().Send()
|
||||
errEv.Err(err).Caller().Send()
|
||||
server.ServeError(writer, "Error submitting captcha response:"+err.Error(), wantsJSON, nil)
|
||||
return
|
||||
}
|
||||
|
@ -379,7 +381,7 @@ func MakePost(writer http.ResponseWriter, request *http.Request) {
|
|||
os.Remove(thumbPath)
|
||||
os.Remove(catalogThumbPath)
|
||||
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,
|
||||
})
|
||||
return
|
||||
|
@ -416,7 +418,7 @@ func MakePost(writer http.ResponseWriter, request *http.Request) {
|
|||
topPost, _ = post.TopPostID()
|
||||
}
|
||||
writer.Header().Set("Content-Type", "application/json")
|
||||
json.NewEncoder(writer).Encode(map[string]interface{}{
|
||||
json.NewEncoder(writer).Encode(map[string]any{
|
||||
"time": post.CreatedOn,
|
||||
"id": post.ID,
|
||||
"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/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)
|
||||
func ValidReferer(request *http.Request) bool {
|
||||
if config.VerboseMode() {
|
||||
return true
|
||||
}
|
||||
func ValidReferer(request *http.Request, errEv ...*zerolog.Event) bool {
|
||||
referer := request.Referer()
|
||||
rURL, err := url.ParseRequestURI(referer)
|
||||
if err != nil {
|
||||
gcutil.Logger().Err(err).
|
||||
Str("referer", referer).
|
||||
Msg("Error parsing referer URL")
|
||||
var ev *zerolog.Event
|
||||
if len(errEv) == 1 {
|
||||
ev = gcutil.LogError(err).Caller()
|
||||
} else {
|
||||
ev = errEv[0].Err(err).Caller()
|
||||
}
|
||||
ev.Str("referer", referer).Msg("Error parsing referer URL")
|
||||
return false
|
||||
}
|
||||
return strings.Index(rURL.Path, config.GetSystemCriticalConfig().WebRoot) == 0
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue