diff --git a/CHANGELOG.md b/CHANGELOG.md index 15b5c45..5ab7381 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,12 @@ _v6.2.3_ - Fix regex for units in driwatch type SDRTrunk (discussion #155). - Update SQLite driver. +_v6.2.4_ + +- Fix call frequencies table not being transmitted to downstream. +- Avoid using setInterval and setTimeout in the webapp. +- Fix talkgroup search filter upon new configuration (issue #158). + ## Version 6.1 - Calls now support patched talkgroups. diff --git a/COMPILING.md b/COMPILING.md index b5abb1c..bab3ffb 100644 --- a/COMPILING.md +++ b/COMPILING.md @@ -26,13 +26,13 @@ Clone the official repository on your computer and start the build process. When finished, you will find the precompiled versions for various platforms in the `dist` folder. - rdio-scanner-darwin-amd64-v6.2.3.zip - rdio-scanner-darwin-arm64-v6.2.3.zip - rdio-scanner-freebsd-amd64-v6.2.3.zip - rdio-scanner-linux-386-v6.2.3.zip - rdio-scanner-linux-amd64-v6.2.3.zip - rdio-scanner-linux-arm64-v6.2.3.zip - rdio-scanner-linux-arm-v6.2.3.zip - rdio-scanner-windows-amd64-v6.2.3.zip + rdio-scanner-darwin-amd64-v6.2.4.zip + rdio-scanner-darwin-arm64-v6.2.4.zip + rdio-scanner-freebsd-amd64-v6.2.4.zip + rdio-scanner-linux-386-v6.2.4.zip + rdio-scanner-linux-amd64-v6.2.4.zip + rdio-scanner-linux-arm64-v6.2.4.zip + rdio-scanner-linux-arm-v6.2.4.zip + rdio-scanner-windows-amd64-v6.2.4.zip **Happy Rdio scanning !** \ No newline at end of file diff --git a/Makefile b/Makefile index 527a69e..0f17bd2 100644 --- a/Makefile +++ b/Makefile @@ -16,8 +16,8 @@ ################################################################################ app := rdio-scanner -date := 2022/03/30 -ver := 6.2.3 +date := 2022/04/04 +ver := 6.2.4 client := $(wildcard client/*.json client/*.ts) server := $(wildcard server/*.go) diff --git a/client/package.json b/client/package.json index 848f294..51a792c 100644 --- a/client/package.json +++ b/client/package.json @@ -38,5 +38,5 @@ "build": "ng build --base-href ./ --configuration production", "start": "ng serve" }, - "version": "6.2.3" + "version": "6.2.4" } diff --git a/client/src/app/components/rdio-scanner/admin/admin.service.ts b/client/src/app/components/rdio-scanner/admin/admin.service.ts index 11f92a0..6f2a0a2 100644 --- a/client/src/app/components/rdio-scanner/admin/admin.service.ts +++ b/client/src/app/components/rdio-scanner/admin/admin.service.ts @@ -21,7 +21,7 @@ import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http import { EventEmitter, Injectable, OnDestroy } from '@angular/core'; import { AbstractControl, FormBuilder, FormGroup, ValidationErrors, ValidatorFn, Validators } from '@angular/forms'; import { MatSnackBar } from '@angular/material/snack-bar'; -import { firstValueFrom } from 'rxjs'; +import { firstValueFrom, timer } from 'rxjs'; import { AppUpdateService } from '../../../shared/update/update.service'; export interface Access { @@ -539,7 +539,7 @@ export class RdioScannerAdminService implements OnDestroy { this.event.emit({ authenticated: this.authenticated }); } else { - setTimeout(() => this.configWebSocketReconnect(), 2000); + timer(2000).subscribe(() => this.configWebSocketReconnect()); } }; diff --git a/client/src/app/components/rdio-scanner/main/main.component.ts b/client/src/app/components/rdio-scanner/main/main.component.ts index e0005ab..29936d9 100644 --- a/client/src/app/components/rdio-scanner/main/main.component.ts +++ b/client/src/app/components/rdio-scanner/main/main.component.ts @@ -20,6 +20,7 @@ import { ChangeDetectorRef, Component, EventEmitter, OnDestroy, OnInit, Output, ViewChild } from '@angular/core'; import { FormBuilder } from '@angular/forms'; import { MatInput } from '@angular/material/input'; +import { Subscription, timer } from 'rxjs'; import packageInfo from '../../../../../package.json'; import { RdioScannerAvoidOptions, @@ -112,11 +113,11 @@ export class RdioScannerMainComponent implements OnDestroy, OnInit { @ViewChild('password', { read: MatInput }) private authPassword: MatInput | undefined; - private clockTimer: number | undefined; + private clockTimer: Subscription | undefined; private config: RdioScannerConfig | undefined; - private dimmerTimer: number | undefined; + private dimmerTimer: Subscription | undefined; private eventSubscription = this.rdioScannerService.event.subscribe((event: RdioScannerEvent) => this.eventHandler(event)); @@ -213,9 +214,7 @@ export class RdioScannerMainComponent implements OnDestroy, OnInit { } ngOnDestroy(): void { - if (this.clockTimer) { - clearInterval(this.clockTimer); - } + this.clockTimer?.unsubscribe(); this.eventSubscription.unsubscribe(); } @@ -435,34 +434,28 @@ export class RdioScannerMainComponent implements OnDestroy, OnInit { } private syncClock(): void { - if (this.clockTimer) { - clearInterval(this.clockTimer); - } + this.clockTimer?.unsubscribe(); this.clock = new Date(); - this.clockTimer = window.setInterval(() => this.syncClock(), 1000 * (60 - this.clock.getSeconds())); + this.clockTimer = timer(1000 * (60 - this.clock.getSeconds())).subscribe(() => this.syncClock()); } private updateDimmer(): void { if (typeof this.config?.dimmerDelay === 'number') { - if (this.dimmerTimer) { - clearTimeout(this.dimmerTimer); - } + this.dimmerTimer?.unsubscribe(); this.dimmer = true; - this.dimmerTimer = window.setTimeout(() => { - if (this.dimmerTimer) { - clearTimeout(this.dimmerTimer); - } + this.dimmerTimer = timer(this.config.dimmerDelay).subscribe(() => { + this.dimmerTimer?.unsubscribe(); this.dimmerTimer = undefined; this.dimmer = false; this.ngChangeDetectorRef.detectChanges(); - }, this.config.dimmerDelay); + }); } } diff --git a/client/src/app/components/rdio-scanner/native/native.component.ts b/client/src/app/components/rdio-scanner/native/native.component.ts index ae906b0..43822c8 100644 --- a/client/src/app/components/rdio-scanner/native/native.component.ts +++ b/client/src/app/components/rdio-scanner/native/native.component.ts @@ -19,6 +19,7 @@ import { Component, Optional, OnInit } from '@angular/core'; import { MatSnackBarRef } from '@angular/material/snack-bar'; +import { timer } from 'rxjs'; @Component({ selector: 'RdioScannerNative', @@ -55,7 +56,7 @@ export class RdioScannerNativeComponent implements OnInit { } private wait(): void { - setTimeout(() => { + timer(1000).subscribe(() => { this.countdown--; if (this.countdown < 1) { @@ -64,6 +65,6 @@ export class RdioScannerNativeComponent implements OnInit { } else { this.wait(); } - }, 1000); + }); } } \ No newline at end of file diff --git a/client/src/app/components/rdio-scanner/rdio-scanner.component.ts b/client/src/app/components/rdio-scanner/rdio-scanner.component.ts index 378dfbb..8c1fa5e 100644 --- a/client/src/app/components/rdio-scanner/rdio-scanner.component.ts +++ b/client/src/app/components/rdio-scanner/rdio-scanner.component.ts @@ -20,6 +20,7 @@ import { Component, ElementRef, HostListener, OnDestroy, OnInit, ViewChild } from '@angular/core'; import { MatSidenav } from '@angular/material/sidenav'; import { MatSnackBar } from '@angular/material/snack-bar'; +import { timer } from 'rxjs'; import { RdioScannerEvent, RdioScannerLivefeedMode } from './rdio-scanner'; import { RdioScannerService } from './rdio-scanner.service'; import { RdioScannerNativeComponent } from './native/native.component'; @@ -79,13 +80,13 @@ export class RdioScannerComponent implements OnDestroy, OnInit { * Be respectful, sponsor the project if you can, use native apps when possible. * */ - setTimeout(() => { + timer(10000).subscribe(() => { const ua: String = navigator.userAgent; if (ua.includes('Android') || ua.includes('iPad') || ua.includes('iPhone')) { this.matSnackBar.openFromComponent(RdioScannerNativeComponent, { panelClass: 'snackbar-white' }); } - }, 10000); + }); /** * END OF RED TAPE. */ diff --git a/client/src/app/components/rdio-scanner/rdio-scanner.service.ts b/client/src/app/components/rdio-scanner/rdio-scanner.service.ts index 6f33f02..09c273d 100644 --- a/client/src/app/components/rdio-scanner/rdio-scanner.service.ts +++ b/client/src/app/components/rdio-scanner/rdio-scanner.service.ts @@ -19,6 +19,8 @@ import { DOCUMENT } from '@angular/common'; import { EventEmitter, Inject, Injectable, OnDestroy } from '@angular/core'; +import { interval, Subscription, timer } from 'rxjs'; +import { takeWhile } from 'rxjs/operators'; import { AppUpdateService } from '../../shared/update/update.service'; import { RdioScannerAvoidOptions, @@ -95,7 +97,7 @@ export class RdioScannerService implements OnDestroy { private playbackList: RdioScannerPlaybackList | undefined; private playbackPending: number | undefined; - private skipDelay: number | undefined; + private skipDelay: Subscription | undefined; private websocket: WebSocket | undefined; @@ -361,7 +363,7 @@ export class RdioScannerService implements OnDestroy { } if (this.skipDelay) { - clearTimeout(this.skipDelay); + this.skipDelay.unsubscribe(); this.skipDelay = undefined; } @@ -457,12 +459,7 @@ export class RdioScannerService implements OnDestroy { this.event.emit({ call: this.call, queue }); - let interval = setInterval(() => { - if (!this.call) { - clearInterval(interval); - return; - } - + interval(500).pipe(takeWhile(() => !!this.call)).subscribe(() => { if (this.audioContext && !isNaN(this.audioContext.currentTime)) { if (isNaN(this.audioSourceStartTime)) { this.audioSourceStartTime = this.audioContext.currentTime; @@ -472,7 +469,7 @@ export class RdioScannerService implements OnDestroy { this.event.emit({ time: this.audioContext.currentTime - this.audioSourceStartTime }); } } - }, 500); + }); }, () => { this.event.emit({ call: this.call, queue }); @@ -523,15 +520,15 @@ export class RdioScannerService implements OnDestroy { this.stop(); if (options?.delay) { - this.skipDelay = window.setTimeout(() => { + this.skipDelay = timer(1000).subscribe(() => { this.skipDelay = undefined; play(); - }, 1000); + }); } else { if (this.skipDelay) { - clearTimeout(this.skipDelay); + this.skipDelay?.unsubscribe(); this.skipDelay = undefined; } @@ -778,7 +775,7 @@ export class RdioScannerService implements OnDestroy { this.event.emit({ linked: false }); if (ev.code !== 1000) { - setTimeout(() => this.reconnectWebsocket(), 2000); + timer(2000).subscribe(() => this.reconnectWebsocket()); } }; diff --git a/client/src/app/components/rdio-scanner/search/search.component.ts b/client/src/app/components/rdio-scanner/search/search.component.ts index 254a7a9..1aafd37 100644 --- a/client/src/app/components/rdio-scanner/search/search.component.ts +++ b/client/src/app/components/rdio-scanner/search/search.component.ts @@ -17,7 +17,7 @@ * **************************************************************************** */ -import { ChangeDetectorRef, Component, OnDestroy, ViewChild } from '@angular/core'; +import { ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild } from '@angular/core'; import { FormBuilder } from '@angular/forms'; import { MatPaginator } from '@angular/material/paginator'; import { BehaviorSubject } from 'rxjs'; @@ -38,7 +38,7 @@ import { RdioScannerService } from '../rdio-scanner.service'; styleUrls: ['./search.component.scss'], templateUrl: './search.component.html', }) -export class RdioScannerSearchComponent implements OnDestroy { +export class RdioScannerSearchComponent implements OnDestroy, OnInit { call: RdioScannerCall | undefined; callPending: number | undefined; @@ -102,6 +102,10 @@ export class RdioScannerSearchComponent implements OnDestroy { this.eventSubscription.unsubscribe(); } + ngOnInit(): void { + + } + play(id: number): void { this.rdioScannerService.loadAndPlay(id); } @@ -311,7 +315,6 @@ export class RdioScannerSearchComponent implements OnDestroy { this.optionsGroup = Object.keys(this.config?.groups || []).sort((a, b) => a.localeCompare(b)); this.optionsSystem = (this.config?.systems || []).map((system) => system.label); this.optionsTag = Object.keys(this.config?.tags || []).sort((a, b) => a.localeCompare(b)); - this.optionsTalkgroup = []; } if ('livefeedMode' in event) { diff --git a/docs/platforms/darwin.md b/docs/platforms/darwin.md index 6588d80..9a62eab 100644 --- a/docs/platforms/darwin.md +++ b/docs/platforms/darwin.md @@ -42,8 +42,8 @@ ALWAYS DOWNLOAD THE LATEST VERSION OF [RDIO SCANNER](https://github.com/chuot/rd rdio@macos ~ % mkdir rdio-scanner rdio@macos ~ % cd rdio-scanner rdio@macos rdio-scanner % unzip \ - > ~/Downloads/rdio-scanner-darwin-arm64-v6.2.3.zip - Archive: /Users/rdio/Downloads/rdio-scanner-darwin-arm64-v6.2.3.zip + > ~/Downloads/rdio-scanner-darwin-arm64-v6.2.4.zip + Archive: /Users/rdio/Downloads/rdio-scanner-darwin-arm64-v6.2.4.zip inflating: rdio-scanner inflating: rdio-scanner.pdf @@ -51,11 +51,11 @@ ALWAYS DOWNLOAD THE LATEST VERSION OF [RDIO SCANNER](https://github.com/chuot/rd rdio@macos rdio-scanner % ./rdio-scanner - Rdio Scanner v6.2.3 + Rdio Scanner v6.2.4 ---------------------------------- - 2022/03/30 08:38:06 server started - 2022/03/30 08:38:06 main interface at http://macos.local:3000 - 2022/03/30 08:38:06 admin interface at http://macos.local:3000/admin + 2022/04/04 08:38:06 server started + 2022/04/04 08:38:06 main interface at http://macos.local:3000 + 2022/04/04 08:38:06 admin interface at http://macos.local:3000/admin 4. Access the administrative dashboard to finalize the configuration. @@ -77,11 +77,11 @@ Here we want our [Rdio Scanner](https://guthub.com/chuot/rdio-scanner) instance rdio@macos rdio-scanner % ./rdio-scanner --listen :80 - Rdio Scanner v6.2.3 + Rdio Scanner v6.2.4 ---------------------------------- - 2022/03/30 08:48:03 server started - 2022/03/30 08:48:03 main interface at http://macos.local - 2022/03/30 08:48:03 admin interface at http://macos.local/admin + 2022/04/04 08:48:03 server started + 2022/04/04 08:48:03 main interface at http://macos.local + 2022/04/04 08:48:03 admin interface at http://macos.local/admin ## Listening on a SSL port @@ -95,12 +95,12 @@ You can use your own SSL certificates that match your domain name with `-ssl_cer > -ssl_key_file mykey.key \ > -ssl_listen :443 - Rdio Scanner v6.2.3 + Rdio Scanner v6.2.4 ---------------------------------- - 2022/03/30 08:50:58 server started - 2022/03/30 08:50:58 main interface at http://macos.local - 2022/03/30 08:50:58 main interface at https://macos.local - 2022/03/30 08:50:58 admin interface at https://macos.local/admin + 2022/04/04 08:50:58 server started + 2022/04/04 08:50:58 main interface at http://macos.local + 2022/04/04 08:50:58 main interface at https://macos.local + 2022/04/04 08:50:58 admin interface at https://macos.local/admin If you don't want to worry about SSL certificates, you can use the built-in Let's Encrypt auto-cert feature. This requires that you have both port 80 (HTTP) and port 443 (HTTPS) open to the world. Also, your domain name should point to your IP address where [Rdio Scanner](https://github.com/chuot/rdio-scanner/) is running. The advantage of this approach is that everything is done automatically, no certificate request, no certificate renewal. @@ -118,7 +118,7 @@ You don't want to have to type everytime a long list of arguments. No problem, y > -ssl_auto_cert mydomain.com \ > -ssl_listen :443 \ > -config_save - 2022/03/30 08:52:24 rdio-scanner.ini file created + 2022/04/04 08:52:24 rdio-scanner.ini file created All of your parameters passed as arguments to [Rdio Scanner](https://github.com/chuot/rdio-scanner) have been saved to an INI file which has the same arguments/values list. @@ -132,12 +132,12 @@ Then simply run [Rdio Scanner](https://github.com/chuot/rdio-scanner) without an rdio@macos rdio-scanner % ./rdio-scanner - Rdio Scanner v6.2.3 + Rdio Scanner v6.2.4 ---------------------------------- - 2022/03/30 08:54:08 server started - 2022/03/30 08:54:08 main interface at http://macos.local - 2022/03/30 08:54:08 main interface at https://macos.local - 2022/03/30 08:54:08 admin interface at https://macos.local/admin + 2022/04/04 08:54:08 server started + 2022/04/04 08:54:08 main interface at http://macos.local + 2022/04/04 08:54:08 main interface at https://macos.local + 2022/04/04 08:54:08 admin interface at https://macos.local/admin ## Install Rdio Scanner as a service diff --git a/docs/platforms/freebsd.md b/docs/platforms/freebsd.md index b236e44..65d560e 100644 --- a/docs/platforms/freebsd.md +++ b/docs/platforms/freebsd.md @@ -42,8 +42,8 @@ ALWAYS DOWNLOAD THE LATEST VERSION OF [RDIO SCANNER](https://github.com/chuot/rd rdio@pc-freebsd:~ $ mkdir rdio-scanner rdio@pc-freebsd:~ $ cd rdio-scanner rdio@pc-freebsd:~/rdio-scanner $ unzip \ - > ~/rdio-scanner-freebsd-amd64-v6.2.3.zip - Archive: ../rdio-scanner-freebsd-amd64-v6.2.3.zip + > ~/rdio-scanner-freebsd-amd64-v6.2.4.zip + Archive: ../rdio-scanner-freebsd-amd64-v6.2.4.zip extracting: rdio-scanner extracting: rdio-scanner.pdf @@ -51,11 +51,11 @@ ALWAYS DOWNLOAD THE LATEST VERSION OF [RDIO SCANNER](https://github.com/chuot/rd rdio@pc-freebsd:~/rdio-scanner $ ./rdio-scanner - Rdio Scanner v6.2.3 + Rdio Scanner v6.2.4 ---------------------------------- - 2022/03/30 08:16:36 server started - 2022/03/30 08:16:36 main interface at http://pc-freebsd:3000 - 2022/03/30 08:16:36 admin interface at http://pc-freebsd:3000/admin + 2022/04/04 08:16:36 server started + 2022/04/04 08:16:36 main interface at http://pc-freebsd:3000 + 2022/04/04 08:16:36 admin interface at http://pc-freebsd:3000/admin 4. Access the administrative dashboard to finalize the configuration. @@ -81,11 +81,11 @@ Here we want our [Rdio Scanner](https://guthub.com/chuot/rdio-scanner) instance Password: root@pc-freebsd:/home/rdio/rdio-scanner # ./rdio-scanner -listen :80 - Rdio Scanner v6.2.3 + Rdio Scanner v6.2.4 ---------------------------------- - 2022/03/30 08:19:38 server started - 2022/03/30 08:19:38 main interface at http://pc-freebsd - 2022/03/30 08:19:38 admin interface at http://pc-freebsd/admin + 2022/04/04 08:19:38 server started + 2022/04/04 08:19:38 main interface at http://pc-freebsd + 2022/04/04 08:19:38 admin interface at http://pc-freebsd/admin ## Listening on a SSL port @@ -101,12 +101,12 @@ You can use your own SSL certificates that match your domain name with `-ssl_cer > -ssl_key_file mykey.key \ > -ssl_listen :443 - Rdio Scanner v6.2.3 + Rdio Scanner v6.2.4 ---------------------------------- - 2022/03/30 10:34:29 server started - 2022/03/30 10:34:29 main interface at http://pc-freebsd - 2022/03/30 10:34:29 main interface at https://pc-freebsd - 2022/03/30 10:34:29 admin interface at https://pc-freebsd/admin + 2022/04/04 10:34:29 server started + 2022/04/04 10:34:29 main interface at http://pc-freebsd + 2022/04/04 10:34:29 main interface at https://pc-freebsd + 2022/04/04 10:34:29 admin interface at https://pc-freebsd/admin If you don't want to worry about SSL certificates, you can use the built-in Let's Encrypt auto-cert feature. This requires that you have both port 80 (HTTP) and port 443 (HTTPS) open to the world. Also, your domain name should point to your IP address where [Rdio Scanner](https://github.com/chuot/rdio-scanner/) is running. The advantage of this approach is that everything is done automatically, no certificate request, no certificate renewal. @@ -126,7 +126,7 @@ You don't want to have to type everytime a long list of arguments. No problem, y > -ssl_auto_cert mydomain.com \ > -ssl_listen :443 \ > -config_save - 2022/03/30 10:37:00 rdio-scanner.ini file created + 2022/04/04 10:37:00 rdio-scanner.ini file created All of your parameters passed as arguments to [Rdio Scanner](https://github.com/chuot/rdio-scanner) have been saved to an INI file which has the same arguments/values list. @@ -142,12 +142,12 @@ Then simply run [Rdio Scanner](https://github.com/chuot/rdio-scanner) without an Password: root@pc-freebsd:/home/rdio/rdio-scanner # ./rdio-scanner - Rdio Scanner v6.2.3 + Rdio Scanner v6.2.4 ---------------------------------- - 2022/03/30 10:38:28 server started - 2022/03/30 10:38:29 main interface at http://pc-freebsd - 2022/03/30 10:38:29 main interface at https://pc-freebsd - 2022/03/30 10:38:29 admin interface at https://pc-freebsd/admin + 2022/04/04 10:38:28 server started + 2022/04/04 10:38:29 main interface at http://pc-freebsd + 2022/04/04 10:38:29 main interface at https://pc-freebsd + 2022/04/04 10:38:29 admin interface at https://pc-freebsd/admin ## Install Rdio Scanner as a service diff --git a/docs/platforms/linux.md b/docs/platforms/linux.md index 4fd5f60..5517cfb 100644 --- a/docs/platforms/linux.md +++ b/docs/platforms/linux.md @@ -42,8 +42,8 @@ ALWAYS DOWNLOAD THE LATEST VERSION OF [RDIO SCANNER](https://github.com/chuot/rd [rdio@pc-linux ~]$ mkdir rdio-scanner [rdio@pc-linux ~]$ cd rdio-scanner [rdio@pc-linux rdio-scanner]$ unzip \ - > ~/Downloads/rdio-scanner-linux-amd64-v6.2.3.zip - Archive: /home/rdio/Downloads/rdio-scanner-linux-amd64-v6.2.3.zip + > ~/Downloads/rdio-scanner-linux-amd64-v6.2.4.zip + Archive: /home/rdio/Downloads/rdio-scanner-linux-amd64-v6.2.4.zip inflating: rdio-scanner inflating: rdio-scanner.pdf @@ -51,11 +51,11 @@ ALWAYS DOWNLOAD THE LATEST VERSION OF [RDIO SCANNER](https://github.com/chuot/rd [rdio@pc-linux rdio-scanner]$ ./rdio-scanner - Rdio Scanner v6.2.3 + Rdio Scanner v6.2.4 ---------------------------------- - 2022/03/30 09:11:48 server started - 2022/03/30 09:11:48 main interface at http://pc-linux:3000 - 2022/03/30 09:11:48 admin interface at http://pc-linux:3000/admin + 2022/04/04 09:11:48 server started + 2022/04/04 09:11:48 main interface at http://pc-linux:3000 + 2022/04/04 09:11:48 admin interface at http://pc-linux:3000/admin 4. Access the administrative dashboard to finalize the configuration. @@ -78,11 +78,11 @@ Here we want our [Rdio Scanner](https://guthub.com/chuot/rdio-scanner) instance [rdio@pc-linux rdio-scanner]$ sudo ./rdio-scanner -listen :80 [sudo] password for rdio: - Rdio Scanner v6.2.3 + Rdio Scanner v6.2.4 ---------------------------------- - 2022/03/30 09:14:00 server started - 2022/03/30 09:14:00 main interface at http://pc-linux - 2022/03/30 09:14:00 admin interface at http://pc-linux/admin + 2022/04/04 09:14:00 server started + 2022/04/04 09:14:00 main interface at http://pc-linux + 2022/04/04 09:14:00 admin interface at http://pc-linux/admin ## Listening on a SSL port @@ -97,12 +97,12 @@ You can use your own SSL certificates that match your domain name with `-ssl_cer > -ssl_listen :443 [sudo] password for rdio: - Rdio Scanner v6.2.3 + Rdio Scanner v6.2.4 ---------------------------------- - 2022/03/30 09:16:47 server started - 2022/03/30 09:16:47 main interface at http://pc-linux - 2022/03/30 09:16:47 main interface at https://pc-linux - 2022/03/30 09:16:47 admin interface at https://pc-linux/admin + 2022/04/04 09:16:47 server started + 2022/04/04 09:16:47 main interface at http://pc-linux + 2022/04/04 09:16:47 main interface at https://pc-linux + 2022/04/04 09:16:47 admin interface at https://pc-linux/admin If you don't want to worry about SSL certificates, you can use the built-in Let's Encrypt auto-cert feature. This requires that you have both port 80 (HTTP) and port 443 (HTTPS) open to the world. Also, your domain name should point to your IP address where [Rdio Scanner](https://github.com/chuot/rdio-scanner/) is running. The advantage of this approach is that everything is done automatically, no certificate request, no certificate renewal. @@ -120,7 +120,7 @@ You don't want to have to type everytime a long list of arguments. No problem, y > -ssl_auto_cert mydomain.com \ > -ssl_listen :443 \ > -config_save - 2022/03/30 09:19:29 rdio-scanner.ini file created + 2022/04/04 09:19:29 rdio-scanner.ini file created All of your parameters passed as arguments to [Rdio Scanner](https://github.com/chuot/rdio-scanner) have been saved to an INI file which has the same arguments/values list. @@ -135,12 +135,12 @@ Then simply run [Rdio Scanner](https://github.com/chuot/rdio-scanner) without an [rdio@pc-linux rdio-scanner]$ sudo ./rdio-scanner [sudo] Mot de passe de rdio : - Rdio Scanner v6.2.3 + Rdio Scanner v6.2.4 ---------------------------------- - 2022/03/30 09:20:40 server started - 2022/03/30 09:20:40 main interface at http://pc-linux - 2022/03/30 09:20:40 main interface at https://pc-linux - 2022/03/30 09:20:40 admin interface at https://pc-linux/admin + 2022/04/04 09:20:40 server started + 2022/04/04 09:20:40 main interface at http://pc-linux + 2022/04/04 09:20:40 main interface at https://pc-linux + 2022/04/04 09:20:40 admin interface at https://pc-linux/admin ## Install Rdio Scanner as a service diff --git a/docs/platforms/windows.md b/docs/platforms/windows.md index d5f25c6..0245460 100644 --- a/docs/platforms/windows.md +++ b/docs/platforms/windows.md @@ -44,7 +44,7 @@ ALWAYS DOWNLOAD THE LATEST VERSION OF [RDIO SCANNER](https://github.com/chuot/rd C:\Users\rdio> cd rdio-scanner C:\Users\rdio\rdio-scanner> tar -xvf ^ - ..\downloads\rdio-scanner-windows-amd64-v6.2.3.zip + ..\downloads\rdio-scanner-windows-amd64-v6.2.4.zip x rdio-scanner.exe x rdio-scanner.pdf @@ -52,11 +52,11 @@ ALWAYS DOWNLOAD THE LATEST VERSION OF [RDIO SCANNER](https://github.com/chuot/rd C:\Users\rdio\rdio-scanner>rdio-scanner - Rdio Scanner v6.2.3 + Rdio Scanner v6.2.4 ---------------------------------- - 2022/03/30 13:48:48 server started - 2022/03/30 13:48:48 main interface at http://pc-windows:3000 - 2022/03/30 13:48:48 admin interface at http://pc-windows:3000/admin + 2022/04/04 13:48:48 server started + 2022/04/04 13:48:48 main interface at http://pc-windows:3000 + 2022/04/04 13:48:48 admin interface at http://pc-windows:3000/admin 4. Access the administrative dashboard to finalize the configuration. @@ -78,11 +78,11 @@ Here we want our [Rdio Scanner](https://guthub.com/chuot/rdio-scanner) instance C:\Users\rdio\rdio-scanner>rdio-scanner -listen :80 - Rdio Scanner v6.2.3 + Rdio Scanner v6.2.4 ---------------------------------- - 2022/03/30 10:53:31 server started - 2022/03/30 10:53:31 main interface at http://pc-windows - 2022/03/30 10:53:31 admin interface at http://pc-windows/admin + 2022/04/04 10:53:31 server started + 2022/04/04 10:53:31 main interface at http://pc-windows + 2022/04/04 10:53:31 admin interface at http://pc-windows/admin ## Listening on a SSL port @@ -96,12 +96,12 @@ You can use your own SSL certificates that match your domain name with `-ssl_cer -ssl_key_file meykey.key ^ -ssl_listen :443 - Rdio Scanner v6.2.3 + Rdio Scanner v6.2.4 ---------------------------------- - 2022/03/30 11:05:43 server started - 2022/03/30 11:05:43 main interface at http://pc-windows - 2022/03/30 11:05:43 main interface at https://pc-windows - 2022/03/30 11:05:43 admin interface at https://pc-windows/admin + 2022/04/04 11:05:43 server started + 2022/04/04 11:05:43 main interface at http://pc-windows + 2022/04/04 11:05:43 main interface at https://pc-windows + 2022/04/04 11:05:43 admin interface at https://pc-windows/admin If you don't want to worry about SSL certificates, you can use the built-in Let's Encrypt auto-cert feature. This requires that you have both port 80 (HTTP) and port 443 (HTTPS) open to the world. Also, your domain name should point to your IP address where [Rdio Scanner](https://github.com/chuot/rdio-scanner/) is running. The advantage of this approach is that everything is done automatically, no certificate request, no certificate renewal. @@ -119,7 +119,7 @@ You don't want to have to type everytime a long list of arguments. No problem, y -ssl_auto_cert mydomain.com ^ -ssl_listen :443 ^ -config_save - 2022/03/30 11:08:28 rdio-scanner.ini file created + 2022/04/04 11:08:28 rdio-scanner.ini file created All of your parameters passed as arguments to [Rdio Scanner](https://github.com/chuot/rdio-scanner) have been saved to an INI file which has the same arguments/values list. @@ -133,12 +133,12 @@ Then simply run [Rdio Scanner](https://github.com/chuot/rdio-scanner) without an C:\Users\rdio\rdio-scanner>rdio-scanner - Rdio Scanner v6.2.3 + Rdio Scanner v6.2.4 ---------------------------------- - 2022/03/30 11:11:28 server started - 2022/03/30 11:11:28 main interface at http://pc-windows - 2022/03/30 11:11:28 main interface at https://pc-windows - 2022/03/30 11:11:28 admin interface at https://pc-windows/admin + 2022/04/04 11:11:28 server started + 2022/04/04 11:11:28 main interface at http://pc-windows + 2022/04/04 11:11:28 main interface at https://pc-windows + 2022/04/04 11:11:28 admin interface at https://pc-windows/admin \pagebreak{} diff --git a/server/downstream.go b/server/downstream.go index b03bebf..1d9fa4b 100644 --- a/server/downstream.go +++ b/server/downstream.go @@ -178,7 +178,7 @@ func (downstream *Downstream) Send(call *Call) error { } switch v := call.Frequencies.(type) { - case []interface{}: + case []map[string]interface{}: if w, err := mw.CreateFormField("frequencies"); err == nil { if b, err := json.Marshal(v); err == nil { if _, err = w.Write(b); err != nil { diff --git a/server/version.go b/server/version.go index ac6829c..e0eb439 100644 --- a/server/version.go +++ b/server/version.go @@ -15,4 +15,4 @@ package main -const Version = "6.2.3" +const Version = "6.2.4"