Girish Ramakrishnan
36aa641cb9
migrate to "export default"
...
also, set no-use-before-define in linter
2026-02-14 15:43:24 +01:00
Girish Ramakrishnan
96dc79cfe6
Migrate codebase from CommonJS to ES Modules
...
- Convert all require()/module.exports to import/export across 260+ files
- Add "type": "module" to package.json to enable ESM by default
- Add migrations/package.json with "type": "commonjs" to keep db-migrate compatible
- Convert eslint.config.js to ESM with sourceType: "module"
- Replace __dirname/__filename with import.meta.dirname/import.meta.filename
- Replace require.main === module with process.argv[1] === import.meta.filename
- Remove 'use strict' directives (implicit in ESM)
- Convert dynamic require() in switch statements to static import lookup maps
(dns.js, domains.js, backupformats.js, backupsites.js, network.js)
- Extract self-referencing exports.CONSTANT patterns into standalone const
declarations (apps.js, services.js, locks.js, users.js, mail.js, etc.)
- Lazify SERVICES object in services.js to avoid circular dependency TDZ issues
- Add clearMailQueue() to mailer.js for ESM-safe queue clearing in tests
- Add _setMockApp() to ldapserver.js for ESM-safe test mocking
- Add _setMockResolve() wrapper to dig.js for ESM-safe DNS mocking in tests
- Convert backupupload.js to use dynamic imports so --check exits before
loading the module graph (which requires BOX_ENV)
- Update check-install to use ESM import for infra_version.js
- Convert scripts/ (hotfix, release, remote_hotfix.js, find-unused-translations)
- All 1315 tests passing
Migration stats (AI-assisted using Cursor with Claude):
- Wall clock time: ~3-4 hours
- Assistant completions: ~80-100
- Estimated token usage: ~1-2M tokens
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-14 15:11:45 +01:00
Girish Ramakrishnan
efccf2729b
start moving openssl commands into openssl.js
2026-01-17 15:28:44 +01:00
Girish Ramakrishnan
692fb1a68c
domains: add debug to print the error
2026-01-12 18:35:18 +01:00
Johannes Zellner
5ba30d0236
add hetznercloud DNS provider
2025-10-20 15:05:19 +02:00
Johannes Zellner
a781a46f13
Do not sort dashboard domain first in the REST api
2025-10-17 18:55:22 +02:00
Girish Ramakrishnan
43e426ab9f
Revert "Add no-use-before-define linter rule"
...
This reverts commit fdcc5d68a2 .
Unfortunately, this requires us to move exports to the bottom.
This in turn causes circular dep issues and also access of
exports.GLOBAL_VAR in the global context
2025-10-08 21:17:52 +02:00
Girish Ramakrishnan
5dd5a20fc1
code -> sqlCode
2025-09-29 12:18:26 +02:00
Girish Ramakrishnan
12e073e8cf
use node: prefix for requires
...
mostly because code is being autogenerated by all the AI stuff using
this prefix. it's also used in the stack trace.
2025-08-14 12:55:35 +05:30
Girish Ramakrishnan
86109127b8
test: fix domains test for dashboard at index0
2025-05-06 10:31:06 +02:00
Johannes Zellner
6e06e05f12
Push dashboard domain at index 0 of domain listing
2025-04-28 16:41:58 +02:00
Girish Ramakrishnan
12794a499d
domains: validate domain configs in a cron
...
no email notification yet, we have to rework this notifications/eventlog stuff
2025-02-17 19:11:11 +01:00
Girish Ramakrishnan
dd5e4adc73
replace underscore with our own
...
we only need like 5 simple functions
2025-02-13 14:14:34 +01:00
Girish Ramakrishnan
c61357ec6d
Revert "tld.isValid is deprecated"
...
This reverts commit daff760280 .
deprecated but hasn't seen a release in 7 years
2025-02-05 10:51:05 +01:00
Girish Ramakrishnan
daff760280
tld.isValid is deprecated
2025-02-05 10:39:49 +01:00
Girish Ramakrishnan
78520e09c3
domains: add inwx provider
2024-11-26 19:13:33 +05:30
Girish Ramakrishnan
b142cd5039
domains: when listing, send all fields
...
also remove the certificate key from responses
2024-04-30 09:47:50 +02:00
Girish Ramakrishnan
a0df52000a
typo
2024-04-29 15:51:16 +02:00
Girish Ramakrishnan
203330d1b8
lint: const
2024-04-29 13:05:07 +02:00
Girish Ramakrishnan
cae2bfbdc2
domains: add desec provider
2024-04-24 21:29:42 +02:00
Girish Ramakrishnan
c1bb4de6a3
reverseproxy: use async exec
2024-02-21 12:33:04 +01:00
Girish Ramakrishnan
46a589f794
Use BAD_STATE consistently for demo mode
2024-01-13 21:15:41 +01:00
Girish Ramakrishnan
ba16fdaf60
domain: handle alias domain conflict during deletion
2024-01-02 17:18:37 +01:00
Girish Ramakrishnan
b88afbac4e
dns: add ovh backend
2023-11-06 15:22:24 +01:00
Girish Ramakrishnan
eb1f3d8b55
dns: add dnsimple
2023-10-24 00:26:10 +02:00
Girish Ramakrishnan
eee49a8291
move dashboard setting into dashboard.js
2023-08-11 21:04:10 +05:30
Girish Ramakrishnan
4cdf37b060
settings: move mailFqdn/Domain into mailServer
2023-08-04 22:02:24 +05:30
Girish Ramakrishnan
946e5caacb
split mail and mailserver
...
mail = all the per-domain code
mailserver = all the mail server level code
2023-08-04 20:54:39 +05:30
Girish Ramakrishnan
6aad89ae6e
demo is just a constant, not a setting
2023-08-04 14:13:30 +05:30
Girish Ramakrishnan
56b7cc4041
better error message when deleting domain
...
Fixes #815
2023-07-08 17:48:07 +05:30
Girish Ramakrishnan
a846dc5bf1
add bunny
2023-04-21 12:14:06 +02:00
Girish Ramakrishnan
3616fbb51c
dns: add porkbun
...
domain setup ui
2023-03-16 20:21:39 +01:00
Girish Ramakrishnan
e942b8fe7e
better debugs
2022-11-30 13:08:05 +01:00
Girish Ramakrishnan
77a5f01585
reverseproxy: rebuild only when needed
...
re-creating nginx configs is only needed in 3 cases:
* provider changes. we create a rebuild file for this
* nginx config is somehow corrupt by external changes. user can click ui button
on startup, dashboard also always creates the nginx configs. so it's always up to provide the button
2022-11-29 18:17:53 +01:00
Girish Ramakrishnan
89127e1df7
reverseproxy: rework cert logic
...
9c8f78a059 already fixed many of the cert issues.
However, some issues were caught in the CI:
* The TLS addon has to be rebuilt and not just restarted. For this reason, we now
move things to a directory instead of mounting files. This way the container is just restarted.
* Cleanups must be driven by the database and not the filesystem . Deleting files on disk or after a restore,
the certs are left dangling forever in the db.
* Separate the db cert logic and disk cert logic. This way we can sync as many times as we want and whenever we want.
2022-11-29 11:07:23 +01:00
Girish Ramakrishnan
b70572a6e9
dns: fqdn only needs domain string
...
This is from the caas days, when we had hyphenated subdomains flag
2022-11-28 21:56:25 +01:00
Girish Ramakrishnan
013e15e361
reverseproxy: do deep compare in tlsConfig
...
wildcard field might change
2022-11-16 16:04:26 +01:00
Girish Ramakrishnan
e3642f4278
reverse proxy: rebuild configs on provider change
2022-11-16 12:42:06 +01:00
Girish Ramakrishnan
7b7e5d24de
domains: update event not generated
2022-11-14 10:58:47 +01:00
Girish Ramakrishnan
9c8f78a059
reverseproxy: simplify certificate renewal
...
An issue was that mail container was not getting refreshed with the up to
date certs. The root cause is that it is refreshed only in the renewCerts()
cron job. If cert renewal was caused by an app task, then the cron job will
skip the restart (since cert is fresh).
The other issue is that we keep hitting 0 length certs when we run out of disk
space. The root cause is that when out of disk space, a cert renewal will
cause cert to be written but since it has no space it is 0 length. Then, when
the user tries to restart the server, the box code does not write the cert again.
This change fixes the above two including:
* To simplify, we use the fallback cert only if we failed to get a LE cert. Expired LE certs
will continue to be used. nginx is fine with this.
* restart directory as well on renewal
2022-11-13 11:55:12 +01:00
Girish Ramakrishnan
127470ae59
domains: fix error handling
2022-07-14 10:35:59 +05:30
Girish Ramakrishnan
efac46e40e
verifyDomainConfig: just throw the error
2022-07-14 10:32:30 +05:30
Girish Ramakrishnan
6371b7c20d
dns: add hetzner
2022-05-02 22:33:30 -07:00
Girish Ramakrishnan
05d7a7f496
constness
2022-04-14 17:50:41 -05:00
Girish Ramakrishnan
a3e097d541
add missing awaits for eventlog.add
2022-02-24 20:04:46 -08:00
Girish Ramakrishnan
75c0caaa3d
rename subdomains table to locations
2022-02-07 14:04:11 -08:00
Girish Ramakrishnan
964c1a5f5a
remove field from errors
...
we have standardized on indexOf in error.message by now
2022-02-07 13:44:29 -08:00
Girish Ramakrishnan
e27bad4bdd
Fix incorrect brackets
2022-02-06 10:22:04 -08:00
Girish Ramakrishnan
5c56cdfbc7
Revert "tld.isValid is deprecated"
...
This reverts commit bd4097098d .
the published library does not have the function :/
2022-02-04 10:49:19 -08:00
Girish Ramakrishnan
856b23d940
asyncify the vultr and DO backend
2022-02-04 10:15:35 -08:00