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:
parent
af4572ea5c
commit
a073aa49f3
4 changed files with 37 additions and 11 deletions
|
@ -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";
|
||||
|
|
|
@ -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>")
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue