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 GID = process.env.AUDIOBOOKSHELF_GID
const SOURCE = process.env.SOURCE || 'docker' const SOURCE = process.env.SOURCE || 'docker'
const ROUTER_BASE_PATH = process.env.ROUTER_BASE_PATH || '' 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) 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() Server.start()

View file

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

View file

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