feat: improve logs, remove config for disable authentication

This commit is contained in:
Deluan
2020-01-31 08:35:33 -05:00
committed by Deluan Quintão
parent 72d9ddf532
commit d389d40db1
6 changed files with 162 additions and 122 deletions
+3 -2
View File
@@ -28,8 +28,8 @@ type nd struct {
ScanInterval string `default:"1m"` ScanInterval string `default:"1m"`
// DevFlags. These are used to enable/disable debugging and incomplete features // DevFlags. These are used to enable/disable debugging and incomplete features
DevDisableAuthentication bool `default:"false"`
DevDisableBanner bool `default:"false"` DevDisableBanner bool `default:"false"`
DevLogSourceLine bool `default:"false"`
} }
var Server = &nd{} var Server = &nd{}
@@ -85,7 +85,8 @@ func LoadFromFile(confFile string, skipFlags ...bool) {
if os.Getenv("PORT") != "" { if os.Getenv("PORT") != "" {
Server.Port = os.Getenv("PORT") Server.Port = os.Getenv("PORT")
} }
log.SerLevelString(Server.LogLevel) log.SetLevelString(Server.LogLevel)
log.SetLogSourceLine(Server.DevLogSourceLine)
log.Trace("Loaded configuration", "file", confFile, "config", fmt.Sprintf("%#v", Server)) log.Trace("Loaded configuration", "file", confFile, "config", fmt.Sprintf("%#v", Server))
} }
+85 -56
View File
@@ -1,62 +1,41 @@
package migrations package migrations
var schema = ` var schema = `
create table if not exists media_file create table album
( (
id varchar(255) not null id varchar(255) not null
primary key, primary key,
title varchar(255) not null, name varchar(255) default '' not null,
album varchar(255) default '' not null,
artist varchar(255) default '' not null,
artist_id varchar(255) default '' not null, artist_id varchar(255) default '' not null,
cover_art_path varchar(255) default '' not null,
cover_art_id varchar(255) default '' not null,
artist varchar(255) default '' not null,
album_artist varchar(255) default '' not null, album_artist varchar(255) default '' not null,
album_id varchar(255) default '' not null,
has_cover_art bool default FALSE not null,
track_number integer default 0 not null,
disc_number integer default 0 not null,
year integer default 0 not null, year integer default 0 not null,
size integer default 0 not null,
path varchar(1024) not null,
suffix varchar(255) default '' not null,
duration integer default 0 not null,
bit_rate integer default 0 not null,
genre varchar(255) default '' not null,
compilation bool default FALSE not null, compilation bool default FALSE not null,
song_count integer default 0 not null,
duration integer default 0 not null,
genre varchar(255) default '' not null,
created_at datetime, created_at datetime,
updated_at datetime updated_at datetime
); );
create index if not exists media_file_title create index album_artist
on media_file (title); on album (artist);
create index if not exists media_file_album_id create index album_artist_id
on media_file (album_id); on album (artist_id);
create index if not exists media_file_album create index album_genre
on media_file (album); on album (genre);
create index if not exists media_file_artist_id create index album_name
on media_file (artist_id); on album (name);
create index if not exists media_file_artist create index album_year
on media_file (artist); on album (year);
create index if not exists media_file_album_artist create table annotation
on media_file (album_artist);
create index if not exists media_file_genre
on media_file (genre);
create index if not exists media_file_year
on media_file (year);
create index if not exists media_file_compilation
on media_file (compilation);
create index if not exists media_file_path
on media_file (path);
create table if not exists annotation
( (
ann_id varchar(255) not null ann_id varchar(255) not null
primary key, primary key,
@@ -71,53 +50,103 @@ create table if not exists annotation
unique (user_id, item_id, item_type) unique (user_id, item_id, item_type)
); );
create index if not exists annotation_play_count create index annotation_play_count
on annotation (play_count); on annotation (play_count);
create index if not exists annotation_play_date create index annotation_play_date
on annotation (play_date); on annotation (play_date);
create index if not exists annotation_starred create index annotation_rating
on annotation (rating);
create index annotation_starred
on annotation (starred); on annotation (starred);
create table if not exists playlist create table artist
( (
id varchar(255) not null id varchar(255) not null
primary key, primary key,
name varchar(255) not null, name varchar(255) default '' not null,
album_count integer default 0 not null
);
create index artist_name
on artist (name);
create table media_file
(
id varchar(255) not null
primary key,
path varchar(255) default '' not null,
title varchar(255) default '' not null,
album varchar(255) default '' not null,
artist varchar(255) default '' not null,
artist_id varchar(255) default '' not null,
album_artist varchar(255) default '' not null,
album_id varchar(255) default '' not null,
has_cover_art bool default FALSE not null,
track_number integer default 0 not null,
disc_number integer default 0 not null,
year integer default 0 not null,
size integer default 0 not null,
suffix varchar(255) default '' not null,
duration integer default 0 not null,
bit_rate integer default 0 not null,
genre varchar(255) default '' not null,
compilation bool default FALSE not null,
created_at datetime,
updated_at datetime
);
create index media_file_album_id
on media_file (album_id);
create index media_file_genre
on media_file (genre);
create index media_file_path
on media_file (path);
create index media_file_title
on media_file (title);
create table playlist
(
id varchar(255) not null
primary key,
name varchar(255) default '' not null,
comment varchar(255) default '' not null, comment varchar(255) default '' not null,
duration integer default 0 not null, duration integer default 0 not null,
owner varchar(255) default '' not null, owner varchar(255) default '' not null,
public bool default FALSE not null, public bool default FALSE not null,
tracks text not null, tracks text not null
unique (owner, name)
); );
create index if not exists playlist_name create index playlist_name
on playlist (name); on playlist (name);
create table if not exists property create table property
( (
id varchar(255) not null id varchar(255) not null
primary key, primary key,
value varchar(1024) default '' not null value varchar(255) default '' not null
); );
create table if not exists search create table search
( (
id varchar(255) not null id varchar(255) not null
primary key, primary key,
"table" varchar(255) not null, "table" varchar(255) default '' not null,
full_text varchar(1024) not null full_text varchar(255) default '' not null
); );
create index if not exists search_full_text create index search_full_text
on search (full_text); on search (full_text);
create index if not exists search_table create index search_table
on search ("table"); on search ("table");
create table if not exists user create table user
( (
id varchar(255) not null id varchar(255) not null
primary key, primary key,
+7 -2
View File
@@ -27,6 +27,7 @@ const (
var ( var (
currentLevel Level currentLevel Level
defaultLogger = logrus.New() defaultLogger = logrus.New()
logSourceLine = false
) )
// SetLevel sets the global log level used by the simple logger. // SetLevel sets the global log level used by the simple logger.
@@ -35,7 +36,7 @@ func SetLevel(l Level) {
logrus.SetLevel(logrus.Level(l)) logrus.SetLevel(logrus.Level(l))
} }
func SerLevelString(l string) { func SetLevelString(l string) {
envLevel := strings.ToLower(l) envLevel := strings.ToLower(l)
var level Level var level Level
switch envLevel { switch envLevel {
@@ -55,6 +56,10 @@ func SerLevelString(l string) {
SetLevel(level) SetLevel(level)
} }
func SetLogSourceLine(enabled bool) {
logSourceLine = enabled
}
func NewContext(ctx context.Context, keyValuePairs ...interface{}) context.Context { func NewContext(ctx context.Context, keyValuePairs ...interface{}) context.Context {
if ctx == nil { if ctx == nil {
ctx = context.Background() ctx = context.Background()
@@ -132,7 +137,7 @@ func parseArgs(args []interface{}) (*logrus.Entry, string) {
kvPairs := args[1:] kvPairs := args[1:]
l = addFields(l, kvPairs) l = addFields(l, kvPairs)
} }
if currentLevel >= LevelTrace { if logSourceLine {
_, file, line, ok := runtime.Caller(2) _, file, line, ok := runtime.Caller(2)
if !ok { if !ok {
file = "???" file = "???"
+12 -1
View File
@@ -143,7 +143,18 @@ func (r sqlRepository) delete(cond Sqlizer) error {
func (r sqlRepository) toSql(sq Sqlizer) (string, []interface{}, error) { func (r sqlRepository) toSql(sq Sqlizer) (string, []interface{}, error) {
sql, args, err := sq.ToSql() sql, args, err := sq.ToSql()
if err == nil { if err == nil {
log.Trace(r.ctx, "SQL: `"+sql+"`", "args", strings.TrimPrefix(fmt.Sprintf("%#v", args), "[]interface {}")) var fmtArgs []string
for i := range args {
var f string
switch a := args[i].(type) {
case string:
f = `'` + a + `'`
default:
f = fmt.Sprintf("%v", a)
}
fmtArgs = append(fmtArgs, f)
}
log.Trace(r.ctx, "SQL: `"+sql+"`", "args", `[`+strings.Join(fmtArgs, ",")+`]`)
} }
return sql, args, err return sql, args, err
} }
-3
View File
@@ -7,7 +7,6 @@ import (
"strings" "strings"
"github.com/deluan/navidrome/assets" "github.com/deluan/navidrome/assets"
"github.com/deluan/navidrome/conf"
"github.com/deluan/navidrome/model" "github.com/deluan/navidrome/model"
"github.com/deluan/rest" "github.com/deluan/rest"
"github.com/go-chi/chi" "github.com/go-chi/chi"
@@ -46,10 +45,8 @@ func (app *Router) routes() http.Handler {
r.Post("/createAdmin", CreateAdmin(app.ds)) r.Post("/createAdmin", CreateAdmin(app.ds))
r.Route("/api", func(r chi.Router) { r.Route("/api", func(r chi.Router) {
if !conf.Server.DevDisableAuthentication {
r.Use(jwtauth.Verifier(TokenAuth)) r.Use(jwtauth.Verifier(TokenAuth))
r.Use(Authenticator(app.ds)) r.Use(Authenticator(app.ds))
}
app.R(r, "/user", model.User{}) app.R(r, "/user", model.User{})
app.R(r, "/song", model.MediaFile{}) app.R(r, "/song", model.MediaFile{})
app.R(r, "/album", model.Album{}) app.R(r, "/album", model.Album{})
+1 -4
View File
@@ -6,7 +6,6 @@ import (
"fmt" "fmt"
"net/http" "net/http"
"github.com/deluan/navidrome/conf"
"github.com/deluan/navidrome/engine" "github.com/deluan/navidrome/engine"
"github.com/deluan/navidrome/server/subsonic/responses" "github.com/deluan/navidrome/server/subsonic/responses"
"github.com/go-chi/chi" "github.com/go-chi/chi"
@@ -48,11 +47,9 @@ func (api *Router) routes() http.Handler {
r.Use(postFormToQueryParams) r.Use(postFormToQueryParams)
r.Use(checkRequiredParameters) r.Use(checkRequiredParameters)
// Add validation middleware if not disabled // Add validation middleware
if !conf.Server.DevDisableAuthentication {
r.Use(authenticate(api.Users)) r.Use(authenticate(api.Users))
// TODO Validate version // TODO Validate version
}
// Subsonic endpoints, grouped by controller // Subsonic endpoints, grouped by controller
r.Group(func(r chi.Router) { r.Group(func(r chi.Router) {