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:
parent
138b41bf0a
commit
8e9543970a
9 changed files with 43 additions and 26 deletions
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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().
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue