mirror of
https://github.com/chuot/rdio-scanner.git
synced 2026-08-13 08:33:00 -06:00
Version 6.1.5
This commit is contained in:
parent
f2f45945df
commit
7f537689bc
|
|
@ -38,6 +38,13 @@ _v6.1.4_
|
|||
- Fix 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.
|
||||
|
||||
## Version 6.0
|
||||
|
||||
- Backend server rewritten in Go for better performance and ease of installation.
|
||||
|
|
|
|||
16
COMPILING.md
16
COMPILING.md
|
|
@ -24,13 +24,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.1.4.zip
|
||||
rdio-scanner-darwin-arm64-v6.1.4.zip
|
||||
rdio-scanner-freebsd-amd64-v6.1.4.zip
|
||||
rdio-scanner-linux-386-v6.1.4.zip
|
||||
rdio-scanner-linux-amd64-v6.1.4.zip
|
||||
rdio-scanner-linux-arm64-v6.1.4.zip
|
||||
rdio-scanner-linux-arm-v6.1.4.zip
|
||||
rdio-scanner-windows-amd64-v6.1.4.zip
|
||||
rdio-scanner-darwin-amd64-v6.1.5.zip
|
||||
rdio-scanner-darwin-arm64-v6.1.5.zip
|
||||
rdio-scanner-freebsd-amd64-v6.1.5.zip
|
||||
rdio-scanner-linux-386-v6.1.5.zip
|
||||
rdio-scanner-linux-amd64-v6.1.5.zip
|
||||
rdio-scanner-linux-arm64-v6.1.5.zip
|
||||
rdio-scanner-linux-arm-v6.1.5.zip
|
||||
rdio-scanner-windows-amd64-v6.1.5.zip
|
||||
|
||||
**Happy Rdio scanning !**
|
||||
4
Makefile
4
Makefile
|
|
@ -16,8 +16,8 @@
|
|||
################################################################################
|
||||
|
||||
app := rdio-scanner
|
||||
date := 2022/01/22
|
||||
ver := 6.1.4
|
||||
date := 2022/01/24
|
||||
ver := 6.1.5
|
||||
|
||||
client := $(wildcard client/*.json client/*.ts)
|
||||
server := $(wildcard server/*.go)
|
||||
|
|
|
|||
3952
client/package-lock.json
generated
3952
client/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
|
@ -1,31 +1,31 @@
|
|||
{
|
||||
"author": "Chrystian Huot <chrystian.huot@saubeo.solutions>",
|
||||
"dependencies": {
|
||||
"@angular/animations": "^13.1.2",
|
||||
"@angular/cdk": "^13.1.2",
|
||||
"@angular/common": "~13.1.2",
|
||||
"@angular/compiler": "~13.1.2",
|
||||
"@angular/core": "~13.1.2",
|
||||
"@angular/forms": "~13.1.2",
|
||||
"@angular/material": "^13.1.2",
|
||||
"@angular/platform-browser": "~13.1.2",
|
||||
"@angular/platform-browser-dynamic": "~13.1.2",
|
||||
"@angular/router": "^13.1.2",
|
||||
"@angular/service-worker": "^13.1.2",
|
||||
"@angular/animations": "^13.1.3",
|
||||
"@angular/cdk": "^13.1.3",
|
||||
"@angular/common": "~13.1.3",
|
||||
"@angular/compiler": "~13.1.3",
|
||||
"@angular/core": "~13.1.3",
|
||||
"@angular/forms": "~13.1.3",
|
||||
"@angular/material": "^13.1.3",
|
||||
"@angular/platform-browser": "~13.1.3",
|
||||
"@angular/platform-browser-dynamic": "~13.1.3",
|
||||
"@angular/router": "^13.1.3",
|
||||
"@angular/service-worker": "^13.1.3",
|
||||
"rxjs": "~7.4.0",
|
||||
"tslib": "^2.3.1",
|
||||
"zone.js": "~0.11.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@angular-devkit/build-angular": "^13.1.3",
|
||||
"@angular/cli": "^13.1.3",
|
||||
"@angular/compiler-cli": "~13.1.2",
|
||||
"@angular-devkit/build-angular": "^13.1.4",
|
||||
"@angular/cli": "^13.1.4",
|
||||
"@angular/compiler-cli": "~13.1.3",
|
||||
"@types/node": "^17.0.10",
|
||||
"@typescript-eslint/eslint-plugin": "^5.10.0",
|
||||
"@typescript-eslint/parser": "^5.10.0",
|
||||
"ajv-keywords": "^5.1.0",
|
||||
"eslint": "^8.7.0",
|
||||
"npm-check-updates": "^12.1.0",
|
||||
"npm-check-updates": "^12.2.1",
|
||||
"ts-node": "~10.4.0",
|
||||
"typescript": "~4.4.4"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -504,14 +504,18 @@ export class RdioScannerMainComponent implements OnDestroy, OnInit {
|
|||
|
||||
this.callHistory.unshift(this.callPrevious);
|
||||
}
|
||||
}
|
||||
|
||||
if (this.map[this.call.system]) {
|
||||
this.patched = this.livefeedOnline && !this.map[this.call.system][this.call.talkgroup];
|
||||
this.avoided = !this.patched && !this.map[this.call.system][this.call.talkgroup];
|
||||
const call = this.call || this.callPrevious;
|
||||
|
||||
if (call) {
|
||||
if (call.patched) {
|
||||
this.avoided = false;
|
||||
this.patched = true;
|
||||
} else {
|
||||
this.avoided = this.rdioScannerService.isAvoided(call);
|
||||
this.patched = false;
|
||||
}
|
||||
|
||||
} else if (this.callPrevious && !this.patched) {
|
||||
this.avoided = this.map[this.callPrevious.system] && !this.map[this.callPrevious.system][this.callPrevious.talkgroup];
|
||||
}
|
||||
|
||||
const colors = ['blue', 'cyan', 'green', 'magenta', 'red', 'white', 'yellow'];
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@
|
|||
|
||||
import { DOCUMENT } from '@angular/common';
|
||||
import { EventEmitter, Inject, Injectable, OnDestroy } from '@angular/core';
|
||||
import { takeWhile } from 'rxjs/operators';
|
||||
import { AppUpdateService } from '../../shared/update/update.service';
|
||||
import {
|
||||
RdioScannerAvoidOptions,
|
||||
|
|
@ -324,6 +323,16 @@ export class RdioScannerService implements OnDestroy {
|
|||
}
|
||||
}
|
||||
|
||||
isAvoided(call: RdioScannerCall): boolean {
|
||||
return !!this.livefeedMap[call.system] && this.livefeedMap[call.system][call.talkgroup] === false;
|
||||
}
|
||||
|
||||
isPatched(call: RdioScannerCall): boolean {
|
||||
return this.isAvoided(call) && call.patches.some((tg) => {
|
||||
return !!this.livefeedMap[call.system] && this.livefeedMap[call.system][tg];
|
||||
});
|
||||
}
|
||||
|
||||
livefeed(): void {
|
||||
if (this.livefeedMode === RdioScannerLivefeedMode.Offline) {
|
||||
this.startLivefeed();
|
||||
|
|
@ -676,7 +685,7 @@ export class RdioScannerService implements OnDestroy {
|
|||
|
||||
private cleanQueue(): void {
|
||||
let isActive = (call: RdioScannerCall) => {
|
||||
let lfm = (sys: number, tg: number) => this.livefeedMap && this.livefeedMap[sys] && this.livefeedMap[sys][tg];
|
||||
let lfm = (sys: number, tg: number) => this.livefeedMap && this.livefeedMap[sys] && this.livefeedMap[sys][tg];
|
||||
let active = lfm(call.system, call.talkgroup);
|
||||
if (!active && Array.isArray(call.patches)) {
|
||||
for (let i = 0; i < call.patches.length; i++) {
|
||||
|
|
@ -794,16 +803,23 @@ export class RdioScannerService implements OnDestroy {
|
|||
switch (message[0]) {
|
||||
case WebsocketCommand.Call:
|
||||
if (message[1] !== null) {
|
||||
if (message[2] === WebsocketCallFlag.Download) {
|
||||
let call: RdioScannerCall = message[1];
|
||||
let flag: string = message[2];
|
||||
|
||||
if (flag === WebsocketCallFlag.Download) {
|
||||
this.download(message[1]);
|
||||
|
||||
} else if (message[2] === WebsocketCallFlag.Play && message[1]?.id === this.playbackPending) {
|
||||
} else if (flag === WebsocketCallFlag.Play && call.id === this.playbackPending) {
|
||||
this.playbackPending = undefined;
|
||||
|
||||
this.queue(this.transformCall(message[1]), { priority: true });
|
||||
this.queue(this.transformCall(call), { priority: true });
|
||||
|
||||
} else {
|
||||
this.queue(this.transformCall(message[1]));
|
||||
console.log(call.id, this.isPatched(call));
|
||||
if (this.isPatched(call)) {
|
||||
call.patched = true;
|
||||
}
|
||||
this.queue(this.transformCall(call));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ export interface RdioScannerCall {
|
|||
frequencies?: RdioScannerCallFrequency[];
|
||||
frequency?: number;
|
||||
id: number;
|
||||
patched?: boolean;
|
||||
patches: number[];
|
||||
source?: number;
|
||||
sources?: RdioScannerCallSource[];
|
||||
|
|
|
|||
|
|
@ -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.1.4.zip
|
||||
Archive: /Users/rdio/Downloads/rdio-scanner-darwin-arm64-v6.1.4.zip
|
||||
> ~/Downloads/rdio-scanner-darwin-arm64-v6.1.5.zip
|
||||
Archive: /Users/rdio/Downloads/rdio-scanner-darwin-arm64-v6.1.5.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.1.4
|
||||
Rdio Scanner v6.1.5
|
||||
----------------------------------
|
||||
2022/01/22 08:38:06 server started
|
||||
2022/01/22 08:38:06 main interface at http://macos.local:3000
|
||||
2022/01/22 08:38:06 admin interface at http://macos.local:3000/admin
|
||||
2022/01/24 08:38:06 server started
|
||||
2022/01/24 08:38:06 main interface at http://macos.local:3000
|
||||
2022/01/24 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.1.4
|
||||
Rdio Scanner v6.1.5
|
||||
----------------------------------
|
||||
2022/01/22 08:48:03 server started
|
||||
2022/01/22 08:48:03 main interface at http://macos.local
|
||||
2022/01/22 08:48:03 admin interface at http://macos.local/admin
|
||||
2022/01/24 08:48:03 server started
|
||||
2022/01/24 08:48:03 main interface at http://macos.local
|
||||
2022/01/24 08:48:03 admin interface at http://macos.local/admin
|
||||
|
||||
## Listening with SSL with self-signed certificates
|
||||
|
||||
|
|
@ -90,8 +90,8 @@ It is advised to share your [Rdio Scanner](https://github.com/chuot/rdio-scanner
|
|||
We can create such self-signed certificates by running [Rdio Scanner](https://github.com/chuot/rdio-scanner) with the **-ssl_create** argument.
|
||||
|
||||
rdio@macos rdio-scanner % ./rdio-scanner -ssl_create
|
||||
2022/01/22 08:49:16 generating ssl certificate files
|
||||
2022/01/22 08:49:17 ssl files created
|
||||
2022/01/24 08:49:16 generating ssl certificate files
|
||||
2022/01/24 08:49:17 ssl files created
|
||||
|
||||
This has generated these files in the same folder as your [Rdio Scanner](https://github.com/chuot/rdio-scanner) executable.
|
||||
|
||||
|
|
@ -108,12 +108,12 @@ Now we use the self-signed server certificate to run our instance.
|
|||
> -ssl_key_file server.key \
|
||||
> -ssl_listen :443
|
||||
|
||||
Rdio Scanner v6.1.4
|
||||
Rdio Scanner v6.1.5
|
||||
----------------------------------
|
||||
2022/01/22 08:50:58 server started
|
||||
2022/01/22 08:50:58 main interface at http://macos.local
|
||||
2022/01/22 08:50:58 main interface at https://macos.local
|
||||
2022/01/22 08:50:58 admin interface at https://macos.local/admin
|
||||
2022/01/24 08:50:58 server started
|
||||
2022/01/24 08:50:58 main interface at http://macos.local
|
||||
2022/01/24 08:50:58 main interface at https://macos.local
|
||||
2022/01/24 08:50:58 admin interface at https://macos.local/admin
|
||||
|
||||
## Save your advanced configuration to a config file
|
||||
|
||||
|
|
@ -125,7 +125,7 @@ You don't want to have to type everytime a long list of arguments. No problem, y
|
|||
> -ssl_key_file server.key \
|
||||
> -ssl_listen :443 \
|
||||
> -config_save
|
||||
2022/01/22 08:52:24 rdio-scanner.ini file created
|
||||
2022/01/24 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.
|
||||
|
||||
|
|
@ -140,12 +140,12 @@ Then simply run [Rdio Scanner](https://github.com/chuot/rdio-scanner) without an
|
|||
|
||||
rdio@macos rdio-scanner % ./rdio-scanner
|
||||
|
||||
Rdio Scanner v6.1.4
|
||||
Rdio Scanner v6.1.5
|
||||
----------------------------------
|
||||
2022/01/22 08:54:08 server started
|
||||
2022/01/22 08:54:08 main interface at http://macos.local
|
||||
2022/01/22 08:54:08 main interface at https://macos.local
|
||||
2022/01/22 08:54:08 admin interface at https://macos.local/admin
|
||||
2022/01/24 08:54:08 server started
|
||||
2022/01/24 08:54:08 main interface at http://macos.local
|
||||
2022/01/24 08:54:08 main interface at https://macos.local
|
||||
2022/01/24 08:54:08 admin interface at https://macos.local/admin
|
||||
|
||||
## Install Rdio Scanner as a service
|
||||
|
||||
|
|
|
|||
|
|
@ -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.1.4.zip
|
||||
Archive: ../rdio-scanner-freebsd-amd64-v6.1.4.zip
|
||||
> ~/rdio-scanner-freebsd-amd64-v6.1.5.zip
|
||||
Archive: ../rdio-scanner-freebsd-amd64-v6.1.5.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.1.4
|
||||
Rdio Scanner v6.1.5
|
||||
----------------------------------
|
||||
2022/01/22 08:16:36 server started
|
||||
2022/01/22 08:16:36 main interface at http://pc-freebsd:3000
|
||||
2022/01/22 08:16:36 admin interface at http://pc-freebsd:3000/admin
|
||||
2022/01/24 08:16:36 server started
|
||||
2022/01/24 08:16:36 main interface at http://pc-freebsd:3000
|
||||
2022/01/24 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.1.4
|
||||
Rdio Scanner v6.1.5
|
||||
----------------------------------
|
||||
2022/01/22 08:19:38 server started
|
||||
2022/01/22 08:19:38 main interface at http://pc-freebsd
|
||||
2022/01/22 08:19:38 admin interface at http://pc-freebsd/admin
|
||||
2022/01/24 08:19:38 server started
|
||||
2022/01/24 08:19:38 main interface at http://pc-freebsd
|
||||
2022/01/24 08:19:38 admin interface at http://pc-freebsd/admin
|
||||
|
||||
## Listening with SSL with self-signed certificates
|
||||
|
||||
|
|
@ -94,8 +94,8 @@ It is advised to share your [Rdio Scanner](https://github.com/chuot/rdio-scanner
|
|||
We can create such self-signed certificates by running [Rdio Scanner](https://github.com/chuot/rdio-scanner) with the **-ssl_create** argument.
|
||||
|
||||
rdio@pc-freebsd:~/rdio-scanner $ ./rdio-scanner -ssl_create
|
||||
2022/01/22 10:32:17 generating ssl certificate files
|
||||
2022/01/22 10:32:19 ssl files created
|
||||
2022/01/24 10:32:17 generating ssl certificate files
|
||||
2022/01/24 10:32:19 ssl files created
|
||||
|
||||
This has generated these files in the same folder as your [Rdio Scanner](https://github.com/chuot/rdio-scanner) executable.
|
||||
|
||||
|
|
@ -114,12 +114,12 @@ Now we use the self-signed server certificate to run our instance.
|
|||
> -ssl_key_file server.key \
|
||||
> -ssl_listen :443
|
||||
|
||||
Rdio Scanner v6.1.4
|
||||
Rdio Scanner v6.1.5
|
||||
----------------------------------
|
||||
2022/01/22 10:34:29 server started
|
||||
2022/01/22 10:34:29 main interface at http://pc-freebsd
|
||||
2022/01/22 10:34:29 main interface at https://pc-freebsd
|
||||
2022/01/22 10:34:29 admin interface at https://pc-freebsd/admin
|
||||
2022/01/24 10:34:29 server started
|
||||
2022/01/24 10:34:29 main interface at http://pc-freebsd
|
||||
2022/01/24 10:34:29 main interface at https://pc-freebsd
|
||||
2022/01/24 10:34:29 admin interface at https://pc-freebsd/admin
|
||||
|
||||
## Save your advanced configuration to a config file
|
||||
|
||||
|
|
@ -131,7 +131,7 @@ You don't want to have to type everytime a long list of arguments. No problem, y
|
|||
> -ssl_key_file server.key \
|
||||
> -ssl_listen :443 \
|
||||
> -config_save
|
||||
2022/01/22 10:37:00 rdio-scanner.ini file created
|
||||
2022/01/24 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.
|
||||
|
||||
|
|
@ -148,12 +148,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.1.4
|
||||
Rdio Scanner v6.1.5
|
||||
----------------------------------
|
||||
2022/01/22 10:38:28 server started
|
||||
2022/01/22 10:38:29 main interface at http://pc-freebsd
|
||||
2022/01/22 10:38:29 main interface at https://pc-freebsd
|
||||
2022/01/22 10:38:29 admin interface at https://pc-freebsd/admin
|
||||
2022/01/24 10:38:28 server started
|
||||
2022/01/24 10:38:29 main interface at http://pc-freebsd
|
||||
2022/01/24 10:38:29 main interface at https://pc-freebsd
|
||||
2022/01/24 10:38:29 admin interface at https://pc-freebsd/admin
|
||||
|
||||
## Install Rdio Scanner as a service
|
||||
|
||||
|
|
|
|||
|
|
@ -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.1.4.zip
|
||||
Archive: /home/rdio/Downloads/rdio-scanner-linux-amd64-v6.1.4.zip
|
||||
> ~/Downloads/rdio-scanner-linux-amd64-v6.1.5.zip
|
||||
Archive: /home/rdio/Downloads/rdio-scanner-linux-amd64-v6.1.5.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.1.4
|
||||
Rdio Scanner v6.1.5
|
||||
----------------------------------
|
||||
2022/01/22 09:11:48 server started
|
||||
2022/01/22 09:11:48 main interface at http://pc-linux:3000
|
||||
2022/01/22 09:11:48 admin interface at http://pc-linux:3000/admin
|
||||
2022/01/24 09:11:48 server started
|
||||
2022/01/24 09:11:48 main interface at http://pc-linux:3000
|
||||
2022/01/24 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.1.4
|
||||
Rdio Scanner v6.1.5
|
||||
----------------------------------
|
||||
2022/01/22 09:14:00 server started
|
||||
2022/01/22 09:14:00 main interface at http://pc-linux
|
||||
2022/01/22 09:14:00 admin interface at http://pc-linux/admin
|
||||
2022/01/24 09:14:00 server started
|
||||
2022/01/24 09:14:00 main interface at http://pc-linux
|
||||
2022/01/24 09:14:00 admin interface at http://pc-linux/admin
|
||||
|
||||
## Listening with SSL with self-signed certificates
|
||||
|
||||
|
|
@ -91,8 +91,8 @@ It is advised to share your [Rdio Scanner](https://github.com/chuot/rdio-scanner
|
|||
We can create such self-signed certificates by running [Rdio Scanner](https://github.com/chuot/rdio-scanner) with the **-ssl_create** argument.
|
||||
|
||||
[rdio@pc-linux rdio-scanner]$ ./rdio-scanner -ssl_create
|
||||
2022/01/22 09:15:03 generating ssl certificate files
|
||||
2022/01/22 09:15:05 ssl files created
|
||||
2022/01/24 09:15:03 generating ssl certificate files
|
||||
2022/01/24 09:15:05 ssl files created
|
||||
|
||||
This has generated these files in the same folder as your [Rdio Scanner](https://github.com/chuot/rdio-scanner) executable.
|
||||
|
||||
|
|
@ -110,12 +110,12 @@ Now we use the self-signed server certificate to run our instance.
|
|||
> -ssl_listen :443
|
||||
[sudo] password for rdio:
|
||||
|
||||
Rdio Scanner v6.1.4
|
||||
Rdio Scanner v6.1.5
|
||||
----------------------------------
|
||||
2022/01/22 09:16:47 server started
|
||||
2022/01/22 09:16:47 main interface at http://pc-linux
|
||||
2022/01/22 09:16:47 main interface at https://pc-linux
|
||||
2022/01/22 09:16:47 admin interface at https://pc-linux/admin
|
||||
2022/01/24 09:16:47 server started
|
||||
2022/01/24 09:16:47 main interface at http://pc-linux
|
||||
2022/01/24 09:16:47 main interface at https://pc-linux
|
||||
2022/01/24 09:16:47 admin interface at https://pc-linux/admin
|
||||
|
||||
## Save your advanced configuration to a config file
|
||||
|
||||
|
|
@ -127,7 +127,7 @@ You don't want to have to type everytime a long list of arguments. No problem, y
|
|||
> -ssl_key_file server.key \
|
||||
> -ssl_listen :443 \
|
||||
> -config_save
|
||||
2022/01/22 09:19:29 rdio-scanner.ini file created
|
||||
2022/01/24 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.
|
||||
|
||||
|
|
@ -143,12 +143,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.1.4
|
||||
Rdio Scanner v6.1.5
|
||||
----------------------------------
|
||||
2022/01/22 09:20:40 server started
|
||||
2022/01/22 09:20:40 main interface at http://pc-linux
|
||||
2022/01/22 09:20:40 main interface at https://pc-linux
|
||||
2022/01/22 09:20:40 admin interface at https://pc-linux/admin
|
||||
2022/01/24 09:20:40 server started
|
||||
2022/01/24 09:20:40 main interface at http://pc-linux
|
||||
2022/01/24 09:20:40 main interface at https://pc-linux
|
||||
2022/01/24 09:20:40 admin interface at https://pc-linux/admin
|
||||
|
||||
## Install Rdio Scanner as a service
|
||||
|
||||
|
|
|
|||
|
|
@ -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.1.4.zip
|
||||
..\downloads\rdio-scanner-windows-amd64-v6.1.5.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.1.4
|
||||
Rdio Scanner v6.1.5
|
||||
----------------------------------
|
||||
2022/01/22 13:48:48 server started
|
||||
2022/01/22 13:48:48 main interface at http://pc-windows:3000
|
||||
2022/01/22 13:48:48 admin interface at http://pc-windows:3000/admin
|
||||
2022/01/24 13:48:48 server started
|
||||
2022/01/24 13:48:48 main interface at http://pc-windows:3000
|
||||
2022/01/24 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.1.4
|
||||
Rdio Scanner v6.1.5
|
||||
----------------------------------
|
||||
2022/01/22 10:53:31 server started
|
||||
2022/01/22 10:53:31 main interface at http://pc-windows
|
||||
2022/01/22 10:53:31 admin interface at http://pc-windows/admin
|
||||
2022/01/24 10:53:31 server started
|
||||
2022/01/24 10:53:31 main interface at http://pc-windows
|
||||
2022/01/24 10:53:31 admin interface at http://pc-windows/admin
|
||||
|
||||
## Listening with SSL with self-signed certificates
|
||||
|
||||
|
|
@ -91,8 +91,8 @@ It is advised to share your [Rdio Scanner](https://github.com/chuot/rdio-scanner
|
|||
We can create such self-signed certificates by running [Rdio Scanner](https://github.com/chuot/rdio-scanner) with the **-ssl_create** argument.
|
||||
|
||||
C:\Users\rdio\rdio-scanner>rdio-scanner -ssl_create
|
||||
2022/01/22 10:58:51 generating ssl certificate files
|
||||
2022/01/22 10:58:54 ssl files created
|
||||
2022/01/24 10:58:51 generating ssl certificate files
|
||||
2022/01/24 10:58:54 ssl files created
|
||||
|
||||
This has generated these files in the same folder as your [Rdio Scanner](https://github.com/chuot/rdio-scanner) executable.
|
||||
|
||||
|
|
@ -109,12 +109,12 @@ Now we use the self-signed server certificate to run our instance.
|
|||
-ssl_key_file server.key ^
|
||||
-ssl_listen :443
|
||||
|
||||
Rdio Scanner v6.1.4
|
||||
Rdio Scanner v6.1.5
|
||||
----------------------------------
|
||||
2022/01/22 11:05:43 server started
|
||||
2022/01/22 11:05:43 main interface at http://pc-windows
|
||||
2022/01/22 11:05:43 main interface at https://pc-windows
|
||||
2022/01/22 11:05:43 admin interface at https://pc-windows/admin
|
||||
2022/01/24 11:05:43 server started
|
||||
2022/01/24 11:05:43 main interface at http://pc-windows
|
||||
2022/01/24 11:05:43 main interface at https://pc-windows
|
||||
2022/01/24 11:05:43 admin interface at https://pc-windows/admin
|
||||
|
||||
## Save your advanced configuration to a config file
|
||||
|
||||
|
|
@ -126,7 +126,7 @@ You don't want to have to type everytime a long list of arguments. No problem, y
|
|||
-ssl_key_file server.key ^
|
||||
-ssl_listen :443 ^
|
||||
-config_save
|
||||
2022/01/22 11:08:28 rdio-scanner.ini file created
|
||||
2022/01/24 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.
|
||||
|
||||
|
|
@ -141,12 +141,12 @@ Then simply run [Rdio Scanner](https://github.com/chuot/rdio-scanner) without an
|
|||
|
||||
C:\Users\rdio\rdio-scanner>rdio-scanner
|
||||
|
||||
Rdio Scanner v6.1.4
|
||||
Rdio Scanner v6.1.5
|
||||
----------------------------------
|
||||
2022/01/22 11:11:28 server started
|
||||
2022/01/22 11:11:28 main interface at http://pc-windows
|
||||
2022/01/22 11:11:28 main interface at https://pc-windows
|
||||
2022/01/22 11:11:28 admin interface at https://pc-windows/admin
|
||||
2022/01/24 11:11:28 server started
|
||||
2022/01/24 11:11:28 main interface at http://pc-windows
|
||||
2022/01/24 11:11:28 main interface at https://pc-windows
|
||||
2022/01/24 11:11:28 admin interface at https://pc-windows/admin
|
||||
|
||||
\pagebreak{}
|
||||
|
||||
|
|
|
|||
|
|
@ -48,13 +48,13 @@ func (api *Api) CallUploadHandler(w http.ResponseWriter, r *http.Request) {
|
|||
mediaType, params, err := mime.ParseMediaType(r.Header.Get("Content-Type"))
|
||||
if err != nil {
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
w.Write([]byte("Invalid content-type"))
|
||||
w.Write([]byte("Invalid content-type\n"))
|
||||
return
|
||||
}
|
||||
|
||||
if !strings.HasPrefix(mediaType, "multipart/") {
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
w.Write([]byte("Not a multipart content"))
|
||||
w.Write([]byte("Not a multipart content\n"))
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -85,12 +85,12 @@ func (api *Api) CallUploadHandler(w http.ResponseWriter, r *http.Request) {
|
|||
api.HandleCall(key, call, w)
|
||||
} else {
|
||||
w.WriteHeader(http.StatusExpectationFailed)
|
||||
w.Write([]byte("Incomplete call data"))
|
||||
w.Write([]byte("Incomplete call data\n"))
|
||||
}
|
||||
|
||||
default:
|
||||
w.WriteHeader(http.StatusMethodNotAllowed)
|
||||
w.Write([]byte("Unsupported method"))
|
||||
w.Write([]byte("Unsupported method\n"))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -127,18 +127,20 @@ func (api *Api) TrunkRecorderCallUploadHandler(w http.ResponseWriter, r *http.Re
|
|||
mediaType, params, err := mime.ParseMediaType(r.Header.Get("Content-Type"))
|
||||
if err != nil {
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
w.Write([]byte("Invalid content-type"))
|
||||
w.Write([]byte("Invalid content-type\n"))
|
||||
return
|
||||
}
|
||||
|
||||
if !strings.HasPrefix(mediaType, "multipart/") {
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
w.Write([]byte("Not a multipart content"))
|
||||
w.Write([]byte("Not a multipart content\n"))
|
||||
return
|
||||
}
|
||||
|
||||
mr := multipart.NewReader(r.Body, params["boundary"])
|
||||
|
||||
parts := map[*multipart.Part][]byte{}
|
||||
|
||||
for {
|
||||
p, err := mr.NextPart()
|
||||
if err == io.EOF {
|
||||
|
|
@ -158,27 +160,15 @@ func (api *Api) TrunkRecorderCallUploadHandler(w http.ResponseWriter, r *http.Re
|
|||
case "meta":
|
||||
if err := ParseTrunkRecorderMeta(call, b); err != nil {
|
||||
w.WriteHeader(http.StatusExpectationFailed)
|
||||
w.Write([]byte("Invalid call data"))
|
||||
w.Write([]byte("Invalid call data\n"))
|
||||
return
|
||||
}
|
||||
default:
|
||||
parts[p] = b
|
||||
}
|
||||
}
|
||||
|
||||
mr = multipart.NewReader(r.Body, params["boundary"])
|
||||
|
||||
for {
|
||||
p, err := mr.NextPart()
|
||||
if err == io.EOF {
|
||||
break
|
||||
} else if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
b, err := io.ReadAll(p)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
for p, b := range parts {
|
||||
ParseMultipartContent(call, p, b)
|
||||
}
|
||||
|
||||
|
|
@ -187,11 +177,11 @@ func (api *Api) TrunkRecorderCallUploadHandler(w http.ResponseWriter, r *http.Re
|
|||
|
||||
} else {
|
||||
w.WriteHeader(http.StatusExpectationFailed)
|
||||
w.Write([]byte("Incomplete call data"))
|
||||
w.Write([]byte("Incomplete call data\n"))
|
||||
}
|
||||
|
||||
default:
|
||||
w.WriteHeader(http.StatusMethodNotAllowed)
|
||||
w.Write([]byte("Unsupported method"))
|
||||
w.Write([]byte("Unsupported method\n"))
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -95,7 +95,7 @@ func (controller *Controller) ConvertAudio(call *Call) {
|
|||
if !controller.ffmpegWarned {
|
||||
controller.ffmpegWarned = true
|
||||
|
||||
controller.Logs.LogEvent(controller.Database, LogLevelWarn, "ffmpeg is not accessible, no audio conversion will be performed.")
|
||||
controller.Logs.LogEvent(controller.Database, LogLevelWarn, "ffmpeg is not available, no audio conversion will be performed.")
|
||||
}
|
||||
return
|
||||
}
|
||||
|
|
|
|||
|
|
@ -472,6 +472,9 @@ func (dirwatch *Dirwatch) Start(controller *Controller) error {
|
|||
pending := map[string]*time.Timer{}
|
||||
|
||||
for {
|
||||
if dirwatch.watcher == nil {
|
||||
break
|
||||
}
|
||||
if event, ok := <-dirwatch.watcher.Events; ok {
|
||||
switch event.Op {
|
||||
case fsnotify.Create:
|
||||
|
|
|
|||
|
|
@ -238,7 +238,7 @@ func (downstream *Downstream) Send(call *Call) error {
|
|||
}
|
||||
|
||||
switch v := call.Sources.(type) {
|
||||
case []interface{}:
|
||||
case []map[string]interface{}:
|
||||
if w, err := mw.CreateFormField("sources"); err == nil {
|
||||
if b, err := json.Marshal(v); err == nil {
|
||||
if _, err = w.Write(b); err != nil {
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ require (
|
|||
github.com/gorilla/websocket v1.4.2
|
||||
github.com/kardianos/service v1.2.1
|
||||
golang.org/x/crypto v0.0.0-20220112180741-5e0467b6c7ce
|
||||
gopkg.in/ini.v1 v1.66.2
|
||||
gopkg.in/ini.v1 v1.66.3
|
||||
modernc.org/sqlite v1.14.5
|
||||
)
|
||||
|
||||
|
|
@ -21,7 +21,7 @@ require (
|
|||
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 // indirect
|
||||
github.com/stretchr/testify v1.7.0 // indirect
|
||||
golang.org/x/mod v0.5.1 // indirect
|
||||
golang.org/x/net v0.0.0-20220114011407-0dd24b26b47d // indirect
|
||||
golang.org/x/net v0.0.0-20220121210141-e204ce36a2ba // indirect
|
||||
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9 // indirect
|
||||
golang.org/x/text v0.3.7 // indirect
|
||||
golang.org/x/tools v0.1.8 // indirect
|
||||
|
|
@ -29,7 +29,7 @@ require (
|
|||
lukechampine.com/uint128 v1.2.0 // indirect
|
||||
modernc.org/cc/v3 v3.35.22 // indirect
|
||||
modernc.org/ccgo/v3 v3.15.11 // indirect
|
||||
modernc.org/libc v1.14.3 // indirect
|
||||
modernc.org/libc v1.14.4 // indirect
|
||||
modernc.org/mathutil v1.4.1 // indirect
|
||||
modernc.org/memory v1.0.5 // indirect
|
||||
modernc.org/opt v0.1.1 // indirect
|
||||
|
|
|
|||
|
|
@ -47,8 +47,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL
|
|||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20220114011407-0dd24b26b47d h1:1n1fc535VhN8SYtD4cDUyNlfpAF2ROMM9+11equK3hs=
|
||||
golang.org/x/net v0.0.0-20220114011407-0dd24b26b47d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20220121210141-e204ce36a2ba h1:6u6sik+bn/y7vILcYkK3iwTBWN7WtBvB0+SZswQnbf8=
|
||||
golang.org/x/net v0.0.0-20220121210141-e204ce36a2ba/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
|
|
@ -65,9 +65,11 @@ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBc
|
|||
golang.org/x/sys v0.0.0-20210902050250-f475640dd07b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9 h1:XfKQ4OlFl8okEOr5UvAqFRVj8pY/4yfcXrddB8qAbU0=
|
||||
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
|
|
@ -84,8 +86,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T
|
|||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/ini.v1 v1.66.2 h1:XfR1dOYubytKy4Shzc2LHrrGhU0lDCfDGG1yLPmpgsI=
|
||||
gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||
gopkg.in/ini.v1 v1.66.3 h1:jRskFVxYaMGAMUbN0UZ7niA9gzL9B49DOqE78vg0k3w=
|
||||
gopkg.in/ini.v1 v1.66.3/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk=
|
||||
|
|
@ -198,8 +200,9 @@ modernc.org/libc v1.13.1/go.mod h1:npFeGWjmZTjFeWALQLrvklVmAxv4m80jnG3+xI8FdJk=
|
|||
modernc.org/libc v1.13.2/go.mod h1:npFeGWjmZTjFeWALQLrvklVmAxv4m80jnG3+xI8FdJk=
|
||||
modernc.org/libc v1.14.1/go.mod h1:npFeGWjmZTjFeWALQLrvklVmAxv4m80jnG3+xI8FdJk=
|
||||
modernc.org/libc v1.14.2/go.mod h1:MX1GBLnRLNdvmK9azU9LCxZ5lMyhrbEMK8rG3X/Fe34=
|
||||
modernc.org/libc v1.14.3 h1:ruQJ8VDhnWkUR/otUG/Ksw+sWHUw9cPAq6mjDaY/Y7c=
|
||||
modernc.org/libc v1.14.3/go.mod h1:GPIvQVOVPizzlqyRX3l756/3ppsAgg1QgPxjr5Q4agQ=
|
||||
modernc.org/libc v1.14.4 h1:Sw2GDhSQbQF75VKC6RSd5//QH2gj9TgBzjLNZTW6m00=
|
||||
modernc.org/libc v1.14.4/go.mod h1:GPIvQVOVPizzlqyRX3l756/3ppsAgg1QgPxjr5Q4agQ=
|
||||
modernc.org/mathutil v1.1.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=
|
||||
modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=
|
||||
modernc.org/mathutil v1.4.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=
|
||||
|
|
|
|||
|
|
@ -15,4 +15,4 @@
|
|||
|
||||
package main
|
||||
|
||||
const Version = "6.1.4"
|
||||
const Version = "6.1.5"
|
||||
|
|
|
|||
Loading…
Reference in a new issue