This commit is contained in:
Lars Kiesow 2023-01-22 22:34:19 -06:00 committed by GitHub
commit 7039bcb6ed
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 7 deletions

View file

@ -22,8 +22,9 @@ const UID = process.env.AUDIOBOOKSHELF_UID
const GID = process.env.AUDIOBOOKSHELF_GID
const SOURCE = process.env.SOURCE || 'docker'
const ROUTER_BASE_PATH = process.env.ROUTER_BASE_PATH || ''
const MEDIA_BASE_PATH = process.env.MEDIA_BASE_PATH || ''
console.log('Config', CONFIG_PATH, METADATA_PATH)
const Server = new server(SOURCE, PORT, HOST, UID, GID, CONFIG_PATH, METADATA_PATH, ROUTER_BASE_PATH)
const Server = new server(SOURCE, PORT, HOST, UID, GID, CONFIG_PATH, METADATA_PATH, ROUTER_BASE_PATH, MEDIA_BASE_PATH)
Server.start()

View file

@ -38,7 +38,7 @@ const TaskManager = require('./managers/TaskManager')
const EBookManager = require('./managers/EBookManager')
class Server {
constructor(SOURCE, PORT, HOST, UID, GID, CONFIG_PATH, METADATA_PATH, ROUTER_BASE_PATH) {
constructor(SOURCE, PORT, HOST, UID, GID, CONFIG_PATH, METADATA_PATH, ROUTER_BASE_PATH, MEDIA_BASE_PATH) {
this.Port = PORT
this.Host = HOST
global.Source = SOURCE
@ -48,6 +48,7 @@ class Server {
global.ConfigPath = fileUtils.filePathToPOSIX(Path.normalize(CONFIG_PATH))
global.MetadataPath = fileUtils.filePathToPOSIX(Path.normalize(METADATA_PATH))
global.RouterBasePath = ROUTER_BASE_PATH
global.MediaBasePath = MEDIA_BASE_PATH
if (!fs.pathExistsSync(global.ConfigPath)) {
fs.mkdirSync(global.ConfigPath)

View file

@ -27,15 +27,20 @@ class LibraryController {
return f
})
for (const folder of newLibraryPayload.folders) {
const path = folder.fullPath
if (!path.startsWith(global.MediaBasePath)) {
Logger.warn(`${path} is not in media base directory`)
return res.status(400).send(`${path} is not in media base directory`)
}
try {
const direxists = await fs.pathExists(folder.fullPath)
const direxists = await fs.pathExists(path)
if (!direxists) { // If folder does not exist try to make it and set file permissions/owner
await fs.mkdir(folder.fullPath)
await filePerms.setDefault(folder.fullPath)
await fs.mkdir(path)
await filePerms.setDefault(path)
}
} catch (error) {
Logger.error(`[LibraryController] Failed to ensure folder dir "${folder.fullPath}"`, error)
return res.status(400).send(`Invalid folder directory "${folder.fullPath}"`)
Logger.error(`Failed to ensure folder dir "${path}"`, error)
return res.status(400).send(`Invalid folder directory "${path}"`)
}
}
@ -97,6 +102,10 @@ class LibraryController {
return f
})
for (const path of newFolderPaths) {
if (!path.startsWith(global.MediaBasePath)) {
Logger.warn(`${path} is not in media base directory`)
return res.status(400).send(`${path} is not in media base directory`)
}
const pathExists = await fs.pathExists(path)
if (!pathExists) {
// Ensure dir will recursively create directories which might be preferred over mkdir