mirror of
https://github.com/chuot/rdio-scanner.git
synced 2026-08-13 16:33:01 -06:00
Version 5.0.4
This commit is contained in:
parent
3a9f00765b
commit
120c3288df
|
|
@ -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
4757
client/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -10,5 +10,5 @@
|
|||
"start": "node run",
|
||||
"update": "node update"
|
||||
},
|
||||
"version": "5.0.3"
|
||||
"version": "5.0.4"
|
||||
}
|
||||
|
|
|
|||
1
server/.gitignore
vendored
1
server/.gitignore
vendored
|
|
@ -1,4 +1,5 @@
|
|||
/.env
|
||||
/*.crt
|
||||
/*.pem
|
||||
/*.key
|
||||
/config.json*
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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
605
server/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue