Commit Graph

9383 Commits

Author SHA1 Message Date
Girish Ramakrishnan 73a56830b0 apps: do not start redis when app is stopped
stopped apps stop the container and the services. a good reason to
not delete them is to keep the image around and it's quick to start up again.

only update is not allowed during the app is stopped (because the start.sh
cannot be run).

all other operations like cpu/memory/device/service changes/data dir/location change
are all allowed.
2025-06-14 21:03:10 +02:00
Girish Ramakrishnan d924f73ceb services: change restart policy to unless-stopped
when we stop an app, the service containers are stopped. they
start running again on reboot.

correct restart policy is "unless-stopped" for all the containers.
2025-06-14 17:51:35 +02:00
Girish Ramakrishnan c44926c2cd redis: disable by default when optional
this simply increases complexity of local setups since redis is
only used as a cache and not for persistent data
2025-06-14 10:40:48 +02:00
Girish Ramakrishnan 11a852d49c test: enablePop3 is now required 2025-06-14 09:17:46 +02:00
Girish Ramakrishnan 2b30f5591c docker: allow requests via libpod and skopeo 2025-06-14 09:17:46 +02:00
Johannes Zellner e6d8115e52 Allow to set enablePop3 when adding a mailbox 2025-06-13 17:38:55 +02:00
Johannes Zellner e898639168 Use error message from DigitalOcean if available 2025-06-13 16:02:27 +02:00
Girish Ramakrishnan ef9a17a28a appstore: make the features file readable 2025-06-13 10:50:04 +02:00
Johannes Zellner e496f4f3e2 Bring back demo login info 2025-06-13 09:35:16 +02:00
Girish Ramakrishnan 5d42439bf4 proxyauth: fix install 2025-06-13 02:05:04 +02:00
Girish Ramakrishnan b60681e9bd oidc: refactor the StorageAdapter 2025-06-13 02:05:01 +02:00
Girish Ramakrishnan 25684bf4f6 oidc: reload the login form if the interaction expires
use the error status which the oidc provider module returns
2025-06-13 00:47:45 +02:00
Girish Ramakrishnan f0c5b603ee oidc: some comments 2025-06-12 22:58:29 +02:00
Johannes Zellner b61b45177a Only access lastSubmission if it exists 2025-06-12 22:33:57 +02:00
Johannes Zellner afd19a7307 Optionally take id from data when adding an oidcClient
clients for apps use the app.id as the client id
2025-06-12 22:29:11 +02:00
Girish Ramakrishnan 155a348802 mongodb: reduce verbosity of logs 2025-06-12 22:27:57 +02:00
Girish Ramakrishnan a07d7ffdec profile: do not crash on invalid avatar id 2025-06-12 01:23:17 +02:00
Girish Ramakrishnan f48231e309 oidc: do not notify login of ghost users 2025-06-12 00:25:28 +02:00
Girish Ramakrishnan d24189e8aa oidc: refactor 2025-06-12 00:25:28 +02:00
Girish Ramakrishnan 5baa08eb0c oidc: use safe instead 2025-06-12 00:25:28 +02:00
Girish Ramakrishnan 95eb310a7f oidc: add notes on the flow 2025-06-12 00:25:28 +02:00
Girish Ramakrishnan d112d6308c move tokens.ID_ into oidcClients.ID_ 2025-06-12 00:25:28 +02:00
Girish Ramakrishnan 1ca8eeeb50 split oidc into server and clients 2025-06-11 22:26:23 +02:00
Girish Ramakrishnan 5824c8ffd0 oidc: inline the findAccount 2025-06-11 21:23:37 +02:00
Girish Ramakrishnan 8788867572 oidc: simplify revoke function 2025-06-11 21:23:37 +02:00
Girish Ramakrishnan f2193ff45c oidc: rename CloudronAdapter to StorageAdapter 2025-06-11 21:23:37 +02:00
Girish Ramakrishnan 1091142614 oidc: remove one level of indent by making provider global 2025-06-11 21:23:37 +02:00
Girish Ramakrishnan 059547e37c test: set FOREIGN_KEY_CHECKS=1 after clearing 2025-06-11 15:35:00 +02:00
Girish Ramakrishnan 6dc0e4f5c3 oidc: remove many of the comments
it's just distracting
2025-06-11 15:18:35 +02:00
Girish Ramakrishnan 8fc9685a1b test: make it work again 2025-06-11 15:14:15 +02:00
Girish Ramakrishnan 7744568eb8 apptask: rename command functions 2025-06-11 14:19:31 +02:00
Johannes Zellner af75060001 Reimplement fallback email dialog 2025-06-11 10:22:09 +02:00
Girish Ramakrishnan 7e036cc65f typo 2025-06-10 13:01:40 +02:00
Girish Ramakrishnan 7a083e7ce4 dashboard: check if new location conflicts with all possible app locations 2025-06-10 12:54:08 +02:00
Johannes Zellner c6aef98361 Use SQL commands instead of mysql cli to clear tables for test 2025-06-10 11:47:05 +02:00
Girish Ramakrishnan 639b7d9374 test: set req.resources earlier 2025-06-10 11:27:32 +02:00
Johannes Zellner 23f7c1522e Always start with default features 2025-06-10 11:08:17 +02:00
Johannes Zellner 2e4bc5e218 Start using req.resources = { app, volume, ...} pattern
Reason was that req.app was clashing with expressjs v5 which
stores the main expressjs app object there
2025-06-10 11:02:43 +02:00
Johannes Zellner a556237963 Ensure we start with a default features set if features file cannot be loaded/parsed 2025-06-10 09:34:15 +02:00
Girish Ramakrishnan ad4c88b535 Fix missing usage of safe() 2025-06-09 10:18:01 +02:00
Girish Ramakrishnan a93c85ebc9 profile: drop gravatar support
gravatar is owned by an external entity (Automattic) and we have an
unnecessary dep to this service. users can just upload a profile pic
2025-06-08 18:12:40 +02:00
Girish Ramakrishnan cd45046724 test: fix tasks test 2025-06-08 15:55:00 +02:00
Girish Ramakrishnan 344782099f add explicit unset for the image routes
the initial motivation was to fix up the profile avatar rule which
had a mix of json or multipart. this style does not work well with
express 5
2025-06-06 18:58:49 +02:00
Girish Ramakrishnan 4ffff84540 test: fix dockerproxy test 2025-06-06 18:07:03 +02:00
Girish Ramakrishnan dffa3b7986 do not mix multipart and json 2025-06-06 17:18:39 +02:00
Girish Ramakrishnan 0f7bc9be52 GET requests should not use json middleware 2025-06-06 17:18:39 +02:00
Girish Ramakrishnan 05fc8ed5db Fix crash with express 5
express.json does not enforce json. this means it will pass it through
but let req.body be undefined. this causes all our asserts to crash
2025-06-06 16:30:43 +02:00
Girish Ramakrishnan 74a8779c49 Fix oidc upgrade crash
they keys object format has changed
2025-06-06 16:23:11 +02:00
Girish Ramakrishnan 40631a753f Fix express 5 crashes 2025-06-06 16:23:07 +02:00
Girish Ramakrishnan 5cf266c5be test: fix nock usage
by default, nock intercepts and redirects everything to 127.0.0.1:80
this is regardless of any http request is mocked or not

nock.isActive() - is interceptor active
nock.restore() removes the interceptor
nock.activate() - enables interceptor again

nock.cleanAll() - deletes all mocks. nothing to do with interceptor
nock.activeMock() - to get the active mocks
nock.persist(true/false) - the mock will reply once and set isDone(). but you can persist(true)
2025-06-06 15:49:07 +02:00