mirror of
				https://github.com/optim-enterprises-bv/databunker.git
				synced 2025-10-30 17:37:50 +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
	 yuli
					yuli