mirror of
https://github.com/Eggbertx/gochan.git
synced 2025-08-17 10:56:24 -07:00
This commit is contained in:
parent
bfac3ef93c
commit
9d9a978e68
3 changed files with 65 additions and 14 deletions
|
@ -21,6 +21,7 @@ var (
|
|||
|
||||
type Ban interface {
|
||||
IsGlobalBan() bool
|
||||
Deactivate(int) error
|
||||
}
|
||||
|
||||
func NewIPBan(ban *IPBan) error {
|
||||
|
@ -72,12 +73,6 @@ func GetIPBanByID(id int) (*IPBan, error) {
|
|||
return &ban, err
|
||||
}
|
||||
|
||||
func DeleteIPBanByID(id int) error {
|
||||
const query = `UPDATE DBPREFIXip_ban SET is_active = FALSE WHERE id = ?`
|
||||
_, err := ExecSQL(query, id)
|
||||
return err
|
||||
}
|
||||
|
||||
func GetIPBans(boardID int, limit int, onlyActive bool) ([]IPBan, error) {
|
||||
query := ipBanQueryBase
|
||||
if boardID > 0 {
|
||||
|
@ -118,6 +113,39 @@ func (ipb IPBan) IsGlobalBan() bool {
|
|||
return ipb.BoardID == nil
|
||||
}
|
||||
|
||||
func (ipb *IPBan) Deactivate(staffID int) error {
|
||||
const deactivateQuery = `UPDATE DBPREFIXip_ban SET is_active = FALSE WHERE id = ?`
|
||||
const auditInsertQuery = `INSERT INTO DBPREFIXip_ban_audit
|
||||
(ip_ban_id, staff_id, is_active, is_thread_ban, expires_at, appeal_at, permanent, staff_note, message, can_appeal)
|
||||
SELECT
|
||||
id, staff_id, is_active, is_thread_ban, expires_at, appeal_at, permanent, staff_note, message, can_appeal
|
||||
FROM DBPREFIXip_ban WHERE id = ?`
|
||||
tx, err := BeginTx()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer tx.Rollback()
|
||||
stmt1, err := PrepareSQL(deactivateQuery, tx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer stmt1.Close()
|
||||
|
||||
if _, err = stmt1.Exec(ipb.ID); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
stmt2, err := PrepareSQL(auditInsertQuery, tx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer stmt2.Close()
|
||||
if _, err = stmt2.Exec(ipb.ID); err != nil {
|
||||
return err
|
||||
}
|
||||
return tx.Commit()
|
||||
}
|
||||
|
||||
func checkUsernameOrFilename(usernameFilename string, check string, boardID int) (*filenameOrUsernameBanBase, error) {
|
||||
query := `SELECT
|
||||
id, board_id, staff_id, staff_note, issued_at, ` + usernameFilename + `, is_regex
|
||||
|
@ -168,6 +196,18 @@ func (ub filenameOrUsernameBanBase) IsGlobalBan() bool {
|
|||
return ub.BoardID == nil
|
||||
}
|
||||
|
||||
func (fnb *FilenameBan) Deactivate(staffID int) error {
|
||||
const deleteQuery = `DELETE FROM DBPREFIXfilename_ban WHERE id = ?`
|
||||
_, err := ExecSQL(deleteQuery, fnb.ID)
|
||||
return err
|
||||
}
|
||||
|
||||
func (fnb *UsernameBan) Deactivate(staffID int) error {
|
||||
const deleteQuery = `DELETE FROM DBPREFIXusername_ban WHERE id = ?`
|
||||
_, err := ExecSQL(deleteQuery, fnb.ID)
|
||||
return err
|
||||
}
|
||||
|
||||
func CheckFilenameBan(filename string, boardID int) (*FilenameBan, error) {
|
||||
banBase, err := checkUsernameOrFilename("filename", filename, boardID)
|
||||
if err != nil {
|
||||
|
@ -238,6 +278,12 @@ func (fb *FileBan) IsGlobalBan() bool {
|
|||
return fb.BoardID == nil
|
||||
}
|
||||
|
||||
func (fb *FileBan) Deactivate(staffID int) error {
|
||||
const deleteQuery = `DELETE FROM DBPREFIXfile_ban WHERE id = ?`
|
||||
_, err := ExecSQL(deleteQuery, fb.ID)
|
||||
return err
|
||||
}
|
||||
|
||||
// DeleteFileBanByID deletes the ban, given the id column value
|
||||
func DeleteFileBanByID(id int) error {
|
||||
_, err := ExecSQL("DELETE FROM DBPREFIXfile_ban WHERE id = ?", id)
|
||||
|
|
|
@ -131,7 +131,7 @@ func BeginTx() (*sql.Tx, error) {
|
|||
if gcdb == nil {
|
||||
return nil, ErrNotConnected
|
||||
}
|
||||
var ctx context.Context
|
||||
ctx := context.Background()
|
||||
return gcdb.BeginTx(ctx, &sql.TxOptions{
|
||||
Isolation: 0,
|
||||
ReadOnly: false,
|
||||
|
|
|
@ -234,10 +234,17 @@ var actions = []Action{
|
|||
ban.ID, err = strconv.Atoi(deleteIDStr)
|
||||
if err != nil {
|
||||
errEv.Err(err).
|
||||
Str("delete", deleteIDStr).
|
||||
Str("deleteBan", deleteIDStr).
|
||||
Caller().Send()
|
||||
return "", err
|
||||
}
|
||||
if err = ban.Deactivate(staff.ID); err != nil {
|
||||
errEv.Err(err).
|
||||
Int("deleteBan", ban.ID).
|
||||
Caller().Send()
|
||||
return "", err
|
||||
}
|
||||
|
||||
} else if request.FormValue("do") == "add" {
|
||||
err := ipBanFromRequest(&ban, request, errEv)
|
||||
if err != nil {
|
||||
|
@ -278,12 +285,10 @@ var actions = []Action{
|
|||
manageBansBuffer := bytes.NewBufferString("")
|
||||
|
||||
if err = serverutil.MinifyTemplate(gctemplates.ManageBans, map[string]interface{}{
|
||||
"systemCritical": config.GetSystemCriticalConfig(),
|
||||
"banlist": banlist,
|
||||
"allBoards": gcsql.AllBoards,
|
||||
"ban": ban,
|
||||
"filterboardid": filterBoardID,
|
||||
"webroot": config.GetSystemCriticalConfig().WebRoot,
|
||||
"banlist": banlist,
|
||||
"allBoards": gcsql.AllBoards,
|
||||
"ban": ban,
|
||||
"filterboardid": filterBoardID,
|
||||
}, manageBansBuffer, "text/html"); err != nil {
|
||||
errEv.Err(err).Str("template", "manage_bans.html").Caller().Send()
|
||||
return "", errors.New("Error executing ban management page template: " + err.Error())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue