Commit Graph
100 Commits
Author SHA1 Message Date
wmantlyandClaude Opus 4.8 0cca3730fb Make install.sh CI/CD-friendly: deterministic force-sync to remote
The installer is meant to be run by CI/CD with no human writes on prod, so
updates should mirror the repo exactly rather than refuse on local drift:

- Replace `git pull --ff-only` with fetch + `checkout -B origin/$BRANCH` +
  `reset --hard` + `clean -fd` so the box always matches origin/$BRANCH.
- Set GIT_TERMINAL_PROMPT=0 so a missing/expired credential fails fast in CI
  instead of hanging on a prompt.
- npm ci --omit=dev (lockfile, production-only) with a plain-install fallback.
- Allow REPO_URL / REPO_DIR / BRANCH to be overridden from the environment.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 13:23:31 -04:00
wmantlyandClaude Opus 4.8 ec168411bf Make ops/install.sh idempotent and symlink config from the repo
Rework the installer so it doubles as an updater:

- Idempotent throughout: `install -d` for dirs, apt source lists rewritten
  in place, `gpg --dearmor --yes`, fallback cert generated only if missing,
  repo cloned or fast-forwarded, and `ln -sfn` symlinks.
- Config is now symlinked straight from the checked-out repo instead of
  wget-ing raw files from GitHub. /etc/openresty/{nginx.conf,autossl.conf,
  sites-enabled/000-proxy}, the targetinfo.lua lualib, and the systemd unit
  all point at $REPO_DIR/ops, so an update is just `git pull` + reload with
  no re-copying. This also drops the external t42-common raw-file
  dependency (autossl.conf / proxy.conf now come from this repo).
- Validate `openresty -t` before reloading so a bad config can't take the
  proxy down; reload if running else restart.
- Fix prior bugs: stray `curl sudo apt-get update`, duplicate openssl cert
  line, and `cd ../nodejs` (now cd $REPO_DIR/nodejs). Require root; add a
  BRANCH override (default master).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 13:14:48 -04:00
wmantly 9f175f5bf6 Merge pull request #106 from theta42/deps/audit-fix
Update dependencies, clear all npm audit vulnerabilities
2026-07-10 11:14:01 -04:00
wmantly 58ba837cbd Merge branch 'master' into deps/audit-fix 2026-07-10 11:13:51 -04:00
wmantly cdca9fbd40 Merge pull request #105 from theta42/model-redis
TTL-based expiry for wildcard subdomain cache
2026-07-10 11:08:26 -04:00
wmantlyandClaude Opus 4.8 7ee8202a11 Update dependencies and clear all npm audit vulnerabilities
`npm audit fix` resolved all 12 advisories (7 high, 5 moderate) by
bumping transitive deps (axios/form-data/node-forge/path-to-regexp/qs/
ws/socket.io-parser/brace-expansion/follow-redirects/picomatch) within
the existing semver ranges. Audit is now clean (0 vulnerabilities).

Also refreshed direct deps:
- @fortawesome/fontawesome-free 7.1 -> 7.3 (minor)
- ldapts 8.1.2 -> 8.1.8 (patch)
- ejs 3.1 -> 6.0 (major)
- jquery 3.7 -> 4.0 (major)

All views render under ejs 6 (modern <%- include() %> syntax, no legacy
filters) and no jQuery-4-removed APIs are used in the views or public JS.
Unit + integration tests pass (55).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 10:58:38 -04:00
wmantlyandClaude Opus 4.8 7cc7f95019 Add TTL-based expiry for wildcard subdomain cache entries
Adopt model-redis v1.5.0 and give the on-demand is_cache Host records
(and their Cached tracking records) created by Host.addCache a TTL, so
they auto-expire instead of accumulating forever. Only the record hash
carries the TTL, so OpenResty's direct HGETALL sees a miss once it
expires and re-resolves through the lookup path.

The lifetime is configurable via conf.cacheTTL (seconds, default 3600;
0 disables expiry). This also mitigates the matchAny=false "wrong host"
bug: stale leftover cache entries now expire (and are still busted on
parent update), so undefined subdomains stop being served by old caches.

