Archived
1
0
This repository has been archived on 2023-08-12. You can view files and clone it, but cannot push or open issues or pull requests.
nntpchan/contrib/backends/srndv2/src/srnd/tools.go

91 lines
1.9 KiB
Go
Raw Normal View History

//
// tools.go -- srndv2 cli tool functions
//
package srnd
import (
"log"
"os"
)
// worker for thumbnailer tool
func rethumb(chnl chan string, store ArticleStore, missing bool) {
for {
fname, has := <-chnl
if !has {
return
}
thm := store.ThumbnailFilepath(fname)
if CheckFile(thm) {
if missing {
continue
}
log.Println("remove old thumbnail", thm)
os.Remove(thm)
}
log.Println("generate thumbnail for", fname)
store.GenerateThumbnail(fname)
}
}
// run thumbnailer
func ThumbnailTool(threads int, missing bool) {
conf := ReadConfig()
if conf == nil {
log.Println("cannot load config, ReadConfig() returned nil")
return
}
store := createArticleStore(conf.store, nil)
reThumbnail(threads, store, missing)
}
func RegenTool() {
conf := ReadConfig()
db_host := conf.database["host"]
db_port := conf.database["port"]
db_user := conf.database["user"]
db_passwd := conf.database["password"]
db_type := conf.database["type"]
db_sche := conf.database["schema"]
db := NewDatabase(db_type, db_sche, db_host, db_port, db_user, db_passwd)
groups := db.GetAllNewsgroups()
if groups != nil {
for _, group := range groups {
go regenGroup(group, db)
}
}
}
func regenGroup(name string, db Database) {
log.Println("regenerating", name)
}
// run thumbnailer tool with unspecified number of threads
func reThumbnail(threads int, store ArticleStore, missing bool) {
chnl := make(chan string)
for threads > 0 {
go rethumb(chnl, store, missing)
threads--
}
files, err := store.GetAllAttachments()
if err == nil {
for _, fname := range files {
chnl <- fname
}
} else {
log.Println("failed to read attachment directory", err)
}
close(chnl)
log.Println("Rethumbnailing done")
}
// generate a keypair from the command line
func KeygenTool() {
pub, sec := newSignKeypair()
log.Println("public key:", pub)
log.Println("secret key:", sec)
}