mirror of
https://github.com/hrfee/jfa-go.git
synced 2024-12-29 12:30:11 +00:00
Compare commits
No commits in common. "2f4e68969a243ac0f859222fb7dbc15329a2e910" and "c7995cdbba5e54c39102c29efef2023a3c2b33d7" have entirely different histories.
2f4e68969a
...
c7995cdbba
239
'
Normal file
239
'
Normal file
@ -0,0 +1,239 @@
|
|||||||
|
.PHONY: configuration email typescript swagger copy compile compress inline-css variants-html install clean npm config-description config-default precompile
|
||||||
|
|
||||||
|
all: compile
|
||||||
|
|
||||||
|
GOESBUILD ?= off
|
||||||
|
ifeq ($(GOESBUILD), on)
|
||||||
|
ESBUILD := esbuild
|
||||||
|
else
|
||||||
|
ESBUILD := npx esbuild
|
||||||
|
endif
|
||||||
|
GOBINARY ?= go
|
||||||
|
|
||||||
|
CSSVERSION ?= v3
|
||||||
|
CSS_BUNDLE = $(DATA)/web/css/$(CSSVERSION)bundle.css
|
||||||
|
|
||||||
|
VERSION ?= $(shell git describe --exact-match HEAD 2> /dev/null || echo vgit)
|
||||||
|
VERSION := $(shell echo $(VERSION) | sed 's/v//g')
|
||||||
|
COMMIT ?= $(shell git rev-parse --short HEAD || echo unknown)
|
||||||
|
BUILDTIME ?= $(shell date +%s)
|
||||||
|
|
||||||
|
UPDATER ?= off
|
||||||
|
LDFLAGS := -X main.version=$(VERSION) -X main.commit=$(COMMIT) -X main.cssVersion=$(CSSVERSION) -X main.buildTimeUnix=$(BUILDTIME) $(if $(BUILTBY),-X 'main.builtBy=$(BUILTBY)',)
|
||||||
|
ifeq ($(UPDATER), on)
|
||||||
|
LDFLAGS := $(LDFLAGS) -X main.updater=binary
|
||||||
|
else ifneq ($(UPDATER), off)
|
||||||
|
LDFLAGS := $(LDFLAGS) -X main.updater=$(UPDATER)
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
INTERNAL ?= on
|
||||||
|
TRAY ?= off
|
||||||
|
E2EE ?= on
|
||||||
|
TAGS := -tags "
|
||||||
|
|
||||||
|
ifeq ($(INTERNAL), on)
|
||||||
|
DATA := data
|
||||||
|
else
|
||||||
|
DATA := build/data
|
||||||
|
TAGS := $(TAGS) external
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(TRAY), on)
|
||||||
|
TAGS := $(TAGS) tray
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(E2EE), on)
|
||||||
|
TAGS := $(TAGS) e2ee
|
||||||
|
endif
|
||||||
|
|
||||||
|
TAGS := $(TAGS)"
|
||||||
|
|
||||||
|
OS := $(shell go env GOOS)
|
||||||
|
ifeq ($(TRAY)$(OS), onwindows)
|
||||||
|
LDFLAGS := $(LDFLAGS) -H=windowsgui
|
||||||
|
endif
|
||||||
|
|
||||||
|
DEBUG ?= off
|
||||||
|
ifeq ($(DEBUG), on)
|
||||||
|
SOURCEMAP := --sourcemap
|
||||||
|
MINIFY :=
|
||||||
|
TYPECHECK := npx tsc -noEmit --project ts/tsconfig.json
|
||||||
|
# jank
|
||||||
|
COPYTS := rm -r $(DATA)/web/js/ts; cp -r tempts $(DATA)/web/js/ts
|
||||||
|
UNCSS := cp $(CSS_BUNDLE) $(DATA)/bundle.css
|
||||||
|
# TAILWIND := --content ""
|
||||||
|
else
|
||||||
|
LDFLAGS := -s -w $(LDFLAGS)
|
||||||
|
SOURCEMAP :=
|
||||||
|
MINIFY := --minify
|
||||||
|
COPYTS :=
|
||||||
|
TYPECHECK :=
|
||||||
|
UNCSS := npx tailwindcss -i $(CSS_BUNDLE) -o $(DATA)/bundle.css --content "html/crash.html"
|
||||||
|
# UNCSS := npx uncss $(DATA)/crash.html --csspath web/css --output $(DATA)/bundle.css
|
||||||
|
TAILWIND :=
|
||||||
|
endif
|
||||||
|
|
||||||
|
RACE ?= off
|
||||||
|
ifeq ($(RACE), on)
|
||||||
|
RACEDETECTOR := -race
|
||||||
|
else
|
||||||
|
RACEDETECTOR :=
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq (, $(shell which esbuild))
|
||||||
|
ESBUILDINSTALL := go install github.com/evanw/esbuild/cmd/esbuild@latest
|
||||||
|
else
|
||||||
|
ESBUILDINSTALL :=
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(GOESBUILD), on)
|
||||||
|
NPMIGNOREOPTIONAL := --no-optional
|
||||||
|
NPMOPTS := $(NPMIGNOREOPTIONAL); $(ESBUILDINSTALL)
|
||||||
|
else
|
||||||
|
NPMOPTS :=
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq (, $(shell which swag))
|
||||||
|
SWAGINSTALL := $(GOBINARY) install github.com/swaggo/swag/cmd/swag@latest
|
||||||
|
else
|
||||||
|
SWAGINSTALL :=
|
||||||
|
endif
|
||||||
|
|
||||||
|
CONFIG_BASE = config/config-base.yaml
|
||||||
|
|
||||||
|
# CONFIG_DESCRIPTION = $(DATA)/config-base.json
|
||||||
|
CONFIG_DEFAULT = $(DATA)/config-default.ini
|
||||||
|
# $(CONFIG_DESCRIPTION) &: $(CONFIG_BASE)
|
||||||
|
# $(info Fixing config-base)
|
||||||
|
# -mkdir -p $(DATA)
|
||||||
|
|
||||||
|
$(DATA):
|
||||||
|
mkdir -p $(DATA)
|
||||||
|
|
||||||
|
$(CONFIG_DEFAULT): $(DATA) $(CONFIG_BASE)
|
||||||
|
$(info Generating config-default.ini)
|
||||||
|
go run scripts/ini/main.go -in $(CONFIG_BASE) -out $(DATA)/config-default.ini
|
||||||
|
|
||||||
|
configuration: $(CONFIG_DEFAULT)
|
||||||
|
|
||||||
|
EMAIL_SRC = $(wildcard mail/*)
|
||||||
|
EMAIL_TARGET = mail/confirmation.html
|
||||||
|
$(EMAIL_TARGET): $(EMAIL_SRC)
|
||||||
|
$(info Generating email html)
|
||||||
|
npx mjml mail/*.mjml -o $(DATA)/
|
||||||
|
$(info Copying plaintext mail)
|
||||||
|
cp mail/*.txt $(DATA)/
|
||||||
|
|
||||||
|
TYPESCRIPT_FULLSRC = $(shell find ts/ -type f -name "*.ts")
|
||||||
|
TYPESCRIPT_SRC = $(wildcard ts/*.ts)
|
||||||
|
TYPESCRIPT_TEMPSRC = $(TYPESCRIPT_SRC:ts/%=tempts/%)
|
||||||
|
# TYPESCRIPT_TARGET = $(patsubst %.ts,%.js,$(subst tempts/,./$(DATA)/web/js/,$(TYPESCRIPT_TEMPSRC)))
|
||||||
|
TYPESCRIPT_TARGET = $(DATA)/web/js/admin.js
|
||||||
|
$(TYPESCRIPT_TARGET): $(TYPESCRIPT_FULLSRC) ts/tsconfig.json
|
||||||
|
$(TYPECHECK)
|
||||||
|
rm -rf tempts
|
||||||
|
cp -r ts tempts
|
||||||
|
$(adding dark variants to typescript)
|
||||||
|
scripts/dark-variant.sh tempts
|
||||||
|
scripts/dark-variant.sh tempts/modules
|
||||||
|
$(info compiling typescript)
|
||||||
|
mkdir -p $(DATA)/web/js
|
||||||
|
$(foreach tempsrc,$(TYPESCRIPT_TEMPSRC),$(ESBUILD) --target=es6 --bundle $(tempsrc) $(SOURCEMAP) --outfile=$(patsubst %.ts,%.js,$(subst tempts/,./$(DATA)/web/js/,$(tempsrc))) $(MINIFY);)
|
||||||
|
mv $(DATA)/web/js/crash.js $(DATA)/
|
||||||
|
$(COPYTS)
|
||||||
|
|
||||||
|
SWAGGER_SRC = $(wildcard api*.go) $(wildcard *auth.go) views.go
|
||||||
|
SWAGGER_TARGET = docs/docs.go
|
||||||
|
$(SWAGGER_TARGET): $(SWAGGER_SRC)
|
||||||
|
$(SWAGINSTALL)
|
||||||
|
swag init -g main.go
|
||||||
|
|
||||||
|
VARIANTS_SRC = $(wildcard html/*.html)
|
||||||
|
VARIANTS_TARGET = $(DATA)/html/admin.html
|
||||||
|
$(VARIANTS_TARGET): $(VARIANTS_SRC)
|
||||||
|
$(info copying html)
|
||||||
|
cp -r html $(DATA)/
|
||||||
|
$(info adding dark variants to html)
|
||||||
|
node scripts/missing-colors.js html $(DATA)/html
|
||||||
|
|
||||||
|
ICON_SRC = node_modules/remixicon/fonts/remixicon.css node_modules/remixicon/fonts/remixicon.woff2
|
||||||
|
ICON_TARGET = $(ICON_SRC:node_modules/remixicon/fonts/%=$(DATA)/web/css/%)
|
||||||
|
CSS_SRC = $(wildcard css/*.css)
|
||||||
|
CSS_TARGET = $(DATA)/web/css/part-bundle.css
|
||||||
|
CSS_FULLTARGET = $(CSS_BUNDLE)
|
||||||
|
ALL_CSS_SRC = $(ICON_SRC) $(CSS_SRC)
|
||||||
|
ALL_CSS_TARGET = $(ICON_TARGET)
|
||||||
|
|
||||||
|
$(CSS_FULLTARGET): $(TYPESCRIPT_TARGET) $(VARIANTS_TARGET) $(ALL_CSS_SRC) $(wildcard html/*.html)
|
||||||
|
mkdir -p $(DATA)/web/css
|
||||||
|
$(info copying fonts)
|
||||||
|
cp -r node_modules/remixicon/fonts/remixicon.css node_modules/remixicon/fonts/remixicon.woff2 $(DATA)/web/css/
|
||||||
|
$(info bundling css)
|
||||||
|
$(ESBUILD) --bundle css/base.css --outfile=$(CSS_TARGET) --external:remixicon.css --external:../fonts/hanken* --minify
|
||||||
|
|
||||||
|
npx tailwindcss -i $(CSS_TARGET) -o $(CSS_FULLTARGET) $(TAILWIND)
|
||||||
|
rm $(CSS_TARGET)
|
||||||
|
# mv $(CSS_BUNDLE) $(DATA)/web/css/$(CSSVERSION)bundle.css
|
||||||
|
# npx postcss -o $(CSS_TARGET) $(CSS_TARGET)
|
||||||
|
|
||||||
|
INLINE_SRC = html/crash.html
|
||||||
|
INLINE_TARGET = $(DATA)/crash.html
|
||||||
|
$(INLINE_TARGET): $(CSS_FULLTARGET) $(INLINE_SRC)
|
||||||
|
cp html/crash.html $(DATA)/crash.html
|
||||||
|
$(UNCSS) # generates $(DATA)/bundle.css for us
|
||||||
|
node scripts/inline.js root $(DATA) $(DATA)/crash.html $(DATA)/crash.html
|
||||||
|
rm $(DATA)/bundle.css
|
||||||
|
|
||||||
|
LANG_SRC = $(shell find ./lang)
|
||||||
|
LANG_TARGET = $(LANG_SRC:lang/%=$(DATA)/lang/%)
|
||||||
|
STATIC_SRC = $(wildcard static/*)
|
||||||
|
STATIC_TARGET = $(STATIC_SRC:static/%=$(DATA)/web/%)
|
||||||
|
COPY_SRC = images/banner.svg jfa-go.service LICENSE $(LANG_SRC) $(STATIC_SRC)
|
||||||
|
COPY_TARGET = $(DATA)/jfa-go.service
|
||||||
|
# $(DATA)/LICENSE $(LANG_TARGET) $(STATIC_TARGET) $(DATA)/web/css/$(CSSVERSION)bundle.css
|
||||||
|
$(COPY_TARGET): $(INLINE_TARGET) $(STATIC_SRC) $(LANG_SRC)
|
||||||
|
$(info copying $(CONFIG_BASE))
|
||||||
|
cp $(CONFIG_BASE) $(DATA)/
|
||||||
|
$(info copying crash page)
|
||||||
|
cp $(DATA)/crash.html $(DATA)/html/
|
||||||
|
$(info copying static data)
|
||||||
|
mkdir -p $(DATA)/web
|
||||||
|
cp images/banner.svg static/banner.svg
|
||||||
|
cp -r static/* $(DATA)/web/
|
||||||
|
$(info copying systemd service)
|
||||||
|
cp jfa-go.service $(DATA)/
|
||||||
|
$(info copying language files)
|
||||||
|
cp -r lang $(DATA)/
|
||||||
|
cp LICENSE $(DATA)/
|
||||||
|
|
||||||
|
precompile: $(CONFIG_DEFAULT) $(EMAIL_TARGET) $(COPY_TARGET) $(SWAGGER_TARGET)
|
||||||
|
|
||||||
|
GO_SRC = $(shell find ./ -name "*.go")
|
||||||
|
GO_TARGET = build/jfa-go
|
||||||
|
$(GO_TARGET): $(CONFIG_DEFAULT) $(EMAIL_TARGET) $(COPY_TARGET) $(SWAGGER_TARGET) $(GO_SRC) go.mod go.sum
|
||||||
|
$(info Downloading deps)
|
||||||
|
$(GOBINARY) mod download
|
||||||
|
$(info Building)
|
||||||
|
mkdir -p build
|
||||||
|
$(GOBINARY) build $(RACEDETECTOR) -ldflags="$(LDFLAGS)" $(TAGS) -o $(GO_TARGET)
|
||||||
|
|
||||||
|
compile: $(GO_TARGET)
|
||||||
|
|
||||||
|
compress:
|
||||||
|
upx --lzma build/jfa-go
|
||||||
|
|
||||||
|
install:
|
||||||
|
cp -r build $(DESTDIR)/jfa-go
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-rm -r $(DATA)
|
||||||
|
-rm -r build
|
||||||
|
-rm mail/*.html
|
||||||
|
-rm docs/docs.go docs/swagger.json docs/swagger.yaml
|
||||||
|
go clean
|
||||||
|
|
||||||
|
npm:
|
||||||
|
$(info installing npm dependencies)
|
||||||
|
npm install $(NPMOPTS)
|
@ -148,9 +148,6 @@ func (app *appContext) loadConfig() error {
|
|||||||
LOGIP = app.config.Section("advanced").Key("log_ips").MustBool(false)
|
LOGIP = app.config.Section("advanced").Key("log_ips").MustBool(false)
|
||||||
LOGIPU = app.config.Section("advanced").Key("log_ips_users").MustBool(false)
|
LOGIPU = app.config.Section("advanced").Key("log_ips_users").MustBool(false)
|
||||||
|
|
||||||
app.MustSetValue("advanced", "auth_retry_count", "6")
|
|
||||||
app.MustSetValue("advanced", "auth_retry_gap", "10")
|
|
||||||
|
|
||||||
pwrMethods := []string{"allow_pwr_username", "allow_pwr_email", "allow_pwr_contact_method"}
|
pwrMethods := []string{"allow_pwr_username", "allow_pwr_email", "allow_pwr_contact_method"}
|
||||||
allDisabled := true
|
allDisabled := true
|
||||||
for _, v := range pwrMethods {
|
for _, v := range pwrMethods {
|
||||||
|
2
go.mod
2
go.mod
@ -43,7 +43,7 @@ require (
|
|||||||
github.com/hrfee/jfa-go/logger v0.0.0-20240829123003-65662c57bc2a
|
github.com/hrfee/jfa-go/logger v0.0.0-20240829123003-65662c57bc2a
|
||||||
github.com/hrfee/jfa-go/logmessages v0.0.0-20240829123003-65662c57bc2a
|
github.com/hrfee/jfa-go/logmessages v0.0.0-20240829123003-65662c57bc2a
|
||||||
github.com/hrfee/jfa-go/ombi v0.0.0-20240829123003-65662c57bc2a
|
github.com/hrfee/jfa-go/ombi v0.0.0-20240829123003-65662c57bc2a
|
||||||
github.com/hrfee/mediabrowser v0.3.23
|
github.com/hrfee/mediabrowser v0.3.22
|
||||||
github.com/itchyny/timefmt-go v0.1.6
|
github.com/itchyny/timefmt-go v0.1.6
|
||||||
github.com/lithammer/shortuuid/v3 v3.0.7
|
github.com/lithammer/shortuuid/v3 v3.0.7
|
||||||
github.com/mailgun/mailgun-go/v4 v4.15.0
|
github.com/mailgun/mailgun-go/v4 v4.15.0
|
||||||
|
2
go.sum
2
go.sum
@ -212,8 +212,6 @@ github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/ad
|
|||||||
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
|
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
|
||||||
github.com/hrfee/mediabrowser v0.3.22 h1:+BiSE+GlzTZEazyuLvLyhI3nRbrR8DnocgAHEusBh14=
|
github.com/hrfee/mediabrowser v0.3.22 h1:+BiSE+GlzTZEazyuLvLyhI3nRbrR8DnocgAHEusBh14=
|
||||||
github.com/hrfee/mediabrowser v0.3.22/go.mod h1:PnHZbdxmbv1wCVdAQyM7nwPwpVj9fdKx2EcET7sAk+U=
|
github.com/hrfee/mediabrowser v0.3.22/go.mod h1:PnHZbdxmbv1wCVdAQyM7nwPwpVj9fdKx2EcET7sAk+U=
|
||||||
github.com/hrfee/mediabrowser v0.3.23 h1:y1Sd4pSpFCWPTlp7exlPhCYIa3jN7UxxsBEHjVQJrI4=
|
|
||||||
github.com/hrfee/mediabrowser v0.3.23/go.mod h1:PnHZbdxmbv1wCVdAQyM7nwPwpVj9fdKx2EcET7sAk+U=
|
|
||||||
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
||||||
github.com/itchyny/timefmt-go v0.1.6 h1:ia3s54iciXDdzWzwaVKXZPbiXzxxnv1SPGFfM/myJ5Q=
|
github.com/itchyny/timefmt-go v0.1.6 h1:ia3s54iciXDdzWzwaVKXZPbiXzxxnv1SPGFfM/myJ5Q=
|
||||||
github.com/itchyny/timefmt-go v0.1.6/go.mod h1:RRDZYC5s9ErkjQvTvvU7keJjxUYzIISJGxm9/mAERQg=
|
github.com/itchyny/timefmt-go v0.1.6/go.mod h1:RRDZYC5s9ErkjQvTvvU7keJjxUYzIISJGxm9/mAERQg=
|
||||||
|
@ -54,7 +54,6 @@ const (
|
|||||||
UsingLocalAuth = "Using local username/pw authentication (NOT RECOMMENDED)"
|
UsingLocalAuth = "Using local username/pw authentication (NOT RECOMMENDED)"
|
||||||
|
|
||||||
AuthJellyfin = "Authenticated with " + Jellyfin + " @ \"%s\""
|
AuthJellyfin = "Authenticated with " + Jellyfin + " @ \"%s\""
|
||||||
AsUser = "As user \"%s\""
|
|
||||||
FailedAuthJellyfin = "Failed to authenticate with " + Jellyfin + " @ \"%s\" (code %d): %v"
|
FailedAuthJellyfin = "Failed to authenticate with " + Jellyfin + " @ \"%s\" (code %d): %v"
|
||||||
FailedAuth = "Failed to authenticate with %s @ \"%s\" (code %d): %v"
|
FailedAuth = "Failed to authenticate with %s @ \"%s\" (code %d): %v"
|
||||||
|
|
||||||
|
1
main.go
1
main.go
@ -446,7 +446,6 @@ func start(asDaemon, firstCall bool) {
|
|||||||
app.err.Fatalf(lm.FailedAuthJellyfin, server, status, err)
|
app.err.Fatalf(lm.FailedAuthJellyfin, server, status, err)
|
||||||
}
|
}
|
||||||
app.info.Printf(lm.AuthJellyfin, server)
|
app.info.Printf(lm.AuthJellyfin, server)
|
||||||
app.debug.Printf(lm.AsUser, app.jf.Username)
|
|
||||||
|
|
||||||
runMigrations(app)
|
runMigrations(app)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user