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()) } }