first commit
This commit is contained in:
54
internal/services/db_updater/merger.go
Normal file
54
internal/services/db_updater/merger.go
Normal file
@@ -0,0 +1,54 @@
|
||||
package db_updater
|
||||
|
||||
import (
|
||||
"github.com/rs/zerolog/log"
|
||||
"github.com/safing/mmdbmeld"
|
||||
"sync"
|
||||
"thuanle.me/ip-info/configs"
|
||||
)
|
||||
|
||||
func mergeMmdb() error {
|
||||
c, err := mmdbmeld.LoadConfig(configs.MmdbmeldConfig)
|
||||
if err != nil {
|
||||
log.Err(err).Msg("Failed to load mmdbmeld config")
|
||||
return err
|
||||
}
|
||||
|
||||
for _, db := range c.Databases {
|
||||
log.Info().Str("name", db.Name).Msg("Building mmdb file")
|
||||
|
||||
// Apply defaults.
|
||||
dbP := &db //nolint:gosec,scopelint // Only used within loop.
|
||||
c.Defaults.ApplyTo(dbP)
|
||||
|
||||
// Load sources for database.
|
||||
sources, err := mmdbmeld.LoadSources(db)
|
||||
if err != nil {
|
||||
log.Err(err).Msg("Failed to load sources")
|
||||
return err
|
||||
}
|
||||
|
||||
// Create wait group.
|
||||
var wg sync.WaitGroup
|
||||
wg.Add(1)
|
||||
|
||||
// Start log writer.
|
||||
updates := make(chan string, 100)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
for msg := range updates {
|
||||
log.Debug().Str("msg", msg).Msg("MMDB update")
|
||||
}
|
||||
}()
|
||||
|
||||
// Read all sources and write to mmdb.
|
||||
err = mmdbmeld.WriteMMDB(db, sources, updates)
|
||||
if err != nil {
|
||||
log.Err(err).Msg("Failed to write mmdb")
|
||||
return err
|
||||
}
|
||||
wg.Wait()
|
||||
log.Info().Str("file", db.Output).Msg("MMDB created")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user