diff --git a/.gitignore b/.gitignore index cda9b1f..a188527 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ databunker +databunker.db +databunker.yaml bql.db diff --git a/src/bunker.go b/src/bunker.go index ea677ad..88b67c6 100644 --- a/src/bunker.go +++ b/src/bunker.go @@ -202,41 +202,47 @@ func readEnv(cfg *Config) error { func main() { rand.Seed(time.Now().UnixNano()) - fmt.Println("***MAIN***") lockMemory() var cfg Config readFile(&cfg) readEnv(&cfg) - fmt.Printf("%+v\n", cfg) + //fmt.Printf("%+v\n", cfg) initPtr := flag.Bool("init", false, "a bool") masterKeyPtr := flag.String("masterkey", "", "master key") flag.Parse() var err error var masterKey []byte - if *initPtr { - fmt.Println("Init") - masterKey, err = generateMasterKey() - fmt.Printf("Master key: %x\n", masterKey) - } else if masterKeyPtr != nil && len(*masterKeyPtr) > 0 { - masterKey, err = hex.DecodeString(*masterKeyPtr) - } else { - fmt.Println("Run ./databunker -init for the firts time.") - log.Fatal("Masterkey is missing. Run ./databunker -masterkey key") - } if err != nil { //log.Panic("error %s", err.Error()) fmt.Printf("error %s", err.Error()) } db, _ := newDB(masterKey, nil) if *initPtr { - fmt.Println("Init") + fmt.Println("\nDatabunker init\n") + masterKey, err = generateMasterKey() + fmt.Printf("Master key: %x\n\n", masterKey) + fmt.Println("Init databunker.db\n") db.initDB() rootToken, err := db.createRootToken() if err != nil { //log.Panic("error %s", err.Error()) fmt.Printf("error %s", err.Error()) } - fmt.Printf("Root token: %s\n", rootToken) + fmt.Printf("API Root token: %s\n\n", rootToken) + os.Exit(0) + } + if dbExists() == false { + fmt.Println("\ndatabunker.db file is missing.\n") + fmt.Println(`Run "./databunker -init" for the first time.`) + fmt.Println("") + os.Exit(0) + } + if masterKeyPtr != nil && len(*masterKeyPtr) > 0 { + masterKey, err = hex.DecodeString(*masterKeyPtr) + } else { + fmt.Println(`Masterkey is missing.`) + fmt.Printf(`Run "./databunker -masterkey key"`) + os.Exit(0) } db.initUserApps() e := mainEnv{db, cfg} diff --git a/src/qldb.go b/src/qldb.go index 4bc8ee8..fd23e7b 100644 --- a/src/qldb.go +++ b/src/qldb.go @@ -15,6 +15,7 @@ import ( "database/sql" "fmt" "log" + "os" "strconv" "go.mongodb.org/mongo-driver/bson" @@ -32,6 +33,13 @@ type dbcon struct { hash []byte } +func dbExists() bool { + if _, err := os.Stat("databunker.db"); os.IsNotExist(err) { + return false + } + return true +} + func newDB(masterKey []byte, urlurl *string) (dbcon, error) { dbobj := dbcon{nil, nil, nil} @@ -50,9 +58,9 @@ func newDB(masterKey []byte, urlurl *string) (dbcon, error) { */ ql.RegisterDriver2() - db, err := sql.Open("ql2", "./bql.db") + db, err := sql.Open("ql2", "./databunker.db") if err != nil { - log.Fatalf("Failed to open ql db: %s", err) + log.Fatalf("Failed to open databunker.db file: %s", err) } hash := md5.Sum(masterKey) dbobj = dbcon{db, masterKey, hash[:]} @@ -61,7 +69,6 @@ func newDB(masterKey []byte, urlurl *string) (dbcon, error) { func (dbobj dbcon) initDB() error { var err error - fmt.Println("init db *****") if err = initUsers(dbobj.db); err != nil { return err } @@ -573,10 +580,10 @@ func initUsers(db *sql.DB) error { if err != nil { return err } - fmt.Println("going to create indexes") + //fmt.Println("going to create indexes") _, err = tx.Exec(`CREATE INDEX users_token ON users (token);`) if err != nil { - fmt.Println("error in create index") + //fmt.Println("error in create index") return err } _, err = tx.Exec(`CREATE INDEX users_login ON users (loginidx);`)