go-jamming/main.go

84 lines
2.1 KiB
Go
Raw Normal View History

package main
2021-04-07 10:06:16 +02:00
import (
"brainbaking.com/go-jamming/app/external"
2022-04-18 10:18:00 +02:00
"brainbaking.com/go-jamming/common"
"brainbaking.com/go-jamming/db"
"brainbaking.com/go-jamming/rest"
"flag"
"os"
2021-04-09 18:04:04 +02:00
"brainbaking.com/go-jamming/app"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
2021-04-07 10:06:16 +02:00
)
func main() {
zerolog.TimeFieldFormat = zerolog.TimeFormatUnix
verboseFlag := flag.Bool("verbose", false, "Verbose mode (pretty print log, debug level)")
migrateFlag := flag.Bool("migrate", false, "Run migration scripts for the DB and exit.")
denylist := flag.String("denylist", "", "Denylist a domain name (also cleans spam from DB)")
importFile := flag.String("import", "", "Import mentions from an external source (i.e. webmention.io)")
flag.Parse()
denylisting := len(*denylist) > 1
importing := len(*importFile) > 1
// logs by default to Stderr (/var/log/syslog). Rolling files possible via lumberjack.
zerolog.SetGlobalLevel(zerolog.InfoLevel)
if *verboseFlag || *migrateFlag || denylisting || importing {
log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr})
zerolog.SetGlobalLevel(zerolog.DebugLevel)
}
if *migrateFlag {
migrate()
os.Exit(0)
}
if denylisting {
denylistDomain(*denylist)
2022-04-18 10:18:00 +02:00
os.Exit(0)
}
if importing {
importWebmentionFile(*importFile)
os.Exit(0)
}
log.Debug().Msg("Let's a go!")
2021-04-07 10:06:16 +02:00
app.Start()
}
func importWebmentionFile(file string) {
log.Info().Str("file", file).Msg("Starting import...")
config := common.Configure()
bootstrapper := external.ImportBootstrapper{
RestClient: &rest.HttpClient{},
Conf: config,
Repo: db.NewMentionRepo(config),
}
bootstrapper.Import(file)
}
func denylistDomain(domain string) {
log.Info().Str("domain", domain).Msg("Denylisting...")
2022-04-18 10:18:00 +02:00
config := common.Configure()
config.AddToDenylist(domain)
2022-04-18 10:18:00 +02:00
repo := db.NewMentionRepo(config)
for _, domain := range config.AllowedWebmentionSources {
repo.CleanupSpam(domain, config.Denylist)
2022-04-18 10:18:00 +02:00
}
log.Info().Msg("Denylist done, exiting.")
2022-04-18 10:18:00 +02:00
}
func migrate() {
log.Info().Msg("Starting db migration...")
db.Migrate()
log.Info().Msg("Migration ended, exiting.")
}