'use strict'; const fs = require('node:fs'), path = require('node:path'); const CLOUDRON = process.env.BOX_ENV === 'cloudron', TEST = process.env.BOX_ENV === 'test'; exports = module.exports = { SMTP_SUBDOMAIN: 'smtp', IMAP_SUBDOMAIN: 'imap', // These are combined into one array because users and groups become mailboxes RESERVED_NAMES: [ // Reserved usernames // https://github.com/gogits/gogs/blob/52c8f691630548fe091d30bcfe8164545a05d3d5/models/repo.go#L393 // apps like wordpress, gogs don't like these // postmaster is used in dovecot and haraka 'admin', 'no-reply', 'postmaster', 'mailer-daemon', 'root', // Reserved groups 'admins', 'users' // ldap code uses 'users' pseudo group ], DASHBOARD_SUBDOMAIN: 'my', PORT: CLOUDRON ? 3000 : 5454, GRAPHITE_PORT: 2003, INTERNAL_SMTP_PORT: 2525, // this value comes from the mail container AUTHWALL_PORT: 3001, LDAP_PORT: 3002, DOCKER_PROXY_PORT: 3003, USER_DIRECTORY_LDAPS_PORT: 3004, // user directory LDAP with TLS rerouting in iptables, public port is 636 OIDC_PORT: 3005, TURN_PORT: 3478, // tcp and udp TURN_TLS_PORT: 5349, // tcp and udp TURN_UDP_PORT_START: 50000, TURN_UDP_PORT_END: 50100, // docker IPs DOCKER_IPv4_SUBNET: '172.18.0.0/16', DOCKER_IPv4_RANGE: '172.18.0.0/20', // addresses are dynamically allocated within this range (172.18.0.0-172.18.15.255) DOCKER_IPv4_GATEWAY: '172.18.0.1', APPS_IPv4_START: '172.18.16.1', // after DOCKER_IPv4_RANGE APPS_IPv4_END: '172.18.20.255', DOCKER_IPv6_SUBNET: 'fd00:c107:d509::/64', // these are hardcoded to allow connections from outside. this is not in "172.18.0.xx" since docker starts allocating from there MYSQL_SERVICE_IPv4: '172.18.30.1', POSTGRESQL_SERVICE_IPv4: '172.18.30.2', MONGODB_SERVICE_IPv4: '172.18.30.3', MAIL_SERVICE_IPv4: '172.18.30.4', GRAPHITE_SERVICE_IPv4: '172.18.30.5', SFTP_SERVICE_IPv4: '172.18.30.6', NGINX_DEFAULT_CONFIG_FILE_NAME: 'default.conf', DEFAULT_TOKEN_EXPIRATION_MSECS: 365 * 24 * 60 * 60 * 1000, // 1 year DEFAULT_TOKEN_EXPIRATION_DAYS: 365, DEFAULT_MEMORY_LIMIT: (256 * 1024 * 1024), // see also client.js DEMO: fs.existsSync('/etc/cloudron/DEMO'), DEMO_USERNAME: 'cloudron', DEMO_BLOCKED_APPS: [ 'org.jupyter.cloudronapp', 'com.github.cloudtorrent', 'net.alltubedownload.cloudronapp', 'com.adguard.home.cloudronapp', 'com.transmissionbt.cloudronapp', 'io.github.sickchill.cloudronapp', 'to.couchpota.cloudronapp', 'org.qbittorrent.cloudronapp' ], DEMO_APP_LIMIT: 20, PROXY_APP_APPSTORE_ID: 'io.cloudron.builtin.appproxy', CRON_PATTERN_NEVER: 'never', SNAPSHOT_INFO_FILENAME: 'snapshot-info.json', CLOUDRON, TEST, PORT25_CHECK_SERVER: 'port25check.cloudron.io', USER_DIRECTORY_LDAP_DN: 'cn=admin,ou=system,dc=cloudron', FOOTER: '© %YEAR% [Cloudron](https://cloudron.io)', VERSION: process.env.BOX_ENV === 'cloudron' ? fs.readFileSync(path.join(__dirname, '../VERSION'), 'utf8').trim() : '8.0.0-test' };