Compare commits

...

7027 Commits

Author SHA1 Message Date
Girish Ramakrishnan
b0480f48f3 Add changes 2020-05-24 20:12:19 -07:00
Girish Ramakrishnan
2e820c343a remove meaningless debug 2020-05-24 20:11:03 -07:00
Girish Ramakrishnan
ce927a2247 Set dmode in tar extract 2020-05-24 20:08:17 -07:00
Girish Ramakrishnan
ae810d59e9 mail: fix crash in audit logs 2020-05-24 18:50:10 -07:00
Girish Ramakrishnan
1438ee52a1 import: fix crash because encryption is unset 2020-05-24 18:42:04 -07:00
Girish Ramakrishnan
de4b3e55fa Use apps.getAll so that app.fqdn is valid 2020-05-24 18:21:35 -07:00
Girish Ramakrishnan
d2cd78c5cb more debug() removal 2020-05-24 12:30:48 -07:00
Girish Ramakrishnan
d000719fa2 app health monitor is too verbose 2020-05-24 11:43:17 -07:00
Girish Ramakrishnan
efea4ed615 more debug() removal 2020-05-24 11:35:31 -07:00
Girish Ramakrishnan
67a931c4b8 Remove verbose logs 2020-05-24 11:33:53 -07:00
Girish Ramakrishnan
bdcc5c0629 Mbps -> MBps
Fixes #682
2020-05-23 13:31:23 -07:00
Girish Ramakrishnan
d113cfc0ba add comment on how often du value is stored 2020-05-22 20:06:45 -07:00
Girish Ramakrishnan
4a3ab50878 5.2.1 changes 2020-05-22 18:49:28 -07:00
Girish Ramakrishnan
b39261c8cf remove extra $ 2020-05-22 16:56:01 -07:00
Girish Ramakrishnan
7efb57c8da restart apps on addon container change
when the IP changes on addon container re-create, the apps don't
detect this (maybe there is some large DNS cache timeout in docker)
2020-05-22 16:45:03 -07:00
Girish Ramakrishnan
90c24cf356 add cleanup policy test 2020-05-21 14:30:21 -07:00
Girish Ramakrishnan
54abada561 backups: add progressCallback to cleanup funcs 2020-05-21 13:46:16 -07:00
Girish Ramakrishnan
f1922660be add a new line 2020-05-21 10:57:57 -07:00
Girish Ramakrishnan
795e3c57da Add a header for encrypted backup files
this is required to identify old backups and new backups for decryption
2020-05-20 22:44:26 -07:00
Girish Ramakrishnan
3f201464a5 Fix bug where SRS translation was done on the main domain instead of mailing list domain 2020-05-20 21:55:48 -07:00
Girish Ramakrishnan
8ac0be6bb5 Update postgresql for schema ownership fix 2020-05-20 16:44:32 -07:00
Johannes Zellner
130805e7bd Add changes 2020-05-19 14:59:28 +02:00
Girish Ramakrishnan
b8c7357fea redis: if container inactive, return stopped status 2020-05-18 14:43:23 -07:00
Girish Ramakrishnan
819f8e338f stop app now stops it's services as well 2020-05-18 14:33:07 -07:00
Girish Ramakrishnan
9569e46ff8 use docker.restart instead of start/stop since it is atomic 2020-05-18 13:35:42 -07:00
Girish Ramakrishnan
b7baab2d0f restore: set encryption to null 2020-05-18 09:07:18 -07:00
Girish Ramakrishnan
e2d284797d set HOME explicity when calling migrate script 2020-05-17 21:50:50 -07:00
Girish Ramakrishnan
a3ac343fe2 installer: print from and to versions 2020-05-17 21:34:39 -07:00
Girish Ramakrishnan
dadde96e41 remove login events from addons
more often then not this just spams the eventlog
2020-05-15 21:40:34 -07:00
Girish Ramakrishnan
99475c51e8 fix encryption of 0-length files 2020-05-15 16:05:12 -07:00
Girish Ramakrishnan
cc9b4e26b5 use done event to signal write success (just like in extract) 2020-05-15 15:24:12 -07:00
Girish Ramakrishnan
32f232d3c0 destroy input stream on error 2020-05-15 15:21:24 -07:00
Girish Ramakrishnan
235047ad0b bind to source stream error event immediately
download() is async and the source stream error is missed
2020-05-15 14:54:05 -07:00
Girish Ramakrishnan
228f75de0b better error messages 2020-05-15 14:35:19 -07:00
Girish Ramakrishnan
2f89e7e2b4 drop NET_RAW since this allows packet sniffing
this however breaks ping
2020-05-15 12:47:36 -07:00
Girish Ramakrishnan
437f39deb3 More changes 2020-05-15 09:16:24 -07:00
Girish Ramakrishnan
59582f16c4 skip validation in the route 2020-05-14 21:45:13 -07:00
Girish Ramakrishnan
af9e3e38ce apply backup retention policy
part of #441
2020-05-14 21:31:24 -07:00
Girish Ramakrishnan
d992702b87 rename to keepWithinSecs
part of #441
2020-05-14 16:45:28 -07:00
Girish Ramakrishnan
6a9fe1128f move retentionSecs inside retentionPolicy
part of #441
2020-05-14 16:33:29 -07:00
Johannes Zellner
573da29a4d Once upon a time where settings worked 2020-05-14 23:35:03 +02:00
Johannes Zellner
00cff1a728 Mention that SECRET_PLACEHOLDER is also used in dashboard client.js 2020-05-14 23:04:08 +02:00
Johannes Zellner
9bdeff0a39 Always use constants.SECRET_PLACEHOLDER 2020-05-14 23:02:02 +02:00
Girish Ramakrishnan
a1f263c048 stash the backup password in filesystem for safety
we will add a release note asking the user to nuke it
2020-05-14 12:59:37 -07:00
Girish Ramakrishnan
346eac389c bind ui is hidden for this release 2020-05-14 11:57:12 -07:00
Johannes Zellner
f52c16b209 Ensure encryption property on backup config always exists 2020-05-14 20:22:10 +02:00
Girish Ramakrishnan
4faf880aa4 Fix crash with unencrypted backups 2020-05-14 11:18:41 -07:00
Girish Ramakrishnan
f417a49b34 Add encryptionVersion to backups
this will identify the old style backups and warn user that a restore
doesn't work anymore
2020-05-13 22:37:02 -07:00
Girish Ramakrishnan
66fd713d12 rename version to packageVersion 2020-05-13 21:55:50 -07:00
Girish Ramakrishnan
2e7630f97e remove stale logs 2020-05-13 19:23:04 -07:00
Girish Ramakrishnan
3f10524532 cleanup cache file to start encrypted rsync backups afresh 2020-05-13 16:35:13 -07:00
Johannes Zellner
51f9826918 Strip quotes for TXT records on name.com
The docs and support claim quotes are needed, but the actual API usage
shows otherwise. We do this to not break users, but ideally name.com
gives a correct and clear answer
2020-05-14 01:03:10 +02:00
Girish Ramakrishnan
f5bb76333b do hmac validation on filename iv as well
also, pass encryption object instead of config
2020-05-13 10:11:07 -07:00
Girish Ramakrishnan
4947faa5ca update mail container 2020-05-12 23:19:31 -07:00
Girish Ramakrishnan
101dc3a93c s3: do not retry when testing config 2020-05-12 22:45:01 -07:00
Girish Ramakrishnan
bd3ee0fa24 add changes 2020-05-12 22:00:05 -07:00
Girish Ramakrishnan
2c52668a74 remove format validation in provider config 2020-05-12 22:00:01 -07:00
Girish Ramakrishnan
03edd8c96b remove max_old_space_size
we have limited understanding of this option
2020-05-12 20:14:35 -07:00
Girish Ramakrishnan
37dfa41e01 Add hmac to the file data
https://stackoverflow.com/questions/10279403/confused-how-to-use-aes-and-hmac
https://en.wikipedia.org/wiki/Padding_oracle_attack

part of #579
2020-05-12 19:59:06 -07:00
Girish Ramakrishnan
ea8a3d798e create encryption keys from password during app import & restore 2020-05-12 15:53:18 -07:00
Girish Ramakrishnan
1df94fd84d backups: generate keys from password
this also removes storage of password from db

part of #579
2020-05-12 15:14:51 -07:00
Girish Ramakrishnan
5af957dc9c add changes
part of #579
2020-05-12 10:56:07 -07:00
Girish Ramakrishnan
21073c627e rename backup key to password
Fixes #579
2020-05-12 10:55:10 -07:00
Girish Ramakrishnan
66cdba9c1a remove chat link in readme 2020-05-12 10:21:21 -07:00
Girish Ramakrishnan
56d3b38ce6 read/write iv in the encrypted files
part of #579
2020-05-11 22:35:25 -07:00
Girish Ramakrishnan
15d0275045 key must atleast be 8 chars
part of #579
2020-05-11 16:11:41 -07:00
Girish Ramakrishnan
991c1a0137 check if manifest property is present in network response 2020-05-11 14:52:55 -07:00
Girish Ramakrishnan
7d549dbbd5 logrotate: add some comments 2020-05-11 14:38:50 -07:00
Johannes Zellner
e27c5583bb Apps without dockerImage cannot be auto-updated 2020-05-11 23:20:17 +02:00
Girish Ramakrishnan
650c49637f logrotate: Add turn service logs 2020-05-11 13:14:52 -07:00
Girish Ramakrishnan
eb5dcf1c3e typo 2020-05-11 11:58:14 -07:00
Girish Ramakrishnan
ed2b61b709 Add to changes 2020-05-10 15:35:06 -07:00
Girish Ramakrishnan
41466a3018 No need to poll every hour for updates! 2020-05-06 18:58:35 -07:00
Girish Ramakrishnan
2e130ef99d Add automatic flag for update checks
The appstore can then known if a user clicked the check for updates
button manually or if it was done by the automatic updater.

We will fix appstore so that updates are always provided for manual checks.
automatic updates will follow our roll out plan.

We do have one issue that the automatic update checker will reset the manual
updates when it runs, but this is OK.
2020-05-06 18:57:59 -07:00
Girish Ramakrishnan
a96fb39a82 mail relay: fix delivery event log 2020-05-05 20:34:45 -07:00
Girish Ramakrishnan
c9923c8d4b spam: large emails were not scanned 2020-05-05 15:23:27 -07:00
Girish Ramakrishnan
74b0ff338b Disallow cloudtorrent in demo mode 2020-05-04 14:56:10 -07:00
Girish Ramakrishnan
dcaccc2d7a add redis status
part of #671
2020-05-03 19:46:07 -07:00
Johannes Zellner
d60714e4e6 Use webmaster@ instead of support@ as LetsEncrypt fallback 2020-05-03 11:02:18 +02:00
Girish Ramakrishnan
d513d5d887 appstore: Better error messages 2020-05-02 18:30:44 -07:00
Girish Ramakrishnan
386566fd4b Fcf: ix crash when no email provide with global key 2020-05-02 18:06:21 -07:00
Girish Ramakrishnan
3357ca76fe specify the invalid bind name in error message 2020-05-02 11:07:58 -07:00
Girish Ramakrishnan
a183ce13ee put the status code in the error message 2020-04-30 09:24:22 -07:00
Girish Ramakrishnan
e9d0ed8e1e Add binds support to containers 2020-04-29 22:51:46 -07:00
Girish Ramakrishnan
66f66fd14f docker: clean up volume API 2020-04-29 21:28:49 -07:00
Girish Ramakrishnan
b49d30b477 Add OVH Object Storage backend 2020-04-29 12:47:57 -07:00
Girish Ramakrishnan
73d83ec57e Ensure stopped apps are getting backed up 2020-04-29 12:05:01 -07:00
Girish Ramakrishnan
efb39fb24b refactor for addon/service/container consistency
addon - app manifest thing. part of app lifecycle
services - implementation of addon (may have containers assoc)
2020-04-28 15:32:02 -07:00
Girish Ramakrishnan
73623f2e92 add serviceConfig to appdb
part of #671
2020-04-28 15:31:58 -07:00
Girish Ramakrishnan
fbcc4cfa50 Rename KNOWN_ADDONS to ADDONS 2020-04-27 22:59:35 -07:00
Girish Ramakrishnan
474a3548e0 Rename KNOWN_SERVICES to SERVICES 2020-04-27 22:59:11 -07:00
Girish Ramakrishnan
2cdf68379b Revert "add volume support"
This reverts commit b8bb69f730.

Revert this for now, we will try a simpler non-object volume first
2020-04-27 22:55:43 -07:00
Girish Ramakrishnan
cc8509f8eb More 5.2 changes 2020-04-26 22:28:43 -07:00
Girish Ramakrishnan
a520c1b1cb Update all docker images to use base image 2.0.0 2020-04-26 17:09:31 -07:00
Girish Ramakrishnan
75fc2cbcfb Update base image 2020-04-25 10:37:08 -07:00
Girish Ramakrishnan
b8bb69f730 add volume support
part of #668, #569
2020-04-24 22:09:07 -07:00
Girish Ramakrishnan
b46d3e74d6 Fix crash in cloudflare error handling 2020-04-23 12:07:54 -07:00
Girish Ramakrishnan
77a1613107 test: fix alias routes 2020-04-22 18:16:33 -07:00
Girish Ramakrishnan
62fab7b09f mail: allow alternate mx 2020-04-22 17:36:34 -07:00
Johannes Zellner
5d87352b28 backupId cannot be null during restore 2020-04-21 16:00:19 +02:00
Girish Ramakrishnan
ff60f5a381 move aliases route under mailbox
since aliases can now span domains

fixes #577
2020-04-20 19:17:55 -07:00
Girish Ramakrishnan
7f666d9369 mail: implement aliases across domains
part of #577
2020-04-20 15:19:48 -07:00
Girish Ramakrishnan
442f16dbd0 more changes 2020-04-18 22:56:38 -07:00
Girish Ramakrishnan
2dcab77ed1 Fix issue where app with oauth addon will not backup or uninstall 2020-04-18 10:08:20 -07:00
Girish Ramakrishnan
13be04a169 Deny non-member email immediately 2020-04-18 02:51:31 -07:00
Girish Ramakrishnan
e3767c3a54 remove obsolete isadmin flag 2020-04-18 02:32:17 -07:00
Girish Ramakrishnan
ce957c8dd5 update mail container 2020-04-18 02:31:59 -07:00
Girish Ramakrishnan
0606b2994c add membersOnly flag to a mailing list 2020-04-17 17:44:14 -07:00
Girish Ramakrishnan
33acccbaaa only check the p key for dkim
this less-strict DKIM check allows users to set a stronger DKIM key
2020-04-17 12:45:21 -07:00
Girish Ramakrishnan
1e097abe86 Add note on dkim key length 2020-04-17 10:29:14 -07:00
Girish Ramakrishnan
e51705c41d acme: request ECC certs 2020-04-17 10:22:01 -07:00
Girish Ramakrishnan
7eafa661fe check .well-known presence upstream
this is required for apps like nextcloud which have caldav/cardav
routes
2020-04-15 16:56:41 -07:00
Girish Ramakrishnan
2fe323e587 remove bogus internal route 2020-04-14 23:11:44 -07:00
Girish Ramakrishnan
4e608d04dc 5.1.4 changes 2020-04-11 18:45:39 -07:00
Girish Ramakrishnan
531d314e25 Show error message if gpg failed 2020-04-11 17:11:55 -07:00
Girish Ramakrishnan
1ab23d2902 fix indexOf value comparison 2020-04-11 14:21:05 -07:00
Girish Ramakrishnan
b3496e1354 Add ECDHE-RSA-AES128-SHA256 to cipher list
one of our users had the site reverse proxied. it broke after the
5.1 cipher change and they nailed it down to using this cipher.

https://security.stackexchange.com/questions/72926/is-tls-ecdhe-rsa-with-aes-128-cbc-sha256-a-safe-cipher-suite-to-use
says this is safe

The following prints the cipher suite:

    log_format combined2 '$remote_addr - [$time_local] '
        '$ssl_protocol/$ssl_cipher '
        '"$request" $status $body_bytes_sent $request_time '
        '"$http_referer" "$host" "$http_user_agent"';
2020-04-10 09:49:06 -07:00
Girish Ramakrishnan
2efa0aaca4 serve custom well-known documents via nginx 2020-04-09 00:15:56 -07:00
Girish Ramakrishnan
ef9aeb0772 Bump default version for tests 2020-04-08 14:24:58 -07:00
Girish Ramakrishnan
924a0136eb 5.1.3 changes 2020-04-08 13:52:53 -07:00
Girish Ramakrishnan
c382fc375e Set the resetTokenCreationTime in invitation links 2020-04-08 13:11:24 -07:00
Girish Ramakrishnan
2544acddfa Fix crash with misconfigured reverse proxy
https://forum.cloudron.io/topic/2288/mastodon-terminal-not-starting
2020-04-08 09:43:43 -07:00
Johannes Zellner
58072892d6 Add 5.1.2 changes 2020-04-08 11:52:32 +02:00
Johannes Zellner
85a897c78c Remove console.log debug leftover 2020-04-08 11:48:12 +02:00
Girish Ramakrishnan
6adf5772d8 update turn config to prevent internal access
https://www.rtcsec.com/2020/04/01-slack-webrtc-turn-compromise/
2020-04-07 15:37:31 -07:00
Girish Ramakrishnan
f98e3b1960 more 5.1.1 changes 2020-04-03 10:41:37 -07:00
Johannes Zellner
671a967e35 Add 5.1.1 changes 2020-04-03 13:33:03 +02:00
Johannes Zellner
950ef0074f Add libcurl3-gnutls as explicit dependency 2020-04-03 09:45:03 +02:00
Girish Ramakrishnan
5515324fd4 coturn -> turn in docker repo name 2020-04-02 19:51:14 -07:00
Girish Ramakrishnan
e72622ed4f Fix crash during auto-update 2020-04-02 19:47:29 -07:00
Girish Ramakrishnan
e821733a58 add note on exposed ports 2020-04-02 18:09:26 -07:00
Girish Ramakrishnan
a03c0e4475 mail: disable hostname validation 2020-04-02 15:00:11 -07:00
Girish Ramakrishnan
3203821546 typo 2020-04-02 12:29:20 -07:00
Girish Ramakrishnan
16f3cee5c5 install custom nginx only on xenial
https://nginx.org/en/linux_packages.html#Ubuntu
http://nginx.org/packages/ubuntu/pool/nginx/n/nginx/
2020-04-02 11:54:22 -07:00
Johannes Zellner
57afb46cbd Ensure nginx installation will not overwrite our conf files 2020-04-02 16:57:55 +02:00
Johannes Zellner
91dde5147a add-apt-repository does not call apt-get update 2020-04-02 13:54:39 +02:00
Johannes Zellner
d0692f7379 Ensure we have latest nginx 2020-04-02 12:37:02 +02:00
Girish Ramakrishnan
e360658c6e More changes 2020-04-01 17:00:01 -07:00
Girish Ramakrishnan
e7dc77e6de bump mail container for mailbox size fix 2020-04-01 16:31:07 -07:00
Girish Ramakrishnan
e240a8b58f add comment on the struct 2020-04-01 16:26:16 -07:00
Girish Ramakrishnan
38d4f2c27b Add note on what df output is 2020-04-01 15:59:48 -07:00
Girish Ramakrishnan
552e2a036c Use block size instead of apparent size in du
https://stackoverflow.com/questions/5694741/why-is-the-output-of-du-often-so-different-from-du-b

df uses superblock info to get consumed blocks/disk size. du with -b
prints actual file size instead of the disk space used by the files.
2020-04-01 15:24:53 -07:00
Johannes Zellner
2d4b978032 It will be 5.1.0 2020-04-01 22:30:50 +02:00
Johannes Zellner
36e00f0c84 We will release a 5.0.7 patch release first 2020-04-01 22:26:23 +02:00
Johannes Zellner
ef64b2b945 Use coturn addon tag 1.0.0 2020-04-01 21:50:21 +02:00
Johannes Zellner
f6cd33ae24 Set turn secret for apps 2020-04-01 21:50:09 +02:00
Girish Ramakrishnan
dd109f149f mail: fix eventlog db perms 2020-04-01 12:24:54 -07:00
Girish Ramakrishnan
5b62d63463 clear mailbox on update and restore
part of #669
2020-03-31 17:51:27 -07:00
Girish Ramakrishnan
3fec599c0c remove mail domain add/remove API
merge this as a transaction into domains API

fixes #669
2020-03-31 14:48:19 -07:00
Girish Ramakrishnan
e30ea9f143 make mailbox domain nullable
for apps that do not use sendmail/recvmail addon, these are now null.
otherwise, there is no way to edit the mailbox in the UI

part of #669
2020-03-31 11:26:19 -07:00
Johannes Zellner
7cb0c31c59 Also restart turn server on dashboard domain change 2020-03-31 14:52:09 +02:00
Johannes Zellner
b00a7e3cbb Update turn addon 2020-03-31 10:55:41 +02:00
Johannes Zellner
e63446ffa2 Support persistent turn secret 2020-03-31 09:28:57 +02:00
Girish Ramakrishnan
580da19bc2 Less strict dmarc validation
fixes #666
2020-03-30 19:32:25 -07:00
Girish Ramakrishnan
936f456cec make reset tokens only valid for a day
fixes #563

mysql timestamps cannot be null. it will become current timestamp when
set as null
2020-03-30 17:13:31 -07:00
Girish Ramakrishnan
5d6a02f73c mysql: create the my.cnf in run time dir 2020-03-30 16:32:54 -07:00
Girish Ramakrishnan
b345195ea9 add missing fields in users table 2020-03-30 16:32:28 -07:00
Girish Ramakrishnan
3e6b66751c typoe in assert 2020-03-30 15:17:34 -07:00
Johannes Zellner
f78571e46d Support reserved port ranges 2020-03-30 10:01:52 +02:00
Johannes Zellner
f52000958c Update manifest format to 5.1.1 2020-03-30 08:43:28 +02:00
Johannes Zellner
5ac9c6ce02 add turn,stun ports to RESERVED ones
We still need to protect the TURN port range
2020-03-30 08:30:06 +02:00
Johannes Zellner
1110a67483 Add turn addon setup and teardown calls 2020-03-30 08:24:52 +02:00
Girish Ramakrishnan
57bb1280f8 better error message 2020-03-29 20:12:59 -07:00
Girish Ramakrishnan
25c000599f Fix assert (appStoreId is optional) 2020-03-29 19:12:07 -07:00
Girish Ramakrishnan
86f45e2769 Fix failing test 2020-03-29 18:55:44 -07:00
Girish Ramakrishnan
7110240e73 Only a Cloudron owner can install/update/exec apps with the docker addon
this should have been part of f1975d8f2b
2020-03-29 18:52:37 -07:00
Girish Ramakrishnan
1da37b66d8 use resource pattern in apps routes
this makes it easy to implement access control in route handlers
2020-03-29 17:11:10 -07:00
Girish Ramakrishnan
f1975d8f2b only owner can install/repair/update/exec docker addon apps 2020-03-29 16:24:04 -07:00
Girish Ramakrishnan
f407ce734a restrict the app to bind mount under /app/data only
rest have to be volumes
2020-03-29 13:57:45 -07:00
Girish Ramakrishnan
f813cfa8db Listen only on the docker interface 2020-03-29 13:11:16 -07:00
Girish Ramakrishnan
d5880cb953 TODO block is obsolete 2020-03-29 13:10:19 -07:00
Girish Ramakrishnan
95da9744c1 Prefix env vars with CLOUDRON_ 2020-03-29 09:35:34 -07:00
Girish Ramakrishnan
85c3e45cde remove oauth addon code 2020-03-29 09:35:34 -07:00
Johannes Zellner
520a396ded Use turn server with certificates 2020-03-29 09:32:48 +02:00
Johannes Zellner
13ad611c96 Remove ssh related settings from the turn container config 2020-03-29 09:32:48 +02:00
Girish Ramakrishnan
85f58d9681 more changes 2020-03-28 23:10:17 -07:00
Johannes Zellner
c1de62acef Update coturn 2020-03-29 07:30:42 +02:00
Johannes Zellner
7e47e36773 Fix portrange notation in firewall service 2020-03-29 07:25:36 +02:00
Johannes Zellner
00b6217cab Fix turn tls port 2020-03-29 07:09:17 +02:00
Girish Ramakrishnan
acc2b5a1a3 remove unused param 2020-03-28 22:05:43 -07:00
Girish Ramakrishnan
b06feaa36b more changes 2020-03-28 17:48:55 -07:00
Johannes Zellner
89cf8a455a Allow turn and stun service ports 2020-03-28 23:33:44 +01:00
Johannes Zellner
710046a94f Add coturn addon service 2020-03-28 22:46:32 +01:00
Johannes Zellner
b366b0fa6a Stop container with isCloudronManged labels instead of by network 2020-03-28 22:46:32 +01:00
Girish Ramakrishnan
f9e7a8207a cloudron-support: make it --owner-login 2020-03-27 18:58:12 -07:00
Johannes Zellner
6178bf3d4b Update sftp addon 2020-03-27 14:54:35 +01:00
Girish Ramakrishnan
f3b979f112 More 5.0.6 changelog 2020-03-26 21:56:18 -07:00
Girish Ramakrishnan
9faae96d61 make app password work with sftp 2020-03-26 21:50:25 -07:00
Girish Ramakrishnan
2135fe5dd0 5.0.6 changelog
(cherry picked from commit 3c1a1f1b81)
2020-03-26 19:32:58 -07:00
Girish Ramakrishnan
007a8d248d make eventlog routes owner only 2020-03-26 18:54:16 -07:00
Girish Ramakrishnan
58d4a3455b email: add type filter to eventlog 2020-03-25 22:05:49 -07:00
Girish Ramakrishnan
8e3c14f245 5.0.5 changes
(cherry picked from commit cc6ddf50b1)
2020-03-25 08:13:38 -07:00
Girish Ramakrishnan
91af2495a6 Make key validation work for ecc certs 2020-03-24 21:20:21 -07:00
Girish Ramakrishnan
7d7df5247b Update cipher suite based on ssl-config recommendation
ssl_prefer_server_ciphers off is the recommendation since the cpihers
are deprecated

https://serverfault.com/questions/997614/setting-ssl-prefer-server-ciphers-directive-in-nginx-config
2020-03-24 19:24:58 -07:00
Girish Ramakrishnan
f99450d264 Enable TLSv1.3 and remove TLSv1 and 1.1
IE10 does not have 1.2, so maybe we can risk it

As per Android documentaion TLS 1.2 is fully supported after API level 20/Android 5(Lolipop)

https://discussions.qualys.com/thread/17020-tls-12-support-for-android-devices
https://www.ryandesignstudio.com/what-is-tls/
2020-03-24 14:37:08 -07:00
Girish Ramakrishnan
d3eeb5f48a mail: disable host and proto mismatch 2020-03-24 11:50:52 -07:00
Girish Ramakrishnan
1e8a02f91a Make token expiry a year
we now have a UI to invalid all tokens easily, so this should be OK.
2020-03-23 21:51:13 -07:00
Girish Ramakrishnan
97c3bd8b8e mail: incoming mail from dynamic hostnames was rejected 2020-03-23 21:50:36 -07:00
Girish Ramakrishnan
09ce27d74b bump default token expiry to a month 2020-03-21 18:46:38 -07:00
Girish Ramakrishnan
2447e91a9f mail: throttle denied events 2020-03-20 14:04:16 -07:00
Girish Ramakrishnan
e6d881b75d Use owner email for LE certs
https://forum.cloudron.io/topic/2244/email-contact-on-let-s-encrypt-ssl-tls-certificates-uses-password-recovery-email-rather-than-primary-email-address
2020-03-20 13:39:58 -07:00
Girish Ramakrishnan
36f963dce8 remove unncessary debug in routes 2020-03-19 17:05:31 -07:00
Girish Ramakrishnan
1b15d28212 eventlog: add start/stop/restart logs 2020-03-19 17:02:55 -07:00
Girish Ramakrishnan
4e0c15e102 use short form syntax 2020-03-19 16:48:31 -07:00
Girish Ramakrishnan
c9e40f59de bump the timeout for really slow disks 2020-03-19 13:33:53 -07:00
Girish Ramakrishnan
38cf31885c Make backup configure owner only 2020-03-18 17:23:23 -07:00
Girish Ramakrishnan
4420470242 comcast does not allow port 25 check anymore 2020-03-17 13:55:35 -07:00
Girish Ramakrishnan
9b05786615 appstore: add whitelist/blacklist 2020-03-15 17:20:48 -07:00
Girish Ramakrishnan
725b2c81ee custom.yml is obsolete 2020-03-15 16:50:42 -07:00
Girish Ramakrishnan
661965f2e0 Add branding tests 2020-03-15 16:38:15 -07:00
Girish Ramakrishnan
7e0ef60305 Fix incorrect role comparison 2020-03-15 16:19:22 -07:00
Girish Ramakrishnan
2ac0fe21c6 ghost file depends on base dir 2020-03-15 11:41:39 -07:00
Girish Ramakrishnan
b997f2329d make branding route for owner only 2020-03-15 11:39:02 -07:00
Girish Ramakrishnan
23ee758ac9 do not check for updates for stopped apps 2020-03-15 09:48:08 -07:00
Girish Ramakrishnan
9ea12e71f0 linode: dns backend
the dns is very slow - https://github.com/certbot/certbot/pull/6320
takes a good 15 minutes at minimum to propagate

https://certbot-dns-linode.readthedocs.io/en/stable/
https://www.linode.com/community/questions/17296/linode-dns-propagation-time
2020-03-13 11:44:43 -07:00
Girish Ramakrishnan
d3594c2dd6 change ownership of ghost file for good measure 2020-03-12 10:30:51 -07:00
Girish Ramakrishnan
6ee4b0da27 Move out ghost file to platformdata
Since /tmp is world writable this might cause privilege escalation

https://forum.cloudron.io/topic/2222/impersonate-user-privilege-escalation
2020-03-12 10:24:21 -07:00
Girish Ramakrishnan
3e66feb514 mail: add mailbox acl 2020-03-10 22:12:15 -07:00
Girish Ramakrishnan
cd91a5ef64 5.0.3 changes 2020-03-10 17:18:21 -07:00
Girish Ramakrishnan
cf89609633 mail: acl was enabled by mistake 2020-03-10 17:15:23 -07:00
Girish Ramakrishnan
67c24c1282 mail: make spamd_user case insensitive 2020-03-10 12:08:43 -07:00
Girish Ramakrishnan
7d3df3c55f Fix sa usage 2020-03-10 09:22:41 -07:00
Girish Ramakrishnan
dfe5cec46f Show the public IP to finish setup 2020-03-09 15:18:39 -07:00
Girish Ramakrishnan
17c881da47 Fix spam training 2020-03-09 13:51:17 -07:00
Girish Ramakrishnan
6e30c4917c Do not wait for dns when re-configured 2020-03-09 12:36:29 -07:00
Girish Ramakrishnan
c6d4f0d2f0 mail: fix word boundary regexp 2020-03-07 19:16:10 -08:00
Girish Ramakrishnan
b32128bebf Fix quoting in emails 2020-03-07 19:12:39 -08:00
Girish Ramakrishnan
a3f3d86908 More spam fixes 2020-03-07 18:52:20 -08:00
Girish Ramakrishnan
b29c82087a Bump the mail container version 2020-03-07 17:08:35 -08:00
Johannes Zellner
657beda7c9 Copy 5.0.0 changes for 5.0.1 2020-03-07 16:56:40 -08:00
Girish Ramakrishnan
b4f5ecb304 mail: fix eventlog search 2020-03-07 15:56:56 -08:00
Girish Ramakrishnan
3dabad5e91 Detect that domain is in use by app correctly 2020-03-07 14:52:34 -08:00
Johannes Zellner
890b46836b Do not allow lower level roles to edit higher level ones 2020-03-07 13:53:01 -08:00
Girish Ramakrishnan
835b3224c6 disable getting user token in demo mode 2020-03-07 11:44:38 -08:00
Girish Ramakrishnan
f8d27f3139 mail: Fix ownership issue with /app/data 2020-03-07 11:40:49 -08:00
Girish Ramakrishnan
33f263ebb9 Fix spamd logs 2020-03-07 01:00:08 -08:00
Girish Ramakrishnan
027925c0ba Only do spam processing when we have incoming domains 2020-03-07 00:22:00 -08:00
Girish Ramakrishnan
17c4819d41 eventlog updates 2020-03-06 23:16:32 -08:00
Johannes Zellner
017d19a8c8 Do not send internal link for update notification 2020-03-06 19:18:01 -08:00
Girish Ramakrishnan
46b6e319f5 add some spacing in the footer 2020-03-06 19:13:37 -08:00
Johannes Zellner
8f087e1c30 Take default footer from constants and keep settingsdb pristine 2020-03-06 18:08:26 -08:00
Johannes Zellner
c3fc0e83a8 Optimize collectd restart to be skipped if profile hasn't actually changed 2020-03-06 17:44:31 -08:00
Johannes Zellner
7ed0ef7b37 Ensure collectd backup config on startup 2020-03-06 17:44:31 -08:00
Girish Ramakrishnan
46ede3d60d search for request_uri in try_files
this lets us put images in app_not_responding.html
2020-03-06 17:01:48 -08:00
Girish Ramakrishnan
7a63fd4711 Failed quickly if docker image not found 2020-03-06 16:39:20 -08:00
Girish Ramakrishnan
65f573b773 mail container update 2020-03-06 16:11:52 -08:00
Johannes Zellner
afa2fe8177 Improve role add/edit error message 2020-03-06 13:16:50 -08:00
Girish Ramakrishnan
ad72a8a929 Add comment 2020-03-06 13:05:31 -08:00
Johannes Zellner
a7b00bad63 Fixup status code typo 2020-03-06 11:59:31 -08:00
Johannes Zellner
85fd74135c Bring back legacy ldap mailbox search for old sogo 2020-03-06 11:48:51 -08:00
Girish Ramakrishnan
970ccf1ddb send footer in status route
required for login screen to be customized
2020-03-06 01:16:48 -08:00
Johannes Zellner
b237eb03f6 Add support feature flag 2020-03-06 01:08:45 -08:00
Girish Ramakrishnan
a569294f86 Better changelog 2020-03-06 01:03:52 -08:00
Johannes Zellner
16f85a23d2 Clear reboot notification if reboot is triggered 2020-03-06 00:49:00 -08:00
Johannes Zellner
fcee8aa5f3 Improve LDAP mailbox searches to better suit sogo 2020-03-06 00:48:41 -08:00
Johannes Zellner
d85eabce02 Update reboot required notification text 2020-03-05 21:01:15 -08:00
Johannes Zellner
de23d1aa03 Do not allow to set active flag for the operating user 2020-03-05 21:00:59 -08:00
Johannes Zellner
1766bc6ee3 For now we enable all features 2020-03-05 13:37:07 -08:00
Girish Ramakrishnan
c1801d6e71 Add linode-oneclick provider 2020-03-05 11:25:43 -08:00
Girish Ramakrishnan
64844045ca mail: various pam related fixes 2020-03-04 15:00:37 -08:00
Girish Ramakrishnan
e90da46967 spam: add default corpus and global db 2020-03-02 21:45:48 -08:00
Girish Ramakrishnan
d10957d6df remove galaxygate from cloudron-setup help 2020-02-28 11:14:06 -08:00
Girish Ramakrishnan
50dc90d7ae remove galaxygate 2020-02-28 11:13:44 -08:00
Johannes Zellner
663bedfe39 Sync default features 2020-02-28 15:18:16 +01:00
Girish Ramakrishnan
ce9834757e restore: carefully replace backup config
do not replace the backup policy and other flags
2020-02-27 12:38:37 -08:00
Girish Ramakrishnan
cc932328ff fix comment 2020-02-27 10:36:35 -08:00
Girish Ramakrishnan
4ebe143a98 improve the error message on domain removal 2020-02-27 10:12:39 -08:00
Johannes Zellner
82aff74fc2 Make app passwords stronger 2020-02-27 13:07:01 +01:00
Girish Ramakrishnan
6adc099455 Fix crash 2020-02-26 15:49:41 -08:00
Girish Ramakrishnan
35efc8c650 add linode objectstorage backend 2020-02-26 09:08:30 -08:00
Girish Ramakrishnan
3f63d79905 Fixup version of next release 2020-02-26 09:01:48 -08:00
Girish Ramakrishnan
00096f4dcd fix comment 2020-02-26 09:01:35 -08:00
Girish Ramakrishnan
c3e0d9086e cloudron-support: backups and appsdata can be empty 2020-02-24 14:12:25 -08:00
Girish Ramakrishnan
f1dfe3c7e8 mail: Fix crash when determining usage 2020-02-24 11:45:17 -08:00
Johannes Zellner
6f96ff790f Groups are part of user manager role 2020-02-24 17:49:22 +01:00
Johannes Zellner
ccb218f243 setPassword wants the full user object 2020-02-24 13:21:17 +01:00
Girish Ramakrishnan
9ac194bbea fix missing quote in debug message 2020-02-23 11:15:30 -08:00
Girish Ramakrishnan
0191907ce2 mail: use limit plugin instead of rcpt_to.max_count 2020-02-23 11:15:30 -08:00
Johannes Zellner
e80069625b Fix typo in migration script 2020-02-22 15:26:16 +01:00
Girish Ramakrishnan
0e156b9376 migrate permissions and admin flag to user.role 2020-02-21 16:49:20 -08:00
Johannes Zellner
a8f1b0241e Add route to obtain an appstore accessToken 2020-02-21 12:34:54 +01:00
Girish Ramakrishnan
6715cf23d7 Add mail usage info 2020-02-20 12:09:06 -08:00
Girish Ramakrishnan
82a173f7d8 proxy requests to mail server 2020-02-20 10:10:34 -08:00
Johannes Zellner
857504c409 Add function to retrieve appstore user access token 2020-02-20 17:05:07 +01:00
Johannes Zellner
4b4586c1e5 Get features from the appstore 2020-02-20 16:04:22 +01:00
Girish Ramakrishnan
6679fe47df mail: add X-Envelope-From/To headers 2020-02-19 22:14:23 -08:00
Girish Ramakrishnan
e7a98025a2 disable update of domain in demo mode
we removed the locked flag, so we have to add this check
2020-02-19 10:45:55 -08:00
Girish Ramakrishnan
2870f24bec mail eventlog: add remote info 2020-02-18 21:31:28 -08:00
Girish Ramakrishnan
037440034b Move collectd logs to platformdata and rotate it 2020-02-18 20:36:50 -08:00
Johannes Zellner
15cc1f92e3 Fix typo 2020-02-17 13:47:21 +01:00
Girish Ramakrishnan
00c6ad675e add usermanager tests 2020-02-14 14:34:29 -08:00
Girish Ramakrishnan
655a740b0c split tests into various sections 2020-02-14 14:04:51 -08:00
Girish Ramakrishnan
028852740d Make users-test work 2020-02-14 13:23:17 -08:00
Johannes Zellner
c8000fdf90 Fix the features selection 2020-02-14 15:21:56 +01:00
Johannes Zellner
995e56d7e4 Also grant education and contributor subscriptions all features 2020-02-14 15:13:21 +01:00
Johannes Zellner
c20d3b62b0 Determin features based on subscription and cloudron creation 2020-02-14 15:07:25 +01:00
Girish Ramakrishnan
c537dfabb2 add manage user permission 2020-02-13 22:49:58 -08:00
Girish Ramakrishnan
11b5304cb9 userdb: only pass specific fields to update 2020-02-13 22:45:14 -08:00
Girish Ramakrishnan
fd8abbe2ab remove ROLE_USER
every authenticated user has ROLE_USER. So, this role is superfluous
2020-02-13 21:53:57 -08:00
Girish Ramakrishnan
25d871860d domains: remove locked field
we will do this as part of access control if needed later
2020-02-13 21:16:46 -08:00
Girish Ramakrishnan
d1911be28c user: load the resource with middleware 2020-02-13 20:59:17 -08:00
Girish Ramakrishnan
938ca6402c mail: add search param 2020-02-13 09:08:47 -08:00
Johannes Zellner
0aaecf6e46 Cannot use Infinity 2020-02-13 17:09:28 +01:00
Johannes Zellner
b06d84984b Add features to config object 2020-02-13 16:34:29 +01:00
Girish Ramakrishnan
51b50688e4 mail eventlog: fix bounce event 2020-02-12 23:33:43 -08:00
Girish Ramakrishnan
066d7ab972 Update mail container 2020-02-12 22:11:11 -08:00
Girish Ramakrishnan
e092074d77 2020 is unused 2020-02-11 22:12:34 -08:00
Girish Ramakrishnan
83bdcb8cc4 remove unused domain stats route 2020-02-11 22:10:57 -08:00
Girish Ramakrishnan
f80f40cbcd repair: take optional docker image for re-configure 2020-02-11 21:05:01 -08:00
Girish Ramakrishnan
4b93b31c3d SCOPE_* vars are unused now 2020-02-11 17:37:12 -08:00
Girish Ramakrishnan
4d050725b7 storage: done events must be called next tick
It seems that listDir() returns synchronously (!), not sure how.
This results in the done event getting called with an error but
the EE event handlers are not setup yet.
2020-02-11 11:48:49 -08:00
Girish Ramakrishnan
57597bd103 s3: bucket name cannot contain / 2020-02-11 11:19:47 -08:00
Girish Ramakrishnan
fb52c2b684 backupupload: it is either result or message 2020-02-11 10:03:26 -08:00
Girish Ramakrishnan
de547df9bd Show docker image in the error 2020-02-10 21:54:08 -08:00
Girish Ramakrishnan
a05342eaa0 Add mail eventlog 2020-02-10 15:36:30 -08:00
Girish Ramakrishnan
fb931b7a3a More 4.5 changes 2020-02-10 14:32:15 -08:00
Girish Ramakrishnan
d1c07b6d30 cron: rework recreation of jobs based on timezone 2020-02-10 13:12:20 -08:00
Johannes Zellner
7f0ad2afa0 Move login tests to cloudron route tests 2020-02-10 16:40:07 +01:00
Johannes Zellner
d8e0639db4 Empty or missing username/password results in 400 2020-02-10 16:14:22 +01:00
Johannes Zellner
4d91351845 Get config should succeed for non-admins also 2020-02-10 13:10:56 +01:00
Johannes Zellner
d3f08ef580 Fix apps test to use latest test-app 2020-02-08 00:43:57 +01:00
Johannes Zellner
5e11a9c8ed Fixup typo 2020-02-07 23:12:53 +01:00
Johannes Zellner
957e1a7708 Cleanup unused tokendb apis 2020-02-07 23:06:45 +01:00
Johannes Zellner
7c86ed9783 Add ability to specify the login purpose for further use
In this case the cli will specify a different token type
2020-02-07 23:03:53 +01:00
Girish Ramakrishnan
799b588693 More 4.5 changes 2020-02-07 11:29:16 -08:00
Girish Ramakrishnan
596f4c01a4 cloudron-setup: remove support for pre-4.2 2020-02-07 09:15:12 -08:00
Girish Ramakrishnan
f155de0f17 Revert "Read the provider from the settings, not the migration PROVIDER_FILE"
This reverts commit 001749564d.

PROVIDER is still very much alive and active. sysinfo provider is for the network
interface
2020-02-07 09:13:33 -08:00
Johannes Zellner
476ba1ad69 Fix token expiresAt 2020-02-07 16:42:15 +01:00
Johannes Zellner
ac4aa4bd3d Add tokens routes 2020-02-07 16:20:05 +01:00
Girish Ramakrishnan
237f2c5112 Better error message for domain conflict 2020-02-06 15:51:32 -08:00
Johannes Zellner
cbc6785eb5 Fix typo 2020-02-06 17:29:45 +01:00
Johannes Zellner
26c4cdbf17 Rename tokens.addTokenByUserId() to simply tokens.add() 2020-02-06 17:26:17 +01:00
Johannes Zellner
fb78f31891 cleanup accesscontrol route tests for now 2020-02-06 17:26:17 +01:00
Johannes Zellner
2b6bf8d195 Remove Oauth clients code 2020-02-06 17:26:15 +01:00
Johannes Zellner
2854462e0e Remove token scope business 2020-02-06 16:44:46 +01:00
Johannes Zellner
b4e4b11ab3 Remove now redundant developer login code 2020-02-06 15:47:44 +01:00
Johannes Zellner
7c5a258af3 Move 2fa validation in one place 2020-02-06 15:36:14 +01:00
Johannes Zellner
12aa8ac0ad Remove passport 2020-02-06 14:56:28 +01:00
Johannes Zellner
58d8f688e5 Update schema since authcodes is gone 2020-02-06 11:11:15 +01:00
Girish Ramakrishnan
7efb9e817e oauth2 is gone 2020-02-05 14:46:09 -08:00
Girish Ramakrishnan
5145ea3530 Add supportConfig in database 2020-02-05 14:46:05 -08:00
Girish Ramakrishnan
2f6933102c put appstore whitelist/blacklist in db 2020-02-05 11:58:10 -08:00
Girish Ramakrishnan
25ef5ab636 Move custom pages to a subdirectory 2020-02-05 11:42:17 -08:00
Johannes Zellner
4ae12ac10b Remove oauth
A whole bunch of useless stuff
2020-02-05 18:15:59 +01:00
Johannes Zellner
bfffde5f89 Remove oauth based account setup page 2020-02-05 17:10:55 +01:00
Johannes Zellner
aa7ec53257 Also send display name with invite link 2020-02-05 16:34:34 +01:00
Johannes Zellner
1f41e6dc0f Fix audit source usage 2020-02-05 16:12:40 +01:00
Johannes Zellner
1fbbaa82ab Generate the user invite link only in one location 2020-02-05 15:53:05 +01:00
Johannes Zellner
68b1d1dde1 Fixup account setup link 2020-02-05 15:21:55 +01:00
Johannes Zellner
d773cb4873 Add REST route for account setup
This replaces the server side rendered form
2020-02-05 15:04:59 +01:00
Johannes Zellner
d3c7616120 Remove csurf
New views will be using the REST api not session, so this won't apply
2020-02-05 12:49:37 +01:00
Johannes Zellner
6a92af3db3 Remove password reset views from oauth 2020-02-05 11:43:33 +01:00
Girish Ramakrishnan
763e14f55d Make app error page customizable 2020-02-04 17:52:30 -08:00
Girish Ramakrishnan
4f57d97fff add api to get/set footer and remove all use of custom.js 2020-02-04 13:27:19 -08:00
Girish Ramakrishnan
3153fb5cbe custom: remove alerts section 2020-02-04 13:09:00 -08:00
Girish Ramakrishnan
c9e96cd97a custom: remove support section 2020-02-04 13:07:36 -08:00
Girish Ramakrishnan
c41042635f custom: remove subscription.configurable 2020-02-04 12:58:32 -08:00
Girish Ramakrishnan
141b2d2691 custom: remove app whitelist/blacklist 2020-02-04 12:58:11 -08:00
Girish Ramakrishnan
e71e8043cf custom: remove config.uiSpec.domains 2020-02-04 12:56:10 -08:00
Girish Ramakrishnan
49d80dbfc4 custom: remove backups.configurable 2020-02-04 12:49:41 -08:00
Johannes Zellner
8d6eca2349 Fix typos 2020-02-04 18:32:43 +01:00
Johannes Zellner
13d0491759 Send out new password reset link 2020-02-04 17:11:31 +01:00
Johannes Zellner
37e2d78d6a Users without a username have to sign up first 2020-02-04 17:07:45 +01:00
Johannes Zellner
6745221e0f Password reset does not need an email 2020-02-04 17:05:08 +01:00
Johannes Zellner
18bbe70364 Add route to set new password 2020-02-04 16:47:57 +01:00
Johannes Zellner
eec8d4bdac We want to redirect to login.html 2020-02-04 15:59:12 +01:00
Johannes Zellner
86029c1068 Add new password reset route 2020-02-04 15:27:22 +01:00
Johannes Zellner
0ae9be4de9 Add basic login/logout logic 2020-02-04 14:35:25 +01:00
Girish Ramakrishnan
57e3180737 typo 2020-02-01 18:12:33 -08:00
Girish Ramakrishnan
a84cdc3d09 app password: add tests for the rest routes 2020-02-01 10:19:14 -08:00
Girish Ramakrishnan
a5f35f39fe oom notification for backup disk as well 2020-01-31 22:20:34 -08:00
Girish Ramakrishnan
3427db3983 Add app passwords feature 2020-01-31 22:03:19 -08:00
Girish Ramakrishnan
e3878fa381 mysqldump: Add --column-statistics=0
mysqldump: Couldn't execute 'SELECT COLUMN_NAME,                       JSON_EXTRACT(HISTOGRAM, '$."number-of-buckets-specified"')                FROM information_schema.COLUMN_STATISTICS                WHERE SCHEMA_NAME = 'box' AND TABLE_NAME = 'appAddonConfigs';': Unknown table 'COLUMN_STATISTICS' in information_schema (1109)
2020-01-31 18:42:44 -08:00
Girish Ramakrishnan
e1ded9f7b5 Add collectd for backups 2020-01-31 14:56:41 -08:00
Girish Ramakrishnan
1981493398 refactor code into collectd.js 2020-01-31 13:33:19 -08:00
Girish Ramakrishnan
dece7319cc Update packages carefully 2020-01-31 10:25:47 -08:00
Girish Ramakrishnan
5c4e163709 revert package changes 2020-01-31 10:04:49 -08:00
Johannes Zellner
d1acc6c466 Do not upgrade async module since api has changed
We have to first fix for example doWhilst() usage
2020-01-31 15:44:41 +01:00
Girish Ramakrishnan
f879d6f529 Prepare for 4.4.5 2020-01-30 21:11:20 -08:00
Girish Ramakrishnan
1ac38d4921 After node update, we get a buffer 2020-01-30 16:06:11 -08:00
Johannes Zellner
4818e9a8e4 Pass cloudron purpose to appstore 2020-01-30 16:00:38 +01:00
Girish Ramakrishnan
c4ed471d1c Update node to 10.18.1 2020-01-29 20:54:57 -08:00
Girish Ramakrishnan
83c0b2986a Update mysql packet size 2020-01-29 20:44:26 -08:00
Girish Ramakrishnan
b8cddf559a min cpu shares is 2 2020-01-28 22:38:54 -08:00
Girish Ramakrishnan
4ba9f80d44 apps: configure cpuShares 2020-01-28 22:16:25 -08:00
Girish Ramakrishnan
d1d3309e91 Better error message for invalid data directories 2020-01-28 14:12:56 -08:00
Girish Ramakrishnan
84cffe8888 Fix debug 2020-01-28 13:51:03 -08:00
Girish Ramakrishnan
3929b3ca0a service: add memorySwap to configure route 2020-01-28 13:33:43 -08:00
Girish Ramakrishnan
d649a470f9 More changes 2020-01-28 09:37:48 -08:00
Girish Ramakrishnan
db330b23cb Stopped apps should not renew certificates
We had a case where a stopped/ununsed app was generating cert renewal
errors.

One idea might be to suppress the notification as well.
2020-01-26 16:22:20 -08:00
Girish Ramakrishnan
cda649884e eventlog: add mailbox and list update events 2020-01-24 17:18:34 -08:00
Girish Ramakrishnan
45053205db refactor: re-order arguments 2020-01-24 17:18:34 -08:00
Johannes Zellner
3f1533896e Keep debug messages in sync 2020-01-21 16:14:36 +01:00
Girish Ramakrishnan
e20dfe1b26 Ensure backup is the night of the timezone 2020-01-20 17:28:53 -08:00
Johannes Zellner
946d9db296 We have 2020 also in the oauth login views 2020-01-20 17:47:26 +01:00
Girish Ramakrishnan
6dc2e1aa14 Do not show error page for 503
WP maintenance mode plugin will return 503
2020-01-13 15:00:18 -08:00
Johannes Zellner
001749564d Read the provider from the settings, not the migration PROVIDER_FILE 2020-01-13 15:35:44 +01:00
Johannes Zellner
ffcba4646c Add 4.4.5 changes 2020-01-09 16:24:26 +01:00
Girish Ramakrishnan
01d0c8eb9c Remove tz detection
we now have a UI to set this by hand
2020-01-08 09:24:23 -08:00
Girish Ramakrishnan
0cf40bd207 More 4.4.4 changes 2020-01-07 18:31:10 -08:00
Girish Ramakrishnan
4a283e9f35 4.4.4 changes 2020-01-06 08:55:22 -08:00
Johannes Zellner
5ab37bcf7e Disable test if dns setup succeeds twice 2020-01-06 12:21:36 +01:00
Johannes Zellner
9151965cd6 Keep user objects in REST api responses more coherent 2020-01-06 11:54:00 +01:00
Girish Ramakrishnan
c5cd71f9e3 Disable motd-news
https://forum.cloudron.io/topic/2050/switch-to-debian-ubuntu-spying
2020-01-05 15:25:15 -08:00
Girish Ramakrishnan
602b335c0e add openldap compat
apps like firefly-iii seem to require these fields when using the
openldap driver
2020-01-05 15:14:46 -08:00
Girish Ramakrishnan
837c8b85c2 2020: happy new year 2020-01-02 16:55:47 -08:00
Girish Ramakrishnan
7d16396e72 clone: custom mailbox name is not cloned 2020-01-01 23:05:34 -08:00
Girish Ramakrishnan
66d3d07148 append error message when verifying dns config 2020-01-01 16:17:16 -08:00
Girish Ramakrishnan
b5c1161caa add tokenType to cloudflare config 2020-01-01 16:01:39 -08:00
Girish Ramakrishnan
b0420889ad cloudflare: add api token support 2019-12-31 16:47:47 -08:00
Girish Ramakrishnan
527819d886 cloudflare: refactor superagent logic 2019-12-31 16:25:49 -08:00
Girish Ramakrishnan
1ad0cff28e Use app.fqdn in output 2019-12-24 11:07:53 -08:00
Johannes Zellner
783ec03ac9 The setup views require webServerOrigin for documentation purpose 2019-12-23 17:15:45 +01:00
Girish Ramakrishnan
6cd395d494 Allow restore from error state 2019-12-20 17:58:42 -08:00
Girish Ramakrishnan
681079e01c repair: reconfigure for all other states
the idea was that the failed routes can be called again in other cases
2019-12-20 17:00:53 -08:00
Girish Ramakrishnan
aabbc43769 4.4.3 changes 2019-12-20 11:29:02 -08:00
Girish Ramakrishnan
2692f6ef4e Add restart route for atomicity 2019-12-20 11:15:36 -08:00
Girish Ramakrishnan
887cbb0b22 make percent non-zero 2019-12-18 09:33:44 -08:00
Johannes Zellner
ca4fdc1be8 Add azure-image provider argument 2019-12-17 16:42:25 +01:00
Girish Ramakrishnan
93199c7f5b eventlog: support ticket and ssh 2019-12-16 14:06:55 -08:00
Girish Ramakrishnan
4c6566f42f stopped apps should not be updated or auto-updated 2019-12-16 13:29:15 -08:00
Johannes Zellner
c38f7d7f93 Make properties explicitly available 2019-12-16 15:21:26 +01:00
Girish Ramakrishnan
da85cea329 avatar: remove query param
let the ui add the size and default
2019-12-13 13:45:02 -08:00
Girish Ramakrishnan
d5c70a2b11 Add sshd port warning 2019-12-13 11:32:36 -08:00
Girish Ramakrishnan
fe355b4bac 4.4.2 changes 2019-12-12 20:44:54 -08:00
Girish Ramakrishnan
a7dee6be51 cloudron.runSystemChecks should take a callback 2019-12-12 20:41:03 -08:00
Girish Ramakrishnan
2817dc0603 Not required to run any cron job immediately 2019-12-12 20:39:40 -08:00
Girish Ramakrishnan
6f36c72e88 Fix crash in mail.checkConfiguration 2019-12-12 20:36:27 -08:00
Girish Ramakrishnan
45e806c455 typo in comment 2019-12-12 19:54:59 -08:00
Johannes Zellner
bbdd76dd37 Fix and add memory route tests 2019-12-12 13:21:24 +01:00
Johannes Zellner
09921e86c0 Remove redunandant memory property from config
we have a specific route for this now
2019-12-12 12:14:08 +01:00
Girish Ramakrishnan
d6e4b64103 4.4.1 changes 2019-12-11 15:27:47 -08:00
Girish Ramakrishnan
9dd3e4537a return 422 on instance id mismatch
the ui redirects otherwise
2019-12-11 15:13:38 -08:00
Girish Ramakrishnan
a5f31e8724 Revert "rename ami to aws-mp"
This reverts commit 72ac00b69a.

Existing code relies on this, so don't change it
2019-12-11 12:56:30 -08:00
Girish Ramakrishnan
72ac00b69a rename ami to aws-mp 2019-12-11 12:27:55 -08:00
Girish Ramakrishnan
ae5722a7d4 eventlog: typo when mail list is removed 2019-12-11 10:05:45 -08:00
Johannes Zellner
4e3192d450 Avoid double dns setup tracking 2019-12-11 14:02:40 +01:00
Johannes Zellner
ccca3aca04 Send setup state to get the actually correct ip 2019-12-10 18:01:07 +01:00
Girish Ramakrishnan
e4dd5d6434 Fix crash when uploading file 2019-12-09 15:02:51 -08:00
Girish Ramakrishnan
9a77fb6306 acme2: implement post-as-get
https://tools.ietf.org/html/rfc8555#section-6.3
https://community.letsencrypt.org/t/post-as-get-and-empty-payload-instead-of/86720/3
https://community.letsencrypt.org/t/problem-with-renew-certificates-the-request-message-was-malformed-method-not-allowed/107889/17
2019-12-08 19:17:52 -08:00
Girish Ramakrishnan
3ec5c713bf debug: certFilePath is undefined 2019-12-08 18:23:12 -08:00
Girish Ramakrishnan
837fc27e94 canAutoupdateApp now returns bool 2019-12-08 16:55:56 -08:00
Girish Ramakrishnan
9ad6025310 search and replace gone wrong 2019-12-06 13:52:43 -08:00
Girish Ramakrishnan
d765e4c619 add a note 2019-12-06 12:39:46 -08:00
Girish Ramakrishnan
f5217236d6 Change the version number 2019-12-06 12:28:08 -08:00
Girish Ramakrishnan
8f8d099faf Add to changes 2019-12-06 12:23:49 -08:00
Girish Ramakrishnan
16660e083f Also set overwriteDns when manifest is not provided 2019-12-06 12:21:28 -08:00
Girish Ramakrishnan
4e35020a1c Set overwriteDns for install task 2019-12-06 12:11:34 -08:00
Girish Ramakrishnan
111e0bcb5f Fix repair route path 2019-12-06 11:44:41 -08:00
Girish Ramakrishnan
d7f9a547fc Disable requiredState check for now
there is a race but this is mitigated by the checkAppState non-db logic
for now
2019-12-06 11:29:35 -08:00
Girish Ramakrishnan
6a64f24e98 Fix repair
If a task fails, we can either:
* allow other task ops to be called - we cannot do this because the ops are fine-grained. for example,
  a restore failure removes many things and calling set-memory or set-location in that state won't
  make sense.

* provide a generic repair route - this allows one to override args and call the failed task
  again. this is what we have now but has the issue that this repair function has to know about all
  the other op functions. for example, for argument validation. we can do some complicated refactoring
  to make it work if we want.

* just a generic total re-configure - this does not work because clone/restore/backup/datadir/uninstall/update
  failure leaves the app in a state which re-configure cannot do anything about.

* allow the failed op to be called again - this seems the easiest. we just allow the route to be called again
  in the error state.

* if we hit a state where even providing extra args, cannot get you out of this "error" state, we have to provide
  some repair route. for example, maybe the container disappeared by some docke error. user clicks 'repair' to
  recreate the container. this route does not have to take any args.

The final solution is:
* a failed task can be called again via the route. so we can resubmit any args and we get validation
* repair route just re-configures and can be called in any state to just rebuild container. re-configure is also
  doing only local changes (docker, nginx)
* install/clone failures are fixed using repair route. updated manifest can be passed in.
* UI shows backup selector for restore failures
* UI shows domain selector for change location failulre
2019-12-06 09:56:09 -08:00
Girish Ramakrishnan
37d7be93b5 Move oldManifest out of restoreConfig 2019-12-06 09:56:03 -08:00
Girish Ramakrishnan
9c809aa6e1 remove dead comment 2019-12-06 09:35:08 -08:00
Girish Ramakrishnan
7ab9f3fa2f re-configure does not require oldConfig
this is only needed when changing location now. the configure()
is now entirely local i.e rebuild local container and the reverse
proxy config
2019-12-06 09:23:58 -08:00
Girish Ramakrishnan
ffeb484a10 No need to return args as part of task.get
This reverts commit 831e22b4ff.
This reverts commit 6774514bd2.
2019-12-06 08:42:49 -08:00
Girish Ramakrishnan
2ffb32ae60 Skip moving data if source and target are same 2019-12-06 08:09:43 -08:00
Girish Ramakrishnan
905bb92bad s3: ensure BoxError return 2019-12-05 21:50:44 -08:00
Girish Ramakrishnan
3926efd153 restore: only take non-empty backupId 2019-12-05 21:16:35 -08:00
Girish Ramakrishnan
c5e5bb90e3 better error message 2019-12-05 21:16:35 -08:00
Girish Ramakrishnan
cea543cba5 On backup error, only set the task error
at some point, the backup ui can show this error
2019-12-05 16:34:40 -08:00
Girish Ramakrishnan
a8b489624d fix error messages 2019-12-05 16:27:00 -08:00
Girish Ramakrishnan
49d3bddb62 Show download progress when restoring rsync backups 2019-12-05 15:44:52 -08:00
Girish Ramakrishnan
c0ff3cbd22 move progressTag to the end 2019-12-05 15:44:52 -08:00
Girish Ramakrishnan
1de97d6967 do not clear localstorage during in-place import 2019-12-05 12:42:08 -08:00
Girish Ramakrishnan
a44a82083e Add backups.testProviderConfig
fields like format/retention won't be validated here since it's only
testing the access credentials
2019-12-05 11:55:53 -08:00
Girish Ramakrishnan
d57681ff21 put fqdn in the end 2019-12-05 11:15:21 -08:00
Girish Ramakrishnan
e3de2f81d3 setup and clear addons before import 2019-12-05 11:12:40 -08:00
Girish Ramakrishnan
e8c5f8164c do not delete data dir for in-place import 2019-12-05 11:01:27 -08:00
Girish Ramakrishnan
c07e215148 Use BoxError in on error cases 2019-12-05 09:54:29 -08:00
Girish Ramakrishnan
4bb676fb5c add asserts 2019-12-05 09:32:45 -08:00
Johannes Zellner
dbdf86edfc No need to return the same data which the route got passed in 2019-12-05 18:02:57 +01:00
Johannes Zellner
2c8e6330ce Do not allow to change the sysinfo in demo mode 2019-12-05 16:06:21 +01:00
Girish Ramakrishnan
1b563854a7 implement in-place import and custom backup config 2019-12-04 19:27:05 -08:00
Girish Ramakrishnan
80b890101b Add changes 2019-12-04 17:53:02 -08:00
Girish Ramakrishnan
c3696469ff Add app fqdn to backup progress message 2019-12-04 17:49:31 -08:00
Girish Ramakrishnan
3e08e7c653 Typo in docker socket path 2019-12-04 14:37:00 -08:00
Girish Ramakrishnan
53e39f571c Make addons code remove a BoxError 2019-12-04 14:28:42 -08:00
Girish Ramakrishnan
c992853cca lint 2019-12-04 11:18:39 -08:00
Girish Ramakrishnan
85e17b570b Use whilst instead of forever
this gets rid of the Error object
2019-12-04 11:17:44 -08:00
Girish Ramakrishnan
30eccfb54b Use BoxError instead of Error in all places
This moves everything other than the addon code and some 'done' logic
2019-12-04 11:02:54 -08:00
Girish Ramakrishnan
3623831390 Typo 2019-12-04 10:23:16 -08:00
Girish Ramakrishnan
d0a3d00492 Use NOT_IMPLEMENTED error code 2019-12-04 10:22:22 -08:00
Girish Ramakrishnan
0b6fbfd910 Better addon error messages 2019-12-04 10:09:57 -08:00
Girish Ramakrishnan
8cfb27fdcd Add changes 2019-12-03 15:39:29 -08:00
Girish Ramakrishnan
841ab54565 better logs 2019-12-03 15:11:27 -08:00
Girish Ramakrishnan
a2e9254343 lint 2019-12-03 15:10:06 -08:00
Johannes Zellner
43cb03a292 Send provider and version during registration 2019-12-02 18:19:51 +01:00
Johannes Zellner
f2fca33309 Add support to upload custom profile avatar 2019-12-02 18:03:54 +01:00
Johannes Zellner
14d26fe064 Do not crash on migration
A bit late but still
2019-12-02 18:03:54 +01:00
Girish Ramakrishnan
9cc968e790 Pass the new data dir as a task argument 2019-11-25 14:22:27 -08:00
Girish Ramakrishnan
831e22b4ff Fix failing test 2019-11-23 18:35:15 -08:00
Girish Ramakrishnan
6774514bd2 Return args as part of task.get
the ui needs this to repair any failed app task
2019-11-23 18:06:33 -08:00
Girish Ramakrishnan
f543b98764 Remove BoxError.UNKNOWN_ERROR 2019-11-22 14:27:41 -08:00
Johannes Zellner
2e94600afe Don't set 'Starting ...' as initial task progress message
This is confusing for tasks like "stop" as it will say "Starting ..."
2019-11-22 13:54:43 +01:00
Johannes Zellner
9295ce783a Other logs are lowercase 2019-11-22 12:31:41 +01:00
Johannes Zellner
134f8a28bf Hide access tokens from logs 2019-11-22 12:29:13 +01:00
Girish Ramakrishnan
ab5e4e998c Fix reduce usage 2019-11-21 13:48:31 -08:00
Girish Ramakrishnan
a98551f99c rename disks to system 2019-11-21 13:01:08 -08:00
Girish Ramakrishnan
42fe84152a return swap information 2019-11-21 12:55:17 -08:00
Girish Ramakrishnan
8a3d212bd4 Fix note 2019-11-20 16:17:47 -08:00
Girish Ramakrishnan
af51ddc347 Fix crash when user with active session is deleted 2019-11-20 16:12:21 -08:00
Girish Ramakrishnan
b582e549c2 do not unconfigure reverse proxy on container destroy 2019-11-20 15:38:55 -08:00
Girish Ramakrishnan
5efbccd974 Revert migration change since some cloudrons already got 4.3.3 2019-11-20 14:43:01 -08:00
Johannes Zellner
82f5cd6075 Remove unused stuff in external ldap tests 2019-11-20 22:30:53 +01:00
Johannes Zellner
0d8820c247 Add external ldap tests 2019-11-20 22:21:40 +01:00
Girish Ramakrishnan
37c6a96a3a s3: if etag is not present, flag as error 2019-11-20 12:53:36 -08:00
Johannes Zellner
c53b54bda3 Only create external ldap users for oauth logins 2019-11-20 20:05:22 +01:00
Girish Ramakrishnan
808753ad3a CLI tokens are now valid for a month 2019-11-20 10:07:15 -08:00
Girish Ramakrishnan
f919570cea Fix tests
mailboxDomain can be null (even though install/clone currently always
allocate one)
2019-11-20 09:57:51 -08:00
Johannes Zellner
9acf49a99e Fix typo 2019-11-20 18:18:21 +01:00
Johannes Zellner
239883d01f Add autoCreate flag to external ldap config 2019-11-20 18:18:21 +01:00
Johannes Zellner
e3cee37527 Move autocreation logic into external ldap 2019-11-20 18:18:21 +01:00
Johannes Zellner
8fd0461c62 Auto create users on login if present in external ldap source 2019-11-20 18:18:21 +01:00
Girish Ramakrishnan
4d2b5c83ca Bump version to re-generate configs 2019-11-19 17:36:05 -08:00
Girish Ramakrishnan
bc314c1119 Re-generate collectd and logrotate configs on container recreate
this was the reason graphs were not showing up properly
2019-11-19 17:28:31 -08:00
Girish Ramakrishnan
d01749a2c2 Add 4.3.4 changes 2019-11-19 11:42:48 -08:00
Girish Ramakrishnan
b46154676a Do not error if fallback certs went missing
This atleast lets the user remove and add the domain to fix things up
2019-11-19 09:36:35 -08:00
Girish Ramakrishnan
fd2d60dca3 Match the version entirely during restore
Sometimes, we introduce migrations in patch releases and this causes
problems when restoring the sql dump
2019-11-18 15:05:01 -08:00
Girish Ramakrishnan
ed17bdc7c3 typo 2019-11-17 21:16:36 -08:00
Girish Ramakrishnan
ac05399cda Add changes 2019-11-17 12:29:53 -08:00
Girish Ramakrishnan
1af5c6a418 Fix registry detection
ECR registry does not have a username component
2019-11-17 11:50:58 -08:00
Girish Ramakrishnan
e2bb668fe4 add note on appStoreId 2019-11-16 10:31:38 -08:00
Girish Ramakrishnan
d255466417 manifest.id is optional for custom apps 2019-11-15 17:28:54 -08:00
Girish Ramakrishnan
5509406395 add mailboxDomain field to apps table 2019-11-15 09:40:35 -08:00
Girish Ramakrishnan
97333474c4 Remove delay introduced by mistake in 5c920fd20 2019-11-14 17:40:21 -08:00
Johannes Zellner
38928d63d6 node's http server has a default timeout of 2min which is too short for build bot 2019-11-14 13:15:18 +01:00
Girish Ramakrishnan
05c64dcbf2 move unbound config to separate file 2019-11-13 14:48:56 -08:00
Girish Ramakrishnan
e39b081567 Change restart policy to unless-stopped 2019-11-13 10:29:54 -08:00
Girish Ramakrishnan
62174658cf 4.3.2 changes 2019-11-12 16:43:27 -08:00
Girish Ramakrishnan
3d26e8a666 Revert "Update cloudron-manifestformat and other modules"
This reverts commit 3d337640ef.

Only update cloudron-manifestformat
2019-11-12 14:54:16 -08:00
Girish Ramakrishnan
3d337640ef Update cloudron-manifestformat and other modules 2019-11-12 14:26:13 -08:00
Girish Ramakrishnan
985eaf8ca9 Better progress message 2019-11-11 17:09:46 -08:00
Girish Ramakrishnan
e0bee13812 validate sysinfo in setup as well 2019-11-11 16:32:29 -08:00
Girish Ramakrishnan
7c6922d228 validate sysinfo configuration 2019-11-11 16:05:53 -08:00
Girish Ramakrishnan
bf68c2d321 default has changed 2019-11-11 11:19:42 -08:00
Girish Ramakrishnan
fd51320fb7 sysinfoConfig is now non-optional 2019-11-11 11:05:34 -08:00
Girish Ramakrishnan
815392ba38 restore: add sysinfoConfig 2019-11-11 09:49:18 -08:00
Girish Ramakrishnan
f8c110f75c 4.3.1 changes 2019-11-11 09:43:19 -08:00
Girish Ramakrishnan
70f9ceb1b8 better not found message 2019-11-11 09:13:45 -08:00
Girish Ramakrishnan
2353a8b5fa list unstable apps by default 2019-11-11 08:42:00 -08:00
Girish Ramakrishnan
cf1c2dc1ee Fix crash when listing mailboxes 2019-11-10 12:44:39 -08:00
Johannes Zellner
467283d5e0 Destroy all session by a user if wanted 2019-11-08 21:32:55 +01:00
Girish Ramakrishnan
a887e19d46 Update mail container 2019-11-07 15:16:51 -08:00
Girish Ramakrishnan
2ab941660e Fix haraka crash
https://github.com/haraka/Haraka/issues/2732
2019-11-07 15:10:34 -08:00
Girish Ramakrishnan
a75769071c remove obsolete test 2019-11-07 14:23:57 -08:00
Girish Ramakrishnan
7f2af067cf Add enums for cid 2019-11-07 13:38:33 -08:00
Girish Ramakrishnan
88454e7d6c remove unused function 2019-11-07 13:35:37 -08:00
Girish Ramakrishnan
5c920fd200 never skip password verification 2019-11-07 13:10:12 -08:00
Girish Ramakrishnan
ab650c7a95 more changes 2019-11-07 11:13:52 -08:00
Girish Ramakrishnan
1e776bbbe0 Add route to get public IP 2019-11-07 10:41:15 -08:00
Girish Ramakrishnan
cd0294129f Add changes 2019-11-07 09:25:04 -08:00
Johannes Zellner
d1c6e786c2 Remove unused CLOUDRON_ADMIN_EMAIL 2019-11-07 16:38:30 +01:00
Girish Ramakrishnan
58d66b5293 mail: resolve list members 2019-11-06 21:45:54 -08:00
Girish Ramakrishnan
1942a7ecf4 redis: start app redis addons on image update 2019-11-06 09:38:20 -08:00
Girish Ramakrishnan
22c2add55e Update redis 2019-11-05 21:59:35 -08:00
Girish Ramakrishnan
60c5cccfc2 Add MAIL_ERROR 2019-11-05 20:55:21 -08:00
Girish Ramakrishnan
b4874ec1f4 refactor getting mail auth 2019-11-05 19:54:53 -08:00
Girish Ramakrishnan
d7b326bf2b clone: appdb.add must also put the reverse proxy config 2019-11-05 13:58:02 -08:00
Girish Ramakrishnan
b9d8b5f973 clone: copy reverseProxyConfig 2019-11-05 12:50:30 -08:00
Girish Ramakrishnan
64fd6e0dac Allow redis with no password 2019-11-05 10:48:36 -08:00
Girish Ramakrishnan
868103e7e4 Add changes 2019-11-05 09:21:23 -08:00
Johannes Zellner
3354cb8ebe Add network interface check 2019-11-05 15:03:36 +01:00
Johannes Zellner
4fc012dea0 Fix typo in sysinfo route handler 2019-11-05 13:45:06 +01:00
Girish Ramakrishnan
947cb786d6 ldapsync: add progress callback 2019-11-04 12:05:35 -08:00
Girish Ramakrishnan
689f2791ba validate fields in testConfig 2019-10-31 11:46:00 -07:00
Girish Ramakrishnan
a5ec5b0ed9 externalLdap: search and then bind 2019-10-30 15:32:49 -07:00
Girish Ramakrishnan
8e5916b785 oauth2: catch any errors in handlers 2019-10-30 15:15:36 -07:00
Girish Ramakrishnan
563f846eba style fixes 2019-10-30 14:27:58 -07:00
Girish Ramakrishnan
7781ea3205 remove this check, let if get marked as conflicting 2019-10-30 11:05:26 -07:00
Girish Ramakrishnan
2f5ece8f1d make displayName also a const 2019-10-30 11:04:19 -07:00
Girish Ramakrishnan
ec46dab754 camel case 2019-10-30 11:02:21 -07:00
Girish Ramakrishnan
d5d27d512c make email a constant 2019-10-30 10:59:48 -07:00
Girish Ramakrishnan
0a695190c4 Remove bindDn validation
in some AD setups, this is a email
2019-10-30 09:35:33 -07:00
Girish Ramakrishnan
59deca76a1 add changes 2019-10-30 09:16:55 -07:00
Girish Ramakrishnan
a829ab44f1 sysinfo: remove the ec2 and scaleway providers
we can just use the generic one for those as well
2019-10-30 09:13:01 -07:00
Girish Ramakrishnan
82a7befb92 Fix crashes 2019-10-29 20:33:32 -07:00
Girish Ramakrishnan
331d0ee717 declare the variable 2019-10-29 20:20:35 -07:00
Girish Ramakrishnan
addafa529f sysinfoConfig can be passed when provisioning 2019-10-29 20:12:37 -07:00
Girish Ramakrishnan
8232d471a3 Add route to set/get sysinfo 2019-10-29 20:08:45 -07:00
Girish Ramakrishnan
813454ca82 sysinfo: Add static and network intf providers 2019-10-29 16:12:58 -07:00
Girish Ramakrishnan
7d987d7c79 make sysinfo provider a setting 2019-10-29 15:56:50 -07:00
Girish Ramakrishnan
7a25187bee Disable invite & password reset route for external users 2019-10-29 11:03:28 -07:00
Girish Ramakrishnan
f97cbb5fd5 Use private registry auth 2019-10-27 13:07:07 -07:00
Girish Ramakrishnan
12d233c5f9 provide suggestion as part of the error 2019-10-27 12:01:30 -07:00
Girish Ramakrishnan
09fce1978e Add to changes 2019-10-25 17:06:16 -07:00
Girish Ramakrishnan
8ed2f98d1d print username field as well 2019-10-25 17:00:59 -07:00
Girish Ramakrishnan
13262d014b call unbind 2019-10-25 16:58:15 -07:00
Girish Ramakrishnan
ade1187fc8 ldap: more logs 2019-10-25 16:46:55 -07:00
Girish Ramakrishnan
2404e79928 ldap: do the secret key dance 2019-10-25 16:46:49 -07:00
Girish Ramakrishnan
d68ed91b17 ldap: add usernameField
we need this for okta where uid is the email
2019-10-25 15:50:26 -07:00
Girish Ramakrishnan
1a21423401 ldap: add provider field 2019-10-25 15:40:22 -07:00
Girish Ramakrishnan
a478134759 mail: put the type and hostname in notification 2019-10-25 10:16:17 -07:00
Girish Ramakrishnan
c639746211 Update changes 2019-10-24 21:43:09 -07:00
Girish Ramakrishnan
7a96e4858a Not found messages at the db level 2019-10-24 20:48:38 -07:00
Girish Ramakrishnan
02339d503c do not re-generate DATABASE_ERROR 2019-10-24 20:31:45 -07:00
Girish Ramakrishnan
c3a5360a88 Add not implemented error code 2019-10-24 18:40:37 -07:00
Girish Ramakrishnan
ad9097d212 Remove various uses of INTERNAL_ERROR
INTERNAL_ERROR now means there really was some internal error
2019-10-24 18:32:36 -07:00
Girish Ramakrishnan
6e57f8cc03 Refactor toHttpError code into BoxError 2019-10-24 18:09:55 -07:00
Girish Ramakrishnan
d6365ff27f Move AppstoreError to BoxError 2019-10-24 17:47:16 -07:00
Girish Ramakrishnan
4793eb9ef5 Finish UsersError removal 2019-10-24 15:19:07 -07:00
Girish Ramakrishnan
03175aa8de IN_USE -> CONFLICT
also, remove databaseerror
2019-10-24 15:07:37 -07:00
Girish Ramakrishnan
bc3169deb3 Move UsersError to BoxError 2019-10-24 15:06:41 -07:00
Girish Ramakrishnan
9b4d43075e Fix some typos 2019-10-24 14:34:10 -07:00
Girish Ramakrishnan
d2c12297dc Move ExternalLdapError to BoxError 2019-10-24 14:32:27 -07:00
Girish Ramakrishnan
1a8496d61e Move MailError to BoxError 2019-10-24 14:10:23 -07:00
Girish Ramakrishnan
a017af41c5 Start moving db code to use BoxError as well 2019-10-24 14:09:53 -07:00
Girish Ramakrishnan
ec216d9828 Add PLAN_LIMIT for now
Should remove this and make it something else
2019-10-24 11:05:36 -07:00
Girish Ramakrishnan
bce1efb77c Move AppsError to BoxError 2019-10-24 10:39:47 -07:00
Girish Ramakrishnan
b078d37f37 Remove REVERSEPROXY_ERROR 2019-10-24 10:31:56 -07:00
Girish Ramakrishnan
8d944f74c0 Make reverseProxy return BoxError consistently 2019-10-24 10:28:38 -07:00
Girish Ramakrishnan
dc10b8a07f Move AddonsError to BoxError 2019-10-23 15:57:01 -07:00
Girish Ramakrishnan
7b9f741522 Move ProvisionError to BoxError 2019-10-23 15:45:09 -07:00
Girish Ramakrishnan
51cb3b0ba8 Move DomainsError to BoxError 2019-10-23 15:15:19 -07:00
Girish Ramakrishnan
4db4834c90 rename variable 2019-10-23 15:03:42 -07:00
Girish Ramakrishnan
e1f0d12251 Fix error handling 2019-10-23 09:53:46 -07:00
Girish Ramakrishnan
e2388b7d88 Move UpdaterError to BoxError 2019-10-23 09:39:26 -07:00
Girish Ramakrishnan
d0e6b6bfe4 Do not re-translate to DockerError 2019-10-23 09:30:05 -07:00
Girish Ramakrishnan
b6f2c94464 test registry config 2019-10-23 06:49:29 -07:00
Girish Ramakrishnan
8cdddef077 Add registry config to settings table 2019-10-22 22:56:25 -07:00
Girish Ramakrishnan
e82ac5ecc5 Ensure docker code returns BoxError 2019-10-22 21:46:32 -07:00
Girish Ramakrishnan
db6c07f86a Move ReverseProxyError with BoxError 2019-10-22 21:24:31 -07:00
Girish Ramakrishnan
2df642000d Move ClientsError to BoxError 2019-10-22 21:16:49 -07:00
Girish Ramakrishnan
11d80cec7d Fix mailbox tests 2019-10-22 21:03:47 -07:00
Girish Ramakrishnan
8c9ce30d29 Move BackupsError to BoxError 2019-10-22 21:03:47 -07:00
Girish Ramakrishnan
df142994a8 Move TaskError into BoxError 2019-10-22 21:03:47 -07:00
Girish Ramakrishnan
2d115d3d0f Move GroupsError to BoxError 2019-10-22 16:34:17 -07:00
Girish Ramakrishnan
1b594d3e50 Remove unused GroupsError 2019-10-22 16:26:38 -07:00
Girish Ramakrishnan
332f2e7c10 Move SysInfoError to BoxError 2019-10-22 14:09:44 -07:00
Girish Ramakrishnan
a7614cef2e Move CloudronError to BoxError 2019-10-22 14:06:19 -07:00
Girish Ramakrishnan
9842b6d4a1 Move EventLogError to BoxError 2019-10-22 13:59:01 -07:00
Girish Ramakrishnan
88818a1ec2 Move NotificationsError to BoxError 2019-10-22 13:00:10 -07:00
Girish Ramakrishnan
812f5cce99 Move DisksError to BoxError 2019-10-22 11:11:41 -07:00
Girish Ramakrishnan
fdf7da9111 Move SupportError to BoxError 2019-10-22 11:08:19 -07:00
Girish Ramakrishnan
ed9e1772ea move SettingsError to BoxError 2019-10-22 11:06:14 -07:00
Girish Ramakrishnan
657a2cac2f Add pagination to mailbox listing 2019-10-22 10:12:06 -07:00
Girish Ramakrishnan
d15aa2744d Fix return code if start.sh is bad 2019-10-20 13:35:19 -07:00
Girish Ramakrishnan
29ab3e91b3 gcs: remove concurrency logic
this is more complicated than necessary
2019-10-18 18:54:25 -07:00
Girish Ramakrishnan
f6377fd1c6 Add email_error type 2019-10-15 11:48:20 -07:00
Girish Ramakrishnan
122a987d61 4.3 changes 2019-10-15 11:40:36 -07:00
Girish Ramakrishnan
4610e78d91 Add altEmail to support ticket (when mail is down) 2019-10-15 11:39:44 -07:00
Girish Ramakrishnan
351bd46cb7 Make external backup restore a separate route (import)
fixes #650
2019-10-15 09:20:29 -07:00
Girish Ramakrishnan
8878bc4bf9 frameAncestors -> csp
It seems we cannot separate frame ancestors from CSP because the hide
header just hides everything and not a specific resource. This means
that the user has to set or unset the full policy whole sale.
2019-10-14 17:12:01 -07:00
Girish Ramakrishnan
61b6bee946 Remove unused variable 2019-10-14 16:07:45 -07:00
Girish Ramakrishnan
9997cbddb8 Do not escape as html 2019-10-14 16:03:57 -07:00
Girish Ramakrishnan
7115498f32 Send reverseProxyConfig in REST response 2019-10-14 15:57:41 -07:00
Girish Ramakrishnan
0f05c243aa Remove redundant type checking validation 2019-10-14 15:18:21 -07:00
Girish Ramakrishnan
9c12f1fe15 Add field to configure the reverse proxy
part of #596
2019-10-14 15:05:25 -07:00
Girish Ramakrishnan
7383cc4e90 email: Auto-subscribe to Spam folder 2019-10-14 14:31:39 -07:00
Girish Ramakrishnan
6466b47ada 4.3 changes 2019-10-14 14:16:43 -07:00
Girish Ramakrishnan
1856fc05d9 Add timeout for apptask as well 2019-10-14 14:16:15 -07:00
Girish Ramakrishnan
a19662bdfa Add a timeout for update as well
this will send a notification if an update gets stuck
2019-10-14 13:05:12 -07:00
Girish Ramakrishnan
488763fc42 rename appconfig to nginxconfig 2019-10-13 17:08:33 -07:00
Girish Ramakrishnan
7cbe60a484 Fix crash when only udp ports are defined 2019-10-11 20:39:03 -07:00
Girish Ramakrishnan
ded9a6e377 Revert "remove unused function"
This reverts commit a19205e3ad.
2019-10-11 20:30:30 -07:00
Girish Ramakrishnan
ea205363a0 More 4.2.7 changes 2019-10-11 20:23:33 -07:00
Girish Ramakrishnan
ad13445c93 Revert "apptask: backupId/format is not part of install anymore"
This reverts commit 49e5c60422.
2019-10-11 20:21:48 -07:00
Girish Ramakrishnan
eb5c2ed30b notify failed backups
fixes #649
2019-10-11 19:54:15 -07:00
Girish Ramakrishnan
bd3080a6b3 lint 2019-10-11 19:54:15 -07:00
Girish Ramakrishnan
be5290c5ca Add error code for timeout 2019-10-11 19:54:15 -07:00
Girish Ramakrishnan
43fd207164 Kill backup task after 12 hours
this will automatically notify by email

part of #649
2019-10-11 19:13:39 -07:00
Girish Ramakrishnan
34c53694a0 Add timeout option when starting task
Part of #649
2019-10-11 19:13:39 -07:00
Girish Ramakrishnan
927f8483ce 4.2.7 changes 2019-10-11 18:43:39 -07:00
Girish Ramakrishnan
a19205e3ad remove unused function 2019-10-07 22:10:02 -07:00
Girish Ramakrishnan
49e5c60422 apptask: backupId/format is not part of install anymore 2019-10-07 15:29:18 -07:00
Girish Ramakrishnan
57b623ee44 Fix install with backupId 2019-10-07 15:01:00 -07:00
Girish Ramakrishnan
0c904af927 tpyo 2019-10-03 15:25:52 -07:00
Girish Ramakrishnan
9cd025972c Try acme flow 3 times 2019-10-03 14:47:18 -07:00
Girish Ramakrishnan
21111eccc4 retry downloadCertificate 2019-10-03 14:37:12 -07:00
Girish Ramakrishnan
917079f341 Add error message to network error 2019-10-03 14:33:49 -07:00
Girish Ramakrishnan
4d6d768be1 Append apptask logs 2019-10-03 12:20:15 -07:00
Girish Ramakrishnan
c54cd992ca Validate the location passed in repair route 2019-10-03 12:08:05 -07:00
Girish Ramakrishnan
d5ec599dd1 repair can always be called
this is because sometimes cloudron thinks there is no error, but there is
2019-10-03 11:30:00 -07:00
Girish Ramakrishnan
0542ab16d4 If cert renewal failed, continue using old cert 2019-10-03 11:11:02 -07:00
Girish Ramakrishnan
7e75ef7685 cert: add more debugs 2019-10-03 10:36:57 -07:00
Johannes Zellner
f296265461 Add changes 2019-10-03 16:31:01 +02:00
Johannes Zellner
fb4eade215 Location in configure route may be an empty string 2019-10-03 16:23:01 +02:00
Johannes Zellner
8b3e85907c Add 4.2.5 changes 2019-10-02 18:41:42 +02:00
Johannes Zellner
ca4876649d The demo setting didn't go well 2019-10-02 18:39:06 +02:00
Johannes Zellner
7ebc2abe5d Add 4.2.4 changes 2019-10-02 14:15:46 +02:00
Johannes Zellner
37e132319b Ensure demo setting is '' or 'enabled' 2019-10-02 12:58:32 +02:00
Johannes Zellner
b2728118e9 Remove unused require 2019-10-02 12:13:18 +02:00
Girish Ramakrishnan
c428f649aa typo 2019-10-01 14:40:24 -07:00
Girish Ramakrishnan
7baf979a59 Fix verbose logs 2019-10-01 14:39:40 -07:00
Girish Ramakrishnan
ccecaca047 Fix crash 2019-10-01 14:04:39 -07:00
Girish Ramakrishnan
c7ee684f25 Fix bug where nginx was not reloaded on cert renewal
Looks like it worked so far because nginx got reloaded in situations
like apptask or server reboot.
2019-10-01 11:25:57 -07:00
Girish Ramakrishnan
52156c9a35 Remove unused type field 2019-10-01 11:17:12 -07:00
Girish Ramakrishnan
4fba216af9 scaleway: try to keep part numbers low 2019-09-30 20:42:37 -07:00
Girish Ramakrishnan
1d00c788d1 Remove dead code 2019-09-30 15:54:18 -07:00
Girish Ramakrishnan
d891d39587 reverseproxy: rename to writeDefaultConfig 2019-09-30 15:28:05 -07:00
Girish Ramakrishnan
cfde6e31ad reverseproxy: improve the note 2019-09-30 15:25:53 -07:00
Girish Ramakrishnan
243772d1f5 reverseproxy: do not export reload 2019-09-30 15:23:53 -07:00
Girish Ramakrishnan
1c36b8eaf7 Add debugs 2019-09-30 11:52:23 -07:00
Girish Ramakrishnan
120fa4924a Remove confusing isInstalling usage 2019-09-30 09:58:13 -07:00
Girish Ramakrishnan
c3c9c2f39a Always pass restoreConfig for the restore case 2019-09-30 09:47:14 -07:00
Girish Ramakrishnan
fc90829ba2 repair: Use backupId only if passed in via REST API 2019-09-30 09:13:13 -07:00
Girish Ramakrishnan
ce9224c690 Set the domain and subdomain in details 2019-09-27 14:42:18 -07:00
Girish Ramakrishnan
18a2107247 Attach fqdn information consistently in the eventlog 2019-09-27 11:50:22 -07:00
Girish Ramakrishnan
f13d05dad7 Update changes 2019-09-27 11:09:50 -07:00
Girish Ramakrishnan
86586444a9 Validate alternate domain
this also sets up fqdn in the eventlog entries
2019-09-27 10:58:59 -07:00
Girish Ramakrishnan
4e47d0595d Remove ACTION_BACKUP_CLEANUP_START 2019-09-27 09:43:40 -07:00
Girish Ramakrishnan
45e85e4d53 Set overwriteDns to be true when re-configuring 2019-09-26 22:30:58 -07:00
Girish Ramakrishnan
a3420f885d Fix use of skipBackup
also, store it in the eventlog
2019-09-26 20:18:49 -07:00
Girish Ramakrishnan
a266fe13d0 Remove skipNotification flag
we always want a update finish eventlog. Otherwise, the eventlog seems
strange since it says 'started updated' but didn't finish
2019-09-26 20:06:14 -07:00
Girish Ramakrishnan
44aba5d6e1 Add changes 2019-09-26 15:00:00 -07:00
Girish Ramakrishnan
3fe5307ae3 Migrate PROVIDER from cloudron.conf correctly 2019-09-26 14:19:25 -07:00
Girish Ramakrishnan
d03fb0e71f Add separate flags for skipping backup and notification 2019-09-26 13:06:15 -07:00
Girish Ramakrishnan
d9723b72e4 Replace Acme2Error with BoxError 2019-09-25 14:13:10 -07:00
Girish Ramakrishnan
6ba61f1bda Update changes 2019-09-25 10:30:54 -07:00
Girish Ramakrishnan
d1df647ddd Another migration typo 2019-09-25 10:22:43 -07:00
Girish Ramakrishnan
95c4a1f90c Handle db migration failure 2019-09-25 10:17:02 -07:00
Girish Ramakrishnan
e00325e694 typo 2019-09-25 10:06:48 -07:00
Girish Ramakrishnan
85c13cae58 Fix platform update logic 2019-09-24 21:21:49 -07:00
Girish Ramakrishnan
00fd9e5b7f add note that db upgrade code path is br0ken 2019-09-24 20:05:55 -07:00
Girish Ramakrishnan
dde81ee847 lint 2019-09-24 19:50:24 -07:00
Girish Ramakrishnan
c46fc96500 stash the taskId instead of args 2019-09-24 13:06:13 -07:00
Girish Ramakrishnan
1914a9a703 Capitalize the Denied to be in sync with boxerror 2019-09-24 00:58:49 -07:00
Girish Ramakrishnan
1a061e4446 Only check installationState to resume tasks
also, make resumeTasks go via app logic to capture end of task
2019-09-24 00:37:29 -07:00
Girish Ramakrishnan
29ce80cebe Use DOCKER_ERROR for docker errors 2019-09-23 23:27:32 -07:00
Girish Ramakrishnan
4b6ac538ac clear the timeout just to be safe 2019-09-23 18:17:05 -07:00
Girish Ramakrishnan
70b9000b0e Fix various app state issues
Tasks initiated by repair/uninstall can run from any state
Clear taskId for failed uninstall
Clone/install can only be run on new entries
2019-09-23 18:07:12 -07:00
Girish Ramakrishnan
24dcb1b79c typo 2019-09-23 15:31:09 -07:00
Johannes Zellner
384915883f Add namecheap token error changes 2019-09-23 23:49:43 +02:00
Johannes Zellner
4cfc75f1d1 Handle namecheap ACCESS_DENIED 2019-09-23 23:35:29 +02:00
Girish Ramakrishnan
c49cbb524d Design the route for pre-flight 2019-09-23 14:34:29 -07:00
Girish Ramakrishnan
b401c3d930 Make schedule task take the command as arg 2019-09-23 14:18:14 -07:00
Girish Ramakrishnan
890a7cfb37 runState is not used for task anymore 2019-09-23 13:49:38 -07:00
Girish Ramakrishnan
70a1ef1af3 Can call uninstall as long as no task is active 2019-09-23 13:32:52 -07:00
Girish Ramakrishnan
38a0cdc0be Make the repair re-issue the install command
Otherwise, repairing a repair has to be handled
2019-09-23 13:21:25 -07:00
Girish Ramakrishnan
93344a5a4a Use 424 for access denied 2019-09-23 13:10:16 -07:00
Girish Ramakrishnan
9f792fc04b Remove DockerError 2019-09-23 12:20:25 -07:00
Girish Ramakrishnan
7cb95faacb typo 2019-09-23 10:49:50 -07:00
Girish Ramakrishnan
bf122f0f56 Allow uninstall in error state 2019-09-23 10:40:22 -07:00
Girish Ramakrishnan
78e9446a05 Refactor repair into separate function 2019-09-23 10:15:58 -07:00
Girish Ramakrishnan
138e1595fa make legacy error messages as JSON 2019-09-23 09:13:43 -07:00
Johannes Zellner
37b02ad36a oldConfig is only used for location configure now 2019-09-23 16:24:18 +02:00
Johannes Zellner
02f0055594 On repair oldConfig might not come as an argument 2019-09-23 16:18:44 +02:00
Girish Ramakrishnan
ec1f0f9320 Do not do dataDir move in configure 2019-09-23 07:15:36 -07:00
Girish Ramakrishnan
bfe6389f62 oldConfig is optional in configure 2019-09-23 07:13:51 -07:00
Johannes Zellner
30db3e8973 Fix typo in sql query 2019-09-23 15:01:20 +02:00
Johannes Zellner
5b67f2cf29 Add apt packages required for samba mounts
The linux-generic package is anyways important for ensuring extra
modules will be rebuilt during updates.
2019-09-23 12:21:37 +02:00
Girish Ramakrishnan
a007b74b1c Do no reparse null 2019-09-22 23:08:07 -07:00
Girish Ramakrishnan
a89482d4fa Send the error as a task argument
Note that if apptask dies, we will automatically restart the repair
task with the args.
2019-09-22 22:50:35 -07:00
Girish Ramakrishnan
0cd4f133aa Do not configure/restore errored apps automatically 2019-09-22 22:44:28 -07:00
Girish Ramakrishnan
e5ba4ff973 Handle legacy app error message
For apps in errored state, from a previous version of Cloudron
2019-09-22 22:25:34 -07:00
Girish Ramakrishnan
ce133b997d Make runState non-nullable 2019-09-22 22:07:47 -07:00
Girish Ramakrishnan
217632354f Allow repair in non-errored state 2019-09-22 21:56:07 -07:00
Girish Ramakrishnan
9841351190 Call configure for all the non-reinstall states 2019-09-22 09:38:36 -07:00
Girish Ramakrishnan
f3341f4b7f Make start/stop just a installation code
the runState now just tracks if an app is stopped.
2019-09-22 01:01:52 -07:00
Girish Ramakrishnan
ff1f448860 Fixup repair route
* Do not allow scheduling tasks in error state
* Only repair is allowed in error state
* Use the error object to track what to 'repair' (like the lastState)
* If uninstall failed, repair will do uninstall
* If move dir failed, repair will do move dir
2019-09-22 00:04:25 -07:00
Girish Ramakrishnan
37f28746fc Do not setup logrotate & collectd in update 2019-09-20 20:10:52 -07:00
Girish Ramakrishnan
9a22ba3af7 Add repair route
this is specifically for the case where some task failed and user
wants to get it back.
2019-09-19 23:13:44 -07:00
Girish Ramakrishnan
2942da78de Add TASK_ERROR reason code 2019-09-19 23:13:13 -07:00
Girish Ramakrishnan
89ff6be971 Make domain a field 2019-09-19 22:45:44 -07:00
Girish Ramakrishnan
be0d7bcce1 Typo 2019-09-19 22:30:51 -07:00
Johannes Zellner
851b257678 Fix typo 2019-09-20 02:05:19 +02:00
Girish Ramakrishnan
579eacb644 Better pending state check 2019-09-19 16:42:49 -07:00
Girish Ramakrishnan
f52c5b584e Fix crash when resuming stopped apps 2019-09-19 16:40:38 -07:00
Girish Ramakrishnan
8980c18deb Send back error when access denied 2019-09-19 15:24:21 -07:00
Girish Ramakrishnan
b05a9ce064 Add API to get dns record 2019-09-19 15:10:27 -07:00
Girish Ramakrishnan
1974314c1f Add changes 2019-09-18 09:12:25 -07:00
Johannes Zellner
2bde023d4d Use a file based session store
This prevents login sessions to be lost after a box restart
2019-09-18 13:00:03 +02:00
Girish Ramakrishnan
3a10003246 libssl1 asking for restart prompt during install
https://unix.stackexchange.com/questions/146283/how-to-prevent-prompt-that-ask-to-restart-services-when-installing-libpq-dev
https://github.com/confluentinc/castle/pull/1
https://bugs.launchpad.net/ubuntu/+source/ansible/+bug/1833013
2019-09-17 14:43:11 -07:00
Girish Ramakrishnan
1b08710b7e Update haraka 2019-09-16 14:44:57 -07:00
Girish Ramakrishnan
101d09eeb3 Typo in event log 2019-09-16 13:01:35 -07:00
Girish Ramakrishnan
00f949f156 Add overwriteDns arg to install & clone
this is useful in e2e
2019-09-16 09:31:34 -07:00
Girish Ramakrishnan
adbe46d369 print all the domains being registered 2019-09-16 09:22:43 -07:00
Girish Ramakrishnan
3198926cd6 return null for default dataDir 2019-09-15 22:06:03 -07:00
Girish Ramakrishnan
957a6a20fe mail: fix sieve + mail relay 2019-09-13 17:01:36 -07:00
Girish Ramakrishnan
94f75bb0d7 Update mail container for queue rework 2019-09-13 14:39:48 -07:00
Girish Ramakrishnan
0f442755e5 mail: add SRS support for mail forwarding
Fixes #637
2019-09-13 10:22:49 -07:00
Girish Ramakrishnan
cd2e782d48 Make mail tests work 2019-09-12 13:59:31 -07:00
Girish Ramakrishnan
e97606ca87 Remove internal sysadmin server
this is now unused
2019-09-12 13:33:01 -07:00
Girish Ramakrishnan
00ada80230 Add mail container changes 2019-09-11 15:03:57 -07:00
Girish Ramakrishnan
34db98c489 validate email in addList 2019-09-11 14:36:10 -07:00
Girish Ramakrishnan
110695355c Make mailing list members fully qualified
Part of #637
2019-09-11 12:51:57 -07:00
Girish Ramakrishnan
021fb4bb94 Add skysilk provider 2019-09-11 09:14:04 -07:00
Girish Ramakrishnan
dea033e4b0 Fix comment 2019-09-10 15:43:16 -07:00
Girish Ramakrishnan
7dfe40739e Remove apps.getAppConfig 2019-09-10 15:41:35 -07:00
Girish Ramakrishnan
9f0d1b515c Add param to overwrite DNS 2019-09-10 15:41:32 -07:00
Girish Ramakrishnan
2691d46d50 migrate: only pass the old data dir 2019-09-10 15:15:20 -07:00
Girish Ramakrishnan
78c8f1de71 Add specific installation states to help out UI 2019-09-10 14:25:12 -07:00
Girish Ramakrishnan
d27ee4bfbc More changes 2019-09-10 14:20:16 -07:00
Girish Ramakrishnan
cc5daa428d Fix location change event log 2019-09-10 13:57:58 -07:00
Girish Ramakrishnan
3e2189aeed Remove obsolete configure route 2019-09-09 22:08:08 -07:00
Girish Ramakrishnan
79f9963792 Add robotsTxt tests 2019-09-09 21:52:01 -07:00
Girish Ramakrishnan
6f53723169 test data dir migration 2019-09-09 21:25:39 -07:00
Girish Ramakrishnan
d8cb100fc0 Add mailbox test 2019-09-09 16:34:48 -07:00
Girish Ramakrishnan
5f9b2f1159 Add env and debug mode tests 2019-09-09 15:46:29 -07:00
Girish Ramakrishnan
801ca7eda1 Break down the configure route 2019-09-09 14:35:52 -07:00
Girish Ramakrishnan
45a2d3745c Fix app eventlog 2019-09-06 14:47:44 -07:00
Girish Ramakrishnan
551fe4d846 Use BoxError everywhere in apptask 2019-09-06 11:33:24 -07:00
Girish Ramakrishnan
791981c2f2 trim the provider 2019-09-06 10:24:19 -07:00
Girish Ramakrishnan
a18a620847 Add BoxError.toPlainObject 2019-09-05 21:11:38 -07:00
Girish Ramakrishnan
99e63ffc3f Use BoxError for apptask errors 2019-09-05 18:13:53 -07:00
Girish Ramakrishnan
e10a6d9de5 Bump graphite for buffer size fix 2019-09-05 14:33:32 -07:00
Girish Ramakrishnan
147f16571a Handle error in graphs code 2019-09-05 14:30:21 -07:00
Girish Ramakrishnan
bd1fbc4a05 typo 2019-09-05 11:42:32 -07:00
Girish Ramakrishnan
0843f78ec8 Add tasks.setCompleted
this lets us easily grep the code on where the task is completed
2019-09-05 11:29:48 -07:00
Girish Ramakrishnan
9769fbfcf2 Better message 2019-09-05 11:22:29 -07:00
Girish Ramakrishnan
7e73197eb9 Trigger re-configure of apps for collectd config 2019-09-05 09:24:37 -07:00
Girish Ramakrishnan
e3964fd710 Fix crash in setUpdateSuccess 2019-09-04 16:11:59 -07:00
Girish Ramakrishnan
e66961b814 merge registerSubdomains and registerAlternateDomains
also, merge unregisterSubdomain and unregisterAlternateDomains
also, fix crash where app.oldConfig is used
2019-09-03 19:55:41 -07:00
Girish Ramakrishnan
4176e5a98e Add note in schema 2019-09-03 19:04:12 -07:00
Girish Ramakrishnan
45cf8a62d1 remove obsolete comment 2019-09-03 18:52:37 -07:00
Girish Ramakrishnan
b1380819ba debug taskId 2019-09-03 16:06:28 -07:00
Girish Ramakrishnan
57fa457596 Typo in error handling 2019-09-03 15:55:57 -07:00
Girish Ramakrishnan
de1e218ce9 Return BAD_FIELD if dataDir conflicts 2019-09-03 15:17:48 -07:00
Girish Ramakrishnan
e117ee2bef Cleanup app error codes
1. The error classes (like AppsError) now take a 3rd argument details.
We can attach anything in this 3rd argument and this gets sent in the
REST response as well.

2. The HttpError class is now HttpError(statusCode, errorOrMessage). If
it's an error object, it will take the message and other things which
were attached above from it and send them across. Previously, we used to
mark this case an internal error all the time.

3. AppsError only has generic codes now. The UI code then simply checks
for additional information that we attached to show errors. For example,
BAD_FIELD will have a field: 'xx' indicating which field is at fault.
ALREADY_EXISTS has information on which domain or port caused a problem.
The advantage here is we can drop all these error codes that are
specific to each model code.

4. Maybe some day, we can remove all these error classes and have only
one generic class. AppsError right now is pretty generic already. We can
use that error code everywhere... No need to translate errors also
everywhere.

5. Finally, in the router code, I have this function toHttpError (in
apps.js) which is also so much cleaner than what we have now. We keep
writing the same stuff over and over.
2019-09-03 10:39:02 -07:00
Girish Ramakrishnan
a9e101d9f4 Add note on why it is BAD_STATE 2019-09-02 13:55:43 -07:00
Girish Ramakrishnan
a2f8203a42 Add location conflict error code 2019-09-02 12:42:28 -07:00
Girish Ramakrishnan
b9ee127775 Send detail in apps error 2019-09-02 12:41:32 -07:00
Girish Ramakrishnan
6668bb3e8a Handle BAD_STATE as well 2019-09-02 12:17:48 -07:00
Girish Ramakrishnan
5fd129e509 send reason code as part of details 2019-09-01 21:22:46 -07:00
Girish Ramakrishnan
d59c1f53b9 apps: add detail to http error messages 2019-09-01 18:35:06 -07:00
Girish Ramakrishnan
d2f38c1abc Remove unused error code 2019-09-01 17:39:07 -07:00
Girish Ramakrishnan
c0a1db6941 Send details as part of AppsError
the last mile module has been updated to pipe through additional properties.
2019-09-01 13:42:25 -07:00
Girish Ramakrishnan
fc10b4a79b Update lastmile 2019-09-01 13:34:40 -07:00
Girish Ramakrishnan
9da2117e99 Re-enable configure/restore test 2019-08-30 16:12:35 -07:00
Girish Ramakrishnan
7e030b149b More changes 2019-08-30 15:51:50 -07:00
Girish Ramakrishnan
bd23abd265 tasks: make error a json
also, handle case where we never got to handle task exit cleanly
2019-08-30 14:49:45 -07:00
Girish Ramakrishnan
dd0fb8292c Move state enums to the model code 2019-08-30 13:21:51 -07:00
Girish Ramakrishnan
b4cbf63519 Remove installationState contraint when settings health 2019-08-30 12:57:59 -07:00
Girish Ramakrishnan
4fd04fa349 Add proper error codes 2019-08-30 12:42:38 -07:00
Girish Ramakrishnan
c22cdb8d81 Return error object in the API 2019-08-30 11:34:04 -07:00
Johannes Zellner
eb963b2eb4 Add externalldap pagination 2019-08-30 20:26:09 +02:00
Girish Ramakrishnan
7d299908c9 Fix tests 2019-08-30 10:49:43 -07:00
Girish Ramakrishnan
2585282f86 errorMessage -> errorJson 2019-08-30 10:02:24 -07:00
Johannes Zellner
f25d5b3304 Deliver the user account source in the profile api 2019-08-30 13:36:37 +02:00
Johannes Zellner
6e878faa8b Also sync fallbackEmail from ldap 2019-08-30 13:10:49 +02:00
Johannes Zellner
15a6cbe62b Make sure all password change input fields use the same validation pattern 2019-08-30 12:14:32 +02:00
Johannes Zellner
76b0b214ec Do not sync non-ldap users from ldap if usernames match
We might want to make that option in the future depending on use-cases
2019-08-30 10:20:04 +02:00
Johannes Zellner
f5c643c960 Add some debugging logs when users are created or updated 2019-08-30 10:20:04 +02:00
Johannes Zellner
ca8e0613fb Skip notifications for ldap syncer events 2019-08-30 10:20:04 +02:00
Johannes Zellner
0c9334d0d2 Ensure we wait for all user sync db actions to finish 2019-08-30 10:20:04 +02:00
Johannes Zellner
712dc97e9b Move the basic ldap argument validation 2019-08-30 10:20:04 +02:00
Johannes Zellner
4df48c97ec Ignore the bindDn user in the syncer 2019-08-30 10:20:04 +02:00
Johannes Zellner
fe3ea53cda Ldap usually uses cn as displayName 2019-08-30 10:20:04 +02:00
Johannes Zellner
d385c80882 Use external ldap bind for users from ldap source 2019-08-30 10:20:04 +02:00
Johannes Zellner
b823213c94 Create and update users from external ldap 2019-08-30 10:20:04 +02:00
Johannes Zellner
4b86311ab9 Add user source property to schema 2019-08-30 10:20:04 +02:00
Johannes Zellner
b9efa8f445 Use tasks api for external ldap syncer 2019-08-30 10:20:04 +02:00
Johannes Zellner
f8db12346d Perform some basic static input validation for external ldap 2019-08-30 10:20:04 +02:00
Johannes Zellner
4d3948f81f Improve external ldap error reporting 2019-08-30 10:20:04 +02:00
Johannes Zellner
5431d50206 Also check errors when no bindDn is provided 2019-08-30 10:20:04 +02:00
Johannes Zellner
6db078c26a Handle externalldap errors correctly in settings route 2019-08-30 10:20:04 +02:00
Johannes Zellner
f61e9c7f27 Catch basic protocol errors 2019-08-30 10:20:04 +02:00
Johannes Zellner
567d92ce00 Add external ldap enabled boolean flag 2019-08-30 10:20:04 +02:00
Johannes Zellner
7a6d26c5da Add settings route handler for external ldap configs 2019-08-30 10:20:04 +02:00
Johannes Zellner
046ac85177 Add initial externalldap code to validate ldap configs 2019-08-30 10:20:04 +02:00
Girish Ramakrishnan
f0fd088247 Pick values from updateConfig 2019-08-29 20:50:45 -07:00
Girish Ramakrishnan
5ec0d1e691 Add to changes 2019-08-29 15:10:55 -07:00
Girish Ramakrishnan
9391a934c3 Do not update on uninstall 2019-08-29 14:38:42 -07:00
Girish Ramakrishnan
bb62e6a318 clear taskId in the parent process 2019-08-29 13:43:45 -07:00
Girish Ramakrishnan
0da6539c48 Add progressCallback to run commands 2019-08-29 13:41:11 -07:00
Girish Ramakrishnan
9cf833dab2 Use taskId instead of states to check bad state
a) this is because, we have install state and run state.
b) we have to put taskId as part of the transaction to prevent race
2019-08-29 13:15:40 -07:00
Girish Ramakrishnan
ed57260fcf add note on why it is a state 2019-08-29 11:07:19 -07:00
Girish Ramakrishnan
c98f625c4c Make force update as task arg 2019-08-29 10:59:05 -07:00
Girish Ramakrishnan
f3008064e4 Fix installation states
App operations can only be done in 'installed' or 'error' state.
If some other operation is in progress, you have to cancel it first.

This guarantees that the old app command got killed.
2019-08-29 10:14:23 -07:00
Girish Ramakrishnan
1faee00764 Better progress text when waiting for other tasks
Fixes #630
2019-08-28 22:13:50 -07:00
Girish Ramakrishnan
a40505e2ee Remove pause flag, we already have platform lock 2019-08-28 22:13:50 -07:00
Girish Ramakrishnan
484202b4c6 better variable name 2019-08-28 21:31:42 -07:00
Girish Ramakrishnan
6a7fc17c60 Make restore/configure use scheduleTask 2019-08-28 15:36:50 -07:00
Girish Ramakrishnan
05d3897ae2 Make apps test work again 2019-08-28 15:30:23 -07:00
Girish Ramakrishnan
9f1210202a port taskmanager to use tasks 2019-08-28 15:17:53 -07:00
Girish Ramakrishnan
be6b172d6f Remove app task eventlog 2019-08-28 13:24:05 -07:00
Girish Ramakrishnan
fef9e0a5c1 Handle app task crashes 2019-08-28 13:19:47 -07:00
Girish Ramakrishnan
b84b033bf3 typo 2019-08-28 12:51:00 -07:00
Girish Ramakrishnan
b30ff1f55a rework task API to be two-phase
this lets us avoid this EE based API. we now add and then start
explicitly.
2019-08-28 10:39:40 -07:00
Girish Ramakrishnan
c6be0b290b updateConfig is no more 2019-08-27 22:03:43 -07:00
Girish Ramakrishnan
33cfd7a629 Add 'success' virtual field to the tasks 2019-08-27 21:36:52 -07:00
Girish Ramakrishnan
5952a5c69d Send taskId in the response 2019-08-27 21:35:40 -07:00
Girish Ramakrishnan
20de563925 rename installationProgress to errorMessage 2019-08-27 20:08:35 -07:00
Girish Ramakrishnan
7da80b4c62 Ensure log directory 2019-08-27 16:36:19 -07:00
Girish Ramakrishnan
15d765be6d Comment out couple of tests 2019-08-27 16:36:19 -07:00
Girish Ramakrishnan
bfe2f116a7 Make restoreConfigJson, oldConfigJson, updateConfigJson as task args 2019-08-27 16:36:15 -07:00
Girish Ramakrishnan
f535b3de2f Add logFile option to startTask 2019-08-27 15:26:26 -07:00
Girish Ramakrishnan
e560c18b57 apptask is not a separate process anymore 2019-08-27 12:31:59 -07:00
Girish Ramakrishnan
aecb99b6a3 Use task API in run commands 2019-08-27 12:31:59 -07:00
Girish Ramakrishnan
7da17f8190 Use task API in app backup 2019-08-27 12:31:59 -07:00
Girish Ramakrishnan
1964270a4f Use task API in app update 2019-08-27 12:31:59 -07:00
Girish Ramakrishnan
f45b61d95c Use task API for app restore 2019-08-27 12:31:59 -07:00
Girish Ramakrishnan
ff11c38169 Use task API for app clone 2019-08-27 12:31:59 -07:00
Girish Ramakrishnan
3e67067431 Use task API for app uninstall 2019-08-27 12:31:59 -07:00
Girish Ramakrishnan
824f00d1e8 Use task API for app configure 2019-08-27 12:31:59 -07:00
Girish Ramakrishnan
96d19f59a4 Use task API for app install 2019-08-27 12:31:59 -07:00
Girish Ramakrishnan
42c6fe50d2 Make progressCallback take an optional callback 2019-08-27 12:31:59 -07:00
Girish Ramakrishnan
9242f7095a Migrate apptask to use tasks framework 2019-08-27 12:31:59 -07:00
Girish Ramakrishnan
99c9fbc38f add taskId to appdb 2019-08-27 12:31:55 -07:00
Girish Ramakrishnan
0d31207ad7 add taskId to tasks table 2019-08-26 14:27:29 -07:00
Girish Ramakrishnan
8af7dbc35a group -> list 2019-08-23 16:36:19 -07:00
Johannes Zellner
d0a373cb15 Refresh dns records for dynamic dns setting every hour
Often home IPs change at the full hour, so we give it 5min to settle
2019-08-23 16:20:26 +02:00
Johannes Zellner
3dc87bbca8 Allow embedding pages from same origin 2019-08-22 11:37:54 +02:00
Girish Ramakrishnan
a55c399585 cloudron-support: Use the PROVIDER file 2019-08-21 21:23:22 -07:00
Girish Ramakrishnan
f74aa24dd2 cloudron-setup: make it work for old installs
need this for the auto-update test
2019-08-21 21:18:08 -07:00
Girish Ramakrishnan
1aa7eb4478 Collect and aggregate du information twice a day 2019-08-21 13:45:52 -07:00
Girish Ramakrishnan
0c7002ba59 settings.adminOrigin has to be loaded after setAdmin
the dangers of caching
2019-08-21 13:26:15 -07:00
Girish Ramakrishnan
fd6dd1ea18 Add timestamp to the logs 2019-08-21 10:16:57 -07:00
Girish Ramakrishnan
aa74d5cd82 Add a note 2019-08-20 19:47:24 -07:00
Girish Ramakrishnan
8fc10a0bdd Add note 2019-08-20 15:26:00 -07:00
Girish Ramakrishnan
809ed0f0dc clear db to stop the scheduler 2019-08-20 13:42:03 -07:00
Girish Ramakrishnan
b8a4e1c4a3 Use docker for apps-test 2019-08-20 13:34:18 -07:00
Girish Ramakrishnan
d9e45f732b Fix error message 2019-08-20 13:22:43 -07:00
Girish Ramakrishnan
ca025b36f7 Define DockerError.EXTERNAL_ERROR 2019-08-20 13:11:06 -07:00
Girish Ramakrishnan
bfb719d35e Remove use of dockerProxy 2019-08-20 11:50:54 -07:00
Girish Ramakrishnan
2a1b61107f Make the ldap test work 2019-08-20 11:45:00 -07:00
Johannes Zellner
969cee7c90 Rebuilding docker container takes a long time, so callback early
Otherwise the service restart request will just time out in the
dashboard
2019-08-20 12:12:24 +02:00
Johannes Zellner
7a3f579d3e Do not crash if a service without active docker container needs restart 2019-08-20 12:06:49 +02:00
Johannes Zellner
288d5efa88 Return DockerError instead of generic Error 2019-08-20 12:06:22 +02:00
Johannes Zellner
7be821963c Ensure we report stopped status for addons without a running docker container 2019-08-20 11:27:35 +02:00
Girish Ramakrishnan
a236f8992a graphite: Fixup healthcheck url 2019-08-19 22:27:53 -07:00
Girish Ramakrishnan
a5c2257f39 Update changelog 2019-08-19 19:10:30 -07:00
Girish Ramakrishnan
9d3b4ba816 store docker df output as well 2019-08-19 16:15:31 -07:00
Girish Ramakrishnan
43bf0767f1 remove docker proxy from tests
this is too complicated and also makes it hard to keep up with upstream API
2019-08-19 14:35:23 -07:00
Girish Ramakrishnan
b301e5b151 Add dockerDataDisk to disks response 2019-08-19 14:14:13 -07:00
Girish Ramakrishnan
2b484c0382 collect maildata size separately 2019-08-19 13:23:31 -07:00
Johannes Zellner
f40ab4e2d5 Use git+https for cloudron-io/df 2019-08-19 09:19:06 +02:00
Girish Ramakrishnan
c0a27380e9 Add to changes 2019-08-18 21:59:20 -07:00
Girish Ramakrishnan
0d7a3f43c4 Collect du information 2019-08-18 21:52:41 -07:00
Girish Ramakrishnan
8195e439f3 Return all disks
We now return the disk information per app as well
2019-08-16 10:29:56 -07:00
Johannes Zellner
b5edbf716c Add interox provider option 2019-08-14 14:47:08 +02:00
Johannes Zellner
466265fde1 Allow iframe embedding of cloudron.io pages 2019-08-14 14:44:12 +02:00
Girish Ramakrishnan
40033e09cd Check disk space before create app/box backups
Fixes #642
2019-08-13 10:55:02 -07:00
Johannes Zellner
573663412c Add more fuzzy user search
Fixes #646
2019-08-13 15:23:26 +02:00
Johannes Zellner
17599417f7 WIP 2019-08-13 15:16:17 +02:00
Girish Ramakrishnan
0ece6d8b0e Add dataDir to schema 2019-08-12 22:16:45 -07:00
Girish Ramakrishnan
e0ac0393fe typo 2019-08-12 21:47:22 -07:00
Girish Ramakrishnan
6d38b3255c Check available disk space before update
Part of #642
2019-08-12 21:09:22 -07:00
Girish Ramakrishnan
477ff424d6 Check if we have enough disk space for docker
Part of #642
2019-08-12 20:47:53 -07:00
Girish Ramakrishnan
a843104348 sftp: typo 2019-08-12 11:31:59 -07:00
Girish Ramakrishnan
0f4bc0981a graphs: fix render forwarding 2019-08-12 11:01:12 -07:00
Girish Ramakrishnan
07f6351465 Make graphite dashboard appear again 2019-08-11 22:45:11 -07:00
Girish Ramakrishnan
1b26e86365 Fix test 2019-08-10 09:37:42 -07:00
Girish Ramakrishnan
94b4bf94c0 Merge active flag into update route 2019-08-08 08:17:08 -07:00
Girish Ramakrishnan
d5de05b633 Send user active flag 2019-08-08 07:19:50 -07:00
Girish Ramakrishnan
0ab6cad048 Add user enable/disable flag 2019-08-08 06:31:46 -07:00
Girish Ramakrishnan
9833ad548b Better progress message 2019-08-07 06:23:28 -07:00
Girish Ramakrishnan
aa1ba3b226 Make apps-test pass 2019-08-06 10:27:19 -07:00
Girish Ramakrishnan
3774d4de28 Use API for pullImage
This allows to get proper error code

This mostly reverts commit 734286ba2e.
2019-08-06 09:46:09 -07:00
Girish Ramakrishnan
e4961726bc Try to make apps-test work 2019-08-05 16:16:56 -07:00
Girish Ramakrishnan
77cf7d0da6 Bump test version 2019-08-05 06:39:16 -07:00
Girish Ramakrishnan
a993e0b228 Add fullstop 2019-08-04 15:35:42 -07:00
Girish Ramakrishnan
43671a9fd6 Clear update task progress after update
Fixes #635
2019-08-04 10:21:42 -07:00
Girish Ramakrishnan
49cfd1e9b7 Add notification for box update
Fixes #634
2019-08-04 05:44:04 -07:00
Girish Ramakrishnan
58d4a4f54f quoting and fullstop 2019-08-03 10:36:38 -07:00
Girish Ramakrishnan
e4e328ba6a Make user event titles better 2019-08-03 10:17:07 -07:00
Girish Ramakrishnan
fd6bc955ff Remove extra line 2019-08-03 09:41:16 -07:00
Girish Ramakrishnan
511a18e0ed Display app changelog and version
part of #634
2019-08-03 09:22:13 -07:00
Girish Ramakrishnan
e29d224a92 Be a bit more specific 2019-07-31 15:45:25 -07:00
Girish Ramakrishnan
bb48ffb01f Fixup UA for easier detection (other than IP) 2019-07-31 15:43:15 -07:00
Girish Ramakrishnan
31fd3411f7 Add to changes 2019-07-30 15:41:03 -07:00
Girish Ramakrishnan
a737d2675e Fix logrotation rules
* explicitly specify the dirs that are getting rotated
* app log rules are now moved to logrotate.ejs
* we keep task logs for a week

Some testing notes:
* touch -d "10 days ago" foo
* logrotate /etc/logrotate.conf -v to test rotation. there is a state
file created in /var/lib/logrotate/status. If we have a 'daily' rule,
it will get processed only after a log line in status exists and it's atleast
1 day old timestamp.

https://github.com/logrotate/logrotate/blob/master/logrotate.c is quite
readable
2019-07-30 15:37:15 -07:00
Girish Ramakrishnan
fd462659cd tmp cleaner: only remove files and not directories
some apps like rocket.chat create directories in tmp and removing those
directories causes problems (for example, uploading)
2019-07-30 14:06:04 -07:00
Johannes Zellner
cb10d0d465 Add time4vps provider 2019-07-29 20:54:41 +02:00
Girish Ramakrishnan
61f1c4884c Refactor logic so that settings.adminDomain is read in the closure 2019-07-27 19:21:49 -07:00
Girish Ramakrishnan
2cd00de6e3 initCache after every restore 2019-07-27 19:09:09 -07:00
Girish Ramakrishnan
d3c5d53eae silence mysql warning 2019-07-26 22:35:44 -07:00
Girish Ramakrishnan
6dfafae342 move the comment 2019-07-26 22:19:14 -07:00
Girish Ramakrishnan
2f861c3309 specify the database 2019-07-26 22:12:40 -07:00
Girish Ramakrishnan
af388f0f16 IP based restore 2019-07-26 21:37:33 -07:00
Girish Ramakrishnan
c36cc86c5f init cache in various out of process workers 2019-07-26 19:38:42 -07:00
Girish Ramakrishnan
02f195b25c typo 2019-07-26 15:02:03 -07:00
Girish Ramakrishnan
18623fd9b7 cloudron.conf can be removed post migration 2019-07-26 14:55:36 -07:00
Girish Ramakrishnan
9b74bb73aa config.js is dead, long live config.js
we use settings now
2019-07-26 14:51:51 -07:00
Girish Ramakrishnan
ee9636b496 move use of TEST and CLOUDRON to constants 2019-07-26 10:13:20 -07:00
Girish Ramakrishnan
5c2cbd7840 Move config.baseDir to paths 2019-07-26 10:07:08 -07:00
Girish Ramakrishnan
7fbac6cc17 typo 2019-07-26 08:44:37 -07:00
Girish Ramakrishnan
9e7e9d66bf move provider into sysinfo
this is ideally "auto-detectable" runtime information
2019-07-26 07:33:22 -07:00
Girish Ramakrishnan
7fe66aa7fa Remove unused settings.get 2019-07-25 16:31:02 -07:00
Girish Ramakrishnan
2dda0efe83 Move config.database to db code itself 2019-07-25 16:12:42 -07:00
Girish Ramakrishnan
59620ca473 config.get is dead 2019-07-25 16:08:54 -07:00
Girish Ramakrishnan
12eae1eff2 Make port a constant 2019-07-25 16:08:54 -07:00
Girish Ramakrishnan
b03bf87b7d remove unused function 2019-07-25 16:08:54 -07:00
Girish Ramakrishnan
c32718b164 Make ldap and docker proxy port as constants 2019-07-25 16:08:54 -07:00
Girish Ramakrishnan
a6ea12fedc Make internal smtp port a constant 2019-07-25 16:08:54 -07:00
Girish Ramakrishnan
2d260eb0d5 Make sysadminPort a constant 2019-07-25 16:08:51 -07:00
Girish Ramakrishnan
d7dd069ae0 Use constants.version instead of config.version 2019-07-25 15:02:14 -07:00
Girish Ramakrishnan
6a77a58489 Move hasIPv6 into sysinfo 2019-07-25 14:35:08 -07:00
Girish Ramakrishnan
c30ac5f927 Add setting key names 2019-07-25 14:35:04 -07:00
Girish Ramakrishnan
437f7ef890 Migrate cloudron.conf into db 2019-07-25 14:34:16 -07:00
Girish Ramakrishnan
1f7347e8de Make custom.yml as part of the backup 2019-07-25 10:28:42 -07:00
Girish Ramakrishnan
96f59d7cfe config: edition is long gone 2019-07-24 22:32:16 -07:00
Girish Ramakrishnan
d55f65c7c9 Better error message 2019-07-24 22:11:22 -07:00
Girish Ramakrishnan
9a0d5b918f totp: set window to 2
see https://github.com/speakeasyjs/speakeasy#specifying-a-window-for-verifying-hotp-and-totp

A TOTP is incremented every step time-step seconds. By default, the time-step is
30 seconds. Window of 2 means, +- 2 steps.

Fixes #633
2019-07-23 14:45:54 -07:00
Girish Ramakrishnan
3553fbc7b6 Add wasabi storage backend 2019-07-22 16:44:56 -07:00
Girish Ramakrishnan
55d53f13d9 Improve error message 2019-07-18 10:28:37 -07:00
Johannes Zellner
27369a650c Fix disk full docs link 2019-07-16 15:10:56 +02:00
Girish Ramakrishnan
913f0d5d97 Update changes file 2019-07-15 10:50:14 -07:00
Girish Ramakrishnan
ada63ec697 Add app.adminEmail 2019-07-12 14:29:35 -07:00
Girish Ramakrishnan
117f06e971 Fix issue where tar backups with files > 8GB was corrupt
Fixes #640
2019-07-10 14:58:54 -07:00
Johannes Zellner
9f03a9a6e2 Do first a patch release 2019-07-03 19:14:00 +02:00
Johannes Zellner
ce406c7088 Add groupCount to backendSettings 2019-07-03 13:47:23 +02:00
Girish Ramakrishnan
e7127df30d remove app ownerId
this is unused
2019-07-02 21:23:51 -07:00
Girish Ramakrishnan
10e2817257 Add 4.2 changes 2019-07-02 19:24:49 -07:00
Girish Ramakrishnan
337a47c62b typo 2019-07-02 16:46:14 -07:00
Girish Ramakrishnan
14bdac20ef cloudron-support: add --admin-login 2019-07-02 16:37:46 -07:00
Girish Ramakrishnan
88e2b3f9aa Add userCount to backend settings 2019-07-01 23:26:43 -07:00
Girish Ramakrishnan
22d731f06d Fix LDAP not accessible via scheduler containers
Check the IP address against scheduler containers as well
2019-06-27 16:12:09 -07:00
Girish Ramakrishnan
e3d288ef7d Add MONGODB_OPLOG_URL for apps that require oplog access
remove the replicaSet arg (it causes problems in tests but not in apps).
it causes some issues because of hostname not being set properly/docker network.
this only prevents the client from using replicaSet features which doesn't apply
to us since it is single instance.
2019-06-27 13:19:59 -07:00
Girish Ramakrishnan
455f597543 Add changes 2019-06-26 21:40:03 -07:00
Girish Ramakrishnan
8c9e626920 Remove twitter and chat link from the login footer 2019-06-26 21:39:07 -07:00
Girish Ramakrishnan
5a000c1ff4 Add MONGODB_REPLICA_SET for mongodb addon
This can be useful for constructing the ?replSet= part of the URI.
replicaSet is used by the client to discover the secondaries and fallback
automatically. if not provided, they just talk to primary.
2019-06-26 21:29:43 -07:00
Girish Ramakrishnan
ddf634bfb2 o2 has stopped working 2019-06-26 18:40:07 -07:00
Girish Ramakrishnan
89d3b8cc6a Make hostname more explicit 2019-06-26 14:21:47 -07:00
Girish Ramakrishnan
49af6d09a2 CLOUDRON_APP_HOSTNAME should be the app id always
name is the container name which is "unique"
2019-06-26 14:21:43 -07:00
Girish Ramakrishnan
e5b0cac284 Clarify comment 2019-06-26 14:13:26 -07:00
Girish Ramakrishnan
6f33900f85 Fix failing test 2019-06-21 15:05:28 -07:00
Girish Ramakrishnan
514823af7d More changes 2019-06-21 13:34:24 -07:00
Girish Ramakrishnan
65b058f563 More changes 2019-06-21 11:12:25 -07:00
Girish Ramakrishnan
7c8560deff Ensure redis addon vars are replaced with manifest v2 2019-06-20 23:43:18 -07:00
Girish Ramakrishnan
6bbe2613b4 Return 412 for bad password 2019-06-20 16:44:53 -07:00
Girish Ramakrishnan
5771478e4b Use 412 for invalid token, otherwise user gets logged out 2019-06-20 16:37:16 -07:00
Girish Ramakrishnan
e13030bc89 fontawesome location has changed 2019-06-20 16:27:27 -07:00
Girish Ramakrishnan
0a0ac93a55 Use pattern match instead for handling v1 to v2 upgrades 2019-06-20 11:59:02 -07:00
Girish Ramakrishnan
214fb50e74 Add 4.1.5 changes 2019-06-20 11:49:39 -07:00
Girish Ramakrishnan
959f8ee31e Ensure passwords are preserved with v2 manifest 2019-06-20 11:46:50 -07:00
Girish Ramakrishnan
cb0d75be37 Add changes 2019-06-19 09:19:05 -07:00
Girish Ramakrishnan
11353e9e3a DO DNS API break means this value must atleast be 30
(cherry picked from commit c0c5561aac)
2019-06-17 20:13:32 -07:00
Girish Ramakrishnan
8cd5c15c2b Fix mail auth with manifest v2 2019-06-17 11:13:59 -07:00
Girish Ramakrishnan
b86b8b8ee1 4.1.4 changes
(cherry picked from commit 73a44d1fb2)
2019-06-16 17:59:18 -07:00
Girish Ramakrishnan
c5f6e6b028 Prefix mysql url/database variables 2019-06-15 10:06:51 -07:00
Girish Ramakrishnan
592d8abc58 Roll back async package
something is broken, not sure what
2019-06-14 16:24:41 -07:00
Girish Ramakrishnan
d93068fc62 Update package lock 2019-06-14 15:32:11 -07:00
Girish Ramakrishnan
a864af52df Update packages 2019-06-14 15:31:13 -07:00
Johannes Zellner
1eedd4b185 Send changelog for updated app notifications 2019-06-12 17:15:02 +02:00
Johannes Zellner
9d38edfe95 Update the emaildevelop test template data 2019-06-12 17:14:58 +02:00
Johannes Zellner
f895ebba73 Add some changes 2019-06-12 10:13:36 +02:00
Girish Ramakrishnan
511287b16e linter likes this better 2019-06-11 12:32:15 -07:00
Johannes Zellner
530e06ec66 Add changes 2019-06-11 20:33:56 +02:00
Johannes Zellner
9cab383b43 Namecom does not support @ for naked domain anymore 2019-06-11 20:33:56 +02:00
Girish Ramakrishnan
9785ab82ed Use cloudron as prefix instead of suffix 2019-06-11 09:39:45 -07:00
Johannes Zellner
9d237e7bd6 Fix sudo installation on scaleway 2019-06-11 13:30:15 +02:00
Girish Ramakrishnan
7e9885012d vary dkim selector per mail domain
this is required for the case where the domain is added on multiple
cloudrons. initially, the plan was to just vary this as a derivation
of the dashboard domain. but this will break existing installation (wildcard
and manual domain setups cannot be re-programmed automatically).
2019-06-10 18:35:38 -07:00
Girish Ramakrishnan
1de785d97c cloudron-support: add ip addr output
with cloudflare dns, we don't have ip to login
2019-06-10 09:31:34 -07:00
Girish Ramakrishnan
2bd6566537 clear timeout when get services status 2019-06-09 22:20:35 -07:00
Girish Ramakrishnan
88fa4cf188 remove reserved 'api' location
this is unused and we have no plans to use it.
2019-06-09 18:16:31 -07:00
Girish Ramakrishnan
b26167481e Make the dkim private keys readable
https://forum.cloudron.io/topic/1675/dkim-and-dmarc-for-built-in-outgoing-mail/25
2019-06-06 14:45:42 -07:00
Girish Ramakrishnan
1b6af9bd12 scaleway: add tzdata
the bionic image is missing this and only has UTC in the output
of timedatectl list-timezones
2019-06-06 12:42:07 -07:00
Girish Ramakrishnan
0159963cb0 More changes 2019-06-06 11:43:24 -07:00
Girish Ramakrishnan
996041cabc add mechanism to whitelist and blacklist apps 2019-06-06 11:42:42 -07:00
Girish Ramakrishnan
cb0352e33c Do not remove existing custom.yml 2019-06-06 11:24:19 -07:00
Johannes Zellner
3169f032c8 Return correct conflicting domain 2019-06-05 19:54:15 +02:00
Girish Ramakrishnan
5ff8ee1a8f Check manifest version when installing an app
This should have been done for manifest v1 already. For now, apps
will have to put in a minBoxVersion.
2019-06-03 14:02:47 -07:00
Girish Ramakrishnan
d3f31a3ace Ensure all env vars have the CLOUDRON_ prefix
this is currently injected based on the manifest version (i.e v2)
2019-06-03 13:45:35 -07:00
Girish Ramakrishnan
ac7e7f0db9 Set name as the network alias for app containers
this allows scheduler containers to reach app containers by http

https://forum.cloudron.io/topic/1082/bitwarden-self-hosted-password-manager
2019-06-01 10:48:51 -07:00
Girish Ramakrishnan
4c1e967dad give containers a hostname
this only affects the hostname and not the network name/alias
2019-06-01 10:02:26 -07:00
Girish Ramakrishnan
f3ccd5c074 More changes 2019-06-01 09:05:48 -07:00
Girish Ramakrishnan
8369c0e2c0 4.1.2 changes 2019-05-31 12:52:57 -07:00
Girish Ramakrishnan
122a966e72 No exclamation 2019-05-30 12:17:47 -07:00
Girish Ramakrishnan
9c2ff2f862 fix image prune logic 2019-05-29 12:15:13 -07:00
Girish Ramakrishnan
0ba45e746b Accept incoming mail from a private relay 2019-05-29 11:33:37 -07:00
Girish Ramakrishnan
54c06cdabb support: send a result message 2019-05-28 10:04:04 -07:00
Girish Ramakrishnan
5a2e10317c remove autoconf
this was mostly for caas
2019-05-24 15:20:25 -07:00
Girish Ramakrishnan
8292d52acf Add changes 2019-05-24 11:19:22 -07:00
Girish Ramakrishnan
7d21470fc7 remove cloudron-provision
will move to separate repo
2019-05-22 22:33:41 -07:00
Girish Ramakrishnan
eb0530bcba add note 2019-05-22 18:33:02 -07:00
Girish Ramakrishnan
8855092faa update changes 2019-05-22 14:39:47 -07:00
Girish Ramakrishnan
2e02a3c71e Revert "only admins have sftp access"
This reverts commit ecc9415679.

We want to support the workflow where normal users can have SFTP
access without being cloudron admins. The reason it is admin only
is because it is possible to upload/modify app code via SFTP to
then get cloudron admin credentials.

For this reason, we will fixup the apps as follows:
* Unmanaged WP - remove LDAP integration
* LAMP - remove LDAP. We will make a new major version that informs
  the user NOT to update the app if they use LDAP. In 4.1, we will
  expose the LDAP server, so they can use the public LDAP server for
  any integration.
* Managed WP - Remove SFTP. This is contential but if people want to
  really build/develop plugins then they can use Unmanaged WP for the dev
  environment.
* Surfer - no change. Can have SFTP and LDAP since code is not modifiable

In general, should also be careful then about adding SFTP access to random
apps (like say nextcloud), since this would allow normal user to access
other people's data.
2019-05-22 14:32:45 -07:00
Girish Ramakrishnan
5b5303ba7f Always return object in response 2019-05-22 10:41:34 -07:00
Girish Ramakrishnan
022a54278e Add missing error code 2019-05-22 10:41:25 -07:00
Girish Ramakrishnan
19b50dc428 do not dump values in debug
it ends up dumping the icon in logs
2019-05-22 09:38:27 -07:00
Girish Ramakrishnan
e7eac003a9 cloudron-support: add ssh keys like support.js 2019-05-21 09:50:38 -07:00
Girish Ramakrishnan
cc17c6b2cd cloudron-support: add set 2019-05-21 09:21:22 -07:00
Girish Ramakrishnan
23d16b07aa Add API to get original icon 2019-05-21 00:14:54 -07:00
Girish Ramakrishnan
7ecb3dd771 Fix resolution of cloudflare MX record
cf might rewrite the MX record if it deems that there is a conflict

https://support.cloudflare.com/hc/en-us/articles/360020296512-DNS-Troubleshooting-FAQ
2019-05-20 18:20:04 -07:00
Johannes Zellner
e43f974d34 Rework namecheap tests 2019-05-20 22:21:20 +02:00
Girish Ramakrishnan
e16cd38722 Update changes 2019-05-20 10:34:54 -07:00
Girish Ramakrishnan
9d2f81d6b9 Remove X-Frame-Options
This option is now obsolete in the standards and browsers are complaining.
This needs to move to be a CSP header but this is hard to do from outside
the app (since it has to be 'merged' with the app's existing CSP).

fixes #596
2019-05-20 10:11:52 -07:00
Johannes Zellner
3fe539436b Sinon was only used in old namecheap tests 2019-05-20 16:35:23 +02:00
Girish Ramakrishnan
76f94eb559 namecheap module is not used 2019-05-18 09:41:05 -07:00
Girish Ramakrishnan
7630ef921d Add changes 2019-05-17 14:40:33 -07:00
Girish Ramakrishnan
625127d298 add icon to configure route 2019-05-17 12:50:08 -07:00
Girish Ramakrishnan
f24c4d2805 Look for a user set app icon 2019-05-17 10:14:02 -07:00
Girish Ramakrishnan
194340afa0 protect app icon route 2019-05-17 09:54:45 -07:00
Johannes Zellner
fdc9639aba Deal with bad namecheap API naming convention 2019-05-16 18:03:09 +02:00
Johannes Zellner
f95ec53a85 Check for namecheap response status 2019-05-16 18:03:09 +02:00
Johannes Zellner
3d425b7030 Rewrite namecheap backend to not rely on unmaintained node module 2019-05-16 18:03:09 +02:00
Girish Ramakrishnan
37c6c24e0e caas is dead 2019-05-16 08:49:08 -07:00
Girish Ramakrishnan
50bdd7ec7b mail: Remove authType when username is empty 2019-05-15 16:23:56 -07:00
Girish Ramakrishnan
769cb3e251 Update mail container 2019-05-15 15:54:51 -07:00
Girish Ramakrishnan
9447c45406 enable the gcdns test 2019-05-15 10:18:30 -07:00
Johannes Zellner
66a3962cfe Do not create notifications when apps are updated through the cli 2019-05-15 19:15:57 +02:00
Girish Ramakrishnan
d145eacbaf send domain in auto-register
previously, this was done during startup and we didn't have a domain
in hand
2019-05-15 09:58:59 -07:00
Girish Ramakrishnan
ed03ed7bad make changeDashboardDomain customizable 2019-05-14 19:20:45 -07:00
Girish Ramakrishnan
953b463799 4.1.0 changes 2019-05-14 18:00:34 -07:00
Johannes Zellner
6d28bb0489 4.0.3 changes
(cherry picked from commit 8686832bd1)
2019-05-14 16:17:00 -07:00
Johannes Zellner
c2f464ea75 password change api now returns 400 instead of 403 2019-05-13 23:46:38 +02:00
Johannes Zellner
4c56ffc767 Add default footer content to custom.yml 2019-05-13 22:50:28 +02:00
Johannes Zellner
885aa8833c Remove password requirement for destructive rest routes 2019-05-13 22:48:33 +02:00
Johannes Zellner
63310c44c0 Ensure notifications are sorted by time descending 2019-05-13 22:05:58 +02:00
Johannes Zellner
05dd65718f Remove unused CLOUDRON_ID 2019-05-13 16:28:46 +02:00
Girish Ramakrishnan
05d3f8a667 gcs: fix crash 2019-05-12 18:05:48 -07:00
Girish Ramakrishnan
3fa45ea728 4.0.2 changes 2019-05-12 13:59:57 -07:00
Girish Ramakrishnan
a7d2098f09 Add option to skip backup before update 2019-05-12 13:28:53 -07:00
Girish Ramakrishnan
e1ecb49d59 gcdns: fix crash 2019-05-11 19:18:11 -07:00
Johannes Zellner
6facfac4c5 Add footer customization option 2019-05-11 13:37:43 +02:00
Girish Ramakrishnan
97d2494fe3 Make ticket body customizable 2019-05-10 17:35:47 -07:00
Girish Ramakrishnan
a54be69c96 rework custom configuration 2019-05-10 16:18:43 -07:00
Girish Ramakrishnan
800e25a7a7 Fix crash because params was undefined 2019-05-10 13:07:29 -07:00
Girish Ramakrishnan
c1ce2977fa custom: refactor code for defaults 2019-05-10 11:31:16 -07:00
Girish Ramakrishnan
7177f82041 use 405 when feature disabled
403 will logout the user
2019-05-10 09:50:33 -07:00
Girish Ramakrishnan
ecc9415679 only admins have sftp access
this is because webterminal, upload/download etc are also only
restricted to admins. this keeps it aligned
2019-05-10 08:59:16 -07:00
Girish Ramakrishnan
23280f1635 make custom.yml empty by default 2019-05-10 07:40:56 -07:00
Girish Ramakrishnan
af062631c5 Add changes 2019-05-09 17:28:59 -07:00
Johannes Zellner
99b866736c Fix updatechecker tests 2019-05-09 15:09:55 +02:00
Girish Ramakrishnan
9e74b666fb More caas removal 2019-05-08 20:01:14 -07:00
Girish Ramakrishnan
1cc54f9a71 Remove caas_config 2019-05-08 15:38:11 -07:00
Girish Ramakrishnan
a2d8ef7c63 remove more caas related code 2019-05-08 15:36:34 -07:00
Girish Ramakrishnan
0835a6d690 caas: remove storage backend 2019-05-08 15:33:23 -07:00
Girish Ramakrishnan
67e0a19e13 caas: remove provision token check 2019-05-08 15:30:05 -07:00
Girish Ramakrishnan
6fa13f1bcc caas: remove backupDone 2019-05-08 15:28:37 -07:00
Girish Ramakrishnan
25604774b9 caas: remove setupDone 2019-05-08 15:27:29 -07:00
Girish Ramakrishnan
b0fb989be0 caas: remove heartbeat 2019-05-08 15:24:37 -07:00
Johannes Zellner
61c70b9922 Update the demo link 2019-05-08 18:52:18 +02:00
Johannes Zellner
8b5bdf4e88 Remove all digest email code 2019-05-08 12:19:56 +02:00
Johannes Zellner
84d8d4a745 Remove digest from cron 2019-05-08 12:16:50 +02:00
Girish Ramakrishnan
04f93fb90f caas: pass config.provider as query param 2019-05-07 21:04:09 -07:00
Girish Ramakrishnan
d559af15b8 caas: license is migrated on the appstore side now 2019-05-07 19:37:35 -07:00
Girish Ramakrishnan
1510e13066 Add a debug 2019-05-07 18:41:13 -07:00
Girish Ramakrishnan
d7cb8842d3 For now auto-register in the setup route
otherwise, it auto-registers immediately after cloudron-setup
i.e at the image creation time
2019-05-07 17:44:02 -07:00
Girish Ramakrishnan
7596411d70 remove appstoreConfig from autoconf 2019-05-07 17:05:01 -07:00
Girish Ramakrishnan
876cef5970 trim the license 2019-05-07 16:49:34 -07:00
Girish Ramakrishnan
1ebc077721 cloudron-setup: unbound variable 2019-05-07 15:29:34 -07:00
Girish Ramakrishnan
f5acdc0c4b skip license migration for caas 2019-05-07 15:09:00 -07:00
Girish Ramakrishnan
866321da4d Implement auto-registration 2019-05-07 15:08:56 -07:00
Girish Ramakrishnan
58696c5132 register: send token as body param 2019-05-07 14:26:45 -07:00
Girish Ramakrishnan
3d11dfaae3 rename registerCloudron func 2019-05-07 14:16:56 -07:00
Girish Ramakrishnan
3cc320b1d0 Send support email configuration 2019-05-07 14:02:51 -07:00
Girish Ramakrishnan
2efeab3493 feedback -> ticket 2019-05-07 11:36:08 -07:00
Girish Ramakrishnan
a78cab36ab Make support and alert email customizable 2019-05-07 11:30:12 -07:00
Girish Ramakrishnan
41e525e037 alerts_to and alerts_from are unused in mail container 2019-05-07 11:29:59 -07:00
Girish Ramakrishnan
33d5cb3061 initial features implementation 2019-05-07 10:29:47 -07:00
Johannes Zellner
0cf523c285 update the package lock file 2019-05-07 16:23:31 +02:00
Johannes Zellner
9e346e0780 More mariadb related test fixes 2019-05-07 15:31:32 +02:00
Johannes Zellner
9cd25e548f Fix wrong arguments for mocha in runTests script 2019-05-07 15:31:05 +02:00
Johannes Zellner
d221e40602 Hack to fix test runs on arch which only has mariadb 2019-05-07 15:06:38 +02:00
Johannes Zellner
a6ce5ce796 Do not callback early to avoid loosing emails 2019-05-07 14:22:51 +02:00
Johannes Zellner
23bfb7b8e6 Improve app update notification message 2019-05-07 12:19:40 +02:00
Johannes Zellner
b536c8196b Create app updated eventlog entry and notification 2019-05-07 12:04:43 +02:00
Johannes Zellner
8f677177f2 Add app update email 2019-05-07 12:04:28 +02:00
Johannes Zellner
bb7cac4855 Add event log entries for app task lifecycle 2019-05-07 11:26:26 +02:00
Girish Ramakrishnan
e62fa01ab3 Add test for re-registration 2019-05-06 20:20:07 -07:00
Girish Ramakrishnan
5be48c5486 remove auto-registration logic from provision
we will do this instead on cloudron startup
2019-05-06 20:13:02 -07:00
Girish Ramakrishnan
6265efd5e7 Bail on first failure 2019-05-06 20:10:50 -07:00
Girish Ramakrishnan
222d2840cf Remove settings locked field
this was a too generic and will be replaced with feature flags
2019-05-06 20:03:15 -07:00
Girish Ramakrishnan
0e8fe8cd07 temporary hack to make the tests work 2019-05-06 19:53:54 -07:00
Girish Ramakrishnan
f96a8bc269 remove config.edition
we will replace this with feature flags
2019-05-06 19:53:34 -07:00
Girish Ramakrishnan
bbced03f3a Check if Cloudron is already registered 2019-05-06 19:46:42 -07:00
Girish Ramakrishnan
ffe0e6dbbe Fix various error handling
* appstore never returns 403
* change billing_required to plan_limit
2019-05-06 15:36:37 -07:00
Girish Ramakrishnan
7bb6016f7b rename purchase calls 2019-05-06 14:29:56 -07:00
Johannes Zellner
d5f58eea34 Fix ejs and add update url 2019-05-06 22:44:46 +02:00
Johannes Zellner
204c659af2 Fixup wrong indentation 2019-05-06 22:35:01 +02:00
Johannes Zellner
ae5eb00bd0 Batch all available app updates in updatechecker 2019-05-06 22:09:18 +02:00
Johannes Zellner
61c059babe Revert "Notify admins on app update"
We will instead create eventlog entries

This reverts commit 22efb96f66.
2019-05-06 20:16:29 +02:00
Johannes Zellner
a4e4d30d5d Make app fqdn a clickable link 2019-05-06 17:59:48 +02:00
Johannes Zellner
c4fbfd32ee The updateInfo is not the manifest object 2019-05-06 17:55:49 +02:00
Johannes Zellner
4f5af1f7be Variable name clashes with module name 2019-05-06 17:42:26 +02:00
Johannes Zellner
22efb96f66 Notify admins on app update 2019-05-06 17:14:02 +02:00
Johannes Zellner
b7d3014aab If an app cannot be updated automatically send notification mail 2019-05-06 16:37:55 +02:00
Girish Ramakrishnan
fc7e72835e Fix error code typo 2019-05-06 02:45:16 -07:00
Girish Ramakrishnan
d824ced70f Fix migration script 2019-05-06 02:34:47 -07:00
Johannes Zellner
2b9147bbc0 Return distinct errors for invalid or no appstore token 2019-05-06 11:07:50 +02:00
Girish Ramakrishnan
1ea9a0af50 Fix comment 2019-05-05 17:01:53 -07:00
Girish Ramakrishnan
7825cf06c0 Expire existing login tokens
this is because we added 2 new scopes - appstore scope and subscription scope
2019-05-05 13:48:08 -07:00
Girish Ramakrishnan
20a2f56184 Rename registration routes 2019-05-05 13:19:40 -07:00
Girish Ramakrishnan
22be3ad948 Fix test 2019-05-05 11:06:52 -07:00
Girish Ramakrishnan
dfa5a0f5fe subscribe must return 201 2019-05-05 10:55:15 -07:00
Girish Ramakrishnan
b7d046533c typo 2019-05-05 10:46:43 -07:00
Girish Ramakrishnan
c74cf59e3b Fix http status code handling 2019-05-05 10:31:42 -07:00
Girish Ramakrishnan
92941260a5 migration: remove appstore_config 2019-05-05 08:23:20 -07:00
Girish Ramakrishnan
74fdcb0781 Handle billing required 2019-05-04 21:56:34 -07:00
Girish Ramakrishnan
6ab38633c2 handle extra errors 2019-05-04 21:42:33 -07:00
Girish Ramakrishnan
e553ade936 remove spaces support
this feature is unused for too long now
2019-05-04 18:34:28 -07:00
Girish Ramakrishnan
b4b3fd9ab6 Add appstore routes 2019-05-04 17:48:04 -07:00
Girish Ramakrishnan
4fc6f5a094 Handle already exists 2019-05-04 11:13:49 -07:00
Johannes Zellner
0f521e2521 Fix appstore config migration script 2019-05-04 17:46:18 +02:00
Girish Ramakrishnan
088b016083 add test for signup+subscription 2019-05-03 20:25:44 -07:00
Girish Ramakrishnan
ccb2fcf39b Add API to get subscription 2019-05-03 20:22:31 -07:00
Girish Ramakrishnan
f6e82e93e4 Fix test again 2019-05-03 20:05:03 -07:00
Girish Ramakrishnan
02126caacd fix update checker test 2019-05-03 20:01:08 -07:00
Girish Ramakrishnan
8f55565dbf Remove notification logic that depended on free plan
this is from a time when we used to withhold updates for free users
2019-05-03 19:56:27 -07:00
Girish Ramakrishnan
3246edd5a8 rework cloudron registration flow
we now route all the registration, login etc via the backend

subscription management are also in a separate scope now
2019-05-03 19:47:20 -07:00
Girish Ramakrishnan
7e7e067b5b rename appstore_token to cloudron_token 2019-05-03 16:03:45 -07:00
Girish Ramakrishnan
fd0bdbce7e Fix up app purchase and unpurchase routes 2019-05-03 14:53:19 -07:00
Girish Ramakrishnan
5ba8a8f7da Use appstore token in update check routes 2019-05-03 11:59:35 -07:00
Girish Ramakrishnan
a799b0931f Use licenseToken in alive route 2019-05-03 11:36:48 -07:00
Girish Ramakrishnan
d895786f55 Use licenseToken in feedback API 2019-05-03 11:10:53 -07:00
Girish Ramakrishnan
4d89b4a8df migrate appstore_config to license
the appstore_config was based on user login tokens. if lost, they
can compromise the cloudron.io account. with license token, losing
the token in safe
2019-05-03 11:03:33 -07:00
Girish Ramakrishnan
e544e77fd9 remove unused appstore.getAccount 2019-04-30 22:30:34 -07:00
Girish Ramakrishnan
7a5a94614e remove unused appstore.getCloudron 2019-04-30 22:26:37 -07:00
Johannes Zellner
c935811e08 Correctly upsert also the creationTime for special alert notifications
to avoid confusion, the upsert code moves to the only place used inside
alert
2019-04-30 16:45:24 +02:00
Girish Ramakrishnan
cd6d97c3eb Fix onTick handler 2019-04-28 15:55:01 -07:00
Johannes Zellner
292f0624fb Add unstable apps config tests and fix default value 2019-04-27 22:34:52 +02:00
Johannes Zellner
9fb0d1f3bf Remove unused require 2019-04-27 22:30:57 +02:00
Johannes Zellner
d82b722887 Add unstable apps boolean setting 2019-04-27 22:30:32 +02:00
Girish Ramakrishnan
3bcab14de1 caas: make heartbeat not error if not configured yet
the heartbeat errors when the domain is setup but the restore/setup call
has not been invoked yet from the caas sever
2019-04-26 12:53:10 -07:00
Girish Ramakrishnan
3ded411c15 caas: migrate from fqdn to boxId in backup api 2019-04-26 10:55:50 -07:00
Girish Ramakrishnan
706c970314 caas: fixup routes 2019-04-26 10:19:37 -07:00
Girish Ramakrishnan
35dfd540b5 caas: move backupDone 2019-04-26 10:06:03 -07:00
Girish Ramakrishnan
7c4394d8cb caas: change domains route 2019-04-25 21:56:22 -07:00
Girish Ramakrishnan
69972e6460 cloudron-setup: remove support for pre-3.2 2019-04-25 19:38:24 -07:00
Johannes Zellner
dd19f11e29 Handle ldap server errors grazefully 2019-04-25 13:19:23 +02:00
Johannes Zellner
b312414957 Arch does not have app armor support in the kernel 2019-04-25 09:30:23 +02:00
Girish Ramakrishnan
f3910f03ca Enable logStream test
fixes apptask logs in test mode and the id of stream logs
2019-04-24 16:27:00 -07:00
Girish Ramakrishnan
080c667d9c tests: bump expiry 2019-04-24 15:39:47 -07:00
Girish Ramakrishnan
2bf0614da1 load apparmor profile for the tests to work 2019-04-24 14:39:22 -07:00
Girish Ramakrishnan
bd5bdfa8b5 Fix apps test 2019-04-24 14:33:18 -07:00
Girish Ramakrishnan
d1582a435d readdirp args have changed 2019-04-24 10:47:04 -07:00
Johannes Zellner
d27aa8821a Send app label meta information 2019-04-24 14:25:23 +02:00
Girish Ramakrishnan
f5f08cf9ff Add more changes 2019-04-23 21:35:53 -07:00
Girish Ramakrishnan
91877f7b2d relay: add option to accept self-signed certs 2019-04-23 15:36:10 -07:00
Girish Ramakrishnan
7f9b078430 cloudron-support: add appsdata and boxdata stats 2019-04-23 10:14:20 -07:00
Girish Ramakrishnan
e9a01fa0c8 Add changes 2019-04-22 16:50:31 -07:00
Girish Ramakrishnan
1f33674f30 more package updates 2019-04-22 11:06:48 -07:00
Johannes Zellner
badf58db3e Allow empty mail relay username and/or password 2019-04-22 14:41:44 +02:00
Johannes Zellner
58c98be9a7 npm test needs a relative path 2019-04-18 17:14:49 +02:00
Johannes Zellner
71a5555816 Enable all tests and remove unmaintained istanbul code coverage tool 2019-04-18 16:41:10 +02:00
Johannes Zellner
aee20c0423 Fix typo for test run handling 2019-04-18 16:01:16 +02:00
Johannes Zellner
95faccd8d9 Make nearly all app tests work now 2019-04-18 13:11:56 +02:00
Johannes Zellner
85ec4a3de7 Ensure we deal with arrays for tags 2019-04-18 13:06:00 +02:00
Johannes Zellner
e79b6ade51 Get some of the apps tests to work again 2019-04-17 13:33:10 +02:00
Johannes Zellner
79ccfa087d Only delete docker container within the cloudron network
When running tests they would randomly delete all local docker container
2019-04-17 12:44:03 +02:00
Johannes Zellner
9a349eff32 Do not purge all docker containers in the apps-test 2019-04-16 17:22:03 +02:00
Johannes Zellner
e756a442f6 Validate tags in one place only and add tests 2019-04-16 16:36:11 +02:00
Johannes Zellner
332c860e80 If label or tags are present they have to be a specific type 2019-04-16 10:29:44 +02:00
Johannes Zellner
d934671202 Do not use unbound for native dns resolving during tests 2019-04-16 10:13:59 +02:00
Girish Ramakrishnan
747359478d Make send test mail functionality work with secondary domain 2019-04-15 16:58:39 -07:00
Girish Ramakrishnan
f0f18db5a8 Remove unused error code 2019-04-15 16:54:41 -07:00
Girish Ramakrishnan
2f068c66d4 sendTestMail: return error 2019-04-15 16:54:25 -07:00
Girish Ramakrishnan
fa5415b1eb get rid of mail queue
this prevents us from returning mail errors synchronously
2019-04-15 16:39:09 -07:00
Johannes Zellner
e23fd5e3c5 return an empty tag array instead of null 2019-04-15 15:43:45 +02:00
Girish Ramakrishnan
996c838320 timestamp -> tag
later, we can actually move this tag to a separate field in backupdb.
and then, dependsOn can also be removed and we can use this tag as
a collation label.
2019-04-14 11:33:11 -07:00
Girish Ramakrishnan
083b8a6d7b Add preserveSecs to backup entries
We want to keep updates automatic and don't want to keep reminding
users that apps are getting updated etc (i.e beyong the weekly
digest). The reason to remind them is so they can check if the
app updated correctly. in some very corner cases, the app is not
really checked upon for a while and people forget about them until
they check them later. in such cases, it's too late to recover because
the backpus gets cleaned up. this preserve seconds fields, let's us
mark 'update' backups for preservation for 3 weeks.
2019-04-13 18:17:49 -07:00
Girish Ramakrishnan
58625c82a0 Add route to trigger backup cleaner 2019-04-13 18:10:43 -07:00
Girish Ramakrishnan
74211dd2c9 Change signature of backupdb.add 2019-04-13 17:28:19 -07:00
Girish Ramakrishnan
cd4808e5e2 Update modules 2019-04-13 07:10:46 -07:00
Girish Ramakrishnan
e44ad19bda Add Scaleway ObjectStorage backup backend 2019-04-12 10:10:43 -07:00
Girish Ramakrishnan
e31d413551 Add nginx service
We had a case where nginx was not picking up renewed certs. Not sure
if it's a bug in our code or nginx.
2019-04-12 09:47:05 -07:00
Johannes Zellner
d170a3e5e1 Translate app tags during db record update 2019-04-11 17:18:11 +02:00
Johannes Zellner
10c3872902 Send app tags along the rest api 2019-04-11 17:06:10 +02:00
Johannes Zellner
a3c658d6b8 Add upcloud provider to cloudron-setup 2019-04-11 15:41:34 +02:00
Johannes Zellner
0c8cf9cc0d Fix error messages 2019-04-11 13:35:33 +02:00
Girish Ramakrishnan
b92a79eb9d More changes 2019-04-10 09:30:18 -07:00
Girish Ramakrishnan
ba2c6c1219 do: Sprinkle retries since DO keeps failing on us 2019-04-08 14:35:32 -07:00
Girish Ramakrishnan
f0a5cc6116 more debugs 2019-04-08 14:03:26 -07:00
Girish Ramakrishnan
9fbe209c04 Better debug 2019-04-08 13:07:06 -07:00
Girish Ramakrishnan
b8bbd73e07 call iteratorDone on error 2019-04-08 12:22:55 -07:00
Girish Ramakrishnan
2e40325f2a Fix _.extend usage
it modifies the destination object
2019-04-08 00:32:12 -07:00
Girish Ramakrishnan
bdbd336db5 sftp: update docker image 2019-04-05 13:59:30 -07:00
Girish Ramakrishnan
5c645ea224 sftp: set default memory limit 2019-04-05 10:34:24 -07:00
Johannes Zellner
5c2985cac7 localstorage ftp uid must be a number 2019-04-05 12:59:00 +02:00
Girish Ramakrishnan
a0d1016c01 containerize sftp 2019-04-04 22:43:02 -07:00
Girish Ramakrishnan
816cf44117 sftp: Fix uid parsing
format is 33/www-data
2019-04-04 22:38:43 -07:00
Girish Ramakrishnan
1119a62576 fs: emit progress messages for copy and removeDir 2019-04-03 11:54:46 -07:00
Girish Ramakrishnan
152cb48340 Throttle progress messages
This was part of the reason the process was dying out of memory since
we were sending too many messages (I guess it was all getting buffered up)

Part of #626
2019-04-03 11:46:28 -07:00
Girish Ramakrishnan
5a4c2a4974 Remove max_old_space and use as much as we can
process.memoryUsage() is our friend. also, with --expose-gc we
can use global.gc(). we don't use it yet though

part of #626
2019-04-02 21:42:41 -07:00
Girish Ramakrishnan
9063e8f4a4 syncer: clear cache array to reclaim some memory
part of #626
2019-04-01 14:53:34 -07:00
Girish Ramakrishnan
519552083b remove dead comment 2019-04-01 14:51:34 -07:00
Girish Ramakrishnan
f6ad66bd30 rename to ignoreStatError and explicitly ignore ENOENT 2019-04-01 11:56:20 -07:00
Girish Ramakrishnan
65affb5146 Fix test 2019-03-31 18:01:46 -07:00
Girish Ramakrishnan
38d9378e48 Fix issue where tar-fs would complain about missing files
This is being tracked in upstream issue - https://github.com/mafintosh/tar-fs/issues/81

We use a custom fork of tar-fs for now

Fixes #628
2019-03-31 17:43:08 -07:00
Girish Ramakrishnan
cd8011e858 add contabo to the help text 2019-03-29 12:07:13 -07:00
Girish Ramakrishnan
e352562c51 proftpd: unattended install
on 16.04,
debconf: falling back to frontend: Readline
ProFTPD configuration
---------------------

ProFTPD can be run either as a service from inetd, or as a standalone server.
Each choice has its own benefits. With only a few FTP connections per day, it is
probably better to run ProFTPD from inetd in order to save resources.

On the other hand, with higher traffic, ProFTPD should run as a standalone
server to avoid spawning a new process for each incoming connection.

  1. from inetd  2. standalone
2019-03-27 14:16:55 -07:00
Girish Ramakrishnan
3dd2a19915 Handle case where proftpd is not installed
also, don't install a specific version since it doesn't work in 16.04
2019-03-27 14:07:23 -07:00
Girish Ramakrishnan
384286cf0a cleanup stale redis directory
Fixes #627
2019-03-27 13:50:56 -07:00
Girish Ramakrishnan
162281e753 More changes 2019-03-26 11:59:01 -07:00
Girish Ramakrishnan
9a3603fea3 Add progress messages for multi-part copy 2019-03-26 11:58:32 -07:00
Girish Ramakrishnan
121dc85e40 more changes 2019-03-25 16:15:49 -07:00
Girish Ramakrishnan
823bad2ace add proftpd to base image 2019-03-25 16:15:03 -07:00
Girish Ramakrishnan
c9ed8543c8 Capitalize the error 2019-03-25 15:15:39 -07:00
Girish Ramakrishnan
d752c68790 re-factor all the audit source objects 2019-03-25 15:15:39 -07:00
Girish Ramakrishnan
39c0409d42 only notify automated backup failures 2019-03-25 15:15:35 -07:00
Girish Ramakrishnan
7937738258 Fix formatting 2019-03-25 14:02:23 -07:00
Girish Ramakrishnan
ea092bda99 remove mail notification for apptask and process crash
only events are raised for these
2019-03-25 13:59:55 -07:00
Girish Ramakrishnan
3b908a5857 native-dns: use unbound by default 2019-03-25 11:51:17 -07:00
Girish Ramakrishnan
536e14dfe8 Fix failing settings test 2019-03-24 16:57:45 -07:00
Girish Ramakrishnan
edd2c5f779 handle tags being null
in db, we store things as null (not set). but in rest api, we require
the fields to be strings/arrays.
2019-03-23 15:02:24 -07:00
Girish Ramakrishnan
ee76c2c06e Return 403 if totp token is invalid
the ui redirects to login screen otherwise
2019-03-23 14:12:46 -07:00
Girish Ramakrishnan
0190a92c26 Add chat link to readme 2019-03-23 13:54:58 -07:00
Girish Ramakrishnan
730da103b1 Fix logstream test 2019-03-23 13:41:05 -07:00
Girish Ramakrishnan
ffe30289ee Revert "revert node to 8.15.1"
This reverts commit bec63c1ad0.

ldap: unbind callback never fires in node 10.15 it seems. otherwise,
it all works..
2019-03-23 13:35:12 -07:00
Girish Ramakrishnan
cfe9af5c3c Disable this test as well 2019-03-23 13:35:12 -07:00
Girish Ramakrishnan
9647ce153d Make tests work
the namecheap test never seems to work
2019-03-23 10:14:21 -07:00
Girish Ramakrishnan
bec63c1ad0 revert node to 8.15.1
the ldap search test fail with 10.15 for some reason

https://github.com/nodejs/Release

maybe related:
https://github.com/joyent/node-ldapjs/issues/510
2019-03-22 17:27:23 -07:00
Girish Ramakrishnan
3dec0ff85b ldap: remove bogus name response 2019-03-22 15:58:53 -07:00
Girish Ramakrishnan
8868d8e99e keep it alphabetical 2019-03-22 15:42:16 -07:00
Girish Ramakrishnan
9a0d9506f8 settings.on is gone 2019-03-22 15:33:25 -07:00
Girish Ramakrishnan
ec57b813da Make tests work again 2019-03-22 15:19:20 -07:00
Girish Ramakrishnan
57c4d96467 ensure mysql is storing UTC times 2019-03-22 15:19:17 -07:00
Girish Ramakrishnan
ebaf0a08b5 update schema 2019-03-22 14:09:31 -07:00
Girish Ramakrishnan
abae4b5106 Add labels and tags 2019-03-22 10:12:48 -07:00
Girish Ramakrishnan
81b721be2b Fix buffer warnings 2019-03-21 20:06:14 -07:00
Johannes Zellner
e9108ae3f8 Reserve sftp port 222 2019-03-19 22:59:29 -07:00
Johannes Zellner
acc7b65649 Set uid number from localstorage addon ftp value 2019-03-19 21:17:23 -07:00
Johannes Zellner
77ed177855 Only allow ftp access for apps which support it 2019-03-19 21:13:19 -07:00
Girish Ramakrishnan
71cb5c579d Fix duplicate location error message 2019-03-19 20:50:27 -07:00
Girish Ramakrishnan
f22e4c261a Add graphite to list of services 2019-03-19 20:26:21 -07:00
Johannes Zellner
4a046ca70e Check for user access in ldap ftp routes 2019-03-19 16:23:03 -07:00
Johannes Zellner
62ee3fa0f1 Verify proftp ldap connection via ip instead of fake admin account 2019-03-19 15:24:09 -07:00
Johannes Zellner
ef0403af0e Make proftpd conf static 2019-03-19 15:24:09 -07:00
Johannes Zellner
044b27967e Make initial sftp connection work 2019-03-19 15:24:09 -07:00
Johannes Zellner
4942a2480b Install proftpd 2019-03-19 15:24:09 -07:00
Johannes Zellner
cde852f0f9 Add proftpd as service 2019-03-19 15:24:09 -07:00
Girish Ramakrishnan
a435e88b25 rotate task logs 2019-03-18 22:53:47 -07:00
Girish Ramakrishnan
add954db80 detect dashboard domain conflict with existing app
Fixes #620
2019-03-18 21:20:13 -07:00
Girish Ramakrishnan
76ec639fea typo 2019-03-17 17:52:37 -07:00
Girish Ramakrishnan
155decfca1 typog 2019-03-17 16:09:21 -07:00
Girish Ramakrishnan
3ab131786b motd: Remove PasswordAuthentication check 2019-03-15 15:01:55 -07:00
Girish Ramakrishnan
a273dea755 add no-op provider for mail relay
Fixes #622
2019-03-15 14:38:53 -07:00
Girish Ramakrishnan
9a6d8e3a33 Handle access denied in registerSubdomain 2019-03-13 10:50:18 -07:00
Girish Ramakrishnan
4d9ecef6fd Fix empty digest mails 2019-03-12 16:24:00 -07:00
Girish Ramakrishnan
4df72a4015 Update mysql addon 2019-03-12 12:03:21 -07:00
Girish Ramakrishnan
c3e2dc4ce8 migration to overlay2 is now done 2019-03-12 09:10:36 -07:00
Girish Ramakrishnan
5a1bcd53a3 This sounds ominous 2019-03-12 08:49:25 -07:00
Girish Ramakrishnan
4c8865ed5b Make it 3.5.5 instead 2019-03-11 21:23:24 -07:00
Girish Ramakrishnan
cb6bd50db0 Update changelog 2019-03-11 21:21:09 -07:00
Girish Ramakrishnan
614dbb3674 Fix crash during restore 2019-03-11 20:41:03 -07:00
Girish Ramakrishnan
8ed8bb2dad typo 2019-03-11 18:42:54 -07:00
Girish Ramakrishnan
a1f6985534 update all packages
ncu -u
2019-03-11 10:57:43 -07:00
Girish Ramakrishnan
6bdf2e38cc remove query admins from mailer code 2019-03-10 16:28:17 -07:00
Girish Ramakrishnan
19ae55ebd4 Fixup backup failure and cert renewal email notification
in caas, we get an email copy for every admin on cloudron..
2019-03-10 15:53:22 -07:00
Girish Ramakrishnan
61cef46a95 cloudron-support: prefix newline 2019-03-10 14:00:08 -07:00
Girish Ramakrishnan
172738f7b7 Bump mail container 2019-03-10 11:08:09 -07:00
Girish Ramakrishnan
5d0d60d89e Bump cron module to 1.7.0
https://github.com/kelektiv/node-cron/issues/409
https://github.com/kelektiv/node-cron/issues/408
https://github.com/kelektiv/node-cron/issues/405
2019-03-10 10:48:32 -07:00
Girish Ramakrishnan
3cfdc64735 Update to support ecma 8 2019-03-09 22:00:09 -08:00
Girish Ramakrishnan
b47069ccad typo 2019-03-09 21:33:56 -08:00
Girish Ramakrishnan
2051b3921b Use constants.ADMIN_LOCATION instead
part of #621
2019-03-09 20:06:12 -08:00
Girish Ramakrishnan
46f46483f8 Mark as internal functions 2019-03-08 19:09:34 -08:00
Girish Ramakrishnan
66b02b58b6 make notifications.alert take a title
the title is better when it's a bit more dynamic
2019-03-08 16:59:48 -08:00
Girish Ramakrishnan
4428c3d7d8 Move docker config file generation to installer logic
the new version of docker does not support devicemapper on ubuntu 16.
so, we have to first enable overlay2 and then install the latest docker
2019-03-08 16:41:39 -08:00
Girish Ramakrishnan
2d4b9786fa box update is now an alert notification 2019-03-07 14:40:46 -08:00
Girish Ramakrishnan
d2d9c4be6f update notification 2019-03-07 14:27:43 -08:00
Girish Ramakrishnan
a9d6ac29f1 make funcs take proper callbacks 2019-03-07 14:27:23 -08:00
Girish Ramakrishnan
4d50bd5c78 3.5.4 changes 2019-03-07 13:40:20 -08:00
Girish Ramakrishnan
fdd651b9cc Only append markdownMessage is not-empty 2019-03-07 11:50:49 -08:00
Girish Ramakrishnan
7b56f102cc relay check is always performed 2019-03-06 19:48:18 -08:00
Girish Ramakrishnan
e329360daa backup notification now has a doc link and log link 2019-03-06 16:23:25 -08:00
Girish Ramakrishnan
5e8a431a92 Add doc link for cert renweal error 2019-03-06 16:17:56 -08:00
Girish Ramakrishnan
cd3f21a92e Add doc links for the app down mail 2019-03-06 16:14:24 -08:00
Girish Ramakrishnan
03d3ae3eb4 Qualify the name in the email subject 2019-03-06 16:08:12 -08:00
Girish Ramakrishnan
0c350dcf6e add a note 2019-03-06 16:05:50 -08:00
Girish Ramakrishnan
c6b3d15d72 Fix some typos 2019-03-06 16:02:51 -08:00
Girish Ramakrishnan
8d7f7cb438 rename the constant 2019-03-06 15:55:07 -08:00
Girish Ramakrishnan
b5a4121574 Better OOM notification messages 2019-03-06 14:47:24 -08:00
Girish Ramakrishnan
916ca87db4 Expose apps.getByContainerId 2019-03-06 11:15:12 -08:00
Girish Ramakrishnan
bfea97f14e refactor apps.postProcess 2019-03-06 11:12:39 -08:00
Girish Ramakrishnan
f98657aca8 Remove double query of domains 2019-03-06 11:08:14 -08:00
Girish Ramakrishnan
45c5e770fa injectPrivateFields already merges fields 2019-03-05 19:38:56 -08:00
Girish Ramakrishnan
f4ce7ecf4b do not add acked alerts 2019-03-04 21:04:31 -08:00
Girish Ramakrishnan
8dfe1fe97f notifications: add ack flag in db logic 2019-03-04 20:44:41 -08:00
Girish Ramakrishnan
4bf165efaf Fix misplaced callback 2019-03-04 20:22:25 -08:00
Girish Ramakrishnan
c7f6ae5be9 remove unused require 2019-03-04 19:49:25 -08:00
Girish Ramakrishnan
d83d2d5f4e Do not restart mail container when setting fallback certs 2019-03-04 19:35:22 -08:00
Girish Ramakrishnan
2362b2a5a0 Make the version 3.5.3 2019-03-04 18:18:23 -08:00
Girish Ramakrishnan
fb08a17ec8 Add some debugs 2019-03-04 18:11:07 -08:00
Girish Ramakrishnan
1bcc2d544a link to logs instead of spatch'ed error 2019-03-04 18:03:51 -08:00
Girish Ramakrishnan
6fd1205681 settings value is a variant 2019-03-04 15:45:04 -08:00
Girish Ramakrishnan
da2b00c9cf Move cert change notification into ensureCertificate()
When ensureCertificate renews the cert, the filename will match the
nginx config cert file. The current code detects that this implies
that the cert has not changed and thus does not update mail container.

Move the notification into ensureCertificate() itself. If we have a wildcard
cert and it gets renewed when installing a new app, then mail container will
still get it.
2019-03-04 15:24:09 -08:00
Girish Ramakrishnan
f6213595d1 move mailer notification of failed backups
this also removes the splatchError which is causing a crash because
of infinite recursion when backups fail (not sure why)
2019-03-04 15:01:30 -08:00
Girish Ramakrishnan
b1b2bd5b97 move cert renewal notification to notification logic 2019-03-04 14:53:19 -08:00
Girish Ramakrishnan
aa19cbbfc7 Properly escape filename when downloading files 2019-03-04 13:50:17 -08:00
Girish Ramakrishnan
8d39faddc9 cleanup temporary file after upload
also, wait for finish event for the http response. this should be
quick because the file has already been upload and we just have to
copy it to the container
2019-03-04 12:28:27 -08:00
Girish Ramakrishnan
52714dbcc9 Update changelog 2019-03-04 12:17:38 -08:00
Girish Ramakrishnan
be92d3a0bc Properly escape the filename when uploading files
tested with filename:
Fancy - +!"#$&'\''()*+,:;=?@ - Filename

(in the e2e repo)
2019-03-04 12:16:04 -08:00
Girish Ramakrishnan
f3189f72fd Use mail.restartMail alias 2019-03-04 10:42:42 -08:00
Girish Ramakrishnan
144c1d4e2f remove eventemitter pattern
the main issue is that ee pattern does not work across processes.
with task logic, this complicates things
2019-03-04 10:25:18 -08:00
Girish Ramakrishnan
e5964f9d93 Remove unused function 2019-03-02 19:31:19 -08:00
Girish Ramakrishnan
ea30cbe117 Fix tests 2019-03-02 19:23:39 -08:00
Girish Ramakrishnan
598a9664a7 Fix crash because mailboxName is null
mailboxName is always a non-empty string. even for apps that don't use
it, we allocate a mailbox with .app suffix
2019-03-02 19:18:38 -08:00
Girish Ramakrishnan
d04628a42d Suffix .log 2019-03-01 16:55:26 -08:00
Girish Ramakrishnan
7bce63d74e Add API to get crash logs 2019-03-01 16:33:35 -08:00
Girish Ramakrishnan
452fe9f76d add callback to notification code
the crashnotifier prematurely exits otherwise
2019-03-01 15:17:38 -08:00
Girish Ramakrishnan
7983ff5db2 Stash logs in crash log directory 2019-03-01 15:07:06 -08:00
Girish Ramakrishnan
c361ab954d Indicate how often status check is run 2019-03-01 11:30:51 -08:00
Girish Ramakrishnan
a8735a6465 Generate detailed mail configuration error notification 2019-03-01 11:15:05 -08:00
Girish Ramakrishnan
76255c0dd4 Typo 2019-02-28 15:22:55 -08:00
Girish Ramakrishnan
87655ff3cd remove action field from notifications table
it is mostly unused
2019-02-28 15:13:51 -08:00
Girish Ramakrishnan
fc7be2ac1a Clear notifications if mail/backup/disk space situation changes 2019-02-28 15:13:47 -08:00
Girish Ramakrishnan
e93b95bee8 move the switch case to notifications
this way we don't need to export all the functions
2019-02-28 11:38:16 -08:00
Girish Ramakrishnan
6a18d6918e restart mail now restart the service
... and not just the container

Fixes #617
2019-02-28 10:44:26 -08:00
Girish Ramakrishnan
578ce09b5e Fix digest test 2019-02-27 11:56:16 -08:00
Girish Ramakrishnan
27f6177fc9 do not restart mail container when not activated
provision code is calling setDashboardDomain() which is restarting
the mail server
2019-02-27 11:46:03 -08:00
Johannes Zellner
20c0deeac4 Improve digest email 2019-02-27 12:06:01 +01:00
Johannes Zellner
f1f8cdb6e9 Add admin route to test digest 2019-02-27 12:06:01 +01:00
Girish Ramakrishnan
345e4e846c Copy/paste error 2019-02-26 15:03:14 -08:00
Girish Ramakrishnan
6f57b36158 make it executable 2019-02-26 15:03:14 -08:00
Girish Ramakrishnan
0264e10e69 Update license file 2019-02-26 15:03:14 -08:00
Girish Ramakrishnan
067f5bf5a3 auto register cloudron based on license file 2019-02-26 15:03:11 -08:00
Girish Ramakrishnan
c81b643cdf cloudron-setup: copy edition license 2019-02-26 12:06:32 -08:00
Girish Ramakrishnan
388ad077d6 cloudron-setup: baseDataDir is not used 2019-02-26 12:04:31 -08:00
Girish Ramakrishnan
db93cdd95f Make settings logic use the appstore model code 2019-02-25 18:19:25 -08:00
Girish Ramakrishnan
68304a3fc1 Add registerCloudron and getCloudron 2019-02-25 17:29:42 -08:00
Girish Ramakrishnan
13259c114a block updates if app has a maxBoxVersion less than incoming version 2019-02-25 10:03:50 -08:00
Girish Ramakrishnan
5131ba453d Add another change 2019-02-25 10:03:31 -08:00
Girish Ramakrishnan
8fdc9939cd Add locked flag to settings table 2019-02-22 10:08:02 -08:00
Girish Ramakrishnan
c15449492a settings: remove appstore scope 2019-02-22 09:43:26 -08:00
Girish Ramakrishnan
1cab1e06d9 aggregate the settings get/set handlers
this makes it easy to check for a settings lock
2019-02-22 09:37:36 -08:00
Girish Ramakrishnan
4831926869 settings: select fields explicitly 2019-02-22 09:31:09 -08:00
Girish Ramakrishnan
4fcf25077b Update docker to 18.09 2019-02-21 15:30:26 -08:00
Girish Ramakrishnan
c32461f322 Update node modules 2019-02-21 14:09:28 -08:00
Girish Ramakrishnan
0abe6fc0b4 Fixup node version 2019-02-21 13:41:15 -08:00
Girish Ramakrishnan
edc3d53f94 validate fields in the update response 2019-02-20 16:18:47 -08:00
Girish Ramakrishnan
bb5fbbe746 Add boxUpdateInfo to the eventlog
this is used by the email digest code
2019-02-20 16:18:38 -08:00
Girish Ramakrishnan
36f3e3fe50 Enable gzip compression for large objects
This doesn't trigger a re-configure (since it's not a big deal)
2019-02-20 16:03:13 -08:00
Girish Ramakrishnan
65c8000f66 rename function to just "send" 2019-02-20 09:11:45 -08:00
Girish Ramakrishnan
2d45f8bc40 Update node to 10.15.1 2019-02-19 10:46:59 -08:00
Girish Ramakrishnan
7a0d4ad508 Make reboot required check server side 2019-02-19 09:20:20 -08:00
Johannes Zellner
5ae93bb569 Clear connect-timeout handling for graphs 2019-02-18 13:13:29 +01:00
Girish Ramakrishnan
aa6ca46792 Add linode-stackscript as a provider 2019-02-16 13:59:35 -08:00
Girish Ramakrishnan
e8c11f6e15 Fix tests 2019-02-15 14:56:51 -08:00
Girish Ramakrishnan
08bb8e3df9 Make token API id based
we don't return the accessToken anymore
2019-02-15 14:31:43 -08:00
Girish Ramakrishnan
d62bf6812e Ensure tokens have a name 2019-02-15 13:45:04 -08:00
Girish Ramakrishnan
422abc205b do not return accessToken when listing tokens 2019-02-15 13:26:33 -08:00
Girish Ramakrishnan
1269104112 rbl.status is only valid if rbl test was run 2019-02-15 12:22:39 -08:00
Girish Ramakrishnan
97d762f01f relay username also needs to be hidden 2019-02-15 11:44:33 -08:00
Girish Ramakrishnan
671b5e29d0 Hide mail relay password 2019-02-15 11:25:51 -08:00
Girish Ramakrishnan
c7538a35a2 Do not escape link 2019-02-14 19:36:59 -08:00
Girish Ramakrishnan
458658a71b Email gets encoded in plain text email
Unbuffered code for conditionals etc <% code %>
Escapes html by default with <%= code %>
Unescaped buffering with <%- code %>
2019-02-14 19:30:02 -08:00
Girish Ramakrishnan
e348a1d2c5 make the view a link 2019-02-13 15:15:32 -08:00
Girish Ramakrishnan
59ff3998bc do not send up mails immediately on installation 2019-02-13 14:44:02 -08:00
Girish Ramakrishnan
9471dc27e0 App can also be dead/error 2019-02-12 17:01:45 -08:00
Girish Ramakrishnan
4b559a58d1 Fix use of source object 2019-02-12 16:41:46 -08:00
Girish Ramakrishnan
5980ab9b69 Add healthTime in the database
this is currently an internal field and not returned in API
2019-02-12 16:33:28 -08:00
Girish Ramakrishnan
70e5daf8c6 Fix usage of audit source 2019-02-11 14:41:12 -08:00
Girish Ramakrishnan
92e1553eed Fullstop 2019-02-11 12:58:38 -08:00
Girish Ramakrishnan
2236e07722 Send app up notification
Fixes #438
2019-02-11 12:58:33 -08:00
Girish Ramakrishnan
5166cd788b More information 2019-02-11 09:30:46 -08:00
Girish Ramakrishnan
de89d41e72 Make the notifications more informative 2019-02-10 21:00:32 -08:00
Girish Ramakrishnan
3dd5526938 More 3.5.1 changes 2019-02-09 21:38:36 -08:00
Girish Ramakrishnan
a88893b10a remove/inject backups secret fields
follow same pattern as dns code

fixes #615
2019-02-09 20:44:05 -08:00
Girish Ramakrishnan
51d1794e88 only inject fields if provider matches
atleast, the gcdns backend will crash otherwise
2019-02-09 17:59:32 -08:00
Girish Ramakrishnan
95e8fc73e6 Use black circle 2019-02-09 17:33:52 -08:00
Johannes Zellner
96974ab439 Make secret placeholder just stars 2019-02-09 19:16:56 +01:00
Johannes Zellner
127b22d7ce Add dns interface api to inject hidden files for verification 2019-02-09 19:09:51 +01:00
Johannes Zellner
ca962e635e Add provider netcup-image 2019-02-09 18:01:31 +01:00
Johannes Zellner
a70cc97b8e namecheap apiKey is now token 2019-02-09 17:43:23 +01:00
Johannes Zellner
79ae75030c move caas certificate key removal to the provider backend 2019-02-09 11:59:37 +01:00
Johannes Zellner
32f8a52c2b add provider specific removePrivateFields to redact tokens and secrets 2019-02-09 11:59:37 +01:00
Johannes Zellner
d1a1f7004b Do not send out emails for out of disk
We rely now on notifications. We should hover send emails about critical
new notifications. Lets make the admin go to the dashboard to check the
situation.
2019-02-09 11:57:31 +01:00
Girish Ramakrishnan
52289568bf backups: omit the key and secret fields
part of #615
2019-02-08 22:21:28 -08:00
Girish Ramakrishnan
dada79cf65 domains: do not return secret keys in api responses
part of #615
2019-02-08 21:58:38 -08:00
Girish Ramakrishnan
139a2bac1a namecheap: apiKey -> token
all token/secret/credentials will not be returned in upcoming change
2019-02-08 20:48:51 -08:00
Girish Ramakrishnan
3e4eaeab35 namecheap: do not use global object
if we have multiple namecheap, it doesn't work.
2019-02-08 20:21:16 -08:00
Girish Ramakrishnan
484171dd1b namecheap: typo 2019-02-08 19:09:28 -08:00
Girish Ramakrishnan
1c69b1695a lint 2019-02-08 11:24:33 -08:00
Girish Ramakrishnan
7cfba0e176 Fix notification tests 2019-02-08 11:22:15 -08:00
Girish Ramakrishnan
ade2b65a94 make mail test pass 2019-02-08 11:08:14 -08:00
Girish Ramakrishnan
950a6d4c5d Add restriction on max password length 2019-02-08 09:57:07 -08:00
Girish Ramakrishnan
19348ef205 Fix links in motd 2019-02-07 14:07:30 -08:00
Girish Ramakrishnan
5662b124e0 Add a digitalocean-mp provider 2019-02-06 16:15:36 -08:00
Girish Ramakrishnan
5c1307f6f2 bump license years 2019-02-06 15:38:07 -08:00
Girish Ramakrishnan
2105b2ecdb Run MX and DMARC checks only if mail is enabled 2019-02-06 15:23:41 -08:00
Girish Ramakrishnan
d05bf9396d Periodically check mail status as well
Fixes #612, #575
2019-02-06 14:58:45 -08:00
Girish Ramakrishnan
5b22822ac3 More 3.5.1 changes 2019-02-06 11:49:35 -08:00
Girish Ramakrishnan
e08e1418e5 3.5.1 changes 2019-02-06 11:38:36 -08:00
Girish Ramakrishnan
31d0a5c40e run system checks immediately post activation
this will notify about backup configuration
2019-02-06 11:15:46 -08:00
Girish Ramakrishnan
89446d56e0 Fix exports 2019-02-06 11:09:34 -08:00
Johannes Zellner
bbcad40fcf Also collect the real box logs from logfile on crash 2019-02-06 17:05:25 +01:00
Johannes Zellner
70db169976 eventId in notifications may be null 2019-02-06 16:28:51 +01:00
Johannes Zellner
abc867935b Add backup configuration check together with out of disk check cron job 2019-02-06 15:47:56 +01:00
Johannes Zellner
2bb85dc16c Add out of disk and backup config warning notification handler 2019-02-06 15:47:31 +01:00
Johannes Zellner
00f4bf3d16 Add notificationdb.upsert() which clears ack field and matches by userId and title 2019-02-06 15:46:58 +01:00
Johannes Zellner
0cca838db9 Allow eventId in notifications table to be null 2019-02-06 14:40:09 +01:00
Girish Ramakrishnan
abc8e1c377 improve motd a bit more 2019-02-05 16:58:24 -08:00
Girish Ramakrishnan
de67b6bc0c better motd 2019-02-05 14:58:44 -08:00
Girish Ramakrishnan
058534af21 rename script 2019-02-05 10:27:05 -08:00
Girish Ramakrishnan
ce1b621488 motd: add message to finish setup 2019-02-05 09:57:42 -08:00
Girish Ramakrishnan
4434c7862e Rename the fields variable 2019-02-05 09:24:16 -08:00
Johannes Zellner
86c4246f75 Do not dump the whole app object into a login event 2019-02-05 16:13:20 +01:00
Johannes Zellner
7dc3fb9854 Only upsert login events 2019-02-05 15:27:43 +01:00
Johannes Zellner
71b0226c54 add more eventlog upsert tests 2019-02-05 14:50:59 +01:00
Johannes Zellner
a18d5bbe34 Add eventlogdb.upsert() for batching once per day 2019-02-05 14:50:59 +01:00
Girish Ramakrishnan
f1352c6ef0 Fix crash 2019-02-04 20:51:26 -08:00
Girish Ramakrishnan
7e6ce1a1ef Add event to track dashboard update 2019-02-04 20:42:28 -08:00
Girish Ramakrishnan
9f5471ee85 Update mail DNS records on dashboard switch
Fixes #613
2019-02-04 20:18:01 -08:00
Girish Ramakrishnan
3bf36d6c93 Add mail.configureMail 2019-02-04 17:10:07 -08:00
Girish Ramakrishnan
38523835fd parameterize the mailFqdn 2019-01-31 15:27:26 -08:00
Johannes Zellner
4cb2a929a5 Remove unused require 2019-01-30 13:17:30 +01:00
Girish Ramakrishnan
1db14c710b always send emails from no-reply@dashboard domain
Fixes #614
2019-01-29 20:42:21 -08:00
Girish Ramakrishnan
13787629b6 suffix 0 when comparing versions
> semver.lte('1.2.3', '1.2.3-1')
false
2019-01-27 14:07:42 -08:00
Girish Ramakrishnan
42c705e362 UPDATE_CONFIG_KEY is unused 2019-01-25 15:59:05 -08:00
Girish Ramakrishnan
4765e4f83c Add locked flag to domains table 2019-01-25 14:45:45 -08:00
Girish Ramakrishnan
ddffc8a36e better message 2019-01-25 14:11:38 -08:00
Girish Ramakrishnan
8aec71845b Add missing else 2019-01-25 10:49:00 -08:00
Girish Ramakrishnan
c01864ccf5 mention outbound 2019-01-25 10:27:44 -08:00
Girish Ramakrishnan
4f839ae44e better error message for outbound port 25 2019-01-24 15:09:14 -08:00
Girish Ramakrishnan
db6404a7c6 SysInfo.EXTERNAL_ERROR is undefined 2019-01-24 14:58:28 -08:00
Johannes Zellner
93e0acc8e9 Only supply the actual namecheap DNS record arguments 2019-01-24 18:46:19 +01:00
Johannes Zellner
9fa7a48b86 Print result not error 2019-01-24 14:13:41 +01:00
Girish Ramakrishnan
c0b929035f lint 2019-01-23 21:00:26 -08:00
Johannes Zellner
7612e38695 We do not send out invites on user creation 2019-01-23 17:18:37 +01:00
Johannes Zellner
47329eaebc Add tests for getting a single eventlog item 2019-01-23 17:11:57 +01:00
Johannes Zellner
f53a951daf Add route to get single eventlog items 2019-01-23 16:44:45 +01:00
Johannes Zellner
2181137181 Use docker based mysql server for testing with the correct version 2019-01-23 16:18:52 +01:00
Johannes Zellner
6e925f6b99 assert if auditSource is null on user apis 2019-01-23 11:18:31 +01:00
Johannes Zellner
3b5495bf72 The notification rules have changed
We do not send out notifications and emails anymore for the user who
performs the action.
2019-01-23 11:10:30 +01:00
Johannes Zellner
3617432113 Fix broken invite sending on user creation 2019-01-23 10:45:13 +01:00
Girish Ramakrishnan
f95beff6d4 Fix the tests 2019-01-22 17:49:53 -08:00
Girish Ramakrishnan
6d365fde14 move datalayout to separate file for tests 2019-01-22 17:35:36 -08:00
Girish Ramakrishnan
b16ff33688 more changes 2019-01-22 11:39:19 -08:00
Girish Ramakrishnan
9d8d0bed38 Add mail domain after config is setup 2019-01-22 11:37:18 -08:00
Johannes Zellner
f967116087 We do not require sudo to migrate the db 2019-01-22 19:38:18 +01:00
Johannes Zellner
721352c5aa Revert "Check for sudo access of root user in cloudron-setup"
We will remove the sudo requirement instead

This reverts commit e5a04e8d38.
2019-01-22 19:33:36 +01:00
Johannes Zellner
496ba986bf Add missing wait() function for namecheap backend 2019-01-22 12:12:46 +01:00
Johannes Zellner
101a3b24ce Fix property passing for namecheap.del() 2019-01-22 12:04:17 +01:00
Johannes Zellner
201dc570cd Fix namecheap nameserver test 2019-01-22 11:56:56 +01:00
Girish Ramakrishnan
ff359c477f acme: Wait for 5mins
often, let's encrypt is failing to get the new DNS. not sure why
2019-01-21 10:45:43 -08:00
Johannes Zellner
74cb8d9655 Bring namecheap dns backend up to speed with the new api layout 2019-01-21 14:36:21 +01:00
Johannes Zellner
91d0710e04 Update package lock file 2019-01-21 14:27:16 +01:00
Johannes Zellner
0cc3f08ae7 Add missing requires for scaleway sysinfo backend 2019-01-21 14:26:56 +01:00
Tomer S
ac391bfc17 Added NameCheap as option for DNS 2019-01-21 12:59:08 +00:00
Johannes Zellner
e5a04e8d38 Check for sudo access of root user in cloudron-setup 2019-01-21 13:33:19 +01:00
Johannes Zellner
8cc07e51bf Fix up notification tests 2019-01-21 08:51:26 +01:00
Girish Ramakrishnan
4b7090cf7c Be paranoid about the data dir location 2019-01-20 11:40:31 -08:00
Girish Ramakrishnan
8c8cc035ab Generate fsmetadata correctly 2019-01-19 21:45:54 -08:00
Girish Ramakrishnan
4b93d30ec0 Send correct error message for dataDir conflict 2019-01-19 21:24:38 -08:00
Girish Ramakrishnan
d8ff2488a3 Make syncer work with a layout 2019-01-19 20:39:49 -08:00
Johannes Zellner
b771df88da Ensure we write process crash logs to disk 2019-01-19 15:41:47 +01:00
Johannes Zellner
54e237cec8 Set info string if no crash logs can be found 2019-01-19 15:23:54 +01:00
Johannes Zellner
b5c848474b Ensure notifications attached to events are deleted as well 2019-01-19 14:53:58 +01:00
Johannes Zellner
dae52089e3 Patch auditSource if owner is creating himself an account 2019-01-19 14:34:49 +01:00
Johannes Zellner
4c4f3d04e9 Fix users tests 2019-01-19 14:25:59 +01:00
Johannes Zellner
e8674487f2 Remove . makes it harder to doubleclick select and paste 2019-01-19 13:33:03 +01:00
Johannes Zellner
e2fadebf64 Rename notifications.unexpectedExit() to notifications.processCrash() 2019-01-19 13:31:31 +01:00
Johannes Zellner
d3331fea7f Send emails for apptask crash 2019-01-19 13:30:24 +01:00
Johannes Zellner
bdcd9e035c Add missing eventId arg 2019-01-19 13:27:45 +01:00
Johannes Zellner
7f3453ce5c Crashnotifier is now only used for systemd unit crashes (only box) 2019-01-19 13:23:49 +01:00
Johannes Zellner
ed7a7bc879 Use eventlog directly for apptask crashes 2019-01-19 13:23:18 +01:00
Johannes Zellner
5a6b8222df Pass down eventId to notifications 2019-01-19 13:22:29 +01:00
Johannes Zellner
3262486a96 Add eventId to notifications table 2019-01-19 13:21:09 +01:00
Johannes Zellner
c73b30556f Remove unused require 2019-01-19 12:36:46 +01:00
Johannes Zellner
2ec89d6a20 Fix typo 2019-01-19 12:24:04 +01:00
Girish Ramakrishnan
a0b69df20d Add DataLayout class to help with path xforms 2019-01-18 17:13:25 -08:00
Girish Ramakrishnan
57aa3de9bb typo 2019-01-18 15:18:46 -08:00
Girish Ramakrishnan
38a4c1aede Fixup volume management
Fixes related to removing directory and directory perms
2019-01-18 15:18:42 -08:00
Girish Ramakrishnan
fcc77635c2 retry must wrap the download function as well 2019-01-18 14:31:30 -08:00
Girish Ramakrishnan
25be1563e1 Update mail container 2019-01-18 14:31:30 -08:00
Girish Ramakrishnan
4a9b0e8db6 Remove all app containers before removing volume
If volume location changes, we re-create the volume. However, volume
can only be removed if all the containers using it are deleted. For
example, the scheduler might be running a container using it.
2019-01-17 23:56:31 -08:00
Girish Ramakrishnan
ab35821b59 saveFsMetadata: make it work with a layout 2019-01-17 14:55:37 -08:00
Girish Ramakrishnan
14439ccf77 mount points cannot be removed 2019-01-17 14:55:37 -08:00
Girish Ramakrishnan
5ddfa989d0 setupLocalStorage should remove old volume 2019-01-17 14:50:43 -08:00
Girish Ramakrishnan
a915348b22 Return correct error code when already locked 2019-01-17 10:58:38 -08:00
Girish Ramakrishnan
a7fe35513a Ubuntu 16 needs MemoryLimit
systemd[1]: [/etc/systemd/system/box.service:25] Unknown lvalue 'MemoryMax' in section 'Service'
2019-01-17 09:28:35 -08:00
Johannes Zellner
701024cf80 Send app down notification through eventlog 2019-01-17 17:26:58 +01:00
Johannes Zellner
4ecb0d82e7 Handle oom notification through eventlog 2019-01-17 15:31:34 +01:00
Johannes Zellner
5279be64d0 Skip notify performer or user operated on 2019-01-17 13:51:10 +01:00
Johannes Zellner
b9c3e85f89 Trigger user notifications through eventlog api only 2019-01-17 13:12:26 +01:00
Girish Ramakrishnan
8aaa671412 Add more changes 2019-01-16 21:52:02 -08:00
Girish Ramakrishnan
873ebddbd0 write admin config on dashboard switch 2019-01-16 21:51:06 -08:00
Girish Ramakrishnan
13c628b58b backups (tgz): work with a layout
this will allow us to place the localstorage directory in an arbitrary
location
2019-01-16 12:52:04 -08:00
Girish Ramakrishnan
3500236d32 sync concurrency cannot be very high 2019-01-15 20:44:09 -08:00
Girish Ramakrishnan
2f881c0c91 log download errors 2019-01-15 12:01:12 -08:00
Girish Ramakrishnan
9d45e4e0ae refactor: make removeVolume not clear 2019-01-15 09:46:24 -08:00
Johannes Zellner
13fac3072d Support username search in user listing api 2019-01-15 17:21:40 +01:00
Girish Ramakrishnan
6d8fdb131f remove unused constant 2019-01-14 14:37:43 -08:00
Girish Ramakrishnan
ee65089eb7 s3: make copying and uploading significantly faster 2019-01-14 13:47:07 -08:00
Girish Ramakrishnan
40c7d18382 Fix upload progress message 2019-01-14 12:23:03 -08:00
Girish Ramakrishnan
3236a9a5b7 backup: retry rsync file downloads
fixes #608
2019-01-14 11:57:10 -08:00
Girish Ramakrishnan
d0522d7d4f backups: retry tgz downloads
Part of #608
2019-01-14 11:36:11 -08:00
Girish Ramakrishnan
aef6b32019 Update mail container with the spf fixes 2019-01-14 10:32:55 -08:00
Girish Ramakrishnan
11b4c886d7 Add changes 2019-01-14 09:58:55 -08:00
Johannes Zellner
3470252768 Add user pagination to rest api 2019-01-14 16:39:20 +01:00
Johannes Zellner
1a3d5d0bdc Fix linter issues 2019-01-14 16:26:27 +01:00
Johannes Zellner
05f07b1f47 Add paginated user listing on the db level 2019-01-14 16:08:55 +01:00
Girish Ramakrishnan
898f1dd151 Make volume logic work with absolute paths 2019-01-13 21:12:22 -08:00
Girish Ramakrishnan
17ac6bb1a4 script is not called from redis addon anymore 2019-01-13 19:04:32 -08:00
Girish Ramakrishnan
f05bed594b remove redundant assert 2019-01-13 16:06:54 -08:00
Girish Ramakrishnan
e63b67b99e resolve any boxdata symlink 2019-01-13 15:17:02 -08:00
Girish Ramakrishnan
efbc045c8a Add event for tracking dyndns changes 2019-01-12 15:24:22 -08:00
Girish Ramakrishnan
172d4b7c5e backup: store cleanup result properly 2019-01-12 15:17:04 -08:00
Girish Ramakrishnan
8b9177b484 disallow downgrade of App Store apps
We hit this interesting case:

1. Dashboard showed update indicator for an app of v1. indicator is saying v2 is available.
2. In the meantime, the cron updated the app from v1 to v2 and then to v3 (i.e updates applied)
3. Dashboard for whatever reason (internet issues/laptop suspend) continues to show v2 update indicator.
   This is despite the update logic clearing the update available notification.
4. Use clicked updated indicator on the updated app. App updates to an old version v2!
2019-01-11 14:19:32 -08:00
Girish Ramakrishnan
2acb065d38 Track what the the backup cleaner removed 2019-01-11 14:09:43 -08:00
Girish Ramakrishnan
0b33b0b6a2 task: result can be json 2019-01-11 14:02:18 -08:00
Girish Ramakrishnan
0390891280 Fix test 2019-01-11 13:36:02 -08:00
Girish Ramakrishnan
9203534f67 get app object in start of update func 2019-01-11 13:28:39 -08:00
Girish Ramakrishnan
e15d11a693 eventlog: add the old and new manifest in restore 2019-01-11 12:27:42 -08:00
Girish Ramakrishnan
c021d3d9ce backup: add retry only if > 1 2019-01-11 11:07:19 -08:00
Girish Ramakrishnan
ea3cc9b153 Fix error message 2019-01-11 10:58:51 -08:00
Girish Ramakrishnan
3612b64dae gpg is in different packages in ubuntu 2019-01-11 10:20:28 -08:00
Girish Ramakrishnan
79f9180f6b run backup cleanup as a task 2019-01-10 16:07:06 -08:00
Girish Ramakrishnan
766ef5f420 remove spurious argument 2019-01-10 16:02:15 -08:00
Girish Ramakrishnan
bdbb9acfd0 lint 2019-01-10 10:51:31 -08:00
Johannes Zellner
6bdac3aaec Add missing -y in cloudron-setup 2019-01-10 15:28:56 +01:00
Johannes Zellner
14acdbe7d1 Use notifications api for unexpected process exits 2019-01-10 14:30:00 +01:00
Johannes Zellner
895280fc79 Remove unused function mailUserEventToAdmins() 2019-01-10 13:32:39 +01:00
Johannes Zellner
83ae303b31 Skip notifications for user actions against the same user 2019-01-10 13:21:26 +01:00
Johannes Zellner
cc81a10dd2 Add more notification/mailer wrapper 2019-01-10 12:00:04 +01:00
Girish Ramakrishnan
6e3600011b Update mail container sha 2019-01-09 16:31:53 -08:00
Girish Ramakrishnan
2b07b5ba3a Add mail container that logs events 2019-01-09 16:18:53 -08:00
Girish Ramakrishnan
7b64b2a708 do-spaces: Limit download concurrency
https://www.digitalocean.com/community/questions/rate-limiting-on-spaces?answer=40441
2019-01-09 15:09:29 -08:00
Girish Ramakrishnan
810f5e7409 Fix line param parsing
lines is a positive integer or -1 to disable line limiting. The
default value is 10 if no argument is given.

Fixes #604
2019-01-08 13:23:29 -08:00
Girish Ramakrishnan
1affb2517a Protect the updater service from the oom killer
Fixes #576
2019-01-08 10:51:47 -08:00
Johannes Zellner
85ea9b3255 Rework the oom notification 2019-01-08 14:37:58 +01:00
Johannes Zellner
07e052b865 Fix notifications route to return all notifications if nothing specified 2019-01-08 13:46:18 +01:00
Girish Ramakrishnan
bc0ea740f1 Add more changes 2019-01-07 09:43:48 -08:00
Johannes Zellner
841b4aa814 Can't pass booleans over query 2019-01-07 17:30:28 +01:00
Johannes Zellner
9989478b91 Add all admins action helper 2019-01-07 14:56:49 +01:00
Johannes Zellner
d3227eceff Give better oom notification title 2019-01-07 14:05:42 +01:00
Johannes Zellner
5f71f6987c Create notifications for app down event 2019-01-07 13:01:27 +01:00
Johannes Zellner
86dbb1bdcf Create notification for oom events 2019-01-07 12:57:57 +01:00
Girish Ramakrishnan
77ac8d1e62 Add changes 2019-01-06 19:23:44 -08:00
Girish Ramakrishnan
e62d417324 Set OOMScoreAdjust to stop box code from being killed
OOMScoreAdjust can be set between -1000 and +1000. This value is inherited
and systemd has no easy way to control this for children (box code also
runs as non-root, so it cannot easily set it for the children using
/proc/<pid>/oom_score_adj.

When set to -1000 and the process reaches the MemoryMax, it seems the kernel
does not kill any process in the cgroup and it spins up in high memory. In fact,
'systemctl status <service>' stops displaying child process (but ps does), not sure
what is happenning.

Keeping it -999 means that if a child process consumed a lot of memory, the kernel
will kill something in the group. If the main box itself is killed, systemd will
kill it at all because of KillMode=control-group.

Keeping it -999 also saves box service group being killed relative to other docker
processes (apps and addons).

Fixes #605
2019-01-06 19:16:53 -08:00
Girish Ramakrishnan
b8f85837fb cloudflare: do not wait for dns if proxied 2019-01-05 18:27:10 -08:00
Girish Ramakrishnan
2237d7ef8a Fix test 2019-01-05 00:45:01 -08: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
635557ca45 Fix failing tests 2019-01-04 10:56:56 -08:00
Johannes Zellner
b9daa62ece Add notification tests for business logic 2019-01-04 17:13:52 +01:00
Girish Ramakrishnan
808be96de3 gpg is not installed on gandi 2019-01-03 12:28:30 -08:00
Girish Ramakrishnan
1e93289f23 cloudflare: preserve proxied parameter 2019-01-03 10:42:09 -08:00
Girish Ramakrishnan
ccf0f84598 cloudflare: getDnsRecordsByZoneId -> getDnsRecords
This misleading name creates much confusion
2019-01-03 10:39:10 -08:00
Girish Ramakrishnan
3ec4c7501d cloudflare: rename confusing callback param 2019-01-03 10:39:10 -08:00
Girish Ramakrishnan
f55034906c Set oldConfig.fqdn
Without this, the re-configure task unregisters the domain since
it thinks the domain has changed
2019-01-03 10:08:55 -08:00
Girish Ramakrishnan
cbd3c60c5d Use a relay token for no-reply emails 2018-12-28 13:32:59 -08:00
Girish Ramakrishnan
2037fec878 new mail container does not require default domain 2018-12-28 12:12:34 -08:00
Girish Ramakrishnan
772fd1b563 Add cloudron-support to path 2018-12-26 19:42:45 -08:00
Girish Ramakrishnan
d9309cb215 Use a separate event for tarExtract 2018-12-22 21:23:20 -08:00
Girish Ramakrishnan
433c34e4ce better debugs 2018-12-22 21:23:17 -08:00
Girish Ramakrishnan
68a4769f1e Fix typo 2018-12-22 19:53:50 -08:00
Girish Ramakrishnan
248569d0a8 awscli is unused 2018-12-21 12:41:43 -08:00
Girish Ramakrishnan
5146e39023 contabo: fix DNS
we disable the DNS servers in initializeBaseImage. On normal VPS,
unbound seems to start by itself but on contabo it doesn't because
the default unbound config on ubuntu does not work without ip6
2018-12-21 11:44:39 -08:00
Girish Ramakrishnan
ecd1d69863 install software-properties-common
on contabo,

root@vmi232343:~# add-apt-repository

Command 'add-apt-repository' not found, but can be installed with:

apt install software-properties-common
2018-12-21 11:28:21 -08:00
Girish Ramakrishnan
06219b0c58 add contabo 2018-12-21 11:09:20 -08:00
Girish Ramakrishnan
0a74bd1718 add note on saveFsMetadata 2018-12-20 15:11:15 -08:00
Girish Ramakrishnan
8a5b24afff Make tarPack and tarExtract have consistent style 2018-12-20 11:49:37 -08:00
Girish Ramakrishnan
6bdd7f7a57 Give more memory to the control group
this allows backups to take more memory as part of the systemd group.
the node box code itself runs under little more constraints using
--max_old_space_size=150
2018-12-20 10:44:42 -08:00
Girish Ramakrishnan
1bb2552384 move feedback test 2018-12-19 14:32:54 -08:00
Girish Ramakrishnan
b5b20452cc Fix reverseProxy.getCertificate API 2018-12-19 14:20:48 -08:00
Girish Ramakrishnan
4a34703cd3 rework code to enable/disable remote support
we had a generic ssh key management api. this was causing issues because
the ssh format is more complicated than what we had implemented. currently,
the only use case we have is to add our ssh key.

Fixes #600
2018-12-19 13:35:20 -08:00
Girish Ramakrishnan
a8d9b57c47 remove unused tar.js 2018-12-19 11:58:08 -08:00
Girish Ramakrishnan
52bbf3be21 move support to separate file 2018-12-19 10:54:33 -08:00
Girish Ramakrishnan
3bde0666e2 volume -> app data directory
the appdata directory is just a place to "hold" various parts
of an app together for backup purposes
2018-12-18 21:16:25 -08:00
Girish Ramakrishnan
b5374a1f90 3.5 changes 2018-12-18 15:33:36 -08:00
Girish Ramakrishnan
18b8d23148 Add progress percent for prepareDashboardDomain 2018-12-18 15:26:37 -08:00
Girish Ramakrishnan
f51b1e1b6b installationProgress must contain the percent 2018-12-17 15:42:40 -08:00
Johannes Zellner
ffc4f9d930 Fix typo 2018-12-17 17:40:53 +01:00
Johannes Zellner
5680fc839b Send new user notification via notifications api 2018-12-17 17:35:19 +01:00
Johannes Zellner
57d435ccf4 Add basic notification rest api 2018-12-17 16:37:19 +01:00
Johannes Zellner
4b90b8e6d8 Add notificationdb tests 2018-12-17 15:53:00 +01:00
Johannes Zellner
fc8dcec2bb Add notificationdb table and db wrapper 2018-12-17 15:52:52 +01:00
Girish Ramakrishnan
a5245fda65 3.4.3 changes
(cherry picked from commit fd723cf7eb)
2018-12-16 21:08:07 -08:00
Girish Ramakrishnan
4eec2a6414 Add LDAP_MAILBOXES_BASE_DN
this got removed by mistake in the email refactor assuming this
was unused (but it is used by sogo)

(cherry picked from commit 6589ba0988)
2018-12-16 21:06:52 -08:00
Girish Ramakrishnan
a536e9fc4b track last oom time using a global variable
because it was a local variable, we were just sending out oom mails
like crazy

also, fixes an issue that if docker.getEvents gets stuck because
docker does not respond then we do not do any health monitoring.
i guess this can happen if the docker API gets stuck.
2018-12-16 20:52:42 -08:00
Girish Ramakrishnan
a961407379 Fix setup and restore to have a task style API 2018-12-16 11:02:49 -08:00
Girish Ramakrishnan
1fd6c363ba 3.4.2 changes
(cherry picked from commit 2d7f0c3ebe)
2018-12-15 09:35:35 -08:00
Girish Ramakrishnan
0a7f1faad1 Better progress message 2018-12-14 23:20:32 -08:00
Girish Ramakrishnan
e79d963802 do not append to task log file 2018-12-14 22:22:57 -08:00
Girish Ramakrishnan
1b4bbacd5f 3.4.1 changes
(cherry picked from commit a66bc7192d)
2018-12-14 22:22:47 -08:00
Girish Ramakrishnan
447c6fbb5f cloudron.conf has to writable 2018-12-14 16:32:51 -08:00
Girish Ramakrishnan
78acaccd89 wording 2018-12-14 16:32:51 -08:00
Girish Ramakrishnan
bdf9671280 Split dashboard dns setup and db operations
The dns setup is now a task that we can wait on. Once that task
is done, we can do db operations to switch the domain in a separate
route
2018-12-14 09:57:28 -08:00
Girish Ramakrishnan
357e44284d Write nginx config into my.<domain>.conf
This way we can switch the domain as an independent task that does
not affect the existing admin conf
2018-12-14 09:20:10 -08:00
Girish Ramakrishnan
9dced3f596 Add domains.setupAdminDnsRecord 2018-12-14 09:20:10 -08:00
Girish Ramakrishnan
63e3560dd7 on startup, only re-generate the admin config
should not try to get certificates on startup
2018-12-14 09:20:06 -08:00
Girish Ramakrishnan
434525943c move appconfig.ejs 2018-12-13 21:53:31 -08:00
Girish Ramakrishnan
f0dbf2fc4d Make reverseProxy.configureAdmin not use config
This way we can set things up before modifying config for dashboard switch
2018-12-13 21:42:48 -08:00
Girish Ramakrishnan
3137dbec33 CONFIG_DIR is not used anymore 2018-12-13 19:55:13 -08:00
Girish Ramakrishnan
e71a8fce47 add test list tasks 2018-12-13 13:12:45 -08:00
Girish Ramakrishnan
ff550e897a caas: remove box plan change routes 2018-12-13 09:41:52 -08:00
Johannes Zellner
10034fcbba Function is called tasks.removePrivateFields 2018-12-13 13:50:53 +01:00
Girish Ramakrishnan
36f8ce453f No need to reserve .app suffix 2018-12-12 15:07:49 -08:00
Girish Ramakrishnan
c2e40acb2c Fixup configuration and validation of mailboxName 2018-12-12 14:40:26 -08:00
Girish Ramakrishnan
82b1bb668d Fix tests 2018-12-11 16:26:19 -08:00
Girish Ramakrishnan
935a8258a6 task API: remove arg from response
it can contain sensitive information
2018-12-11 16:22:53 -08:00
Girish Ramakrishnan
fa483e5806 rename to listByTypePaged 2018-12-11 16:14:07 -08:00
Girish Ramakrishnan
e0c9658cb9 setup -> provision 2018-12-11 15:29:47 -08:00
Girish Ramakrishnan
0266a46b32 Ensure that location and domain are provided together
in our db, {location,domain} is unique. If we replace them one
by one in the database, it will cause conflicts.
2018-12-11 12:10:22 -08:00
Girish Ramakrishnan
e7294f2950 Make handleCertChanged take a callback 2018-12-11 11:02:32 -08:00
Girish Ramakrishnan
c9f325e75d renewCerts does not call callback 2018-12-11 10:49:04 -08:00
Girish Ramakrishnan
0fa353c2e2 return taskId for renewCerts 2018-12-11 10:16:38 -08:00
Girish Ramakrishnan
c7da090882 tasks: remove auditSource from start/stop 2018-12-11 09:22:13 -08:00
Johannes Zellner
ee609c8ef0 renew certs task also needs an auditSource 2018-12-11 13:10:32 +01:00
Johannes Zellner
6891ce2bc8 Fix typos 2018-12-11 12:33:35 +01:00
Johannes Zellner
94f5adba04 Renew certs is a POST route so lets use the body 2018-12-11 11:55:59 +01:00
Johannes Zellner
b8f843993a Fix typo 2018-12-11 11:26:45 +01:00
Girish Ramakrishnan
f9add21899 Add task route tests 2018-12-10 21:42:03 -08:00
Girish Ramakrishnan
1277da8bfe Add tasks test 2018-12-10 21:17:30 -08:00
Girish Ramakrishnan
55650fb734 Fix crash when db got cleared 2018-12-10 20:56:38 -08:00
Girish Ramakrishnan
d2f4b68c9f Make certificate renewal a task 2018-12-10 20:48:10 -08:00
Girish Ramakrishnan
a76731a991 remove old cloudron.conf and version field 2018-12-10 15:36:00 -08:00
Girish Ramakrishnan
536b8166ce typo 2018-12-09 12:04:51 -08:00
Girish Ramakrishnan
d43106b0af Add taskworker that runs funcs out of process 2018-12-09 10:06:22 -08:00
Girish Ramakrishnan
3688371ce8 Make tasks log to their own log file 2018-12-08 21:59:20 -08:00
Girish Ramakrishnan
6d66eb7759 Various fixes 2018-12-08 21:12:49 -08:00
Girish Ramakrishnan
8502bf4bfa tasks: add route to list tasks 2018-12-08 20:18:20 -08:00
Girish Ramakrishnan
d8225ad653 Make tasks indexed by id instead of type
The caas migrate logic is broken at this point until it uses new
task framework
2018-12-08 19:41:53 -08:00
Girish Ramakrishnan
cfb68a0511 setAdmin -> setDashboardDomain 2018-12-08 18:19:49 -08:00
Girish Ramakrishnan
76677e0aea Fix response 2018-12-07 16:39:22 -08:00
Girish Ramakrishnan
515ee891d3 refactor code to allow admin domain to be set 2018-12-07 16:15:21 -08:00
Girish Ramakrishnan
3aea1f3c9d Fix error message 2018-12-07 15:41:02 -08:00
Girish Ramakrishnan
8d944f9a4a Allow setup to be run again as long as not-activated
this is useful if the activation fails somewhere mid-way and we don't
need to re-setup the cloudron all over
2018-12-07 15:11:25 -08:00
Girish Ramakrishnan
331c8ae247 Add a new line 2018-12-07 11:28:23 -08:00
Girish Ramakrishnan
c71a429f61 Ask user before reboot
this is useful when installing on bare metal, don't want to reboot
server since the instructions get lost
2018-12-07 11:12:45 -08:00
Girish Ramakrishnan
3bad9e523c Add option to toggle app automatic updates 2018-12-07 10:02:11 -08:00
Girish Ramakrishnan
dfa61f1b2d rework how app mailboxes are allocated
Our current setup had a mailbox allocated for an app during app
install (into the mailboxes table). This has many issues:

* When set to a custom mailbox location, there was no way to access
  this mailbox even via IMAP. Even when using app credentials, we
  cannot use IMAP since the ldap logic was testing on the addon type
  (most of our apps only use sendmail addon and thus cannot recvmail).

* The mailboxes table was being used to add hidden 'app' type entries.
  This made it very hard for the user to understand why a mailbox conflicts.
  For example, if you set an app to use custom mailbox 'blog', this is
  hidden from all views.

The solution is to let an app send email as whatever mailbox name is
allocated to it (which we now track in the apps table. the default is in the
db already so that REST response contains it). When not using
Cloudron email, it will just send mail as that mailbox and the auth
checks the "app password" in the addons table. Any replies to that
mailbox will end up in the domain's mail server (not our problem).

When using cloudron email, the app can send mail like above. Any responses
will not end anywhere and bounce since there is no 'mailbox'. This is the
expected behavior. If user wants to access this mailbox name, he can
create a concrete mailbox and set himself as owner OR set this as
an alias.

For apps using the recvmail addon, the workflow is to actually create
a mailbox at some point. Currently, we have no UI for this 'flow'.
It's fine because we have only meemo using it.

Intuitive much!
2018-12-06 22:13:32 -08:00
Girish Ramakrishnan
6331fa5ced Update mail addon (does not use ownerType) 2018-12-06 20:34:18 -08:00
Girish Ramakrishnan
707b03b8c8 mailbox: ownerType is now purely internal 2018-12-06 20:25:24 -08:00
Girish Ramakrishnan
f2f93ed141 ldap: nobody binds to mailboxes 2018-12-06 19:34:25 -08:00
Girish Ramakrishnan
37e16c7a4c Force owner type to be user 2018-12-06 13:00:57 -08:00
Girish Ramakrishnan
41b0c3242e Make function name clearer 2018-12-06 12:47:50 -08:00
Girish Ramakrishnan
48ed051edf Use list verb 2018-12-06 10:23:10 -08:00
Girish Ramakrishnan
502642fd25 Add note on why we need universe 2018-12-06 09:32:02 -08:00
Johannes Zellner
4abe6a7a00 Ensure we have universe apt sources enabled 2018-12-06 13:23:30 +01:00
Girish Ramakrishnan
3f8fa64b98 wildcard must be outside the quotes 2018-12-05 16:39:29 -08:00
Johannes Zellner
527ff1b1fb Support docker and unbound service logs through journalctl 2018-12-05 16:19:10 +01:00
Girish Ramakrishnan
804467dce2 StandardOutput=file does not work in ubuntu 16
ubuntu 16 has systemd 229 which does not support this. ubuntu 18
has systemd 239 which works ok
2018-12-04 15:02:48 -08:00
Girish Ramakrishnan
4d7f308821 translate TaskError to UpdateError 2018-12-04 14:04:43 -08:00
Girish Ramakrishnan
a5b8418845 Remove spurious success return 2018-12-04 09:34:00 -08:00
Johannes Zellner
93d428b8c5 Update cron node module 2018-12-04 14:53:08 +01:00
Johannes Zellner
7c424ad60c Add netcup as provider 2018-12-04 09:51:40 +01:00
Girish Ramakrishnan
5b29a8680d Add missing callback 2018-12-03 15:23:26 -08:00
Girish Ramakrishnan
8f57c44837 provision: force http1.1
for unknown reasons, we get a http2 framing error from curl at times.
2018-12-03 13:29:43 -08:00
Johannes Zellner
b23939127b Ensure we always set the correct default value for TIMESTAMP types
So far it we rely on 0 default values in some case like the eventlog
This will not work in mysql strict mode with https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_no_zero_date
2018-12-03 14:09:57 +01:00
Johannes Zellner
3196322063 Add migration script to rename groups table to userGroups 2018-12-03 12:24:04 +01:00
Johannes Zellner
54c96d98d1 Remove all individual test timeouts and ignore timeouts toplevel 2018-12-03 12:24:04 +01:00
Johannes Zellner
f5f92fbb03 Rename groups table to userGroups 2018-12-03 12:24:04 +01:00
Girish Ramakrishnan
be0876603c ADDON_STATUS_* -> SERVICE_STATUS_* 2018-12-02 19:40:27 -08:00
Girish Ramakrishnan
7c1ef143f9 Add unbound service 2018-12-02 19:38:34 -08:00
Girish Ramakrishnan
6d128595e7 all container related functionality is 'service' 2018-12-02 19:12:43 -08:00
Girish Ramakrishnan
2f55abfc60 Fixup logs routes as well 2018-12-02 19:07:12 -08:00
Girish Ramakrishnan
f93044ac3b move routes to services.js 2018-12-02 18:46:34 -08:00
Girish Ramakrishnan
7ed422a3c1 Split out service related functions 2018-12-02 18:45:39 -08:00
Girish Ramakrishnan
823b3b8aa8 Rename addon route to service
service are the containers and other things like unbound, nginx.
addons are app development hooks.
2018-12-02 17:56:11 -08:00
Girish Ramakrishnan
9a701560f4 Fix email status 2018-12-01 21:50:28 -08:00
Girish Ramakrishnan
9800154d01 Use latest mail container (healthcheck route) 2018-12-01 21:50:24 -08:00
Girish Ramakrishnan
4b3f18ccdb Fix messages in update.sh 2018-11-30 21:18:36 -08:00
Girish Ramakrishnan
840d78b2f4 run update as a task, so it is cancelable 2018-11-30 21:04:24 -08:00
Girish Ramakrishnan
b409fd775d Revert "Fix crash"
This reverts commit 12a5965740.

Really fix crash
2018-11-30 19:10:44 -08:00
Girish Ramakrishnan
dbcfb20fab Remove shebang hack, this does not apply anymore 2018-11-30 17:10:28 -08:00
Girish Ramakrishnan
12a5965740 Fix crash 2018-11-30 17:10:28 -08:00
Girish Ramakrishnan
006ab75433 More changes 2018-11-30 17:10:28 -08:00
Girish Ramakrishnan
c72ea91743 make task args an object and put it in eventlog 2018-11-30 14:57:24 -08:00
Girish Ramakrishnan
f39ce20580 better name for task functions 2018-11-30 14:41:11 -08:00
Girish Ramakrishnan
b5c59e6b7d Add args to tasks table 2018-11-30 14:12:24 -08:00
Girish Ramakrishnan
b0ecdcc8b6 Fix another crash 2018-11-30 10:03:16 -08:00
Girish Ramakrishnan
8e1560f412 Fix crash in apptask 2018-11-30 09:48:26 -08:00
Girish Ramakrishnan
df927eae74 move backupupload.js to scripts
it is just a sudo helper
2018-11-29 23:30:56 -08:00
Girish Ramakrishnan
30aea047e3 startTask now takes args 2018-11-29 23:28:26 -08:00
Girish Ramakrishnan
cbcadaa449 Return an active field to indicate if task is actually running 2018-11-29 23:12:03 -08:00
Girish Ramakrishnan
9f4226093b Handle bad state if task is already stopped 2018-11-29 23:10:15 -08:00
Girish Ramakrishnan
fca0e897b2 Add tasks.startTask 2018-11-29 16:21:04 -08:00
Girish Ramakrishnan
2f729b56fa Use result in db instead of ipc 2018-11-29 15:34:05 -08:00
Girish Ramakrishnan
d9f3f64c76 Store result and error message separately 2018-11-29 14:45:28 -08:00
Girish Ramakrishnan
e8fa909c2f Bump graphite since the container port changed 2018-11-29 09:33:46 -08:00
Johannes Zellner
44f6636653 Add more changes 2018-11-29 16:44:44 +01:00
Johannes Zellner
148a0d0fc6 Add memory usage for addon status api 2018-11-28 12:33:24 +01:00
Girish Ramakrishnan
632ba69663 Make restore/download logic have progress callbacks 2018-11-27 12:13:16 -08:00
Girish Ramakrishnan
b2465dd2ee Set the backup task progress in the task only 2018-11-27 12:12:27 -08:00
Girish Ramakrishnan
e56b87766b backupApp should not set backup task progress 2018-11-27 11:06:03 -08:00
Girish Ramakrishnan
f7ca2e416a Add progress callback for snapshotting 2018-11-27 11:03:58 -08:00
Girish Ramakrishnan
002f68b0a1 Add progress info during backup rotation 2018-11-27 10:51:35 -08:00
Girish Ramakrishnan
aa31be5c5a backup: make upload progress available with callback+ipc 2018-11-27 10:42:34 -08:00
Johannes Zellner
6c0b7017bd Add some 3.4 changes 2018-11-27 14:41:03 +01:00
Girish Ramakrishnan
581774e001 Use ipc to pass back the result 2018-11-26 20:39:52 -08:00
Girish Ramakrishnan
3847a6616e No need to track backup time since it is killable now 2018-11-26 20:39:20 -08:00
Girish Ramakrishnan
48fbe28355 Make upload task abort when parent dies 2018-11-26 19:11:30 -08:00
Girish Ramakrishnan
e3ee5bc1d5 lint 2018-11-26 15:55:00 -08:00
Girish Ramakrishnan
a2da9bea58 backup: use ipc for communicating with upload process 2018-11-26 15:21:48 -08:00
Johannes Zellner
e4512e12c5 Add --help for cloudron-support and make ssh key enabling optional 2018-11-26 15:28:11 +01:00
Johannes Zellner
114f48fb17 Remove leftover console.log() 2018-11-26 14:50:10 +01:00
Johannes Zellner
289e018160 Fix comment text 2018-11-26 08:19:24 +01:00
Johannes Zellner
cb6699eeed Add api to check if the server needs a reboot 2018-11-26 08:19:24 +01:00
Girish Ramakrishnan
802011bb7e Fix args to shell.sudo 2018-11-25 14:57:51 -08:00
Girish Ramakrishnan
6cd8e769be remove all uses of sudoSync 2018-11-25 14:43:29 -08:00
Girish Ramakrishnan
9f6f67d331 ssh: remove use of shell.sudoSync 2018-11-25 14:27:06 -08:00
Johannes Zellner
161a8fe2bf Make docker restartable 2018-11-24 22:12:28 +01:00
Girish Ramakrishnan
b9c9839bb7 apparmor is always enabled on all ubuntu 2018-11-23 13:11:31 -08:00
Girish Ramakrishnan
76edbee48c Better error message 2018-11-23 13:11:15 -08:00
Girish Ramakrishnan
4142d7a050 Fix error handling of all the execSync usage 2018-11-23 13:11:15 -08:00
Girish Ramakrishnan
a0306c69e1 remove unused acme1.js
it got merged to acme2.js
2018-11-23 13:11:15 -08:00
Girish Ramakrishnan
31823f6282 Check if result is not null 2018-11-23 13:11:15 -08:00
Girish Ramakrishnan
9b4fffde29 Use shell.exec instead of shell.execSync 2018-11-23 11:18:45 -08:00
Girish Ramakrishnan
cce03e250d these can just be debugs 2018-11-22 18:05:41 -08:00
Girish Ramakrishnan
9b32cad946 typoe 2018-11-22 17:26:06 -08:00
Girish Ramakrishnan
2877a1057e Add CLOUDRON_PROXY_IP 2018-11-22 16:50:02 -08:00
Johannes Zellner
e2debe3c39 Add starting addon state when we wait for healthcheck 2018-11-22 21:54:31 +01:00
Johannes Zellner
f54ab11f18 Handle mail related addon logs 2018-11-22 12:38:50 +01:00
Johannes Zellner
b560e281d0 share container addon status code 2018-11-22 12:38:50 +01:00
Girish Ramakrishnan
3bb4ef5727 Some servers can be very slow starting databases 2018-11-21 09:49:08 -08:00
Johannes Zellner
900c008d20 Only allow addon restarts, no start+stop 2018-11-21 16:06:58 +01:00
Johannes Zellner
c1183a09a8 Add addon configure route 2018-11-21 15:47:41 +01:00
Girish Ramakrishnan
e04b7b55b0 Remove upgrade flag
This is not used since ages since we changed our update methodology
2018-11-20 10:29:54 -08:00
Johannes Zellner
329cc80933 Send memory settings on addon status 2018-11-20 16:53:27 +01:00
Johannes Zellner
a13f0706b4 Report addon state detail for further use 2018-11-20 13:11:11 +01:00
Johannes Zellner
55811de4b8 Check for docker ping result 2018-11-20 13:07:41 +01:00
Johannes Zellner
ab456f179e Check for healthcheck in addon status code 2018-11-20 12:26:33 +01:00
Johannes Zellner
f9d5bcd352 Make getAddonDetails() return AddonsError 2018-11-20 12:12:25 +01:00
Johannes Zellner
6a337884b5 Add start/stop addon code 2018-11-20 11:09:09 +01:00
Johannes Zellner
f953d115da Fix missing require 2018-11-20 11:09:09 +01:00
Johannes Zellner
88e8fc840f Fetch basic addon status from docker 2018-11-20 11:09:09 +01:00
Johannes Zellner
d1818e31b0 Add addon status hooks 2018-11-20 11:09:09 +01:00
Johannes Zellner
3f4bf647e8 Allow console.* in the linter config 2018-11-20 11:09:09 +01:00
Johannes Zellner
725a7e6dec Add missing requires 2018-11-20 11:09:09 +01:00
Johannes Zellner
e08b210001 Add initial addons rest apis 2018-11-20 11:09:09 +01:00
Girish Ramakrishnan
ec08ccb996 move tasks to separate directory
these are just wrappers that we use to launch as processes
2018-11-19 21:17:04 -08:00
Girish Ramakrishnan
b47a146c2b unlock on log failure 2018-11-19 21:12:58 -08:00
Girish Ramakrishnan
14dff27d45 boxUpdateInfo cannot be null here 2018-11-19 21:09:33 -08:00
Girish Ramakrishnan
305a3c94d0 Rework the progress API to use the task progress 2018-11-19 21:06:44 -08:00
Girish Ramakrishnan
218739a6b5 Add tasks table and API
progress will be tracked with this table instead of being in-process
like progress.js
2018-11-19 17:37:42 -08:00
Girish Ramakrishnan
390e69c01c Fix backup API routes 2018-11-19 14:41:16 -08:00
Johannes Zellner
4ef274acf0 Box logs are now in a log file 2018-11-19 19:47:19 +01:00
Girish Ramakrishnan
8267279779 backup can now be stopped
track the backup process and killable
2018-11-17 20:31:07 -08:00
Girish Ramakrishnan
6d971b9235 backupupload also logs to stdout now 2018-11-17 19:38:02 -08:00
Girish Ramakrishnan
98dc160886 remove the progress and watchdog timers
not needed since we will track these processes now and can be killed
by the user.
2018-11-17 19:38:02 -08:00
Girish Ramakrishnan
a869c88b43 Remove setBackupProgress
the upload task can just output to stdout. for progress status, we
can just use a tailstream on the ui side
2018-11-17 19:38:02 -08:00
Girish Ramakrishnan
0b86070fe9 run backuptask as separate process 2018-11-17 19:38:02 -08:00
Girish Ramakrishnan
5c9b6736f0 Remove pruneInfraImages out of platform startup
If it fails, it's really OK. Maybe we will have a button to remove
images.

This goes further into step of webadmin always staying up and not
crashing/erroring for cosmetic issues.
2018-11-17 19:35:39 -08:00
Girish Ramakrishnan
fd4057df94 shell.exec -> shell.spawn 2018-11-17 19:26:19 -08:00
Girish Ramakrishnan
1b1945e1f5 Move out graphite from port 8000
Port 8000 is used by esxi management service (!)
2018-11-17 19:14:21 -08:00
Girish Ramakrishnan
ebb053b900 add back timestamps to debug output 2018-11-16 14:16:11 -08:00
Girish Ramakrishnan
3381d9b595 Add format to the default backup config 2018-11-16 14:15:20 -08:00
Girish Ramakrishnan
d7a11ef394 runBackupTask -> runBackupUpload 2018-11-16 09:21:07 -08:00
Johannes Zellner
9d40cffabe Add logrotate config for box logs 2018-11-16 13:14:59 +01:00
Johannes Zellner
de44c63557 box now also logs to a a file instead of journald 2018-11-16 13:05:11 +01:00
Johannes Zellner
ac25477cd7 Ensure we prefix all output with a timestamp
note that debug() already does this now on its own in the same format
it does not use console.log but process.stderr
2018-11-16 13:02:37 +01:00
Johannes Zellner
59b86aa090 Stop logging box to journald 2018-11-16 12:15:38 +01:00
Girish Ramakrishnan
6abd48d480 rename backuptask to backupupload 2018-11-15 12:00:51 -08:00
Girish Ramakrishnan
72fc6b8c5a Fix tests 2018-11-15 12:00:51 -08:00
Girish Ramakrishnan
fcce4a6853 Add note on StandardError 2018-11-15 10:52:31 -08:00
Girish Ramakrishnan
a3b1a2c781 Get the domain correctly from subject 2018-11-15 10:47:20 -08:00
Johannes Zellner
a838a1706f Fix indentation 2018-11-15 19:26:50 +01:00
Johannes Zellner
a24c9fbafb Put cloudron-updater (installer.sh) logs persistently to /var/log/ 2018-11-15 14:54:12 +01:00
Johannes Zellner
ab255e78c5 Make the cert subject match 2018-11-15 14:18:34 +01:00
Girish Ramakrishnan
2628678d82 3.3.4 changes 2018-11-14 22:11:46 -08:00
Girish Ramakrishnan
eaf9b7f049 Add certificate.new event 2018-11-14 20:47:18 -08:00
Girish Ramakrishnan
b8df4d0b79 bare domains are getting continuously renewed
the code is not handling the case where bare domain is not part
of the wildcard SAN.
2018-11-14 20:47:15 -08:00
Girish Ramakrishnan
eb315f34dc Pass around domainObject 2018-11-14 20:32:14 -08:00
Girish Ramakrishnan
af535757a8 Fix issue where request module was buffering all data
when request is give a callback, it will save all the data in memory
to give the data in the response callback
2018-11-14 19:03:27 -08:00
Girish Ramakrishnan
600e030c6d add a note what the script is about 2018-11-14 10:25:43 -08:00
Girish Ramakrishnan
e86b813551 cloudron-support: use timeout command for docker ps output 2018-11-14 10:22:10 -08:00
Girish Ramakrishnan
af6653dfeb do not timeout when checking for updates 2018-11-13 10:38:18 -08:00
Johannes Zellner
f93e0c868c Warn the user if / or /tmp is full 2018-11-13 13:31:49 +01:00
Johannes Zellner
e53aaddc9c Add 3.3.3 changes 2018-11-13 12:54:40 +01:00
Johannes Zellner
d3ebb99131 Fix apptask concurrency
This broke due to async behavior introduced with 1dc649b7a2
2018-11-13 12:54:40 +01:00
Girish Ramakrishnan
82037b70e4 retry apply of platform config
it seems that scaling down addons can fail at times. this can happen
if the kernel is busy swapping things etc. so, we do not block the
platform startup for this operation.

Nov 13 05:20:00 localhost dockerd[28831]: time="2018-11-13T05:20:00.365056059Z" level=error msg="Handler for POST /v1.37/containers/mongodb/update returned error: Cannot update container 6532d4a923ce9f10303f2e2aa7f03c35383864f44f3db6abd5c58da3c1a7702f: docker-runc did not terminate sucessfully: failed to write 419430400 to memory.memsw.limit_in_bytes: write /sys/fs/cgroup/memory/docker/6532d4a923ce9f10303f2e2aa7f03c35383864f44f3db6abd5c58da3c1a7702f/memory.memsw.limit_in_bytes: device or resource busy\n: unknown"
Nov 13 05:20:00 localhost node[5486]: box:shell updatemongodb (stderr): Error response from daemon: Cannot update container 6532d4a923ce9f10303f2e2aa7f03c35383864f44f3db6abd5c58da3c1a7702f: docker-runc did not terminate sucessfully: failed to write 419430400 to memory.memsw.limit_in_bytes: write /sys/fs/cgroup/memory/docker/6532d4a923ce9f10303f2e2aa7f03c35383864f44f3db6abd5c58da3c1a7702f/memory.memsw.limit_in_bytes: device or resource busy
2018-11-12 21:58:57 -08:00
Girish Ramakrishnan
323dfb1853 More typos 2018-11-12 10:27:56 -08:00
Girish Ramakrishnan
59b6d2ef66 mail: clear timeout for dns route 2018-11-12 10:25:15 -08:00
Girish Ramakrishnan
7b99167d30 typo 2018-11-12 09:32:02 -08:00
Girish Ramakrishnan
c829f190df 3.3.2 changes 2018-11-11 22:18:46 -08:00
Girish Ramakrishnan
f306f334c0 Update mongodb for invalid index fix 2018-11-11 22:15:51 -08:00
Girish Ramakrishnan
3fb8243264 Add route to trigger app import 2018-11-11 21:58:20 -08:00
Girish Ramakrishnan
b8861b9d78 Use debug instead 2018-11-11 21:57:45 -08:00
Girish Ramakrishnan
61d98ca4ca give addons more memory when starting up / importing
we scale it back after the import is done
2018-11-11 21:45:02 -08:00
Girish Ramakrishnan
a3a22604ba Mark import errors as app errors 2018-11-11 10:36:11 -08:00
Girish Ramakrishnan
1766c3f6d6 lint 2018-11-11 10:12:51 -08:00
Girish Ramakrishnan
aae259479f move configure webadmin and status out of setup logic 2018-11-11 09:56:01 -08:00
Girish Ramakrishnan
b640a053e3 Always generate webadmin config on startup 2018-11-11 08:19:24 -08:00
Girish Ramakrishnan
a3cc17705d Do not remove default.conf and admin.conf when re-configuring apps 2018-11-10 22:02:42 -08:00
Girish Ramakrishnan
78ac1d2a12 Add isCloudronManaged label to containers managed by cloudron 2018-11-10 19:00:03 -08:00
Girish Ramakrishnan
6ec36c9605 Do not crash if platform.start fails
With this change, the box code always starts up even if nginx fails,
docker fails etc.
2018-11-10 18:34:37 -08:00
Girish Ramakrishnan
bd2b03876b Add users.isActivated
it's easier to see where we do activation checks
2018-11-10 18:09:00 -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
e526890e3e Add a separate disabled event 2018-11-10 00:35:56 -08:00
Girish Ramakrishnan
71e1e2468b fix test 2018-11-10 00:22:38 -08:00
Girish Ramakrishnan
fcb7c3e82a fix casing 2018-11-10 00:18:56 -08:00
Girish Ramakrishnan
0d65635bc4 eventlog: add email enabled/disabled events 2018-11-10 00:17:38 -08:00
Girish Ramakrishnan
4aa76a859f eventlog: mail list add,remove events 2018-11-10 00:17:25 -08:00
Girish Ramakrishnan
003789265c eventlog: mailbox add,remove events 2018-11-10 00:06:02 -08:00
Girish Ramakrishnan
1bb3b5e51b addons: refactor code into dumpPath 2018-11-09 12:02:38 -08:00
Girish Ramakrishnan
032ac3ed97 cloudron-provision args
zone -> domain
appstore configs -> license
+backup_config
cloudflare* -> dns_config
2018-11-08 21:44:56 -08:00
Girish Ramakrishnan
edc2c25bda Add libpython
On ubuntu 18.04, on hetzner and vultr, collectd does not start without
this.
2018-11-08 16:11:01 -08:00
Girish Ramakrishnan
2fa44879e9 cloudron-support: Add more services 2018-11-08 16:05:37 -08:00
Girish Ramakrishnan
7e27413b29 18.04: Add sudo
This was hit on scaleway
2018-11-08 14:47:49 -08:00
Johannes Zellner
77508d180e Add changes for 3.3.1 2018-11-08 21:51:07 +01:00
Johannes Zellner
111f5a7c99 Update postgres addon to 2.0.2 2018-11-08 20:51:14 +01:00
Johannes Zellner
d2182559e8 change the ssh user detection to rely on SUDO_USER 2018-11-08 19:39:25 +01:00
Johannes Zellner
9fe91cf9cb Log if we receive SIGINT or SIGTERM 2018-11-08 14:35:22 +01:00
Girish Ramakrishnan
de000648dc do not chown redis during updates 2018-11-07 15:21:12 -08:00
Girish Ramakrishnan
0958a57c45 Fix path to conf file 2018-11-07 10:37:00 -08:00
Johannes Zellner
9aae0d9d4c Add initial version of the cloudron-support tool 2018-11-07 17:37:16 +01:00
Girish Ramakrishnan
ccfd385beb Fix waitForDns 2018-11-05 23:00:55 -08:00
Girish Ramakrishnan
ee6cca5cdf Make cert an object 2018-11-05 22:39:06 -08:00
Girish Ramakrishnan
0093e840c6 Fix various typos 2018-11-05 21:26:53 -08:00
Girish Ramakrishnan
7c6e5ac32b newline replace certs for json databag 2018-11-05 21:23:22 -08:00
Girish Ramakrishnan
15039bf293 Fix validation of fallback certs 2018-11-05 21:13:34 -08:00
Girish Ramakrishnan
89b6cd9d1f cloudron-provision: set tls cert and key 2018-11-05 20:59:29 -08:00
Girish Ramakrishnan
60992405d5 generate cert with correct CN 2018-11-05 20:48:28 -08:00
Girish Ramakrishnan
d96b1cc864 generate fallback cert correctly for hyphenated domains 2018-11-05 19:53:50 -08:00
Girish Ramakrishnan
5165cd8f40 Use debug 2018-11-05 17:36:23 -08:00
Girish Ramakrishnan
9f8b47daa9 domains.fqdn only takes 2 args 2018-11-05 17:35:50 -08:00
Girish Ramakrishnan
9372afad9a Fix debug 2018-11-05 17:12:04 -08:00
Girish Ramakrishnan
eef6056174 bump timeout of setup route 2018-11-05 16:55:46 -08:00
Girish Ramakrishnan
a1dfc758c6 Fix debug 2018-11-02 17:10:16 -07:00
Girish Ramakrishnan
8caf5cc741 typo 2018-11-02 14:50:45 -07:00
Girish Ramakrishnan
7739f8f174 Set container hostname to something constant
currently, it defaults to the container name. apps might use this hostname
for communication with child containers. but this breaks if app gets updated
and gets a new hostname
2018-11-02 14:47:00 -07:00
Girish Ramakrishnan
0618431be7 print the cloudronId on registration 2018-11-01 23:10:26 -07:00
Girish Ramakrishnan
609c4388f0 cloudron-provision: take appstore user id and token 2018-11-01 23:08:26 -07:00
Girish Ramakrishnan
28243956db Add cert and appstore info to provision script 2018-11-01 22:38:21 -07:00
Girish Ramakrishnan
ff3a4f65dd autoprovision: register cloudron when provided appstore config 2018-11-01 22:28:51 -07:00
Girish Ramakrishnan
44da148fd1 remove collectd directory again 2018-11-01 20:33:40 -07:00
Girish Ramakrishnan
0b37479838 Add provision script 2018-11-01 20:17:15 -07:00
Girish Ramakrishnan
c09aa2a498 Make LE work with hyphenated domains 2018-11-01 19:08:05 -07:00
Girish Ramakrishnan
00d032616f More changes 2018-11-01 13:55:27 -07:00
Johannes Zellner
041285b187 Add dynamic dns settings routes 2018-10-31 16:02:51 +01:00
Johannes Zellner
fa9aa50fdf support --output again in createReleaseTarball script for hotfix to work
This avoids having to calculate the output filename with revisions and
exact format in the cli tool.
2018-10-31 08:54:24 +01:00
Girish Ramakrishnan
e0b1ebba92 verifyOperator -> isUnmanaged 2018-10-30 21:17:34 -07:00
Girish Ramakrishnan
581bbafa06 registry_config route does not require operator check 2018-10-30 20:54:35 -07:00
Girish Ramakrishnan
ce93518c0a allow hyphenated subdomains on all editions 2018-10-30 20:35:35 -07:00
Girish Ramakrishnan
0ba0b009c7 make the domain locking code more clear 2018-10-30 20:35:32 -07:00
Girish Ramakrishnan
eed8f109bc operator check is now directly based on edition type 2018-10-30 20:26:22 -07:00
Girish Ramakrishnan
63946509b3 Get autoconf data as separate object
This was done because restore API already takes a backupConfig.
So, it's best to split up the primary parameters and the autoconf
2018-10-30 19:27:14 -07:00
Girish Ramakrishnan
668ff99450 Add support for restricted certs as part of dns setup 2018-10-30 18:15:26 -07:00
Girish Ramakrishnan
03984a811f dnsSetup -> setup
It now takes a dnsConfig object. It will end up taking other config
objects for provisioning.
2018-10-30 14:01:02 -07:00
Girish Ramakrishnan
7c733ae150 Fix error handling 2018-10-29 20:19:48 -07:00
Girish Ramakrishnan
9fe02d3818 lint 2018-10-29 20:19:42 -07:00
Girish Ramakrishnan
f10b80d90d Make apps test great again 2018-10-29 12:49:41 -07:00
Girish Ramakrishnan
caf1d18250 Add flag for tests to check if platform is ready 2018-10-29 12:46:02 -07:00
Girish Ramakrishnan
c700635656 certs: make renew switch to fallback certs 2018-10-28 19:03:57 -07:00
Girish Ramakrishnan
d6d2ee7d19 Add version to release filename
This is required because we have to patch the VERSION file inside
the tarball for 'rerelease'. Which then requires release tarballs
to have a unique name.

The version is at the end because there is code  in release script
which relies on the box sha at the front
2018-10-28 16:16:51 -07:00
Girish Ramakrishnan
f5a5da6731 3.0 changes 2018-10-28 14:43:20 -07:00
Girish Ramakrishnan
8f2ce5f4f8 cloudron-setup: Fixup script to support pre-3.2 versions
This is required for e2e and restore of old cloudrons
2018-10-28 14:21:51 -07:00
Girish Ramakrishnan
62619d21c0 Handle 409 in container exec 2018-10-27 14:15:52 -07:00
Girish Ramakrishnan
bf7707b70b cleanup old base image as well 2018-10-27 13:10:02 -07:00
Girish Ramakrishnan
698f3c833b cloudflare: Fix crash
{ success: false,
  errors:
   [ { code: 9103, message: 'Unknown X-Auth-Key or X-Auth-Email' } ],
  messages: [],
  result: null }
/home/yellowtent/box/src/dns/cloudflare.js:36
        } else if (error.error_chain[0] && error.error_chain[0].message) {
                                    ^
TypeError: Cannot read property '0' of undefined
    at translateRequestError (/home/yellowtent/box/src/dns/cloudflare.js:36:37)
    at /home/yellowtent/box/src/dns/cloudflare.js:57:83
2018-10-27 12:51:24 -07:00
Girish Ramakrishnan
5996a107ed Return a bogus version to fix the tests 2018-10-27 12:26:39 -07:00
Girish Ramakrishnan
0307dc5145 Carefully prune addon images
With the docker image prune we ended up removing the redis image
which was ununsed...

This also prevents us from removing images of some app using the
docker addon
2018-10-27 12:01:22 -07:00
Girish Ramakrishnan
f9aa09f717 typo 2018-10-27 11:28:30 -07:00
Girish Ramakrishnan
2688a57d46 Move version out of config.js
We now store this in a file called VERSION inside the tarball
itself.
2018-10-27 11:13:36 -07:00
Girish Ramakrishnan
7ad069fd94 Make config.setVersion hidden 2018-10-27 10:44:21 -07:00
Girish Ramakrishnan
06d043dac4 Make baseImage an array of objects 2018-10-26 16:58:18 -07:00
Girish Ramakrishnan
94be6a9e3c Pull images in installer.sh
This way if the network is not working, then the update will just
fail and use the old version

This also tags the addon images with the semver properly
2018-10-26 16:35:18 -07:00
Girish Ramakrishnan
97567b7d2a Do not re-create cloudron.conf
All this argument passing going around is just needless

* boxdata/version file is not used
* dashboard config.json is also unused
2018-10-26 15:29:14 -07:00
Girish Ramakrishnan
95d691154d scripts/cloudron-setup: --data-dir is obsolete 2018-10-26 10:59:06 -07:00
Girish Ramakrishnan
9ac9b49522 Move ntp setup to base image init script 2018-10-26 10:57:19 -07:00
Girish Ramakrishnan
6a887c2bba SSH port configuration will be done in appstore 2018-10-26 10:13:35 -07:00
Girish Ramakrishnan
0250508a89 Add comment for installer.sh and start.sh 2018-10-26 10:13:35 -07:00
Girish Ramakrishnan
f97973626c start.sh: curl is not used
we will move network stuff to installer.sh anyways
2018-10-26 09:55:13 -07:00
Girish Ramakrishnan
5cdf9d1c6f Move host configuration to setup script since Cloudron does not rely on it
Also hostname cannot be set here since admin_fqdn is not available on
initial setup
2018-10-25 18:49:05 -07:00
Girish Ramakrishnan
009e888686 remove dead migration of nginx certs 2018-10-25 18:43:24 -07:00
Girish Ramakrishnan
e3478c9d13 Use docker cli to cleanup old images 2018-10-25 16:33:12 -07:00
Girish Ramakrishnan
2e3ddba7e5 cloudron-setup: Log arguments later 2018-10-25 11:31:39 -07:00
Girish Ramakrishnan
81ac44b7da Fix failing test 2018-10-25 00:01:32 -07:00
Girish Ramakrishnan
ffe50ff977 detect change in provider type and renew accordingly 2018-10-24 20:40:05 -07:00
Girish Ramakrishnan
73faba3c28 certs: Fix the config filename of admin domain 2018-10-24 20:32:03 -07:00
Girish Ramakrishnan
c1db52927e Add a debug 2018-10-24 20:32:03 -07:00
Girish Ramakrishnan
e7120bd086 Move renewal logic to domain model code 2018-10-24 20:32:03 -07:00
Girish Ramakrishnan
91ad94f978 No more prereleases 2018-10-24 15:28:41 -07:00
Girish Ramakrishnan
ee517da4f4 Add route to renew certs of a domain 2018-10-24 13:09:41 -07:00
Girish Ramakrishnan
0d04213199 Ensure app can be uninstalled even if image format is invalid 2018-10-24 13:09:41 -07:00
Johannes Zellner
114f6c596d Use new mongodb addon with fixed return paths 2018-10-24 10:45:30 +02:00
Johannes Zellner
5dadd083be Use new mysql addon with fixed db import 2018-10-23 15:59:40 +02:00
Johannes Zellner
28d61a4d70 Use postgres addon with fixed restore 2018-10-23 13:05:39 +02:00
Girish Ramakrishnan
a49969f2be Move apphealthmonitor into a cron job
This makes sure that it only runs post activation

See also a9c1af50f7
2018-10-22 20:08:49 -07:00
Girish Ramakrishnan
65eaf0792e Remove any appdata dir symlinks correctly 2018-10-18 19:58:37 -07:00
Girish Ramakrishnan
6153f45fd9 Remove legacy redis directory 2018-10-18 19:30:10 -07:00
Girish Ramakrishnan
d5ffb8b118 Fix appstore casing
The API on cloudron.io wants appstore and not appStore
2018-10-18 14:21:09 -07:00
Girish Ramakrishnan
bc283f1485 Validate env vars 2018-10-18 13:40:26 -07:00
Girish Ramakrishnan
2d427a86f0 Send appstoreId as part of purchase/unpurchase 2018-10-18 11:01:32 -07:00
Girish Ramakrishnan
2a6edd53b6 Update postgresql (clone/restore fix) 2018-10-17 18:49:35 -07:00
Girish Ramakrishnan
cf8bb3da9e Update mysql (prefix backup and restore) 2018-10-17 18:40:48 -07:00
Girish Ramakrishnan
7c1325cb34 Update mail addon (gnutls-bin) 2018-10-17 14:18:54 -07:00
Girish Ramakrishnan
f4ad912cf3 redis: do not import if not upgrading
There will be no backup to import from
2018-10-17 10:55:11 -07:00
Girish Ramakrishnan
78936a35c5 redis: Check the new dump location first
we do not cleanup the old dumps (yet). this then means that we will
constantly be importing the older dump.
2018-10-17 10:33:41 -07:00
Johannes Zellner
4ab2f8c153 Fix typo 2018-10-17 18:20:39 +02:00
Girish Ramakrishnan
858f03e02d Update redis addon container
Fixes #223
2018-10-16 15:40:40 -07:00
Girish Ramakrishnan
045cfeeb0d Move the addon startup logic to addons.js
Moved the graphite logic to new graphs.js

The settings code now does change notification itself. Over time,
it makes sense to just having settings code do this for everything
and not have this change listener logic. This lets us:
* Maybe the settings can only return based on final handler result
* All dependant modules otherwise have to "init"ed to listen on startup
* Easier to test those handlers without having to actually change the
  setting (since they will now be in "exports" naturally)

Also, maybe someday with this abstraction we can allow apps to have their
own isolated databases etc
2018-10-16 14:40:29 -07:00
Girish Ramakrishnan
bbc121399e Stop containers by name before killing them outright 2018-10-16 13:24:11 -07:00
Girish Ramakrishnan
03d513a3b1 Remove infra upgrade logic
We now upgrade using the dumps of the last backups which are in the
filesystem itself instead of downloading the entire app from the
backup all over.
2018-10-16 11:06:01 -07:00
Girish Ramakrishnan
539447409e Fix mongodb addon digest 2018-10-16 10:06:04 -07:00
Johannes Zellner
4525c6f39e Revert base image change 2018-10-16 15:10:11 +02:00
Girish Ramakrishnan
a6618c5813 Update mongodb (healthcheck) 2018-10-16 00:23:18 -07:00
Girish Ramakrishnan
5c1a0c1305 Check the status field for healthcheck 2018-10-16 00:21:48 -07:00
Girish Ramakrishnan
62c9fc90f9 Fix crash when oldConfig is null 2018-10-15 16:29:30 -07:00
Girish Ramakrishnan
2c60614d4b remove special rm script for redis 2018-10-15 16:14:16 -07:00
Girish Ramakrishnan
816fa94555 Upgrade the db addons using dumps when major version changes 2018-10-15 16:14:13 -07:00
Girish Ramakrishnan
bbdafc6a2f pass existing infra information to start funcs 2018-10-15 14:09:13 -07:00
Girish Ramakrishnan
5333db5239 Add method to import database from dumps 2018-10-15 10:15:47 -07:00
Girish Ramakrishnan
6254fe196a Install resolvconf
When we disable systemd-resolved, the system goes into a state
where no DNS queries work anymore. Even if unbound is installed
right after. Installing 'resolvconf' fixes this.

There is competition even for this tiny package! (openresolv)
2018-10-15 08:58:37 -07:00
Girish Ramakrishnan
79d3713a4b All apps are being updated already to 1.0.0 2018-10-14 16:31:49 -07:00
Girish Ramakrishnan
f1da537c80 wait for addons to start using heathcheck routes 2018-10-14 13:26:01 -07:00
Girish Ramakrishnan
b19fc23cb2 Fix the tests 2018-10-12 17:05:31 -07:00
Girish Ramakrishnan
5366524dc0 Add route to set/unset the registry config 2018-10-12 17:04:04 -07:00
Girish Ramakrishnan
f86d4f0755 Update manifestformat 2018-10-12 16:13:28 -07:00
Girish Ramakrishnan
3ad495528f whitespace 2018-10-11 16:18:38 -07:00
Girish Ramakrishnan
5bfb253869 Custom env vars for apps
Add a table and the install/configure routes. Initially, I thought
we can just keep the env vars in docker container but that doesn't
work since we create the container only later in apptask. And if the
container gets deleted we lose this information.
2018-10-11 16:17:18 -07:00
Girish Ramakrishnan
630fbb373c healthCheckPath is optional for non-appstore apps 2018-10-11 13:20:31 -07:00
Girish Ramakrishnan
8d09ec5ca6 Disable systemd-resolved on 18.04 2018-10-08 20:09:45 -07:00
Girish Ramakrishnan
23af20ddc9 Update graphite addon 2018-10-08 14:18:13 -07:00
Girish Ramakrishnan
86441bfeb6 Update mail container with latest base image 2018-10-08 10:08:05 -07:00
Johannes Zellner
be51daabf0 Use restified addons based on new base image as v2.0.0 2018-10-08 13:41:39 +02:00
Girish Ramakrishnan
86e8db435a Add new 18.04 base image 2018-10-05 14:11:31 -07:00
Girish Ramakrishnan
d8401f9ef9 Add 18.04 to changelog 2018-10-05 10:47:17 -07:00
Girish Ramakrishnan
64f98aca5a 18.04 support 2018-10-05 10:28:02 -07:00
Johannes Zellner
f660947594 Do not silently retry on dns upsert in apptask 2018-10-05 17:07:34 +02:00
Girish Ramakrishnan
576e22e1a0 Update hash of mail container 2018-10-05 08:00:27 -07:00
Johannes Zellner
e004a00073 Add some 3.3.0 changes 2018-10-05 16:24:32 +02:00
Johannes Zellner
c0fdac5b34 The additional fetch wont hurt but makes it more readable 2018-10-05 16:21:06 +02:00
Johannes Zellner
a2a035235e Use postgres addon 2.0.2 2018-10-05 16:07:22 +02:00
Girish Ramakrishnan
85ac2bbe52 Update 3.2.2 changelog
(cherry picked from commit e67fc64e65)
2018-10-04 21:21:04 -07:00
Girish Ramakrishnan
c26e9bbef7 Fix debugs to match function name 2018-10-04 10:29:40 -07:00
Girish Ramakrishnan
3e85029ea1 Add 3.2.1 changes (updated dashboard)
(cherry picked from commit 0189539b27)
2018-09-30 15:03:43 -07:00
Girish Ramakrishnan
8dd3c55ecf Use async unlink 2018-09-28 17:05:53 -07:00
Girish Ramakrishnan
1ee902a541 typoe 2018-09-28 17:01:56 -07:00
Girish Ramakrishnan
55cbe46c7c godaddy: empty the text record for del 2018-09-28 14:35:57 -07:00
Girish Ramakrishnan
5a8a4e7907 acme2: Display any errors when cleaning up challenge 2018-09-28 14:33:08 -07:00
Girish Ramakrishnan
3b5be641f0 acme2: fix challenge subdomain calculation in cleanup 2018-09-28 13:24:34 -07:00
Girish Ramakrishnan
a34fe120fb TXT values must be quoted 2018-09-27 20:17:39 -07:00
Girish Ramakrishnan
b9918cb6fb Fix changelog ordering 2018-09-26 22:34:14 -07:00
Girish Ramakrishnan
21a86175b4 Use the local branch in hotfix
(cherry picked from commit ffb02a3ba8)
2018-09-26 22:30:23 -07:00
Girish Ramakrishnan
84150f53e7 Revert "Do not require dashboard remote branch with the same name for hotfix"
This reverts commit b2469de9b0.

This affects the release scripts and always creates dashboard tarball from master
2018-09-26 22:03:38 -07:00
Girish Ramakrishnan
42c1f8bb04 start most cron jobs only after activation
Importing the db might take some time. If a cron runs in the middle,
it crashes.

TypeError: Cannot read property 'domain' of undefined
    at Object.fqdn (/home/yellowtent/box/src/domains.js:126:111)
    at /home/yellowtent/box/src/apps.js:460:36
    at /home/yellowtent/box/node_modules/async/dist/async.js:3110:16
    at replenish (/home/yellowtent/box/node_modules/async/dist/async.js:1011:17)
    at /home/yellowtent/box/node_modules/async/dist/async.js:1016:9
    at eachLimit$1 (/home/yellowtent/box/node_modules/async/dist/async.js:3196:24)
    at Object.<anonymous> (/home/yellowtent/box/node_modules/async/dist/async.js:1046:16)
    at /home/yellowtent/box/src/apps.js:458:19
    at /home/yellowtent/box/src/appdb.js:232:13
    at Query.args.(anonymous function) [as _callback] (/home/yellowtent/box/src/database.js
2018-09-26 14:56:45 -07:00
Girish Ramakrishnan
a504759b95 more debugs and comments 2018-09-26 12:39:33 -07:00
Girish Ramakrishnan
af763eadd4 Fix perms issue when restoring
Fixes #536
2018-09-26 11:59:19 -07:00
Girish Ramakrishnan
818735e2c8 Fix import of older redis backups 2018-09-26 09:48:18 -07:00
Girish Ramakrishnan
aefa8ed0d6 Add .eslintrc
Looks like only this supports async/await nicely
2018-09-25 18:31:15 -07:00
Girish Ramakrishnan
78d3aafd7a Fix case where mailbox already exists 2018-09-25 17:04:17 -07:00
Girish Ramakrishnan
1fed7335cf Update the db addons 2018-09-25 14:24:32 -07:00
Girish Ramakrishnan
34626abdcf reset mailboxname to .app when empty
fixes #587
2018-09-25 11:26:38 -07:00
Girish Ramakrishnan
477f8a3ca1 mysql: Add message to error string 2018-09-24 16:45:08 -07:00
Girish Ramakrishnan
bd7bd2adae 3.1.4 changes 2018-09-24 09:29:58 -07:00
Girish Ramakrishnan
d47fd34f66 Use alternateDomain fqdn for ensuring certificate
this makes it work for hyphenated domains as well
2018-09-22 16:26:28 -07:00
Girish Ramakrishnan
f6ceee7f50 list domains only once 2018-09-22 16:19:12 -07:00
Girish Ramakrishnan
a08f05fb44 Attach fqdn to all the alternateDomains 2018-09-22 15:11:01 -07:00
Girish Ramakrishnan
6214ba7b31 allow hyphenated subdomains in caas 2018-09-22 12:37:38 -07:00
Girish Ramakrishnan
e69004548b waitForDnsRecord: use subdomain as argument
this allows to hyphenate the subdomain correctly in all places

the original issue was that altDomain in caas was not working
because waitForDnsRecord was not hyphenating.
2018-09-22 11:26:33 -07:00
Girish Ramakrishnan
c8216d84ac register alt domains in install route 2018-09-22 10:09:46 -07:00
Girish Ramakrishnan
5cfc3b22fa Add redis healthcheck 2018-09-20 12:46:08 -07:00
Girish Ramakrishnan
a755aecfc5 typo 2018-09-19 17:25:40 -07:00
Girish Ramakrishnan
64e34e13be display error messages 2018-09-19 15:55:42 -07:00
Girish Ramakrishnan
e455ea987a postgresql: fix various issues during backup/restore/clear 2018-09-19 15:35:47 -07:00
Girish Ramakrishnan
bf87d3fc8b Update redis sha256 2018-09-19 15:11:55 -07:00
Girish Ramakrishnan
cfdb939bff redis: various fixes 2018-09-19 14:29:27 -07:00
Girish Ramakrishnan
16fab63442 Update mysql for quoting fix 2018-09-19 12:26:18 -07:00
Johannes Zellner
fe14bcf155 Use updated mysql addon 2018-09-19 12:48:44 +02:00
Girish Ramakrishnan
9732b899b0 redis: backup returns 200 now 2018-09-18 14:11:42 -07:00
Girish Ramakrishnan
23b9854c57 Use REST API instead of volumes for redis 2018-09-18 13:09:24 -07:00
Girish Ramakrishnan
0b3f65c70e postgres: restore need not call setup anymore 2018-09-18 12:29:40 -07:00
Girish Ramakrishnan
83d56f79c6 lint 2018-09-18 12:22:19 -07:00
Johannes Zellner
8632939c6e Use restified mysql addon 2018-09-18 20:25:07 +02:00
Johannes Zellner
93cdba8137 Use post instead of delete for postgres clear 2018-09-18 20:23:19 +02:00
Johannes Zellner
2686a1b9e3 Fixup copy and paste errors and linter warnings 2018-09-18 20:20:27 +02:00
Johannes Zellner
eec1fe1272 Start mysql addon with env vars instead of vars.sh file 2018-09-18 20:18:39 +02:00
Johannes Zellner
f7f26fdf78 Fix logging in getAddonDetails() 2018-09-18 20:18:39 +02:00
Johannes Zellner
d980d44833 Talk to the mysql addon via rest apis 2018-09-18 20:18:39 +02:00
Girish Ramakrishnan
af4b2b075e redis: fix clear return code 2018-09-17 20:44:13 -07:00
Girish Ramakrishnan
3fcf6aa339 Add a timeout to wait for redis to start 2018-09-17 20:40:07 -07:00
Girish Ramakrishnan
1b205ac107 postgresql: fix clear route to have username and remove extra } 2018-09-17 19:53:12 -07:00
Girish Ramakrishnan
bcee0aa2ad Update postgresql (reset root password fix) 2018-09-17 19:22:27 -07:00
Girish Ramakrishnan
e2bf52b69d postgresql: Add missing db prefix in routes 2018-09-17 18:11:38 -07:00
Girish Ramakrishnan
3c6dffbbc7 Remove old docker images correctly
Old images had no sha256, so it prints "<none>". These images
have to be accessed by tag which uses the ":tag" format whereas
the sha images use the "@sha" format
2018-09-17 16:39:31 -07:00
Girish Ramakrishnan
691b876d61 Update postgresql image (re-setup fix) 2018-09-17 16:25:17 -07:00
Girish Ramakrishnan
ed14115ff1 Fix new account return value
https://tools.ietf.org/html/draft-ietf-acme-acme-07#section-7.3
2018-09-17 15:30:16 -07:00
Girish Ramakrishnan
6d9c6ffba3 acme2: register new account returns 201 2018-09-17 15:19:19 -07:00
Johannes Zellner
b8dd01d502 Bump postgres addon image again with latest fixes 2018-09-17 15:56:02 +02:00
Johannes Zellner
7e16b96abe Use updated postgres addon 2018-09-17 12:54:05 +02:00
Johannes Zellner
705d0ba7f9 Use restified postgresql addon 2018-09-16 22:56:26 +02:00
Girish Ramakrishnan
306c80dd93 Fix addons.js with the new env var names 2018-09-15 20:38:18 -07:00
Girish Ramakrishnan
c8ed1d950b Update mongodb addon (restore does not clear anymore) 2018-09-15 20:29:04 -07:00
Girish Ramakrishnan
705bf3db98 Use only CLOUDRON_* prefixed vars (we reserve these) 2018-09-15 20:15:58 -07:00
Girish Ramakrishnan
e2b388f721 Update redis addon that has clear route 2018-09-15 20:14:16 -07:00
Girish Ramakrishnan
3f34734933 withFileTypes is only available on node 10 2018-09-15 18:47:34 -07:00
Girish Ramakrishnan
391ee00db8 Fix cleanup of old images 2018-09-15 18:41:06 -07:00
Girish Ramakrishnan
64a7b80395 Fix issue deleting app dir during restore
During restore, only the superfluous addons are teardown. Rest of
the addons are kept as-is. This is done to preserve the addon
configuration across restores (thus preserving db passwords).

We then rely on the restoreApp logic to call restore in each addon.
Each restore currently setup, clear and them imports the backup.

With the volume changes, we have moved volume create/delete to the
localstorage addon. Currently, the localstorage addon has no concept of restore
because the backup download extracts it directly into the volume.

Because of the above, during the restore code path, we don't teardown
the localstorage addon and thus files are left behind in appid/data/. This
prevents deleteAppDir() from removing the appid/ directory.

The fix is to add a new 'clear' command to addons. Before restore, we
clear the addons.
2018-09-15 17:35:47 -07:00
Girish Ramakrishnan
46a00c839b rename create/deleteVolume to avoid confusion 2018-09-15 15:30:26 -07:00
Girish Ramakrishnan
9f6621434f Use sha256 to accidentally prevent overwritten tags 2018-09-14 20:20:46 -07:00
Johannes Zellner
3963eb687f Use the sudo script for app volume 2018-09-14 14:37:20 +02:00
Johannes Zellner
56cd97147a Unify the code to get addon container ip and token 2018-09-14 13:26:56 +02:00
Johannes Zellner
614b3ed5d1 Remove unused variable 2018-09-14 13:19:47 +02:00
Johannes Zellner
9f622c5e65 Do not store the cloudron redis service token in the addon env blob 2018-09-14 13:19:33 +02:00
Girish Ramakrishnan
4f6a467181 bump minor version to make apps reconfigure themselves
this is because the container configuration has changed
(we create volume)
2018-09-13 15:47:08 -07:00
Girish Ramakrishnan
a46e208c63 Use docker volumes instead of bind mount for app data 2018-09-13 15:35:41 -07:00
Johannes Zellner
a0fd60408b Use https with selfsigned certs for addon service calls 2018-09-13 21:37:55 +02:00
Johannes Zellner
ffbbba938a Replace superagent with request for talking to addons 2018-09-13 12:54:33 +02:00
Johannes Zellner
a222b3ed58 Use new restified mongodb and redis addons 2018-09-13 12:54:33 +02:00
Girish Ramakrishnan
6ba574432a calculate subdomain correctly for non-wildcard domains 2018-09-12 15:55:20 -07:00
Girish Ramakrishnan
96075c7c20 Fix double callback 2018-09-12 14:43:15 -07:00
Girish Ramakrishnan
64665542bc select app's cert based on domain's wildcard flag
this also removes the confusing type field in the bundle. we instead
check the current nginx config to see what cert is in use.
2018-09-12 14:22:54 -07:00
Girish Ramakrishnan
54d2a4f17b rework args to ensureCertificate 2018-09-12 12:50:04 -07:00
Girish Ramakrishnan
1d829c4af2 Allow wildcard only with programmable DNS backend 2018-09-12 12:36:13 -07:00
Girish Ramakrishnan
dc4dc05628 Fixup changes file 2018-09-12 10:00:16 -07:00
Johannes Zellner
b2469de9b0 Do not require dashboard remote branch with the same name for hotfix 2018-09-12 12:56:24 +02:00
Johannes Zellner
812d3576a9 Use mongodb rest api for backup and restore 2018-09-12 12:56:24 +02:00
Johannes Zellner
6012eb7898 docker inspect and the rest api have a different output format 2018-09-12 12:56:24 +02:00
Johannes Zellner
a591b5910e Restify mongodb addon 2018-09-12 12:56:24 +02:00
Johannes Zellner
1e084e98d1 Change mongodb addon from env vars file to passing directly 2018-09-12 12:56:24 +02:00
Johannes Zellner
b4224a7f8d Call the rest route on redis backup
The addons are an array of key/value
2018-09-12 12:56:24 +02:00
Johannes Zellner
ab8a010b94 Redis does not use the vars.sh file anymore 2018-09-12 12:56:24 +02:00
Johannes Zellner
4c164c17cf Support internal only addon configs with redis persistent token 2018-09-12 12:56:24 +02:00
Johannes Zellner
650f181a07 Provision redis addon with new set of required env vars 2018-09-12 12:56:24 +02:00
Girish Ramakrishnan
97ab521038 make ensureCertificate check any wildcard cert 2018-09-11 23:47:23 -07:00
Girish Ramakrishnan
c138c4bb5f acme2: implement wildcard certs 2018-09-11 23:15:50 -07:00
Girish Ramakrishnan
1067ff882a Move type validation to routes logic 2018-09-11 22:17:40 -07:00
Girish Ramakrishnan
b6ad6e121b refactor to validateTlsConfig 2018-09-11 21:53:18 -07:00
Girish Ramakrishnan
a756345138 consolidate hyphenatedSubdomains handling 2018-09-11 21:41:50 -07:00
Girish Ramakrishnan
35f69cfea9 acme2: wait for dns 2018-09-11 19:41:41 -07:00
Girish Ramakrishnan
3f0bc6165b Enhance waitForDns to support TXT records 2018-09-11 19:41:38 -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
2c76716bc7 rename func 2018-09-10 20:35:48 -07:00
Girish Ramakrishnan
f38b87c660 lint 2018-09-10 20:30:38 -07:00
Girish Ramakrishnan
9bac2acc37 Fix callback use 2018-09-10 17:39:13 -07:00
Girish Ramakrishnan
68536b6d7d acme2 implementation 2018-09-10 16:26:24 -07:00
Girish Ramakrishnan
1d0a52404a Fix tests 2018-09-10 13:45:05 -07:00
Girish Ramakrishnan
017460b497 acme -> acme1 2018-09-10 10:57:48 -07:00
Girish Ramakrishnan
8efd496579 storage: add access denied function (unused) 2018-09-10 10:41:08 -07:00
Girish Ramakrishnan
229fe0f66f Add 3.1.4 changes 2018-09-10 09:28:08 -07:00
Girish Ramakrishnan
efa36ab161 cloudflare: Add the chain message 2018-09-07 11:46:10 -07:00
Girish Ramakrishnan
191c85d01f cloudflare: priority is now an integer 2018-09-07 11:44:31 -07:00
Girish Ramakrishnan
88330ab415 Return 424 for external errors 2018-09-07 11:27:19 -07:00
Girish Ramakrishnan
76f5b22c07 dns: implement wildcard dns validation 2018-09-06 20:45:10 -07:00
Girish Ramakrishnan
0639ca1594 Make wildcard a separate provider
this is required because the config object is not returned for
locked domains and the UI display for the provider field is then
wrong.
2018-09-06 20:09:08 -07:00
Girish Ramakrishnan
e620a26c04 typo 2018-09-06 20:05:08 -07:00
Girish Ramakrishnan
867c3595b2 more changes 2018-09-06 13:18:26 -07:00
Girish Ramakrishnan
df66d77a68 cloudflare: Fix crash when there is an external error updating dns records 2018-09-06 12:26:11 -07:00
Girish Ramakrishnan
5e919b90f5 Better fix for grub 2018-09-06 11:56:50 -07:00
Girish Ramakrishnan
428269f503 3.1.3 changes 2018-09-06 00:41:45 -07:00
Girish Ramakrishnan
b03e26a510 Fix typo 2018-09-06 00:41:37 -07:00
Girish Ramakrishnan
1e15b63a4a prevent deletion of mail domain as well 2018-09-06 00:16:12 -07:00
Girish Ramakrishnan
8d5e70f6aa lock the admin domain based on the edition 2018-09-06 00:15:45 -07:00
Girish Ramakrishnan
91a1bc7a01 move verifyOperator to users routes 2018-09-06 00:10:09 -07:00
Girish Ramakrishnan
0e3f9c9569 Move verifyAppOwnership to app route 2018-09-06 00:09:42 -07:00
Girish Ramakrishnan
2ad0a57fc1 Typo 2018-09-05 23:59:40 -07:00
Girish Ramakrishnan
def3521ee1 Do not allow admin domain to be deleted 2018-09-05 17:12:02 -07:00
Girish Ramakrishnan
3d004b3dcc Disable various server/operator routes based on edition
The initial idea was to put an owner flag but this means that the
owner will be visible inside apps.
2018-09-05 15:31:58 -07:00
Girish Ramakrishnan
0439bd8869 move addSpacesSuffix to model logic 2018-09-04 16:37:08 -07:00
Girish Ramakrishnan
10b4043358 Add alternateDomains to app install route 2018-09-04 16:27:35 -07:00
Girish Ramakrishnan
ac3b0f0082 Add spaces suffix for alternate domains 2018-09-04 14:12:50 -07:00
Girish Ramakrishnan
d49a1dea7a Fix usage of domains.fqdn 2018-09-04 11:35:01 -07:00
Girish Ramakrishnan
ec9c96da6f Fix comments 2018-09-04 10:48:54 -07:00
Johannes Zellner
2de630e491 Put the app owner also into ldap groups
Fixes #585
2018-09-03 17:14:11 +02:00
Johannes Zellner
3af358b9bc List app owner as admins in ldap search 2018-09-03 16:08:05 +02:00
Johannes Zellner
b61478edc9 Attach req.app for further use in ldap routes 2018-09-03 15:38:50 +02:00
Johannes Zellner
b23afdd32d Fix tests to match the adjusted purchase logic 2018-09-01 11:53:05 +02:00
Girish Ramakrishnan
43055da614 Add route to let admin set user password 2018-08-31 14:35:01 -07:00
Girish Ramakrishnan
2c3f1ab720 Fix the error messages 2018-08-31 14:06:06 -07:00
Johannes Zellner
35a31922a5 Always run all tests 2018-08-31 22:25:06 +02:00
Girish Ramakrishnan
bf432dc26f Revert "Disable memory accounting setup"
This reverts commit ad22df6f71.

This actually serves the purpose of enabling swap.

https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh
2018-08-31 13:21:33 -07:00
Johannes Zellner
18cc93799e Fully rely on the appstore during 'purchase' call 2018-08-31 10:53:35 +02:00
Girish Ramakrishnan
fc3bc48f47 Fix crash when location is not provided 2018-08-30 22:08:48 -07:00
Girish Ramakrishnan
fc96f59ecc Add edition checks 2018-08-30 21:20:49 -07:00
Girish Ramakrishnan
534a00b3af Disallow dot in location in hyphenatedSubdomains 2018-08-30 21:03:54 -07:00
Girish Ramakrishnan
619d1e44e5 Move validateHostname to domains code 2018-08-30 20:54:15 -07:00
Girish Ramakrishnan
068113bd5d remove redundant domain arg to domains.fqdn 2018-08-30 19:57:12 -07:00
Girish Ramakrishnan
ca16072d90 hypenatedSubdomains: do not hyphenate txt dns records 2018-08-30 16:17:56 -07:00
Girish Ramakrishnan
6fac59cf9d cloudron-setup: print before we shift all the args 2018-08-30 14:30:49 -07:00
Girish Ramakrishnan
f953cfc4d5 cloudron-setup: print the args to the log file 2018-08-30 14:06:25 -07:00
Johannes Zellner
7a1723d173 Fix app tests 2018-08-30 00:32:38 +02:00
Johannes Zellner
b6643518f6 Adjust apps test to how we check subscriptions 2018-08-29 23:57:59 +02:00
Johannes Zellner
91470156c9 Only remove all app container on uninstall
For update and configure, we do not want to purge potential docker addon
created ones. They are managed by the app itself.
2018-08-29 21:28:58 +02:00
Johannes Zellner
40c6ab5615 Remove unused require 2018-08-29 21:25:02 +02:00
Girish Ramakrishnan
6cc4e44f22 pass edition to update.sh 2018-08-28 22:14:27 -07:00
Girish Ramakrishnan
976cf1740e Put edition in status route 2018-08-28 21:43:25 -07:00
Girish Ramakrishnan
22cdd3f55e spaces: add username suffix to location 2018-08-28 20:27:17 -07:00
Girish Ramakrishnan
e0cd7999eb Make spaces an edition instead of setting 2018-08-28 18:31:48 -07:00
Johannes Zellner
4f7242fa6a add --edition option to cloudron-setup 2018-08-28 18:06:25 -07:00
Johannes Zellner
964da5ee52 Send the edition in the config route 2018-08-28 18:05:45 -07:00
Johannes Zellner
baa99d1a44 add edition property to cloudron.conf 2018-08-28 18:05:15 -07:00
Girish Ramakrishnan
6d1cb1bb14 Do not update grub packages
It looks on some VPS, the grub then asks the user to re-install
since the disk name has changed/moved (presumably because the
image was created on a server with a different disk name)
2018-08-28 14:33:07 -07:00
Girish Ramakrishnan
f7e6c5cd40 Add galaxygate as a provider 2018-08-28 12:25:16 -07:00
Girish Ramakrishnan
ad22df6f71 Disable memory accounting setup
Overall, this is outside the scope of Cloudron
2018-08-28 12:18:31 -07:00
Girish Ramakrishnan
8e572a7c23 Fix changelog 2018-08-27 16:05:01 -07:00
Girish Ramakrishnan
e49b57294d Give optional name for tokens 2018-08-27 14:59:52 -07:00
Girish Ramakrishnan
badb6e4672 add note on clients.appId 2018-08-27 14:30:39 -07:00
Girish Ramakrishnan
d09ff985af remove all user tokens when user is deleted 2018-08-27 14:05:22 -07:00
Girish Ramakrishnan
a3130c8aab inviteLink is not available during user create anymore 2018-08-27 10:40:58 -07:00
Girish Ramakrishnan
0843d51c98 Check for existing port bindings in udpPorts 2018-08-26 17:50:17 -07:00
Girish Ramakrishnan
9a1b5dd5cc Add 3.1.1 changelog 2018-08-25 18:32:02 -07:00
Girish Ramakrishnan
6f398144cb validate hyphenatedSubdomain 2018-08-25 18:29:55 -07:00
Girish Ramakrishnan
d91df50b9f caas: add hyphenateSubdomain property 2018-08-25 17:49:31 -07:00
Johannes Zellner
99ead48fd5 Add more changes 2018-08-25 11:14:14 +02:00
Johannes Zellner
922b6d2b18 Also renew alternate domain certificates
Part of #583
2018-08-25 11:04:53 +02:00
Girish Ramakrishnan
6a3b45223a Better name for internal functions 2018-08-24 15:38:44 -07:00
Girish Ramakrishnan
93b0f39545 ensureCertificate: make it take appDomain object 2018-08-24 15:07:13 -07:00
Girish Ramakrishnan
dbe86af31e Make getApi takes a string domain 2018-08-24 15:00:19 -07:00
Girish Ramakrishnan
3ede50a141 remove unused function 2018-08-24 14:11:02 -07:00
Girish Ramakrishnan
e607fe9a41 Specify subdomain fields explicitly 2018-08-24 10:39:59 -07:00
Johannes Zellner
43d125b216 Send hyphenatedSubdomains as non restricted property 2018-08-22 17:19:18 +02:00
Johannes Zellner
9467a2922a Return hyphenated subdomain name in getName() 2018-08-22 14:13:48 +02:00
Johannes Zellner
b35c81e546 Handle hyphenatedSubdomains in the backend verifyDnsConfig() 2018-08-22 12:16:19 +02:00
Johannes Zellner
59700e455e Use the full domain record for domains.fqdn() 2018-08-22 12:15:46 +02:00
Johannes Zellner
e8fcfc4594 Allow to specify hyphenatedSubdomains for a domain 2018-08-22 11:59:42 +02:00
Johannes Zellner
9bac7e8124 Move the comment where it belongs 2018-08-22 11:02:06 +02:00
Girish Ramakrishnan
210c453508 More changes 2018-08-21 21:25:07 -07:00
Girish Ramakrishnan
442d4e5c6f Fix failing tests 2018-08-21 18:57:11 -07:00
Girish Ramakrishnan
af63cb936d More changes 2018-08-21 18:47:12 -07:00
Girish Ramakrishnan
b4c9f64721 Issue token on password reset and setup 2018-08-21 18:42:18 -07:00
Girish Ramakrishnan
c64a29e6fc More 3.1.0 changes 2018-08-21 17:06:51 -07:00
Johannes Zellner
f05df7cfef Allow set admin flag on user creation 2018-08-21 17:12:46 +02:00
Johannes Zellner
f4a76a26af Remove left-over docker proxy start call in platform.js 2018-08-21 15:31:53 +02:00
Girish Ramakrishnan
f338e015d5 Revert "Also allow docker in containers spawned by an authorized app"
This reverts commit 4f336a05fc.

This is not required by an app yet. Besides, it breaks tests
2018-08-20 20:10:16 -07:00
Girish Ramakrishnan
89cf8167e6 Make tests work 2018-08-20 20:10:14 -07:00
Johannes Zellner
d5194cfdc9 Remove nativeLogging docker addon support
Was only required for eclipse che
2018-08-20 15:22:10 +02:00
Johannes Zellner
eb07d3d543 Drop all custom network configs in docker proxy 2018-08-20 15:19:08 +02:00
Girish Ramakrishnan
6a1a697820 Split the invite route into two 2018-08-17 16:27:29 -07:00
Girish Ramakrishnan
e5cc81d8fa Fix test name 2018-08-17 13:45:10 -07:00
Johannes Zellner
3640b0bd0e Allow to override the logging backend for app like che 2018-08-17 15:30:37 +02:00
Johannes Zellner
4d4ce9b86e Bare bones support of docker exec through the proxy 2018-08-17 15:30:23 +02:00
Johannes Zellner
db385c6770 Ensure the docker proxy tests cleanup correctly 2018-08-17 13:44:12 +02:00
Johannes Zellner
2925e98d54 Make PUT requests through the docker proxy work 2018-08-17 12:33:46 +02:00
Girish Ramakrishnan
75ee40865e 3.0.2 changes 2018-08-16 23:30:20 -07:00
Girish Ramakrishnan
af58e56732 Fix issue where normal users are shown all apps 2018-08-16 20:04:03 -07:00
Johannes Zellner
dc3e3f5f4d Ensure we pipe the parsed body again upstream to docker 2018-08-16 14:28:51 +02:00
Johannes Zellner
83304ff66c Verify that docker logs is correctly reporting another logging driver 2018-08-16 12:07:15 +02:00
Johannes Zellner
575e0cea33 Use syslog for containers created in apps 2018-08-16 11:37:08 +02:00
Girish Ramakrishnan
0bf3b45ddc Fix bind mapping logic 2018-08-15 16:52:30 -07:00
Johannes Zellner
826a0e7708 Add test case for docker logs through the proxy 2018-08-15 18:16:03 +02:00
Johannes Zellner
0522d1e3c4 Simply prefix all docker volume mounts with the app data dir 2018-08-15 18:00:51 +02:00
Johannes Zellner
12970bf50a Add some debugs for volume rewriting 2018-08-15 16:51:10 +02:00
Johannes Zellner
4a739213bf When creating a container the Labels are toplevel 2018-08-15 12:51:52 +02:00
Johannes Zellner
4f336a05fc Also allow docker in containers spawned by an authorized app 2018-08-15 12:35:34 +02:00
Girish Ramakrishnan
c3dacba894 dockerproxy: rewrite labels and binds 2018-08-14 20:49:41 -07:00
Girish Ramakrishnan
f88c01eea6 dockerproxy: Add app authorization 2018-08-14 20:04:15 -07:00
Girish Ramakrishnan
15b0dfcb60 rename variable 2018-08-14 19:03:59 -07:00
Girish Ramakrishnan
ebd27b444d dockerproxy: use express 2018-08-14 18:59:41 -07:00
Johannes Zellner
ee1c587922 Overwrite the docker container network in the proxy 2018-08-14 22:54:02 +02:00
Johannes Zellner
4da91ec90d Make the docker proxy work 2018-08-14 22:54:02 +02:00
Girish Ramakrishnan
3cf3c36e86 Fix tests 2018-08-13 22:54:56 -07:00
Girish Ramakrishnan
8bd6c9933f Add interval secs
Part of #568
2018-08-13 22:35:38 -07:00
Girish Ramakrishnan
2e0a7dcd47 Fix migration filename 2018-08-13 22:31:58 -07:00
Johannes Zellner
714c205538 Set the correct debug label 2018-08-13 22:06:28 +02:00
Johannes Zellner
00041add55 No need to pull in underscore to build an object 2018-08-13 22:01:51 +02:00
Johannes Zellner
7f5fe12712 Use DOCKER_HOST to make the cli work out of the box 2018-08-13 21:59:02 +02:00
Johannes Zellner
441fdb81f8 Move docker proxy into its own file 2018-08-13 21:14:17 +02:00
Johannes Zellner
fb02e8768c Remove unused require 2018-08-13 21:05:07 +02:00
Johannes Zellner
14f0f954b7 Use docker proxy over DOCKER_URL env var when docker addon is used 2018-08-13 20:47:15 +02:00
Johannes Zellner
10f0d48b2a Use docker proxy port from config 2018-08-13 20:41:02 +02:00
Johannes Zellner
6933184c2e Revert "Expose the host /app/data folder when localstorage and docker addons are used"
We will use the docker proxy for that

This reverts commit b3aa59de19.
2018-08-13 20:39:23 +02:00
Johannes Zellner
a1b983de23 Initial code for docker addon proxy 2018-08-13 20:38:39 +02:00
Johannes Zellner
b3aa59de19 Expose the host /app/data folder when localstorage and docker addons are used 2018-08-13 19:40:41 +02:00
Girish Ramakrishnan
796ced999f Add some 3.1 changes 2018-08-13 09:18:44 -07:00
Girish Ramakrishnan
353b5e07bf Save correct type of port in db
Part of #504
2018-08-13 08:33:17 -07:00
Girish Ramakrishnan
c29eef4c14 Set the udp ports in docker configuration
Part of #504
2018-08-12 22:47:59 -07:00
Girish Ramakrishnan
8bc7dc9724 Pass the manifest to validatePortBindings 2018-08-12 22:37:36 -07:00
Girish Ramakrishnan
60984d18dd Add type field to port bindings table
Part of #504
2018-08-12 22:32:36 -07:00
Girish Ramakrishnan
df1dc80fc1 Change the internal portBindings representation
Part of #504
2018-08-12 22:32:31 -07:00
Girish Ramakrishnan
8e2f0cdf73 Update cloudron-manifestformat (udpPorts) 2018-08-12 19:00:28 -07:00
Ian Fijolek
bf1e19f8e6 Add more detailed checking of DMARC
Fixes #570
2018-08-12 13:47:24 -07:00
Girish Ramakrishnan
9a7214ea07 Update manifestformat for docker addon 2018-08-10 12:31:46 -07:00
Johannes Zellner
4499f08357 Revert "Remove _docker addon"
This reverts commit d6f49eb54f.
2018-08-09 11:54:46 +02:00
Girish Ramakrishnan
8671c4c015 3.0.1 changes 2018-08-06 19:45:46 -07:00
Girish Ramakrishnan
2612cc18fa Expire existing webadmin token so that the UI gets a new token
This is because we added a new appstore scope
2018-08-06 19:40:46 -07:00
Girish Ramakrishnan
36a21acae8 skip verification for prereleases because we remove it from release.json 2018-08-06 16:23:23 -07:00
Girish Ramakrishnan
1ed4710c68 Better error message 2018-08-05 23:38:49 -07:00
Girish Ramakrishnan
75b6688734 Clear timeout when setting backup config 2018-08-05 22:29:27 -07:00
Girish Ramakrishnan
f7a7e4e95a Fix text in account setup screen 2018-08-05 21:58:07 -07:00
Girish Ramakrishnan
a8ba0b91f7 Allow subdomain in the location field
This allows one to easily add "dev.staging@domain.com" etc without having to create
yet another domain. This plays well with the concept that we have a
mail domain for every domain. So we get mails from @domain.com working for
these subdomain installations.
2018-08-04 09:37:18 -07:00
Girish Ramakrishnan
95540e8cbc Do ownership check in exec route 2018-08-03 22:19:42 -07:00
Girish Ramakrishnan
9ebd22d6f7 add api note 2018-08-03 22:19:36 -07:00
Girish Ramakrishnan
1cf5807fb9 Send spaces config in config route
This is here because normal users cannot access settings route
2018-08-03 18:26:16 -07:00
Girish Ramakrishnan
cc7824681b Return ownerId in apps response 2018-08-03 18:15:22 -07:00
Girish Ramakrishnan
a0a523ae71 spaces: verify app ownership in app management routes 2018-08-03 17:35:58 -07:00
Girish Ramakrishnan
fba70d888b Remove tokenScopes
decided that the UI won't use this any more and will just the admin flag
2018-08-03 10:07:23 -07:00
Girish Ramakrishnan
ce9fc7b3f7 Better error message 2018-08-03 09:46:22 -07:00
Girish Ramakrishnan
3d4df8e26c Add test for spaces config 2018-08-03 09:46:16 -07:00
Girish Ramakrishnan
d3f9647cd5 Add settings for Spaces 2018-08-03 09:40:57 -07:00
Girish Ramakrishnan
2a49569805 Send admin flag in the profile 2018-08-03 09:34:25 -07:00
Girish Ramakrishnan
47c8700d42 make scopesForUser async 2018-08-03 09:34:19 -07:00
Girish Ramakrishnan
d302dbc634 Fix tests 2018-08-02 14:59:50 -07:00
Girish Ramakrishnan
eab3cd6b2b ownerId for domains is not implemented yet 2018-08-01 18:53:49 -07:00
Girish Ramakrishnan
92151b1e42 Add note on npm rebuild 2018-08-01 18:37:40 -07:00
Girish Ramakrishnan
621d00a5c6 GPG verify releases
Part of #189
2018-08-01 17:16:42 -07:00
Girish Ramakrishnan
5bd7cd6749 Check if syslog binary exists first
The command fails in a subshell and strange things happen

==> installer: update cloudron-syslog
/tmp/box-src-hotfix/scripts/installer.sh: line 99: /usr/local/cloudron-syslog/bin/cloudron-syslog: No such file or directory
/tmp/box-src-hotfix/scripts/installer.sh: line 99: : command not found
2018-08-01 12:18:56 -07:00
Girish Ramakrishnan
5fb525f011 Commit binary public key
GPG's --verify option can only use binary format
2018-07-31 20:25:46 -07:00
Girish Ramakrishnan
d8257c4745 refactor updater logic into updater.js 2018-07-31 20:20:10 -07:00
Girish Ramakrishnan
ef5dc7311f Do not encrypt empty path 2018-07-31 19:41:03 -07:00
Girish Ramakrishnan
498642b670 Fix debugs 2018-07-31 19:32:56 -07:00
Girish Ramakrishnan
daa8514654 Pass the message and not error object 2018-07-31 10:46:35 -07:00
Girish Ramakrishnan
608de479fb Add releases public key
Part of #189
2018-07-31 10:34:01 -07:00
Johannes Zellner
51f7a47ea6 Fix db migration script 2018-07-30 22:58:09 +02:00
Girish Ramakrishnan
480aed9f33 Update mail addon 2018-07-30 12:37:37 -07:00
Girish Ramakrishnan
74ae0a1787 More changes 2018-07-30 10:46:14 -07:00
Girish Ramakrishnan
ed8351b0dc Add re-installation check
Fixes #536
2018-07-30 10:10:30 -07:00
Girish Ramakrishnan
a1070b7da3 storage: fix file not found message 2018-07-30 07:47:52 -07:00
Girish Ramakrishnan
3067d87ca9 handle decryption errors 2018-07-29 21:01:20 -07:00
Girish Ramakrishnan
56ca6f449f Set any restore errors in status object
Fixes #505
2018-07-29 20:31:58 -07:00
Girish Ramakrishnan
99ad3e499d s3: do not rely on entry.s3 2018-07-29 09:00:57 -07:00
Girish Ramakrishnan
7182ad4205 s3: Remove usage of entries.s3 2018-07-29 07:51:12 -07:00
Girish Ramakrishnan
0b10e2b332 s3: add listDir
Fixes #440
2018-07-28 09:05:44 -07:00
Girish Ramakrishnan
f546d53ca2 gcs: add listDir
part of #440
2018-07-28 03:51:32 -07:00
Girish Ramakrishnan
2bcc0eef96 fs: downloadDir is unused 2018-07-27 16:56:30 -07:00
Girish Ramakrishnan
a5daad2e1a rsync: encrypted download (fs backend)
Part of #440
2018-07-27 16:06:13 -07:00
Girish Ramakrishnan
b3c8767d79 rsync: encrypted upload (fs backend)
Part of #440
2018-07-27 15:34:48 -07:00
Girish Ramakrishnan
f97f528f05 backup: Implement downloadDir using listDir 2018-07-27 15:24:35 -07:00
Girish Ramakrishnan
ba8a549235 fs: open the source stream using download() 2018-07-27 15:23:48 -07:00
Girish Ramakrishnan
737541f707 storage: standardize the listDir API 2018-07-27 15:23:26 -07:00
Girish Ramakrishnan
94cb222869 filesystem: Use listDir
We can now refactor all the iterating/fs write logic into backups.js
(required for restoring encrypted backups)
2018-07-27 14:09:52 -07:00
Girish Ramakrishnan
df98847535 Remove backupDone from storage interface
This is only used by caas
2018-07-27 12:08:19 -07:00
Girish Ramakrishnan
3d22458f9b Add the 3.0 UI changes 2018-07-27 00:08:08 -07:00
Girish Ramakrishnan
d76381fa26 More 3.0 changes 2018-07-27 00:04:31 -07:00
Girish Ramakrishnan
606cd4da36 Allow - in mailbox names (for no-reply) 2018-07-26 23:48:21 -07:00
Girish Ramakrishnan
554006683e Only unset of admin flag is disallowed 2018-07-26 23:43:44 -07:00
Girish Ramakrishnan
0966edd8fe Fix missing require 2018-07-26 22:36:20 -07:00
Girish Ramakrishnan
78a2176d1d Make admin simply a boolean instead of group
This simplifies a lot of logic. Keeping an admin group has no benefit
2018-07-26 22:29:57 -07:00
Girish Ramakrishnan
39848a25a8 Refactor a bit 2018-07-26 15:35:41 -07:00
Girish Ramakrishnan
ea946396e7 Use users.isAdmin in all places 2018-07-26 13:23:06 -07:00
Girish Ramakrishnan
b4d5def56d Revert role support 2018-07-26 13:23:06 -07:00
Johannes Zellner
477abf53f3 Add initial 3.0.0 changes 2018-07-26 21:36:43 +02:00
Girish Ramakrishnan
0cb03e3789 Add REST route for platform config
Fixes #566
2018-07-25 14:09:15 -07:00
Girish Ramakrishnan
f4d7d4e7f2 Set the domain field 2018-07-25 11:41:42 -07:00
Girish Ramakrishnan
c09ae963e9 merge set/addDnsRecords
This also makes the update mail domain route redundant
2018-07-25 10:51:21 -07:00
Girish Ramakrishnan
fa30312cea lint 2018-07-25 10:34:57 -07:00
Girish Ramakrishnan
c063267c72 Split setting of dns records from mail config route
This allows us to enable email server but not setup the dns records
yet. Useful for importing existing mailboxes from another server
without adjusting the DNS.
2018-07-25 10:29:28 -07:00
Girish Ramakrishnan
589602cdb0 Add note 2018-07-25 08:29:39 -07:00
Girish Ramakrishnan
6be062f8fd Return empty object for angular 2018-07-24 22:19:34 -07:00
Girish Ramakrishnan
837ec4eb12 Send subdomain field in mail status 2018-07-24 14:25:21 -07:00
Girish Ramakrishnan
4a4166764a relay: Add a connect timeout 2018-07-23 17:05:15 -07:00
Girish Ramakrishnan
7654f36e23 Do temporary redirect instead
Permanent redirect can be cached forever in the browser which
means that changing redirect settings appear to not work.
2018-07-15 17:43:36 -07:00
Girish Ramakrishnan
6810c61e58 Add audit event for ownership transfer 2018-07-05 13:51:22 -07:00
Johannes Zellner
75f9b19db2 Ensure we uri encode the email query arguments for invite, reset and setup links 2018-07-04 11:09:29 +02:00
Johannes Zellner
17410c9432 Remove notes about updates only on paid plan for the digest 2018-07-04 10:59:17 +02:00
Johannes Zellner
8a1de81284 Cleanup sysadmin backup trigger test to only test for backup start event 2018-06-30 14:33:51 +02:00
Johannes Zellner
7b540a1d2d Fixup database tests 2018-06-30 14:12:35 +02:00
Johannes Zellner
8e8488a8e6 Lets be explicit about the error 2018-06-30 14:02:40 +02:00
Johannes Zellner
b1b843fdd8 Fix dns tests 2018-06-30 13:59:23 +02:00
Johannes Zellner
c13c4d0b28 Ensure we purge all nginx configs of an app 2018-06-29 23:14:06 +02:00
Johannes Zellner
2371c8053f We have added a query for removing subdomains in the transaction 2018-06-29 23:14:06 +02:00
Johannes Zellner
7dc2f3cb5b Also wait for alternateDomains to be in sync 2018-06-29 23:14:06 +02:00
Johannes Zellner
163563f400 Remove now unused dnsRecordId 2018-06-29 23:14:06 +02:00
Johannes Zellner
868ed977b3 Cleanup alternateDomain dns records and nginx config 2018-06-29 23:14:06 +02:00
Johannes Zellner
262fe18fb2 Set dns record id for alternateDomains 2018-06-29 23:14:06 +02:00
Johannes Zellner
1eba79660e Move dnsRecordId to subdomains table 2018-06-29 23:14:06 +02:00
Johannes Zellner
3088ac098f Put redirect label into alternateDomain nginx configs 2018-06-29 23:14:06 +02:00
Johannes Zellner
45a41ea161 Fix typo 2018-06-29 23:14:06 +02:00
Johannes Zellner
6c17709d2a Fix fqdn building for alternateDomains 2018-06-29 23:14:06 +02:00
Johannes Zellner
2a52543087 The property is called subdomain not location 2018-06-29 23:14:06 +02:00
Johannes Zellner
f4f6f4e7e0 Use business logic for getting all apps in taskmanager 2018-06-29 23:14:06 +02:00
Johannes Zellner
f53c526677 Remove superflous . for user cert key file location 2018-06-29 23:14:06 +02:00
Johannes Zellner
1aa58a3905 ignore alternateDomains field for appdb updates 2018-06-29 23:14:06 +02:00
Johannes Zellner
2d58a6bdff Fix typo 2018-06-29 23:14:06 +02:00
Johannes Zellner
40c22a1ad7 send alternateDomains over the wire 2018-06-29 23:14:06 +02:00
Johannes Zellner
3d0da34960 Create nginx configs for app redirects 2018-06-29 23:14:06 +02:00
Johannes Zellner
a6e53e3617 Ensure certificates for alternateDomains 2018-06-29 23:14:06 +02:00
Johannes Zellner
8efab41d37 Amend the alternateDomains property to app objects 2018-06-29 23:14:06 +02:00
Johannes Zellner
9af456cc7d Fix appdb.add as location and domain columns are gone 2018-06-29 23:14:06 +02:00
Johannes Zellner
9ba78b5b87 Setup alternate domains in apptask configure 2018-06-29 23:14:06 +02:00
Johannes Zellner
b1b848de21 Support configuring alternateDomains for apps 2018-06-29 23:14:06 +02:00
Johannes Zellner
5497a7d4d8 Do not handle location and domain field for apps table updates 2018-06-29 23:14:06 +02:00
Johannes Zellner
18887b27e6 Fix migration script typo 2018-06-29 23:14:06 +02:00
Johannes Zellner
fb42b54210 Remove apps.location and apps.domain
This is now managed in the subdomains table
2018-06-29 23:14:06 +02:00
Johannes Zellner
4d2ba2adaa Use subdomains table in appdb 2018-06-29 23:14:06 +02:00
Johannes Zellner
c97e8d6bd4 add subdomains table with migration scripts 2018-06-29 23:14:06 +02:00
Girish Ramakrishnan
b15029de11 Send tokenScopes as an array 2018-06-29 09:53:12 -07:00
Girish Ramakrishnan
9aa74c99fc Make setup route return tokenScopes
This is used by the dashboard logic during initial activation
2018-06-29 08:27:34 -07:00
Girish Ramakrishnan
35c9e99102 Move the update info into separate route (since it is sensitive) 2018-06-28 17:50:27 -07:00
Girish Ramakrishnan
cab9bc3a61 Unify the config routes into /api/v1/config
No more separate config routes for different types of user
2018-06-28 17:40:57 -07:00
Girish Ramakrishnan
712c920b86 Move caas config to separate route 2018-06-28 17:28:46 -07:00
Girish Ramakrishnan
9978dff627 Add API to set and transfer ownership 2018-06-28 16:48:04 -07:00
Girish Ramakrishnan
ff5bd42bef remove mostly dead comment 2018-06-28 14:19:56 -07:00
Girish Ramakrishnan
dfa318e898 Add ownerId for apps
This tracks who installed the app.
2018-06-28 14:13:12 -07:00
Girish Ramakrishnan
38977858aa When issuing token intersect with the existing user roles
Also:
* Move token validation to accesscontrol.js
* Use clients.addTokenByUserId everywhere
2018-06-28 00:07:43 -07:00
Girish Ramakrishnan
6510240c0a Fix accesscontrol.intersectScopes 2018-06-27 18:08:38 -07:00
Girish Ramakrishnan
d66dc11f01 Make canonicalScopeString return sorted array 2018-06-27 14:07:25 -07:00
Girish Ramakrishnan
ce4424d115 debug out the scope 2018-06-27 13:54:10 -07:00
Girish Ramakrishnan
a958c01974 digest: drop the Cloudron prefix in the subject 2018-06-27 11:00:41 -07:00
Girish Ramakrishnan
877f181f8d Put ts in app listing as well 2018-06-26 19:58:21 -07:00
Girish Ramakrishnan
02c0137dc1 Add a timestamp column to apps table
this field can be used in UI to see if more detailed app information
has to be fetched (since it calls the list apps REST API periodically)
2018-06-26 18:16:39 -07:00
Girish Ramakrishnan
d0b34cc43e Fix schema 2018-06-26 18:05:34 -07:00
Girish Ramakrishnan
93a2cab355 Ignore internal mailbox conflict errors 2018-06-26 17:44:14 -07:00
Girish Ramakrishnan
6907475f7a Add app management scope
This splits the apps API into those who have just 'read' access
and those who have 'manage' access.
2018-06-26 08:56:30 -07:00
Girish Ramakrishnan
9bf93b026b rename to removeInternalFields 2018-06-25 16:40:16 -07:00
Girish Ramakrishnan
f932f8b3d3 Add user management scope
This splits the user and groups API into those who have just 'read' access
and those who have 'manage' access.
2018-06-25 16:10:00 -07:00
Girish Ramakrishnan
7ab5d5e50d Add domain management scope
This splits the domains API into those who have just 'read' access
(i.e without configuration details) and those who have 'manage' access.
2018-06-25 15:12:22 -07:00
Johannes Zellner
5028230354 Update cloudron-syslog
Fixes #564
2018-06-25 19:35:13 +02:00
Girish Ramakrishnan
80e9214f5b Reduce password length for sendmail/recvmail
Fixes #565
2018-06-22 16:37:34 -07:00
Girish Ramakrishnan
5ca64dd642 Normalize host path to prevent access to arbitrary paths 2018-06-22 08:29:08 -07:00
Girish Ramakrishnan
24d9d3063b Allow specifying bindMounts array to localstorage addon 2018-06-21 22:04:06 -07:00
Girish Ramakrishnan
74b1df17c0 Fix groups test and route to make name optional 2018-06-20 09:31:50 -07:00
Girish Ramakrishnan
7880a2f9c3 API returns 403 for incorrect password 2018-06-20 09:27:24 -07:00
Girish Ramakrishnan
8a84872704 Wrong password logs out the user 2018-06-18 18:52:35 -07:00
Girish Ramakrishnan
5d13cc363f Allow group name to be changed 2018-06-18 18:30:40 -07:00
Girish Ramakrishnan
987a42b448 Fix syntax 2018-06-18 17:58:35 -07:00
Girish Ramakrishnan
3601e4f8a6 if -> while 2018-06-18 17:39:15 -07:00
Girish Ramakrishnan
60ed290179 validate role names against existing roles 2018-06-18 17:32:07 -07:00
Girish Ramakrishnan
ff73bc121f Make tokenScope plural 2018-06-18 15:10:02 -07:00
Girish Ramakrishnan
6cd0601629 Map group roles to scopes 2018-06-18 14:52:39 -07:00
Girish Ramakrishnan
b5c8e7a52a Rename to getGroups 2018-06-18 14:10:29 -07:00
Girish Ramakrishnan
7f3114e67d Rename to get/setMembership (to indicate IDs and not group objects 2018-06-18 13:57:17 -07:00
Girish Ramakrishnan
1dbcf2a46a Rename to groups.update 2018-06-18 13:41:27 -07:00
Girish Ramakrishnan
898cbd01b3 tokens table always has canonical scope 2018-06-17 23:11:36 -07:00
Girish Ramakrishnan
b6b7d08af3 Rename to accesscontrol.canonicalScopeString 2018-06-17 22:43:42 -07:00
Girish Ramakrishnan
6a2dacb08a Make intersectScopes take an array 2018-06-17 22:39:33 -07:00
Girish Ramakrishnan
1015b0ad9c validateScope -> validateScopeString 2018-06-17 22:29:17 -07:00
Girish Ramakrishnan
106e17f7ff caas: verify dns config
this is so that it fails if someone gives invalid token via API call
2018-06-17 22:22:05 -07:00
Girish Ramakrishnan
6ca28d9a58 validate dns config parameters 2018-06-17 22:21:51 -07:00
Girish Ramakrishnan
ad6bc191f9 Make hasScopes take an array 2018-06-17 21:06:17 -07:00
Girish Ramakrishnan
682f7a710c Add an appstore scope for subscription settings 2018-06-17 18:09:13 -07:00
Girish Ramakrishnan
f24a099e79 Remove user.admin property
The UI will now base itself entirely off the scopes of the token
2018-06-17 16:49:56 -07:00
Girish Ramakrishnan
156ffb40c9 Remove scope from users.get 2018-06-17 16:07:20 -07:00
Girish Ramakrishnan
db8b6838bb Move skip password verification logic to accesscontrol.js 2018-06-17 15:20:27 -07:00
Girish Ramakrishnan
c3631350cf We can skip user.scope here since we will intersect at access time anyway 2018-06-17 15:11:10 -07:00
Girish Ramakrishnan
669a1498aa Do not dump token in logs 2018-06-17 15:01:42 -07:00
Girish Ramakrishnan
12e55d1fab Use _.flatten instead 2018-06-16 13:03:52 -07:00
Girish Ramakrishnan
ca9cd2cf0f Add groups.getRoles 2018-06-16 00:29:56 -07:00
Girish Ramakrishnan
e8d9597345 Fix various error codes
401 - bad password/wrong password
403 - authenticated but not authorized
409 - conflict
2018-06-15 23:15:30 -07:00
Girish Ramakrishnan
24b0a96f07 Move passport logic to routes 2018-06-15 17:32:40 -07:00
Girish Ramakrishnan
858ffcec72 Add note 2018-06-15 17:04:18 -07:00
Girish Ramakrishnan
05a8911cca condense the comments 2018-06-15 16:56:35 -07:00
Girish Ramakrishnan
89b41b11a4 Remove bogus accesscontrol logic 2018-06-15 16:26:14 -07:00
Girish Ramakrishnan
491d1c1273 getByResetToken already has the user object 2018-06-15 16:22:28 -07:00
Girish Ramakrishnan
0a0884bf93 lint 2018-06-15 16:10:06 -07:00
Girish Ramakrishnan
a1ac7f2ef9 Remove support for authenticating non-oauth2 clients via BasicStrategy
This is not used anywhere
2018-06-15 15:38:58 -07:00
Girish Ramakrishnan
6aef9213aa Add notes on the various strategies 2018-06-15 15:38:53 -07:00
Girish Ramakrishnan
2e92172794 Do not dump the entire token 2018-06-15 14:56:52 -07:00
Girish Ramakrishnan
c210359046 Create the backup logs dir 2018-06-15 14:56:32 -07:00
Girish Ramakrishnan
042ea081a0 Typo 2018-06-15 14:35:52 -07:00
Girish Ramakrishnan
1c32224a8a Move backup logs to make the REST API work 2018-06-15 09:47:34 -07:00
Johannes Zellner
b3fa5afe3a First show apptask logs, then app logs 2018-06-15 14:58:07 +02:00
Johannes Zellner
843fec9dcb Fix wrong hasSubscription logic for digest email 2018-06-15 13:44:33 +02:00
Johannes Zellner
35d9cc3c02 Update cloudron-syslog 2018-06-15 10:20:03 +02:00
Girish Ramakrishnan
02d5d2f808 Add API to add and update the group roles 2018-06-15 00:28:27 -07:00
Girish Ramakrishnan
a77d45f5de Add rolesJson to groups table
This will contain the roles ('role definition') of a group of
users. We will internally map these to our API scopes.
2018-06-14 22:54:52 -07:00
Girish Ramakrishnan
5e09f3dcb2 Group names can contain - and end with .app
now that we have decoupled it from mailbox names, this restriction
can be removed
2018-06-14 22:22:09 -07:00
Girish Ramakrishnan
eb566d28e7 Remove groupdb._addDefaultGroups
Putting this in db code causes issues when we merge in the
accesscontrol/roles variables (groupdb needs to source those
variables)
2018-06-14 21:56:34 -07:00
Girish Ramakrishnan
8795da5d20 Allow subscopes
We can now have scopes as apps:read, apps:write etc
2018-06-14 20:56:04 -07:00
Girish Ramakrishnan
a9ec46c97e Add test for accesscontrol.validateScope 2018-06-14 20:51:22 -07:00
Girish Ramakrishnan
dc86b0f319 validateRequestedScopes -> hasScopes 2018-06-14 20:31:48 -07:00
Girish Ramakrishnan
f7089c52ff normalizeScope -> intersectScope 2018-06-14 20:23:56 -07:00
Girish Ramakrishnan
62793ca7b3 Add accesscontrol.canonicalScope tests 2018-06-14 20:17:59 -07:00
Girish Ramakrishnan
92e6909567 Move feedback route to cloudronScope 2018-06-14 20:03:51 -07:00
Girish Ramakrishnan
55e5c319fe Fix failing log test 2018-06-14 13:43:44 -07:00
Johannes Zellner
1f8451fedb Do not print tail file headers in the logs 2018-06-14 12:53:49 +02:00
Johannes Zellner
cdc78936b5 Ignore faulty empty log lines 2018-06-14 12:53:19 +02:00
Girish Ramakrishnan
eaf0b4e56e mail api: handle not found errors 2018-06-13 07:51:22 -07:00
Girish Ramakrishnan
7339c37b98 Fix invite link in userAdded notification 2018-06-12 20:08:59 -07:00
Girish Ramakrishnan
3176938ea0 Add 2.4.1 changes 2018-06-12 19:25:24 -07:00
Girish Ramakrishnan
c3c77c5a97 Fix wording 2018-06-12 18:18:41 -07:00
Girish Ramakrishnan
32e6b9024c Add email query param to reset code path
This reduces any attack surface
2018-06-12 17:56:41 -07:00
Girish Ramakrishnan
5a6ea33694 Display apptask logs 2018-06-12 14:55:58 -07:00
Girish Ramakrishnan
60bff95d9f Add journalctl fallback for box logs 2018-06-12 14:39:33 -07:00
Girish Ramakrishnan
0cc2838b8b lint 2018-06-12 13:49:52 -07:00
Girish Ramakrishnan
0fc4f4bbff Explicitly pass port and logdir 2018-06-11 22:53:12 -07:00
Girish Ramakrishnan
0b82146b3e Install cloudron-syslog service file from box repo 2018-06-11 22:42:49 -07:00
Girish Ramakrishnan
4369b3046e Make options non-optional 2018-06-11 15:14:59 -07:00
Girish Ramakrishnan
ac75b60f47 Fix password validation text in setup and reset forms 2018-06-11 14:01:40 -07:00
Girish Ramakrishnan
d752ef5fad Move password generation logic to model code 2018-06-11 13:06:08 -07:00
Girish Ramakrishnan
c099d5d3fa Make password strength be 8 chars
Fixes #434
2018-06-11 12:55:24 -07:00
Girish Ramakrishnan
6534297a5d Remove hat module
It's not been updated for 6 years!
2018-06-11 12:38:29 -07:00
Girish Ramakrishnan
2aa6350c94 Change the function names
We had these because user and mailbox code used to be mixed
2018-06-11 11:43:41 -07:00
Girish Ramakrishnan
8b4a399b8f More changes 2018-06-11 11:43:41 -07:00
Johannes Zellner
177243b7f2 Support new platform/addon log style 2018-06-11 20:09:45 +02:00
Girish Ramakrishnan
c2ca827458 Add 2.4.0 changes 2018-06-11 10:13:48 -07:00
Girish Ramakrishnan
90d7dc893c Fix test 2018-06-11 10:01:54 -07:00
Girish Ramakrishnan
eeaaa95ca3 Put email on free plan 2018-06-09 18:26:00 -07:00
Girish Ramakrishnan
04be582573 make the mailbox name follow the apps new location, if the user did not set it explicitly 2018-06-09 11:05:54 -07:00
Girish Ramakrishnan
0953787559 Fix docker exec terminal resize issue
Fixes #549
2018-06-08 11:44:24 -07:00
Girish Ramakrishnan
3bd8a58ea5 Update docker to 18.03.1 2018-06-08 09:13:46 -07:00
Girish Ramakrishnan
275181824f Not sure why package lock keeps changing 2018-06-07 18:45:30 -07:00
Girish Ramakrishnan
f814ffb14f Update node version 2018-06-07 18:43:52 -07:00
Girish Ramakrishnan
95ae948fce more package lock changes 2018-06-07 18:42:47 -07:00
Girish Ramakrishnan
9debf1f6c6 Update some packages 2018-06-07 18:36:36 -07:00
Girish Ramakrishnan
0e583b5afe Update node to 8.11.2 2018-06-07 17:06:47 -07:00
Girish Ramakrishnan
fa47031a63 cloudron-activate: Set externalDisk to true 2018-06-07 11:38:07 -07:00
Girish Ramakrishnan
7fd1bb8597 backup: Add externalDisk option to fs backend
This merely confirms from the user understands that backups have to
stored on an external disk.
2018-06-07 11:14:13 -07:00
Johannes Zellner
8c5b550caa Explicitly use cloudron-syslog 1.0.0 instead of moving master 2018-06-07 16:38:44 +02:00
Johannes Zellner
3d57c32853 Explicitly send empty object for successful post to avoid angular warnings 2018-06-07 16:10:47 +02:00
Johannes Zellner
898d928dd6 logrotate files under platformdata must be owned by root 2018-06-06 18:45:54 +02:00
Johannes Zellner
c578a048dd Ensure app logrotate file is owned by root 2018-06-06 18:39:52 +02:00
Johannes Zellner
2a475c1199 Add logrotate for app and addon logs 2018-06-06 17:36:48 +02:00
Johannes Zellner
57e195883c Use plain syslog tags to be compatible with the format 2018-06-06 14:09:50 +02:00
Johannes Zellner
f2178d9b81 Setup addons to log to cloudron-syslog 2018-06-06 14:09:50 +02:00
Johannes Zellner
df1ac43f40 Use subshells correctly 2018-06-06 14:09:50 +02:00
Johannes Zellner
39059c627b Add --unsafe-perm for cloudron-syslog installation 2018-06-06 14:09:50 +02:00
Johannes Zellner
d942c77ceb Bump infra version to reconfigure the container 2018-06-06 14:09:50 +02:00
Johannes Zellner
c39240c518 Install cloudron-syslog 2018-06-06 14:09:50 +02:00
Johannes Zellner
fd0e2782d8 Deliver the correct utc timestamp instead of the ISO string 2018-06-06 14:09:50 +02:00
Johannes Zellner
36aaa0406e Fix comment about firewall rule setup 2018-06-06 14:09:50 +02:00
Johannes Zellner
17ecb366af Bring back json log format for now 2018-06-06 14:09:50 +02:00
Johannes Zellner
1a83281e16 use port 2514 for syslog 2018-06-06 14:09:50 +02:00
Johannes Zellner
ec41e0eef5 Use tail instead of journalctl to deliver logs 2018-06-06 14:09:50 +02:00
Johannes Zellner
d4097ed4e0 Move logs into platformdata/logs 2018-06-06 14:09:50 +02:00
Johannes Zellner
8fa99fae1a Put all apptask logs of an app in the same log file 2018-06-06 14:09:50 +02:00
Johannes Zellner
e9400e5dce support test usecase to not put logs in /var/log 2018-06-06 14:09:50 +02:00
Johannes Zellner
372a17dc37 Cleanup logs on app uninstall 2018-06-06 14:09:50 +02:00
Johannes Zellner
5ca60b2d3c Since we use log files now, lets keep the apptask timestamp for debug() 2018-06-06 14:09:50 +02:00
Johannes Zellner
1dc649b7a2 Put apptask logs alongside the app logs 2018-06-06 14:09:50 +02:00
Johannes Zellner
74437db740 Use syslog logging backend for apps and addons 2018-06-06 14:09:50 +02:00
Girish Ramakrishnan
70128458b2 Fix crash when renewAll is called when cloudron is not setup yet 2018-06-05 21:27:32 -07:00
Girish Ramakrishnan
900225957e typo: code should return SetupError 2018-06-05 21:19:47 -07:00
Girish Ramakrishnan
fd8f5e3c71 Return error for trailing dot instead 2018-06-05 21:09:07 -07:00
Girish Ramakrishnan
7382ea2b04 Handle my subdomain already existing 2018-06-05 20:53:28 -07:00
Girish Ramakrishnan
09163b8a2b strip any trailing dot in the domain and zoneName 2018-06-05 20:33:14 -07:00
Girish Ramakrishnan
953398c427 lint 2018-06-05 20:02:47 -07:00
Girish Ramakrishnan
9f7406c235 cloudron-activate: Add option to setup backup dir 2018-06-05 19:40:46 -07:00
Girish Ramakrishnan
2e427aa60e Add 2.3.2 changes 2018-06-05 09:51:56 -07:00
Girish Ramakrishnan
ab80cc9ea1 Add username to the TOTP secret name
This works around issue in FreeOTP app which crashed when
the same name is used.

https://github.com/freeotp/freeotp-ios/issues/69
https://github.com/freeotp/freeotp-android/issues/69
2018-06-04 16:08:03 -07:00
Girish Ramakrishnan
321f11c644 mysql: _ prefix is hardcoded in mysql addon already
Fixes #560
2018-06-04 12:31:40 -07:00
Girish Ramakrishnan
47f85434db cloudron-activate: always login since activate return token and not accessToken 2018-06-01 00:12:19 -07:00
Girish Ramakrishnan
7717c7b1cd Add cloudron-activate script to automate activation from VM image 2018-05-31 23:46:44 -07:00
Johannes Zellner
7618aa786c Handle AppstoreError properly when no appstore account was set 2018-05-30 20:33:58 +02:00
Girish Ramakrishnan
f752cb368c Remove spamcannibal
Fixes #559
2018-05-30 11:07:17 -07:00
Girish Ramakrishnan
ca500e2165 mailer: do not send notifications to fallback email 2018-05-30 09:26:59 -07:00
Johannes Zellner
371f81b980 Add test for mail enabling without a subscription 2018-05-30 00:02:18 +02:00
Johannes Zellner
c68cca9a54 Fixup mail test, which requires a subscription 2018-05-29 23:59:53 +02:00
Johannes Zellner
9194be06c3 Fix app purchase test 2018-05-29 23:24:08 +02:00
Johannes Zellner
9eb58cdfe5 Check for plan when enabling email 2018-05-29 13:31:43 +02:00
Johannes Zellner
99be89012d No need to check for active subscription state, as the appstore already does this 2018-05-29 13:31:43 +02:00
Johannes Zellner
541fabcb2e Add convenience function to determine if subscription is 'free' or not 2018-05-29 13:31:43 +02:00
Johannes Zellner
915e04eb08 We do not have an 'undecided' plan state anymore 2018-05-29 13:31:43 +02:00
Girish Ramakrishnan
48896d4e50 more changes 2018-05-28 10:06:46 -07:00
Johannes Zellner
29682c0944 Only allow max of 2 apps on the free plan 2018-05-26 18:53:20 +02:00
Girish Ramakrishnan
346b1cb91c more changes 2018-05-26 08:11:19 -07:00
Girish Ramakrishnan
e552821c01 Add 2.3.1 changes 2018-05-25 11:44:04 -07:00
Girish Ramakrishnan
bac3ba101e Add mailboxName to app configure route
Fixes #558
2018-05-24 16:26:34 -07:00
Girish Ramakrishnan
87c46fe3ea apps: return mailbox name as part of app
part of cloudron/box#558
2018-05-24 15:50:46 -07:00
Girish Ramakrishnan
f9763b1ad3 namecom: MX record not set properly 2018-05-24 09:41:52 -07:00
Girish Ramakrishnan
f1e6116b83 Fix copyright years 2018-05-23 20:02:33 -07:00
Girish Ramakrishnan
273948c3c7 Fix tests 2018-05-22 13:22:48 -07:00
Girish Ramakrishnan
9c073e7bee Preserve addons credentials when restoring 2018-05-22 13:07:58 -07:00
Girish Ramakrishnan
8b3edf6efc Bump mail container for managesieve fix 2018-05-18 18:26:19 -07:00
Girish Ramakrishnan
07e649a2d3 Add more changes 2018-05-17 20:17:24 -07:00
Girish Ramakrishnan
8c63b6716d Trigger a re-configure 2018-05-17 20:16:51 -07:00
Girish Ramakrishnan
6fd314fe82 Do not change password on app update
Fixes #554
2018-05-17 19:48:57 -07:00
Girish Ramakrishnan
0c7eaf09a9 bump container versions 2018-05-17 10:00:00 -07:00
Girish Ramakrishnan
d0988e2d61 Generate password for mongodb on platform side
Part of #554
2018-05-17 10:00:00 -07:00
Girish Ramakrishnan
4bedbd7167 Generate password for postgresql on platform side
Part of #554
2018-05-17 10:00:00 -07:00
Girish Ramakrishnan
7ca7901a73 Generate password for mysql on platform side
Part of #554
2018-05-17 09:59:57 -07:00
Girish Ramakrishnan
d28dfdbd03 Add 2.3.0 changes 2018-05-17 09:24:47 -07:00
Girish Ramakrishnan
c85ca3c6e2 account setup simply redirects to main page now 2018-05-17 09:17:08 -07:00
Girish Ramakrishnan
da934d26af call callback 2018-05-17 09:16:32 -07:00
Girish Ramakrishnan
f7cc49c5f4 move platform config to db
this way it can be tied up to some REST API later

part of #555
2018-05-16 17:34:56 -07:00
Girish Ramakrishnan
27e263e7fb lint 2018-05-16 14:08:54 -07:00
Girish Ramakrishnan
052050f48b Add a way to persist addon memory configuration
Fixes #555
2018-05-16 14:00:55 -07:00
Girish Ramakrishnan
81e29c7c2b Make the INFRA_VERSION_FILE more readable 2018-05-16 09:54:42 -07:00
Girish Ramakrishnan
c3fbead658 Allow zoneName to be changed in domain update route 2018-05-15 15:39:30 -07:00
Girish Ramakrishnan
36f5b6d678 manual dns: handle ENOTFOUND
Fixes #548
2018-05-15 15:39:18 -07:00
Girish Ramakrishnan
a45b1449de Allow ghost users to skip 2fa 2018-05-14 15:07:01 -07:00
Girish Ramakrishnan
a1020ec6b8 remove /user from profile route 2018-05-13 21:53:06 -07:00
Johannes Zellner
d384284ec8 Add name.com DNS provider in the CHANGES file 2018-05-11 10:03:58 +02:00
Girish Ramakrishnan
bd29447a7f gcdns: Fix typo 2018-05-10 10:05:42 -07:00
Johannes Zellner
aa5952fe0b Wait longer for dns in apptask
name.com often takes longer to sync all nameservers, which means we
timeout too early for them
2018-05-10 15:37:47 +02:00
Johannes Zellner
39dc5da05a We have to return a value on dns record upserting 2018-05-09 18:58:09 +02:00
Johannes Zellner
d0e07d995a Add name.com dns tests 2018-05-09 18:13:21 +02:00
Johannes Zellner
94408c1c3d Add name.com DNS provider 2018-05-09 18:13:14 +02:00
Girish Ramakrishnan
66f032a7ee route53: use credentials instead of dnsConfig 2018-05-07 23:41:03 -07:00
Girish Ramakrishnan
4356df3676 bump timeout 2018-05-07 16:28:11 -07:00
Girish Ramakrishnan
1e730d2fc0 route53: more test fixing 2018-05-07 16:20:03 -07:00
Girish Ramakrishnan
e8875ccd2e godaddy: add tests 2018-05-07 16:09:00 -07:00
Girish Ramakrishnan
2b3656404b route53: fix tests 2018-05-07 15:53:08 -07:00
Girish Ramakrishnan
60b5e6f711 gandi: add tests 2018-05-07 15:51:51 -07:00
Girish Ramakrishnan
b9166b382d route53: set listHostedZonesByName for new/updated domains 2018-05-07 13:42:10 -07:00
Girish Ramakrishnan
d0c427b0df Add more 2.2 changes 2018-05-07 11:46:27 -07:00
Girish Ramakrishnan
da5d0c61b4 godaddy: workaround issue where there is no del record API 2018-05-07 11:41:37 -07:00
Girish Ramakrishnan
1f75c2cc48 route53: add backward compat for pre-2.2 IAM perms
backward compat for 2.2, where we only required access to "listHostedZones"
2018-05-07 11:24:34 -07:00
Girish Ramakrishnan
d0197aab15 Revert "No need to iterate over the hosted zones anymore"
This reverts commit e4a70b95f5.

We will add backward compat route for pre-2.2 cloudrons
2018-05-07 11:23:28 -07:00
Johannes Zellner
e4a70b95f5 No need to iterate over the hosted zones anymore 2018-05-07 16:35:32 +02:00
Johannes Zellner
f4d3d79922 Query only requested Route53 zone
Fixes #550
2018-05-07 16:30:42 +02:00
Girish Ramakrishnan
e3827ee25f Add more 2.2 changes 2018-05-06 23:52:02 -07:00
Girish Ramakrishnan
9981ff2495 Add GoDaddy Domain API 2018-05-06 23:07:52 -07:00
Girish Ramakrishnan
722b14b13d Add note on MX records 2018-05-06 22:14:39 -07:00
Girish Ramakrishnan
eb2fb6491c gandi: more fixes 2018-05-06 21:16:47 -07:00
Girish Ramakrishnan
a53afbce91 Add Gandi LiveDNS backend 2018-05-06 19:48:51 -07:00
Girish Ramakrishnan
31af6c64d0 Expire existing webadmin token so that the UI gets a new token 2018-05-06 13:08:22 -07:00
Girish Ramakrishnan
e8efc5a1b2 Fix test 2018-05-06 12:58:39 -07:00
Girish Ramakrishnan
0c07c6e4d0 Allow "-" in usernames
now that username and mailboxes are totally separate, we can allow '-'.
'+' is still reserved because LDAP it.

Fixes #509
2018-05-05 09:56:21 -07:00
Girish Ramakrishnan
da5fd71aaa Bump mail container for CRAM-MD5 login fix 2018-05-04 21:57:26 -07:00
Girish Ramakrishnan
d57d590363 2.2.0 changes 2018-05-04 10:30:24 -07:00
Johannes Zellner
d6e49415d4 Only list user mailboxes in ldap search 2018-05-04 17:02:04 +02:00
Johannes Zellner
cb73eb61d4 Allow binds against mailboxes 2018-05-04 17:02:04 +02:00
Johannes Zellner
4ce3a262a3 Allow search for mailboxes over ldap for a specific domain 2018-05-04 17:02:04 +02:00
Girish Ramakrishnan
d18d1a977a Add duplicate profile route for compat with old apps using oauth addon 2018-05-03 09:29:46 -07:00
Girish Ramakrishnan
616e38189c Revert "x"
This reverts commit 182ea3dac3.
2018-05-03 09:29:23 -07:00
Johannes Zellner
726cafcee4 Rollback appdb record on clone and install if appstore purchase fails 2018-05-03 13:20:34 +02:00
Girish Ramakrishnan
e5c43e9acd Remove debug 2018-05-02 12:41:22 -07:00
Girish Ramakrishnan
f09e8664d1 Return canonical scope in REST responses
The '*' scope is purely an implementation detail. It cannot
be requested as such.
2018-05-02 12:36:41 -07:00
Girish Ramakrishnan
182ea3dac3 x 2018-05-01 15:17:48 -07:00
Girish Ramakrishnan
97acd40829 remove obsolete roleSdk from the database
the file is renamed because cloudron.io was patched by mistake and we want to run this
migration there
2018-05-01 14:53:46 -07:00
Girish Ramakrishnan
f1abb2149d gravatar url is already generated client side 2018-05-01 14:30:48 -07:00
Girish Ramakrishnan
8c4015851a merge auth.js into accesscontrol.js 2018-05-01 14:03:10 -07:00
Girish Ramakrishnan
a545bdd574 merge developer.js into clients.js 2018-05-01 14:02:59 -07:00
Girish Ramakrishnan
d1135accbd lint 2018-05-01 13:58:13 -07:00
Girish Ramakrishnan
d5b594fade return the scope as part of the user profile
send canonical scope in the profile response
2018-05-01 13:25:47 -07:00
Girish Ramakrishnan
c5ffb65563 Fix usage of normalizeScope 2018-05-01 13:21:53 -07:00
Girish Ramakrishnan
f76a5a7ba7 Move the clients API out of oauth prefix 2018-05-01 11:30:51 -07:00
Girish Ramakrishnan
17bcd95961 typo: return the scope as the scope 2018-05-01 10:59:46 -07:00
Girish Ramakrishnan
23bc0e8db7 Remove SDK Role
Just compare with the token's clientId instead
2018-04-30 23:03:30 -07:00
Girish Ramakrishnan
240ee5f563 Ensure we hand out max user.scope
The token.scope was valid at token creation time. The user's scope
could since have changed (maybe we got kicked out of a group).
2018-04-30 22:51:57 -07:00
Girish Ramakrishnan
200f43a58e lint 2018-04-30 22:41:23 -07:00
Girish Ramakrishnan
61d803f528 Use SCOPE_ANY everywhere 2018-04-30 21:44:24 -07:00
Girish Ramakrishnan
e7c8791356 lint 2018-04-30 21:41:09 -07:00
Girish Ramakrishnan
bc4f9cf596 Remove redundant requireAdmin
We already hand out scopes based on the user's access control
2018-04-30 21:38:48 -07:00
Girish Ramakrishnan
9789966017 Set the scope for a token basedon what the user has access to 2018-04-30 21:21:18 -07:00
Girish Ramakrishnan
1432d90f37 lint 2018-04-30 21:13:23 -07:00
Girish Ramakrishnan
68317a89cb remove the analytics hooks 2018-04-30 15:33:25 -07:00
Girish Ramakrishnan
c84f984205 No need to create a token on password reset 2018-04-30 15:15:05 -07:00
Johannes Zellner
6e19153350 Remove now unused result argument 2018-04-30 20:37:12 +02:00
Johannes Zellner
4dc778f7c2 Change reset password button text 2018-04-30 20:17:56 +02:00
Johannes Zellner
c5c3748aa9 Do not auto login on password reset 2018-04-30 19:55:59 +02:00
Girish Ramakrishnan
f809e359c9 refactor the global variables as functions 2018-04-29 20:17:45 -07:00
Girish Ramakrishnan
91e846d976 Add SCOPE_DOMAINS 2018-04-29 18:11:33 -07:00
Girish Ramakrishnan
b5f8ca6c16 Fix nasssty typo 2018-04-29 17:50:12 -07:00
Girish Ramakrishnan
922ab3bde1 lint 2018-04-29 17:50:12 -07:00
Girish Ramakrishnan
3b7bcc1f61 refactor scopes into accesscontrol.js
this will be our authorization layer for oauth and non-oauth tokens.
2018-04-29 17:50:07 -07:00
Girish Ramakrishnan
6e3b060615 Use SCOPE_PROFILE constant 2018-04-29 17:12:30 -07:00
Girish Ramakrishnan
cc113d0bb5 Add SCOPE_CLIENTS for oauth clients API 2018-04-29 17:03:10 -07:00
Girish Ramakrishnan
3e22d513eb Add SCOPE_MAIL for mail APIs 2018-04-29 17:01:12 -07:00
Girish Ramakrishnan
9cf51ef680 Update cid-webadmin to have all the scopes possible 2018-04-29 16:57:49 -07:00
Girish Ramakrishnan
1c55a3e310 typo 2018-04-29 11:29:21 -07:00
Girish Ramakrishnan
d8acf92929 UserError -> UsersError 2018-04-29 11:22:15 -07:00
Girish Ramakrishnan
7bb8d059b5 GroupError -> GroupsError 2018-04-29 11:21:01 -07:00
Girish Ramakrishnan
863afc68cb DomainError -> DomainsError 2018-04-29 11:20:12 -07:00
Girish Ramakrishnan
4fd58fb46b Rename user.js to users.js 2018-04-29 11:19:04 -07:00
Girish Ramakrishnan
b1b664ceca Move removeInternalAppFields to model code 2018-04-29 10:47:34 -07:00
Girish Ramakrishnan
1a27009fb5 Make expiresAt a body parameter 2018-04-28 22:02:07 -07:00
Girish Ramakrishnan
6c8c206e89 Move input validation logic to routes 2018-04-28 21:58:56 -07:00
Girish Ramakrishnan
82207c3ccd Keep naming consistent with delToken 2018-04-28 21:55:57 -07:00
Girish Ramakrishnan
6768994bbe Capitalize the 2fa text 2018-04-28 10:20:33 -07:00
Girish Ramakrishnan
b72efb1018 Remove private fields when listing domains
Currently, domains list route does not return the fallback cert.
make it future proof, just in case.
2018-04-27 11:41:30 -07:00
Johannes Zellner
7a8c525beb Add 2fa Oauth route tests 2018-04-27 14:08:22 +02:00
Johannes Zellner
9372d8797a Add 2fa tests for developer login api 2018-04-27 12:29:11 +02:00
Johannes Zellner
faeb89b258 Add 2fa token login to oauth login form 2018-04-27 11:46:41 +02:00
Johannes Zellner
50d7ade0d9 Remove unused property on set 2fa secret 2018-04-27 08:20:12 +02:00
Johannes Zellner
497c76a905 Add 2fa token check to developer login 2018-04-27 08:18:13 +02:00
Johannes Zellner
bbc434dc21 Attach the whole user object also for basic authed routes 2018-04-27 08:18:13 +02:00
Girish Ramakrishnan
a7bb5d6b5c add route to query apps specific to user
it's not nice to overload a route to mean different things depending
on who queries it.
2018-04-26 20:07:12 -07:00
Girish Ramakrishnan
e0da6679e9 Move user routes to /api/v1/user 2018-04-26 19:57:44 -07:00
Girish Ramakrishnan
561d2d9f8b admin column is no more in users table 2018-04-26 19:55:26 -07:00
Girish Ramakrishnan
7549b3e837 enhance user creation API to take a password 2018-04-26 14:13:40 -07:00
Girish Ramakrishnan
7756c07bc6 Add better text for the secret 2018-04-26 09:39:35 -07:00
Johannes Zellner
0d58a6bf33 Send 2fa auth status with profile info 2018-04-26 16:29:40 +02:00
Johannes Zellner
fbba636fb3 Handle more 2fa route errors 2018-04-26 16:14:37 +02:00
Johannes Zellner
9cd6333cf7 2fa routest work with the req.user object 2018-04-26 15:12:14 +02:00
Johannes Zellner
eb02c182e5 Avoid linter issue 2018-04-26 14:45:12 +02:00
Johannes Zellner
6574b22cf6 Add 2fa routest and business logic 2018-04-26 08:46:35 +02:00
Girish Ramakrishnan
d1ed2aa2ce remove untested route set_admin 2018-04-25 21:43:21 -07:00
Girish Ramakrishnan
c2a762cb29 Do not reserve mailbox names
Now that user management is split from mailboxes, we don't need to
reserve mailbox names anymore.
2018-04-25 21:14:33 -07:00
Girish Ramakrishnan
34d40edef4 Fix issue where docker needs more recent packages
The following packages have unmet dependencies:
 docker-ce : Depends: libseccomp2 (>= 2.3.0) but 2.2.3-3ubuntu3 is to be installed
E: Unable to correct problems, you have held broken packages.
2018-04-25 13:44:53 -07:00
Johannes Zellner
5ceb14cbca Add required 2fa node modules qrcode and speakeasy 2018-04-25 17:03:16 +02:00
Johannes Zellner
38668937ad Fixup database tests 2018-04-25 17:03:16 +02:00
Johannes Zellner
0167f83d4a Handle 2fa fields in userdb code 2018-04-25 17:03:16 +02:00
Johannes Zellner
9e66adb6d0 Add 2fa db record fields to users table 2018-04-25 17:03:16 +02:00
Girish Ramakrishnan
0a537029bc add mailbox domain to the constraint 2018-04-23 10:14:16 -07:00
Girish Ramakrishnan
c0716e86a7 Remove the "or Email"
The email here can be confused with the Cloudron email which it is not.
The preferred approach is to login via username anyway.
2018-04-22 18:29:10 -07:00
Girish Ramakrishnan
50185adcf4 Add 2.1.1 changes 2018-04-18 12:49:11 -07:00
Johannes Zellner
0c728c6af5 Fix mail rest api tests 2018-04-13 12:54:40 +02:00
Johannes Zellner
34d3d79b12 Improve error message when alias name is already taken 2018-04-13 12:37:27 +02:00
Johannes Zellner
ff856a5978 Rename 'address' catchall property to 'addresses' to better indiciate this being an array 2018-04-13 12:15:15 +02:00
Johannes Zellner
c4dad2f55f Fix address property error response in catchall 2018-04-13 12:15:15 +02:00
Girish Ramakrishnan
734286ba2e Add support for installing private docker images 2018-04-12 11:43:57 -07:00
Girish Ramakrishnan
0f7f8af4b2 Use docker 18.03.0-ce
17.12.0-ce has strange issues like https://github.com/moby/moby/issues/34097
2018-04-11 18:25:19 -07:00
Johannes Zellner
60381d938e Fix search and replace mistake 2018-04-11 15:29:37 +02:00
Johannes Zellner
ddaa52163b Update ssl ciphers according to mozillas recommendation 2018-04-11 15:15:29 +02:00
Johannes Zellner
799c1ba05d Improve on the csp header restriction 2018-04-11 13:00:08 +02:00
Johannes Zellner
838838b90d nginx would drop other headers if add_header is defined in the location section 2018-04-11 12:29:57 +02:00
Girish Ramakrishnan
4554d9f2f8 Add more changes 2018-04-10 15:13:04 -07:00
Johannes Zellner
573d0e993e Add CSP header for dashboard 2018-04-10 17:59:06 +02:00
Johannes Zellner
97313fe1c8 Remove other unused assets from the release tarball 2018-04-10 14:08:13 +02:00
Johannes Zellner
944f743438 Use the node modules defined in the dashboard repo 2018-04-10 13:51:01 +02:00
Johannes Zellner
96a5b0e6ba Remove dashboard related node modules 2018-04-10 13:12:42 +02:00
Girish Ramakrishnan
95f7e50065 bump mail container 2018-04-10 00:00:27 -07:00
Girish Ramakrishnan
d6a8837716 mail: verify with the owner id 2018-04-09 13:17:07 -07:00
Johannes Zellner
cc759e3550 set the mailbox record type for apps 2018-04-09 15:39:36 +02:00
Girish Ramakrishnan
bf0dd935e5 mail: add type field 2018-04-07 21:29:44 -07:00
Girish Ramakrishnan
1d761deec0 Fix test 2018-04-07 18:39:17 -07:00
Girish Ramakrishnan
b6335a327c Rename TYPE_* to OWNER_TYPE_* 2018-04-07 18:33:30 -07:00
Johannes Zellner
55d53ef311 Do not succeed if mailbox name is already taken 2018-04-06 16:55:01 +02:00
Johannes Zellner
878940edae Fix sql syntax 2018-04-06 15:54:55 +02:00
Johannes Zellner
15648a3ab2 fix typo name -> username 2018-04-06 14:53:20 +02:00
Johannes Zellner
2fae98dd5b pass the dashboard version as a revision to the gulp file 2018-04-06 07:47:42 +02:00
Girish Ramakrishnan
9beeb33090 mail: validate list and mailbox names 2018-04-05 17:49:16 -07:00
Girish Ramakrishnan
605dc00422 mail: add members field for lists
we have to track the members of a list in the mail app separately
from groups. this is required because users can now have multiple
mailboxes. and because of that we cannot do a 1-1 mapping of group
members to mailboxes anymore. the ui is changed to select mailboxes
when creating a list.
2018-04-05 16:07:38 -07:00
Girish Ramakrishnan
2c8fa01d6d mail: split the functions to add list and mailbox 2018-04-05 15:01:28 -07:00
Girish Ramakrishnan
467bfa2859 remove mailboxdb from groups code 2018-04-04 20:08:52 -07:00
Girish Ramakrishnan
affb420181 cloudron-setup: highlight reboot in red 2018-04-04 09:55:22 -07:00
Girish Ramakrishnan
e7b26e5655 Add note on accepting self-signed cert 2018-04-04 09:54:14 -07:00
Girish Ramakrishnan
5af657ee22 rename mail crud functions 2018-04-03 15:06:14 -07:00
Girish Ramakrishnan
7fac92c519 validate user id when adding mailbox 2018-04-03 14:27:09 -07:00
Girish Ramakrishnan
f8a731f63a Add routes to change the mailbox and list owner 2018-04-03 14:12:43 -07:00
Girish Ramakrishnan
a1f4a4d614 mail: make mailbox API based on mailbox name
this decouples mail API from users
2018-04-03 13:59:03 -07:00
Girish Ramakrishnan
696e864459 mail: make list API based on list name
this decouples mail API from groups
2018-04-03 12:06:22 -07:00
Girish Ramakrishnan
678ea50f87 validateAlias -> validateName 2018-04-03 09:47:15 -07:00
Girish Ramakrishnan
69d3b3cac8 2.0.2 -> 2.1.0 2018-04-02 13:37:06 -07:00
Girish Ramakrishnan
76915b99a8 Fix linter 2018-04-02 09:46:30 -07:00
Girish Ramakrishnan
255a5a12a5 Decouple mailbox deletion from user delete 2018-04-02 09:45:46 -07:00
Johannes Zellner
602291895c Mention which alias is reserved 2018-04-02 14:59:10 +02:00
Johannes Zellner
045ea4681a Do not return an error on mailinglist listing if none exists
We usually return the empty array, to avoid the need for specific error
handling
2018-04-01 21:51:56 +02:00
Johannes Zellner
e364661813 Send correct status code if mail alias already exists 2018-04-01 19:29:47 +02:00
Johannes Zellner
df9a191434 Add rest api to list all aliases for a given domain 2018-04-01 18:23:54 +02:00
Johannes Zellner
b4aac42032 Add more changes for 2.0.2 2018-04-01 15:15:52 +02:00
Johannes Zellner
2a8be279e7 The package lock now uses sha512 for checksum 2018-04-01 13:15:05 +02:00
Johannes Zellner
4af69fb8c8 Do not show a warning like log, but just dump the tag and detail 2018-03-29 17:36:00 +02:00
Girish Ramakrishnan
cbc98a48ef Slight wording change 2018-03-28 10:17:17 -07:00
Girish Ramakrishnan
874541b988 Add issue templates 2018-03-28 10:14:35 -07:00
Girish Ramakrishnan
0aa1b758ec Update docker to 17.12.0-ce 2018-03-26 16:34:33 -07:00
Girish Ramakrishnan
2e0c632942 Do not crash if mail alias does not validate 2018-03-25 21:08:15 -07:00
Girish Ramakrishnan
82a593e82a Forward stats calls to mail container 2018-03-23 10:52:07 -07:00
Girish Ramakrishnan
e33ebe7304 Revert "mysql: increase max_allowed_packet"
This reverts commit 9123ea7016.

Not needed. This was a db corruption issue
2018-03-22 21:49:08 -07:00
Girish Ramakrishnan
d81930be72 add note on conn limit 2018-03-22 21:07:06 -07:00
Girish Ramakrishnan
aac914182f remove options from database.initialize 2018-03-22 20:34:49 -07:00
Girish Ramakrishnan
26d4a11c44 cleanup eventlog more aggressively
Those login entries are really adding up on old cloudrons
2018-03-22 20:31:32 -07:00
Girish Ramakrishnan
f498443cae remove unused exports 2018-03-22 20:29:26 -07:00
Girish Ramakrishnan
d84d761bad Remove unused export 2018-03-22 19:40:38 -07:00
Girish Ramakrishnan
07601d1292 Fix schema 2018-03-22 18:41:10 -07:00
Girish Ramakrishnan
6cbe964301 Add note 2018-03-22 17:13:32 -07:00
Girish Ramakrishnan
84dcdbba33 Re-assign 2020 to mail server 2018-03-21 23:15:30 -07:00
Girish Ramakrishnan
9123ea7016 mysql: increase max_allowed_packet
some cloudrons are reporting some errors after 2.0. maybe all those
additional joins/fields we put in is causing this
2018-03-21 17:52:22 -07:00
Girish Ramakrishnan
2a18070016 do-spaces: Force retry of 4xx error codes when copying 2018-03-21 15:41:21 -07:00
Girish Ramakrishnan
e0ece06b26 s3: improved copy logging 2018-03-21 14:22:41 -07:00
Girish Ramakrishnan
83d2eb31dd clarify debug 2018-03-21 11:39:16 -07:00
Girish Ramakrishnan
c6b8ad88dd 2.0.2 changes 2018-03-20 20:04:35 -07:00
Girish Ramakrishnan
6adf88a6e5 Make uploads work with very slow upload speeds
chunk uploads get a timeout of 2mins (derived from http.timeout).
On servers like kimsufi, uploads takes forever (100 MB/sec limit).
Currently, our upload code does not dynamically adapt itself to
changing the concurrency when network is slow.
2018-03-20 19:37:45 -07:00
Girish Ramakrishnan
7699f6721d Add hack to figure out the position in the queue
this helps us track the progress a bit in the logs
2018-03-20 19:37:35 -07:00
Girish Ramakrishnan
ce33681c37 Dump etag info 2018-03-20 18:19:14 -07:00
Girish Ramakrishnan
565eed015f Add better backup logs 2018-03-20 16:41:45 -07:00
Girish Ramakrishnan
dd296544be Remove extra prefix 2018-03-15 14:30:10 -07:00
Girish Ramakrishnan
a07c4423c4 Rename webadmin to dashboard
The box nginx config has to be re-generated but this is always
done at box restart time
2018-03-15 14:14:23 -07:00
Girish Ramakrishnan
65f07cb7c0 Add more changes 2018-03-14 09:15:58 -07:00
Girish Ramakrishnan
8d1a6cb06b Add more changes 2018-03-14 09:14:45 -07:00
Girish Ramakrishnan
873ea0fecd Restart mail server after DKIM keys are generated
Haraka won't do change notification on those
2018-03-13 09:53:41 -07:00
Girish Ramakrishnan
ace1f36f9c 2.0.1 changes 2018-03-13 00:36:58 -07:00
Girish Ramakrishnan
4cc9818139 remove error prone short-circuit update
when we do pre-releases, there really is no way for us to update
all the cloudrons. this worked when everything was managed cloudron.
2018-03-13 00:36:03 -07:00
Girish Ramakrishnan
390639bac0 Bump mail container
This fixes delivery of incoming mail from an outbound only domain
2018-03-13 00:20:48 -07:00
Girish Ramakrishnan
830c685ead recreate mail configs when mail domain is added 2018-03-12 21:14:45 -07:00
Girish Ramakrishnan
65b174f950 Domain removal can fail because of mailbox as well 2018-03-12 09:54:16 -07:00
Girish Ramakrishnan
331ed4e6b9 Pass on any appstore purchase error 2018-03-11 12:43:24 -07:00
Girish Ramakrishnan
afef548097 cloudron-setup: make sure --help runs as non-root 2018-03-09 10:37:18 -08:00
Johannes Zellner
60e924d5b8 We do require a domain entry in the mails table always 2018-03-09 14:26:33 +01:00
Johannes Zellner
c0ea91a688 We have to parse the JSON data from the raw db results 2018-03-09 10:27:13 +01:00
Girish Ramakrishnan
ecf1f9255d relay: cloudron-smtp can always be set 2018-03-08 23:23:02 -08:00
Girish Ramakrishnan
1125643a80 Add Haraka 2.8.18 to changelog 2018-03-08 20:12:34 -08:00
Girish Ramakrishnan
61243f6a09 Wait for DNS records call to finish 2018-03-08 20:08:01 -08:00
Girish Ramakrishnan
2e156aa34a simplify the configureWebadmin logic 2018-03-08 18:26:44 -08:00
Girish Ramakrishnan
440629530f remove redundant check for "test" mode 2018-03-08 18:15:09 -08:00
Girish Ramakrishnan
3922824dc6 no reason to keep retrying 2018-03-08 18:00:16 -08:00
Girish Ramakrishnan
6bc5add023 Add a way to re-sync mail DNS records
Also, make restore resync the admin domain record which gets messed
up by the dns setup
2018-03-08 17:59:53 -08:00
Girish Ramakrishnan
f284245e16 dkim keys are needed for the test 2018-03-08 16:10:33 -08:00
Girish Ramakrishnan
ac62ee5a16 better debug 2018-03-08 15:29:18 -08:00
Girish Ramakrishnan
66f251be06 dnsSetup must fail if domain already exists 2018-03-08 15:10:38 -08:00
Girish Ramakrishnan
ab932c4f5c Do not regenerate domain key if domain already exists 2018-03-08 15:01:08 -08:00
Girish Ramakrishnan
074c6fdba3 More renaming to forum 2018-03-08 10:50:18 -08:00
Girish Ramakrishnan
b36f4becbc remove bad changelog 2018-03-08 10:22:46 -08:00
Girish Ramakrishnan
ac69b96f92 clear timeout when getting mail status 2018-03-08 09:32:06 -08:00
Girish Ramakrishnan
6da7a7d2f4 clear the request timeout when adding/updating domain
DO API takes very long to respond at times :/ Currently, there is
no easy way to reset the timeout middleware timeout. We should add
this feature upstream (https://github.com/expressjs/timeout/issues/26)
2018-03-08 09:27:56 -08:00
Girish Ramakrishnan
22c54ced05 email: add MAIL_DOMAINS 2018-03-07 20:39:58 -08:00
Girish Ramakrishnan
c7b1d49de6 cloudron-setup: add some color 2018-03-07 15:51:00 -08:00
Girish Ramakrishnan
b7bf5b180c Display the format as well 2018-03-07 13:59:17 -08:00
Girish Ramakrishnan
12aba46893 use apps.getAll since app.fqdn is otherwise undefined 2018-03-07 13:39:40 -08:00
Johannes Zellner
9d4eee0dfe reword error message, all apps using a domain have to be deleted 2018-03-07 10:45:03 +01:00
Girish Ramakrishnan
d69c8f49e5 Migrate daily update pattern 2018-03-06 21:29:08 -08:00
Girish Ramakrishnan
dd5f41aee8 Fix failing test 2018-03-06 01:35:38 -08:00
Girish Ramakrishnan
0b20b265de Do not crash if domain is not found 2018-03-06 01:30:40 -08:00
Girish Ramakrishnan
ac94d0b5c7 Make apps also auto-update like before by default 2018-03-05 21:33:18 -08:00
Girish Ramakrishnan
c5a70d10d7 Add robotsTxt to appdb.add 2018-03-05 16:14:23 -08:00
Girish Ramakrishnan
b83eb993d8 Add sso and robotsTxt to app backup config.json 2018-03-05 15:03:03 -08:00
Girish Ramakrishnan
6cadaca307 clone: copy enableBackup and robotsTxt 2018-03-05 14:56:24 -08:00
Girish Ramakrishnan
36b91ae7db Add PSBL 2018-03-05 14:26:53 -08:00
Johannes Zellner
3115432309 Fix missed eventlog.getAllPaged() usage 2018-03-05 17:53:18 +01:00
Johannes Zellner
8340f77e20 Fixup the database tests 2018-03-05 17:17:01 +01:00
Johannes Zellner
75932e2805 Collect app information for feedback email 2018-03-05 17:03:54 +01:00
Johannes Zellner
ff6d468604 Support multiple actions for eventlog api 2018-03-05 11:46:06 +01:00
Girish Ramakrishnan
161b2ac6f5 clone: Fix crash where port conflict is not handled 2018-03-02 19:37:15 -08:00
Johannes Zellner
9775ab5e8e make correct use of eventlog for developer/cli login 2018-03-02 19:26:55 +01:00
Johannes Zellner
726202b040 Amend app object where applicable to login event 2018-03-02 19:21:11 +01:00
Johannes Zellner
39d6ec96b7 amend full user object to login action 2018-03-02 19:21:11 +01:00
Johannes Zellner
87fedb71b7 Use shared function to remove private user fields for api 2018-03-02 11:24:27 +01:00
Johannes Zellner
8424e687cb Amend full user object to user action eventlog entries 2018-03-02 11:24:06 +01:00
Johannes Zellner
c0d030c978 Amend full user object to user eventlog action entries 2018-03-02 11:02:32 +01:00
Johannes Zellner
53470e286f Use app model code to get all amended properties 2018-03-02 10:58:05 +01:00
Girish Ramakrishnan
e22c17eabe Fix issue where new package versions are getting skipped 2018-03-01 11:39:10 -08:00
Girish Ramakrishnan
5ac1fccb98 mail: Fix crashes when user has no username yet 2018-02-28 13:31:28 -08:00
Girish Ramakrishnan
0cc58fafd6 Do not crash if user does not have username 2018-02-28 13:18:41 -08:00
Girish Ramakrishnan
98e19e6df5 fix upload errors causing double callback 2018-02-27 19:16:03 -08:00
Girish Ramakrishnan
441e514119 scheduler: give scheduler tasks twice the memory by default 2018-02-27 15:03:09 -08:00
Girish Ramakrishnan
ff4b09a342 Use the container StartedAt instead of lastDate
CronJob.lastDate keeps resetting on every tick. Also, it doesn't
work across box code restarts.
2018-02-27 14:26:40 -08:00
Girish Ramakrishnan
f8c8133148 scheduler: better debugs 2018-02-27 13:54:38 -08:00
Girish Ramakrishnan
938a41e12c scheduler: give cron jobs a grace period of 30 mins to complete 2018-02-27 13:28:42 -08:00
Girish Ramakrishnan
5d231f4fef scheduler: do no start all cronjobs at once 2018-02-27 12:44:11 -08:00
Girish Ramakrishnan
a4e6181edf Fix tests 2018-02-27 11:59:15 -08:00
Girish Ramakrishnan
6685118b03 Use safe.JSON.parse instead
safe.require() caches the credentials which is annoying
2018-02-27 11:24:08 -08:00
Girish Ramakrishnan
4c9919a98b Drop the "your" 2018-02-27 09:22:43 -08:00
Girish Ramakrishnan
470c9971f8 mail exchange does not have trailing dot 2018-02-23 17:26:28 -08:00
Girish Ramakrishnan
b6fb49956f s3: better debug output when copying 2018-02-22 12:41:18 -08:00
Girish Ramakrishnan
0bba985ff1 storage: Add implementation note 2018-02-22 12:30:55 -08:00
Girish Ramakrishnan
3c8c15db01 s3: use a constant backoff since it takes forever to fail otherwise 2018-02-22 12:30:44 -08:00
Girish Ramakrishnan
c8a6294772 lint 2018-02-22 12:24:16 -08:00
Girish Ramakrishnan
cea83889ec s3: Fix issue where it takes forever to timeout if the backend is down 2018-02-22 12:19:23 -08:00
Girish Ramakrishnan
2ecb66afd7 s3: cleanup code 2018-02-22 12:16:01 -08:00
Girish Ramakrishnan
f5d426fd69 debug out the progress message 2018-02-22 11:11:36 -08:00
Girish Ramakrishnan
e6c07fc148 merge the done callback into the main code 2018-02-22 11:06:28 -08:00
Girish Ramakrishnan
1f30a4f3ea Make s3.deleteObjects return error 2018-02-22 11:05:29 -08:00
Girish Ramakrishnan
0bfdaeb2fb rename to chunkSize 2018-02-22 11:01:04 -08:00
Girish Ramakrishnan
e022dbf8a6 Revert "merge the done callback into the main code"
This reverts commit c39bec8cc1.

This was committed with extra stuff by mistake
2018-02-22 10:58:56 -08:00
Girish Ramakrishnan
0e7e672dd2 Update node modules 2018-02-22 10:52:42 -08:00
Girish Ramakrishnan
6075a7a890 typo 2018-02-22 10:34:48 -08:00
Girish Ramakrishnan
28b864c346 sos: Copy in 96M chunks as recommended by exoscale 2018-02-22 10:31:56 -08:00
Girish Ramakrishnan
e9437131ff mail: set domain_selector to be mail_from 2018-02-21 20:46:32 -08:00
Girish Ramakrishnan
c39bec8cc1 merge the done callback into the main code 2018-02-21 20:17:58 -08:00
Girish Ramakrishnan
727a25f491 DO Spaces: multipart copy now works 2018-02-20 14:48:03 -08:00
Johannes Zellner
26bacfcbd6 Allow partial match of eventlog actions 2018-02-20 11:20:17 -08:00
Johannes Zellner
a777e7aeb3 add full app object to app related eventlog actions 2018-02-20 10:34:09 -08:00
Johannes Zellner
676625a3f6 Add more appstore tests 2018-02-18 22:43:11 -08:00
Johannes Zellner
f41603ea94 Add appstore.sendAliveStatus() tests 2018-02-18 21:42:37 -08:00
Johannes Zellner
18ae958e87 Send all domains with provider with the alive post 2018-02-18 21:36:21 -08:00
Johannes Zellner
d68d4295de Remove unused require 2018-02-18 20:16:17 -08:00
Girish Ramakrishnan
0244529b45 Add more changelog 2018-02-18 02:45:46 -08:00
Girish Ramakrishnan
1d044a7392 Bump mail container for multi-domain support 2018-02-18 00:54:41 -08:00
Girish Ramakrishnan
06eab93f0e restart mail container when mail.ini changes 2018-02-18 00:54:11 -08:00
Girish Ramakrishnan
84b7672509 caas can be a provider 2018-02-17 10:28:03 -08:00
Girish Ramakrishnan
c9cd4ed363 Fix changelog version 2018-02-16 16:43:04 -08:00
Girish Ramakrishnan
05c98ccadb Enable auto-updates for major versions
Cloudron is always rolling releases and we never break compat
2018-02-16 16:01:10 -08:00
Johannes Zellner
cb62cdcfa1 Report dependency error for clone if backup or domain was not found 2018-02-16 10:45:06 -08:00
Girish Ramakrishnan
c0fddf5d8a Version 1.11.0 changes 2018-02-11 01:22:26 -08:00
Girish Ramakrishnan
bcf3e71979 Add API to remove mailboxes by domain 2018-02-11 01:18:29 -08:00
Girish Ramakrishnan
baf5cae58a Fix tests 2018-02-11 00:04:41 -08:00
Girish Ramakrishnan
5c1f9d5686 typo 2018-02-11 00:04:28 -08:00
Girish Ramakrishnan
4d89340c7d Handle FK error when deleting mail domain 2018-02-10 22:49:35 -08:00
Girish Ramakrishnan
0b6846787e The mailboxes domain column must reference the mail domain column 2018-02-10 21:31:50 -08:00
Girish Ramakrishnan
79976cd29d add an extra newline in config 2018-02-10 21:29:00 -08:00
Girish Ramakrishnan
574cf1057e mail: ensure mail is disabled when deleting mail domain 2018-02-10 10:38:45 -08:00
Johannes Zellner
1b3450e3a2 update the altDomain migration to also generate certs with SAN 2018-02-10 15:55:22 +01: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
Girish Ramakrishnan
fc79047bbf Generate fallback cert to contain naked domain in SAN 2018-02-09 13:44:29 -08:00
Girish Ramakrishnan
5263ea860d Add cert tests 2018-02-09 11:19:47 -08:00
Johannes Zellner
5140dee81d Generate a fallback cert for domains added during altDomain migration 2018-02-09 13:08:45 +01:00
Johannes Zellner
24d3195660 Add dns setup and activation route tests 2018-02-09 12:43:20 +01:00
Johannes Zellner
721a4c4349 Validate the adminFqdn in dns setup route 2018-02-09 12:43:03 +01:00
Girish Ramakrishnan
83ff295f6d debug: authenticateMailbox 2018-02-08 18:49:27 -08:00
Girish Ramakrishnan
6decc790d6 Follow CNAME records
DNS records can now be a A record or a CNAME record. All we care
about is them resolving to the public IP of the server somehow.

The main reason for this change is that altDomain is migrated into
domains table and the DNS propagation checks have to work after that.
(previously, the 'altDomain' was a signal for a CNAME check which now
cannot be done post-migration).

In the future, we can make this more sophisticated to instead maybe
do a well-known URI query. That way it will work even if there is
some proxy like Cloudflare in the middle.

Fixes #503
2018-02-08 15:43:31 -08:00
Girish Ramakrishnan
459cf8d0cd Add note on unbound at 127.0.0.1 2018-02-08 14:43:49 -08:00
Girish Ramakrishnan
58386b0c54 remove resolveNs 2018-02-08 14:39:35 -08:00
Girish Ramakrishnan
101c1bda25 translate cancelled errors to timeout errors 2018-02-08 14:27:02 -08:00
Girish Ramakrishnan
d31c948d3e Remove type argument from waitForDns
The function is going to be changed to handle only A/CNAME records
2018-02-08 14:24:11 -08:00
Girish Ramakrishnan
0927c8161c Add note on return value of dns.resolve 2018-02-08 14:10:53 -08:00
Girish Ramakrishnan
4d92aea2f3 Fix usage of callback 2018-02-08 14:10:32 -08:00
Girish Ramakrishnan
0ca2451eaa fix tests 2018-02-08 12:09:06 -08:00
Girish Ramakrishnan
3b987f1970 DNS -> Dns 2018-02-08 12:05:29 -08:00
Girish Ramakrishnan
a7b0ba2178 PTR must be resolved by the domain and not IP 2018-02-08 11:56:25 -08:00
Girish Ramakrishnan
744e6b8af0 replace the verizon smtp 2018-02-08 11:48:55 -08:00
Girish Ramakrishnan
8254e795be add missing export 2018-02-08 11:42:45 -08:00
Girish Ramakrishnan
26c95a25b6 Use the native dns resolver
it now supports cancel()

also, fixes #514
2018-02-08 11:37:58 -08:00
Girish Ramakrishnan
209f37312b createReleaseTarball must use the local branch for master branch 2018-02-08 08:58:20 -08:00
Johannes Zellner
5bd218b3b6 Fix intrinsicFqdn removal breakage 2018-02-08 15:23:38 +01:00
Johannes Zellner
d57b772ada We can use js multiline strings 2018-02-08 15:19:00 +01:00
Johannes Zellner
b6384d5025 Remove intrinsicFqdn 2018-02-08 15:07:49 +01:00
Johannes Zellner
fa65576688 Remove unused require 2018-02-08 15:04:13 +01:00
Johannes Zellner
3572b4eb91 Do not crash if certs cannot be found. Error object does not exist 2018-02-08 10:27:30 +01:00
Johannes Zellner
e710a210fd Fixup the unit tests 2018-02-08 09:00:31 +01:00
Johannes Zellner
265db7d0f7 Fix typo in appdb 2018-02-08 09:00:31 +01:00
Johannes Zellner
b1939e73f4 Remove all occurances of altDomain in the code
Tests are pending
2018-02-08 09:00:31 +01:00
Johannes Zellner
28f5f62414 Add altDomain migration script 2018-02-08 09:00:31 +01:00
Girish Ramakrishnan
ff577a8ed5 stop and disable postfix for good measure 2018-02-07 09:08:04 -08:00
Johannes Zellner
63d06d7024 Use fresh settings key for app autoupdate pattern 2018-02-07 16:51:53 +01:00
Johannes Zellner
4d4b77d6fb Add 1.10.2 changes 2018-02-07 16:27:54 +01:00
Johannes Zellner
3b4ff18881 Keep the invite email for users, which have not yet setup a username 2018-02-07 16:27:49 +01:00
Girish Ramakrishnan
d65cb93158 Remove obsolete action 2018-02-06 23:14:02 -08:00
Girish Ramakrishnan
e00f98884c setup SPF record of non-primary domain correctly 2018-02-06 23:11:47 -08:00
Girish Ramakrishnan
21016cc2e0 createReleaseTarball: Make sure we pick the current branch on webadmin 2018-02-06 16:20:29 -08:00
Girish Ramakrishnan
d12803bb9d Add 1.10.1 changes 2018-02-06 16:11:06 -08:00
Girish Ramakrishnan
039a31318a Generate per-domain enable_outbound relay settings 2018-02-06 14:43:14 -08:00
Johannes Zellner
3eb11ee20a Fixup updatechecker tests 2018-02-06 19:25:03 +01:00
Johannes Zellner
11d740682e Split box and app autoupdate pattern settings 2018-02-06 19:25:03 +01:00
Johannes Zellner
09b33e7ef9 Disable autoupdates by default 2018-02-06 19:25:03 +01:00
Johannes Zellner
19fafca9df Drop users email unique constraint for the migration timeframe 2018-02-06 12:14:11 +01:00
Girish Ramakrishnan
da29c69be4 generate per-domain mail configuration 2018-02-05 15:13:35 -08:00
Johannes Zellner
c4531e32d5 Fix all app route tests 2018-02-05 22:17:16 +01:00
Johannes Zellner
8f74cacfd0 Remove unused require 2018-02-05 20:45:53 +01:00
Girish Ramakrishnan
9ba830ab21 "installing" is easier to understand 2018-02-05 11:13:51 -08:00
Girish Ramakrishnan
ad152bacdd Do not allow dns setup and restore to run in parallel
In the e2e, we did not check the webadminStatus after a dnsSetup
and immediately rushed into restore. This ended up mangling the
cert/key files of the admin domain.
2018-02-05 09:35:16 -08:00
Johannes Zellner
89673fa7f0 Make more of the app route tests work 2018-02-05 17:28:30 +01:00
Johannes Zellner
c8613e646b Show more descriptive error message if minBoxVersion blocks update 2018-02-05 15:20:42 +01:00
Girish Ramakrishnan
faef3114f5 Add more 1.10 changes 2018-02-04 09:33:44 -08:00
Girish Ramakrishnan
087f14643a catch_all_address in settings table is JSON 2018-02-04 01:27:40 -08:00
Girish Ramakrishnan
77fe595970 lint 2018-02-04 00:15:41 -08:00
Girish Ramakrishnan
14529d313a sos: CopySource requires fancier encoding rules 2018-02-04 00:12:28 -08:00
Girish Ramakrishnan
72f56ff91c rename the gcdns key file 2018-02-03 22:18:04 -08:00
Girish Ramakrishnan
2a7eabfa68 fix test mail route 2018-02-03 18:34:11 -08:00
Girish Ramakrishnan
d18fe0a40c app: Check altDomain when saving certs 2018-02-03 01:03:23 -08:00
Girish Ramakrishnan
8f5105388f Fix crash when cert renewal fails 2018-02-02 21:21:51 -08:00
Girish Ramakrishnan
4c0da7a8c9 use fallback cert of altDomain 2018-02-02 20:29:04 -08:00
Girish Ramakrishnan
f607010396 sos: remove exoscale specific hacks which are obsolete now 2018-02-02 20:13:51 -08:00
Girish Ramakrishnan
909db5b80e put the ui version in the string as well 2018-02-02 19:57:55 -08:00
Girish Ramakrishnan
7563dd4ac8 remove ununsed require 2018-02-02 18:49:55 -08:00
Girish Ramakrishnan
de1af3ac72 typo 2018-02-02 16:01:20 -08:00
Girish Ramakrishnan
2b9e90397d Do not delete the old conf dir (migration might use it) 2018-02-02 15:44:49 -08:00
Girish Ramakrishnan
8e258f11ec caas: import appstore and caas configs for existing caas 2018-02-02 13:29:57 -08:00
Johannes Zellner
2e818fd689 Make first half of the app route tests pass 2018-02-02 14:06:01 +01:00
Girish Ramakrishnan
f85b7a4336 How many commits to fix a typo? 2018-02-01 22:24:41 -08:00
Girish Ramakrishnan
f4a021b751 Fix path to nginx cert 2018-02-01 21:58:42 -08:00
Johannes Zellner
272b0489ff Fixup the app route test startup sequence 2018-02-01 18:04:43 +01:00
Johannes Zellner
1b25a0d7b7 Fix copy'n'paste error 2018-02-01 17:28:04 +01:00
Johannes Zellner
d8b62f95be Fix domains tests 2018-02-01 11:19:42 +01:00
Johannes Zellner
b337300a7b Do not use removed setTlsConfig in apptask tests 2018-02-01 11:16:55 +01:00
Girish Ramakrishnan
2083b035e8 create images in sfo2 now 2018-01-31 22:36:00 -08:00
Girish Ramakrishnan
2873793e7b typo 2018-01-31 22:31:19 -08:00
Girish Ramakrishnan
17128f0b56 Start the platform code only after 3 secs 2018-01-31 22:16:06 -08:00
Girish Ramakrishnan
1f5ecd5ff8 Set default for CAAS_CONFIG_KEY 2018-01-31 21:48:33 -08:00
Girish Ramakrishnan
52e23c1299 createReleaseTarball: warn about uncommitted changes in webadmin 2018-01-31 20:48:12 -08:00
Girish Ramakrishnan
298a2d2f0f cloudron-setup: remove unused source-url 2018-01-31 20:14:31 -08:00
Girish Ramakrishnan
38b6e49d44 cloudron-setup: remove unused dns-provider 2018-01-31 20:11:13 -08:00
Girish Ramakrishnan
d915ea348f cloudron-setup: tls-provider is obsolete 2018-01-31 20:10:47 -08:00
Girish Ramakrishnan
8014cc8ae1 le -> letsencrypt 2018-01-31 18:53:29 -08:00
Girish Ramakrishnan
7dc7c56e97 Fix tests 2018-01-31 18:23:49 -08:00
Girish Ramakrishnan
a5af87e47a caas: never return key 2018-01-31 18:22:33 -08:00
Girish Ramakrishnan
ab7448926f Fix use of fallback certs
We used to always use nginx cert dir. When custom fallback certs
were set, we used to copy it in boxdata cert dir and then nginx cert dir.

The issue is then that we have to copy all certs to nginx cert dir on
cloudron restore.

To fix this, we simply give priority to nginx cert dir and not copy
around certs anymore. caas cert will reside in nginx cert dir and
not get backed up, as expected.
2018-01-31 18:20:29 -08:00
Johannes Zellner
a727fc5efa Use tlsConfig from domain, not settings in reverseproxy 2018-01-31 18:37:08 +01:00
Johannes Zellner
0b31568c14 Remove tlsConfig from the settings code 2018-01-31 18:27:31 +01:00
Johannes Zellner
9b21167a8d Use tlsConfig from the domain, not from settings 2018-01-31 18:27:18 +01:00
Johannes Zellner
3c198550be Do not send tlsConfig with alive status 2018-01-31 18:27:02 +01:00
Johannes Zellner
31be178210 Add tlsConfig provider validation 2018-01-31 18:20:11 +01:00
Johannes Zellner
d1ef35ae1d Fixup all the tests to use domain tlsConfig 2018-01-31 18:09:38 +01:00
Johannes Zellner
1ec294a04b Add tlsConfig to domains and setup rest apis 2018-01-31 17:42:26 +01:00
Johannes Zellner
75775fa192 Add tlsConfig in domain model code 2018-01-31 16:57:59 +01:00
Johannes Zellner
5db1716664 Add tlsConfig handling in domaindb.js 2018-01-31 16:56:22 +01:00
Johannes Zellner
2db35e42de Add migration script for tlsConfig in domains 2018-01-31 16:53:00 +01:00
Johannes Zellner
5521e17313 Remove progress.json generation in start.sh 2018-01-31 11:56:51 +01:00
Johannes Zellner
35d2755cfb Remove splashpage logic 2018-01-31 09:24:43 +01:00
Johannes Zellner
8ee1c87c45 Do not setup the splashscreen anymore 2018-01-31 09:11:04 +01:00
Johannes Zellner
e1533ccd54 Prefix all installer log output for better tracking 2018-01-31 09:10:51 +01:00
Girish Ramakrishnan
7907dd5c4f migrate any existing host.cert/key to domain based host.cert/key
we don't remove the old one's yet since existing nginx config
might still be referencing them (not sure)
2018-01-30 22:09:55 -08:00
Girish Ramakrishnan
be66d1ff4d arg_fqdn is no more 2018-01-30 21:27:27 -08:00
Girish Ramakrishnan
686a01b3e6 autoprovision: Save tlsKey/tlsCert with domain prefix 2018-01-30 20:41:52 -08:00
Girish Ramakrishnan
3299efc113 typos 2018-01-30 20:38:58 -08:00
Girish Ramakrishnan
7a15777ca5 1.9.4 changes 2018-01-30 19:54:04 -08:00
Girish Ramakrishnan
a553a5de79 Copy over the correct license file 2018-01-30 19:52:03 -08:00
Girish Ramakrishnan
21f11c4136 cloudron-setup: remove many obsolete args 2018-01-30 19:51:58 -08:00
Girish Ramakrishnan
cd31ed23bc rewrite renewAll to use existing functions 2018-01-30 16:34:26 -08:00
Girish Ramakrishnan
639a0eb43b Move the BOX_ENV check for more test coverage 2018-01-30 16:14:05 -08:00
Girish Ramakrishnan
86cf8bf9e7 Add auditSource to ensureCertificate 2018-01-30 15:16:34 -08:00
Girish Ramakrishnan
8e500e0243 caas: make the cert provider use domain fallback certs 2018-01-30 14:18:34 -08:00
Girish Ramakrishnan
781cc3b67a Merge ensureCertificate and configuring nginx 2018-01-30 13:54:13 -08: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
Girish Ramakrishnan
8e63d63509 Move configureDefaultServer to nginx.js 2018-01-30 12:01:53 -08:00
Girish Ramakrishnan
c84f84b9fe host.cert and host.key are not used anymore 2018-01-30 11:58:26 -08:00
Girish Ramakrishnan
fd913de913 Fallback certs are in host.cert/host.key 2018-01-30 11:43:51 -08:00
Girish Ramakrishnan
3336614702 Make getFallbackCertificate return path like getCertificate 2018-01-30 11:30:35 -08:00
Girish Ramakrishnan
f2372c2c75 Fallback certs are named host.cert and host.key 2018-01-30 11:08:58 -08:00
Girish Ramakrishnan
4a4f1b883a Rename getAdminCerticate to getCertificate 2018-01-30 11:04:13 -08:00
Johannes Zellner
79f2709f3a Ensure certificates and nginx configs on startup 2018-01-30 16:55:13 +01:00
Johannes Zellner
8dea0f71f3 Fix typo with intrinsicFqdn 2018-01-30 16:46:51 +01:00
Johannes Zellner
28cffbb168 fix config-test, fqdn is gone 2018-01-30 14:09:59 +01:00
Johannes Zellner
a662362df7 Add mailinglist rest api tests 2018-01-30 12:23:08 +01:00
Johannes Zellner
f54197afe4 return 204 on mailinglist removal api 2018-01-30 12:22:55 +01:00
Johannes Zellner
2745511e67 Fix typo when using HttpSuccess instead of HttpError 2018-01-30 12:14:08 +01:00
Girish Ramakrishnan
2c60c4eb82 move all setup logic to setup.js 2018-01-29 15:51:36 -08:00
Girish Ramakrishnan
c57c372adf remove config.fqdn() completely 2018-01-29 15:11:43 -08:00
Girish Ramakrishnan
1791617f33 typo 2018-01-29 15:11:43 -08:00
Girish Ramakrishnan
e844e1400e zoneName is gone from config 2018-01-29 15:11:43 -08:00
Girish Ramakrishnan
1f2cfc45b5 adminFqdn is only valid if we have a admin domain set 2018-01-29 15:11:43 -08:00
Johannes Zellner
3c3d44e7f8 Add email alias route tests 2018-01-29 19:39:07 +01:00
Johannes Zellner
6470803604 Do not check if email is enabled when an app tries to do sendmail auth through ldap 2018-01-29 19:29:04 +01:00
Johannes Zellner
edb02c859b Add mailbox rest api tests 2018-01-29 18:53:51 +01:00
Girish Ramakrishnan
351b5fcd70 Use config.adminDomain in tests 2018-01-29 09:28:26 -08:00
Girish Ramakrishnan
4c78a2933f config.setZoneName is gone 2018-01-29 09:06:01 -08:00
Johannes Zellner
9041da62e7 fix email route tests 2018-01-29 17:45:10 +01:00
Johannes Zellner
1e9b37053d Add email domain rest api CRUD testing 2018-01-29 17:18:01 +01:00
Johannes Zellner
6115b1cecf return 409 when an email domain conflict is found 2018-01-29 17:17:47 +01:00
Johannes Zellner
ec7b550ca6 Fixup the ldap tests 2018-01-29 13:35:22 +01:00
Johannes Zellner
66ece2243b Actually return an error if we try to update a non existing email domain 2018-01-29 13:28:11 +01:00
Johannes Zellner
77961e51ec mail.get() returns a MailError 2018-01-29 13:14:08 +01:00
Johannes Zellner
c95de547eb Fix config tests to match the removal of zoneName and repurpose of fqdn 2018-01-29 10:11:09 +01:00
Girish Ramakrishnan
b2363271aa add config.adminDomain 2018-01-28 14:26:41 -08:00
Johannes Zellner
3b2f286ac5 certificates init/uninitialize are gone 2018-01-28 20:59:20 +01:00
Girish Ramakrishnan
9ff1b19c3f Remove unused config.zoneName 2018-01-27 09:26:17 -08:00
Girish Ramakrishnan
64f90abac7 Remove onDomainConfigured 2018-01-26 22:56:15 -08:00
Girish Ramakrishnan
7ce79505ee remove overcomplicated certificate events 2018-01-26 22:47:05 -08:00
Girish Ramakrishnan
b4f945f977 do not regenerate fallback certificate 2018-01-26 22:47:05 -08:00
Girish Ramakrishnan
c2d348fe72 remove unused /api/v1/settings/admin_certificate 2018-01-26 20:49:48 -08:00
Girish Ramakrishnan
44324f4501 make certificates.validateCertificate return CertificatesError 2018-01-26 20:39:58 -08:00
Girish Ramakrishnan
6789e9cfe7 change order of validateCertificate args 2018-01-26 20:36:31 -08:00
Girish Ramakrishnan
4d72dfd3da remove ensureFallbackCertificate 2018-01-26 20:31:48 -08:00
Girish Ramakrishnan
66d90c36fc generate fallback cert for domains if not provided 2018-01-26 20:30:37 -08:00
Girish Ramakrishnan
d0bf315859 certificates: cert/key cannot be null 2018-01-26 20:06:17 -08:00
Girish Ramakrishnan
f49ff2985c certificates: setFallbackCertificate does not validate anymore 2018-01-26 20:03:24 -08:00
Girish Ramakrishnan
ca839ea5cb remove dead comment 2018-01-26 19:55:01 -08:00
Girish Ramakrishnan
ce2d39d54c cloudron-setup: add hetzner in the help text 2018-01-26 18:53:50 -08:00
Johannes Zellner
6ef57d3f23 Fix various route handling tests 2018-01-26 21:31:22 +01:00
Girish Ramakrishnan
de8f7415c3 use config.adminFqdn instead of config.fqdn 2018-01-26 12:12:22 -08:00
Johannes Zellner
7441e11c2d Further test fixes to oauth, ldap and mail tests 2018-01-26 21:10:53 +01:00
Johannes Zellner
c3211c7603 Add domain and enable mail on it for many tests 2018-01-26 20:36:27 +01:00
Johannes Zellner
f028b4a232 Remove mailing list logic from groups tests 2018-01-26 20:07:23 +01:00
Johannes Zellner
004211a683 Remove mailbox and alias related tests in the user logic testing 2018-01-26 20:05:09 +01:00
Johannes Zellner
7d65f341db Ensure user tests have the domain setup correctly and remove implicit mailbox check 2018-01-26 18:47:51 +01:00
Johannes Zellner
7e378b426e Fixup the database tests 2018-01-26 18:32:13 +01:00
Johannes Zellner
3135c227d7 Do not add default domain records when we clear the db for testing 2018-01-26 18:32:01 +01:00
Johannes Zellner
3948cfc33b Parse sql error message to deliver correct conflict errors 2018-01-26 17:56:07 +01:00
Johannes Zellner
ccdf926976 move mailbox cleanup code from userdb to user businesslogic 2018-01-26 12:26:03 +01:00
Johannes Zellner
40f73f6c4b Cleanup the mailboxes for groups on deletion 2018-01-26 11:40:28 +01:00
Johannes Zellner
50e0856803 Do not automatically create mailboxes for groups 2018-01-26 11:36:26 +01:00
Johannes Zellner
d95a670dd7 Add mailing lists routes and logic 2018-01-26 11:25:45 +01:00
Girish Ramakrishnan
16b1b27bfb readDkimPublicKeySync has moved 2018-01-25 15:38:29 -08:00
Girish Ramakrishnan
15fbfd3042 create maildb entry in database._clear 2018-01-25 15:20:53 -08:00
Girish Ramakrishnan
aabd1e7df6 Fix crash when adding a domain 2018-01-25 14:51:07 -08:00
Girish Ramakrishnan
9059a30b89 refactor dns logic in cloudron.js 2018-01-25 14:46:48 -08:00
Girish Ramakrishnan
669b94b0d1 test: remove used of config.fqdn 2018-01-25 14:11:52 -08:00
Girish Ramakrishnan
6cb9779537 mail: Add DNS records when mail domain is created 2018-01-25 14:11:46 -08:00
Girish Ramakrishnan
caf8da331c Do not export configureWebadmin 2018-01-25 13:40:06 -08:00
Girish Ramakrishnan
67eb7a290f Fix mail domain route 2018-01-25 13:40:02 -08:00
Girish Ramakrishnan
af6d8f41ee create dkim key when mail domain is added 2018-01-25 10:38:59 -08:00
Girish Ramakrishnan
7c361a87b0 validate appstore update responses 2018-01-25 09:39:34 -08:00
Johannes Zellner
aab175ea05 Remove alias handling from user logic to mail logic 2018-01-25 18:03:26 +01:00
Johannes Zellner
647582a246 Add alias route handler and logic to mail.js 2018-01-25 18:03:02 +01:00
Johannes Zellner
7bba63d911 rename mailbox routes to match overall scheme of plurals 2018-01-25 12:27:28 +01:00
Girish Ramakrishnan
b71c0bde55 add routes to create and delete mail domain 2018-01-25 12:09:30 +01:00
Girish Ramakrishnan
ef3ab44199 update cloudron-manifestformat (for prerelease in semver) 2018-01-24 20:09:14 -08:00
Girish Ramakrishnan
ed3f128bcd Send relay, catchall and domain info from mail table 2018-01-24 15:38:45 -08:00
Girish Ramakrishnan
2f5ab98284 remove config.zoneName() use 2018-01-24 15:01:54 -08:00
Girish Ramakrishnan
ee66893875 more config.fqdn() removal in tests 2018-01-24 14:58:37 -08:00
Girish Ramakrishnan
45456f2cf7 Remove unused maildb.addDefaultDomain 2018-01-24 14:42:45 -08:00
Girish Ramakrishnan
df3c127584 fqdn -> domain 2018-01-24 14:28:35 -08:00
Girish Ramakrishnan
9d409a67fd Default to domain because tld.getDomain returns null for some tld's 2018-01-24 14:17:26 -08:00
Girish Ramakrishnan
2e05483d54 refactor: addDnsRecords now takes a domain 2018-01-24 14:08:25 -08:00
Girish Ramakrishnan
4e267c7cd1 mail: remove config.fqdn use 2018-01-24 12:28:47 -08:00
Girish Ramakrishnan
efc6a5acd0 Return NOT_FOUND if app is missing in appstore 2018-01-24 10:56:26 -08:00
Johannes Zellner
962ebc835d Do not error if mailbox state is already correct 2018-01-24 15:44:05 +01:00
Johannes Zellner
c7282e861c Add missing MailError type 2018-01-24 15:38:19 +01:00
Johannes Zellner
358048e02b Add domain specific mailbox routes and logic 2018-01-24 13:11:35 +01:00
Johannes Zellner
666f42f4ef Do not automatically create mailboxes for users 2018-01-24 12:56:12 +01:00
Johannes Zellner
aca07765c9 remove unused require 2018-01-24 12:55:44 +01:00
Johannes Zellner
a3caad46a2 Add unique constraint to our schema description file 2018-01-24 10:51:46 +01:00
Girish Ramakrishnan
5e688944e8 dns: compute subdomain correctly when zone name and domain differs 2018-01-23 20:25:45 -08:00
Girish Ramakrishnan
ed75364e2b Default to tld.getDomain if zone name is not provided 2018-01-23 18:54:05 -08:00
Girish Ramakrishnan
d33e35fda2 Move send_test_mail under mail domain api 2018-01-23 16:10:23 -08:00
Girish Ramakrishnan
ccaf687e91 remove config.fqdn from settings-test 2018-01-23 15:47:41 -08:00
Girish Ramakrishnan
ab447120dc cloudflare: del returns 200 now 2018-01-23 14:52:41 -08:00
Girish Ramakrishnan
9e0e99cb0c Use new mail.ini parameters 2018-01-23 14:25:15 -08:00
Girish Ramakrishnan
992a32a8d9 add hetzner as supported provider 2018-01-23 11:37:15 -08:00
Johannes Zellner
4a7b26f940 mail_relay from settings table is also JSON 2018-01-23 16:29:15 +01:00
Johannes Zellner
147c728743 Rename maildb table to mail 2018-01-23 15:45:30 +01:00
Johannes Zellner
ec910e8ca1 Fix hotfix to be able to deal with different webadmin and box code revisions 2018-01-23 12:15:38 +01:00
Johannes Zellner
681813eddd Ensure the mail status check api has consitent toplevel properties 2018-01-23 12:01:00 +01:00
Girish Ramakrishnan
e6f4a9e4a8 Use domain in mail test 2018-01-22 14:49:30 -08:00
Johannes Zellner
27bd0be1fc Remove config.fqdn() from ldap tests 2018-01-22 20:35:21 +01:00
Johannes Zellner
f152dbefad Also check if the domain has mail enabled for ldap sendmail auth 2018-01-22 20:35:08 +01:00
Johannes Zellner
687ba0e248 Verify mailbox against username instead of email 2018-01-22 20:06:18 +01:00
Girish Ramakrishnan
61b5d3e60d createReleaseTarball: Use HEAD instead of --revision 2018-01-22 11:02:21 -08:00
Girish Ramakrishnan
b69d6c42e1 Get webadmin from a level below 2018-01-22 11:02:21 -08:00
Girish Ramakrishnan
924e35294f move ui to separate repo
This separates the platform code from the ui
2018-01-22 11:01:42 -08:00
Johannes Zellner
a6f79854db Further ldap test fixes 2018-01-22 17:53:17 +01:00
Johannes Zellner
591f01bb45 Do not automatically generate the user's email for password verification 2018-01-22 16:12:13 +01:00
Johannes Zellner
8bcd807010 Use main email address for avatar 2018-01-22 16:09:25 +01:00
Johannes Zellner
14dcd71429 Add ui components for fallbackEmail property 2018-01-22 16:06:35 +01:00
Johannes Zellner
9f29438b34 Allow changing fallbackEmail via the profile api 2018-01-22 15:55:55 +01:00
Johannes Zellner
cf94f26d62 Fixup the test using fallbackEmail 2018-01-22 11:52:58 +01:00
Girish Ramakrishnan
6fdb093595 add and remove maildb entries when domain is created and removed 2018-01-21 20:33:21 -08:00
Girish Ramakrishnan
93d5ce63ae fix indent 2018-01-21 15:34:35 -08:00
Johannes Zellner
32152a8b88 Add missing migration file 2018-01-21 14:50:55 +01:00
Johannes Zellner
48d557b242 Replace alternateEmail with fallbackEmail 2018-01-21 14:50:24 +01:00
Johannes Zellner
1e8aa209b1 Add fallbackEmail to user data model 2018-01-21 14:25:39 +01:00
Girish Ramakrishnan
00c1c42b58 Fix mail route tests 2018-01-21 00:59:20 -08:00
Girish Ramakrishnan
f4e1b8874c add maildb entry when domain entry is created 2018-01-21 00:27:28 -08:00
Girish Ramakrishnan
f5b685465f make ldap test use maildb 2018-01-21 00:27:13 -08:00
Girish Ramakrishnan
f49a36f667 Use mail.get() 2018-01-21 00:17:25 -08:00
Girish Ramakrishnan
70fecb8a75 Add mail test 2018-01-21 00:06:08 -08:00
Girish Ramakrishnan
04868f0983 maildb tests 2018-01-20 23:52:16 -08:00
Girish Ramakrishnan
16ac205c7f make mail routes domain based 2018-01-20 23:47:12 -08:00
Girish Ramakrishnan
3ed794e486 Add a single getter for all mail settings 2018-01-20 23:47:12 -08:00
Girish Ramakrishnan
f93963540e Add maildb
also, migrate values from settings table to maildb
2018-01-20 23:47:08 -08:00
Girish Ramakrishnan
777269810f Move mail container creation to mail.js
At this point, mail.js is like an app of it's own
2018-01-20 20:38:35 -08:00
Girish Ramakrishnan
a7de17a160 Move mail related settings to new mail route
there is quite a bit of circular dep between settings, platform and
mail code. this will be removed in future commits.
2018-01-20 20:02:01 -08:00
Girish Ramakrishnan
e724913b6c Move email_status into mail route 2018-01-20 18:37:15 -08:00
Girish Ramakrishnan
b68db9bf05 email -> mail 2018-01-20 18:22:43 -08:00
Girish Ramakrishnan
8da04f6f51 make domaindb.update take object 2018-01-20 10:24:11 -08:00
Girish Ramakrishnan
b64c41758e domaindb.upsert is not used 2018-01-20 10:18:06 -08:00
Girish Ramakrishnan
0eaea12818 make domaindb.add take an object 2018-01-20 10:17:01 -08:00
Girish Ramakrishnan
b098db16cf domaindb: add DOMAINS_FIELDS 2018-01-20 10:05:31 -08:00
Girish Ramakrishnan
dc952f1dd8 remove config.fqdn() from caas-test 2018-01-20 09:50:30 -08:00
Girish Ramakrishnan
ee733d54ea Add mail_domains and mail_default_domain to mail.ini 2018-01-19 23:17:00 -08:00
Girish Ramakrishnan
0e4a0658b2 Remove postman location (unused by dovecot) 2018-01-19 22:10:10 -08:00
Girish Ramakrishnan
20166cd41c make catch_all fully qualified 2018-01-19 20:02:56 -08:00
Girish Ramakrishnan
98d493b2d0 ldap: make mailbox search return fully qualified names 2018-01-19 12:14:43 -08:00
Girish Ramakrishnan
af25485fa0 ldap: Make alias return fully qualified alias 2018-01-19 12:11:33 -08:00
Girish Ramakrishnan
2015e7bce9 ldap: make mailing list search return fully qualified members 2018-01-19 12:11:26 -08:00
Johannes Zellner
2370b12795 Use the db also for crashnotifier to obtain a valid server domain for sending the mail 2018-01-19 19:26:45 +01:00
Johannes Zellner
18a781b956 Collect common mail sending configs in one function 2018-01-19 18:58:34 +01:00
Johannes Zellner
77206a9d3c Remove fqdn usage from all email templates 2018-01-19 18:56:52 +01:00
Girish Ramakrishnan
73800ac6a7 Linter fixes 2018-01-19 09:55:27 -08:00
Girish Ramakrishnan
27dfd1d6c1 Set the dkim selector when generating keys
The box code owns the dkim dir and selector can change per domain
2018-01-18 21:49:45 -08:00
Girish Ramakrishnan
0833f8830c retire script does not require fqdn 2018-01-18 19:44:43 -08:00
Girish Ramakrishnan
28a240a701 send adminFqdn instead of domain in alive route 2018-01-18 19:44:34 -08:00
Girish Ramakrishnan
5be827cd4e remove use of config.fqdn() in ldap test 2018-01-18 19:35:05 -08:00
Girish Ramakrishnan
0f47dcfae6 ldap: mailbox routes now require the cn to be fully qualified 2018-01-18 19:33:38 -08:00
Girish Ramakrishnan
614f13ffd0 move caas tests to separate file 2018-01-18 14:22:07 -08:00
Girish Ramakrishnan
a850c0813b caas: use caas_config for token verification 2018-01-18 13:51:02 -08:00
Girish Ramakrishnan
4b642a407f remove caas dep from tests 2018-01-18 13:50:57 -08:00
Girish Ramakrishnan
6a87558b52 set default provider to generic 2018-01-18 13:41:40 -08:00
Girish Ramakrishnan
606efb8038 remove caas related logic from oauth test 2018-01-18 13:31:08 -08:00
Girish Ramakrishnan
cfa523f3c1 Remove config.fqdn() fallback in apptask 2018-01-18 12:06:20 -08:00
Girish Ramakrishnan
0e7ebc9637 Move SMTPS port to 2465
This curious change is because gogs and gitea have no way to configure
the SMTPS port and rely on port number ending with 465 to determine
SMTPS (!)
2018-01-18 10:38:39 -08:00
Johannes Zellner
94f7b90705 Add 1.9.3 changes 2018-01-18 15:45:17 +01:00
Johannes Zellner
876b4feb49 The DNS provider property moved to the root dns config object 2018-01-18 12:15:44 +01:00
Girish Ramakrishnan
27252fb2cc 1.10.0 changes 2018-01-17 21:10:11 -08:00
Girish Ramakrishnan
6513aebba6 MAIL_IMAP_USERNAME and MAIL_SMTP_USERNAME should be fully qualified
Re-configure the whole infra to propagate the changes
2018-01-17 21:07:53 -08:00
Girish Ramakrishnan
e9be2a7fb7 Remove is_custom_domain use (use adminFqdn instead) 2018-01-17 21:07:13 -08:00
Girish Ramakrishnan
28dac3fdb3 Fix indentation 2018-01-17 21:05:43 -08:00
Girish Ramakrishnan
f4c3ae639e Use app.domain instead of config.fqdn when setting up mail addon 2018-01-17 21:05:22 -08:00
Girish Ramakrishnan
8c8e387012 bump addons 2018-01-17 20:25:57 -08:00
Girish Ramakrishnan
9e8be3fa50 do basic backupId validation 2018-01-17 16:22:50 -08:00
Girish Ramakrishnan
21058f8b61 exchangeBoxTokenWithUserToken is obsolete 2018-01-17 15:59:33 -08:00
Girish Ramakrishnan
cef0cd4b25 config.token() and arg_token are not used anymore 2018-01-17 15:39:32 -08:00
Girish Ramakrishnan
9cd690e8b4 Do not cache box and user config
this is not needed anymore since webadmin does not keep polling this
2018-01-17 15:38:24 -08:00
Girish Ramakrishnan
116befd111 fix test 2018-01-17 15:13:53 -08:00
Girish Ramakrishnan
fe0ff45c37 caas: autoprovision and use caas and appstore configs 2018-01-17 14:11:19 -08:00
Girish Ramakrishnan
337f919451 dnsConfig is unused 2018-01-17 12:25:33 -08:00
Girish Ramakrishnan
03d2e74e1d use constants 2018-01-17 12:25:14 -08:00
Girish Ramakrishnan
2c42653c24 1.9.2 changes 2018-01-17 10:53:00 -08:00
Johannes Zellner
b1109ba6ea Only require the GCS key when this backup provider is selected 2018-01-17 19:38:05 +01:00
Johannes Zellner
7700d236a5 Create new changes for 1.9.1 2018-01-16 22:02:09 +01:00
Johannes Zellner
b10abb1944 Attempt to bring existing logs or terminal window to the front 2018-01-16 19:09:33 +01:00
Johannes Zellner
dd6eeac000 Do not source the xterm assets in the main app 2018-01-16 16:49:34 +01:00
Johannes Zellner
7b8bb5dac4 Add js-terminal task to the default task chain for gulp 2018-01-16 16:49:17 +01:00
Johannes Zellner
bf444a722d Remove debug entry from main menu 2018-01-16 16:32:56 +01:00
Johannes Zellner
a954a23add Add terminal action to apps grid 2018-01-16 16:30:15 +01:00
Johannes Zellner
98aa785ad0 Add showTerminal button to logs view 2018-01-16 16:24:32 +01:00
Johannes Zellner
ee485d8b2a Add separate terminal window 2018-01-16 16:24:18 +01:00
Girish Ramakrishnan
081b596ebf add note that the migration is br0ken 2018-01-15 20:18:32 -08:00
Girish Ramakrishnan
56f4cbe44a Fix double callback invocation in cleanupBackup 2018-01-15 20:08:55 -08:00
Girish Ramakrishnan
ab5b754c22 Add adminFqdn to update params 2018-01-15 13:47:26 -08:00
Johannes Zellner
f030aa95ba Open logs viewer in new window 2018-01-15 16:29:17 +01:00
Johannes Zellner
bad947e2ac Add separate logs viewer 2018-01-15 16:29:03 +01:00
Johannes Zellner
02b43382c8 Remove logs view from the main angular app 2018-01-15 16:28:19 +01:00
Johannes Zellner
4ed35c25a5 Align text size in account and settings view 2018-01-15 14:52:25 +01:00
Johannes Zellner
0d4f963756 Ensure we use the same collation on all tables
This is required since some older cloudrons have a mixed bag of
collations and thus charsets and we add foreign keys across those, which
require the same collation
2018-01-15 11:01:35 +01:00
Girish Ramakrishnan
1139c077b0 Fix usage of domain.provider 2018-01-12 09:25:33 -08:00
Girish Ramakrishnan
84afdb2e3a remove broken links 2018-01-11 15:14:14 -08:00
Girish Ramakrishnan
115f9b408f cloudron-setup: Add adminFqdn 2018-01-11 15:11:49 -08:00
Girish Ramakrishnan
d6ce51dabd Various minor UI fixes 2018-01-11 13:56:51 -08:00
Girish Ramakrishnan
54bc4b32c8 provider cannot be empty string 2018-01-11 11:05:37 -08:00
Girish Ramakrishnan
6537cf700f Fix crash in apps.clone 2018-01-11 10:59:30 -08:00
Johannes Zellner
c5e0b45b22 setupdns view needs to query other domains during migration
The risk for cross site scripting during Cloudron setup is very small
2018-01-11 16:52:39 +01:00
Johannes Zellner
cbfd7cf1a6 Make the new domain available to setupdns view on migration 2018-01-11 16:48:28 +01:00
Johannes Zellner
e96199927d Do not show migrate button for already active domain 2018-01-11 14:57:29 +01:00
Johannes Zellner
a67d690291 Ensure we can migrate caas Cloudrons back to caas domain 2018-01-11 14:33:09 +01:00
Girish Ramakrishnan
30ddda723d typo 2018-01-11 01:00:15 -08:00
Girish Ramakrishnan
d9bf2f1724 If oldConfig.domain is missing use config.fqdn()
do this in configure() because the code asserts on domain being
a string
2018-01-11 00:35:27 -08:00
Girish Ramakrishnan
915cfbe7dd Remove use of isCustomDomain
Use adminFqdn instead as needed
2018-01-11 00:35:12 -08:00
Girish Ramakrishnan
aeb883623b handle location being empty 2018-01-11 00:31:51 -08:00
Girish Ramakrishnan
2d163c1e76 caas: do not special case handling of naked domains
on the caas side, adding naked domain is removed as well
2018-01-11 00:13:16 -08:00
Girish Ramakrishnan
74e79c00fc Fix cert api selection 2018-01-11 00:05:35 -08:00
Girish Ramakrishnan
f87f92708b Fix waitForDNSRecord with external domain 2018-01-10 23:50:59 -08:00
Girish Ramakrishnan
b2ff16eb1e Do not save intrinsicFqdn in db 2018-01-10 23:44:46 -08:00
Girish Ramakrishnan
0c9f557d21 let unregisterSubdomain succeed if domain was removed 2018-01-10 23:17:07 -08:00
Girish Ramakrishnan
f7dd8c0a23 Do not rewrap domain errors 2018-01-10 23:16:46 -08:00
Girish Ramakrishnan
3067e0940d compare with adminFqdn instead of adminLocation 2018-01-10 18:14:29 -08:00
Girish Ramakrishnan
969fba83ea Do not use config.fqdn to determine application name 2018-01-10 15:44:12 -08:00
Girish Ramakrishnan
70a15d01c9 Remove use of isCustomDomain in tokens.html 2018-01-10 14:13:43 -08:00
Girish Ramakrishnan
efc0a3b68d Remove usage of config.appFqdn() 2018-01-10 13:58:05 -08:00
Girish Ramakrishnan
c108cd2d5f Set max email recepient limit (in outgoing emails) to 500 2018-01-10 11:42:41 -08:00
Girish Ramakrishnan
e67f023a56 Remove unused variable 2018-01-09 21:09:10 -08:00
Girish Ramakrishnan
208e4267df Fix validateHostname to handle empty location 2018-01-09 18:17:09 -08:00
Girish Ramakrishnan
92b6464cd7 caas: fix migration of zoneName into domains table 2018-01-09 17:50:04 -08:00
Girish Ramakrishnan
ab66c8cb81 debug the zoneName in waitForDns 2018-01-09 16:09:47 -08:00
Girish Ramakrishnan
2ac12de204 Add domains.provider 2018-01-09 15:32:49 -08:00
Girish Ramakrishnan
373c003223 provider is always set in domain config 2018-01-09 14:25:58 -08:00
Girish Ramakrishnan
f236bd3316 remove isCustomDomain usage from the UI
This also adds domains.provider that we should add to the db itself
at some point
2018-01-09 11:00:32 -08:00
Girish Ramakrishnan
9d386bd071 Fix indent 2018-01-09 10:15:35 -08:00
Girish Ramakrishnan
665aa2ad3d Open the logs in new tab 2018-01-08 17:41:31 -08:00
Girish Ramakrishnan
e8ca423ac4 make setupdns try to get status forever
During domain migration, the box code restarts. the getStatus() will
fail temporarily. In the future, we can make this code forward to
error.html after a few retries.
2018-01-08 17:34:28 -08:00
Girish Ramakrishnan
a53214cb29 Call jquery event handlers in $scope.$apply
This causes all sorts of strange race conditions when $location.path()
is changed by the hide and hidden events handlers
2018-01-08 17:30:50 -08:00
Girish Ramakrishnan
af4296e40c Fix periodic fetching of apps/config/profile
All these are already fetched the first time in main.js

* Fetch apps periodically only in the apps view. This is mostly for the
  installationState. We can optimize this a bit more later depending on
  if any app is in non-running state.

* profile hardly changes, no need to fetch this over and over

* config hardly changes, but is fetched primarily for the update flag
2018-01-08 16:17:02 -08:00
Girish Ramakrishnan
50d396725e Update app state immediately on dialog close 2018-01-08 14:53:28 -08:00
Girish Ramakrishnan
e0c894d333 remove redundant call to fetch user info
main.js already does this
2018-01-08 14:21:25 -08:00
Girish Ramakrishnan
044c25311f add note on why we only use href and not the hostname 2018-01-08 14:21:16 -08:00
Girish Ramakrishnan
d56575facf Add autofocus to error and info dialogs 2018-01-08 14:21:04 -08:00
Girish Ramakrishnan
05775a843d Keep apps sorted 2018-01-08 14:16:07 -08:00
Johannes Zellner
5261831ca2 We have a new year 2018-01-08 12:12:55 +01:00
Johannes Zellner
b0c967ba57 Remove logging parts from terminal/debug view 2018-01-08 11:51:10 +01:00
Johannes Zellner
2902c6ca7a Add logs button in app grid 2018-01-08 11:09:46 +01:00
Johannes Zellner
0c5aea2fb2 Add separate logs view with deep-linking support 2018-01-08 11:05:14 +01:00
Girish Ramakrishnan
de2999cb56 tarjs is not used anymore 2018-01-07 18:34:36 -08:00
Girish Ramakrishnan
28c1a70ae1 Fix display of app install dialog when no version is provided 2018-01-05 11:58:53 -08:00
Girish Ramakrishnan
ff4d3de1b1 redirect to setupdns instead since it will redirect to new domain automatically 2018-01-02 17:34:53 -08:00
Girish Ramakrishnan
ac4f12447b add set admin button 2018-01-02 16:25:30 -08:00
Girish Ramakrishnan
325814e7ca Display the add domain button for caas 2018-01-02 14:52:27 -08:00
Girish Ramakrishnan
00728dc833 caas: move getBoxAndUserDetails 2018-01-02 13:05:30 -08:00
Girish Ramakrishnan
c95684af1e Move caas heartbeat code to caas.js 2018-01-02 12:47:33 -08:00
Girish Ramakrishnan
0a80bff055 Fix indent 2018-01-01 20:09:04 -08:00
Girish Ramakrishnan
9e7b10860d webterminal: Sort entries in dropdown based on location 2017-12-27 07:23:16 -08:00
Girish Ramakrishnan
41eab11641 Add 1.8.5 changes 2017-12-26 07:06:50 -08:00
Girish Ramakrishnan
b7abf404f3 Display external error if appstore download fails 2017-12-26 07:06:08 -08:00
Girish Ramakrishnan
dc644570f7 Use updateConfig addons instead of manifest addons to setup
Even though app.manifest variable is updated by updatedApp, the
setupAddons is called with the _old_ value because it is a bind()
2017-12-21 01:07:40 -08:00
Girish Ramakrishnan
c4cb6b5819 lint 2017-12-21 01:04:38 -08:00
Girish Ramakrishnan
b7e9f0ed12 Add debug for oauth addon setup 2017-12-21 00:50:53 -08:00
Girish Ramakrishnan
46df1d694a gcs: display prefix in restore UI 2017-12-20 09:32:29 -08:00
Girish Ramakrishnan
3efe8e3393 gcs: add to restore UI 2017-12-20 02:06:55 -08:00
Girish Ramakrishnan
e4b12f0c4e gcs: make testfile deletion work
It seems there is a race where the delete gets triggered even before the
file upload is complete. as a result, the delete succeeds but the file
is left on gcs.
2017-12-16 21:36:33 +05:30
Girish Ramakrishnan
61b56d4679 gcs: keyFilename is not used
also, some linter fixes
2017-12-16 21:36:29 +05:30
Girish Ramakrishnan
051ac21fed gcs: make prefix visible 2017-12-15 21:47:54 +05:30
Girish Ramakrishnan
892bd86810 gcs: gcsKey.content is not loaded properly 2017-12-15 21:21:28 +05:30
Girish Ramakrishnan
5c4ae6066d gcs: lint 2017-12-15 17:34:09 +05:30
Girish Ramakrishnan
a35e048665 gcs: oldFilePath is not defined 2017-12-15 17:31:05 +05:30
Girish Ramakrishnan
48f6c39ae5 gcs: Make requires alphabetical 2017-12-15 17:28:45 +05:30
Girish Ramakrishnan
be03bd2c5b shrinkwrap is gone 2017-12-15 17:09:46 +05:30
Girish Ramakrishnan
f108376b25 8.9.3 is required 2017-12-15 17:05:48 +05:30
Girish Ramakrishnan
70e23ed394 Add package-lock.json
https://github.com/npm/npm/pull/16441 has a TLDR
2017-12-15 17:03:37 +05:30
Girish Ramakrishnan
5fbfb7365f Waiting -> Pending 2017-12-15 16:58:38 +05:30
Girish Ramakrishnan
678865fa2a Fix npm warnings
npm WARN The package gulp-sass is included as both a dev and production dependency.
npm WARN The package hock is included as both a dev and production dependency.
npm WARN The package request is included as both a dev and production dependency.
2017-12-15 16:56:54 +05:30
Girish Ramakrishnan
943dc14bf0 Update shrinkwrap for latest node 2017-12-15 16:53:31 +05:30
Girish Ramakrishnan
c3919592ff 1.9.0 changes 2017-12-15 16:49:14 +05:30
Girish Ramakrishnan
442eb8a518 Update node to 8.9.3 LTS 2017-12-15 16:47:11 +05:30
Girish Ramakrishnan
192e4f0a75 gulp-ejs added an options param 2017-12-12 14:07:20 +05:30
Johannes Zellner
921550e3ed Make mocha call process.exit for each run to avoid lingering server instances 2017-12-10 17:49:23 +01:00
Girish Ramakrishnan
7d0cf1a754 caas: migrate -> change_plan 2017-12-09 09:00:10 +05:30
Girish Ramakrishnan
6dec02e1bd caas: refactor migrate and upgrade route 2017-12-09 08:43:59 +05:30
Girish Ramakrishnan
14fc066af7 gcs: Add missing label and keep the listing sorted 2017-12-09 05:40:31 +05:30
Girish Ramakrishnan
8fbad34716 Update shrinkwrap 2017-12-08 06:28:13 +05:30
Girish Ramakrishnan
75a344a316 Merge branch 'feature/gcs' into 'master'
Adding Google Cloud Storage support for Backups

See merge request cloudron/box!18
2017-12-08 00:51:54 +00:00
Girish Ramakrishnan
3b8d500636 1.8.4 changes 2017-12-07 20:20:41 +05:30
Girish Ramakrishnan
a83bce021b Bump mail container for internal email relay fix 2017-12-07 20:20:09 +05:30
Girish Ramakrishnan
725cf297ab Developer scope is obsolete 2017-12-07 04:33:49 +05:30
Aleksandr Bogdanov
5a2de0bcbb Merge remote-tracking branch 'origin/master' into feature/gcs
# Conflicts:
#	webadmin/src/views/certs.js
#	webadmin/src/views/settings.js
2017-12-06 22:47:26 +01:00
Girish Ramakrishnan
cb814a50d7 Fix waitForDNSRecord for subdomain installations 2017-12-06 12:31:25 +05:30
Girish Ramakrishnan
5d34559f0a Fix hostname validation 2017-12-06 07:13:46 +05:30
Girish Ramakrishnan
91ede59241 cloudron-setup: move backupConfig default as migration script
if in autoprovision, then the backupConfig ends up being overwritten
after a restore.
2017-12-05 18:21:25 +05:30
Girish Ramakrishnan
778342906e cloudron-setup: remove dnsConfig
this is not really used since dns setup is the first step now
2017-12-05 18:09:25 +05:30
Girish Ramakrishnan
c42f3341ca cloudron-setup: Add back restore-url and key for pre-1.9 2017-12-05 16:01:16 +05:30
Girish Ramakrishnan
a838b4c521 cloudron-setup: keep pre-1.9 compat for configs 2017-12-05 15:56:47 +05:30
Girish Ramakrishnan
44d4934546 cloudron-setup: create autoprovision.json 2017-12-05 14:55:06 +05:30
Girish Ramakrishnan
49db0d3641 cloudron-setup: remove boxVersionsUrl 2017-12-05 14:53:26 +05:30
Girish Ramakrishnan
2bebed2c19 Add fqdn to caas domain config 2017-12-05 07:16:00 +05:30
Girish Ramakrishnan
2cf2dddcee Fix display of DNS records when not using cloudron-smtp
Fixes #492
2017-12-04 21:24:17 +05:30
Girish Ramakrishnan
306e11ae88 Remove unused requires 2017-12-04 17:10:06 +05:30
Girish Ramakrishnan
568397ec19 caas: send ids in backupDone instead of filenames 2017-11-29 12:39:10 -08:00
Girish Ramakrishnan
459314df17 lock for platform start, so that apps are not installed in between 2017-11-28 23:18:43 -08:00
Girish Ramakrishnan
693bc094cc caas: make fqdn part of dns and s3 credentials 2017-11-28 22:44:40 -08:00
Girish Ramakrishnan
9cdd2df696 set restoring to false 2017-11-28 15:01:59 -08:00
Girish Ramakrishnan
e9b308bb95 Re-purpose the zoneName as the caas domain 2017-11-28 15:00:38 -08:00
Girish Ramakrishnan
432a369bff Add token to dnsConfig 2017-11-28 15:00:38 -08:00
Girish Ramakrishnan
76312495fd Add debug 2017-11-28 15:00:33 -08:00
Girish Ramakrishnan
126d8b9bec stringify and a typo 2017-11-28 02:30:35 -08:00
Girish Ramakrishnan
d001647704 Change path of autoprovision.conf since /root is not readable 2017-11-28 01:23:10 -08:00
Girish Ramakrishnan
8701b36123 make dnsSetup return any provisioning error 2017-11-28 01:20:18 -08:00
Girish Ramakrishnan
c56a24d4fb Autoprovision from autoprovision.json
This is done so that CaaS restore code path can provision correctly
2017-11-27 22:41:32 -08:00
Girish Ramakrishnan
e6eb54d572 More test fixing 2017-11-27 18:19:20 -08:00
Girish Ramakrishnan
68c26c1d12 Fix route/ tests 2017-11-27 16:01:52 -08:00
Girish Ramakrishnan
437312811d wrap seconds 2017-11-27 15:41:37 -08:00
Girish Ramakrishnan
68d4e70823 Add config._reset to tests 2017-11-27 15:27:54 -08:00
Girish Ramakrishnan
74f3a4dd6f remove redundant after() 2017-11-27 14:10:27 -08:00
Girish Ramakrishnan
3a74babcf4 Fix error message 2017-11-27 13:59:56 -08:00
Girish Ramakrishnan
ab2f2c9aab Remove setTimeout from cron.js
this causes scripts to not end since the timeout is not killed
2017-11-27 13:43:25 -08:00
Girish Ramakrishnan
8b11692e37 cron: ensure all jobs are cleaned up 2017-11-27 12:44:04 -08:00
Girish Ramakrishnan
abe04d7d10 ldap: call client.unbind 2017-11-27 12:14:31 -08:00
Girish Ramakrishnan
efe75f0c4e make tests finish
database.uninitialize must be called to drop the connection
2017-11-27 11:57:09 -08:00
Girish Ramakrishnan
b6c20877ea lint 2017-11-27 10:43:12 -08:00
Girish Ramakrishnan
172d5bbdff Remove obsolete setting (now migrated into domains table) 2017-11-24 22:45:32 -08:00
Girish Ramakrishnan
6ed7a91cf9 rename migration timestamps so they appear in correct order
The following migrations are already released in 1.8.3:

20171116203507-apps-rename-newConfigJson-to-updateConfigJson.js
20171116224051-apps-rename-lastBackupId-to-restoreConfigJson.js
2017-11-24 22:39:29 -08:00
Johannes Zellner
61a7f1a126 mailer.start() is gone remove from test 2017-11-25 00:47:00 +01:00
Johannes Zellner
ba49c1e30c Remove accidentally commited debug lines 2017-11-25 00:39:44 +01:00
Girish Ramakrishnan
ca5b69a07d Fix db export/import 2017-11-24 15:31:06 -08:00
Girish Ramakrishnan
998f736e6f Add database.exportToFile 2017-11-24 15:29:56 -08:00
Girish Ramakrishnan
969f8ad11f Add 1.9.0 changes 2017-11-24 14:58:43 -08:00
Johannes Zellner
34ec09588a no need for a special test setup handling in the migration script 2017-11-24 23:48:59 +01:00
Johannes Zellner
4091315589 Make migration down fail if the table cannot be dropped 2017-11-24 23:48:39 +01:00
Johannes Zellner
91fb45584f Add some changes 2017-11-24 23:01:34 +01:00
Girish Ramakrishnan
180a455299 remove mailer.start and stop 2017-11-24 13:58:40 -08:00
Girish Ramakrishnan
a77bf54df7 cron.initialize is required in domain setup for heartbeats 2017-11-24 13:56:34 -08:00
Girish Ramakrishnan
74abce99ac Fix some typos in restore api 2017-11-23 16:37:40 -08:00
Johannes Zellner
b2d27ee26a add 1.8.3 changes 2017-11-24 01:31:15 +01:00
Johannes Zellner
1466104681 Remove obsolete developer mode 2017-11-24 01:31:15 +01:00
Girish Ramakrishnan
4acd0bcdac Remove --restore-url and --restore-key 2017-11-23 13:33:41 -08:00
Girish Ramakrishnan
f9f2bd5c28 Fix crash 2017-11-23 13:17:07 -08:00
Girish Ramakrishnan
a752b7139f Add a break 2017-11-23 12:54:25 -08:00
Girish Ramakrishnan
2becf674ee fix wording 2017-11-23 12:42:46 -08:00
Girish Ramakrishnan
ef2c44ee2f Instead of exact match, only require major+minor to match 2017-11-23 12:36:43 -08:00
Girish Ramakrishnan
a5e5324f97 Add note about restore in setupdns page 2017-11-23 12:19:06 -08:00
Girish Ramakrishnan
479261bcec add restore UI
Add a link from setup page to restore

Part of #439
2017-11-22 23:08:59 -08:00
Girish Ramakrishnan
ac94a0b7f2 Add route to restore box from backup
Part of #439
2017-11-22 23:08:59 -08:00
Girish Ramakrishnan
0f191324fa Add backups.restore to import from box backup
Part of #439
2017-11-22 23:08:59 -08:00
Girish Ramakrishnan
b507ccaa33 Add database.importFileFile
Part of #439
2017-11-22 23:08:59 -08:00
Girish Ramakrishnan
9f6bc0b779 Start platform only on activated 2017-11-22 23:08:28 -08:00
Girish Ramakrishnan
7306f1ddea chown the toplevel mail directory
this helps the restore box logic extract without sudo
2017-11-22 23:08:01 -08:00
Girish Ramakrishnan
dc1d10837b split read/parse of fsmetadata 2017-11-22 23:07:52 -08:00
Girish Ramakrishnan
f58d6c04cc Add DO spaces ams3 2017-11-22 21:03:38 -08:00
Girish Ramakrishnan
f9dda85a38 Fix error code handling 2017-11-22 21:03:34 -08:00
Johannes Zellner
8773c0f6e1 Remove unused requires 2017-11-23 02:36:33 +01:00
Girish Ramakrishnan
72a96c0d6a lint 2017-11-22 12:19:05 -08:00
Girish Ramakrishnan
136ee363a8 Make backups.download take backupConfig 2017-11-22 10:38:04 -08:00
Girish Ramakrishnan
9c5965311f Handle billing required error in clone 2017-11-22 09:05:06 -08:00
Girish Ramakrishnan
78bd819a36 fix indent 2017-11-21 19:18:03 -08:00
Girish Ramakrishnan
48df8b713d add note on enableBackup 2017-11-21 18:09:44 -08:00
Girish Ramakrishnan
0e15fabf88 Do not put app in errored state if backup fails
this will end up sending an email but will put the app itself back
in installed state

Fixes #468
2017-11-21 15:59:25 -08:00
Johannes Zellner
ed83a11248 Hide domain actions 2017-11-21 23:05:07 +01:00
Johannes Zellner
8d69e5f3b9 More test cleanups to support domains api 2017-11-21 02:46:20 +01:00
Girish Ramakrishnan
5dab697fd6 Display backup progress in caas 2017-11-20 14:37:36 -08:00
Johannes Zellner
a94d5d1b3e Add domains REST api tests 2017-11-20 22:53:14 +01:00
Johannes Zellner
9c0af8b13e Fixing sysadmin, settings and clients tests 2017-11-20 20:01:50 +01:00
Johannes Zellner
a08ff89b78 Fix ldap and dns tests 2017-11-20 20:01:50 +01:00
Johannes Zellner
2e06724927 Add mailboxes unique name/domain constraint 2017-11-20 20:01:50 +01:00
Johannes Zellner
f7c7a36fc1 We reuse appFqdn() here for the webadmin 2017-11-20 20:01:50 +01:00
Johannes Zellner
748d1b8471 webadmin: Hide domain actions for caas managed domains 2017-11-20 20:01:50 +01:00
Johannes Zellner
032200b20f cloudron addDnsRecords needs to provide subdomain and domain separately 2017-11-20 20:01:50 +01:00
Johannes Zellner
4cbb751d82 Fix usage of appFqdn in caas dns backend 2017-11-20 20:01:50 +01:00
Johannes Zellner
27e4f0cb82 make *DNSRecords apis take the explicit domain 2017-11-20 20:01:50 +01:00
Johannes Zellner
321bfc6130 Create initial domain record in start.sh if fqdn was provided 2017-11-20 20:01:50 +01:00
Johannes Zellner
635426c37e Drop mailboxes primary key in favor of name+domain constraint 2017-11-20 20:01:50 +01:00
Johannes Zellner
33e7c8e904 Create the admin group only on owner creation
For new cloudrons this will first remove the previously added group and
mailbox entry from the db migration scripts and readds it once we have a
domain on owner creation
2017-11-20 20:01:50 +01:00
Johannes Zellner
616b4b86d8 Reword the dns setup page to indicate more domains can be added later 2017-11-20 20:01:50 +01:00
Johannes Zellner
e3e6fd2bc9 For new cloudrons, the migration scripts cannot rely on an existing
domain
2017-11-20 20:01:50 +01:00
Johannes Zellner
07626dacb5 Ensure certificates needs to be multidomain aware 2017-11-20 20:01:50 +01:00
Johannes Zellner
bf711c6ebb allow to set domain specific fallback certs 2017-11-20 20:01:50 +01:00
Johannes Zellner
a4a3e19a92 Remove configJson field for domain records in postprocess 2017-11-20 20:01:50 +01:00
Johannes Zellner
16db4ac901 Make app configure domain aware 2017-11-20 20:01:50 +01:00
Johannes Zellner
78d6b6d632 Put app configure dialog helper in the correct scope 2017-11-20 20:01:50 +01:00
Johannes Zellner
009b8abf1b dns api now takes full fqdn instead of subdomain 2017-11-20 20:01:50 +01:00
Johannes Zellner
4edd874695 webadmin: add client.getDomain() 2017-11-20 20:01:50 +01:00
Johannes Zellner
dda403caa9 Only show domains in apps view if there are more than one 2017-11-20 20:01:50 +01:00
Johannes Zellner
de44796b6f Handle errors if domain is still used on deletion attempt 2017-11-20 20:01:50 +01:00
Johannes Zellner
53e3626e51 More test fixes for config database and settings 2017-11-20 20:01:50 +01:00
Johannes Zellner
9aa4fdc829 Fixup the dns provider tests 2017-11-20 20:01:50 +01:00
Johannes Zellner
1ccc3b84b8 Fixup various tests for multidomain 2017-11-20 20:01:50 +01:00
Johannes Zellner
d4b6768464 Fixup validateHostname and related tests 2017-11-20 20:01:50 +01:00
Johannes Zellner
6e07a4ec08 Fixup database tests 2017-11-20 20:01:50 +01:00
Johannes Zellner
1cee0f3831 Fix unregisterSubdomain to work during migration from single to multidomain
oldConfig.domain was previously not there and thus might be missing
still
2017-11-20 20:01:50 +01:00
Johannes Zellner
a52747cde0 Avoid logging 'undefined' on success, this looks like a bug otherwise 2017-11-20 20:01:50 +01:00
Johannes Zellner
14d575f514 Make mailboxdb aware of domain field 2017-11-20 20:01:50 +01:00
Johannes Zellner
e43e904622 Refactor all app.location usages to config.appFqdn(app) 2017-11-20 20:01:50 +01:00
Johannes Zellner
1dfa689d1c Make apptask subdomain cleanup multidomain aware 2017-11-20 19:59:40 +01:00
Johannes Zellner
293e401852 Store domain alongside with location in apps oldConfig 2017-11-20 19:59:40 +01:00
Johannes Zellner
c565d0789e webadmin: Show domain where the app is installed 2017-11-20 19:59:40 +01:00
Johannes Zellner
59ae1ac012 Move fallback certificate api to domains 2017-11-20 19:59:40 +01:00
Johannes Zellner
4cf2978088 Remove dns related settings api
This is replaced with the multi domain aware api
2017-11-20 19:59:40 +01:00
Johannes Zellner
707d34cb89 Make app install dialog multi domain aware 2017-11-20 19:59:40 +01:00
Johannes Zellner
20a37030b6 The domain update route returns 204 not 202 2017-11-20 19:59:40 +01:00
Johannes Zellner
e1be8b669f Do not rely on admin subdomain for dns backend config validation 2017-11-20 19:59:40 +01:00
Johannes Zellner
c723b289dc Only validate the nameservers for manual dns backend 2017-11-20 19:59:40 +01:00
Johannes Zellner
7c51c380ae webadmin: Refactor the domains view 2017-11-20 19:59:40 +01:00
Johannes Zellner
d75959772c Add more error handling for domains update route 2017-11-20 19:59:40 +01:00
Johannes Zellner
37e23c9465 Add zoneName support to domains rest API 2017-11-20 19:59:40 +01:00
Johannes Zellner
21c8f63dc1 weadmin: Add domain REST api wrapper 2017-11-20 19:59:40 +01:00
Johannes Zellner
ca3b6e542a Require password for domain deletion route 2017-11-20 19:59:40 +01:00
Johannes Zellner
3e4466a41e Fix appdb.add sql query 2017-11-20 19:59:40 +01:00
Johannes Zellner
c1b5f56ac6 Send domain with app install request 2017-11-20 19:59:40 +01:00
Johannes Zellner
28c3ef772e Ensure we pass full fqdn to domains api from apptask 2017-11-20 19:59:40 +01:00
Johannes Zellner
f1b23005c9 Fix appFqdn() usage to match new api 2017-11-20 19:59:40 +01:00
Johannes Zellner
143ba831f4 Make appFqdn() multidomain aware 2017-11-20 19:59:40 +01:00
Johannes Zellner
5ca31f2484 Send domain as part of the apps routes 2017-11-20 19:59:40 +01:00
Johannes Zellner
5c272fe5d9 Make appdb domain aware 2017-11-20 19:59:40 +01:00
Johannes Zellner
155877534f Fixup apps.validateHostname() 2017-11-20 19:59:26 +01:00
Johannes Zellner
a2a1d842fa Add db migration scripts
This adds domains table and adjusts the apps and mailboxes table accordingly

Also ensure we explicitly set the table collation, this is required
for the foreign key from apps table (utf8) and the newly created
domains table, which by default now would be utf8mb4

Put db table constraint for mailboxes.domain

Update the schema file
2017-11-20 19:59:26 +01:00
Johannes Zellner
260ac0afb7 Remove subdomains.js in favor of multidomain capable domains.js 2017-11-20 19:59:26 +01:00
Johannes Zellner
fb9372d93e Remove unused dns config change event 2017-11-20 19:59:26 +01:00
Johannes Zellner
eb65f9e758 Remove default settings key for DNS_CONFIG 2017-11-20 19:59:26 +01:00
Johannes Zellner
3265d7151c Migrate dns test to domains.js 2017-11-20 19:59:26 +01:00
Johannes Zellner
597af2e034 Do not send obsolete settings.dnsConfig with alive status 2017-11-20 19:59:26 +01:00
Johannes Zellner
0b8f0bf731 Remove subdomains usage in cloudron.js 2017-11-20 19:59:26 +01:00
Johannes Zellner
a7e10cead0 Use domains api in platform 2017-11-20 19:59:26 +01:00
Johannes Zellner
0e74a6df35 Deprecate dns settings api and add dns data migration 2017-11-20 19:59:26 +01:00
Johannes Zellner
3fbaa385c4 Add DNS record specific functions to domains.js 2017-11-20 19:59:26 +01:00
Johannes Zellner
29637bb4f4 Add basic domain setting validation 2017-11-20 19:59:26 +01:00
Johannes Zellner
9dba816711 Add domain routes 2017-11-20 19:59:26 +01:00
Johannes Zellner
9155f49d4c Add domaindb logic 2017-11-20 19:59:26 +01:00
Johannes Zellner
0e62780f55 Add domains table 2017-11-20 19:59:26 +01:00
Girish Ramakrishnan
998bc36673 remove manifest arg to backupApp 2017-11-19 17:58:04 -08:00
Girish Ramakrishnan
c2dbc40473 Move version to the top 2017-11-19 16:36:00 -08:00
Girish Ramakrishnan
cd5a14ce47 Use date object instead of string 2017-11-19 16:11:51 -08:00
Girish Ramakrishnan
917122c812 display last updated in app info 2017-11-19 13:20:20 -08:00
Girish Ramakrishnan
21b8b8deba Fix many links in the readme 2017-11-19 12:16:04 -08:00
Girish Ramakrishnan
44c2aedb57 1.8.2 changes 2017-11-18 02:19:17 -08:00
Girish Ramakrishnan
7e6a83df84 Fix migration callback 2017-11-18 02:11:00 -08:00
Girish Ramakrishnan
ec4910a45e Fix restore 2017-11-17 22:35:56 -08:00
Girish Ramakrishnan
6558c78094 change the json blobs to text 2017-11-17 15:52:40 -08:00
Girish Ramakrishnan
5df92d1903 remove dead code 2017-11-17 15:18:06 -08:00
Girish Ramakrishnan
05affa7d26 remove dead code 2017-11-17 15:17:50 -08:00
Girish Ramakrishnan
46c6c5a5a8 remove double .js 2017-11-17 14:50:53 -08:00
Girish Ramakrishnan
75da751c72 1.8.1 changes 2017-11-17 14:50:53 -08:00
Johannes Zellner
b84f60671e Also fix the restoreConfigJson migration down script 2017-11-17 23:45:22 +01:00
Johannes Zellner
8dcb06cb02 Fix db migration down step for newConfigJson change 2017-11-17 23:41:22 +01:00
Girish Ramakrishnan
83bf739081 Update the license 2017-11-17 10:46:12 -08:00
Girish Ramakrishnan
48a52fae2e LE agreement URL has changed 2017-11-17 10:35:58 -08:00
Girish Ramakrishnan
0ddbda6068 Fix crash 2017-11-16 15:11:12 -08:00
Girish Ramakrishnan
360fa058ea store format information for restoring
fixes #483
2017-11-16 15:01:27 -08:00
Johannes Zellner
489d2022e6 Do not underline errored links 2017-11-16 23:18:50 +01:00
Girish Ramakrishnan
f762d0c0a1 newConfig -> updateConfig 2017-11-16 12:36:07 -08:00
Girish Ramakrishnan
98cad0678d Handle json parse errors with new body-parser module 2017-11-16 11:47:17 -08:00
Girish Ramakrishnan
92acb2954f Rename restoreConfig to manifest in backup table
Only the manifest needs to be preserved in the backup table
2017-11-16 11:25:40 -08:00
Girish Ramakrishnan
00a6e4c982 Show doc url in info dialog
Fixes #486
2017-11-16 10:05:49 -08:00
Girish Ramakrishnan
bf9eb4bd87 Switch the default to logs to show some useful information 2017-11-16 10:05:49 -08:00
Girish Ramakrishnan
2f4940acbd update modules 2017-11-16 09:34:00 -08:00
Girish Ramakrishnan
9f7ca552a6 handle various appstore errors 2017-11-16 00:23:34 -08:00
Girish Ramakrishnan
4272d5be8a Send feedback via API
Fixes #484
2017-11-15 23:31:13 -08:00
Girish Ramakrishnan
1babfb6e87 Allow admins to access all apps
Fixes #420
2017-11-15 19:24:11 -08:00
Girish Ramakrishnan
5663cf45f8 remove redundant reset 2017-11-15 19:08:38 -08:00
Girish Ramakrishnan
d8cb2d1d25 test: reset is already part of setup 2017-11-15 18:56:27 -08:00
Girish Ramakrishnan
174a60bb07 fix linter warnings 2017-11-15 18:56:27 -08:00
Girish Ramakrishnan
3d7094bf28 Handle error in uploadFile 2017-11-15 18:45:23 -08:00
Girish Ramakrishnan
4d6616930a Fix failing test 2017-11-15 18:41:37 -08:00
Girish Ramakrishnan
24875ba292 Handle all errors and set focus correctly
Fixes #485
2017-11-14 18:26:42 -08:00
Johannes Zellner
c58b2677b6 Fixup config tests and do not allow saving random values to the config file
Those will eventually be overwritten by start.sh anyways, we cannot rely
on those
2017-11-15 02:41:40 +01:00
Johannes Zellner
25146e1134 Allow tests to work without a cloudron.conf on disk 2017-11-15 02:40:50 +01:00
Johannes Zellner
c0c35964fe Fix backups tests 2017-11-15 02:29:58 +01:00
Johannes Zellner
0bf9ab0a2b No need to put static database config in cloudron.conf 2017-11-15 02:29:36 +01:00
Johannes Zellner
6d86f4cbda Ensure we only save relevant config values 2017-11-15 02:29:07 +01:00
Girish Ramakrishnan
d2741bbeb9 Allow mailTo to be configurable
Part of #485
2017-11-14 16:24:34 -08:00
Girish Ramakrishnan
690d02a353 Always show the DNS records in the UI 2017-11-14 15:13:56 -08:00
Johannes Zellner
c629db9597 Remove preinstall app bundle support 2017-11-14 23:09:17 +01:00
Aleksandr Bogdanov
994f771d4d Merge remote-tracking branch 'origin/master' into feature/gcs 2017-11-14 20:16:12 +01:00
Girish Ramakrishnan
67fcf85abb Allow restore if already restoring 2017-11-13 18:43:36 -08:00
Girish Ramakrishnan
527eace8f8 Fix j2xml usage 2017-11-13 11:10:42 -08:00
Girish Ramakrishnan
e65230b833 update many dev modules 2017-11-13 10:57:36 -08:00
Girish Ramakrishnan
3e8334040b Update many node modules
also, use rimraf instead of del
2017-11-13 10:57:32 -08:00
Girish Ramakrishnan
2bcd3a8e4d Add a hack to stretch the multi-select box a bit 2017-11-12 02:50:28 -08:00
Girish Ramakrishnan
e75b85fc3a Bump postgresql container to workaround shm issues
reconfiguring the postgresql configuring seems to fix some shm
issues on docker upgrade
2017-11-11 20:52:34 -08:00
Girish Ramakrishnan
c4362d3339 Fix failing ldap test 2017-11-11 17:33:27 -08:00
Girish Ramakrishnan
85e492a632 Fix detection of container id from IP
https://docs.docker.com/engine/api/v1.32/#tag/Network

"Note that it uses a different, smaller representation of a network
than inspecting a single network. For example, the list of containers
attached to the network is not propagated in API versions 1.28 and up."

Verified using:

curl --unix-socket /var/run/docker.sock http::/networks/cloudron
2017-11-11 16:55:43 -08:00
Girish Ramakrishnan
b8d4b67043 update aws-sdk and dockerode 2017-11-11 16:38:40 -08:00
Girish Ramakrishnan
ffacd31259 bump the node version 2017-11-11 16:25:42 -08:00
Johannes Zellner
19f6da88da Do not disable access control elements if no group was created
There are still users to be selected
2017-11-12 00:09:05 +01:00
Girish Ramakrishnan
c0faae4e27 Add more changes for 1.8.0 2017-11-11 11:14:42 -08:00
Girish Ramakrishnan
a19c566eea Always show info box that displays app version
Fixes #478
2017-11-11 11:09:59 -08:00
Girish Ramakrishnan
3ec806452c Update node to 6.11.5 2017-11-10 19:25:08 -08:00
Girish Ramakrishnan
0c73cd5219 Update docker to 17.09 2017-11-10 18:49:28 -08:00
Girish Ramakrishnan
9b6bf719ff 1.7.8 changes 2017-11-09 09:40:26 -08:00
Girish Ramakrishnan
25431d3cc4 Fix the spacing 2017-11-09 09:29:42 -08:00
Girish Ramakrishnan
e0805df3b1 Only show backup warning if using default location 2017-11-09 09:09:39 -08:00
Girish Ramakrishnan
8392fec570 Remove the bold 2017-11-08 20:57:40 -08:00
Girish Ramakrishnan
1c173ca83f Add UI to select users for access restriction 2017-11-08 20:54:38 -08:00
Girish Ramakrishnan
05a67db761 backup must be stored in ext4
Other file systems like FAT/CIFS can error with cryptic error messages
when saving filenames with special characters such as ':'
2017-11-08 12:26:25 -08:00
Girish Ramakrishnan
bb24d5cf9e Order eventlog entries by time 2017-11-08 09:14:55 -08:00
Girish Ramakrishnan
8d2fbe931f Bump max limit to two times ram
part of #466
2017-11-07 10:07:05 -08:00
Girish Ramakrishnan
0a8adaac9f filter out empty usernames from groups
Fixes #472
2017-11-06 11:09:40 -08:00
Girish Ramakrishnan
fa6d151325 Fix update mail templates 2017-11-02 21:34:03 -07:00
Girish Ramakrishnan
a7296a0339 Rename filename to backupId in backup eventlog 2017-11-02 18:17:08 -07:00
Girish Ramakrishnan
a6aee53ec2 Filter out failed backups 2017-11-02 18:13:51 -07:00
Girish Ramakrishnan
963ab2e791 More 1.7.7 changes 2017-11-02 16:30:13 -07:00
Girish Ramakrishnan
ca724b8b03 Add cert renewal and user add/remove in weekly digest 2017-11-02 16:30:10 -07:00
Girish Ramakrishnan
88a929c85e Instead of appstore account, include owner alternate email 2017-11-02 15:10:05 -07:00
Girish Ramakrishnan
2bc0270880 1.7.7 changes 2017-11-02 12:18:51 -07:00
Girish Ramakrishnan
014b77b7aa Fix LE cert renewal failures
LE contacts the server by hostname and not by IP. This means that
when installing and reconfiguring the app it hits the default_server
route since nginx configs for the app are not generated at.

When doing in the daily cert renew, the nginx configs exist and we
are unable to renew the certs.
2017-11-02 11:43:43 -07:00
Girish Ramakrishnan
06f8aa8f29 Remove dead code
getNonApprovedCode code flow is ununsed (and broken by design on
the appstore side).
2017-11-02 10:36:30 -07:00
Girish Ramakrishnan
a8c64bf9f7 Clarify heartbeat code
heartbeats are not sent for self-hosted cloudrons (only managed ones)
2017-11-02 10:26:21 -07:00
Girish Ramakrishnan
41ef16fbec link to memory limit docs 2017-11-01 09:25:05 -07:00
Girish Ramakrishnan
2a848a481b Add newline 2017-11-01 09:25:05 -07:00
Johannes Zellner
3963d76a80 The update dialog does not contain a form anymore
Fixes #467
2017-11-01 11:55:06 +01:00
Girish Ramakrishnan
8ede37a43d Make the dkim selector dynamic
it has to change with the adminLocation so that multiple cloudrons
can send out emails at the same time.
2017-10-31 12:18:40 -07:00
Girish Ramakrishnan
36534f6bb2 Fix indent 2017-10-31 12:12:02 -07:00
Girish Ramakrishnan
7eddcaf708 Allow setting app memory till memory limit
Fixes #466
2017-10-31 12:12:02 -07:00
Aleksandr Bogdanov
2cad93dfd2 Fixing UI to not require credentials be set (GCP use-case has no credentials field) 2017-10-31 12:33:15 +01:00
Aleksandr Bogdanov
9b1f8febf1 Fixing listDir to support batchSize = -1 for non-chunked listings. Also strings extrapolation fix (ES6) 2017-10-31 11:40:00 +01:00
Girish Ramakrishnan
d8d2572aa1 Keep restarting mysql until it succeeds
MySQL restarts randomly fail on our CI systems. This is easily
reproducible:

root@smartserver:~# cp /tmp/mysql.cnf . && systemctl restart mysql && echo "Yes"
Yes
root@smartserver:~# cp /tmp/mysql.cnf . && systemctl restart mysql && echo "Yes"
Yes
root@smartserver:~# cp /tmp/mysql.cnf . && systemctl restart mysql && echo "Yes"
Job for mysql.service failed. See "systemctl status mysql.service" and "journalctl -xe" for details.

There also seems some apparmor issue:
[ 7389.111704] audit: type=1400 audit(1509404778.110:829): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/node/" pid=15618 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=112 ouid=0

The apparmor issue is reported in https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1610765,
https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1658233 and
https://bugs.launchpad.net/ubuntu/+source/apparmor/+bug/1658239
2017-10-30 16:14:20 -07:00
Girish Ramakrishnan
96a98a74ac Move the mysql block
The e2e is failing sporadically with:

==> Changing ownership
==> Adding automated configs
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

Maybe the dhparam creation is doing something causing mysql to not respond.
2017-10-30 08:03:47 -07:00
Girish Ramakrishnan
d0a244e392 stash adminLocation also 2017-10-29 19:09:03 -07:00
Girish Ramakrishnan
f09c89e33f Remove confusing batchSize logic from listDir
This also fixes a bug in removeDir in DO spaces

thanks to @syn for reporting
2017-10-29 19:04:10 -07:00
Johannes Zellner
d53f0679e5 Also stash the zoneName to settings 2017-10-29 22:40:15 +01:00
Girish Ramakrishnan
527093ebcb Stash the fqdn in the db for the next multi-domain release 2017-10-29 12:08:27 -07:00
Girish Ramakrishnan
bd5835b866 send adminFqdn as well 2017-10-29 09:36:51 -07:00
Aleksandr Bogdanov
51ca1c7384 Refactoring gcs to match the new storage interface 2017-10-29 11:10:50 +01:00
Girish Ramakrishnan
6dd70c0ef2 acme challenges must be answered by default_server
The challenge must be answered even before app nginx config
is available.
2017-10-28 23:39:03 -07:00
Girish Ramakrishnan
acc90e16d7 1.7.6 changes 2017-10-28 21:07:44 -07:00
Girish Ramakrishnan
4b3aca7413 Bump mail container for sogo disconnect fix 2017-10-28 20:58:26 -07:00
Johannes Zellner
8daee764d2 Only require gcdns form input to be valid if that provider is selected 2017-10-28 22:37:56 +02:00
Aleksandr Bogdanov
8d14832c6a Making gcdns credentials field optional in webadmin 2017-10-28 15:14:23 +02:00
Aleksandr Bogdanov
051d04890b Adding Google Cloud Storage support 2017-10-28 15:14:23 +02:00
Girish Ramakrishnan
3dedda32d4 Configure http server to only listen on known vhosts/IP
For the rest it returns 404

Fixes #446
2017-10-27 00:10:50 -07:00
Girish Ramakrishnan
d127b25f0f Only set the custom https agent for HTTPS minio
Otherwise, we get a Cannot set property ‘agent’ of undefined error
2017-10-26 18:38:45 -07:00
Johannes Zellner
6a2b0eedb3 Add ldap pagination support 2017-10-27 01:25:07 +02:00
Girish Ramakrishnan
8c81a97a4b Check that the backup location has perms to create a directory
The backup itself runs as root and this works fine. But when rotating
the backup, the copy fails because it is unable to create a directory.
2017-10-26 11:41:34 -07:00
Girish Ramakrishnan
d9ab1a78d5 Make the my location customizable
Fixes #22
2017-10-25 23:00:43 -07:00
Girish Ramakrishnan
593df8ed49 Do not use ADMIN_LOCATION in tests 2017-10-25 21:38:11 -07:00
Girish Ramakrishnan
b30def3620 move prerelease check to appstore 2017-10-25 21:34:56 -07:00
Johannes Zellner
9c02785d49 Support ldap group compare
Fixes #463
2017-10-24 02:00:00 +02:00
Johannes Zellner
f747343159 Cleanup unused port bindings after an update 2017-10-23 22:11:33 +02:00
Johannes Zellner
2971910ccf Do not accept port bindings on update route 2017-10-23 22:06:28 +02:00
Johannes Zellner
56534b9647 Add appdb.delPortBinding() 2017-10-23 22:05:43 +02:00
Johannes Zellner
a8d26067ee Allow autoupdates if new ports are added
Those will simply be disabled after update and the user has to
enable them through the app configuration
2017-10-20 22:27:48 +02:00
Johannes Zellner
4212e4bb00 Do not show any port binding update ui 2017-10-20 22:27:48 +02:00
Johannes Zellner
7b27ace7bf Update cloudron-setup help url 2017-10-20 22:13:54 +02:00
Girish Ramakrishnan
d8944da68d 1.7.5 changes 2017-10-19 12:19:10 -07:00
Girish Ramakrishnan
433d797cb7 Add SMTPS port for apps that require TLS connections for mail relay 2017-10-19 12:15:28 -07:00
Girish Ramakrishnan
0b1d940128 cloudscale -> cloudscale.ch 2017-10-19 07:28:07 -07:00
Johannes Zellner
6016024026 Move restore functions into appropriate scope object 2017-10-18 00:40:02 +02:00
Johannes Zellner
e199293229 Further reduce ui flickering on restore 2017-10-18 00:40:02 +02:00
Girish Ramakrishnan
2ebe92fec3 Do not chown mail directory 2017-10-16 23:18:37 -07:00
Girish Ramakrishnan
628cf1e3de bump mail container for superfluous sa-update supervisor file 2017-10-16 21:16:58 -07:00
Girish Ramakrishnan
9e9aaf68f0 No need to migrate mail data anymore 2017-10-16 21:13:57 -07:00
Girish Ramakrishnan
b595ca422c 1.7.4 changes 2017-10-16 15:28:36 -07:00
Girish Ramakrishnan
9273a6c726 Add option to disable hardlinks
We can probably remove this later based on the use
2017-10-16 15:22:40 -07:00
Johannes Zellner
76d00d4e65 Render changelog markdown as html in app update dialog 2017-10-17 00:07:58 +02:00
Johannes Zellner
668c03a11b Give visual feedback in the restore dialog when fetching backups 2017-10-16 22:31:49 +02:00
Girish Ramakrishnan
1e72d2d651 remove debugs (too noisy) 2017-10-16 12:34:09 -07:00
Girish Ramakrishnan
89fc8efc67 Save as empty array if find output is empty 2017-10-16 10:54:48 -07:00
Girish Ramakrishnan
241dbf160e Remove Unused required 2017-10-15 14:07:03 -07:00
Girish Ramakrishnan
e46bdc2caa Force the copy just like tar --overwrite 2017-10-13 23:23:36 -07:00
Girish Ramakrishnan
e1cb91ca76 bump mail container 2017-10-13 22:36:54 -07:00
Girish Ramakrishnan
709c742c46 Fix tests 2017-10-12 21:14:13 -07:00
Girish Ramakrishnan
ecad9c499c Port binding conflict can never happen in update route 2017-10-12 21:04:38 -07:00
Girish Ramakrishnan
ed0879ffcd Stop the app only after the backup completed
App backup can take a long time or possibly not work at all. For such
cases, do not stop the app or leave it in some errored state.

newConfigJson is the new config to be updated to. This ensures that
the db has correct app info during the update.
2017-10-12 18:10:41 -07:00
Girish Ramakrishnan
61e2878b08 save/restore exec bit in files
this covers the case where user might stash some executable files
that are used by plugins.
2017-10-12 16:18:11 -07:00
Girish Ramakrishnan
d97034bfb2 Follow backup format for box backups as well 2017-10-12 11:02:52 -07:00
Girish Ramakrishnan
21942552d6 Clarify the per-app backup flag 2017-10-12 11:02:52 -07:00
Girish Ramakrishnan
dd68c8f91f Various backup fixes 2017-10-12 11:02:48 -07:00
Girish Ramakrishnan
28ce5f41e3 handle errors in log stream 2017-10-11 12:55:56 -07:00
Girish Ramakrishnan
5694e676bd Set default rentention to a week 2017-10-11 12:55:55 -07:00
Girish Ramakrishnan
db8c5a116f Typo 2017-10-11 10:30:03 -07:00
Girish Ramakrishnan
fa39f0fbf3 Add 1.7.3 changes 2017-10-11 00:50:41 -07:00
Girish Ramakrishnan
1444bb038f only upload needs to be retried
copy/delete are already retried in the sdk code
2017-10-11 00:08:41 -07:00
Girish Ramakrishnan
ac9e421ecf improved backup progress and logging 2017-10-10 22:49:38 -07:00
Girish Ramakrishnan
b60cbe5a55 move constant 2017-10-10 19:47:21 -07:00
Girish Ramakrishnan
56d794745b Sprinkle retries in syncer logic 2017-10-10 14:25:03 -07:00
Girish Ramakrishnan
fd3b73bea2 typo in format name 2017-10-10 13:54:54 -07:00
Girish Ramakrishnan
78807782df Various hacks for exoscale-sos
SOS does not like multipart uploads. They just fail randomly.

As a fix, we try to detect filesystem files and skip multipart uploads
for files < 5GB. For > 5GB, we do multipart upload anyways (mostly fails).

The box backup is switched to flat-file for exoscale for the reason
above.
2017-10-10 11:03:20 -07:00
Girish Ramakrishnan
754b29b263 Start out empty if the previous run errored 2017-10-09 20:12:21 -07:00
Girish Ramakrishnan
9f97f48634 Add note on s3ForcePathStyle 2017-10-09 18:46:14 -07:00
Girish Ramakrishnan
815e5d9d9a graphs: Compute width of system graph from total memory
Fixes #452
2017-10-09 14:58:32 -07:00
Girish Ramakrishnan
91ec2eaaf5 sos: "/" must separate bucket and key name 2017-10-09 11:50:22 -07:00
Girish Ramakrishnan
f8d3a7cadd Bump mail container (fixes spam crash) 2017-10-06 16:45:21 -07:00
Girish Ramakrishnan
d04a09b015 Add note on bumping major infra version 2017-10-06 15:52:04 -07:00
Girish Ramakrishnan
5d997bcc89 Just mark DO Spaces as experimental instead 2017-10-06 14:45:14 -07:00
Girish Ramakrishnan
f0dd90a1f5 listObjectsV2 does not work on some S3 providers
specifically, cloudscale does not support it
2017-10-05 12:07:14 -07:00
Girish Ramakrishnan
ee8ee8e786 KeyCount is not set on some S3 providers 2017-10-05 11:36:54 -07:00
Girish Ramakrishnan
ee1a4411f8 Do not crash if prefix is empty string
('' || undefined) will return undefined ...
2017-10-05 11:08:01 -07:00
Girish Ramakrishnan
df6e6cb071 Allow s3 backend to accept self-signed certs
Fixes #316
2017-10-05 10:14:55 -07:00
Girish Ramakrishnan
ba5645a20e Disable DO spaces since it is not yet production ready 2017-10-05 09:21:26 -07:00
Girish Ramakrishnan
ca502a2d55 Display error code 2017-10-04 22:34:44 -07:00
Girish Ramakrishnan
ecd53b48db Display the backup format 2017-10-04 22:11:11 -07:00
Girish Ramakrishnan
b9efb0b50b Fix callback invokation 2017-10-04 19:28:40 -07:00
Johannes Zellner
3fb5034ebd Ensure we setup the correct OAuth redirectURI if altDomain is used 2017-10-05 01:10:25 +02:00
Girish Ramakrishnan
afed3f3725 Remove duplicate debug 2017-10-04 15:08:26 -07:00
Girish Ramakrishnan
b4f14575d7 Add 1.7.1 changes 2017-10-04 14:31:41 -07:00
Johannes Zellner
f437a1f48c Only allow dns setup with subdomain if enterprise query argument is provided 2017-10-04 22:25:14 +02:00
Girish Ramakrishnan
c3d7d867be Do not set logCallback 2017-10-04 12:32:12 -07:00
Girish Ramakrishnan
96c16cd5d2 remove debug 2017-10-04 11:54:17 -07:00
Girish Ramakrishnan
af182e3df6 caas: cache the creds, otherwise we bombard the server 2017-10-04 11:49:38 -07:00
Girish Ramakrishnan
d70ff7cd5b Make copy() return event emitter
This way the storage logic does not need to rely on progress
2017-10-04 11:02:50 -07:00
Johannes Zellner
38331e71e2 Ensure all S3 CopySource properties are URI encoded 2017-10-04 19:07:08 +02:00
Johannes Zellner
322a9a18d7 Use multipart copy for s3 and files larger than 5GB 2017-10-04 18:56:23 +02:00
Johannes Zellner
423ef546a9 Merge branch 'user_agent' into 'master'
Added user agent to health checks

See merge request !19
2017-10-04 11:48:02 +00:00
Dennis Schwerdel
e3f3241966 Added user agent to health checks 2017-10-04 13:05:00 +02:00
Johannes Zellner
eaef384ea5 Improve the invite link display
Fixes #445
2017-10-04 13:03:32 +02:00
Girish Ramakrishnan
b85bc3aa01 s3: Must encode copySource
https://github.com/aws/aws-sdk-js/issues/1302
2017-10-03 15:51:05 -07:00
Girish Ramakrishnan
01154d0ae6 s3: better error messages 2017-10-03 14:46:59 -07:00
Girish Ramakrishnan
6494050d66 Make removeDir less noisy 2017-10-03 01:22:37 -07:00
Girish Ramakrishnan
8c7223ceed Fix cleanup logic to use the app backup format
box backup and app backup can have different format
2017-10-03 00:56:34 -07:00
Girish Ramakrishnan
21afc71d89 add tests for storage backends 2017-10-02 23:08:16 -07:00
Girish Ramakrishnan
7bf70956a1 fix tests 2017-10-02 18:42:13 -07:00
Girish Ramakrishnan
9e9b8b095e Provider dhparams.pem to the mail container 2017-10-02 01:51:28 -07:00
Girish Ramakrishnan
0f543e6703 s3: add progress detail
this is a bit of a hack and we should add another way to set the progress
(maybe via backups.setProgress or via a progress callback). this is because
some methods like removeDir can be called from backuptask and from box code.
2017-10-01 18:25:51 -07:00
Girish Ramakrishnan
f9973e765c Add backup cleanup eventlog 2017-10-01 10:35:50 -07:00
Girish Ramakrishnan
e089851ae9 add debugs 2017-09-30 20:36:08 -07:00
Girish Ramakrishnan
c524d68c2f fix crash when cleaning up snapshots 2017-09-30 20:31:41 -07:00
Girish Ramakrishnan
5cccb50a31 fix backup cleanup logic 2017-09-30 18:38:45 -07:00
Girish Ramakrishnan
3d375b687a style: Fix quoting 2017-09-30 18:26:38 -07:00
Girish Ramakrishnan
a93d453963 rename flat-file to rsync
not a name I like but cannot come up with anything better

https://en.wikipedia.org/wiki/Flat_file_database

the term 'rsync format' seems to be used in a few places
2017-09-30 14:19:19 -07:00
Girish Ramakrishnan
f8ac2d4628 1.7.0 changes 2017-09-30 14:02:06 -07:00
Girish Ramakrishnan
d5ba73716b add emptydirs test 2017-09-29 15:29:22 -07:00
Girish Ramakrishnan
954224dafb make syncer track directories 2017-09-29 15:29:18 -07:00
Johannes Zellner
8b341e2bf8 Only make nginx listen on ipv6 connections if it is supported by the system
Could not decide on the ejs formatting, never nice for me
2017-09-29 19:43:37 +02:00
Johannes Zellner
78fb9401ee Add config.hasIPv6() 2017-09-29 19:43:37 +02:00
Girish Ramakrishnan
4a5cbab194 Do not remove parent directory in fs.remove()
Do the pruning in the cleanup logic instead
2017-09-28 20:55:45 -07:00
Girish Ramakrishnan
19999abc50 s3: fix restore 2017-09-28 14:35:49 -07:00
Girish Ramakrishnan
5123b669d7 remove options.concurrency 2017-09-28 12:20:15 -07:00
Girish Ramakrishnan
565c8445e1 make backup progress work for per-app backups 2017-09-28 11:17:48 -07:00
Girish Ramakrishnan
404a019c56 s3: Check IsTruncated before accessing Contents 2017-09-28 10:36:56 -07:00
Girish Ramakrishnan
24dee80aa6 Make box backups always tarball based
this makes cloudron easy to restore. in the future, if required,
we can move out the mail data as a separate virtual app backup
2017-09-28 10:22:10 -07:00
Girish Ramakrishnan
ce6df4bf96 Disable encryption for flat-file for now 2017-09-28 09:47:18 -07:00
Girish Ramakrishnan
f8f6c7d93e Add progress detail when rotating snapshots 2017-09-28 09:29:46 -07:00
Girish Ramakrishnan
bafc6dce98 s3: refactor out directory listing 2017-09-27 21:59:51 -07:00
Girish Ramakrishnan
56ee4d8e25 Remove old cache files when backup settings is changed 2017-09-27 21:04:46 -07:00
Girish Ramakrishnan
eeef221b4e Fix race where pipe finishes before file is created
When there are 0 length files, this is easily reproducible.
2017-09-27 19:40:26 -07:00
Girish Ramakrishnan
4674653982 compare size and inode as well 2017-09-27 19:39:03 -07:00
Girish Ramakrishnan
a34180c27b Add format to backupsdb
Call remove/removeDir based on the format
2017-09-27 18:02:30 -07:00
Girish Ramakrishnan
aa8ce2c62e Use graphite 0.12.0
this fixes an issue where carbon does not startup properly
if a previous pid file was present
2017-09-27 15:35:55 -07:00
Girish Ramakrishnan
b3c6b8aa15 do not spawn process just for chown 2017-09-27 15:07:19 -07:00
Girish Ramakrishnan
44a7a2579c rework backup status
* show backup progress even if not initiated by UI
* display backup progress in separate line
2017-09-27 15:07:15 -07:00
Girish Ramakrishnan
39f0e476f2 Start out empty if cache file is missing 2017-09-27 12:09:19 -07:00
Girish Ramakrishnan
003dc0dbaf Add todo 2017-09-27 11:50:49 -07:00
Girish Ramakrishnan
e39329218d Make tests work 2017-09-27 11:38:43 -07:00
Girish Ramakrishnan
8d3fbc5432 Save backup logs and fix backup progress 2017-09-26 21:09:00 -07:00
Girish Ramakrishnan
2780de631e writable streams emit finish 2017-09-26 16:43:51 -07:00
Girish Ramakrishnan
399c756735 use exec so that filenames do not have to be escaped 2017-09-26 15:53:42 -07:00
Girish Ramakrishnan
859311f9e5 Process delete commands before add commands
This is required for cases where a dir becomes a file (or vice-versa)
2017-09-26 15:33:54 -07:00
Girish Ramakrishnan
a9e89b57d9 merge caas storage into s3 backend 2017-09-26 12:28:33 -07:00
Girish Ramakrishnan
4e68abe51d Handle fs errors 2017-09-26 12:10:58 -07:00
Girish Ramakrishnan
12083f5608 Ignore all special files 2017-09-26 11:41:01 -07:00
Girish Ramakrishnan
d1efb2db56 remove bogus mkdir 2017-09-26 11:34:24 -07:00
Girish Ramakrishnan
adde28523f Add backup format to the backup UI 2017-09-26 10:46:02 -07:00
Girish Ramakrishnan
f122f46fe2 Generate new index file by appending to file 2017-09-26 07:57:20 -07:00
Girish Ramakrishnan
ad7fadb4a9 display backup id in the ui 2017-09-26 07:45:23 -07:00
Johannes Zellner
be383582e0 Do not rely on external resource in the appstatus page 2017-09-26 15:33:05 +02:00
Girish Ramakrishnan
0a60365143 Initial version of flat-file uploader 2017-09-26 00:17:11 -07:00
Girish Ramakrishnan
2f6cb3e913 set format in the backup ui 2017-09-26 00:01:36 -07:00
Girish Ramakrishnan
b0f85678d4 Implement downloadDir for flat-file format 2017-09-23 18:07:26 -07:00
Girish Ramakrishnan
e43413e063 implement remove dir in storage backends 2017-09-23 12:34:51 -07:00
Girish Ramakrishnan
e39a5c8872 preserve env in backuptask.js 2017-09-22 11:19:44 -07:00
Girish Ramakrishnan
fb4b75dd2a Fix typo in comment 2017-09-22 11:19:37 -07:00
Girish Ramakrishnan
3c1ccc5cf4 Add exoscale provider 2017-09-21 17:50:03 -07:00
Girish Ramakrishnan
abd66d6524 Add cloudscale as a provider 2017-09-21 17:49:26 -07:00
Girish Ramakrishnan
b61b7f80b5 Add DO spaces 2017-09-21 12:25:39 -07:00
Girish Ramakrishnan
efa850614d Add a s3-v4-compat provider 2017-09-21 12:13:45 -07:00
Girish Ramakrishnan
21c534c806 Ensure format is set in backupConfig 2017-09-21 09:49:55 -07:00
Girish Ramakrishnan
7e4ff2440c Fix text for manual DNS 2017-09-21 09:10:12 -07:00
Johannes Zellner
f415e19f6f Do not unneccesarily mention error in the logs
Not so friendly for log searches
2017-09-21 15:00:35 +02:00
Girish Ramakrishnan
97da8717ca Refactor backup strategy logic into backups.js 2017-09-20 14:09:55 -07:00
Girish Ramakrishnan
cbddb79d15 Resolve the id in rotateAppBackup 2017-09-20 09:38:55 -07:00
Johannes Zellner
bffb935f0f Also send digest to appstore account owner 2017-09-20 16:33:25 +02:00
Johannes Zellner
e50e0f730b Make nginx listen on :: for ipv6 2017-09-20 16:33:25 +02:00
Girish Ramakrishnan
26f33a8e9b Send resolved path to the storage APIs 2017-09-19 21:58:35 -07:00
Girish Ramakrishnan
952b1f6304 Make backuptask call back into backups.js 2017-09-19 20:27:49 -07:00
Girish Ramakrishnan
a3293c4c35 Fix tests 2017-09-19 12:43:13 -07:00
Girish Ramakrishnan
4892473eff backupIds do not have extension anymore
this code existed for legacy reasons
2017-09-19 12:34:09 -07:00
Girish Ramakrishnan
221d5f95e1 ensure backupFolder is always set 2017-09-19 12:34:09 -07:00
Girish Ramakrishnan
84649b9471 Bring back backuptask
This is required for various small reasons:

* dir iteration with a way to pass messagein back to the upload() easily
* can be killed independently of box code
* allows us to run sync (blocking) commands in the upload logic
2017-09-19 12:32:38 -07:00
Girish Ramakrishnan
44435559ab Typo 2017-09-19 10:37:45 -07:00
Girish Ramakrishnan
c351660a9a Implement backup rotation
Always upload to 'snapshot' dir and then rotate it. This will allow
us to keep pushing incrementally to 'snapshot' and do server side
rotations.
2017-09-18 21:17:34 -07:00
Girish Ramakrishnan
0a24130fd4 Just reset config instead of clearing cache 2017-09-18 19:41:15 -07:00
Girish Ramakrishnan
ea13f8f97e Fix checkInstall script 2017-09-18 18:19:27 -07:00
Johannes Zellner
d00801d020 Only require service account key for google dns on setup 2017-09-18 23:50:34 +02:00
Girish Ramakrishnan
8ced0aa78e copy: use hardlinks to preserve space 2017-09-18 14:29:48 -07:00
Girish Ramakrishnan
f5d32a9178 copyBackup -> copy 2017-09-18 14:29:15 -07:00
Girish Ramakrishnan
7fc45b3215 Refactor out the backup snapshot logic 2017-09-18 12:43:11 -07:00
Girish Ramakrishnan
9bed14a3e8 Enable IP6 in unbound
On some provider (https://www.nine.ch) disabling IPv6 makes unbound
not respond to the DNS queries.

Also, I was unable to test with prefer-ip6 to 'no' because unbound fails:

unbound[5657]: /etc/unbound/unbound.conf.d/cloudron-network.conf:8: error: unknown keyword 'no'
unbound[5657]: read /etc/unbound/unbound.conf failed: 3 errors in configuration file
2017-09-18 11:41:02 -07:00
Girish Ramakrishnan
71233ecd95 Fix undefined variable 2017-09-18 11:14:04 -07:00
Girish Ramakrishnan
02097298c6 Fix indentation 2017-09-18 10:38:30 -07:00
Girish Ramakrishnan
be03dd0821 remove unused require 2017-09-18 10:38:26 -07:00
Girish Ramakrishnan
5b77d2f0cf Add commented out debugging section for unbound 2017-09-18 10:38:22 -07:00
Girish Ramakrishnan
781f543e87 Rename API calls in the storage backend 2017-09-17 18:50:29 -07:00
Girish Ramakrishnan
6525a467a2 Rework backuptask into tar.js
This makes it easy to integrate another backup strategy
as the next step
2017-09-17 18:50:26 -07:00
Girish Ramakrishnan
6cddd61a24 Fix style 2017-09-17 18:50:23 -07:00
Girish Ramakrishnan
b0ee116004 targz: make sourceDir a string 2017-09-17 18:50:15 -07:00
Girish Ramakrishnan
867a59d5d8 Pull it all to left 2017-09-15 15:47:37 -07:00
Girish Ramakrishnan
6f5085ebc3 Downcase email 2017-09-15 15:45:26 -07:00
Johannes Zellner
e8a93dcb1b Add button to send test email
Fixes #419
2017-09-15 14:42:12 +02:00
Girish Ramakrishnan
09fe957cc7 style 2017-09-15 02:07:06 -07:00
Girish Ramakrishnan
020ccc8a99 gcdns: fix update/del confusion
in the DNS api, we always update/del all records of same type
2017-09-15 01:54:39 -07:00
Girish Ramakrishnan
7ed304bed8 Fix cloudflare domain display 2017-09-15 00:50:29 -07:00
Girish Ramakrishnan
db1e39be11 Do not overwrite subdomain when location was changed
* Install in subdomain 'test'
* Move to subdomain 'test2'
* Move to another existing subdomain 'www' (this should be detected as conflict)
* Move to subdomain 'www2' (this should not remove 'www'). This is why dnsRecordId exists.
2017-09-14 22:31:48 -07:00
Girish Ramakrishnan
f163577264 Typo 2017-09-14 18:38:48 -07:00
Girish Ramakrishnan
9c7080aea1 Show email text for gcdns 2017-09-14 18:33:07 -07:00
Girish Ramakrishnan
c05a7c188f Coding style fixes 2017-09-14 18:15:59 -07:00
Girish Ramakrishnan
72e912770a translate network errors to SubdomainError
fixes #391
2017-09-14 16:14:16 -07:00
Girish Ramakrishnan
28c06d0a72 bump mail container 2017-09-14 12:07:53 -07:00
Girish Ramakrishnan
9805daa835 Add google-cloud/dns to shrinkwrap 2017-09-14 10:45:04 -07:00
Girish Ramakrishnan
a920fd011c Merge branch 'feature/gcdns' into 'master'
Adding Google Cloud DNS support

See merge request !17
2017-09-14 17:44:20 +00:00
Girish Ramakrishnan
1b979ee1e9 Send rbl status as part of email check 2017-09-13 23:58:54 -07:00
Girish Ramakrishnan
70eae477dc Fix logstream test 2017-09-13 23:01:04 -07:00
Girish Ramakrishnan
c16f7c7891 Fix storage tests 2017-09-13 22:50:38 -07:00
Girish Ramakrishnan
63b8a5b658 Add update pattern of wednesday night
Fixes #432, #435
2017-09-13 14:52:31 -07:00
Aleksandr Bogdanov
c0bf51b79f A bit more polish 2017-09-13 21:17:40 +02:00
Aleksandr Bogdanov
3d4178b35c Adding Google Cloud DNS to "setupdns" stage 2017-09-13 21:00:29 +02:00
Aleksandr Bogdanov
34878bbc6a Make sure we don't touch records which are not managed by cloudron, but are in the same zone 2017-09-13 20:53:38 +02:00
Girish Ramakrishnan
e78d976c8f Fix backup mapping (mail dir has moved) 2017-09-13 09:51:20 -07:00
Girish Ramakrishnan
ba9662f3fa Add 1.6.5 changes 2017-09-12 22:32:57 -07:00
Girish Ramakrishnan
c8750a3bed merge the logrotate scripts 2017-09-12 22:03:24 -07:00
Girish Ramakrishnan
9710f74250 remove collectd stats when app is uninstalled 2017-09-12 21:34:15 -07:00
Girish Ramakrishnan
52095cb8ab add debugs for timing backup and restore 2017-09-12 15:37:35 -07:00
Aleksandr Bogdanov
c612966b41 Better validation 2017-09-12 22:47:46 +02:00
Aleksandr Bogdanov
90cf4f0784 Allowing to select a service account key as a file for gcdns 2017-09-12 22:35:40 +02:00
Aleksandr Bogdanov
ec93d564e9 Adding Google Cloud DNS to webadmin 2017-09-12 19:03:23 +02:00
Aleksandr Bogdanov
37f9e60978 Fixing verifyDns 2017-09-12 16:29:07 +02:00
Johannes Zellner
ca199961d5 Make settings.value field TEXT
We already store JSON blobs there and the gce dns backend
will require a larger blob for a certificate.
Since we use innodb the storage format in TEXT will only be different
if the data is large
2017-09-11 15:41:07 +02:00
Girish Ramakrishnan
fd811ac334 Remove "cloudron" to fit in one line 2017-09-10 17:43:21 -07:00
Girish Ramakrishnan
609c1d3b78 bump mail container
this is also required since we moved the maildir
2017-09-10 00:07:48 -07:00
Girish Ramakrishnan
9906ed37ae Move mail data inside boxdata directory
This also makes the noop backend more useful because it will dump things
in data directory and user can back it up as they see fit.
2017-09-10 00:07:44 -07:00
Girish Ramakrishnan
dcdce6d995 Use MAIL_DATA_DIR constant 2017-09-09 22:24:16 -07:00
Girish Ramakrishnan
9026c555f9 snapshots dir is not used anymore 2017-09-09 22:13:15 -07:00
Girish Ramakrishnan
547a80f17b make shell.exec options non-optional 2017-09-09 19:54:31 -07:00
Girish Ramakrishnan
300d3dd545 remove unused requires 2017-09-09 19:23:22 -07:00
Aleksandr Bogdanov
6fce729ed2 Adding Google Cloud DNS 2017-09-09 17:45:26 +02:00
Girish Ramakrishnan
d233ee2a83 ask password only for destructive actions 2017-09-08 15:14:37 -07:00
Girish Ramakrishnan
3240a71feb wording 2017-09-08 14:42:54 -07:00
Girish Ramakrishnan
322be9e5ba Add ip blacklist check
Fixes #431
2017-09-08 13:29:32 -07:00
Girish Ramakrishnan
e67ecae2d2 typo 2017-09-07 22:01:37 -07:00
Girish Ramakrishnan
75b3e7fc78 resolve symlinks correctly for deletion
part of #394
2017-09-07 21:57:08 -07:00
Girish Ramakrishnan
74c8d8cc6b set label on the redis container
this ensures that redis is stopped when app is stopped and also
helps identifying app related containers easily
2017-09-07 20:09:46 -07:00
Girish Ramakrishnan
51659a8d2d set label on the redis container
this ensures that redis is stopped when app is stopped and also
helps identifying app related containers easily
2017-09-07 19:54:05 -07:00
Girish Ramakrishnan
70acf1a719 Allow app volumes to be symlinked
The initial plan was to make app volumes to be set using a database
field but this makes the app backups non-portable. It also complicates
things wrt to app and server restores.

For now, ignore the problem and let them be symlinked.

Fixes #394
2017-09-07 15:50:34 -07:00
Girish Ramakrishnan
8d2f3b0217 Add note on disabling ssh password auth 2017-09-06 11:36:23 -07:00
Girish Ramakrishnan
e498678488 Use node 6.11.3 2017-09-06 09:39:22 -07:00
Girish Ramakrishnan
513517b15e cf dns: filter by type and name in the REST API
Otherwise, we will have to implement pagination
2017-09-05 16:07:14 -07:00
Girish Ramakrishnan
a96f8abaca DO DNS: list all pages of the domain 2017-09-05 15:52:59 -07:00
Johannes Zellner
f7bcd54ef5 Better ui feedback on the repair mode 2017-09-05 23:11:04 +02:00
Johannes Zellner
d58e4f58c7 Add hook to react whenever apps have changed 2017-09-05 23:10:45 +02:00
Girish Ramakrishnan
45f0f2adbe Fix wording 2017-09-05 10:38:33 -07:00
Johannes Zellner
36c72dd935 Sendgrid only has an api key similar postmark
Fixes #411
2017-09-05 11:28:28 +02:00
Girish Ramakrishnan
df9e2a7856 Use robotsTxt in install route 2017-09-04 12:59:14 -07:00
Girish Ramakrishnan
2b043aa95f remove unused require 2017-09-04 12:59:05 -07:00
Johannes Zellner
c0a09d1494 Add 1.6.4 changes 2017-09-04 18:53:11 +02:00
Johannes Zellner
1c5c4b5705 Improve overflow handling in logs and terminal view 2017-09-04 18:40:16 +02:00
Girish Ramakrishnan
b56dcaac68 Only run scheduler when app is healthy
Fixes #393
2017-09-03 18:21:13 -07:00
Girish Ramakrishnan
fd91ccc844 Update the unbound anchor key
This helps the unbound recover from any previous out of disk space
situation.

part of #269
2017-09-03 17:48:26 -07:00
Johannes Zellner
fca1a70eaa Add initial repair button alongside webterminal
Part of #416
2017-09-01 20:08:22 +02:00
Johannes Zellner
ed81b7890c Fixup the test for the password requirement change 2017-09-01 20:08:22 +02:00
Johannes Zellner
cb8dcbf3dd Lift the password requirement for app configure/update/restore actions 2017-09-01 20:08:22 +02:00
Johannes Zellner
4bdbf1f62e Fix indentation 2017-09-01 20:08:22 +02:00
Johannes Zellner
47a8b4fdc2 After consuming the accessToken query param, remove it
Fixes #415
2017-09-01 10:25:28 +02:00
Johannes Zellner
5720e90580 Guide the user to use ctrl+v for pasting into webterminal
Fixes #413
2017-08-31 20:52:04 +02:00
Johannes Zellner
f98e13d701 Better highlight dropdown menu hovers 2017-08-31 20:52:04 +02:00
Johannes Zellner
d5d924861b Fix gravatar margin in navbar 2017-08-31 20:52:04 +02:00
Girish Ramakrishnan
b81a92d407 disable ip6 in unbound as well
part of #412
2017-08-31 11:41:35 -07:00
Johannes Zellner
22b0100354 Ensure we don't crash if the terminal socket is not ready yet
Upstream patch submitted https://github.com/sourcelair/xterm.js/pull/933
2017-08-31 20:31:31 +02:00
Johannes Zellner
6eb6eab3f4 Let the browser handle paste keyboard shortcuts
Related to #413
2017-08-31 20:31:31 +02:00
Girish Ramakrishnan
57d5c2cc47 Use IPv4 address to connect to mysql
Fixes #412
2017-08-31 10:59:14 -07:00
Johannes Zellner
6a9eac7a24 Use the correct input change event
Fixes #414
2017-08-31 19:06:02 +02:00
Johannes Zellner
e4760a07f0 Give feedback if the relay settings have successfully saved 2017-08-30 11:02:13 +02:00
Johannes Zellner
257e594de0 Allow mail relay provider specific UI
Only contains specific UI for postmark

Part of #411
2017-08-30 10:55:36 +02:00
Girish Ramakrishnan
6fea022a04 remove dead code 2017-08-29 14:47:59 -07:00
Girish Ramakrishnan
f34840d127 remove old data migration paths 2017-08-29 13:08:31 -07:00
Girish Ramakrishnan
f9706d6a05 Always generate nginx config for webadmin
Part of #406
2017-08-28 21:16:47 -07:00
Girish Ramakrishnan
61f7c1af48 Remove unused error codes 2017-08-28 15:27:17 -07:00
Girish Ramakrishnan
00786dda05 Do not crash if DNS creds do not work during startup
If DNS creds are invalid, then platform.start() keeps crashing on a
mail container update. For now, just log the error and move on.

Part of #406
2017-08-28 14:55:36 -07:00
Girish Ramakrishnan
8b9f44addc 1.6.3 changes 2017-08-28 13:49:15 -07:00
Johannes Zellner
56c7dbb6e4 Do not attempt to reconnect if the debug view is already gone
Fixes #408
2017-08-28 21:06:25 +02:00
Girish Ramakrishnan
c47f878203 Set priority for MX records
Fixes #410
2017-08-26 15:54:38 -07:00
Girish Ramakrishnan
8a2107e6eb Show email text for Cloudflare 2017-08-26 15:37:24 -07:00
Girish Ramakrishnan
cd9f0f69d8 email dialog has moved to it's own view 2017-08-26 15:36:12 -07:00
Girish Ramakrishnan
1da91b64f6 Filter out possibly sensitive information for normal users
Fixes #407
2017-08-26 14:47:51 -07:00
Johannes Zellner
a87dd65c1d Workaround for firefox flexbox bug
Fixes selection while clicking on empty flexbox space.

This only happens in firefox and seems to be a bug in firefox
flexbox implementation, where the first child element with a
non zero size, in a flexbox managed `block` element, has the
`float` property.

Fixes #405
2017-08-24 23:29:42 +02:00
Johannes Zellner
7c63d9e758 Fix typo in css 2017-08-24 23:16:36 +02:00
Girish Ramakrishnan
329bf596ac Indicate that directories can be downloaded 2017-08-24 13:38:50 -07:00
Girish Ramakrishnan
2a57c4269a handle app not found 2017-08-23 13:23:04 -07:00
Girish Ramakrishnan
ca8813dce3 1.6.2 changes 2017-08-23 10:43:27 -07:00
Girish Ramakrishnan
3aebf51360 Fix upload of large files to apps
6a0ef7a1c1 broke the upload for apps

e2e test is being added
2017-08-23 10:22:54 -07:00
Johannes Zellner
103f8db8cb Do not expand to fixed pixel size on mobile 2017-08-23 16:57:34 +02:00
Johannes Zellner
04c127b78d Add changes for 1.6.1
Due to regressions we should skip 1.6.0 thus the same changelog
2017-08-23 16:14:30 +02:00
Johannes Zellner
9bef1bcf64 Hijack and demux the container exec stream to be compliant with new
dockerode
2017-08-23 16:04:50 +02:00
Johannes Zellner
718413c089 autocomplete attribute is not respected for username/password fields
Since the cloudflare email input field is above the password field
some browsers will automatically autofill it with the username
as it looks like a login form. So we add a hidden unused input field
which gets autofilled instead :-/
2017-08-23 13:13:00 +02:00
Girish Ramakrishnan
a34691df44 Hide the header as well 2017-08-22 09:30:18 -07:00
Girish Ramakrishnan
795e38fe82 file is an object 2017-08-22 09:15:46 -07:00
Johannes Zellner
1d348fb0f3 Do not lose focus on terminal 2017-08-22 16:24:26 +02:00
Johannes Zellner
91f3318879 Implement rightclick menu for terminal text copy 2017-08-22 16:23:06 +02:00
Girish Ramakrishnan
c61808f4c6 1.6.0 changes 2017-08-21 16:08:37 -07:00
Girish Ramakrishnan
991b2dad28 bump mail container version
part of #400
2017-08-21 15:54:21 -07:00
Girish Ramakrishnan
f3d9a70de7 Only send the stdout stream 2017-08-21 10:46:13 -07:00
Johannes Zellner
60758de10a Fixup package.json linter issues and clean the shrinkwrap 2017-08-21 12:45:15 +02:00
Girish Ramakrishnan
6a0ef7a1c1 Allow larger files to be uploaded
Note that other upload APIs like avatar are still limited to 1m by
the nginx config
2017-08-20 19:15:54 -07:00
Girish Ramakrishnan
7cb451c157 Allow dirs to downloaded as tarballs 2017-08-20 18:54:59 -07:00
Girish Ramakrishnan
3c31c96ad4 Hide the download dialog after download starts 2017-08-20 18:29:11 -07:00
Johannes Zellner
5d73f58631 Show upload progress 2017-08-20 19:32:00 +02:00
Johannes Zellner
4ca7cccdae Give error feedback if the requested file does not exist 2017-08-20 18:50:37 +02:00
Johannes Zellner
82380b6b7c Remove hardcoded /app/data and fix submit for file downloads 2017-08-20 18:09:43 +02:00
Johannes Zellner
979c4e77e3 Fix view bug when terminal reconnects but user has moved on 2017-08-20 18:00:07 +02:00
Johannes Zellner
e318fb0c01 Show restat button also in logs view 2017-08-20 17:57:32 +02:00
Girish Ramakrishnan
77d2fb97e5 test: create logrotate dir 2017-08-19 18:57:43 -07:00
Girish Ramakrishnan
24e6c4d963 bump test image 2017-08-19 17:57:21 -07:00
Girish Ramakrishnan
064c5cf7f2 Fix failing test 2017-08-19 17:41:15 -07:00
Girish Ramakrishnan
891542bfb9 move restart button 2017-08-19 17:33:59 -07:00
Girish Ramakrishnan
599702d410 Fix casing 2017-08-19 16:45:20 -07:00
Girish Ramakrishnan
3cb39754fd Make logs button work for apps 2017-08-19 12:52:48 -07:00
Girish Ramakrishnan
f04345a99a Move restart button to log view 2017-08-19 12:49:03 -07:00
Johannes Zellner
3d59b8a5b0 Deliver content-length and file not found errors for file downloads 2017-08-19 12:13:04 +02:00
Johannes Zellner
cf518b0285 Resize terminal based on initial DOM size
Currently we cannot send new cols,rows on DOM element resize
as they are sent on connect only and a reconnect would loose
current session
2017-08-19 11:32:00 +02:00
Girish Ramakrishnan
52832c881a Add upload and download for the webterminal 2017-08-18 21:19:48 -07:00
Girish Ramakrishnan
537fbff4aa Use ws directly to handle new exec ws route 2017-08-18 19:46:18 -07:00
Johannes Zellner
e3040b334d Do not submit injected commands right away but give some space and fix
focus
2017-08-18 20:36:52 +02:00
Johannes Zellner
6c2879d567 Rename debug view to terminal and logs 2017-08-18 20:36:47 +02:00
Johannes Zellner
595c89076f Add postgres, mongo and redis client injection 2017-08-18 11:26:10 -07:00
Johannes Zellner
c85f5b15c6 Reenable custom tcp upgrade handling 2017-08-18 11:26:05 -07:00
Johannes Zellner
8fbed7e84b Ensure we only write to the websocket if it is open 2017-08-18 11:26:00 -07:00
Johannes Zellner
ee3c5f67af Show mysql addon only if the app uses it 2017-08-18 11:25:54 -07:00
Johannes Zellner
52db28e876 Verify the websocket request 2017-08-18 11:25:49 -07:00
Johannes Zellner
65bc3491f6 enable timeout middleware again and reset it for all upgrade requests 2017-08-18 11:25:45 -07:00
Johannes Zellner
82f512dc27 Rename logs view to debug view 2017-08-18 11:25:37 -07:00
Johannes Zellner
4b41378d08 Ensure app restarts also close the websocket 2017-08-18 11:25:05 -07:00
Johannes Zellner
1fd4e27d92 Fix logs autoscroll 2017-08-18 11:25:00 -07:00
Johannes Zellner
2420fef6b1 Reconnect the terminal on disconnection
This can happen if the app crashes or restarts
2017-08-18 11:24:55 -07:00
Johannes Zellner
50074b936a Integrate the terminal with the logs ui 2017-08-18 11:24:48 -07:00
Johannes Zellner
f98e68edc1 Add express-ws node module 2017-08-18 11:24:42 -07:00
Johannes Zellner
83e5daf08c Add xterm.js 2017-08-18 11:24:34 -07:00
Girish Ramakrishnan
53b43ca36b Don't show restore button for noop backend 2017-08-17 20:20:06 -07:00
Girish Ramakrishnan
d11842a7f8 Show popup when using noop backend 2017-08-17 19:52:08 -07:00
Girish Ramakrishnan
6746781b46 Add warning for noop backend
Fixes #402
2017-08-17 12:38:52 -07:00
Girish Ramakrishnan
78ec8e5c0c Add field to skip backup for an app
This skips the app from a backup when doing a full box backup and
simply reuses the previous backup.

The app can still be explicitly backed up using 'cloudron backup'
and explicitly restored using 'cloudron restore --backup'.

When restoring the box, it all depends on the app's last backup.

Fixes #311
2017-08-16 16:36:50 -07:00
Johannes Zellner
67a2ba957e Use maxsize logrotate rule instead of size
The current ruleset means rotate the file daily unless the file grows
larger than 1Mb earlier, then rotate once the file reaches that size.

https://serverfault.com/questions/474941/how-to-rotate-log-based-on-an-interval-unless-log-exceeds-a-certain-size
2017-08-16 19:10:49 +02:00
Girish Ramakrishnan
9e558924bb df plugin replaces with _ and not -
Part of #348
2017-08-15 09:32:42 -07:00
Johannes Zellner
afcb3dd237 Fix layout issues in oauth views 2017-08-15 13:18:31 +02:00
Johannes Zellner
054de4813d Fix layout issue in update view 2017-08-15 11:04:47 +02:00
Girish Ramakrishnan
57891c64b5 use check_output instead
Aug 14 19:10:46 collectd[12651]: close failed in file object destructor:
Aug 14 19:10:46 collectd[12651]: IOError: [Errno 10] No child processes
2017-08-14 12:31:58 -07:00
Girish Ramakrishnan
26361c037d Merge branch 'mehdi/box-permissions'
Closes MR !14
2017-08-14 10:49:54 -07:00
Girish Ramakrishnan
2048b03431 Removed this file by mistake 2017-08-14 10:44:58 -07:00
Girish Ramakrishnan
c12aba6c00 install xfsprogs
on some VPS like scaleway this is not installed.

This is why docker with devicemapper was using ext4 and not devmapper

devmapper: XFS is not supported in your system. Either the kernel doesn't support it or mkfs.xfs is not in your PATH. Defaulting to ext4 filesystem"
2017-08-13 23:15:23 -07:00
Girish Ramakrishnan
0bd0857189 Update many modules
npm WARN deprecated ejs-cli@1.2.0: This has breaking change. (in ejs package) use <= 2.0.0.
npm WARN deprecated node-uuid@1.4.8: Use uuid module instead
npm WARN deprecated minimatch@0.3.0: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated minimatch@0.2.14: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated graceful-fs@1.2.3: graceful-fs v3.0.0 and before will fail on node releases >= v7.0. Please update to graceful-fs@^4.0.0 as soon as possible. Use 'npm ls graceful-fs' to find it in the tree.
2017-08-13 17:57:48 -07:00
Girish Ramakrishnan
978893250f Update superagent (for doubele callback bug) 2017-08-13 17:38:02 -07:00
mehdi
d0f4a76ca2 basic capabilities syntax 2017-08-12 09:42:54 +01:00
Girish Ramakrishnan
755c87b079 Remove extra space 2017-08-11 22:14:53 -07:00
Girish Ramakrishnan
1da073c9bf Display mail server settings inline 2017-08-11 22:12:11 -07:00
Girish Ramakrishnan
96ead77520 Remove the API section 2017-08-11 21:10:18 -07:00
Girish Ramakrishnan
178b04fead Fix broken links to docs 2017-08-11 21:00:51 -07:00
Girish Ramakrishnan
335631ac28 Look for log files in first level and third level as well 2017-08-11 16:24:56 -07:00
Girish Ramakrishnan
42778cb84d Add 1.5.0 changes 2017-08-11 16:24:30 -07:00
Johannes Zellner
2f51088e67 Add logrotate support for *.log files in /run mounts of apps
logrotate config files may contain arbitrary commands which are
exectued as root, thus the config files have to be owned by root.
This is the reason we need the sudo scripts :-/

To test the generated scripts, just run:
$ logrotate /etc/logrotate.conf -v

Fixes #396
2017-08-12 00:04:00 +02:00
Johannes Zellner
378d7aee91 Add docker.inspect() api 2017-08-11 23:31:59 +02:00
Johannes Zellner
ac53f8c747 Show app title for log selection 2017-08-11 15:32:58 +02:00
Girish Ramakrishnan
5fe73c5a46 Replace df plugin with custom df plugin
The built-in df plugin cannot do the following:
    * if we choose by type ext4, we want to skip devicemapper (on scaleway)
    * the MountPoint of the appsdata directory is not possible to know at install time

Fixes #398
2017-08-11 01:39:51 -07:00
Johannes Zellner
a6f13eee14 Fix further layout issues in the appstore login view 2017-08-11 09:30:07 +02:00
Girish Ramakrishnan
86d23a4d35 Switch default storage backend to overlay2
This does not try to migrate existing cloudrons from devicemapper.
We will possibly do that in a future version.

61e130fb7 takes care of checking that we run on ext4

https://cloudron.io/documentation/server/#using-overlay2-backend-for-docker

Fixes #364
2017-08-10 14:11:03 -07:00
Johannes Zellner
b25bb76792 Give some bottom spacing for the log output container 2017-08-10 21:49:27 +02:00
Johannes Zellner
7ba5d1e0d6 Enable automatic scrolling while trailing logs 2017-08-10 21:49:06 +02:00
Girish Ramakrishnan
f17bde2d97 Add motd message for cloudron admins about updates
Fixes #351
2017-08-10 12:14:51 -07:00
Girish Ramakrishnan
93cafebfdb Allow options to be set in shell.sudo and shell.exec 2017-08-09 19:32:02 -07:00
Johannes Zellner
5538a91585 We are not using bootstrap rows on toplevel layout anymore 2017-08-09 09:49:52 +02:00
Girish Ramakrishnan
09cb468290 Update node to 6.11.2 2017-08-08 18:41:38 -07:00
Johannes Zellner
3b98eb0543 Add cloudron logstream api test 2017-08-08 20:40:18 +02:00
Johannes Zellner
59936c6fbf Further simplification of the layout code 2017-08-08 18:24:00 +02:00
Johannes Zellner
5a7e636f2d Use flexbox to avoid lots of grid system quirks
Finally we can sanely control navbar and footer
2017-08-08 12:05:46 +02:00
Johannes Zellner
401dc37a50 Ensure we destroy the eventsource when the view changes 2017-08-08 11:52:32 +02:00
Johannes Zellner
9f1af572a0 Make log lines backlog configurable 2017-08-08 10:07:33 +02:00
Johannes Zellner
96e2fa159c Show timestamp in log lines 2017-08-08 09:55:18 +02:00
Johannes Zellner
bc49a3e18a Add moment.js to webadmin 2017-08-08 09:55:09 +02:00
Johannes Zellner
ae19d8d754 Protect the logs view from normal user access 2017-08-07 21:00:23 +02:00
Johannes Zellner
13b067eb88 Remove log download in support view
This has moved to the logs view
2017-08-07 20:54:18 +02:00
Johannes Zellner
af08f4e7b6 Auto scroll the log streamer 2017-08-07 19:43:07 +02:00
Johannes Zellner
534e5781ba Set correct font and fix the follow flag 2017-08-07 18:42:08 +02:00
Johannes Zellner
737e266729 Set the url for the log download button 2017-08-07 18:24:19 +02:00
Johannes Zellner
07a133ebe9 Fix the platform log streaming 2017-08-07 18:18:36 +02:00
Johannes Zellner
b0444edf7e Add platform logstream api 2017-08-07 17:09:39 +02:00
Johannes Zellner
bcf37d833f Allow to follow app logs 2017-08-07 16:48:27 +02:00
Johannes Zellner
e7db2ab137 Add color code to html conversion library 2017-08-07 16:47:47 +02:00
Johannes Zellner
125b416463 Add initial logs view 2017-08-07 13:50:45 +02:00
Girish Ramakrishnan
800468fbe6 Use debug instead 2017-08-04 11:16:00 -07:00
Girish Ramakrishnan
0c1e3ec6a0 use mailFqdn instead of adminFqdn 2017-08-04 07:46:09 -07:00
Johannes Zellner
d97ee5d425 Bring back update badge hover 2017-08-04 14:59:06 +02:00
Johannes Zellner
a1be30c35a Remove preceeding * or - in changelogs
Should be possibly solved somewhere more central
2017-08-04 12:31:25 +02:00
Johannes Zellner
ba3cb3b646 Do not crash the whole cloudron if an email template does not render but report the ejs error 2017-08-04 12:02:50 +02:00
Johannes Zellner
daadefe6b9 Ensure we also send the html portion of the digest mail 2017-08-04 12:00:01 +02:00
Girish Ramakrishnan
12c849398e 1.4.1 changes 2017-08-03 13:55:58 -07:00
Girish Ramakrishnan
392492be04 Only collect info on the / mountpoint
The original intention was to collect information on the data
dirs as well but we have long moved away from that design.
On some VPS like scaleway, this ends up collecting info on
devicemapper stuff (which are on ext4, not sure why).

In future, we should collect info of other disks as well (#348)

Fixes #389
2017-08-03 11:45:23 -07:00
Johannes Zellner
4fd0c3c66c Add html version of the digest email 2017-08-03 15:55:36 +02:00
Johannes Zellner
7d2e6d8d4d Add test_data for html email development 2017-08-03 15:55:03 +02:00
Girish Ramakrishnan
f3e7249bdc Fix unterminated quote 2017-08-02 14:43:05 -07:00
Johannes Zellner
53afb2606a Change the update notification badge 2017-08-02 21:45:11 +02:00
Girish Ramakrishnan
fbce71d031 Do not show the backup region for minio and exoscale
Fixes #392
2017-08-02 11:21:39 -07:00
Johannes Zellner
1adde7d8e8 And another doc links change to fit the new doc layout 2017-08-02 11:30:16 +02:00
Girish Ramakrishnan
d23599ba24 Add 1.1.3 2017-08-01 17:21:00 -07:00
Girish Ramakrishnan
ac35bcf9f0 add 1.0.x and 1.1.x changelogs 2017-08-01 16:48:51 -07:00
Johannes Zellner
e4c5dfda60 Adjust documentation links to fit knowledgebase 2017-08-01 20:38:47 +02:00
Johannes Zellner
99cfe564ae Add repair button to error dialog and improve dns error message 2017-08-01 11:56:39 +02:00
Johannes Zellner
70a3cdc9bc Make it more obvious that the error dialog can be triggered when clicking on the app icon 2017-08-01 11:56:39 +02:00
Girish Ramakrishnan
bd52068695 Return error object instead of false 2017-07-31 11:57:23 -07:00
Girish Ramakrishnan
ae54b57ca7 Fix wording to match cf website 2017-07-31 10:50:00 -07:00
Johannes Zellner
0eb3c26c05 Only show cloudflare note when cloudflare is selected 2017-07-31 17:01:04 +02:00
Johannes Zellner
ca007ff979 The Cloudflare token is called API Key 2017-07-31 11:46:17 +02:00
Johannes Zellner
2eb5c39388 Improve error reporting for cloudflare 2017-07-31 11:25:17 +02:00
Johannes Zellner
014ce9df66 Mention that we only support cloudflare DNS management 2017-07-31 11:08:17 +02:00
Johannes Zellner
a4dff215f1 Change eventlog db column types from JSON to TEXT
JSON type is only supported on oracle mysql and none of the features are
used
2017-07-31 09:44:30 +02:00
Girish Ramakrishnan
0db4387013 Ensure security updates are enabled
Fixes #346
2017-07-28 20:03:55 -07:00
Girish Ramakrishnan
d81abfb2f0 Add blocking flag to changes 2017-07-28 10:41:28 -07:00
Girish Ramakrishnan
0d880cf1e3 Add 1.4.0 changes 2017-07-28 10:39:33 -07:00
Girish Ramakrishnan
b24d600b31 Update haraka 2017-07-28 10:34:29 -07:00
Johannes Zellner
2ac52fc64f Merge branch 'issue102' into 'master'
Added support for cloudflare DNS

See merge request !8
2017-07-28 17:14:43 +00:00
Johannes Zellner
3bf07a3143 Make it work 2017-07-28 18:33:08 +02:00
Johannes Zellner
cf883046b3 verifyDnsConfig() api has changed 2017-07-28 16:33:19 +02:00
Johannes Zellner
5e9808ad79 We use single quotes 2017-07-28 16:12:41 +02:00
Johannes Zellner
83ddf0a62c add cloudflare ui components 2017-07-28 16:10:04 +02:00
Johannes Zellner
cb7fea97af Keep coding style consistent 2017-07-28 16:10:04 +02:00
Johannes Zellner
3a4ee3ec8c Check for cloudflare email and token 2017-07-28 16:10:04 +02:00
Johannes Zellner
96dbda3949 Provide cloudflare in dns setup screen 2017-07-28 16:10:04 +02:00
Johannes Zellner
7facf17ac6 Make cloudflare api available in subdomain.js 2017-07-28 16:10:04 +02:00
Johannes Zellner
a939367ab6 Cleanup linter errors 2017-07-28 16:10:04 +02:00
Abhishek Patil
fd52f0ded4 Added support cloudflare DNS TODO:UI
Signed-off-by: Abhishek Patil <abhishek@zeroth.me>
2017-07-28 16:10:04 +02:00
Johannes Zellner
84ba20493e The docs are now in a separate repo
See https://git.cloudron.io/cloudron/docs
2017-07-28 13:41:17 +02:00
Girish Ramakrishnan
4f9a9906c9 Do not automatically update apps with a major version change
(future) pre-1.0 packages can be considered 'experimental'

Fixes #342
2017-07-27 13:49:08 -07:00
Girish Ramakrishnan
204340eac0 Set ttl
Fixes #384
2017-07-27 13:25:37 -07:00
Girish Ramakrishnan
d72fffb61f Bump mail container for AUTH LOGIN crash fix 2017-07-27 13:21:37 -07:00
Girish Ramakrishnan
cf4f0af0be Freudian slip 2017-07-26 15:58:43 -07:00
Girish Ramakrishnan
07d0601342 doc: robots.txt 2017-07-26 15:48:16 -07:00
Johannes Zellner
4cd0e4d38d Fix digest cron schedule to no run every hour on wednesdays 2017-07-26 10:52:12 +02:00
Girish Ramakrishnan
4f1a596123 Add support for exoscale SOS 2017-07-25 15:23:04 -07:00
Girish Ramakrishnan
d3990eff39 Add 1.3.1 changelog 2017-07-25 09:34:43 -07:00
Girish Ramakrishnan
6eab8bbdce Use -%> for newline slurping
Fixes #383
2017-07-24 22:13:31 -07:00
Girish Ramakrishnan
61e130fb71 check that rootfs is ext4
part of #364
2017-07-24 18:14:53 -07:00
Johannes Zellner
0c2267f9b4 Allow digest to be templated with or without subscription 2017-07-24 21:15:28 +02:00
Girish Ramakrishnan
a4e822f1c0 multi-line changelog does not work :( 2017-07-23 21:15:11 -07:00
Girish Ramakrishnan
e9c5837059 Add 1.3.0 changes 2017-07-23 21:13:57 -07:00
Girish Ramakrishnan
17406e4560 Adjust digest wording 2017-07-23 21:07:13 -07:00
Girish Ramakrishnan
eb99f8b844 escape and quote the robotsTxt when templating
for now, we restrict the string length to 4096 since that is what
nginx allows
2017-07-23 19:56:28 -07:00
Johannes Zellner
4fec2fe124 Allow specify the robots.txt text in the configure dialog 2017-07-23 22:00:05 +02:00
Girish Ramakrishnan
4045eb7a33 Add digest tests 2017-07-23 10:58:00 -07:00
Johannes Zellner
99d8baf36f Add cron job to send email digest 2017-07-22 17:44:15 +02:00
Girish Ramakrishnan
db7a4b75ae log the host in nginx logs 2017-07-21 09:43:44 -07:00
Johannes Zellner
dcd8c82a75 send lastLogin event timestamp with alive status 2017-07-21 15:15:13 +02:00
Girish Ramakrishnan
d577756851 doc: formatting 2017-07-20 12:57:18 -07:00
Girish Ramakrishnan
1e9c1e6ed0 doc: subdomain installation 2017-07-20 12:37:42 -07:00
Girish Ramakrishnan
ecc76ed368 doc: mail relay 2017-07-20 11:40:03 -07:00
Girish Ramakrishnan
9e61f76aad doc: catch-all mailbox 2017-07-20 11:27:31 -07:00
Johannes Zellner
11c2cecc9e Ensure we only add a leading / when we have a prefix
Part of #343
2017-07-19 14:35:35 +02:00
Girish Ramakrishnan
b5aed7b00a Set full path for nginx access log 2017-07-18 21:49:12 -07:00
Girish Ramakrishnan
4d177e0d29 Add 1.3.0 changes 2017-07-18 21:21:24 -07:00
Girish Ramakrishnan
f070082586 doc: get/set mail from validation 2017-07-18 18:57:27 -07:00
Girish Ramakrishnan
f3483e6a92 fix typo in mail.ini 2017-07-18 17:38:21 -07:00
Girish Ramakrishnan
91e56223ce Add mail from validation tests
Fixes #366
2017-07-18 17:05:34 -07:00
Girish Ramakrishnan
631b830f4c Add setting to toggle from address validation check
part of #366
2017-07-18 16:33:42 -07:00
Girish Ramakrishnan
63364ae017 Use settings.getAll in createMailConfig 2017-07-18 13:50:39 -07:00
Girish Ramakrishnan
3b162c6648 Add _KEY prefix to catch all address 2017-07-18 13:50:05 -07:00
Girish Ramakrishnan
b4fb73934b Remove unused function 2017-07-18 13:42:22 -07:00
Girish Ramakrishnan
8f04163262 convert missing json settings in getAll 2017-07-18 13:31:43 -07:00
Girish Ramakrishnan
10b6664134 Update schema.sql 2017-07-18 12:03:45 -07:00
Girish Ramakrishnan
454ca86507 trigger a reconfigure to regenerate nginx configs
see !13
2017-07-18 11:38:02 -07:00
Girish Ramakrishnan
34020064bc Merge branch 'patch-1' into 'master'
add X-Forwarded-Port in nginx reverse proxy for jetpack

See merge request !13
2017-07-18 17:47:25 +00:00
Dick Tang
67486b8177 add X-Forwarded-Port in nginx reverse proxy for jetpack
jetpack require X-Forward for the port, or "requested method jetpack.jsonAPI does not exist"
ref: https://github.com/ViBiOh/docker-wordpress/issues/1
2017-07-18 15:58:46 +00:00
Girish Ramakrishnan
6a4be98f19 Display cloudronId in settings 2017-07-17 14:36:50 -07:00
Girish Ramakrishnan
d5fb048364 Bump test container version 2017-07-17 13:19:52 -07:00
Girish Ramakrishnan
6dd4d40692 parse and save zoneName to cloudron.conf
part of #377
2017-07-17 09:16:06 -07:00
Johannes Zellner
04d6f94108 Add docs for app migration 2017-07-17 15:28:06 +02:00
Johannes Zellner
8d49f5a229 Also put manually triggered app backups under a datetime prefix 2017-07-17 14:33:00 +02:00
Girish Ramakrishnan
f80713ba2f Make sure zoneName is not lost across updates
Part of #377
2017-07-16 11:05:04 -07:00
Girish Ramakrishnan
91f25465a4 Add 1.3.0 changes 2017-07-15 19:58:57 -05:00
Girish Ramakrishnan
aa5cc68301 Fix typo in error message 2017-07-15 19:58:52 -05:00
Girish Ramakrishnan
acd00222e5 Allow per-app configuration of robots.txt
https://developers.google.com/search/reference/robots_txt has
the specification

Part of #344
2017-07-14 15:25:05 -05:00
Girish Ramakrishnan
5697bcf43f Update to node 6.11.1
Fixes a DDoS issue in node

https://nodejs.org/en/blog/vulnerability/july-2017-security-releases/
2017-07-13 09:02:32 -05:00
Johannes Zellner
5b7cc6642a Ensure only the token value ends up in the clipboard
Fixes #375
2017-07-12 11:53:50 +02:00
Girish Ramakrishnan
ee528470a7 Add 1.2.1 changes 2017-07-11 10:37:11 -05:00
Girish Ramakrishnan
3eed481d22 Send mail relay and catch all as part of alive status 2017-07-11 09:53:06 -05:00
Girish Ramakrishnan
97b37cb45c bump mail container 2017-07-07 10:35:51 -05:00
Girish Ramakrishnan
49de39a1f3 Set max ttl to 5 minutes
This means the web ui will atleast work in 5 minutes.

Fixes #373
2017-07-07 09:50:29 -05:00
Girish Ramakrishnan
6fe390b957 Fix casing 2017-07-07 09:10:28 -05:00
Girish Ramakrishnan
1a68467ff2 Add one more 1.2.0 change 2017-07-06 09:12:44 -05:00
Girish Ramakrishnan
40de715f20 doc: relay API 2017-07-05 12:56:17 -05:00
Girish Ramakrishnan
8d9fbb9cea Create mail config regardless of whether owner exists 2017-07-05 11:31:51 -05:00
Girish Ramakrishnan
e3910d6587 1.2.0 changes 2017-06-30 17:54:21 -05:00
Girish Ramakrishnan
50e712a93e preserve existing docker storage driver
fixes #364
2017-06-30 16:50:31 -05:00
Girish Ramakrishnan
1c8ddc10db mailer: Do not wait for SPF record to be in sync
This code logic does not work when a relay is used. Besides, the
SPF record can go out of sync at any time. This code is thus
not worth keeping.
2017-06-30 15:30:12 -05:00
Girish Ramakrishnan
1007a85fde Use latest haraka and restart on relay change 2017-06-30 09:07:43 -05:00
Girish Ramakrishnan
a0903f0890 Allow relay to be reset back to cloudron 2017-06-30 09:07:43 -05:00
Girish Ramakrishnan
1c40e51999 Only starttls is supported by haraka
In addition, auth_type has to be set to PLAIN (or LOGIN)
2017-06-30 09:07:43 -05:00
Girish Ramakrishnan
c07df68558 Fix typos 2017-06-30 09:07:37 -05:00
Girish Ramakrishnan
fd5a05db6c suppress spf, dkim, ptr results when using external relay
part of #188
2017-06-28 22:20:41 -05:00
Girish Ramakrishnan
19d825db48 refactor code into email.js 2017-06-28 22:20:35 -05:00
Girish Ramakrishnan
2862fec819 outboundPort25 -> relay status 2017-06-28 22:20:25 -05:00
Girish Ramakrishnan
2df74ebe96 Only display the DNS records if they exist in the response
part of #188
2017-06-28 22:20:15 -05:00
Girish Ramakrishnan
5794aaee0a Display dns notification only when using cloudron for relay
part of #188
2017-06-28 22:20:04 -05:00
Girish Ramakrishnan
229ca7f86b return SettingsError and not CloudronError 2017-06-28 17:38:40 -05:00
Girish Ramakrishnan
7edf43c627 Select tls based on port
Note that starttls is always supported

part of #188
2017-06-28 16:56:11 -05:00
Girish Ramakrishnan
ae1dff980a Set cloudron-smtp as default relay 2017-06-28 12:32:07 -05:00
Girish Ramakrishnan
01d0e56332 refactor code to have a relay provider
part of #188
2017-06-28 11:39:45 -05:00
Girish Ramakrishnan
00990b6837 Verify relay credentials
part of #188
2017-06-27 16:40:10 -05:00
Girish Ramakrishnan
5886671fba update nodemailer 2017-06-27 16:23:44 -05:00
Girish Ramakrishnan
5088cb47d9 Load and save the relay settings
part of #188
2017-06-27 15:13:09 -05:00
Girish Ramakrishnan
60ae4972b0 Bump mail container version (relay support) 2017-06-27 13:16:30 -05:00
Girish Ramakrishnan
ad8ddf80f5 add mail relay tests
part of #188
2017-06-27 12:20:51 -05:00
Girish Ramakrishnan
c4d313a2c0 generate smtp_forward.ini
part of #188
2017-06-27 11:08:50 -05:00
Johannes Zellner
140e9fdd94 Initial ui for email relay configuration 2017-06-27 13:39:08 +02:00
Johannes Zellner
82b5c11374 Use the locally installed gulp to avoid global dependency 2017-06-27 12:25:40 +02:00
Johannes Zellner
3307b581af Give the spawned node processes a bit more memory
Two cloudrons failed with 200 again and bumping it up helps
We still should look into the tarfs module to fix the root cause
2017-06-26 13:06:57 +02:00
Girish Ramakrishnan
45e68ef6da Use latest mysql image
have to reconfigure to re-inject new passwords

fixes #362
2017-06-22 14:16:58 -07:00
Girish Ramakrishnan
4d7f9ba9a5 isPaying is not set properly for non-caas 2017-06-21 22:38:39 -07:00
Girish Ramakrishnan
6d0cdc36b2 move getSubscription to appstore.js 2017-06-21 22:17:32 -07:00
Girish Ramakrishnan
79541a68a5 Display and send usernames instead of the email address 2017-06-21 19:34:55 -07:00
Girish Ramakrishnan
845d386478 Grammar 2017-06-21 19:28:38 -07:00
Girish Ramakrishnan
8771de5c12 Minor rewording 2017-06-21 19:14:15 -07:00
Girish Ramakrishnan
76246b2952 Try to fix sporadic mysql startup issue after cloudron-setup 2017-06-21 17:20:02 -07:00
Johannes Zellner
f994b68701 wait for dns with the correct zone even on external domain setup 2017-06-21 15:04:39 +02:00
Johannes Zellner
77558c823c Check for subscription right after appstore login 2017-06-21 13:43:34 +02:00
Johannes Zellner
dd6a19ea85 get zoneName from domain on migration if not set 2017-06-21 13:41:13 +02:00
Johannes Zellner
16978f8c1a Keep the subdomain as is for non-custom domain cloudrons 2017-06-21 10:23:04 +02:00
Johannes Zellner
f311c3da1c Fix explicit zone information in dns setup view 2017-06-21 09:51:35 +02:00
Johannes Zellner
423e355fd6 Add changes 2017-06-21 09:37:34 +02:00
Johannes Zellner
8fadb3badc Use the actual result not the potentially cached value 2017-06-20 13:10:07 +02:00
Johannes Zellner
3845065085 Enable catchall based on subscription status 2017-06-20 12:58:14 +02:00
Johannes Zellner
801d848908 Show hint about subdomain cloudrons in dns setup 2017-06-20 11:56:09 +02:00
Girish Ramakrishnan
e6eda1283c Format the combo box better 2017-06-19 23:16:03 -07:00
Girish Ramakrishnan
a553755f4a the noop callback will print the error 2017-06-19 22:20:25 -07:00
Girish Ramakrishnan
cd52459f05 more descriptive debug 2017-06-19 22:20:25 -07:00
Girish Ramakrishnan
1802201e9e Remove one level of indentation 2017-06-19 22:20:22 -07:00
Johannes Zellner
2d72f49261 Ensure the updatechecker does not prematurely callback
Also add tests and make sure we send update notifications if automatic
updates cannot be applied
2017-06-19 14:34:36 +02:00
Johannes Zellner
cd42a6c2ea Send update notifications on the free plan 2017-06-19 13:27:08 +02:00
Johannes Zellner
65f949e669 Add settings.getSubscription() 2017-06-19 13:26:49 +02:00
Johannes Zellner
f3fec9a33c Handle 402 response on app installation 2017-06-19 12:17:55 +02:00
Johannes Zellner
13182de57f Appstore login dialog does not exist anymore 2017-06-19 12:06:42 +02:00
Girish Ramakrishnan
c33566b553 Add note that LE certs require valid email
part of #338
2017-06-18 17:23:41 -07:00
Johannes Zellner
4faf247898 Add catch-all address interface 2017-06-16 21:04:46 +02:00
Johannes Zellner
9952a986eb Always remind the user that the DNS zone has to be hosted on the provider
Do not use $location as the search() object is not consistent without
the angular router, which is not used here
2017-06-16 21:04:44 +02:00
Girish Ramakrishnan
40aaffe365 tests: Fix usage of settings.setDnsConfig 2017-06-15 20:05:35 -07:00
Girish Ramakrishnan
3745e96a6f domain -> fqdn 2017-06-15 19:56:04 -07:00
Girish Ramakrishnan
157ce06f93 Add zoneName query parameter to dns setup
fixes #110
2017-06-15 19:55:48 -07:00
Girish Ramakrishnan
822dfb8af5 Allow 3rd level domains in UI
part of #110
2017-06-15 19:55:32 -07:00
Girish Ramakrishnan
9ead482dc6 Make verifyDnsConfig take zone name
part of #110
2017-06-15 19:55:24 -07:00
Girish Ramakrishnan
865c0a7aa7 Pass other level domains to dns API backends
part of #110
2017-06-15 19:55:01 -07:00
Girish Ramakrishnan
c760c42f92 make waitForDns take zone name argument
part of #110
2017-06-15 19:54:08 -07:00
Girish Ramakrishnan
ded31b977e Add config.setFqdn and config.setZoneName
Part of #110
2017-06-15 19:53:20 -07:00
Johannes Zellner
4781c4e364 Deliver empty JSON object on success
This ensures the client does not throw a parsing exception
2017-06-15 07:49:19 -07:00
Johannes Zellner
8e123b017e Add REST wrapper for catchall 2017-06-15 07:49:07 -07:00
Girish Ramakrishnan
658cbcdab9 bump mail container version (catchall support)
part of #33
2017-06-15 07:48:57 -07:00
Girish Ramakrishnan
0cc980f539 Add setting for catch all address
Note that this is not a flag on the mailboxes because we might theoretically
support forwarding to some other external domain in the future.

Part of #33
2017-06-15 07:48:46 -07:00
Girish Ramakrishnan
da7648fe3f Match the button text with existing text in the UI 2017-06-14 21:55:17 -07:00
Johannes Zellner
8db1073980 Add changes 2017-06-14 20:29:10 +02:00
Girish Ramakrishnan
f74f17af02 fix language 2017-06-13 14:42:30 -07:00
Johannes Zellner
87ca05281d Revert "Always check for updates prior to performing an update"
Lets keep the rest apis more single purpose and offload this case to the
client

This reverts commit 0bddd5a2c6.
2017-06-13 22:58:07 +02:00
Johannes Zellner
9780f77fa8 Ensure we fetch the latest update info
This is to bring the webadmin in sync
2017-06-13 22:51:53 +02:00
Johannes Zellner
0bddd5a2c6 Always check for updates prior to performing an update
This covers the case where the box has not yet received a tarballUrl but
the user already setup a subscription.
2017-06-13 21:42:32 +02:00
Johannes Zellner
20f2a6e4c6 Block updates if sourceTarballUrl is missing 2017-06-13 21:33:03 +02:00
Johannes Zellner
6d47737de7 Remove unused require 2017-06-13 21:14:27 +02:00
Johannes Zellner
e8f9552ff9 Remove email modal, it is included in the free plan 2017-06-13 17:26:28 +02:00
Johannes Zellner
9c76c5fc27 Also handle the undecided case 2017-06-13 17:25:59 +02:00
Johannes Zellner
f9d5f92397 Align the text with the dialog 2017-06-13 17:23:44 +02:00
Johannes Zellner
3a2a05dfce Change the plan configure label 2017-06-13 17:21:38 +02:00
Johannes Zellner
5a291fa2a4 Change subscription dialog to reflect 1.0 2017-06-13 17:08:36 +02:00
Johannes Zellner
84d34ec004 Mention our app request tracker in the missing app dialog 2017-06-13 16:07:21 +02:00
Girish Ramakrishnan
63fca38f0b Add gce to cloudron-setup 2017-06-12 14:05:03 -07:00
Johannes Zellner
e3b2799230 Make it clear that the domain, not the server must be hosted on the DNS provider 2017-06-12 10:16:53 +02:00
Girish Ramakrishnan
2efe72519e Can only update using paid plan 2017-06-09 11:05:23 -07:00
Johannes Zellner
eb3ae2c34f Give better feedback when a plan was selected 2017-06-09 14:26:28 +02:00
Johannes Zellner
eba79cd859 Open all outlinks in a new tab 2017-06-09 14:10:42 +02:00
Girish Ramakrishnan
d7d8cf97ed update dialog text 2017-06-08 14:19:32 -07:00
Girish Ramakrishnan
089f7301b8 set webServerOrigin in cloudron.conf
also remove the hardly used --api-server
2017-06-08 10:51:28 -07:00
Johannes Zellner
fb4f13eb13 Fixes to the update dialog logic 2017-06-08 17:44:35 +02:00
Johannes Zellner
89878ff9ad Also preset the login email for account details 2017-06-08 14:09:01 +02:00
Johannes Zellner
ba62f577fa Show the correct navbar badge for managed cloudron users 2017-06-08 11:17:32 +02:00
Johannes Zellner
4c5bd2d318 Specifically redirect the managed cloudron user to the cc setup 2017-06-08 11:07:05 +02:00
Johannes Zellner
3c318a72f7 Add email query param name 2017-06-08 10:14:09 +02:00
Girish Ramakrishnan
23532eafea Fix path to version 2017-06-07 20:31:18 -07:00
Girish Ramakrishnan
5b7a080d98 Add email when redirecting to cloudron.io 2017-06-07 17:47:03 -07:00
Girish Ramakrishnan
0a44b8c23b Change badge text based on 1.0.0 or not 2017-06-07 15:15:14 -07:00
Girish Ramakrishnan
c0c07c2839 ensure .ssh dir exists
Fixes #349
2017-06-07 09:50:31 -07:00
Girish Ramakrishnan
96d2b32a9f doc: scaleway does not require boot script anymore 2017-06-07 09:18:02 -07:00
Girish Ramakrishnan
795c2ad91c typo 2017-06-07 09:04:11 -07:00
Johannes Zellner
fc9a9c3f87 Add new changes to changelog 2017-06-07 16:22:56 +02:00
Johannes Zellner
d141d6ba21 Do not poll for subscription so often 2017-06-07 13:41:18 +02:00
Johannes Zellner
479da5393a Reword the version 1.0 update dialog 2017-06-07 13:40:56 +02:00
Johannes Zellner
307334ef81 Also test for parent object in case it does not exist 2017-06-07 12:46:01 +02:00
Johannes Zellner
c1ec7a06bf If we don't have a dockerImage, we can't proceed with the update 2017-06-07 12:46:01 +02:00
Johannes Zellner
1126a0fc1e Use the app manifest from the box updater 2017-06-07 12:46:01 +02:00
Johannes Zellner
b5f678613b Add version 1.0 welcome dialog 2017-06-07 12:46:01 +02:00
Johannes Zellner
b7e3447a46 Show subscription dialog on app update 2017-06-07 12:46:01 +02:00
Johannes Zellner
32fa3b8a51 Show subscription indicator in navbar 2017-06-07 12:46:01 +02:00
Johannes Zellner
fe0e4000a6 Fix link to subscription page 2017-06-07 12:46:01 +02:00
Johannes Zellner
9ceeb70fc2 No need to pull in unused AppStore dependency 2017-06-07 12:46:01 +02:00
Johannes Zellner
aa8b4f1fba show cloudron account in the settings view 2017-06-07 12:46:01 +02:00
Johannes Zellner
95ba51dfb2 Add wrapper to get current subscription 2017-06-07 12:46:01 +02:00
Girish Ramakrishnan
c74fb07ff7 Replace all / with _ when querying graphite
Part of #348
2017-06-06 21:25:20 -07:00
Johannes Zellner
03f1326073 Tweak the architecture doc page 2017-06-05 18:10:50 +02:00
Johannes Zellner
daa4c66e7f Do not perform automatic updates for major platform version 2017-06-05 18:06:00 +02:00
Johannes Zellner
571abc56fe Fix email view flickering while not eveything has loaded yet 2017-06-05 14:22:34 +02:00
Johannes Zellner
4aaeccecbd Hide DNS record listing for caas dnsprovider 2017-06-02 10:48:00 +02:00
Johannes Zellner
4287d69397 Correctly show dns recrods on view load 2017-06-02 10:47:56 +02:00
Johannes Zellner
de328e34d8 Ensure menu is sorted 2017-06-02 10:47:53 +02:00
Johannes Zellner
8d45ce6971 Move email related things into separate view 2017-06-02 10:47:46 +02:00
Johannes Zellner
fa3f173e8a Reduce app grid item size a bit to avoid too early overflow 2017-06-02 09:28:22 +02:00
Girish Ramakrishnan
414e9bdf05 Do not use lastBackupId in cleanup logic
lastBackupId is only used as a "message" passing field for apptask restore.

Theoretically, this code somehow protects a race between the cleanup logic
and the restore apptask. this is unlikely to happen and adds unnecessary
complexity.
2017-06-01 14:47:57 -07:00
Girish Ramakrishnan
c342e52e7d Record copyLastBackup in the backupdb 2017-06-01 14:08:55 -07:00
Girish Ramakrishnan
78aa9c66f7 Add a note why we do not cleanup more aggressively yet 2017-06-01 10:33:49 -07:00
Girish Ramakrishnan
986ec02ac6 Add debug on what backup is preserved 2017-06-01 09:38:39 -07:00
Girish Ramakrishnan
4e0bb9187a lower case domain in migrate code path 2017-06-01 09:26:03 -07:00
Johannes Zellner
9c8a8571b4 Ensure we lowercase the domain name before consuming it in dns setup
Finally fixes #335
2017-06-01 17:29:46 +02:00
Johannes Zellner
7f30b8de9d Ensure we test domains with lowercase
Fixes #335
2017-06-01 16:42:16 +02:00
Johannes Zellner
d1bfa4875a Give the domain name a bit more space
Fixes #340
2017-06-01 15:31:58 +02:00
Johannes Zellner
0250e1ea59 Improve the domain name fitting 2017-06-01 15:31:58 +02:00
Johannes Zellner
924fb337e8 Ensure long domain names are visible in the app grid
Part of #340
2017-06-01 15:31:58 +02:00
Girish Ramakrishnan
0c9dce0c9f redis: set memoryLimit to 600 because only half is RAM 2017-05-31 23:09:47 -07:00
Girish Ramakrishnan
9e9470c6af Fix link to managed hosting 2017-05-31 21:49:28 -07:00
Girish Ramakrishnan
471539d64b CNAME output from dig has trailing dot 2017-05-30 21:14:28 -07:00
Girish Ramakrishnan
95127a868d 0.150.0 changes 2017-05-30 16:23:06 -07:00
Girish Ramakrishnan
f34d429052 kill the backup process if it runs for too long 2017-05-30 16:11:12 -07:00
Girish Ramakrishnan
82e53bce36 ensure backups and clean them every 6 hours
also, make sure they don't run at the same time.
2017-05-30 16:04:32 -07:00
Girish Ramakrishnan
b04a417cfc Cleanup errored and creating backups
Fixes #330
2017-05-30 15:16:08 -07:00
Girish Ramakrishnan
77641f4b51 Add backupdb.getByState and backupdb.getByTypeAndState
part of #330
2017-05-30 14:30:06 -07:00
Girish Ramakrishnan
765d20c8be Add backup states to track unfinished backups
part of #330
2017-05-30 13:43:30 -07:00
Girish Ramakrishnan
d2420de594 refactor backup cleanup logic 2017-05-30 13:43:30 -07:00
Girish Ramakrishnan
8e9da38451 update schema file 2017-05-26 22:23:24 -07:00
Girish Ramakrishnan
ddb69eb25c remove native-dns and use dig directly
native-dns module is unmaintained and we keep getting sporadic
errors from that module

Fixes #220
2017-05-26 16:51:05 -07:00
Girish Ramakrishnan
11697f11cf use constants for admin location 2017-05-24 15:41:37 -07:00
Girish Ramakrishnan
35a2a656d3 doc: fix path to node 2017-05-22 12:25:18 -07:00
Girish Ramakrishnan
6fc69c05ca Add noop storage backend
This is sometimes useful when an update gets stuck because of some
bug in backup logic.

Note that you cannot restore from this backend because nothing is
saved.
2017-05-22 10:45:01 -07:00
Girish Ramakrishnan
65cff35be6 Do not dump certs in the log files 2017-05-19 14:39:08 -07:00
Girish Ramakrishnan
7467907c09 Do not dump data in update script since it might have the cert 2017-05-19 14:34:20 -07:00
Girish Ramakrishnan
d6c32a2632 tweak redis memory limit based on app's memory 2017-05-18 15:39:38 -07:00
Johannes Zellner
7dc277a80c Give the backup task more memory 150 is often too close to the limit 2017-05-17 14:17:54 +02:00
Girish Ramakrishnan
4881d090f0 disable dnsmasq on ovh 2017-05-16 16:33:43 -07:00
Girish Ramakrishnan
48330423c6 Add 0.140.0 changes 2017-05-15 14:27:24 -07:00
Girish Ramakrishnan
88e844b545 Bump infra version to reconfigure apps for http2 support 2017-05-12 16:25:14 -07:00
Girish Ramakrishnan
f45da2efc4 Merge branch 'http2' into 'master'
Add HTTP/2 support to NGINX configs

See merge request !9
2017-05-12 23:23:41 +00:00
Girish Ramakrishnan
f422614e7b doc: new app store submission guidelines
Fixes #292
2017-05-11 15:58:02 -07:00
Johannes Zellner
d164f881ca Bring back code for alt domain match
There are no actual tests for this yet. Should be added.
2017-05-11 21:55:29 +02:00
Johannes Zellner
4994a5da49 Use -checkhost openssl subcommand 2017-05-11 21:31:01 +02:00
Johannes Zellner
393317d114 Automatically expand the failing dns records 2017-05-11 16:44:18 +02:00
Johannes Zellner
8de940ae36 Condense the dns checks in the settings view 2017-05-11 16:34:15 +02:00
Johannes Zellner
374130d12a Only set local dns server if run on a cloudron 2017-05-11 15:37:44 +02:00
Johannes Zellner
05fcdb0a67 Extract CN from cert with JS
unlike the sed script, this does not rely on the order openssl reports the subject entities
2017-05-11 15:19:02 +02:00
Johannes Zellner
23827974d8 Fix certificate validation to work with new openssl version as well 2017-05-11 14:58:29 +02:00
Girish Ramakrishnan
ae2c0f3503 Use new mail container (fix for exec) 2017-05-10 21:58:39 -07:00
Girish Ramakrishnan
cbb93ef7ad For low end cloudrons, give a delay between addon starts
Starting them all at once, sometimes hogs cpu/memory too much
and makes the startup scripts of the addons error.

The new addons setup a .setup file to confirm initialization.
In a future commit, we can use those .setup files to check if
the addon has started up instead of a timeout
2017-05-10 15:43:02 -07:00
Girish Ramakrishnan
4d3c6f7caa better error message 2017-05-09 11:24:47 -07:00
Girish Ramakrishnan
4f3c846e2b Add 0.130.3 changes 2017-05-09 09:22:07 -07:00
Girish Ramakrishnan
6ef2f974ae fs: Use key to determine backup extension 2017-05-08 16:03:29 -07:00
Girish Ramakrishnan
180cafad0c Fix restore of unencrypted backups 2017-05-08 15:48:32 -07:00
Girish Ramakrishnan
f707f59765 Only ext4 supports as data dir
Fixes #325
2017-05-08 15:25:16 -07:00
Girish Ramakrishnan
969ef3fb11 doc: ensure the data directory exists 2017-05-08 15:16:58 -07:00
Girish Ramakrishnan
7af3f85d7c cloudron-setup: pass --data-dir for all non 0.10x.x versions 2017-05-08 12:04:00 -07:00
Johannes Zellner
ffc0a75545 user.get() returns UserErrors 2017-05-08 13:51:19 +02:00
Johannes Zellner
d5b5bdb104 Replace old cloud logo with cloudron logo in error and no app pages 2017-05-08 13:51:19 +02:00
Girish Ramakrishnan
8ae65661dd redact the password so it is never displayed in logs 2017-05-05 15:36:47 -07:00
Johannes Zellner
423c4446de Show description if setup fails due to reserved username 2017-05-05 11:54:47 +02:00
Girish Ramakrishnan
53cffd5133 doc: Add note on A record for external domain 2017-05-04 20:49:53 -07:00
Johannes Zellner
15ff1fb093 Add changes for 0.130.2 2017-05-04 21:52:17 +02:00
Johannes Zellner
195d388990 Bring back tldExists() for the dns setup screen 2017-05-04 21:49:27 +02:00
Johannes Zellner
d008e871da Add changes for 0.130.1 2017-05-04 14:34:48 +02:00
Johannes Zellner
3e6295de92 Fix form validation for external domains 2017-05-03 15:25:24 +02:00
Ian Fijolek
788004245a Add HTTP/2 support to NGINX configs
This easy fix should improve performance with newer browsers especially
for applications that require many files to be sent over the wire
*cough*Nextcloud11*cough*

NGINX blog post about HTTP/2 support: https://www.nginx.com/blog/nginx-1-9-5/
2017-05-02 22:00:55 +00:00
Girish Ramakrishnan
be5221d5b8 bash gymnastics for password with spaces 2017-05-01 11:40:08 -07:00
Girish Ramakrishnan
dacc66bb35 Ignore fifo files during backup
Fixes #318
2017-05-01 10:11:41 -07:00
Girish Ramakrishnan
5f26c3a2c1 bump test image version 2017-05-01 09:46:20 -07:00
Girish Ramakrishnan
228af62c39 Add more changes to 0.130.0 2017-05-01 08:03:40 -07:00
Girish Ramakrishnan
b531922175 do not quote the argument 2017-04-30 22:17:23 -07:00
Girish Ramakrishnan
dad58efc94 Version 0.130.0 changes 2017-04-30 19:30:03 -07:00
Girish Ramakrishnan
7a3d3a3c74 Fix usage of tar.gz API 2017-04-30 17:42:55 -07:00
Girish Ramakrishnan
e5c42f2b90 Do a multipart download for slow internet connections
Fixes #317
2017-04-28 17:28:40 -07:00
Girish Ramakrishnan
6cbf64b88e use openssl password only when restore key is non-empty or backup ends with .enc 2017-04-28 15:00:17 -07:00
Girish Ramakrishnan
9635f9aa24 Use key to determine if we should encrypt or not
When encrypting we use the .enc extension. When not encrypting, we
use the plain .tar.gz extension.

Fixes #315
2017-04-28 14:50:20 -07:00
Girish Ramakrishnan
893f9d87bc make s3 upload use queueSize of 1 2017-04-28 14:50:08 -07:00
Girish Ramakrishnan
bfda0d4891 drop support for old format backups 2017-04-28 14:45:44 -07:00
Girish Ramakrishnan
65a62f9fbf allow backup prefix to be an empty string 2017-04-26 22:28:52 -07:00
Girish Ramakrishnan
6d74f7e26f doc: fix link for blacklist testing 2017-04-26 21:20:30 -07:00
Girish Ramakrishnan
14ca0c1623 Support naked domains as external location
Let the user add an A record for naked domains

Fixes #272
2017-04-26 15:56:39 -07:00
Girish Ramakrishnan
3f6e8273a7 remove hack to update docker 2017-04-26 15:50:01 -07:00
Girish Ramakrishnan
287b96925a Check if dns flag is in some intermediate state 2017-04-26 12:36:33 -07:00
Girish Ramakrishnan
608cc1e036 remove notification that can never trigger
this code comes from 0601ea2f39
2017-04-25 17:31:14 -07:00
Girish Ramakrishnan
5fa27c4954 show warning if domain config is not working
fixes #302
2017-04-25 17:31:09 -07:00
Girish Ramakrishnan
8deadece05 handle null tlsCert and tlsKey 2017-04-25 17:29:26 -07:00
Girish Ramakrishnan
797dc26f47 ip_based_setup.conf is long gone 2017-04-25 17:29:26 -07:00
Girish Ramakrishnan
ddf7823b19 Make box come up regardless of dns config
Part of #302
2017-04-25 16:53:14 -07:00
Girish Ramakrishnan
923e1d0524 Kill more event based logic 2017-04-25 16:36:38 -07:00
Girish Ramakrishnan
339bc71435 Rename onConfigured to onDomainConfigured 2017-04-25 14:09:13 -07:00
Girish Ramakrishnan
863612356d refactor addDnsRecords to take IP as argument 2017-04-25 14:06:13 -07:00
Girish Ramakrishnan
56cdaefecc configureAdmin on dns key change
This allows the user to re-get an admin certificate by updating
the DNS config.

Part of #302
2017-04-25 14:04:27 -07:00
Girish Ramakrishnan
9e611b6ae3 Run scheduler containers in cloudron network as well
This results in:
  box:scheduler Unhandled error:  { Error: (HTTP code 409) unexpected - Conflicting options: dns and the network mode

Part of #307
2017-04-25 12:25:21 -07:00
Girish Ramakrishnan
7e26b4091b use ":" in security-opt is deprecated 2017-04-25 11:41:05 -07:00
Girish Ramakrishnan
d7702b96e5 Also set dns args for redis addon
part of #307
2017-04-25 10:13:52 -07:00
Girish Ramakrishnan
41edd3778d Merge branch 'dns-fixes' into 'master'
Set DNS per container rather than the daemon

Closes #307

See merge request !6
2017-04-25 17:06:31 +00:00
Ian Fijolek
0ac69cc6c9 Add DNS args to platform containers 2017-04-25 15:21:23 +00:00
Johannes Zellner
fbb01b1ce7 Add 0.120.1 changes 2017-04-25 13:59:41 +02:00
Johannes Zellner
a723203b28 Fix typo of missing data argument 2017-04-25 13:48:12 +02:00
Girish Ramakrishnan
a995037f0a set retentionSecs of caas to 10 days 2017-04-24 19:06:19 -07:00
Girish Ramakrishnan
5ad4600fd4 More 0.120.0 changes 2017-04-24 16:29:52 -07:00
Girish Ramakrishnan
8ddb670445 simplify: start/stop taskmanager from platform logic 2017-04-24 15:48:23 -07:00
Girish Ramakrishnan
ca5723bbc7 more work on tests
disable the migrate tests for now
2017-04-24 15:45:23 -07:00
Girish Ramakrishnan
1b0a81cb3f make sysadmin test work 2017-04-24 15:21:42 -07:00
Johannes Zellner
d92a2b070c retry apt endlessly 2017-04-24 23:40:21 +02:00
Johannes Zellner
4703f1afda woops Revert "WIP"
This reverts commit ca7f80414e.
2017-04-24 16:18:01 +02:00
Johannes Zellner
3fad5e856c Do not cleanup any app backups which are referenced by an app through lastBackupId 2017-04-24 13:50:46 +02:00
Johannes Zellner
cc66830a2d Also cleanup app backups which are not referenced by a box backup 2017-04-24 13:41:23 +02:00
Johannes Zellner
880f7b4cd3 Allow to get backups by type in backupdb 2017-04-24 12:41:19 +02:00
Johannes Zellner
5b9d4daafe Add first backup cleanup tests 2017-04-24 12:34:57 +02:00
Johannes Zellner
410420e9d5 Ensure we keep at least one backup on cleanup
If for some reason backups fail for longer than the retention time
we should at least keep the latest around
2017-04-24 12:01:52 +02:00
Johannes Zellner
ca7f80414e WIP 2017-04-24 11:41:45 +02:00
Girish Ramakrishnan
81b705b25b give inner callback variable a different name 2017-04-23 22:51:07 -07:00
Girish Ramakrishnan
11c7ba1957 Say why filesystem is not recommended 2017-04-23 22:36:45 -07:00
Girish Ramakrishnan
f79e1993cb use debug() more 2017-04-23 22:10:44 -07:00
Girish Ramakrishnan
fe71dc22fc add note on lastBackupId 2017-04-23 22:00:17 -07:00
Girish Ramakrishnan
e3c72fa6ce remove src/ prefix in debug tags 2017-04-23 21:53:59 -07:00
Girish Ramakrishnan
27a542daec Do not show support tab for non-admins
Fixes #313
2017-04-23 21:25:14 -07:00
Girish Ramakrishnan
aeba8e8fd2 Use retentionSecs to cleanup backups
Part of #310
2017-04-23 19:34:00 -07:00
Girish Ramakrishnan
a0e122e578 Try to make tests work again 2017-04-23 18:03:40 -07:00
Girish Ramakrishnan
29ae2cf8ca Allow setting retentionSecs in backendConfig
Part of #310
2017-04-22 23:25:57 -07:00
Girish Ramakrishnan
abe72442ae Set default retentionSecs
Set to 2 days for filesystem provider and -1 (never) for s3/minio.

Part of #310
2017-04-22 21:46:26 -07:00
Girish Ramakrishnan
8e134f3ae8 make docker install script more robust 2017-04-22 19:22:01 -07:00
Girish Ramakrishnan
70042021aa caas: make migrate not send the restoreKey like upgrade 2017-04-22 18:28:58 -07:00
Girish Ramakrishnan
6cc708136e caas expects filename for migrations 2017-04-22 18:17:44 -07:00
Girish Ramakrishnan
00ac78c839 backup ui: clear form if selector changes 2017-04-22 14:14:21 -07:00
Girish Ramakrishnan
6f0c271e6e Make URL the first field for minio 2017-04-22 13:47:44 -07:00
Girish Ramakrishnan
ef3a125ce4 Move the info button 2017-04-22 13:36:28 -07:00
Girish Ramakrishnan
d91e8bb87b add minio as a separate backend
Fixes #308
2017-04-22 13:34:43 -07:00
Johannes Zellner
a7d7935451 Remove backup download code 2017-04-22 22:17:29 +02:00
Girish Ramakrishnan
8c011ea9b0 setup: do not dump sensitive fields in args 2017-04-22 11:57:00 -07:00
Girish Ramakrishnan
c41b2c32f5 Fix debug 2017-04-22 11:50:12 -07:00
Girish Ramakrishnan
1e90ec95d3 Add -y flag to apt install 2017-04-22 10:23:48 -07:00
Girish Ramakrishnan
1cca0aee6e refactor targz logic into separate file 2017-04-21 15:45:45 -07:00
Girish Ramakrishnan
be73ec4b66 Add oldFormat support to caas and s3 backends 2017-04-21 15:06:54 -07:00
Girish Ramakrishnan
6c8b9b8799 Propagate error messages from backuptask into box code 2017-04-21 14:26:34 -07:00
Girish Ramakrishnan
0aea7cc347 Add progress-stream for upload/download progress 2017-04-21 12:07:01 -07:00
Girish Ramakrishnan
e15c3f05c2 Pass DEBUG args to node.sh 2017-04-21 12:04:54 -07:00
Johannes Zellner
f516dddf30 Detect old backup format and pipe to openssl 2017-04-21 19:39:02 +02:00
Johannes Zellner
8fb1bc29d1 Fix storage tests for filesystem and s3 2017-04-21 17:21:10 +02:00
Johannes Zellner
cc8f8b2339 Only send backend specific fields on configuration 2017-04-21 16:52:10 +02:00
Johannes Zellner
f7338c8210 Show default filesystem storage location 2017-04-21 16:51:46 +02:00
Johannes Zellner
c04e8f33c5 Allow to change the backup storage provider in the ui 2017-04-21 16:37:17 +02:00
Johannes Zellner
8e1f190079 Implement check configuration for filesystem backend 2017-04-21 15:37:57 +02:00
Johannes Zellner
019cff8851 Wait for dpkg tasks to finish before installing new docker 2017-04-21 13:34:36 +02:00
Johannes Zellner
8a76788e7a From this version on encrypted backups don't use the openssl implicit salt 2017-04-21 10:58:52 +02:00
Johannes Zellner
33492333c7 Fix backupDone() for caas 2017-04-21 10:31:43 +02:00
Johannes Zellner
710cdc7bb8 Bring storage interface up to date 2017-04-21 10:01:58 +02:00
Johannes Zellner
0471a14894 We always encrypt even with empty key so make that clear with the file extension 2017-04-21 09:59:27 +02:00
Girish Ramakrishnan
e4b1b73408 Add more 0.120.0 changes 2017-04-20 20:16:12 -07:00
Girish Ramakrishnan
a6c2c608e4 storage/caas: bring it upto speed for new backup design 2017-04-20 20:12:45 -07:00
Girish Ramakrishnan
1cd36319ff s3: support setting the signatureVersion 2017-04-20 19:56:06 -07:00
Girish Ramakrishnan
a65611a37b Fix error handling in s3 backend 2017-04-20 19:27:12 -07:00
Girish Ramakrishnan
4769d14414 Mark all fs failures as external errors
This gets the right error message on failures:

$ cloudron machine backup create
Waiting for backup to finish...backup failed: ENOENT: no such file or directory, open '/var/backups/2017-04-21-013900-584/app_7549c6a1-682e-4150-8b40-2c31a3fa92f7_2017-04-21-013900-591_v0.7.1.tar.gz'
2017-04-20 19:01:12 -07:00
Girish Ramakrishnan
64c2f3d8c3 copyBackup() already returns a BackupError 2017-04-20 18:56:34 -07:00
Girish Ramakrishnan
2083efdef8 Fix PERM issue when restoring an app with redis
This is the root cause of 926224bd5d.

0488aada9f caused a regression where
we setup addons in the restore code path. This meant that redis was
instantiated and running, changing the perms of the dir. Then when
the backup extract happens it fails as it has wrong permissions.
2017-04-20 18:12:29 -07:00
Girish Ramakrishnan
a5efdb067d Revert "Add apprestoretask.js"
This reverts commit 926224bd5d.

This shouldn't be required. We already fix the perms

See 7035b3c18a
2017-04-20 18:12:29 -07:00
Girish Ramakrishnan
0584ace954 Remove StorageError from backends 2017-04-20 18:12:29 -07:00
Girish Ramakrishnan
77d23d6c15 return BackupsError on error 2017-04-20 18:12:29 -07:00
Girish Ramakrishnan
a0c3a531b3 Remove unused file 2017-04-20 18:12:29 -07:00
Girish Ramakrishnan
31ea1e677c Simply change ownership instead instead of umask fiddling 2017-04-20 18:12:25 -07:00
Girish Ramakrishnan
2479af23ab app backups must have app version (and not box version) 2017-04-20 17:29:21 -07:00
Girish Ramakrishnan
83f36981f7 Make box backups work again 2017-04-20 16:26:42 -07:00
Ian Fijolek
851e70be6e Bump version to force creation of new containers 2017-04-20 21:34:31 +00:00
Ian Fijolek
f0ba126156 Move dns-search from daemon to client as well
Verified no regression of #130
2017-04-20 21:33:16 +00:00
Ian Fijolek
9dd51575ab Set DNS per container rather than the daemon
All Cloudron containers need to have the nameserver 172.18.0.1. This was
being done at the daemon level, however since there are also iptables
rules restricting access to the nameserver from containers that aren't
on the Cloudron Docker network, this broke DNS for non-Cloudron
containers.

Since the DNS is only required for Cloudron containers in the first
place, this patch specifies 172.18.0.1 as the nameserver when Cloudron
creates a container and reverts the change at the daemon level
2017-04-20 19:02:10 +00:00
Girish Ramakrishnan
cf701b8eb0 Use apt install instead so that deps are installed 2017-04-20 10:37:46 -07:00
Girish Ramakrishnan
9b4e81b476 Fix curl usage 2017-04-20 10:19:00 -07:00
Johannes Zellner
788873e858 Add error callbacks for backup in filesystem and s3 2017-04-20 16:18:27 +02:00
Johannes Zellner
926224bd5d Add apprestoretask.js 2017-04-20 16:10:13 +02:00
Johannes Zellner
d9a0bf457d Don't make backup files executable 2017-04-20 16:02:13 +02:00
Johannes Zellner
6a5b0c194f No more restore mapping 2017-04-20 15:37:49 +02:00
Johannes Zellner
9f117fcfdc Also simplify the s3 backend 2017-04-20 15:35:52 +02:00
Johannes Zellner
fe01d1bf28 Keep storage api as simple as possible
Do not support the directory mapping, which is only used for box backups
This greatly simplifies things, but needs a special fix for the box.
2017-04-20 15:20:11 +02:00
Johannes Zellner
a94d44da75 Add generic node.sh to run node apps as root and with memory limitations 2017-04-20 15:20:11 +02:00
Girish Ramakrishnan
8ded006dea Fix apps.getLogs usage 2017-04-19 21:43:29 -07:00
Girish Ramakrishnan
5424a658f3 Do not read PTR records from /etc/hosts
Fixes #306
2017-04-19 19:34:22 -07:00
Girish Ramakrishnan
b268a18695 Just destroy the client socket 2017-04-19 09:14:00 -07:00
Johannes Zellner
06f1b9dd1b Ensure we only call callback once for port 25 check
On a caas cloudron we saw timeout and end events raised, causing the box
to crash as async throws on double callbacks
2017-04-19 14:35:22 +02:00
Johannes Zellner
e82bdfc996 Use a specific tag of our patched node-archiver 2017-04-19 13:38:46 +02:00
Johannes Zellner
40f5d0412b Bring the caas storage backend up to speed
This is mostly the same as the s3 backend at the moment
2017-04-19 13:30:05 +02:00
Johannes Zellner
65af062c33 Cleanup linter issues 2017-04-19 13:20:24 +02:00
Girish Ramakrishnan
68a1efe3d3 Download short format logs from web ui
Fixes #304
2017-04-18 21:04:45 -07:00
Girish Ramakrishnan
3cb4d4b1ab Add UI to download logs
Part of #304
2017-04-18 18:43:09 -07:00
Girish Ramakrishnan
0c706cffc0 Add API to get cloudron logs
part of #304
2017-04-18 15:19:26 -07:00
Girish Ramakrishnan
5f888341ea move eventlog api into /api/v1/cloudron 2017-04-18 15:18:00 -07:00
Girish Ramakrishnan
cf69a8c4ce move feedback route into /api/v1/feedback 2017-04-18 14:49:28 -07:00
Girish Ramakrishnan
a3ece64273 getDnsConfig only if admin 2017-04-18 14:41:02 -07:00
Girish Ramakrishnan
4bda11edcf Require admin for reboot, disk, graphs api 2017-04-18 14:31:55 -07:00
Girish Ramakrishnan
3913a8367b doc: provider is varied 2017-04-18 12:22:49 -07:00
Girish Ramakrishnan
bac0ea17c2 update packages
this also updates dockerode
2017-04-18 12:22:49 -07:00
Girish Ramakrishnan
d7f77de6c6 Add 0.120.0 changes 2017-04-18 12:22:49 -07:00
Girish Ramakrishnan
d2d2818b0b wrap curl command with retry and timeouts 2017-04-18 12:22:49 -07:00
Girish Ramakrishnan
b58fe9edd6 Update docker to CE 17.03
https://docs.docker.com/engine/installation/linux/ubuntu/#install-from-a-package
has helpful instructions.

This should also help use userns at some point (https://github.com/moby/moby/pull/25540)

Fixes #303
2017-04-18 12:22:32 -07:00
Girish Ramakrishnan
dee8bec2dc doc: add note about what we collect 2017-04-18 10:20:29 -07:00
Johannes Zellner
d5db9657ca Add s3 mock for the s3 storage tests 2017-04-18 19:15:56 +02:00
Johannes Zellner
9378b949fb Add s3 storage tests
Those are not mocked yet and require real aws things.
Change will follow for mocking. We should probably keep them optionally
working agains AWS directly to ensure things really work
2017-04-18 17:34:45 +02:00
Johannes Zellner
ad9cb00f13 Add s3 storage removeBackup() and getDownloadStream() implementations 2017-04-18 17:33:59 +02:00
Johannes Zellner
5ccca76b17 Fix typo 2017-04-18 17:33:17 +02:00
Johannes Zellner
cec52e14f6 Remove s3 backup test shell script 2017-04-18 16:58:27 +02:00
Johannes Zellner
977936018f Update aws-sdk node module 2017-04-18 16:49:30 +02:00
Johannes Zellner
261d15f0f7 Handle S3 not found errors 2017-04-18 16:47:49 +02:00
Johannes Zellner
14fe1dde58 s3 storage backend with backup and restore implemented 2017-04-18 16:28:39 +02:00
Johannes Zellner
737bbd26ee sort requires alphabetically 2017-04-18 15:32:59 +02:00
Johannes Zellner
f5db7c974f Sync the storage interface api 2017-04-18 14:55:22 +02:00
Johannes Zellner
7303a09f2f Support older backupIds which already include the type prefix 2017-04-18 14:39:48 +02:00
Johannes Zellner
e3cfaabb74 Ensure we keep the backup creationTimestamp on migration 2017-04-18 13:35:31 +02:00
Johannes Zellner
3cae400b63 We still want to store the restoreConfig config.json as part of the backup itself 2017-04-18 12:16:32 +02:00
Johannes Zellner
5dd10e7cd2 app restoreConfig file api is no more in the filesystem backend 2017-04-18 12:11:05 +02:00
Johannes Zellner
f12358a10c Do not save the restoreConfig json file in the backuptask 2017-04-18 12:10:39 +02:00
Johannes Zellner
23e3b0bd91 Get the restoreConfig from the database instead of the json file 2017-04-18 12:08:26 +02:00
Johannes Zellner
7a39cdda97 Store restoreConfig on backups 2017-04-18 12:02:15 +02:00
Johannes Zellner
5460027a49 Add restoreConfig to backupsdb.js 2017-04-18 11:57:59 +02:00
Johannes Zellner
4cfee06297 Follow the json field pattern 2017-04-18 11:47:18 +02:00
Johannes Zellner
d0147a5e67 Fallback to empty restoreConfig if migration fails 2017-04-18 11:36:57 +02:00
Johannes Zellner
a1dfc2b47b Add backups.restoreConfig field with migration 2017-04-18 11:33:43 +02:00
Girish Ramakrishnan
5eaade1079 doc: Add note on LE 2017-04-17 22:08:47 -07:00
Girish Ramakrishnan
19d8b90a12 pass IP in query parameter 2017-04-17 21:14:13 -07:00
Girish Ramakrishnan
6bc764090c Get geolocation info from geolocation.cloudron.io 2017-04-17 21:09:04 -07:00
Girish Ramakrishnan
d64c4927aa doc: add a privacy section 2017-04-17 20:44:42 -07:00
Johannes Zellner
9c45dec8b0 Fix permissions for the filesystem backend
node will always apply the umask, so we have to set and then restore it
properly
2017-04-17 20:26:06 +02:00
Johannes Zellner
a21750a4c9 Fix the mysql dump commandline 2017-04-17 20:26:06 +02:00
Johannes Zellner
dda16331f6 Remove unused rmbackup.sh 2017-04-17 20:26:06 +02:00
Johannes Zellner
7b93150047 Also add intermediate removeAppRestoreConfig() api 2017-04-17 20:26:06 +02:00
Johannes Zellner
a98177fe71 Ensure non-root permissions to the backups 2017-04-17 20:26:06 +02:00
Johannes Zellner
d95e68926b Remove unused backupapp.sh and backupbox.sh 2017-04-17 20:26:06 +02:00
Johannes Zellner
ff3a748398 Call backuptask.js directly as root to avoid trampoline shell scripts 2017-04-17 20:26:05 +02:00
Johannes Zellner
9354784f01 Remove unused cpbackup.sh 2017-04-17 20:26:05 +02:00
Johannes Zellner
e021a4b377 Remove unused restoreapp.sh 2017-04-17 20:26:05 +02:00
Johannes Zellner
4fac5a785f Add unit tests for the filesystem storage backend 2017-04-17 20:26:05 +02:00
Johannes Zellner
4d42c116ce Implement all the apis for the filesystem storage backend 2017-04-17 20:26:05 +02:00
Johannes Zellner
3879b55642 Also copy the app restore config file 2017-04-17 20:26:05 +02:00
Johannes Zellner
9d61ccaa45 Add custom archiver until upstream fixes 2017-04-17 20:26:05 +02:00
Johannes Zellner
6d8cf8456e Add filesystem backend encryption support
We will probably remove this but lets keep this for now
just to keep changes low in the next release.
2017-04-17 20:26:05 +02:00
Johannes Zellner
5e1ad4ad93 We need root access to copy backup files with the filesystem backend 2017-04-17 20:26:05 +02:00
Johannes Zellner
b29a6014d5 Remove unused shell variable 2017-04-17 20:26:05 +02:00
Johannes Zellner
bd7625031e The writeable stream end event is 'finished' 2017-04-17 20:26:05 +02:00
Johannes Zellner
9e881d1934 Gunzip the app backups 2017-04-17 20:25:59 +02:00
Johannes Zellner
31f93f0255 Use the directory property not the object 2017-04-17 20:09:10 +02:00
Johannes Zellner
67a7624da0 add an explicit saveAppRestoreConfig() api 2017-04-17 20:09:10 +02:00
Johannes Zellner
7fdf491815 Add backuptask.js to work with new storage interface 2017-04-17 20:09:02 +02:00
Johannes Zellner
798c2ff921 Return correct error if route53 security token is invalid 2017-04-16 12:52:14 +02:00
Girish Ramakrishnan
42c138e134 doc: appstore_config API 2017-04-15 07:30:58 -07:00
Girish Ramakrishnan
b1b389dd7d Use the POST routes to login to appstore 2017-04-15 07:13:42 -07:00
Girish Ramakrishnan
8911081f85 When dns config changes, only fixup the cloudron records 2017-04-14 19:52:44 -07:00
Girish Ramakrishnan
9605fe3842 Only change dns records of already installed apps 2017-04-14 19:48:58 -07:00
Girish Ramakrishnan
bb91faf23c mysql: Use utf8mb4 character set 2017-04-14 13:29:01 -07:00
Johannes Zellner
ba56f7d15d Special case versions lower than '0.11*' to not pass new --data-dir 2017-04-14 17:24:28 +02:00
Johannes Zellner
6e73761983 We still require the versionsUrl in the setup script to be able to restore to older versions 2017-04-14 15:05:09 +02:00
Girish Ramakrishnan
588812a13a Disable secure cookies for tests (since they use http) 2017-04-14 01:45:00 -07:00
Girish Ramakrishnan
b6d8721aed reset config in backups test 2017-04-14 01:35:04 -07:00
Girish Ramakrishnan
da835afde1 More test fixing 2017-04-14 01:28:29 -07:00
Girish Ramakrishnan
5e22caa6e7 Fix updatechecker tests 2017-04-14 00:36:22 -07:00
Girish Ramakrishnan
937931e885 Pass the token when querying for updates
Part of #293
2017-04-13 19:40:59 -07:00
Girish Ramakrishnan
c2b140208e doc: add note on subdomains vs paths 2017-04-13 16:11:12 -07:00
Girish Ramakrishnan
f9a4d00b3c Query tarball url via appstore
Part of #293
2017-04-13 15:41:08 -07:00
Girish Ramakrishnan
eb2ef47df1 remove boxVersionsUrl
update checker now uses the appstore routes
2017-04-13 11:38:42 -07:00
Girish Ramakrishnan
cdb5dc2c53 Remove isDev flag
We can pretty much test everything here on self-hosted cloudrons now
2017-04-13 11:34:03 -07:00
Girish Ramakrishnan
f6a2406091 Use hat for secret instead of uuid 2017-04-13 11:05:46 -07:00
Johannes Zellner
c7134d2da3 Use a dynamic cookie secret
Fixes #300
2017-04-13 15:13:07 +02:00
Johannes Zellner
1692842bf0 Enable secure cookies
Fixes #299
2017-04-13 14:04:30 +02:00
Johannes Zellner
8d78f06a34 Add more 0.110.0 changes 2017-04-13 13:23:40 +02:00
Johannes Zellner
1694a1536c Use our own tar for app backups
This is only temporarily as moving away from btrfs snapshots,
we introduced a regression for app backups.
gnu tar fails to create tarballs if the files change during packing.
2017-04-13 13:06:12 +02:00
Girish Ramakrishnan
e0b9dc3623 doc: fix links 2017-04-13 01:34:10 -07:00
Girish Ramakrishnan
644bc54a0d Get box updates via appstore API
Part of #293
2017-04-13 01:31:25 -07:00
Girish Ramakrishnan
b2d062bdf8 Get app updates via appstore API
Part of #293
2017-04-13 01:23:18 -07:00
Girish Ramakrishnan
894d7a6e72 Handle AppstoreError correctly 2017-04-13 01:11:20 -07:00
Girish Ramakrishnan
fee513594f Move sendAliveStatus to appstore.js 2017-04-13 01:07:07 -07:00
Girish Ramakrishnan
456c183622 Move sendAliveStatus into appstore.js 2017-04-13 00:52:02 -07:00
Girish Ramakrishnan
0488aada9f refactor appstore logic to separate file 2017-04-13 00:42:44 -07:00
Girish Ramakrishnan
54f7cf5f64 Fix copy/paste errors 2017-04-13 00:19:11 -07:00
Girish Ramakrishnan
e1740a0d4b Use new alive route for sending status 2017-04-12 21:29:42 -07:00
Girish Ramakrishnan
bac7d3ad84 Check for app and box updates once an hour
Part of #293
2017-04-12 18:48:14 -07:00
Girish Ramakrishnan
6402b0c221 doc: update check api 2017-04-12 18:38:33 -07:00
Girish Ramakrishnan
1f55bb52fc Add a button to check updates instantly
Part of #293
2017-04-12 18:34:20 -07:00
Girish Ramakrishnan
1029402d1e Make mailer.js work in test mode 2017-04-12 15:35:52 -07:00
Girish Ramakrishnan
abb371d81e Add 0.110.0 changes 2017-04-12 13:49:27 -07:00
Girish Ramakrishnan
779c9d79b3 Add UI to choose from backups to restore from
Fixes #296
2017-04-12 13:41:26 -07:00
Girish Ramakrishnan
832c11d785 Always show the restore button
Part of #296
2017-04-12 13:17:53 -07:00
Girish Ramakrishnan
85fb63298e Overwrite existing DNS record on restore 2017-04-12 13:17:50 -07:00
Girish Ramakrishnan
25b9d5a746 Fix comment 2017-04-12 00:17:20 -07:00
Girish Ramakrishnan
6dc900bbd8 Bump mysql to fix the encoding issue in dumps 2017-04-12 00:16:33 -07:00
Girish Ramakrishnan
e32b313cf2 refactor restore/clone/install into single function 2017-04-11 15:16:42 -07:00
Girish Ramakrishnan
a01dea3932 Allow installing from a backup 2017-04-11 13:06:39 -07:00
Johannes Zellner
aa0e820605 Bump infra version to rebuild nginx configs 2017-04-10 22:49:35 +02:00
Johannes Zellner
13db61a0e2 Merge branch 'master' into 'master'
Adding proxy_max_temp_file_size 0 to nginx config

Closes #294

See merge request !5
2017-04-10 20:48:50 +00:00
mehdi
fce2cdce7f Adding proxy_max_temp_file_size 0 to nginx config.
Explanation:
When proxying an HTTP request, nginx first fills up the memory buffers (set by proxy_buffer_size and proxy_buffers).
When these are full, it then writes them to a temporary file in batches of proxy_temp_file_write_size until it reaches proxy_max_temp_file_size.
When proxy_max_temp_file_size is not set, and a very large file is being served, it reaches the maximum of 1GB, and nginx begins to behave weirdly.
2017-04-10 22:47:19 +02:00
Johannes Zellner
89bb690152 Only log failing REST requests 2017-04-10 14:17:26 +02:00
Girish Ramakrishnan
5c203dc759 Handle case where restore config is not found 2017-04-07 15:29:42 -07:00
Girish Ramakrishnan
4d737d535a doc: disks api 2017-04-07 12:52:57 -07:00
Girish Ramakrishnan
558acf27a3 Add 0.109.1 changes 2017-04-07 12:38:48 -07:00
Girish Ramakrishnan
3da503ab8e doc: improve the data-dir script 2017-04-07 12:34:59 -07:00
Girish Ramakrishnan
299e8aceeb Check if --data-dir exists 2017-04-07 12:34:59 -07:00
Johannes Zellner
b422a27be8 Use the new disks api to explicitly get the apps data disk stats
We can add the other graphs if the disks deviate later

Also this is still pending the check if symlinked folders are reported
correctly.

Fixes #290
2017-04-07 18:46:11 +02:00
Johannes Zellner
f2312a6768 Add rest api to list disks where cloudron data is stored 2017-04-07 18:45:36 +02:00
Johannes Zellner
178ffe20a8 use df instead of node-df 2017-04-07 18:45:14 +02:00
Johannes Zellner
3b8edd4896 Do not make the DNS notfication persistent 2017-04-07 17:08:52 +02:00
Girish Ramakrishnan
f16aab7f80 Add --data-dir to cloudron-setup
This allows the data-dir to be re-located

Part of #148
2017-04-06 23:56:57 -07:00
Girish Ramakrishnan
09118d6b06 doc: how to configure data location 2017-04-06 15:31:43 -07:00
Girish Ramakrishnan
bd57ee9461 doc: more security notes 2017-04-06 13:53:35 -07:00
Girish Ramakrishnan
1fbbe036ce doc: appstore command 2017-04-06 13:46:40 -07:00
Johannes Zellner
94d7bc5328 Ensure the app install dialog closes and releases the backdrop when moving to other views
Fixes #201
2017-04-06 17:39:45 +02:00
Johannes Zellner
d709a5cfe4 Attempt to give better digitalocean DNS error messages 2017-04-05 16:50:31 +02:00
Johannes Zellner
188f000507 Dump whole errors for app installation progress
Sometimes on error we get random strings for the installationProgresss,
as those contain the upstream errors :-/
We now at least attempt to show that so the user may give us the real
error not some wrongly parsed bits from that.
In the long run we have to make that a real structure to give sane error
messages
2017-04-05 16:42:13 +02:00
Johannes Zellner
51d5b96fa1 use "mountpoint" to check if we have the user data mounted 2017-04-05 14:34:18 +02:00
Girish Ramakrishnan
11d12c591e Add 0.109.0 changes 2017-04-05 00:36:24 -07:00
Girish Ramakrishnan
245d17ad25 Fix test image version 2017-04-04 19:13:03 -07:00
Girish Ramakrishnan
e05e9c3ead Use latest test-app 2017-04-04 14:47:54 -07:00
Girish Ramakrishnan
8102d431e8 use debug instead 2017-04-04 14:07:28 -07:00
Girish Ramakrishnan
0f76cbbb95 remove temporary authorized_keys file 2017-04-04 14:00:41 -07:00
Girish Ramakrishnan
2a45a9bbd4 test: rate limit is now in nginx 2017-04-04 13:12:50 -07:00
Girish Ramakrishnan
e68d627f72 tests: data -> platformdata 2017-04-04 13:11:44 -07:00
Girish Ramakrishnan
1a3e3638ff iptables-restore is not used anymore 2017-04-04 13:00:48 -07:00
Girish Ramakrishnan
8f912d8a1b add note on how to view graphite browser 2017-04-04 12:35:29 -07:00
Girish Ramakrishnan
d891058f8c Restore apps if the existingInfra version is not semver (as in, old infra) 2017-04-04 12:15:29 -07:00
Girish Ramakrishnan
71fe094be1 Make platform version a semver 2017-04-04 12:07:53 -07:00
Johannes Zellner
da857f520b Only stop apps and addons on data migration 2017-04-04 14:30:45 +02:00
Johannes Zellner
39ff21bdf4 Bump infra version now with a explicit minor version 2017-04-04 12:34:55 +02:00
Johannes Zellner
72dd7c74d5 Introduce major/minor infra versions
The strategy now is that major infra version changes make apps restore,
whereas minor infra version changes only reconfigure and thus restart
them
2017-04-04 12:34:55 +02:00
Johannes Zellner
7c7ef15e1c Do not collect data for btrfs file systems 2017-04-04 12:34:55 +02:00
Johannes Zellner
b320e15ea7 No need to install btrfs-tools in the base image 2017-04-04 12:34:55 +02:00
Johannes Zellner
aa22ab8847 Cleanup the btrfs mounts and the user data file 2017-04-04 12:34:55 +02:00
Johannes Zellner
3e23c3efce Do not move the whole mail folder but only its content 2017-04-04 12:34:55 +02:00
Johannes Zellner
c4f96bbd6b Some directory creation fixes 2017-04-04 12:34:55 +02:00
Johannes Zellner
649092ecb0 Fix typo PLATFORM_CONFIG_DIR -> PLATFORM_DATA_DIR 2017-04-04 12:34:55 +02:00
Johannes Zellner
128a3b03c9 Do not use btrfs snapshots for mail on box backup 2017-04-04 12:34:55 +02:00
Johannes Zellner
847ef6626f Also use appsdir in rmappdir.sh 2017-04-04 12:34:55 +02:00
Johannes Zellner
4643daeeec Use appsdata in createappdir.sh 2017-04-04 12:34:55 +02:00
Johannes Zellner
38178afd31 Do not use btrfs snapshots for app backups 2017-04-04 12:34:55 +02:00
Johannes Zellner
9c6324631d Use APPS_DATA_DIR in app backup and restore scripts 2017-04-04 12:34:55 +02:00
Johannes Zellner
3a17bf9a0f Ensure apps and platform data dirs exist 2017-04-04 12:34:55 +02:00
Johannes Zellner
602f8bcd04 Split platform and app data folders and get rid of btrfs volumes 2017-04-04 12:34:55 +02:00
Girish Ramakrishnan
785ae765a4 better error text 2017-04-03 16:54:06 -07:00
Girish Ramakrishnan
c85120834c refactor ngTld so it can be used with plain strings 2017-04-03 16:20:32 -07:00
Johannes Zellner
89d36b8ad4 Reset the dns error states on resubmission 2017-04-03 22:36:02 +02:00
Johannes Zellner
b9711d7b47 Move AMI instanceId verification to DNS setup 2017-04-03 22:19:01 +02:00
Johannes Zellner
4f9273819a Ensure autofocus on setup.html 2017-04-03 16:45:04 +02:00
Johannes Zellner
e0d7850135 Add a tooltip to email field during setup 2017-04-03 16:33:07 +02:00
Girish Ramakrishnan
2c871705c7 Add a referrer policy 2017-03-31 16:11:54 -07:00
Girish Ramakrishnan
2bb99db2c7 Add another blacklist tester 2017-03-30 19:42:14 -07:00
Girish Ramakrishnan
3fc5757e97 doc: Add note on OS updates 2017-03-30 08:35:18 -07:00
Girish Ramakrishnan
92ff19ffce Add 0.108.0 changes 2017-03-29 22:20:13 -07:00
Girish Ramakrishnan
e9456f70f9 use connlimit module to rate limit
hitcount cannot be more than 255 in recent module
2017-03-29 21:51:24 -07:00
Girish Ramakrishnan
ffbda22145 Fine tune rate limits a bit more 2017-03-29 16:03:08 -07:00
Girish Ramakrishnan
b92ae44578 Generate 128 byte passwords 2017-03-29 15:38:15 -07:00
Girish Ramakrishnan
b6ffc966cd Bump mysql (for increasing multidb password len) 2017-03-29 15:21:49 -07:00
Girish Ramakrishnan
b42bc52093 doc: improve rate limit wording 2017-03-29 10:40:02 -07:00
Girish Ramakrishnan
806b458ff1 Move it to the selfhosting guide instead 2017-03-29 10:33:51 -07:00
Girish Ramakrishnan
d5d4e237bd doc: add security section 2017-03-29 10:23:08 -07:00
Girish Ramakrishnan
956fe86250 Add firewall service
Docker really insists on adding itself to the top of the FORWARD
chain. Making our firewall side-steps this docker design.
2017-03-29 02:31:53 -07:00
Girish Ramakrishnan
4d000e377f Enable iptables based ratelimit for cloudron auth services
The goal here is to simply add a rate limit to prevent brute
force password attacks.

Covered services includes:
    (public) http, https, ssh, smtp, msa, imap, sieve
    (private) postgres, redis, mysql, ldap, mongodb. msa

The private limits are higher because some apps will create
a db connection for each page request.  Some apps like mailtrain
will send out lots of emails etc.

Note that apps that use SSO are ratelimited by the ldap limit.

Part of #187
2017-03-29 00:02:05 -07:00
Johannes Zellner
39e827be04 Add rosehosting to the help output if no provider is specified 2017-03-28 10:38:00 +02:00
Girish Ramakrishnan
e50b4cb7ec doc: fixup the best practices docs
Fixes #232
2017-03-27 15:29:07 -07:00
Johannes Zellner
1938ec635b Remove bestpractices.md as this was already incorporated into the main packaging guide 2017-03-27 16:05:03 +02:00
Johannes Zellner
03a3d367a4 Incorporate best practices into app package guide
Part of #232
2017-03-27 16:03:19 +02:00
Johannes Zellner
38c2f75b5e Also patch the cloudron-setup to match the resize script
Part of #278
2017-03-27 13:51:37 +02:00
Johannes Zellner
9d98b55881 Merge branch 'tobru/fix_278' into 'master'
get disk_size_bytes by directly querying df /. fixes #278

Closes #278

See merge request !4
2017-03-27 11:46:49 +00:00
Girish Ramakrishnan
18e59c4754 Rate limit nginx routes that verify the password
Also remove rate-limit middleware

Test using something like:

    ab -v 1 -n 1000 -c 10 -s 5 -m POST https://my.<doamain>/api/v1/developer/login

Part of #187
2017-03-27 00:06:42 -07:00
Girish Ramakrishnan
64cb951206 Fix failing dns test 2017-03-26 22:07:28 -07:00
Girish Ramakrishnan
77df520b07 addons is optional in manifest 2017-03-26 21:55:31 -07:00
Girish Ramakrishnan
32f94a03ce Fix failing test 2017-03-26 21:53:45 -07:00
Girish Ramakrishnan
fc6ce4945f add sendmail/recvmail ldap tests 2017-03-26 20:42:46 -07:00
Girish Ramakrishnan
17b7d89db9 Generate password for mailboxes
Fixes #109
2017-03-26 20:07:59 -07:00
Girish Ramakrishnan
6ea741e92f Verify password for sendmail/recvmail addon
Part of #109
2017-03-26 20:07:55 -07:00
Girish Ramakrishnan
790ad4e74d Add getAddonConfigByName 2017-03-26 19:06:36 -07:00
Girish Ramakrishnan
f92297cc99 Store env vars as name, value pairs
Part of #109
2017-03-26 12:22:19 -07:00
Tobias Brunner
0c6c835a39 get disk_size_bytes by directly querying df /. fixes #278
This simplifies the logic to get the available space the root
mountpoint has available and makes it more robust.
2017-03-26 18:03:10 +02:00
Girish Ramakrishnan
514341172c Add name to appAddonConfigs
Part of #109
2017-03-25 18:06:56 -07:00
Girish Ramakrishnan
e535ffa778 Disable bind9 as it conflicts with unbound
part of #194
2017-03-25 17:36:10 -07:00
Girish Ramakrishnan
b86cfabd17 Do not allocate more than 4GB swap
Also resize existing swap file, if necessary. Note that if the user
allocates more than what we expect, we don't do anything.

Fixes #277
2017-03-24 16:03:30 -07:00
Girish Ramakrishnan
b44f0b78a1 remove spurious console.log 2017-03-24 14:55:22 -07:00
Johannes Zellner
76d234d0bf Also allow data: uri to be loaded for images 2017-03-24 17:23:20 +01:00
Johannes Zellner
a694acba44 Redirect to /setupdns.html if cloudron is activated but no domain is set
This happens in the restore case where no domain is provided to
cloudron-setup

Fixes #273
2017-03-23 15:40:18 +01:00
Johannes Zellner
046120befc Move email toggle button above checks to make it more likely people read the text 2017-03-23 11:41:26 +01:00
Girish Ramakrishnan
b65fee4b73 Pass ENABLE_MDA flag to mail addon 2017-03-22 20:42:28 -07:00
Girish Ramakrishnan
153dcc1826 Fix bug in example text 2017-03-22 18:23:24 -07:00
Girish Ramakrishnan
fa4725176c Group help text together 2017-03-22 16:44:18 -07:00
Girish Ramakrishnan
e42607fec6 Always show the password input 2017-03-22 16:13:18 -07:00
Girish Ramakrishnan
297c1ff266 Show error message only if the domain changed 2017-03-22 16:06:47 -07:00
Girish Ramakrishnan
5afe75f137 Bump mail container (for mx bypass fix) 2017-03-22 14:39:30 -07:00
Girish Ramakrishnan
4cfc85f6d3 Do not validate password length 2017-03-22 13:50:20 -07:00
Girish Ramakrishnan
b03f901bbf More 0.107.0 changes 2017-03-22 12:01:04 -07:00
Johannes Zellner
b9dfac94ed Revert "Add ldapjs-rate-limit module"
This reverts commit 3d60a04b36.
2017-03-22 19:35:06 +01:00
Johannes Zellner
c905adde1e Revert "Limit ldap queries per client to 60 per minute"
This reverts commit 466dfdf81f.
2017-03-22 19:35:06 +01:00
Girish Ramakrishnan
0e7efa77a5 Bump the mail container 2017-03-22 09:55:04 -07:00
Johannes Zellner
875ca0307f Fix the node tutorial to export the node PATH and use latest node release 2017-03-22 16:20:48 +01:00
Johannes Zellner
543c9843ba Use df instead of fdisk
some disk types do not contain proper partition tables like on time4vps
the type is simfs. On those fdisk fails to access the partition table,
thus being unable to determine the size of the volume.
df does only return the real usable disk space by the user, thus we
lower the 20GB threshold to 18

Fixes #275
2017-03-22 14:23:59 +01:00
Johannes Zellner
83254a16f9 Do not restrict CSP img-src as 3rd party apps might use other origins for medialinks 2017-03-21 20:20:16 +01:00
Johannes Zellner
466dfdf81f Limit ldap queries per client to 60 per minute
Part of #187
2017-03-21 16:43:22 +01:00
Johannes Zellner
3d60a04b36 Add ldapjs-rate-limit module 2017-03-21 16:43:02 +01:00
Johannes Zellner
103cb10cad Ignore upstream headers for security headers we set in nginx
Apps like nextcloud set their own security headers ending up with having
them set twice. I am not 100% sure if our headers should win or if we
should not inject headers with nginx if the upstream app sets them already.
This looks like the more permissive case where we simply enforce our
values, regardless what the apps sets.

This also fixes the nextcloud/owncloud security checks which were
failing because the header values were duplicated, which results in
string concatenation of values from same headers.
2017-03-21 14:18:39 +01:00
Johannes Zellner
29ef079a83 Do not let the invite link overflow the dialog 2017-03-21 13:36:36 +01:00
Johannes Zellner
a55645770e Add missing csp img-src policy for app icons 2017-03-21 13:25:29 +01:00
Johannes Zellner
132ddd2671 Add 0.107.0 changes 2017-03-21 11:15:51 +01:00
Johannes Zellner
fa5891b149 Also put csp meta tag in oauth views 2017-03-21 11:12:04 +01:00
Johannes Zellner
d01929debc Be more permissive with csp header values 2017-03-21 11:12:04 +01:00
Johannes Zellner
7c01ee58b5 Template the cloudron origin for csp to support local development 2017-03-21 11:12:04 +01:00
Johannes Zellner
ec89f8719c Add CSP meta tag for webadmin 2017-03-21 11:12:04 +01:00
Girish Ramakrishnan
9145022a2c Put scope in the end since it is pre-filled 2017-03-20 20:06:24 -07:00
Girish Ramakrishnan
9ae8ce3296 Change default oauth client scope to profile 2017-03-20 20:05:22 -07:00
Girish Ramakrishnan
eabf27f0c9 More OAuth wording changes 2017-03-20 19:55:27 -07:00
Girish Ramakrishnan
3102a15dff doc: add oauth note in user manual 2017-03-20 19:52:34 -07:00
Girish Ramakrishnan
7747c482d4 Fix oauth wording in the tokens UI 2017-03-20 19:12:32 -07:00
Girish Ramakrishnan
444ca1888b remove dead comment 2017-03-20 15:14:06 -07:00
Girish Ramakrishnan
86ccf5ea84 doc: add kimsufi note
Fixes #261
2017-03-20 14:32:35 -07:00
Girish Ramakrishnan
ef088293b6 Do not show repair and configure together 2017-03-20 08:48:50 -07:00
Johannes Zellner
e0df19c888 Remove unused api wrapper for getAppLogStream() 2017-03-20 10:46:27 +01:00
Girish Ramakrishnan
6a523606ca Revert "Bump version to Nginx IPv6 support."
This reverts commit 5555321cf5.
This reverts commit f087ebbee0.
This reverts commit d04f64d3d4.

Part of #264
2017-03-19 14:25:30 -07:00
Girish Ramakrishnan
b6cd40e63c Use latest manifestformat 2017-03-19 14:20:00 -07:00
Girish Ramakrishnan
b421866bf5 Remove simpleauth
Simple Auth used to provide auth over HTTP. The original motivation
behind this was this was a simple way to add Cloudron Auth integration.
Back in the day, Cloudron Auth was a requirement for apps but this is
not the case anymore.

This is currently not used by any app and having this might encourage
people to make Cloudron specific un-upstreamable changes.
2017-03-19 01:31:38 -07:00
Girish Ramakrishnan
fe06075816 more CHANGES 2017-03-17 13:49:47 -07:00
Girish Ramakrishnan
2b73eb90ec Merge branch 'ipv6' into 'master'
Add IPv6 Support

See merge request !3
2017-03-17 19:55:30 +00:00
Jonah Aragon
5555321cf5 Bump version to Nginx IPv6 support. 2017-03-17 19:43:54 +00:00
Jonah Aragon
f087ebbee0 Add listen [::]:80; for IPv6 redirects. 2017-03-17 19:13:18 +00:00
Jonah Aragon
d04f64d3d4 Add IPv6 listen directives 2017-03-17 19:12:25 +00:00
Girish Ramakrishnan
777a5a0929 Add 0.106.0 changes 2017-03-17 10:23:17 -07:00
Girish Ramakrishnan
6c297f890e Bump mail container 2017-03-17 10:23:17 -07:00
Johannes Zellner
3c8d0b1b37 Never hide the busy state on setup when it suceeded
In that case the whole page gets redirected and to avoid page flickering
we keep it at busy until the browser tears the whole page apart.
2017-03-16 09:58:21 +01:00
Johannes Zellner
74f2cd156f Only send setupToken on admin creation if it was actually specified 2017-03-16 09:37:28 +01:00
Girish Ramakrishnan
a9fdffa9af 0.105.1 changes 2017-03-15 21:15:15 -07:00
Girish Ramakrishnan
e6f8e8eb94 ami field is only required if shown 2017-03-15 21:10:22 -07:00
Girish Ramakrishnan
1bd89ca055 Wait for platform ready after box restarts
This is required for the case where the box restarts apptasks.
For example, the server can reboot mid-way when apptask is running
(as in cloudron-setup + appBundle case) and then when it comes back
up it doesn't wait for the platform to be ready. And the apps fail
to install (mysql takes a bit to startup)
2017-03-15 20:35:44 -07:00
Girish Ramakrishnan
0e226d0314 Download icon (for repair case) 2017-03-15 20:35:44 -07:00
Girish Ramakrishnan
e8d4e2c792 send more logs 2017-03-15 19:35:42 -07:00
Girish Ramakrishnan
4cfbed8273 Use inline docker pgp key
The one from keyserver keeps failing sporadically

https://github.com/docker/docker/issues/13555
https://github.com/docker/docker/issues/20022
http://askubuntu.com/questions/720517/key-server-times-out-while-installing-docker-on-ubuntu-14-04
2017-03-15 18:04:44 -07:00
Girish Ramakrishnan
0410ac9780 doc: activate api 2017-03-15 16:14:25 -07:00
Girish Ramakrishnan
82fcf6a770 setupToken is not required in activate 2017-03-15 15:55:31 -07:00
Girish Ramakrishnan
a1332865c0 Fix wording (should be prove otherwise) 2017-03-15 15:42:06 -07:00
Girish Ramakrishnan
ae0e4de93e No semicolons in bash code 2017-03-15 15:40:43 -07:00
Johannes Zellner
02a6525558 Add changes for 0.105.0 2017-03-15 14:56:35 +01:00
Girish Ramakrishnan
5afef14760 Actually send emails for responsive apps 2017-03-14 13:42:28 -07:00
Johannes Zellner
890d589a36 Do not show Route53 in dns setup for AMIs 2017-03-14 16:54:46 +01:00
Johannes Zellner
89a50c4b83 Use ami provider in ami creation script 2017-03-14 13:48:11 +01:00
Johannes Zellner
da5cd2b62c Show instance id input on cloudron setup for amis 2017-03-14 13:45:18 +01:00
Johannes Zellner
57321624aa Add ami setupToken verification in auth route 2017-03-14 13:45:04 +01:00
Johannes Zellner
876ae822b2 Skip splash setup if cloudron domain was not yet setup
This is based on the existence of admin.conf nginx file.
The splash would create/overwrite that file, but it will depend on the
host.cert to be already created, which is only the case after domain
setup.
2017-03-14 10:58:24 +01:00
Johannes Zellner
1ceb75868b Remove last remainder of apidocs 2017-03-14 10:12:17 +01:00
Johannes Zellner
98ad16f943 Remove unused requires 2017-03-14 10:10:59 +01:00
Johannes Zellner
9363746c1a Use ec2 sysinfo for ami provider 2017-03-14 09:34:39 +01:00
Johannes Zellner
7a1b9ab94c Support ami provider for ssh authorized_keys api 2017-03-14 09:34:11 +01:00
Johannes Zellner
46d6b5b81f Add hidden 'ami' provider for pre-built amis 2017-03-14 09:32:51 +01:00
Girish Ramakrishnan
7e8757a78c grep quietly 2017-03-13 13:52:16 -07:00
Girish Ramakrishnan
e508b25ecd Lower memory expectations 2017-03-13 13:05:59 -07:00
Girish Ramakrishnan
3fdc10c523 Parse free and fdisk output with C locale
some vps providers seem to set a different locale by default.
Settings LC_ALL overrides all the other LC_*
2017-03-13 10:36:05 -07:00
Johannes Zellner
717953c162 Half the backup progress polling 2017-03-13 13:28:14 +01:00
Johannes Zellner
daa34c3b4d add some asserts in the ldap code 2017-03-13 11:10:08 +01:00
Johannes Zellner
bf5c78d819 Refactor ldap user listing code to avoid pyramids 2017-03-13 11:09:12 +01:00
Johannes Zellner
1763144278 Only list users in ldap groups who have access to the app
Fixes #215
2017-03-13 11:06:29 +01:00
Johannes Zellner
2f598529fc Only list users who have access to the app in an ldap search
Part of #215
2017-03-13 11:02:45 +01:00
Girish Ramakrishnan
8264e69e2f remove unused require 2017-03-10 14:52:31 -08:00
Johannes Zellner
b0638df94e Only show the remote support for admins 2017-03-10 17:21:01 +01:00
Johannes Zellner
bb61eee557 Add missing quote in support view 2017-03-10 17:17:51 +01:00
Johannes Zellner
39c39b861d Require admins for authorized_keys route 2017-03-10 17:16:45 +01:00
Girish Ramakrishnan
e3deda4ef3 Always show port 25 status 2017-03-09 16:21:47 -08:00
Girish Ramakrishnan
7e44e7de82 Check outbound port 25
Fixes #243
2017-03-09 16:20:53 -08:00
Girish Ramakrishnan
9dd0518c00 Show email settings for non-caas
This is because people can use route53/DO now and we can show them
the RDNS settings as well.
2017-03-09 15:21:43 -08:00
Girish Ramakrishnan
81313d1c40 reduce nxdomain caching timeout
the other option is to use "/usr/sbin/unbound-control flush_negative"
on demand
2017-03-09 15:03:14 -08:00
Girish Ramakrishnan
2ceccc4557 Add note for caas users about enabling email 2017-03-09 14:25:03 -08:00
Girish Ramakrishnan
1c36918e92 Done -> Almost done 2017-03-09 10:21:52 -08:00
Girish Ramakrishnan
8d93df23c1 doc: cnameTarget 2017-03-09 10:00:42 -08:00
Johannes Zellner
0c06b34a2c Add more changes for 0.104.0 2017-03-09 15:38:09 +01:00
Johannes Zellner
fe980eab7f Show either cnameTarget or fqdn for CNAME setup hint
Fixes #101
2017-03-09 15:23:17 +01:00
Johannes Zellner
979b903bf2 Add cnameTarget for apps using an external domain
We have 4 properties related to the domain:
1) location, is the subdomain location without information how to craft
a fqdn on the client
2) fqdn, the intended domain to reach the app
3) altDomain, just the value for the external domain, merely a db record
value
4) cnameTarget, mostly for display purpose on the client, which
otherwise has no way to build the original cloudron local fqdn
2017-03-09 15:11:27 +01:00
Johannes Zellner
4b8ee0934a Add Cloudron cancel link to the settings view
Fixes #251
2017-03-09 13:36:29 +01:00
Girish Ramakrishnan
0439725790 Bump infra version 2017-03-08 22:27:41 -08:00
Girish Ramakrishnan
4b3ef33989 Add some basic secure headers
Part of #249
2017-03-08 22:14:44 -08:00
Girish Ramakrishnan
9e99d51853 do not remote support for caas 2017-03-08 16:15:13 -08:00
Girish Ramakrishnan
00a9fa8f34 fix wording a bit 2017-03-08 16:11:45 -08:00
Girish Ramakrishnan
84a35343d1 Display <sso> and <nosso> contents based on SSO 2017-03-08 15:16:15 -08:00
Girish Ramakrishnan
397bd17c55 update showdown to 1.6.4 2017-03-08 15:01:07 -08:00
Girish Ramakrishnan
c8e377a9bd doc: scaleway may need reboot for security group to take effect 2017-03-08 10:34:12 -08:00
Johannes Zellner
90e3138bae Show the correct postInstall message after app installation
Fixes #255
2017-03-08 15:42:29 +01:00
Girish Ramakrishnan
24b32a763b Add comments for CLI tool 2017-03-07 12:44:17 -08:00
Johannes Zellner
69a12d36ef Also give lightsail the special user treatment 2017-03-07 16:51:58 +01:00
Johannes Zellner
1485718fa6 Special treatment for ec2 and authorized_key user 2017-03-07 16:44:04 +01:00
Johannes Zellner
750f03d9de Add the public key of our support ssh key 2017-03-07 16:13:48 +01:00
Johannes Zellner
b5ddf1d24d Add ssh support toggle button in the support view 2017-03-07 16:12:00 +01:00
Johannes Zellner
043a35111d Remove unused requires in ssh test 2017-03-07 16:11:21 +01:00
Johannes Zellner
676457b589 Add authorized_key wrappers to client.js 2017-03-07 16:07:25 +01:00
Johannes Zellner
e61f11be81 Since we need root to save the authorized_key file we do it via sudo script 2017-03-07 15:16:41 +01:00
Johannes Zellner
101a44affd Add authorized_keys.sh 2017-03-07 15:16:18 +01:00
Johannes Zellner
7995c664ed Add shell.sudoSync() 2017-03-07 15:14:37 +01:00
Johannes Zellner
6023c0e5dc Ensure the authorized_file permissions are correct 2017-03-07 14:39:14 +01:00
Johannes Zellner
d49d76c1ee add ssh route tests and fixup the code accordingly 2017-03-07 14:12:25 +01:00
Johannes Zellner
77ef212daa Add SSH authorized_keys routes 2017-03-07 13:16:28 +01:00
Johannes Zellner
7aa80193c0 Add more changes 2017-03-06 10:47:36 +01:00
Johannes Zellner
5632c74556 Add isadmin ldap attribute
Fixes #241
2017-03-06 10:45:50 +01:00
Girish Ramakrishnan
7a08745af1 doc: add the 20gb requirement 2017-03-05 18:31:31 -08:00
Girish Ramakrishnan
d9ba0858c7 Add 0.103.1 changes 2017-03-03 09:42:31 -08:00
Johannes Zellner
617e51d294 Adjust the oom notification email 2017-03-03 11:04:48 +01:00
Johannes Zellner
c07d322fff Do not send ldap records for users without a username set
If an app relies on the attribute to be set, apps like owncloud would
fail internally.
2017-03-03 10:18:38 +01:00
Girish Ramakrishnan
9b8fa8a772 doc: sso 2017-03-02 15:15:15 -08:00
Girish Ramakrishnan
c351242af7 lie about the time if it is ahead of us
Fixes #247
2017-03-02 14:34:18 -08:00
Johannes Zellner
55245557f5 Use the new app login event in the webadmin
Part of #247
2017-03-02 17:15:01 +01:00
Johannes Zellner
ee1cef3ee8 Add new event type for app mailbox ldap login 2017-03-02 17:13:19 +01:00
Girish Ramakrishnan
5d51a7178f domain migrate: Add text that subdomains are not supported 2017-03-01 15:45:37 -08:00
Girish Ramakrishnan
9d52397bcc Move dhparam creation
Now that all cloudrons have the dhparams file, we can generate this
*after* restoring from backup and if required.
2017-03-01 15:25:20 -08:00
Girish Ramakrishnan
5098fbe061 Version 0.103.0 changes 2017-03-01 13:08:49 -08:00
Girish Ramakrishnan
7062aa4ac7 use test image 19.0.1 2017-02-28 20:21:02 -08:00
Girish Ramakrishnan
d6fec4f2b9 alertsTo must be an array 2017-02-28 18:17:17 -08:00
Girish Ramakrishnan
86ef462c76 doc: add email/recvmail to allowed addon keys 2017-02-27 06:51:54 -08:00
Girish Ramakrishnan
c76e7a3f63 randomize the cn in ip based cert
Fixes #224
2017-02-25 15:38:15 -08:00
Girish Ramakrishnan
2516a08659 remove reference to npm-demo from manifest 2017-02-25 13:36:27 -08:00
Girish Ramakrishnan
562fe30333 Update cloudron-manifestformat
adds the upcoming tls addon
2017-02-24 22:13:28 -08:00
Girish Ramakrishnan
4e0eed4bb2 make tests pass 2017-02-24 21:48:38 -08:00
Girish Ramakrishnan
b604caec72 Get rid of x509 module
This is the last of the "native" modules. These modules take forever
to rebuild in low memory machines
2017-02-24 21:01:48 -08:00
Girish Ramakrishnan
6b409e9089 Do not send crash logs to support in self-hosted case
Fixes #242
2017-02-24 10:40:51 -08:00
Girish Ramakrishnan
015d434358 remove unused require 2017-02-24 10:39:03 -08:00
Girish Ramakrishnan
c8e448cb84 Remove support@cloudron.io in app died mails
part of #242
2017-02-24 10:36:48 -08:00
Girish Ramakrishnan
03924be491 self-hosted: do not cc support for bounce mails from apps
part of #242
2017-02-24 10:34:07 -08:00
Girish Ramakrishnan
2729cecf4a self-hosting: remove support@cloudron.io frmo oom mails, cert renewal and backup failure mails
Part of #242
2017-02-24 10:25:20 -08:00
Girish Ramakrishnan
32e2377828 sysinfo: getIp -> getPublicIp 2017-02-23 22:03:48 -08:00
Girish Ramakrishnan
fdb8139b03 createAMI: better help text 2017-02-23 15:44:56 -08:00
Girish Ramakrishnan
4b25c8a5ad Add 0.102.1 changes 2017-02-23 11:08:15 -08:00
Girish Ramakrishnan
ae930a7fe8 dns setup: fix wording a bit 2017-02-23 10:57:05 -08:00
Johannes Zellner
3b9144ba4d Alter the backups.dependsOn field to store as TEXT
Fixes #239
2017-02-23 17:56:34 +01:00
Johannes Zellner
be6ea3d4c1 Add rosehosting to selfhosting docs 2017-02-22 16:02:03 +01:00
Girish Ramakrishnan
a2983e58b5 doc: typo 2017-02-21 11:24:25 -08:00
Girish Ramakrishnan
a99e86a5df doc: fix wording on base image a bit 2017-02-21 11:16:10 -08:00
Girish Ramakrishnan
906ad80069 Add terms link 2017-02-20 15:59:40 -08:00
Girish Ramakrishnan
ac65f765e5 doc: emphasize the traffic mgmt bit 2017-02-20 14:58:27 -08:00
Girish Ramakrishnan
c5bfe82315 more 0.102.0 changes 2017-02-20 14:13:53 -08:00
Girish Ramakrishnan
7035b3c18a Fix issue where redis is unable to write on re-configure
The configure code path now ensures the volume which ends up
changing the ownership of the data directory. This means that the
redis container which is still running cannot write anymore
when it is re-created as part of setupAddons().

Just change ownership of top level directory. The subdirectores
like data/ redis/ are owned by containers which will chown
accordingly.
2017-02-20 13:32:05 -08:00
Girish Ramakrishnan
2108c61d97 Send machine info as part of alive status 2017-02-20 13:13:25 -08:00
Johannes Zellner
2bdbb47286 Fix crash when a user does not yet have an username 2017-02-20 21:59:16 +01:00
Johannes Zellner
333b8970b8 Add rosehosting afiliate link 2017-02-20 14:42:22 +01:00
Girish Ramakrishnan
5673cfe2be bump version 2017-02-19 21:48:33 -08:00
Girish Ramakrishnan
4429239dbc Fix debug 2017-02-19 20:30:35 -08:00
Girish Ramakrishnan
b6ab9aa9f5 Add 0.102.0 changes 2017-02-19 17:22:52 -08:00
Girish Ramakrishnan
84bde6327f graphs: Better disk name matching
For some reason, docker devices are collected in collectd stats (despite
us collecting only ext4 and btrfs devices). They have the patter *docker*.

Fixes #222
2017-02-19 15:53:18 -08:00
Girish Ramakrishnan
d6f49eb54f Remove _docker addon
this was a highly experimental code path from the past
2017-02-19 13:44:55 -08:00
Johannes Zellner
3c8c5e158b Send cloudron time zone with the backendSettings 2017-02-19 22:47:36 +01:00
Girish Ramakrishnan
b3045b796f Configure dialog becomes 'repair' in errored state
Fixes #228
2017-02-18 13:17:46 -08:00
Girish Ramakrishnan
c0febacc30 Remove configureLink
postInstallMessage already has this information
2017-02-18 12:52:47 -08:00
Johannes Zellner
f8ada91dc5 Add rosehosting provider 2017-02-18 12:01:49 +01:00
Johannes Zellner
d0e2ce9a9e Support Linode 1GB instance with cloudron-setup 2017-02-18 12:00:26 +01:00
Girish Ramakrishnan
e157608992 doc: add note on memory limit 2017-02-17 13:47:19 -08:00
Girish Ramakrishnan
8dbe0ddaf3 doc: add note about incoming email 2017-02-17 13:01:23 -08:00
Girish Ramakrishnan
b0cb18539c doc: add note to keep all ports open 2017-02-17 12:58:08 -08:00
Girish Ramakrishnan
97b6d76694 Explain certificate renewal error a bit more
Fixes #225
2017-02-17 10:41:33 -08:00
Girish Ramakrishnan
9de6c8ee2b doc: expand provider argument 2017-02-17 10:29:40 -08:00
Johannes Zellner
cd28b1106b Only create app subvolume if it does not exist
Fixes #227
2017-02-17 15:15:50 +01:00
Johannes Zellner
b3a5dafee0 Ensure we download docker images and have an app data volume on configure
Part of #227
2017-02-17 15:00:58 +01:00
Johannes Zellner
eb4ab8defd Change cert CN from 'localhost' to 'cloudron'
Apparently localhost is special and triggerd a strange behavior in
firefox. Fixes #224
2017-02-17 14:05:21 +01:00
Girish Ramakrishnan
639744e9cb async.every usage has changed 2017-02-16 20:20:46 -08:00
Girish Ramakrishnan
6a942ab27a Use latest async for Inifinity retry to work 2017-02-16 19:22:07 -08:00
Girish Ramakrishnan
278f1d6d24 use curl with reconnect 2017-02-16 17:32:44 -08:00
Girish Ramakrishnan
563eeca1a9 Use the capture match length 2017-02-16 15:32:46 -08:00
Girish Ramakrishnan
7a9c954646 use ec2 sysinfo backend for lightsail 2017-02-16 14:47:16 -08:00
Johannes Zellner
d768c36afb use generic sysinfo backend as fallback 2017-02-16 23:20:15 +01:00
Johannes Zellner
36ae3b267d Use better vultr referral link 2017-02-16 22:52:08 +01:00
Girish Ramakrishnan
cd60f394d3 Use 1gb droplet (else docker ooms) 2017-02-16 11:52:25 -08:00
Johannes Zellner
9aba90a6f7 Show error message if subdomain was entered in setupdns view 2017-02-16 20:08:13 +01:00
Girish Ramakrishnan
68a8155f49 skip redis addon incremental update
Part of #223
2017-02-16 10:31:02 -08:00
Girish Ramakrishnan
16695fd4ec remove 0.9.0 2017-02-16 09:25:17 -08:00
Girish Ramakrishnan
9b6c6dc709 doc: base image 0.10.0 2017-02-16 09:20:27 -08:00
Girish Ramakrishnan
7923ed4f0d 0.101.0 changes 2017-02-15 23:31:28 -08:00
Girish Ramakrishnan
0b3d1c855c get the user before updating it
updating a non-existent user ends up creating a new mailbox
2017-02-15 23:19:56 -08:00
Girish Ramakrishnan
d8273719d2 more robust detection and injection of SPF record
Fixes #210
2017-02-15 23:03:56 -08:00
Girish Ramakrishnan
c6d2c39ff7 add azure 2017-02-15 20:10:33 -08:00
Girish Ramakrishnan
6960afdf0b Add more providers for stats 2017-02-15 15:49:00 -08:00
Girish Ramakrishnan
3a5000ab1d Detect loop support on linode correctly
We don't need any of the loop logic since it seems scaleway
also supports automatically this now
2017-02-15 15:40:19 -08:00
Girish Ramakrishnan
98951bab9e Store data args in file just in case installer fails 2017-02-15 14:27:51 -08:00
Girish Ramakrishnan
96fc3b8612 doc: pass --domain for old upgades to work 2017-02-15 11:59:55 -08:00
Girish Ramakrishnan
2b345b6c2d doc: Add note on <= 0.94.0 upgrades 2017-02-15 11:43:56 -08:00
Girish Ramakrishnan
504662b466 acme: link url is absolute in le-staging
Part of #217
2017-02-15 10:40:05 -08:00
Girish Ramakrishnan
f56e6edbe4 use subdomains.waitForDns in mailer 2017-02-15 10:16:26 -08:00
Girish Ramakrishnan
191b84d389 Make value a regexp 2017-02-15 10:16:23 -08:00
Girish Ramakrishnan
8a4350d22e upsert already returns a SubdomainError 2017-02-14 22:29:33 -08:00
Girish Ramakrishnan
cc6dae0f9e check if ns is set to DO nameservers 2017-02-14 22:27:27 -08:00
Girish Ramakrishnan
58528450e2 dns: Handle 422 errors in DO backend
Fixes #214
2017-02-14 20:51:44 -08:00
Girish Ramakrishnan
ebf3559e60 Assume mailbox already exists 2017-02-14 15:42:38 -08:00
Girish Ramakrishnan
57d20b2b32 Assume mailbox already exists 2017-02-14 15:32:56 -08:00
Girish Ramakrishnan
fd27240b26 delete user's old mailbox
we don't really support username change. this is only done for
completness.
2017-02-14 15:16:08 -08:00
Girish Ramakrishnan
cad69d335c Fix result offset 2017-02-14 14:37:58 -08:00
Girish Ramakrishnan
1f08cca355 Add some newlines 2017-02-14 14:30:54 -08:00
Girish Ramakrishnan
7f4f525551 dhparams.pem must be part of backup 2017-02-14 14:12:03 -08:00
Girish Ramakrishnan
b0037b6141 Update infra images to use latest base image 2017-02-14 12:23:17 -08:00
Girish Ramakrishnan
7956c8f58d use latest mysql 2017-02-14 11:27:48 -08:00
Girish Ramakrishnan
330c9054b4 add/del/update user mailbox as part of transaction 2017-02-14 10:42:32 -08:00
Girish Ramakrishnan
d444d8552e add/del group mailbox as part of transaction 2017-02-14 09:54:52 -08:00
Girish Ramakrishnan
595bf583c7 delete mailbox as part of transaction 2017-02-13 15:19:17 -08:00
Girish Ramakrishnan
3386b99a29 fromEmail -> mailboxName 2017-02-13 15:15:07 -08:00
Girish Ramakrishnan
5fd667cdaf manual is not recommended 2017-02-13 11:20:07 -08:00
Johannes Zellner
4217db9e18 Ensure we don't crash if domain is not a string
Fixes #219
2017-02-13 13:21:25 +01:00
Johannes Zellner
b4717e2edb Generating the dhparams.pem does not only apply to updates 2017-02-13 10:53:08 +01:00
Johannes Zellner
1d5465f21e Update the ssl ciphers and add dhparams.pem
Fixes #218
2017-02-13 00:28:22 +01:00
Johannes Zellner
2f1998fa67 Fix typo in cloudron-setup 2017-02-12 20:48:36 +01:00
Girish Ramakrishnan
a7e998c030 Add new base image 2017-02-10 09:15:47 -08:00
Johannes Zellner
8cc15726ec Prevent the domain input from accepting trailing dots 2017-02-10 11:18:44 +01:00
Johannes Zellner
62e59868b4 Use the whole fontawesome package including fonts
The css file sources fonts relative to itself, so we need to include the
font files in our distribution as well.

Fixes #209
2017-02-10 10:53:32 +01:00
Girish Ramakrishnan
a64027f4af Add PTR verification link 2017-02-09 19:17:24 -08:00
Girish Ramakrishnan
f5a02930ec Use local bootstrap 3.3.7
We have 2 copies of bootstrap now. Just keeping both to be safe.
2017-02-09 14:37:44 -08:00
Girish Ramakrishnan
530ca20ee2 Use local font-awesome.min.css
Fixes #209
2017-02-09 14:37:44 -08:00
Girish Ramakrishnan
f3b84ece3d doc: say what Encryption key is 2017-02-09 13:21:52 -08:00
Girish Ramakrishnan
ca2d5957e4 Add canada and london to backup regions
Fixes #208
2017-02-09 12:59:13 -08:00
Girish Ramakrishnan
7837214276 Second Level -> Subdomain of public suffix list 2017-02-09 09:04:24 -08:00
Johannes Zellner
994202ca94 Use angular-tldjs for domain validation in certs view 2017-02-09 17:28:48 +01:00
Johannes Zellner
ff7ceb1442 remove domain-validator directive
we will replace with angular-tldjs
2017-02-09 17:27:20 +01:00
Johannes Zellner
56545b7f41 Use check-tld directive for domain validation 2017-02-09 17:25:57 +01:00
Johannes Zellner
586e78dfea Apply manual fixes to angular-tld.js to support our use-case 2017-02-09 17:25:37 +01:00
Johannes Zellner
92ede4c242 Make the tld angular directive available in the main view and setupdns 2017-02-09 16:56:32 +01:00
Johannes Zellner
5ca2c2d564 Add angular-tld and its dependencies 2017-02-09 16:56:15 +01:00
Girish Ramakrishnan
9692aa3c08 Better error handling of unpurchase errors 2017-02-08 18:55:41 -08:00
Girish Ramakrishnan
10ad1028ae 0.100.1 changes 2017-02-08 15:14:14 -08:00
Johannes Zellner
7155856b08 Allocate the mailbox db record for apps in a transaction with appdb.add() 2017-02-08 23:52:14 +01:00
Girish Ramakrishnan
69aa771d44 Fix dkim dns crash
Fixes #207
2017-02-08 14:02:30 -08:00
Girish Ramakrishnan
d164b5ae3a docs: add ptr links 2017-02-08 11:04:00 -08:00
Girish Ramakrishnan
b34d09f547 ldap: Fix crash if displayName is empty and username is null 2017-02-08 10:13:50 -08:00
Girish Ramakrishnan
9e2850ffad setup: do not restart mysql unnecessarily 2017-02-08 07:53:55 -08:00
Johannes Zellner
480cface63 Do not crash if we did not receive a dmarc txt record 2017-02-08 16:55:08 +01:00
Girish Ramakrishnan
85aba589b8 Add hack to send heartbeat only after a minute of server running 2017-02-07 20:25:30 -08:00
Girish Ramakrishnan
e890140aa9 Hold off sending heartbeat until the server is ready 2017-02-07 16:14:51 -08:00
Girish Ramakrishnan
53d56ef3a0 console.error -> debug 2017-02-07 10:48:51 -08:00
Girish Ramakrishnan
b91674799b Create/destroy event listeners
mocha loads all the tests in same process. This means that when
we start a new test, the old state still persists. For event
listeners, this means that they get multiple duplicate event handlers.
2017-02-07 10:30:52 -08:00
Girish Ramakrishnan
4bb864e2ac use debug() instead
the tests are spewing out logs like crazy
2017-02-07 09:18:45 -08:00
Johannes Zellner
7db091525e Do not reboot the server on AMI creation
This will anyways happen once a new EC2 instance is created from the ami
and this ensures we do not encounter an SSH disconnect error when
running the cloudron-setup script during image creation
2017-02-07 12:49:28 +01:00
Johannes Zellner
695923ed75 cloudron-setup: support --skip-reboot for image creation 2017-02-07 12:49:28 +01:00
Johannes Zellner
1b43ccca6f Use new db-migrate which allows to specify the db backend
We use only mysql, so updating this means a lot of unused db backends
like sqlite do not need to be built with gyp anymore.
Note that this version is not yet released as stable, but works fine for
us. The outstanding issues are not related to our use-case from what I
can tell.

Fixes #82
2017-02-07 12:49:28 +01:00
Girish Ramakrishnan
96a0bad149 generate dkim keys in tests
move out dkim creation code that the tests require
2017-02-07 01:32:50 -08:00
Girish Ramakrishnan
243ade15e1 tests: restore aws.route53 mock 2017-02-07 01:32:34 -08:00
Girish Ramakrishnan
9d3cf990d1 Fix app test 2017-02-07 00:45:24 -08:00
Girish Ramakrishnan
02bcff2223 set isCustomDomain to true by default
CaaS is an exception and not the norm
2017-02-06 23:58:06 -08:00
Girish Ramakrishnan
8f388c86a6 do not unlink config file in test mode
this was incredibly hard to debug
2017-02-06 22:39:22 -08:00
Girish Ramakrishnan
8dc929f0ff Fix update checker test 2017-02-06 16:33:55 -08:00
Girish Ramakrishnan
509bd7e79b Make settings-test pass 2017-02-06 16:02:30 -08:00
Girish Ramakrishnan
19c665d747 docker daemon is deprecated 2017-02-06 11:33:10 -08:00
Girish Ramakrishnan
cb09086ae8 Add dmsetup required by docker 2017-02-06 11:32:08 -08:00
Johannes Zellner
fa915d0b23 Check for activated instead of fqdn to redirect to setup screens 2017-02-03 16:28:11 -08:00
Girish Ramakrishnan
a383f01406 ami: wait for ssh as cloudron-setup reboots server 2017-02-03 11:26:56 -08:00
Girish Ramakrishnan
1a46e80403 remove .sh extension 2017-02-03 10:50:32 -08:00
Girish Ramakrishnan
e8cd230c12 ami: remove ssh keys and fix subnet 2017-02-03 10:32:22 -08:00
Girish Ramakrishnan
0711dc2c5a createAMIImage: Add --region 2017-02-02 23:37:24 -08:00
Girish Ramakrishnan
486e72457d remove minlength for username 2017-02-02 16:09:07 -08:00
Girish Ramakrishnan
450e017bdb 0.100.0 changes 2017-02-02 15:43:16 -08:00
Girish Ramakrishnan
c6d9cfc0d7 Passing IP never worked 2017-02-02 15:33:19 -08:00
Girish Ramakrishnan
a0b073d881 Show DNS warning for manual/noop only 2017-02-02 14:43:34 -08:00
Girish Ramakrishnan
4dde16f987 Fix wording 2017-02-02 14:28:23 -08:00
Girish Ramakrishnan
f7d2e262f4 Always fill spf record 2017-02-02 14:20:25 -08:00
Girish Ramakrishnan
34fedb5835 check spf and dkim all the time 2017-02-02 14:00:13 -08:00
Girish Ramakrishnan
ff491be976 Display SPF/DKIM/PTR records for manual and noop backends 2017-02-02 13:58:49 -08:00
Girish Ramakrishnan
7635482191 Query via unbound
The timeout applies to each server. This resulted in us frequently
getting timeout out when we have more than one name server.
2017-02-02 13:58:49 -08:00
Girish Ramakrishnan
b23001e43f better error log 2017-02-02 13:58:49 -08:00
Girish Ramakrishnan
06c8e8f0cb Query dns in parallel 2017-02-02 13:58:49 -08:00
Girish Ramakrishnan
ce2cd00fbf Fix crash when no MX record is found 2017-02-02 13:58:49 -08:00
Johannes Zellner
651af185c8 Restart the droplet after installation for good measure
This is then in sync with selfhosting and ensures the init startup
sequence is in order, since the setup on its own creates unit files
which should run prior to services already running.

This hopefully fixes the mysql disconnect issues.
2017-02-02 11:24:49 -08:00
Girish Ramakrishnan
6951383ae0 Remove text-danger class in setupdns 2017-02-02 11:07:26 -08:00
Girish Ramakrishnan
37596e89b4 Fix display of info text in dns dialog 2017-02-02 11:05:56 -08:00
Girish Ramakrishnan
711fe37dad Add note on dnsRecordId 2017-02-02 10:43:04 -08:00
Girish Ramakrishnan
7fee3d0da0 Do not rely on dnsRecordId 2017-02-02 10:40:10 -08:00
Girish Ramakrishnan
45a61e9541 refreshDNS must always overwrite dns entries
dnsRecordId is mostly obsolete
2017-02-02 10:32:25 -08:00
Girish Ramakrishnan
bd0be2affc No username implies no aliases 2017-02-02 01:22:44 -08:00
Girish Ramakrishnan
7812c0e5c2 Fix username and groupname min length 2017-02-02 01:16:32 -08:00
Girish Ramakrishnan
7efb6d60bc Allow usernames and groupnames of length 1
Fixes #204
2017-02-02 01:02:51 -08:00
Girish Ramakrishnan
cd31e12bec Do not includeSubdomains in HSTS
This prevents one from redirecting to some http-only subdomain.
For example, surfer in naked domain redirects to www subdomain
(which is on github pages...)
2017-02-02 00:05:56 -08:00
Girish Ramakrishnan
87755c6097 ignore errors and continue 2017-02-01 23:38:06 -08:00
Girish Ramakrishnan
73f56efe2c Fix typo 2017-02-01 23:25:13 -08:00
Girish Ramakrishnan
20eaa60a97 clear timeout 2017-02-01 23:20:11 -08:00
Girish Ramakrishnan
b80f0082e9 subdomain -> domain 2017-02-01 23:06:41 -08:00
Girish Ramakrishnan
1ff800a842 Display mx, dmarc, ptr status
Fixes #169
2017-02-01 22:59:06 -08:00
Girish Ramakrishnan
5b0abb1b17 re-setup DNS when the dns config changes 2017-02-01 14:34:57 -08:00
Girish Ramakrishnan
178aa4794a cloudron-setup: Add source-url 2017-02-01 14:11:50 -08:00
Girish Ramakrishnan
76583cb2fa createReleaseTarball: remove no-upload argument
We will put the upload in the release script
2017-02-01 13:41:27 -08:00
Girish Ramakrishnan
aa484dc5b4 Add 0.99.1 changelog 2017-01-31 18:09:07 -08:00
Girish Ramakrishnan
19a098d34b remove obsolete nginx config file 2017-01-31 18:05:26 -08:00
Johannes Zellner
db452d9bc0 Also send the autoupdatePattern with the stats route 2017-01-31 17:37:55 -08:00
Johannes Zellner
90efb96635 parse mailConfig blob 2017-01-31 16:36:09 -08:00
Girish Ramakrishnan
0cee6de476 Check if cloudron.conf file exists 2017-01-31 01:53:06 -08:00
Girish Ramakrishnan
854d29330c Fix email display logic again 2017-01-30 22:55:20 -08:00
Girish Ramakrishnan
34a3dd6d46 Always generate default nginx config
If we don't, https://ip won't work (caas relies on this for
health checks)
2017-01-30 16:17:07 -08:00
Girish Ramakrishnan
4787ee3301 Fix email note display logic 2017-01-30 15:49:50 -08:00
Girish Ramakrishnan
7b547e7ae9 Revert scaleway specific overlay2 support
This reverts commit 16d65d3665.

Rainloop app breaks with overlay2
2017-01-30 15:43:42 -08:00
Girish Ramakrishnan
fe5e31e528 Save update json in /root
/tmp is not very secure. But the real reason is so that we can
re-run the setup script again should things fail.

/home/yellowtent/box/scripts/installer.sh --data-file /root/cloudron-update-data.json
2017-01-30 15:21:04 -08:00
Girish Ramakrishnan
841a838910 Fix text 2017-01-30 15:08:51 -08:00
Girish Ramakrishnan
4f27fe4f1e Fix email text 2017-01-30 14:24:08 -08:00
Girish Ramakrishnan
96eab86341 Applications -> Apps 2017-01-30 14:20:11 -08:00
Girish Ramakrishnan
95d7a991dc install grub2 2017-01-30 14:01:33 -08:00
Girish Ramakrishnan
dc309afbbd Add --allow-downgrades
The following packages will be DOWNGRADED:
  docker-engine
0 upgraded, 0 newly installed, 1 downgraded, 0 to remove and 0 not upgraded.
E: Packages were downgraded and -y was used without --allow-downgrades.
2017-01-30 14:01:32 -08:00
Girish Ramakrishnan
16d65d3665 Use overlay2 for scaleway
https://github.com/scaleway/image-ubuntu/issues/68
2017-01-30 14:01:29 -08:00
Girish Ramakrishnan
ccb340cf80 Use systemd drop in to configure docker
The built-in service files get overwritten by updates

Fixes #203
2017-01-30 12:41:07 -08:00
Girish Ramakrishnan
56b0f57e11 Move unbound systemd config to separate file 2017-01-30 12:39:19 -08:00
Girish Ramakrishnan
7c1e056152 Add 0.99.0 changes 2017-01-30 10:25:11 -08:00
Girish Ramakrishnan
08ffa99c78 Use %s instead of %d
awk's %d behaves differently with mawk (scaleway) and gawk (do)

Fixes #200
2017-01-30 10:24:26 -08:00
Johannes Zellner
cdede5a009 Add dns provider information on change dialog 2017-01-29 15:00:30 -08:00
Johannes Zellner
4cadffa6ea Remove automatic appstore account signup in setup view 2017-01-29 14:39:54 -08:00
Johannes Zellner
04e13eac55 Improve appstore signup 2017-01-29 14:38:38 -08:00
Johannes Zellner
2b3ae69f63 Selectivly show the correct labels when email is enabled in users view 2017-01-29 14:27:05 -08:00
Johannes Zellner
8f4813f691 Fix text for emails 2017-01-29 14:23:27 -08:00
Johannes Zellner
5b05baeced Make oauth view navbar entries links 2017-01-29 13:33:34 -08:00
Johannes Zellner
3d60e36c98 Fix top margin in oauth views 2017-01-29 13:33:34 -08:00
Johannes Zellner
40c7bd114a Add footer to oauth views 2017-01-29 13:33:34 -08:00
Johannes Zellner
e0033b31f2 Fix text on settings and support views 2017-01-29 13:33:34 -08:00
Girish Ramakrishnan
2d3bdda1c8 Make tests pass 2017-01-29 13:01:09 -08:00
Girish Ramakrishnan
fd40940ef5 Reserve ports <= 1023
Just being conservative here

Fixes #202
2017-01-29 12:43:24 -08:00
Girish Ramakrishnan
6d58f65a1a Reserve ssh ports 2017-01-29 12:38:58 -08:00
Johannes Zellner
44775e1791 Cleanup the graphs ui 2017-01-29 11:39:28 -08:00
Johannes Zellner
4be1f4dd73 Remove developerMode toggle in token ui 2017-01-29 10:26:14 -08:00
Johannes Zellner
93bab552c9 Fix text in certs, tokens and settings views 2017-01-29 02:50:26 -08:00
Johannes Zellner
023c03ddcd Use the same busy indicator everywhere 2017-01-29 02:01:01 -08:00
Johannes Zellner
a5bffad556 Improve text on users page and remove username validation on delete 2017-01-29 01:40:33 -08:00
Johannes Zellner
836348cbc0 Improve text for app installation and configuration 2017-01-29 01:00:15 -08:00
Johannes Zellner
1ac7570cfb Autofocus appstore search field 2017-01-28 20:26:38 -08:00
Johannes Zellner
0dceba8a1c Do not reload all apps when search is empty 2017-01-28 19:57:32 -08:00
Johannes Zellner
599b070779 Remove appstore view title 2017-01-28 19:52:42 -08:00
Johannes Zellner
c581e0ad09 webadmin: only show backup settings notification in settings view 2017-01-28 19:22:56 -08:00
Johannes Zellner
e14b59af5d Append random query to ensure the avatar is refetched 2017-01-28 19:10:55 -08:00
Johannes Zellner
eff9de3ded Adjust dns wait text 2017-01-28 18:33:37 -08:00
Johannes Zellner
4f128c6503 setup: improve text on dnssetup page 2017-01-28 18:27:22 -08:00
Johannes Zellner
8dc9d4c083 webadmin: Give better feedback on update schedule saving 2017-01-28 14:50:30 -08:00
Girish Ramakrishnan
21e3300396 tutorial: fix node version 2017-01-28 14:44:13 -08:00
Girish Ramakrishnan
d136895598 Generate cert with cloudron.self CN instead of ip 2017-01-28 09:10:53 -08:00
Girish Ramakrishnan
dac3eef57c Skip generating self-signed cert if we have a domain 2017-01-28 09:10:53 -08:00
Girish Ramakrishnan
2fac7dd736 delete old nginx configs on infra update
we changed the cert location and reloading nginx fails...
2017-01-28 09:10:49 -08:00
Girish Ramakrishnan
74e2415308 Make this an infra update
This has to be an infra update since the nginx configuration has
to be rewritten for the new data layout
2017-01-28 01:01:24 -08:00
Girish Ramakrishnan
41fae04b69 more 0.98.0 changes 2017-01-27 10:14:10 -08:00
Johannes Zellner
32a88a342c Add update notification mail tests 2017-01-27 09:51:26 -08:00
Johannes Zellner
b5bcde5093 Fix update email tests 2017-01-27 09:51:26 -08:00
Johannes Zellner
68c36e8a18 Only send update notification mails if autoupdate is disabled 2017-01-27 09:51:26 -08:00
Johannes Zellner
f6a9e1f4d8 Revert "Fix tests: we do not send mails anymore"
This reverts commit 7c72cd4399.
2017-01-27 09:51:26 -08:00
Johannes Zellner
2abd42096e Add showdown node module for update mails 2017-01-27 09:51:26 -08:00
Johannes Zellner
922e214c52 Revert "Remove now unused mailer.boxUpdateAvailable()"
This reverts commit 558093eab1.
2017-01-27 09:51:26 -08:00
Johannes Zellner
6ce8899231 Revert "Do not send box update emails to admins"
This reverts commit 865b041474.
2017-01-27 09:51:26 -08:00
Girish Ramakrishnan
cbfad632c2 Handle 401 in app purchase 2017-01-27 07:47:56 -08:00
Johannes Zellner
7804aed5d7 Query graphite for 10 apps at a time at most
If many apps are installed, we may reach graphite's query string
size limit, so we get the app details now 10 at a time
2017-01-26 22:53:52 -08:00
Johannes Zellner
b90b1dbbbe Show graph labels on the side 2017-01-26 22:38:00 -08:00
Johannes Zellner
020ec54264 Allow changing the autoupdate pattern in the settings view 2017-01-26 21:31:05 -08:00
Johannes Zellner
0568093a2a Add rest wrapper for autoupdate pattern route 2017-01-26 21:31:05 -08:00
Johannes Zellner
c9281bf863 docs: Remove oauth proxy from the authentication docs 2017-01-26 16:17:21 -08:00
Johannes Zellner
de451b2fe8 Redirect to the webadmin if update progress is 100 2017-01-26 15:52:57 -08:00
Girish Ramakrishnan
ddf5c51737 Make it 90 instead 2017-01-26 15:45:07 -08:00
Johannes Zellner
a33ccb32d2 Use autoupdate pattern constant in tests 2017-01-26 15:38:29 -08:00
Johannes Zellner
0b03018a7b Add constant for special 'never' autoupdate pattern 2017-01-26 15:36:24 -08:00
Johannes Zellner
1b688410e7 Add more changes 2017-01-26 15:27:29 -08:00
Johannes Zellner
6d031af012 Allow changing domain on caas always 2017-01-26 15:22:02 -08:00
Johannes Zellner
67a5151070 Also pick the token when migrating a caas cloudron to a different domain 2017-01-26 15:22:02 -08:00
Johannes Zellner
a4b299bf6e Use domain validation for dns setup dialog 2017-01-26 15:22:02 -08:00
Johannes Zellner
383d1eb406 Add angular directive for domain validation input fields 2017-01-26 15:22:02 -08:00
Johannes Zellner
3901144eae Do not use the caas token as a do token 2017-01-26 15:22:02 -08:00
Johannes Zellner
317c6db1d5 Show all DNS providers also for caas 2017-01-26 15:22:02 -08:00
Johannes Zellner
1e14f8e2b9 Update and sync the footer in all webadmin pages 2017-01-26 15:22:02 -08:00
Girish Ramakrishnan
88fc7ca915 move the files and not the directory
... because box is a btrfs subvolume
2017-01-26 14:16:27 -08:00
Girish Ramakrishnan
b983e205d2 Add more changes 2017-01-26 13:24:59 -08:00
Girish Ramakrishnan
9cdbc6ba36 capitalize 2017-01-26 13:08:56 -08:00
Girish Ramakrishnan
895f5f7398 Expand backup error in the mail 2017-01-26 13:03:36 -08:00
Girish Ramakrishnan
f41b08d573 Add timestamp to emails 2017-01-26 12:47:23 -08:00
Girish Ramakrishnan
3e21b6cad3 Add ensureBackup log 2017-01-26 12:47:23 -08:00
Johannes Zellner
1a32482f66 Remove unused code in ami creation script 2017-01-26 11:11:07 -08:00
Johannes Zellner
ee1e083f32 Add initial version of the AMI creation script 2017-01-25 14:06:26 -08:00
Girish Ramakrishnan
ebd3a15140 always restart nginx 2017-01-25 12:04:52 -08:00
Girish Ramakrishnan
d93edc6375 box.service: start after nginx 2017-01-25 11:28:31 -08:00
Girish Ramakrishnan
3ed17f3a2a doc: restore-url -> encryption-key 2017-01-25 09:47:25 -08:00
Girish Ramakrishnan
8d9cfbd3de Add 0.98.0 changes 2017-01-24 19:20:47 -08:00
Girish Ramakrishnan
f142d34f83 Move box data out of appdata volume
This lets us restore the box if the app volume becomes full

Fixes #186
2017-01-24 13:48:09 -08:00
Girish Ramakrishnan
357ca55dec remove unused var 2017-01-24 10:41:58 -08:00
Girish Ramakrishnan
d7a8731027 remove unused var 2017-01-24 10:41:38 -08:00
Girish Ramakrishnan
9117c7d141 Use $USER 2017-01-24 10:32:32 -08:00
Girish Ramakrishnan
472020f90c APPICONS_DIR -> APP_ICONS_DIR 2017-01-24 10:13:25 -08:00
Girish Ramakrishnan
2256a0dd3a group paths together 2017-01-24 10:12:05 -08:00
Girish Ramakrishnan
458b5d1e32 bump mail container 2017-01-23 16:26:44 -08:00
Girish Ramakrishnan
1e6abed4aa tests: create mail directory 2017-01-23 15:09:08 -08:00
Girish Ramakrishnan
cdd4b426d5 use elif 2017-01-23 14:03:36 -08:00
Girish Ramakrishnan
75b60a2949 Make restore work without a domain
Fixes #195
2017-01-23 13:04:08 -08:00
Girish Ramakrishnan
9ab34ee43a Check for ubuntu version 2017-01-23 12:58:08 -08:00
Johannes Zellner
3c9d7706de Let the api call fail instead of explictily checking the token 2017-01-23 21:40:06 +01:00
Johannes Zellner
8b5b954cbb Only ever send heartbeats for caas cloudrons 2017-01-23 21:38:22 +01:00
Johannes Zellner
b2204925d3 Remove unused setup_start.sh creation 2017-01-23 21:36:47 +01:00
Girish Ramakrishnan
63734155f2 doc: domain arg is redundant 2017-01-23 11:10:21 -08:00
Girish Ramakrishnan
eb0ae3400a send mailConfig stat 2017-01-23 10:01:54 -08:00
Johannes Zellner
db8db430b9 Avoid warning from systemd by reloading the daemon after chaning journald config 2017-01-23 11:01:02 +01:00
Johannes Zellner
c0b2b1c26d Escape shell vars in the unbound unit file 2017-01-23 10:27:23 +01:00
Johannes Zellner
7da20e95e3 Use a proper systemd unit file for unbound
Part of #191
2017-01-23 10:14:20 +01:00
Girish Ramakrishnan
f30f90e6be Stop mail container before moving the dirs 2017-01-22 21:57:34 -08:00
Girish Ramakrishnan
7f05b48bd7 Revert "Migrate mail data after downloading restore data"
This reverts commit e7c399c36a.
2017-01-22 02:42:14 -08:00
Girish Ramakrishnan
ea257b95d9 Fix dirnames when backing up 2017-01-21 23:40:41 -08:00
Girish Ramakrishnan
e7c399c36a Migrate mail data after downloading restore data
This allows us to be backward compatible
2017-01-21 23:33:57 -08:00
Girish Ramakrishnan
d84666fb43 Move mail data out of box
This will help us with putting a size on box data

Mail container version is bumped because we want to recreate it

Part of #186
2017-01-20 20:22:08 -08:00
Girish Ramakrishnan
1eb33099af dkim directory is now automatically created in cloudron.js 2017-01-20 15:18:03 -08:00
Girish Ramakrishnan
e35dbd522f More debugMode fixes 2017-01-20 09:56:44 -08:00
Girish Ramakrishnan
db6474ef2a Merge readonlyRootfs and development mode into debug mode
The core issue we want to solve is to debug a running app.
Let's make it explicit that it is in debugging mode because
functions like update/backup/restore don't work.

Part of #171
2017-01-20 09:29:32 -08:00
Johannes Zellner
e437671baf Add basic --help for gulp develop 2017-01-20 15:11:17 +01:00
Johannes Zellner
f60d640c8e Set developmentMode default to false 2017-01-20 12:07:25 +01:00
Johannes Zellner
56c992e51b Check for 19GB instead of 20GB in cloudron-setup
This is as reporting the disk size may vary from the one selected when
creating the server. Eg EC2 20GB storage results in 21474836480 bytes
which in turn will be calculated as less than 20GB in the script
2017-01-20 11:22:43 +01:00
Girish Ramakrishnan
12ee7b9521 send readonly and dev mode fields 2017-01-19 19:01:29 -08:00
Girish Ramakrishnan
c8de557ff7 More 0.97.0 changes 2017-01-19 15:59:52 -08:00
Girish Ramakrishnan
90adaf29d7 Update manifestformat (remove developmentMode)
Fixes #171
2017-01-19 15:57:29 -08:00
Girish Ramakrishnan
a71323f8b3 Add developmentMode flag to appdb
Part of #171
2017-01-19 15:57:24 -08:00
Girish Ramakrishnan
155995c7f3 Allow memoryLimit to be unrestricted programatically 2017-01-19 15:11:40 -08:00
Girish Ramakrishnan
319632e996 add readonlyRootfs to the database 2017-01-19 15:11:40 -08:00
Johannes Zellner
33d55318d8 Do not read oauth details in gulpfile from env 2017-01-19 23:41:07 +01:00
Johannes Zellner
ec1abf8926 Remove creation of now unused and broken provision.sh 2017-01-19 23:18:01 +01:00
Girish Ramakrishnan
9a41f111b0 Fix failing tests 2017-01-19 12:51:16 -08:00
Girish Ramakrishnan
7ef6bd0d3f Add readonlyRootfs flag to apps table
When turned off, it will put the app in a writable rootfs. This
allows us to debug live/production apps (like change start.sh) and
just get them up and running. Once turned off, this app cannot be
updated anymore (unless the force flag is set). This way we can
then update it using the CLI if we are convinced that the upcoming
update fixes the problem.

Part of #171
2017-01-19 11:55:25 -08:00
Girish Ramakrishnan
02f0bb3ea5 Add readonly flag
Part of #171
2017-01-19 10:55:13 -08:00
Girish Ramakrishnan
e12b236617 More 0.97.0 changes 2017-01-19 10:45:41 -08:00
Girish Ramakrishnan
6662a4d7d6 Collect every 60min
If we are crashing so problem, we have bigger problems...
2017-01-19 10:11:36 -08:00
Girish Ramakrishnan
85315d8fc5 Do not stash more than 2mb in log file
For reference, each crash increases the file size by 112K.
So we can store around 20 crashes.

Fixes #190
2017-01-19 10:09:49 -08:00
Girish Ramakrishnan
9f5a7e4c08 cloudron-setup: keep the cursor in the same line 2017-01-19 10:09:47 -08:00
Girish Ramakrishnan
ea0e61e6a4 Remove unused function 2017-01-19 09:12:54 -08:00
Johannes Zellner
c301e9b088 Show better backup progress in settings ui 2017-01-19 17:30:01 +01:00
Johannes Zellner
70e861b106 Distinguish between app task and backup in progress 2017-01-19 17:08:18 +01:00
Johannes Zellner
f5c6862627 Improve backup creation UI
- Do not prompt the user if he really wants to create a backup
- Show error message if a backup can't be created at the moment
2017-01-19 17:04:22 +01:00
Johannes Zellner
d845f1ae5b Indicate in the mail subject if it contains more than one crash 2017-01-19 16:52:44 +01:00
Johannes Zellner
7c7d67c6c2 Append the log separator looks nicer 2017-01-19 16:30:20 +01:00
Johannes Zellner
c9fcbcc61c No need to print the unitName in the separator 2017-01-19 15:42:30 +01:00
Johannes Zellner
9ac06e7f85 Stash crash logs for up to 30min
This avoids spaming us with crash logs

Part of #190
2017-01-19 15:23:20 +01:00
Johannes Zellner
6eafac2cad Do not rely on fdisk's human readable unit output
Using the bytes output will fix an issue where the disk size is reported
either as terrabyte or also megabyte.
So far we disallowed 1TB disks but allowed 20MB disks.
2017-01-19 13:53:50 +01:00
Johannes Zellner
60cb0bdfb1 Add 0.97.0 changes 2017-01-19 13:17:09 +01:00
Johannes Zellner
979956315c Only ever remove the app icon on uninstall 2017-01-19 12:39:31 +01:00
Johannes Zellner
62ba031702 Skip icon download without an appStoreId 2017-01-19 12:38:41 +01:00
Girish Ramakrishnan
284cb7bee5 doc: remove double header 2017-01-18 23:41:41 -08:00
Girish Ramakrishnan
735c22bc98 doc: more cleanup on selfhosting doc 2017-01-18 23:37:33 -08:00
Girish Ramakrishnan
a2beed01a1 doc: move cli section down 2017-01-18 23:31:21 -08:00
Girish Ramakrishnan
93fc6b06a2 doc: add alerts section 2017-01-18 23:14:22 -08:00
Girish Ramakrishnan
a327ce8a82 doc: cleanup selfhosting guide 2017-01-18 23:09:06 -08:00
Girish Ramakrishnan
f8374929ac generate mail.ini and not mail_vars.ini 2017-01-18 09:11:34 -08:00
Girish Ramakrishnan
5f93290fc7 Fix crash 2017-01-18 08:43:11 -08:00
Johannes Zellner
4d139232bf caas always has a valid appstore token to show the appstore view 2017-01-18 13:05:25 +01:00
Girish Ramakrishnan
804947f039 use dir mount instead of file mount
file mounting is fraught with problems wrt change notifications.

first, we must be carefule that the inode does not change.

second, changes outside container do not result in fs events inside the container.
haraka cache settings files and relies on fs events. So, even
though the file gets updated inside the container, haraka doesn't
see it.

https://github.com/docker/docker/issues/15793
2017-01-17 23:59:23 -08:00
Girish Ramakrishnan
89fb2b57ff recreate mail config when we have owner email id 2017-01-17 23:34:05 -08:00
Girish Ramakrishnan
1262d11cb3 Prefix event enum with EVENT_ 2017-01-17 23:18:08 -08:00
Girish Ramakrishnan
1ba72db4f8 Add prerelease option 2017-01-17 21:23:57 -08:00
Girish Ramakrishnan
7d2304e4a1 Move 0.94.1 changes 2017-01-17 11:01:12 -08:00
Girish Ramakrishnan
ebf1dc1b08 listen for cert changed events and restart mail container
neither haraka nor dovecot restarts on cert change

Fixes #47
2017-01-17 10:59:00 -08:00
Girish Ramakrishnan
ce31f56eb6 Keep configurePlainIP private 2017-01-17 10:32:46 -08:00
Girish Ramakrishnan
7dd52779dc generate cert files for mail container
this allows us to not track paths anymore

part of #47
2017-01-17 10:21:44 -08:00
Girish Ramakrishnan
2eb5cab74b enable route to set admin certificate 2017-01-17 10:01:05 -08:00
Girish Ramakrishnan
db50382b18 check user cert and then the le cert
part of #47
2017-01-17 09:59:40 -08:00
Girish Ramakrishnan
32b061c768 user certs are saved with extension user.cert/key
part of #47
2017-01-17 09:59:30 -08:00
Girish Ramakrishnan
740e85d28c make code a bit readable 2017-01-17 09:57:15 -08:00
Girish Ramakrishnan
568a7f814d rename func 2017-01-17 09:51:04 -08:00
Girish Ramakrishnan
b99438e550 remove unused function 2017-01-17 09:18:48 -08:00
Girish Ramakrishnan
bcdf90a8d9 typo 2017-01-17 09:17:09 -08:00
Girish Ramakrishnan
536c16929b Remove showTutorial 2017-01-17 09:11:34 -08:00
Johannes Zellner
d392293b50 Remove unused require 2017-01-17 16:32:22 +01:00
Johannes Zellner
16371d4528 Use the apps.js layer instead of the raw appdb in apphealthmonitor.js 2017-01-17 16:32:12 +01:00
Johannes Zellner
cdd0b48023 Remove redundant information in user event email 2017-01-17 16:16:39 +01:00
Johannes Zellner
15cac726c4 Use the correct var 2017-01-17 16:15:19 +01:00
Johannes Zellner
6dc69a4d5d Streamline the email subject lines 2017-01-17 16:02:42 +01:00
Johannes Zellner
c52dfcf52f Adjust user deletion dialog based on feedback 2017-01-17 16:02:26 +01:00
Johannes Zellner
eaac13b1c1 app.fqdn already takes care of altDomain 2017-01-17 16:01:10 +01:00
Johannes Zellner
3e83f3d4ee Put our link to all mails and sync the formatting 2017-01-17 15:47:18 +01:00
Johannes Zellner
3845a8f02b HTMLify user added email to admins 2017-01-17 15:34:50 +01:00
Johannes Zellner
c932be77f8 Mention that backup storage configuration is about S3 configuration 2017-01-17 15:23:52 +01:00
Johannes Zellner
d89324162f Remove tutorial route tests 2017-01-17 13:05:47 +01:00
Johannes Zellner
a0ef86f287 Remove now unused tutorial route and business logic
We can bring that back again if needed
2017-01-17 12:50:59 +01:00
Johannes Zellner
7255a86b32 Remove welcome tutorial css parts 2017-01-17 12:47:05 +01:00
Johannes Zellner
81862bf934 Remove the tutorial components and logic 2017-01-17 12:44:07 +01:00
Johannes Zellner
81b7e5645c This not an error if a cloudron is not yet registered
The change avoids scary logs with backtrace
2017-01-17 11:41:50 +01:00
Johannes Zellner
801367b68d Use specific functions for configureAdmin (with domain) and configurePlainIp (always)
This prevents from double configuring on startup on caas cloudrons
2017-01-17 11:38:33 +01:00
Johannes Zellner
f2e8f325d1 Correct debug lines for cert renewal or not existing 2017-01-17 10:35:42 +01:00
Girish Ramakrishnan
138743b55f More 0.94.1 changes 2017-01-16 16:39:18 -08:00
Johannes Zellner
7f8db644d1 Use in-memory rate limit
Related to #187
2017-01-16 16:49:03 +01:00
Johannes Zellner
c7e410c41b Add express-rate-limit module 2017-01-16 16:48:43 +01:00
Johannes Zellner
08f3b0b612 Add rate limit test 2017-01-16 16:48:17 +01:00
Johannes Zellner
a2782ef7a6 Normal users do not have access to the tutorial 2017-01-16 12:59:21 +01:00
Johannes Zellner
34fac8eb05 Do not show appstore for non-admins 2017-01-16 12:58:05 +01:00
Johannes Zellner
56338beae1 Ensure the appstore login input field has focus 2017-01-16 12:53:34 +01:00
Johannes Zellner
17e9f3b41d Move error label in app error dialog to the title 2017-01-16 12:47:58 +01:00
Johannes Zellner
2c06b9325f Add missing callback 2017-01-16 12:35:26 +01:00
Johannes Zellner
2dfb91dcc9 Embed the appstore login instead of a dialog 2017-01-16 12:34:33 +01:00
Johannes Zellner
9f20dfb237 Allow installation on reported main memory of 990 2017-01-16 10:36:16 +01:00
Girish Ramakrishnan
da2aecc76a Save generated fallback certs as part of the backup
this way we don't get a new cert across restarts
2017-01-14 13:18:54 -08:00
Girish Ramakrishnan
7c72cd4399 Fix tests: we do not send mails anymore 2017-01-14 13:01:21 -08:00
Girish Ramakrishnan
5647b0430a Simplify onConfigured logic
We had all this logic because we allowed the user to create a CaaS
cloudron with a custom domain from the appstore. This flow has changed
now.

One can only set the DNS config after verification. Only thing that
is required is a domain check.
2017-01-14 12:59:16 -08:00
Girish Ramakrishnan
7c94543da8 bump test version 2017-01-13 20:06:15 -08:00
Girish Ramakrishnan
2118952120 send the ownerType as part of mailbox query 2017-01-13 19:53:58 -08:00
Girish Ramakrishnan
d45927cdf4 unbound: listen on 0.0.0.0 2017-01-13 15:22:54 -08:00
Johannes Zellner
c8e99e351e Update the selfhosting installation docs to reflect the dns setup changes 2017-01-13 15:15:25 +01:00
Girish Ramakrishnan
fb56237122 0.94.1 changes 2017-01-12 19:28:27 -08:00
Girish Ramakrishnan
89152fabde use latest test image 2017-01-12 19:28:27 -08:00
Girish Ramakrishnan
726463d497 use le-staging in dev for better testing 2017-01-12 19:28:27 -08:00
Girish Ramakrishnan
055e41ac90 Make unbound reply on cloudron network
Because of the docker upgrade, dnsbl queries are failing again
since we are not using the unbound server from the containers.

For some reason, docker cannot query 127.0.0.1 (https://github.com/docker/docker/issues/14627).

Make unbound listed on the cloudron network and let docker proxy
DNS calls to unbound (docker always use the embedded DNS server
when using UDN).

See also #130
2017-01-12 19:28:23 -08:00
Girish Ramakrishnan
878878e5e4 Bump mail container for testing 2017-01-12 12:04:24 -08:00
Girish Ramakrishnan
7742c8a58e Remove unused function 2017-01-12 11:50:59 -08:00
Girish Ramakrishnan
04476999f7 Fix grammar 2017-01-12 11:48:03 -08:00
Girish Ramakrishnan
5bff7ebaa1 remove dead comment 2017-01-12 11:46:52 -08:00
Girish Ramakrishnan
44742ea3ae Fix bug where cloudron cannot be setup if initial dns credentials were invalid
To reproduce:
* https://ip
* provide invalid dns creds. at this point, config.fqdn gets set already
* cannot setup anymore
2017-01-12 11:46:52 -08:00
Girish Ramakrishnan
d6ea7fc3a0 Move setupDns to cloudron.js 2017-01-12 11:46:49 -08:00
Girish Ramakrishnan
2b49cde2c2 cloudron-setup: validate tlsProvider 2017-01-12 10:31:54 -08:00
Johannes Zellner
1008981306 Adapt to new notification library version
the notification template is now in the html pages itself
2017-01-12 16:00:57 +01:00
Johannes Zellner
146f3ad00e Do not show 0 progress in update
If the initial app takes very long to backup, do not show 0 progress for
a long time
2017-01-12 16:00:57 +01:00
Johannes Zellner
5219eff190 Remove 'app at' for app backup message 2017-01-12 16:00:57 +01:00
Johannes Zellner
abfd7b8aea Update angular notification library to support maxCount 2017-01-12 16:00:57 +01:00
Johannes Zellner
d98f64094e Set the correct progress percentage 2017-01-12 16:00:56 +01:00
Johannes Zellner
a8d254738e Only set the update page title to Cloudron 2017-01-12 16:00:56 +01:00
Johannes Zellner
1c9f2495e3 Show the detailed backup progress during update
Fixes #157
2017-01-12 16:00:34 +01:00
Johannes Zellner
aa4d95f352 Remove unused node module showdown 2017-01-12 13:13:37 +01:00
Johannes Zellner
558093eab1 Remove now unused mailer.boxUpdateAvailable() 2017-01-12 13:11:18 +01:00
Johannes Zellner
865b041474 Do not send box update emails to admins
Fixes #160
2017-01-12 13:09:12 +01:00
Johannes Zellner
1888319313 Send altDomain as Host header if it is set
At least nextcloud will respond with 400 if the Host header is not
matching
2017-01-12 10:45:16 +01:00
Girish Ramakrishnan
0be7679619 Hold the docker package
One idea was to use docker binary packages. However, docker binaries
are statically linked and are incompatible with devicemapper.

See https://github.com/docker/docker/issues/14035 for more info.

Holding will let the user turn on automatic updates for non-security
packages as well.

Fixes #183
2017-01-12 01:09:19 -08:00
Girish Ramakrishnan
bbef6c2bc2 Fix docker storage driver detection
When docker is not passed the --storage-driver option, it tries to
auto detect the storage driver. Roughly:
1. If existing storage paths like /var/lib/docker/aufs exist, it will
   choose that driver.

2. It has a priority list of drivers to scan in order (driver.go)
   As it stands the ordering is aufs, btrfs and then devicemapper.

3. Docker will attempt to "init" each driver. aufs, for example,
   tests for insmod'ing aufs and also looks into /proc/filesystems.

The fact that we installed aufs-tools and linux drivers (for aufs
driver) was a programming error since we want docker to use devicemapper.

However, what is curious is why docker still ended up choosing devicemapper
despite having all aufs requirements (as we do not pass --storage-driver explicitly).

The answer is that "apt-get install aufs-tool linux-image-* docker-engine"
can install packages in any order! This means there is a race on how docker
chooses the storage engine. In most cases, since linux-image-* is a big package,
docker gets to install first and ends up using devicemapper since aufs module is not found yet.
For some people, linux-image-* possibly installs first and thus docker
chooses aufs!

Mystery solved.

Part of #183
2017-01-12 01:08:22 -08:00
Girish Ramakrishnan
be59267747 Enable unattended upgrades
This is usually installed and enabled by default

https://help.ubuntu.com/community/AutomaticSecurityUpdates

Note that automatic reboot is not enabled. Not clear if we should be.

Part of #183
2017-01-11 22:36:51 -08:00
Girish Ramakrishnan
b4477d26b7 Reload the docker service file 2017-01-11 15:40:16 -08:00
Girish Ramakrishnan
ce0afb3d80 Explicitly specify the storage driver as devicemapper
For reasons unknown, the images build by the buildbot (which currently
uses btrfs), does not work with devicemapper.

Existing cloudrons with aufs will not be affected because docker will
just ignore it.

devmapper: Base device already exists and has filesystem xfs on it. User specified filesystem will be ignored.

Existing AUFS users can move to devicemapper either by restoring to
a new cloudron (recommended) OR
* systemctl stop box
* systemctl stop docker
* rm -rf /var/lib/docker
* Edit /home/yellowtent/data/INFRA_VERSION. Change the "version" field to "1"
* systemctl start docker
* systemctl start box # this will download images all over

Fixes #182
2017-01-11 14:53:11 -08:00
Johannes Zellner
0b5cd304ea We also don't need to prefix with my. when using the adminFqdn 2017-01-11 23:09:06 +01:00
Girish Ramakrishnan
e54ad97fa7 cloudron-setup: set the apiServerOrigin for --env 2017-01-11 12:36:01 -08:00
Girish Ramakrishnan
66960ea785 cloudron-setup: Add --env flag 2017-01-10 20:42:24 -08:00
Girish Ramakrishnan
72dd3026ca collect docker info output
this has information like the storage driver
2017-01-10 20:42:24 -08:00
Girish Ramakrishnan
4c719de86c restart docker only if config changed 2017-01-10 18:50:21 -08:00
Girish Ramakrishnan
c7a0b017b4 Fix crash 2017-01-10 18:50:21 -08:00
Johannes Zellner
91c931b53c Revert "Remove broken external domain validation"
This reverts commit 9b1b833fac.
2017-01-11 03:46:41 +01:00
Girish Ramakrishnan
6f2b2adca9 Enable apparmor explicitly 2017-01-10 18:15:10 -08:00
Girish Ramakrishnan
3176bc1afa Fix failing tests 2017-01-10 16:54:15 -08:00
Girish Ramakrishnan
b929adf2dd Fix migration 2017-01-10 16:23:01 -08:00
Girish Ramakrishnan
f3d3b31bed Fix error return type 2017-01-10 16:16:42 -08:00
Girish Ramakrishnan
f17eaaf025 Add TODO note 2017-01-10 16:16:37 -08:00
Girish Ramakrishnan
80d65acd0d Set the domain only during dns setup
If we change the domain when dns settings are changed, then migration
fails because we callout to appstore API via the domain (for example,
backup url call will fail because it uses the new domain name).
2017-01-10 16:16:32 -08:00
Girish Ramakrishnan
ba02d333d1 remove unused requires 2017-01-10 16:16:25 -08:00
Johannes Zellner
9b9d30c092 Remove commented out section of the nginx.conf 2017-01-11 00:09:51 +01:00
Johannes Zellner
d47de31744 Rename nakeddomain.html to noapp.html 2017-01-11 00:08:13 +01:00
Johannes Zellner
edc7efae5f Do not overwrite the provider previously set 2017-01-11 00:02:19 +01:00
Johannes Zellner
18007be9e1 Also use adminFqdn in setup.js 2017-01-10 23:58:28 +01:00
Johannes Zellner
d68ae4866c The adminFqdn already has the my. part 2017-01-10 23:58:28 +01:00
Girish Ramakrishnan
f4b635a169 Fix error type 2017-01-10 14:21:36 -08:00
Johannes Zellner
d674d72508 Add missing https:// for adminFqdn 2017-01-10 22:54:45 +01:00
Johannes Zellner
6ee76f8ee4 No need for my. my- magic anymore 2017-01-10 22:54:45 +01:00
Johannes Zellner
06338e0a1f Redirect to naked domain if we are not on a webadmin origin 2017-01-10 22:54:45 +01:00
Johannes Zellner
349c261238 Remove configStatus.domain and replace with toplevel adminFqdn 2017-01-10 22:54:45 +01:00
Girish Ramakrishnan
eb057fb399 Add note that port 25 is blocked on some DO accounts 2017-01-10 12:38:34 -08:00
Johannes Zellner
5d739f012c Never use the cloudron email account for LetsEncrypt 2017-01-10 18:14:59 +01:00
Johannes Zellner
741d56635f show a maximum of 3 error notifications at once 2017-01-10 15:58:15 +01:00
Johannes Zellner
35404a2832 Return expected dns records also if we hit NXDOMAIN 2017-01-10 15:51:53 +01:00
Johannes Zellner
99505fc287 Call the correct function to get dns email records in the webadmin 2017-01-10 15:43:14 +01:00
Johannes Zellner
a20b331095 Convert settings JSON to objects 2017-01-10 15:24:16 +01:00
Johannes Zellner
06a9a82da0 Disable query for non approved apps 2017-01-10 14:01:46 +01:00
Johannes Zellner
03383eecbc Also remind the user on app install if manual dns is used 2017-01-10 13:47:58 +01:00
Johannes Zellner
89ae1a8b92 Ensure wildcard backend is pre-selected on configure 2017-01-10 13:43:33 +01:00
Johannes Zellner
7061195059 Show different text for manual and wildcard dns backends 2017-01-10 13:41:20 +01:00
Johannes Zellner
9556d4b72c Fix the busy state of the dns backend change form 2017-01-10 13:34:00 +01:00
Johannes Zellner
dd764f1508 Sync the dns provider selection in the ui parts 2017-01-10 13:16:25 +01:00
Johannes Zellner
0a154339e6 Fix the normal case of changing dns provider 2017-01-10 13:15:14 +01:00
Johannes Zellner
2502b94f20 Remind the user to setup the DNS record on app configuration 2017-01-10 13:11:37 +01:00
Johannes Zellner
9b1b833fac Remove broken external domain validation 2017-01-10 13:05:06 +01:00
Johannes Zellner
848ca9817d Give better DNS error feedback after app installation 2017-01-10 13:01:15 +01:00
Johannes Zellner
9a159b50c6 Do not recommend manual dns backend 2017-01-10 12:34:28 +01:00
Johannes Zellner
11fb0d9850 Verify the my.domain instead of the zone 2017-01-10 12:30:14 +01:00
Johannes Zellner
3f925e5b96 Improve manual dns backend error message 2017-01-10 12:09:30 +01:00
Johannes Zellner
714ae18658 Fix the manual dns verification 2017-01-10 12:07:32 +01:00
Johannes Zellner
226164c591 This error is already a SubdomainError 2017-01-10 11:40:05 +01:00
Johannes Zellner
1d44d0a987 Remove dns validation code in settings.js 2017-01-10 11:33:33 +01:00
Johannes Zellner
babfb5efbb Make the verifyDnsConfig() api return the valid credentials 2017-01-10 11:32:44 +01:00
Johannes Zellner
badbb89c92 Add INVALID_PROVIDER to SubdomainError 2017-01-10 11:32:24 +01:00
Johannes Zellner
50e705fb25 Remove unused requires 2017-01-10 11:14:16 +01:00
Johannes Zellner
b9e0530ced Fill in the noops in the other backends 2017-01-10 11:13:33 +01:00
Johannes Zellner
9c793f1317 Make the new interface available in subdomains.js 2017-01-10 11:13:02 +01:00
Johannes Zellner
cef93012bf Implement verifyDnsConfig() for manual dns 2017-01-10 11:12:38 +01:00
Johannes Zellner
bd099cc844 Implement verifyDnsConfig() for route53 2017-01-10 11:12:25 +01:00
Johannes Zellner
c1029ba3b0 Implement verifyDnsConfig() for digitalocean 2017-01-10 11:12:13 +01:00
Johannes Zellner
152025baa7 Add verifyDnsConfig() to the dns backend where it belongs 2017-01-10 11:11:41 +01:00
Johannes Zellner
94f0f48cba Send backend provider with stats route 2017-01-10 10:22:47 +01:00
Girish Ramakrishnan
9b5c312aa1 Disable Testing tab
Part of #180
2017-01-09 21:08:01 -08:00
Girish Ramakrishnan
fdb488a4c3 installApp bundle first because syncConfigState might block 2017-01-09 19:06:32 -08:00
Girish Ramakrishnan
69536e2263 Do not show multiple Access control sections for email apps 2017-01-09 19:00:15 -08:00
Girish Ramakrishnan
3f8ea6f2ee Make app auto install as part of async flow
It was called in nextTick() and was done async but had no chance to
run because the platform.initialize() which is sync was blocking it
2017-01-09 18:24:41 -08:00
Girish Ramakrishnan
3b035405b0 debug.formatArgs API has changed 2017-01-09 16:41:04 -08:00
Girish Ramakrishnan
7b1a6e605b ensure backup directory exists
this is because the filename can now contain subpaths
2017-01-09 16:09:54 -08:00
Girish Ramakrishnan
26ed331f8e Add default clients in clients.js 2017-01-09 15:41:29 -08:00
Johannes Zellner
29581b1f48 cog is a circle 2017-01-09 22:58:01 +01:00
Girish Ramakrishnan
16ea13b88c Check status for cloudron to be ready 2017-01-09 13:29:17 -08:00
Girish Ramakrishnan
2311107465 remove misleading comments 2017-01-09 12:35:39 -08:00
Girish Ramakrishnan
35cf9c454a taskmanager: track paused state 2017-01-09 12:26:18 -08:00
Girish Ramakrishnan
4c2a57daf3 0.94.0 changes 2017-01-09 11:26:29 -08:00
Girish Ramakrishnan
ed9889af11 Add note about alive and heartbeat job 2017-01-09 11:14:11 -08:00
Girish Ramakrishnan
89dc2ec3f6 Remove configured event 2017-01-09 11:02:33 -08:00
Girish Ramakrishnan
7811359b2f Move cron.initialize to cloudron.js 2017-01-09 11:00:09 -08:00
Girish Ramakrishnan
21c66915a6 Refactor taskmanager resume flow 2017-01-09 10:49:34 -08:00
Girish Ramakrishnan
e3e99408d5 say the container was restarted automatically 2017-01-09 10:46:43 -08:00
Girish Ramakrishnan
01f16659ac remove unused requires 2017-01-09 10:33:23 -08:00
Girish Ramakrishnan
9e8f120fdd Make ensureFallbackCertificate error without a domain 2017-01-09 10:28:28 -08:00
Girish Ramakrishnan
3b9b9a1629 ensure fallback cert exists before platform is started 2017-01-09 10:28:28 -08:00
Girish Ramakrishnan
9e2f43c3b1 initialize platform only when domain is available 2017-01-09 10:28:25 -08:00
Girish Ramakrishnan
588bb2df2f Pull docker images in initialize script
This allows us to move platform.initialize to whenever the domain
is setup. Thus allowing box code to startup faster the first time
around.
2017-01-09 09:22:23 -08:00
Girish Ramakrishnan
3c55ba1ea9 doc: clarify httpPort 2017-01-09 09:17:35 -08:00
Johannes Zellner
2a86216a4a Fix race for mailConfig in settings view 2017-01-09 13:58:11 +01:00
Johannes Zellner
e3ea2323c5 Defer configure checks to after tutorial
Fixes #154
2017-01-09 13:45:01 +01:00
Johannes Zellner
6b55f3ae11 Highlight the domain for the manual/wildcard DNS setup 2017-01-09 13:37:54 +01:00
Johannes Zellner
f3496a421b Remove tooltip for memory requirement 2017-01-09 11:53:18 +01:00
Girish Ramakrishnan
a4bba37606 Call mailer.start on configured 2017-01-07 23:40:34 -08:00
Girish Ramakrishnan
56c4908365 restart mail container on configure event 2017-01-07 23:33:20 -08:00
Girish Ramakrishnan
18f6c4f2cd Refactor configure event handling into onConfigured event 2017-01-07 23:31:29 -08:00
Girish Ramakrishnan
d0ea1a4cf4 Send bounce alerts to cloudron owner
Fixes #166
2017-01-07 23:24:12 -08:00
Girish Ramakrishnan
aa75824cc6 Pass alerts_from and alerts_to to mail container
Part of #166
2017-01-07 22:31:40 -08:00
Girish Ramakrishnan
61d5005c4b Use mail_vars.ini to pass mail container config 2017-01-07 16:42:24 -08:00
Girish Ramakrishnan
72d58f48e4 Remove invalid event 2017-01-07 14:28:33 -08:00
Girish Ramakrishnan
3f3b97dc16 Send oom email to cloudron admins
Part of #166
2017-01-07 13:52:33 -08:00
Girish Ramakrishnan
8a05fdcb10 Fix language 2017-01-07 12:35:26 -08:00
Girish Ramakrishnan
6fd3466db1 Send cert renewal errors to support@cloudron.io as well
Part of #166
2017-01-07 12:29:43 -08:00
Girish Ramakrishnan
f354baf685 Inc -> UG 2017-01-07 11:59:13 -08:00
Girish Ramakrishnan
d009acf8e0 doc: upgrading from filesystem backend
Fixes #156
2017-01-07 11:57:37 -08:00
Johannes Zellner
fd479d04a0 Fix nginx config to make non vhost configs default_server
Nginx does not match on the ip as a vhost. This no basically replaces
the commented out section in the nginx.conf
2017-01-06 22:09:10 +01:00
Girish Ramakrishnan
a3dc641be1 Skip sending heartbeat if we have no fqdn 2017-01-06 09:42:56 -08:00
Johannes Zellner
a59f179e9d warn the user in manual and wildcard cert case 2017-01-06 18:42:22 +01:00
Johannes Zellner
4128bc437b Ensure text is center in the footer 2017-01-06 18:23:59 +01:00
Johannes Zellner
e1b176594a The matching location needs to be my.domain 2017-01-06 18:17:27 +01:00
Johannes Zellner
35b11d7b22 Add footers to the setup views 2017-01-06 17:57:22 +01:00
Johannes Zellner
bd65e1f35d Put some redirects in the setup pages to end up in the correct one always 2017-01-06 17:25:24 +01:00
Johannes Zellner
a243478fff Create separate ip and my. domain nginx configs 2017-01-06 16:01:49 +01:00
Johannes Zellner
f0fdc00e78 Always setup an nginx config for ip as the webadmin config 2017-01-06 12:42:21 +01:00
Johannes Zellner
a21210ab29 Fix bug where we check for mail dns records without mail being enabled 2017-01-06 12:20:48 +01:00
Johannes Zellner
684e7df939 At least resolve nameservers for dns settings validator 2017-01-06 11:08:10 +01:00
Johannes Zellner
9be5f5d837 If we already have a domain set, directly wait for dns 2017-01-06 10:54:56 +01:00
Johannes Zellner
6c5fb67b58 Give the actual domain in status if set
This allows the webui served up on ip to redirect correctly
2017-01-06 10:47:42 +01:00
Girish Ramakrishnan
616ec408d6 Remove redundant reboot message 2017-01-06 10:23:10 +01:00
Girish Ramakrishnan
5969b4825c dns_ready is not required since it is part of status 2017-01-06 10:23:10 +01:00
Girish Ramakrishnan
64c888fbdb Send config state as part of the status 2017-01-06 10:23:10 +01:00
Girish Ramakrishnan
8a0fe413ba Visit IP if no domain provided 2017-01-06 10:23:10 +01:00
Girish Ramakrishnan
270a1f4b95 Merge gIsConfigured into config state 2017-01-06 10:23:10 +01:00
Girish Ramakrishnan
8f4ed47b63 track the config state in cloudron.js 2017-01-06 10:23:10 +01:00
Girish Ramakrishnan
09997398b1 Disallow dnsSetup if domain already set 2017-01-06 10:23:10 +01:00
Girish Ramakrishnan
0b68d1c9aa Reconfigure admin when domain gets set 2017-01-06 10:23:10 +01:00
Girish Ramakrishnan
cc9904c8c7 Move nginx config and cert generation to box code 2017-01-06 10:23:10 +01:00
Girish Ramakrishnan
16ab523cb2 Store IP certs as part of nginx cert dir (otherwise, it will get backed up) 2017-01-06 10:23:10 +01:00
Girish Ramakrishnan
20a75b7819 tag -> prefix 2017-01-05 23:20:02 -08:00
Girish Ramakrishnan
49e299b62d Add ubuntu-standard
Fixes #170
2017-01-05 14:05:46 -08:00
Girish Ramakrishnan
98a2090c72 install curl and python before using them 2017-01-05 14:03:30 -08:00
Johannes Zellner
38c542b05a Add route to check dns and cert status 2017-01-05 20:37:26 +01:00
Johannes Zellner
fc5fa621f3 Ensure the dkim folder for the domain exists 2017-01-05 17:14:27 +01:00
Johannes Zellner
6ec1a75cbb Ensure Dkim key in the readDkimPublicKeySync() function 2017-01-05 17:04:03 +01:00
Johannes Zellner
bbba16cc9a make input fields shorter 2017-01-05 16:35:38 +01:00
Johannes Zellner
564d3d563c Preselect dns provider if possible 2017-01-05 16:32:34 +01:00
Johannes Zellner
a858a4b4c1 Let the user know what we are waiting for 2017-01-05 16:31:23 +01:00
Johannes Zellner
2d6d8a7ea8 Create fallback certs only if fqdn is already set 2017-01-05 16:29:10 +01:00
Johannes Zellner
5b5ed9e043 Always create box/mail/dkim folder 2017-01-05 16:15:00 +01:00
Johannes Zellner
801c40420c Create setup nginx config and cert for ip setup 2017-01-05 16:02:03 +01:00
Johannes Zellner
c185b3db71 Set correct busy states in setup views 2017-01-05 15:59:07 +01:00
Johannes Zellner
0f70b73e81 Cleanup some of the setup html code 2017-01-05 14:43:18 +01:00
Johannes Zellner
d9865f9b0f Allow box to startup without fqdn 2017-01-05 14:02:04 +01:00
Johannes Zellner
59deb8b708 Do not fire configured event if no fqdn is set 2017-01-05 13:05:36 +01:00
Johannes Zellner
617fa98dee Further improve the dns setup ui 2017-01-05 12:31:37 +01:00
Johannes Zellner
c9cb1cabc4 Improve dns setup ui 2017-01-05 12:08:52 +01:00
Johannes Zellner
92ab6b5aa4 Cleanup the dns setup code 2017-01-05 11:53:45 +01:00
Johannes Zellner
a66f250350 Redirect to setupdns.html for non caas if not activated 2017-01-05 11:53:23 +01:00
Johannes Zellner
39200f4418 Add client.js wrapper for dns setup route 2017-01-05 11:53:05 +01:00
Johannes Zellner
4f1c7742ef Add public route for dns setup
This route is only available until the Cloudron is activated and also
only in self-hosted ones
2017-01-05 11:52:38 +01:00
Johannes Zellner
e812cbcbe9 add setupdns to gulpfile 2017-01-05 11:17:39 +01:00
Johannes Zellner
2e0670a5c1 Strip dns setup from normal setup.html 2017-01-05 11:02:52 +01:00
Johannes Zellner
92c92db595 Add separate file for dns setup 2017-01-05 11:02:43 +01:00
Johannes Zellner
1764567e1f Make domain optional in cloudron-setup 2017-01-05 10:49:41 +01:00
Johannes Zellner
7eeb8bcac1 Only mark dns fields red if dirty and invalid 2017-01-05 10:49:41 +01:00
Johannes Zellner
c718b4ccdd ngEnter directive is now unused 2017-01-05 10:49:41 +01:00
Johannes Zellner
4f5ffc92a6 Cleanup setup.js 2017-01-05 10:49:41 +01:00
Johannes Zellner
4c485f7bd0 Remove old setup wizard step templates 2017-01-05 10:49:41 +01:00
Johannes Zellner
7076a31821 Also send domain with dns credentials 2017-01-05 10:49:41 +01:00
Johannes Zellner
68965f6da3 Change the location to the new domain at the end of setup 2017-01-05 10:49:41 +01:00
Johannes Zellner
b6a545d1f5 Add separate entry for wildcard in dns setup
Fixes #168
2017-01-05 10:49:41 +01:00
Johannes Zellner
c0afff4d13 Add view for dns credentials in setup 2017-01-05 10:49:41 +01:00
Johannes Zellner
604faa6669 Skip forward for caas after admin setup 2017-01-05 10:49:41 +01:00
Johannes Zellner
d94d1af7f5 Avoid angular flicker in setup 2017-01-05 10:49:41 +01:00
Johannes Zellner
9feb5dedd5 Remove all the wizard step logic from setup 2017-01-05 10:49:41 +01:00
Johannes Zellner
99948c4ed5 Use class nesting for setup 2017-01-05 10:49:41 +01:00
Girish Ramakrishnan
967bab678d Fix listing of app backups
The id can now contain path and not just the filename
2017-01-05 01:03:44 -08:00
Girish Ramakrishnan
135c296ac7 Remove the Z suffix 2017-01-05 00:12:31 -08:00
Girish Ramakrishnan
e83ee48ed5 Pass collation tag to backup functions
Fixes #159
2017-01-05 00:10:16 -08:00
Girish Ramakrishnan
1539fe0906 preserve msecs portion in backup file format
this is required because the second precision causes backups to fail
because of duplicate file name. this happens in tests.

part of #159
2017-01-04 21:57:03 -08:00
Girish Ramakrishnan
c06bddd19e Fix backup filename prefix in sql query 2017-01-04 21:41:31 -08:00
Girish Ramakrishnan
ceb78f21bb remove redundant reuseOldAppBackup 2017-01-04 21:20:36 -08:00
Girish Ramakrishnan
5af201d4ee remove unused require 2017-01-04 19:37:39 -08:00
Girish Ramakrishnan
794efb5ef5 Merge backupDone webhook into caas storage backend 2017-01-04 16:29:25 -08:00
Girish Ramakrishnan
31a9437b2c Add backupDone hook 2017-01-04 16:23:12 -08:00
Girish Ramakrishnan
2b27e554fd Change backup filenames
appbackup_%s_%s-v%s.tar.gz -> app_%s_%s_v%s.tar.gz
    drop 'backup'. rationale: it is known these files are backups
    timestamp has '-'. rationale: colon in filename confuses tools like scp (they think it is a hostname)

backup_%s-v%s.tar.gz -> box_%s_v%s.tar.gz
    drop 'backup' and name it 'box'. this makes it clear it related to the box backup
    timestamp has '-'. rationale: colon in filename confuses tools like scp (they think it is a hostname)

Part of #159
2017-01-04 13:36:25 -08:00
Girish Ramakrishnan
4784b7b00e Fix coding style 2017-01-04 13:36:16 -08:00
Girish Ramakrishnan
e547a719f6 remove dead code 2017-01-04 13:35:39 -08:00
Johannes Zellner
24f2d201ed Remove ip cache in sysinfo 2017-01-04 21:40:47 +01:00
Girish Ramakrishnan
792dfc731c Revert "Make virtualbox 20GB vdi work"
This reverts commit 67d840a1b3.

Change the docs for virtualbox for now to create a bigger VDI
2017-01-04 10:14:57 -08:00
Johannes Zellner
6697b39e79 Set password digest explicitly
sha1 used to be the fallback but with node 6.* the fallback is deprecated
2017-01-04 09:59:14 -08:00
Girish Ramakrishnan
db1eeff2c3 Add test to check if user can be readded after removal
Fixes #162
2017-01-03 19:12:00 -08:00
Girish Ramakrishnan
fc624701bf Use cloudron-setup from CDN
Fixes #165
2017-01-03 15:39:17 -08:00
Girish Ramakrishnan
591cc52944 Run initializeBaseImage script from the release tarball
Part of #165
2017-01-03 14:48:39 -08:00
Girish Ramakrishnan
67d840a1b3 Make virtualbox 20GB vdi work 2017-01-03 14:30:59 -08:00
Girish Ramakrishnan
8ffa951407 Clearly mark message as an error 2017-01-03 14:28:04 -08:00
Girish Ramakrishnan
af39c2c7ae Replace cloudron-version with a python script
This will allow us to check version without node installed

Part of #165
2017-01-03 14:23:00 -08:00
Girish Ramakrishnan
5903c7d0bc remove x-bit from logcollector.js 2017-01-03 09:46:53 -08:00
Johannes Zellner
dbb79fc9e6 Remove unused customDomain check in setup flow 2017-01-03 14:58:41 +01:00
Johannes Zellner
ef1408fddb Remove unsed vars in cloudron-setup 2017-01-03 09:26:08 +01:00
Johannes Zellner
47ecb0e1cf Test minimum requirements before continue in cloudron-setup
Fixes #153
2017-01-02 18:03:28 +01:00
Johannes Zellner
55fad3d57e Convert booleans for the correct object 2017-01-02 14:15:20 +01:00
Johannes Zellner
496a44d412 Also update app dns records in dynamic dns case 2017-01-02 14:00:07 +01:00
Johannes Zellner
05721f73cc Fix typo 2017-01-02 13:51:58 +01:00
Johannes Zellner
424c36ea49 Convert boolean settings values
The db table only stores strings
2017-01-02 13:47:51 +01:00
Johannes Zellner
a38097e2f5 Refresh dns if dynamic dns is enabled 2017-01-02 13:14:03 +01:00
Johannes Zellner
b26cb4d339 Add dynamic dns settings key 2017-01-02 13:05:48 +01:00
Johannes Zellner
3523974163 Add initial refreshDNS() function 2017-01-02 13:00:30 +01:00
Johannes Zellner
a2bdd294a8 update the version tag in the selfhosting docs 2017-01-01 17:17:24 +01:00
Girish Ramakrishnan
f85bfdf451 Explain what the MB is 2016-12-31 09:39:17 -08:00
Girish Ramakrishnan
cfad186a6b Highlight the reboot message little more 2016-12-30 15:20:27 -08:00
Girish Ramakrishnan
c8a9412995 suppress error message 2016-12-30 14:23:16 -08:00
Girish Ramakrishnan
318ea04efc Set "version" to the resolved version in config.json 2016-12-30 13:12:22 -08:00
Girish Ramakrishnan
90c1fd4c31 rename the service to cloudron-resize-fs 2016-12-30 11:27:00 -08:00
Girish Ramakrishnan
fad6221750 Run cloudron-system-setup before box 2016-12-30 11:23:53 -08:00
Johannes Zellner
9f0047478d Remove now unused dependency dnsutils 2016-12-30 17:26:39 +01:00
Johannes Zellner
591ef3271b Do not wait for apt, but skip install if we have a base image already 2016-12-30 17:25:23 +01:00
Johannes Zellner
9afbbde062 Actually this is about apt-get update for the mirror listing 2016-12-30 16:29:29 +01:00
Johannes Zellner
73e6e519a3 Wait for apt to finish before proceeding with cloudron-setup 2016-12-30 16:08:06 +01:00
Johannes Zellner
4268ba54bf If app purchase failed, show appstore login
Since we don't have cases like failing to charge credit card so far, the
only reason it can fail here is that the appstore token or userId is
incorrect/expired

Fixes #52
2016-12-30 15:50:43 +01:00
Johannes Zellner
47037b0066 Add hosttech referral link
Part of #140
2016-12-30 14:07:49 +01:00
Johannes Zellner
05a6a36a62 Add linode referral link
Part of #140
2016-12-30 13:56:03 +01:00
Johannes Zellner
d72b1d8bd5 Show required memory in app install dialog
Fixes #150
2016-12-30 12:51:44 +01:00
Johannes Zellner
0f1a4422f5 Add prettyMemory angular filter 2016-12-30 12:51:30 +01:00
Johannes Zellner
7d06f9e1e3 Add comment why the script might fail on unsupported small disks 2016-12-30 11:53:35 +01:00
Johannes Zellner
1e4e76b0dd give disk size a unit in cloudron-system-setup.sh 2016-12-30 11:49:57 +01:00
Johannes Zellner
49d70f487e show dots at the end in cloudron-setup log lines 2016-12-30 11:35:03 +01:00
Johannes Zellner
456cb22ac0 this and that typo 2016-12-30 11:32:56 +01:00
Girish Ramakrishnan
ba1dfee5ca Actually remove dev deps (npm is a mystery) 2016-12-30 01:04:43 -08:00
Girish Ramakrishnan
143a600a5c remove ununsed dev deps 2016-12-30 01:02:19 -08:00
Girish Ramakrishnan
68b4bf0a7f Remove ini and tail-stream unused modules 2016-12-30 01:00:23 -08:00
Girish Ramakrishnan
bc75d07391 Remove ursa dependancy
ursa uses native code and doing a npm rebuild often runs out of
memory in low memory cloudrons
2016-12-30 00:13:35 -08:00
Girish Ramakrishnan
7eaa3ef52e Use the ejs-cli of the new box code 2016-12-29 19:17:31 -08:00
Girish Ramakrishnan
af69ddc220 Email needs atleast 256m even on 1gb droplet 2016-12-29 18:33:59 -08:00
Girish Ramakrishnan
b25d61fbb5 installer.sh is unused in base image 2016-12-29 15:56:14 -08:00
Girish Ramakrishnan
81a60b029d bash is dangerous (script_dir was marked readonly in parent script!) 2016-12-29 15:34:30 -08:00
Girish Ramakrishnan
751fd8cc4b update gulp-sass 2016-12-29 15:03:17 -08:00
Girish Ramakrishnan
503e3d6ff2 Add trailing slash 2016-12-29 14:36:19 -08:00
Girish Ramakrishnan
decbfe0505 More start.sh cleanup 2016-12-29 14:35:48 -08:00
Girish Ramakrishnan
379042616f Ensure box.service starts after mysql.service 2016-12-29 14:24:29 -08:00
Girish Ramakrishnan
df2878bc2e Prettify start.sh 2016-12-29 14:22:42 -08:00
Girish Ramakrishnan
1ff35461a2 Remove obsolete design doc 2016-12-29 13:21:09 -08:00
Girish Ramakrishnan
7de94fff1b Merge container logic into start.sh
This whole container thinking is over-engineered and we will get to
it if and when we need to.
2016-12-29 12:01:59 -08:00
Girish Ramakrishnan
3236f70d8b Show email records for manual dns
Fixes #151
2016-12-29 11:32:42 -08:00
Girish Ramakrishnan
cf7cef19f9 Fix wording 2016-12-29 11:32:06 -08:00
Girish Ramakrishnan
e159cdad5b Remove activated event
Simply go ahead and create cron jobs
2016-12-28 14:21:58 -08:00
Girish Ramakrishnan
2ddb533ef2 remove redundant permission change 2016-12-28 09:54:30 -08:00
Girish Ramakrishnan
36a6e02269 remove unused variable 2016-12-28 09:49:18 -08:00
Girish Ramakrishnan
6fbbf0ad61 Use curl with options 2016-12-28 09:49:04 -08:00
Girish Ramakrishnan
1040fbddc6 Improve data-file handling 2016-12-28 09:46:04 -08:00
Girish Ramakrishnan
bbd63b2c57 Prettify container.sh 2016-12-28 08:59:26 -08:00
Girish Ramakrishnan
905bdb1d27 only reboot if base image script was called 2016-12-28 08:59:25 -08:00
Girish Ramakrishnan
11ce5ffa4c 0.93.0 changelog 2016-12-28 08:59:25 -08:00
Girish Ramakrishnan
b1854f82f2 prettify init base image script 2016-12-28 08:59:25 -08:00
Girish Ramakrishnan
745b7a26b7 validate arguments only if data is not provided 2016-12-28 08:59:24 -08:00
Girish Ramakrishnan
764a38f23e Fix DO image script to not use installer 2016-12-28 08:59:24 -08:00
Girish Ramakrishnan
7873fdc7bb typo 2016-12-28 08:59:23 -08:00
Girish Ramakrishnan
76435460f0 redirect error 2016-12-28 08:59:20 -08:00
Girish Ramakrishnan
7e3a54ff1b force the link for idempotency 2016-12-28 08:59:15 -08:00
Girish Ramakrishnan
61789e3fda Use the installer.sh from the source tarball
This redesigns how update works. installer.sh now rebuild the package,
stops the old code and starts the new code. Importantly, it does not
download the new package, this is left to the caller. cloudron-setup
downloads the code and calls installer.sh of the downloaded code.
Same goes for updater.sh. This means that installer.sh itself is now
easily updatable.

Part of #152
2016-12-28 08:59:07 -08:00
Girish Ramakrishnan
441c5fe534 Add --data to pass raw data
This will be used by CaaS
2016-12-28 08:58:54 -08:00
Girish Ramakrishnan
f30001d98b Add option to skip the base image init
This will be used for CaaS

Part of #152
2016-12-28 08:58:48 -08:00
Girish Ramakrishnan
fae0ba5678 Decouple installer from the base image script
This means that the base image does not have the installer anymore
and needs to be copied over.

Part of #152
2016-12-28 08:58:10 -08:00
Girish Ramakrishnan
7e592f34bd base image is now port 22 (becomes 202 only after install) 2016-12-28 08:57:48 -08:00
Girish Ramakrishnan
691f6c7c5c Use docker 1.12.5
Docker uses an embedded DNS server (127.0.0.11) for user defined networks (UDN).

With the latest releases of docker, specifying 127.0.0.1 as --dns makes the
containers resolve 127.0.0.1 _inside_ the container's networking namespace
(not sure how it worked before this).

The next idea was to only specify --dns-search=. but this does not work.
This makes docker setup the containers to use 127.0.0.1 (or 127.0.0.11 for UDN).
In my mind, the UDN case should work but doesn't (not sure why).

So, the solution is to simply go with no --dns or --dns-search. Sadly,
setting dns-search just at container level does not work either :/ Strangely,

    docker run --network=cloudron --dns-search=. appimage  # does not work

    docker run --network=cloudron appimage # works if you manually remove search from /etc/resolv.conf

So clearly, something inside docker triggers when one of the dns* options is set.

This means that #130 has to be fixed at app level (For Go, this means to use the cgo resolver).
2016-12-28 08:57:48 -08:00
Girish Ramakrishnan
f5eb5d545f use node 6.9.2 LTS 2016-12-28 08:57:43 -08:00
Girish Ramakrishnan
91e4f6fcec Add CLOUDRON chain first
This allows us to not issue an 'upgrade' yet.

Part of #152
2016-12-28 08:57:38 -08:00
Girish Ramakrishnan
b759b12e90 Move cloudron-system-setup.sh out of installer
Part of #152
2016-12-28 08:57:30 -08:00
Girish Ramakrishnan
103019984b Move firewall setup to container.sh
Part of #152
2016-12-28 08:57:20 -08:00
Girish Ramakrishnan
01126aaeea move ssh configuration to container.sh
Note: appstore requires to be fixed to start the provisioning on port 22

Part of #152
2016-12-28 08:57:13 -08:00
Girish Ramakrishnan
a6ab8ff02f Mount the btrfs user home data in container.sh
This allows it to be configurable easily at some point

Part of #152
2016-12-28 08:56:55 -08:00
Girish Ramakrishnan
b89886a945 Move systemd service creation scripts to container.sh
Part of #152
2016-12-28 08:56:46 -08:00
Girish Ramakrishnan
d12b71f69c move journald configuration to container.sh
Part of #152
2016-12-28 08:56:06 -08:00
Girish Ramakrishnan
53c2ed3c82 configure time in container.sh 2016-12-28 08:55:56 -08:00
Girish Ramakrishnan
148c8e6250 Give user access to system logs in container.sh
Part of #152
2016-12-28 08:55:43 -08:00
Girish Ramakrishnan
4a99eb105a cloudron-system-setup does not need to be run
we reboot anyway and the service is run on startup
2016-12-28 08:46:40 -08:00
Girish Ramakrishnan
c5ca64af50 cloudron-version is cloudron-setup specific 2016-12-28 08:46:40 -08:00
Girish Ramakrishnan
984b920fde Use 0.92.1 2016-12-27 22:39:53 -08:00
Girish Ramakrishnan
54dae6827e Add 0.92.1 changes 2016-12-27 22:10:12 -08:00
Girish Ramakrishnan
58cf214bf2 Fix license 2016-12-26 20:17:26 -08:00
Girish Ramakrishnan
eeefdf5927 Add link to chat 2016-12-22 13:28:04 -08:00
Girish Ramakrishnan
29c172deab Switch to master again for DO fix 2016-12-22 13:27:05 -08:00
Girish Ramakrishnan
af1e83f12a Remove DO specific grub cmd line
The new DO images have a different label causing DO images to not boot
    root@ubuntu-2gb-sfo1-01:~# e2label /dev/vda1
    cloudimg-rootfs

net.ifnames=0 is used get unpredictable names as per
https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/.
Not sure why we want that.

Not sure about notsc and clocksource.

This change also preserves any existing cmdline
2016-12-22 12:34:23 -08:00
Girish Ramakrishnan
3a3edc4617 Use version 0.92.0 2016-12-21 18:20:06 -08:00
Girish Ramakrishnan
e13f52e371 Use env vars if they exist 2016-12-21 15:36:40 -08:00
Girish Ramakrishnan
5687b4bee0 More 0.92.0 changes 2016-12-21 15:24:18 -08:00
Girish Ramakrishnan
48d0e73e9b Repin the cloudron-setup
There was a bug in how the platform ready event was fired
because the isConfigureSync detection was buggy
2016-12-21 15:15:37 -08:00
Girish Ramakrishnan
3d4e3638be Only check for platformReady prefix 2016-12-21 15:13:51 -08:00
Girish Ramakrishnan
f07e6b29a3 Check for manual DNS provider 2016-12-21 15:10:56 -08:00
Girish Ramakrishnan
a92f75f7d4 Pin to specific sha1 2016-12-21 14:45:28 -08:00
Girish Ramakrishnan
6e87111c99 Pin cloudron-setup
Required for preparing for the next upgrade release
2016-12-21 14:35:08 -08:00
Girish Ramakrishnan
ad3594eebc Waiting for cloudron also takes some time 2016-12-20 11:56:18 -08:00
Girish Ramakrishnan
af99e31c63 encryption key is now optional 2016-12-19 14:24:53 -08:00
Girish Ramakrishnan
c8ee5b10be Add 0.92.0 changes 2016-12-19 14:19:11 -08:00
Girish Ramakrishnan
cd471040b4 Move endpoint down (since it's a rare thing) 2016-12-19 14:14:09 -08:00
Girish Ramakrishnan
f7beecc510 Create a new backup when backup config changes
This is required so that app restore UI works
2016-12-19 14:14:05 -08:00
Girish Ramakrishnan
ca8b61caba Allow backup encryption key to be set 2016-12-19 12:41:35 -08:00
Girish Ramakrishnan
d672b1e3f6 Make encryption key optional 2016-12-19 12:33:52 -08:00
Girish Ramakrishnan
22ae39323b use Math.floor instead of parseInt 2016-12-19 11:56:35 -08:00
Johannes Zellner
420a57aef9 Randomize appstore requests for updates and alive status
Fixes #137
2016-12-19 16:55:39 +01:00
Johannes Zellner
7d76c32334 Only show mail dns record warnings if email is enabled 2016-12-19 16:22:37 +01:00
Johannes Zellner
2fa4f4c66a We now always reboot no need to mention in the docs 2016-12-19 12:09:12 +01:00
Johannes Zellner
37d146a683 Reboot the server after installation
This solves two issues:
* activate bootloader settings
* ensure the yellowtent user can view journald logs
2016-12-19 12:06:22 +01:00
Johannes Zellner
b95808be54 Move AWS env var checks to upload section 2016-12-19 09:43:08 +01:00
Girish Ramakrishnan
dbdbdd9a2a 0.91.0 changes 2016-12-16 15:35:41 -08:00
Girish Ramakrishnan
16b8df7b9c Minor doc fixes 2016-12-16 15:31:53 -08:00
Johannes Zellner
293d4b4a47 Remove unused --publish argument 2016-12-16 18:05:59 +01:00
Johannes Zellner
da7b2e62f5 Order apps in store listing based on installCount 2016-12-16 17:36:16 +01:00
Johannes Zellner
33e87c7ffa Add analytics pixel tracking in html mails
This is currently hardcoded to our piwik instance including the website
id
2016-12-16 13:11:13 +01:00
Johannes Zellner
f417a35ad7 Add DO referral link
Part of #140
2016-12-16 11:45:46 +01:00
Johannes Zellner
c86acff698 Add vultr referral link in selfhosting docs
Part of #140
2016-12-16 11:36:10 +01:00
Girish Ramakrishnan
0ec55b0cd4 Unset dns search
This makes sure that the host dns search is not carried over to the
containers

Fixes #130
2016-12-15 14:13:39 -08:00
Girish Ramakrishnan
cf98d2a9d5 Remove ip from config
This is unused. But more importantly, it causes the cloudron to
internal error and the whole UI goes down just because we cannot
detect the IP via the generic sysinfo provider.
2016-12-15 12:15:06 -08:00
Girish Ramakrishnan
ec75b14d9e Set timeout for dns queries 2016-12-15 12:00:51 -08:00
Johannes Zellner
4bad31f7cc Skip mailbox update if name has not changed 2016-12-15 16:57:29 +01:00
Johannes Zellner
288baa7e94 Rename mailbox when location changes
Fixes #118
2016-12-15 16:57:29 +01:00
Johannes Zellner
d1161b3ff8 Add mailboxdb.updateName() 2016-12-15 16:57:29 +01:00
Johannes Zellner
27e5886a0b Add tests for mail dns records 2016-12-15 16:57:29 +01:00
Johannes Zellner
eaebf9fd73 Fix typo when comparing dkim values 2016-12-15 16:57:29 +01:00
Johannes Zellner
ea4c16604b Add refresh button to retest mail config 2016-12-15 16:57:29 +01:00
Johannes Zellner
66a4abeb50 Ensure txtRecords is a valid array
The dns api will respond with undefined if no records are found

Mostly related to https://github.com/tjfontaine/node-dns/issues/95
2016-12-15 16:57:29 +01:00
Johannes Zellner
a57705264f Fixup the frontend for manual mail dns records
This was a bit broken after my merge attempt
2016-12-15 16:57:29 +01:00
Johannes Zellner
e7fc40cfdd Minor code style changes 2016-12-15 16:57:29 +01:00
Johannes Zellner
55d306c938 we use single quotes 2016-12-15 16:57:29 +01:00
Johannes Zellner
8fe1f2fef1 Rename email dns records route 2016-12-15 16:57:29 +01:00
Dennis Schwerdel
1065b56380 Check dns records for generic dns providers 2016-12-15 16:57:29 +01:00
Girish Ramakrishnan
e58068688c Add dns-provider to arg list 2016-12-15 07:41:09 -08:00
Girish Ramakrishnan
9a51feed0a Add --dns-provider argument
Maybe someday we can set other providers like route53 etc here
2016-12-15 07:35:56 -08:00
Girish Ramakrishnan
9ac8cc2cd7 Do not override the tls config provider when restoring 2016-12-15 07:32:10 -08:00
Girish Ramakrishnan
54a388af5e Add debug 2016-12-15 07:30:38 -08:00
Girish Ramakrishnan
5dda872917 Add note about the log message 2016-12-14 19:21:43 -08:00
Girish Ramakrishnan
3277cfdc6b Remove IP detection logic
This code was here to check if user will get an admin certificate.
It doesn't work well for intranet cloudron's. The check is also not
complete since just DNS is not enough for LE to succeed, we also
require port forwarding.
2016-12-14 19:19:00 -08:00
Girish Ramakrishnan
c759a1c3f6 Fix test 2016-12-14 15:04:14 -08:00
Girish Ramakrishnan
b77b2ab82d add manual dns provider to the ui 2016-12-14 14:59:16 -08:00
Girish Ramakrishnan
855de8565e Allow setting manual dns provider in api 2016-12-14 14:58:08 -08:00
Girish Ramakrishnan
f1ad003b41 Switch dns backend default to manual
Existing cloudrons should be OK because there is no entry in the db
by default for dnsConfig.
2016-12-14 14:56:48 -08:00
Girish Ramakrishnan
f6507ecbe3 noop dns backend does not wait for dns anymore 2016-12-14 14:56:03 -08:00
Girish Ramakrishnan
79083925d1 Add manual dns backend
The manual differs from noop in that it will perform the
wait for dns check.
2016-12-14 14:54:14 -08:00
Girish Ramakrishnan
de1c677e75 Simply get admin cert after waiting for dns
Removes some specialized code that was in installAdminCertificate.
2016-12-14 14:52:42 -08:00
Girish Ramakrishnan
3ede9af34b remove subdomains.status 2016-12-14 14:47:03 -08:00
Girish Ramakrishnan
d475d9bcbf Make waitForDns provider specific
This will allow us to create a proper 'noop' backend that does
not wait for dns to be in sync. This is required for local/intranet
setups.
2016-12-14 14:43:20 -08:00
Girish Ramakrishnan
bf095f0698 Skip admin cert installation with fallback tls provider 2016-12-13 18:58:07 -08:00
Girish Ramakrishnan
90d9d6da8b doc: reword text a bit 2016-12-13 17:34:11 -08:00
Girish Ramakrishnan
5ed4d66dfe Make apps test pass 2016-12-13 11:31:14 -08:00
Girish Ramakrishnan
60b45912ce update nock 2016-12-13 10:58:12 -08:00
Girish Ramakrishnan
29aad624d5 Remove redundant fallback 2016-12-13 10:18:16 -08:00
Johannes Zellner
2bf8584f30 Do not take the addon object, but the boolean 2016-12-12 17:29:42 +01:00
Johannes Zellner
d083ff3400 Add documentation for minio 2016-12-12 15:33:21 +01:00
Johannes Zellner
b6e96d77aa Thanks shell 2016-12-12 14:59:30 +01:00
Johannes Zellner
6e1751d0ed Set empty endpoint url for caas storage backend
Caas storage backend also uses the s3 code branches
2016-12-12 14:00:07 +01:00
Johannes Zellner
c1700069dc Ensure we run inside a sane folder when switching the codes 2016-12-12 12:43:37 +01:00
Johannes Zellner
17c2aa4faf singleUser is gone, welcome optionalSso docs 2016-12-12 12:22:09 +01:00
Johannes Zellner
8f47861b6d Mention if a manifest field is required for store submission 2016-12-12 12:19:18 +01:00
Johannes Zellner
8f2ee9a7cd mediaLinks does not yet support videos 2016-12-12 12:15:42 +01:00
Johannes Zellner
93e976fdb0 Add 0.90.0 changes 2016-12-12 12:10:41 +01:00
Johannes Zellner
c737ea1954 Show contact help line for manual email dns setup 2016-12-12 12:05:12 +01:00
Johannes Zellner
700d815d54 Show warning with more description when enabling email
Fixes #132
2016-12-12 12:05:04 +01:00
Johannes Zellner
382219a29f Show help bubble for backups configuration 2016-12-12 11:32:37 +01:00
Johannes Zellner
a372853777 Simplify help bubbles 2016-12-12 11:26:47 +01:00
Johannes Zellner
79f1cd16a3 Add placeholder text for s3 config 2016-12-12 09:51:52 +01:00
Johannes Zellner
b2dbb5a100 Fixup bugs with updated backup scripts 2016-12-12 09:51:52 +01:00
Johannes Zellner
01631e0477 Allow optional endpoint in s3 settings ui
Part of #123
2016-12-12 09:51:52 +01:00
Johannes Zellner
816911d071 Make s3 backup scripts aware of endpoints
Part of #123
2016-12-12 09:51:52 +01:00
Girish Ramakrishnan
2cf0d6db9d customAuth is obsolete 2016-12-09 18:43:26 -08:00
Johannes Zellner
1df47b7c05 Mention lightsail as a supported provider 2016-12-09 17:15:17 +01:00
Johannes Zellner
622ac54213 Remove first. 2016-12-08 22:43:58 +01:00
Johannes Zellner
e2d8853704 Sync non existing group text between install and configure dialogs 2016-12-08 22:43:17 +01:00
Johannes Zellner
4993c5010b Align access control groups 2016-12-08 22:40:40 +01:00
Johannes Zellner
8bd0d7c143 Move disable user management option to the top 2016-12-08 22:35:49 +01:00
Johannes Zellner
761ce99f8e Show overall system disk usage in graphs
Also adds a bit of description what the numbers include.

Fixes #83 since any more folder level information is currently too much work.
2016-12-07 16:48:39 +01:00
Johannes Zellner
ba7c901d7a Add more appstore categories
We do not have real categories, but only do filtering
based on the tags an app mentions. This changes adds more such tags, so
one by one we should ensure the correct tags are used in each app.

Apps not part of any such category can be found by full text search
field in the ui

Fixes #114
2016-12-07 14:50:23 +01:00
Johannes Zellner
99c88ed7a0 Update to latest font-awesome 2016-12-07 14:50:09 +01:00
Johannes Zellner
c27244cfbd Add more appstore categories 2016-12-07 14:19:17 +01:00
Johannes Zellner
099a42a2d4 Add 0.80.1 changes 2016-12-07 13:35:21 +01:00
Johannes Zellner
74c89cf7d4 Do not print out error if app nginx file does not exist 2016-12-07 13:20:37 +01:00
Johannes Zellner
805125b17f Only reload sshd for caas 2016-12-06 18:41:06 +01:00
Johannes Zellner
7d93cfaac1 Add missing return
Fixes #128
2016-12-06 17:26:56 +01:00
Johannes Zellner
3cd1e7a972 Do not exit on js uglify error in gulp develop 2016-12-06 15:52:22 +01:00
Johannes Zellner
4ed2651c5f Add app restart button in configure dialog
This has come up often now where people need to install the cli just for
app restarts, or would click the restore button, picking up an older
backup, where a simple restart of the app would have been sufficient.

Did this now after live-chat user asking again for this while an app got
stuck without anything obvious in the app logs.
2016-12-06 15:31:24 +01:00
Johannes Zellner
e83cb0fb3c Add missing comma 2016-12-05 22:36:55 +01:00
Johannes Zellner
b1be65d9ce Add fallback certificate backend 2016-12-05 17:01:23 +01:00
Johannes Zellner
eacc4412ba We don't use tabs but 4 spaces 2016-12-05 16:07:06 +01:00
Johannes Zellner
0baf092ba4 Ensure we have iptables installed
Fixes #122
2016-12-02 17:13:47 +01:00
Johannes
ebd9249f87 Check dns record change and dns lookup for app install/configure
Fixes #121
2016-11-30 18:51:54 +01:00
Johannes
e1ee4973eb Add route53 dns tests
Fixes #120
2016-11-30 18:04:47 +01:00
Johannes
ac09ad3393 Handle ETRYAGAIN app error
Fixes #100
2016-11-30 17:34:15 +01:00
Johannes
2bba87d951 Add app message angular filter 2016-11-30 17:31:37 +01:00
Johannes
d54e02eed4 Enable and fix test for multiple dns upserts with digitalocean 2016-11-30 17:00:47 +01:00
Johannes
db41633663 Support multiple DNS record upserts with digitalocean
Fixes #99
2016-11-30 17:00:16 +01:00
Johannes
0568387679 Add digitalocean dns tests
Part of #120
2016-11-30 16:36:54 +01:00
Johannes
ffbbb88917 Add dns noop test
Part of #120
2016-11-30 15:36:03 +01:00
Johannes
756b36d227 Ask the api server for public ip instead of local interface
Part of #106 and #86
Might fix #115 pending testing
2016-11-29 16:20:56 +01:00
Johannes
a2afadfe92 Actually exit if the user answer is negative 2016-11-29 14:47:46 +01:00
Johannes
0c76cee737 Check if any ip was found 2016-11-29 14:47:46 +01:00
Johannes
b1ec3fe271 dig package is dnsutils 2016-11-29 14:47:46 +01:00
Johannes
19bf130ccd Ask on installation if the DNS is correctly setup 2016-11-29 14:47:46 +01:00
Johannes
32c14e0aa1 Support --api-server-origin in cloudron-setup 2016-11-29 14:47:46 +01:00
Johannes
0ff5050452 Check if any DNS answer matches
Fixes #111
2016-11-29 14:47:32 +01:00
Johannes
ca83d4afb8 Show better text for self-hosted cloudrons when low on resources
Fixes #119
2016-11-29 13:28:20 +01:00
Johannes
21c1591f58 Remove dummy record 2016-11-28 16:06:34 +01:00
Johannes
cb64ac1b7f Add unit tests for eventlog search 2016-11-28 16:02:59 +01:00
Johannes
337f808a62 Search in source and data of eventlog 2016-11-28 16:02:18 +01:00
Johannes
48d97947c1 Allow to set event item count listing
Part of #113
2016-11-28 15:48:31 +01:00
Johannes
df4dd4f93a Ensure the nakeddomain placeholder can deal with custom domains
Fixes #112
2016-11-28 15:25:10 +01:00
Johannes
a5eb34d680 Carry over sso on app clone 2016-11-28 12:45:32 +01:00
Johannes
eba03caa23 Change syntax to avoid shell warning 2016-11-25 15:16:41 +01:00
Johannes
61a41a10ce Add apt-get update to cloudron-setup
This was reported to be needed on some providers
to be able to install curl
2016-11-25 14:26:38 +01:00
Johannes
d3109022b1 Only show the configure link if the app is healthy 2016-11-24 15:48:18 +01:00
Johannes
1c828f19a3 Remove console.log() 2016-11-24 15:46:21 +01:00
Johannes
2f1572b404 Protect against undefined filter text 2016-11-24 15:42:41 +01:00
Johannes
2ca12db362 Introduce the sso marker for postInstallMessage
The marker is "=== sso ==="
The part before the marker is shown if sso i disabled,
the remaining part is shown when sso is enabled.

If no marker is found, the whole text is shown
2016-11-24 15:33:47 +01:00
Johannes
14ef7688b8 Add app configure link in app grid
This was asked for many times now for the wp-admin and ghost

In addtion we could make that information in the postinstall
a link as well
2016-11-24 13:02:22 +01:00
Johannes
a1c83c79b2 Do not break the layout when no access control group is selected 2016-11-24 12:11:23 +01:00
Johannes
376678881c Use light font for app location 2016-11-24 12:05:45 +01:00
Johannes
0f7b11decd Give more space to the access restriction options 2016-11-23 17:28:05 +01:00
Johannes
22b8540843 Add more changes 2016-11-23 15:26:16 +01:00
Johannes
afe5a1aa6c Increase readability by not always using light fonts 2016-11-23 15:25:39 +01:00
Johannes
83b5bb394c Specify sso for apps not using of optionalSso 2016-11-23 12:09:08 +01:00
Johannes
539d430f60 Show correct ui parts for apps configure to not use sso 2016-11-22 16:15:03 +01:00
Johannes Zellner
6d898398df Add paypal donation link 2016-11-22 13:28:22 +00:00
Johannes
23a2077056 Only specify sso on app install when optionalSso is true 2016-11-22 14:20:19 +01:00
Johannes
d5bb797224 Fix typo for sso check 2016-11-22 13:46:15 +01:00
Johannes
907bae53ba Update to new manifestformat 2016-11-22 13:45:35 +01:00
Johannes
97122ed2be Include sso in the app install call 2016-11-22 11:51:53 +01:00
Johannes
7b65529f63 Use the correct accessRestrictionOption variable 2016-11-22 11:13:01 +01:00
Johannes
a87831b48c Include sso field in the app object delivered over the rest api 2016-11-22 11:12:46 +01:00
Johannes
baba7ca80d Changes for 0.80.0 2016-11-21 16:26:26 +01:00
Johannes
d39a84ea53 Do not redirect on app upstream error but show static error page
Fixes #4
2016-11-21 16:25:23 +01:00
Johannes
3bcd255a07 Ugly hack to ensure the modal backdrop is removed when changing views
Couldn't figure a way to make this generic
2016-11-21 13:22:58 +01:00
Johannes
67a87cd040 Show link to group creation when no group exists 2016-11-21 13:22:24 +01:00
Johannes
be2aa70f7d A bit more relayouting in the app install dialog 2016-11-21 13:12:14 +01:00
Johannes
2fac681b62 Clarify what customAuth means in install dialog 2016-11-21 12:57:42 +01:00
Johannes
dd4f7bf176 Ensure we show apps within an angular digest context
This ensures the app is shown immediately, not only after
the next digest run happens
2016-11-21 12:30:11 +01:00
Johannes
00a4b7ba09 Fix typo: missing comma
Fixes #105
2016-11-20 20:44:03 +01:00
Johannes
51799f7f14 Only set backupConfig in setup when no restore key is provided
When a restore is performed, the backupConfig is part of the
backup. Otherwise provide a default file based config which
contains the encryption key
2016-11-20 18:17:55 +01:00
Girish Ramakrishnan
1b291365d5 Fix appdb.add to set sso 2016-11-19 21:59:06 +05:30
Girish Ramakrishnan
9337f832d3 optionalAuth -> optionalSso 2016-11-19 21:37:39 +05:30
Girish Ramakrishnan
ab540cb3e4 update cloudron-manifestformat 2016-11-19 21:22:06 +05:30
Girish Ramakrishnan
1adc47ab32 make ordering of results predictable 2016-11-19 18:24:32 +05:30
Girish Ramakrishnan
94037e5266 remove oauth proxy backend logic 2016-11-19 17:13:08 +05:30
Girish Ramakrishnan
3457890b24 derive customAuth from usage of auth addon
we can get rid of this value from the manifest since the oauth proxy
is going away.
2016-11-19 17:12:58 +05:30
Girish Ramakrishnan
b23c06d443 remove oauth proxy from ui code 2016-11-19 17:12:40 +05:30
Girish Ramakrishnan
f5ebb782c0 remove support for singleUser 2016-11-19 17:12:31 +05:30
Girish Ramakrishnan
72f31744e3 remove singleUser from ui code 2016-11-19 17:12:24 +05:30
Girish Ramakrishnan
2065a5f7f2 Add optional SSO to install dialog 2016-11-19 17:12:15 +05:30
Girish Ramakrishnan
2ecf0c32cb Skip auth setup if user did not want sso 2016-11-19 17:12:00 +05:30
Girish Ramakrishnan
9c0f2175f7 add sso route parameter to app install
presumably, we don't allow this to be changed post installation
2016-11-19 17:11:46 +05:30
Girish Ramakrishnan
6064db9467 read sso field in db code 2016-11-19 17:10:54 +05:30
Girish Ramakrishnan
8cb8510d72 Add sso db field
SSO field tracks whether the user wants to enable SSO integration
or not.
2016-11-19 17:10:26 +05:30
Johannes Zellner
552ca43175 Only cleanup high frequency events in eventlog
Those are currently the login events and backup
2016-11-18 11:32:12 +01:00
Johannes Zellner
7c27f01ab8 Do not automatically enable root ssh access
With our current self-hosting installation process, this
is not longer required. It should be the users responsibility
to gain access to his server. For Cloudron managed hosting,
this does not apply as we always create servers with ssh keys.

Also do not tinker with the sshd configs. The user may choose
to use access via password.

Fixes #104
2016-11-17 16:28:32 +01:00
Johannes Zellner
a8ec9a4329 Ensure the server has curl installed
Fixes #103
2016-11-17 15:03:37 +01:00
Johannes Zellner
797cf31969 Add note about possible restart requirement 2016-11-17 14:50:00 +01:00
Johannes Zellner
37e365f679 Remove hash in front of install commands to allow copy'n'paste 2016-11-17 14:47:12 +01:00
Johannes Zellner
f53a9ab1aa Add known provider section to selfhosting docs 2016-11-17 14:46:03 +01:00
Johannes Zellner
4579de85bf Only log exposed ports if there are any 2016-11-16 22:18:12 +01:00
Johannes Zellner
affc5ee7d9 Add changes for 0.70.1 2016-11-16 16:29:53 +01:00
Johannes Zellner
40fa3818cc Send alive beacon every hour 2016-11-16 15:01:23 +01:00
Johannes Zellner
4a264ba8c5 Also send provider alongside 2016-11-16 14:45:27 +01:00
Johannes Zellner
8a47c36e20 CloudronError does not have BILLING_REQUIRED and also doesn't need it 2016-11-15 16:59:45 +01:00
Johannes Zellner
2dc06a01b6 Add cronjob to send alive signal 2016-11-15 15:25:21 +01:00
Johannes Zellner
f6695c9567 Add sendAliveStatus() 2016-11-15 15:24:40 +01:00
Johannes Zellner
fc3768101d Token exchange route does not need appstoreId 2016-11-15 15:24:28 +01:00
Johannes Zellner
5645954686 This route does not exist anymore 2016-11-14 17:16:42 +01:00
Johannes Zellner
f16d1c80f4 Do not log if no update is available 2016-11-14 17:00:30 +01:00
Johannes Zellner
a25b884dbb Fix typo, use .body 2016-11-14 16:29:47 +01:00
Johannes Zellner
567401c337 Fetch appstore credentials on app un-/purchase for caas 2016-11-14 15:40:53 +01:00
Johannes
1c80f3d667 Update selfhosting docs for --encyrption-key
Concludes and fixes #98
2016-11-13 14:11:27 +01:00
Johannes
17ebc67d36 Set default backupConfig in cloudron-setup
If we provide the backup key we have to provide other values
to prevent having to perform value merging in settings.js
defaults
2016-11-13 13:37:38 +01:00
Johannes
4248776c16 Give details what encryption key is 2016-11-13 11:49:09 +01:00
Johannes
3e0d6f698e Verify --provider string 2016-11-13 11:47:37 +01:00
Johannes
67e2589a15 Remove noisy ' 2016-11-13 11:35:56 +01:00
Johannes
2398a515b5 Make --encryption-key mandatory 2016-11-13 11:34:02 +01:00
Johannes
ad83d805ac Support supplying an encryption key during cloudron-setup 2016-11-13 11:20:50 +01:00
Johannes
a6ba3535df Add flattr button to readme 2016-11-11 15:59:10 +01:00
Johannes
3510d8f097 Mention preferred medialinks aspect ratio 2016-11-11 09:40:54 +01:00
Johannes
d0100218c9 Add information about metadata for app upload 2016-11-11 09:40:39 +01:00
Johannes
2cdeb40f33 Do not include docs folder in release tarball 2016-11-09 12:28:05 +01:00
Johannes
e033dce93e Run update short circuit prior earlier
This allows short circuit of non caas upgrades as well

Fixes #97
2016-11-09 12:25:39 +01:00
Johannes
4c62338e97 Add even more logs for upgrades 2016-11-09 10:44:48 +01:00
Johannes
606599a65b Add a hint about S3 for upgrades 2016-11-08 21:38:42 +01:00
Johannes
d091ac4e0a Add screenshot how to make s3 backup public 2016-11-08 21:20:51 +01:00
Johannes
b676ebf9d7 Temporarily ensure the box update link anchor is fine 2016-11-08 18:32:26 +01:00
Girish Ramakrishnan
e270c27cb0 Remove hardcoded cert 2016-11-08 18:04:07 +05:30
Girish Ramakrishnan
63561a51a4 Fix failing cert test
The hardcoded cert has expired
2016-11-08 17:33:45 +05:30
Girish Ramakrishnan
cde7599f87 Choose default confs
Fixes #92
2016-11-08 15:36:48 +05:30
Johannes
c9e7308f49 Attempt to set kernel params for generic provider
This is useful for running ubuntu on hardware or in virtualbox
2016-11-08 09:35:18 +01:00
Johannes
0088d9d5fc Renew expired certs in the cert tests 2016-11-08 09:28:48 +01:00
Johannes
4fd5b369f8 Reset app update indicator when an update was triggered
Fixes #48
2016-11-07 15:14:08 +01:00
Johannes
5e0ed1dff3 Don't just center the whole update email
Finally fixes #88
2016-11-07 13:35:02 +01:00
Johannes
215a16cd18 Render update changelog mail with markdown 2016-11-07 13:34:48 +01:00
Johannes
cd5ae290bc Add showdown node module 2016-11-07 13:34:47 +01:00
Johannes
bd0b66aaad Improve update email 2016-11-07 13:34:47 +01:00
Johannes
45b83232d7 Enable html mails for box updates 2016-11-07 12:32:57 +01:00
Johannes
bf2885d7d3 Show markdown in update dialog
Part of #88
2016-11-07 12:20:28 +01:00
Johannes
eeb8cc10ae Show error message in update dialog if a backup is currently happening
Fixes #89
2016-11-07 12:17:57 +01:00
Johannes
4668e3a771 Rename box-setup to cloudron-system-setup
This shell script and the associated systemd service
are hooks to setup the system like swap and volumes
It is part of the base image
2016-11-06 14:30:26 +01:00
Johannes
95a90dd050 Check on the installer service to be able to cancel update from box side 2016-11-06 14:30:26 +01:00
Johannes
908aa6f426 Reset the systemd-run service in case it failed earlier
systemd will refuse to run a transient unit if one run
with the same unit name failed earlier
2016-11-06 14:30:26 +01:00
Johannes
15f7ada958 We now use systemd-run no need for sudoDetached 2016-11-06 14:30:26 +01:00
Johannes
18b58ced8d Run the updater through systemd-run
This ensures it can start and stop the box process.
Due to control-group setting to killall children
the updater itself would get killed if the box service
restarts
2016-11-06 14:30:26 +01:00
Johannes
4f6f5bf3b7 Support --data-file instead of passing JSON as arguments
This is required for systemd-run, which limits the process
argument length and makes the data get truncated

https://github.com/coreos/fleet/issues/992
2016-11-06 14:30:26 +01:00
Johannes
50cbae420c Only retry 10 times in installer.sh 2016-11-06 14:30:26 +01:00
Johannes
a1207de93f set --unsafe-perm for npm rebuild 2016-11-06 14:30:26 +01:00
Johannes
a6824d8272 Ensure various scripts are run as root 2016-11-06 14:30:26 +01:00
Johannes
0eaeb67ba0 Run the box-setup init service
This ensures we have enough swap setup
2016-11-06 14:30:26 +01:00
Johannes
b40a9803a8 Adjust script paths for isntaller.sh movement 2016-11-06 14:30:26 +01:00
Johannes
f1ab8fde76 Move installer.sh one level up 2016-11-06 14:30:26 +01:00
Johannes
55d11b2832 Remove unused certs/ folder in installer 2016-11-06 14:30:26 +01:00
Johannes
e01da9b065 Add a installer readme
This file is to clarify why this folder is special,
what it does and why it is there.
2016-11-06 14:30:26 +01:00
Johannes
b703dbd7f7 Add changes for 0.70.0 2016-11-06 14:30:26 +01:00
Johannes
c70c7462bf hooks for installer are just local sysadmin webhooks 2016-11-06 14:29:41 +01:00
Johannes
342dd26645 No need to run npm install for the installer anymore 2016-11-06 14:29:41 +01:00
Johannes
8e03295362 Remove the cloudron-installer systemd unit file 2016-11-06 14:29:41 +01:00
Johannes
18cc3537d6 No more cloudron-installer for the docs 2016-11-06 14:29:41 +01:00
Johannes
16deb001bf No more cloudron-installer to stop 2016-11-06 14:29:41 +01:00
Johannes
78035e0b2e Remove installer tests 2016-11-06 14:29:41 +01:00
Johannes
c23755c028 Remove all nodejs code from installer 2016-11-06 14:29:41 +01:00
Johannes
38ddf12542 Instead of calling the installer, just run update.sh
update.sh will run detached and triggers the installer.sh
2016-11-06 14:29:41 +01:00
Johannes
525c7f2685 add shell.sudoDetached() 2016-11-06 14:29:41 +01:00
Johannes
4d360e3798 Allow update.sh to be run as root 2016-11-06 14:29:41 +01:00
Johannes
8adf9f3643 Add initial update.sh script to trigger installer.sh from box 2016-11-06 14:29:41 +01:00
Johannes
6236a9c15e Changes for 0.60.1 2016-11-04 11:46:13 +01:00
Johannes
cc6b260189 Bump mail container version 2016-11-04 10:07:14 +01:00
Johannes
01953ded0f Fix typo in size slugs 2016-11-02 10:25:50 +01:00
Johannes
645dc21f7a Mention the need for an AWS account for S3 setup 2016-11-01 10:44:20 +01:00
Johannes
34acb38d40 Some typo fixes to the new selfhosting docs 2016-10-31 11:26:36 +01:00
Girish Ramakrishnan
73918f8808 doc: new selfhosting docs 2016-10-30 19:53:44 -07:00
Johannes
9f973133e8 Give correct feedback if S3 region is wrong
Fixes #87
2016-10-28 16:48:13 +02:00
Johannes
5ba86d5c35 Use aws s3 cli to test credentials
This allows us to test the exact same usage of the api
through the cli tool, not the javascript api
2016-10-28 16:36:05 +02:00
Johannes
7b1b369e40 Add select box for S3 region 2016-10-28 15:28:48 +02:00
Johannes
894384cf3c Remove unused change handler on dns provider selection 2016-10-28 14:58:28 +02:00
Johannes
9768f8171c Add possible provider 'digitalocean' 2016-10-28 11:21:58 +02:00
Girish Ramakrishnan
7672bc0c40 Add -y to update 2016-10-26 11:07:36 -07:00
Girish Ramakrishnan
064c584b45 Make provider mandatory 2016-10-26 10:53:25 -07:00
Johannes
586fc4fe2d Revert "CaaS: bring back the userdata.json provision code path"
This reverts commit 830972e8ae.
2016-10-26 10:20:26 +02:00
Johannes
ca22939298 Revert "keep probing for userdata.json like before"
This reverts commit f8cc68b78d.
2016-10-26 10:20:20 +02:00
Girish Ramakrishnan
f8cc68b78d keep probing for userdata.json like before
there can be a race between server starting up and the scp happenning
from the appstore
2016-10-25 18:29:43 -07:00
Girish Ramakrishnan
830972e8ae CaaS: bring back the userdata.json provision code path 2016-10-25 16:24:28 -07:00
Girish Ramakrishnan
871f5728f8 Add 0.60.0 changes 2016-10-25 15:58:50 -07:00
Girish Ramakrishnan
3560af1b1e Fix restore blob format 2016-10-25 14:34:48 -07:00
Girish Ramakrishnan
859d27522b Use -q causes the pipe to fail and script aborts 2016-10-25 14:01:40 -07:00
Girish Ramakrishnan
9c90f88af4 Add --help 2016-10-25 13:34:12 -07:00
Girish Ramakrishnan
8142ad3989 Fix various bugs 2016-10-25 13:15:19 -07:00
Girish Ramakrishnan
984c506c81 hard to center the semver 2016-10-25 12:57:24 -07:00
Girish Ramakrishnan
124c04167f Verify box version the first thing 2016-10-25 12:55:41 -07:00
Girish Ramakrishnan
105b8e0aeb suppress stderr output 2016-10-25 12:49:51 -07:00
Girish Ramakrishnan
a22591a89f Handle download and install errors 2016-10-25 12:47:51 -07:00
Girish Ramakrishnan
c91464accc Enable -e and handle init script error 2016-10-25 12:00:54 -07:00
Girish Ramakrishnan
d36af33269 default dns config has changed 2016-10-25 11:37:24 -07:00
Girish Ramakrishnan
eaa747fe39 do not install admin certs during test 2016-10-25 11:36:56 -07:00
Johannes
25243970ad Only allow email to be enabled if a real dns provider is setup 2016-10-25 16:31:22 +02:00
Johannes
fc09cf2205 Update the webui when dns config changed 2016-10-25 16:21:37 +02:00
Johannes
e1be8659fa Also validate DNS config for digitalocean backend 2016-10-25 16:18:54 +02:00
Johannes
eb963f3e1b Report auth issues in digitalocean dns backend 2016-10-25 16:18:33 +02:00
Johannes
a983fb144f Only caas currently allows dynamic domain change 2016-10-25 16:06:44 +02:00
Johannes
a23f5d45b0 Improve error feedback when setting Route53 credentials 2016-10-25 16:06:31 +02:00
Johannes
e4b7b9c9fb Fix typo 2016-10-25 15:28:26 +02:00
Johannes
0c6a2008ff Also support noop dns provider in settings backend 2016-10-25 14:55:20 +02:00
Johannes
e7c82b3bf7 Make label clickable 2016-10-25 14:52:52 +02:00
Johannes
048f3e0614 Show selection box for dns provider 2016-10-25 14:51:57 +02:00
Johannes
ae402f7afb Make the DNS setup button normal size 2016-10-25 14:43:16 +02:00
Johannes
e848b23bc8 Let the user know when no DNS provider is setup
This is the case when noop provider is used
2016-10-25 14:41:35 +02:00
Johannes
012fbe926f Wait for the configure event to be received 2016-10-25 14:33:32 +02:00
Johannes
e94cae88ab Cleanup package.json from unused node modules 2016-10-25 14:29:04 +02:00
Johannes
d7a91429f3 noop dns provider is a valid one 2016-10-25 14:15:54 +02:00
Johannes
254e0ef8e1 Print information on how to follow logs in the setup script 2016-10-25 14:07:49 +02:00
Johannes
2e7cc4847e the folder is called /var/log/ without s 2016-10-25 14:01:35 +02:00
Johannes
8cfc8bb893 Redirect init and installer script output to log file 2016-10-25 13:58:46 +02:00
Johannes
bd163327be Do not disable nginx service 2016-10-25 13:57:25 +02:00
Johannes
9adc6d2ba5 No more data subobject 2016-10-25 13:41:51 +02:00
Johannes
5539710a25 Explicitly specify npm bin 2016-10-25 13:27:31 +02:00
Johannes
6b6af13c5f Do not set -e in cloudron-setup
This needs to be reenabled, but I can't make out
why having it set makes the parent script stop
after calling an external one with /bin/bash,
even though the external one has a 0 exit code
2016-10-25 13:14:01 +02:00
Johannes
6660ef2ff3 Let the cloudron-version tool resolve the version string 2016-10-25 13:13:04 +02:00
Johannes
2ca5b3c197 Directly call installer.sh from cloudron-setup 2016-10-25 11:27:58 +02:00
Johannes
049ab4d744 Remove initial install feature in installer 2016-10-25 11:27:41 +02:00
Johannes
dd9c594387 Install cloudron-version tool 2016-10-25 11:27:04 +02:00
Girish Ramakrishnan
15cfbe3f99 Initial version of configure style cloudron-setup script 2016-10-25 00:07:46 -07:00
Girish Ramakrishnan
0180dcf0ec Allow specific version to be installed 2016-10-25 00:01:06 -07:00
Girish Ramakrishnan
c8a04f8707 remove code that stops nginx 2016-10-24 14:41:26 -07:00
Girish Ramakrishnan
37185b1058 Move cloudron-setup script to top level 2016-10-24 14:28:37 -07:00
Johannes
f4aacfa2d0 tls config property is called tlsConfig 2016-10-24 18:04:28 +02:00
Johannes
bc285a0965 Allow tls-provider to be set for development 2016-10-24 17:30:47 +02:00
Johannes
e9a35ec549 Allow to specify box versions url for development 2016-10-24 17:28:40 +02:00
Johannes
595787a898 Add missing 'then' 2016-10-24 16:46:14 +02:00
Johannes
235d969890 Add cloudron-setup script 2016-10-24 16:18:02 +02:00
Johannes
8efa75e5d6 Only use ssh port 202 with caas 2016-10-24 15:56:24 +02:00
Johannes
e700eb1551 Remove setup webui, we first rely on a shell script with args 2016-10-24 15:51:51 +02:00
Johannes
b7e36a6f33 Retry dns check 2016-10-23 23:10:49 +02:00
Johannes
30e91eb812 Basic ui to wait for dns record 2016-10-23 22:58:56 +02:00
Johannes
468e5e7e89 Add route to check dns record 2016-10-23 22:58:38 +02:00
Girish Ramakrishnan
86a31b8f5a start nginx properly 2016-10-21 16:43:40 -07:00
Girish Ramakrishnan
b9ff8a2cef start the installer 2016-10-21 16:22:25 -07:00
Girish Ramakrishnan
e63ef4c991 Extract properly 2016-10-21 16:21:09 -07:00
Girish Ramakrishnan
1244a73a19 run the install web ui on port 80 2016-10-21 16:04:08 -07:00
Girish Ramakrishnan
64f3b45eef download installer in base image script 2016-10-21 15:52:40 -07:00
Girish Ramakrishnan
d494129353 default provider to generic 2016-10-21 12:58:01 -07:00
Johannes Zellner
0c3dda8ee0 Add web ui to create config file 2016-10-21 12:30:47 -07:00
Johannes Zellner
3038521916 Set fallback versions url 2016-10-21 12:27:58 -07:00
Johannes Zellner
d4d3eced56 Wait forever for user data and support js format 2016-10-21 12:21:30 -07:00
Johannes Zellner
2c279dc77e Set LE as default tls config 2016-10-21 10:31:55 -07:00
Johannes Zellner
5d8b46e015 Add more fallbacks for settings 2016-10-21 10:31:30 -07:00
Johannes Zellner
723c7307d2 Set default provider to generic 2016-10-21 10:28:40 -07:00
Johannes Zellner
db55a7ad3c Create fallback cert if not passed in via user data 2016-10-21 10:28:22 -07:00
Johannes Zellner
09b4325ecc Set some more fallbacks in argparser.sh 2016-10-21 10:26:32 -07:00
Johannes Zellner
66999f7454 custom domain is actually the default by now 2016-10-21 10:25:33 -07:00
Johannes Zellner
2c511ccc5a Do not create a swap file if swap is already more than physical memory
This is the case for example on the default ubuntu 16.04 virtualbox image
2016-10-20 15:32:02 +02:00
Girish Ramakrishnan
6b72ee61f9 Show good error message for invalid username 2016-10-17 19:02:48 -07:00
Girish Ramakrishnan
0a7303e50d lower case message 2016-10-17 18:56:10 -07:00
Girish Ramakrishnan
906beaca29 add link to packaging guide 2016-10-16 11:24:58 -07:00
Girish Ramakrishnan
daf8250e44 do not skip scripts!
all our sudo scripts are here.
2016-10-14 15:14:24 -07:00
Girish Ramakrishnan
4313d8a28c Send mail when backup fails
Fixes #9
2016-10-14 15:08:41 -07:00
Girish Ramakrishnan
4fbce26877 Turns out git archive is used in createDOImage to get installer code 2016-10-14 11:24:10 -07:00
Girish Ramakrishnan
702b93fe7c Do not include baseimage and installer in archive
The CLI tool will be fixed to download the file from gitlab.

Fixes #39
2016-10-14 10:46:21 -07:00
Girish Ramakrishnan
6755d13f1b Revert "Do not include baseimage and installer in archive"
This reverts commit f80ce1778a.

We cannot just remove it because the CLI tool relies on this right
now.
2016-10-14 10:35:33 -07:00
Girish Ramakrishnan
f80ce1778a Do not include baseimage and installer in archive
These are part of the base image

Fixes #39
2016-10-14 09:49:24 -07:00
Girish Ramakrishnan
db7958c934 remove reference to dead directories 2016-10-14 09:40:08 -07:00
Girish Ramakrishnan
02e7c4eaef Do not display "caas" 2016-10-14 09:34:55 -07:00
Girish Ramakrishnan
ae299f5838 Fix failing test 2016-10-14 09:30:42 -07:00
Girish Ramakrishnan
bafc35f99e Revert "Use in-place replacement ursa-purejs for native ursa"
This reverts commit 8e033dc387.

Lots of things in ursa-purejs is unimplemented. We get errors like:

    /home/yellowtent/box/node_modules/ursa-purejs/lib/ursa.js:331
          throw new Error("Unsupported operation : sign");
          ^
    Error: Unsupported operation : sign
        at Object.sign (/home/yellowtent/box/node_modules/ursa-purejs/lib/ursa.js:331:13)
        at Object.sign (/home/yellowtent/box/node_modules/ursa-purejs/lib/ursa.js:624:27)
        at /home/yellowtent/box/src/cert/acme.js:112:50
        at /home/yellowtent/box/src/cert/acme.js:70:16
2016-10-13 21:41:04 -07:00
Girish Ramakrishnan
32eb1edead center it 2016-10-13 16:26:29 -07:00
Girish Ramakrishnan
1187e6a101 Add powered by footer to password reset 2016-10-13 16:18:26 -07:00
Girish Ramakrishnan
f94a653e80 Add powered by footer
Fixes #77
2016-10-13 16:18:22 -07:00
Girish Ramakrishnan
1c22cb8443 Pass invitor object when reinviting user 2016-10-13 15:57:58 -07:00
Girish Ramakrishnan
49f7fb552b settings api: key if present must be a string 2016-10-13 15:32:18 -07:00
Girish Ramakrishnan
d460c36e14 Simply use settings.setBackupConfig 2016-10-13 15:32:00 -07:00
Girish Ramakrishnan
6e8eea6876 Use getBackupConfig instead and allow key to be settable 2016-10-13 15:23:49 -07:00
Girish Ramakrishnan
fd1b56b9e9 Fix failing sysadmin test 2016-10-13 15:13:28 -07:00
Girish Ramakrishnan
92106a2a52 Fix failing simple auth test 2016-10-13 15:11:03 -07:00
Girish Ramakrishnan
8809552fb2 Fix failing apps test 2016-10-13 15:04:12 -07:00
Girish Ramakrishnan
3652d7f186 Fix failing cloudron-test 2016-10-13 14:55:14 -07:00
Girish Ramakrishnan
74abb26016 Fix failing backup test 2016-10-13 14:50:54 -07:00
Girish Ramakrishnan
606f28c724 fix failing setting test 2016-10-13 14:45:18 -07:00
Girish Ramakrishnan
427f72fb24 bump the infra version
this is redundant since we have an upgrade coming up...
2016-10-13 13:23:28 -07:00
Girish Ramakrishnan
21b28d3dcc Dynamically scale addon memory
Simple math for now: we bump up memory in slabs of 4gb

Fixes #79
2016-10-13 13:13:09 -07:00
Girish Ramakrishnan
1116bbe731 Add more 0.50.0 changes 2016-10-13 10:02:40 -07:00
Johannes Zellner
4099a7a32e Also use cloudronName in account setup 2016-10-13 17:40:00 +02:00
Johannes Zellner
97a17ff25f Amend common template values in a central place 2016-10-13 17:34:21 +02:00
Johannes Zellner
68d37b7260 Render the cloudronName in oauth views 2016-10-13 17:24:26 +02:00
Johannes Zellner
7513817d41 Add newline for password reset 2016-10-13 17:19:41 +02:00
Johannes Zellner
fadef230e9 Fix avatar change after code refactoring 2016-10-13 17:10:30 +02:00
Johannes Zellner
a672a930f8 Show cloudron name in password reset mail subject 2016-10-13 17:03:01 +02:00
Johannes Zellner
e6f8c83a6b Remove dead code in webadmin 2016-10-13 16:55:55 +02:00
Johannes Zellner
f8d50f6ea8 Ensure we hide tutorial and footer until angular is loaded 2016-10-13 16:53:38 +02:00
Johannes Zellner
62b803624f HTMLify the password reset mail 2016-10-13 16:48:58 +02:00
Johannes Zellner
9872ac424f Increase mail container memory
This is only a temporary fix for the next release, in case
we have not yet implemented a dynamic setting
2016-10-13 13:56:55 +02:00
Johannes Zellner
bca57b5e47 Show cloudron name for webadmin login
Fixes #80
2016-10-13 13:56:29 +02:00
Johannes Zellner
e533f506cc Remove reduandant Cloudron Cloudron 2016-10-13 12:44:08 +02:00
Johannes Zellner
0b8857e1bb Fix the user add email 2016-10-13 12:37:25 +02:00
Johannes Zellner
5a1729d715 Improve the invite mail 2016-10-13 11:56:23 +02:00
Johannes Zellner
946d4f1b70 Actually set the html content for the invite mail 2016-10-13 11:38:52 +02:00
Johannes Zellner
8e033dc387 Use in-place replacement ursa-purejs for native ursa
The native modules often cause headaches with rebuilds
2016-10-13 11:23:57 +02:00
Johannes Zellner
cf09f0995f Remove unused requires 2016-10-13 11:21:40 +02:00
Johannes Zellner
19c7dd0de8 Add html version to user welcome mail 2016-10-13 11:21:29 +02:00
Girish Ramakrishnan
1d8df65fbf Fix mailbox name for naked domains
Fixes #81
2016-10-12 19:54:04 -07:00
Girish Ramakrishnan
2be17eeb52 Add semi-tested scaleway backend 2016-10-11 19:47:27 -07:00
Girish Ramakrishnan
5c34cb24c6 doc: add understand section 2016-10-11 19:29:42 -07:00
Girish Ramakrishnan
c12ee50b3b dump the body for debugging 2016-10-11 19:29:23 -07:00
Girish Ramakrishnan
c54a825eb8 doc: add linode/scaleway notes 2016-10-11 18:22:44 -07:00
Girish Ramakrishnan
ef27a17cae Only update grub if we modified grub 2016-10-11 18:22:27 -07:00
Girish Ramakrishnan
8cf8661c2f it turns out 0.5 is less than 0.22 2016-10-11 16:41:51 -07:00
Girish Ramakrishnan
7cdbab446d Add big update (0.5.0) 2016-10-11 16:39:52 -07:00
Girish Ramakrishnan
74ffd5c2d3 Fix bash syntax 2016-10-11 16:24:47 -07:00
Girish Ramakrishnan
3a259e9ce0 add some hacks for scaleway
* load loop module if not autoloaded
* allow NBD ports (https://community.online.net/t/how-to-configures-iptables-with-input-rules-with-dynamic-nbd/303/31)
2016-10-11 15:21:10 -07:00
Johannes Zellner
f9e47ac3c0 Ensure we always keep the backup key 2016-10-11 15:56:07 +02:00
Johannes Zellner
0c85f96b27 Allow to setup a backup region 2016-10-11 14:20:31 +02:00
Johannes Zellner
b30300b8b2 Fix backup config prefix display 2016-10-11 14:14:24 +02:00
Johannes Zellner
6663a6bd66 More error feedback on backup config change form 2016-10-11 14:14:04 +02:00
Johannes Zellner
c1fc2ce095 Give error response if aws accessKeyId is unknown 2016-10-11 14:07:36 +02:00
Johannes Zellner
e614b930a5 Report with a distinguished status code if upstream validation failed 2016-10-11 11:49:30 +02:00
Johannes Zellner
9b4228f373 No need for a separate function 2016-10-11 11:47:33 +02:00
Johannes Zellner
6e6d4f7413 Actually verify s3 credentials by using the api 2016-10-11 11:46:28 +02:00
Johannes Zellner
cac85b17bc Add backup config test for each backend 2016-10-11 11:36:25 +02:00
Johannes Zellner
449f8b03ad The backup setting route does not require password for now 2016-10-11 11:21:06 +02:00
Johannes Zellner
6eacc76281 wire up the backup backend settings save button 2016-10-11 11:18:12 +02:00
Johannes Zellner
33f764f6aa Properly setup the backup backend change dialog 2016-10-11 11:17:41 +02:00
Johannes Zellner
9ab845ef8a Set the backup janitor back to every 30min 2016-10-11 10:55:00 +02:00
Johannes Zellner
eaee3ffbc9 Cleanup the storage backend change ui 2016-10-11 10:54:33 +02:00
Johannes Zellner
e1f268a325 remove unused require 2016-10-11 10:32:22 +02:00
Johannes Zellner
1fc16d0fe8 Warn admins in the webui if they use the filesystem backend 2016-10-11 10:32:05 +02:00
Johannes Zellner
d7ea06e80e Simply remove all backups up to the last to when using filesystem
backend
2016-10-11 10:31:21 +02:00
Johannes Zellner
2d39a9bfa1 Only store last two days of backups 2016-10-11 09:56:42 +02:00
Johannes Zellner
f576f38e4c Calculate the backup checksum for client side verification
Fixes #54
2016-10-10 18:11:25 +02:00
Johannes Zellner
734506eb41 add checksum node module 2016-10-10 18:11:07 +02:00
Johannes Zellner
8ac8ea7d8a Reduce debug output 2016-10-10 16:27:39 +02:00
Johannes Zellner
9d3f8f23ef Also remove the app backup json files 2016-10-10 16:25:43 +02:00
Johannes Zellner
b0a8ba85e1 Also remove the db records for deleted backups 2016-10-10 16:25:43 +02:00
Johannes Zellner
7e41ea9c31 Make the script executable 2016-10-10 16:25:43 +02:00
Johannes Zellner
1e65142f47 Use rmbackup.sh instead of fs.unlink() due to root ownership 2016-10-10 16:25:43 +02:00
Johannes Zellner
f05a5226ba Add new sudo file rmbackup.sh as backups are owned by root currently 2016-10-10 16:25:43 +02:00
Johannes Zellner
c129328828 There is no result 2016-10-10 16:25:43 +02:00
Johannes Zellner
acc644160a Remove the old backups from the storage 2016-10-10 15:45:48 +02:00
Johannes Zellner
c7e5c09bb9 Adjust removeBackup() api 2016-10-10 15:45:48 +02:00
Johannes Zellner
1b3ae1f178 Add new storage.removeBackup() api
This currently is only used in the filesystem backend,
but may be expanded to also cleanup S3 in the future
2016-10-10 15:45:48 +02:00
Johannes Zellner
bceeb092bf Remove unused require 2016-10-10 14:50:53 +02:00
Johannes Zellner
0d0229e531 Filter potential backups to cleanup 2016-10-10 14:43:47 +02:00
Johannes Zellner
629e061743 Use specific error if app backup for restore can't be found 2016-10-10 13:21:45 +02:00
Girish Ramakrishnan
d53657fa61 doc: generic machine 2016-10-09 21:03:56 -07:00
Girish Ramakrishnan
437c582be6 doc: reduce indentation 2016-10-09 20:51:08 -07:00
Girish Ramakrishnan
12ce714df4 Allow backup configuration to be changed 2016-10-09 20:23:21 -07:00
Girish Ramakrishnan
f09a1c577b doc: more docs for backup api 2016-10-09 20:23:21 -07:00
Girish Ramakrishnan
4e3ba4c96f Check type of bucket and prefix as well 2016-10-09 20:17:42 -07:00
Girish Ramakrishnan
26c67d2d36 refactor settings ui: scope the methods 2016-10-09 20:07:59 -07:00
Girish Ramakrishnan
1e6b09c0da reduce task concurrency
trying to restore many apps in low memory, just crashes everything
2016-10-09 13:27:46 -07:00
Girish Ramakrishnan
4ed74a8164 bump postgresql and mail images 2016-10-09 12:53:55 -07:00
Girish Ramakrishnan
131cd96840 allow various provider in backup config 2016-10-09 00:41:24 -07:00
Girish Ramakrishnan
fb4d6f7649 doc: fix dns config api docs 2016-10-09 00:24:30 -07:00
Girish Ramakrishnan
da5e40db66 verify token type 2016-10-09 00:23:23 -07:00
Girish Ramakrishnan
6c1c7e74c1 detect if aa is available (linode has it disabled) 2016-10-08 23:04:24 -07:00
Girish Ramakrishnan
5a18c4dc26 in some systems, there is already some swap allocated 2016-10-08 21:55:13 -07:00
Girish Ramakrishnan
0fbe2709ea bash cannot handle float arithmetic 2016-10-08 21:40:05 -07:00
Girish Ramakrishnan
6fdf5bd7ec Find rootfs device the hard way 2016-10-08 21:31:11 -07:00
Girish Ramakrishnan
f2948483df rename eth0 to generic
sysinfo caters to more than IP...
2016-10-08 16:40:58 -07:00
Girish Ramakrishnan
1ef6eefaf6 dns: fix noop get/upsert 2016-10-08 14:38:59 -07:00
Girish Ramakrishnan
ae0f90c621 check for generic provider 2016-10-08 14:09:32 -07:00
Girish Ramakrishnan
63a0c69e76 modify grub only for ec2 2016-10-08 13:23:45 -07:00
Girish Ramakrishnan
370e4f7c25 rename wildcard to noop 2016-10-08 13:00:40 -07:00
Girish Ramakrishnan
7cb8745029 change provider name to ssh 2016-10-07 14:22:49 -07:00
Girish Ramakrishnan
ba5f261f33 Fix speling 2016-10-07 14:21:26 -07:00
Girish Ramakrishnan
72f287c4e5 Fix typos 2016-10-07 14:19:44 -07:00
Girish Ramakrishnan
c385abe416 return wildcard dns backend 2016-10-07 14:10:28 -07:00
Girish Ramakrishnan
49e3dba1f2 Add DNS wildcard backend
It assumes that the user setup the wildcard DNS entry manually.
2016-10-07 14:09:20 -07:00
Girish Ramakrishnan
e456c4b39c Add eth0 sysinfo backend 2016-10-07 14:09:20 -07:00
Girish Ramakrishnan
9b83a4d776 add certificate interface file 2016-10-07 14:09:20 -07:00
Girish Ramakrishnan
0ae1238233 Add sysinfo interface definition 2016-10-07 14:09:20 -07:00
Johannes Zellner
b45fca6468 Add 0.22.0 changes 2016-10-07 12:44:36 +02:00
Johannes Zellner
d7245b5e1e Cleanup the provisioning code 2016-10-06 14:14:48 +02:00
Johannes Zellner
81c443d637 Use the correct callback 2016-10-06 14:08:53 +02:00
Johannes Zellner
84e4c0033e Do not support meta data api for user data
From this version on only a local /root/userdata.json
is supported. We will poll for that file every 5sec
The file is either uploaded via boxtask in caas or
the cli tool
2016-10-06 11:48:17 +02:00
Girish Ramakrishnan
d7be1d7d03 open usermanual in new page 2016-10-05 12:54:59 -07:00
Girish Ramakrishnan
c8bf858ab0 doc: make to/from more clear 2016-10-05 10:21:24 -07:00
Johannes Zellner
e2c206b755 Add cron job stub for backup cleaning in janitor 2016-10-05 17:19:53 +02:00
Johannes Zellner
882ed72f14 Remove --ssh-key in update docs for selfhosting 2016-10-05 16:41:17 +02:00
Johannes Zellner
29451f8e07 Remove unused code in installer 2016-10-05 14:35:40 +02:00
Johannes Zellner
29d3ad6cd3 Rename provision.json to userdata.json 2016-10-05 14:31:22 +02:00
Johannes Zellner
4642d4c8c5 First try to get the user data from a local json file 2016-10-05 14:30:37 +02:00
Girish Ramakrishnan
ca7f26d5c7 Bump postgresql to fix clone issue 2016-10-03 23:15:30 -07:00
Girish Ramakrishnan
98773160d0 sync before reboot 2016-10-03 17:43:22 -07:00
Girish Ramakrishnan
6f0708eff2 Add mailbox with new app id 2016-10-03 16:11:36 -07:00
Girish Ramakrishnan
a2db4312b8 give dummy callback to reboot 2016-10-03 15:49:47 -07:00
Girish Ramakrishnan
1e744c24f0 Fix typo 2016-10-03 15:08:21 -07:00
Girish Ramakrishnan
602265329d Add 0.21.1 changes 2016-10-03 14:42:43 -07:00
Girish Ramakrishnan
833e19a239 add note on cloning 2016-10-03 14:22:05 -07:00
Girish Ramakrishnan
1a25ad77ca use latest mail container 2016-10-03 13:53:11 -07:00
Girish Ramakrishnan
13e1b7060e doc: add note on second level domains for DO creation 2016-10-03 13:52:40 -07:00
Girish Ramakrishnan
3adf183569 Fix apps.clone to allocate mailbox 2016-10-03 13:27:27 -07:00
Girish Ramakrishnan
8e3db8fa2e Fix typo 2016-10-02 18:28:50 -07:00
Girish Ramakrishnan
2c357e022b add note about ldap restrictions as well 2016-10-01 23:52:01 -07:00
Girish Ramakrishnan
0f882614b1 Fix color of help links 2016-10-01 18:05:50 -07:00
Girish Ramakrishnan
3ae7a514ef Change the put route for setting group members 2016-10-01 17:33:50 -07:00
Girish Ramakrishnan
7779e5da3b Move unrestricted as first entry since the spacing is awkward below the groups 2016-09-30 14:26:08 -07:00
Girish Ramakrishnan
cd0243d700 always store the group names as lower case 2016-09-30 12:33:18 -07:00
Girish Ramakrishnan
ba588a1cd7 Fix group name validation to not allow hyphen
Fixes #70
2016-09-30 12:28:29 -07:00
Girish Ramakrishnan
f71b55c9e2 Fix apps test 2016-09-30 12:09:33 -07:00
Girish Ramakrishnan
d62cecff88 Display group name instead of id 2016-09-30 11:19:49 -07:00
Girish Ramakrishnan
93fb01a9b9 Fix more of the group tests 2016-09-30 10:17:50 -07:00
Girish Ramakrishnan
39043736e5 Give empty location a label 2016-09-30 10:17:34 -07:00
Girish Ramakrishnan
475fd06ac0 use unique ids for groups 2016-09-30 09:33:10 -07:00
Girish Ramakrishnan
1d12808b13 test setting group members 2016-09-29 15:15:25 -07:00
Girish Ramakrishnan
430ac330dc add groupdb tests 2016-09-29 15:11:56 -07:00
Girish Ramakrishnan
8e712da2c8 Add route and API to set members of a group 2016-09-29 14:48:14 -07:00
Girish Ramakrishnan
79d2b0c11c improve PTR docs for email 2016-09-29 12:53:54 -07:00
Girish Ramakrishnan
02e15dc413 Add link to user manual 2016-09-29 12:46:40 -07:00
Girish Ramakrishnan
cf8282691b highlight mail server requirement 2016-09-29 12:38:42 -07:00
Girish Ramakrishnan
8c52221d26 More 0.21.0 changes 2016-09-29 12:38:35 -07:00
Girish Ramakrishnan
450d644f71 bump infra version
the email addon authentication has changed. this means that we have
to recreate app (that use the recvmail/sendmail) addons.
2016-09-28 20:51:51 -07:00
Girish Ramakrishnan
f9c6fbee72 Fix field name in migration script 2016-09-28 19:37:04 -07:00
Girish Ramakrishnan
d5b50f48fd Fix crash in migration script 2016-09-28 17:51:43 -07:00
Girish Ramakrishnan
cdf0b8c1b0 Display error in accounts UI 2016-09-28 16:11:10 -07:00
Girish Ramakrishnan
90aeeb3896 Use profile route to update the display name 2016-09-28 15:50:15 -07:00
Girish Ramakrishnan
2ea772b862 use profile route to update the email 2016-09-28 15:49:41 -07:00
Girish Ramakrishnan
1a4bb4d119 Add Client.updateProfile 2016-09-28 15:49:33 -07:00
Girish Ramakrishnan
079bf3aed1 Fix invite template (again) 2016-09-28 15:25:16 -07:00
Girish Ramakrishnan
7c892706c3 Fix invite sent message 2016-09-28 15:25:16 -07:00
Girish Ramakrishnan
c1063112e8 Fix Ok casing 2016-09-28 15:23:22 -07:00
Girish Ramakrishnan
7a07b52e7c Show place holder text if mail is enabled but no email yet 2016-09-28 15:04:17 -07:00
Girish Ramakrishnan
08a45897c3 Fix spacing 2016-09-28 15:02:17 -07:00
Girish Ramakrishnan
27d911addc Fix mail templates to use alternate email when email is null 2016-09-28 14:47:09 -07:00
Girish Ramakrishnan
441ea1af05 set email to null if we have no username 2016-09-28 14:39:47 -07:00
Girish Ramakrishnan
85c16ca43a use display name since email may not be valid 2016-09-28 14:39:29 -07:00
Girish Ramakrishnan
e1ef118d7b Use alternateEmail if user was removed without ever signing up 2016-09-28 13:25:41 -07:00
Girish Ramakrishnan
823e6575a6 hide user@fqdn when mail is enabled 2016-09-28 13:21:26 -07:00
Girish Ramakrishnan
ec13938042 add hack to clear alias error on change 2016-09-28 13:17:31 -07:00
Girish Ramakrishnan
1a17627f83 make space add tag 2016-09-28 13:06:02 -07:00
Girish Ramakrishnan
61292c4df9 display alias errors 2016-09-28 12:54:56 -07:00
Girish Ramakrishnan
10ff0f559c Show error if mailbox already exists 2016-09-28 12:00:05 -07:00
Girish Ramakrishnan
601aa7f5cd group useredit functions 2016-09-28 11:52:00 -07:00
Girish Ramakrishnan
36a91bb51a group userremove functions 2016-09-28 11:47:50 -07:00
Girish Ramakrishnan
149c90e8f7 group useradd functions 2016-09-28 11:45:39 -07:00
Girish Ramakrishnan
c357efe4da just ignore error if we cannot import mailbox
this allows the box code to not crash if the user already has existing
conflicting group and user names
2016-09-28 11:09:53 -07:00
Girish Ramakrishnan
c43bc24a6a Revert "Show group email ids when mail is enabled"
This reverts commit cca9780f51.

The UI looks very cluttered with this
2016-09-28 10:53:04 -07:00
Girish Ramakrishnan
a78e17b036 Do not return aliases as mailboxes 2016-09-28 10:26:41 -07:00
Girish Ramakrishnan
cca9780f51 Show group email ids when mail is enabled 2016-09-28 10:17:04 -07:00
Girish Ramakrishnan
1d31975e2a Groupname can be 2 chars long 2016-09-28 10:11:43 -07:00
Girish Ramakrishnan
7cb6961052 Show aliases based on whether email is enabled 2016-09-28 10:06:01 -07:00
Girish Ramakrishnan
18e23e47df Fix help text a bit 2016-09-28 09:55:05 -07:00
Johannes Zellner
ac469ddffc Point self-hosters to the self-hosting backup docs from the user manual 2016-09-28 16:46:35 +02:00
Johannes Zellner
a3401cdc3d Ensure user listing is fine 2016-09-28 15:00:41 +02:00
Johannes Zellner
c6dc7d5c99 Only show email help for users and groups if email is enabled 2016-09-28 12:57:17 +02:00
Johannes Zellner
48e602273a Fetch mail config in users view 2016-09-28 12:57:03 +02:00
Johannes Zellner
de25b34f71 Add some help text how users and groups work wrt email 2016-09-28 12:54:26 +02:00
Johannes Zellner
adc3c13a01 Change how supertext is displayed 2016-09-28 12:54:04 +02:00
Johannes Zellner
b28c239dbf Show error if email already taken on user edit form 2016-09-28 12:29:18 +02:00
Johannes Zellner
b0c470da5a show if user is not activated yet 2016-09-28 12:20:45 +02:00
Johannes Zellner
11cfa2efaa Fix user edit with alternateEmail 2016-09-28 12:12:37 +02:00
Johannes Zellner
3a30310e2f Select the alternateEmail for client side gravatar 2016-09-28 12:05:48 +02:00
Johannes Zellner
08ae43ca13 Show alternateEmail in user profile if email is enabled 2016-09-28 11:49:03 +02:00
Johannes Zellner
d426856883 Use alternateEmail for gravatar 2016-09-28 11:48:48 +02:00
Johannes Zellner
9fb6a537ed Take alternateEmail into the client side profile 2016-09-28 11:47:26 +02:00
Johannes Zellner
58b5613c6b Send alternateEmail with profile and user rest api 2016-09-28 11:08:11 +02:00
Girish Ramakrishnan
ae9838a869 alternateEmail already checks if email is enabled now 2016-09-27 23:54:48 -07:00
Girish Ramakrishnan
4204d76616 lower case the alias and mailing list cn 2016-09-27 23:41:50 -07:00
Girish Ramakrishnan
20b6df3cb8 Make the button as big as other buttons 2016-09-27 23:00:53 -07:00
Girish Ramakrishnan
6a4b60436e alternativeEmail -> alternateEmail 2016-09-27 22:25:50 -07:00
Girish Ramakrishnan
e2b28d3286 Allow enabling email on dev 2016-09-27 19:23:12 -07:00
Girish Ramakrishnan
7d5dfb64eb set ready when users got loaded 2016-09-27 19:20:28 -07:00
Girish Ramakrishnan
9111174b50 Add 0.21.0 changes 2016-09-27 18:40:16 -07:00
Girish Ramakrishnan
f61842fc30 admin is reserved but not because we use it 2016-09-27 16:36:57 -07:00
Girish Ramakrishnan
a91ae2b9aa add mailboxdb.getGroup tests 2016-09-27 16:34:28 -07:00
Girish Ramakrishnan
20708ad25a return members of mailing list 2016-09-27 16:27:22 -07:00
Girish Ramakrishnan
c152580df0 Revert "make rfc822MailMember a complete address"
This reverts commit b9823fff44.

Most examples on internet don't have the complete address.
https://wiki.debian.org/LDAP/MigrationTools/Examples
2016-09-27 16:04:50 -07:00
Girish Ramakrishnan
b9823fff44 make rfc822MailMember a complete address 2016-09-27 16:04:11 -07:00
Girish Ramakrishnan
bd2848932e test ldap mailing list search 2016-09-27 15:56:02 -07:00
Girish Ramakrishnan
0327333be2 Add test to check mailbox gets add/removed with group API 2016-09-27 15:49:06 -07:00
Girish Ramakrishnan
a8861dd4f8 Add missing return 2016-09-27 13:09:05 -07:00
Girish Ramakrishnan
0c4a9d8bc9 Choose the first non-alias as app email 2016-09-27 12:51:33 -07:00
Girish Ramakrishnan
c1aa1eb33f Fix group listing 2016-09-27 12:51:33 -07:00
Girish Ramakrishnan
0d3169c787 remove mailboxdb.listGroups 2016-09-27 12:51:33 -07:00
Johannes Zellner
519dd2b889 Fix typo in schema 2016-09-27 21:48:39 +02:00
Johannes Zellner
c9d5af8424 Adjust tests to fail with invite email if cloudron mail is enabled 2016-09-27 21:48:39 +02:00
Johannes Zellner
a6547676a1 Do not allow invite email for login if cloudron mail is enabled 2016-09-27 21:48:39 +02:00
Johannes Zellner
34f624abef Give auth codes much longer expiration
Since the expiration is calculated when mocha loads the tests,
5000 was too low if some tests take longer
2016-09-27 21:48:39 +02:00
Johannes Zellner
bd8acf763e Only allow bind by cloudron mail if enabled 2016-09-27 21:48:39 +02:00
Johannes Zellner
4ba0504e7a Add ldap tests for login with cloudron mail 2016-09-27 21:48:39 +02:00
Johannes Zellner
2a7de5dab7 extracting username from email for cloudron mail is now done in user.js 2016-09-27 21:48:39 +02:00
Johannes Zellner
ea87b3e876 Ensure lowercasing the email 2016-09-27 21:48:39 +02:00
Johannes Zellner
23bf358bbe Fix case when username is not the same as the email 2016-09-27 21:48:39 +02:00
Johannes Zellner
656356732e LDAP tests need more time on my end 2016-09-27 21:48:39 +02:00
Johannes Zellner
35a964bd00 Allow users to be verified with both emails if cloudron mail is enabled 2016-09-27 21:48:39 +02:00
Johannes Zellner
5cff9df632 Add tests for user getter 2016-09-27 21:48:39 +02:00
Johannes Zellner
84de6c0583 Add user creation tests when Cloudron mail is enabled 2016-09-27 21:48:39 +02:00
Johannes Zellner
ca1c48b4b5 Send mails to alternativeEmail if enabled 2016-09-27 21:48:39 +02:00
Johannes Zellner
64278a9ff9 Introduce alternativeEmail in case the Cloudron has email enabled 2016-09-27 21:48:39 +02:00
Girish Ramakrishnan
8bd790c1e0 remove unused variable 2016-09-27 11:58:02 -07:00
Girish Ramakrishnan
c9a0db0127 remove the alias and mailbox ldap listing code
it's unused and complicates things. besides, this is not going to be
possible to implement for the mailgroup code.
2016-09-27 11:51:21 -07:00
Girish Ramakrishnan
a75cefa38f Email now allows relay from 172.18.0.1 with no auth 2016-09-27 10:28:20 -07:00
Girish Ramakrishnan
374f4be08f bump mail container version 2016-09-27 10:19:30 -07:00
Girish Ramakrishnan
3fc17d38a5 Merge reserved groups and usernames into one list
This is because now the mailbox names are shared
2016-09-27 07:48:44 -07:00
Johannes Zellner
cfcf9f48cd Remove dead code 2016-09-27 13:17:31 +02:00
Johannes Zellner
d26859acb4 Make it clear that the cli tool has to be run from the laptop
This is based on several self-hosters installing it on the server
2016-09-27 13:05:41 +02:00
Johannes Zellner
adcdd45053 Specifically handle MX records for digitalocean to suit their api 2016-09-27 12:10:31 +02:00
Girish Ramakrishnan
33f803cd1c allow mailbox search by email 2016-09-26 21:03:07 -07:00
Girish Ramakrishnan
4856fc7de6 Fix mailAlias LDAP listing 2016-09-26 14:38:23 -07:00
Girish Ramakrishnan
9d9278b6f2 s/by/for 2016-09-26 14:02:23 -07:00
Girish Ramakrishnan
7d7de9e900 allow login via email cn to access mailbox 2016-09-26 12:03:37 -07:00
Girish Ramakrishnan
4a37747cfe authenticate mailbox based on owner 2016-09-26 11:55:16 -07:00
Girish Ramakrishnan
3e8cba08e3 add test for user alias routes 2016-09-26 11:12:12 -07:00
Girish Ramakrishnan
703e76ceb6 Check if there was an old username when deleting mailbox 2016-09-26 11:05:13 -07:00
Girish Ramakrishnan
577b509731 authorize logic in redundant
The authorization has to be done in the mail server. There is no
information on the ldap side to authorize.
2016-09-26 10:20:49 -07:00
Girish Ramakrishnan
3c9beb1add ldap: fix mailbox search and bind 2016-09-26 10:18:58 -07:00
Girish Ramakrishnan
46d8047599 fix ldapjs usage 2016-09-26 09:08:04 -07:00
Girish Ramakrishnan
d39fa041bf update ldapjs 2016-09-26 09:04:02 -07:00
Johannes Zellner
a7140412c4 Do not use userdb.get() directly in auth 2016-09-26 16:29:50 +02:00
Girish Ramakrishnan
3591452184 test that invalid alias cannot be set 2016-09-26 00:20:47 -07:00
Girish Ramakrishnan
a8d57bb036 test that user.del removed mailbox and aliases 2016-09-26 00:18:45 -07:00
Girish Ramakrishnan
d92e99a092 fix user alias API 2016-09-26 00:11:25 -07:00
Girish Ramakrishnan
b40e740110 test if mailbox is updated with username change 2016-09-25 23:58:21 -07:00
Girish Ramakrishnan
cd500adfe4 test that user.del deletes mailbox 2016-09-25 23:54:27 -07:00
Girish Ramakrishnan
55b80ac81f update mailbox on username change 2016-09-25 23:51:39 -07:00
Girish Ramakrishnan
1f1f56b431 Fix mailboxdb API 2016-09-25 23:21:55 -07:00
Girish Ramakrishnan
baa2dbbf39 Add alias and list ldap routes 2016-09-25 21:34:52 -07:00
Girish Ramakrishnan
4b34f823a7 implement ldap mailbox get 2016-09-25 16:46:11 -07:00
Girish Ramakrishnan
c158548c19 remove ununsed mailboxdb.getAll 2016-09-25 16:46:08 -07:00
Girish Ramakrishnan
8ce22c5656 ldap: remove unnecessary global 2016-09-25 16:11:54 -07:00
Girish Ramakrishnan
e4e54d87f2 Fix angular code to match new mailbox aliases API 2016-09-23 17:55:21 -07:00
Girish Ramakrishnan
2b1a94dc8d Add mailboxdb.getByOwnerId 2016-09-23 17:35:48 -07:00
Girish Ramakrishnan
afa352528f read send/recv config from mailbox database 2016-09-23 17:28:57 -07:00
Girish Ramakrishnan
6a32f89bf2 add/remove mailbox entry for app 2016-09-23 17:26:07 -07:00
Girish Ramakrishnan
49baad349c remove mailbox routes and move it to users 2016-09-23 15:45:40 -07:00
Girish Ramakrishnan
00ee2eea39 Remove code to push aliases
The mail-addon will query via LDAP
2016-09-23 15:14:07 -07:00
Girish Ramakrishnan
1d77c42269 Add ownerId to mailbox fields 2016-09-22 15:51:57 -07:00
Girish Ramakrishnan
f24eee026e add ownerId, ownerType to mailboxes table
ownerId is the app id or user id or the group id.
2016-09-22 15:51:16 -07:00
Girish Ramakrishnan
5773f26548 doc: add note to delete the dummy record
if the record remains, then installs to the naked domain will fail.
this is because we do not overwrite existing DNS entries that we
did not create.
2016-09-22 09:59:43 -07:00
Girish Ramakrishnan
563b2a3042 Do not add dmarc record unless mail is enabled
the dmarc records depends on the DKIM signing as well. if the
cloudron is not using the cloudron mail service, that means that
the mails are not dkim signed and thus mails get rejected.
2016-09-22 09:52:25 -07:00
Girish Ramakrishnan
565b0e13c8 remove unused variable 2016-09-22 09:34:18 -07:00
Johannes Zellner
b863f3f89d Be explicit what to show as the backup location 2016-09-22 16:14:26 +02:00
Johannes Zellner
e3aeb4daf3 Allow selfhosters to trigger a backup manually 2016-09-22 16:10:28 +02:00
Johannes Zellner
6480975ea7 Show backup config for non caas or dev 2016-09-22 16:10:03 +02:00
Johannes Zellner
5ebddf7df6 Fetch backup config in settings view 2016-09-22 16:09:52 +02:00
Johannes Zellner
78367ea781 add getter and setter for backup config 2016-09-22 16:09:34 +02:00
Johannes Zellner
9bb4bf6eca Always set the current domain as the default 2016-09-22 15:30:58 +02:00
Johannes Zellner
54543aa536 Show provider specific settings in DNS settings dialog 2016-09-22 15:26:21 +02:00
Johannes Zellner
cdc337862f Improve the reveal directive to be able to deal with changing values 2016-09-22 15:26:04 +02:00
Johannes Zellner
4d983f2a19 Click reveal the secret and token for dns provider 2016-09-22 14:56:15 +02:00
Johannes Zellner
80b70bf0a9 Add ng-click-reveal directive 2016-09-22 14:52:29 +02:00
Johannes Zellner
505f4de55d Only show AWS related dns settings if that provider is used 2016-09-22 14:23:43 +02:00
Johannes Zellner
4ee6a440fe Show provider in settings 2016-09-22 14:19:02 +02:00
Johannes Zellner
52ae3e24d0 Add link to change billing in settings view for caas 2016-09-22 14:01:47 +02:00
Girish Ramakrishnan
503a1d7229 reserve .app namespace for apps 2016-09-21 11:55:53 -07:00
Girish Ramakrishnan
9a000ddaf0 make ADMIN_GROUP_ID a constant 2016-09-20 15:07:11 -07:00
Girish Ramakrishnan
7fde57f7de clear db ignoring foreign key checks 2016-09-20 14:33:22 -07:00
Girish Ramakrishnan
cf039b7964 Fix typo 2016-09-20 14:14:04 -07:00
Girish Ramakrishnan
f552a8ac0d doc: cleanup 2016-09-20 11:33:20 -07:00
Johannes Zellner
c38abaa1c3 Update the DigitalOcean selfhosting docs 2016-09-20 15:20:48 +02:00
Johannes Zellner
7b9eff94b3 No need to set always empty headers for app restore curl 2016-09-20 09:25:48 +02:00
Johannes Zellner
4a9a6dc232 Move backup config fetching into storage backend 2016-09-20 09:25:48 +02:00
Johannes Zellner
0bfc533e44 Fixup function naming 2016-09-20 09:25:48 +02:00
Johannes Zellner
b937a86426 Download backups is GET 2016-09-20 09:25:48 +02:00
Johannes Zellner
6352064e6c Add backup download route if backend supports it 2016-09-20 09:25:48 +02:00
Johannes Zellner
c9c1964e09 The storage backends dont need a backup listing function 2016-09-20 09:25:48 +02:00
Johannes Zellner
3ac786ba6d Define shell variable regardless of backend 2016-09-20 09:25:48 +02:00
Johannes Zellner
e8be76f2e8 Fixup typos 2016-09-20 09:25:48 +02:00
Johannes Zellner
0ef9102b50 Set default backup folder to /var/backups 2016-09-20 09:25:48 +02:00
Johannes Zellner
746afb2b21 Shell uses obviously == no === 2016-09-20 09:25:48 +02:00
Johannes Zellner
02d1238853 filename is our backup id 2016-09-20 09:25:48 +02:00
Johannes Zellner
d8de9555f2 Add storage interface definition 2016-09-20 09:25:48 +02:00
Johannes Zellner
f348fedd50 Caas backend has to use the AWS credentials provided by appstore 2016-09-20 09:25:48 +02:00
Johannes Zellner
2a92d4772c Fix typo 2016-09-20 09:25:48 +02:00
Johannes Zellner
fa828cc661 Basic backup listing for filesystem backend 2016-09-20 09:25:48 +02:00
Johannes Zellner
04b7822be5 Implement filesystem storage backend getRestoreUrl() 2016-09-20 09:25:48 +02:00
Johannes Zellner
1fd96a847f Implement filesystem storage backend copy 2016-09-20 09:25:48 +02:00
Johannes Zellner
bf177473fe Rename getBackupDetails() -> getBoxBackupDetails() 2016-09-20 09:25:48 +02:00
Johannes Zellner
2ce768e29a Refactor getAppBackupCredentials() 2016-09-20 09:25:48 +02:00
Johannes Zellner
96c8f96c52 Group exports 2016-09-20 09:25:48 +02:00
Johannes Zellner
83ed87a8eb Refactor getBackupCredentials() 2016-09-20 09:25:48 +02:00
Johannes Zellner
5ac12452a1 Give MX records a priority on digitalocean 2016-09-20 09:25:48 +02:00
Johannes Zellner
6cecad89ec Remove a console.log 2016-09-20 09:25:48 +02:00
Johannes Zellner
6c23bce8e8 Prepare support for provider specific backup scripts 2016-09-20 09:25:48 +02:00
Johannes Zellner
73df6a8dd7 empty subdomain value is represented as @ in DO 2016-09-20 09:25:48 +02:00
Johannes Zellner
be1cc76006 Also allow digitalocean dns settings to be changed 2016-09-20 09:25:48 +02:00
Johannes Zellner
528f71ab0f Support digitalocean dns backend for configured state 2016-09-20 09:25:48 +02:00
Johannes Zellner
6fa643049f Fix status code check 2016-09-20 09:25:48 +02:00
Johannes Zellner
835176ad75 Add support to update a domain in digitalocean 2016-09-20 09:25:48 +02:00
Johannes Zellner
56c272f34e Support digitalocean dns backend 2016-09-20 09:25:48 +02:00
Johannes Zellner
98bb7e3a1a Add initial digitalocean dns backend 2016-09-20 09:25:48 +02:00
Johannes Zellner
487fb23836 Add DNS interface description 2016-09-20 09:25:48 +02:00
Johannes Zellner
cffc6d5fa5 Reorder dns backend exports 2016-09-20 09:25:48 +02:00
Johannes Zellner
1736d50260 Add filesystem storage backend only as noop currently 2016-09-20 09:25:48 +02:00
Girish Ramakrishnan
982caee380 doc: hotfixing 2016-09-19 21:30:37 -07:00
Girish Ramakrishnan
3cd7f47fbb doc: enabling email 2016-09-19 15:26:47 -07:00
Girish Ramakrishnan
f5e71233c1 doc: customAuth 2016-09-19 15:11:38 -07:00
Girish Ramakrishnan
679c8a7d09 Fix all usages of ldap.parseFilter
Part of #56
2016-09-19 13:53:48 -07:00
Girish Ramakrishnan
402c875874 ldap : Fix crash with invalid queries
Fixes #56
2016-09-19 13:40:26 -07:00
Girish Ramakrishnan
5333311a35 setup dmarc record for custom domains
See http://www.zytrax.com/books/dns/ch9/dmarc.html for more info

Fixes #55
2016-09-19 10:56:51 -07:00
Girish Ramakrishnan
e2a22c3a5e collect more docker logs for IP mapping 2016-09-16 22:10:33 -07:00
Johannes Zellner
f251d4e511 Add changes for 0.20.3 2016-09-16 11:38:47 +02:00
Girish Ramakrishnan
c39c1b9b51 remove jshint 2016-09-15 23:15:06 -07:00
Girish Ramakrishnan
28c8aa3222 Do not use Floating IP
We do not use a floating IP for 3 reasons:
1. The PTR record is not set to floating IP.
2. The outbound interface is not changeable to floating IP.
3. there are reports that port 25 on floating IP is blocked.
2016-09-15 22:14:21 -07:00
Girish Ramakrishnan
056b3dcb56 doc: add note on marking spam 2016-09-15 13:19:31 -07:00
Girish Ramakrishnan
9465c24c33 doc: add forwarding address section 2016-09-15 13:14:19 -07:00
Girish Ramakrishnan
f62bed5898 our md converter does not like brackets 2016-09-15 13:07:58 -07:00
Girish Ramakrishnan
9b49c7ada7 Fix linter warnings 2016-09-15 12:41:50 -07:00
Girish Ramakrishnan
a40abaf1a0 do not crash if the service was never started
fixes #51
2016-09-15 11:54:20 -07:00
Girish Ramakrishnan
7f2eadcd4e All apps have moved to 0.9.0 2016-09-14 20:59:28 -07:00
Johannes Zellner
c839e119b1 remove EC2 base image creation script 2016-09-14 14:34:59 +02:00
Johannes Zellner
4a2e5ddc12 Add initial documentation for digitalocean selfhosting 2016-09-14 13:34:46 +02:00
Girish Ramakrishnan
c10302f146 Preserve the isDemo flag across updates 2016-09-13 18:33:21 -07:00
Girish Ramakrishnan
8ef8f08b28 Take into account the configure memory limit 2016-09-13 18:05:38 -07:00
Girish Ramakrishnan
2ae4f76af5 x 2016-09-13 18:01:10 -07:00
Girish Ramakrishnan
12e2e64c22 initialize memoryLimit correctly 2016-09-13 16:59:09 -07:00
Johannes Zellner
10e7f27b16 Actually we need to specify the signatureVersion... 2016-09-13 12:07:09 +02:00
Girish Ramakrishnan
f3542dbd55 0.20.2 changes 2016-09-12 13:32:51 -07:00
Girish Ramakrishnan
c1bb264065 Set a timeout for superagent
The default is 'no timeout' and it will wait for the response forever.

https://github.com/visionmedia/superagent/issues/17#issuecomment-207742985
2016-09-12 13:06:18 -07:00
Girish Ramakrishnan
ce19f480b3 comment out the admin cert api
part of #47
2016-09-12 12:01:30 -07:00
Girish Ramakrishnan
839b4b11ba disable admin_certificate route for now
part of #47
2016-09-12 12:01:22 -07:00
Girish Ramakrishnan
4df3b30ff0 Make ticks dynamic
fixes #43
2016-09-12 11:47:42 -07:00
Girish Ramakrishnan
471cfe1376 use the latest slider.js
this contains the fix in https://github.com/seiyria/angular-bootstrap-slider/pull/136
2016-09-12 08:51:18 -07:00
Johannes Zellner
8de0746ac8 Revert "Use S3 signature versoin 4 to support all regions"
If we set the correct region name, the signature version is selected
automatically

This reverts commit 1e22cc3236.
2016-09-12 14:27:47 +02:00
Girish Ramakrishnan
cd94d8f433 Save user certs separately from automatic certs
Fixing the admin cert is a bit more complex since it is used in
setup script as well. Can do that in a later task.

Fixes #44
2016-09-12 01:44:16 -07:00
Girish Ramakrishnan
f2a1e19c9b Fix access control display for email apps
Fixes #45
2016-09-11 23:06:28 -07:00
Girish Ramakrishnan
217fcf564c Explicitly mention the default memory limit 2016-09-11 22:06:29 -07:00
Girish Ramakrishnan
55673ebcc3 customAuth apps do not require oauth proxy 2016-09-11 22:04:58 -07:00
Johannes Zellner
1e22cc3236 Use S3 signature versoin 4 to support all regions
http://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html
2016-09-09 20:07:57 +02:00
Johannes Zellner
e40a2e8549 Fix link in docs 2016-09-09 14:12:52 +02:00
Girish Ramakrishnan
a80302c4e0 0.20.1 changes 2016-09-08 21:45:46 -07:00
Girish Ramakrishnan
bbe3ddefc0 customAuth does not require oauth proxy 2016-09-08 21:36:49 -07:00
Girish Ramakrishnan
4405fcc652 Typo 2016-09-08 21:32:39 -07:00
Johannes Zellner
3cb25ce6fd Remove useless message in error.html 2016-09-08 16:09:34 +02:00
Girish Ramakrishnan
ad34838f92 Use a different provider for GeoIP 2016-09-07 20:00:44 -07:00
Girish Ramakrishnan
e21df0ea92 update shrinkwrap 2016-09-07 18:47:09 -07:00
Girish Ramakrishnan
f72b683b76 Add missing momemt-timezone 2016-09-07 18:26:30 -07:00
Girish Ramakrishnan
95b27df635 update manifestformat to 2.4.3 2016-09-07 17:12:07 -07:00
Girish Ramakrishnan
a4c2e5f3d2 Disable access control with customAuth flag 2016-09-07 17:06:26 -07:00
Girish Ramakrishnan
3c5fadb1f5 doc: postInstallMessage 2016-09-07 16:00:08 -07:00
Girish Ramakrishnan
486db676c9 Fix the max-height 2016-09-07 14:25:41 -07:00
Girish Ramakrishnan
bde9279742 Tweak the post install ui 2016-09-07 14:25:41 -07:00
Johannes Zellner
efdd01c4c8 Replace tagline in invite email 2016-09-07 22:14:26 +02:00
Girish Ramakrishnan
f23ecd486d OK -> Got it 2016-09-07 13:11:28 -07:00
Girish Ramakrishnan
b4c030b02b display post install message after installation
fixes #19
2016-09-07 12:47:14 -07:00
Girish Ramakrishnan
a52f1e07ee rename account to postInstall
part of #19
2016-09-07 12:26:24 -07:00
Girish Ramakrishnan
186d0a1156 update manifestformat (for postInstallMessage) 2016-09-07 12:13:51 -07:00
Girish Ramakrishnan
8e71046d28 track ui state with an enumeration 2016-09-07 11:49:44 -07:00
Girish Ramakrishnan
67c56c7daf initialize resourceConstraintVisible 2016-09-07 11:45:45 -07:00
Girish Ramakrishnan
d802b88998 delete tokens when deleting a client
fixes #36
2016-09-07 11:10:19 -07:00
Girish Ramakrishnan
2c9425ceea fix debug 2016-09-07 11:06:50 -07:00
Girish Ramakrishnan
72a7d5e854 fix debug module name 2016-09-07 09:24:15 -07:00
Girish Ramakrishnan
fbf3a9daad More changes 2016-09-07 09:23:55 -07:00
Girish Ramakrishnan
1fc9e296b4 doc: add note on OS X and Windows 2016-09-07 09:05:24 -07:00
Girish Ramakrishnan
cb31af828a doc: mention that only SLDs are supported 2016-09-07 09:02:24 -07:00
Girish Ramakrishnan
de9d556b9e fix failing test 2016-09-07 08:46:36 -07:00
Johannes Zellner
9d98f9fcf5 Retry npm install in base image script 2016-09-07 14:19:29 +02:00
Johannes Zellner
5d3dca6b3f Set a timeout for the meta data request
Part of #37
2016-09-07 14:11:29 +02:00
Johannes Zellner
2ce6791771 Make cloudron-installer depend on box-setup service
Part of #37
2016-09-07 12:10:03 +02:00
Girish Ramakrishnan
dd91de8cf6 Add an icon to show account info
part of #19
2016-09-07 02:34:20 -07:00
Girish Ramakrishnan
1a0f3f687a Add button to show accounts section 2016-09-07 01:44:14 -07:00
Girish Ramakrishnan
36d48000b6 change wording 2016-09-07 01:13:20 -07:00
Girish Ramakrishnan
b9c10a1256 provide warning to configure UI as well (same as install ui) 2016-09-07 01:13:00 -07:00
Girish Ramakrishnan
5014ca7742 Simply check app.oauthProxy
Part of #6
2016-09-07 00:53:13 -07:00
Girish Ramakrishnan
452c976aa6 add more debugs 2016-09-07 00:53:09 -07:00
Girish Ramakrishnan
5b9c8e517a Add oauthProxy support to access restriction UI
Adds 'unrestricted' access control option for apps that do not have
any auth integration

Fixes #6
2016-09-06 23:53:47 -07:00
Girish Ramakrishnan
b66ba0a2c7 take oauthProxy parameter in install and configure routes
part of #6
2016-09-06 23:43:27 -07:00
Girish Ramakrishnan
9a7ac4ffb7 Send oauthProxy parameter for install and configure API 2016-09-06 23:36:18 -07:00
Girish Ramakrishnan
408dd61408 Send and receive oauthProxy in REST routes
Part of #6
2016-09-06 23:32:42 -07:00
Girish Ramakrishnan
e915e6fd44 doc: Add debugging section 2016-09-06 23:12:52 -07:00
Girish Ramakrishnan
ac5cef3c2f do not introspect the value of accessRestriction
if there are no users or groups, it simply means nobody can access it.
(maybe the admin is doing something on the cloudron and does not want
anyone to access it).
2016-09-06 16:37:14 -07:00
Girish Ramakrishnan
aa3501c780 doc: clarify accessRestriction 2016-09-06 16:31:20 -07:00
Girish Ramakrishnan
375082c1ae make tests pass 2016-09-06 13:33:12 -07:00
Girish Ramakrishnan
0900d7b824 Fix crash 2016-09-06 12:54:53 -07:00
Johannes Zellner
1b54f5f797 Support both floating and non fixed ips 2016-09-06 15:43:43 +02:00
Johannes Zellner
9fcaebcf98 Return digitalocean floating ip for caas cloudrons in sysinfo 2016-09-06 15:43:43 +02:00
Girish Ramakrishnan
fda8afa73d doc: add ListHostedZones and GetChange to policy
fixes #23
2016-09-05 23:45:04 -07:00
Girish Ramakrishnan
6beaa914d1 doc: selfhosting fixes
fixes #26
2016-09-05 22:47:06 -07:00
Girish Ramakrishnan
b22fbfd381 doc: add admin section
Fixes #31
2016-09-05 20:54:16 -07:00
Girish Ramakrishnan
84379cb11f doc: usernmanual updates 2016-09-05 20:42:52 -07:00
Girish Ramakrishnan
c63c6f793c do not unregister naked domain of non-custom domains only 2016-09-05 18:40:22 -07:00
Girish Ramakrishnan
bc839d7f9b Cannot optimize here since we always need a changeId 2016-09-05 18:31:40 -07:00
Girish Ramakrishnan
539b45d3b0 Bypass DNS check for non-custom domains
Part of #27
2016-09-05 17:39:14 -07:00
Girish Ramakrishnan
1098bbfe25 More 0.20.0 changes 2016-09-05 17:24:26 -07:00
Girish Ramakrishnan
203cac2629 Check if DNS entry already exists before updating it
Fixes #27
2016-09-05 17:14:17 -07:00
Girish Ramakrishnan
3aa2ccaef7 remove unused require 2016-09-05 17:09:19 -07:00
Girish Ramakrishnan
90472e1370 remove subdomains.add API 2016-09-05 17:09:00 -07:00
Girish Ramakrishnan
ecc9d1bc02 rename subdomains.update to subdomains.upsert 2016-09-05 16:58:13 -07:00
Girish Ramakrishnan
4fc6eb1876 fix route53.get() 2016-09-05 15:17:42 -07:00
Girish Ramakrishnan
e82152ac86 Fix failing tests
ec63c1c96e broke tests
2016-09-05 14:04:40 -07:00
Girish Ramakrishnan
348e44e959 Fix wording
Fixes #18
2016-09-05 10:08:33 -07:00
Girish Ramakrishnan
ec63c1c96e use subdomains.update to short-circuit dns propagation check
if the entry is already uptodate, then we can bypass the wait
2016-09-05 10:00:15 -07:00
Johannes Zellner
59e1e55666 Use angular bootstrap collapse for advanced app configuration 2016-09-05 13:51:29 +02:00
Girish Ramakrishnan
6b4d906336 remove jslint comment 2016-09-04 23:56:50 -07:00
Girish Ramakrishnan
f96fda325d Return SubdomainError.BAD_FIELD in route53 backend
Part of #27
2016-09-04 19:46:46 -07:00
Girish Ramakrishnan
2caf57d2c7 Add SubdomainError.BAD_FIELD
The CaaS backend return 400 for conflicts. We can use this to abort
early if there is a conflict in DNS entries. For example, if an app
subdomain already exists in DNS.

Part of #27
2016-09-04 19:35:19 -07:00
Girish Ramakrishnan
01064323c2 Show install anyway button for dev OR self-hosted
Also, show the upgrade button only for caas cloudrons
2016-09-04 18:12:30 -07:00
Girish Ramakrishnan
b7d2b644b3 simplify wording 2016-09-04 18:05:21 -07:00
Girish Ramakrishnan
3bdae8f4ac typo 2016-09-04 18:00:28 -07:00
Girish Ramakrishnan
cb14096fbd Make step size 128M 2016-09-04 12:20:38 -07:00
Girish Ramakrishnan
4d6fad79af Send memoryLimit parameter 2016-09-04 12:17:14 -07:00
Girish Ramakrishnan
4a827dcfb3 Allow setting memory limit to 0 for default
Part of #18
2016-09-04 12:17:09 -07:00
Girish Ramakrishnan
31636af643 memoryUsage -> memoryLimit 2016-09-04 11:48:03 -07:00
Girish Ramakrishnan
b4bd6500a3 enable memory limit ui
part of #18
2016-09-04 11:39:03 -07:00
Girish Ramakrishnan
7b4c9dffab fix memoryLimit handling
0 means not set. and it will follow value in manifest

part of #18
2016-09-04 11:38:54 -07:00
Girish Ramakrishnan
f083d81b35 Fix typo 2016-09-04 11:38:36 -07:00
Girish Ramakrishnan
550f14da6f doc: 256mb is the default memory limit 2016-09-03 19:48:26 -07:00
Girish Ramakrishnan
ec33dc99c0 Add 0.20.0 changes 2016-09-03 12:33:53 -07:00
Girish Ramakrishnan
d07840c8ef Load mail conf in mailer.js
addon vars is not really used other than for email. mail config
is required even if platform code is not initialized since it
is called from mailer.unexpectedExit

fixes #29
2016-09-03 12:27:12 -07:00
Girish Ramakrishnan
23514078f3 add explicit check for test code 2016-09-03 11:51:32 -07:00
Girish Ramakrishnan
a5bb438af4 rename env var 2016-09-03 11:46:57 -07:00
Girish Ramakrishnan
27a36492db mailer.unexpectedExit has no db access
part of #28
2016-09-03 11:35:59 -07:00
Girish Ramakrishnan
ef6344afae ignore any error when stopping addon containers
fixes #29
2016-09-03 11:24:16 -07:00
Girish Ramakrishnan
0058eddd22 clarify that apps can still send mail 2016-09-02 10:07:51 -07:00
Girish Ramakrishnan
464869c021 remove warning about MX record
fixes #25
2016-09-02 09:58:09 -07:00
Girish Ramakrishnan
b54ba8e511 doc: fix typo 2016-09-01 19:46:03 -07:00
Girish Ramakrishnan
d40fb390b7 Fix plan listing
We always show the current plan first
We then show all the bigger sizes
2016-09-01 19:16:44 -07:00
Girish Ramakrishnan
8af7ccfe08 add live chat 2016-09-01 16:50:26 -07:00
Girish Ramakrishnan
59b53d347f display demo user credentials in demo cloudrons 2016-09-01 16:21:12 -07:00
Girish Ramakrishnan
70b63af3c9 pass isDemo parameter to angular ui 2016-09-01 15:56:38 -07:00
Girish Ramakrishnan
94c3ac96f0 reload mail credentials when restarting mail container 2016-09-01 15:54:55 -07:00
Girish Ramakrishnan
9f48f76185 fix version 2016-09-01 09:12:45 -07:00
Girish Ramakrishnan
5b295f8019 Update changelog 2016-08-31 23:55:52 -07:00
Girish Ramakrishnan
1874ea7f58 use username instead of id 2016-08-31 23:41:28 -07:00
Girish Ramakrishnan
61ef3f3efb disallow certain actions in demo mode
* Cannot change password
* Cannot delete user
* Cannot migrate domain or change plan

Fixes #20
2016-08-31 22:39:42 -07:00
Girish Ramakrishnan
997152ad14 Add help section 2016-08-31 22:34:20 -07:00
Girish Ramakrishnan
219bd69e63 parse and save isDemo provision parameter 2016-08-31 22:03:46 -07:00
Girish Ramakrishnan
35b25a4e28 add DEMO_USER_ID 2016-08-31 22:03:41 -07:00
Girish Ramakrishnan
d3d7f2c320 Add config.isDemo() 2016-08-31 20:51:36 -07:00
Girish Ramakrishnan
e25ad601c7 add 0.20.0 changes 2016-08-31 09:27:43 -07:00
Girish Ramakrishnan
a6a61d2586 Fixup the ui code
Fixes #16
2016-08-31 09:20:18 -07:00
Girish Ramakrishnan
42b65baa39 Listen to mail config change event correctly 2016-08-31 09:19:41 -07:00
Girish Ramakrishnan
0eab262084 remove any existing container 2016-08-31 09:19:41 -07:00
Girish Ramakrishnan
11b89f473e s/done/callback 2016-08-31 07:19:24 -07:00
Girish Ramakrishnan
0e935580b6 enable email for existing cloudrons 2016-08-31 05:34:06 -07:00
Girish Ramakrishnan
6d783220fd Add settings UI to enable/disable mail 2016-08-30 22:46:00 -07:00
Girish Ramakrishnan
344908b5b1 add default mailconfig (false) 2016-08-30 22:17:04 -07:00
Girish Ramakrishnan
723de796c7 add get/setMailConfig 2016-08-30 22:07:38 -07:00
Girish Ramakrishnan
546d8ae4e2 re-setup mail container when config key changes
part of #16
2016-08-30 21:54:06 -07:00
Girish Ramakrishnan
f3fd2d7950 add mx record during mail container setup
part of #16
2016-08-30 21:36:40 -07:00
Girish Ramakrishnan
cbd4903960 remove .js 2016-08-30 21:33:56 -07:00
Girish Ramakrishnan
267141fa9a expose ports in mail container based on mail config setting
part of #16
2016-08-30 21:33:47 -07:00
Girish Ramakrishnan
af82af5652 test: mail config get/set
Part of #16
2016-08-30 21:23:03 -07:00
Girish Ramakrishnan
d3a5a83f93 doc: get/set email config
Part of #16
2016-08-30 21:11:26 -07:00
Girish Ramakrishnan
5b52eeb573 add route to enable/disable mail
mail is disabled by default

Part of #16
2016-08-30 21:09:22 -07:00
Girish Ramakrishnan
db8afaf3ff remove underused first run event 2016-08-30 21:09:05 -07:00
Girish Ramakrishnan
8e76d44a30 Remove dead code
From 69402d0079
2016-08-30 20:59:28 -07:00
Girish Ramakrishnan
a86e30b917 fix docs a bit 2016-08-30 17:22:59 -07:00
Girish Ramakrishnan
b214bd5d52 Give postgresql more memory
Fixes #14
2016-08-30 17:19:05 -07:00
Johannes Zellner
1f1e299939 Do not offer 'install anyway' 2016-08-30 11:33:32 +02:00
Johannes Zellner
8312cbe792 show settings with migrate ui on upgrade button click 2016-08-30 10:37:25 +02:00
Johannes Zellner
a9210dcc0c Document xFrameOptions in api docs 2016-08-29 15:54:47 +02:00
Girish Ramakrishnan
8339e65eb8 Cloudron incorporated in 2015 2016-08-25 15:03:48 -07:00
Girish Ramakrishnan
3ba5bd836b use cloudron.conf to determine if this is an update
see also d60b386bca
2016-08-25 10:32:58 -07:00
Girish Ramakrishnan
f1ed4ab20c doc: add alternate backup listing command 2016-08-24 18:45:23 -07:00
Girish Ramakrishnan
22d86ff5b9 create signed urls that are valid for a day
sometimes the downloads take overly long and it's annoying that they
expire so soon.
2016-08-24 17:53:31 -07:00
Girish Ramakrishnan
d60b386bca Use cloudron.conf file to determine if this is an update
The installer determines if it an update based on existence of box dir.
It then calls the nginx splash setup code. The splash setup code relies
on the data directory being setup. Otherwise, it barfs in data/nginx.

This results in a case where restarting cloudron-installer when it is
unpacking the box code results in an error about being unable to write
admin.conf (since the data dir gets setup only in box setup.sh).

So, use cloudron.conf to determine if box was setup and running at some
point (this is already used in the js code)
2016-08-23 17:17:24 -07:00
Girish Ramakrishnan
b7869a4fdd Fix exec docs to be a GET instead of POST 2016-08-22 14:07:57 -07:00
Girish Ramakrishnan
86903183df Fix routing TCP upgrades via express middleware
Currently, if there was a POST request with 'tcp' upgrade, the code just hangs and waits
till timeout.

Instead, let express code will give us a default 'finalhandler' which responds
appropriately - https://github.com/expressjs/express/blob/master/lib/application.js#L161

https://github.com/pillarjs/finalhandler/blob/master/index.js#L57 for future reference
on how to call this callback should socket.destroy need to be called.
2016-08-22 13:21:46 -07:00
Girish Ramakrishnan
e4c2483ae5 upgrade header value is already checked in the route handlers
also, req.end() crashes
2016-08-22 13:21:46 -07:00
Girish Ramakrishnan
36f7e573a8 change base image version 2016-08-21 21:03:15 -07:00
Girish Ramakrishnan
8bebbfbace 0.19.0 changes 2016-08-21 16:45:08 -07:00
Girish Ramakrishnan
e198f34219 add note about db upgrades 2016-08-21 15:50:14 -07:00
Girish Ramakrishnan
6a4bda1f7e bump test container 2016-08-21 13:25:27 -07:00
Girish Ramakrishnan
3bf0a392b9 bump mysql version 2016-08-21 13:01:31 -07:00
Girish Ramakrishnan
4165bf35d0 bump mail version 2016-08-20 12:08:02 -07:00
Girish Ramakrishnan
fc1a288a2d bump graphite 2016-08-20 11:07:25 -07:00
Girish Ramakrishnan
7f37a9ce50 Bump redis 2016-08-20 11:03:49 -07:00
Girish Ramakrishnan
d34f8bc082 bump mongodb 2016-08-20 11:00:08 -07:00
Girish Ramakrishnan
50e598112d doc: mongodb version 2016-08-20 10:59:26 -07:00
Girish Ramakrishnan
8150d1cb8f bump postgresql 2016-08-20 10:42:12 -07:00
Girish Ramakrishnan
5b53280cd4 make baseImage an array 2016-08-20 10:24:29 -07:00
Girish Ramakrishnan
15e6873c14 doc: base image 0.9.0 2016-08-20 10:22:49 -07:00
Girish Ramakrishnan
f3978897ae use a different exit code to signal external errors
http://tldp.org/LDP/abs/html/exitcodes.html
2016-08-19 21:54:14 -07:00
Girish Ramakrishnan
ba4bb1fd90 box-setup must be run before nginx
nginx configs are in the data volume which get mounted only after
box-setup script.

part of #8
2016-08-19 19:37:44 -07:00
Girish Ramakrishnan
bbbc3837b0 box-setup: run before sshd since we modify ssh config files 2016-08-19 19:34:58 -07:00
Girish Ramakrishnan
311e997619 DO: do-resize service has folded into cloud-init 2016-08-19 19:34:12 -07:00
Girish Ramakrishnan
8ee2a7016d installer: retry fetching installer data 5 times
On some VPS providers, getting the userData is "flaky".

Fixes #3
2016-08-19 17:51:14 -07:00
Girish Ramakrishnan
02c5e731a9 add debug log for already provisioned 2016-08-19 17:33:55 -07:00
Girish Ramakrishnan
b932a9be10 Set X-Forwarded-Ssl to on
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/nginx.md#supporting-proxied-ssl
http://stackoverflow.com/questions/16042647/whats-the-de-facto-standard-for-a-reverse-proxy-to-tell-the-backend-ssl-is-used
2016-08-17 17:46:36 -07:00
Girish Ramakrishnan
56618cab23 add docs 2016-08-17 10:59:09 -07:00
Girish Ramakrishnan
2f7fa54fc8 Add API and CLI 2016-08-17 09:41:25 -07:00
Girish Ramakrishnan
b538c75f05 Add links to other repos 2016-08-17 09:23:57 -07:00
Girish Ramakrishnan
813950a0e5 Add features 2016-08-17 02:04:19 -07:00
Girish Ramakrishnan
8ef004f7f5 fix README 2016-08-17 00:47:14 -07:00
Girish Ramakrishnan
897326675e Add a logo for gitlab 2016-08-15 22:29:55 -07:00
Girish
06a8508c48 Add license 2016-08-15 19:22:47 +00:00
Girish Ramakrishnan
979f63f3f8 add link to upgrade docs 2016-08-14 19:42:16 -07:00
Girish Ramakrishnan
55ba9a351f mail container bugfix (typo in delay deny patch) 2016-08-13 14:19:52 -07:00
Girish Ramakrishnan
bb6ee2b5a0 more 0.18.0 changes 2016-08-13 11:30:26 -07:00
Girish Ramakrishnan
b58b350827 Throw exception if dkim keys could not be generated 2016-08-13 00:23:55 -07:00
Girish Ramakrishnan
3bd9fcae6a fix dkim dir perms 2016-08-13 00:23:07 -07:00
Girish Ramakrishnan
020ad746a0 change ownership of box directory 2016-08-12 23:55:20 -07:00
Girish Ramakrishnan
b049989eb1 do not change ownership of mail data when updating cloudron
the mail container is still running and changing the ownership behind it's
back causes the mail container to be very upset.
2016-08-12 23:36:41 -07:00
Girish Ramakrishnan
c25cc560d8 bump memory for mail container 2016-08-12 19:57:49 -07:00
Girish Ramakrishnan
d342652212 bump mail container version (spam support) 2016-08-12 17:17:48 -07:00
Johannes Zellner
c30cfefcc5 Reduce LDAP account password length
(This is currently ignored)

256 might be a common db field restriction. At least in openproject
it is based on their table layout.
2016-08-12 21:14:32 +02:00
Girish Ramakrishnan
6cfb8226a9 we are tied to docker 1.10 for now 2016-08-11 16:29:03 -07:00
Girish Ramakrishnan
19fad669f1 Use the unbound dns server
docker filters out the localhost in /etc/resolv.conf by design
and will use the Google DNS nameservers as fallback.

https://docs.docker.com/engine/userguide/networking/configure-dns/
2016-08-11 14:52:34 -07:00
Johannes Zellner
30074ae961 Removing ssh keys has to be done with ssh202 2016-08-11 20:45:49 +02:00
Girish Ramakrishnan
6d5dc0d5c4 0.18.0 changes 2016-08-11 10:52:35 -07:00
Girish Ramakrishnan
7bc5ae17cc Use unbound as nameserver
DO uses Google nameservers by default. This causes RBL queries to fail.

Can be tested with the following command:
$ host 2.0.0.127.zen.spamhaus.org
Host 2.0.0.127.zen.spamhaus.org not found: 3(NXDOMAIN)

With unbound we get:
$ host 2.0.0.127.zen.spamhaus.org
2.0.0.127.zen.spamhaus.org has address 127.0.0.2
2.0.0.127.zen.spamhaus.org has address 127.0.0.10
2.0.0.127.zen.spamhaus.org has address 127.0.0.4

Also, we do not use dnsmasq because it is not a recursive resolver. It will
always forward and this defaults to the value in /etc/network/interfaces
(which is Google DNS on DO!).
2016-08-11 10:32:54 -07:00
Johannes Zellner
65994f307f Make infra_version.js option and fix base image on DO 2016-08-10 12:45:23 +02:00
Johannes Zellner
855bc71ba7 Add changes for 0.17.6 2016-08-05 17:28:24 +02:00
Johannes Zellner
f3e842ed45 Retry to acquire a db connection when starting a transaction
This fixes db issues just like we do for regular queries.
Also we now use the .on('connection') to setup the session and db
this is how the docs recommend it
2016-08-05 15:18:32 +02:00
Johannes Zellner
1ec5d8c03b Fix error usage 2016-08-05 14:01:19 +02:00
Johannes Zellner
26a590b827 Name the DatabaseError so we get better logs 2016-08-05 12:30:28 +02:00
Johannes Zellner
ed734ef2ae fix tests, purchase api is gone 2016-08-04 16:22:50 +02:00
Johannes Zellner
41ff92f747 Only unpurchase if the app has an appstoreId 2016-08-04 15:53:55 +02:00
Johannes Zellner
8702b4320d Wait for all mysql jobs to be finished 2016-08-04 14:06:52 +02:00
Johannes Zellner
6b4675cca1 Remove the ec2 swappiness setting
This revealed mixed results, overall the burstmode ec2
instances are simply a bit underpowered
2016-08-04 10:56:26 +02:00
Johannes Zellner
15f94a5134 Use the correct result object 2016-08-04 09:46:03 +02:00
Johannes Zellner
9c65fae4ec Also unpurchase on app uninstall 2016-08-04 09:38:00 +02:00
Johannes Zellner
65b4c83b75 Use the correct token when calling the appstore for purchase 2016-08-03 23:07:31 +02:00
Johannes Zellner
568c8fa100 Show appstore login if purchase fails 2016-08-03 22:41:27 +02:00
Johannes Zellner
a91f89c7dd Rework the purchase api to use the new rest api on the appstore server 2016-08-03 18:30:41 +02:00
Johannes Zellner
dde597742c Do not expose purchase function 2016-08-03 17:57:53 +02:00
Girish Ramakrishnan
42fda25718 use systemctl instead of upstart service 2016-08-02 18:45:20 -07:00
Girish Ramakrishnan
9fd40e506d Add TODO note for relaunching mail container when cert path changes 2016-08-02 18:37:43 -07:00
Girish Ramakrishnan
2e51251cac fix debug message 2016-08-02 18:09:45 -07:00
Girish Ramakrishnan
b0286a6f7f updatechecker: ensure box state information is not lost
the box and app update checker run in parallel. be sure not to lose
the box state information.
2016-08-02 17:39:43 -07:00
Girish Ramakrishnan
9a6e55e4ea Add 0.17.5 changes 2016-08-02 14:43:39 -07:00
Girish Ramakrishnan
fc589a044d send mail to selfhosted cloudron admins about app died and oom 2016-08-02 14:42:42 -07:00
Girish Ramakrishnan
451c770b5c ACME agreement url has changed 2016-08-02 10:40:17 -07:00
Girish Ramakrishnan
c769af2bc3 doc: grammar 2016-08-02 09:53:24 -07:00
Girish Ramakrishnan
4a5bb290a7 make chat a separate section 2016-08-02 09:50:39 -07:00
Girish Ramakrishnan
382aaf8de3 use copyright entity name 2016-08-02 09:50:39 -07:00
Girish Ramakrishnan
c3f2b8b843 shrink version text 2016-08-02 09:50:39 -07:00
Johannes Zellner
4b93d87310 Set the fallback provider for old caas Cloudrons 2016-08-02 16:41:28 +02:00
Johannes Zellner
4bb91be7d9 Add changes for 0.17.5 2016-08-02 16:41:14 +02:00
Johannes Zellner
78d4fb3cb5 Support cloudron.io registration in login form 2016-08-02 16:15:00 +02:00
Girish Ramakrishnan
884fd5a224 debug when app got an update 2016-08-01 15:35:58 -07:00
Johannes Zellner
28ee914828 Remove debug logs 2016-08-01 16:10:10 +02:00
Johannes Zellner
2e9680ce68 Handle appstore login with implicit registration 2016-08-01 16:09:30 +02:00
Johannes Zellner
124b952e88 Adjust to changed settings rest api 2016-08-01 15:22:50 +02:00
Johannes Zellner
1f1237e785 Setting the appstore config also deals with appstore registration
- First time it registers the cloudron
- Resetting the account will verify that the Cloudron belongs to this user
- If cloudronId is invalid/unknown we reregister
2016-08-01 15:10:47 +02:00
Johannes Zellner
d5644ae3f1 Hide potential other modals when we prompt for appstore login 2016-08-01 13:48:15 +02:00
Johannes Zellner
c80b89ae8e Appstore login really belongs to the appstore view 2016-08-01 13:43:39 +02:00
Johannes Zellner
6459c8792a Do not prompt for appstore login with caas cloudrons 2016-08-01 13:39:55 +02:00
Johannes Zellner
bf38bb30f3 Mention why one needs to login to the appstore 2016-08-01 13:36:24 +02:00
Johannes Zellner
33e572c49d Show appstore login if we don't have a token yet 2016-08-01 13:28:54 +02:00
Johannes Zellner
46af8d1c90 Move the appstore login to main view controller 2016-08-01 13:22:35 +02:00
Johannes Zellner
30606a55fc Check appstore account only onReady() 2016-08-01 13:17:37 +02:00
Johannes Zellner
aedd370e76 Verify the appstore details and register the cloudron with the store 2016-08-01 13:08:05 +02:00
Johannes Zellner
f60ff45cb6 Tokens are now valid for a week 2016-08-01 10:14:47 +02:00
Johannes Zellner
ce28449734 Remove authorized_keys file after setup is done 2016-07-29 18:43:36 +02:00
Johannes Zellner
f0ee52505c Mention our chat in the support page 2016-07-29 17:42:21 +02:00
Johannes Zellner
30e936263c Add twitter to the webadmin footer and make the footer more prominent 2016-07-29 17:37:17 +02:00
Johannes Zellner
d0cf698dfa Hide the appstore account setup for now 2016-07-28 18:20:18 +02:00
Johannes Zellner
df8910b1e1 Update to angularjs 1.5.8
This fixes the dependency issues with bootstrap
2016-07-28 17:29:25 +02:00
Johannes Zellner
7862fbd7ee Set correct focus for selfhosters in setup wizard 2016-07-28 16:22:20 +02:00
Johannes Zellner
cd896a4422 Use persistent appstore login tokens 2016-07-28 15:47:09 +02:00
Johannes Zellner
b8a635c638 Add UI components to allow cloudron name changes 2016-07-28 12:56:17 +02:00
Johannes Zellner
690564983f Add cloudron name change api to client.js 2016-07-28 12:41:15 +02:00
Johannes Zellner
4fb3a42319 Return 202 when setting the cloudron name 2016-07-28 12:40:36 +02:00
Johannes Zellner
6d2e52b3b5 Add provider fallback in webadmin
This is a bug and requires an upgrade to set the provider again
2016-07-28 12:10:13 +02:00
Johannes Zellner
ced31afe55 Fix label for xframeoptions 2016-07-28 10:55:07 +02:00
Girish Ramakrishnan
5c4be56edb 0.17.4 changes 2016-07-27 20:42:22 -07:00
Girish Ramakrishnan
3595f624de Fix progress text 2016-07-27 20:38:49 -07:00
Girish Ramakrishnan
0e9007e9ef fix debug 2016-07-27 20:11:45 -07:00
Girish Ramakrishnan
971647c986 use the new appstore update route to detect app updates 2016-07-27 19:15:10 -07:00
Girish Ramakrishnan
138829f69b remove appupdate pre-release logic
this all seems very premature since prereleases are not supported in
appstore side
2016-07-27 17:46:58 -07:00
Girish Ramakrishnan
e0d4c1adc1 use support instead of admin 2016-07-27 11:48:03 -07:00
Girish Ramakrishnan
03c97d2027 send appVersions when checking for updates 2016-07-27 10:14:10 -07:00
Johannes Zellner
867e875707 Revert "Add basic 404 page"
This reverts commit 3793220dd48356d5fe421312915a8392fcccca0e.
2016-07-27 19:09:43 +02:00
Johannes Zellner
2ac7c15b90 Do not show appstore account in settings for caas 2016-07-27 17:58:33 +02:00
Johannes Zellner
dcdca52dbd Add basic 404 page 2016-07-27 17:52:54 +02:00
Johannes Zellner
711814cc2f only perform the appstore account setup on non caas cloudrons 2016-07-27 17:42:44 +02:00
Johannes Zellner
c2b57a704d We can't use the AppStore API wrapper due to Client.config()
Fetching the config requires of course an access token...
2016-07-27 17:32:22 +02:00
Johannes Zellner
1106aa6bba Create cloudron.io account on the fly with the same credentials 2016-07-27 17:22:03 +02:00
Johannes Zellner
482a87e994 Add cloudron.io account registration api 2016-07-27 17:21:44 +02:00
Johannes Zellner
d65990f780 Improve cloudron store checkbox layout 2016-07-27 17:02:22 +02:00
Johannes Zellner
60c1fb4a93 Add checkbox for appstore account creation 2016-07-27 16:54:54 +02:00
Johannes Zellner
02fcb749aa Use uib-tooltip instead of the non angular aware bootstrap one 2016-07-27 16:52:36 +02:00
Johannes Zellner
dfc0598ec9 Wrap all controller setup code with Client.onReady()
This ensures we don't rely on timing for execution against a non
ready Client instance
2016-07-27 16:34:38 +02:00
Johannes Zellner
b13dd55fc6 Ensure we only callback once for onReady() 2016-07-27 16:34:15 +02:00
Johannes Zellner
3020071fe4 Provider argument for setup is never used 2016-07-27 14:15:22 +02:00
Johannes Zellner
57d2a3ff6e Show model only for caas so far 2016-07-27 11:20:15 +02:00
Johannes Zellner
6fa414206c Remove admin checks in settings view
We anyways only allow settings to be shown for admins
see settings.js
2016-07-27 11:20:15 +02:00
Johannes Zellner
4619435a2d prepend the apiOrigin in one place 2016-07-27 11:20:15 +02:00
Johannes Zellner
ce433932dd Remove obsolete property 2016-07-27 11:20:15 +02:00
Johannes Zellner
4b79af7975 Do not set the global auth header for all but use wrappers instead
Setting it global means we send this to all requests being made through angular
2016-07-27 11:20:15 +02:00
Johannes Zellner
35cb804f00 Show appstore account email instead of id 2016-07-27 11:20:15 +02:00
Johannes Zellner
b132b2dc15 Also fetch the appstore account profile 2016-07-27 11:20:15 +02:00
Johannes Zellner
5da766131b Set accessToken for appstore via params 2016-07-27 11:20:15 +02:00
Johannes Zellner
642e5aceed Add AppStore.profile() 2016-07-27 11:20:15 +02:00
Johannes Zellner
e8088be586 Remove debug console.log() 2016-07-27 11:20:15 +02:00
Johannes Zellner
2a64764deb Save appstore config after login 2016-07-27 11:20:15 +02:00
Johannes Zellner
a8d04028f3 Fix typo 2016-07-27 11:20:15 +02:00
Johannes Zellner
57c7ae3c2b Fetch appstore config in settings view 2016-07-27 11:20:15 +02:00
Johannes Zellner
8165227b0a Keep same style in settings rest api 2016-07-27 11:20:15 +02:00
Johannes Zellner
f5af539102 Add webadmin client calls for appstore config 2016-07-27 11:20:15 +02:00
Johannes Zellner
41e1afaf68 Add settings/appstore routes 2016-07-27 11:20:15 +02:00
Johannes Zellner
7361acbec5 Add appstore config in settingsdb 2016-07-27 11:20:15 +02:00
Johannes Zellner
adbe862fd3 Add register button for appstore account 2016-07-27 11:20:15 +02:00
Johannes Zellner
7e3628f4c5 Add basic error handling 2016-07-27 11:20:15 +02:00
Johannes Zellner
99af676344 Add AppStore.login()/logout() 2016-07-27 11:20:15 +02:00
Johannes Zellner
9f377cb8fe Add cloudron.io icon 2016-07-27 11:20:15 +02:00
Johannes Zellner
da1418c48b Add angular base64 module 2016-07-27 11:20:15 +02:00
Johannes Zellner
84b7d77aa0 Add appstore login form dialog 2016-07-27 11:20:15 +02:00
Johannes Zellner
748e30a6e5 Minor rewording 2016-07-27 11:20:15 +02:00
Johannes Zellner
34453c9dde Add initial section for appstore account view in settings 2016-07-27 11:20:15 +02:00
Girish Ramakrishnan
ebe64852be checkout is a noun/adjective. check out is a verb 2016-07-27 01:00:25 -07:00
Girish Ramakrishnan
f5c7e993ea 0.17.4 changes 2016-07-27 00:22:08 -07:00
Girish Ramakrishnan
b628e2a6c8 add hack for mysql server on ec2 2016-07-27 00:15:08 -07:00
Girish Ramakrishnan
01af6ef23a fix wording in out_of_disk_space mail template 2016-07-26 17:22:58 -07:00
Girish Ramakrishnan
947edfec72 typo: Check "available" and not "used" 2016-07-26 17:10:22 -07:00
Girish Ramakrishnan
159fecc9ce send certificate renewal errors to owner for non-caas 2016-07-26 16:47:58 -07:00
Girish Ramakrishnan
0bf8b94bb4 send outOfDiskSpace mails to owners for non-caas provider 2016-07-26 16:43:14 -07:00
Girish Ramakrishnan
d4d07e27c0 send email for certificate renewal error 2016-07-26 16:37:10 -07:00
Girish Ramakrishnan
e9e09e66c3 remove unused variables 2016-07-26 16:37:10 -07:00
Girish Ramakrishnan
a67b2c7559 warn user that custom domain might overwrite MX record 2016-07-25 21:58:28 -07:00
Girish Ramakrishnan
d539f1fec8 Keep menu items alphabetical 2016-07-25 21:49:20 -07:00
Girish Ramakrishnan
a3c270c4a1 do not reconfigure apps when infra version has not changed 2016-07-25 18:57:54 -07:00
Girish Ramakrishnan
33c70dad8b fix merging blooper 2016-07-25 16:18:09 -07:00
Girish Ramakrishnan
28ec9d82da assume success if dns server to be down 2016-07-25 15:31:26 -07:00
Girish Ramakrishnan
e13075b835 more changelog 2016-07-25 14:38:19 -07:00
Girish Ramakrishnan
03022f0207 Do not send more than 1 oom mail every hour 2016-07-25 14:19:20 -07:00
Girish Ramakrishnan
98facf2a3c delete eventlog older than 7 days 2016-07-25 12:54:27 -07:00
Girish Ramakrishnan
338f4bcdea docker event stream can be null if it errored 2016-07-25 11:39:32 -07:00
Girish Ramakrishnan
e46b1a9245 test for app instead of error 2016-07-25 11:37:30 -07:00
Girish Ramakrishnan
129843c0ba debug name of addons that changed 2016-07-25 10:18:35 -07:00
Girish Ramakrishnan
b079d688c1 bump mail container to 0.18.0 2016-07-25 10:13:05 -07:00
Girish Ramakrishnan
684aec41cc create all addons on infra upgrade 2016-07-25 10:13:01 -07:00
Girish Ramakrishnan
cc26c2b1f1 0.17.3 changes 2016-07-25 00:51:30 -07:00
Girish Ramakrishnan
12915ee169 incremental infra creation 2016-07-25 00:39:57 -07:00
Girish Ramakrishnan
e5a34581b1 compare objects instead of just the version
this is in preparation of incremental infra updates. in that case,
an equal infra version is not enough (the images could have changed).
infra version will only signify if containers need to be recreated
wholesum.
2016-07-24 23:19:13 -07:00
Girish Ramakrishnan
5c53aec837 setup mail aliases whenever mail container is created 2016-07-24 23:04:27 -07:00
Girish Ramakrishnan
b3a4973348 default xframeoption is sameorigin 2016-07-24 23:00:43 -07:00
Girish Ramakrishnan
b45fc46ff3 emit platform ready timer only if platform succeeded 2016-07-24 22:59:47 -07:00
Girish Ramakrishnan
0c014d3e74 minor rewording 2016-07-24 22:48:16 -07:00
Johannes Zellner
520845157f Only poll every 5 sec on update 2016-07-18 14:44:08 +02:00
Johannes Zellner
3193cec6aa Skip caas cloudron details fetching for selfhosted cloudrons 2016-07-18 11:59:32 +02:00
Girish Ramakrishnan
17240c77bf pass error message and not the object 2016-07-17 10:15:14 -07:00
Johannes Zellner
82e8c8cef2 Only adjust swapiness for ec2
On DO the disk I/O seems to be much better so this is not required
2016-07-17 18:54:27 +02:00
Girish Ramakrishnan
263c68f9c2 Add placeholder text for domain name 2016-07-17 09:43:27 -07:00
Girish Ramakrishnan
2ccbd7b8d1 Remove application specific configure link
Most people won't visit it this way and it is just cluttering the UI
2016-07-15 11:23:30 -07:00
Johannes Zellner
3c6c575db9 fixup changes typo 2016-07-15 19:00:30 +02:00
Johannes Zellner
3300c6b47a Make the system use swap only when needed
The default swappiness is 60 on ubuntu. This sets the tendency
to swap out memory pages to be more frequent, which in our case
means swapping out to networked disks and increase the cpu load
a lot, which is especially bad on EC2
2016-07-15 14:07:02 +02:00
Johannes Zellner
679d948857 Add 0.17.2 changes 2016-07-15 13:18:54 +02:00
Johannes Zellner
c00267a650 Increase default button color contrast 2016-07-15 12:37:52 +02:00
Johannes Zellner
6d1a382381 Prepare for more advanced config options 2016-07-15 12:35:08 +02:00
Johannes Zellner
8e2f259712 Fix radio button margin 2016-07-15 12:34:50 +02:00
Johannes Zellner
0a85f91175 Add error reporting for xFrameOptions field 2016-07-15 11:45:41 +02:00
Johannes Zellner
fe81cad9a2 Add help description 2016-07-15 11:36:12 +02:00
Johannes Zellner
3331d1aa13 Ensure the X-Frame-Options header has a single string argument 2016-07-15 11:26:05 +02:00
Johannes Zellner
ae35c20227 Pass down the xFramOptions to the app configure route 2016-07-15 11:18:04 +02:00
Johannes Zellner
a49e1b5117 Set xFrameOptions fallback 2016-07-15 11:08:11 +02:00
Johannes Zellner
286f360908 Basic ui to specify xFrameOptions 2016-07-14 17:15:25 +02:00
Johannes Zellner
7f6360361f Fixup the appsdb tests 2016-07-14 16:28:59 +02:00
Johannes Zellner
0d5d54d2d8 Add xFrameOptions to apps and routes 2016-07-14 16:28:59 +02:00
Johannes Zellner
37563ee8cb Add xFrameOptions to appsdb.js 2016-07-14 16:28:59 +02:00
Johannes Zellner
e902e11024 Add apps.xFrameOptions column 2016-07-14 16:28:59 +02:00
Johannes Zellner
dcb14b452b Validate xFrameOptions in app install 2016-07-14 16:28:59 +02:00
Johannes Zellner
66049a9e2d Support x-frame-options in appconfig.ejs template 2016-07-14 16:28:59 +02:00
Johannes Zellner
4b40084c7f Sorry this test needs even more time for me 2016-07-14 16:28:11 +02:00
Johannes Zellner
33c701ece7 Adjust migrate route tests to new api 2016-07-14 16:17:32 +02:00
Johannes Zellner
cfeab2db42 Remove hack to show bootstrap tooltip 2016-07-14 12:48:21 +02:00
Johannes Zellner
ebb564f623 Add tooltip to show the exact time in event log 2016-07-14 12:46:52 +02:00
Johannes Zellner
d501310dc3 Add angular directives for bootstrap
https://angular-ui.github.io/bootstrap/
2016-07-14 12:46:24 +02:00
Girish Ramakrishnan
0c4772db23 merge website link and author name 2016-07-13 10:55:01 -07:00
Girish Ramakrishnan
21c5033e34 remove unused variable 2016-07-13 10:16:45 -07:00
Johannes Zellner
46d725157f show website and author on one line to give room for last updated 2016-07-13 14:55:05 +02:00
Girish Ramakrishnan
b84ce23c12 Add 0.17.1 changes 2016-07-12 16:04:50 -07:00
Girish Ramakrishnan
75889af198 Use latest mail container (outbound dkim crash fix) 2016-07-12 16:03:13 -07:00
Girish Ramakrishnan
c0f944c1bf use safe.require instead 2016-07-12 11:37:44 -07:00
Girish Ramakrishnan
743a8650f0 Add ability to setup a ghost account for caas 2016-07-12 11:01:02 -07:00
Johannes Zellner
94ee636254 No need to again check the groups for admin
This is already in user.get() which is attached to req.user
2016-07-12 10:11:04 -07:00
Girish Ramakrishnan
57d2fda14c do not validate dns config in test mode 2016-07-12 09:44:58 -07:00
Girish Ramakrishnan
a26168e3cd test: put network name in the end 2016-07-12 09:28:25 -07:00
Girish Ramakrishnan
5deadbfdc7 make prettyDate work for more than 30 days 2016-07-09 13:06:59 -07:00
Girish Ramakrishnan
7b7e3b5950 show "Last updated" 2016-07-09 13:03:40 -07:00
Girish Ramakrishnan
bcc1b6343e initialize appId before icon is saved 2016-07-09 12:25:00 -07:00
Girish Ramakrishnan
d6e275aaf0 0.17.0 changes 2016-07-08 12:52:00 -07:00
Girish Ramakrishnan
78f0992935 set button action 2016-07-08 12:26:32 -07:00
Girish Ramakrishnan
f6dfb70afc give autofocus to domain field 2016-07-08 12:12:55 -07:00
Girish Ramakrishnan
11c530b605 do global replace
Otherwise, this breaks title like "Tiny Tiny RSS"
2016-07-08 11:16:39 -07:00
Girish Ramakrishnan
61af079358 fix debug message 2016-07-08 10:46:40 -07:00
Girish Ramakrishnan
3335936e35 fix cors crash with malformed origin 2016-07-07 16:42:45 -07:00
Girish Ramakrishnan
5a6b5f945d fix fqdn for naked domain 2016-07-07 13:14:15 -07:00
Girish Ramakrishnan
87d54b3883 fix comment 2016-07-07 13:12:53 -07:00
Girish Ramakrishnan
32bce6a9a8 add some debugging info 2016-07-07 12:30:08 -07:00
Girish Ramakrishnan
fc932487e5 fix typo 2016-07-07 12:28:13 -07:00
Girish Ramakrishnan
9ad4e61b87 query box status via apiServerOrigin otherwise we hit nxdomain 2016-07-06 16:26:40 -05:00
Girish Ramakrishnan
44e7d87aac setup apiServerOrigin for splash page 2016-07-06 16:26:26 -05:00
Girish Ramakrishnan
2637b740ab fix cloudron.retire 2016-07-06 13:12:09 -05:00
Girish Ramakrishnan
1caf4e9e76 remove the isConfigured check entirely
good thing is that we will not check if the my. cert is valid each
time on start up which will work out well when restoring from
old backups with an outdated cert.
2016-07-06 10:11:54 -05:00
Johannes Zellner
f0f01453ec Make the backup cronjob run every 4 hours again
This only calls ensureBackup() which in turn would only
trigger one once per day
2016-07-06 14:54:31 +02:00
Girish Ramakrishnan
dc78aab821 remove quoting of the json 2016-07-05 22:50:54 -05:00
Girish Ramakrishnan
9b4a400694 typo 2016-07-05 22:34:51 -05:00
Girish Ramakrishnan
d9b61500b3 redirect to new domain if it responds to progress 2016-07-05 22:10:12 -05:00
Girish Ramakrishnan
2d01f2a0e9 pass migrate reason all the way to splash code 2016-07-05 22:04:24 -05:00
Girish Ramakrishnan
c3b9ed934d use ng-if since the password has a required tag 2016-07-05 17:40:11 -05:00
Girish Ramakrishnan
b49d3bd639 fix grammar 2016-07-05 17:33:53 -05:00
Girish Ramakrishnan
9096e16e37 redirect to update.html when migrating domain 2016-07-05 16:29:27 -05:00
Girish Ramakrishnan
944b3a9da1 route53: do not use appFqdn 2016-07-05 16:28:11 -05:00
Girish Ramakrishnan
8d1ff3140a fix typo 2016-07-05 16:16:43 -05:00
Girish Ramakrishnan
88fd25eff4 init customDomain only if we have an access key 2016-07-05 16:10:34 -05:00
Girish Ramakrishnan
57332eb0ce add some space 2016-07-05 16:01:09 -05:00
Girish Ramakrishnan
6b16ce04ab show dns & certs 2016-07-05 15:52:55 -05:00
Girish Ramakrishnan
efba474aa5 add js for migrating domain 2016-07-05 15:24:22 -05:00
Girish Ramakrishnan
0a45f087f2 custom domain migration ui (no javascript yet) 2016-07-05 14:38:38 -05:00
Girish Ramakrishnan
95d7d9192d show the domain name 2016-07-05 14:35:12 -05:00
Girish Ramakrishnan
bbe21d36c6 dns config: make form a dialog 2016-07-05 14:15:24 -05:00
Girish Ramakrishnan
82a3ac5382 do not reload when dns config changes 2016-07-05 13:38:24 -05:00
Girish Ramakrishnan
26ce8cf7ac do not redirect for non-custom domain 2016-07-05 12:29:30 -05:00
Girish Ramakrishnan
812a6c7ea2 make certificates section visible for non-custom domains 2016-07-05 12:29:30 -05:00
Girish Ramakrishnan
202af95502 Show credentials only for custom domain 2016-07-05 12:29:26 -05:00
Girish Ramakrishnan
ff9fb1912b reword text a bit 2016-07-05 12:16:45 -05:00
Girish Ramakrishnan
f2c5d8d016 DNS -> Domain 2016-07-05 12:15:25 -05:00
Girish Ramakrishnan
eaeaf92c1a handle BAD_FIELD 2016-07-04 23:32:44 -05:00
Girish Ramakrishnan
70034602c7 handle error 2016-07-04 23:32:44 -05:00
Girish Ramakrishnan
dcc6108da1 pass req.body instead of options 2016-07-04 23:32:44 -05:00
Girish Ramakrishnan
6acd01eaae pass domain as part of the config 2016-07-04 23:22:50 -05:00
Girish Ramakrishnan
e5baee82e8 one of size, region, domain is allowed in migration route 2016-07-04 23:22:50 -05:00
Girish Ramakrishnan
1126626b51 implement domain migration 2016-07-04 22:30:25 -05:00
Girish Ramakrishnan
ab1b5f89a1 validate route53 credentials 2016-07-04 19:42:17 -05:00
Girish Ramakrishnan
21c5491717 bump infra version (for mail container) 2016-07-04 16:17:53 -05:00
Johannes Zellner
fb5467d1cd Only show plan selection UI for caas 2016-07-04 16:48:42 +02:00
Johannes Zellner
3f5d974c0c Minor echo to ec2 image building 2016-07-04 14:04:41 +02:00
Johannes Zellner
e422357670 Set the correct hostname in start.sh 2016-07-04 10:41:54 +02:00
Johannes Zellner
53d03698ad Setup admin certs if we are configured 2016-07-04 10:18:39 +02:00
Girish Ramakrishnan
c8a3af83ff use latest mail container (subaddress alias fix) 2016-07-03 08:37:45 -05:00
Girish Ramakrishnan
2e2b75bab2 dns ui: add collapse button 2016-07-03 08:29:55 -05:00
Girish Ramakrishnan
d259a3f326 move developer mode settings into API view 2016-07-02 22:33:02 -05:00
Girish Ramakrishnan
a92adf07f4 move support to separate section 2016-07-02 22:22:25 -05:00
Girish Ramakrishnan
ff428ba5bf Fix migrate API 2016-07-02 17:48:49 -05:00
Girish Ramakrishnan
a5def529bb refactor migrate to take options 2016-07-02 16:03:21 -05:00
Johannes Zellner
78fec9ec9b Adjust changes 2016-07-02 18:53:23 +02:00
Girish Ramakrishnan
bd5c1269f6 remove jslint 2016-07-02 11:42:52 -05:00
Girish Ramakrishnan
55e2043eca pass domain argument to cloudron.migrate 2016-07-02 11:23:52 -05:00
Girish Ramakrishnan
bfd92bf7ed do not rely on appstore for billing, plan, currency 2016-07-02 10:41:10 -05:00
Girish Ramakrishnan
4983120ae8 rename getCloudronDetails 2016-07-02 10:30:12 -05:00
Girish Ramakrishnan
200ae149a9 handle appstore failure when setting plan 2016-07-02 10:23:00 -05:00
Girish Ramakrishnan
a863b8fa22 fix cors test 2016-07-02 06:03:33 -05:00
Girish Ramakrishnan
9315e7eb65 read all params individually 2016-07-01 15:27:36 -05:00
Johannes Zellner
982bfc313c Do not allow so send cookies in cors use case 2016-07-01 20:31:43 +02:00
Girish Ramakrishnan
4aa2ce4501 initialize currency in onReady 2016-06-30 17:40:18 -05:00
Girish Ramakrishnan
15d5ff1c51 list any custom plan 2016-06-30 17:28:40 -05:00
Girish Ramakrishnan
505ede7f42 make entire label clickable 2016-06-30 15:49:13 -05:00
Johannes Zellner
88b2ef65cc Pass the provider setting through to the update call 2016-06-30 19:24:36 +02:00
Johannes Zellner
7fc1126e1f Remove unused installer.sh.ejs 2016-06-30 19:03:40 +02:00
Girish Ramakrishnan
8f7e5f154b send complete plan information (since we do not have id) 2016-06-30 12:00:05 -05:00
Girish Ramakrishnan
412243e656 Fix plan selection 2016-06-30 11:48:06 -05:00
Johannes Zellner
f06c218bd1 Give the base image creation instance a name 2016-06-30 16:00:53 +02:00
Johannes Zellner
4149a5908b Only trigger cloudron retire and print any errors, but always succeed 2016-06-30 15:05:18 +02:00
Johannes Zellner
e82c33b896 Revert "Increase sysadmin route timeout as stopping might take longer"
This reverts commit 900db217ddb84ab324187ab29bf61e593f824e4a.
2016-06-30 15:01:42 +02:00
Johannes Zellner
9182038d12 Revert "Do not wait for cloudron.target to stop"
This reverts commit dcfe2e4fdbcbd2acb98cefe9b50ef0bb1828eb48.
2016-06-30 15:01:32 +02:00
Johannes Zellner
da836d6bbe ami region, image separator is a = 2016-06-30 14:39:30 +02:00
Johannes Zellner
894d63554b Ensure all amis are public and available 2016-06-30 14:25:05 +02:00
Johannes Zellner
568593db93 Use t2.small for EC2 image creation 2016-06-30 11:15:51 +02:00
Johannes Zellner
14983861c0 Do not wait for cloudron.target to stop
This will allow the box code to respond properly to the retire request
2016-06-30 10:52:50 +02:00
Johannes Zellner
f319919a4f Increase sysadmin route timeout as stopping might take longer 2016-06-30 10:52:50 +02:00
Girish Ramakrishnan
f2c897a87d load webadmin after migration 2016-06-29 23:41:42 -05:00
Girish Ramakrishnan
9c8166a2b8 Add some time information 2016-06-29 23:37:39 -05:00
Girish Ramakrishnan
0642e64ccb fix title of update page for migrations 2016-06-29 23:26:47 -05:00
Girish Ramakrishnan
77bd5bfcbe pass retire reason 2016-06-29 23:24:00 -05:00
Girish Ramakrishnan
9a1392b784 set currency based on config 2016-06-29 19:01:41 -05:00
Girish Ramakrishnan
4dabf7bb26 send currency information 2016-06-29 18:59:50 -05:00
Girish Ramakrishnan
4250a26967 send plan information 2016-06-29 18:57:06 -05:00
Girish Ramakrishnan
14ca94be78 fix typo 2016-06-29 18:24:44 -05:00
Girish Ramakrishnan
bcc3b4aee7 Make only current plan bold 2016-06-29 15:27:35 -05:00
Johannes Zellner
4d47c21a74 Also prevent autofill for developer mode modal 2016-06-29 21:33:12 +02:00
Johannes Zellner
c75b38ec56 Prevent autofill for planchange password input field 2016-06-29 21:29:28 +02:00
Girish Ramakrishnan
64b59a3047 make current plan bold 2016-06-29 14:11:00 -05:00
Girish Ramakrishnan
3a7eb74e28 match ams instead of ams3 region 2016-06-28 17:23:00 -05:00
Girish Ramakrishnan
e64a85150a use ams2 since ams3 is over capacity 2016-06-28 17:20:42 -05:00
Girish Ramakrishnan
4939363296 set font-weight to normal for plans 2016-06-28 16:56:25 -05:00
Girish Ramakrishnan
4be3f484d0 check tag type 2016-06-28 16:56:21 -05:00
Girish Ramakrishnan
9bfbdbba3b handle migrate in update.html 2016-06-28 16:21:22 -05:00
Girish Ramakrishnan
0c3de27c3d better progress message 2016-06-28 16:16:15 -05:00
Girish Ramakrishnan
24e36dc24c clean up code 2016-06-28 16:09:44 -05:00
Girish Ramakrishnan
1fb4c80951 remove bad comment 2016-06-28 16:02:35 -05:00
Girish Ramakrishnan
43193a6394 display currency based on region 2016-06-28 15:58:55 -05:00
Girish Ramakrishnan
66fd20e1ff self-retire after migration call 2016-06-28 15:43:39 -05:00
Girish Ramakrishnan
84c5e7bdeb redirect to update.html after migrate call succeeded 2016-06-28 15:41:34 -05:00
Girish Ramakrishnan
c7c6944e5f set migrate progress 2016-06-28 15:34:04 -05:00
Girish Ramakrishnan
823290aa29 remove jslint comment 2016-06-28 15:31:08 -05:00
Girish Ramakrishnan
118f36e115 use ng-checked to preselect current plan 2016-06-28 15:29:28 -05:00
Girish Ramakrishnan
2802d5f49b just use margin-left 2016-06-28 14:53:11 -05:00
Girish Ramakrishnan
ad9bb6555b fix button alignment 2016-06-28 14:51:47 -05:00
Girish Ramakrishnan
3ec3f172bb migrate UI fixes 2016-06-28 14:36:19 -05:00
Girish Ramakrishnan
b9f0efa778 send password for migrate 2016-06-28 14:02:45 -05:00
Girish Ramakrishnan
41e33e71c8 initial migrate UI 2016-06-28 13:45:50 -05:00
Johannes Zellner
ed5ebcbd5c Copy our AMIs to all EC2 regions 2016-06-28 12:54:59 +02:00
Johannes Zellner
914ebcb37d Changes for 0.16.6 2016-06-28 12:14:01 +02:00
Johannes Zellner
8769a1d15b Only backup once per day 2016-06-28 12:13:51 +02:00
Girish Ramakrishnan
dac9f29900 Add migrate route 2016-06-27 22:40:41 -05:00
Girish Ramakrishnan
eaa2058b10 remove jslint comment 2016-06-27 12:37:15 -05:00
Girish Ramakrishnan
2131c6502c 0.16.5 changes 2016-06-25 00:17:09 -05:00
Girish Ramakrishnan
0ef1cd100a bump mail container 2016-06-25 00:16:18 -05:00
Girish Ramakrishnan
5a48b90adc let the mail addon figure out how to setup aliases file 2016-06-25 00:02:19 -05:00
Girish Ramakrishnan
701a9e964f aliases have username as the "to" 2016-06-25 00:02:19 -05:00
Johannes Zellner
621fb6ddce Ensure root can login via ssh 2016-06-24 15:51:45 +02:00
Johannes Zellner
d91fe9223c Dedupe the user.verify*() code 2016-06-23 11:58:10 +02:00
Johannes Zellner
7826bc2b20 Fix client secret overflow 2016-06-23 11:28:13 +02:00
Johannes Zellner
9a5e66739c Show error if client actions don't succeed due to API disabled 2016-06-23 11:25:51 +02:00
Johannes Zellner
fd22f0d52b Give error feedback if client name is invalid 2016-06-23 10:34:26 +02:00
Johannes Zellner
1bf869963b Only allow alphanumerics and dash in auth client names 2016-06-23 10:16:02 +02:00
Girish Ramakrishnan
d1dab8746e rewrite aliases as well and not just the destination 2016-06-22 23:26:33 -05:00
Girish Ramakrishnan
4adcd947e4 0.16.4 changes 2016-06-22 21:54:39 -05:00
Girish Ramakrishnan
b08618288a setup aliases by domain name 2016-06-22 21:47:21 -05:00
Girish Ramakrishnan
f9ed725002 wait (practically) forever for admin DNS propagation 2016-06-22 16:00:03 -05:00
Girish Ramakrishnan
8cfbf92adc fix acme prod setting detection 2016-06-22 15:55:53 -05:00
Girish Ramakrishnan
eb93903bb8 platform might already by ready 2016-06-22 12:03:08 -05:00
Girish Ramakrishnan
501e1342b6 emit ready event if nothing to do 2016-06-22 11:53:48 -05:00
Girish Ramakrishnan
2a761a52d3 more debugs 2016-06-22 11:48:53 -05:00
Johannes Zellner
ce116e56bf Remove webdav specific headers
This is not actually doing anything in that directive
2016-06-22 16:06:11 +02:00
Johannes Zellner
ab9745e859 Enable root ssh access on ec2 2016-06-22 14:27:42 +02:00
Johannes Zellner
ff4b1fa346 Rename createImage -> createDOImage 2016-06-22 14:07:32 +02:00
Johannes Zellner
02fcee5d98 Remove unused vars in image creation scripts 2016-06-22 14:06:58 +02:00
Johannes Zellner
152589e7dd Do not allow ec2 cloudrons to be upgraded from the UI 2016-06-22 10:21:56 +02:00
Johannes Zellner
cc3f21e213 Handle new upgrade error code in routes 2016-06-22 10:21:56 +02:00
Johannes Zellner
61d8767c25 Block self upgrades on non caas cloudrons 2016-06-22 10:21:56 +02:00
Johannes Zellner
3416723129 Fix typo 2016-06-22 10:21:56 +02:00
Johannes Zellner
6477c7b47d Add comment in createEC2Image 2016-06-22 10:21:56 +02:00
Johannes Zellner
99ea4c8c30 Make amis public and available in the regions 2016-06-22 10:21:56 +02:00
Johannes Zellner
ef200fcc85 Support s3 backup upload without session tokens 2016-06-22 10:21:56 +02:00
Johannes Zellner
c691b75344 Make ami public (still commented) 2016-06-22 10:21:56 +02:00
Johannes Zellner
c24ef743f7 Try to autodectect if running on DO or EC2 2016-06-22 10:21:56 +02:00
Johannes Zellner
77ecf1ce22 Also handle 403 status code for non-approved apps 2016-06-22 10:21:56 +02:00
Johannes Zellner
c6c36a4f3c Also make box-setup.service depend on cloud-init for ec2 2016-06-22 10:21:56 +02:00
Johannes Zellner
2a3640032f Remove obsolete SELFHOSTED env 2016-06-22 10:21:56 +02:00
Johannes Zellner
f0e8915825 Do not copy amis to other regions for now 2016-06-22 10:21:56 +02:00
Johannes Zellner
96dabc5694 Support ec2 user-data 2016-06-22 10:21:56 +02:00
Johannes Zellner
abb3d5f0ef Copy the new image to oregon and singapore for now 2016-06-22 10:21:56 +02:00
Johannes Zellner
255d4ea088 Also terminate the instance after image creation 2016-06-22 10:21:56 +02:00
Johannes Zellner
3ac7992686 Wait for instance to come up 2016-06-22 10:21:56 +02:00
Johannes Zellner
822e886347 Take ec2 image snapshot 2016-06-22 10:21:56 +02:00
Johannes Zellner
7b5184f181 Initial script for creating ec2 base images 2016-06-22 10:21:56 +02:00
Girish Ramakrishnan
f901728cc9 Fix typo 2016-06-21 16:34:31 -05:00
Girish Ramakrishnan
4f0132b371 0.16.3 changes 2016-06-21 15:19:00 -05:00
Girish Ramakrishnan
3ffc2c0440 wait for 10 minutes before giving up on external domain 2016-06-21 15:15:51 -05:00
Girish Ramakrishnan
f84de690ce pass retry options to waitForDns 2016-06-21 15:12:36 -05:00
Girish Ramakrishnan
9f74fead4b make it gender netural 2016-06-21 11:59:26 -05:00
Girish Ramakrishnan
c1c1fed605 0.16.2 changes 2016-06-21 11:13:56 -05:00
Girish Ramakrishnan
87584be484 restartAppTask when resuming tasks
We end up with duplicate tasks because the auto installer might
have queued up some pending_install tasks on start up.
2016-06-21 10:56:25 -05:00
Girish Ramakrishnan
5a61c5ba51 platform: ready event 2016-06-21 10:46:02 -05:00
Girish Ramakrishnan
fbf7e6804f add note for resuming tasks 2016-06-21 10:33:38 -05:00
Girish Ramakrishnan
dfa4d093f7 test: ensure redis does not export the port 2016-06-20 22:59:47 -05:00
Girish Ramakrishnan
acfeb85d4a redis: do not publish the port on the host 2016-06-20 22:46:04 -05:00
Girish Ramakrishnan
b3ad463470 use debug instead 2016-06-20 22:42:37 -05:00
Girish Ramakrishnan
1e54581c40 clear timer 2016-06-20 22:39:11 -05:00
Girish Ramakrishnan
a9b91591b4 Make installationProgress TEXT
Some error messages from apptask can be very long! This cases the db
update to fail. In turn causing the installationState to not be set.
2016-06-20 22:30:17 -05:00
Girish Ramakrishnan
b59739ec54 fix typo
this is sad. why didn't jshint catch this?
2016-06-20 21:38:39 -05:00
Girish Ramakrishnan
bb9bfd542d fix bug in querying mail server IP 2016-06-20 18:26:22 -05:00
Girish Ramakrishnan
93b7e8d0a7 0.16.1 changes 2016-06-20 15:11:25 -05:00
Girish Ramakrishnan
b723f9e768 errored apps can be reconfigured
this is especially true when coming from a restore because the app
always has a good backup anyway.
2016-06-20 15:07:57 -05:00
Girish Ramakrishnan
6bc14ea7e4 resumeTasks only when configured and platform ready 2016-06-20 14:46:52 -05:00
Girish Ramakrishnan
cabed28f1e use redisName instead 2016-06-20 13:15:10 -05:00
Girish Ramakrishnan
ea74e389d3 make generateToken less stronger to fix UI layout issues 2016-06-20 13:13:13 -05:00
Girish Ramakrishnan
c37d914518 platform: rename from legacy to corrupt 2016-06-20 11:59:43 -05:00
Girish Ramakrishnan
86b8fe324e add missing comma 2016-06-20 11:15:25 -05:00
Girish Ramakrishnan
8412db0796 add missing brackets 2016-06-20 09:50:03 -05:00
Girish Ramakrishnan
da9c07e369 more 0.16.0 changes 2016-06-18 17:59:09 -05:00
Girish Ramakrishnan
3c305a51ce make sure hostname is unset 2016-06-18 17:58:01 -05:00
Girish Ramakrishnan
3ec29dc9e1 Do not set hostname of app containers
do no set hostname of containers to location as it might conflict with addons names. for example, an app installed in mail
location may not reach mail container anymore by DNS. We cannot set hostname to fqdn either as that sets up the dns
name to look up the internal docker ip. this makes curl from within container fail
Note that Hostname has no effect on DNS. We have to use the --net-alias for dns.
Hostname cannot be set with container NetworkMode
2016-06-18 17:53:54 -05:00
Girish Ramakrishnan
a3d185e653 fix typo 2016-06-18 14:51:49 -05:00
Girish Ramakrishnan
c2da3da035 set force to false explicitly 2016-06-18 13:24:27 -05:00
Girish Ramakrishnan
43c69d4dc6 we have exceeded 100 images 2016-06-18 12:12:11 -05:00
Girish Ramakrishnan
5ba1dd39e7 add missing return 2016-06-18 12:10:30 -05:00
Girish Ramakrishnan
56bc391b38 add ui text for clone 2016-06-17 19:11:29 -05:00
Girish Ramakrishnan
7e93c23110 set the lastBackupId to backup from 2016-06-17 18:41:29 -05:00
Girish Ramakrishnan
7009b9f3ac implement clone 2016-06-17 17:45:14 -05:00
Girish Ramakrishnan
0609a90d2a add CLONE installation state 2016-06-17 16:56:15 -05:00
Girish Ramakrishnan
fe62aba4d7 make appdb.add take a data object 2016-06-17 16:43:35 -05:00
Girish Ramakrishnan
224a5f370f 0.16.0 changes 2016-06-17 13:08:35 -05:00
Girish Ramakrishnan
584df9a6da fix redis query 2016-06-17 12:39:29 -05:00
Girish Ramakrishnan
f31c43bbc3 fix EPIPE issue by using http instead of superagent 2016-06-17 11:12:20 -05:00
Girish Ramakrishnan
10ebff2edf fix response to say cloudron network 2016-06-17 10:10:18 -05:00
Girish Ramakrishnan
cc1755105c do not allow access if app is not found 2016-06-17 10:08:41 -05:00
Girish Ramakrishnan
6c5a3997cb fix clientSecret.length test 2016-06-17 10:07:55 -05:00
Girish Ramakrishnan
2017d668a9 use 128 byte passwords 2016-06-17 09:49:25 -05:00
Girish Ramakrishnan
7e57f31d14 create cloudron network in test 2016-06-17 09:18:15 -05:00
Girish Ramakrishnan
de0d42e52f search cloudron network for the apps 2016-06-17 09:18:15 -05:00
Girish Ramakrishnan
dbadbd2c4e bump all the container versions 2016-06-17 09:18:15 -05:00
Girish Ramakrishnan
d51d2e5131 start addons and apps in the cloudron network
also remove getLinkSync, since we don't use linking anymore
2016-06-17 09:18:10 -05:00
Girish Ramakrishnan
be2c7a97b3 Use docker command instead of api to create redis container 2016-06-16 18:02:51 -05:00
Girish Ramakrishnan
2ab13d587a remove dead function 2016-06-16 17:24:38 -05:00
Girish Ramakrishnan
f13f24c88d Just use docker commands 2016-06-16 15:41:50 -05:00
Girish Ramakrishnan
91bc45bd4e not sure why this is required but it makes the test more stable 2016-06-16 15:09:46 -05:00
Girish Ramakrishnan
a75b9c1428 remove debugs 2016-06-16 14:59:20 -05:00
Girish Ramakrishnan
d837e9f679 make test more reliable 2016-06-16 14:50:49 -05:00
Girish Ramakrishnan
d5ffa53e70 create an isolated docker network named cloudron
we will move from linked containers to an isolated network. This
has the main advantage that linked containers can be upgraded.
For example, I can update the mysql container independently without
breaking the apps that require it. Apps will only see some minor
downtime and will need to reconnect.
2016-06-16 06:59:47 -07:00
Girish Ramakrishnan
fee6f3de0f configure/restoreInstalledApps must always succeed 2016-06-16 06:50:34 -07:00
Girish Ramakrishnan
f15f3c9052 node-ify setup_infra.sh 2016-06-15 05:26:40 -07:00
Johannes Zellner
a37f87511b Prevent clickjacking by sending X-Frame-Options 2016-06-15 13:10:26 +02:00
Girish Ramakrishnan
069778caca 0.15.3 changes 2016-06-14 14:49:25 -07:00
Girish Ramakrishnan
741fe75def fix progress message 2016-06-14 14:42:29 -07:00
Girish Ramakrishnan
f8b402a48e add progress message tooltip 2016-06-14 14:32:14 -07:00
Girish Ramakrishnan
f53c0b7700 set radix for parseInt 2016-06-14 14:21:24 -07:00
Girish Ramakrishnan
f74310f364 fix title of configure dialog 2016-06-14 14:17:05 -07:00
Girish Ramakrishnan
a5a1526023 Allow configure command when in configuration state
Currently, we only allow restore (from backup) and uninstall. If configure
is taking very long (like external domain) and someone wants to reconfigure
we should let them.

We are sort of trying to think of 'reconfigure' as 'retry' in case of
external errors.
2016-06-14 14:13:47 -07:00
Girish Ramakrishnan
26f318477b Do not send crash logs for apptask cancellations 2016-06-14 14:13:47 -07:00
Girish Ramakrishnan
060d9e88ef Pass manifest to backupApp 2016-06-14 11:32:29 -07:00
Girish Ramakrishnan
9cf497a87d 0.15.2 changes 2016-06-13 23:31:35 -07:00
Girish Ramakrishnan
b174765992 delete unused addonsa fter backup 2016-06-13 23:07:41 -07:00
Girish Ramakrishnan
9c2d217176 fix typo 2016-06-13 23:04:43 -07:00
Girish Ramakrishnan
3197349058 Fix app backup before updates
we were passing the current manifest to the backup code which meant that
the app version and manifest was incorrect.
2016-06-13 21:19:29 -07:00
Girish Ramakrishnan
5f3378878e remove lastBackupConfig 2016-06-13 19:19:28 -07:00
Girish Ramakrishnan
53cd45496b parse the response 2016-06-13 18:28:51 -07:00
Girish Ramakrishnan
942339435a return config correctly 2016-06-13 18:04:22 -07:00
Girish Ramakrishnan
2bd6519795 add assert 2016-06-13 18:02:57 -07:00
Girish Ramakrishnan
1763c36a0b restore from the backup's config.json
To summarize what we are doing is that restore is simply getting old data and
old code. Config is not changed. If config is required, then it has to come
in the restore REST parameter. Otherwise, there is too much magic.

https://blog.smartserver.io/2016/06/13/app-restore/
2016-06-13 16:54:59 -07:00
Girish Ramakrishnan
2c0eb33625 use apps.getAppConfig when generating config.json 2016-06-13 15:11:49 -07:00
Girish Ramakrishnan
040b9993c7 refactor code into getAppConfig 2016-06-13 15:07:15 -07:00
Girish Ramakrishnan
8f21126697 add a way to get the restore config (config.json) 2016-06-13 15:04:27 -07:00
Girish Ramakrishnan
716d29165c store altDomain in backupConfig 2016-06-13 13:14:04 -07:00
Girish Ramakrishnan
a2ec308155 pass the lastBackupId explicity as the backup to restore to 2016-06-13 10:13:54 -07:00
Girish Ramakrishnan
b82610ba00 pass data argument to restore 2016-06-13 10:08:58 -07:00
Johannes Zellner
ed4674cd14 Disable the trial popup 2016-06-13 16:51:28 +02:00
Johannes Zellner
4e9dc75a37 Replace DatabaseError with ClientsError where applicable 2016-06-13 14:43:56 +02:00
Johannes Zellner
f284b4cd83 Use clients.get() instead of clientdb.get() 2016-06-13 13:51:14 +02:00
Johannes Zellner
15cf83b37c Fixup the built-in client setup for tests 2016-06-13 13:48:43 +02:00
Johannes Zellner
0eff8911ee Do not use DatabaseError in routes clients.js 2016-06-13 13:29:39 +02:00
Girish Ramakrishnan
814a0ce3a6 wait for 10mins before sending out emails about app being down 2016-06-11 18:36:38 -07:00
Girish Ramakrishnan
b3e1c221b7 bump infra to force a reconfigure for existing pr cloudrons 2016-06-11 13:49:55 -07:00
Girish Ramakrishnan
dc31946e50 move webdav block outside location
when inside location, nginx is redirecting to 127.0.0.1 (no clue why)
2016-06-11 12:05:16 -07:00
Girish Ramakrishnan
36bbb98970 0.15.1 changes 2016-06-10 12:40:48 -07:00
Girish Ramakrishnan
ea4cea9733 add tag on blur 2016-06-10 12:35:57 -07:00
Girish Ramakrishnan
7c06937a57 Add @fqdn hint to email aliases 2016-06-10 12:04:40 -07:00
Girish Ramakrishnan
597704d3ed remove the plain input email aliases 2016-06-10 11:58:25 -07:00
Girish Ramakrishnan
63290b9936 Final fixes to taginput 2016-06-10 11:58:00 -07:00
Girish Ramakrishnan
324222b040 Fix template code style 2016-06-09 16:11:57 -07:00
Girish Ramakrishnan
f37b92da04 taginput: remove autocomplete. we don't use it 2016-06-09 10:34:42 -07:00
Girish Ramakrishnan
0de3b8fbdb taginput: add tag input control for email aliases 2016-06-09 10:34:29 -07:00
Johannes Zellner
f0cb3f94cb Fixup the token ui to allow removal of user added clients 2016-06-09 16:17:14 +02:00
Johannes Zellner
1508a5c6b9 Add tokendb.delByClientId() 2016-06-09 15:42:52 +02:00
Johannes Zellner
9b9db6acf1 Only the rest api shall not allow to remove those 2016-06-09 15:35:46 +02:00
Johannes Zellner
001bf94773 Remove unused require 2016-06-09 15:35:20 +02:00
Johannes Zellner
0160c12965 Allow to distinguish between built-in auth clients and external ones 2016-06-09 15:35:00 +02:00
Johannes Zellner
d08397336d Add test for addon auth clients deletion 2016-06-09 15:12:30 +02:00
Johannes Zellner
880754877d Prevent the rest api to delete addon auth clients 2016-06-09 14:44:38 +02:00
Johannes Zellner
984a191e4c Use the variable correctly 2016-06-09 14:24:53 +02:00
Girish Ramakrishnan
cdca43311b wording and other minor fixes 2016-06-08 17:06:27 -07:00
Girish Ramakrishnan
020b47841a 0.15.1 changes 2016-06-08 16:42:00 -07:00
Girish Ramakrishnan
3f602c8a04 verifyWithUsername and not as id 2016-06-08 15:54:22 -07:00
Girish Ramakrishnan
dea0c5642d bump mail container 2016-06-08 13:16:44 -07:00
Girish Ramakrishnan
3d2b75860b minor fixes to session ui 2016-06-08 13:04:22 -07:00
Girish Ramakrishnan
0da754a14b fix singular/plural 2016-06-08 12:52:19 -07:00
Girish Ramakrishnan
3d408c8c90 fix wording 2016-06-08 12:43:15 -07:00
Girish Ramakrishnan
40348a5132 Merge branch '0.15' 2016-06-08 11:56:24 -07:00
Girish Ramakrishnan
9a177d9e46 fix typo 2016-06-08 10:14:59 -07:00
Girish Ramakrishnan
6f1df9980d minor wording changes 2016-06-08 09:58:30 -07:00
Girish Ramakrishnan
0c9d331f47 more changes 2016-06-08 08:46:18 -07:00
Girish Ramakrishnan
f9db24e162 Fix autoupdate detection logic
We should be comparing existing manifest ports with new manifest ports.
The user chosen bindings itself doesn't matter.
2016-06-08 08:45:40 -07:00
Johannes Zellner
385bf3561b Remove unused function in platform.js 2016-06-08 15:06:03 +02:00
Johannes Zellner
4304f20fe0 Fix some log output 2016-06-08 15:05:43 +02:00
Johannes Zellner
509083265f fix setup_infra.sh to accomodate ifconfig differences 2016-06-08 15:01:28 +02:00
Johannes Zellner
1b9dbd06c8 Fix typo 2016-06-08 14:55:14 +02:00
Johannes Zellner
d6482414bb Fixup the clientdb tests 2016-06-08 14:49:54 +02:00
Johannes Zellner
194b9b35bd We now have 3 built-in api clients 2016-06-08 14:48:03 +02:00
Johannes Zellner
6b9acb4722 Preserve the built-in clients on db clean 2016-06-08 14:47:21 +02:00
Johannes Zellner
08c3cb9376 Insert the default auth clients for tests 2016-06-08 14:37:41 +02:00
Johannes Zellner
79631ba996 Provide a fallback for the redirect uri 2016-06-08 14:30:42 +02:00
Johannes Zellner
4776a005a5 Remove redundant client TYPE_*s 2016-06-08 14:09:06 +02:00
Johannes Zellner
e954df2120 Issue developer tokens with cid-cli 2016-06-08 13:39:31 +02:00
Johannes Zellner
526a62a20e Fix the async iterator 2016-06-08 13:35:32 +02:00
Johannes Zellner
e2432d002f Count activeTokens correctly 2016-06-08 13:31:17 +02:00
Johannes Zellner
6e4d6d1099 Do not show application token listing if there is nothing to show 2016-06-08 13:03:59 +02:00
Johannes Zellner
fc2d1d61d7 Also logout the webadmin session 2016-06-08 13:03:21 +02:00
Johannes Zellner
4c4ae08b44 Allow users to see issued tokens and revoke them all in one 2016-06-08 12:56:48 +02:00
Johannes Zellner
401c0e1b44 Special handling for better ui for sdk tokens 2016-06-08 11:55:40 +02:00
Johannes Zellner
e431bd6040 Fix typo 2016-06-08 11:36:01 +02:00
Johannes Zellner
a69cd204d6 Handle sdk and cli clients just like the webadmin 2016-06-08 11:33:08 +02:00
Johannes Zellner
3c3de6205e Add test case for blocking cid-webadmin deletion 2016-06-08 11:27:10 +02:00
Johannes Zellner
16444f775d Prevent deletion of the built-in clients 2016-06-08 11:24:02 +02:00
Johannes Zellner
2676658b5d Add auth client cid-sdk and cid-cli 2016-06-08 11:20:06 +02:00
Girish Ramakrishnan
fbb8a842c1 do not require password 2016-06-08 00:07:41 -07:00
Girish Ramakrishnan
62b586e8dd fix require path 2016-06-07 20:57:39 -07:00
Girish Ramakrishnan
313d98ef70 add a route to check for updates quickly 2016-06-07 20:24:41 -07:00
Girish Ramakrishnan
06448f146d fix typo 2016-06-07 20:09:53 -07:00
Girish Ramakrishnan
064d950f87 add new tests for field validation 2016-06-07 16:00:02 -07:00
Girish Ramakrishnan
3236ce9cd6 check if both are null 2016-06-07 15:36:45 -07:00
Johannes Zellner
f74b22645f Token view is now admin only 2016-06-07 22:56:27 +02:00
Johannes Zellner
3540f2c197 Move token management to separate view for admins only 2016-06-07 22:54:53 +02:00
Girish Ramakrishnan
3231fe7874 use user.get which already set admin flag 2016-06-07 10:03:08 -07:00
Girish Ramakrishnan
dc8fd2eab3 do not use userdb directly 2016-06-07 10:01:14 -07:00
Girish Ramakrishnan
3ae388602c fix wording 2016-06-07 09:27:42 -07:00
Johannes Zellner
733187f3c4 Also show redirectURI for developers to use 2016-06-07 16:21:33 +02:00
Johannes Zellner
02d2a7058e Remove whitespace in scope input 2016-06-07 16:15:53 +02:00
Johannes Zellner
25003bcf40 Add placeholder text in scope input 2016-06-07 16:12:56 +02:00
Johannes Zellner
234caa60eb Add form validation for scopes 2016-06-07 16:10:33 +02:00
Johannes Zellner
a0227b6043 Remove now unused localhost test client
We can now simply use the regular APIs to do local development against a Cloudron
2016-06-07 16:03:50 +02:00
Johannes Zellner
46ac6c4918 Offset the footer in the console views 2016-06-07 15:58:53 +02:00
Johannes Zellner
4afde79297 Fix error message 2016-06-07 15:56:22 +02:00
Johannes Zellner
17d48f3fce Specify the expiration on the client. Currently this is 100 years.
I am not sure if this is the best approach, or if we should introduce a magic value instead.
2016-06-07 15:54:32 +02:00
Johannes Zellner
facdabcc8d Mention the token expiration in the ui 2016-06-07 15:54:09 +02:00
Johannes Zellner
691803f10b Allow optional expiresAt to be set on token creation 2016-06-07 15:47:13 +02:00
Johannes Zellner
8144c6d086 Patch up the token delete button with the route 2016-06-07 15:38:42 +02:00
Johannes Zellner
290ab6cc7d Fix typo 2016-06-07 15:38:30 +02:00
Johannes Zellner
8e5af17e5d Add route to delete a single token 2016-06-07 15:34:27 +02:00
Johannes Zellner
d9d94faf75 Refresh the client on token actions 2016-06-07 15:15:56 +02:00
Johannes Zellner
0201ab19e4 Pass in the client object 2016-06-07 14:47:56 +02:00
Johannes Zellner
721fe74f3c The route creates the subobject 2016-06-07 14:47:47 +02:00
Johannes Zellner
96eeb247a1 Add rest api to create a new token for a client 2016-06-07 14:29:37 +02:00
Johannes Zellner
6261231593 add ui for token generation 2016-06-07 14:19:20 +02:00
Johannes Zellner
d62d2b17fe Select tokens and secrets with single click 2016-06-07 14:10:20 +02:00
Johannes Zellner
89cef4f050 Show tokens for admins 2016-06-07 14:07:41 +02:00
Johannes Zellner
8602e033c5 Only show active clients for non-admins 2016-06-07 13:46:45 +02:00
Johannes Zellner
3598d89b12 ?all is gone in clients route 2016-06-07 13:17:02 +02:00
Johannes Zellner
ffd552583c Patch up the client remove ui 2016-06-07 13:12:53 +02:00
Johannes Zellner
9eabc9d266 Fixup the wording 2016-06-07 12:50:52 +02:00
Johannes Zellner
edf8cd736e Add modal for client removal 2016-06-07 12:48:12 +02:00
Johannes Zellner
c5ebe2c2bf Fixup the panel padding 2016-06-07 12:48:00 +02:00
Johannes Zellner
5d0ccc0dd7 Show correct token count 2016-06-07 12:37:18 +02:00
Johannes Zellner
4147455654 Fetch tokens for each client separately 2016-06-07 12:37:04 +02:00
Johannes Zellner
f3436a99a2 Fixup the client list details 2016-06-07 12:28:33 +02:00
Johannes Zellner
70d569e2e8 List all oauth clients in webadmin 2016-06-07 12:26:14 +02:00
Johannes Zellner
684625fbaf Remove unused clients.getAllWithDetailsByUserId() 2016-06-07 12:25:48 +02:00
Johannes Zellner
c8b9ae542c Simply return oauth clients instead of join with tokendb 2016-06-07 12:15:25 +02:00
Johannes Zellner
af29c1ba86 Handle external api client requests separately 2016-06-07 12:00:18 +02:00
Johannes Zellner
207e81345f Log event for external login 2016-06-07 11:59:54 +02:00
Johannes Zellner
d880731351 Support ?all query param for oauth clients get route 2016-06-07 11:18:30 +02:00
Johannes Zellner
e603cfe96e Add clients.getAllWithDetails() 2016-06-07 11:17:29 +02:00
Johannes Zellner
5b93a2870f Add clientdb.getAllWithTokenCount() 2016-06-07 11:17:14 +02:00
Johannes Zellner
1214300800 Consistent code styling 2016-06-07 11:08:35 +02:00
Johannes Zellner
8159334cbf Avoid more inlining 2016-06-07 10:55:36 +02:00
Johannes Zellner
78135c807a Be consistent in client.js add -> create 2016-06-07 10:49:11 +02:00
Johannes Zellner
bfa33e4d8e Fixup a linter issue 2016-06-07 10:48:36 +02:00
Johannes Zellner
8b23174769 add client.addOAuthClient() 2016-06-07 10:45:50 +02:00
Johannes Zellner
a078c94b97 Ensure autofocus is handled 2016-06-07 10:43:33 +02:00
Johannes Zellner
c86392cd60 Add modal dialog to create API clients 2016-06-07 10:42:54 +02:00
Johannes Zellner
f0e9256d46 Avoid style inlining 2016-06-07 10:10:58 +02:00
Girish Ramakrishnan
0cd4e4f03a update now takes appStoreId 2016-06-04 20:51:17 -07:00
Girish Ramakrishnan
1766da9174 update code path now takes appStoreId 2016-06-04 20:05:29 -07:00
Girish Ramakrishnan
dbdcf1ec27 pass data object to update 2016-06-04 19:12:36 -07:00
Girish Ramakrishnan
c916ea2589 fix style 2016-06-04 18:56:53 -07:00
Girish Ramakrishnan
5540b5f545 remove unused require 2016-06-04 18:55:31 -07:00
Girish Ramakrishnan
1e38190e68 setting falsy values for cert/key removes it 2016-06-04 18:30:05 -07:00
Girish Ramakrishnan
8f3553090f make args optional in configure 2016-06-04 18:07:06 -07:00
Girish Ramakrishnan
cc0f5a1f03 fix configure arg insanity 2016-06-04 16:32:27 -07:00
Girish Ramakrishnan
a1c531d2a8 better type checking in configure and make accessRestriction optional 2016-06-04 16:27:50 -07:00
Girish Ramakrishnan
57cb3b04d7 generate 2048-bit keys 2016-06-04 15:59:53 -07:00
Girish Ramakrishnan
a49cf98a8d do not allow appId to be set
this is some legacy code
2016-06-04 13:40:43 -07:00
Girish Ramakrishnan
da6cab8dd6 we return 400 now 2016-06-04 13:32:41 -07:00
Girish Ramakrishnan
3b7cfdd7db better type checking 2016-06-04 13:31:18 -07:00
Girish Ramakrishnan
f9251c8b37 sending manifest is now redundant 2016-06-04 13:23:13 -07:00
Girish Ramakrishnan
4068ff5f21 add TODO note to validate accessRestriction 2016-06-04 13:20:10 -07:00
Girish Ramakrishnan
ee073c91a3 return BAD_FIELD if app was not found 2016-06-04 13:15:38 -07:00
Girish Ramakrishnan
9e8742ca87 download manifest from appstore when appStoreId is provided 2016-06-04 01:07:43 -07:00
Girish Ramakrishnan
7f99fe2399 appStoreId has empty string default 2016-06-03 23:58:09 -07:00
Girish Ramakrishnan
bfe8df35df toLowerCase in one place 2016-06-03 23:54:46 -07:00
Girish Ramakrishnan
e2848d3e08 fix apps.install insane arg list 2016-06-03 23:35:55 -07:00
Girish Ramakrishnan
bc823b4a75 make checkManifestConstraints return AppsError 2016-06-03 22:19:09 -07:00
Girish Ramakrishnan
c24f780722 make validateAccessRestriction and validateMemory return AppsError 2016-06-03 22:16:55 -07:00
Girish Ramakrishnan
0d51ec9920 make validatePortBindings return AppsError 2016-06-03 22:15:02 -07:00
Girish Ramakrishnan
e07e544029 make validateHostname return AppsError 2016-06-03 22:14:08 -07:00
Girish Ramakrishnan
5aff55c5ca typo when stashing altDomain 2016-06-03 19:50:01 -07:00
Girish Ramakrishnan
5ebc29746d fix failing tests 2016-06-03 19:14:16 -07:00
Girish Ramakrishnan
8fc44e6bc9 remove redundant checks 2016-06-03 19:08:47 -07:00
Girish Ramakrishnan
44f4872134 remove dead comments 2016-06-03 17:55:05 -07:00
Girish Ramakrishnan
49dd584a41 return expiresAt as ISO-string for API consistency 2016-06-03 10:11:09 -07:00
Girish Ramakrishnan
6d8f1f90d4 add note to change expires to TIMESTAMP type 2016-06-03 10:07:30 -07:00
Girish Ramakrishnan
c1ded66c1a make download_url a post route 2016-06-03 09:23:15 -07:00
Johannes Zellner
4df49a82e5 Some clientdb.TYPE_ oversight in clients.js 2016-06-03 15:28:04 +02:00
Johannes Zellner
92e6ee9539 The clientSecret is now only ever created in the clients.js 2016-06-03 15:11:08 +02:00
Johannes Zellner
3ad2a2a5ca Fixup the unit tests 2016-06-03 15:07:44 +02:00
Johannes Zellner
226537de04 Move client TYPE_* to clients.js 2016-06-03 15:05:00 +02:00
Johannes Zellner
41b324eb2d Remove clientdb usage in addons.js 2016-06-03 14:56:45 +02:00
Johannes Zellner
1360729e97 Don't use clientdb directly from auth.js and apptask.js 2016-06-03 14:52:59 +02:00
Johannes Zellner
725e1debcc Provide getByAppIdAndType() by clients.js 2016-06-03 14:47:06 +02:00
Johannes Zellner
201efa70b7 use clients instead of clientdb in oauth2.js 2016-06-03 14:38:58 +02:00
Johannes Zellner
c52d0369fa Provide better feedback on invalid scopes 2016-06-03 13:53:33 +02:00
Johannes Zellner
b4dfad3aa3 Fixup the unit tests after removing PREFIX_USER 2016-06-03 13:09:26 +02:00
Johannes Zellner
7667cdc66d PREFIX_USER finally gone 2016-06-03 13:01:23 +02:00
Johannes Zellner
3a9a667890 Make all token grants without PREFIX_USER 2016-06-03 13:01:05 +02:00
Johannes Zellner
304cfed5a9 Result of password setting is now a plain token identifier 2016-06-03 13:00:07 +02:00
Johannes Zellner
778c583a52 Activation hands out a token without PREFIX_USER now 2016-06-03 12:59:13 +02:00
Johannes Zellner
f988bb4d14 Do not use PREFIX_USER for token managment 2016-06-03 12:58:39 +02:00
Johannes Zellner
7057f1aaa2 All token identifiers are now plain user ids 2016-06-03 12:54:59 +02:00
Johannes Zellner
e06f5f88b8 Remove the token types 2016-06-03 12:54:34 +02:00
Johannes Zellner
03cd3f0b6f Remove attached tokenType on req.user 2016-06-03 12:53:11 +02:00
Johannes Zellner
615f875169 Remove PREFIX_DEV for developer tokens 2016-06-03 12:52:10 +02:00
Johannes Zellner
f27ba04a00 Add test case for developer tokens 2016-06-03 11:11:11 +02:00
Johannes Zellner
3e0006a327 Allow tokens with SCOPE_ROLE_SDK through without a password 2016-06-03 11:10:59 +02:00
Johannes Zellner
558ca42ae8 Issue developer tokens with SCOPE_ROLE_SDK 2016-06-03 11:10:22 +02:00
Johannes Zellner
9d8a803185 Handle scope roles in scope checks 2016-06-03 11:09:48 +02:00
Johannes Zellner
105047b0c4 Add SCOPE_ROLE_SDK 2016-06-03 11:08:35 +02:00
Johannes Zellner
e335aa5dee Check for sdk token instead of token type DEV 2016-06-03 10:17:52 +02:00
Johannes Zellner
10163733db Separate the scope checking 2016-06-03 10:10:58 +02:00
Girish Ramakrishnan
251fad8514 add test for groupIds in listing api 2016-06-03 00:14:52 -07:00
Girish Ramakrishnan
036740f97b filter out correct fields in the route code 2016-06-03 00:04:17 -07:00
Girish Ramakrishnan
f4958d936c return groupIds in get user route 2016-06-03 00:00:11 -07:00
Girish Ramakrishnan
80ca69a128 user.update does not need the user object 2016-06-02 23:53:06 -07:00
Girish Ramakrishnan
097d23c412 move logic to model code 2016-06-02 23:29:43 -07:00
Girish Ramakrishnan
13a1213b0d make group listing API return member userIds 2016-06-02 21:07:33 -07:00
Girish Ramakrishnan
76fe2bf531 add note to fix precision at some point 2016-06-02 19:43:23 -07:00
Girish Ramakrishnan
50c4e4c91e log event only after lock is acquired 2016-06-02 19:26:58 -07:00
Girish Ramakrishnan
46441d1814 cloudron.update is not exposed 2016-06-02 19:23:21 -07:00
Girish Ramakrishnan
a4e73be834 pass auditSource for certificate renewal 2016-06-02 18:54:45 -07:00
Girish Ramakrishnan
6be0d0814d pass auditSource from cron.js 2016-06-02 18:51:50 -07:00
Girish Ramakrishnan
e30d71921e pass auditSource for app autoupdater 2016-06-02 18:49:56 -07:00
Girish Ramakrishnan
a49c78f32c make box autoupdate generate eventlog 2016-06-02 18:47:09 -07:00
Girish Ramakrishnan
b077223e58 fix scope name 2016-06-02 17:49:54 -07:00
Girish Ramakrishnan
d2864dfe56 rename root scope to cloudron scope (for lack of better scope name) 2016-06-02 16:51:14 -07:00
Girish Ramakrishnan
6d08af35a8 give developer token root scope 2016-06-02 15:58:40 -07:00
Girish Ramakrishnan
54f9d653f7 fix error messages 2016-06-02 14:41:21 -07:00
Girish Ramakrishnan
8d65f93fa4 return error.message 2016-06-02 14:40:29 -07:00
Girish Ramakrishnan
462440bb30 do not check for password in profile route
This is already checked by the verifyPassword middleware based on
the token type.

When using dev tokens, this check barfs for lack of password field
even when none is required.
2016-06-02 14:26:01 -07:00
Girish Ramakrishnan
65261dc4d5 add time_zone setter route 2016-06-02 13:54:07 -07:00
Girish Ramakrishnan
54ead09aac make the name API work
currently this only works for the main webadmin (and not for
nakeddomain, error etc) but that's fine.
2016-06-02 13:25:02 -07:00
Girish Ramakrishnan
28b3550214 use error.message 2016-06-02 13:00:23 -07:00
Girish Ramakrishnan
e2e70da4c5 restrict length to 32 2016-06-02 12:51:49 -07:00
Johannes Zellner
7326ea27ca Only set username and displayName after successful update 2016-06-02 21:12:02 +02:00
Girish Ramakrishnan
1fe00f7f80 do not use verbs in resource url 2016-06-02 12:01:48 -07:00
Girish Ramakrishnan
e9e9d6000d remove token check for user.update to work with dev tokens 2016-06-02 11:29:59 -07:00
Girish Ramakrishnan
6dccb3655f add no groups available message in edit user dialog 2016-06-02 10:55:34 -07:00
Girish Ramakrishnan
c3113bd74d go back to step2 if activation fails 2016-06-02 10:40:06 -07:00
Girish Ramakrishnan
e79119b72a 0.15.0 changes 2016-06-02 10:32:10 -07:00
Johannes Zellner
086cfdc1e6 Disabled form fields are not POSTed
I did not know about that fact, one has to use readonly
2016-06-02 16:12:32 +02:00
Johannes Zellner
1f091d3b4b We have to let angular know 2016-06-02 16:06:15 +02:00
Johannes Zellner
892fa4b2ec We still require the username to be sent always 2016-06-02 16:01:25 +02:00
Johannes Zellner
a87b4b207c Adhere to already set username in user setup view 2016-06-02 15:47:58 +02:00
Johannes Zellner
bdd14022d6 Report user conflict message all the way through the rest routes 2016-06-02 15:41:07 +02:00
Johannes Zellner
3d40cf03b1 Pass down the reason why the user conflicts 2016-06-02 15:39:21 +02:00
Johannes Zellner
594be7dbbd Allow the userdb code to distinguish between username or email duplicates 2016-06-02 15:34:27 +02:00
Johannes Zellner
a52e2ffc23 Distinguish between username and email conflict 2016-06-02 15:19:35 +02:00
Johannes Zellner
8eeee712aa Remove unused require 2016-06-02 14:14:16 +02:00
Johannes Zellner
0f62faa198 All our tokens are now representing an user with a profile 2016-06-02 14:13:57 +02:00
Johannes Zellner
bfd66cf309 Remove unused token PREFIX_APP 2016-06-02 14:07:41 +02:00
Johannes Zellner
c2f7d61e34 Remove unused token TYPE_APP 2016-06-02 14:07:19 +02:00
Johannes Zellner
d5d5e356ae Add error handling for invalid usernames 2016-06-02 13:52:44 +02:00
Johannes Zellner
531752cd43 Use placeholder for description in username and displayName fields 2016-06-02 13:52:33 +02:00
Johannes Zellner
9eac56578c Allow admins to set the username and displayName optionally on user creation 2016-06-02 13:32:45 +02:00
Johannes Zellner
d06398dbfd Move webdav nginx fixes into app endpoint
Not sure if this will now still work with oauth proxy though.
2016-06-02 09:49:01 +02:00
Girish Ramakrishnan
60ce6b69ee profile updates must be POST 2016-06-02 00:31:41 -07:00
Girish Ramakrishnan
4fcc7fe99f updateUser is POST 2016-06-02 00:27:06 -07:00
Girish Ramakrishnan
82cd215ffa merge bad fields and pass error.message correctly in REST responses 2016-06-02 00:12:21 -07:00
Girish Ramakrishnan
1dcea84068 fix typo 2016-06-01 23:43:21 -07:00
Girish Ramakrishnan
4107252bfe developer mode is true by default 2016-06-01 23:13:12 -07:00
Girish Ramakrishnan
9cc6cb56f7 fix error message 2016-06-01 19:38:42 -07:00
Girish Ramakrishnan
48b99a4203 enable developer mode by default
also emphasize on the api aspect
2016-06-01 18:57:15 -07:00
Girish Ramakrishnan
824767adbb enabled -> isEnabled 2016-06-01 18:21:02 -07:00
Girish Ramakrishnan
3d84880d92 keep limits in sync with the nginx config 2016-06-01 18:09:23 -07:00
Girish Ramakrishnan
dfa08469d6 set timeouts explicitly 2016-06-01 17:33:28 -07:00
Girish Ramakrishnan
d798073d95 fix comment of default_server 2016-06-01 17:28:15 -07:00
Girish Ramakrishnan
41632b8c11 fix favicon of naked domain 2016-06-01 17:27:39 -07:00
Girish Ramakrishnan
6ccc46717e remove unused middleware 2016-06-01 16:59:51 -07:00
Girish Ramakrishnan
2495caf2eb remove unused redis module 2016-06-01 16:55:58 -07:00
Girish Ramakrishnan
ae9c104a8b remove unused bytes module 2016-06-01 16:54:25 -07:00
Girish Ramakrishnan
683f371778 remove serve-favicon
favicon is served up as /api/v1/cloudron/avatar
2016-06-01 16:52:28 -07:00
Girish Ramakrishnan
eb29bdd575 document keepalive_timeout 2016-06-01 16:51:52 -07:00
Girish Ramakrishnan
b13de298bf Add some REST api tests 2016-06-01 16:33:18 -07:00
Johannes Zellner
47978436c2 Set Destination header for webdav in nginx proxy 2016-06-01 18:49:50 +02:00
Johannes Zellner
71b5cc4702 Fix invite mail wording 2016-06-01 18:45:31 +02:00
Girish Ramakrishnan
5a9e32d41a hide aliases field if no username is set 2016-06-01 06:33:29 -07:00
Girish Ramakrishnan
b03e4db8d5 check for null username 2016-05-31 21:38:51 -07:00
Girish Ramakrishnan
663ff2410a user.update must become a post route 2016-05-31 11:51:56 -07:00
Girish Ramakrishnan
f763759008 return empty groupIds 2016-05-31 11:49:59 -07:00
Girish Ramakrishnan
69aa11d6c6 send pretty json 2016-05-31 11:14:59 -07:00
Girish Ramakrishnan
65041743c5 update to connect-lastmile@0.1.0 2016-05-31 10:48:37 -07:00
Girish Ramakrishnan
76214d3d7a no variable named infra_version 2016-05-30 19:45:59 -07:00
Girish Ramakrishnan
be83a967fc node require will not work without json extension 2016-05-30 17:03:56 -07:00
Girish Ramakrishnan
119e095710 actually change ownership 2016-05-30 15:51:52 -07:00
Girish Ramakrishnan
5df3a41988 INFRA_VERSION may not exist 2016-05-30 14:48:41 -07:00
Girish Ramakrishnan
a34b611e20 make INFRA_VERSION writable by yellowtent user 2016-05-30 12:52:39 -07:00
Girish Ramakrishnan
75c1731443 do not add app mailboxes to database
a) we don't allow .app pattern in database for aliases and mailboxes
b) the addons already know about app names separately
2016-05-30 01:38:43 -07:00
Girish Ramakrishnan
9e36b7abf4 load addon vars for existing infra case 2016-05-30 01:06:41 -07:00
Girish Ramakrishnan
b37226d4d1 fix ui issues 2016-05-30 00:07:58 -07:00
Girish Ramakrishnan
311efe5d10 test: add test for getting aliases 2016-05-29 23:23:03 -07:00
Girish Ramakrishnan
ebdd6d8a31 add missing require 2016-05-29 23:15:55 -07:00
Girish Ramakrishnan
3ee9f70113 return alias info in mailbox response 2016-05-29 23:14:24 -07:00
Girish Ramakrishnan
adfc069e16 allow user alias to be set for custom domains 2016-05-29 23:02:01 -07:00
Girish Ramakrishnan
31fd0d711a add setAliases 2016-05-29 22:45:48 -07:00
Girish Ramakrishnan
a6a852cfae remove bogus debug 2016-05-29 22:01:21 -07:00
Girish Ramakrishnan
e9b3e22e86 check version of existing infra 2016-05-29 21:58:04 -07:00
Girish Ramakrishnan
564d61bcf5 fix typo 2016-05-29 21:31:49 -07:00
Girish Ramakrishnan
5582ac7402 add some debugs 2016-05-29 21:28:55 -07:00
Girish Ramakrishnan
a05b6ad78d delete mailbox on user delete 2016-05-29 21:02:51 -07:00
Girish Ramakrishnan
ec71390d0b autocreate mailbox when username is available 2016-05-29 19:14:01 -07:00
Girish Ramakrishnan
68a3862ee5 add create and remove mailbox 2016-05-29 18:56:40 -07:00
Girish Ramakrishnan
a9f70d8363 add mailbox search endpoint 2016-05-29 18:24:54 -07:00
Girish Ramakrishnan
e91539d79a add a todo 2016-05-29 18:08:16 -07:00
Girish Ramakrishnan
5546bfbf0e add mailbox ldap auth point 2016-05-29 17:25:23 -07:00
Girish Ramakrishnan
803d47b426 refactor authenticate path into a middleware 2016-05-29 17:16:52 -07:00
Girish Ramakrishnan
e4c0192243 rename to appUserBind since it is tailored for apps 2016-05-29 17:07:48 -07:00
Girish Ramakrishnan
d5b5289e0c Add mailbox importer for existing users and apps
this should prevent conflicts of mailboxes from the get-go.
2016-05-28 02:07:43 -07:00
Girish Ramakrishnan
2909aad72a use async.series 2016-05-28 01:59:48 -07:00
Girish Ramakrishnan
cafbb31e78 push aliases to mail container on startup 2016-05-28 01:53:25 -07:00
Girish Ramakrishnan
080128539c set/unset aliases on the mail container 2016-05-28 01:33:20 -07:00
Girish Ramakrishnan
cf93a99a4e add a note about mailboxes 2016-05-27 22:28:56 -07:00
Girish Ramakrishnan
ce927bfa22 alias
also remove id since it's not useful for mailbox case (not like
mailbox can be renamed and we need a fixed it)
2016-05-27 22:20:08 -07:00
Girish Ramakrishnan
6993a9c7e7 add more mailbox route test 2016-05-27 18:23:14 -07:00
Girish Ramakrishnan
84d04cce16 initial mailboxes route 2016-05-27 18:17:57 -07:00
Girish Ramakrishnan
f735fd8172 add mailboxes tests 2016-05-27 17:43:25 -07:00
Girish Ramakrishnan
53e28db1d6 add note on accessRestriction 2016-05-27 11:10:36 -07:00
Girish Ramakrishnan
77457d1ea9 initial mailbox db and model code 2016-05-27 10:36:47 -07:00
Girish Ramakrishnan
161b7cf76b add mailboxes table 2016-05-26 21:08:20 -07:00
Girish Ramakrishnan
01b6defd24 mount mail container /run into data 2016-05-26 15:18:10 -07:00
Girish Ramakrishnan
badc524ff2 '-' has special meaning haraka
so do '.app' instead
2016-05-26 10:58:30 -07:00
Girish Ramakrishnan
b3f53099f0 allow only alpha numerals in username 2016-05-25 21:36:20 -07:00
Girish Ramakrishnan
a28560cdc0 0.14.2 changes 2016-05-24 20:17:20 -07:00
Girish Ramakrishnan
4afdf50736 finally finally finally the tests are working 2016-05-24 20:04:37 -07:00
Girish Ramakrishnan
078e36f07f turns out we cannot use sudo since it asks for password 2016-05-24 19:59:47 -07:00
Girish Ramakrishnan
3b8e15a61c check for node in path 2016-05-24 18:32:15 -07:00
Girish Ramakrishnan
67682c5d27 check for test image 2016-05-24 17:44:19 -07:00
Girish Ramakrishnan
48e3b8ebf9 provide a dummy config for tests 2016-05-24 17:36:54 -07:00
Girish Ramakrishnan
2072dedf66 bump mail addon version 2016-05-24 16:46:54 -07:00
Girish Ramakrishnan
51f43ecc27 use infra_version.js in checkInstall 2016-05-24 16:46:27 -07:00
Girish Ramakrishnan
2347a7ced2 admin email is a platform property 2016-05-24 16:36:56 -07:00
Girish Ramakrishnan
b2cadaf95c load vars files after the platform is created 2016-05-24 16:28:59 -07:00
Girish Ramakrishnan
957f787701 setup mail addon root credentials 2016-05-24 16:18:21 -07:00
Girish Ramakrishnan
ad48067bb2 setup_infra now uses infra_version.js
INFRA_VERSION is now removed. Note that DATA_DIR/INFRA_VERSION
still exists.
2016-05-24 16:16:03 -07:00
Girish Ramakrishnan
12b6c46558 use infra_version.js in splashpage 2016-05-24 13:31:45 -07:00
Girish Ramakrishnan
b4ba17c599 use the constant 2016-05-24 13:23:41 -07:00
Girish Ramakrishnan
7fb28662c1 remove old images in platform.js 2016-05-24 13:23:41 -07:00
Girish Ramakrishnan
4845db538a use infra_version.js in platform.js 2016-05-24 13:23:41 -07:00
Girish Ramakrishnan
8429985253 use infra_version.js in addons.js 2016-05-24 13:23:41 -07:00
Girish Ramakrishnan
aff9ff47bc use infra_version.js in baseimage script 2016-05-24 13:23:38 -07:00
Girish Ramakrishnan
9b3077eca3 add infra_version.js 2016-05-24 13:02:38 -07:00
Girish Ramakrishnan
39396cb3ab call callback if provided 2016-05-24 11:39:05 -07:00
Girish Ramakrishnan
364f0ead51 debug out the cmd 2016-05-24 11:26:11 -07:00
Girish Ramakrishnan
5ac1d5575c platform.js: minor refactor 2016-05-24 10:58:18 -07:00
Girish Ramakrishnan
e5a030baff move platform cleanup bits to javascript 2016-05-24 10:52:55 -07:00
Girish Ramakrishnan
a100837e69 Add helpers to restore/reconfigure all apps 2016-05-24 10:44:45 -07:00
Girish Ramakrishnan
ffacf17a42 add paths.INFRA_VERSION_FILE 2016-05-24 10:26:08 -07:00
Girish Ramakrishnan
f5d37b6443 add ini module 2016-05-24 10:25:33 -07:00
Girish Ramakrishnan
d71d09c1ba Add shell.execSync 2016-05-24 10:22:39 -07:00
Girish Ramakrishnan
c1a2444dfa move container creation to platform.js 2016-05-24 09:40:26 -07:00
Girish Ramakrishnan
ef40aae3ba set adminEmail to no-reply@localhost for tests 2016-05-24 00:54:38 -07:00
Girish Ramakrishnan
9570086c87 add config.smtpPort 2016-05-24 00:53:42 -07:00
Girish Ramakrishnan
57a823a698 make tests work 2016-05-24 00:44:01 -07:00
Girish Ramakrishnan
ec0ee07b17 test: email works now 2016-05-23 23:17:38 -07:00
Girish Ramakrishnan
3d7545133e wait 30 secs in the beginning 2016-05-23 23:16:02 -07:00
Girish Ramakrishnan
bcc752469a remove containers after the test 2016-05-23 22:47:40 -07:00
Girish Ramakrishnan
da85f4c096 stop ldap server in test 2016-05-23 21:59:06 -07:00
Girish Ramakrishnan
3b740a5651 make tests work 2016-05-23 20:41:00 -07:00
Girish Ramakrishnan
7eb202f19a test: use the test-app instead of duplicating the checks in the tests 2016-05-23 20:17:11 -07:00
Girish Ramakrishnan
8dbd4c8527 use 1024 bit keys
Stacked error: error:04075070:rsa routines:RSA_sign:digest too big for rsa key
2016-05-23 19:31:57 -07:00
Girish Ramakrishnan
88f2ce554d bump to mail 0.13.1 with the auth fix 2016-05-23 18:57:59 -07:00
Girish Ramakrishnan
57888659a6 Update test app version 2016-05-23 18:31:12 -07:00
Girish Ramakrishnan
ebdefa7f18 test: oauth addon 2016-05-23 17:34:25 -07:00
Girish Ramakrishnan
569150f602 tests: create a self-signed cert 2016-05-23 16:40:18 -07:00
Girish Ramakrishnan
6ccb806628 make apps-test pass 2016-05-23 16:31:02 -07:00
Girish Ramakrishnan
ae807b28b6 test: let server start the infra
otherwise, deps like dkim keys need to be setup in tests as well
2016-05-23 15:53:51 -07:00
Girish Ramakrishnan
00726b01e2 pass -no-run-if-empty instead 2016-05-23 15:50:36 -07:00
Girish Ramakrishnan
f5b777ab33 add route tests for username 2016-05-23 15:00:21 -07:00
Girish Ramakrishnan
d84e584222 add some username tests 2016-05-23 14:56:09 -07:00
Girish Ramakrishnan
31e452e1cc test: mixed case reserved name 2016-05-23 14:52:29 -07:00
Girish Ramakrishnan
e015b9bd7a 0.14.1 changes 2016-05-23 12:29:49 -07:00
Girish Ramakrishnan
10e0cbcebc do not set allowHalfOpen (otherwise we have to end socket ourself) 2016-05-23 10:50:04 -07:00
Girish Ramakrishnan
2768c3a336 acme: configure prod based on caas or acme 2016-05-23 09:48:17 -07:00
Girish Ramakrishnan
37512c4cac Wrap the stdin stream to indicate EOF
The docker exec protocol supports half-closing to signal that the stdin
is finished. The CLI tool tried to do this by closing it's half of the
socket when the stdin finished. Unfortunately, this does not work because
nginx immediately terminates a half-close :/ Node itself has no problem.

http://mailman.nginx.org/pipermail/nginx/2008-September/007388.html
seems to support the hypothesis. Basically, for HTTP and websockets
there is no notion of half-close.

Websocket protocol itself has no half-close as well:
http://www.lenholgate.com/blog/2011/07/websockets---i-miss-the-tcp-half-close.html
http://doc.akka.io/docs/akka/2.4.5/scala/http/client-side/websocket-support.html

The fix is to implement our own protocol that wrap stdin. We put a length
header for every payload. When we hit EOF, the length is set to 0. The server
sees this 0 length header and closes the exec container socket.
2016-05-22 22:27:49 -07:00
Girish Ramakrishnan
0aaaa866e4 Add a whole bunch of magic for docker.exec to work 2016-05-22 00:27:32 -07:00
Girish Ramakrishnan
53cb7fe687 debug out cmd 2016-05-19 15:54:35 -07:00
Girish Ramakrishnan
da42f2f00c fix boolean logic 2016-05-19 15:54:35 -07:00
Girish Ramakrishnan
27d2daae93 leave a note in nginx config 2016-05-19 12:27:54 -07:00
Girish Ramakrishnan
42cc8249f8 reserve usernames with -app in them 2016-05-18 21:45:02 -07:00
Girish Ramakrishnan
de055492ef set username restriction to 2 chars 2016-05-18 11:05:45 -07:00
Girish Ramakrishnan
efa3ccaffe fix crash because of missing error handling 2016-05-18 10:00:32 -07:00
Girish Ramakrishnan
32e238818a make script more robust 2016-05-17 18:16:18 -07:00
Girish Ramakrishnan
2c1083d58b log error if the curl parsing fails 2016-05-17 17:15:10 -07:00
Girish Ramakrishnan
517b967fe9 enable sieve 2016-05-17 14:04:57 -07:00
Girish Ramakrishnan
3c4ca8e9c8 reserve more usernames 2016-05-17 12:47:10 -07:00
Girish Ramakrishnan
4ec043836b 0.14.0 changes 2016-05-17 09:36:28 -07:00
Girish Ramakrishnan
7ec93b733b setup restore paths for recvmail and email addon 2016-05-17 09:27:59 -07:00
Girish Ramakrishnan
a81262afb5 remove unused var 2016-05-17 08:47:57 -07:00
Girish Ramakrishnan
266603bb19 Do not barf on rmi 2016-05-16 16:56:17 -07:00
Girish Ramakrishnan
6dcecaaf55 log the ldap source 2016-05-16 14:31:57 -07:00
Girish Ramakrishnan
099eb2bca4 use port 2525 2016-05-16 12:52:36 -07:00
Girish Ramakrishnan
b92ed8d079 cn can also be the cloudron email
cn can be:
1. username
2. username@fqdn
3. user@personalemail.com
2016-05-16 12:21:15 -07:00
Girish Ramakrishnan
0838ce4ef8 fix casing 2016-05-16 12:13:23 -07:00
Girish Ramakrishnan
cc8767274a Bind 587 with 2525 as well
MSA (587) and MTA (25) are the same protocol. Only difference is
that 587 does relaying with AUTH. Haraka has been configured to
make this distinction.
2016-05-16 08:32:30 -07:00
Girish Ramakrishnan
dfaed79e31 fix mail container name 2016-05-16 08:18:33 -07:00
Girish Ramakrishnan
9dc1a95992 SENDIMAGE -> IMAGE 2016-05-15 21:51:04 -07:00
Girish Ramakrishnan
5be05529c2 remove unused ldap ou 2016-05-15 21:25:56 -07:00
Girish Ramakrishnan
6ff7786f04 use the send addon service api 2016-05-15 21:23:44 -07:00
Girish Ramakrishnan
a833b65ef3 add mail container link once 2016-05-15 21:18:43 -07:00
Girish Ramakrishnan
83a252bd20 there is only mail container now 2016-05-15 21:15:53 -07:00
Girish Ramakrishnan
7ef3805dbc docker data in test dir requires sudo 2016-05-13 22:38:36 -07:00
Girish Ramakrishnan
e5d906a065 create fake cert/key for tests to pass 2016-05-13 22:35:13 -07:00
Girish Ramakrishnan
b5e4e9fed6 bump postgresql 2016-05-13 22:13:58 -07:00
Girish Ramakrishnan
3ccb72f891 tests finally work 2016-05-13 22:05:05 -07:00
Girish Ramakrishnan
45cd4ba349 fix name 2016-05-13 22:03:40 -07:00
Girish Ramakrishnan
5b9b21c469 create recvmail link 2016-05-13 22:03:34 -07:00
Girish Ramakrishnan
ed55ad1c6f change image name 2016-05-13 21:34:04 -07:00
Girish Ramakrishnan
560f460a32 rename to sendmail 2016-05-13 20:48:31 -07:00
Girish Ramakrishnan
aa116ce58c fix tests 2016-05-13 20:21:09 -07:00
Girish Ramakrishnan
3f0e2024e4 pass db name and password for tests 2016-05-13 19:35:20 -07:00
Girish Ramakrishnan
d9c5b2b642 setup and teardown recvmail addon 2016-05-13 18:58:48 -07:00
Girish Ramakrishnan
5322ed054d reserve 4190 for sieve 2016-05-13 18:48:05 -07:00
Girish Ramakrishnan
39c4954371 remove isIncomingMailEnabled. always enable for now
also, custom domain === we will take over domain completely (setup
mx and all)
2016-05-13 18:44:08 -07:00
Girish Ramakrishnan
78ad49bd74 hack for settings test 2016-05-13 18:27:00 -07:00
Girish Ramakrishnan
f56c960b92 use latest manifestformat (for recvmail, email) 2016-05-13 17:59:11 -07:00
Girish Ramakrishnan
8e077660c4 start_addons is redundant 2016-05-13 17:57:56 -07:00
Girish Ramakrishnan
1b8b4900a2 parametrize data_dir for tests 2016-05-13 17:57:56 -07:00
Girish Ramakrishnan
27ddcb9758 use the internal hostnames for email addon
The public ones are for the user to configure their MUA. This
things can have ssl disabled safely as well.
2016-05-13 08:28:13 -07:00
Girish Ramakrishnan
fdb951c9e5 set MAIL_DOMAIN in email addon as well 2016-05-12 23:34:35 -07:00
Girish Ramakrishnan
0f2037513b remove recvmail bind 2016-05-12 21:48:42 -07:00
Girish Ramakrishnan
9da4e038bd all lower case 2016-05-12 18:54:13 -07:00
Girish Ramakrishnan
ae3e0177bb make script more robust 2016-05-12 18:16:26 -07:00
Girish Ramakrishnan
0751974624 Add a hack to test addon patching 2016-05-12 16:41:58 -07:00
Girish Ramakrishnan
b8242c82d6 create bind point for recvmail 2016-05-12 14:33:02 -07:00
Girish Ramakrishnan
442c02fa1b set mailAlternateAddress to username@fqdn
This is mostly to keep haraka's rcpt_to.ldap happy. That plugin
could do with some love.
2016-05-12 14:32:15 -07:00
Girish Ramakrishnan
d5306052bb refactor code for readability 2016-05-12 13:36:53 -07:00
Girish Ramakrishnan
8543dbe3be create a new ou for addons 2016-05-12 13:20:57 -07:00
Girish Ramakrishnan
bf42b735d1 fix the smtp port 2016-05-12 09:11:29 -07:00
Girish Ramakrishnan
a2ba3989d0 use manifestformat 2.4.0 2016-05-12 08:57:12 -07:00
Girish Ramakrishnan
6f36d79358 implement email addon 2016-05-12 08:54:59 -07:00
Girish Ramakrishnan
1da24564b3 reserve postman subdomain 2016-05-11 15:04:22 -07:00
Girish Ramakrishnan
da61d5c0f1 add ou=recvmail for dovecot 2016-05-11 14:26:34 -07:00
Girish Ramakrishnan
79da7b31c7 use latest base image 2016-05-11 13:14:11 -07:00
Girish Ramakrishnan
631b238b63 use MAIL_LOCATION for mx record 2016-05-11 09:59:12 -07:00
Girish Ramakrishnan
ff5ca617b1 use ADMIN_LOCATION 2016-05-11 09:58:31 -07:00
Girish Ramakrishnan
e16125c67e set MAIL_DOMAIN and MAIL_SERVER_NAME 2016-05-11 09:49:20 -07:00
Girish Ramakrishnan
646ba096c3 start recvmail addon in setup_infra 2016-05-11 08:55:51 -07:00
Girish Ramakrishnan
8be3b4c281 add mx records 2016-05-11 08:50:33 -07:00
Girish Ramakrishnan
5afff5eecc open 25 (inbound smtp) and 587 (inbound submission) 2016-05-11 08:48:50 -07:00
Girish Ramakrishnan
84206738e1 open port 993 (imap) 2016-05-11 08:47:59 -07:00
Girish Ramakrishnan
8b2e4ce700 do another infra bump for existing cloudrons 2016-05-10 16:53:13 -07:00
Girish Ramakrishnan
776f184dbc wait randomly instead 2016-05-10 16:51:20 -07:00
Girish Ramakrishnan
a54466f8c2 Fix apptask error because of multiple collectd restarts
Everyone gets in a rush to restart collectd and apptask update/restore
fails during infra updates
2016-05-10 09:52:55 -07:00
Girish Ramakrishnan
f36641b443 better error message 2016-05-10 09:50:57 -07:00
Girish Ramakrishnan
36eb107b83 0.13.4 changes 2016-05-10 09:16:16 -07:00
Girish Ramakrishnan
fa16ae9a0c Use mail container 0.12.0 that contains the restart fix 2016-05-10 09:05:06 -07:00
Girish Ramakrishnan
517b36b3f0 fix typo 2016-05-09 23:58:35 -07:00
Girish Ramakrishnan
83a28afc8f addons are started by box code now 2016-05-09 23:56:02 -07:00
Girish Ramakrishnan
e76c7de259 bump test app version 2016-05-09 23:40:59 -07:00
Girish Ramakrishnan
fcda4a771c play around with some text 2016-05-09 18:47:11 -07:00
Girish Ramakrishnan
76d8f16e22 0.13.3 changes 2016-05-08 01:17:03 -07:00
Girish Ramakrishnan
1b3cd1f373 remove tls since server does not offer it anymore 2016-05-08 01:15:24 -07:00
Girish Ramakrishnan
62b020e96d add note 2016-05-07 02:34:52 -07:00
Girish Ramakrishnan
bc78f4a6d8 fix user to match adminEmail 2016-05-07 01:32:14 -07:00
Girish Ramakrishnan
a8e458e935 Load certs into etc 2016-05-06 21:46:22 -07:00
Johannes Zellner
e4747ef50c Rework the tutorial 2016-05-06 21:32:34 +02:00
Johannes Zellner
0d6637de27 Avoid circular dependencies with apps and certificates 2016-05-06 18:44:37 +02:00
Johannes Zellner
28e513a434 Fix eventlog tests 2016-05-06 18:05:28 +02:00
Girish Ramakrishnan
e73174685b add note on settings route 2016-05-06 08:42:27 -07:00
Johannes Zellner
3af95508f5 eventlog getAllPaged is now getByQueryPaged 2016-05-06 17:27:52 +02:00
Johannes Zellner
4fa8ab596b Show busy state in eventlogs 2016-05-06 17:23:39 +02:00
Johannes Zellner
54c9bb7409 Add filter bar for event log view 2016-05-06 17:18:47 +02:00
Johannes Zellner
4c7dc5056d Add more query options for eventlog api 2016-05-06 16:49:17 +02:00
Johannes Zellner
e986a67d39 Fixup all the unit tests 2016-05-06 15:16:22 +02:00
Johannes Zellner
da8de173a6 Remove appdb.getBySubdomain() 2016-05-06 14:52:33 +02:00
Johannes Zellner
cbc906f8d1 Remove apps.getBySubdomain() 2016-05-06 14:52:06 +02:00
Johannes Zellner
c7958f8e1d Remove unused /api/v1/subdomains/:subdomain 2016-05-06 14:51:02 +02:00
Johannes Zellner
b88ee8143a Rename welcome -> tutorial 2016-05-06 14:41:20 +02:00
Johannes Zellner
e413f7ba9b Handle tutorial walkthrough 2016-05-06 14:38:17 +02:00
Johannes Zellner
7e1055ae44 Show tutorial for admins 2016-05-06 14:23:21 +02:00
Johannes Zellner
c61ce40362 Add /api/v1/profile/tutorial route tests 2016-05-06 14:06:54 +02:00
Johannes Zellner
e48156dceb postprocess showTutorial to ensure we deal with a boolean 2016-05-06 14:05:47 +02:00
Johannes Zellner
f3811e3df9 Remove all unused vars in profile test 2016-05-06 14:03:24 +02:00
Johannes Zellner
0d40b1b80d Fix the test wording in profile password change tests 2016-05-06 14:02:21 +02:00
Johannes Zellner
8b92c8f7ae Remove unused checkMails() in profile tests 2016-05-06 13:57:46 +02:00
Johannes Zellner
d41eb81b3d Add new profile/ route to set the showTutorial field 2016-05-06 13:56:40 +02:00
Johannes Zellner
3adf91afed Add setShowTutorial() api to users.js 2016-05-06 13:56:26 +02:00
Johannes Zellner
18f05de8ae use users.showTutorial field in userdb 2016-05-06 13:56:05 +02:00
Johannes Zellner
b0f4396389 Add showTutorial field to users table 2016-05-06 13:55:03 +02:00
Johannes Zellner
bf99475dbd Introduce basic welcome tutorial flow 2016-05-06 13:06:12 +02:00
Girish Ramakrishnan
d50fa70f47 pass -out 2016-05-05 21:26:13 -07:00
Girish Ramakrishnan
0e655cadb0 generate dkim keys before dns setup
Two things require DKIM keys
1. the mail addon
2. the DNS TXT record
2016-05-05 21:15:10 -07:00
Girish Ramakrishnan
496e1c3dc1 fix path to INFRA_VERSION 2016-05-05 18:37:17 -07:00
Girish Ramakrishnan
325252699e set MAIL_FROM more smartly 2016-05-05 18:33:22 -07:00
Girish Ramakrishnan
2d43e22285 fix typo 2016-05-05 15:26:32 -07:00
Girish Ramakrishnan
9e673c3890 supply a bogus username/password 2016-05-05 15:24:52 -07:00
Girish Ramakrishnan
c3c18e8a4b reserve more ports 2016-05-05 15:00:07 -07:00
Girish Ramakrishnan
cb1bd58cb9 do not export submission port just yet 2016-05-05 14:53:07 -07:00
Girish Ramakrishnan
0bdff14c9f r -> ro 2016-05-05 13:54:57 -07:00
Girish Ramakrishnan
c4ae9526af look for fallback cert in nginx cert dir 2016-05-05 13:52:08 -07:00
Girish Ramakrishnan
8d79ac9ae0 provide tls cert and key to mail server
haraka requires tls certs for:
1. supporting AUTH
2. port 587 support (MSA)

currently, we just reuse the cert for the admin domain. Otherwise,
we have to setup dns etc to get a new cert. While doable, its' not
necessary right now.
2016-05-05 13:18:17 -07:00
Girish Ramakrishnan
7d4ed5bafc Revert "x"
This reverts commit a1554b9cc1642037e9fbd0d261722c908f499aab.

committed by mistake
2016-05-05 12:57:04 -07:00
Johannes Zellner
85db8f398b Ensure we require an admin for settings routes
The cloudron name and avatar already have public routes.
2016-05-05 12:48:21 +02:00
Girish Ramakrishnan
636b71ce6f Add MAIL_FROM env 2016-05-05 00:28:08 -07:00
Girish Ramakrishnan
b46008f0b1 add sendmail ou bind
this will be used by haraka to authenticate the apps
2016-05-05 00:26:43 -07:00
Girish Ramakrishnan
9d9bd42cd2 x 2016-05-05 00:09:16 -07:00
Girish Ramakrishnan
0f6a2a42f2 use latest mysql image 2016-05-04 23:09:30 -07:00
Girish Ramakrishnan
fc8bf82993 Add getters for fallback and admin cert 2016-05-04 17:37:21 -07:00
Girish Ramakrishnan
e56192913d reserved smtp and imap locations 2016-05-04 15:54:21 -07:00
Girish Ramakrishnan
2d08ce441f rename arg_fqdn to fqdn 2016-05-04 15:54:21 -07:00
Girish Ramakrishnan
87497c2047 pass fqdn as arg 2016-05-04 15:54:21 -07:00
Girish Ramakrishnan
32a0bf6fd2 add --check arg to setup_infra.sh 2016-05-04 15:54:21 -07:00
Girish Ramakrishnan
291e625785 skip infra setup for tests (the test does it itself) 2016-05-04 15:54:21 -07:00
Girish Ramakrishnan
6bcfd33e10 boot2docker is dead 2016-05-04 15:54:21 -07:00
Girish Ramakrishnan
b4c15b1719 Let the box code initialize the infrastructure
This is done because:
1. The box code can install certs for addons (like mail addon) when
   required.

2. The box code initialize/teardown addons on demand. This is not planned
   currently.
2016-05-04 15:54:21 -07:00
Girish Ramakrishnan
920626192c fix error message 2016-05-04 09:28:50 -07:00
Johannes Zellner
778371b818 Only send out mails if the admin group has changed 2016-05-04 13:55:14 +02:00
Girish Ramakrishnan
d2a1cea1e8 0.13.2 changes 2016-05-03 23:48:45 -07:00
Girish Ramakrishnan
5683cefe89 provide auditSource when autoupdating app 2016-05-03 23:36:27 -07:00
Girish Ramakrishnan
126d64ffa8 move backup event in backupBoxAndApps
the updater uses this code route
2016-05-03 18:36:52 -07:00
Girish Ramakrishnan
7262eb208f add route to get the timezone 2016-05-03 12:10:21 -07:00
Girish Ramakrishnan
f57f8f5e58 fix typo 2016-05-03 12:09:58 -07:00
Girish Ramakrishnan
00ad1308aa handle empty time_zone 2016-05-03 12:09:22 -07:00
Girish Ramakrishnan
2cc37a9c31 0.13.1 changes 2016-05-03 11:50:52 -07:00
Girish Ramakrishnan
13b0093f20 telize has been discontinued. use freegeoip 2016-05-03 11:50:31 -07:00
Girish Ramakrishnan
5617baea50 eventlog tests 2016-05-02 14:54:25 -07:00
Girish Ramakrishnan
da79e4f229 only admin can view activity logs 2016-05-02 14:54:20 -07:00
Girish Ramakrishnan
6c1bd522e6 add pagination 2016-05-02 11:50:15 -07:00
Girish Ramakrishnan
7fca9decc1 fixes to eventlog 2016-05-02 11:07:55 -07:00
Girish Ramakrishnan
7cf08b6a4d add start event
this signals that an update worked
2016-05-02 10:01:23 -07:00
Girish Ramakrishnan
ffedbdfa13 various minor fixes to eventlog 2016-05-02 10:01:23 -07:00
Johannes Zellner
43e207a301 Merge branch 'v0.12.7-hotfix' 2016-05-02 17:34:56 +02:00
Johannes Zellner
bea6019dc4 Changes for 0.12.7 2016-05-02 14:20:59 +02:00
Johannes Zellner
9042e9e1a9 Fix usage of the password change route in webadmin 2016-05-02 14:14:44 +02:00
Johannes Zellner
b855dee4cb Fix crash by providing required eventsource 2016-05-02 13:43:12 +02:00
Girish Ramakrishnan
b322f6805f move authType into source 2016-05-01 21:53:44 -07:00
Girish Ramakrishnan
ccc119ddec add appLocation to user login 2016-05-01 21:47:35 -07:00
Girish Ramakrishnan
994cbaa22a add event log in model code 2016-05-01 21:38:20 -07:00
Girish Ramakrishnan
d7a34bbf68 remove profile action 2016-05-01 20:14:21 -07:00
Girish Ramakrishnan
1f31fe6f8f make user.remove and user.update add eventlog 2016-05-01 20:11:11 -07:00
Girish Ramakrishnan
37bdd2672b make user.create take auditSource 2016-05-01 20:01:34 -07:00
Girish Ramakrishnan
63702f836a move developer eventlogs to model code 2016-05-01 13:46:33 -07:00
Girish Ramakrishnan
5898428a6c use req.connection.remoteAddress 2016-05-01 13:29:11 -07:00
Girish Ramakrishnan
f4a6c64956 make cloudron.activate take an auditSource 2016-05-01 13:27:57 -07:00
Girish Ramakrishnan
f9d4d3014d remove reboot (user cannot initiate anyway) 2016-05-01 13:23:31 -07:00
Girish Ramakrishnan
8254337552 make cloudron.updateToLatest take an auditSource 2016-05-01 13:17:35 -07:00
Girish Ramakrishnan
d811115f21 update schema.sql 2016-05-01 13:17:27 -07:00
Girish Ramakrishnan
fec388b648 move backup eventlog to model 2016-05-01 13:17:23 -07:00
Girish Ramakrishnan
a969e323a6 what if cron was a username 2016-05-01 11:48:29 -07:00
Girish Ramakrishnan
09584ac29c fix failing test 2016-04-30 23:26:45 -07:00
Girish Ramakrishnan
7967610f3f add user login to event log 2016-04-30 23:18:14 -07:00
Girish Ramakrishnan
727332fe66 save the userId as well 2016-04-30 23:04:54 -07:00
Girish Ramakrishnan
09595d1c43 make tests pass 2016-04-30 22:35:46 -07:00
Girish Ramakrishnan
c4ad6c803f add certificate renew event 2016-04-30 22:27:33 -07:00
Girish Ramakrishnan
fd1a00d280 better text for action 2016-04-30 20:25:20 -07:00
Girish Ramakrishnan
5c2a650681 add activity view 2016-04-30 20:25:20 -07:00
Girish Ramakrishnan
43051cea3b add app update event 2016-04-30 20:25:20 -07:00
Girish Ramakrishnan
3d50a251ee store email in USER_ADD event 2016-04-30 20:25:20 -07:00
Girish Ramakrishnan
219df8babd pick up correct ip 2016-04-30 19:08:24 -07:00
Girish Ramakrishnan
d3d9706a70 make response plural 2016-04-30 18:57:43 -07:00
Girish Ramakrishnan
8a3ad6c964 store the activation username 2016-04-30 14:32:35 -07:00
Girish Ramakrishnan
90719cd4d9 do not store entire manifest 2016-04-30 14:28:59 -07:00
Girish Ramakrishnan
30445ddab9 more changes 2016-04-30 14:14:02 -07:00
Girish Ramakrishnan
157fbc89b8 add eventlog route 2016-04-30 14:08:44 -07:00
Girish Ramakrishnan
71219c6af7 add eventlog hooks 2016-04-30 14:05:19 -07:00
Girish Ramakrishnan
934abafbd4 make actions seem like commands 2016-04-30 13:34:06 -07:00
Girish Ramakrishnan
bc6e896507 add eventlog test 2016-04-30 13:02:57 -07:00
Girish Ramakrishnan
ca8731c282 add source to events table 2016-04-30 12:56:23 -07:00
Girish Ramakrishnan
c511019d79 remove jslint hint 2016-04-30 11:53:46 -07:00
Girish Ramakrishnan
992c4ee847 add some event enums 2016-04-30 11:49:51 -07:00
Girish Ramakrishnan
8c427553ba add eventlogdb tests 2016-04-30 10:16:27 -07:00
Girish Ramakrishnan
c1df22f079 use JSON type (nice for querying) 2016-04-30 10:15:33 -07:00
Girish Ramakrishnan
7673ecde2f Add eventlog model file 2016-04-29 23:58:29 -07:00
Girish Ramakrishnan
a9d0cf66fd Add eventlogdb 2016-04-29 23:58:24 -07:00
Girish Ramakrishnan
db89784af8 add eventlog table 2016-04-29 23:58:20 -07:00
Girish Ramakrishnan
4143f903ad 0.13.0 changes 2016-04-29 20:50:55 -07:00
Girish Ramakrishnan
12820db4a5 fix typo in mysql config 2016-04-29 20:20:52 -07:00
Girish Ramakrishnan
8837cc5a3c update nginx version 2016-04-29 19:38:06 -07:00
Girish Ramakrishnan
f2545e3def bump systemd to 229 2016-04-29 19:18:31 -07:00
Girish Ramakrishnan
7a72bf3f78 select mysql 5.7 2016-04-29 19:12:20 -07:00
Girish Ramakrishnan
87351f04ef use 16.04
among other things this will bump the mysql version bringing us
json type
2016-04-29 19:11:00 -07:00
Girish Ramakrishnan
4a04e0b52f use recommendation from raymii.org 2016-04-28 09:59:03 -07:00
Girish Ramakrishnan
5945bce00e add misssing arg 2016-04-26 16:21:26 -07:00
Girish Ramakrishnan
d2a3925e04 add altDomain to install route 2016-04-26 14:45:58 -07:00
Girish Ramakrishnan
9c9f82e2c5 fix usage of waitForDns 2016-04-26 11:09:14 -07:00
Girish Ramakrishnan
8fd3ff0ccc 0.12.6 changes 2016-04-26 09:53:33 -07:00
Girish Ramakrishnan
dec2fdb6bb merge altDomain into location field 2016-04-25 21:22:09 -07:00
Girish Ramakrishnan
c581d2a52c stash altDomain in oldConfig 2016-04-25 21:22:08 -07:00
Girish Ramakrishnan
e6e748e30d fix cname answer 2016-04-25 16:16:14 -07:00
Girish Ramakrishnan
36fddacf5c add more debugs 2016-04-25 16:06:50 -07:00
Girish Ramakrishnan
183c1608a6 it is fine for one or more ns to be dead 2016-04-25 15:58:42 -07:00
Girish Ramakrishnan
51c8f65e8d wait for altDomain on install as well
restore calls install when there is no lastBackupId
2016-04-25 10:52:12 -07:00
Girish Ramakrishnan
0da6e9a5b9 fix casing 2016-04-25 10:52:12 -07:00
Girish Ramakrishnan
31c7a17684 Infinity does not work 2016-04-25 10:52:12 -07:00
Girish Ramakrishnan
a1e2cd438e return altDomain in response 2016-04-25 10:52:12 -07:00
Girish Ramakrishnan
6b0e00e28b use app.fqdn 2016-04-25 10:52:12 -07:00
Girish Ramakrishnan
19948851e0 return altDomain as the app.fqdn if present 2016-04-25 10:52:12 -07:00
Girish Ramakrishnan
bfe4f75881 display altDomain as the title of the app 2016-04-25 10:52:12 -07:00
Girish Ramakrishnan
7f13594f01 fix two typos 2016-04-25 10:52:12 -07:00
Girish Ramakrishnan
4fafac035e remove options in waitForDns 2016-04-25 10:52:12 -07:00
Girish Ramakrishnan
ca41e6acfd remove attempt module 2016-04-25 10:52:12 -07:00
Girish Ramakrishnan
9893dd6640 make waitfordns get the zone itself 2016-04-25 10:52:12 -07:00
Girish Ramakrishnan
8f7e4c2053 Make waitForDns wait for cname 2016-04-25 10:52:12 -07:00
Girish Ramakrishnan
d037b13401 wait for alt domain dns 2016-04-25 10:52:12 -07:00
Girish Ramakrishnan
83c955d25b add a label for alt domain 2016-04-25 10:52:12 -07:00
Girish Ramakrishnan
0bb6d969a4 inject altDomain in the APP_ORIGIN and APP_DOMAIN env vars 2016-04-25 10:52:12 -07:00
Girish Ramakrishnan
6062a5bdd2 move exports to top because sysinfo backend source the error class 2016-04-25 10:52:12 -07:00
Girish Ramakrishnan
70ab492efa remove jslint header 2016-04-25 10:52:12 -07:00
Girish Ramakrishnan
aab035f7b9 use the acme backend when using altDomain 2016-04-25 10:52:12 -07:00
Girish Ramakrishnan
0e825272ae ensureCertificate now takes app object 2016-04-25 10:52:12 -07:00
Girish Ramakrishnan
46fee9e431 use config.adminFqdn instead 2016-04-25 10:52:12 -07:00
Girish Ramakrishnan
0789c96992 altDomain ui 2016-04-25 10:52:12 -07:00
Girish Ramakrishnan
a4adc581fa make nginx.configure/unconfigure use altDomain 2016-04-25 10:52:12 -07:00
Girish Ramakrishnan
500fb452e7 use altDomain when present to configure certs and nginx 2016-04-25 10:52:12 -07:00
Girish Ramakrishnan
e11b762ea1 use vhost instead 2016-04-25 10:52:12 -07:00
Girish Ramakrishnan
f5d1726352 remove jslint header 2016-04-25 10:52:12 -07:00
Girish Ramakrishnan
3d5aa9fd23 pass altDomain in configure route 2016-04-25 10:52:12 -07:00
Girish Ramakrishnan
ef12740060 add altDomain to appdb fields 2016-04-25 10:52:12 -07:00
Girish Ramakrishnan
415902d68e add altDomain to apps table 2016-04-25 10:52:12 -07:00
Girish Ramakrishnan
0ef0e010a3 use defines for role names 2016-04-25 10:30:56 -07:00
Girish Ramakrishnan
2d27da89d2 validate individual scopes 2016-04-25 10:26:47 -07:00
Girish Ramakrishnan
9d8def8349 update bytes ejs-cli dockerode morgan superagent ursa validator x509 2016-04-22 22:26:32 -07:00
Girish Ramakrishnan
2533111bfa more 0.12.5 changes 2016-04-20 19:41:45 -07:00
Girish Ramakrishnan
20d6da8230 add debugs 2016-04-20 19:40:58 -07:00
Girish Ramakrishnan
f159cacfbb Use same timestamp for archive and config
This fixes a very curious case:
1. App has backup.
2. App dies.
3. Box backs up. This make it reuse the backup. But it generates wrong config file timestamp.
4. Box cannot update anymore. This is because the backup of app fails - it tries to reuse
   the backup and that fails with AccessDenied because the timestamp above is wrong!
2016-04-20 19:37:00 -07:00
Girish Ramakrishnan
5e9ea98b66 ignore apps in errored state 2016-04-20 19:05:49 -07:00
Girish Ramakrishnan
d87b7dcb75 fix typo 2016-04-20 12:56:35 -07:00
Girish Ramakrishnan
6eea2fef9a retry fetching icon
e2e randomly fails with EAI_AGAIN
2016-04-20 00:40:22 -07:00
Girish Ramakrishnan
34fd5f14a5 0.12.5 changes 2016-04-19 21:52:24 -07:00
Girish Ramakrishnan
a4e73e747c fix crash mail subject 2016-04-19 19:12:47 -07:00
Girish Ramakrishnan
eadff099eb send logs when apptask fails 2016-04-19 18:40:46 -07:00
Girish Ramakrishnan
15653cb3f8 rename to logcollector 2016-04-19 18:13:05 -07:00
Girish Ramakrishnan
2f8dc35c5d rename to sendFailureLogs 2016-04-19 18:06:11 -07:00
Girish Ramakrishnan
a97720d204 rename to failure_notification 2016-04-19 18:04:45 -07:00
Girish Ramakrishnan
73898505b0 remove jslint header 2016-04-19 16:59:12 -07:00
Girish Ramakrishnan
88b4b6a38b use the crashnotifier module 2016-04-19 16:47:21 -07:00
Girish Ramakrishnan
3da82e3a63 rename to crashnotifierservice 2016-04-19 16:45:05 -07:00
Girish Ramakrishnan
dad1585704 send crash notification on apptask crash 2016-04-19 16:43:58 -07:00
Girish Ramakrishnan
e81dbdb36c add crashnotifier module 2016-04-19 16:42:05 -07:00
Girish Ramakrishnan
ee2478e500 collect last 300 lines 2016-04-19 16:39:28 -07:00
Girish Ramakrishnan
0f7a6964a4 0.12.4 changes 2016-04-19 16:24:37 -07:00
Girish Ramakrishnan
5fa974ffe6 wait for 30 seconds in taskmanager instead
problem: because the apps are not inserted into appdb, the cloudron starts out
with an empty view. apps appear suddenly after 30 seconds.

besides, it makes more sense because 30 secs is not really tied to first run
2016-04-19 13:56:41 -07:00
Girish Ramakrishnan
e1b7198a29 reverse setTimeout args 2016-04-19 12:28:36 -07:00
Girish Ramakrishnan
37d6354627 wait for 30 seconds for the addons to start up
The platform sometimes takes time to start up (especially in 1GB droplet).
This means that apps like wordpress begin auto installing and they fail
since mysql has not started yet.
2016-04-19 12:15:25 -07:00
Girish Ramakrishnan
6ab3e04fc1 0.12.3 changes 2016-04-19 12:11:59 -07:00
Girish Ramakrishnan
b1987868be Set sn attribute only if non-empty
sn and givenName have as their superior the name attribute, which is of DirectoryString syntax,
that is, the syntax is 1.3.6.1.4.1.1466.115.121.1.15. Attributes which are of syntax
DirectoryString are not allowed to be null, that is, a DirectoryString is required to have
at least one character.

http://stackoverflow.com/questions/15027094/how-to-filter-null-or-empty-attributes-from-an-active-directory-query

This fixes a crash in paperwork which relies on this.
2016-04-19 12:03:03 -07:00
Girish Ramakrishnan
72eb3007c4 tmp -> obj 2016-04-19 12:00:34 -07:00
Girish Ramakrishnan
6c1da45ad1 skip the not automated part 2016-04-19 10:49:46 -07:00
Girish Ramakrishnan
b9857cdb65 use async.retry 2016-04-18 22:06:49 -07:00
592 changed files with 52895 additions and 49325 deletions

29
.eslintrc.json Normal file
View File

@@ -0,0 +1,29 @@
{
"env": {
"node": true,
"es6": true
},
"extends": "eslint:recommended",
"parserOptions": {
"ecmaVersion": 8
},
"rules": {
"indent": [
"error",
4
],
"linebreak-style": [
"error",
"unix"
],
"quotes": [
"error",
"single"
],
"semi": [
"error",
"always"
],
"no-console": "off"
}
}

4
.gitattributes vendored
View File

@@ -1,7 +1,7 @@
# following files are skipped when exporting using git archive
/release export-ignore
/admin export-ignore
test export-ignore
.jshintrc export-ignore
.gitlab export-ignore
.gitattributes export-ignore
.gitignore export-ignore

3
.gitignore vendored
View File

@@ -1,11 +1,8 @@
node_modules/
coverage/
docs/
webadmin/dist/
setup/splash/website/
installer/src/certs/server.key
# vim swap files
*.swp

View File

@@ -0,0 +1,6 @@
Please do not use this issue tracker for support requests and bug reports.
This issue tracker is used by the Cloudron development team to track actual
bugs in the code.
Please use the forum at https://forum.cloudron.io to report bugs. For
confidential issues, please email us at support@cloudron.io.

View File

@@ -0,0 +1,7 @@
Please do not use this issue tracker for support requests and feature reports.
This issue tracker is used by the Cloudron development team to track issues in
the code.
Please use the forum at https://forum.cloudron.io to report bugs. For
confidential issues, please email us at support@cloudron.io.

View File

@@ -1,7 +0,0 @@
{
"node": true,
"browser": true,
"unused": true,
"globalstrict": true,
"predef": [ "angular", "$" ]
}

1475
CHANGES

File diff suppressed because it is too large Load Diff

35
LICENSE Normal file
View File

@@ -0,0 +1,35 @@
The Cloudron Subscription license
Copyright (c) 2020 Cloudron UG
With regard to the Cloudron Software:
This software and associated documentation files (the "Software") may only be
used in production, if you (and any entity that you represent) have agreed to,
and are in compliance with, the Cloudron Subscription Terms of Service, available
at https://cloudron.io/legal/terms.html (the “Subscription Terms”), or other
agreement governing the use of the Software, as agreed by you and Cloudron,
and otherwise have a valid Cloudron Subscription. Subject to the foregoing sentence,
you are free to modify this Software and publish patches to the Software. You agree
that Subscription and/or its licensors (as applicable) retain all right, title and
interest in and to all such modifications and/or patches, and all such modifications
and/or patches may only be used, copied, modified, displayed, distributed, or otherwise
exploited with a valid Cloudron subscription. Notwithstanding the foregoing, you may copy
and modify the Software for development and testing purposes, without requiring a
subscription. You agree that Cloudron and/or its licensors (as applicable) retain
all right, title and interest in and to all such modifications. You are not
granted any other rights beyond what is expressly stated herein. Subject to the
foregoing, it is forbidden to copy, merge, publish, distribute, sublicense,
and/or sell the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
For all third party components incorporated into the Cloudron Software, those
components are licensed under the original license provided by the owner of the
applicable component.

View File

@@ -1,17 +1,55 @@
Cloudron a Smart Server
=======================
# Cloudron
[Cloudron](https://cloudron.io) is the best way to run apps on your server.
Web applications like email, contacts, blog, chat are the backbone of the modern
internet. Yet, we live in a world where hosting these essential applications is
a complex task.
Selfhost Instructions
---------------------
We are building the ultimate platform for self-hosting web apps. The Cloudron allows
anyone to effortlessly host web applications on their server on their own terms.
The smart server currently relies on an AWS account with access to Route53 and S3 and is tested on DigitalOcean and EC2.
## Features
First create a virtual private server with Ubuntu 15.04 and run the following commands in an ssh session to initialize the base image:
* Single click install for apps. Check out the [App Store](https://cloudron.io/appstore.html).
* Per-app encrypted backups and restores.
* App updates delivered via the App Store.
* Secure - Cloudron manages the firewall. All apps are secured with HTTPS. Certificates are
installed and renewed automatically.
* Centralized User & Group management. Control who can access which app.
* Single Sign On. Use same credentials across all apps.
* Automatic updates for the Cloudron platform.
* Trivially migrate to another server keeping your apps and data (for example, switch your
infrastructure provider or move to a bigger server).
* Comprehensive [REST API](https://cloudron.io/documentation/developer/api/).
* [CLI](https://cloudron.io/documentation/cli/) to configure apps.
* Alerts, audit logs, graphs, dns management ... and much more
## Demo
Try our demo at https://my.demo.cloudron.io (username: cloudron password: cloudron).
## Installing
[Install script](https://cloudron.io/documentation/installation/) - [Pricing](https://cloudron.io/pricing.html)
**Note:** This repo is a small part of what gets installed on your server - there is
the dashboard, database addons, graph container, base image etc. Cloudron also relies
on external services such as the App Store for apps to be installed. As such, don't
clone this repo and npm install and expect something to work.
## Support
* [Documentation](https://cloudron.io/documentation/)
* [Forum](https://forum.cloudron.io/)
```
curl https://s3.amazonaws.com/prod-cloudron-releases/installer.sh -o installer.sh
chmod +x installer.sh
./installer.sh <domain> <aws access key> <aws acccess secret> <backup bucket> <provider> <release sha1>
```

1
VERSION Normal file
View File

@@ -0,0 +1 @@
# release version. do not edit manually

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 14 KiB

193
baseimage/createAMI Executable file
View File

@@ -0,0 +1,193 @@
#!/bin/bash
set -eu -o pipefail
assertNotEmpty() {
: "${!1:? "$1 is not set."}"
}
readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
readonly SOURCE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")"/.. && pwd)"
export JSON="${SOURCE_DIR}/node_modules/.bin/json"
INSTANCE_TYPE="t2.micro"
BLOCK_DEVICE="DeviceName=/dev/sda1,Ebs={VolumeSize=20,DeleteOnTermination=true,VolumeType=gp2}"
SSH_KEY_NAME="id_rsa_yellowtent"
revision=$(git rev-parse HEAD)
ami_name=""
server_id=""
server_ip=""
destroy_server="yes"
deploy_env="prod"
image_id=""
args=$(getopt -o "" -l "revision:,name:,no-destroy,env:,region:" -n "$0" -- "$@")
eval set -- "${args}"
while true; do
case "$1" in
--env) deploy_env="$2"; shift 2;;
--revision) revision="$2"; shift 2;;
--name) ami_name="$2"; shift 2;;
--no-destroy) destroy_server="no"; shift 2;;
--region)
case "$2" in
"us-east-1")
image_id="ami-6edd3078"
security_group="sg-a5e17fd9"
subnet_id="subnet-b8fbc0f1"
;;
"eu-central-1")
image_id="ami-5aee2235"
security_group="sg-19f5a770" # everything open on eu-central-1
subnet_id=""
;;
*)
echo "Unknown aws region $2"
exit 1
;;
esac
export AWS_DEFAULT_REGION="$2" # used by the aws cli tool
shift 2
;;
--) break;;
*) echo "Unknown option $1"; exit 1;;
esac
done
# TODO fix this
export AWS_ACCESS_KEY_ID="${AWS_ACCESS_KEY}"
export AWS_SECRET_ACCESS_KEY="${AWS_ACCESS_SECRET}"
readonly ssh_keys="${HOME}/.ssh/id_rsa_yellowtent"
readonly SSH="ssh -o IdentitiesOnly=yes -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ${ssh_keys}"
if [[ ! -f "${ssh_keys}" ]]; then
echo "caas ssh key is missing at ${ssh_keys} (pick it up from secrets repo)"
exit 1
fi
if [[ -z "${image_id}" ]]; then
echo "--region is required (us-east-1 or eu-central-1)"
exit 1
fi
function get_pretty_revision() {
local git_rev="$1"
local sha1=$(git rev-parse --short "${git_rev}" 2>/dev/null)
echo "${sha1}"
}
function wait_for_ssh() {
echo "=> Waiting for ssh connection"
while true; do
echo -n "."
if $SSH ubuntu@${server_ip} echo "hello"; then
echo ""
break
fi
sleep 5
done
}
now=$(date "+%Y-%m-%d-%H%M%S")
pretty_revision=$(get_pretty_revision "${revision}")
if [[ -z "${ami_name}" ]]; then
ami_name="box-${deploy_env}-${pretty_revision}-${now}"
fi
echo "=> Create EC2 instance"
id=$(aws ec2 run-instances --image-id "${image_id}" --instance-type "${INSTANCE_TYPE}" --security-group-ids "${security_group}" --block-device-mappings "${BLOCK_DEVICE}" --key-name "${SSH_KEY_NAME}" --subnet-id "${subnet_id}" --associate-public-ip-address \
| $JSON Instances \
| $JSON 0.InstanceId)
[[ -z "$id" ]] && exit 1
echo "Instance created ID $id"
echo "=> Waiting for instance to get a public IP"
while true; do
server_ip=$(aws ec2 describe-instances --instance-ids ${id} \
| $JSON Reservations.0.Instances \
| $JSON 0.PublicIpAddress)
if [[ ! -z "${server_ip}" ]]; then
echo ""
break
fi
echo -n "."
sleep 1
done
echo "Got public IP ${server_ip}"
wait_for_ssh
echo "=> Fetching cloudron-setup"
while true; do
if $SSH ubuntu@${server_ip} wget "https://cloudron.io/cloudron-setup" -O "cloudron-setup"; then
echo ""
break
fi
echo -n "."
sleep 5
done
echo "=> Running cloudron-setup"
$SSH ubuntu@${server_ip} sudo /bin/bash "cloudron-setup" --env "${deploy_env}" --provider "ami" --skip-reboot
wait_for_ssh
echo "=> Removing ssh key"
$SSH ubuntu@${server_ip} sudo rm /home/ubuntu/.ssh/authorized_keys /root/.ssh/authorized_keys
echo "=> Creating AMI"
image_id=$(aws ec2 create-image --instance-id "${id}" --name "${ami_name}" | $JSON ImageId)
[[ -z "$id" ]] && exit 1
echo "Creating AMI with Id ${image_id}"
echo "=> Waiting for AMI to be created"
while true; do
state=$(aws ec2 describe-images --image-ids ${image_id} \
| $JSON Images \
| $JSON 0.State)
if [[ "${state}" == "available" ]]; then
echo ""
break
fi
echo -n "."
sleep 5
done
if [[ "${destroy_server}" == "yes" ]]; then
echo "=> Deleting EC2 instance"
while true; do
state=$(aws ec2 terminate-instances --instance-id "${id}" \
| $JSON TerminatingInstances \
| $JSON 0.CurrentState.Name)
if [[ "${state}" == "shutting-down" ]]; then
echo ""
break
fi
echo -n "."
sleep 5
done
fi
echo ""
echo "Done."
echo ""
echo "New AMI is: ${image_id}"
echo ""

View File

@@ -1,186 +0,0 @@
#!/bin/bash
set -eu -o pipefail
assertNotEmpty() {
: "${!1:? "$1 is not set."}"
}
readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
readonly SOURCE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")"/.. && pwd)"
export JSON="${SOURCE_DIR}/node_modules/.bin/json"
provider="digitalocean"
installer_revision=$(git rev-parse HEAD)
box_name=""
server_id=""
server_ip=""
destroy_server="yes"
deploy_env="dev"
# Only GNU getopt supports long options. OS X comes bundled with the BSD getopt
# brew install gnu-getopt to get the GNU getopt on OS X
[[ $(uname -s) == "Darwin" ]] && GNU_GETOPT="/usr/local/opt/gnu-getopt/bin/getopt" || GNU_GETOPT="getopt"
readonly GNU_GETOPT
args=$(${GNU_GETOPT} -o "" -l "provider:,revision:,regions:,size:,name:,no-destroy,env:" -n "$0" -- "$@")
eval set -- "${args}"
while true; do
case "$1" in
--env) deploy_env="$2"; shift 2;;
--revision) installer_revision="$2"; shift 2;;
--provider) provider="$2"; shift 2;;
--name) box_name="$2"; destroy_server="no"; shift 2;;
--no-destroy) destroy_server="no"; shift 2;;
--) break;;
*) echo "Unknown option $1"; exit 1;;
esac
done
echo "Creating image using ${provider}"
if [[ "${provider}" == "digitalocean" ]]; then
if [[ "${deploy_env}" == "staging" ]]; then
assertNotEmpty DIGITAL_OCEAN_TOKEN_STAGING
export DIGITAL_OCEAN_TOKEN="${DIGITAL_OCEAN_TOKEN_STAGING}"
elif [[ "${deploy_env}" == "dev" ]]; then
assertNotEmpty DIGITAL_OCEAN_TOKEN_DEV
export DIGITAL_OCEAN_TOKEN="${DIGITAL_OCEAN_TOKEN_DEV}"
elif [[ "${deploy_env}" == "prod" ]]; then
assertNotEmpty DIGITAL_OCEAN_TOKEN_PROD
export DIGITAL_OCEAN_TOKEN="${DIGITAL_OCEAN_TOKEN_PROD}"
else
echo "No such env ${deploy_env}."
exit 1
fi
vps="/bin/bash ${SCRIPT_DIR}/digitalocean.sh"
else
echo "Unknown provider : ${provider}"
exit 1
fi
readonly ssh_keys="${HOME}/.ssh/id_rsa_caas_${deploy_env}"
readonly scp202="scp -P 202 -o ConnectTimeout=10 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ${ssh_keys}"
readonly scp22="scp -o ConnectTimeout=10 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ${ssh_keys}"
readonly ssh202="ssh -p 202 -o IdentitiesOnly=yes -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ${ssh_keys}"
readonly ssh22="ssh -o IdentitiesOnly=yes -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ${ssh_keys}"
if [[ ! -f "${ssh_keys}" ]]; then
echo "caas ssh key is missing at ${ssh_keys} (pick it up from secrets repo)"
exit 1
fi
function get_pretty_revision() {
local git_rev="$1"
local sha1=$(git rev-parse --short "${git_rev}" 2>/dev/null)
echo "${sha1}"
}
now=$(date "+%Y-%m-%d-%H%M%S")
pretty_revision=$(get_pretty_revision "${installer_revision}")
if [[ -z "${box_name}" ]]; then
# if you change this, change the regexp is appstore/janitor.js
box_name="box-${deploy_env}-${pretty_revision}-${now}" # remove slashes
# create a new server if no name given
if ! caas_ssh_key_id=$($vps get_ssh_key_id "caas"); then
echo "Could not query caas ssh key"
exit 1
fi
echo "Detected caas ssh key id: ${caas_ssh_key_id}"
echo "Creating Server with name [${box_name}]"
if ! server_id=$($vps create ${caas_ssh_key_id} ${box_name}); then
echo "Failed to create server"
exit 1
fi
echo "Created server with id: ${server_id}"
# If we run scripts overenthusiastically without the wait, setup script randomly fails
echo -n "Waiting 120 seconds for server creation"
for i in $(seq 1 24); do
echo -n "."
sleep 5
done
echo ""
else
if ! server_id=$($vps get_id "${box_name}"); then
echo "Could not determine id from name"
exit 1
fi
echo "Reusing server with id: ${server_id}"
$vps power_on "${server_id}"
fi
# Query until we get an IP
while true; do
echo "Trying to get the server IP"
if server_ip=$($vps get_ip "${server_id}"); then
echo "Server IP : [${server_ip}]"
break
fi
echo "Timedout, trying again in 10 seconds"
sleep 10
done
while true; do
echo "Trying to copy init script to server"
if $scp22 "${SCRIPT_DIR}/initializeBaseUbuntuImage.sh" root@${server_ip}:.; then
break
fi
echo "Timedout, trying again in 30 seconds"
sleep 30
done
echo "Copying INFRA_VERSION"
$scp22 "${SCRIPT_DIR}/../setup/INFRA_VERSION" root@${server_ip}:.
echo "Copying box source"
cd "${SOURCE_DIR}"
git archive --format=tar HEAD | $ssh22 "root@${server_ip}" "cat - > /tmp/box.tar.gz"
echo "Executing init script"
if ! $ssh22 "root@${server_ip}" "/bin/bash /root/initializeBaseUbuntuImage.sh ${installer_revision}"; then
echo "Init script failed"
exit 1
fi
echo "Shutting down server with id : ${server_id}"
$ssh202 "root@${server_ip}" "shutdown -f now" || true # shutdown sometimes terminates ssh connection immediately making this command fail
# wait 10 secs for actual shutdown
echo "Waiting for 10 seconds for server to shutdown"
sleep 30
echo "Powering off server"
if ! $vps power_off "${server_id}"; then
echo "Could not power off server"
exit 1
fi
snapshot_name="box-${deploy_env}-${pretty_revision}-${now}"
echo "Snapshotting as ${snapshot_name}"
if ! image_id=$($vps snapshot "${server_id}" "${snapshot_name}"); then
echo "Could not snapshot and get image id"
exit 1
fi
if [[ "${destroy_server}" == "yes" ]]; then
echo "Destroying server"
if ! $vps destroy "${server_id}"; then
echo "Could not destroy server"
exit 1
fi
else
echo "Skipping server destroy"
fi
echo "Transferring image ${image_id} to other regions"
$vps transfer_image_to_all_regions "${image_id}"
echo "Done."

View File

@@ -10,7 +10,7 @@ if [[ -z "${JSON}" ]]; then
exit 1
fi
readonly CURL="curl -s -u ${DIGITAL_OCEAN_TOKEN}:"
readonly CURL="curl --retry 5 -s -u ${DIGITAL_OCEAN_TOKEN}:"
function debug() {
echo "$@" >&2
@@ -29,9 +29,9 @@ function create_droplet() {
local ssh_key_id="$1"
local box_name="$2"
local image_region="sfo1"
local ubuntu_image_slug="ubuntu-15-10-x64"
local box_size="512mb"
local image_region="sfo2"
local ubuntu_image_slug="ubuntu-16-04-x64"
local box_size="1gb"
local data="{\"name\":\"${box_name}\",\"size\":\"${box_size}\",\"region\":\"${image_region}\",\"image\":\"${ubuntu_image_slug}\",\"ssh_keys\":[ \"${ssh_key_id}\" ],\"backups\":false}"
@@ -49,9 +49,9 @@ function get_droplet_ip() {
function get_droplet_id() {
local droplet_name="$1"
id=$($CURL "https://api.digitalocean.com/v2/droplets?per_page=100" | $JSON "droplets" | $JSON -c "this.name === '${droplet_name}'" | $JSON "[0].id")
id=$($CURL "https://api.digitalocean.com/v2/droplets?per_page=200" | $JSON "droplets" | $JSON -c "this.name === '${droplet_name}'" | $JSON "[0].id")
[[ -z "$id" ]] && exit 1
echo "$id"
echo "$id"
}
function power_off_droplet() {
@@ -109,13 +109,24 @@ function get_image_id() {
local snapshot_name="$1"
local image_id=""
image_id=$($CURL "https://api.digitalocean.com/v2/images?per_page=100" \
| $JSON images \
| $JSON -c "this.name === \"${snapshot_name}\"" 0.id)
if [[ -n "${image_id}" ]]; then
echo "${image_id}"
if ! response=$($CURL "https://api.digitalocean.com/v2/images?per_page=200"); then
echo "Failed to get image listing. ${response}"
return 1
fi
if ! image_id=$(echo "$response" \
| $JSON images \
| $JSON -c "this.name === \"${snapshot_name}\"" 0.id); then
echo "Failed to parse curl response: ${response}"
return 1
fi
if [[ -z "${image_id}" ]]; then
echo "Failed to get image id of ${snapshot_name}. reponse: ${response}"
return 1
fi
echo "${image_id}"
}
function snapshot_droplet() {
@@ -128,16 +139,26 @@ function snapshot_droplet() {
debug -n "Waiting for snapshot to complete"
while true; do
local event_status=`$CURL "https://api.digitalocean.com/v2/droplets/${droplet_id}/actions/${event_id}" | $JSON action.status`
if ! response=$($CURL "https://api.digitalocean.com/v2/droplets/${droplet_id}/actions/${event_id}"); then
echo "Could not get action status. ${response}"
continue
fi
if ! event_status=$(echo "${response}" | $JSON action.status); then
echo "Could not parse action.status from response. ${response}"
continue
fi
if [[ "${event_status}" == "completed" ]]; then
break
fi
debug -n "."
sleep 10
done
debug ""
debug "! done"
get_image_id "${snapshot_name}"
if ! image_id=$(get_image_id "${snapshot_name}"); then
return 1
fi
echo "${image_id}"
}
function destroy_droplet() {
@@ -177,7 +198,7 @@ function transfer_image_to_all_regions() {
local image_id="$1"
xfer_events=()
image_regions=(ams3) ## sfo1 is where the image is created
image_regions=(ams2) ## sfo1 is where the image is created
for image_region in ${image_regions[@]}; do
xfer_event=$(transfer_image ${image_id} ${image_region})
echo "Image transfer to ${image_region} initiated. Event id: ${xfer_event}"

430
baseimage/initializeBaseUbuntuImage.sh Normal file → Executable file
View File

@@ -2,325 +2,163 @@
set -euv -o pipefail
readonly USER=yellowtent
readonly USER_HOME="/home/${USER}"
readonly INSTALLER_SOURCE_DIR="${USER_HOME}/installer"
readonly INSTALLER_REVISION="$1"
readonly SELFHOSTED=$(( $# > 1 ? 1 : 0 ))
readonly USER_DATA_FILE="/root/user_data.img"
readonly USER_DATA_DIR="/home/yellowtent/data"
readonly SOURCE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
readonly arg_provider="${1:-generic}"
readonly arg_infraversionpath="${SOURCE_DIR}/${2:-}"
function die {
echo $1
exit 1
}
[[ "$(systemd --version 2>&1)" == *"systemd 225"* ]] || die "Expecting systemd to be 225"
if [ -f "${SOURCE_DIR}/INFRA_VERSION" ]; then
source "${SOURCE_DIR}/INFRA_VERSION"
else
echo "No INFRA_VERSION found, skip pulling docker images"
fi
if [ ${SELFHOSTED} == 0 ]; then
echo "!! Initializing Ubuntu image for CaaS"
else
echo "!! Initializing Ubuntu image for Selfhosting"
fi
echo "==== Create User ${USER} ===="
if ! id "${USER}"; then
useradd "${USER}" -m
fi
echo "=== Yellowtent base image preparation (installer revision - ${INSTALLER_REVISION}) ==="
echo "=== Prepare installer source ==="
rm -rf "${INSTALLER_SOURCE_DIR}" && mkdir -p "${INSTALLER_SOURCE_DIR}"
rm -rf /tmp/box && mkdir -p /tmp/box
tar xvf /tmp/box.tar.gz -C /tmp/box && rm /tmp/box.tar.gz
cp -rf /tmp/box/installer/* "${INSTALLER_SOURCE_DIR}"
echo "${INSTALLER_REVISION}" > "${INSTALLER_SOURCE_DIR}/REVISION"
export DEBIAN_FRONTEND=noninteractive
echo "=== Upgrade ==="
apt-get update
apt-get dist-upgrade -y
apt-get install -y curl
# hold grub since updating it breaks on some VPS providers. also, dist-upgrade will trigger it
apt-mark hold grub* >/dev/null
apt-get -o Dpkg::Options::="--force-confdef" update -y
apt-get -o Dpkg::Options::="--force-confdef" upgrade -y
apt-mark unhold grub* >/dev/null
# Setup firewall before everything. docker creates it's own chain and the -X below will remove it
# Do NOT use iptables-persistent because it's startup ordering conflicts with docker
echo "=== Setting up firewall ==="
# clear tables and set default policy
iptables -F # flush all chains
iptables -X # delete all chains
# default policy for filter table
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT # TODO: disable icc and make this as reject
iptables -P OUTPUT ACCEPT
echo "==> Installing required packages"
# NOTE: keep these in sync with src/apps.js validatePortBindings
# allow ssh, http, https, ping, dns
iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
if [ ${SELFHOSTED} == 0 ]; then
iptables -A INPUT -p tcp -m tcp -m multiport --dports 80,202,443,886 -j ACCEPT
else
iptables -A INPUT -p tcp -m tcp -m multiport --dports 80,22,443,886 -j ACCEPT
fi
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A INPUT -s 172.17.0.0/16 -j ACCEPT # required to accept any connections from apps to our IP:<public port>
# loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# prevent DoS
# iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
# log dropped incoming. keep this at the end of all the rules
iptables -N LOGGING # new chain
iptables -A INPUT -j LOGGING # last rule in INPUT chain
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7
iptables -A LOGGING -j DROP
echo "==== Install btrfs tools ==="
apt-get -y install btrfs-tools
echo "==== Install docker ===="
# install docker from binary to pin it to a specific version. the current debian repo does not allow pinning
curl https://get.docker.com/builds/Linux/x86_64/docker-1.10.2 > /usr/bin/docker
apt-get -y install aufs-tools
chmod +x /usr/bin/docker
groupadd docker
cat > /etc/systemd/system/docker.socket <<EOF
[Unit]
Description=Docker Socket for the API
PartOf=docker.service
[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
[Install]
WantedBy=sockets.target
EOF
cat > /etc/systemd/system/docker.service <<EOF
[Unit]
Description=Docker Application Container Engine
After=network.target docker.socket
Requires=docker.socket
[Service]
ExecStart=/usr/bin/docker daemon -H fd:// --log-driver=journald --exec-opt native.cgroupdriver=cgroupfs
MountFlags=slave
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
[Install]
WantedBy=multi-user.target
EOF
echo "=== Setup btrfs data ==="
truncate -s "8192m" "${USER_DATA_FILE}" # 8gb start (this will get resized dynamically by box-setup.service)
mkfs.btrfs -L UserHome "${USER_DATA_FILE}"
mkdir -p "${USER_DATA_DIR}"
mount -t btrfs -o loop,nosuid "${USER_DATA_FILE}" ${USER_DATA_DIR}
systemctl daemon-reload
systemctl enable docker
systemctl start docker
# give docker sometime to start up and create iptables rules
# those rules come in after docker has started, and we want to wait for them to be sure iptables-save has all of them
sleep 10
# Disable forwarding to metadata route from containers
iptables -I FORWARD -d 169.254.169.254 -j DROP
# ubuntu will restore iptables from this file automatically. this is here so that docker's chain is saved to this file
mkdir /etc/iptables && iptables-save > /etc/iptables/rules.v4
echo "=== Enable memory accounting =="
sed -e 's/GRUB_CMDLINE_LINUX=.*/GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1 panic_on_oops=1 panic=5"/' -i /etc/default/grub
update-grub
# now add the user to the docker group
usermod "${USER}" -a -G docker
if [ -z $(echo "${INFRA_VERSION}") ]; then
echo "Skip pulling base docker images"
else
echo "=== Pulling base docker images ==="
docker pull "${BASE_IMAGE}"
echo "=== Pulling mysql addon image ==="
docker pull "${MYSQL_IMAGE}"
echo "=== Pulling postgresql addon image ==="
docker pull "${POSTGRESQL_IMAGE}"
echo "=== Pulling redis addon image ==="
docker pull "${REDIS_IMAGE}"
echo "=== Pulling mongodb addon image ==="
docker pull "${MONGODB_IMAGE}"
echo "=== Pulling graphite docker images ==="
docker pull "${GRAPHITE_IMAGE}"
echo "=== Pulling mail relay ==="
docker pull "${MAIL_IMAGE}"
fi
echo "==== Install nginx ===="
apt-get -y install nginx-full
[[ "$(nginx -v 2>&1)" == *"nginx/1.9."* ]] || die "Expecting nginx version to be 1.9.x"
echo "==== Install build-essential ===="
apt-get -y install build-essential rcconf
echo "==== Install mysql ===="
debconf-set-selections <<< 'mysql-server mysql-server/root_password password password'
debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password password'
apt-get -y install mysql-server
[[ "$(mysqld --version 2>&1)" == *"5.6."* ]] || die "Expecting nginx version to be 5.6.x"
echo "==== Install pwgen and swaks awscli ===="
apt-get -y install pwgen swaks awscli
# this enables automatic security upgrades (https://help.ubuntu.com/community/AutomaticSecurityUpdates)
# resolvconf is needed for unbound to work property after disabling systemd-resolved in 18.04
ubuntu_version=$(lsb_release -rs)
ubuntu_codename=$(lsb_release -cs)
gpg_package=$([[ "${ubuntu_version}" == "16.04" ]] && echo "gnupg" || echo "gpg")
apt-get -y install \
acl \
build-essential \
cifs-utils \
cron \
curl \
debconf-utils \
dmsetup \
$gpg_package \
iptables \
libpython2.7 \
linux-generic \
logrotate \
mysql-server-5.7 \
openssh-server \
pwgen \
resolvconf \
swaks \
tzdata \
unattended-upgrades \
unbound \
xfsprogs
echo "==== Install collectd ==="
if ! apt-get install -y collectd collectd-utils; then
if [[ "${ubuntu_version}" == "16.04" ]]; then
echo "==> installing nginx for xenial for TLSv3 support"
curl -sL http://nginx.org/packages/ubuntu/pool/nginx/n/nginx/nginx_1.14.0-1~xenial_amd64.deb -o /tmp/nginx.deb
# apt install with install deps (as opposed to dpkg -i)
apt install -y /tmp/nginx.deb
rm /tmp/nginx.deb
else
apt install -y nginx-full
fi
# on some providers like scaleway the sudo file is changed and we want to keep the old one
apt-get -o Dpkg::Options::="--force-confold" install -y sudo
# this ensures that unattended upgades are enabled, if it was disabled during ubuntu install time (see #346)
# debconf-set-selection of unattended-upgrades/enable_auto_updates + dpkg-reconfigure does not work
cp /usr/share/unattended-upgrades/20auto-upgrades /etc/apt/apt.conf.d/20auto-upgrades
echo "==> Installing node.js"
mkdir -p /usr/local/node-10.18.1
curl -sL https://nodejs.org/dist/v10.18.1/node-v10.18.1-linux-x64.tar.gz | tar zxvf - --strip-components=1 -C /usr/local/node-10.18.1
ln -sf /usr/local/node-10.18.1/bin/node /usr/bin/node
ln -sf /usr/local/node-10.18.1/bin/npm /usr/bin/npm
apt-get install -y python # Install python which is required for npm rebuild
[[ "$(python --version 2>&1)" == "Python 2.7."* ]] || die "Expecting python version to be 2.7.x"
# https://docs.docker.com/engine/installation/linux/ubuntulinux/
echo "==> Installing Docker"
# create systemd drop-in file. if you channge options here, be sure to fixup installer.sh as well
mkdir -p /etc/systemd/system/docker.service.d
echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/dockerd -H fd:// --log-driver=journald --exec-opt native.cgroupdriver=cgroupfs --storage-driver=overlay2" > /etc/systemd/system/docker.service.d/cloudron.conf
# there are 3 packages for docker - containerd, CLI and the daemon
curl -sL "https://download.docker.com/linux/ubuntu/dists/${ubuntu_codename}/pool/stable/amd64/containerd.io_1.2.2-3_amd64.deb" -o /tmp/containerd.deb
curl -sL "https://download.docker.com/linux/ubuntu/dists/${ubuntu_codename}/pool/stable/amd64/docker-ce-cli_18.09.2~3-0~ubuntu-${ubuntu_codename}_amd64.deb" -o /tmp/docker-ce-cli.deb
curl -sL "https://download.docker.com/linux/ubuntu/dists/${ubuntu_codename}/pool/stable/amd64/docker-ce_18.09.2~3-0~ubuntu-${ubuntu_codename}_amd64.deb" -o /tmp/docker.deb
# apt install with install deps (as opposed to dpkg -i)
apt install -y /tmp/containerd.deb /tmp/docker-ce-cli.deb /tmp/docker.deb
rm /tmp/containerd.deb /tmp/docker-ce-cli.deb /tmp/docker.deb
storage_driver=$(docker info | grep "Storage Driver" | sed 's/.*: //')
if [[ "${storage_driver}" != "overlay2" ]]; then
echo "Docker is using "${storage_driver}" instead of overlay2"
exit 1
fi
# do not upgrade grub because it might prompt user and break this script
echo "==> Enable memory accounting"
apt-get -y --no-upgrade install grub2-common
sed -e 's/^GRUB_CMDLINE_LINUX="\(.*\)"$/GRUB_CMDLINE_LINUX="\1 cgroup_enable=memory swapaccount=1 panic_on_oops=1 panic=5"/' -i /etc/default/grub
update-grub
echo "==> Downloading docker images"
if [ ! -f "${arg_infraversionpath}/infra_version.js" ]; then
echo "No infra_versions.js found"
exit 1
fi
images=$(node -e "var i = require('${arg_infraversionpath}/infra_version.js'); console.log(i.baseImages.map(function (x) { return x.tag; }).join(' '), Object.keys(i.images).map(function (x) { return i.images[x].tag; }).join(' '));")
echo -e "\tPulling docker images: ${images}"
for image in ${images}; do
docker pull "${image}"
docker pull "${image%@sha256:*}" # this will tag the image for readability
done
echo "==> Install collectd"
if ! apt-get install -y libcurl3-gnutls collectd collectd-utils; then
# FQDNLookup is true in default debian config. The box code has a custom collectd.conf that fixes this
echo "Failed to install collectd. Presumably because of http://mailman.verplant.org/pipermail/collectd/2015-March/006491.html"
sed -e 's/^FQDNLookup true/FQDNLookup false/' -i /etc/collectd/collectd.conf
fi
update-rc.d -f collectd remove
# this simply makes it explicit that we run logrotate via cron. it's already part of base ubuntu
echo "==== Install logrotate ==="
apt-get install -y cron logrotate
systemctl enable cron
echo "==== Install nodejs ===="
# Cannot use anything above 4.1.1 - https://github.com/nodejs/node/issues/3803
mkdir -p /usr/local/node-4.1.1
curl -sL https://nodejs.org/dist/v4.1.1/node-v4.1.1-linux-x64.tar.gz | tar zxvf - --strip-components=1 -C /usr/local/node-4.1.1
ln -s /usr/local/node-4.1.1/bin/node /usr/bin/node
ln -s /usr/local/node-4.1.1/bin/npm /usr/bin/npm
apt-get install -y python # Install python which is required for npm rebuild
[[ "$(python --version 2>&1)" == "Python 2.7."* ]] || die "Expecting python version to be 2.7.x"
echo "=== Rebuilding npm packages ==="
cd "${INSTALLER_SOURCE_DIR}" && npm install --production
chown "${USER}:${USER}" -R "${INSTALLER_SOURCE_DIR}"
echo "==== Install installer systemd script ===="
provisionEnv="PROVISION=digitalocean"
if [ ${SELFHOSTED} == 1 ]; then
provisionEnv="PROVISION=local"
fi
cat > /etc/systemd/system/cloudron-installer.service <<EOF
[Unit]
Description=Cloudron Installer
; journald crashes result in a EPIPE in node. Cannot ignore it as it results in loss of logs.
BindsTo=systemd-journald.service
[Service]
Type=idle
ExecStart="${INSTALLER_SOURCE_DIR}/src/server.js"
Environment="DEBUG=installer*,connect-lastmile" ${provisionEnv}
; kill any child (installer.sh) as well
KillMode=control-group
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
# Restore iptables before docker
echo "==== Install iptables-restore systemd script ===="
cat > /etc/systemd/system/iptables-restore.service <<EOF
[Unit]
Description=IPTables Restore
Before=docker.service
[Service]
Type=oneshot
ExecStart=/sbin/iptables-restore /etc/iptables/rules.v4
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOF
# Allocate swap files
# https://bbs.archlinux.org/viewtopic.php?id=194792 ensures this runs after do-resize.service
echo "==== Install box-setup systemd script ===="
cat > /etc/systemd/system/box-setup.service <<EOF
[Unit]
Description=Box Setup
Before=docker.service collectd.service mysql.service
After=do-resize.service
[Service]
Type=oneshot
ExecStart="${INSTALLER_SOURCE_DIR}/systemd/box-setup.sh"
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable cloudron-installer
systemctl enable iptables-restore
systemctl enable box-setup
# Configure systemd
sed -e "s/^#SystemMaxUse=.*$/SystemMaxUse=100M/" \
-e "s/^#ForwardToSyslog=.*$/ForwardToSyslog=no/" \
-i /etc/systemd/journald.conf
# When rotating logs, systemd kills journald too soon sometimes
# See https://github.com/systemd/systemd/issues/1353 (this is upstream default)
sed -e "s/^WatchdogSec=.*$/WatchdogSec=3min/" \
-i /lib/systemd/system/systemd-journald.service
sync
# Configure time
echo "==> Configuring host"
sed -e 's/^#NTP=/NTP=0.ubuntu.pool.ntp.org 1.ubuntu.pool.ntp.org 2.ubuntu.pool.ntp.org 3.ubuntu.pool.ntp.org/' -i /etc/systemd/timesyncd.conf
timedatectl set-ntp 1
# mysql follows the system timezone
timedatectl set-timezone UTC
# Give user access to system logs
apt-get -y install acl
usermod -a -G systemd-journal ${USER}
mkdir -p /var/log/journal # in some images, this directory is not created making system log to /run/systemd instead
chown root:systemd-journal /var/log/journal
systemctl restart systemd-journald
setfacl -n -m u:${USER}:r /var/log/journal/*/system.journal
echo "==> Adding sshd configuration warning"
sed -e '/Port 22/ i # NOTE: Cloudron only supports moving SSH to port 202. See https://cloudron.io/documentation/security/#securing-ssh-access' -i /etc/ssh/sshd_config
if [ ${SELFHOSTED} == 0 ]; then
echo "==== Install ssh ==="
apt-get -y install openssh-server
# https://stackoverflow.com/questions/4348166/using-with-sed on why ? must be escaped
sed -e 's/^#\?Port .*/Port 202/g' \
-e 's/^#\?PermitRootLogin .*/PermitRootLogin without-password/g' \
-e 's/^#\?PermitEmptyPasswords .*/PermitEmptyPasswords no/g' \
-e 's/^#\?PasswordAuthentication .*/PasswordAuthentication no/g' \
-i /etc/ssh/sshd_config
# https://bugs.launchpad.net/ubuntu/+source/base-files/+bug/1701068
echo "==> Disabling motd news"
sed -i 's/^ENABLED=.*/ENABLED=0/' /etc/default/motd-news
# Disable bind for good measure (on online.net, kimsufi servers these are pre-installed and conflicts with unbound)
systemctl stop bind9 || true
systemctl disable bind9 || true
# on ovh images dnsmasq seems to run by default
systemctl stop dnsmasq || true
systemctl disable dnsmasq || true
# on ssdnodes postfix seems to run by default
systemctl stop postfix || true
systemctl disable postfix || true
# on ubuntu 18.04, this is the default. this requires resolvconf for DNS to work further after the disable
systemctl stop systemd-resolved || true
systemctl disable systemd-resolved || true
# ubuntu's default config for unbound does not work if ipv6 is disabled. this config is overwritten in start.sh
# we need unbound to work as this is required for installer.sh to do any DNS requests
ip6=$([[ -s /proc/net/if_inet6 ]] && echo "yes" || echo "no")
echo -e "server:\n\tinterface: 127.0.0.1\n\tdo-ip6: ${ip6}" > /etc/unbound/unbound.conf.d/cloudron-network.conf
systemctl restart unbound
# required so we can connect to this machine since port 22 is blocked by iptables by now
systemctl reload sshd
fi

50
box.js
View File

@@ -2,63 +2,57 @@
'use strict';
// prefix all output with a timestamp
// debug() already prefixes and uses process.stderr NOT console.*
['log', 'info', 'warn', 'debug', 'error'].forEach(function (log) {
var orig = console[log];
console[log] = function () {
orig.apply(console, [new Date().toISOString()].concat(Array.prototype.slice.call(arguments)));
};
});
require('supererror')({ splatchError: true });
// remove timestamp from debug() based output
require('debug').formatArgs = function formatArgs() {
arguments[0] = this.namespace + ' ' + arguments[0];
return arguments;
};
var appHealthMonitor = require('./src/apphealthmonitor.js'),
async = require('async'),
config = require('./src/config.js'),
let async = require('async'),
constants = require('./src/constants.js'),
dockerProxy = require('./src/dockerproxy.js'),
ldap = require('./src/ldap.js'),
oauthproxy = require('./src/oauthproxy.js'),
server = require('./src/server.js'),
simpleauth = require('./src/simpleauth.js');
server = require('./src/server.js');
console.log();
console.log('==========================================');
console.log(' Cloudron will use the following settings ');
console.log('==========================================');
console.log();
console.log(' Environment: ', config.CLOUDRON ? 'CLOUDRON' : 'TEST');
console.log(' Version: ', config.version());
console.log(' Admin Origin: ', config.adminOrigin());
console.log(' Appstore API server origin: ', config.apiServerOrigin());
console.log(' Appstore Web server origin: ', config.webServerOrigin());
console.log();
console.log(` Cloudron ${constants.VERSION} `);
console.log('==========================================');
console.log();
async.series([
server.start,
ldap.start,
simpleauth.start,
appHealthMonitor.start,
oauthproxy.start
dockerProxy.start
], function (error) {
if (error) {
console.error('Error starting server', error);
process.exit(1);
}
console.log('Cloudron is up and running');
});
var NOOP_CALLBACK = function () { };
process.on('SIGINT', function () {
console.log('Received SIGINT. Shutting down.');
server.stop(NOOP_CALLBACK);
ldap.stop(NOOP_CALLBACK);
simpleauth.stop(NOOP_CALLBACK);
oauthproxy.stop(NOOP_CALLBACK);
dockerProxy.stop(NOOP_CALLBACK);
setTimeout(process.exit.bind(process), 3000);
});
process.on('SIGTERM', function () {
console.log('Received SIGTERM. Shutting down.');
server.stop(NOOP_CALLBACK);
ldap.stop(NOOP_CALLBACK);
simpleauth.stop(NOOP_CALLBACK);
oauthproxy.stop(NOOP_CALLBACK);
dockerProxy.stop(NOOP_CALLBACK);
setTimeout(process.exit.bind(process), 3000);
});

View File

@@ -1,42 +0,0 @@
#!/usr/bin/env node
'use strict';
var assert = require('assert'),
mailer = require('./src/mailer.js'),
safe = require('safetydance'),
path = require('path'),
util = require('util');
var COLLECT_LOGS_CMD = path.join(__dirname, 'src/scripts/collectlogs.sh');
function collectLogs(program, callback) {
assert.strictEqual(typeof program, 'string');
assert.strictEqual(typeof callback, 'function');
var logs = safe.child_process.execSync('sudo ' + COLLECT_LOGS_CMD + ' ' + program, { encoding: 'utf8' });
callback(null, logs);
}
function sendCrashNotification(processName) {
collectLogs(processName, function (error, result) {
if (error) {
console.error('Failed to collect logs.', error);
result = util.format('Failed to collect logs.', error);
}
console.log('Sending crash notification email for', processName);
mailer.sendCrashNotification(processName, result);
});
}
function main() {
if (process.argv.length !== 3) return console.error('Usage: crashnotifier.js <processName>');
var processName = process.argv[2];
console.log('Started crash notifier for', processName);
sendCrashNotification(processName);
}
main();

28
crashnotifierservice.js Executable file
View File

@@ -0,0 +1,28 @@
#!/usr/bin/env node
'use strict';
var database = require('./src/database.js');
var crashNotifier = require('./src/crashnotifier.js');
// This is triggered by systemd with the crashed unit name as argument
function main() {
if (process.argv.length !== 3) return console.error('Usage: crashnotifier.js <unitName>');
var unitName = process.argv[2];
console.log('Started crash notifier for', unitName);
// eventlog api needs the db
database.initialize(function (error) {
if (error) return console.error('Cannot connect to database. Unable to send crash log.', error);
crashNotifier.sendFailureLogs(unitName, function (error) {
if (error) console.error(error);
process.exit();
});
});
}
main();

View File

@@ -1,5 +0,0 @@
#!/bin/sh
set -eu
./node_modules/.bin/apidoc -i src/routes -o docs

View File

@@ -1,156 +0,0 @@
/* jslint node:true */
'use strict';
var ejs = require('gulp-ejs'),
gulp = require('gulp'),
del = require('del'),
concat = require('gulp-concat'),
uglify = require('gulp-uglify'),
serve = require('gulp-serve'),
sass = require('gulp-sass'),
sourcemaps = require('gulp-sourcemaps'),
cssnano = require('gulp-cssnano'),
autoprefixer = require('gulp-autoprefixer'),
argv = require('yargs').argv;
gulp.task('3rdparty', function () {
gulp.src([
'webadmin/src/3rdparty/**/*.js',
'webadmin/src/3rdparty/**/*.map',
'webadmin/src/3rdparty/**/*.css',
'webadmin/src/3rdparty/**/*.otf',
'webadmin/src/3rdparty/**/*.eot',
'webadmin/src/3rdparty/**/*.svg',
'webadmin/src/3rdparty/**/*.gif',
'webadmin/src/3rdparty/**/*.ttf',
'webadmin/src/3rdparty/**/*.woff',
'webadmin/src/3rdparty/**/*.woff2'
])
.pipe(gulp.dest('webadmin/dist/3rdparty/'))
.pipe(gulp.dest('setup/splash/website/3rdparty'));
gulp.src('node_modules/bootstrap-sass/assets/javascripts/bootstrap.min.js')
.pipe(gulp.dest('webadmin/dist/3rdparty/js'))
.pipe(gulp.dest('setup/splash/website/3rdparty/js'));
});
// --------------
// JavaScript
// --------------
gulp.task('js', ['js-index', 'js-setup', 'js-update'], function () {});
var oauth = {
clientId: argv.clientId || 'cid-webadmin',
clientSecret: argv.clientSecret || 'unused',
apiOrigin: argv.apiOrigin || ''
};
console.log();
console.log('Using OAuth credentials:');
console.log(' ClientId: %s', oauth.clientId);
console.log(' ClientSecret: %s', oauth.clientSecret);
console.log(' Cloudron API: %s', oauth.apiOrigin || 'default');
console.log();
gulp.task('js-index', function () {
gulp.src([
'webadmin/src/js/index.js',
'webadmin/src/js/client.js',
'webadmin/src/js/appstore.js',
'webadmin/src/js/main.js',
'webadmin/src/views/*.js'
])
.pipe(ejs({ oauth: oauth }, { ext: '.js' }))
.pipe(sourcemaps.init())
.pipe(concat('index.js', { newLine: ';' }))
.pipe(uglify())
.pipe(sourcemaps.write())
.pipe(gulp.dest('webadmin/dist/js'));
});
gulp.task('js-setup', function () {
gulp.src(['webadmin/src/js/setup.js', 'webadmin/src/js/client.js'])
.pipe(ejs({ oauth: oauth }, { ext: '.js' }))
.pipe(sourcemaps.init())
.pipe(concat('setup.js', { newLine: ';' }))
.pipe(uglify())
.pipe(sourcemaps.write())
.pipe(gulp.dest('webadmin/dist/js'));
});
gulp.task('js-update', function () {
gulp.src(['webadmin/src/js/update.js'])
.pipe(sourcemaps.init())
.pipe(uglify())
.pipe(sourcemaps.write())
.pipe(gulp.dest('webadmin/dist/js'))
.pipe(gulp.dest('setup/splash/website/js'));
});
// --------------
// HTML
// --------------
gulp.task('html', ['html-views', 'html-update', 'html-templates'], function () {
return gulp.src('webadmin/src/*.html').pipe(gulp.dest('webadmin/dist'));
});
gulp.task('html-update', function () {
return gulp.src(['webadmin/src/update.html']).pipe(gulp.dest('setup/splash/website'));
});
gulp.task('html-views', function () {
return gulp.src('webadmin/src/views/**/*.html').pipe(gulp.dest('webadmin/dist/views'));
});
gulp.task('html-templates', function () {
return gulp.src('webadmin/src/templates/**/*.html').pipe(gulp.dest('webadmin/dist/templates'));
});
// --------------
// CSS
// --------------
gulp.task('css', function () {
return gulp.src('webadmin/src/*.scss')
.pipe(sourcemaps.init())
.pipe(sass({ includePaths: ['node_modules/bootstrap-sass/assets/stylesheets/'] }).on('error', sass.logError))
.pipe(autoprefixer())
.pipe(cssnano())
.pipe(sourcemaps.write())
.pipe(gulp.dest('webadmin/dist'))
.pipe(gulp.dest('setup/splash/website'));
});
gulp.task('images', function () {
return gulp.src('webadmin/src/img/**')
.pipe(gulp.dest('webadmin/dist/img'));
});
// --------------
// Utilities
// --------------
gulp.task('watch', ['default'], function () {
gulp.watch(['webadmin/src/*.scss'], ['css']);
gulp.watch(['webadmin/src/img/*'], ['images']);
gulp.watch(['webadmin/src/**/*.html'], ['html']);
gulp.watch(['webadmin/src/views/*.html'], ['html-views']);
gulp.watch(['webadmin/src/templates/*.html'], ['html-templates']);
gulp.watch(['webadmin/src/js/update.js'], ['js-update']);
gulp.watch(['webadmin/src/js/setup.js', 'webadmin/src/js/client.js'], ['js-setup']);
gulp.watch(['webadmin/src/js/index.js', 'webadmin/src/js/client.js', 'webadmin/src/js/appstore.js', 'webadmin/src/js/main.js', 'webadmin/src/views/*.js'], ['js-index']);
gulp.watch(['webadmin/src/3rdparty/**/*'], ['3rdparty']);
});
gulp.task('clean', function () {
del.sync(['webadmin/dist', 'setup/splash/website']);
});
gulp.task('default', ['clean', 'html', 'js', '3rdparty', 'images', 'css'], function () {});
gulp.task('develop', ['watch'], serve({ root: 'webadmin/dist', port: 4000 }));

View File

@@ -1,164 +0,0 @@
#!/bin/bash
set -eu -o pipefail
echo ""
echo "======== Cloudron Installer ========"
echo ""
if [ $# -lt 4 ]; then
echo "Usage: ./installer.sh <fqdn> <aws key id> <aws key secret> <bucket> <provider> <revision>"
exit 1
fi
# commandline arguments
readonly fqdn="${1}"
readonly aws_access_key_id="${2}"
readonly aws_access_key_secret="${3}"
readonly aws_backup_bucket="${4}"
readonly provider="${5}"
readonly revision="${6}"
# environment specific urls
<% if (env === 'prod') { %>
readonly api_server_origin="https://api.cloudron.io"
readonly web_server_origin="https://cloudron.io"
<% } else { %>
readonly api_server_origin="https://api.<%= env %>.cloudron.io"
readonly web_server_origin="https://<%= env %>.cloudron.io"
<% } %>
readonly release_bucket_url="https://s3.amazonaws.com/<%= env %>-cloudron-releases"
readonly versions_url="https://s3.amazonaws.com/<%= env %>-cloudron-releases/versions.json"
readonly installer_code_url="${release_bucket_url}/box-${revision}.tar.gz"
# runtime consts
readonly installer_code_file="/tmp/box.tar.gz"
readonly installer_tmp_dir="/tmp/box"
readonly cert_folder="/tmp/certificates"
# check for fqdn in /ets/hosts
echo "[INFO] checking for hostname entry"
readonly hostentry_found=$(grep "${fqdn}" /etc/hosts || true)
if [[ -z $hostentry_found ]]; then
echo "[WARNING] No entry for ${fqdn} found in /etc/hosts"
echo "Adding an entry ..."
cat >> /etc/hosts <<EOF
# The following line was added by the Cloudron installer script
127.0.1.1 ${fqdn} ${fqdn}
EOF
else
echo "Valid hostname entry found in /etc/hosts"
fi
echo ""
echo "[INFO] ensure minimal dependencies ..."
apt-get update
apt-get install -y curl
echo ""
echo "[INFO] Generating certificates ..."
rm -rf "${cert_folder}"
mkdir -p "${cert_folder}"
cat > "${cert_folder}/CONFIG" <<EOF
[ req ]
default_bits = 1024
default_keyfile = keyfile.pem
distinguished_name = req_distinguished_name
prompt = no
req_extensions = v3_req
[ req_distinguished_name ]
C = DE
ST = Berlin
L = Berlin
O = Cloudron UG
OU = Cloudron
CN = ${fqdn}
emailAddress = cert@cloudron.io
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = ${fqdn}
DNS.2 = *.${fqdn}
EOF
# generate cert files
openssl genrsa 2048 > "${cert_folder}/host.key"
openssl req -new -out "${cert_folder}/host.csr" -key "${cert_folder}/host.key" -config "${cert_folder}/CONFIG"
openssl x509 -req -days 3650 -in "${cert_folder}/host.csr" -signkey "${cert_folder}/host.key" -out "${cert_folder}/host.cert" -extensions v3_req -extfile "${cert_folder}/CONFIG"
# make them json compatible, by collapsing to one line
tls_cert=$(sed ':a;N;$!ba;s/\n/\\n/g' "${cert_folder}/host.cert")
tls_key=$(sed ':a;N;$!ba;s/\n/\\n/g' "${cert_folder}/host.key")
echo ""
echo "[INFO] Fetching installer code ..."
curl "${installer_code_url}" -o "${installer_code_file}"
echo ""
echo "[INFO] Extracting installer code to ${installer_tmp_dir} ..."
rm -rf "${installer_tmp_dir}" && mkdir -p "${installer_tmp_dir}"
tar xvf "${installer_code_file}" -C "${installer_tmp_dir}"
echo ""
echo "Creating initial provisioning config ..."
cat > /root/provision.json <<EOF
{
"sourceTarballUrl": "",
"data": {
"apiServerOrigin": "${api_server_origin}",
"webServerOrigin": "${web_server_origin}",
"fqdn": "${fqdn}",
"token": "",
"isCustomDomain": true,
"boxVersionsUrl": "${versions_url}",
"version": "",
"tlsCert": "${tls_cert}",
"tlsKey": "${tls_key}",
"provider": "${provider}",
"backupConfig": {
"provider": "s3",
"accessKeyId": "${aws_access_key_id}",
"secretAccessKey": "${aws_access_key_secret}",
"bucket": "${aws_backup_bucket}",
"prefix": "backups"
},
"dnsConfig": {
"provider": "route53",
"accessKeyId": "${aws_access_key_id}",
"secretAccessKey": "${aws_access_key_secret}"
},
"tlsConfig": {
"provider": "letsencrypt-<%= env %>"
}
}
}
EOF
echo "[INFO] Running Ubuntu initializing script ..."
/bin/bash "${installer_tmp_dir}/baseimage/initializeBaseUbuntuImage.sh" "${revision}" selfhosting
echo ""
echo "[INFO] Reloading systemd daemon ..."
systemctl daemon-reload
echo ""
echo "[INFO] Restart docker ..."
systemctl restart docker
echo ""
echo "[FINISHED] Now starting Cloudron init jobs ..."
systemctl start box-setup
# TODO this is only for convenience we should probably just let the user do a restart
sleep 5 && sync
systemctl start cloudron-installer
journalctl -u cloudron-installer.service -f

View File

@@ -1,516 +0,0 @@
{
"name": "installer",
"version": "0.0.1",
"dependencies": {
"async": {
"version": "1.5.0",
"from": "async@>=1.5.0 <2.0.0",
"resolved": "https://registry.npmjs.org/async/-/async-1.5.0.tgz"
},
"body-parser": {
"version": "1.14.1",
"from": "body-parser@>=1.12.0 <2.0.0",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.14.1.tgz",
"dependencies": {
"bytes": {
"version": "2.1.0",
"from": "bytes@2.1.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz"
},
"content-type": {
"version": "1.0.1",
"from": "content-type@>=1.0.1 <1.1.0",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.1.tgz"
},
"depd": {
"version": "1.1.0",
"from": "depd@>=1.1.0 <1.2.0",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz"
},
"http-errors": {
"version": "1.3.1",
"from": "http-errors@>=1.3.1 <1.4.0",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz",
"dependencies": {
"inherits": {
"version": "2.0.1",
"from": "inherits@>=2.0.1 <2.1.0",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
},
"statuses": {
"version": "1.2.1",
"from": "statuses@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz"
}
}
},
"iconv-lite": {
"version": "0.4.12",
"from": "iconv-lite@0.4.12",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.12.tgz"
},
"on-finished": {
"version": "2.3.0",
"from": "on-finished@>=2.3.0 <2.4.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
"dependencies": {
"ee-first": {
"version": "1.1.1",
"from": "ee-first@1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz"
}
}
},
"qs": {
"version": "5.1.0",
"from": "qs@5.1.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz"
},
"raw-body": {
"version": "2.1.4",
"from": "raw-body@>=2.1.4 <2.2.0",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.4.tgz",
"dependencies": {
"unpipe": {
"version": "1.0.0",
"from": "unpipe@1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"
}
}
},
"type-is": {
"version": "1.6.9",
"from": "type-is@>=1.6.9 <1.7.0",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.9.tgz",
"dependencies": {
"media-typer": {
"version": "0.3.0",
"from": "media-typer@0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz"
},
"mime-types": {
"version": "2.1.7",
"from": "mime-types@>=2.1.7 <2.2.0",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.7.tgz",
"dependencies": {
"mime-db": {
"version": "1.19.0",
"from": "mime-db@>=1.19.0 <1.20.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.19.0.tgz"
}
}
}
}
}
}
},
"connect-lastmile": {
"version": "0.0.13",
"from": "connect-lastmile@0.0.13",
"resolved": "https://registry.npmjs.org/connect-lastmile/-/connect-lastmile-0.0.13.tgz",
"dependencies": {
"debug": {
"version": "2.1.3",
"from": "debug@>=2.1.0 <2.2.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.1.3.tgz",
"dependencies": {
"ms": {
"version": "0.7.0",
"from": "ms@0.7.0",
"resolved": "http://registry.npmjs.org/ms/-/ms-0.7.0.tgz"
}
}
}
}
},
"debug": {
"version": "2.2.0",
"from": "debug@>=2.1.1 <3.0.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
"dependencies": {
"ms": {
"version": "0.7.1",
"from": "ms@0.7.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz"
}
}
},
"express": {
"version": "4.13.3",
"from": "express@>=4.11.2 <5.0.0",
"resolved": "https://registry.npmjs.org/express/-/express-4.13.3.tgz",
"dependencies": {
"accepts": {
"version": "1.2.13",
"from": "accepts@>=1.2.12 <1.3.0",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz",
"dependencies": {
"mime-types": {
"version": "2.1.7",
"from": "mime-types@>=2.1.6 <2.2.0",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.7.tgz",
"dependencies": {
"mime-db": {
"version": "1.19.0",
"from": "mime-db@>=1.19.0 <1.20.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.19.0.tgz"
}
}
},
"negotiator": {
"version": "0.5.3",
"from": "negotiator@0.5.3",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz"
}
}
},
"array-flatten": {
"version": "1.1.1",
"from": "array-flatten@1.1.1",
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz"
},
"content-disposition": {
"version": "0.5.0",
"from": "content-disposition@0.5.0",
"resolved": "http://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz"
},
"content-type": {
"version": "1.0.1",
"from": "content-type@>=1.0.1 <1.1.0",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.1.tgz"
},
"cookie": {
"version": "0.1.3",
"from": "cookie@0.1.3",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz"
},
"cookie-signature": {
"version": "1.0.6",
"from": "cookie-signature@1.0.6",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz"
},
"depd": {
"version": "1.0.1",
"from": "depd@>=1.0.1 <1.1.0",
"resolved": "http://registry.npmjs.org/depd/-/depd-1.0.1.tgz"
},
"escape-html": {
"version": "1.0.2",
"from": "escape-html@1.0.2",
"resolved": "http://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz"
},
"etag": {
"version": "1.7.0",
"from": "etag@>=1.7.0 <1.8.0",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz"
},
"finalhandler": {
"version": "0.4.0",
"from": "finalhandler@0.4.0",
"resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz",
"dependencies": {
"unpipe": {
"version": "1.0.0",
"from": "unpipe@>=1.0.0 <1.1.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"
}
}
},
"fresh": {
"version": "0.3.0",
"from": "fresh@0.3.0",
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz"
},
"merge-descriptors": {
"version": "1.0.0",
"from": "merge-descriptors@1.0.0",
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz"
},
"methods": {
"version": "1.1.1",
"from": "methods@>=1.1.1 <1.2.0",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.1.tgz"
},
"on-finished": {
"version": "2.3.0",
"from": "on-finished@>=2.3.0 <2.4.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
"dependencies": {
"ee-first": {
"version": "1.1.1",
"from": "ee-first@1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz"
}
}
},
"parseurl": {
"version": "1.3.0",
"from": "parseurl@>=1.3.0 <1.4.0",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.0.tgz"
},
"path-to-regexp": {
"version": "0.1.7",
"from": "path-to-regexp@0.1.7",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz"
},
"proxy-addr": {
"version": "1.0.8",
"from": "proxy-addr@>=1.0.8 <1.1.0",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.8.tgz",
"dependencies": {
"forwarded": {
"version": "0.1.0",
"from": "forwarded@>=0.1.0 <0.2.0",
"resolved": "http://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz"
},
"ipaddr.js": {
"version": "1.0.1",
"from": "ipaddr.js@1.0.1",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.1.tgz"
}
}
},
"qs": {
"version": "4.0.0",
"from": "qs@4.0.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz"
},
"range-parser": {
"version": "1.0.3",
"from": "range-parser@>=1.0.2 <1.1.0",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz"
},
"send": {
"version": "0.13.0",
"from": "send@0.13.0",
"resolved": "http://registry.npmjs.org/send/-/send-0.13.0.tgz",
"dependencies": {
"destroy": {
"version": "1.0.3",
"from": "destroy@1.0.3",
"resolved": "http://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz"
},
"http-errors": {
"version": "1.3.1",
"from": "http-errors@>=1.3.1 <1.4.0",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz",
"dependencies": {
"inherits": {
"version": "2.0.1",
"from": "inherits@>=2.0.1 <2.1.0",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
}
}
},
"mime": {
"version": "1.3.4",
"from": "mime@1.3.4",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz"
},
"ms": {
"version": "0.7.1",
"from": "ms@0.7.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz"
},
"statuses": {
"version": "1.2.1",
"from": "statuses@>=1.2.1 <1.3.0",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz"
}
}
},
"serve-static": {
"version": "1.10.0",
"from": "serve-static@>=1.10.0 <1.11.0",
"resolved": "http://registry.npmjs.org/serve-static/-/serve-static-1.10.0.tgz"
},
"type-is": {
"version": "1.6.9",
"from": "type-is@>=1.6.9 <1.7.0",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.9.tgz",
"dependencies": {
"media-typer": {
"version": "0.3.0",
"from": "media-typer@0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz"
},
"mime-types": {
"version": "2.1.7",
"from": "mime-types@>=2.1.6 <2.2.0",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.7.tgz",
"dependencies": {
"mime-db": {
"version": "1.19.0",
"from": "mime-db@>=1.19.0 <1.20.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.19.0.tgz"
}
}
}
}
},
"utils-merge": {
"version": "1.0.0",
"from": "utils-merge@1.0.0",
"resolved": "http://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz"
},
"vary": {
"version": "1.0.1",
"from": "vary@>=1.0.1 <1.1.0",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz"
}
}
},
"json": {
"version": "9.0.3",
"from": "json@>=9.0.3 <10.0.0",
"resolved": "https://registry.npmjs.org/json/-/json-9.0.3.tgz"
},
"morgan": {
"version": "1.6.1",
"from": "morgan@>=1.5.1 <2.0.0",
"resolved": "https://registry.npmjs.org/morgan/-/morgan-1.6.1.tgz",
"dependencies": {
"basic-auth": {
"version": "1.0.3",
"from": "basic-auth@>=1.0.3 <1.1.0",
"resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.0.3.tgz"
},
"depd": {
"version": "1.0.1",
"from": "depd@>=1.0.1 <1.1.0",
"resolved": "http://registry.npmjs.org/depd/-/depd-1.0.1.tgz"
},
"on-finished": {
"version": "2.3.0",
"from": "on-finished@>=2.3.0 <2.4.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
"dependencies": {
"ee-first": {
"version": "1.1.1",
"from": "ee-first@1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz"
}
}
},
"on-headers": {
"version": "1.0.1",
"from": "on-headers@>=1.0.0 <1.1.0",
"resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz"
}
}
},
"proxy-middleware": {
"version": "0.15.0",
"from": "proxy-middleware@>=0.15.0 <0.16.0",
"resolved": "https://registry.npmjs.org/proxy-middleware/-/proxy-middleware-0.15.0.tgz"
},
"safetydance": {
"version": "0.0.19",
"from": "safetydance@0.0.19",
"resolved": "https://registry.npmjs.org/safetydance/-/safetydance-0.0.19.tgz"
},
"semver": {
"version": "5.1.0",
"from": "semver@>=5.1.0 <6.0.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz"
},
"superagent": {
"version": "0.21.0",
"from": "superagent@>=0.21.0 <0.22.0",
"resolved": "https://registry.npmjs.org/superagent/-/superagent-0.21.0.tgz",
"dependencies": {
"component-emitter": {
"version": "1.1.2",
"from": "component-emitter@1.1.2",
"resolved": "http://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz"
},
"cookiejar": {
"version": "2.0.1",
"from": "cookiejar@2.0.1",
"resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.0.1.tgz"
},
"extend": {
"version": "1.2.1",
"from": "extend@>=1.2.1 <1.3.0",
"resolved": "https://registry.npmjs.org/extend/-/extend-1.2.1.tgz"
},
"form-data": {
"version": "0.1.3",
"from": "form-data@0.1.3",
"resolved": "http://registry.npmjs.org/form-data/-/form-data-0.1.3.tgz",
"dependencies": {
"async": {
"version": "0.9.2",
"from": "async@>=0.9.0 <0.10.0",
"resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz"
},
"combined-stream": {
"version": "0.0.7",
"from": "combined-stream@>=0.0.4 <0.1.0",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz",
"dependencies": {
"delayed-stream": {
"version": "0.0.5",
"from": "delayed-stream@0.0.5",
"resolved": "http://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz"
}
}
}
}
},
"formidable": {
"version": "1.0.14",
"from": "formidable@1.0.14",
"resolved": "https://registry.npmjs.org/formidable/-/formidable-1.0.14.tgz"
},
"methods": {
"version": "1.0.1",
"from": "methods@1.0.1",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.0.1.tgz"
},
"mime": {
"version": "1.2.11",
"from": "mime@1.2.11",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz"
},
"qs": {
"version": "1.2.0",
"from": "qs@1.2.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-1.2.0.tgz"
},
"readable-stream": {
"version": "1.0.27-1",
"from": "readable-stream@1.0.27-1",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.27-1.tgz",
"dependencies": {
"core-util-is": {
"version": "1.0.1",
"from": "core-util-is@>=1.0.0 <1.1.0",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz"
},
"inherits": {
"version": "2.0.1",
"from": "inherits@>=2.0.1 <2.1.0",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
},
"isarray": {
"version": "0.0.1",
"from": "isarray@0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
},
"string_decoder": {
"version": "0.10.31",
"from": "string_decoder@>=0.10.0 <0.11.0",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"
}
}
},
"reduce-component": {
"version": "1.0.1",
"from": "reduce-component@1.0.1",
"resolved": "http://registry.npmjs.org/reduce-component/-/reduce-component-1.0.1.tgz"
}
}
}
}
}

View File

@@ -1,47 +0,0 @@
{
"name": "installer",
"description": "Cloudron Installer",
"version": "0.0.1",
"private": "true",
"author": {
"name": "Cloudron authors"
},
"repository": {
"type": "git"
},
"engines": [
"node >=4.0.0 <=4.1.1"
],
"dependencies": {
"async": "^1.5.0",
"body-parser": "^1.12.0",
"connect-lastmile": "0.0.13",
"debug": "^2.1.1",
"express": "^4.11.2",
"json": "^9.0.3",
"morgan": "^1.5.1",
"proxy-middleware": "^0.15.0",
"safetydance": "0.0.19",
"semver": "^5.1.0",
"superagent": "^0.21.0"
},
"devDependencies": {
"colors": "^1.1.2",
"commander": "^2.8.1",
"expect.js": "^0.3.1",
"istanbul": "^0.3.5",
"lodash": "^3.2.0",
"mocha": "^2.1.0",
"nock": "^0.59.1",
"sleep": "^3.0.0",
"superagent-sync": "^0.2.0",
"supererror": "^0.7.0",
"yesno": "0.0.1"
},
"scripts": {
"test": "NODE_ENV=test ./node_modules/istanbul/lib/cli.js test $1 ./node_modules/mocha/bin/_mocha -- -R spec ./src/test",
"precommit": "/bin/true",
"prepush": "npm test",
"postmerge": "/bin/true"
}
}

View File

@@ -1,112 +0,0 @@
/* jslint node: true */
'use strict';
var assert = require('assert'),
child_process = require('child_process'),
debug = require('debug')('installer:installer'),
path = require('path'),
safe = require('safetydance'),
semver = require('semver'),
superagent = require('superagent'),
util = require('util');
exports = module.exports = {
InstallerError: InstallerError,
provision: provision,
_ensureVersion: ensureVersion
};
var INSTALLER_CMD = path.join(__dirname, 'scripts/installer.sh'),
SUDO = '/usr/bin/sudo';
function InstallerError(reason, info) {
Error.call(this);
Error.captureStackTrace(this, this.constructor);
this.name = this.constructor.name;
this.reason = reason;
this.message = !info ? reason : (typeof info === 'object' ? JSON.stringify(info) : info);
}
util.inherits(InstallerError, Error);
InstallerError.INTERNAL_ERROR = 1;
InstallerError.ALREADY_PROVISIONED = 2;
// system until file has KillMode=control-group to bring down child processes
function spawn(tag, cmd, args, callback) {
assert.strictEqual(typeof tag, 'string');
assert.strictEqual(typeof cmd, 'string');
assert(util.isArray(args));
assert.strictEqual(typeof callback, 'function');
var cp = child_process.spawn(cmd, args, { timeout: 0 });
cp.stdout.setEncoding('utf8');
cp.stdout.on('data', function (data) { debug('%s (stdout): %s', tag, data); });
cp.stderr.setEncoding('utf8');
cp.stderr.on('data', function (data) { debug('%s (stderr): %s', tag, data); });
cp.on('error', function (error) {
debug('%s : child process errored %s', tag, error.message);
callback(error);
});
cp.on('exit', function (code, signal) {
debug('%s : child process exited. code: %d signal: %d', tag, code, signal);
if (signal) return callback(new Error('Exited with signal ' + signal));
if (code !== 0) return callback(new Error('Exited with code ' + code));
callback(null);
});
}
function ensureVersion(args, callback) {
assert.strictEqual(typeof args, 'object');
assert.strictEqual(typeof callback, 'function');
if (!args.data || !args.data.boxVersionsUrl) return callback(new Error('No boxVersionsUrl specified'));
if (args.sourceTarballUrl) return callback(null, args);
superagent.get(args.data.boxVersionsUrl).end(function (error, result) {
if (error && !error.response) return callback(error);
if (result.statusCode !== 200) return callback(new Error(util.format('Bad status: %s %s', result.statusCode, result.text)));
var versions = safe.JSON.parse(result.text);
if (!versions || typeof versions !== 'object') return callback(new Error('versions is not in valid format:' + safe.error));
var latestVersion = Object.keys(versions).sort(semver.compare).pop();
debug('ensureVersion: Latest version is %s etag:%s', latestVersion, result.header['etag']);
if (!versions[latestVersion]) return callback(new Error('No version available'));
if (!versions[latestVersion].sourceTarballUrl) return callback(new Error('No sourceTarballUrl specified'));
args.sourceTarballUrl = versions[latestVersion].sourceTarballUrl;
args.data.version = latestVersion;
callback(null, args);
});
}
function provision(args, callback) {
assert.strictEqual(typeof args, 'object');
assert.strictEqual(typeof callback, 'function');
if (process.env.NODE_ENV === 'test') return callback(null);
ensureVersion(args, function (error, result) {
if (error) return callback(error);
var pargs = [ INSTALLER_CMD ];
pargs.push('--sourcetarballurl', result.sourceTarballUrl);
pargs.push('--data', JSON.stringify(result.data));
debug('provision: calling with args %j', pargs);
// sudo is required for update()
spawn('provision', SUDO, pargs, callback);
});
}

View File

@@ -1,67 +0,0 @@
#!/bin/bash
set -eu -o pipefail
readonly BOX_SRC_DIR=/home/yellowtent/box
readonly DATA_DIR=/home/yellowtent/data
readonly script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
readonly json="${script_dir}/../../node_modules/.bin/json"
readonly curl="curl --fail --connect-timeout 20 --retry 10 --retry-delay 2 --max-time 300"
readonly is_update=$([[ -d "${BOX_SRC_DIR}" ]] && echo "yes" || echo "no")
# create a provision file for testing. %q escapes args. %q is reused as much as necessary to satisfy $@
(echo -e "#!/bin/bash\n"; printf "%q " "${script_dir}/installer.sh" "$@") > /home/yellowtent/provision.sh
chmod +x /home/yellowtent/provision.sh
arg_source_tarball_url=""
arg_data=""
args=$(getopt -o "" -l "sourcetarballurl:,data:" -n "$0" -- "$@")
eval set -- "${args}"
while true; do
case "$1" in
--sourcetarballurl) arg_source_tarball_url="$2";;
--data) arg_data="$2";;
--) break;;
*) echo "Unknown option $1"; exit 1;;
esac
shift 2
done
box_src_tmp_dir=$(mktemp -dt box-src-XXXXXX)
echo "Downloading box code from ${arg_source_tarball_url} to ${box_src_tmp_dir}"
while true; do
if $curl -L "${arg_source_tarball_url}" | tar -zxf - -C "${box_src_tmp_dir}"; then break; fi
echo "Failed to download source tarball, trying again"
sleep 5
done
while true; do
# for reasons unknown, the dtrace package will fail. but rebuilding second time will work
if cd "${box_src_tmp_dir}" && npm rebuild; then break; fi
echo "Failed to rebuild, trying again"
sleep 5
done
if [[ "${is_update}" == "yes" ]]; then
echo "Setting up update splash screen"
"${box_src_tmp_dir}/setup/splashpage.sh" --data "${arg_data}" # show splash from new code
${BOX_SRC_DIR}/setup/stop.sh # stop the old code
fi
# switch the codes
rm -rf "${BOX_SRC_DIR}"
mv "${box_src_tmp_dir}" "${BOX_SRC_DIR}"
chown -R yellowtent.yellowtent "${BOX_SRC_DIR}"
# create a start file for testing. %q escapes args
(echo -e "#!/bin/bash\n"; printf "%q " "${BOX_SRC_DIR}/setup/start.sh" --data "${arg_data}") > /home/yellowtent/setup_start.sh
chmod +x /home/yellowtent/setup_start.sh
echo "Calling box setup script"
"${BOX_SRC_DIR}/setup/start.sh" --data "${arg_data}"

View File

@@ -1,144 +0,0 @@
#!/usr/bin/env node
/* jslint node: true */
'use strict';
var assert = require('assert'),
async = require('async'),
debug = require('debug')('installer:server'),
express = require('express'),
fs = require('fs'),
http = require('http'),
HttpError = require('connect-lastmile').HttpError,
HttpSuccess = require('connect-lastmile').HttpSuccess,
installer = require('./installer.js'),
json = require('body-parser').json,
lastMile = require('connect-lastmile'),
morgan = require('morgan'),
superagent = require('superagent');
exports = module.exports = {
start: start,
stop: stop
};
var PROVISION_CONFIG_FILE = '/root/provision.json';
var CLOUDRON_CONFIG_FILE = '/home/yellowtent/configs/cloudron.conf';
var gHttpServer = null; // update server; used for updates
function provisionDigitalOcean(callback) {
if (fs.existsSync(CLOUDRON_CONFIG_FILE)) return callback(null); // already provisioned
superagent.get('http://169.254.169.254/metadata/v1.json').end(function (error, result) {
if (error || result.statusCode !== 200) {
console.error('Error getting metadata', error);
return callback(new Error('Error getting metadata'));
}
var userData = JSON.parse(result.body.user_data);
installer.provision(userData, callback);
});
}
function provisionLocal(callback) {
if (fs.existsSync(CLOUDRON_CONFIG_FILE)) return callback(null); // already provisioned
if (!fs.existsSync(PROVISION_CONFIG_FILE)) {
console.error('No provisioning data found at %s', PROVISION_CONFIG_FILE);
return callback(new Error('No provisioning data found'));
}
var userData = require(PROVISION_CONFIG_FILE);
installer.provision(userData, callback);
}
function update(req, res, next) {
assert.strictEqual(typeof req.body, 'object');
if (!req.body.sourceTarballUrl || typeof req.body.sourceTarballUrl !== 'string') return next(new HttpError(400, 'No sourceTarballUrl provided'));
if (!req.body.data || typeof req.body.data !== 'object') return next(new HttpError(400, 'No data provided'));
debug('provision: received from box %j', req.body);
installer.provision(req.body, function (error) {
if (error) console.error(error);
});
next(new HttpSuccess(202, { }));
}
function startUpdateServer(callback) {
assert.strictEqual(typeof callback, 'function');
debug('Starting update server');
var app = express();
var router = new express.Router();
if (process.env.NODE_ENV !== 'test') app.use(morgan('dev', { immediate: false }));
app.use(json({ strict: true }))
.use(router)
.use(lastMile());
router.post('/api/v1/installer/update', update);
gHttpServer = http.createServer(app);
gHttpServer.on('error', console.error);
gHttpServer.listen(2020, '127.0.0.1', callback);
}
function stopUpdateServer(callback) {
assert.strictEqual(typeof callback, 'function');
debug('Stopping update server');
if (!gHttpServer) return callback(null);
gHttpServer.close(callback);
gHttpServer = null;
}
function start(callback) {
assert.strictEqual(typeof callback, 'function');
var actions;
if (process.env.PROVISION === 'local') {
debug('Starting Installer in selfhost mode');
actions = [
startUpdateServer,
provisionLocal
];
} else { // current fallback, should be 'digitalocean' eventually, see initializeBaseUbuntuImage.sh
debug('Starting Installer in managed mode');
actions = [
startUpdateServer,
provisionDigitalOcean
];
}
async.series(actions, callback);
}
function stop(callback) {
assert.strictEqual(typeof callback, 'function');
async.series([
stopUpdateServer
], callback);
}
if (require.main === module) {
start(function (error) {
if (error) console.error(error);
});
}

View File

@@ -1,179 +0,0 @@
/* jslint node:true */
/* global it:false */
/* global describe:false */
/* global before:false */
/* global after:false */
'use strict';
var expect = require('expect.js'),
fs = require('fs'),
path = require('path'),
nock = require('nock'),
os = require('os'),
request = require('superagent'),
server = require('../server.js'),
installer = require('../installer.js'),
_ = require('lodash');
var EXTERNAL_SERVER_URL = 'https://localhost:4443';
var INTERNAL_SERVER_URL = 'http://localhost:2020';
var APPSERVER_ORIGIN = 'http://appserver';
var FQDN = os.hostname();
describe('Server', function () {
this.timeout(5000);
before(function (done) {
var user_data = JSON.stringify({ apiServerOrigin: APPSERVER_ORIGIN }); // user_data is a string
var scope = nock('http://169.254.169.254')
.persist()
.get('/metadata/v1.json')
.reply(200, JSON.stringify({ user_data: user_data }), { 'Content-Type': 'application/json' });
done();
});
after(function (done) {
nock.cleanAll();
done();
});
describe('starts and stop', function () {
it('starts', function (done) {
server.start(done);
});
it('stops', function (done) {
server.stop(done);
});
});
describe('update (internal server)', function () {
before(function (done) {
server.start(done);
});
after(function (done) {
server.stop(done);
});
it('does not respond to provision', function (done) {
request.post(INTERNAL_SERVER_URL + '/api/v1/installer/provision').send({ }).end(function (error, result) {
expect(error).to.not.be.ok();
expect(result.statusCode).to.equal(404);
done();
});
});
it('does not respond to restore', function (done) {
request.post(INTERNAL_SERVER_URL + '/api/v1/installer/restore').send({ }).end(function (error, result) {
expect(error).to.not.be.ok();
expect(result.statusCode).to.equal(404);
done();
});
});
var data = {
sourceTarballUrl: "https://foo.tar.gz",
data: {
token: 'sometoken',
apiServerOrigin: APPSERVER_ORIGIN,
webServerOrigin: 'https://somethingelse.com',
fqdn: 'www.something.com',
tlsKey: 'key',
tlsCert: 'cert',
boxVersionsUrl: 'https://versions.json',
version: '0.1'
}
};
Object.keys(data).forEach(function (key) {
it('fails due to missing ' + key, function (done) {
var dataCopy = _.merge({ }, data);
delete dataCopy[key];
request.post(INTERNAL_SERVER_URL + '/api/v1/installer/update').send(dataCopy).end(function (error, result) {
expect(error).to.not.be.ok();
expect(result.statusCode).to.equal(400);
done();
});
});
});
it('succeeds', function (done) {
request.post(INTERNAL_SERVER_URL + '/api/v1/installer/update').send(data).end(function (error, result) {
expect(error).to.not.be.ok();
expect(result.statusCode).to.equal(202);
done();
});
});
});
describe('ensureVersion', function () {
before(function () {
process.env.NODE_ENV = undefined;
});
after(function () {
process.env.NODE_ENV = 'test';
});
it ('fails without data', function (done) {
installer._ensureVersion({}, function (error) {
expect(error).to.be.an(Error);
done();
});
});
it ('fails without boxVersionsUrl', function (done) {
installer._ensureVersion({ data: {}}, function (error) {
expect(error).to.be.an(Error);
done();
});
});
it ('succeeds with sourceTarballUrl', function (done) {
var data = {
sourceTarballUrl: 'sometarballurl',
data: {
boxVersionsUrl: 'http://foobar/versions.json'
}
};
installer._ensureVersion(data, function (error, result) {
expect(error).to.equal(null);
expect(result).to.eql(data);
done();
});
});
it ('succeeds without sourceTarballUrl', function (done) {
var versions = {
'0.1.0': {
sourceTarballUrl: 'sometarballurl1'
},
'0.2.0': {
sourceTarballUrl: 'sometarballurl2'
}
};
var scope = nock('http://foobar')
.get('/versions.json')
.reply(200, JSON.stringify(versions), { 'Content-Type': 'application/json' });
var data = {
data: {
boxVersionsUrl: 'http://foobar/versions.json'
}
};
installer._ensureVersion(data, function (error, result) {
expect(error).to.equal(null);
expect(result.sourceTarballUrl).to.equal(versions['0.2.0'].sourceTarballUrl);
expect(result.data.boxVersionsUrl).to.equal(data.data.boxVersionsUrl);
done();
});
});
});
});

View File

@@ -1,54 +0,0 @@
#!/bin/bash
set -eu -o pipefail
readonly USER_HOME="/home/yellowtent"
readonly APPS_SWAP_FILE="/apps.swap"
readonly USER_DATA_FILE="/root/user_data.img"
readonly USER_DATA_DIR="/home/yellowtent/data"
# detect device
if [[ -b "/dev/vda1" ]]; then
disk_device="/dev/vda1"
fi
if [[ -b "/dev/xvda1" ]]; then
disk_device="/dev/xvda1"
fi
# all sizes are in mb
readonly physical_memory=$(free -m | awk '/Mem:/ { print $2 }')
readonly swap_size="${physical_memory}" # if you change this, fix enoughResourcesAvailable() in client.js
readonly app_count=$((${physical_memory} / 200)) # estimated app count
readonly disk_size_gb=$(fdisk -l ${disk_device} | grep "Disk ${disk_device}" | awk '{ print $3 }')
readonly disk_size=$((disk_size_gb * 1024))
readonly system_size=10240 # 10 gigs for system libs, apps images, installer, box code and tmp
readonly ext4_reserved=$((disk_size * 5 / 100)) # this can be changes using tune2fs -m percent /dev/vda1
echo "Disk device: ${disk_device}"
echo "Physical memory: ${physical_memory}"
echo "Estimated app count: ${app_count}"
echo "Disk size: ${disk_size}"
# Allocate swap for general app usage
if [[ ! -f "${APPS_SWAP_FILE}" ]]; then
echo "Creating Apps swap file of size ${swap_size}M"
fallocate -l "${swap_size}m" "${APPS_SWAP_FILE}"
chmod 600 "${APPS_SWAP_FILE}"
mkswap "${APPS_SWAP_FILE}"
swapon "${APPS_SWAP_FILE}"
echo "${APPS_SWAP_FILE} none swap sw 0 0" >> /etc/fstab
else
echo "Apps Swap file already exists"
fi
echo "Resizing data volume"
home_data_size=$((disk_size - system_size - swap_size - ext4_reserved))
echo "Resizing up btrfs user data to size ${home_data_size}M"
umount "${USER_DATA_DIR}" || true
# Do not preallocate (non-sparse). Doing so overallocates for data too much in advance and causes problems when using many apps with smaller data
# fallocate -l "${home_data_size}m" "${USER_DATA_FILE}" # does not overwrite existing data
truncate -s "${home_data_size}m" "${USER_DATA_FILE}" # this will shrink it if the file had existed. this is useful when running this script on a live system
mount -t btrfs -o loop,nosuid "${USER_DATA_FILE}" ${USER_DATA_DIR}
btrfs filesystem resize max "${USER_DATA_DIR}"

BIN
logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@@ -1,5 +1,5 @@
var dbm = require('db-migrate');
var type = dbm.dataType;
'use strict';
var url = require('url');
exports.up = function(db, callback) {

View File

@@ -1,5 +1,4 @@
var dbm = require('db-migrate');
var type = dbm.dataType;
'use strict';
var fs = require('fs'),
async = require('async'),

View File

@@ -1,5 +1,4 @@
dbm = dbm || require('db-migrate');
var type = dbm.dataType;
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE users ADD COLUMN resetToken VARCHAR(128) DEFAULT ""', function (error) {
@@ -14,4 +13,3 @@ exports.down = function(db, callback) {
callback(error);
});
};

View File

@@ -1,5 +1,4 @@
dbm = dbm || require('db-migrate');
var type = dbm.dataType;
'use strict';
exports.up = function(db, callback) {
db.runSql('DELETE FROM tokens', [], function (error) {

View File

@@ -1,5 +1,4 @@
dbm = dbm || require('db-migrate');
var type = dbm.dataType;
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE authcodes ADD COLUMN expiresAt BIGINT NOT NULL', function (error) {
@@ -13,4 +12,4 @@ exports.down = function(db, callback) {
if (error) console.error(error);
callback(error);
});
};
};

View File

@@ -1,5 +1,4 @@
dbm = dbm || require('db-migrate');
var type = dbm.dataType;
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE appPortBindings ADD COLUMN environmentVariable VARCHAR(128) NOT NULL', function (error) {
@@ -14,4 +13,3 @@ exports.down = function(db, callback) {
callback(error);
});
};

View File

@@ -1,5 +1,4 @@
dbm = dbm || require('db-migrate');
var type = dbm.dataType;
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE appPortBindings DROP COLUMN containerPort', function (error) {
@@ -14,4 +13,3 @@ exports.down = function(db, callback) {
callback(error);
});
};

View File

@@ -1,5 +1,4 @@
dbm = dbm || require('db-migrate');
var type = dbm.dataType;
'use strict';
exports.up = function(db, callback) {
db.runSql('DELETE FROM tokens', [], function (error) {

View File

@@ -1,5 +1,4 @@
dbm = dbm || require('db-migrate');
var type = dbm.dataType;
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE apps DROP COLUMN version', function (error) {
@@ -14,4 +13,3 @@ exports.down = function(db, callback) {
callback(error);
});
};

View File

@@ -1,5 +1,4 @@
dbm = dbm || require('db-migrate');
var type = dbm.dataType;
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE apps DROP COLUMN healthy, ADD COLUMN health VARCHAR(128)', [], function (error) {

View File

@@ -1,5 +1,4 @@
dbm = dbm || require('db-migrate');
var type = dbm.dataType;
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE apps ADD COLUMN lastBackupId VARCHAR(128)', function (error) {
@@ -14,4 +13,3 @@ exports.down = function(db, callback) {
callback(error);
});
};

View File

@@ -1,5 +1,4 @@
dbm = dbm || require('db-migrate');
var type = dbm.dataType;
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE apps ADD COLUMN createdAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP', function (error) {
@@ -14,4 +13,3 @@ exports.down = function(db, callback) {
callback(error);
});
};

View File

@@ -1,5 +1,4 @@
dbm = dbm || require('db-migrate');
var type = dbm.dataType;
'use strict';
exports.up = function(db, callback) {
// everyday at 1am
@@ -8,5 +7,4 @@ exports.up = function(db, callback) {
exports.down = function(db, callback) {
db.runSql('DELETE * FROM settings WHERE name="autoupdate_pattern"', [ ], callback);
}
};

View File

@@ -1,6 +1,6 @@
dbm = dbm || require('db-migrate');
'use strict';
var safe = require('safetydance');
var type = dbm.dataType;
exports.up = function(db, callback) {
var tz = safe.fs.readFileSync('/etc/timezone', 'utf8');
@@ -12,4 +12,3 @@ exports.up = function(db, callback) {
exports.down = function(db, callback) {
db.runSql('DELETE * FROM settings WHERE name="time_zone"', [ ], callback);
};

View File

@@ -1,5 +1,5 @@
dbm = dbm || require('db-migrate');
var type = dbm.dataType;
'use strict';
var async = require('async');
exports.up = function(db, callback) {

View File

@@ -1,5 +1,5 @@
dbm = dbm || require('db-migrate');
var type = dbm.dataType;
'use strict';
var async = require('async');
exports.up = function(db, callback) {

View File

@@ -1,5 +1,4 @@
dbm = dbm || require('db-migrate');
var type = dbm.dataType;
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE apps ADD COLUMN lastManifestJson VARCHAR(2048)', function (error) {
@@ -14,4 +13,3 @@ exports.down = function(db, callback) {
callback(error);
});
};

View File

@@ -1,5 +1,4 @@
var dbm = global.dbm || require('db-migrate');
var type = dbm.dataType;
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE apps CHANGE lastManifestJson lastBackupConfigJson VARCHAR(2048)', [], function (error) {
@@ -14,4 +13,3 @@ exports.down = function(db, callback) {
callback(error);
});
};

View File

@@ -1,5 +1,4 @@
dbm = dbm || require('db-migrate');
var type = dbm.dataType;
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE apps ADD COLUMN oldConfigJson VARCHAR(2048)', function (error) {
@@ -14,4 +13,3 @@ exports.down = function(db, callback) {
callback(error);
});
};

View File

@@ -1,5 +1,4 @@
var dbm = global.dbm || require('db-migrate');
var type = dbm.dataType;
'use strict';
exports.up = function(db, callback) {
db.runSql('DELETE FROM settings', [ ], callback);

View File

@@ -1,5 +1,4 @@
dbm = dbm || require('db-migrate');
var type = dbm.dataType;
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE apps ADD COLUMN oauthProxy BOOLEAN DEFAULT 0', function (error) {
@@ -14,4 +13,3 @@ exports.down = function(db, callback) {
callback(error);
});
};

View File

@@ -1,5 +1,5 @@
dbm = dbm || require('db-migrate');
var type = dbm.dataType;
'use strict';
var async = require('async');
exports.up = function(db, callback) {

View File

@@ -1,5 +1,4 @@
var dbm = global.dbm || require('db-migrate');
var type = dbm.dataType;
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE apps CHANGE accessRestriction accessRestrictionJson VARCHAR(2048)', [], function (error) {
@@ -14,4 +13,3 @@ exports.down = function(db, callback) {
callback(error);
});
};

View File

@@ -1,5 +1,4 @@
dbm = dbm || require('db-migrate');
var type = dbm.dataType;
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE apps MODIFY manifestJson TEXT', [], function (error) {

View File

@@ -1,5 +1,5 @@
dbm = dbm || require('db-migrate');
var type = dbm.dataType;
'use strict';
var async = require('async');
exports.up = function(db, callback) {

View File

@@ -1,4 +1,4 @@
dbm = dbm || require('db-migrate');
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE users ADD COLUMN displayName VARCHAR(512) DEFAULT ""', function (error) {

View File

@@ -1,4 +1,4 @@
dbm = dbm || require('db-migrate');
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE apps ADD COLUMN memoryLimit BIGINT DEFAULT 0', function (error) {

View File

@@ -1,8 +1,7 @@
var dbm = global.dbm || require('db-migrate');
var type = dbm.dataType;
'use strict';
exports.up = function(db, callback) {
var cmd = "CREATE TABLE groups(" +
var cmd = "CREATE TABLE userGroups(" +
"id VARCHAR(128) NOT NULL UNIQUE," +
"name VARCHAR(128) NOT NULL UNIQUE," +
"PRIMARY KEY(id))";
@@ -14,7 +13,7 @@ exports.up = function(db, callback) {
};
exports.down = function(db, callback) {
db.runSql('DROP TABLE groups', function (error) {
db.runSql('DROP TABLE userGroups', function (error) {
if (error) console.error(error);
callback(error);
});

View File

@@ -1,11 +1,10 @@
var dbm = global.dbm || require('db-migrate');
var type = dbm.dataType;
'use strict';
exports.up = function(db, callback) {
var cmd = "CREATE TABLE IF NOT EXISTS groupMembers(" +
"groupId VARCHAR(128) NOT NULL," +
"userId VARCHAR(128) NOT NULL," +
"FOREIGN KEY(groupId) REFERENCES groups(id)," +
"FOREIGN KEY(groupId) REFERENCES userGroups(id)," +
"FOREIGN KEY(userId) REFERENCES users(id));";
db.runSql(cmd, function (error) {

View File

@@ -1,14 +1,13 @@
'use strict';
var dbm = global.dbm || require('db-migrate');
var async = require('async');
var ADMIN_GROUP_ID = 'admin'; // see groups.js
var ADMIN_GROUP_ID = 'admin'; // see constants.js
exports.up = function(db, callback) {
async.series([
db.runSql.bind(db, 'START TRANSACTION;'),
db.runSql.bind(db, 'INSERT INTO groups (id, name) VALUES (?, ?)', [ ADMIN_GROUP_ID, 'admin' ]),
db.runSql.bind(db, 'INSERT INTO userGroups (id, name) VALUES (?, ?)', [ ADMIN_GROUP_ID, 'admin' ]),
function migrateAdminFlag(done) {
db.all('SELECT * FROM users WHERE admin=1', function (error, results) {
if (error) return done(error);

View File

@@ -1,5 +1,4 @@
var dbm = global.dbm || require('db-migrate');
var type = dbm.dataType;
'use strict';
exports.up = function(db, callback) {
var cmd = "CREATE TABLE backups(" +

View File

@@ -1,5 +1,4 @@
var dbm = global.dbm || require('db-migrate');
var type = dbm.dataType;
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE backups ADD COLUMN configJson TEXT', function (error) {
@@ -14,4 +13,3 @@ exports.down = function(db, callback) {
callback(error);
});
};

View File

@@ -1,5 +1,4 @@
var dbm = dbm || require('db-migrate');
var type = dbm.dataType;
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE backups DROP COLUMN configJson', function (error) {
@@ -14,4 +13,3 @@ exports.down = function(db, callback) {
callback(error);
});
};

View File

@@ -1,5 +1,4 @@
var dbm = global.dbm || require('db-migrate');
var type = dbm.dataType;
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE backups CHANGE filename id VARCHAR(128)', [], function (error) {

View File

@@ -1,4 +1,4 @@
dbm = dbm || require('db-migrate');
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE users MODIFY username VARCHAR(254) UNIQUE', [], function (error) {

View File

@@ -0,0 +1,15 @@
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE apps ADD COLUMN altDomain VARCHAR(256)', function (error) {
if (error) console.error(error);
callback(error);
});
};
exports.down = function(db, callback) {
db.runSql('ALTER TABLE apps DROP COLUMN altDomain', function (error) {
if (error) console.error(error);
callback(error);
});
};

View File

@@ -0,0 +1,23 @@
'use strict';
exports.up = function(db, callback) {
var cmd = "CREATE TABLE eventlog(" +
"id VARCHAR(128) NOT NULL," +
"source TEXT," +
"creationTime TIMESTAMP," +
"action VARCHAR(128) NOT NULL," +
"data TEXT," +
"PRIMARY KEY (id))";
db.runSql(cmd, function (error) {
if (error) console.error(error);
callback(error);
});
};
exports.down = function(db, callback) {
db.runSql('DROP TABLE eventlog', function (error) {
if (error) console.error(error);
callback(error);
});
};

View File

@@ -0,0 +1,15 @@
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE users ADD COLUMN showTutorial BOOLEAN DEFAULT 0', function (error) {
if (error) console.error(error);
callback(error);
});
};
exports.down = function(db, callback) {
db.runSql('ALTER TABLE users DROP COLUMN showTutorial', function (error) {
if (error) console.error(error);
callback(error);
});
};

View File

@@ -0,0 +1,21 @@
'use strict';
exports.up = function(db, callback) {
var cmd = 'CREATE TABLE mailboxes(' +
'name VARCHAR(128) NOT NULL,' +
'aliasTarget VARCHAR(128),' +
'creationTime TIMESTAMP,' +
'PRIMARY KEY (name))';
db.runSql(cmd, function (error) {
if (error) console.error(error);
callback(error);
});
};
exports.down = function(db, callback) {
db.runSql('DROP TABLE mailboxes', function (error) {
if (error) console.error(error);
callback(error);
});
};

View File

@@ -0,0 +1,26 @@
'use strict';
var async = require('async');
// imports mailbox entries for existing users
exports.up = function(db, callback) {
async.series([
db.runSql.bind(db, 'START TRANSACTION;'),
function addUserMailboxes(done) {
db.all('SELECT username FROM users', function (error, results) {
if (error) return done(error);
async.eachSeries(results, function (r, next) {
if (!r.username) return next();
db.runSql('INSERT INTO mailboxes (name) VALUES (?)', [ r.username ], next);
}, done);
});
},
db.runSql.bind(db, 'COMMIT')
], callback);
};
exports.down = function(db, callback) {
callback();
};

View File

@@ -0,0 +1,15 @@
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE apps DROP COLUMN lastBackupConfigJson', function (error) {
if (error) console.error(error);
callback(error);
});
};
exports.down = function(db, callback) {
db.runSql('ALTER TABLE apps ADD COLUMN lastBackupConfigJson TEXT', function (error) {
if (error) console.error(error);
callback(error);
});
};

View File

@@ -0,0 +1,15 @@
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE apps MODIFY installationProgress TEXT', [], function (error) {
if (error) console.error(error);
callback(error);
});
};
exports.down = function(db, callback) {
db.runSql('ALTER TABLE apps MODIFY installationProgress VARCHAR(512)', [], function (error) {
if (error) console.error(error);
callback(error);
});
};

View File

@@ -0,0 +1,15 @@
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE apps ADD COLUMN xFrameOptions VARCHAR(512)', function (error) {
if (error) console.error(error);
callback(error);
});
};
exports.down = function(db, callback) {
db.runSql('ALTER TABLE apps DROP COLUMN xFrameOptions', function (error) {
if (error) console.error(error);
callback(error);
});
};

View File

@@ -0,0 +1,15 @@
'use strict';
exports.up = function(db, callback) {
db.all('SELECT id FROM users', function (error, results) {
if (error) return callback(error);
// existing cloudrons have email enabled by default. future cloudrons will have it disabled by default
var enable = results.length !== 0;
db.runSql('INSERT settings (name, value) VALUES("mail_config", ?)', [ JSON.stringify({ enabled: enable }) ], callback);
});
};
exports.down = function(db, callback) {
db.runSql('DELETE * FROM settings WHERE name="mail_config"', [ ], callback);
};

View File

@@ -0,0 +1,73 @@
'use strict';
var async = require('async');
exports.up = function(db, callback) {
async.series([
db.runSql.bind(db, 'ALTER TABLE mailboxes ADD COLUMN ownerId VARCHAR(128)'),
db.runSql.bind(db, 'ALTER TABLE mailboxes ADD COLUMN ownerType VARCHAR(16)'),
db.runSql.bind(db, 'START TRANSACTION;'),
function addGroupMailboxes(done) {
console.log('Importing group mailboxes');
db.all('SELECT id, name FROM userGroups', function (error, results) {
if (error) return done(error);
async.eachSeries(results, function (g, next) {
db.runSql('INSERT INTO mailboxes (ownerId, ownerType, name) VALUES (?, ?, ?)', [ g.id, 'group', g.name ], function (error) {
if (error) console.error('Error importing group ' + JSON.stringify(g) + error);
next();
});
}, done);
});
},
function addAppMailboxes(done) {
console.log('Importing app mail boxes');
db.all('SELECT id, location, manifestJson FROM apps', function (error, results) {
if (error) return done(error);
async.eachSeries(results, function (a, next) {
var manifest = JSON.parse(a.manifestJson);
if (!manifest.addons['sendmail'] && !manifest.addons['recvmail']) return next();
var mailboxName = (a.location ? a.location : manifest.title.replace(/[^a-zA-Z0-9]/g, '')) + '.app';
db.runSql('INSERT INTO mailboxes (ownerId, ownerType, name) VALUES (?, ?, ?)', [ a.id, 'app', mailboxName ], function (error) {
if (error) console.error('Error importing app ' + JSON.stringify(a) + error);
next();
});
}, done);
});
},
function setUserMailboxOwnerIds(done) {
console.log('Setting owner id of user mailboxes and aliases');
db.all('SELECT id, username FROM users', function (error, results) {
if (error) return done(error);
async.eachSeries(results, function (u, next) {
if (!u.username) return next();
db.runSql('UPDATE mailboxes SET ownerId = ?, ownerType = ? WHERE name = ? OR aliasTarget = ?', [ u.id, 'user', u.username, u.username ], function (error) {
if (error) console.error('Error setting ownerid ' + JSON.stringify(u) + error);
next();
});
}, done);
});
},
db.runSql.bind(db, 'COMMIT'),
db.runSql.bind(db, 'ALTER TABLE mailboxes MODIFY ownerId VARCHAR(128) NOT NULL'),
db.runSql.bind(db, 'ALTER TABLE mailboxes MODIFY ownerType VARCHAR(128) NOT NULL'),
], callback);
};
exports.down = function(db, callback) {
db.runSql('ALTER TABLE mailboxes DROP COLUMN ownerId', function (error) {
if (error) console.error(error);
db.runSql('ALTER TABLE mailboxes DROP COLUMN ownerType', function (error) {
if (error) console.error(error);
callback(error);
});
});
};

View File

@@ -0,0 +1,15 @@
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE apps ADD COLUMN sso BOOLEAN DEFAULT 1', function (error) {
if (error) console.error(error);
callback(error);
});
};
exports.down = function(db, callback) {
db.runSql('ALTER TABLE apps DROP COLUMN sso', function (error) {
if (error) console.error(error);
callback(error);
});
};

View File

@@ -0,0 +1,15 @@
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE apps DROP COLUMN oauthProxy', function (error) {
if (error) console.error(error);
callback(error);
});
};
exports.down = function(db, callback) {
db.runSql('ALTER TABLE apps ADD COLUMN oauthProxy BOOLEAN DEFAULT 0', function (error) {
if (error) console.error(error);
callback(error);
});
};

View File

@@ -0,0 +1,15 @@
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE users DROP COLUMN showTutorial', function (error) {
if (error) console.error(error);
callback(error);
});
};
exports.down = function(db, callback) {
db.runSql('ALTER TABLE users ADD COLUMN showTutorial BOOLEAN DEFAULT 0', function (error) {
if (error) console.error(error);
callback(error);
});
};

View File

@@ -0,0 +1,15 @@
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE apps ADD COLUMN debugModeJson TEXT', function (error) {
if (error) console.error(error);
callback(error);
});
};
exports.down = function(db, callback) {
db.runSql('ALTER TABLE apps DROP COLUMN debugModeJson ', function (error) {
if (error) console.error(error);
callback(error);
});
};

View File

@@ -0,0 +1,15 @@
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE backups MODIFY dependsOn TEXT', [], function (error) {
if (error) console.error(error);
callback(error);
});
};
exports.down = function(db, callback) {
db.runSql('ALTER TABLE backups MODIFY dependsOn VARCHAR(4096)', [], function (error) {
if (error) console.error(error);
callback(error);
});
};

View File

@@ -0,0 +1,16 @@
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE appAddonConfigs ADD COLUMN name VARCHAR(128)', function (error) {
if (error) console.error(error);
callback(error);
});
};
exports.down = function(db, callback) {
db.runSql('ALTER TABLE appAddonConfigs DROP COLUMN name', function (error) {
if (error) console.error(error);
callback(error);
});
};

View File

@@ -0,0 +1,14 @@
'use strict';
var url = require('url');
exports.up = function(db, callback) {
var dbName = url.parse(process.env.DATABASE_URL).path.substr(1); // remove slash
// by default, mysql collates case insensitively. 'utf8_general_cs' is not available
db.runSql('ALTER DATABASE ' + dbName + ' DEFAULT CHARACTER SET=utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci', callback);
};
exports.down = function(db, callback) {
callback();
};

View File

@@ -0,0 +1,95 @@
'use strict';
var async = require('async');
// from apps.js DO NOT UPDATE WHEN apps.js changes, as this is part of db migration!!
function postProcess(result) {
try {
result.manifest = JSON.parse(result.manifestJson);
delete result.manifestJson;
result.oldConfig = JSON.parse(result.oldConfigJson);
delete result.oldConfigJson;
result.portBindings = { };
var hostPorts = result.hostPorts === null ? [ ] : result.hostPorts.split(',');
var environmentVariables = result.environmentVariables === null ? [ ] : result.environmentVariables.split(',');
delete result.hostPorts;
delete result.environmentVariables;
for (var i = 0; i < environmentVariables.length; i++) {
result.portBindings[environmentVariables[i]] = parseInt(hostPorts[i], 10);
}
result.accessRestriction = JSON.parse(result.accessRestrictionJson);
if (result.accessRestriction && !result.accessRestriction.users) result.accessRestriction.users = [];
delete result.accessRestrictionJson;
// TODO remove later once all apps have this attribute
result.xFrameOptions = result.xFrameOptions || 'SAMEORIGIN';
result.sso = !!result.sso; // make it bool
result.debugMode = JSON.parse(result.debugModeJson);
delete result.debugModeJson;
} catch (e) {
console.error('Failed to get restoreConfig for app.', e);
console.error('Falling back to empty values to make the update succeed.');
result.manifest = null;
}
}
// from apps.js DO NOT UPDATE WHEN apps.js changes, as this is part of db migration!!
var APPS_FIELDS_PREFIXED = [ 'apps.id', 'apps.appStoreId', 'apps.installationState', 'apps.installationProgress', 'apps.runState',
'apps.health', 'apps.containerId', 'apps.manifestJson', 'apps.httpPort', 'apps.location', 'apps.dnsRecordId',
'apps.accessRestrictionJson', 'apps.lastBackupId', 'apps.oldConfigJson', 'apps.memoryLimit', 'apps.altDomain',
'apps.xFrameOptions', 'apps.sso', 'apps.debugModeJson' ].join(',');
exports.up = function(db, callback) {
async.series([
db.runSql.bind(db, 'ALTER TABLE backups ADD COLUMN restoreConfigJson TEXT'),
// fill all the backups with restoreConfigs from current apps
function addRestoreConfigs(callback) {
console.log('Importing restoreConfigs');
var appQuery = 'SELECT ' + APPS_FIELDS_PREFIXED + ',' +
'GROUP_CONCAT(CAST(appPortBindings.hostPort AS CHAR(6))) AS hostPorts, GROUP_CONCAT(appPortBindings.environmentVariable) AS environmentVariables' +
' FROM apps LEFT OUTER JOIN appPortBindings ON apps.id = appPortBindings.appId' +
' GROUP BY apps.id ORDER BY apps.id';
db.all(appQuery, function (error, apps) {
if (error) return callback(error);
apps.forEach(postProcess);
async.eachSeries(apps, function (app, next) {
if (app.manifest === null) return next();
db.all('SELECT * FROM backups WHERE type="app" AND id LIKE "%app%\\_' + app.id + '\\_%"', function (error, backups) {
if (error) return next(error);
// from apps.js:getAppConfig()
var restoreConfig = {
manifest: app.manifest,
location: app.location,
accessRestriction: app.accessRestriction,
portBindings: app.portBindings,
memoryLimit: app.memoryLimit,
xFrameOptions: app.xFrameOptions || 'SAMEORIGIN',
altDomain: app.altDomain
};
async.eachSeries(backups, function (backup, next) {
db.runSql('UPDATE backups SET restoreConfigJson=?,creationTime=creationTime WHERE id=?', [ JSON.stringify(restoreConfig), backup.id ], next);
}, next);
});
}, callback);
});
}
], callback);
};
exports.down = function(db, callback) {
db.runSql('ALTER TABLE backups DROP COLUMN restoreConfigJson', callback);
};

View File

@@ -0,0 +1,22 @@
'use strict';
exports.up = function(db, callback) {
db.all('SELECT value FROM settings WHERE name="backup_config"', function (error, results) {
if (error || results.length === 0) return callback(error);
var backupConfig = JSON.parse(results[0].value);
if (backupConfig.provider === 'filesystem') {
backupConfig.retentionSecs = 2 * 24 * 60 * 60; // 2 days
} else if (backupConfig.provider === 's3') { // S3
backupConfig.retentionSecs = -1;
} else if (backupConfig.provider === 'caas') {
backupConfig.retentionSecs = 10 * 24 * 60 * 60; // 10 days
}
db.runSql('UPDATE settings SET value=? WHERE name="backup_config"', [ JSON.stringify(backupConfig) ], callback);
});
};
exports.down = function(db, callback) {
callback();
};

View File

@@ -0,0 +1,9 @@
'use strict';
exports.up = function(db, callback) {
db.runSql('INSERT settings (name, value) VALUES("mail_relay", ?)', [ JSON.stringify({ provider: 'cloudron-smtp' }) ], callback);
};
exports.down = function(db, callback) {
db.runSql('DELETE * FROM settings WHERE name="mail_relay"', [ ], callback);
};

View File

@@ -0,0 +1,15 @@
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE apps ADD COLUMN robotsTxt TEXT', function (error) {
if (error) console.error(error);
callback(error);
});
};
exports.down = function(db, callback) {
db.runSql('ALTER TABLE apps DROP COLUMN robotsTxt', function (error) {
if (error) console.error(error);
callback(error);
});
};

View File

@@ -0,0 +1,29 @@
'use strict';
// we used to have JSON as the db type for those two, however mariadb does not support it
// and we never used any JSON related features, but have the TEXT pattern everywhere
// This ensures all old cloudrons will have the columns altered
exports.up = function(db, callback) {
db.runSql('ALTER TABLE eventlog MODIFY data TEXT', [], function (error) {
if (error) console.error(error);
db.runSql('ALTER TABLE eventlog MODIFY source TEXT', [], function (error) {
if (error) console.error(error);
callback(error);
});
});
};
exports.down = function(db, callback) {
db.runSql('ALTER TABLE eventlog MODIFY data TEXT', [], function (error) {
if (error) console.error(error);
db.runSql('ALTER TABLE eventlog MODIFY source TEXT', [], function (error) {
if (error) console.error(error);
callback(error);
});
});
};

View File

@@ -0,0 +1,16 @@
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE apps ADD COLUMN enableBackup BOOLEAN DEFAULT 1', function (error) {
if (error) console.error(error);
callback(error);
});
};
exports.down = function(db, callback) {
db.runSql('ALTER TABLE apps DROP COLUMN enableBackup', function (error) {
if (error) console.error(error);
callback(error);
});
};

View File

@@ -0,0 +1,15 @@
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE settings MODIFY value TEXT', [], function (error) {
if (error) console.error(error);
callback(error);
});
};
exports.down = function(db, callback) {
db.runSql('ALTER TABLE settings MODIFY value VARCHAR(512)', [], function (error) {
if (error) console.error(error);
callback(error);
});
};

View File

@@ -0,0 +1,25 @@
'use strict';
// ensure backupFolder and format are not empty
exports.up = function(db, callback) {
db.all('SELECT * FROM settings WHERE name=?', [ 'backup_config' ], function (error, result) {
if (error || result.length === 0) return callback(error);
var value = JSON.parse(result[0].value);
value.format = 'tgz'; // set the format
if (value.provider === 'filesystem' && !value.backupFolder) {
value.backupFolder = '/var/backups'; // set the backupFolder
}
db.runSql('UPDATE settings SET value = ? WHERE name = ?', [ JSON.stringify(value), 'backup_config' ], function (error) {
if (error) console.error('Error setting ownerid ' + JSON.stringify(u) + error);
callback();
});
});
};
exports.down = function(db, callback) {
callback();
};

View File

@@ -0,0 +1,15 @@
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE backups ADD COLUMN format VARCHAR(16) DEFAULT "tgz"', function (error) {
if (error) console.error(error);
callback(error);
});
};
exports.down = function(db, callback) {
db.runSql('ALTER TABLE backups DROP COLUMN format', function (error) {
if (error) console.error(error);
callback(error);
});
};

View File

@@ -0,0 +1,15 @@
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE apps ADD COLUMN newConfigJson TEXT', function (error) {
if (error) console.error(error);
callback(error);
});
};
exports.down = function(db, callback) {
db.runSql('ALTER TABLE apps DROP COLUMN newConfigJson', function (error) {
if (error) console.error(error);
callback(error);
});
};

View File

@@ -0,0 +1,40 @@
'use strict';
var async = require('async');
exports.up = function(db, callback) {
async.series([
db.runSql.bind(db, 'ALTER TABLE backups ADD COLUMN manifestJson TEXT'),
db.runSql.bind(db, 'START TRANSACTION;'),
// fill all the backups with restoreConfigs from current apps
function addManifests(callback) {
console.log('Importing manifests');
db.all('SELECT * FROM backups WHERE type="app"', function (error, backups) {
if (error) return callback(error);
async.eachSeries(backups, function (backup, next) {
var m = backup.restoreConfigJson ? JSON.parse(backup.restoreConfigJson) : null;
if (m) m = JSON.stringify(m.manifest);
db.runSql('UPDATE backups SET manifestJson=? WHERE id=?', [ m, backup.id ], next);
}, callback);
});
},
db.runSql.bind(db, 'COMMIT'),
// remove the restoreConfig
db.runSql.bind(db, 'ALTER TABLE backups DROP COLUMN restoreConfigJson')
], callback);
};
exports.down = function(db, callback) {
async.series([
db.runSql.bind(db, 'ALTER TABLE backups DROP COLUMN manifestJson'),
db.runSql.bind(db, 'ALTER TABLE backups ADD COLUMN restoreConfigJson TEXT'),
], callback);
};

View File

@@ -0,0 +1,15 @@
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE apps CHANGE newConfigJson updateConfigJson TEXT', [], function (error) {
if (error) console.error(error);
callback(error);
});
};
exports.down = function(db, callback) {
db.runSql('ALTER TABLE apps CHANGE updateConfigJson newConfigJson TEXT', [], function (error) {
if (error) console.error(error);
callback(error);
});
};

View File

@@ -0,0 +1,15 @@
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE apps CHANGE lastBackupId restoreConfigJson TEXT', [], function (error) {
if (error) console.error(error);
callback(error);
});
};
exports.down = function(db, callback) {
db.runSql('ALTER TABLE apps CHANGE restoreConfigJson lastBackupId TEXT', [], function (error) {
if (error) console.error(error);
callback(error);
});
};

View File

@@ -0,0 +1,31 @@
'use strict';
// WARNING!!
// At this point the default db collation is utf8mb4_unicode_ci however we already have foreign key constraits
// already with tables on utf8_bin charset, so we cannot convert all tables here to utf8mb4 collation without
// a reimport from a sql dump, as foreign keys across different collations are not supported
var async = require('async');
exports.up = function(db, callback) {
async.series([
db.runSql.bind(db, 'ALTER TABLE appPortBindings CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin'),
db.runSql.bind(db, 'ALTER TABLE apps CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin'),
db.runSql.bind(db, 'ALTER TABLE authcodes CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin'),
db.runSql.bind(db, 'ALTER TABLE backups CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin'),
db.runSql.bind(db, 'ALTER TABLE clients CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin'),
db.runSql.bind(db, 'ALTER TABLE eventlog CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin'),
db.runSql.bind(db, 'ALTER TABLE groupMembers CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin'),
db.runSql.bind(db, 'ALTER TABLE userGroups CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin'),
db.runSql.bind(db, 'ALTER TABLE mailboxes CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin'),
db.runSql.bind(db, 'ALTER TABLE migrations CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin'),
db.runSql.bind(db, 'ALTER TABLE settings CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin'),
db.runSql.bind(db, 'ALTER TABLE tokens CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin'),
db.runSql.bind(db, 'ALTER TABLE users CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin')
], callback);
};
exports.down = function(db, callback) {
// nothing to be done here
callback();
};

View File

@@ -0,0 +1,70 @@
'use strict';
var async = require('async'),
safe = require('safetydance');
exports.up = function(db, callback) {
// first check precondtion of domain entry in settings
db.all('SELECT * FROM settings WHERE name = ?', [ 'domain' ], function (error, result) {
if (error) return callback(error);
var domain = {};
if (result[0]) domain = safe.JSON.parse(result[0].value) || {};
async.series([
db.runSql.bind(db, 'START TRANSACTION;'),
function addAppsDomainColumn(done) {
db.runSql('ALTER TABLE apps ADD COLUMN domain VARCHAR(128)', [], done);
},
function setAppDomain(done) {
if (!domain.fqdn) return done(); // skip for new cloudrons without a domain
db.runSql('UPDATE apps SET domain = ?', [ domain.fqdn ], done);
},
function addAppsLocationDomainUniqueConstraint(done) {
db.runSql('ALTER TABLE apps ADD UNIQUE location_domain_unique_index (location, domain)', [], done);
},
function removePresetupAdminGroupIfNew(done) {
// do not delete on update, will update the record in setMailboxesDomain()
if (domain.fqdn) return done();
// this will be finally created once we have a domain when we create the owner in user.js
const ADMIN_GROUP_ID = 'admin'; // see constants.js
db.runSql('DELETE FROM userGroups WHERE id = ?', [ ADMIN_GROUP_ID ], function (error) {
if (error) return done(error);
db.runSql('DELETE FROM mailboxes WHERE ownerId = ?', [ ADMIN_GROUP_ID ], done);
});
},
function addMailboxesDomainColumn(done) {
db.runSql('ALTER TABLE mailboxes ADD COLUMN domain VARCHAR(128)', [], done);
},
function setMailboxesDomain(done) {
if (!domain.fqdn) return done(); // skip for new cloudrons without a domain
db.runSql('UPDATE mailboxes SET domain = ?', [ domain.fqdn ], done);
},
function dropAppsLocationUniqueConstraint(done) {
db.runSql('ALTER TABLE apps DROP INDEX location', [], done);
},
db.runSql.bind(db, 'COMMIT')
], callback);
});
};
exports.down = function(db, callback) {
async.series([
db.runSql.bind(db, 'START TRANSACTION;'),
function dropMailboxesDomainColumn(done) {
db.runSql('ALTER TABLE mailboxes DROP COLUMN domain', [], done);
},
function dropLocationDomainUniqueConstraint(done) {
db.runSql('ALTER TABLE apps DROP INDEX location_domain_unique_index', [], done);
},
function dropAppsDomainColumn(done) {
db.runSql('ALTER TABLE apps DROP COLUMN domain', [], done);
},
function addAppsLocationUniqueConstraint(done) {
db.runSql('ALTER TABLE apps ADD UNIQUE location (location)', [], done);
},
db.runSql.bind(db, 'COMMIT')
], callback);
};

View File

@@ -0,0 +1,61 @@
'use strict';
var async = require('async'),
safe = require('safetydance'),
tld = require('tldjs');
exports.up = function(db, callback) {
var fqdn, zoneName, configJson;
async.series([
function gatherDomain(done) {
db.all('SELECT * FROM settings WHERE name = ?', [ 'domain' ], function (error, result) {
if (error) return done(error);
var domain = {};
if (result[0]) domain = safe.JSON.parse(result[0].value) || {};
fqdn = domain.fqdn || ''; // will be null pre-setup
zoneName = domain.zoneName || tld.getDomain(fqdn) || fqdn;
done();
});
},
function gatherDNSConfig(done) {
db.all('SELECT * FROM settings WHERE name = ?', [ 'dns_config' ], function (error, result) {
if (error) return done(error);
configJson = (result[0] && result[0].value) ? result[0].value : JSON.stringify({ provider: 'manual'});
// caas dns config needs an fqdn
var config = JSON.parse(configJson);
if (config.provider === 'caas') config.fqdn = fqdn;
configJson = JSON.stringify(config);
done();
});
},
db.runSql.bind(db, 'START TRANSACTION;'),
function createDomainsTable(done) {
var cmd = `
CREATE TABLE domains(
domain VARCHAR(128) NOT NULL UNIQUE,
zoneName VARCHAR(128) NOT NULL,
configJson TEXT,
PRIMARY KEY (domain)) CHARACTER SET utf8 COLLATE utf8_bin
`;
db.runSql(cmd, [], done);
},
function addInitialDomain(done) {
if (!fqdn) return done();
db.runSql('INSERT INTO domains (domain, zoneName, configJson) VALUES (?, ?, ?)', [ fqdn, zoneName, configJson ], done);
},
db.runSql.bind(db, 'COMMIT')
], callback);
};
exports.down = function(db, callback) {
db.runSql('DROP TABLE domains', callback);
};

View File

@@ -0,0 +1,15 @@
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE apps ADD CONSTRAINT apps_domain_constraint FOREIGN KEY(domain) REFERENCES domains(domain)', function (error) {
if (error) console.error(error);
callback(error);
});
};
exports.down = function(db, callback) {
db.runSql('ALTER TABLE apps DROP FOREIGN KEY apps_domain_constraint', function (error) {
if (error) console.error(error);
callback(error);
});
};

View File

@@ -0,0 +1,15 @@
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE mailboxes ADD CONSTRAINT mailboxes_domain_constraint FOREIGN KEY(domain) REFERENCES domains(domain)', function (error) {
if (error) console.error(error);
callback(error);
});
};
exports.down = function(db, callback) {
db.runSql('ALTER TABLE mailboxes DROP FOREIGN KEY mailboxes_domain_constraint', function (error) {
if (error) console.error(error);
callback(error);
});
};

View File

@@ -0,0 +1,15 @@
'use strict';
exports.up = function(db, callback) {
db.runSql('ALTER TABLE mailboxes DROP PRIMARY KEY', function (error) {
if (error) console.error(error);
callback(error);
});
};
exports.down = function(db, callback) {
db.runSql('ALTER TABLE mailboxes ADD PRIMARY KEY(name)', function (error) {
if (error) console.error(error);
callback(error);
});
};

Some files were not shown because too many files have changed in this diff Show More