Add test/unit/wildcard_matchany.test.js covering the matchAny routing
decision (defined vs undefined subdomains, mixed-policy sibling
wildcards, and cache-entry behavior) and wire it into the test scripts.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 10:51:06 -04:00
wmantly bb9bbb1d6e Merge pull request #104 from theta42/model-redis
Fixed clearcahce
2026-07-10 00:39:53 -04:00
wmantly 626a4189fa Fixed clearcahce 2026-07-10 00:39:25 -04:00
wmantly 1eda4a7cf5 Merge pull request #103 from theta42/model-redis
Fixed issue with lookup
2026-07-10 00:36:36 -04:00
wmantly 99cdbe6586 Fixed issue with lookup 2026-07-10 00:35:50 -04:00
wmantly c15e7d93ff Merge pull request #102 from theta42/model-redis
Fixed issue with matching wild card
2026-07-10 00:26:15 -04:00
wmantly 1295d4f5ce Fixed issue with matching wild card 2026-07-10 00:24:16 -04:00
wmantly e457cadf8a Merge pull request #101 from theta42/model-redis
Fixed issue with matching wild card
2026-07-10 00:17:20 -04:00
wmantly 56c2fb1a5c Fixed issue with matching wild card 2026-07-10 00:13:40 -04:00
wmantly 655aeb47a2 Merge pull request #100 from theta42/model-redis
Model redis
2026-07-09 22:20:53 -04:00
wmantly 398d2d9979 Merge branch 'master' of github.com:theta42/proxy into model-redis 2026-07-09 22:20:34 -04:00
wmantlyandClaude Opus 4.8 77674c6b1c Upgrade model-redis to ^1.4.0 and redis to ^6.1.0
model-redis 1.4.0 requires redis 6, so bump both together to keep a
single deduped redis version. Verified: unit tests pass (38), and the
real models load and run against live redis 7 on the new stack,
including model-redis 1.4.0's findOrphans().

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 20:13:38 -04:00
wmantlyandClaude Opus 4.8 2c32ec0f3a Add wildcard_matchAny routing mode for wildcard hosts
A *.example.com wildcard host now chooses between two routing modes:
- wildcard_matchAny=false (default): only subdomains explicitly defined
  in redis route; undefined subdomains get no match (406)
- wildcard_matchAny=true: any subdomain catches-all to the wildcard
  parent host, preserving the previous behavior

The gate lives in the host_lookup socket service, which is only reached
for domains missing a direct redis entry, so defined children and
**-style hosts are unaffected. Adds the matching-mode selector to the
host add/edit form, shown for wildcard hosts.

Note: existing wildcard hosts have no wildcard_matchAny field and so
default to the stricter "only defined" mode until re-saved.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 01:47:21 -04:00
wmantlyandClaude Opus 4.8 2665e7d466 Fix cert deletion key and harden nginx SSL/redis handling
- host.remove() now deletes the cert under the host key instead of the
  Domain relation object, so certs are actually removed from redis
- targetinfo.lua returns the redis connection to the pool via
  set_keepalive instead of leaking one connection per request
