[mirotalksfu] - add sentry
هذا الالتزام موجود في:
@@ -9,9 +9,17 @@ module.exports = class Logger {
|
|||||||
|
|
||||||
debug(msg, op = '') {
|
debug(msg, op = '') {
|
||||||
if (this.debugOn === false) return;
|
if (this.debugOn === false) return;
|
||||||
|
console.debug('[' + this.getDataTime() + '] [' + this.appName + '] ' + msg, op);
|
||||||
|
}
|
||||||
|
|
||||||
|
log(msg, op = '') {
|
||||||
console.log('[' + this.getDataTime() + '] [' + this.appName + '] ' + msg, op);
|
console.log('[' + this.getDataTime() + '] [' + this.appName + '] ' + msg, op);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
info(msg, op = '') {
|
||||||
|
console.info('[' + this.getDataTime() + '] [' + this.appName + '] ' + msg, op);
|
||||||
|
}
|
||||||
|
|
||||||
warn(msg, op = '') {
|
warn(msg, op = '') {
|
||||||
console.warn('[' + this.getDataTime() + '] [' + this.appName + '] ' + msg, op);
|
console.warn('[' + this.getDataTime() + '] [' + this.appName + '] ' + msg, op);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ const log = new Logger('Server');
|
|||||||
const yamlJS = require('yamljs');
|
const yamlJS = require('yamljs');
|
||||||
const swaggerUi = require('swagger-ui-express');
|
const swaggerUi = require('swagger-ui-express');
|
||||||
const swaggerDocument = yamlJS.load(path.join(__dirname + '/../api/swagger.yaml'));
|
const swaggerDocument = yamlJS.load(path.join(__dirname + '/../api/swagger.yaml'));
|
||||||
|
const Sentry = require('@sentry/node');
|
||||||
|
const { CaptureConsole } = require('@sentry/integrations');
|
||||||
|
|
||||||
const app = express();
|
const app = express();
|
||||||
|
|
||||||
@@ -43,6 +45,30 @@ const hostCfg = {
|
|||||||
const apiBasePath = '/api/v1'; // api endpoint path
|
const apiBasePath = '/api/v1'; // api endpoint path
|
||||||
const api_docs = host + apiBasePath + '/docs'; // api docs
|
const api_docs = host + apiBasePath + '/docs'; // api docs
|
||||||
|
|
||||||
|
// Sentry monitoring
|
||||||
|
const sentryEnabled = config.sentry.enabled;
|
||||||
|
const sentryDSN = config.sentry.DSN;
|
||||||
|
const sentryTracesSampleRate = config.sentry.tracesSampleRate;
|
||||||
|
if (sentryEnabled) {
|
||||||
|
Sentry.init({
|
||||||
|
dsn: sentryDSN,
|
||||||
|
integrations: [
|
||||||
|
new CaptureConsole({
|
||||||
|
// ['log', 'info', 'warn', 'error', 'debug', 'assert']
|
||||||
|
levels: ['warn', 'error'],
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
tracesSampleRate: sentryTracesSampleRate,
|
||||||
|
});
|
||||||
|
/*
|
||||||
|
log.log('test-log');
|
||||||
|
log.info('test-info');
|
||||||
|
log.warn('test-warning');
|
||||||
|
log.warn('test-error');
|
||||||
|
log.warn('test-debug');
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
// Authenticated IP by Login
|
// Authenticated IP by Login
|
||||||
let authHost;
|
let authHost;
|
||||||
|
|
||||||
@@ -258,6 +284,7 @@ async function ngrokStart() {
|
|||||||
tunnel: tunnel,
|
tunnel: tunnel,
|
||||||
api_docs: api_docs,
|
api_docs: api_docs,
|
||||||
mediasoup_version: mediasoup.version,
|
mediasoup_version: mediasoup.version,
|
||||||
|
sentry_enabled: sentryEnabled,
|
||||||
});
|
});
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
log.error('Ngrok Start error: ', err);
|
log.error('Ngrok Start error: ', err);
|
||||||
@@ -294,6 +321,7 @@ httpsServer.listen(config.listenPort, () => {
|
|||||||
server: host,
|
server: host,
|
||||||
api_docs: api_docs,
|
api_docs: api_docs,
|
||||||
mediasoup_version: mediasoup.version,
|
mediasoup_version: mediasoup.version,
|
||||||
|
sentry_enabled: sentryEnabled,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -482,7 +510,7 @@ io.on('connection', (socket) => {
|
|||||||
const { params } = await roomList.get(socket.room_id).createWebRtcTransport(socket.id);
|
const { params } = await roomList.get(socket.room_id).createWebRtcTransport(socket.id);
|
||||||
callback(params);
|
callback(params);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
log.error('Create WebRtc Transport error: ', err);
|
log.error('Create WebRtc Transport error: ', err.message);
|
||||||
callback({
|
callback({
|
||||||
error: err.message,
|
error: err.message,
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -44,6 +44,17 @@ module.exports = {
|
|||||||
*/
|
*/
|
||||||
ngrokAuthToken: '',
|
ngrokAuthToken: '',
|
||||||
apiKeySecret: 'mirotalksfu_default_secret',
|
apiKeySecret: 'mirotalksfu_default_secret',
|
||||||
|
sentry: {
|
||||||
|
/*
|
||||||
|
Sentry
|
||||||
|
1. Goto https://sentry.io/
|
||||||
|
2. Create account
|
||||||
|
3. On dashboard goto Settings/Projects/YourProjectName/Client Keys (DSN)
|
||||||
|
*/
|
||||||
|
enabled: false,
|
||||||
|
DSN: '',
|
||||||
|
tracesSampleRate: 0.5,
|
||||||
|
},
|
||||||
mediasoup: {
|
mediasoup: {
|
||||||
// Worker settings
|
// Worker settings
|
||||||
numWorkers: Object.keys(os.cpus()).length,
|
numWorkers: Object.keys(os.cpus()).length,
|
||||||
|
|||||||
@@ -18,11 +18,13 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"compression": "1.7.4",
|
"compression": "1.7.4",
|
||||||
"cors": "2.8.5",
|
"cors": "2.8.5",
|
||||||
"express": "4.17.2",
|
"express": "4.17.3",
|
||||||
"httpolyglot": "0.1.2",
|
"httpolyglot": "0.1.2",
|
||||||
"mediasoup": "3.9.6",
|
"mediasoup": "3.9.6",
|
||||||
"mediasoup-client": "3.6.50",
|
"mediasoup-client": "3.6.50",
|
||||||
"ngrok": "4.3.0",
|
"ngrok": "4.3.0",
|
||||||
|
"@sentry/node": "^6.17.9",
|
||||||
|
"@sentry/integrations": "^6.17.9",
|
||||||
"socket.io": "4.4.1",
|
"socket.io": "4.4.1",
|
||||||
"swagger-ui-express": "4.3.0",
|
"swagger-ui-express": "4.3.0",
|
||||||
"uuid": "8.3.2",
|
"uuid": "8.3.2",
|
||||||
|
|||||||
@@ -1540,6 +1540,8 @@ function adaptAspectRatio(participantsCount) {
|
|||||||
// desktop aspect ratio
|
// desktop aspect ratio
|
||||||
switch (participantsCount) {
|
switch (participantsCount) {
|
||||||
case 1:
|
case 1:
|
||||||
|
desktop = 0; // (0:0)
|
||||||
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
case 4:
|
case 4:
|
||||||
case 7:
|
case 7:
|
||||||
|
|||||||
المرجع في مشكلة جديدة
حظر مستخدم