mirror of
https://github.com/optim-enterprises-bv/databunker.git
synced 2025-11-01 02:17:53 +00:00
support DEMO access code
This commit is contained in:
6
run.sh
6
run.sh
@@ -3,9 +3,13 @@
|
|||||||
#/bin/busybox find /databunker
|
#/bin/busybox find /databunker
|
||||||
|
|
||||||
if [ ! -f /databunker/data/databunker.db ]; then
|
if [ ! -f /databunker/data/databunker.db ]; then
|
||||||
|
OPTION="-init"
|
||||||
|
if [ "$1" == "demo" ]; then
|
||||||
|
OPTION="-demoinit"
|
||||||
|
fi
|
||||||
echo "-------------INIT------------"
|
echo "-------------INIT------------"
|
||||||
#/bin/busybox mkdir -p /tmp
|
#/bin/busybox mkdir -p /tmp
|
||||||
RESULT=`/databunker/bin/databunker -init -db /databunker/data/databunker.db -conf /databunker/conf/databunker.yaml > /tmp/init.txt`
|
RESULT=`/databunker/bin/databunker $OPTION -db /databunker/data/databunker.db -conf /databunker/conf/databunker.yaml > /tmp/init.txt`
|
||||||
if [ ! -f /databunker/data/databunker.db ]; then
|
if [ ! -f /databunker/data/databunker.db ]; then
|
||||||
echo "Failed to init databunker database. Probably permission issue for /databunker/data directory."
|
echo "Failed to init databunker database. Probably permission issue for /databunker/data directory."
|
||||||
/bin/busybox sleep 60
|
/bin/busybox sleep 60
|
||||||
|
|||||||
@@ -355,7 +355,7 @@ func logRequest(handler http.Handler) http.Handler {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func setupDB(dbPtr *string) (*dbcon, string, error) {
|
func setupDB(dbPtr *string, demo bool) (*dbcon, string, error) {
|
||||||
fmt.Printf("\nDatabunker init\n\n")
|
fmt.Printf("\nDatabunker init\n\n")
|
||||||
masterKey, err := generateMasterKey()
|
masterKey, err := generateMasterKey()
|
||||||
hash := md5.Sum(masterKey)
|
hash := md5.Sum(masterKey)
|
||||||
@@ -367,7 +367,7 @@ func setupDB(dbPtr *string) (*dbcon, string, error) {
|
|||||||
log.Fatalf("db init error %s", err.Error())
|
log.Fatalf("db init error %s", err.Error())
|
||||||
}
|
}
|
||||||
db := &dbcon{store, masterKey, hash[:]}
|
db := &dbcon{store, masterKey, hash[:]}
|
||||||
rootToken, err := db.createRootXtoken()
|
rootToken, err := db.createRootXtoken(demo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
//log.Panic("error %s", err.Error())
|
//log.Panic("error %s", err.Error())
|
||||||
fmt.Printf("error %s", err.Error())
|
fmt.Printf("error %s", err.Error())
|
||||||
@@ -401,6 +401,7 @@ func main() {
|
|||||||
lockMemory()
|
lockMemory()
|
||||||
//fmt.Printf("%+v\n", cfg)
|
//fmt.Printf("%+v\n", cfg)
|
||||||
initPtr := flag.Bool("init", false, "generate master key and init database")
|
initPtr := flag.Bool("init", false, "generate master key and init database")
|
||||||
|
demoPtr := flag.Bool("demoinit", false, "generate master key with a DEMO access token")
|
||||||
startPtr := flag.Bool("start", false, "start databunker service. User DATABUNKER_MASTERKEY environment variable.")
|
startPtr := flag.Bool("start", false, "start databunker service. User DATABUNKER_MASTERKEY environment variable.")
|
||||||
masterKeyPtr := flag.String("masterkey", "", "master key")
|
masterKeyPtr := flag.String("masterkey", "", "master key")
|
||||||
dbPtr := flag.String("db", "databunker", "database file")
|
dbPtr := flag.String("db", "databunker", "database file")
|
||||||
@@ -410,8 +411,8 @@ func main() {
|
|||||||
var cfg Config
|
var cfg Config
|
||||||
readFile(&cfg, confPtr)
|
readFile(&cfg, confPtr)
|
||||||
readEnv(&cfg)
|
readEnv(&cfg)
|
||||||
if *initPtr {
|
if *initPtr || *demoPtr {
|
||||||
db, _, _ := setupDB(dbPtr)
|
db, _, _ := setupDB(dbPtr, *demoPtr)
|
||||||
db.store.CloseDB()
|
db.store.CloseDB()
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,18 +20,21 @@ func (dbobj dbcon) getRootXtoken() (string, error) {
|
|||||||
return record["xtoken"].(string), nil
|
return record["xtoken"].(string), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dbobj dbcon) createRootXtoken() (string, error) {
|
func (dbobj dbcon) createRootXtoken(demo bool) (string, error) {
|
||||||
rootToken, err := dbobj.getRootXtoken()
|
rootToken, err := dbobj.getRootXtoken()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
if len(rootToken) > 0 {
|
if len(rootToken) > 0 {
|
||||||
return rootToken, nil
|
return "already-initalized", nil
|
||||||
}
|
}
|
||||||
rootToken, err = uuid.GenerateUUID()
|
rootToken, err = uuid.GenerateUUID()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
if demo {
|
||||||
|
rootToken = "DEMO"
|
||||||
|
}
|
||||||
bdoc := bson.M{}
|
bdoc := bson.M{}
|
||||||
bdoc["xtoken"] = hashString(dbobj.hash, rootToken)
|
bdoc["xtoken"] = hashString(dbobj.hash, rootToken)
|
||||||
bdoc["type"] = "root"
|
bdoc["type"] = "root"
|
||||||
@@ -90,7 +93,7 @@ func (dbobj dbcon) checkXtoken(xtokenUUID string) bool {
|
|||||||
|
|
||||||
func (dbobj dbcon) checkUserAuthXToken(xtokenUUID string) (tokenAuthResult, error) {
|
func (dbobj dbcon) checkUserAuthXToken(xtokenUUID string) (tokenAuthResult, error) {
|
||||||
result := tokenAuthResult{}
|
result := tokenAuthResult{}
|
||||||
if isValidUUID(xtokenUUID) == false {
|
if xtokenUUID != "DEMO" && isValidUUID(xtokenUUID) == false {
|
||||||
return result, errors.New("failed to authenticate")
|
return result, errors.New("failed to authenticate")
|
||||||
}
|
}
|
||||||
xtokenHashed := hashString(dbobj.hash, xtokenUUID)
|
xtokenHashed := hashString(dbobj.hash, xtokenUUID)
|
||||||
|
|||||||
Reference in New Issue
Block a user