- autossl.conf drops TLSv1/1.1 and 3DES, adds TLSv1.3

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 01:29:43 -04:00
wmantly 59bba8273a Fixed issue with cert renew 2026-02-25 22:59:04 -05:00
wmantly bcc777ccdf Delete certs from redis 2026-02-25 22:21:16 -05:00
wmantly 1bacc17a12 Fixed host put on frontend 2026-02-25 19:45:09 -05:00
wmantly 427e9411e7 Better model pub/sub errors 2026-02-25 19:30:54 -05:00
wmantly 585aa14c0b services 2026-02-25 19:17:25 -05:00
wmantly 74b8f1113e Prokbun API fix 2026-02-25 13:49:46 -05:00
wmantly 0a63e05028 Import path fix 2026-02-25 12:35:21 -05:00
wmantly b522e5064a Package updates 2026-02-25 12:16:38 -05:00
wmantly 21ff1b0bb5 DNS route 2026-02-25 12:11:31 -05:00
wmantly 5309719622 Create CNAME 2026-02-11 11:21:00 -05:00
wmantly e2cb6207eb Merge pull request #87 from theta42/model-redis
Moved to model-redis package
2025-12-31 20:45:58 -05:00
wmantlyandClaude Sonnet 4.5 b78376cdf9 Add model-redis package references to documentation
- Added ORM reference in architecture.md (Redis section)
- Added Data Models section in contributing.md with example
- Updated README.md to mention model-redis in Architecture
- Linked to https://www.npmjs.com/package/model-redis for more info

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 20:35:55 -05:00
wmantly 5913c5e8c3 Moved to model-redis package 2025-12-31 20:32:21 -05:00
wmantly 25544db1a1 Merge pull request #86 from theta42/conf
Using the simpleworks conf now
2025-12-31 19:30:12 -05:00
wmantly 6cb2880131 Using the simpleworks conf now 2025-12-31 19:28:26 -05:00
wmantly c75ec8015e Merge pull request #85 from theta42/docs
Fav Icon
2025-12-31 19:11:08 -05:00
wmantly 9c762e0e0c Updated versions 2025-12-31 19:08:56 -05:00
wmantly 8692b5f3d7 Added fav icon 2025-12-31 19:08:28 -05:00
wmantly b2267d346e Merge pull request #84 from theta42/docs
Fix architecture documentation - clarify Redis-first lookup
2025-12-31 17:44:40 -05:00
wmantlyandClaude Sonnet 4.5 3dc9e22dc5 Fix architecture documentation - clarify Redis-first lookup
- OpenResty checks Redis FIRST for every request
- Node.js is only queried as fallback when Redis has no entry
- Cached hosts continue working even if Node.js goes down
- Updated diagram to show lookup hierarchy
- Restructured caching strategy to emphasize L1/L2 tiers

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 17:37:54 -05:00
wmantly a27dbce6ab Merge pull request #83 from theta42/DNS-01
Dns 01
2025-12-31 17:33:16 -05:00
wmantlyandClaude Sonnet 4.5 6b8b08e94d Fix test suite for CI/CD compatibility
- Fix glob patterns in package.json test scripts (explicit file listing)
- Add error handling for chmod in unix_socket_json.js (test environments)
- Fix unhandled promise rejections in DNS provider contract tests
- Replace broken malformed JSON test with proper buffering test
- Add defensive file cleanup in unix socket tests

