2021-04-07 09:24:25 +02:00
|
|
|
package main
|
|
|
|
|
2021-04-07 10:06:16 +02:00
|
|
|
import (
|
2022-06-22 14:09:25 +02:00
|
|
|
"brainbaking.com/go-jamming/app/external"
|
2022-04-18 10:18:00 +02:00
|
|
|
"brainbaking.com/go-jamming/common"
|
2021-04-19 20:22:38 +02:00
|
|
|
"brainbaking.com/go-jamming/db"
|
2022-06-22 15:19:53 +02:00
|
|
|
"brainbaking.com/go-jamming/rest"
|
2021-04-11 20:37:26 +02:00
|
|
|
"flag"
|
2021-04-07 17:31:23 +02:00
|
|
|
"os"
|
|
|
|
|
2021-04-09 18:04:04 +02:00
|
|
|
"brainbaking.com/go-jamming/app"
|
2021-04-07 17:31:23 +02:00
|
|
|
|
2021-04-09 21:00:54 +02:00
|
|
|
"github.com/rs/zerolog"
|
|
|
|
"github.com/rs/zerolog/log"
|
2021-04-07 10:06:16 +02:00
|
|
|
)
|
2021-04-07 09:24:25 +02:00
|
|
|
|
|
|
|
func main() {
|
2021-04-09 21:00:54 +02:00
|
|
|
zerolog.TimeFieldFormat = zerolog.TimeFormatUnix
|
2021-04-11 20:37:26 +02:00
|
|
|
|
|
|
|
verboseFlag := flag.Bool("verbose", false, "Verbose mode (pretty print log, debug level)")
|
2021-04-19 20:22:38 +02:00
|
|
|
migrateFlag := flag.Bool("migrate", false, "Run migration scripts for the DB and exit.")
|
2022-04-18 10:18:00 +02:00
|
|
|
blacklist := flag.String("blacklist", "", "Blacklist a domain name (also cleans spam from DB)")
|
2022-06-22 14:09:25 +02:00
|
|
|
importFile := flag.String("import", "", "Import mentions from an external source (i.e. webmention.io)")
|
2021-04-11 20:37:26 +02:00
|
|
|
flag.Parse()
|
2022-04-18 10:18:00 +02:00
|
|
|
blacklisting := len(*blacklist) > 1
|
2022-06-22 14:09:25 +02:00
|
|
|
importing := len(*importFile) > 1
|
2021-04-11 20:37:26 +02:00
|
|
|
|
|
|
|
// logs by default to Stderr (/var/log/syslog). Rolling files possible via lumberjack.
|
|
|
|
zerolog.SetGlobalLevel(zerolog.InfoLevel)
|
2022-06-22 14:09:25 +02:00
|
|
|
if *verboseFlag || *migrateFlag || blacklisting || importing {
|
2021-04-11 20:37:26 +02:00
|
|
|
log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr})
|
|
|
|
zerolog.SetGlobalLevel(zerolog.DebugLevel)
|
|
|
|
}
|
2021-04-07 17:31:23 +02:00
|
|
|
|
2021-04-20 20:08:07 +02:00
|
|
|
if *migrateFlag {
|
2021-04-19 20:22:38 +02:00
|
|
|
migrate()
|
|
|
|
os.Exit(0)
|
|
|
|
}
|
|
|
|
|
2022-04-18 10:18:00 +02:00
|
|
|
if blacklisting {
|
|
|
|
blacklistDomain(*blacklist)
|
|
|
|
os.Exit(0)
|
|
|
|
}
|
|
|
|
|
2022-06-22 14:09:25 +02:00
|
|
|
if importing {
|
2022-06-22 15:19:53 +02:00
|
|
|
importWebmentionFile(*importFile)
|
2022-06-22 14:09:25 +02:00
|
|
|
os.Exit(0)
|
|
|
|
}
|
|
|
|
|
2021-04-09 21:00:54 +02:00
|
|
|
log.Debug().Msg("Let's a go!")
|
2021-04-07 10:06:16 +02:00
|
|
|
app.Start()
|
2021-04-07 09:24:25 +02:00
|
|
|
}
|
2021-04-19 20:22:38 +02:00
|
|
|
|
2022-06-22 15:19:53 +02:00
|
|
|
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)
|
|
|
|
}
|
|
|
|
|
2022-04-18 10:18:00 +02:00
|
|
|
func blacklistDomain(domain string) {
|
|
|
|
log.Info().Str("domain", domain).Msg("Blacklisting...")
|
|
|
|
config := common.Configure()
|
|
|
|
config.AddToBlacklist(domain)
|
|
|
|
|
|
|
|
repo := db.NewMentionRepo(config)
|
|
|
|
for _, domain := range config.AllowedWebmentionSources {
|
|
|
|
repo.CleanupSpam(domain, config.Blacklist)
|
|
|
|
}
|
|
|
|
|
|
|
|
log.Info().Msg("Blacklist done, exiting.")
|
|
|
|
}
|
|
|
|
|
2021-04-19 20:22:38 +02:00
|
|
|
func migrate() {
|
|
|
|
log.Info().Msg("Starting db migration...")
|
|
|
|
db.Migrate()
|
|
|
|
log.Info().Msg("Migration ended, exiting.")
|
|
|
|
}
|