Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 uid=33(www-data) gid=33(www-data) groups=33(www-data) Safe-mode: OFF (not secure) /usr/local/lib/node_modules/homebridge-camera-ui/server/ drwxr-xr-x | |
| Viewing file: Select action/file-type: /* eslint-disable unicorn/prevent-abbreviations */
'use-strict';
const packageJson = require('../package.json');
const cors = require('cors');
const fs = require('fs-extra');
const helmet = require('helmet');
const history = require('connect-history-api-fallback');
const morgan = require('morgan');
const multer = require('multer');
const path = require('path');
const os = require('os');
const express = require('express');
const app = express();
//swagger
const swaggerJsdoc = require('swagger-jsdoc');
const swaggerUi = require('swagger-ui-express');
const swaggerOptions = require('./swagger');
const specs = swaggerJsdoc(swaggerOptions);
const AuthRouter = require('./components/auth/auth.routes');
const BackupRouter = require('./components/backup/backup.routes');
const CamerasRouter = require('./components/cameras/cameras.routes');
const ConfigRouter = require('./components/config/config.routes');
const FilesRouter = require('./components/files/files.routes');
const NotificationsRouter = require('./components/notifications/notifications.routes');
const RecordingsRouter = require('./components/recordings/recordings.routes');
const SettingsRouter = require('./components/settings/settings.routes');
const SubscribeRouter = require('./components/subscribe/subscribe.routes');
const UsersRouter = require('./components/users/users.routes');
const config = require('../services/config/config.service');
app.use(cors());
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(helmet());
app.use(
helmet.contentSecurityPolicy({
directives: {
// eslint-disable-next-line quotes
defaultSrc: ["'unsafe-eval'", "'unsafe-inline'", "'self'"],
// eslint-disable-next-line quotes
scriptSrc: ["'unsafe-eval'", "'unsafe-inline'", "'self'", 'https://*.googleapis.com', 'blob:'],
// eslint-disable-next-line quotes
connectSrc: ['ws:', 'wss:', "'unsafe-eval'", "'unsafe-inline'", "'self'"],
// eslint-disable-next-line quotes
'img-src': ["'unsafe-eval'", "'unsafe-inline'", "'self'", 'data:', 'blob:'],
// eslint-disable-next-line quotes
'media-src': ["'unsafe-eval'", "'unsafe-inline'", "'self'", 'data:', 'blob:'],
},
})
);
app.use(morgan('dev', { skip: () => !config.plugin.debug }));
const backupUpload = multer({
storage: multer.diskStorage({
destination: async (request, file, callback) => {
const backupDirectory = await fs.mkdtemp(path.join(os.tmpdir(), 'cameraui-restore-'));
callback(null, backupDirectory);
},
filename: (request, file, callback) => {
callback(null, file.originalname);
},
}),
});
AuthRouter.routesConfig(app);
BackupRouter.routesConfig(app, backupUpload);
CamerasRouter.routesConfig(app);
ConfigRouter.routesConfig(app);
FilesRouter.routesConfig(app);
NotificationsRouter.routesConfig(app);
RecordingsRouter.routesConfig(app);
SettingsRouter.routesConfig(app);
SubscribeRouter.routesConfig(app);
UsersRouter.routesConfig(app);
app.get('/version', (req, res) => {
res.status(200).send({
version: packageJson.version,
});
});
app.use(
'/swagger',
swaggerUi.serve,
swaggerUi.setup(specs, {
explorer: true,
swaggerOptions: {
displayRequestDuration: true,
docExpansion: 'none',
filter: false,
showExtensions: true,
showCommonExtensions: true,
displayOperationId: false,
},
})
);
app.use(history({ index: 'index.html', verbose: config.debug }));
app.use(express.static(path.join(__dirname, '../interface')));
module.exports = app;
|
:: Command execute :: | |
--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0151 ]-- |