func (ban *BanInfo) BannedForever() bool {
	return ban.Permaban && !ban.CanAppeal && ban.Type == fullBan && ban.Boards == ""
}
BannedForever returns true if the ban is an unappealable permaban
package gcsql
import (
	"fmt"
	"html"
	"html/template"
	"path"
	"strconv"
	"strings"
	"time"
	"github.com/gochan-org/gochan/pkg/config"
)
const (
	_ = iota
	threadBan
	imageBan
	fullBan
)
var (
	AllSections []BoardSection
	AllBoards []Board
	TempPosts []Post
)
type Announcement struct {
	ID        uint   `json:"no"`
	Subject   string `json:"sub"`
	Message   string `json:"com"`
	Poster    string `json:"name"`
	Timestamp time.Time
}
type BanAppeal struct {
	ID            int
	Ban           int
	Message       string
	Denied        bool
	StaffResponse string
}
type BanInfo struct {
	ID          uint
	IP          string
	Name        string
	NameIsRegex bool
	Boards      string
	Staff       string
	Timestamp   time.Time
	Expires     time.Time
	Permaban    bool
	Reason      string
	Type        int
	StaffNote   string
	AppealAt    time.Time
	CanAppeal   bool
}