1
0
Fork 0
mirror of https://github.com/Eggbertx/gochan.git synced 2025-09-06 11:46:24 -07:00

Add dropdown item to ban post IP

This commit is contained in:
Eggbertx 2023-06-16 09:29:38 -07:00
parent af4572ea5c
commit a073aa49f3
4 changed files with 37 additions and 11 deletions

View file

@ -172,6 +172,9 @@ function handleActions(action: string, postIDStr: string) {
alertLightbox(`Failed getting post IP: ${reason.statusText}`, "Error");
});
break;
case "Ban IP address":
window.open(`${webroot}manage/bans?dir=${board}&postid=${postID}`);
break;
case "Ban filename":
case "Ban file checksum": {
const banType = (action === "Ban filename")?"filename":"checksum";

View file

@ -35,7 +35,7 @@ function dropdownHasItem(dropdown: any, item: string) {
}
function setupManagementEvents() {
$("select.post-actions").each((_i, el) => {
$<HTMLSelectElement>("select.post-actions").each((_i, el) => {
const $el = $(el);
const $post = $(el.parentElement);
const isLocked = isThreadLocked($post);
@ -52,6 +52,9 @@ function setupManagementEvents() {
if(!dropdownHasItem(el, "Posts from this IP")) {
$el.append("<option>Posts from this IP</option>");
}
if(!dropdownHasItem(el, "Ban IP address")) {
$el.append("<option>Ban IP address</option>")
}
const filenameOrig = $post.find("div.file-info a.file-orig").text();
if(filenameOrig !== "" && !dropdownHasItem(el, "Ban filename")) {
$el.append(
@ -63,6 +66,7 @@ function setupManagementEvents() {
$(document).on("postDropdownAdded", function(_e, data) {
if(!data.dropdown) return;
data.dropdown.append("<option>Posts from this IP</option>");
data.dropdown.append("<option>Ban IP address</option>")
});
}

View file

@ -48,6 +48,13 @@ func GetPostFromID(id int, onlyNotDeleted bool) (*Post, error) {
return post, err
}
func GetPostIP(postID int) (string, error) {
sql := "SELECT ip FROM DBPREFIXposts WHERE id = ?"
var ip string
err := QueryRowSQL(sql, []interface{}{postID}, []interface{}{&ip})
return ip, err
}
// GetPostsFromIP gets the posts from the database with a matching IP address, specifying
// optionally requiring them to not be deleted
func GetPostsFromIP(ip string, limit int, onlyNotDeleted bool) ([]Post, error) {

View file

@ -32,26 +32,27 @@ func registerModeratorPages() {
var ban gcsql.IPBan
ban.StaffID = staff.ID
deleteIDStr := request.FormValue("delete")
postIDstr := request.FormValue("postid")
if deleteIDStr != "" {
// deleting a ban
ban.ID, err = strconv.Atoi(deleteIDStr)
if err != nil {
errEv.Err(err).
errEv.Err(err).Caller().
Str("deleteBan", deleteIDStr).
Caller().Send()
Send()
return "", err
}
if err = ban.Deactivate(staff.ID); err != nil {
errEv.Err(err).
errEv.Err(err).Caller().
Int("deleteBan", ban.ID).
Caller().Send()
Send()
return "", err
}
} else if request.FormValue("do") == "add" {
err := ipBanFromRequest(&ban, request, errEv)
if err != nil {
errEv.Err(err).
errEv.Err(err).Caller().
Str("banIP", ban.IP).
Time("expireAt", ban.ExpiresAt).
Time("appealAt", ban.AppealAt).
@ -64,14 +65,25 @@ func registerModeratorPages() {
Bool("permanent", ban.Permanent).
Str("reason", ban.Message).
Msg("Added IP ban")
} else if postIDstr != "" {
postID, err := strconv.Atoi(postIDstr)
if err != nil {
errEv.Err(err).Caller().Send()
return "", err
}
if ban.IP, err = gcsql.GetPostIP(postID); err != nil {
errEv.Err(err).Caller().
Int("postID", postID).Send()
return "", err
}
}
filterBoardIDstr := request.FormValue("filterboardid")
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
}
}
@ -79,14 +91,14 @@ func registerModeratorPages() {
limit := 200
if limitStr != "" {
if limit, err = strconv.Atoi(limitStr); err != nil {
errEv.Err(err).
Str("limit", limitStr).Caller().Send()
errEv.Err(err).Caller().
Str("limit", limitStr).Send()
return "", err
}
}
banlist, err := gcsql.GetIPBans(filterBoardID, limit, true)
if err != nil {
errEv.Err(err).Msg("Error getting ban list")
errEv.Err(err).Caller().Msg("Error getting ban list")
err = errors.New("Error getting ban list: " + err.Error())
return "", err
}