Version 6.0.2

This commit is contained in:
Chrystian Huot 2021-12-02 12:54:18 -05:00
parent a7fa639eec
commit 4bca72a202
21 changed files with 102 additions and 45 deletions

View file

@ -25,6 +25,13 @@ _v.6.0.1_
- Fix button sound on select panel for TG (beep state inverted)
- Auto populate system units (issue #66)
_v.6.0.2_
- Try to fix the SQL_BUSY error (issue #67).
- Fix `-service stop` timing out before exiting.
- Drop the ApiKey uniqueness of the downstreams database table.
- Fix auto-populating the database with empty units tag.
## Version 5.2
- Change to how the server reports version.

View file

@ -16,7 +16,7 @@
################################################################################
app := rdio-scanner
ver := 6.0.1
ver := 6.0.2
client := $(wildcard client/*.json client/*.ts)
server := $(wildcard server/*.go)

View file

@ -39,5 +39,5 @@
"build": "ng build --base-href ./ --configuration production",
"start": "ng serve"
},
"version": "6.0.1"
"version": "6.0.2"
}

View file

@ -41,8 +41,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.0.1.zip
Archive: /Users/rdio/Downloads/rdio-scanner-darwin-arm64-v6.0.1.zip
> ~/Downloads/rdio-scanner-darwin-arm64-v6.0.2.zip
Archive: /Users/rdio/Downloads/rdio-scanner-darwin-arm64-v6.0.2.zip
inflating: rdio-scanner
inflating: rdio-scanner.pdf
@ -50,7 +50,7 @@ ALWAYS DOWNLOAD THE LATEST VERSION OF [RDIO SCANNER](https://github.com/chuot/rd
rdio@macos rdio-scanner % ./rdio-scanner
Rdio Scanner v6.0.1
Rdio Scanner v6.0.2
----------------------------------
2021/11/29 08:38:06 server started
2021/11/29 08:38:06 main interface at http://macos.local:3000
@ -76,7 +76,7 @@ Here we want our [Rdio Scanner](https://guthub.com/chuot/rdio-scanner) instance
rdio@macos rdio-scanner % ./rdio-scanner --listen :80
Rdio Scanner v6.0.1
Rdio Scanner v6.0.2
----------------------------------
2021/11/29 08:48:03 server started
2021/11/29 08:48:03 main interface at http://macos.local
@ -107,7 +107,7 @@ Now we use the self-signed server certificate to run our instance.
> -ssl_key_file server.key \
> -ssl_listen :443
Rdio Scanner v6.0.1
Rdio Scanner v6.0.2
----------------------------------
2021/11/29 08:50:58 server started
2021/11/29 08:50:58 main interface at http://macos.local
@ -139,7 +139,7 @@ Then simply run [Rdio Scanner](https://github.com/chuot/rdio-scanner) without an
rdio@macos rdio-scanner % ./rdio-scanner
Rdio Scanner v6.0.1
Rdio Scanner v6.0.2
----------------------------------
2021/11/29 08:54:08 server started
2021/11/29 08:54:08 main interface at http://macos.local

View file

@ -41,8 +41,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.0.1.zip
Archive: ../rdio-scanner-freebsd-amd64-v6.0.1.zip
> ~/rdio-scanner-freebsd-amd64-v6.0.2.zip
Archive: ../rdio-scanner-freebsd-amd64-v6.0.2.zip
extracting: rdio-scanner
extracting: rdio-scanner.pdf
@ -50,7 +50,7 @@ ALWAYS DOWNLOAD THE LATEST VERSION OF [RDIO SCANNER](https://github.com/chuot/rd
rdio@pc-freebsd:~/rdio-scanner $ ./rdio-scanner
Rdio Scanner v6.0.1
Rdio Scanner v6.0.2
----------------------------------
2021/11/28 08:16:36 server started
2021/11/28 08:16:36 main interface at http://pc-freebsd:3000
@ -80,7 +80,7 @@ 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.0.1
Rdio Scanner v6.0.2
----------------------------------
2021/11/28 08:19:38 server started
2021/11/28 08:19:38 main interface at http://pc-freebsd
@ -113,7 +113,7 @@ Now we use the self-signed server certificate to run our instance.
> -ssl_key_file server.key \
> -ssl_listen :443
Rdio Scanner v6.0.1
Rdio Scanner v6.0.2
----------------------------------
2021/11/28 10:34:29 server started
2021/11/28 10:34:29 main interface at http://pc-freebsd
@ -147,7 +147,7 @@ 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.0.1
Rdio Scanner v6.0.2
----------------------------------
2021/11/28 10:38:28 server started
2021/11/28 10:38:29 main interface at http://pc-freebsd

View file

@ -41,8 +41,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.0.1.zip
Archive: /home/rdio/Downloads/rdio-scanner-linux-amd64-v6.0.1.zip
> ~/Downloads/rdio-scanner-linux-amd64-v6.0.2.zip
Archive: /home/rdio/Downloads/rdio-scanner-linux-amd64-v6.0.2.zip
inflating: rdio-scanner
inflating: rdio-scanner.pdf
@ -50,7 +50,7 @@ ALWAYS DOWNLOAD THE LATEST VERSION OF [RDIO SCANNER](https://github.com/chuot/rd
[rdio@pc-linux rdio-scanner]$ ./rdio-scanner
Rdio Scanner v6.0.1
Rdio Scanner v6.0.2
----------------------------------
2021/11/29 09:11:48 server started
2021/11/29 09:11:48 main interface at http://pc-linux:3000
@ -77,7 +77,7 @@ 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.0.1
Rdio Scanner v6.0.2
----------------------------------
2021/11/29 09:14:00 server started
2021/11/29 09:14:00 main interface at http://pc-linux
@ -109,7 +109,7 @@ Now we use the self-signed server certificate to run our instance.
> -ssl_listen :443
[sudo] password for rdio:
Rdio Scanner v6.0.1
Rdio Scanner v6.0.2
----------------------------------
2021/11/29 09:16:47 server started
2021/11/29 09:16:47 main interface at http://pc-linux
@ -142,7 +142,7 @@ 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.0.1
Rdio Scanner v6.0.2
----------------------------------
2021/11/29 09:20:40 server started
2021/11/29 09:20:40 main interface at http://pc-linux

View file

@ -43,7 +43,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.0.1.zip
..\downloads\rdio-scanner-windows-amd64-v6.0.2.zip
x rdio-scanner.exe
x rdio-scanner.pdf
@ -51,7 +51,7 @@ ALWAYS DOWNLOAD THE LATEST VERSION OF [RDIO SCANNER](https://github.com/chuot/rd
C:\Users\rdio\rdio-scanner>rdio-scanner
Rdio Scanner v6.0.1
Rdio Scanner v6.0.2
----------------------------------
2021/11/25 13:48:48 server started
2021/11/25 13:48:48 main interface at http://pc-windows:3000
@ -77,7 +77,7 @@ 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.0.1
Rdio Scanner v6.0.2
----------------------------------
2021/11/26 10:53:31 server started
2021/11/26 10:53:31 main interface at http://pc-windows
@ -108,7 +108,7 @@ Now we use the self-signed server certificate to run our instance.
-ssl_key_file server.key ^
-ssl_listen :443
Rdio Scanner v6.0.1
Rdio Scanner v6.0.2
----------------------------------
2021/11/26 11:05:43 server started
2021/11/26 11:05:43 main interface at http://pc-windows
@ -140,7 +140,7 @@ Then simply run [Rdio Scanner](https://github.com/chuot/rdio-scanner) without an
C:\Users\rdio\rdio-scanner>rdio-scanner
Rdio Scanner v6.0.1
Rdio Scanner v6.0.2
----------------------------------
2021/11/26 11:11:28 server started
2021/11/26 11:11:28 main interface at http://pc-windows

View file

@ -271,6 +271,7 @@ func (accesses *Accesses) Write(db *Database) error {
}
if err != nil {
rows.Close()
return formatError(err)
}

View file

@ -240,6 +240,7 @@ func (apikeys *Apikeys) Write(db *Database) error {
}
if err != nil {
rows.Close()
return formatError(err)
}

View file

@ -630,7 +630,13 @@ func (controller *Controller) SendClientConfig(client *Client) {
}
func (controller *Controller) Terminate() {
if err := controller.Database.Sql.Close(); err != nil {
log.Println(err)
}
controller.Dirwatches.Stop()
log.Println("terminated")
os.Exit(0)
}

View file

@ -17,6 +17,7 @@ package main
import (
"log"
"os"
"runtime"
"github.com/kardianos/service"
@ -78,5 +79,6 @@ func (d *DaemonInterface) Start(s service.Service) error {
}
func (d *DaemonInterface) Stop(s service.Service) error {
os.Exit(0)
return nil
}

View file

@ -67,6 +67,10 @@ func (db *Database) Init(config *Config) error {
return fmt.Errorf("unknown database type %s", db.Config.DbType)
}
db.Sql.SetConnMaxLifetime(0)
db.Sql.SetMaxIdleConns(10)
db.Sql.SetMaxOpenConns(10)
if err = db.migrate(); err != nil {
return err
}
@ -151,6 +155,10 @@ func (db *Database) migrate() error {
err = db.migration20210830092027(verbose)
}
if err == nil {
err = db.migration20211202094819(verbose)
}
return err
}
@ -400,6 +408,29 @@ func (db *Database) migration20210830092027(verbose bool) error {
return db.migrateWithSchema("20210830092027-v6.0-rename-index", str, verbose)
}
func (db *Database) migration20211202094819(verbose bool) error {
var str []string
if db.Config.DbType == DbTypeSqlite {
str = []string{
"alter table `rdioScannerDownstreams` rename to `rdioScannerDownstreams2`",
"create table `rdioScannerDownstreams` (`_id` integer primary key autoincrement, `apiKey` varchar(255) not null, `disabled` tinyint(1) default 0, `order` integer, `systems` text not null, `url` varchar(255) not null)",
"insert into `rdioScannerDownstreams` select * from `rdioScannerDownstreams2`",
"drop table `rdioScannerDownstreams2`",
}
} else {
str = []string{
"alter table `rdioScannerDownstreams` rename to `rdioScannerDownstreams2`",
"create table `rdioScannerDownstreams` (`_id` integer primary key auto_increment, `apiKey` varchar(255) not null, `disabled` tinyint(1) default 0, `order` integer, `systems` text not null, `url` varchar(255) not null)",
"insert into `rdioScannerDownstreams` select * from `rdioScannerDownstreams2`",
"drop table `rdioScannerDownstreams2`",
}
}
return db.migrateWithSchema("20211202094819-v6.0.2-alter-table", str, verbose)
}
func (db *Database) prepareMigration() (bool, error) {
var (
err error

View file

@ -662,6 +662,7 @@ func (dirwatches *Dirwatches) Write(db *Database) error {
}
if err != nil {
rows.Close()
return formatError(err)
}

View file

@ -474,6 +474,7 @@ func (downstreams *Downstreams) Write(db *Database) error {
}
if err != nil {
rows.Close()
return formatError(err)
}

View file

@ -11,7 +11,7 @@ require (
github.com/gorilla/websocket v1.4.2
github.com/kardianos/service v1.2.0
golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871
gopkg.in/ini.v1 v1.66.0
gopkg.in/ini.v1 v1.66.1
modernc.org/sqlite v1.14.1
)
@ -21,15 +21,15 @@ 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-20211123203042-d83791d6bcd9 // indirect
golang.org/x/net v0.0.0-20211201190559-0a0e4e1bb54c // indirect
golang.org/x/sys v0.0.0-20211124211545-fe61309f8881 // indirect
golang.org/x/text v0.3.7 // indirect
golang.org/x/tools v0.1.7 // indirect
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
lukechampine.com/uint128 v1.1.1 // indirect
modernc.org/cc/v3 v3.35.18 // indirect
modernc.org/ccgo/v3 v3.12.78 // indirect
modernc.org/libc v1.11.86 // indirect
modernc.org/ccgo/v3 v3.12.82 // indirect
modernc.org/libc v1.11.87 // indirect
modernc.org/mathutil v1.4.1 // indirect
modernc.org/memory v1.0.5 // indirect
modernc.org/opt v0.1.1 // indirect

View file

@ -48,8 +48,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-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9 h1:0qxwC5n+ttVOINCBeRHO0nq9X7uy8SDsPoi5OaCdIEI=
golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211201190559-0a0e4e1bb54c h1:WtYZ93XtWSO5KlOMgPZu7hXY9WhMZpprvlm5VwvAl8c=
golang.org/x/net v0.0.0-20211201190559-0a0e4e1bb54c/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
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=
@ -85,8 +85,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.0 h1:tYFFjdYXTsNBxJhYBABRbTuaKkX6UBzOvbYwhEcaZJQ=
gopkg.in/ini.v1 v1.66.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.66.1 h1:kWVKj9OXQuOk10tEqPxDmpEoISM3NZHelrsfWcmtEUA=
gopkg.in/ini.v1 v1.66.1/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 h1:pnxCASz787iMf+02ssImqk6OLt+Z5QHMoZyUXR4z6JU=
@ -139,8 +139,9 @@ modernc.org/ccgo/v3 v3.12.65/go.mod h1:D6hQtKxPNZiY6wDBtehSGKFKmyXn53F8nGTpH+POm
modernc.org/ccgo/v3 v3.12.66/go.mod h1:jUuxlCFZTUZLMV08s7B1ekHX5+LIAurKTTaugUr/EhQ=
modernc.org/ccgo/v3 v3.12.67/go.mod h1:Bll3KwKvGROizP2Xj17GEGOTrlvB1XcVaBrC90ORO84=
modernc.org/ccgo/v3 v3.12.73/go.mod h1:hngkB+nUUqzOf3iqsM48Gf1FZhY599qzVg1iX+BT3cQ=
modernc.org/ccgo/v3 v3.12.78 h1:yinLezxvjgDrGouUmimNGvQe4UMy57F4QQiNFqzPuFA=
modernc.org/ccgo/v3 v3.12.78/go.mod h1:p2A1duHoBBg1mFtYvnhAnQyI6vL0uw5PGYLSIgF6rYY=
modernc.org/ccgo/v3 v3.12.81/go.mod h1:p2A1duHoBBg1mFtYvnhAnQyI6vL0uw5PGYLSIgF6rYY=
modernc.org/ccgo/v3 v3.12.82 h1:wudcnJyjLj1aQQCXF3IM9Gz2X6UNjw+afIghzdtn0v8=
modernc.org/ccgo/v3 v3.12.82/go.mod h1:ApbflUfa5BKadjHynCficldU1ghjen84tuM5jRynB7w=
modernc.org/ccorpus v1.11.1 h1:K0qPfpVG1MJh5BYazccnmhywH4zHuOgJXgbjzyp6dWA=
modernc.org/ccorpus v1.11.1/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ=
modernc.org/httpfs v1.0.6 h1:AAgIpFZRXuYnkjftxTAZwMIiwEqAfk8aVB2/oA6nAeM=
@ -178,8 +179,9 @@ modernc.org/libc v1.11.70/go.mod h1:DUOmMYe+IvKi9n6Mycyx3DbjfzSKrdr/0Vgt3j7P5gw=
modernc.org/libc v1.11.71/go.mod h1:DUOmMYe+IvKi9n6Mycyx3DbjfzSKrdr/0Vgt3j7P5gw=
modernc.org/libc v1.11.75/go.mod h1:dGRVugT6edz361wmD9gk6ax1AbDSe0x5vji0dGJiPT0=
modernc.org/libc v1.11.82/go.mod h1:NF+Ek1BOl2jeC7lw3a7Jj5PWyHPwWD4aq3wVKxqV1fI=
modernc.org/libc v1.11.86 h1:re2EI0lgrQTcU5fmSFFiK51NfFIXI1cE9CJMKgn9umY=
modernc.org/libc v1.11.86/go.mod h1:ePuYgoQLmvxdNT06RpGnaDKJmDNEkV7ZPKI2jnsvZoE=
modernc.org/libc v1.11.87 h1:PzIzOqtlzMDDcCzJ5cUP6h/Ku6Fa9iyflP2ccTY64aE=
modernc.org/libc v1.11.87/go.mod h1:Qvd5iXTeLhI5PS0XSyqMY99282y+3euapQFxM7jYnpY=
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=

View file

@ -229,6 +229,7 @@ func (groups *Groups) Write(db *Database) error {
}
if err != nil {
rows.Close()
return formatError(err)
}

View file

@ -154,15 +154,17 @@ func ParseTrunkRecorderMeta(call *Call, b []byte) error {
switch t := v["tag"].(type) {
case string:
var units Units
switch v := call.units.(type) {
case Units:
units = v
default:
units = Units{}
if len(t) > 0 {
var units Units
switch v := call.units.(type) {
case Units:
units = v
default:
units = Units{}
}
units.Add(uint(s), t)
call.units = units
}
units.Add(uint(s), t)
call.units = units
}
}

View file

@ -438,6 +438,7 @@ func (systems *Systems) Write(db *Database) error {
}
if err != nil {
rows.Close()
return formatError(err)
}

View file

@ -228,6 +228,7 @@ func (tags *Tags) Write(db *Database) error {
}
if err != nil {
rows.Close()
return formatError(err)
}

View file

@ -15,4 +15,4 @@
package main
const Version = "6.0.1"
const Version = "6.0.2"