Skip to content

Commit 672db84

Browse files
authored
feat: make config file a stable feature (#897)
1 parent 359000f commit 672db84

3 files changed

Lines changed: 71 additions & 12 deletions

File tree

.env.example

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ TINYAUTH_APPURL=
77

88
# database config
99

10-
# The path to the database, including file name.
10+
# The database driver to use. Valid values: sqlite, memory.
11+
TINYAUTH_DATABASE_DRIVER="sqlite"
12+
# The path to the SQLite database, including file name. Only used when driver is sqlite.
1113
TINYAUTH_DATABASE_PATH="./tinyauth.db"
1214

1315
# analytics config
@@ -30,15 +32,61 @@ TINYAUTH_SERVER_PORT=3000
3032
TINYAUTH_SERVER_ADDRESS="0.0.0.0"
3133
# The path to the Unix socket.
3234
TINYAUTH_SERVER_SOCKETPATH=
35+
# Enable listening on both TCP and Unix socket at the same time.
36+
TINYAUTH_SERVER_CONCURRENTLISTENERSENABLED=false
3337

3438
# auth config
3539

3640
# List of allowed IPs or CIDR ranges.
3741
TINYAUTH_AUTH_IP_ALLOW=
3842
# List of blocked IPs or CIDR ranges.
3943
TINYAUTH_AUTH_IP_BLOCK=
44+
# List of IPs or CIDR ranges that bypass authentication entirely.
45+
TINYAUTH_AUTH_IP_BYPASS=
4046
# Comma-separated list of users (username:hashed_password).
4147
TINYAUTH_AUTH_USERS=
48+
# Enable subdomains support.
49+
TINYAUTH_AUTH_SUBDOMAINSENABLED=true
50+
# Full name of the user.
51+
TINYAUTH_AUTH_USERATTRIBUTES_name_NAME=
52+
# Given (first) name of the user.
53+
TINYAUTH_AUTH_USERATTRIBUTES_name_GIVENNAME=
54+
# Family (last) name of the user.
55+
TINYAUTH_AUTH_USERATTRIBUTES_name_FAMILYNAME=
56+
# Middle name of the user.
57+
TINYAUTH_AUTH_USERATTRIBUTES_name_MIDDLENAME=
58+
# Nickname of the user.
59+
TINYAUTH_AUTH_USERATTRIBUTES_name_NICKNAME=
60+
# URL of the user's profile page.
61+
TINYAUTH_AUTH_USERATTRIBUTES_name_PROFILE=
62+
# URL of the user's profile picture.
63+
TINYAUTH_AUTH_USERATTRIBUTES_name_PICTURE=
64+
# URL of the user's website.
65+
TINYAUTH_AUTH_USERATTRIBUTES_name_WEBSITE=
66+
# Email address of the user.
67+
TINYAUTH_AUTH_USERATTRIBUTES_name_EMAIL=
68+
# Gender of the user.
69+
TINYAUTH_AUTH_USERATTRIBUTES_name_GENDER=
70+
# Birthdate of the user (YYYY-MM-DD).
71+
TINYAUTH_AUTH_USERATTRIBUTES_name_BIRTHDATE=
72+
# Time zone of the user (e.g. Europe/Athens).
73+
TINYAUTH_AUTH_USERATTRIBUTES_name_ZONEINFO=
74+
# Locale of the user (e.g. en-US).
75+
TINYAUTH_AUTH_USERATTRIBUTES_name_LOCALE=
76+
# Phone number of the user.
77+
TINYAUTH_AUTH_USERATTRIBUTES_name_PHONENUMBER=
78+
# Full mailing address, formatted for display.
79+
TINYAUTH_AUTH_USERATTRIBUTES_name_ADDRESS_FORMATTED=
80+
# Street address.
81+
TINYAUTH_AUTH_USERATTRIBUTES_name_ADDRESS_STREETADDRESS=
82+
# City or locality.
83+
TINYAUTH_AUTH_USERATTRIBUTES_name_ADDRESS_LOCALITY=
84+
# State, province, or region.
85+
TINYAUTH_AUTH_USERATTRIBUTES_name_ADDRESS_REGION=
86+
# Zip or postal code.
87+
TINYAUTH_AUTH_USERATTRIBUTES_name_ADDRESS_POSTALCODE=
88+
# Country.
89+
TINYAUTH_AUTH_USERATTRIBUTES_name_ADDRESS_COUNTRY=
4290
# Path to the users file.
4391
TINYAUTH_AUTH_USERSFILE=
4492
# Enable secure cookies.
@@ -53,6 +101,8 @@ TINYAUTH_AUTH_LOGINTIMEOUT=300
53101
TINYAUTH_AUTH_LOGINMAXRETRIES=3
54102
# Comma-separated list of trusted proxy addresses.
55103
TINYAUTH_AUTH_TRUSTEDPROXIES=
104+
# ACL policy for allow-by-default or deny-by-default, available options are allow and deny, default is allow.
105+
TINYAUTH_AUTH_ACLS_POLICY="allow"
56106

57107
# apps config
58108

@@ -168,6 +218,8 @@ TINYAUTH_LDAP_AUTHCERT=
168218
TINYAUTH_LDAP_AUTHKEY=
169219
# Cache duration for LDAP group membership in seconds.
170220
TINYAUTH_LDAP_GROUPCACHETTL=900
221+
# Label provider to use for ACLs (auto, docker, kubernetes or none to disable). auto detects the environment.
222+
TINYAUTH_LABELPROVIDER="auto"
171223

172224
# log config
173225

@@ -187,3 +239,16 @@ TINYAUTH_LOG_STREAMS_APP_LEVEL=
187239
TINYAUTH_LOG_STREAMS_AUDIT_ENABLED=false
188240
# Log level for this stream. Use global if empty.
189241
TINYAUTH_LOG_STREAMS_AUDIT_LEVEL=
242+
243+
# tailscale config
244+
245+
# Enable Tailscale integration.
246+
TINYAUTH_TAILSCALE_ENABLED=false
247+
# Tailscale state directory.
248+
TINYAUTH_TAILSCALE_DIR="./tailscale_state"
249+
# Tailscale hostname.
250+
TINYAUTH_TAILSCALE_HOSTNAME=
251+
# Tailscale auth key.
252+
TINYAUTH_TAILSCALE_AUTHKEY=
253+
# Use ephemeral Tailscale node.
254+
TINYAUTH_TAILSCALE_EPHEMERAL=false

internal/model/config.go

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,6 @@ func NewDefaultConfiguration() *Config {
6262
PrivateKeyPath: "./tinyauth_oidc_key",
6363
PublicKeyPath: "./tinyauth_oidc_key.pub",
6464
},
65-
Experimental: ExperimentalConfig{
66-
ConfigFile: "",
67-
},
6865
Tailscale: TailscaleConfig{
6966
Dir: "./tailscale_state",
7067
},
@@ -88,6 +85,7 @@ type Config struct {
8885
LabelProvider string `description:"Label provider to use for ACLs (auto, docker, kubernetes or none to disable). auto detects the environment." yaml:"labelProvider"`
8986
Log LogConfig `description:"Logging configuration." yaml:"log"`
9087
Tailscale TailscaleConfig `description:"Tailscale configuration." yaml:"tailscale"`
88+
ConfigFile string `description:"Path to config file." yaml:"-"`
9189
}
9290

9391
type DatabaseConfig struct {
@@ -208,9 +206,8 @@ type LogStreamConfig struct {
208206
Level string `description:"Log level for this stream. Use global if empty." yaml:"level"`
209207
}
210208

211-
type ExperimentalConfig struct {
212-
ConfigFile string `description:"Path to config file." yaml:"-"`
213-
}
209+
// no experimental features
210+
type ExperimentalConfig struct{}
214211

215212
type TailscaleConfig struct {
216213
Enabled bool `description:"Enable Tailscale integration." yaml:"enabled"`

internal/utils/loaders/loader_file.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package loaders
33
import (
44
"os"
55

6-
"github.com/rs/zerolog/log"
76
"github.com/tinyauthapp/paerser/cli"
87
"github.com/tinyauthapp/paerser/file"
98
"github.com/tinyauthapp/paerser/flag"
@@ -19,8 +18,8 @@ func (f *FileLoader) Load(args []string, cmd *cli.Command) (bool, error) {
1918
}
2019

2120
// I guess we are using traefik as the root name (we can't change it)
22-
configFileFlag := "traefik.experimental.configfile"
23-
envVar := "TINYAUTH_EXPERIMENTAL_CONFIGFILE"
21+
configFileFlag := "traefik.configfile"
22+
envVar := "TINYAUTH_CONFIGFILE"
2423

2524
if _, ok := flags[configFileFlag]; !ok {
2625
if value := os.Getenv(envVar); value != "" {
@@ -30,8 +29,6 @@ func (f *FileLoader) Load(args []string, cmd *cli.Command) (bool, error) {
3029
}
3130
}
3231

33-
log.Warn().Msg("Using experimental file config loader, this feature is experimental and may change or be removed in future releases")
34-
3532
err = file.Decode(flags[configFileFlag], cmd.Configuration)
3633

3734
if err != nil {

0 commit comments

Comments
 (0)