61
package main
import (
"context"
"errors"
"fmt"
"net/http"
"os"
"os/signal"
"sophuwu.site/cdn/dbfs"
"sophuwu.site/cdn/dir"
"sophuwu.site/cdn/fileserver"
)
// var db *bolt.DB
//
// func init() {
// var err error
// db, err = bolt.Open("build/my.db", 0600, nil)
// if err != nil {
// log.Fatalln(err)
// }
// }
func main() {
db, err := dbfs.OpenDB("build/my.db")
if err != nil {
fmt.Println(err)
return
}
fileserver.Handle("/dir/", dir.Open("."))
fileserver.Handle("/db/", db.GetEntry)
sig := make(chan os.Signal)
signal.Notify(sig, os.Interrupt)
server := http.Server{
Addr: ":8080",
Handler: nil,
}
go func() {
err = server.ListenAndServe()
if err != nil && !errors.Is(err, http.ErrServerClosed) {
fmt.Println(err)
}
}()
quit := make(chan os.Signal, 1)
signal.Notify(quit, os.Interrupt)
<-quit
fmt.Println("Closing databases")
err = db.Close()
if err != nil {
fmt.Println(err)
}
fmt.Println("Closed databases")
fmt.Println("Stopping server")
_ = server.Shutdown(context.Background())
fmt.Println("Server stopped")
}