All 55 tests now pass successfully.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 17:26:24 -05:00
wmantly c0cfed1b1d Updated docs 2025-12-31 16:55:14 -05:00
wmantly b5c7f683b0 Set up github 2025-12-31 16:54:49 -05:00
wmantly 76650d2a11 Added tests 2025-12-31 16:51:55 -05:00
wmantly 354abdf19b Gitpage added 2025-12-31 16:51:27 -05:00
wmantly 1bafc99da9 Clean up 2025-12-31 16:02:20 -05:00
wmantly 5dd07edf1a Moved jq-repeat to use NPM package 2025-12-31 16:01:34 -05:00
wmantly 3a31083871 Cleaned up file layout 2025-12-31 16:00:39 -05:00
wmantly ef3fffdef2 Updated DNS-01 validation 2025-12-31 16:00:21 -05:00
wmantly d944ca6957 Cleaned up file layout 2025-12-31 15:57:33 -05:00
wmantly eb7c049a24 Merge pull request #79 from theta42/wmantly-patch-1
Update install.sh
2024-11-12 19:43:55 -05:00
wmantly c51b9c007b Update install.sh 2024-11-12 19:40:47 -05:00
wmantly 22cf1ce19a Merge pull request #78 from theta42/Fixed-install-script
Update install.sh
2024-11-12 19:15:23 -05:00
wmantly de67510a4e Update install.sh 2024-11-12 19:13:27 -05:00
wmantly c6e937d7f1 Merge pull request #71 from theta42/dependabot/npm_and_yarn/nodejs/axios-1.7.4
Bump axios from 1.7.2 to 1.7.4 in /nodejs
2024-08-15 23:35:53 -04:00
wmantly 63012615cc Merge pull request #66 from theta42/dns
DNS
2024-08-15 23:30:42 -04:00
wmantly 6e168b12b3 Fixed issue: Old domains not being removed on refresh 2024-08-15 22:10:15 -04:00
wmantly c418dd39a8 removed unneeded route 2024-08-15 22:09:17 -04:00
wmantly 5d42879c48 Removed print 2024-08-15 22:08:51 -04:00
wmantly 17f8bec34d Polished off DNS api models 2024-08-15 18:51:36 -04:00
wmantly ce814c306b Fixed title whe in dev env 2024-08-15 18:50:52 -04:00
wmantly c1cfa8bb82 Added relations to redis models 2024-08-15 18:49:42 -04:00
wmantly 9cf9c76c12 Added relations to redis models 2024-08-15 18:49:08 -04:00
wmantly f9d3ae5524 Improved mobile UI 2024-08-15 18:48:07 -04:00
wmantly 496bff53c8 Fixes mobile issue with nav bar 2024-08-15 18:47:30 -04:00
wmantly 0ac8c10e20 fixes magin on UI 2024-08-15 18:46:30 -04:00
wmantly 84cd762d33 Fixed .update issue in jqrepreat 2024-08-15 18:45:56 -04:00
wmantly 7bc4f80340 Added scrollTo function in JS base app 2024-08-15 18:44:46 -04:00
wmantly 24ff59a097 Merge branch 'dns' of github.com:theta42/proxy into dns 2024-08-13 15:18:53 -04:00
wmantly b27e1b1617 Added relations to redis ORM 2024-08-13 15:18:47 -04:00
wmantly bc35f73181 Merge pull request #67 from theta42/cloudflare
final
2024-08-13 15:17:25 -04:00
wmantly 2a5ca3664a More UI stuff 2024-08-12 14:02:58 -04:00
wmantly fd85371e4b Merge branch 'dns' of github.com:theta42/proxy into dns 2024-08-12 13:53:41 -04:00
wmantly 35d3a399e3 More UI stuff 2024-08-12 13:53:37 -04:00
wmantly 99dfad9dbe Merge pull request #65 from theta42/cloudflare
cf change wip
2024-08-12 13:47:46 -04:00
wmantly e86de04a69 Better UI for DNS 2024-08-11 22:57:18 -04:00
wmantly cb87f22d98 DNS API error message 2024-08-11 12:24:42 -04:00
wmantly 3e989992df Added digital ocean 2024-08-10 23:09:55 -04:00
wmantly 3df3341235 DNS stuff 2024-08-10 23:07:32 -04:00
wmantly 92df05540b Updated nginx files 2024-08-09 14:45:05 -04:00
wmantly 0a0f7d8ce5 Updated nginx files 2024-08-09 14:16:41 -04:00
wmantly c49dcafc34 Fixed nginx conf issue 2024-08-08 14:30:22 -04:00
wmantly 07ff3a2e39 Fixed nginx conf issue 2024-08-08 14:00:00 -04:00
wmantly 4c7558c2d7 Fixed nginx conf issue 2024-08-08 09:17:51 -04:00
wmantly 8c53b120b8 Fixed nginx conf issue 2024-08-08 09:15:56 -04:00
wmantly ee582891fa Fixed nginx conf issue 2024-08-08 08:38:51 -04:00
wmantly cf557f8aea Fixed nginx conf issue 2024-08-07 22:48:53 -04:00
wmantly d16c632045 Fixed nginx conf issue 2024-08-07 22:39:43 -04:00
wmantly d64edd87d9 Fixed nginx conf issue 2024-08-07 22:38:54 -04:00
wmantly c42a44be2c Fixed nginx conf issue 2024-08-07 22:35:30 -04:00
wmantly e29fc6b2a3 Merge pull request #64 from theta42/certs
Fixed nginx conf issue
2024-08-07 21:34:58 -04:00
wmantly f44284685f Fixed nginx conf issue 2024-08-07 21:34:03 -04:00
wmantly e0601e9c90 Merge pull request #62 from theta42/certs
Wildcard Certs and Front End update
2024-08-07 15:12:34 -04:00
wmantly 58964b60dc Removed logging from user model 2024-08-07 15:10:27 -04:00
wmantly 3caa4087b7 Updated package versions 2024-08-07 15:00:29 -04:00
wmantly 852ad67430 Fixed login UI and redirect 2024-08-07 14:53:53 -04:00
wmantly 0547e8efdf Fixed issue with form ajax 2024-08-07 14:52:02 -04:00
wmantly 2a4cd8dba6 Renamed functions to match 2024-08-07 14:51:29 -04:00
wmantly de96886b61 nginx conf files 2024-08-06 19:02:01 -04:00