Sync GitHub / sync (push) Successful in 8s
Add PublicAccessListener (priority 84) that allows rate-limited unauthenticated access to configured public paths. Authenticated users bypass this listener entirely via AcceptListener/AllowListener. New components: - PublicPathMatcher service with wildcard path matching (* and **) and optional host-prefix scoping - PublicAccessListener applying per-IP rate limiting to public paths - Separate public_limiter compound rate limiter (burst + sustained) - publicRateLimitCache pool (APCu in prod, array in tests) New env vars: - PUBLIC_PATHS (comma-separated path patterns, empty = disabled) - PUBLIC_BURST_COUNT/PUBLIC_BURST_TIME (default 100/60s) - PUBLIC_UPPER_COUNT/PUBLIC_UPPER_TIME (default 500/3600s) Tests: 52 new tests (29 unit for PublicPathMatcher, 12 unit for PublicAccessListener, 11 functional for PublicAccessFlowTest). Total: 293 tests, 605 assertions, all passing. PHP CS Fixer: 0 of 63 files need fixing. Documentation: README, CHANGELOG, ROADMAP, Caddyfile, example.env all updated with public access configuration and examples.
33 lines
818 B
Bash
33 lines
818 B
Bash
APP_ENV=test
|
|
APP_DEBUG=0
|
|
APP_SECRET=test_secret_key_change_me
|
|
# fixed TOTP secret (JBSWY3DPEHPK3PXP) so functional tests can compute valid codes
|
|
TOTP_URI='otpauth://totp/Test-TOTP?secret=JBSWY3DPEHPK3PXP'
|
|
COOKIE_TTL=2592000
|
|
SUBDOMAIN_REDIRECT=0
|
|
AUTH_SUBDOMAIN=''
|
|
IP_TTL=0
|
|
TEAPOT=1
|
|
BURST_COUNT=10
|
|
BURST_TIME=30
|
|
UPPER_COUNT=100
|
|
UPPER_TIME=3600
|
|
PUBLIC_PATHS=''
|
|
PUBLIC_BURST_COUNT=100
|
|
PUBLIC_BURST_TIME=60
|
|
PUBLIC_UPPER_COUNT=500
|
|
PUBLIC_UPPER_TIME=3600
|
|
TITLE='Pre-Authentication System'
|
|
BG_COLOR='#029386'
|
|
FG_COLOR='#ffffff'
|
|
ERROR_COLOR='#ffb16d'
|
|
ID_NAME='Session ID'
|
|
TOKEN_NAME='Authentication Token'
|
|
SUBMIT_NAME='Submit'
|
|
ERROR_MESSAGE='Unsuccessful login attempt'
|
|
TEAPOT_TITLE="I'm a teapot"
|
|
TEAPOT_MESSAGE='I refuse to brew coffee'
|
|
TOO_MANY_TITLE='Too many requests'
|
|
TOO_MANY_MESSAGE='Try again later'
|
|
SHELL_VERBOSITY=0
|