1
0
Fork 0
mirror of https://github.com/Eggbertx/gochan.git synced 2025-08-03 11:46:22 -07:00

Remove "Verbosity" config field and rename "DebugMode" to "Verbose" for enabling command line output on errors

This commit is contained in:
Eggbertx 2023-12-27 17:07:33 -08:00
parent 138b41bf0a
commit 8e9543970a
9 changed files with 43 additions and 26 deletions

View file

@ -35,11 +35,17 @@ func main() {
fmt.Printf("Starting gochan v%s\n", versionStr) fmt.Printf("Starting gochan v%s\n", versionStr)
config.InitConfig(versionStr) config.InitConfig(versionStr)
config.SetVerbose(true)
uid, gid := config.GetUser()
systemCritical := config.GetSystemCriticalConfig() systemCritical := config.GetSystemCriticalConfig()
err := gcutil.InitLogs(systemCritical.LogDir, true, uid, gid)
err := gcplugin.LoadPlugins(systemCritical.Plugins)
if err != nil { if err != nil {
fmt.Println("Error opening logs:", err.Error())
os.Exit(1)
}
if err = gcplugin.LoadPlugins(systemCritical.Plugins); err != nil {
gcutil.LogFatal().Err(err).Msg("failed loading plugins") gcutil.LogFatal().Err(err).Msg("failed loading plugins")
} }
@ -59,14 +65,13 @@ func main() {
Msg("Connected to database") Msg("Connected to database")
if err = gcsql.CheckAndInitializeDatabase(systemCritical.DBtype); err != nil { if err = gcsql.CheckAndInitializeDatabase(systemCritical.DBtype); err != nil {
fmt.Println("Failed to initialize the database:", err.Error())
gcutil.LogFatal().Err(err).Msg("Failed to initialize the database") gcutil.LogFatal().Err(err).Msg("Failed to initialize the database")
} }
events.TriggerEvent("db-initialized") events.TriggerEvent("db-initialized")
parseCommandLine() parseCommandLine()
serverutil.InitMinifier() serverutil.InitMinifier()
// posting.InitGeoIP() // posting.InitGeoIP()
// posting.InitCaptcha() posting.InitCaptcha()
if err = gctemplates.InitTemplates(); err != nil { if err = gctemplates.InitTemplates(); err != nil {
fmt.Println("Failed initializing templates:", err.Error()) fmt.Println("Failed initializing templates:", err.Error())
@ -85,6 +90,10 @@ func main() {
sc := make(chan os.Signal, 1) sc := make(chan os.Signal, 1)
signal.Notify(sc, syscall.SIGINT, syscall.SIGTERM, os.Interrupt) signal.Notify(sc, syscall.SIGINT, syscall.SIGTERM, os.Interrupt)
posting.InitPosting() posting.InitPosting()
if err = gcutil.InitLogs(systemCritical.LogDir, systemCritical.Verbose, uid, gid); err != nil {
fmt.Println("Error opening logs:", err.Error())
os.Exit(1)
}
go initServer() go initServer()
<-sc <-sc
} }

View file

@ -25,7 +25,7 @@ func initServer() {
listener, err := net.Listen("tcp", systemCritical.ListenIP+":"+strconv.Itoa(systemCritical.Port)) listener, err := net.Listen("tcp", systemCritical.ListenIP+":"+strconv.Itoa(systemCritical.Port))
if err != nil { if err != nil {
if !systemCritical.DebugMode { if !systemCritical.Verbose {
fmt.Printf("Failed listening on %s:%d: %s", systemCritical.ListenIP, systemCritical.Port, err.Error()) fmt.Printf("Failed listening on %s:%d: %s", systemCritical.ListenIP, systemCritical.Port, err.Error())
} }
gcutil.LogFatal().Err(err).Caller(). gcutil.LogFatal().Err(err).Caller().
@ -56,7 +56,7 @@ func initServer() {
} }
if err != nil { if err != nil {
if !systemCritical.DebugMode { if !systemCritical.Verbose {
fmt.Println("Error initializing server:", err.Error()) fmt.Println("Error initializing server:", err.Error())
} }
gcutil.Logger().Fatal(). gcutil.Logger().Fatal().

View file

@ -164,7 +164,7 @@ type SystemCriticalConfig struct {
DBpassword string DBpassword string
DBprefix string DBprefix string
DebugMode bool Verbose bool `json:"DebugMode"`
RandomSeed string RandomSeed string
Version *GochanVersion `json:"-"` Version *GochanVersion `json:"-"`
TimeZone int `json:"-"` TimeZone int `json:"-"`
@ -185,7 +185,6 @@ type SiteConfig struct {
MaxRecentPosts int MaxRecentPosts int
RecentPostsWithNoFile bool RecentPostsWithNoFile bool
Verbosity int
EnableAppeals bool EnableAppeals bool
MaxLogDays int MaxLogDays int
@ -374,8 +373,12 @@ func DeleteBoardConfig(dir string) {
delete(boardConfigs, dir) delete(boardConfigs, dir)
} }
func GetDebugMode() bool { func VerboseMode() bool {
return cfg.testing || cfg.SystemCriticalConfig.DebugMode return cfg.testing || cfg.SystemCriticalConfig.Verbose
}
func SetVerbose(verbose bool) {
cfg.Verbose = verbose
} }
func GetVersion() *GochanVersion { func GetVersion() *GochanVersion {

View file

@ -104,7 +104,6 @@ const (
"GeoIPDBlocation": "/usr/share/GeoIP/GeoIP.dat", "GeoIPDBlocation": "/usr/share/GeoIP/GeoIP.dat",
"MaxRecentPosts": 12, "MaxRecentPosts": 12,
"RecentPostsWithNoFile": false, "RecentPostsWithNoFile": false,
"Verbosity": 0,
"EnableAppeals": true, "EnableAppeals": true,
"MaxLogDays": 14, "MaxLogDays": 14,
"_comment": "Set RandomSeed to a (preferrably large) string of letters and numbers", "_comment": "Set RandomSeed to a (preferrably large) string of letters and numbers",

View file

@ -51,6 +51,12 @@ func (iv *InvalidValueError) Error() string {
return str return str
} }
// GetUser returns the IDs of the user and group gochan should be acting as
// when creating files. If they are 0, it is using the current user
func GetUser() (int, int) {
return uid, gid
}
func TakeOwnership(fp string) (err error) { func TakeOwnership(fp string) (err error) {
if runtime.GOOS == "windows" || fp == "" || cfg.Username == "" { if runtime.GOOS == "windows" || fp == "" || cfg.Username == "" {
// Chown returns an error in Windows so skip it, also skip if Username isn't set // Chown returns an error in Windows so skip it, also skip if Username isn't set
@ -78,7 +84,6 @@ func InitConfig(versionStr string) {
cfg.ListenIP = "127.0.0.1" cfg.ListenIP = "127.0.0.1"
cfg.Port = 8080 cfg.Port = 8080
cfg.UseFastCGI = true cfg.UseFastCGI = true
cfg.DebugMode = true
cfg.testing = true cfg.testing = true
cfg.TemplateDir = "templates" cfg.TemplateDir = "templates"
cfg.DBtype = "sqlite3" cfg.DBtype = "sqlite3"
@ -89,7 +94,7 @@ func InitConfig(versionStr string) {
cfg.RandomSeed = "test" cfg.RandomSeed = "test"
cfg.Version = ParseVersion(versionStr) cfg.Version = ParseVersion(versionStr)
cfg.SiteSlogan = "Gochan testing" cfg.SiteSlogan = "Gochan testing"
cfg.Verbosity = 1 cfg.Verbose = true
cfg.Captcha.OnlyNeededForThreads = true cfg.Captcha.OnlyNeededForThreads = true
cfg.Cooldowns = BoardCooldowns{0, 0, 0} cfg.Cooldowns = BoardCooldowns{0, 0, 0}
cfg.BanColors = []string{ cfg.BanColors = []string{
@ -161,10 +166,6 @@ func InitConfig(versionStr string) {
} }
cfg.LogDir = gcutil.FindResource(cfg.LogDir, "log", "/var/log/gochan/") cfg.LogDir = gcutil.FindResource(cfg.LogDir, "log", "/var/log/gochan/")
if err = gcutil.InitLogs(cfg.LogDir, cfg.DebugMode, uid, gid); err != nil {
fmt.Println("Error opening logs:", err.Error())
os.Exit(1)
}
if cfg.Port == 0 { if cfg.Port == 0 {
cfg.Port = 80 cfg.Port = 80

View file

@ -259,7 +259,7 @@ func sqlVersionError(err error, dbDriver string, query *string) error {
return err return err
} }
} }
if config.GetSystemCriticalConfig().DebugMode { if config.GetSystemCriticalConfig().Verbose {
return fmt.Errorf(UnsupportedSQLVersionMsg+"\nQuery: "+*query, errText) return fmt.Errorf(UnsupportedSQLVersionMsg+"\nQuery: "+*query, errText)
} }
return fmt.Errorf(UnsupportedSQLVersionMsg, errText) return fmt.Errorf(UnsupportedSQLVersionMsg, errText)

View file

@ -63,7 +63,7 @@ func SetupSQLString(query string, dbConn *GCDB) (string, error) {
} }
prepared = strings.Join(arr, "") prepared = strings.Join(arr, "")
case "sqlmock": case "sqlmock":
if config.GetDebugMode() { if config.VerboseMode() {
prepared = query prepared = query
break break
} }

View file

@ -57,8 +57,10 @@ func LogDiscard(events ...*zerolog.Event) {
func initLog(logPath string, debug bool) (err error) { func initLog(logPath string, debug bool) (err error) {
if logFile != nil { if logFile != nil {
// log file already initialized, skip // log already initialized
return nil if err = logFile.Close(); err != nil {
return err
}
} }
logFile, err = os.OpenFile(logPath, logFlags, logFileMode) // skipcq: GSC-G302 logFile, err = os.OpenFile(logPath, logFlags, logFileMode) // skipcq: GSC-G302
if err != nil { if err != nil {
@ -77,8 +79,10 @@ func initLog(logPath string, debug bool) (err error) {
func initAccessLog(logPath string) (err error) { func initAccessLog(logPath string) (err error) {
if accessFile != nil { if accessFile != nil {
// access log already initialized, skip // access log already initialized, close it first before reopening
return nil if err = accessFile.Close(); err != nil {
return err
}
} }
accessFile, err = os.OpenFile(logPath, logFlags, logFileMode) // skipcq: GSC-G302 accessFile, err = os.OpenFile(logPath, logFlags, logFileMode) // skipcq: GSC-G302
if err != nil { if err != nil {
@ -88,8 +92,8 @@ func initAccessLog(logPath string) (err error) {
return nil return nil
} }
func InitLogs(logDir string, debug bool, uid int, gid int) (err error) { func InitLogs(logDir string, verbose bool, uid int, gid int) (err error) {
if err = initLog(path.Join(logDir, "gochan.log"), debug); err != nil { if err = initLog(path.Join(logDir, "gochan.log"), verbose); err != nil {
return err return err
} }
if err = logFile.Chown(uid, gid); err != nil { if err = logFile.Chown(uid, gid); err != nil {
@ -144,6 +148,7 @@ func LogDebug() *zerolog.Event {
} }
func CloseLog() error { func CloseLog() error {
if logFile == nil { if logFile == nil {
return nil return nil
} }

View file

@ -11,7 +11,7 @@ import (
// ValidReferer checks to make sure that the incoming request is from the same domain (or if debug mode is enabled) // ValidReferer checks to make sure that the incoming request is from the same domain (or if debug mode is enabled)
func ValidReferer(request *http.Request) bool { func ValidReferer(request *http.Request) bool {
if config.GetDebugMode() { if config.VerboseMode() {
return true return true
} }
referer := request.Referer() referer := request.Referer()