1
0
Fork 0
mirror of https://github.com/Eggbertx/gochan.git synced 2025-08-03 11:46:22 -07:00

Refactored some more

This commit is contained in:
comraderat 2020-04-16 17:15:18 +02:00
parent 58a0d5364e
commit 16e31891f3
2 changed files with 57 additions and 48 deletions

View file

@ -82,28 +82,29 @@ func callManageFunction(writer http.ResponseWriter, request *http.Request) {
writer.Write(managePageBuffer.Bytes()) writer.Write(managePageBuffer.Bytes())
} }
func getCurrentStaff(request *http.Request) (string, error) { func getCurrentStaff(request *http.Request) (string, error) { //TODO after refactor, check if still used
sessionCookie, err := request.Cookie("sessiondata") sessionCookie, err := request.Cookie("sessiondata")
if err != nil { if err != nil {
return "", nil return "", err
} }
var data string var data string
data, err = GetStaffData(sessionCookie.Value) name, err = GetStaffName(sessionCookie.Value)
if err == nil { if err == nil {
return "", err return "", err
} }
return data, nil return name, nil
}
func getCurrentFullStaff(request *http.Request) (*Staff, error) {
sessionCookie, err := request.Cookie("sessiondata")
if err != nil {
return "", err
}
return GetStaffBySession(sessionCookie.Value)
} }
func getStaffRank(request *http.Request) int { func getStaffRank(request *http.Request) int {
staffname, err := getCurrentStaff(request) staff, err := getCurrentFullStaff(request)
if err == sql.ErrNoRows {
return 0
} else if err != nil {
gclog.Print(lErrorLog, "Error getting current staff: ", err.Error())
return 0
}
staff, err := getStaff(staffname)
if err != nil { if err != nil {
gclog.Print(lErrorLog, "Error getting current staff: ", err.Error()) gclog.Print(lErrorLog, "Error getting current staff: ", err.Error())
return 0 return 0
@ -121,7 +122,7 @@ func createSession(key string, username string, password string, request *http.R
gclog.Print(lStaffLog, "Rejected login from possible spambot @ "+request.RemoteAddr) gclog.Print(lStaffLog, "Rejected login from possible spambot @ "+request.RemoteAddr)
return 2 return 2
} }
staff, err := getStaff(username) staff, err := getStaffByName(username)
if err != nil { if err != nil {
gclog.Print(lErrorLog, err.Error()) gclog.Print(lErrorLog, err.Error())
return 1 return 1
@ -439,34 +440,24 @@ var manageFunctions = map[string]ManageFunction{
Callback: func(writer http.ResponseWriter, request *http.Request) (html string) { Callback: func(writer http.ResponseWriter, request *http.Request) (html string) {
html = "<h1 class=\"manage-header\">Announcements</h1><br />" html = "<h1 class=\"manage-header\">Announcements</h1><br />"
rows, err := querySQL("SELECT subject,message,poster,timestamp FROM DBPREFIXannouncements ORDER BY id DESC") //get all announcements to announcement list
defer closeHandle(rows) //loop to html if exist, no announcement if empty
if err != nil { announcements, err := GetAllAccouncements()
return html + gclog.Print(lErrorLog, "Error getting announcements: ", err.Error()) if len(announcements) == 0 {
} html += "No announcements"
iterations := 0 } else {
for rows.Next() { for _, announcement := range announcements {
announcement := new(Announcement)
err = rows.Scan(&announcement.Subject, &announcement.Message, &announcement.Poster, &announcement.Timestamp)
if err != nil {
html += gclog.Print(lErrorLog, "Error getting announcements: ", err.Error())
} else {
html += "<div class=\"section-block\">\n" + html += "<div class=\"section-block\">\n" +
"<div class=\"section-title-block\"><b>" + announcement.Subject + "</b> by " + announcement.Poster + " at " + humanReadableTime(announcement.Timestamp) + "</div>\n" + "<div class=\"section-title-block\"><b>" + announcement.Subject + "</b> by " + announcement.Poster + " at " + humanReadableTime(announcement.Timestamp) + "</div>\n" +
"<div class=\"section-body\">" + announcement.Message + "\n</div></div>\n" "<div class=\"section-body\">" + announcement.Message + "\n</div></div>\n"
} }
iterations++
} }
return html
if iterations == 0 {
html += "No announcements"
}
return
}}, }},
"bans": { "bans": {
Title: "Bans", Title: "Bans",
Permissions: 1, Permissions: 1,
Callback: func(writer http.ResponseWriter, request *http.Request) (pageHTML string) { Callback: func(writer http.ResponseWriter, request *http.Request) (pageHTML string) { //TODO whatever this does idk man
var post Post var post Post
if request.FormValue("do") == "add" { if request.FormValue("do") == "add" {
ip := net.ParseIP(request.FormValue("ip")) ip := net.ParseIP(request.FormValue("ip"))
@ -498,7 +489,7 @@ var manageFunctions = map[string]ManageFunction{
boards := request.FormValue("boards") boards := request.FormValue("boards")
reason := html.EscapeString(request.FormValue("reason")) reason := html.EscapeString(request.FormValue("reason"))
staffNote := html.EscapeString(request.FormValue("staffnote")) staffNote := html.EscapeString(request.FormValue("staffnote"))
currentStaff, _ := getCurrentStaff(request) //TODO start here refactor currentStaff, _ := GetStaff(request) //TODO start here refactor
sqlStr := "INSERT INTO DBPREFIXbanlist (ip,name,name_is_regex,filename,file_checksum,boards,staff,expires,permaban,reason,type,staff_note) VALUES(" sqlStr := "INSERT INTO DBPREFIXbanlist (ip,name,name_is_regex,filename,file_checksum,boards,staff,expires,permaban,reason,type,staff_note) VALUES("
for i := 1; i <= 12; i++ { for i := 1; i <= 12; i++ {
sqlStr += "?" sqlStr += "?"
@ -561,24 +552,12 @@ var manageFunctions = map[string]ManageFunction{
"getstaffjquery": { "getstaffjquery": {
Permissions: 0, Permissions: 0,
Callback: func(writer http.ResponseWriter, request *http.Request) (html string) { Callback: func(writer http.ResponseWriter, request *http.Request) (html string) {
current_staff, err := getCurrentStaff(request) staff, err := getCurrentFullStaff(request)
if err != nil { if err != nil {
html = "nobody;0;" html = "nobody;0;"
return return
} }
staff_rank := getStaffRank(request) html = current_staff.Username + ";" + strconv.Itoa(staff.Rank) + ";" + staff.Boards
if staff_rank == 0 {
html = "nobody;0;"
return
}
staff := new(Staff)
if err := queryRowSQL("SELECT rank,boards FROM DBPREFIXstaff WHERE username = ?",
[]interface{}{current_staff},
[]interface{}{&staff.Rank, &staff.Boards},
); err != nil {
return html + gclog.Print(lErrorLog, "Error getting staff list: ", err.Error())
}
html = current_staff + ";" + strconv.Itoa(staff.Rank) + ";" + staff.Boards
return return
}}, }},
"boards": { "boards": {

View file

@ -166,7 +166,22 @@ func GetReplyFileCount(postID int) (fileCount int, err error) {
func GetStaffData(staffName string) (data string, err error) { func GetStaffData(staffName string) (data string, err error) {
//("SELECT sessiondata FROM DBPREFIXsessions WHERE name = ?", //("SELECT sessiondata FROM DBPREFIXsessions WHERE name = ?",
} }
func GetStaff(name string) (*Staff, error) { //TODO not upt to date with old db yet
// GetStaffName returns the name associated with a session
func GetStaffName(session string) (name string, err error) {
//after refactor, check if still used
}
func GetStaffBySession(session string) (*Staff, error) { //TODO not upt to date with old db yet
staff := new(Staff)
err := queryRowSQL("SELECT * FROM DBPREFIXstaff WHERE username = ?",
[]interface{}{name},
[]interface{}{&staff.ID, &staff.Username, &staff.PasswordChecksum, &staff.Rank, &staff.Boards, &staff.AddedOn, &staff.LastActive},
)
return staff, err
}
func GetStaffByName(name string) (*Staff, error) { //TODO not upt to date with old db yet
staff := new(Staff) staff := new(Staff)
err := queryRowSQL("SELECT * FROM DBPREFIXstaff WHERE username = ?", err := queryRowSQL("SELECT * FROM DBPREFIXstaff WHERE username = ?",
[]interface{}{name}, []interface{}{name},
@ -236,3 +251,18 @@ func FileNameBan(fileName string, isRegex bool, staffName string, expires Time,
func UserNameBan(userName string, isRegex bool, staffName string, expires Time, permaban bool, staffNote string, boardURI string) error { func UserNameBan(userName string, isRegex bool, staffName string, expires Time, permaban bool, staffNote string, boardURI string) error {
} }
func UserBan(threadBan bool, staffName string, boardURI string, postID int, expires Time, permaban bool,
staffNote string, message string, canAppeal bool, appealAt Time) error {
}
func GetStaffRankAndBoards(username string) (rank int, boardUris []string, err error) {
}
//GetAllAccouncements gets all announcements, newest first
func GetAllAccouncements() ([]Announcement, error) {
//("SELECT subject,message,poster,timestamp FROM DBPREFIXannouncements ORDER BY id DESC")
//rows.Scan(&announcement.Subject, &announcement.Message, &announcement.Poster, &announcement.Timestamp)
}