diff --git a/apps/api/dev_server.go b/apps/api/dev_server.go index d6d7630..9ef45cc 100644 --- a/apps/api/dev_server.go +++ b/apps/api/dev_server.go @@ -38,7 +38,6 @@ import ( "golang.org/x/image/font" "golang.org/x/image/math/fixed" "golang.org/x/net/html/charset" - "gorm.io/driver/postgres" "gorm.io/driver/sqlite" "gorm.io/gorm" "gorm.io/gorm/logger" @@ -237,36 +236,36 @@ func init() { func main() { gin.SetMode(gin.ReleaseMode) - var dbType string - var dbLink string + // var dbType string + var DATA_DIR string + var LIBRARY_DIR string + var UPLOADS_DIR string var bindAddr string - var BASE_PATH string - var UPLOADS_PATH string - if db_type, exist := os.LookupEnv("DB_TYPE"); exist { - dbType = db_type + // if db_type, exist := os.LookupEnv("DB_TYPE"); exist { + // dbType = db_type + // } else { + // log.Fatalln("Not found DB_TYPE env") + // } + if env, exist := os.LookupEnv("DATA_DIR"); exist { + DATA_DIR = env } else { - log.Fatalln("Not found DB_TYPE env") + log.Fatalln("Not found DATA_DIR env") } - if db_link, exist := os.LookupEnv("DB_LINK"); exist { - dbLink = db_link - } else { - log.Fatalln("Not found DB_LINK env") - } - if bind, exist := os.LookupEnv("BIND_ADDR"); exist { - bindAddr = bind + if env, exist := os.LookupEnv("BIND_ADDR"); exist { + bindAddr = env } else { bindAddr = ":8080" } - if basePath, exist := os.LookupEnv("BASE_PATH"); exist { - BASE_PATH = basePath + if env, exist := os.LookupEnv("LIBRARY_DIR"); exist { + LIBRARY_DIR = env } else { - log.Fatalln("Not found BASE_PATH env") + log.Fatalln("Not found LIBRARY_DIR env") } - if uploadsPath, exist := os.LookupEnv("UPLOADS_PATH"); exist { - UPLOADS_PATH = uploadsPath + if env, exist := os.LookupEnv("UPLOADS_DIR"); exist { + UPLOADS_DIR = env } else { - log.Fatalln("Not found UPLOADS_PATH env") + log.Fatalln("Not found UPLOADS_DIR env") } //if _, exist := os.LookupEnv("WHITELIST_FILE"); !exist { //log.Fatalln("Not found WHITELIST_FILE env") @@ -275,16 +274,16 @@ func main() { log.Println("connecting...") var db *gorm.DB var err error - switch dbType { - case "sqlite": - db, err = gorm.Open(sqlite.Open(dbLink), &gorm.Config{ - Logger: logger.Default.LogMode(logger.Error), - }) - case "posgresql": - db, err = gorm.Open(postgres.Open(dbLink), &gorm.Config{ - Logger: logger.Default.LogMode(logger.Error), - }) - } + // switch dbType { + // case "sqlite": + db, err = gorm.Open(sqlite.Open(DATA_DIR+"./YaBL.db"), &gorm.Config{ + Logger: logger.Default.LogMode(logger.Error), + }) + // case "posgresql": + // db, err = gorm.Open(postgres.Open(dbLink), &gorm.Config{ + // Logger: logger.Default.LogMode(logger.Error), + // }) + // } if err != nil { panic(err) } @@ -321,13 +320,8 @@ func main() { END; `) log.Println("migrated!") - var keysPath string - if keysPathEnv, exist := os.LookupEnv("KEYS_PATH"); exist { - keysPath = keysPathEnv - } else { - log.Fatalln("Not found KEYS_PATH env") - } - priv, pub := loadOrGenerateKeys(keysPath) + + priv, pub := loadOrGenerateKeys(DATA_DIR + "/keys") if len(os.Args) == 3 && os.Args[1] == "--authors-whitelist" { GenWhitelist(db, os.Args[2]) @@ -538,10 +532,10 @@ func main() { var bookFile zip.File var filename string if book.Bookcase == nil { - bookReader, _ = os.Open(UPLOADS_PATH + "/books/" + book.Filename) + bookReader, _ = os.Open(UPLOADS_DIR + "/books/" + book.Filename) filename = book.Filename } else { - bookcase, err := zip.OpenReader(BASE_PATH + "/" + *book.Bookcase) + bookcase, err := zip.OpenReader(LIBRARY_DIR + "/" + *book.Bookcase) if err != nil { if os.IsNotExist(err) { ctx.JSON(404, gin.H{"err": "file not exists"}) @@ -574,7 +568,7 @@ func main() { db.Model(&schemas.Book{}).Where("ID = ?", ctx.Param("id")).First(&book) var bookContent []byte if book.Bookcase != nil { - bookcase, err := zip.OpenReader(BASE_PATH + "/" + *book.Bookcase) + bookcase, err := zip.OpenReader(LIBRARY_DIR + "/" + *book.Bookcase) if err != nil { if os.IsNotExist(err) { ctx.Data(200, "", []byte("

404

текст книги не найден на сервере

обратитесь к администратору библиотеки

")) @@ -594,7 +588,7 @@ func main() { bookReader, _ := bookFile.Open() bookContent, _ = io.ReadAll(bookReader) } else { - bookContent, _ = os.ReadFile(UPLOADS_PATH + "/books/" + book.Filename) + bookContent, _ = os.ReadFile(UPLOADS_DIR + "/books/" + book.Filename) } switch book.Filetype { case "fb2": @@ -687,7 +681,7 @@ func main() { } var bookReader io.ReadCloser if book.Bookcase != nil { - bookcase, err := zip.OpenReader(BASE_PATH + "/" + *book.Bookcase) + bookcase, err := zip.OpenReader(LIBRARY_DIR + "/" + *book.Bookcase) if err != nil { if os.IsNotExist(err) { ctx.JSON(200, []ChapterJSON{}) @@ -706,7 +700,7 @@ func main() { } bookReader, _ = bookFile.Open() } else { - bookReader, _ = os.Open(UPLOADS_PATH + "/books/" + book.Filename) + bookReader, _ = os.Open(UPLOADS_DIR + "/books/" + book.Filename) } var bookBody BookBody @@ -789,7 +783,7 @@ func main() { var decodedImage []byte if book.Bookcase == nil { if book.ExternalCover == nil { - bookFile, err := os.Open(UPLOADS_PATH + "/books/" + book.Filename) + bookFile, err := os.Open(UPLOADS_DIR + "/books/" + book.Filename) if err != nil { ctx.Data(200, "image/png", genCover(book.Title)) return @@ -822,7 +816,7 @@ func main() { return } } else { - decodedImage, err = os.ReadFile(UPLOADS_PATH + "/covers/" + *book.ExternalCover) + decodedImage, err = os.ReadFile(UPLOADS_DIR + "/covers/" + *book.ExternalCover) if err != nil { ctx.Data(200, "image/png", genCover(book.Title)) return @@ -830,7 +824,7 @@ func main() { } } else { // TODO: normal handling of missing file should be here... - bookcase, err := zip.OpenReader(BASE_PATH + "/" + *book.Bookcase) + bookcase, err := zip.OpenReader(LIBRARY_DIR + "/" + *book.Bookcase) if err != nil { ctx.Data(200, "image/png", genCover(book.Title)) return @@ -1137,8 +1131,8 @@ func main() { return } // Пути к файлам - bookPath := filepath.Join(UPLOADS_PATH, "books", bookUUID+".pdf") - coverPath := filepath.Join(UPLOADS_PATH, "covers", bookUUID+".png") + bookPath := filepath.Join(UPLOADS_DIR, "books", bookUUID+".pdf") + coverPath := filepath.Join(UPLOADS_DIR, "covers", bookUUID+".png") // Создать директории если их нет os.MkdirAll(filepath.Dir(bookPath), os.ModePerm) @@ -1186,7 +1180,7 @@ func main() { case "application/x-fictionbook+xml": rawFB2 := reaper.Parse(bytes.NewReader(fileData)) // Пути к файлам - bookPath := filepath.Join(UPLOADS_PATH, "books", bookUUID+".fb2") + bookPath := filepath.Join(UPLOADS_DIR, "books", bookUUID+".fb2") // Создать директории если их нет os.MkdirAll(filepath.Dir(bookPath), os.ModePerm) diff --git a/apps/book-reaper/internal/config/config.go b/apps/book-reaper/internal/config/config.go index 0eadece..ae88cbd 100644 --- a/apps/book-reaper/internal/config/config.go +++ b/apps/book-reaper/internal/config/config.go @@ -11,15 +11,15 @@ type Config struct { } func Load() (*Config, error) { - dir := os.Getenv("BASE_PATH") - db := os.Getenv("DB_LINK") + libDir := os.Getenv("LIBRARY_DIR") + dataDir := os.Getenv("DATA_DIR") - if dir == "" || db == "" { - return nil, errors.New("must set BASE_PATH and DB_LINK in env") + if libDir == "" || dataDir == "" { + return nil, errors.New("must set LIBRARY_DIR and DATA_DIR in env") } return &Config{ - BaseDir: dir, - DBPath: db, + BaseDir: libDir, + DBPath: dataDir + "/YaBL.db", }, nil } diff --git a/docker-compose.yaml b/docker-compose.yaml index 343fca6..47f973b 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -4,17 +4,13 @@ services: container_name: yabl restart: unless-stopped ports: - - "8080:8080" # если API слушает на 8080 + - "8080:8080" environment: - - DB_TYPE=sqlite - - DB_LINK=./yabl.db - - BASE_PATH=/app/lib - - BIND_ADDR=:8080 - - KEYS_PATH=/app/keys - - UPLOADS_PATH=/app/uploads - + - DATA_DIR=/app/data + - LIBRARY_DIR=/app/lib + - UPLOADS_DIR=/app/uploads + # - BIND_ADDR=:8080 volumes: - ./lib:/app/lib - ./uploads:/app/uploads - - ./keys:/app/keys - - ./yabl.db:/app/yabl.db \ No newline at end of file + - ./data:/app/data