Explorar el Código

Added level db

Toby Chui hace 3 meses
padre
commit
00a633d23c

+ 1 - 0
def.go

@@ -74,6 +74,7 @@ const (
 /* System Startup Flags */
 var (
 	webUIPort                  = flag.String("port", ":8000", "Management web interface listening port")
+	databaseBackend            = flag.String("db", "auto", "Database backend to use (leveldb, boltdb, auto) Note that fsdb will be used on unsupported platforms like RISCV")
 	noauth                     = flag.Bool("noauth", false, "Disable authentication for management interface")
 	showver                    = flag.Bool("version", false, "Show version of this server")
 	allowSshLoopback           = flag.Bool("sshlb", false, "Allow loopback web ssh connection (DANGER)")

+ 4 - 0
mod/database/database.go

@@ -9,6 +9,7 @@ package database
 */
 
 import (
+	"log"
 	"runtime"
 
 	"imuslab.com/zoraxy/mod/database/dbinc"
@@ -21,6 +22,9 @@ type Database struct {
 }
 
 func NewDatabase(dbfile string, backendType dbinc.BackendType) (*Database, error) {
+	if runtime.GOARCH == "riscv64" {
+		log.Println("RISCV hardware detected, ignoring the backend type and using FS emulated database")
+	}
 	return newDatabase(dbfile, backendType)
 }
 

+ 0 - 1
mod/database/dbbolt/dbbolt.go

@@ -60,7 +60,6 @@ func (d *Database) DropTable(tableName string) error {
 
 // Write to table
 func (d *Database) Write(tableName string, key string, value interface{}) error {
-
 	jsonString, err := json.Marshal(value)
 	if err != nil {
 		return err

+ 15 - 0
mod/database/dbinc/dbinc.go

@@ -9,6 +9,8 @@ const (
 	BackendBoltDB  BackendType = iota //Default backend
 	BackendFSOnly                     //OpenWRT or RISCV backend
 	BackendLevelDB                    //LevelDB backend
+
+	BackEndAuto = BackendBoltDB
 )
 
 type Backend interface {
@@ -22,3 +24,16 @@ type Backend interface {
 	ListTable(tableName string) ([][][]byte, error)
 	Close()
 }
+
+func (b BackendType) String() string {
+	switch b {
+	case BackendBoltDB:
+		return "BoltDB"
+	case BackendFSOnly:
+		return "File System Emulated Key-Value Store"
+	case BackendLevelDB:
+		return "LevelDB"
+	default:
+		return "Unknown"
+	}
+}

+ 7 - 0
start.go

@@ -13,6 +13,7 @@ import (
 	"imuslab.com/zoraxy/mod/acme"
 	"imuslab.com/zoraxy/mod/auth"
 	"imuslab.com/zoraxy/mod/database"
+	"imuslab.com/zoraxy/mod/database/dbinc"
 	"imuslab.com/zoraxy/mod/dockerux"
 	"imuslab.com/zoraxy/mod/dynamicproxy/loadbalance"
 	"imuslab.com/zoraxy/mod/dynamicproxy/redirection"
@@ -65,6 +66,12 @@ func startupSequence() {
 
 	//Create database
 	backendType := database.GetRecommendedBackendType()
+	if *databaseBackend == "leveldb" {
+		backendType = dbinc.BackendLevelDB
+	} else if *databaseBackend == "boltdb" {
+		backendType = dbinc.BackendBoltDB
+	}
+	l.PrintAndLog("database", "Using "+backendType.String()+" as the database backend", nil)
 	db, err := database.NewDatabase(DATABASE_PATH, backendType)
 	if err != nil {
 		log.Fatal(err)

BIN
sys_db/000028.ldb


BIN
sys_db/000031.ldb


BIN
sys_db/000034.ldb


BIN
sys_db/000035.log → sys_db/000038.log


BIN
sys_db/000027.ldb → sys_db/000040.ldb


+ 1 - 1
sys_db/CURRENT

@@ -1 +1 @@
-MANIFEST-000036
+MANIFEST-000039

+ 1 - 1
sys_db/CURRENT.bak

@@ -1 +1 @@
-MANIFEST-000033
+MANIFEST-000036

+ 21 - 0
sys_db/LOG

@@ -155,3 +155,24 @@
 23:21:03.729600 db@open done T·4.208ms
 23:21:29.357758 db@close closing
 23:21:29.357758 db@close done T·0s
+=============== Dec 6, 2024 (CST) ===============
+23:28:41.210723 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
+23:28:41.210723 version@stat F·[3 1] S·1KiB[770B 568B] Sc·[0.75 0.00]
+23:28:41.210723 db@open opening
+23:28:41.210723 journal@recovery F·1
+23:28:41.210723 journal@recovery recovering @35
+23:28:41.212725 memdb@flush created L0@37 N·2 S·268B "sta.._06,v39":"web..led,v38"
+23:28:41.212725 version@stat F·[4 1] S·1KiB[1KiB 568B] Sc·[1.00 0.00]
+23:28:41.214727 db@janitor F·7 G·0
+23:28:41.215728 db@open done T·5.0049ms
+23:28:41.215728 table@compaction L0·4 -> L1·1 S·1KiB Q·40
+23:28:41.222207 table@build created L1@40 N·6 S·584B "aut../TC,v3":"web..led,v38"
+23:28:41.222207 version@stat F·[0 1] S·584B[0B 584B] Sc·[0.00 0.00]
+23:28:41.222722 table@compaction committed F-4 S-1022B Ke·0 D·6 T·6.9937ms
+23:28:41.222722 table@remove removed @37
+23:28:41.223232 table@remove removed @34
+23:28:41.223241 table@remove removed @31
+23:28:41.223241 table@remove removed @28
+23:28:41.223241 table@remove removed @27
+23:32:26.251358 db@close closing
+23:32:26.251358 db@close done T·0s

BIN
sys_db/MANIFEST-000036


BIN
sys_db/MANIFEST-000039