|
- package main
-
- import (
- "flag"
- "fmt"
- "git.binarythought.com/cdramey/qurl/pages"
- "git.binarythought.com/cdramey/qurl/storage"
- "net"
- "net/http"
- "os"
- )
-
- //go:generate go run ./togo -n Favicon_ico -i assets/favicon.ico -p static -o static/favicon_ico.go
- //go:generate go run ./togo -n Index_html -i assets/index.html -p static -o static/index_html.go
- //go:generate go run ./togo -n Qurl_css -i assets/qurl.css -p static -o static/qurl_css.go
- //go:generate go run ./togo -n Submit_html -i assets/submit.html -p static -o static/submit_html.go
- //go:generate go run ./togo -n Usage_html -i assets/usage.html -p static -o static/usage_html.go
-
- func main() {
- dburl := flag.String("u", "bolt:./qurl.db", "url to database")
- lsaddr := flag.String("l", "127.0.0.1:8080", "listen address/port")
- jsonfile := flag.String("j", "", "path to json to load into database")
- backupint := flag.Int("i", 86400, "seconds between database backups")
- backupdir := flag.String("b", "", "destination directory for database backups")
- flag.Parse()
-
- // Open storage backend
- stor, err := storage.NewStorage(*dburl)
- if err != nil {
- fmt.Fprintf(os.Stderr, "Database connection error: %s\n", err.Error())
- return
- }
- defer stor.Shutdown()
-
- // If there's a backup dir specified, do backups
- // at a specific interval
- if *backupdir != "" {
- stat, err := os.Stat(*backupdir)
- if err != nil {
- fmt.Fprintf(os.Stderr, "Directory stat error: %s\n", err.Error())
- return
- }
- if !stat.IsDir() {
- fmt.Fprintf(os.Stderr, "Backup directory does not exist: %s\n", *backupdir)
- return
- }
-
- go manageBackup(stor, *backupdir, *backupint)
- }
-
- // Load data if asked
- if *jsonfile != "" {
- err := loadjson(stor, *jsonfile)
- if err != nil {
- fmt.Fprintf(os.Stderr, "%s\n", err.Error())
- return
- }
- }
-
- // Open listener port
- listen, err := net.Listen("tcp", *lsaddr)
- if err != nil {
- fmt.Fprintf(os.Stderr, "Listen error: %s\n", err.Error())
- return
- }
-
- root := &pages.RootHandler{Storage: stor}
- err = root.Init()
- if err != nil {
- fmt.Fprintf(os.Stderr, "Handler Init Error: %s\n", err.Error())
- return
- }
-
- fmt.Fprintf(os.Stdout, "qurl listening .. \n")
- err = http.Serve(listen, root)
- if err != nil {
- fmt.Fprintf(os.Stderr, "Serve error: %s\n", err.Error())
- }
- }
|