Girish Ramakrishnan
c176ac600b
migrate tests to node:test
2026-02-19 10:13:22 +01:00
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
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
e4fb040ddf
make tests great again
2024-12-04 16:36:05 +01:00
Girish Ramakrishnan
c1bb4de6a3
reverseproxy: use async exec
2024-02-21 12:33:04 +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
641752a222
reverseproxy: remove getAcmeApiOptions
2022-11-17 12:39:23 +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
Johannes Zellner
3fcc3ea1aa
Fixup reverseproxy tests
2022-09-19 17:04:44 +02:00
Girish Ramakrishnan
01ce251596
constness
2022-04-14 18:03:43 -05:00
Girish Ramakrishnan
39807e6ba4
domain: split the config and wellknown routes
...
we want to add more stuff to the UI like the jitsi URL
2021-12-03 18:14:46 -08:00
Girish Ramakrishnan
b642bc98a5
ensure fallback certificates of all domains
...
https://forum.cloudron.io/topic/5683/data-argument-must-be-of-type-received-null-error-during-restore-process
2021-10-06 13:34:06 -07:00
Girish Ramakrishnan
5dd6f85025
reverseproxy: async'ify
2021-08-17 14:34:55 -07:00
Girish Ramakrishnan
5bcf1bc47b
merge domaindb.js into domains.js
2021-08-16 14:41:42 -07:00
Girish Ramakrishnan
a8760f6c2c
tests: cleanup common variables
2021-08-13 11:34:05 -07:00
Girish Ramakrishnan
48585e003d
fix reverseproxy test
2021-07-17 09:49:32 -07:00
Girish Ramakrishnan
a0c4ef9d0f
more test fixes
2021-06-03 16:29:56 -07:00
Girish Ramakrishnan
8da4eaf4a3
fix tests
2021-06-03 16:08:39 -07:00
Girish Ramakrishnan
16dc008702
Fix failing test
2021-05-05 12:52:11 -07:00
Girish Ramakrishnan
44ac406e57
admin -> dashboard
2021-05-05 12:29:04 -07:00
Girish Ramakrishnan
c17743d869
migrate secrets into the database
...
the infra version is bumped because the nginx's dhparams path has changed
and the sftp server key path has changed.
2021-05-03 22:11:18 -07:00
Girish Ramakrishnan
663e0952fc
move wellKnownJson to domains
...
after some more thought:
* If app moves to another location, user has to remember to move all this config
* It's not really associated with an app. It's to do with the domain info
* We can put some hints in the UI if app is missing.
part of #703
2020-12-23 17:13:22 -08:00
Girish Ramakrishnan
bf73cbaf97
test: make the certs test pass again
...
generate certs for next 10 years
2020-11-21 18:17:37 -08:00
Girish Ramakrishnan
510121bf54
remove support for hyphentated domains
...
this has not been used for a long time
2020-08-15 18:50:07 -07:00
Girish Ramakrishnan
1f1c94de70
Fix certificate ordering logic
...
* app certs set by user are always preferred
* If fallback, choose fallback certs. ignore others
* If LE, try to pick LE certs. Otherwise, provider fallback.
Fixes #724
2020-08-07 23:02:24 -07:00
Girish Ramakrishnan
6b9454100e
certs: remove caas backend
2020-08-07 17:58:27 -07:00
Johannes Zellner
d60714e4e6
Use webmaster@ instead of support@ as LetsEncrypt fallback
2020-05-03 11:02:18 +02:00
Girish Ramakrishnan
91af2495a6
Make key validation work for ecc certs
2020-03-24 21:20:21 -07:00
Girish Ramakrishnan
65210ea91d
rework dns api to take domainObject
...
the DNS backends require many different params, it's just easier to
pass them all together and have backends do whatever.
For example, route53 API requires the fqdn. Some other backends require just the
"part" to insert.
* location - location in the database (where app is installed)
* zoneName - the dns zone name
* domain - domain in the database (where apps are installed into)
* name/getName() - this returns the name to insert in the DNS based on zoneName/location
* fqdn - the fully resolved location in zoneName
verifyDnsConfig also takes a domain object even if it's not in db just so that we can
test even existing domain objects, if required. The IP param is removed since it's not
required.
for caas, we also don't need the fqdn hack in dnsConfig anymore
2019-01-04 22:38:12 -08:00
Girish Ramakrishnan
16c1622b1f
Make domains.fqdn take config and domain separately
...
This way it can be used in the dns backends which don't have the domain object
2019-01-04 14:11:29 -08:00
Girish Ramakrishnan
72fc6b8c5a
Fix tests
2018-11-15 12:00:51 -08:00
Girish Ramakrishnan
0c5cb9c98f
Remove settings.initialize/uninitialize
...
this simplifies the startup sequence
2018-11-10 14:55:23 -08:00
Girish Ramakrishnan
eddcc6fe27
Fix another test
2018-11-10 01:35:49 -08:00
Girish Ramakrishnan
953b55439c
eventlog: add domain events
2018-11-10 01:25:34 -08:00
Girish Ramakrishnan
ee6cca5cdf
Make cert an object
2018-11-05 22:39:06 -08:00
Girish Ramakrishnan
d96b1cc864
generate fallback cert correctly for hyphenated domains
2018-11-05 19:53:50 -08:00
Girish Ramakrishnan
81ac44b7da
Fix failing test
2018-10-25 00:01:32 -07:00
Girish Ramakrishnan
d0dde04695
acme2: dns authorization
2018-09-10 21:46:53 -07:00
Girish Ramakrishnan
2f38a4018c
pass domain arg to getCertificate API
2018-09-10 20:48:47 -07:00
Girish Ramakrishnan
93b0f39545
ensureCertificate: make it take appDomain object
2018-08-24 15:07:13 -07:00
Girish Ramakrishnan
c3fbead658
Allow zoneName to be changed in domain update route
2018-05-15 15:39:30 -07:00
Girish Ramakrishnan
bec032702d
Remove SAN check
...
-checkhost already checks the SAN. It is implementation dependent
as to whether the CN is checked for.
2018-02-09 14:20:03 -08:00
Johannes Zellner
e710a210fd
Fixup the unit tests
2018-02-08 09:00:31 +01:00
Girish Ramakrishnan
8014cc8ae1
le -> letsencrypt
2018-01-31 18:53:29 -08:00
Johannes Zellner
a727fc5efa
Use tlsConfig from domain, not settings in reverseproxy
2018-01-31 18:37:08 +01:00
Girish Ramakrishnan
f379724128
merge certificates.js and nginx.js to reverseproxy.js
...
when certs change, we have to call into nginx anyway. since they
go hand in hand, just merge those files. modern reverse proxies
do this job integrated already.
2018-01-30 12:26:09 -08:00