Version 5.0.4

This commit is contained in:
Chrystian Huot 2021-02-11 09:28:45 -05:00
parent 3a9f00765b
commit 120c3288df
11 changed files with 3543 additions and 1922 deletions

View file

@ -18,6 +18,13 @@ _v5.0.3_
- Fix error with docker builds where sequelize can't find the sqlite database.
_v5.0.4_
- Improvement to load-rrdb and load-rr functions.
- Sort groups on the selection panel.
- Allow downstream to other instances running with self-signed certificates.
- Node modules update.
# Version 4.9
- Add basic duplicate call detection and rejection.

4757
client/package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,29 +1,29 @@
{
"author": "Chrystian Huot <chrystian.huot@saubeo.solutions>",
"dependencies": {
"@angular/animations": "^11.0.7",
"@angular/cdk": "^11.0.3",
"@angular/common": "~11.0.7",
"@angular/compiler": "~11.0.7",
"@angular/core": "~11.0.7",
"@angular/forms": "~11.0.7",
"@angular/material": "^11.0.3",
"@angular/platform-browser": "~11.0.7",
"@angular/platform-browser-dynamic": "~11.0.7",
"@angular/service-worker": "~11.0.7",
"@angular/animations": "^11.2.0",
"@angular/cdk": "^11.2.0",
"@angular/common": "~11.2.0",
"@angular/compiler": "~11.2.0",
"@angular/core": "~11.2.0",
"@angular/forms": "~11.2.0",
"@angular/material": "^11.2.0",
"@angular/platform-browser": "~11.2.0",
"@angular/platform-browser-dynamic": "~11.2.0",
"@angular/service-worker": "~11.2.0",
"rxjs": "~6.6.3",
"tslib": "^2.1.0",
"zone.js": "~0.11.3"
},
"devDependencies": {
"@angular-devkit/build-angular": "~0.1100.6",
"@angular/cli": "^11.0.6",
"@angular/compiler-cli": "~11.0.7",
"@types/node": "~14.14.20",
"@angular-devkit/build-angular": "~0.1101.4",
"@angular/cli": "^11.1.4",
"@angular/compiler-cli": "~11.2.0",
"@types/node": "~14.14.25",
"codelyzer": "^6.0.1",
"ts-node": "~9.1.1",
"tslint": "~6.1.3",
"typescript": "~4.0.5"
"typescript": "~4.1.5"
},
"license": "LICENSE",
"name": "rdio-scanner-client",
@ -32,5 +32,5 @@
"build": "ng build --base-href ./ --prod",
"start": "ng serve"
},
"version": "5.0.3"
"version": "5.0.4"
}

View file

@ -1,4 +1,4 @@
<mat-sidenav-container>
<mat-sidenav-container [hasBackdrop]="false">
<mat-sidenav #searchPanel [autoFocus]="false" [disableClose]="true" position="start">
<div class="panel search">
<mat-toolbar>

View file

@ -451,7 +451,7 @@ export class AppRdioScannerService implements OnDestroy {
}
queue(call: RdioScannerCall, options?: { priority?: boolean }): void {
if (!call?.audio) {
if (!call?.audio || this.livefeedMode === RdioScannerLivefeedMode.Offline) {
return;
}
@ -889,7 +889,7 @@ export class AppRdioScannerService implements OnDestroy {
const status = allOff ? RdioScannerGroupStatus.Off : allOn ? RdioScannerGroupStatus.On : RdioScannerGroupStatus.Partial;
return { label, status };
});
}).sort((a, b) => a.label.localeCompare(b.label));
}
private rebuildLivefeedMap(): void {

View file

@ -10,5 +10,5 @@
"start": "node run",
"update": "node update"
},
"version": "5.0.3"
"version": "5.0.4"
}

1
server/.gitignore vendored
View file

@ -1,4 +1,5 @@
/.env
/*.crt
/*.pem
/*.key
/config.json*

View file

@ -21,7 +21,7 @@
const EventEmitter = require('events');
const FormData = require('form-data');
const url = require('url');
const { URL } = require('url');
class Downstream {
constructor(ctx = {}) {
@ -111,7 +111,7 @@ class Downstream {
}
exportCallToRdioScanner(call, downstream) {
const apiUrl = url.resolve(downstream.url, '/api/call-upload');
const apiUrl = new URL('/api/call-upload', downstream.url);
const form = new FormData();
@ -136,7 +136,13 @@ class Downstream {
form.append('system', this.getSystemId(call, downstream));
form.append('talkgroup', this.getTalkgroupId(call, downstream));
form.submit(apiUrl, (error, response) => {
form.submit({
host: apiUrl.hostname,
path: apiUrl.pathname,
port: apiUrl.port,
protocol: apiUrl.protocol,
rejectUnauthorized: false,
}, (error, response) => {
const message = `Downstream: system=${call.system} talkgroup=${call.talkgroup} file=${call.audioName} to=${downstream.url}`;
if (error) {

View file

@ -64,7 +64,7 @@ class Utils {
}
}
system.talkgroups.sort((a, b) => a.id - b.id);
system.talkgroups.sort((a, b) => a.label.localeCompare(b.label));
this.config.systems = this.config.systems.filter((system) => system.id !== sysId);
@ -99,18 +99,19 @@ class Utils {
};
for (let line of csv) {
const encrypted = typeof line[2] === 'string' ? line[2].includes('E') : false;
const id = parseInt(line[0], 10);
const label = line[3] || '';
const name = line[4] || '';
const tag = line[5] || '';
const group = line[6] || '';
if (id > 0 && label.length && name.length && tag.length && group.length) {
if (!encrypted && id > 0 && label.length && name.length && tag.length && group.length) {
system.talkgroups.push({ id, label, name, tag, group });
}
}
system.talkgroups.sort((a, b) => a.id - b.id);
system.talkgroups.sort((a, b) => a.label.localeCompare(b.label));
this.config.systems = this.config.systems.filter((system) => system.id !== sysId);

605
server/package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,28 +1,28 @@
{
"author": "Chrystian Huot <chrystian.huot@saubeo.solutions>",
"dependencies": {
"chokidar": "^3.5.0",
"chokidar": "^3.5.1",
"cors": "^2.8.5",
"dotenv": "^8.2.0",
"express": "^4.17.1",
"form-data": "^3.0.0",
"helmet": "^4.3.1",
"helmet": "^4.4.1",
"mariadb": "^2.5.2",
"mime-types": "^2.1.28",
"multer": "^1.4.2",
"mysql2": "^2.2.5",
"nodemon": "^2.0.7",
"pg": "^8.5.1",
"sequelize": "^6.3.5",
"sequelize": "^6.5.0",
"sqlite3": "^5.0.1",
"umzug": "^2.3.0",
"uuid": "^8.3.2",
"ws": "^7.4.2"
"ws": "^7.4.3"
},
"devDependencies": {
"eslint": "^7.17.0",
"webpack": "^5.12.1",
"webpack-cli": "^4.3.1",
"eslint": "^7.19.0",
"webpack": "^5.21.2",
"webpack-cli": "^4.5.0",
"webpack-node-externals": "^2.5.2"
},
"license": "LICENSE",
@ -39,5 +39,5 @@
"build": "webpack",
"start": "nodemon"
},
"version": "5.0.3"
"version": "5.0.4"
}