from orchestra.contrib.settings import Setting from orchestra.settings import ORCHESTRA_BASE_DOMAIN from .. import webapps _names = ('home', 'user', 'user_id', 'group', 'app_type', 'app_name', 'app_type', 'app_id', 'account_id') _php_names = _names + ('php_version', 'php_version_number', 'php_version_int') _python_names = _names + ('python_version', 'python_version_number',) WEBAPPS_BASE_DIR = Setting('WEBAPPS_BASE_DIR', '%(home)s/webapps/%(app_name)s', help_text="Available fromat names: %s" % ', '.join(_names), validators=[Setting.string_format_validator(_names)], ) WEBAPPS_FPM_LISTEN = Setting('WEBAPPS_FPM_LISTEN', '127.0.0.1:5%(app_id)04d', help_text=("TCP socket example: 127.0.0.1:5%(app_id)04d
" "UDS example: /var/lib/php/sockets/%(user)s-%(app_name)s.sock
" "Merged TCP example: 127.0.0.1:%(php_version_int)02d%(account_id)03d
" "Merged UDS example: /var/lib/php/sockets/%(user)s-%(php_version)s.sock
" "Available fromat names: {}").format(', '.join(_php_names)), validators=[Setting.string_format_validator(_php_names)], ) WEBAPPS_FPM_DEFAULT_MAX_CHILDREN = Setting('WEBAPPS_FPM_DEFAULT_MAX_CHILDREN', 3 ) WEBAPPS_PHPFPM_POOL_PATH = Setting('WEBAPPS_PHPFPM_POOL_PATH', '/etc/php/%(php_version_number)s/fpm/pool.d/%(user)s-%(app_name)s.conf', help_text="Available fromat names: %s" % ', '.join(_php_names), validators=[Setting.string_format_validator(_php_names)], ) WEBAPPS_PHPFPM_RELOAD_POOL = Setting('WEBAPPS_PHPFPM_RELOAD_POOL', 'service php5-fpm reload' ) WEBAPPS_FCGID_WRAPPER_PATH = Setting('WEBAPPS_FCGID_WRAPPER_PATH', '/home/httpd/fcgi-bin.d/%(user)s/%(app_name)s-wrapper', validators=[Setting.string_format_validator(_php_names)], help_text=("Inside SuExec Document root.
" "Make sure all account wrappers are in the same DIR.
" "Available fromat names: %s") % ', '.join(_php_names), ) WEBAPPS_FCGID_CMD_OPTIONS_PATH = Setting('WEBAPPS_FCGID_CMD_OPTIONS_PATH', '/etc/apache2/fcgid-conf/%(user)s-%(app_name)s.conf', validators=[Setting.string_format_validator(_php_names)], help_text="Loaded by Apache. Available fromat names: %s" % ', '.join(_php_names), ) WEBAPPS_PHP_MAX_REQUESTS = Setting('WEBAPPS_PHP_MAX_REQUESTS', 400, help_text='Greater or equal to your FcgidMaxRequestsPerProcess' ) WEBAPPS_PHP_ERROR_LOG_PATH = Setting('WEBAPPS_PHP_ERROR_LOG_PATH', '' ) WEBAPPS_MERGE_PHP_WEBAPPS = Setting('WEBAPPS_MERGE_PHP_WEBAPPS', False, help_text=("Combine all fcgid-wrappers/fpm-pools into one per account-php_version " "to better control num processes per account and save memory") ) WEBAPPS_TYPES = Setting('WEBAPPS_TYPES', ( 'orchestra.contrib.webapps.types.php.PHPApp', 'orchestra.contrib.webapps.types.misc.StaticApp', 'orchestra.contrib.webapps.types.misc.WebalizerApp', 'orchestra.contrib.webapps.types.misc.SymbolicLinkApp', 'orchestra.contrib.webapps.types.wordpress.WordPressApp', 'orchestra.contrib.webapps.types.moodle.MoodleApp', 'orchestra.contrib.webapps.types.python.PythonApp', ), # lazy loading choices=lambda : ((t.get_class_path(), t.get_class_path()) for t in webapps.types.AppType.get_plugins(all=True)), multiple=True, ) WEBAPPS_PHP_VERSIONS = Setting('WEBAPPS_PHP_VERSIONS', ( ('5.6-fpm', 'PHP 5.6 FPM'), ('5.6-cgi', 'PHP 5.6 FCGID'), ('5.4-fpm', 'PHP 5.4 FPM'), ('5.4-cgi', 'PHP 5.4 FCGID'), ('5.3-cgi', 'PHP 5.3 FCGID'), ('5.2-cgi', 'PHP 5.2 FCGID'), ('4-cgi', 'PHP 4 FCGID'), ('7.0-fpm', 'PHP 7 FPM'), ('7.3-fpm', 'PHP 7.3 FPM'), ('7.4-fpm', 'PHP 7.4 FPM (web-11)'), ('8.1-fpm', 'PHP 8.1 FPM (web-12)'), ('8.2-fpm', 'PHP 8.2 FPM (web-12)'), ), help_text="Execution modle choose by ending -fpm or -cgi.", validators=[Setting.validate_choices] ) WEBAPPS_PHP_VERSIONS_SERVERS = Setting('WEBAPPS_PHP_VERSIONS_SERVERS', { 'web.pangea.lan' : ('php5.6-fpm', '7.0-fpm',), 'web-ng' : ('5.6-fpm', '7.0-fpm', '7.3-fpm',), 'web-11.pangea.lan': ('7.4-fpm',), 'web-12.pangea.lan' : ('8.1-fpm', '8.2-fpm'), 'bookworm' : ('8.1-fpm', '8.2-fpm'), }, help_text="PHP available for each server", ) WEBAPPS_DEFAULT_PHP_VERSION = Setting('WEBAPPS_DEFAULT_PHP_VERSION', '5.6-fpm', choices=WEBAPPS_PHP_VERSIONS ) WEBAPPS_PHP_CGI_BINARY_PATH = Setting('WEBAPPS_PHP_CGI_BINARY_PATH', '/usr/bin/php%(php_version_number)s-cgi', help_text="Path of the cgi binary used by fcgid. Available fromat names: %s" % ', '.join(_php_names), validators=[Setting.string_format_validator(_php_names)], ) WEBAPPS_PHP_CGI_RC_DIR = Setting('WEBAPPS_PHP_CGI_RC_DIR', '/etc/php%(php_version_number)s/cgi/', help_text="Path to php.ini. Available fromat names: %s" % ', '.join(_php_names), validators=[Setting.string_format_validator(_php_names)], ) WEBAPPS_PHP_CGI_INI_SCAN_DIR = Setting('WEBAPPS_PHP_CGI_INI_SCAN_DIR', '/etc/php%(php_version_number)s/cgi/conf.d', help_text="Available fromat names: %s" % ', '.join(_php_names), validators=[Setting.string_format_validator(_php_names)], ) WEBAPPS_PYTHON_VERSIONS = Setting('WEBAPPS_PYTHON_VERSIONS', ( ('3.4-uwsgi', 'Python 3.4 uWSGI'), ('2.7-uwsgi', 'Python 2.7 uWSGI'), ), validators=[Setting.validate_choices] ) WEBAPPS_DEFAULT_PYTHON_VERSION = Setting('WEBAPPS_DEFAULT_PYTHON_VERSION', '3.4-uwsgi', choices=WEBAPPS_PYTHON_VERSIONS ) WEBAPPS_UWSGI_SOCKET = Setting('WEBAPPS_UWSGI_SOCKET', '/var/run/uwsgi/app/%(app_name)s/socket', help_text="Available fromat names: %s" % ', '.join(_python_names), validators=[Setting.string_format_validator(_python_names)], ) WEBAPPS_UWSGI_BASE_DIR = Setting('WEBAPPS_UWSGI_BASE_DIR', '/etc/uwsgi/' ) WEBAPPS_PYTHON_MAX_REQUESTS = Setting('WEBAPPS_PYTHON_MAX_REQUESTS', 500 ) WEBAPPS_PYTHON_DEFAULT_MAX_WORKERS = Setting('WEBAPPS_PYTHON_DEFAULT_MAX_WORKERS', 3 ) WEBAPPS_PYTHON_DEFAULT_TIMEOUT = Setting('WEBAPPS_PYTHON_DEFAULT_TIMEOUT', 30 ) WEBAPPS_UNDER_CONSTRUCTION_PATH = Setting('WEBAPPS_UNDER_CONSTRUCTION_PATH', '', help_text=("Server-side path where a under construction stock page is " "'/var/www/undercontruction/index.html'") ) #WEBAPPS_TYPES_OVERRIDE = getattr(settings, 'WEBAPPS_TYPES_OVERRIDE', {}) #for webapp_type, value in WEBAPPS_TYPES_OVERRIDE.items(): # if value is None: # WEBAPPS_TYPES.pop(webapp_type, None) # else: # WEBAPPS_TYPES[webapp_type] = value WEBAPPS_PHP_DISABLED_FUNCTIONS = Setting('WEBAPPS_PHP_DISABLED_FUNCTION', ( 'exec', 'passthru', 'shell_exec', 'system', 'proc_open', 'popen', 'curl_multi_exec', 'show_source', 'pcntl_exec', 'proc_close', 'proc_get_status', 'proc_nice', 'proc_terminate', 'ini_alter', 'virtual', 'openlog', 'escapeshellcmd', 'escapeshellarg', 'dl', 'fsockopen', 'pfsockopen', 'stream_socket_client', # Used for spamming 'getmxrr', # Used in some php shells 'str_rot13', )) WEBAPPS_ENABLED_OPTIONS = Setting('WEBAPPS_ENABLED_OPTIONS', ( 'orchestra.contrib.webapps.options.PublicRoot', 'orchestra.contrib.webapps.options.Timeout', 'orchestra.contrib.webapps.options.Processes', 'orchestra.contrib.webapps.options.PHPEnableFunctions', 'orchestra.contrib.webapps.options.PHPDisableFunctions', 'orchestra.contrib.webapps.options.PHPAllowURLInclude', 'orchestra.contrib.webapps.options.PHPAllowURLFopen', 'orchestra.contrib.webapps.options.PHPAutoAppendFile', 'orchestra.contrib.webapps.options.PHPAutoPrependFile', 'orchestra.contrib.webapps.options.PHPDateTimeZone', 'orchestra.contrib.webapps.options.PHPDefaultSocketTimeout', 'orchestra.contrib.webapps.options.PHPDisplayErrors', 'orchestra.contrib.webapps.options.PHPExtension', 'orchestra.contrib.webapps.options.PHPIncludePath', 'orchestra.contrib.webapps.options.PHPOpenBasedir', 'orchestra.contrib.webapps.options.PHPMagicQuotesGPC', 'orchestra.contrib.webapps.options.PHPMagicQuotesRuntime', 'orchestra.contrib.webapps.options.PHPMaginQuotesSybase', 'orchestra.contrib.webapps.options.PHPMaxInputTime', 'orchestra.contrib.webapps.options.PHPMaxInputVars', 'orchestra.contrib.webapps.options.PHPMemoryLimit', 'orchestra.contrib.webapps.options.PHPMySQLConnectTimeout', 'orchestra.contrib.webapps.options.PHPOutputBuffering', 'orchestra.contrib.webapps.options.PHPRegisterGlobals', 'orchestra.contrib.webapps.options.PHPPostMaxSize', 'orchestra.contrib.webapps.options.PHPSendmailPath', 'orchestra.contrib.webapps.options.PHPSessionBugCompatWarn', 'orchestra.contrib.webapps.options.PHPSessionAutoStart', 'orchestra.contrib.webapps.options.PHPSafeMode', 'orchestra.contrib.webapps.options.PHPSuhosinPostMaxVars', 'orchestra.contrib.webapps.options.PHPSuhosinGetMaxVars', 'orchestra.contrib.webapps.options.PHPSuhosinRequestMaxVars', 'orchestra.contrib.webapps.options.PHPSuhosinSessionEncrypt', 'orchestra.contrib.webapps.options.PHPSuhosinSimulation', 'orchestra.contrib.webapps.options.PHPSuhosinExecutorIncludeWhitelist', 'orchestra.contrib.webapps.options.PHPUploadMaxFileSize', 'orchestra.contrib.webapps.options.PHPUploadTmpDir', 'orchestra.contrib.webapps.options.PHPZendExtension', ), # lazy loading choices=lambda : ((o.get_class_path(), o.get_class_path()) for o in webapps.options.AppOption.get_plugins(all=True)), multiple=True, ) WEBAPPS_DEFAULT_MYSQL_DATABASE_HOST = Setting('WEBAPPS_DEFAULT_MYSQL_DATABASE_HOST', 'mysql.{}'.format(ORCHESTRA_BASE_DOMAIN), help_text="Uses ORCHESTRA_BASE_DOMAIN by default.", ) WEBAPPS_MOVE_ON_DELETE_PATH = Setting('WEBAPPS_MOVE_ON_DELETE_PATH', '' ) WEBAPPS_CMS_CACHE_DIR = Setting('WEBAPPS_CMS_CACHE_DIR', '/tmp/orchestra_cms_cache', help_text="Server-side cache directori for CMS tarballs.", )