From 7e9679ef5a0eaf396e19350c02b9acbff00f257c Mon Sep 17 00:00:00 2001 From: Chrystian Huot Date: Mon, 11 Jul 2022 08:35:15 -0400 Subject: [PATCH] Version 6.5.2 --- CHANGELOG.md | 230 +++++++++--------- COMPILING.md | 16 +- Makefile | 4 +- client/package-lock.json | 4 +- client/package.json | 2 +- .../rdio-scanner/main/main.component.html | 1 + .../rdio-scanner/main/main.component.ts | 7 + docs/faq.md | 10 +- docs/platforms/darwin.md | 42 ++-- docs/platforms/freebsd.md | 42 ++-- docs/platforms/linux.md | 42 ++-- docs/platforms/windows.md | 40 +-- server/client.go | 44 ++-- server/controller.go | 1 - server/dirwatch.go | 6 +- server/version.go | 2 +- 16 files changed, 259 insertions(+), 234 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cc42f6b4b..cbb57ed6b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,20 +8,26 @@ - Replaced all `path.Base()` by `filepath.Base()` to fix an issue with audio filenames on Windows. - New `Branding Label` and `Email Support` options to show on main screen (issue #220). - New temporary avoid feature (discussion #218). -- Fix remote address regexp (issue #225). -- Add the `ident` to `new listener` log message (discussion #226). +- Fixed remote address regexp (issue #225). +- Added the `ident` to `new listener` log message (discussion #226). - New populated talkgroups won't be activated on the client if its group (or tag) is turned off (issue #227). - Removed the duplicated webapp section from the PDF document. _v6.5.1_ -- Fix broken functionality for `HOLD SYS` and `HOLD TG` (issue #228). +- Fixed broken functionality for `HOLD SYS` and `HOLD TG` (issue #228). + +_v6.5.2_ + +- Fixed erratic listeners count. +- Show call date on main screen when call is older than one day (issue #229). +- Fixed dirwatch #DATE, #TIME and #ZTIME regexp to accomodate filenames like 20220711082833 (issue #235). ## Version 6.4 - New `-cmd` command line options to allow advanced administrative tasks. - New playback mode goes live options which is not enabled by default (issue #175). -- Fix logs retrieval from administrative dashboard (issue #193). +- Fixed logs retrieval from administrative dashboard (issue #193). - Improved field conversions when retrieving calls from a mysql/mariadb database (issue #194, #198). - Highlight replayed call on the history list (issue #196). @@ -31,8 +37,8 @@ _v6.4.1_ - New audio conversion options which replace the disable audio conversion option. - Keep database connections open and don't close them when idle. - Log the origin of listeners. -- Fix timestamp format when checking for call duplicates. -- Fix http timeouts on call ingestions or admin config save when dowstream takes too long (issue #197). +- Fixed timestamp format when checking for call duplicates. +- Fixed http timeouts on call ingestions or admin config save when dowstream takes too long (issue #197). _v6.4.2_ @@ -50,11 +56,11 @@ _v6.4.4_ _v6.4.5_ - SQL idle connections now expiring after 1 minute. -- Revert defer rows.Close() to simple rows.Close(). +- Reverted defer rows.Close() to simple rows.Close(). ## Version 6.3 -- Change scroll speed when drag droping talkgroups or units in a system (discussion #170). +- Changed scroll speed when drag droping talkgroups or units in a system (discussion #170). - System Ids listed in the `Config / Options / AFS Systems` will have their talkgroup Ids displayed in AFS format (issue #163). - New dirwatch meta tags #GROUP #SYSLBL #TAG #TGAFS and #UNIT for better ProScan compatibility (issue #164). - Playback mode will now catch up to live (issue #175). @@ -68,70 +74,70 @@ _v6.3.1_ _v6.3.2_ - New #TGLBL metatag for dirwatch for ProScan (%C) or alike. -- Fix `semacquire` lockup in Clients (issue #177, #181, #182). +- Fixed `semacquire` lockup in Clients (issue #177, #181, #182). - Replay button now replays from history if pressed multiple times quickly (issue #186). _v6.3.3_ -- Fix concurrent map writes fatal error in dirwatch (issue #187). +- Fixed concurrent map writes fatal error in dirwatch (issue #187). - Brighter LED colors and new orange color. -- Fix call id when retrieved from a MySQL database. +- Fixed call id when retrieved from a MySQL database. - Add loudnorm audio filter to the ffmpeg audio conversion. - Show the real IP address in the logs taking into account if behind a proxy. -- Fix panic when emitting a call to clients. +- Fixed panic when emitting a call to clients. _v6.3.4_ -- Fix ffmpeg audio filter not available on older version (issue #189). +- Fixed ffmpeg audio filter not available on older version (issue #189). - Improved logging when run as a service, Windows users can now see these logs in the events viewer. - Dirwatch now catches panic errors and logs them. _v6.3.5_ - Replace standard map with sync.map in dirwatch. -- Fix the ffmpeg version test. -- Fix led color type, orage -> orange. -- Fix incorrect options when reading from a mysql database (issue #190). +- Fixed the ffmpeg version test. +- Fixed led color type, orage -> orange. +- Fixed incorrect options when reading from a mysql database (issue #190). _v6.3.6_ -- Fix systems order properties not sent to clients. -- Fix side panels not scrolling to top when opened. +- Fixed systems order properties not sent to clients. +- Fixed side panels not scrolling to top when opened. ## Version 6.2 - New max clients options which is 200 by default. - New show listeners count options which is disabled by default (issue #125). -- Fix panic: concurrent write to websocket connection on goroutine. -- Fix units import from SDR Trunk (issue #150). +- Fixed panic: concurrent write to websocket connection on goroutine. +- Fixed units import from SDR Trunk (issue #150). _v6.2.1_ -- Fix SIGSEGV error in Units.Merge (issue #151). +- Fixed SIGSEGV error in Units.Merge (issue #151). _v6.2.2_ -- Fix another SIGSEGV error in Units.Merge (issue #151). +- Fixed another SIGSEGV error in Units.Merge (issue #151). _v6.2.3_ - New random UUID in the JSON-Web Token payload. -- Fix dirwatch not properly shutting down when a new configuration is applied. -- Fix dashboard logout not sending HTTP 200 OK status. +- Fixed dirwatch not properly shutting down when a new configuration is applied. +- Fixed dashboard logout not sending HTTP 200 OK status. - Clear the active dirwatch list when stopped. - Pauses calls ingestion before database pruning. -- Fix regex for units in driwatch type SDRTrunk (discussion #155). +- Fixed regex for units in driwatch type SDRTrunk (discussion #155). - Update SQLite driver. _v6.2.4_ -- Fix call frequencies table not being transmitted to downstream. +- Fixed 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). +- Fixed talkgroup search filter upon new configuration (issue #158). _v6.2.5_ -- Fix unnecessary auto populate of unit id/label (issue #160). +- Fixed unnecessary auto populate of unit id/label (issue #160). ## Version 6.1 @@ -139,55 +145,55 @@ _v6.2.5_ - New search patched talkgroups option which is disabled by default. - Talkgroups and units are now stored in their own database table. - New units CSV importer. -- Fix blacklisted talkgroups being created anyway when autopopulate is enabled. -- Fix compatibility with mysql/mariadb (default sqlite is still recommended). +- Fixed blacklisted talkgroups being created anyway when autopopulate is enabled. +- Fixed compatibility with mysql/mariadb (default sqlite is still recommended). _v6.1.1_ -- Fix `unknown datetime format sql.NullString` error. +- Fixed `unknown datetime format sql.NullString` error. _v6.1.2_ -- Fix image links in webapp.md (issue #76). -- Fix SIGSEGV when trying to autopopulate (issue #77). -- Fix parsing SDRTrunk meta data. +- Fixed image links in webapp.md (issue #76). +- Fixed SIGSEGV when trying to autopopulate (issue #77). +- Fixed parsing SDRTrunk meta data. - Dirwatch type trunk-recorder now deletes json files without audio (when deleteAfter is set). - Add a new `docs/update-from-v5.md` document. _v6.1.3_ -- Fix concurrent config write when autopopulate is enabled (issue #77). -- Fix API in regards to audio filename and audio type (issue #78). -- Fix migration error on mysql database (issue #86). -- Fix some calls not playing on the native app (issue #87). -- Fix admin password not read from mysql. +- Fixed concurrent config write when autopopulate is enabled (issue #77). +- Fixed API in regards to audio filename and audio type (issue #78). +- Fixed migration error on mysql database (issue #86). +- Fixed some calls not playing on the native app (issue #87). +- Fixed admin password not read from mysql. _v6.1.4_ - Talkgroup label now syncs with the talkgroup_tag from the API or dirwatch (issue #80). -- Fix more migration errors on mysql database (issue #86). -- Fix config export not working with non latin-1 characters (issue #89). -- Fix talkgroup label from dirwatch type sdrtrunk (discussion #98). -- Fix SIGSEGV (issue #100). +- Fixed more migration errors on mysql database (issue #86). +- Fixed config export not working with non latin-1 characters (issue #89). +- Fixed talkgroup label from dirwatch type sdrtrunk (discussion #98). +- Fixed SIGSEGV (issue #100). - New `patch` indicator for patched talkgroups. _v6.1.5_ -- Fix trunk-recorder API (issue #104). -- Fix for avoid/patch flags on main display not beaving as expected. -- Fix downstream not sending sources data. -- Fix dirwatch crashing when config is updated. +- Fixed trunk-recorder API (issue #104). +- Fixed for avoid/patch flags on main display not beaving as expected. +- Fixed downstream not sending sources data. +- Fixed dirwatch crashing when config is updated. _v6.1.6_ -- Fix webapp not reporting the correct version. +- Fixed webapp not reporting the correct version. _v6.1.7_ - More concurrency mutexes to resolve SQL_BUSY errors. - Better internal management of dirwatches. -- Fix SDRTrunk files not being ingested (discussion #108). -- Fix Trunk Recorder talkgroup_tag assign to the wrong property (issue #115). +- Fixed SDRTrunk files not being ingested (discussion #108). +- Fixed Trunk Recorder talkgroup_tag assign to the wrong property (issue #115). - Improved the way the talkgroup label and name are autopopulated. If Trunk Recorder sends a talkgroup_tag with an empty value or with a single `-`, it will not overwrite the talkgroup label. _v6.1.8_ @@ -196,8 +202,8 @@ _v6.1.8_ _v6.1.9_ -- Fix talkgroup sorting issue when importing from a CSV file (issue #119). -- Fix SIGSEGV (issue #120). +- Fixed talkgroup sorting issue when importing from a CSV file (issue #119). +- Fixed SIGSEGV (issue #120). _v6.1.10_ @@ -205,36 +211,36 @@ _v6.1.10_ _v6.1.11_ -- Fix connection errors when behind a reverse-proxy. -- Fix disappearing talkgroups (issue #127). +- Fixed connection errors when behind a reverse-proxy. +- Fixed disappearing talkgroups (issue #127). _v6.1.12_ -- Fix too many open files (issue #129). +- Fixed too many open files (issue #129). - Cosmetic: AVOID and PATCH flags now only appear when needed. _v6.1.13_ - Better handling of dead client connections. -- Fix too many open files (issue #129). +- Fixed too many open files (issue #129). - Remove net.http error messages from the output (issue #131). _v6.1.14_ -- Fix FAQ section not being added to the PDF documents. +- Fixed FAQ section not being added to the PDF documents. - Bump delay before killing unauthenticated clients from 10 seconds to 60 seconds. - Remove the gitter.im support forum from the documentation and prefer github discussions. _v6.1.15_ -- Fix access and downstreams order not retained. +- Fixed access and downstreams order not retained. - Remove the self-signed certificate generator (-ssl create) as it was causing more problems than solutions. - Client handling and call ingestion now run on 2 different threads (issue #135). -- Fix downstream talkgroup select keeps reverting to all talkgroups (issue #136). +- Fixed downstream talkgroup select keeps reverting to all talkgroups (issue #136). _v6.1.16_ -- Fix concurrent map access for clients. +- Fixed concurrent map access for clients. - Some tweaks to websocket management. ## Version 6.0 @@ -259,24 +265,24 @@ The backend server has been completely rewritten in GO language. Therefore, all _v6.0.1_ -- Fix button sound on select panel for TG (beep state inverted) +- Fixed button sound on select panel for TG (beep state inverted) - Auto populate system units (issue #66) _v6.0.2_ - Try to fix the SQL_BUSY error (issue #67). -- Fix `-service stop` timing out before exiting. +- Fixed `-service stop` timing out before exiting. - Drop the ApiKey uniqueness of the downstreams database table. -- Fix auto-populating the database with empty units tag. +- Fixed auto-populating the database with empty units tag. _v6.0.3_ -- Fix strconv.Atoi: invalid syntax for dirwatch type sdrtrunk. -- Fix the new version available dialog opening more than once. +- Fixed strconv.Atoi: invalid syntax for dirwatch type sdrtrunk. +- Fixed the new version available dialog opening more than once. _v6.0.4_ -- Fix wrong time calculation in prune scheduler. +- Fixed wrong time calculation in prune scheduler. - More fix on the SQL_BUSY error (issue #67). - Support files (certs, db, ini) are now created in the same folder as the executable, if the folder is writable, or under a `Rdio Scanner` folder in the user's home folder. - Some code refactoring. @@ -289,26 +295,26 @@ _v6.0.5_ _v6.0.6_ -- Fix an issue with not closing the database when restarting the host platform (issue #71). +- Fixed an issue with not closing the database when restarting the host platform (issue #71). - Fixed SDRTunk parser when artist tag contains CTCSS tones. - Platforms linux/amd64, linux/arm and linux/arm64 are now available for the Docker container. _v6.0.7_ -- Fix dropped connections when going through a proxy. +- Fixed dropped connections when going through a proxy. ## Version 5.2 - Change to how the server reports version. -- Fix cmd.js exiting on inexistant session token keystore. -- Fix issue with iframe. +- Fixed cmd.js exiting on inexistant session token keystore. +- Fixed issue with iframe. - Node modules updated for security fixes. _v5.2.1_ -- Fix talkgroup header on the search panel (issue #47). +- Fixed talkgroup header on the search panel (issue #47). - Update dirwatch meta tags #DATE, #TIME and #ZTIME for SDRSharp compatibility (issue #48). -- Fix dirwath date and time parsing bug. +- Fixed dirwath date and time parsing bug. - Configurable call duplicate detection time frame. _v5.2.2_ @@ -319,13 +325,13 @@ _v5.2.2_ _v5.2.3_ - Change history columns padding from 1px to 6px on the main screen. -- Fix a bug in the admin api where the server crash when saving new config from the admin dashboard. +- Fixed a bug in the admin api where the server crash when saving new config from the admin dashboard. _v5.2.4_ - Updated to Angular 12.2. - New update prompt for clients when server is updated. -- Fix unaligned back arrow on the search panel. +- Fixed unaligned back arrow on the search panel. _v5.2.5_ @@ -336,20 +342,20 @@ _v5.2.5_ _v5.2.6_ -- Fix crash when when options.pruneDays = 0. +- Fixed crash when when options.pruneDays = 0. _v5.2.7_ -- Fix handling of JSON datatypes on MySQL/MariaDB database backend. -- Fix listeners count. +- Fixed handling of JSON datatypes on MySQL/MariaDB database backend. +- Fixed listeners count. _V5.2.8_ -- Fix SQLite does not support TEXT with options. +- Fixed SQLite does not support TEXT with options. _V5.2.9_ -- Fix bad code for server options parsing. +- Fixed bad code for server options parsing. - Increase dirwatch polling interval from 1000ms to 2500ms. ## Version 5.1 @@ -372,15 +378,15 @@ This one is a big one... **Be sure to backup your config.json and your database. _v5.1.1_ -- Fix database migration script to version 5.1 to filter out duplicate property values on unique fields. -- Fix payload too large error message when saving configuration from the administrative dashboard. +- Fixed database migration script to version 5.1 to filter out duplicate property values on unique fields. +- Fixed payload too large error message when saving configuration from the administrative dashboard. - Bring back the load-rrdb, load-tr and random uuid command line tools. _v5.1.2_ -- Fix config class not returning proper id properties when new records are added. -- Fix database migration script to version 5.1 when on mysql. -- Fix bad logic in apiKey validation. +- Fixed config class not returning proper id properties when new records are added. +- Fixed database migration script to version 5.1 when on mysql. +- Fixed bad logic in apiKey validation. - Remove the autoJsonMap from the sequelize dialectOptions. - Client updated to angular 12. @@ -394,15 +400,15 @@ _v5.1.2_ _v5.0.1_ - Remove the EBU R128 loudness normalization as it's not working as intended. -- Fix the API key validation when using the complex syntax. +- Fixed the API key validation when using the complex syntax. _v5.0.2_ -- Fix rdioScanner.options.disableAudioConversion which was ignored when true. +- Fixed rdioScanner.options.disableAudioConversion which was ignored when true. _v5.0.3_ -- Fix error with docker builds where sequelize can't find the sqlite database. +- Fixed error with docker builds where sequelize can't find the sqlite database. _v5.0.4_ @@ -429,7 +435,7 @@ _v4.9.1_ - Add EBU R128 loudness normalization. - dirWatch.type="trunk-recorder" now deletes the JSON file in case the audio file is missing. -- Fix downstream sending wrong talkgroup id. +- Fixed downstream sending wrong talkgroup id. _v4.9.2_ @@ -439,8 +445,8 @@ _v4.9.2_ - Add downstream.system.id_as property to allow export system with a different id. - Add system.order for system list ordering on the client side. -- Fix client main screen unscrollable overflow while in landscape. -- Fix issue 26 - date in documentation for mask isn't clear. +- Fixed client main screen unscrollable overflow while in landscape. +- Fixed issue 26 - date in documentation for mask isn't clear. - The skip button now also allows you to skip the one second delay between calls. - Node modules update. @@ -451,26 +457,26 @@ _v4.8.1_ _v4.8.2_ -- Fix dirWatch.type='sdr-trunk' metatag artist as source is now optional. -- Fix dirWatch.type='sdr-trunk' metatag title as talkgroup.id. +- Fixed dirWatch.type='sdr-trunk' metatag artist as source is now optional. +- Fixed dirWatch.type='sdr-trunk' metatag title as talkgroup.id. - Web app now running with Angular 11. - Node modules update. _v4.8.3_ - Add the ability to overwrite the default dirWatch extension for type sdr-trunk and trunk-recorder. -- Fix dirWatch.disabled being ignored. +- Fixed dirWatch.disabled being ignored. - Node modules update. _v4.8.4_ -- Fix the timezone issue when on mariadb. -- Fix downstream sending wrong talkgroup id. +- Fixed the timezone issue when on mariadb. +- Fixed downstream sending wrong talkgroup id. - Node modules security update. _v4.8.5_ -- Fix broken dirwatch.delay. +- Fixed broken dirwatch.delay. - Node modules update. ## Version 4.7 @@ -484,37 +490,37 @@ _v4.8.5_ _v4.7.1_ -- Fix crash on client when access to talkgroups is restricted with a password. +- Fixed crash on client when access to talkgroups is restricted with a password. _v4.7.2_ -- Fix Keypad beeps not working on iOS. -- Fix pause not going off due to the above bug. +- Fixed Keypad beeps not working on iOS. +- Fixed pause not going off due to the above bug. _v4.7.3_ -- Fix websocket not connection on ssl. +- Fixed websocket not connection on ssl. _v4.7.4_ -- Fix display width too wide when long talkgroup name. +- Fixed display width too wide when long talkgroup name. _v4.7.5_ -- Fix playback mode getting mixed up if clicking too fast on play. -- Fix side panels background color inheritance. +- Fixed playback mode getting mixed up if clicking too fast on play. +- Fixed side panels background color inheritance. - Node modules update. _v4.7.6_ -- Fix search results not going back to page 1 when search filters are modified. +- Fixed search results not going back to page 1 when search filters are modified. - Skip next button no longer emit a denied beeps sequence when pushed while there's no audio playing. - Node modules update. ## Version 4.6 -- Fix documentation in regards to load-rrd in install-github.md. -- Fix database absolute path in config.json. +- Fixed documentation in regards to load-rrd in install-github.md. +- Fixed database absolute path in config.json. - Remove config.options.useLed. - Rename Config.options.keyBeep to Config.options.keypadBeeps. - Config.options.keypadBeeps now with presets instead of full pattern declaration. @@ -530,7 +536,7 @@ _v4.7.6_ - Config.systems.talkgroups.patches to group many talkgroups (patches) into one talkgroup.id. - Config.options now groups allowDownloads, disableAudioConversion, pruneDays, useDimmer, useGroup and useLed options instead of having them spread all over the config file. - Client will always display talkgroup id on the right side instead of 0 when call is analog. -- Fix annoying bug when next call queued to play is still played even though offline continuous play mode is turned off. +- Fixed annoying bug when next call queued to play is still played even though offline continuous play mode is turned off. - Talkgroup ID is displayed no matter what and unit ID is displayed only if known. ## Version 4.3 @@ -539,15 +545,15 @@ _v4.7.6_ - Automatic database migration on startup. - Client now on Angular 10 in strict mode. - Dockerized. -- Fix downstream not being triggered when a new call imported. -- Fix dirWatch mask parser and new mask metatags. -- Fix stop button on the search panel when in offline play mode. -- Fix SSL certificate handling. +- Fixed downstream not being triggered when a new call imported. +- Fixed dirWatch mask parser and new mask metatags. +- Fixed stop button on the search panel when in offline play mode. +- Fixed SSL certificate handling. - Rewritten documentation. ## Version 4.2 -- Fix possible race conditions.... +- Fixed possible race conditions.... - Added websocket keepalive which helps mobile clients when switching from/to wifi/wan. - Better playback offline mode animations and queue count. - New dirWatch.mask option to simplify meta data import. diff --git a/COMPILING.md b/COMPILING.md index 47e9130d5..3ab0e2401 100644 --- a/COMPILING.md +++ b/COMPILING.md @@ -27,13 +27,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.5.1.zip - rdio-scanner-darwin-arm64-v6.5.1.zip - rdio-scanner-freebsd-amd64-v6.5.1.zip - rdio-scanner-linux-386-v6.5.1.zip - rdio-scanner-linux-amd64-v6.5.1.zip - rdio-scanner-linux-arm64-v6.5.1.zip - rdio-scanner-linux-arm-v6.5.1.zip - rdio-scanner-windows-amd64-v6.5.1.zip + rdio-scanner-darwin-amd64-v6.5.2.zip + rdio-scanner-darwin-arm64-v6.5.2.zip + rdio-scanner-freebsd-amd64-v6.5.2.zip + rdio-scanner-linux-386-v6.5.2.zip + rdio-scanner-linux-amd64-v6.5.2.zip + rdio-scanner-linux-arm64-v6.5.2.zip + rdio-scanner-linux-arm-v6.5.2.zip + rdio-scanner-windows-amd64-v6.5.2.zip **Happy Rdio scanning !** \ No newline at end of file diff --git a/Makefile b/Makefile index 03be7ab0b..30cd9b7d8 100644 --- a/Makefile +++ b/Makefile @@ -16,8 +16,8 @@ ################################################################################ app := rdio-scanner -date := 2022/06/29 -ver := 6.5.1 +date := 2022/07/11 +ver := 6.5.2 client := $(wildcard client/*.json client/*.ts) server := $(wildcard server/*.go) diff --git a/client/package-lock.json b/client/package-lock.json index 483726a7e..ab7d63546 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -1,12 +1,12 @@ { "name": "rdio-scanner", - "version": "6.5.1", + "version": "6.5.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "rdio-scanner", - "version": "6.5.1", + "version": "6.5.2", "license": "LICENSE", "dependencies": { "@angular/animations": "^13.3.10", diff --git a/client/package.json b/client/package.json index 078013008..67e6e8f13 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.5.1" + "version": "6.5.2" } diff --git a/client/src/app/components/rdio-scanner/main/main.component.html b/client/src/app/components/rdio-scanner/main/main.component.html index 6ea9786cc..91b509bb3 100644 --- a/client/src/app/components/rdio-scanner/main/main.component.html +++ b/client/src/app/components/rdio-scanner/main/main.component.html @@ -31,6 +31,7 @@ {{ callTalkgroup }}
+ {{ callDate | date:'MM/dd' }} {{ callProgress | date:timeFormat }}
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 a392de055..27034f5e6 100644 --- a/client/src/app/components/rdio-scanner/main/main.component.ts +++ b/client/src/app/components/rdio-scanner/main/main.component.ts @@ -54,6 +54,7 @@ export class RdioScannerMainComponent implements OnDestroy, OnInit { branding = ''; call: RdioScannerCall | undefined; + callDate: Date | undefined; callError = '0'; callFrequency: string = this.formatFrequency(0); callHistory: RdioScannerCall[] = new Array(5); @@ -541,6 +542,12 @@ export class RdioScannerMainComponent implements OnDestroy, OnInit { this.callProgress = new Date(this.call.dateTime); this.callProgress.setSeconds(this.callProgress.getSeconds() + time); + if (Date.now() - this.callProgress.getTime() >= 86400000) { + this.callDate = this.call.dateTime; + } else { + this.callDate = undefined; + } + this.callSystem = this.call.systemData?.label || `${this.call.system}`; this.callTag = this.call.talkgroupData?.tag || ''; diff --git a/docs/faq.md b/docs/faq.md index dc18d69f7..b2b065c51 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -12,8 +12,16 @@ A: Due to the ACME protocol used by Let's Encrypt, ports 80 and 443 must be open A: Force a refresh of the web application from the browser (usually with ctrl-shift-r) to resolve the issue. Alternatively, you can click on the icon just to the left of the URL address and select website settings, then clear all website data. +**Q: How do I install FFMPEG on Windows** + +A: Please follow instructions at this address: [https://www.wikihow.com/Install-FFmpeg-on-Windows](https://www.wikihow.com/Install-FFmpeg-on-Windows) + +**Q: How do I configure a reverse-proxy in front of Rdio Scanner** + +A: There are so many reverse proxy technologies out there that it's hard the cover them all. One thing to keep in mind is that Rdio Scanner works with websockets, so the reverse proxy must also supports websockets to work properly with Rdio Scanner. For some examples, take a look at the [https://github.com/chuot/rdio-scanner/tree/master/docs/examples/apache](https://github.com/chuot/rdio-scanner/tree/master/docs/examples/apache) for `Apache HTTP` or [https://github.com/chuot/rdio-scanner/tree/master/docs/examples/nginx](https://github.com/chuot/rdio-scanner/tree/master/docs/examples/nginx) for `nginx`. + **Q: I did not find an answer to my question in this FAQ** -A: No problem, just drop us a line at **[rdio-scanner@saubeo.solutions](mailto:rdio-scanner@saubeo.solutions)** and we'll make sure to add the relevant information in this document in the next release. In the meantime, You can ask your questions on the [Rdio Scanner Discussions](https://github.com/chuot/rdio-scanner/discussions) at **[https://github.com/chuot/rdio-scanner/discussions](https://github.com/chuot/rdio-scanner/discussions)**. +A: No problem, just drop us a line at [rdio-scanner@saubeo.solutions](mailto:rdio-scanner@saubeo.solutions) and we'll make sure to add the relevant information in this document in the next release. In the meantime, You can ask your questions on the [Rdio Scanner Discussions](https://github.com/chuot/rdio-scanner/discussions) at [https://github.com/chuot/rdio-scanner/discussions](https://github.com/chuot/rdio-scanner/discussions). \pagebreak{} \ No newline at end of file diff --git a/docs/platforms/darwin.md b/docs/platforms/darwin.md index e40e51ba5..79447e57f 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.5.1.zip - Archive: /Users/rdio/Downloads/rdio-scanner-darwin-arm64-v6.5.1.zip + > ~/Downloads/rdio-scanner-darwin-arm64-v6.5.2.zip + Archive: /Users/rdio/Downloads/rdio-scanner-darwin-arm64-v6.5.2.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.5.1 + Rdio Scanner v6.5.2 ---------------------------------- - 2022/06/29 08:38:06 server started - 2022/06/29 08:38:06 main interface at http://macos.local:3000 - 2022/06/29 08:38:06 admin interface at http://macos.local:3000/admin + 2022/07/11 08:38:06 server started + 2022/07/11 08:38:06 main interface at http://macos.local:3000 + 2022/07/11 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.5.1 + Rdio Scanner v6.5.2 ---------------------------------- - 2022/06/29 08:48:03 server started - 2022/06/29 08:48:03 main interface at http://macos.local - 2022/06/29 08:48:03 admin interface at http://macos.local/admin + 2022/07/11 08:48:03 server started + 2022/07/11 08:48:03 main interface at http://macos.local + 2022/07/11 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.5.1 + Rdio Scanner v6.5.2 ---------------------------------- - 2022/06/29 08:50:58 server started - 2022/06/29 08:50:58 main interface at http://macos.local - 2022/06/29 08:50:58 main interface at https://macos.local - 2022/06/29 08:50:58 admin interface at https://macos.local/admin + 2022/07/11 08:50:58 server started + 2022/07/11 08:50:58 main interface at http://macos.local + 2022/07/11 08:50:58 main interface at https://macos.local + 2022/07/11 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/06/29 08:52:24 rdio-scanner.ini file created + 2022/07/11 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.5.1 + Rdio Scanner v6.5.2 ---------------------------------- - 2022/06/29 08:54:08 server started - 2022/06/29 08:54:08 main interface at http://macos.local - 2022/06/29 08:54:08 main interface at https://macos.local - 2022/06/29 08:54:08 admin interface at https://macos.local/admin + 2022/07/11 08:54:08 server started + 2022/07/11 08:54:08 main interface at http://macos.local + 2022/07/11 08:54:08 main interface at https://macos.local + 2022/07/11 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 a48d3e263..c21abfc0a 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.5.1.zip - Archive: ../rdio-scanner-freebsd-amd64-v6.5.1.zip + > ~/rdio-scanner-freebsd-amd64-v6.5.2.zip + Archive: ../rdio-scanner-freebsd-amd64-v6.5.2.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.5.1 + Rdio Scanner v6.5.2 ---------------------------------- - 2022/06/29 08:16:36 server started - 2022/06/29 08:16:36 main interface at http://pc-freebsd:3000 - 2022/06/29 08:16:36 admin interface at http://pc-freebsd:3000/admin + 2022/07/11 08:16:36 server started + 2022/07/11 08:16:36 main interface at http://pc-freebsd:3000 + 2022/07/11 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.5.1 + Rdio Scanner v6.5.2 ---------------------------------- - 2022/06/29 08:19:38 server started - 2022/06/29 08:19:38 main interface at http://pc-freebsd - 2022/06/29 08:19:38 admin interface at http://pc-freebsd/admin + 2022/07/11 08:19:38 server started + 2022/07/11 08:19:38 main interface at http://pc-freebsd + 2022/07/11 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.5.1 + Rdio Scanner v6.5.2 ---------------------------------- - 2022/06/29 10:34:29 server started - 2022/06/29 10:34:29 main interface at http://pc-freebsd - 2022/06/29 10:34:29 main interface at https://pc-freebsd - 2022/06/29 10:34:29 admin interface at https://pc-freebsd/admin + 2022/07/11 10:34:29 server started + 2022/07/11 10:34:29 main interface at http://pc-freebsd + 2022/07/11 10:34:29 main interface at https://pc-freebsd + 2022/07/11 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/06/29 10:37:00 rdio-scanner.ini file created + 2022/07/11 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.5.1 + Rdio Scanner v6.5.2 ---------------------------------- - 2022/06/29 10:38:28 server started - 2022/06/29 10:38:29 main interface at http://pc-freebsd - 2022/06/29 10:38:29 main interface at https://pc-freebsd - 2022/06/29 10:38:29 admin interface at https://pc-freebsd/admin + 2022/07/11 10:38:28 server started + 2022/07/11 10:38:29 main interface at http://pc-freebsd + 2022/07/11 10:38:29 main interface at https://pc-freebsd + 2022/07/11 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 579fafc48..3e6642ade 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.5.1.zip - Archive: /home/rdio/Downloads/rdio-scanner-linux-amd64-v6.5.1.zip + > ~/Downloads/rdio-scanner-linux-amd64-v6.5.2.zip + Archive: /home/rdio/Downloads/rdio-scanner-linux-amd64-v6.5.2.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.5.1 + Rdio Scanner v6.5.2 ---------------------------------- - 2022/06/29 09:11:48 server started - 2022/06/29 09:11:48 main interface at http://pc-linux:3000 - 2022/06/29 09:11:48 admin interface at http://pc-linux:3000/admin + 2022/07/11 09:11:48 server started + 2022/07/11 09:11:48 main interface at http://pc-linux:3000 + 2022/07/11 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.5.1 + Rdio Scanner v6.5.2 ---------------------------------- - 2022/06/29 09:14:00 server started - 2022/06/29 09:14:00 main interface at http://pc-linux - 2022/06/29 09:14:00 admin interface at http://pc-linux/admin + 2022/07/11 09:14:00 server started + 2022/07/11 09:14:00 main interface at http://pc-linux + 2022/07/11 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.5.1 + Rdio Scanner v6.5.2 ---------------------------------- - 2022/06/29 09:16:47 server started - 2022/06/29 09:16:47 main interface at http://pc-linux - 2022/06/29 09:16:47 main interface at https://pc-linux - 2022/06/29 09:16:47 admin interface at https://pc-linux/admin + 2022/07/11 09:16:47 server started + 2022/07/11 09:16:47 main interface at http://pc-linux + 2022/07/11 09:16:47 main interface at https://pc-linux + 2022/07/11 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/06/29 09:19:29 rdio-scanner.ini file created + 2022/07/11 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.5.1 + Rdio Scanner v6.5.2 ---------------------------------- - 2022/06/29 09:20:40 server started - 2022/06/29 09:20:40 main interface at http://pc-linux - 2022/06/29 09:20:40 main interface at https://pc-linux - 2022/06/29 09:20:40 admin interface at https://pc-linux/admin + 2022/07/11 09:20:40 server started + 2022/07/11 09:20:40 main interface at http://pc-linux + 2022/07/11 09:20:40 main interface at https://pc-linux + 2022/07/11 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 558703c00..c648d3dd7 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.5.1.zip + ..\downloads\rdio-scanner-windows-amd64-v6.5.2.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.5.1 + Rdio Scanner v6.5.2 ---------------------------------- - 2022/06/29 13:48:48 server started - 2022/06/29 13:48:48 main interface at http://pc-windows:3000 - 2022/06/29 13:48:48 admin interface at http://pc-windows:3000/admin + 2022/07/11 13:48:48 server started + 2022/07/11 13:48:48 main interface at http://pc-windows:3000 + 2022/07/11 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.5.1 + Rdio Scanner v6.5.2 ---------------------------------- - 2022/06/29 10:53:31 server started - 2022/06/29 10:53:31 main interface at http://pc-windows - 2022/06/29 10:53:31 admin interface at http://pc-windows/admin + 2022/07/11 10:53:31 server started + 2022/07/11 10:53:31 main interface at http://pc-windows + 2022/07/11 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.5.1 + Rdio Scanner v6.5.2 ---------------------------------- - 2022/06/29 11:05:43 server started - 2022/06/29 11:05:43 main interface at http://pc-windows - 2022/06/29 11:05:43 main interface at https://pc-windows - 2022/06/29 11:05:43 admin interface at https://pc-windows/admin + 2022/07/11 11:05:43 server started + 2022/07/11 11:05:43 main interface at http://pc-windows + 2022/07/11 11:05:43 main interface at https://pc-windows + 2022/07/11 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/06/29 11:08:28 rdio-scanner.ini file created + 2022/07/11 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.5.1 + Rdio Scanner v6.5.2 ---------------------------------- - 2022/06/29 11:11:28 server started - 2022/06/29 11:11:28 main interface at http://pc-windows - 2022/06/29 11:11:28 main interface at https://pc-windows - 2022/06/29 11:11:28 admin interface at https://pc-windows/admin + 2022/07/11 11:11:28 server started + 2022/07/11 11:11:28 main interface at http://pc-windows + 2022/07/11 11:11:28 main interface at https://pc-windows + 2022/07/11 11:11:28 admin interface at https://pc-windows/admin \pagebreak{} diff --git a/server/client.go b/server/client.go index dbda9ab1a..c3c60e201 100644 --- a/server/client.go +++ b/server/client.go @@ -112,7 +112,10 @@ func (client *Client) Init(controller *Controller, request *http.Request, conn * defer func() { ticker.Stop() - timer.Stop() + + if timer != nil { + timer.Stop() + } client.Conn.Close() }() @@ -125,17 +128,19 @@ func (client *Client) Init(controller *Controller, request *http.Request, conn * } if message.Command == MessageCommandConfig { - timer.Stop() + if timer != nil { + timer.Stop() + timer = nil - controller.Register <- client + controller.Register <- client - if len(client.Access.Ident) > 0 { - controller.Logs.LogEvent(LogLevelInfo, fmt.Sprintf("new listener from ip %s with ident %s", client.GetRemoteAddr(), client.Access.Ident)) + if len(client.Access.Ident) > 0 { + controller.Logs.LogEvent(LogLevelInfo, fmt.Sprintf("new listener from ip %s with ident %s", client.GetRemoteAddr(), client.Access.Ident)) - } else { - controller.Logs.LogEvent(LogLevelInfo, fmt.Sprintf("new listener from ip %s", client.GetRemoteAddr())) + } else { + controller.Logs.LogEvent(LogLevelInfo, fmt.Sprintf("new listener from ip %s", client.GetRemoteAddr())) + } } - } b, err := message.ToJson() @@ -201,11 +206,15 @@ func (client *Client) SendListenersCount(count int) { } type Clients struct { - Map sync.Map + Map sync.Map + count int } func NewClients() *Clients { - return &Clients{Map: sync.Map{}} + return &Clients{ + Map: sync.Map{}, + count: 0, + } } func (clients *Clients) AccessCount(client *Client) int { @@ -225,19 +234,12 @@ func (clients *Clients) AccessCount(client *Client) int { } func (clients *Clients) Add(client *Client) { + clients.count = clients.count + 1 clients.Map.Store(client, true) } func (clients *Clients) Count() int { - count := 0 - - clients.Map.Range(func(k, v any) bool { - count++ - - return true - }) - - return count + return clients.count } func (clients *Clients) EmitCall(call *Call, restricted bool) { @@ -288,5 +290,7 @@ func (clients *Clients) EmitListenersCount() { } func (clients *Clients) Remove(client *Client) { - clients.Map.Delete(client) + if _, loaded := clients.Map.LoadAndDelete(client); loaded { + clients.count = clients.count - 1 + } } diff --git a/server/controller.go b/server/controller.go index 7c2fd9e6f..9e9513383 100644 --- a/server/controller.go +++ b/server/controller.go @@ -331,7 +331,6 @@ func (controller *Controller) ProcessMessage(client *Client, message *Message) e } else if message.Command == MessageCommandConfig { client.SendConfig(controller.Groups, controller.Options, controller.Systems, controller.Tags) - client.SendListenersCount(controller.Clients.Count()) } else if message.Command == MessageCommandListCall { if err := controller.ProcessMessageCommandListCall(client, message); err != nil { diff --git a/server/dirwatch.go b/server/dirwatch.go index 53febbbd6..17205ec17 100644 --- a/server/dirwatch.go +++ b/server/dirwatch.go @@ -322,7 +322,7 @@ func (dirwatch *Dirwatch) ingestTrunkRecorder(p string) error { func (dirwatch *Dirwatch) parseMask(call *Call) { var meta = [][]string{ - {"date", "#DATE", `[\d-_]+`}, + {"date", "#DATE", `\d{4}[-_]{0,1}\d{2}[-_]{0,1}\d{2}`}, {"group", "#GROUP", `[a-zA-Z0-9\.\ -]+`}, {"hz", "#HZ", `\d+`}, {"khz", "#KHZ", `[\d\.]+`}, @@ -336,9 +336,9 @@ func (dirwatch *Dirwatch) parseMask(call *Call) { {"tglbl", "#TGLBL", `[a-zA-Z0-9,\.\ -]+`}, {"tgmhz", "#TGMHZ", `[\d\.]+`}, {"tg", "#TG", `\d+`}, - {"time", "#TIME", `[\d-:]+`}, + {"time", "#TIME", `\d{2}[-:]{0,1}\d{2}[-:]{0,1}\d{2}`}, {"unit", "#UNIT", `\d+`}, - {"ztime", "#ZTIME", `[\d-:]+`}, + {"ztime", "#ZTIME", `\d{2}[-:]{0,1}\d{2}[-:]{0,1}\d{2}`}, } var ( diff --git a/server/version.go b/server/version.go index 8acffab3b..08767aac5 100644 --- a/server/version.go +++ b/server/version.go @@ -15,4 +15,4 @@ package main -const Version = "6.5.1" +const Version = "6.5.2"