Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
})
}
// Bind any static paths from the host machine
const staticPaths = this.config.get('api.staticPaths', [])
if (staticPaths.length > 0) {
let basePath = getBasePath(this.config)
for (let p of staticPaths) {
if (!path.isAbsolute(p.path)) {
p.path = path.join(basePath, p.path)
}
const handlers = [
express.static(p.path),
serveIndex(p.path)
]
if (p.allowDelete) {
// Add a handler for delete
handlers.splice(0, 0, function (req, res, next) {
if (req.method !== 'DELETE') {
next()
return
}
const fullPath = path.join(p.path, req.url)
log.info('Deleting file: ' + fullPath)
fs.unlink(fullPath, err => {
if (err) {
if (err.code === 'ENOENT') {
)
return res.status(401).json({ response: 'API key is incorrect' })
}
return true
}
const app = express()
app.use(express.json())
app.use(cors({ credentials: true, origin: ['http://127.0.0.1:3000'] }))
app.use(express.static(`${__dirname}/app/build`))
// Serve out icons folder
app.use('/icons', express.static(`${__dirname}/../../data/images/icons`))
app.use('/icons', serveIndex(`${__dirname}/../../data/images/icons`))
// Home page
app.get('/', (req, res) => res.sendFile('/index.html'))
// Get DB info
app.get('/api/db/app', async (req, res) => {
const db = await generalConfig.findOne({ where: { id: ownerID } })
return res.status(200).json(JSON.parse(db.dataValues.config))
})
// Set DB info
app.post('/api/db/app', async (req, res) => {
Log.info('Web Server', `DB update from [ ${req.ip} ]`)
const db = await generalConfig.findOne({ where: { id: ownerID } })
if (req.body.config) {
await db.update({ config: JSON.stringify(req.body.config) })
else {
// Restore the request to its original form.
request.originalUrl = request.url = originalUrl;
parseUrl(request);
}
}
}
/**
* Because serveIndex() does not know about Defiant's directory structure,
* it assumes that all the files' paths are relative to the domain. We must
* therefore intercept the function that prints the file listing and inject the
* proper subdirectory path.
*/
const originalServeIndexHtml = serveIndex.html;
serveIndex.html = function() {
if (arguments[0].__defiant_discarded) {
if (arguments[4] == '/') {
arguments[2].unshift('..');
}
arguments[4] = arguments[0].__defiant_discarded + arguments[4];
}
originalServeIndexHtml.apply(this, arguments);
};
module.exports = ServeDirectory;
}
else {
// Restore the request to its original form.
request.originalUrl = request.url = originalUrl;
parseUrl(request);
}
}
}
/**
* Because serveIndex() does not know about Defiant's directory structure,
* it assumes that all the files' paths are relative to the domain. We must
* therefore intercept the function that prints the file listing and inject the
* proper subdirectory path.
*/
const originalServeIndexHtml = serveIndex.html;
serveIndex.html = function() {
if (arguments[0].__defiant_discarded) {
if (arguments[4] == '/') {
arguments[2].unshift('..');
}
arguments[4] = arguments[0].__defiant_discarded + arguments[4];
}
originalServeIndexHtml.apply(this, arguments);
};
module.exports = ServeDirectory;
gulp.task('serve', unusedCallback => {
const port = options.port || 3000;
const app = express();
const rootDirectory = projectOrStar === '*' ?
'projects' :
path.join('projects', projectOrStar);
app.use(serveStatic(rootDirectory));
app.use(serveIndex(rootDirectory, {view: 'details'}));
app.listen(port, () => {
console.log(`Serving '${rootDirectory}' at http://localhost:${port}/`);
});
});
private setup() {
this.server = express()
this.server
.get('*', (req, res, next) =>
this.preprocess(req, res).then(() => {
if (!res.finished) next()
})
)
.use(express.static(this.inputDir))
.use(serveIndex(this.inputDir, { template: this.template.bind(this) }))
}
factory: () => serverIndex(this.getConfig('emailsDir')),
},