The codebase that powers boop.cat boop.cat
at main 42 lines 859 B view raw
1// Copyright 2025 boop.cat 2// Licensed under the Apache License, Version 2.0 3// See LICENSE file for details. 4 5package db 6 7import ( 8 "database/sql" 9 "time" 10) 11 12type BannedIP struct { 13 IP string 14 Reason string 15 UserID string 16 CreatedAt string 17} 18 19func BanIP(db *sql.DB, ip, userID, reason string) error { 20 21 var exists string 22 err := db.QueryRow(`SELECT ip FROM banned_ips WHERE ip = ?`, ip).Scan(&exists) 23 if err == nil { 24 return nil 25 } 26 27 now := time.Now().UTC().Format(time.RFC3339) 28 _, err = db.Exec(` 29 INSERT INTO banned_ips (ip, reason, userId, createdAt) 30 VALUES (?, ?, ?, ?) 31 `, ip, reason, userID, now) 32 return err 33} 34 35func IsIPBanned(db *sql.DB, ip string) (bool, string) { 36 var reason string 37 err := db.QueryRow(`SELECT reason FROM banned_ips WHERE ip = ?`, ip).Scan(&reason) 38 if err != nil { 39 return false, "" 40 } 41 return true, reason 42}