1
0
forked from YaBL/app

chore: change env names

This commit is contained in:
Michael 2025-06-21 21:39:43 +03:00
parent 3a478cb28d
commit 2435088eef
3 changed files with 56 additions and 66 deletions

View File

@ -38,7 +38,6 @@ import (
"golang.org/x/image/font" "golang.org/x/image/font"
"golang.org/x/image/math/fixed" "golang.org/x/image/math/fixed"
"golang.org/x/net/html/charset" "golang.org/x/net/html/charset"
"gorm.io/driver/postgres"
"gorm.io/driver/sqlite" "gorm.io/driver/sqlite"
"gorm.io/gorm" "gorm.io/gorm"
"gorm.io/gorm/logger" "gorm.io/gorm/logger"
@ -237,36 +236,36 @@ func init() {
func main() { func main() {
gin.SetMode(gin.ReleaseMode) gin.SetMode(gin.ReleaseMode)
var dbType string // var dbType string
var dbLink string var DATA_DIR string
var LIBRARY_DIR string
var UPLOADS_DIR string
var bindAddr string var bindAddr string
var BASE_PATH string
var UPLOADS_PATH string
if db_type, exist := os.LookupEnv("DB_TYPE"); exist { // if db_type, exist := os.LookupEnv("DB_TYPE"); exist {
dbType = db_type // dbType = db_type
// } else {
// log.Fatalln("Not found DB_TYPE env")
// }
if env, exist := os.LookupEnv("DATA_DIR"); exist {
DATA_DIR = env
} else { } else {
log.Fatalln("Not found DB_TYPE env") log.Fatalln("Not found DATA_DIR env")
} }
if db_link, exist := os.LookupEnv("DB_LINK"); exist { if env, exist := os.LookupEnv("BIND_ADDR"); exist {
dbLink = db_link bindAddr = env
} else {
log.Fatalln("Not found DB_LINK env")
}
if bind, exist := os.LookupEnv("BIND_ADDR"); exist {
bindAddr = bind
} else { } else {
bindAddr = ":8080" bindAddr = ":8080"
} }
if basePath, exist := os.LookupEnv("BASE_PATH"); exist { if env, exist := os.LookupEnv("LIBRARY_DIR"); exist {
BASE_PATH = basePath LIBRARY_DIR = env
} else { } else {
log.Fatalln("Not found BASE_PATH env") log.Fatalln("Not found LIBRARY_DIR env")
} }
if uploadsPath, exist := os.LookupEnv("UPLOADS_PATH"); exist { if env, exist := os.LookupEnv("UPLOADS_DIR"); exist {
UPLOADS_PATH = uploadsPath UPLOADS_DIR = env
} else { } else {
log.Fatalln("Not found UPLOADS_PATH env") log.Fatalln("Not found UPLOADS_DIR env")
} }
//if _, exist := os.LookupEnv("WHITELIST_FILE"); !exist { //if _, exist := os.LookupEnv("WHITELIST_FILE"); !exist {
//log.Fatalln("Not found WHITELIST_FILE env") //log.Fatalln("Not found WHITELIST_FILE env")
@ -275,16 +274,16 @@ func main() {
log.Println("connecting...") log.Println("connecting...")
var db *gorm.DB var db *gorm.DB
var err error var err error
switch dbType { // switch dbType {
case "sqlite": // case "sqlite":
db, err = gorm.Open(sqlite.Open(dbLink), &gorm.Config{ db, err = gorm.Open(sqlite.Open(DATA_DIR+"./YaBL.db"), &gorm.Config{
Logger: logger.Default.LogMode(logger.Error), Logger: logger.Default.LogMode(logger.Error),
}) })
case "posgresql": // case "posgresql":
db, err = gorm.Open(postgres.Open(dbLink), &gorm.Config{ // db, err = gorm.Open(postgres.Open(dbLink), &gorm.Config{
Logger: logger.Default.LogMode(logger.Error), // Logger: logger.Default.LogMode(logger.Error),
}) // })
} // }
if err != nil { if err != nil {
panic(err) panic(err)
} }
@ -321,13 +320,8 @@ func main() {
END; END;
`) `)
log.Println("migrated!") log.Println("migrated!")
var keysPath string
if keysPathEnv, exist := os.LookupEnv("KEYS_PATH"); exist { priv, pub := loadOrGenerateKeys(DATA_DIR + "/keys")
keysPath = keysPathEnv
} else {
log.Fatalln("Not found KEYS_PATH env")
}
priv, pub := loadOrGenerateKeys(keysPath)
if len(os.Args) == 3 && os.Args[1] == "--authors-whitelist" { if len(os.Args) == 3 && os.Args[1] == "--authors-whitelist" {
GenWhitelist(db, os.Args[2]) GenWhitelist(db, os.Args[2])
@ -538,10 +532,10 @@ func main() {
var bookFile zip.File var bookFile zip.File
var filename string var filename string
if book.Bookcase == nil { if book.Bookcase == nil {
bookReader, _ = os.Open(UPLOADS_PATH + "/books/" + book.Filename) bookReader, _ = os.Open(UPLOADS_DIR + "/books/" + book.Filename)
filename = book.Filename filename = book.Filename
} else { } else {
bookcase, err := zip.OpenReader(BASE_PATH + "/" + *book.Bookcase) bookcase, err := zip.OpenReader(LIBRARY_DIR + "/" + *book.Bookcase)
if err != nil { if err != nil {
if os.IsNotExist(err) { if os.IsNotExist(err) {
ctx.JSON(404, gin.H{"err": "file not exists"}) 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) db.Model(&schemas.Book{}).Where("ID = ?", ctx.Param("id")).First(&book)
var bookContent []byte var bookContent []byte
if book.Bookcase != nil { if book.Bookcase != nil {
bookcase, err := zip.OpenReader(BASE_PATH + "/" + *book.Bookcase) bookcase, err := zip.OpenReader(LIBRARY_DIR + "/" + *book.Bookcase)
if err != nil { if err != nil {
if os.IsNotExist(err) { if os.IsNotExist(err) {
ctx.Data(200, "", []byte("<section><h2>404</h2><epigraph><span>текст книги не найден на сервере</span></epigraph><br/><p>обратитесь к администратору библиотеки</p></section>")) ctx.Data(200, "", []byte("<section><h2>404</h2><epigraph><span>текст книги не найден на сервере</span></epigraph><br/><p>обратитесь к администратору библиотеки</p></section>"))
@ -594,7 +588,7 @@ func main() {
bookReader, _ := bookFile.Open() bookReader, _ := bookFile.Open()
bookContent, _ = io.ReadAll(bookReader) bookContent, _ = io.ReadAll(bookReader)
} else { } else {
bookContent, _ = os.ReadFile(UPLOADS_PATH + "/books/" + book.Filename) bookContent, _ = os.ReadFile(UPLOADS_DIR + "/books/" + book.Filename)
} }
switch book.Filetype { switch book.Filetype {
case "fb2": case "fb2":
@ -687,7 +681,7 @@ func main() {
} }
var bookReader io.ReadCloser var bookReader io.ReadCloser
if book.Bookcase != nil { if book.Bookcase != nil {
bookcase, err := zip.OpenReader(BASE_PATH + "/" + *book.Bookcase) bookcase, err := zip.OpenReader(LIBRARY_DIR + "/" + *book.Bookcase)
if err != nil { if err != nil {
if os.IsNotExist(err) { if os.IsNotExist(err) {
ctx.JSON(200, []ChapterJSON{}) ctx.JSON(200, []ChapterJSON{})
@ -706,7 +700,7 @@ func main() {
} }
bookReader, _ = bookFile.Open() bookReader, _ = bookFile.Open()
} else { } else {
bookReader, _ = os.Open(UPLOADS_PATH + "/books/" + book.Filename) bookReader, _ = os.Open(UPLOADS_DIR + "/books/" + book.Filename)
} }
var bookBody BookBody var bookBody BookBody
@ -789,7 +783,7 @@ func main() {
var decodedImage []byte var decodedImage []byte
if book.Bookcase == nil { if book.Bookcase == nil {
if book.ExternalCover == 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 { if err != nil {
ctx.Data(200, "image/png", genCover(book.Title)) ctx.Data(200, "image/png", genCover(book.Title))
return return
@ -822,7 +816,7 @@ func main() {
return return
} }
} else { } else {
decodedImage, err = os.ReadFile(UPLOADS_PATH + "/covers/" + *book.ExternalCover) decodedImage, err = os.ReadFile(UPLOADS_DIR + "/covers/" + *book.ExternalCover)
if err != nil { if err != nil {
ctx.Data(200, "image/png", genCover(book.Title)) ctx.Data(200, "image/png", genCover(book.Title))
return return
@ -830,7 +824,7 @@ func main() {
} }
} else { } else {
// TODO: normal handling of missing file should be here... // 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 { if err != nil {
ctx.Data(200, "image/png", genCover(book.Title)) ctx.Data(200, "image/png", genCover(book.Title))
return return
@ -1137,8 +1131,8 @@ func main() {
return return
} }
// Пути к файлам // Пути к файлам
bookPath := filepath.Join(UPLOADS_PATH, "books", bookUUID+".pdf") bookPath := filepath.Join(UPLOADS_DIR, "books", bookUUID+".pdf")
coverPath := filepath.Join(UPLOADS_PATH, "covers", bookUUID+".png") coverPath := filepath.Join(UPLOADS_DIR, "covers", bookUUID+".png")
// Создать директории если их нет // Создать директории если их нет
os.MkdirAll(filepath.Dir(bookPath), os.ModePerm) os.MkdirAll(filepath.Dir(bookPath), os.ModePerm)
@ -1186,7 +1180,7 @@ func main() {
case "application/x-fictionbook+xml": case "application/x-fictionbook+xml":
rawFB2 := reaper.Parse(bytes.NewReader(fileData)) 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) os.MkdirAll(filepath.Dir(bookPath), os.ModePerm)

View File

@ -11,15 +11,15 @@ type Config struct {
} }
func Load() (*Config, error) { func Load() (*Config, error) {
dir := os.Getenv("BASE_PATH") libDir := os.Getenv("LIBRARY_DIR")
db := os.Getenv("DB_LINK") dataDir := os.Getenv("DATA_DIR")
if dir == "" || db == "" { if libDir == "" || dataDir == "" {
return nil, errors.New("must set BASE_PATH and DB_LINK in env") return nil, errors.New("must set LIBRARY_DIR and DATA_DIR in env")
} }
return &Config{ return &Config{
BaseDir: dir, BaseDir: libDir,
DBPath: db, DBPath: dataDir + "/YaBL.db",
}, nil }, nil
} }

View File

@ -4,17 +4,13 @@ services:
container_name: yabl container_name: yabl
restart: unless-stopped restart: unless-stopped
ports: ports:
- "8080:8080" # если API слушает на 8080 - "8080:8080"
environment: environment:
- DB_TYPE=sqlite - DATA_DIR=/app/data
- DB_LINK=./yabl.db - LIBRARY_DIR=/app/lib
- BASE_PATH=/app/lib - UPLOADS_DIR=/app/uploads
- BIND_ADDR=:8080 # - BIND_ADDR=:8080
- KEYS_PATH=/app/keys
- UPLOADS_PATH=/app/uploads
volumes: volumes:
- ./lib:/app/lib - ./lib:/app/lib
- ./uploads:/app/uploads - ./uploads:/app/uploads
- ./keys:/app/keys - ./data:/app/data
- ./yabl.db:/app/yabl.db