From 7409a997ef122a2b55ba8bcc2ce17cbe2559cdca Mon Sep 17 00:00:00 2001
From: Jordan Blasenhauer
tag.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - INJECT_BODY: { - context: "multisite", - default: "", - help: "The HTML code to inject.", - id: "inject-body-default", - label: "HTML code", - regex: "^.*$", - type: "text", - containerClass: "z-0", - pattern: "^.*$", - inpType: "input", - name: "HTML code", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "The HTML code to inject.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - }, - checksum: null, - }, - { - id: "headers", - stream: "no", - name: "Headers", - description: "Manage HTTP headers sent to clients.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - CUSTOM_HEADER: { - context: "multisite", - default: "", - help: "Custom header to add (HeaderName: HeaderValue).", - id: "custom-header-default", - label: "Custom header (HeaderName: HeaderValue)", - regex: "^([\\w\\-]+: .+)?$", - type: "text", - multiple: "custom-headers", - containerClass: "z-13", - pattern: "^([\\w\\-]+: .+)?$", - inpType: "input", - name: "Custom header (HeaderName: HeaderValue)", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Custom header to add (HeaderName: HeaderValue).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REMOVE_HEADERS: { - context: "multisite", - default: - "Server Expect-CT X-Powered-By X-AspNet-Version X-AspNetMvc-Version", - help: "Headers to remove (Header1 Header2 Header3 ...)", - id: "remove-headers-default", - label: "Remove headers", - regex: "^(?! )( ?[\\w\\-]+)*$", - type: "text", - containerClass: "z-12", - pattern: "^(?! )( ?[\\w\\-]+)*$", - inpType: "input", - name: "Remove headers", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: - "Server Expect-CT X-Powered-By X-AspNet-Version X-AspNetMvc-Version", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Headers to remove (Header1 Header2 Header3 ...)", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - KEEP_UPSTREAM_HEADERS: { - context: "multisite", - default: - "Content-Security-Policy Permissions-Policy Feature-Policy X-Frame-Options", - help: "Headers to keep from upstream (Header1 Header2 Header3 ... or * for all).", - id: "keep-upstream-headers-default", - label: "Keep upstream headers", - regex: "^((?! )( ?[\\w\\-]+)+|\\*)?$", - type: "text", - containerClass: "z-11", - pattern: "^((?! )( ?[\\w\\-]+)+|\\*)?$", - inpType: "input", - name: "Keep upstream headers", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: - "Content-Security-Policy Permissions-Policy Feature-Policy X-Frame-Options", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Headers to keep from upstream (Header1 Header2 Header3 ... or * for all).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - STRICT_TRANSPORT_SECURITY: { - context: "multisite", - default: "max-age=31536000", - help: "Value for the Strict-Transport-Security header.", - id: "strict-transport-security-default", - label: "Strict-Transport-Security", - regex: "^max-age=\\d+(; includeSubDomains(; preload)?)?$", - type: "text", - containerClass: "z-10", - pattern: "^max-age=\\d+(; includeSubDomains(; preload)?)?$", - inpType: "input", - name: "Strict-Transport-Security", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "max-age=31536000", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Value for the Strict-Transport-Security header.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - COOKIE_FLAGS: { - context: "multisite", - default: "* HttpOnly SameSite=Lax", - help: "Cookie flags automatically added to all cookies (value accepted for nginx_cookie_flag_module).", - id: "cookie-flags-default", - label: "Cookie flags", - regex: - "^(\\*|[^;]+)( (HttpOnly|(SameSite)(?!.*\\4)(=(Lax|Strict))?)(?!.*\\3))*$", - type: "text", - multiple: "cookie-flags", - containerClass: "z-9", - pattern: - "^(\\*|[^;]+)( (HttpOnly|(SameSite)(?!.*\\4)(=(Lax|Strict))?)(?!.*\\3))*$", - inpType: "input", - name: "Cookie flags", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "* HttpOnly SameSite=Lax", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Cookie flags automatically added to all cookies (value accepted for nginx_cookie_flag_module).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - COOKIE_AUTO_SECURE_FLAG: { - context: "multisite", - default: "yes", - help: "Automatically add the Secure flag to all cookies.", - id: "cookie-auto-secure-flag-default", - label: "Cookie auto Secure flag", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-8", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Cookie auto Secure flag", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Automatically add the Secure flag to all cookies.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - CONTENT_SECURITY_POLICY: { - context: "multisite", - default: - "object-src 'none'; form-action 'self'; frame-ancestors 'self';", - help: "Value for the Content-Security-Policy header.", - id: "content-security-policy-default", - label: "Content-Security-Policy", - regex: "^.*$", - type: "text", - containerClass: "z-7", - pattern: "^.*$", - inpType: "input", - name: "Content-Security-Policy", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: - "object-src 'none'; form-action 'self'; frame-ancestors 'self';", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Value for the Content-Security-Policy header.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - CONTENT_SECURITY_POLICY_REPORT_ONLY: { - context: "multisite", - default: "no", - help: "Send reports for violations of the Content-Security-Policy header instead of blocking them.", - id: "content-security-policy-report-only-default", - label: "Content-Security-Policy-Report-Only", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-6", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Content-Security-Policy-Report-Only", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Send reports for violations of the Content-Security-Policy header instead of blocking them.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REFERRER_POLICY: { - context: "multisite", - default: "strict-origin-when-cross-origin", - help: "Value for the Referrer-Policy header.", - id: "referrer-policy-default", - label: "Referrer-Policy", - regex: - "^(?!^(,| ))((, )?(no-referrer-when-downgrade|no-referrer|origin-when-cross-origin|same-origin|strict-origin-when-cross-origin|strict-origin|origin|unsafe-url)(?!\\b.*, \\4\\b))*$", - type: "text", - containerClass: "z-5", - pattern: - "^(?!^(,| ))((, )?(no-referrer-when-downgrade|no-referrer|origin-when-cross-origin|same-origin|strict-origin-when-cross-origin|strict-origin|origin|unsafe-url)(?!\\b.*, \\4\\b))*$", - inpType: "input", - name: "Referrer-Policy", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "strict-origin-when-cross-origin", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Value for the Referrer-Policy header.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - PERMISSIONS_POLICY: { - context: "multisite", - default: - "accelerometer=(), ambient-light-sensor=(), autoplay=(), battery=(), camera=(), cross-origin-isolated=(), display-capture=(), document-domain=(), encrypted-media=(), execution-while-not-rendered=(), execution-while-out-of-viewport=(), fullscreen=(), geolocation=(), gyroscope=(), hid=(), idle-detection=(), magnetometer=(), microphone=(), midi=(), navigation-override=(), payment=(), picture-in-picture=(), publickey-credentials-get=(), screen-wake-lock=(), serial=(), usb=(), web-share=(), xr-spatial-tracking=()", - help: "Value for the Permissions-Policy header.", - id: "permissions-policy-default", - label: "Permissions-Policy", - regex: - "^(?![, ])(,? ?([a-z\\-]+)(?!.*[^\\-]\\2=)=(\\*|\\(( ?(self|\\u0022https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*\\u0022)(?=[ \\)]))*\\)))*$", - type: "text", - containerClass: "z-4", - pattern: - "^(?![, ])(,? ?([a-z\\-]+)(?!.*[^\\-]\\2=)=(\\*|\\(( ?(self|\\u0022https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*\\u0022)(?=[ \\)]))*\\)))*$", - inpType: "input", - name: "Permissions-Policy", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: - "accelerometer=(), ambient-light-sensor=(), autoplay=(), battery=(), camera=(), cross-origin-isolated=(), display-capture=(), 2024-06-06T13:46:22.766316807Z document-domain=(), encrypted-media=(), execution-while-not-rendered=(), execution-while-out-of-viewport=(), fullscreen=(), geolocation=(), gyroscope=(), hid=(), idle-detection=(), magnetometer=(), microphone=(), midi=(), navigation-override=(), payment=(), picture-in-picture=(), publickey-credentials-get=(), screen-wake-lock=(), serial=(), usb=(), web-share=(), xr-spatial-tracking=()", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Value for the Permissions-Policy header.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - FEATURE_POLICY: { - context: "multisite", - default: - "accelerometer 'none'; ambient-light-sensor 'none'; autoplay 'none'; battery 'none'; camera 'none'; display-capture 'none'; document-domain 'none'; encrypted-media 'none'; execution-while-not-rendered 'none'; execution-while-out-of-viewport 'none'; fullscreen 'none'; geolocation 'none'; gyroscope 'none'; layout-animation 'none'; legacy-image-formats 'none'; magnetometer 'none'; microphone 'none'; midi 'none'; navigation-override 'none'; payment 'none'; picture-in-picture 'none'; publickey-credentials-get 'none'; speaker-selection 'none'; sync-xhr 'none'; unoptimized-images 'none'; unsized-media 'none'; usb 'none'; screen-wake-lock 'none'; web-share 'none'; xr-spatial-tracking 'none';", - help: "Value for the Feature-Policy header.", - id: "feature-policy-default", - label: "Feature-Policy", - regex: - "^(?![; ])( ?([\\w\\-]+)(?!.*[^\\-]\\2 )( ('(none|self|strict-dynamic|report-sample|unsafe-inline|unsafe-eval|unsafe-hashes|unsafe-allow-redirects)'|https?:\\/\\/[\\w@:%.+~#=\\-]+[\\w\\(\\)!@:%+.~#?&\\/=$\\-]*))+;)*$", - type: "text", - containerClass: "z-3", - pattern: - "^(?![; ])( ?([\\w\\-]+)(?!.*[^\\-]\\2 )( ('(none|self|strict-dynamic|report-sample|unsafe-inline|unsafe-eval|unsafe-hashes|unsafe-allow-redirects)'|https?:\\/\\/[\\w@:%.+~#=\\-]+[\\w\\(\\)!@:%+.~#?&\\/=$\\-]*))+;)*$", - inpType: "input", - name: "Feature-Policy", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: - "accelerometer 'none'; ambient-light-sensor 'none'; autoplay 'none'; battery 'none'; camera 'none'; display-capture 'none'; document-domain 'none'; encrypted-media 'none'; execution-while-not-rendered 'none'; execution-while-out-of-viewport 'none'; fullscreen 'none'; geolocation 'none'; gyroscope 'none'; layout-animation 'none'; legacy-image-formats 'none'; magnetometer 'none'; microphone 'none'; midi 'none'; navigation-override 'none'; payment 'none'; picture-in-picture 'none'; publickey-credentials-get 'none'; speaker-selection 'none'; sync-xhr 'none'; unoptimized-images 'none'; unsized-media 'none'; usb 'none'; screen-wake-lock 'none'; web-share 'none'; xr-spatial-tracking 'none';", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Value for the Feature-Policy header.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - X_FRAME_OPTIONS: { - context: "multisite", - default: "SAMEORIGIN", - help: "Value for the X-Frame-Options header.", - id: "x-frame-options-default", - label: "X-Frame-Options", - regex: "^(DENY|SAMEORIGIN)?$", - type: "select", - containerClass: "z-2", - pattern: "^(DENY|SAMEORIGIN)?$", - inpType: "select", - name: "X-Frame-Options", - values: ["", "DENY", "SAMEORIGIN"], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "SAMEORIGIN", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Value for the X-Frame-Options header.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - X_CONTENT_TYPE_OPTIONS: { - context: "multisite", - default: "nosniff", - help: "Value for the X-Content-Type-Options header.", - id: "x-content-type-options-default", - label: "X-Content-Type-Options", - regex: "^(nosniff)?$", - type: "select", - containerClass: "z-1", - pattern: "^(nosniff)?$", - inpType: "select", - name: "X-Content-Type-Options", - values: ["", "nosniff"], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "nosniff", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Value for the X-Content-Type-Options header.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - X_XSS_PROTECTION: { - context: "multisite", - default: "1; mode=block", - help: "Value for the X-XSS-Protection header.", - id: "x-xss-protection-default", - label: "X-XSS-Protection", - regex: - "^0|1(; (mode=block|report=https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*))?$", - type: "text", - containerClass: "z-0", - pattern: - "^0|1(; (mode=block|report=https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*))?$", - inpType: "input", - name: "X-XSS-Protection", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "1; mode=block", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Value for the X-XSS-Protection header.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - }, - checksum: null, - }, - { - id: "jobs", - stream: "yes", - name: "Jobs", - description: "Fake core plugin for internal jobs.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: {}, - checksum: null, - }, - { - id: "letsencrypt", - stream: "yes", - name: "Let's Encrypt", - description: - "Automatic creation, renewal and configuration of Let's Encrypt certificates.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - AUTO_LETS_ENCRYPT: { - context: "multisite", - default: "no", - help: "Activate automatic Let's Encrypt mode.", - id: "auto-lets-encrypt-default", - label: "Automatic Let's Encrypt", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-3", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Automatic Let's Encrypt", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Activate automatic Let's Encrypt mode.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - EMAIL_LETS_ENCRYPT: { - context: "multisite", - default: "", - help: "Email used for Let's Encrypt notification and in certificate.", - id: "email-lets-encrypt-default", - label: "Email Let's Encrypt", - regex: "^([^@ \\t\\r\\n]+@[^@ \\t\\r\\n]+\\.[^@ \\t\\r\\n]+)?$", - type: "text", - containerClass: "z-2", - pattern: "^([^@ \\t\\r\\n]+@[^@ \\t\\r\\n]+\\.[^@ \\t\\r\\n]+)?$", - inpType: "input", - name: "Email Let's Encrypt", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Email used for Let's Encrypt notification and in certificate.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - USE_LETS_ENCRYPT_STAGING: { - context: "multisite", - default: "no", - help: "Use the staging environment for Let\u2019s Encrypt certificate generation. Useful when you are testing your deployments to avoid being rate limited in the production environment.", - id: "use-lets-encrypt-staging-default", - label: "Use Let's Encrypt Staging", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-1", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use Let's Encrypt Staging", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Use the staging environment for Let\u2019s Encrypt certificate generation. Useful when you are testing your deployments to avoid being rate limited in the production environment.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - LETS_ENCRYPT_CLEAR_OLD_CERTS: { - context: "global", - default: "no", - help: "Clear old certificates when renewing.", - id: "lets-encrypt-clear-old-certs-default", - label: "Clear old certificates when they are no longer needed", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-0", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Clear old certificates when they are no longer needed", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Clear old certificates when renewing.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - }, - checksum: null, - }, - { - id: "limit", - stream: "partial", - name: "Limit", - description: "Limit maximum number of requests and connections.", - version: "1.0", - type: "core", - method: "manual", - page: true, - settings: { - USE_LIMIT_REQ: { - context: "multisite", - default: "yes", - help: "Activate limit requests feature.", - id: "use-limit-req-default", - label: "Activate limit requests", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-6", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Activate limit requests", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Activate limit requests feature.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - LIMIT_REQ_URL: { - context: "multisite", - default: "/", - help: "URL (PCRE regex) where the limit request will be applied or special value / for all requests.", - id: "limit-req-url-default", - label: "Limit request URL", - regex: "^.+$", - type: "text", - multiple: "limit-req", - containerClass: "z-5", - pattern: "^.+$", - inpType: "input", - name: "Limit request URL", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "/", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "URL (PCRE regex) where the limit request will be applied or special value / for all requests.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - LIMIT_REQ_RATE: { - context: "multisite", - default: "2r/s", - help: "Rate to apply to the URL (s for second, m for minute, h for hour and d for day).", - id: "limit-req-rate-default", - label: "Limit request Rate", - regex: "^\\d+r/[smhd]$", - type: "text", - multiple: "limit-req", - containerClass: "z-4", - pattern: "^\\d+r/[smhd]$", - inpType: "input", - name: "Limit request Rate", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "2r/s", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Rate to apply to the URL (s for second, m for minute, h for hour and d for day).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - USE_LIMIT_CONN: { - context: "multisite", - default: "yes", - help: "Activate limit connections feature.", - id: "use-limit-conn-default", - label: "Activate limit connections", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-3", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Activate limit connections", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Activate limit connections feature.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - LIMIT_CONN_MAX_HTTP1: { - context: "multisite", - default: "10", - help: "Maximum number of connections per IP when using HTTP/1.X protocol.", - id: "limit-conn-max-http1-default", - label: "Maximum number of HTTP/1.X connections", - regex: "^\\d+$", - type: "text", - containerClass: "z-2", - pattern: "^\\d+$", - inpType: "input", - name: "Maximum number of HTTP/1.X connections", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "10", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Maximum number of connections per IP when using HTTP/1.X protocol.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - LIMIT_CONN_MAX_HTTP2: { - context: "multisite", - default: "100", - help: "Maximum number of streams per IP when using HTTP/2 protocol.", - id: "limit-conn-max-http2-default", - label: "Maximum number of HTTP/2 streams", - regex: "^\\d+$", - type: "text", - containerClass: "z-1", - pattern: "^\\d+$", - inpType: "input", - name: "Maximum number of HTTP/2 streams", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "100", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Maximum number of streams per IP when using HTTP/2 protocol.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - LIMIT_CONN_MAX_STREAM: { - context: "multisite", - default: "10", - help: "Maximum number of connections per IP when using stream.", - id: "limit-conn-max-stream-default", - label: "Maximum number of stream connections", - regex: "^\\d+$", - type: "text", - containerClass: "z-0", - pattern: "^\\d+$", - inpType: "input", - name: "Maximum number of stream connections", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "10", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Maximum number of connections per IP when using stream.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - }, - checksum: null, - }, - { - id: "metrics", - stream: "partial", - name: "Metrics", - description: "Metrics collection and retrieve.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - USE_METRICS: { - context: "multisite", - default: "yes", - help: "Enable collection and retrieval of internal metrics.", - id: "use-metrics-default", - label: "Use metrics", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-2", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use metrics", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Enable collection and retrieval of internal metrics.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - METRICS_MEMORY_SIZE: { - context: "global", - default: "16m", - help: "Size of the internal storage for metrics.", - id: "metrics-memory-size-default", - label: "Metrics memory size", - regex: "^\\d+[kKmMgG]?$", - type: "text", - containerClass: "z-1", - pattern: "^\\d+[kKmMgG]?$", - inpType: "input", - name: "Metrics memory size", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "16m", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Size of the internal storage for metrics.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - METRICS_MAX_BLOCKED_REQUESTS: { - context: "global", - default: "100", - help: "Maximum number of blocked requests to store (per worker).", - id: "metrics-max-blocked-requests-default", - label: "Metrics max blocked requests", - regex: "^\\d+$", - type: "text", - containerClass: "z-0", - pattern: "^\\d+$", - inpType: "input", - name: "Metrics max blocked requests", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "100", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Maximum number of blocked requests to store (per worker).", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - }, - checksum: null, - }, - { - id: "misc", - stream: "partial", - name: "Miscellaneous", - description: "Miscellaneous settings.", - version: "1.0", - type: "core", - method: "manual", - page: true, - settings: { - DISABLE_DEFAULT_SERVER: { - context: "global", - default: "no", - help: "Deny HTTP request if the request vhost is unknown.", - id: "disable-default-server-default", - label: "Disable default server", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-20", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Disable default server", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: true, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Deny HTTP request if the request vhost is unknown.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - DISABLE_DEFAULT_SERVER_STRICT_SNI: { - context: "global", - default: "no", - help: "Close SSL/TLS connection if the SNI is unknown.", - id: "disable-default-server-strict-sni-default", - label: "Disable default server strict SNI", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-19", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Disable default server strict SNI", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Close SSL/TLS connection if the SNI is unknown.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - REDIRECT_HTTP_TO_HTTPS: { - context: "multisite", - default: "no", - help: "Redirect all HTTP request to HTTPS.", - id: "redirect-http-to-https-default", - label: "Redirect HTTP to HTTPS", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-18", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Redirect HTTP to HTTPS", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Redirect all HTTP request to HTTPS.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - AUTO_REDIRECT_HTTP_TO_HTTPS: { - context: "multisite", - default: "yes", - help: "Try to detect if HTTPS is used and activate HTTP to HTTPS redirection if that's the case.", - id: "auto-redirect-http-to-https-default", - label: "Auto redirect HTTP to HTTPS", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-17", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Auto redirect HTTP to HTTPS", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Try to detect if HTTPS is used and activate HTTP to HTTPS redirection if that's the case.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - ALLOWED_METHODS: { - context: "multisite", - default: "GET|POST|HEAD", - help: "Allowed HTTP and WebDAV methods, separated with pipes to be sent by clients.", - id: "allowed-methods-default", - label: "Allowed methods", - regex: "^(?!\\|)(\\|?([A-Z]{3,})(?!.*(^|\\|)\\2))+$", - type: "text", - containerClass: "z-16", - pattern: "^(?!\\|)(\\|?([A-Z]{3,})(?!.*(^|\\|)\\2))+$", - inpType: "input", - name: "Allowed methods", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "GET|POST|HEAD", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Allowed HTTP and WebDAV methods, separated with pipes to be sent by clients.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - MAX_CLIENT_SIZE: { - context: "multisite", - default: "10m", - help: "Maximum body size (0 for infinite).", - id: "max-client-size-default", - label: "Maximum body size", - regex: "^\\d+[kKmMgG]?$", - type: "text", - containerClass: "z-15", - pattern: "^\\d+[kKmMgG]?$", - inpType: "input", - name: "Maximum body size", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "10m", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Maximum body size (0 for infinite).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - SERVE_FILES: { - context: "multisite", - default: "yes", - help: "Serve files from the local folder.", - id: "serve-files-default", - label: "Serve files", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-14", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Serve files", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: true, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Serve files from the local folder.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - ROOT_FOLDER: { - context: "multisite", - default: "", - help: "Root folder containing files to serve (/var/www/html/{server_name} if unset).", - id: "root-folder-default", - label: "Root folder", - regex: "^(/[\\w. \\-]+)*/?$", - type: "text", - containerClass: "z-13", - pattern: "^(/[\\w. \\-]+)*/?$", - inpType: "input", - name: "Root folder", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Root folder containing files to serve (/var/www/html/{server_name} if unset).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - SSL_PROTOCOLS: { - context: "multisite", - default: "TLSv1.2 TLSv1.3", - help: "The supported version of TLS. We recommend the default value TLSv1.2 TLSv1.3 for compatibility reasons.", - id: "https-protocols-default", - label: "HTTPS protocols", - regex: "^(?! )( ?TLSv1\\.[0-3])*$", - type: "text", - containerClass: "z-12", - pattern: "^(?! )( ?TLSv1\\.[0-3])*$", - inpType: "input", - name: "HTTPS protocols", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "TLSv1.2 TLSv1.3", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "The supported version of TLS. We recommend the default value TLSv1.2 TLSv1.3 for compatibility reasons.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - HTTP2: { - context: "multisite", - default: "yes", - help: "Support HTTP2 protocol when HTTPS is enabled.", - id: "http2-default", - label: "HTTP2", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-11", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "HTTP2", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Support HTTP2 protocol when HTTPS is enabled.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - HTTP3: { - context: "multisite", - default: "no", - help: "Support HTTP3 protocol when HTTPS is enabled.", - id: "http3-default", - label: "HTTP3", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-10", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "HTTP3", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Support HTTP3 protocol when HTTPS is enabled.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - HTTP3_ALT_SVC_PORT: { - context: "multisite", - default: "443", - help: "HTTP3 alternate service port. This value will be used as part of the Alt-Svc header.", - id: "http3-alt-svc-port-default", - label: "HTTP3 Alt-Svc port", - regex: "^\\d+$", - type: "text", - containerClass: "z-9", - pattern: "^\\d+$", - inpType: "input", - name: "HTTP3 Alt-Svc port", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "443", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "HTTP3 alternate service port. This value will be used as part of the Alt-Svc header.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - LISTEN_HTTP: { - context: "multisite", - default: "yes", - help: "Respond to (insecure) HTTP requests.", - id: "http-listen-default", - label: "HTTP listen", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-8", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "HTTP listen", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Respond to (insecure) HTTP requests.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - USE_OPEN_FILE_CACHE: { - context: "multisite", - default: "no", - help: "Enable open file cache feature", - id: "use-open-file-cache-default", - label: "Use open file cache", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-7", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use open file cache", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Enable open file cache feature", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - OPEN_FILE_CACHE: { - context: "multisite", - default: "max=1000 inactive=20s", - help: "Open file cache directive", - id: "open-file-cache-default", - label: "Use open file cache", - regex: "^(off|max=\\d+( inactive=\\d+(ms?|[shdwMy]))?)$", - type: "text", - containerClass: "z-6", - pattern: "^(off|max=\\d+( inactive=\\d+(ms?|[shdwMy]))?)$", - inpType: "input", - name: "Use open file cache", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "max=1000 inactive=20s", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Open file cache directive", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - OPEN_FILE_CACHE_ERRORS: { - context: "multisite", - default: "yes", - help: "Enable open file cache for errors", - id: "open-file-cache-errors-default", - label: "Open file cache errors", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-5", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Open file cache errors", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Enable open file cache for errors", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - OPEN_FILE_CACHE_MIN_USES: { - context: "multisite", - default: "2", - help: "Enable open file cache minimum uses", - id: "open-file-cache-min-uses-default", - label: "Open file cache min uses", - regex: "^[1-9]\\d*$", - type: "text", - containerClass: "z-4", - pattern: "^[1-9]\\d*$", - inpType: "input", - name: "Open file cache min uses", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "2", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Enable open file cache minimum uses", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - OPEN_FILE_CACHE_VALID: { - context: "multisite", - default: "30s", - help: "Open file cache valid time", - id: "open-file-cache-valid-default", - label: "Open file cache valid time", - regex: "^\\d+(ms?|[shdwMy])$", - type: "text", - containerClass: "z-3", - pattern: "^\\d+(ms?|[shdwMy])$", - inpType: "input", - name: "Open file cache valid time", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "30s", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Open file cache valid time", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - EXTERNAL_PLUGIN_URLS: { - context: "global", - default: "", - help: "List of external plugins URLs (direct download to .zip or .tar file) to download and install (URLs are separated with space).", - id: "external-plugin-urls-default", - label: "External plugin URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-2", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "External plugin URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of external plugins URLs (direct download to .zip or .tar file) to download and install (URLs are separated with space).", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - DENY_HTTP_STATUS: { - context: "global", - default: "403", - help: "HTTP status code to send when the request is denied (403 or 444). When using 444, BunkerWeb will close the connection.", - id: "deny-http-status-default", - label: "Deny HTTP status", - regex: "^(403|444)$", - type: "select", - containerClass: "z-1", - pattern: "^(403|444)$", - inpType: "select", - name: "Deny HTTP status", - values: ["403", "444"], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "403", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "HTTP status code to send when the request is denied (403 or 444). When using 444, BunkerWeb will close the connection.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - SEND_ANONYMOUS_REPORT: { - context: "global", - default: "yes", - help: "Send anonymous report to BunkerWeb maintainers.", - id: "send-anonymous-report-default", - label: "Send anonymous report", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-0", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Send anonymous report", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: true, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Send anonymous report to BunkerWeb maintainers.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - }, - checksum: null, - }, - { - id: "modsecurity", - stream: "no", - name: "ModSecurity", - description: "Management of the ModSecurity WAF.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - USE_MODSECURITY: { - context: "multisite", - default: "yes", - help: "Enable ModSecurity WAF.", - id: "use-modsecurity-default", - label: "Use ModSecurity", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-5", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use ModSecurity", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Enable ModSecurity WAF.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - USE_MODSECURITY_CRS: { - context: "multisite", - default: "yes", - help: "Enable OWASP Core Rule Set.", - id: "use-modsecurity-crs-default", - label: "Use Core Rule Set", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-4", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use Core Rule Set", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Enable OWASP Core Rule Set.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - MODSECURITY_CRS_VERSION: { - context: "multisite", - default: "3", - help: "Version of the OWASP Core Rule Set to use with ModSecurity (3, 4 or nightly).", - id: "modsecurity-crs-version-default", - label: "Core Rule Set Version", - regex: "^(3|4|nightly)$", - type: "select", - containerClass: "z-3", - pattern: "^(3|4|nightly)$", - inpType: "select", - name: "Core Rule Set Version", - values: ["3", "4", "nightly"], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "3", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Version of the OWASP Core Rule Set to use with ModSecurity (3, 4 or nightly).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - MODSECURITY_SEC_AUDIT_ENGINE: { - context: "multisite", - default: "RelevantOnly", - help: "SecAuditEngine directive of ModSecurity.", - id: "modsecurity-sec-audit-engine-default", - label: "SecAuditEngine", - regex: "^(On|RelevantOnly|Off)$", - type: "select", - containerClass: "z-2", - pattern: "^(On|RelevantOnly|Off)$", - inpType: "select", - name: "SecAuditEngine", - values: ["Off", "On", "RelevantOnly"], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "RelevantOnly", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "SecAuditEngine directive of ModSecurity.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - MODSECURITY_SEC_RULE_ENGINE: { - context: "multisite", - default: "On", - help: "SecRuleEngine directive of ModSecurity.", - id: "modsecurity-sec-rule-engine-default", - label: "SecRuleEngine", - regex: "^(On|DetectionOnly|Off)$", - type: "select", - containerClass: "z-1", - pattern: "^(On|DetectionOnly|Off)$", - inpType: "select", - name: "SecRuleEngine", - values: ["DetectionOnly", "Off", "On"], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "On", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "SecRuleEngine directive of ModSecurity.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - MODSECURITY_SEC_AUDIT_LOG_PARTS: { - context: "multisite", - default: "ABCFHZ", - help: "SecAuditLogParts directive of ModSecurity.", - id: "modsecurity-sec-audit-log-parts-default", - label: "SecAuditLogParts", - regex: "^A(([B-K])(?!.*\\2))+Z$", - type: "text", - containerClass: "z-0", - pattern: "^A(([B-K])(?!.*\\2))+Z$", - inpType: "input", - name: "SecAuditLogParts", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "ABCFHZ", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "SecAuditLogParts directive of ModSecurity.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - }, - checksum: null, - }, - { - id: "php", - stream: "no", - name: "PHP", - description: "Manage local or remote PHP-FPM.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - REMOTE_PHP: { - context: "multisite", - default: "", - help: "Hostname of the remote PHP-FPM instance.", - id: "remote-php-default", - label: "Remote PHP", - regex: - "^((?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?)?$", - type: "text", - containerClass: "z-3", - pattern: - "^((?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?)?$", - inpType: "input", - name: "Remote PHP", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Hostname of the remote PHP-FPM instance.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REMOTE_PHP_PATH: { - context: "multisite", - default: "", - help: "Root folder containing files in the remote PHP-FPM instance.", - id: "remote-php-path-default", - label: "Remote PHP path", - regex: "^(/[\\w. \\-]+)*/?$", - type: "text", - containerClass: "z-2", - pattern: "^(/[\\w. \\-]+)*/?$", - inpType: "input", - name: "Remote PHP path", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Root folder containing files in the remote PHP-FPM instance.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - LOCAL_PHP: { - context: "multisite", - default: "", - help: "Path to the PHP-FPM socket file.", - id: "local-default", - label: "Local PHP", - regex: "^(/[\\w. \\-]+)*/?$", - type: "text", - containerClass: "z-1", - pattern: "^(/[\\w. \\-]+)*/?$", - inpType: "input", - name: "Local PHP", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Path to the PHP-FPM socket file.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - LOCAL_PHP_PATH: { - context: "multisite", - default: "", - help: "Root folder containing files in the local PHP-FPM instance.", - id: "local-php-path-default", - label: "Local PHP path", - regex: "^(/[\\w. \\-]+)*/?$", - type: "text", - containerClass: "z-0", - pattern: "^(/[\\w. \\-]+)*/?$", - inpType: "input", - name: "Local PHP path", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Root folder containing files in the local PHP-FPM instance.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - }, - checksum: null, - }, - { - id: "pro", - stream: "no", - name: "Pro", - description: "Pro settings for the Pro version of BunkerWeb.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - PRO_LICENSE_KEY: { - context: "global", - default: "", - help: "The License Key for the Pro version of BunkerWeb.", - id: "pro-license-key-default", - label: "Pro License Key", - regex: "^.*$", - type: "password", - containerClass: "z-0", - pattern: "^.*$", - inpType: "input", - name: "Pro License Key", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "The License Key for the Pro version of BunkerWeb.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - }, - checksum: null, - }, - { - id: "realip", - stream: "partial", - name: "Real IP", - description: - "Get real IP of clients when BunkerWeb is behind a reverse proxy / load balancer.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - USE_REAL_IP: { - context: "multisite", - default: "no", - help: "Retrieve the real IP of client.", - id: "use-real-ip-default", - label: "Use real ip", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-5", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use real ip", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Retrieve the real IP of client.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - USE_PROXY_PROTOCOL: { - context: "multisite", - default: "no", - help: "Enable PROXY protocol communication.", - id: "use-proxy-protocol-default", - label: "Use PROXY protocol", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-4", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use PROXY protocol", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Enable PROXY protocol communication.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REAL_IP_FROM: { - context: "multisite", - default: "192.168.0.0/16 172.16.0.0/12 10.0.0.0/8", - help: "List of trusted IPs / networks, separated with spaces, where proxied requests come from.", - id: "real-ip-from-default", - label: "Real IP from", - regex: - "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - type: "text", - containerClass: "z-3", - pattern: - "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - inpType: "input", - name: "Real IP from", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "192.168.0.0/16 172.16.0.0/12 10.0.0.0/8", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of trusted IPs / networks, separated with spaces, where proxied requests come from.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REAL_IP_HEADER: { - context: "multisite", - default: "X-Forwarded-For", - help: "HTTP header containing the real IP or special value proxy_protocol for PROXY protocol.", - id: "real-ip-header-default", - label: "Real IP header", - regex: "^(?! )(( ?(?!proxy_protocol)[\\w\\-]+)*|proxy_protocol)$", - type: "text", - containerClass: "z-2", - pattern: "^(?! )(( ?(?!proxy_protocol)[\\w\\-]+)*|proxy_protocol)$", - inpType: "input", - name: "Real IP header", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "X-Forwarded-For", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "HTTP header containing the real IP or special value proxy_protocol for PROXY protocol.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REAL_IP_RECURSIVE: { - context: "multisite", - default: "yes", - help: "Perform a recursive search in the header container IP address.", - id: "real-ip-recursive-default", - label: "Real IP recursive", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-1", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Real IP recursive", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Perform a recursive search in the header container IP address.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REAL_IP_FROM_URLS: { - context: "global", - default: "", - help: "List of URLs containing trusted IPs / networks, separated with spaces, where proxied requests come from.", - id: "real-ip-from-urls-default", - label: "Real IP from URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-0", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Real IP from URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of URLs containing trusted IPs / networks, separated with spaces, where proxied requests come from.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - }, - checksum: null, - }, - { - id: "redirect", - stream: "no", - name: "Redirect", - description: "Manage HTTP redirects.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - REDIRECT_TO: { - context: "multisite", - default: "", - help: "Redirect a whole site to another one.", - id: "redirect-to-default", - label: "Redirect to", - regex: - "^(https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)?$", - type: "text", - containerClass: "z-2", - pattern: - "^(https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)?$", - inpType: "input", - name: "Redirect to", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Redirect a whole site to another one.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REDIRECT_TO_REQUEST_URI: { - context: "multisite", - default: "no", - help: "Append the requested URI to the redirect address.", - id: "redirect-to-request-uri-default", - label: "Append request URI", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-1", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Append request URI", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Append the requested URI to the redirect address.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REDIRECT_TO_STATUS_CODE: { - context: "multisite", - default: "301", - help: "Status code to send to client when redirecting.", - id: "redirect-to-status-code-default", - label: "Append request URI", - regex: "^(301|302)$", - type: "select", - containerClass: "z-0", - pattern: "^(301|302)$", - inpType: "select", - name: "Append request URI", - values: ["301", "302"], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "301", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Status code to send to client when redirecting.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - }, - checksum: null, - }, - { - id: "redis", - stream: "yes", - name: "Redis", - description: - "Redis server configuration when using BunkerWeb in cluster mode.", - version: "1.0", - type: "core", - method: "manual", - page: true, - settings: { - USE_REDIS: { - context: "global", - default: "no", - help: "Activate Redis.", - id: "use-redis-default", - label: "Activate Redis", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-14", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Activate Redis", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Activate Redis.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - REDIS_HOST: { - context: "global", - default: "", - help: "Redis server IP or hostname.", - id: "redis-host-default", - label: "Redis server", - regex: - "^((?!-)[a-zA-Z0-9\\-]{1,63}(.[a-zA-Z]{2,})+|(\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3}|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)))?$", - type: "text", - containerClass: "z-13", - pattern: - "^((?!-)[a-zA-Z0-9\\-]{1,63}(.[a-zA-Z]{2,})+|(\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3}|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)))?$", - inpType: "input", - name: "Redis server", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Redis server IP or hostname.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - REDIS_PORT: { - context: "global", - default: "6379", - help: "Redis server port.", - id: "redis-port-default", - label: "Redis port", - regex: "^[0-9]+$", - type: "text", - containerClass: "z-12", - pattern: "^[0-9]+$", - inpType: "input", - name: "Redis port", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "6379", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Redis server port.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - REDIS_DATABASE: { - context: "global", - default: "0", - help: "Redis database number.", - id: "redis-database-default", - label: "Redis database", - regex: "^[0-9]+$", - type: "text", - containerClass: "z-11", - pattern: "^[0-9]+$", - inpType: "input", - name: "Redis database", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "0", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Redis database number.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - REDIS_SSL: { - context: "global", - default: "no", - help: "Use SSL/TLS connection with Redis server.", - id: "redis-ssl-default", - label: "Redis SSL/TLS", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-10", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Redis SSL/TLS", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Use SSL/TLS connection with Redis server.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - REDIS_SSL_VERIFY: { - context: "global", - default: "no", - help: "Verify the certificate of Redis server.", - id: "redis-ssl-verify-default", - label: "Redis SSL/TLS verify", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-9", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Redis SSL/TLS verify", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Verify the certificate of Redis server.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - REDIS_TIMEOUT: { - context: "global", - default: "1000", - help: "Redis server timeout (in ms) for connect, read and write.", - id: "redis-timeout-default", - label: "Redis timeout (ms)", - regex: "^[0-9]+$", - type: "text", - containerClass: "z-8", - pattern: "^[0-9]+$", - inpType: "input", - name: "Redis timeout (ms)", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "1000", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Redis server timeout (in ms) for connect, read and write.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - REDIS_USERNAME: { - context: "global", - default: "", - help: "Redis username used in AUTH command.", - id: "redis-username-default", - label: "Redis username", - regex: "^.*$", - type: "text", - containerClass: "z-7", - pattern: "^.*$", - inpType: "input", - name: "Redis username", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Redis username used in AUTH command.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - REDIS_PASSWORD: { - context: "global", - default: "", - help: "Redis password used in AUTH command.", - id: "redis-password-default", - label: "Redis password", - regex: "^.*$", - type: "password", - containerClass: "z-6", - pattern: "^.*$", - inpType: "input", - name: "Redis password", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Redis password used in AUTH command.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - REDIS_SENTINEL_HOSTS: { - context: "global", - default: "", - help: "Redis sentinel hosts with format host:[port] separated with spaces.", - id: "redis-sentinel-hosts-default", - label: "Redis sentinel hosts", - regex: "^.*$", - type: "text", - containerClass: "z-5", - pattern: "^.*$", - inpType: "input", - name: "Redis sentinel hosts", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Redis sentinel hosts with format host:[port] separated with spaces.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - REDIS_SENTINEL_USERNAME: { - context: "global", - default: "", - help: "Redis sentinel username.", - id: "redis-sentinel-username-default", - label: "Redis sentinel username", - regex: "^.*$", - type: "text", - containerClass: "z-4", - pattern: "^.*$", - inpType: "input", - name: "Redis sentinel username", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Redis sentinel username.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - REDIS_SENTINEL_PASSWORD: { - context: "global", - default: "", - help: "Redis sentinel password.", - id: "redis-sentinel-password-default", - label: "Redis sentinel password", - regex: "^.*$", - type: "password", - containerClass: "z-3", - pattern: "^.*$", - inpType: "input", - name: "Redis sentinel password", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Redis sentinel password.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - REDIS_SENTINEL_MASTER: { - context: "global", - default: "", - help: "Redis sentinel master name.", - id: "redis-sentinel-master-default", - label: "Redis sentinel master", - regex: "^.*$", - type: "text", - containerClass: "z-2", - pattern: "^.*$", - inpType: "input", - name: "Redis sentinel master", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Redis sentinel master name.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - REDIS_KEEPALIVE_IDLE: { - context: "global", - default: "30000", - help: "Max idle time (in ms) before closing redis connection in the pool.", - id: "redis-keepalive-idle-default", - label: "Redis keepalive idle (ms)", - regex: "^[0-9]+$", - type: "text", - containerClass: "z-1", - pattern: "^[0-9]+$", - inpType: "input", - name: "Redis keepalive idle (ms)", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "30000", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Max idle time (in ms) before closing redis connection in the pool.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - REDIS_KEEPALIVE_POOL: { - context: "global", - default: "10", - help: "Max number of redis connection(s) kept in the pool.", - id: "redis-keepalive-pool-default", - label: "Redis keepalive pool", - regex: "^[0-9]+$", - type: "text", - containerClass: "z-0", - pattern: "^[0-9]+$", - inpType: "input", - name: "Redis keepalive pool", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "10", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Max number of redis connection(s) kept in the pool.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - }, - checksum: null, - }, - { - id: "reverseproxy", - stream: "partial", - name: "Reverse proxy", - description: "Manage reverse proxy configurations.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - USE_REVERSE_PROXY: { - context: "multisite", - default: "no", - help: "Activate reverse proxy mode.", - id: "use-reverse-proxy-default", - label: "Use reverse proxy", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-26", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use reverse proxy", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Activate reverse proxy mode.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_INTERCEPT_ERRORS: { - context: "multisite", - default: "yes", - help: "Intercept and rewrite errors.", - id: "reverse-proxy-intercept-errors-default", - label: "Intercept errors", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-25", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Intercept errors", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Intercept and rewrite errors.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_CUSTOM_HOST: { - context: "multisite", - default: "", - help: "Override Host header sent to upstream server.", - id: "reverse-proxy-custom-host-default", - label: "Reverse proxy custom host", - regex: "^.*$", - type: "text", - containerClass: "z-24", - pattern: "^.*$", - inpType: "input", - name: "Reverse proxy custom host", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Override Host header sent to upstream server.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_HOST: { - context: "multisite", - default: "", - help: "Full URL of the proxied resource (proxy_pass).", - id: "reverse-proxy-host-default", - label: "Reverse proxy host", - regex: "^.*$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-23", - pattern: "^.*$", - inpType: "input", - name: "Reverse proxy host", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Full URL of the proxied resource (proxy_pass).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_URL: { - context: "multisite", - default: "/", - help: "Location URL that will be proxied.", - id: "reverse-proxy-url-default", - label: "Reverse proxy url", - regex: "^.*$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-22", - pattern: "^.*$", - inpType: "input", - name: "Reverse proxy url", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "/", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Location URL that will be proxied.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_WS: { - context: "multisite", - default: "no", - help: "Enable websocket on the proxied resource.", - id: "reverse-proxy-ws-default", - label: "Reverse proxy WS", - regex: "^(yes|no)$", - type: "check", - multiple: "reverse-proxy", - containerClass: "z-21", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Reverse proxy WS", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Enable websocket on the proxied resource.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_HEADERS: { - context: "multisite", - default: "", - help: "List of HTTP headers to send to proxied resource separated with semicolons (values for proxy_set_header directive).", - id: "reverse-proxy-headers-default", - label: "Reverse proxy headers", - regex: "^(?![; ])(;? ?([\\w\\-]+)(?!.*\\2 ) [^;]+)*$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-20", - pattern: "^(?![; ])(;? ?([\\w\\-]+)(?!.*\\2 ) [^;]+)*$", - inpType: "input", - name: "Reverse proxy headers", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of HTTP headers to send to proxied resource separated with semicolons (values for proxy_set_header directive).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_HEADERS_CLIENT: { - context: "multisite", - default: "", - help: "List of HTTP headers to send to client separated with semicolons (values for add_header directive).", - id: "reverse-proxy-headers-client-default", - label: "Reverse proxy headers-client", - regex: "^(?![; ])(;? ?([\\w\\-]+)(?!.*\\2 ) [^;]+)*$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-19", - pattern: "^(?![; ])(;? ?([\\w\\-]+)(?!.*\\2 ) [^;]+)*$", - inpType: "input", - name: "Reverse proxy headers-client", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of HTTP headers to send to client separated with semicolons (values for add_header directive).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_BUFFERING: { - context: "multisite", - default: "yes", - help: "Enable or disable buffering of responses from proxied resource.", - id: "reverse-proxy-buffering-default", - label: "Reverse proxy buffering", - regex: "^(yes|no)$", - type: "check", - multiple: "reverse-proxy", - containerClass: "z-18", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Reverse proxy buffering", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Enable or disable buffering of responses from proxied resource.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_KEEPALIVE: { - context: "multisite", - default: "no", - help: "Enable or disable keepalive connections with the proxied resource.", - id: "reverse-proxy-keepalive-default", - label: "Reverse proxy keepalive", - regex: "^(yes|no)$", - type: "check", - multiple: "reverse-proxy", - containerClass: "z-17", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Reverse proxy keepalive", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Enable or disable keepalive connections with the proxied resource.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_AUTH_REQUEST: { - context: "multisite", - default: "", - help: "Enable authentication using an external provider (value of auth_request directive).", - id: "reverse-proxy-auth-request-default", - label: "Reverse proxy auth request", - regex: "^(\\/[\\w\\].~:\\/?#\\[@!$\\&'\\(\\)*+,;=\\-]*|off)?$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-16", - pattern: "^(\\/[\\w\\].~:\\/?#\\[@!$\\&'\\(\\)*+,;=\\-]*|off)?$", - inpType: "input", - name: "Reverse proxy auth request", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Enable authentication using an external provider (value of auth_request directive).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_AUTH_REQUEST_SIGNIN_URL: { - context: "multisite", - default: "", - help: "Redirect clients to sign-in URL when using REVERSE_PROXY_AUTH_REQUEST (used when auth_request call returned 401).", - id: "reverse-proxy-auth-request-signin-url-default", - label: "Auth request signin URL", - regex: - "^(https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)?$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-15", - pattern: - "^(https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)?$", - inpType: "input", - name: "Auth request signin URL", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Redirect clients to sign-in URL when using REVERSE_PROXY_AUTH_REQUEST (used when auth_request call returned 401).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_AUTH_REQUEST_SET: { - context: "multisite", - default: "", - help: "List of variables to set from the authentication provider, separated with semicolons (values of auth_request_set directives).", - id: "reverse-proxy-auth-request-set-default", - label: "Reverse proxy auth request set", - regex: "^(?! ;)(;? ?(\\$[a-z_\\-]+)(?!.*\\2 ) [^;]+)*$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-14", - pattern: "^(?! ;)(;? ?(\\$[a-z_\\-]+)(?!.*\\2 ) [^;]+)*$", - inpType: "input", - name: "Reverse proxy auth request set", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of variables to set from the authentication provider, separated with semicolons (values of auth_request_set directives).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_CONNECT_TIMEOUT: { - context: "multisite", - default: "60s", - help: "Timeout when connecting to the proxied resource.", - id: "reverse-proxy-connect-timeout-default", - label: "Reverse proxy connect timeout", - regex: "^\\d+(ms?|[shdwMy])$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-13", - pattern: "^\\d+(ms?|[shdwMy])$", - inpType: "input", - name: "Reverse proxy connect timeout", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "60s", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Timeout when connecting to the proxied resource.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_READ_TIMEOUT: { - context: "multisite", - default: "60s", - help: "Timeout when reading from the proxied resource.", - id: "reverse-proxy-read-timeout-default", - label: "Reverse proxy read timeout", - regex: "^\\d+(ms?|[shdwMy])$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-12", - pattern: "^\\d+(ms?|[shdwMy])$", - inpType: "input", - name: "Reverse proxy read timeout", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "60s", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Timeout when reading from the proxied resource.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_SEND_TIMEOUT: { - context: "multisite", - default: "60s", - help: "Timeout when sending to the proxied resource.", - id: "reverse-proxy-send-timeout-default", - label: "Reverse proxy send timeout", - regex: "^\\d+(ms?|[shdwMy])$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-11", - pattern: "^\\d+(ms?|[shdwMy])$", - inpType: "input", - name: "Reverse proxy send timeout", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "60s", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Timeout when sending to the proxied resource.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_INCLUDES: { - context: "multisite", - default: "", - help: "Additional configuration to include in the location block, separated with spaces.", - id: "reverse-proxy-includes-default", - label: "Reverse proxy includes", - regex: "^(?! )( ?(\\w+)(?!.*\\b\\2\\b))*$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-10", - pattern: "^(?! )( ?(\\w+)(?!.*\\b\\2\\b))*$", - inpType: "input", - name: "Reverse proxy includes", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Additional configuration to include in the location block, separated with spaces.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - USE_PROXY_CACHE: { - context: "multisite", - default: "no", - help: "Enable or disable caching of the proxied resources.", - id: "use-proxy-cache-default", - label: "Reverse proxy cache", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-9", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Reverse proxy cache", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Enable or disable caching of the proxied resources.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - PROXY_CACHE_PATH_LEVELS: { - context: "global", - default: "1:2", - help: "Hierarchy levels of the cache.", - id: "proxy-cache-path-levels-default", - label: "Hierarchy levels", - regex: "^(:?[12]){1,3}$", - type: "text", - containerClass: "z-8", - pattern: "^(:?[12]){1,3}$", - inpType: "input", - name: "Hierarchy levels", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "1:2", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Hierarchy levels of the cache.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - PROXY_CACHE_PATH_ZONE_SIZE: { - context: "global", - default: "10m", - help: "Maximum size of cached metadata when caching proxied resources.", - id: "proxy-cache-path-zone-size-default", - label: "Reverse proxy cache zone size", - regex: "^\\d+[kKmMgG]?$", - type: "text", - containerClass: "z-7", - pattern: "^\\d+[kKmMgG]?$", - inpType: "input", - name: "Reverse proxy cache zone size", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "10m", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Maximum size of cached metadata when caching proxied resources.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - PROXY_CACHE_PATH_PARAMS: { - context: "global", - default: "max_size=100m", - help: "Additional parameters to add to the proxy_cache directive.", - id: "proxy-cache-path-params-default", - label: "Reverse proxy cache params", - regex: "^.*$", - type: "text", - containerClass: "z-6", - pattern: "^.*$", - inpType: "input", - name: "Reverse proxy cache params", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "max_size=100m", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Additional parameters to add to the proxy_cache directive.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - PROXY_CACHE_METHODS: { - context: "multisite", - default: "GET HEAD", - help: "HTTP methods that should trigger a cache operation.", - id: "proxy-cache-methods-default", - label: "Reverse proxy cache methods", - regex: - "^(?! )( ?(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH)(?!.*\\2))+$", - type: "text", - containerClass: "z-5", - pattern: - "^(?! )( ?(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH)(?!.*\\2))+$", - inpType: "input", - name: "Reverse proxy cache methods", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "GET HEAD", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "HTTP methods that should trigger a cache operation.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - PROXY_CACHE_MIN_USES: { - context: "multisite", - default: "2", - help: "The minimum number of requests before a response is cached.", - id: "proxy-cache-min-uses-default", - label: "Reverse proxy cache minimum uses", - regex: "^[1-9]\\d*$", - type: "text", - containerClass: "z-4", - pattern: "^[1-9]\\d*$", - inpType: "input", - name: "Reverse proxy cache minimum uses", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "2", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "The minimum number of requests before a response is cached.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - PROXY_CACHE_KEY: { - context: "multisite", - default: "$scheme$host$request_uri", - help: "The key used to uniquely identify a cached response.", - id: "proxy-cache-key-default", - label: "Reverse proxy cache key", - regex: "^(?! )( ?(\\$[a-z_]+)(?!.*\\2))+$", - type: "text", - containerClass: "z-3", - pattern: "^(?! )( ?(\\$[a-z_]+)(?!.*\\2))+$", - inpType: "input", - name: "Reverse proxy cache key", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "$scheme$host$request_uri", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "The key used to uniquely identify a cached response.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - PROXY_CACHE_VALID: { - context: "multisite", - default: "200=24h 301=1h 302=24h", - help: "Define the caching time depending on the HTTP status code (list of status=time), separated with spaces.", - id: "proxy-cache-valid-default", - label: "Reverse proxy cache valid", - regex: "^(?! )( ?([1-5]\\d{2})(?!.*\\2=)=\\d+(ms?|[shdwMy]))*$", - type: "text", - containerClass: "z-2", - pattern: "^(?! )( ?([1-5]\\d{2})(?!.*\\2=)=\\d+(ms?|[shdwMy]))*$", - inpType: "input", - name: "Reverse proxy cache valid", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "200=24h 301=1h 302=24h", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Define the caching time depending on the HTTP status code (list of status=time), separated with spaces.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - PROXY_NO_CACHE: { - context: "multisite", - default: "$http_pragma $http_authorization", - help: "Conditions to disable caching of responses.", - id: "proxy-no-cache-default", - label: "Reverse proxy no cache", - regex: "^.*$", - type: "text", - containerClass: "z-1", - pattern: "^.*$", - inpType: "input", - name: "Reverse proxy no cache", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "$http_pragma $http_authorization", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Conditions to disable caching of responses.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - PROXY_CACHE_BYPASS: { - context: "multisite", - default: "0", - help: "Conditions to bypass caching of responses.", - id: "proxy-cache-bypass-default", - label: "Reverse proxy bypass", - regex: "^.*$", - type: "text", - containerClass: "z-0", - pattern: "^.*$", - inpType: "input", - name: "Reverse proxy bypass", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "0", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Conditions to bypass caching of responses.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - }, - checksum: null, - }, - { - id: "reversescan", - stream: "yes", - name: "Reverse scan", - description: "Scan clients ports to detect proxies or servers.", - version: "1.0", - type: "core", - method: "manual", - page: true, - settings: { - USE_REVERSE_SCAN: { - context: "multisite", - default: "no", - help: "Enable scanning of clients ports and deny access if one is opened.", - id: "use-reverse-scan-default", - label: "Reverse scan", - regex: "^(no|yes)$", - type: "check", - containerClass: "z-2", - pattern: "^(no|yes)$", - inpType: "checkbox", - name: "Reverse scan", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Enable scanning of clients ports and deny access if one is opened.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_SCAN_PORTS: { - context: "multisite", - default: "22 80 443 3128 8000 8080", - help: "List of port to scan when using reverse scan feature.", - id: "reverse-scan-ports-default", - label: "Reverse scan ports", - regex: "^.*$", - type: "text", - containerClass: "z-1", - pattern: "^.*$", - inpType: "input", - name: "Reverse scan ports", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "22 80 443 3128 8000 8080", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of port to scan when using reverse scan feature.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_SCAN_TIMEOUT: { - context: "multisite", - default: "500", - help: "Specify the maximum timeout (in ms) when scanning a port.", - id: "reverse-scan-timeout-default", - label: "Reverse scan timeout", - regex: "^.*$", - type: "text", - containerClass: "z-0", - pattern: "^.*$", - inpType: "input", - name: "Reverse scan timeout", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "500", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Specify the maximum timeout (in ms) when scanning a port.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - }, - checksum: null, - }, - { - id: "selfsigned", - stream: "yes", - name: "Self-signed certificate", - description: "Generate self-signed certificate.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - GENERATE_SELF_SIGNED_SSL: { - context: "multisite", - default: "no", - help: "Generate and use self-signed certificate.", - id: "generate-self-signed-ssl-default", - label: "Activate self-signed certificate", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-2", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Activate self-signed certificate", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Generate and use self-signed certificate.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - SELF_SIGNED_SSL_EXPIRY: { - context: "multisite", - default: "365", - help: "Self-signed certificate expiry in days.", - id: "self-signed-ssl-expiry-default", - label: "Certificate expiry", - regex: "^\\d+$", - type: "text", - containerClass: "z-1", - pattern: "^\\d+$", - inpType: "input", - name: "Certificate expiry", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "365", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Self-signed certificate expiry in days.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - SELF_SIGNED_SSL_SUBJ: { - context: "multisite", - default: "/CN=www.example.com/", - help: "Self-signed certificate subject.", - id: "self-signed-ssl-subj-default", - label: "Certificate subject", - regex: "^/CN=[^,]+$", - type: "text", - containerClass: "z-0", - pattern: "^/CN=[^,]+$", - inpType: "input", - name: "Certificate subject", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "/CN=www.example.com/", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Self-signed certificate subject.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - }, - checksum: null, - }, - { - id: "sessions", - stream: "yes", - name: "Sessions", - description: "Management of session used by other plugins.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - SESSIONS_SECRET: { - context: "global", - default: "random", - help: "Secret used to encrypt sessions variables for storing data related to challenges.", - id: "session-secret-default", - label: "Sessions secret", - regex: "^\\w+$", - type: "password", - containerClass: "z-6", - pattern: "^\\w+$", - inpType: "input", - name: "Sessions secret", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "random", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Secret used to encrypt sessions variables for storing data related to challenges.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - SESSIONS_NAME: { - context: "global", - default: "random", - help: "Name of the cookie given to clients.", - id: "sessions-name-default", - label: "Sessions name", - regex: "^\\w+$", - type: "text", - containerClass: "z-5", - pattern: "^\\w+$", - inpType: "input", - name: "Sessions name", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "random", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Name of the cookie given to clients.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - SESSIONS_IDLING_TIMEOUT: { - context: "global", - default: "1800", - help: "Maximum time (in seconds) of inactivity before the session is invalidated.", - id: "sessions-idling-timeout-default", - label: "Sessions idling timeout", - regex: "^\\d+$", - type: "text", - containerClass: "z-4", - pattern: "^\\d+$", - inpType: "input", - name: "Sessions idling timeout", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "1800", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Maximum time (in seconds) of inactivity before the session is invalidated.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - SESSIONS_ROLLING_TIMEOUT: { - context: "global", - default: "3600", - help: "Maximum time (in seconds) before a session must be renewed.", - id: "sessions-rolling-timeout-default", - label: "Sessions rolling timeout", - regex: "^\\d+$", - type: "text", - containerClass: "z-3", - pattern: "^\\d+$", - inpType: "input", - name: "Sessions rolling timeout", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "3600", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Maximum time (in seconds) before a session must be renewed.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - SESSIONS_ABSOLUTE_TIMEOUT: { - context: "global", - default: "86400", - help: "Maximum time (in seconds) before a session is destroyed.", - id: "sessions-absolute-timeout-default", - label: "Sessions absolute timeout", - regex: "^\\d+$", - type: "text", - containerClass: "z-2", - pattern: "^\\d+$", - inpType: "input", - name: "Sessions absolute timeout", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "86400", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Maximum time (in seconds) before a session is destroyed.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - SESSIONS_CHECK_IP: { - context: "global", - default: "yes", - help: "Destroy session if IP address is different than original one.", - id: "sessions-check-ip-default", - label: "Sessions check IP", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-1", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Sessions check IP", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Destroy session if IP address is different than original one.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - SESSIONS_CHECK_USER_AGENT: { - context: "global", - default: "yes", - help: "Destroy session if User-Agent is different than original one.", - id: "sessions-user-agent-default", - label: "Sessions check User-Agent", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-0", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Sessions check User-Agent", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Destroy session if User-Agent is different than original one.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - }, - checksum: null, - }, - { - id: "ui", - stream: "no", - name: "UI", - description: "Integrate easily the BunkerWeb UI.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - USE_UI: { - context: "multisite", - default: "no", - help: "Use UI", - id: "use-ui-default", - label: "Use UI", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-1", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use UI", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Use UI", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - UI_HOST: { - context: "global", - default: "", - help: "Address of the web UI used for initial setup", - id: "ui-host-default", - label: "UI host", - regex: "^.*$", - type: "text", - containerClass: "z-0", - pattern: "^.*$", - inpType: "input", - name: "UI host", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Address of the web UI used for initial setup", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - }, - checksum: null, - }, - { - id: "whitelist", - stream: "partial", - name: "Whitelist", - description: - "Allow access based on internal and external IP/network/rDNS/ASN whitelists.", - version: "1.0", - type: "core", - method: "manual", - page: true, - settings: { - USE_WHITELIST: { - context: "multisite", - default: "yes", - help: "Activate whitelist feature.", - id: "use-whitelist-default", - label: "Activate whitelisting", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-11", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Activate whitelisting", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: true, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Activate whitelist feature.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - WHITELIST_IP: { - context: "multisite", - default: - "20.191.45.212 40.88.21.235 40.76.173.151 40.76.163.7 20.185.79.47 52.142.26.175 20.185.79.15 52.142.24.149 40.76.162.208 40.76.163.23 40.76.162.191 40.76.162.247", - help: "List of IP/network, separated with spaces, to put into the whitelist.", - id: "whitelist-ip-default", - label: "Whitelist IP/network", - regex: - "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - type: "text", - containerClass: "z-10", - pattern: - "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - inpType: "input", - name: "Whitelist IP/network", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: - "20.191.45.212 40.88.21.235 40.76.173.151 40.76.163.7 20.185.79.47 52.142.26.175 20.185.79.15 52.142.24.149 40.76.162.208 40.76.163.23 40.76.162.191 40.76.162.247", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of IP/network, separated with spaces, to put into the whitelist.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - WHITELIST_RDNS: { - context: "multisite", - default: - ".google.com .googlebot.com .yandex.ru .yandex.net .yandex.com .search.msn.com .baidu.com .baidu.jp .crawl.yahoo.net .fwd.linkedin.com .twitter.com .twttr.com .discord.com", - help: "List of reverse DNS suffixes, separated with spaces, to whitelist.", - id: "whitelist-rdns-default", - label: "Whitelist reverse DNS", - regex: "^( *(([^ ]+)(?!.*\\3( |$))) *)*$", - type: "text", - containerClass: "z-9", - pattern: "^( *(([^ ]+)(?!.*\\3( |$))) *)*$", - inpType: "input", - name: "Whitelist reverse DNS", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: - ".google.com .googlebot.com .yandex.ru .yandex.net .yandex.com .search.msn.com .baidu.com .baidu.jp .crawl.yahoo.net .fwd.linkedin.com .twitter.com .twttr.com .discord.com", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of reverse DNS suffixes, separated with spaces, to whitelist.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - WHITELIST_RDNS_GLOBAL: { - context: "multisite", - default: "yes", - help: "Only perform RDNS whitelist checks on global IP addresses.", - id: "whitelist-rdns-global-default", - label: "Whitelist reverse DNS global IPs", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-8", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Whitelist reverse DNS global IPs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Only perform RDNS whitelist checks on global IP addresses.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - WHITELIST_ASN: { - context: "multisite", - default: "32934", - help: "List of ASN numbers, separated with spaces, to whitelist.", - id: "whitelist-asn-default", - label: "Whitelist ASN", - regex: "^^( *((ASN?)?(\\d+)\\b(?!.*[SN ]\\4\\b)) *)*$", - type: "text", - containerClass: "z-7", - pattern: "^^( *((ASN?)?(\\d+)\\b(?!.*[SN ]\\4\\b)) *)*$", - inpType: "input", - name: "Whitelist ASN", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "32934", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of ASN numbers, separated with spaces, to whitelist.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - WHITELIST_USER_AGENT: { - context: "multisite", - default: "", - help: "List of User-Agent (PCRE regex), separated with spaces, to whitelist.", - id: "whitelist-user-agent-default", - label: "Whitelist User-Agent", - regex: "^.*$", - type: "text", - containerClass: "z-6", - pattern: "^.*$", - inpType: "input", - name: "Whitelist User-Agent", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of User-Agent (PCRE regex), separated with spaces, to whitelist.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - WHITELIST_URI: { - context: "multisite", - default: "", - help: "List of URI (PCRE regex), separated with spaces, to whitelist.", - id: "whitelist-uri-default", - label: "Whitelist URI", - regex: "^( *(.*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-5", - pattern: "^( *(.*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Whitelist URI", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of URI (PCRE regex), separated with spaces, to whitelist.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - WHITELIST_IP_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing good IP/network to whitelist.", - id: "whitelist-ip-urls-default", - label: "Whitelist IP/network URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-4", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Whitelist IP/network URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of URLs, separated with spaces, containing good IP/network to whitelist.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - WHITELIST_RDNS_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing reverse DNS suffixes to whitelist.", - id: "whitelist-rdns-urls-default", - label: "Whitelist reverse DNS URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-3", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Whitelist reverse DNS URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of URLs, separated with spaces, containing reverse DNS suffixes to whitelist.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - WHITELIST_ASN_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing ASN to whitelist.", - id: "whitelist-asn-urls-default", - label: "Whitelist ASN URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-2", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Whitelist ASN URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of URLs, separated with spaces, containing ASN to whitelist.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - WHITELIST_USER_AGENT_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing good User-Agent to whitelist.", - id: "whitelist-user-agent-urls-default", - label: "Whitelist User-Agent URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-1", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Whitelist User-Agent URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of URLs, separated with spaces, containing good User-Agent to whitelist.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - WHITELIST_URI_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing bad URI to whitelist.", - id: "whitelist-uri-urls-default", - label: "Whitelist URI URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-0", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Whitelist URI URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of URLs, separated with spaces, containing bad URI to whitelist.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - }, - checksum: null, - }, - ], - low: [ - { - id: "clientcache", - stream: "no", - name: "Client cache", - description: "Manage caching for clients.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - USE_CLIENT_CACHE: { - context: "multisite", - default: "no", - help: "Tell client to store locally static files.", - id: "use-client-cache-default", - label: "Use client cache", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-3", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use client cache", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: true, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Tell client to store locally static files.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - CLIENT_CACHE_EXTENSIONS: { - context: "global", - default: - "jpg|jpeg|png|bmp|ico|svg|tif|css|js|otf|ttf|eot|woff|woff2", - help: "List of file extensions, separated with pipes that should be cached.", - id: "client-cache-extensions-default", - label: "Extensions that should be cached by the client", - regex: "^(?!\\|)(\\|?([a-z0-9]+)(?!.*\\2(?!.)))+$", - type: "text", - containerClass: "z-2", - pattern: "^(?!\\|)(\\|?([a-z0-9]+)(?!.*\\2(?!.)))+$", - inpType: "input", - name: "Extensions that should be cached by the client", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "jpg|jpeg|png|bmp|ico|svg|tif|css|js|otf|ttf|eot|woff|woff2", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of file extensions, separated with pipes that should be cached.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - CLIENT_CACHE_ETAG: { - context: "multisite", - default: "yes", - help: "Send the HTTP ETag header for static resources.", - id: "client-cache-etag-default", - label: "ETag", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-1", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "ETag", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Send the HTTP ETag header for static resources.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - CLIENT_CACHE_CONTROL: { - context: "multisite", - default: "public, max-age=15552000", - help: "Value of the Cache-Control HTTP header.", - id: "client-cache-control-default", - label: "Cache-Control header", - regex: - "^(?!(, ?| ))((, )?(((max-age|s-maxage|stale-while-revalidate|stale-if-error)=\\d+(?!.*\\6))|((?!.*public)private|(?!.*private)public)|(must|proxy)-revalidate|must-understand|immutable|no-(cache|store|transform))(?!.*\\4))+$", - type: "text", - containerClass: "z-0", - pattern: - "^(?!(, ?| ))((, )?(((max-age|s-maxage|stale-while-revalidate|stale-if-error)=\\d+(?!.*\\6))|((?!.*public)private|(?!.*private)public)|(must|proxy)-revalidate|must-understand|immutable|no-(cache|store|transform))(?!.*\\4))+$", - inpType: "input", - name: "Cache-Control header", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "public, max-age=15552000", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Value of the Cache-Control HTTP header.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - }, - checksum: null, - }, - { - id: "country", - stream: "yes", - name: "Country", - description: "Deny access based on the country of the client IP.", - version: "1.0", - type: "core", - method: "manual", - page: true, - settings: { - BLACKLIST_COUNTRY: { - context: "multisite", - default: "", - help: "Deny access if the country of the client is in the list (ISO 3166-1 alpha-2 format separated with spaces).", - id: "country-blacklist-default", - label: "Country blacklist", - regex: "^(?! )( *([A-Z]{2})(?!.*\\2) *)*$", - type: "text", - containerClass: "z-1", - pattern: "^(?! )( *([A-Z]{2})(?!.*\\2) *)*$", - inpType: "input", - name: "Country blacklist", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Deny access if the country of the client is in the list (ISO 3166-1 alpha-2 format separated with spaces).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - WHITELIST_COUNTRY: { - context: "multisite", - default: "", - help: "Deny access if the country of the client is not in the list (ISO 3166-1 alpha-2 format separated with spaces).", - id: "country-whitelist-default", - label: "Country whitelist", - regex: "^(?! )( *([A-Z]{2})(?!.*\\2) *)*$", - type: "text", - containerClass: "z-0", - pattern: "^(?! )( *([A-Z]{2})(?!.*\\2) *)*$", - inpType: "input", - name: "Country whitelist", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Deny access if the country of the client is not in the list (ISO 3166-1 alpha-2 format separated with spaces).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - }, - checksum: null, - }, - { - id: "customcert", - stream: "yes", - name: "Custom HTTPS certificate", - description: "Choose custom certificate for HTTPS.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - USE_CUSTOM_SSL: { - context: "multisite", - default: "no", - help: "Use custom HTTPS certificate.", - id: "use-custom-https-default", - label: "Use custom certificate", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-4", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use custom certificate", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Use custom HTTPS certificate.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - CUSTOM_SSL_CERT: { - context: "multisite", - default: "", - help: "Full path of the certificate or bundle file (must be readable by the scheduler).", - id: "custom-https-cert-default", - label: "Certificate path", - regex: "^(/[\\w. \\-]+)*/?$", - type: "text", - containerClass: "z-3", - pattern: "^(/[\\w. \\-]+)*/?$", - inpType: "input", - name: "Certificate path", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Full path of the certificate or bundle file (must be readable by the scheduler).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - CUSTOM_SSL_KEY: { - context: "multisite", - default: "", - help: "Full path of the key file (must be readable by the scheduler).", - id: "custom-https-key-default", - label: "Key path", - regex: "^(/[\\w. \\-]+)*/?$", - type: "text", - containerClass: "z-2", - pattern: "^(/[\\w. \\-]+)*/?$", - inpType: "input", - name: "Key path", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Full path of the key file (must be readable by the scheduler).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - CUSTOM_SSL_CERT_DATA: { - context: "multisite", - default: "", - help: "Certificate data encoded in base64.", - id: "custom-https-cert-data-default", - label: "Certificate data (base64)", - regex: "^.*$", - type: "text", - containerClass: "z-1", - pattern: "^.*$", - inpType: "input", - name: "Certificate data (base64)", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Certificate data encoded in base64.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - CUSTOM_SSL_KEY_DATA: { - context: "multisite", - default: "", - help: "Key data encoded in base64.", - id: "custom-https-key-data-default", - label: "Key data (base64)", - regex: "^.*$", - type: "text", - containerClass: "z-0", - pattern: "^.*$", - inpType: "input", - name: "Key data (base64)", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Key data encoded in base64.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - }, - checksum: null, - }, - { - id: "db", - stream: "yes", - name: "DB", - description: "Integrate easily the Database.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - DATABASE_URI: { - context: "global", - default: "sqlite:////var/lib/bunkerweb/db.sqlite3", - help: "The database URI, following the sqlalchemy format.", - id: "database-uri-default", - label: "The database URI", - regex: "^((postgresql|mysql|mariadb|sqlite)(\\+[\\w\\-]+)?:.+)?$", - type: "text", - containerClass: "z-2", - pattern: "^((postgresql|mysql|mariadb|sqlite)(\\+[\\w\\-]+)?:.+)?$", - inpType: "input", - name: "The database URI", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "sqlite:////var/lib/bunkerweb/db.sqlite3", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "The database URI, following the sqlalchemy format.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - DATABASE_URI_READONLY: { - context: "global", - default: "", - help: "The database URI for read-only operations, it can also serve as a fallback if the main database is down. Following the sqlalchemy format.", - id: "database-uri-readonly-default", - label: "The database URI for read-only operations", - regex: "^((postgresql|mysql|mariadb|sqlite)(\\+[\\w\\-]+)?:.+)?$", - type: "text", - containerClass: "z-1", - pattern: "^((postgresql|mysql|mariadb|sqlite)(\\+[\\w\\-]+)?:.+)?$", - inpType: "input", - name: "The database URI for read-only operations", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "The database URI for read-only operations, it can also serve as a fallback if the main database is down. Following the sqlalchemy format.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - DATABASE_LOG_LEVEL: { - context: "global", - default: "warning", - help: "The level to use for database logs.", - id: "database-log-level-default", - label: "Database log level", - regex: "^(debug|info|warn|warning|error)$", - type: "select", - containerClass: "z-0", - pattern: "^(debug|info|warn|warning|error)$", - inpType: "select", - name: "Database log level", - values: ["debug", "error", "info", "warn", "warning"], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "warning", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "The level to use for database logs.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - }, - checksum: null, - }, - { - id: "dnsbl", - stream: "yes", - name: "DNSBL", - description: "Deny access based on external DNSBL servers.", - version: "1.0", - type: "core", - method: "manual", - page: true, - settings: { - USE_DNSBL: { - context: "multisite", - default: "yes", - help: "Activate DNSBL feature.", - id: "use-dnsbl-default", - label: "Activate DNSBL", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-1", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Activate DNSBL", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Activate DNSBL feature.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - DNSBL_LIST: { - context: "global", - default: - "bl.blocklist.de problems.dnsbl.sorbs.net sbl.spamhaus.org xbl.spamhaus.org", - help: "List of DNSBL servers.", - id: "dnsbl-list-default", - label: "DNSBL list", - regex: "^(?! )( ?((?!\\.)[\\w.]+)(?!.*\\2(?!.)))*$", - type: "text", - containerClass: "z-0", - pattern: "^(?! )( ?((?!\\.)[\\w.]+)(?!.*\\2(?!.)))*$", - inpType: "input", - name: "DNSBL list", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: - "bl.blocklist.de problems.dnsbl.sorbs.net sbl.spamhaus.org xbl.spamhaus.org", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of DNSBL servers.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - }, - checksum: null, - }, - { - id: "errors", - stream: "no", - name: "Errors", - description: "Manage default error pages", - version: "1.0", - type: "core", - method: "manual", - page: true, - settings: { - ERRORS: { - context: "multisite", - default: "", - help: "List of HTTP error code and corresponding error pages, separated with spaces (404=/my404.html 403=/errors/403.html ...).", - id: "errors-default", - label: "Errors", - regex: - "^(?! )( ?([1-5]\\d{2})(?!.*\\2(?![^=]))=(\\/[\\w\\].~:\\/?#\\[@!$\\&'\\(\\)*+,;=\\-]*)(?!.*\\3(?!.)))*$", - type: "text", - containerClass: "z-1", - pattern: - "^(?! )( ?([1-5]\\d{2})(?!.*\\2(?![^=]))=(\\/[\\w\\].~:\\/?#\\[@!$\\&'\\(\\)*+,;=\\-]*)(?!.*\\3(?!.)))*$", - inpType: "input", - name: "Errors", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of HTTP error code and corresponding error pages, separated with spaces (404=/my404.html 403=/errors/403.html ...).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - INTERCEPTED_ERROR_CODES: { - context: "multisite", - default: "400 401 403 404 405 413 429 500 501 502 503 504", - help: "List of HTTP error code intercepted by BunkerWeb", - id: "intercepted-error-codes-default", - label: "Intercepted error codes", - regex: "^( *([1-5]\\d{2})(?!.*\\2) *)+$", - type: "text", - containerClass: "z-0", - pattern: "^( *([1-5]\\d{2})(?!.*\\2) *)+$", - inpType: "input", - name: "Intercepted error codes", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "400 401 403 404 405 413 429 500 501 502 503 504", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of HTTP error code intercepted by BunkerWeb", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - }, - checksum: null, - }, - { - id: "greylist", - stream: "partial", - name: "Greylist", - description: - "Allow access while keeping security features based on internal and external IP/network/rDNS/ASN greylists.", - version: "1.0", - type: "core", - method: "manual", - page: true, - settings: { - USE_GREYLIST: { - context: "multisite", - default: "no", - help: "Activate greylist feature.", - id: "use-greylist-default", - label: "Activate greylisting", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-11", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Activate greylisting", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Activate greylist feature.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - GREYLIST_IP: { - context: "multisite", - default: "", - help: "List of IP/network, separated with spaces, to put into the greylist.", - id: "greylist-ip-default", - label: "Greylist IP/network", - regex: - "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - type: "text", - containerClass: "z-10", - pattern: - "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - inpType: "input", - name: "Greylist IP/network", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of IP/network, separated with spaces, to put into the greylist.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - GREYLIST_RDNS: { - context: "multisite", - default: "", - help: "List of reverse DNS suffixes, separated with spaces, to put into the greylist.", - id: "greylist-rdns-default", - label: "Greylist reverse DNS", - regex: "^( *(([^ ]+)(?!.*\\3( |$))) *)*$", - type: "text", - containerClass: "z-9", - pattern: "^( *(([^ ]+)(?!.*\\3( |$))) *)*$", - inpType: "input", - name: "Greylist reverse DNS", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of reverse DNS suffixes, separated with spaces, to put into the greylist.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - GREYLIST_RDNS_GLOBAL: { - context: "multisite", - default: "yes", - help: "Only perform RDNS greylist checks on global IP addresses.", - id: "greylist-rdns-global-default", - label: "Greylist reverse DNS global IPs", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-8", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Greylist reverse DNS global IPs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Only perform RDNS greylist checks on global IP addresses.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - GREYLIST_ASN: { - context: "multisite", - default: "", - help: "List of ASN numbers, separated with spaces, to put into the greylist.", - id: "greylist-asn-default", - label: "Greylist ASN", - regex: "^^( *((ASN?)?(\\d+)\\b(?!.*[SN ]\\4\\b)) *)*$", - type: "text", - containerClass: "z-7", - pattern: "^^( *((ASN?)?(\\d+)\\b(?!.*[SN ]\\4\\b)) *)*$", - inpType: "input", - name: "Greylist ASN", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of ASN numbers, separated with spaces, to put into the greylist.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - GREYLIST_USER_AGENT: { - context: "multisite", - default: "", - help: "List of User-Agent (PCRE regex), separated with spaces, to put into the greylist.", - id: "greylist-user-agent-default", - label: "Greylist User-Agent", - regex: "^.*$", - type: "text", - containerClass: "z-6", - pattern: "^.*$", - inpType: "input", - name: "Greylist User-Agent", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of User-Agent (PCRE regex), separated with spaces, to put into the greylist.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - GREYLIST_URI: { - context: "multisite", - default: "", - help: "List of URI (PCRE regex), separated with spaces, to put into the greylist.", - id: "greylist-uri-default", - label: "Greylist URI", - regex: "^.*$", - type: "text", - containerClass: "z-5", - pattern: "^.*$", - inpType: "input", - name: "Greylist URI", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of URI (PCRE regex), separated with spaces, to put into the greylist.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - GREYLIST_IP_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing good IP/network to put into the greylist.", - id: "greylist-ip-urls-default", - label: "Greylist IP/network URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-4", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Greylist IP/network URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of URLs, separated with spaces, containing good IP/network to put into the greylist.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - GREYLIST_RDNS_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing reverse DNS suffixes to put into the greylist.", - id: "greylist-rdns-urls-default", - label: "Greylist reverse DNS URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-3", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Greylist reverse DNS URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of URLs, separated with spaces, containing reverse DNS suffixes to put into the greylist.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - GREYLIST_ASN_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing ASN to put into the greylist.", - id: "greylist-asn-urls-default", - label: "Greylist ASN URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-2", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Greylist ASN URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of URLs, separated with spaces, containing ASN to put into the greylist.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - GREYLIST_USER_AGENT_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing good User-Agent to put into the greylist.", - id: "greylist-user-agent-urls-default", - label: "Greylist User-Agent URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-1", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Greylist User-Agent URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of URLs, separated with spaces, containing good User-Agent to put into the greylist.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - GREYLIST_URI_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing bad URI to put into the greylist.", - id: "greylist-uri-urls-default", - label: "Greylist URI URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-0", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Greylist URI URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of URLs, separated with spaces, containing bad URI to put into the greylist.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - }, - checksum: null, - }, - { - id: "gzip", - stream: "no", - name: "Gzip", - description: "Compress HTTP requests with the gzip algorithm.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - USE_GZIP: { - context: "multisite", - default: "no", - help: "Use gzip", - id: "use-gzip-default", - label: "Use gzip", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-4", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use gzip", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: true, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Use gzip", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - GZIP_TYPES: { - context: "multisite", - default: - "application/atom+xml application/javascript application/json application/rss+xml application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype application/x-font-ttf application/x-javascript application/xhtml+xml application/xml font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml", - help: "List of MIME types that will be compressed with gzip.", - id: "gzip-types-default", - label: "MIME types", - regex: "^(?! )( ?([\\-\\w.]+/[\\-\\w.+]+)(?!.*\\2(?!.)))+$", - type: "text", - containerClass: "z-3", - pattern: "^(?! )( ?([\\-\\w.]+/[\\-\\w.+]+)(?!.*\\2(?!.)))+$", - inpType: "input", - name: "MIME types", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: - "application/atom+xml application/javascript application/json application/rss+xml application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype application/x-font-ttf application/x-javascript application/xhtml+xml application/xml font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of MIME types that will be compressed with gzip.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - GZIP_MIN_LENGTH: { - context: "multisite", - default: "1000", - help: "Minimum length for gzip compression.", - id: "gzip-min-length-default", - label: "Minimum length", - regex: "^\\d+$", - type: "text", - containerClass: "z-2", - pattern: "^\\d+$", - inpType: "input", - name: "Minimum length", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "1000", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Minimum length for gzip compression.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - GZIP_COMP_LEVEL: { - context: "multisite", - default: "5", - help: "The compression level of the gzip algorithm.", - id: "gzip-comp-level-default", - label: "Compression level", - regex: "^[1-9]$", - type: "select", - containerClass: "z-1", - pattern: "^[1-9]$", - inpType: "select", - name: "Compression level", - values: ["1", "2", "3", "4", "5", "6", "7", "8", "9"], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "5", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "The compression level of the gzip algorithm.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - GZIP_PROXIED: { - context: "multisite", - default: "no-cache no-store private expired auth", - help: "Which kind of proxied requests we should compress.", - id: "gzip-proxied-default", - label: "Proxied requests", - regex: "^.*$", - type: "text", - containerClass: "z-0", - pattern: "^.*$", - inpType: "input", - name: "Proxied requests", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no-cache no-store private expired auth", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Which kind of proxied requests we should compress.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - }, - checksum: null, - }, - { - id: "inject", - stream: "no", - name: "HTML injection", - description: "Inject custom HTML code before the tag.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - INJECT_BODY: { - context: "multisite", - default: "", - help: "The HTML code to inject.", - id: "inject-body-default", - label: "HTML code", - regex: "^.*$", - type: "text", - containerClass: "z-0", - pattern: "^.*$", - inpType: "input", - name: "HTML code", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "The HTML code to inject.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - }, - checksum: null, - }, - { - id: "headers", - stream: "no", - name: "Headers", - description: "Manage HTTP headers sent to clients.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - CUSTOM_HEADER: { - context: "multisite", - default: "", - help: "Custom header to add (HeaderName: HeaderValue).", - id: "custom-header-default", - label: "Custom header (HeaderName: HeaderValue)", - regex: "^([\\w\\-]+: .+)?$", - type: "text", - multiple: "custom-headers", - containerClass: "z-13", - pattern: "^([\\w\\-]+: .+)?$", - inpType: "input", - name: "Custom header (HeaderName: HeaderValue)", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Custom header to add (HeaderName: HeaderValue).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REMOVE_HEADERS: { - context: "multisite", - default: - "Server Expect-CT X-Powered-By X-AspNet-Version X-AspNetMvc-Version", - help: "Headers to remove (Header1 Header2 Header3 ...)", - id: "remove-headers-default", - label: "Remove headers", - regex: "^(?! )( ?[\\w\\-]+)*$", - type: "text", - containerClass: "z-12", - pattern: "^(?! )( ?[\\w\\-]+)*$", - inpType: "input", - name: "Remove headers", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: - "Server Expect-CT X-Powered-By X-AspNet-Version X-AspNetMvc-Version", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Headers to remove (Header1 Header2 Header3 ...)", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - KEEP_UPSTREAM_HEADERS: { - context: "multisite", - default: - "Content-Security-Policy Permissions-Policy Feature-Policy X-Frame-Options", - help: "Headers to keep from upstream (Header1 Header2 Header3 ... or * for all).", - id: "keep-upstream-headers-default", - label: "Keep upstream headers", - regex: "^((?! )( ?[\\w\\-]+)+|\\*)?$", - type: "text", - containerClass: "z-11", - pattern: "^((?! )( ?[\\w\\-]+)+|\\*)?$", - inpType: "input", - name: "Keep upstream headers", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: - "Content-Security-Policy Permissions-Policy Feature-Policy X-Frame-Options", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Headers to keep from upstream (Header1 Header2 Header3 ... or * for all).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - STRICT_TRANSPORT_SECURITY: { - context: "multisite", - default: "max-age=31536000", - help: "Value for the Strict-Transport-Security header.", - id: "strict-transport-security-default", - label: "Strict-Transport-Security", - regex: "^max-age=\\d+(; includeSubDomains(; preload)?)?$", - type: "text", - containerClass: "z-10", - pattern: "^max-age=\\d+(; includeSubDomains(; preload)?)?$", - inpType: "input", - name: "Strict-Transport-Security", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "max-age=31536000", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Value for the Strict-Transport-Security header.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - COOKIE_FLAGS: { - context: "multisite", - default: "* HttpOnly SameSite=Lax", - help: "Cookie flags automatically added to all cookies (value accepted for nginx_cookie_flag_module).", - id: "cookie-flags-default", - label: "Cookie flags", - regex: - "^(\\*|[^;]+)( (HttpOnly|(SameSite)(?!.*\\4)(=(Lax|Strict))?)(?!.*\\3))*$", - type: "text", - multiple: "cookie-flags", - containerClass: "z-9", - pattern: - "^(\\*|[^;]+)( (HttpOnly|(SameSite)(?!.*\\4)(=(Lax|Strict))?)(?!.*\\3))*$", - inpType: "input", - name: "Cookie flags", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "* HttpOnly SameSite=Lax", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Cookie flags automatically added to all cookies (value accepted for nginx_cookie_flag_module).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - COOKIE_AUTO_SECURE_FLAG: { - context: "multisite", - default: "yes", - help: "Automatically add the Secure flag to all cookies.", - id: "cookie-auto-secure-flag-default", - label: "Cookie auto Secure flag", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-8", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Cookie auto Secure flag", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Automatically add the Secure flag to all cookies.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - CONTENT_SECURITY_POLICY: { - context: "multisite", - default: - "object-src 'none'; form-action 'self'; frame-ancestors 'self';", - help: "Value for the Content-Security-Policy header.", - id: "content-security-policy-default", - label: "Content-Security-Policy", - regex: "^.*$", - type: "text", - containerClass: "z-7", - pattern: "^.*$", - inpType: "input", - name: "Content-Security-Policy", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: - "object-src 'none'; form-action 'self'; frame-ancestors 'self';", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Value for the Content-Security-Policy header.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - CONTENT_SECURITY_POLICY_REPORT_ONLY: { - context: "multisite", - default: "no", - help: "Send reports for violations of the Content-Security-Policy header instead of blocking them.", - id: "content-security-policy-report-only-default", - label: "Content-Security-Policy-Report-Only", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-6", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Content-Security-Policy-Report-Only", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Send reports for violations of the Content-Security-Policy header instead of blocking them.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REFERRER_POLICY: { - context: "multisite", - default: "strict-origin-when-cross-origin", - help: "Value for the Referrer-Policy header.", - id: "referrer-policy-default", - label: "Referrer-Policy", - regex: - "^(?!^(,| ))((, )?(no-referrer-when-downgrade|no-referrer|origin-when-cross-origin|same-origin|strict-origin-when-cross-origin|strict-origin|origin|unsafe-url)(?!\\b.*, \\4\\b))*$", - type: "text", - containerClass: "z-5", - pattern: - "^(?!^(,| ))((, )?(no-referrer-when-downgrade|no-referrer|origin-when-cross-origin|same-origin|strict-origin-when-cross-origin|strict-origin|origin|unsafe-url)(?!\\b.*, \\4\\b))*$", - inpType: "input", - name: "Referrer-Policy", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "strict-origin-when-cross-origin", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Value for the Referrer-Policy header.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - PERMISSIONS_POLICY: { - context: "multisite", - default: - "accelerometer=(), ambient-light-sensor=(), autoplay=(), battery=(), camera=(), cross-origin-isolated=(), display-capture=(), document-domain=(), encrypted-media=(), execution-while-not-rendered=(), execution-while-out-of-viewport=(), fullscreen=(), geolocation=(), gyroscope=(), hid=(), idle-detection=(), magnetometer=(), microphone=(), midi=(), navigation-override=(), payment=(), picture-in-picture=(), publickey-credentials-get=(), screen-wake-lock=(), serial=(), usb=(), web-share=(), xr-spatial-tracking=()", - help: "Value for the Permissions-Policy header.", - id: "permissions-policy-default", - label: "Permissions-Policy", - regex: - "^(?![, ])(,? ?([a-z\\-]+)(?!.*[^\\-]\\2=)=(\\*|\\(( ?(self|\\u0022https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*\\u0022)(?=[ \\)]))*\\)))*$", - type: "text", - containerClass: "z-4", - pattern: - "^(?![, ])(,? ?([a-z\\-]+)(?!.*[^\\-]\\2=)=(\\*|\\(( ?(self|\\u0022https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*\\u0022)(?=[ \\)]))*\\)))*$", - inpType: "input", - name: "Permissions-Policy", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: - "accelerometer=(), ambient-light-sensor=(), autoplay=(), battery=(), camera=(), cross-origin-isolated=(), display-capture=(), 2024-06-06T13:46:22.766316807Z document-domain=(), encrypted-media=(), execution-while-not-rendered=(), execution-while-out-of-viewport=(), fullscreen=(), geolocation=(), gyroscope=(), hid=(), idle-detection=(), magnetometer=(), microphone=(), midi=(), navigation-override=(), payment=(), picture-in-picture=(), publickey-credentials-get=(), screen-wake-lock=(), serial=(), usb=(), web-share=(), xr-spatial-tracking=()", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Value for the Permissions-Policy header.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - FEATURE_POLICY: { - context: "multisite", - default: - "accelerometer 'none'; ambient-light-sensor 'none'; autoplay 'none'; battery 'none'; camera 'none'; display-capture 'none'; document-domain 'none'; encrypted-media 'none'; execution-while-not-rendered 'none'; execution-while-out-of-viewport 'none'; fullscreen 'none'; geolocation 'none'; gyroscope 'none'; layout-animation 'none'; legacy-image-formats 'none'; magnetometer 'none'; microphone 'none'; midi 'none'; navigation-override 'none'; payment 'none'; picture-in-picture 'none'; publickey-credentials-get 'none'; speaker-selection 'none'; sync-xhr 'none'; unoptimized-images 'none'; unsized-media 'none'; usb 'none'; screen-wake-lock 'none'; web-share 'none'; xr-spatial-tracking 'none';", - help: "Value for the Feature-Policy header.", - id: "feature-policy-default", - label: "Feature-Policy", - regex: - "^(?![; ])( ?([\\w\\-]+)(?!.*[^\\-]\\2 )( ('(none|self|strict-dynamic|report-sample|unsafe-inline|unsafe-eval|unsafe-hashes|unsafe-allow-redirects)'|https?:\\/\\/[\\w@:%.+~#=\\-]+[\\w\\(\\)!@:%+.~#?&\\/=$\\-]*))+;)*$", - type: "text", - containerClass: "z-3", - pattern: - "^(?![; ])( ?([\\w\\-]+)(?!.*[^\\-]\\2 )( ('(none|self|strict-dynamic|report-sample|unsafe-inline|unsafe-eval|unsafe-hashes|unsafe-allow-redirects)'|https?:\\/\\/[\\w@:%.+~#=\\-]+[\\w\\(\\)!@:%+.~#?&\\/=$\\-]*))+;)*$", - inpType: "input", - name: "Feature-Policy", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: - "accelerometer 'none'; ambient-light-sensor 'none'; autoplay 'none'; battery 'none'; camera 'none'; display-capture 'none'; document-domain 'none'; encrypted-media 'none'; execution-while-not-rendered 'none'; execution-while-out-of-viewport 'none'; fullscreen 'none'; geolocation 'none'; gyroscope 'none'; layout-animation 'none'; legacy-image-formats 'none'; magnetometer 'none'; microphone 'none'; midi 'none'; navigation-override 'none'; payment 'none'; picture-in-picture 'none'; publickey-credentials-get 'none'; speaker-selection 'none'; sync-xhr 'none'; unoptimized-images 'none'; unsized-media 'none'; usb 'none'; screen-wake-lock 'none'; web-share 'none'; xr-spatial-tracking 'none';", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Value for the Feature-Policy header.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - X_FRAME_OPTIONS: { - context: "multisite", - default: "SAMEORIGIN", - help: "Value for the X-Frame-Options header.", - id: "x-frame-options-default", - label: "X-Frame-Options", - regex: "^(DENY|SAMEORIGIN)?$", - type: "select", - containerClass: "z-2", - pattern: "^(DENY|SAMEORIGIN)?$", - inpType: "select", - name: "X-Frame-Options", - values: ["", "DENY", "SAMEORIGIN"], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "SAMEORIGIN", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Value for the X-Frame-Options header.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - X_CONTENT_TYPE_OPTIONS: { - context: "multisite", - default: "nosniff", - help: "Value for the X-Content-Type-Options header.", - id: "x-content-type-options-default", - label: "X-Content-Type-Options", - regex: "^(nosniff)?$", - type: "select", - containerClass: "z-1", - pattern: "^(nosniff)?$", - inpType: "select", - name: "X-Content-Type-Options", - values: ["", "nosniff"], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "nosniff", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Value for the X-Content-Type-Options header.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - X_XSS_PROTECTION: { - context: "multisite", - default: "1; mode=block", - help: "Value for the X-XSS-Protection header.", - id: "x-xss-protection-default", - label: "X-XSS-Protection", - regex: - "^0|1(; (mode=block|report=https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*))?$", - type: "text", - containerClass: "z-0", - pattern: - "^0|1(; (mode=block|report=https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*))?$", - inpType: "input", - name: "X-XSS-Protection", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "1; mode=block", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Value for the X-XSS-Protection header.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - }, - checksum: null, - }, - { - id: "jobs", - stream: "yes", - name: "Jobs", - description: "Fake core plugin for internal jobs.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: {}, - checksum: null, - }, - { - id: "letsencrypt", - stream: "yes", - name: "Let's Encrypt", - description: - "Automatic creation, renewal and configuration of Let's Encrypt certificates.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - AUTO_LETS_ENCRYPT: { - context: "multisite", - default: "no", - help: "Activate automatic Let's Encrypt mode.", - id: "auto-lets-encrypt-default", - label: "Automatic Let's Encrypt", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-3", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Automatic Let's Encrypt", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Activate automatic Let's Encrypt mode.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - EMAIL_LETS_ENCRYPT: { - context: "multisite", - default: "", - help: "Email used for Let's Encrypt notification and in certificate.", - id: "email-lets-encrypt-default", - label: "Email Let's Encrypt", - regex: "^([^@ \\t\\r\\n]+@[^@ \\t\\r\\n]+\\.[^@ \\t\\r\\n]+)?$", - type: "text", - containerClass: "z-2", - pattern: "^([^@ \\t\\r\\n]+@[^@ \\t\\r\\n]+\\.[^@ \\t\\r\\n]+)?$", - inpType: "input", - name: "Email Let's Encrypt", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Email used for Let's Encrypt notification and in certificate.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - USE_LETS_ENCRYPT_STAGING: { - context: "multisite", - default: "no", - help: "Use the staging environment for Let\u2019s Encrypt certificate generation. Useful when you are testing your deployments to avoid being rate limited in the production environment.", - id: "use-lets-encrypt-staging-default", - label: "Use Let's Encrypt Staging", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-1", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use Let's Encrypt Staging", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Use the staging environment for Let\u2019s Encrypt certificate generation. Useful when you are testing your deployments to avoid being rate limited in the production environment.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - LETS_ENCRYPT_CLEAR_OLD_CERTS: { - context: "global", - default: "no", - help: "Clear old certificates when renewing.", - id: "lets-encrypt-clear-old-certs-default", - label: "Clear old certificates when they are no longer needed", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-0", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Clear old certificates when they are no longer needed", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Clear old certificates when renewing.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - }, - checksum: null, - }, - { - id: "limit", - stream: "partial", - name: "Limit", - description: "Limit maximum number of requests and connections.", - version: "1.0", - type: "core", - method: "manual", - page: true, - settings: { - USE_LIMIT_REQ: { - context: "multisite", - default: "yes", - help: "Activate limit requests feature.", - id: "use-limit-req-default", - label: "Activate limit requests", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-6", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Activate limit requests", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Activate limit requests feature.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - LIMIT_REQ_URL: { - context: "multisite", - default: "/", - help: "URL (PCRE regex) where the limit request will be applied or special value / for all requests.", - id: "limit-req-url-default", - label: "Limit request URL", - regex: "^.+$", - type: "text", - multiple: "limit-req", - containerClass: "z-5", - pattern: "^.+$", - inpType: "input", - name: "Limit request URL", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "/", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "URL (PCRE regex) where the limit request will be applied or special value / for all requests.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - LIMIT_REQ_RATE: { - context: "multisite", - default: "2r/s", - help: "Rate to apply to the URL (s for second, m for minute, h for hour and d for day).", - id: "limit-req-rate-default", - label: "Limit request Rate", - regex: "^\\d+r/[smhd]$", - type: "text", - multiple: "limit-req", - containerClass: "z-4", - pattern: "^\\d+r/[smhd]$", - inpType: "input", - name: "Limit request Rate", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "2r/s", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Rate to apply to the URL (s for second, m for minute, h for hour and d for day).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - USE_LIMIT_CONN: { - context: "multisite", - default: "yes", - help: "Activate limit connections feature.", - id: "use-limit-conn-default", - label: "Activate limit connections", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-3", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Activate limit connections", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Activate limit connections feature.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - LIMIT_CONN_MAX_HTTP1: { - context: "multisite", - default: "10", - help: "Maximum number of connections per IP when using HTTP/1.X protocol.", - id: "limit-conn-max-http1-default", - label: "Maximum number of HTTP/1.X connections", - regex: "^\\d+$", - type: "text", - containerClass: "z-2", - pattern: "^\\d+$", - inpType: "input", - name: "Maximum number of HTTP/1.X connections", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "10", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Maximum number of connections per IP when using HTTP/1.X protocol.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - LIMIT_CONN_MAX_HTTP2: { - context: "multisite", - default: "100", - help: "Maximum number of streams per IP when using HTTP/2 protocol.", - id: "limit-conn-max-http2-default", - label: "Maximum number of HTTP/2 streams", - regex: "^\\d+$", - type: "text", - containerClass: "z-1", - pattern: "^\\d+$", - inpType: "input", - name: "Maximum number of HTTP/2 streams", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "100", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Maximum number of streams per IP when using HTTP/2 protocol.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - LIMIT_CONN_MAX_STREAM: { - context: "multisite", - default: "10", - help: "Maximum number of connections per IP when using stream.", - id: "limit-conn-max-stream-default", - label: "Maximum number of stream connections", - regex: "^\\d+$", - type: "text", - containerClass: "z-0", - pattern: "^\\d+$", - inpType: "input", - name: "Maximum number of stream connections", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "10", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Maximum number of connections per IP when using stream.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - }, - checksum: null, - }, - { - id: "metrics", - stream: "partial", - name: "Metrics", - description: "Metrics collection and retrieve.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - USE_METRICS: { - context: "multisite", - default: "yes", - help: "Enable collection and retrieval of internal metrics.", - id: "use-metrics-default", - label: "Use metrics", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-2", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use metrics", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Enable collection and retrieval of internal metrics.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - METRICS_MEMORY_SIZE: { - context: "global", - default: "16m", - help: "Size of the internal storage for metrics.", - id: "metrics-memory-size-default", - label: "Metrics memory size", - regex: "^\\d+[kKmMgG]?$", - type: "text", - containerClass: "z-1", - pattern: "^\\d+[kKmMgG]?$", - inpType: "input", - name: "Metrics memory size", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "16m", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Size of the internal storage for metrics.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - METRICS_MAX_BLOCKED_REQUESTS: { - context: "global", - default: "100", - help: "Maximum number of blocked requests to store (per worker).", - id: "metrics-max-blocked-requests-default", - label: "Metrics max blocked requests", - regex: "^\\d+$", - type: "text", - containerClass: "z-0", - pattern: "^\\d+$", - inpType: "input", - name: "Metrics max blocked requests", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "100", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Maximum number of blocked requests to store (per worker).", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - }, - checksum: null, - }, - { - id: "misc", - stream: "partial", - name: "Miscellaneous", - description: "Miscellaneous settings.", - version: "1.0", - type: "core", - method: "manual", - page: true, - settings: { - DISABLE_DEFAULT_SERVER: { - context: "global", - default: "no", - help: "Deny HTTP request if the request vhost is unknown.", - id: "disable-default-server-default", - label: "Disable default server", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-20", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Disable default server", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: true, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Deny HTTP request if the request vhost is unknown.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - DISABLE_DEFAULT_SERVER_STRICT_SNI: { - context: "global", - default: "no", - help: "Close SSL/TLS connection if the SNI is unknown.", - id: "disable-default-server-strict-sni-default", - label: "Disable default server strict SNI", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-19", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Disable default server strict SNI", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Close SSL/TLS connection if the SNI is unknown.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - REDIRECT_HTTP_TO_HTTPS: { - context: "multisite", - default: "no", - help: "Redirect all HTTP request to HTTPS.", - id: "redirect-http-to-https-default", - label: "Redirect HTTP to HTTPS", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-18", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Redirect HTTP to HTTPS", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Redirect all HTTP request to HTTPS.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - AUTO_REDIRECT_HTTP_TO_HTTPS: { - context: "multisite", - default: "yes", - help: "Try to detect if HTTPS is used and activate HTTP to HTTPS redirection if that's the case.", - id: "auto-redirect-http-to-https-default", - label: "Auto redirect HTTP to HTTPS", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-17", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Auto redirect HTTP to HTTPS", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Try to detect if HTTPS is used and activate HTTP to HTTPS redirection if that's the case.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - ALLOWED_METHODS: { - context: "multisite", - default: "GET|POST|HEAD", - help: "Allowed HTTP and WebDAV methods, separated with pipes to be sent by clients.", - id: "allowed-methods-default", - label: "Allowed methods", - regex: "^(?!\\|)(\\|?([A-Z]{3,})(?!.*(^|\\|)\\2))+$", - type: "text", - containerClass: "z-16", - pattern: "^(?!\\|)(\\|?([A-Z]{3,})(?!.*(^|\\|)\\2))+$", - inpType: "input", - name: "Allowed methods", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "GET|POST|HEAD", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Allowed HTTP and WebDAV methods, separated with pipes to be sent by clients.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - MAX_CLIENT_SIZE: { - context: "multisite", - default: "10m", - help: "Maximum body size (0 for infinite).", - id: "max-client-size-default", - label: "Maximum body size", - regex: "^\\d+[kKmMgG]?$", - type: "text", - containerClass: "z-15", - pattern: "^\\d+[kKmMgG]?$", - inpType: "input", - name: "Maximum body size", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "10m", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Maximum body size (0 for infinite).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - SERVE_FILES: { - context: "multisite", - default: "yes", - help: "Serve files from the local folder.", - id: "serve-files-default", - label: "Serve files", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-14", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Serve files", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: true, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Serve files from the local folder.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - ROOT_FOLDER: { - context: "multisite", - default: "", - help: "Root folder containing files to serve (/var/www/html/{server_name} if unset).", - id: "root-folder-default", - label: "Root folder", - regex: "^(/[\\w. \\-]+)*/?$", - type: "text", - containerClass: "z-13", - pattern: "^(/[\\w. \\-]+)*/?$", - inpType: "input", - name: "Root folder", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Root folder containing files to serve (/var/www/html/{server_name} if unset).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - SSL_PROTOCOLS: { - context: "multisite", - default: "TLSv1.2 TLSv1.3", - help: "The supported version of TLS. We recommend the default value TLSv1.2 TLSv1.3 for compatibility reasons.", - id: "https-protocols-default", - label: "HTTPS protocols", - regex: "^(?! )( ?TLSv1\\.[0-3])*$", - type: "text", - containerClass: "z-12", - pattern: "^(?! )( ?TLSv1\\.[0-3])*$", - inpType: "input", - name: "HTTPS protocols", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "TLSv1.2 TLSv1.3", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "The supported version of TLS. We recommend the default value TLSv1.2 TLSv1.3 for compatibility reasons.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - HTTP2: { - context: "multisite", - default: "yes", - help: "Support HTTP2 protocol when HTTPS is enabled.", - id: "http2-default", - label: "HTTP2", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-11", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "HTTP2", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Support HTTP2 protocol when HTTPS is enabled.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - HTTP3: { - context: "multisite", - default: "no", - help: "Support HTTP3 protocol when HTTPS is enabled.", - id: "http3-default", - label: "HTTP3", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-10", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "HTTP3", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Support HTTP3 protocol when HTTPS is enabled.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - HTTP3_ALT_SVC_PORT: { - context: "multisite", - default: "443", - help: "HTTP3 alternate service port. This value will be used as part of the Alt-Svc header.", - id: "http3-alt-svc-port-default", - label: "HTTP3 Alt-Svc port", - regex: "^\\d+$", - type: "text", - containerClass: "z-9", - pattern: "^\\d+$", - inpType: "input", - name: "HTTP3 Alt-Svc port", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "443", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "HTTP3 alternate service port. This value will be used as part of the Alt-Svc header.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - LISTEN_HTTP: { - context: "multisite", - default: "yes", - help: "Respond to (insecure) HTTP requests.", - id: "http-listen-default", - label: "HTTP listen", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-8", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "HTTP listen", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Respond to (insecure) HTTP requests.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - USE_OPEN_FILE_CACHE: { - context: "multisite", - default: "no", - help: "Enable open file cache feature", - id: "use-open-file-cache-default", - label: "Use open file cache", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-7", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use open file cache", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Enable open file cache feature", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - OPEN_FILE_CACHE: { - context: "multisite", - default: "max=1000 inactive=20s", - help: "Open file cache directive", - id: "open-file-cache-default", - label: "Use open file cache", - regex: "^(off|max=\\d+( inactive=\\d+(ms?|[shdwMy]))?)$", - type: "text", - containerClass: "z-6", - pattern: "^(off|max=\\d+( inactive=\\d+(ms?|[shdwMy]))?)$", - inpType: "input", - name: "Use open file cache", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "max=1000 inactive=20s", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Open file cache directive", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - OPEN_FILE_CACHE_ERRORS: { - context: "multisite", - default: "yes", - help: "Enable open file cache for errors", - id: "open-file-cache-errors-default", - label: "Open file cache errors", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-5", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Open file cache errors", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Enable open file cache for errors", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - OPEN_FILE_CACHE_MIN_USES: { - context: "multisite", - default: "2", - help: "Enable open file cache minimum uses", - id: "open-file-cache-min-uses-default", - label: "Open file cache min uses", - regex: "^[1-9]\\d*$", - type: "text", - containerClass: "z-4", - pattern: "^[1-9]\\d*$", - inpType: "input", - name: "Open file cache min uses", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "2", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Enable open file cache minimum uses", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - OPEN_FILE_CACHE_VALID: { - context: "multisite", - default: "30s", - help: "Open file cache valid time", - id: "open-file-cache-valid-default", - label: "Open file cache valid time", - regex: "^\\d+(ms?|[shdwMy])$", - type: "text", - containerClass: "z-3", - pattern: "^\\d+(ms?|[shdwMy])$", - inpType: "input", - name: "Open file cache valid time", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "30s", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Open file cache valid time", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - EXTERNAL_PLUGIN_URLS: { - context: "global", - default: "", - help: "List of external plugins URLs (direct download to .zip or .tar file) to download and install (URLs are separated with space).", - id: "external-plugin-urls-default", - label: "External plugin URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-2", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "External plugin URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of external plugins URLs (direct download to .zip or .tar file) to download and install (URLs are separated with space).", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - DENY_HTTP_STATUS: { - context: "global", - default: "403", - help: "HTTP status code to send when the request is denied (403 or 444). When using 444, BunkerWeb will close the connection.", - id: "deny-http-status-default", - label: "Deny HTTP status", - regex: "^(403|444)$", - type: "select", - containerClass: "z-1", - pattern: "^(403|444)$", - inpType: "select", - name: "Deny HTTP status", - values: ["403", "444"], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "403", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "HTTP status code to send when the request is denied (403 or 444). When using 444, BunkerWeb will close the connection.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - SEND_ANONYMOUS_REPORT: { - context: "global", - default: "yes", - help: "Send anonymous report to BunkerWeb maintainers.", - id: "send-anonymous-report-default", - label: "Send anonymous report", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-0", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Send anonymous report", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: true, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Send anonymous report to BunkerWeb maintainers.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - }, - checksum: null, - }, - { - id: "modsecurity", - stream: "no", - name: "ModSecurity", - description: "Management of the ModSecurity WAF.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - USE_MODSECURITY: { - context: "multisite", - default: "yes", - help: "Enable ModSecurity WAF.", - id: "use-modsecurity-default", - label: "Use ModSecurity", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-5", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use ModSecurity", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Enable ModSecurity WAF.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - USE_MODSECURITY_CRS: { - context: "multisite", - default: "yes", - help: "Enable OWASP Core Rule Set.", - id: "use-modsecurity-crs-default", - label: "Use Core Rule Set", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-4", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use Core Rule Set", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Enable OWASP Core Rule Set.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - MODSECURITY_CRS_VERSION: { - context: "multisite", - default: "3", - help: "Version of the OWASP Core Rule Set to use with ModSecurity (3, 4 or nightly).", - id: "modsecurity-crs-version-default", - label: "Core Rule Set Version", - regex: "^(3|4|nightly)$", - type: "select", - containerClass: "z-3", - pattern: "^(3|4|nightly)$", - inpType: "select", - name: "Core Rule Set Version", - values: ["3", "4", "nightly"], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "3", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Version of the OWASP Core Rule Set to use with ModSecurity (3, 4 or nightly).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - MODSECURITY_SEC_AUDIT_ENGINE: { - context: "multisite", - default: "RelevantOnly", - help: "SecAuditEngine directive of ModSecurity.", - id: "modsecurity-sec-audit-engine-default", - label: "SecAuditEngine", - regex: "^(On|RelevantOnly|Off)$", - type: "select", - containerClass: "z-2", - pattern: "^(On|RelevantOnly|Off)$", - inpType: "select", - name: "SecAuditEngine", - values: ["Off", "On", "RelevantOnly"], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "RelevantOnly", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "SecAuditEngine directive of ModSecurity.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - MODSECURITY_SEC_RULE_ENGINE: { - context: "multisite", - default: "On", - help: "SecRuleEngine directive of ModSecurity.", - id: "modsecurity-sec-rule-engine-default", - label: "SecRuleEngine", - regex: "^(On|DetectionOnly|Off)$", - type: "select", - containerClass: "z-1", - pattern: "^(On|DetectionOnly|Off)$", - inpType: "select", - name: "SecRuleEngine", - values: ["DetectionOnly", "Off", "On"], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "On", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "SecRuleEngine directive of ModSecurity.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - MODSECURITY_SEC_AUDIT_LOG_PARTS: { - context: "multisite", - default: "ABCFHZ", - help: "SecAuditLogParts directive of ModSecurity.", - id: "modsecurity-sec-audit-log-parts-default", - label: "SecAuditLogParts", - regex: "^A(([B-K])(?!.*\\2))+Z$", - type: "text", - containerClass: "z-0", - pattern: "^A(([B-K])(?!.*\\2))+Z$", - inpType: "input", - name: "SecAuditLogParts", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "ABCFHZ", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "SecAuditLogParts directive of ModSecurity.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - }, - checksum: null, - }, - { - id: "php", - stream: "no", - name: "PHP", - description: "Manage local or remote PHP-FPM.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - REMOTE_PHP: { - context: "multisite", - default: "", - help: "Hostname of the remote PHP-FPM instance.", - id: "remote-php-default", - label: "Remote PHP", - regex: - "^((?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?)?$", - type: "text", - containerClass: "z-3", - pattern: - "^((?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?)?$", - inpType: "input", - name: "Remote PHP", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Hostname of the remote PHP-FPM instance.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REMOTE_PHP_PATH: { - context: "multisite", - default: "", - help: "Root folder containing files in the remote PHP-FPM instance.", - id: "remote-php-path-default", - label: "Remote PHP path", - regex: "^(/[\\w. \\-]+)*/?$", - type: "text", - containerClass: "z-2", - pattern: "^(/[\\w. \\-]+)*/?$", - inpType: "input", - name: "Remote PHP path", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Root folder containing files in the remote PHP-FPM instance.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - LOCAL_PHP: { - context: "multisite", - default: "", - help: "Path to the PHP-FPM socket file.", - id: "local-default", - label: "Local PHP", - regex: "^(/[\\w. \\-]+)*/?$", - type: "text", - containerClass: "z-1", - pattern: "^(/[\\w. \\-]+)*/?$", - inpType: "input", - name: "Local PHP", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Path to the PHP-FPM socket file.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - LOCAL_PHP_PATH: { - context: "multisite", - default: "", - help: "Root folder containing files in the local PHP-FPM instance.", - id: "local-php-path-default", - label: "Local PHP path", - regex: "^(/[\\w. \\-]+)*/?$", - type: "text", - containerClass: "z-0", - pattern: "^(/[\\w. \\-]+)*/?$", - inpType: "input", - name: "Local PHP path", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Root folder containing files in the local PHP-FPM instance.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - }, - checksum: null, - }, - { - id: "pro", - stream: "no", - name: "Pro", - description: "Pro settings for the Pro version of BunkerWeb.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - PRO_LICENSE_KEY: { - context: "global", - default: "", - help: "The License Key for the Pro version of BunkerWeb.", - id: "pro-license-key-default", - label: "Pro License Key", - regex: "^.*$", - type: "password", - containerClass: "z-0", - pattern: "^.*$", - inpType: "input", - name: "Pro License Key", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "The License Key for the Pro version of BunkerWeb.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - }, - checksum: null, - }, - { - id: "realip", - stream: "partial", - name: "Real IP", - description: - "Get real IP of clients when BunkerWeb is behind a reverse proxy / load balancer.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - USE_REAL_IP: { - context: "multisite", - default: "no", - help: "Retrieve the real IP of client.", - id: "use-real-ip-default", - label: "Use real ip", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-5", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use real ip", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Retrieve the real IP of client.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - USE_PROXY_PROTOCOL: { - context: "multisite", - default: "no", - help: "Enable PROXY protocol communication.", - id: "use-proxy-protocol-default", - label: "Use PROXY protocol", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-4", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use PROXY protocol", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Enable PROXY protocol communication.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REAL_IP_FROM: { - context: "multisite", - default: "192.168.0.0/16 172.16.0.0/12 10.0.0.0/8", - help: "List of trusted IPs / networks, separated with spaces, where proxied requests come from.", - id: "real-ip-from-default", - label: "Real IP from", - regex: - "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - type: "text", - containerClass: "z-3", - pattern: - "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - inpType: "input", - name: "Real IP from", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "192.168.0.0/16 172.16.0.0/12 10.0.0.0/8", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of trusted IPs / networks, separated with spaces, where proxied requests come from.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REAL_IP_HEADER: { - context: "multisite", - default: "X-Forwarded-For", - help: "HTTP header containing the real IP or special value proxy_protocol for PROXY protocol.", - id: "real-ip-header-default", - label: "Real IP header", - regex: "^(?! )(( ?(?!proxy_protocol)[\\w\\-]+)*|proxy_protocol)$", - type: "text", - containerClass: "z-2", - pattern: "^(?! )(( ?(?!proxy_protocol)[\\w\\-]+)*|proxy_protocol)$", - inpType: "input", - name: "Real IP header", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "X-Forwarded-For", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "HTTP header containing the real IP or special value proxy_protocol for PROXY protocol.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REAL_IP_RECURSIVE: { - context: "multisite", - default: "yes", - help: "Perform a recursive search in the header container IP address.", - id: "real-ip-recursive-default", - label: "Real IP recursive", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-1", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Real IP recursive", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Perform a recursive search in the header container IP address.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REAL_IP_FROM_URLS: { - context: "global", - default: "", - help: "List of URLs containing trusted IPs / networks, separated with spaces, where proxied requests come from.", - id: "real-ip-from-urls-default", - label: "Real IP from URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-0", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Real IP from URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of URLs containing trusted IPs / networks, separated with spaces, where proxied requests come from.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - }, - checksum: null, - }, - { - id: "redirect", - stream: "no", - name: "Redirect", - description: "Manage HTTP redirects.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - REDIRECT_TO: { - context: "multisite", - default: "", - help: "Redirect a whole site to another one.", - id: "redirect-to-default", - label: "Redirect to", - regex: - "^(https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)?$", - type: "text", - containerClass: "z-2", - pattern: - "^(https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)?$", - inpType: "input", - name: "Redirect to", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Redirect a whole site to another one.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REDIRECT_TO_REQUEST_URI: { - context: "multisite", - default: "no", - help: "Append the requested URI to the redirect address.", - id: "redirect-to-request-uri-default", - label: "Append request URI", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-1", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Append request URI", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Append the requested URI to the redirect address.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REDIRECT_TO_STATUS_CODE: { - context: "multisite", - default: "301", - help: "Status code to send to client when redirecting.", - id: "redirect-to-status-code-default", - label: "Append request URI", - regex: "^(301|302)$", - type: "select", - containerClass: "z-0", - pattern: "^(301|302)$", - inpType: "select", - name: "Append request URI", - values: ["301", "302"], - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "301", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Status code to send to client when redirecting.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - }, - checksum: null, - }, - { - id: "redis", - stream: "yes", - name: "Redis", - description: - "Redis server configuration when using BunkerWeb in cluster mode.", - version: "1.0", - type: "core", - method: "manual", - page: true, - settings: { - USE_REDIS: { - context: "global", - default: "no", - help: "Activate Redis.", - id: "use-redis-default", - label: "Activate Redis", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-14", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Activate Redis", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Activate Redis.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - REDIS_HOST: { - context: "global", - default: "", - help: "Redis server IP or hostname.", - id: "redis-host-default", - label: "Redis server", - regex: - "^((?!-)[a-zA-Z0-9\\-]{1,63}(.[a-zA-Z]{2,})+|(\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3}|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)))?$", - type: "text", - containerClass: "z-13", - pattern: - "^((?!-)[a-zA-Z0-9\\-]{1,63}(.[a-zA-Z]{2,})+|(\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3}|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)))?$", - inpType: "input", - name: "Redis server", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Redis server IP or hostname.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - REDIS_PORT: { - context: "global", - default: "6379", - help: "Redis server port.", - id: "redis-port-default", - label: "Redis port", - regex: "^[0-9]+$", - type: "text", - containerClass: "z-12", - pattern: "^[0-9]+$", - inpType: "input", - name: "Redis port", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "6379", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Redis server port.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - REDIS_DATABASE: { - context: "global", - default: "0", - help: "Redis database number.", - id: "redis-database-default", - label: "Redis database", - regex: "^[0-9]+$", - type: "text", - containerClass: "z-11", - pattern: "^[0-9]+$", - inpType: "input", - name: "Redis database", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "0", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Redis database number.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - REDIS_SSL: { - context: "global", - default: "no", - help: "Use SSL/TLS connection with Redis server.", - id: "redis-ssl-default", - label: "Redis SSL/TLS", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-10", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Redis SSL/TLS", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Use SSL/TLS connection with Redis server.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - REDIS_SSL_VERIFY: { - context: "global", - default: "no", - help: "Verify the certificate of Redis server.", - id: "redis-ssl-verify-default", - label: "Redis SSL/TLS verify", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-9", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Redis SSL/TLS verify", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Verify the certificate of Redis server.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - REDIS_TIMEOUT: { - context: "global", - default: "1000", - help: "Redis server timeout (in ms) for connect, read and write.", - id: "redis-timeout-default", - label: "Redis timeout (ms)", - regex: "^[0-9]+$", - type: "text", - containerClass: "z-8", - pattern: "^[0-9]+$", - inpType: "input", - name: "Redis timeout (ms)", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "1000", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Redis server timeout (in ms) for connect, read and write.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - REDIS_USERNAME: { - context: "global", - default: "", - help: "Redis username used in AUTH command.", - id: "redis-username-default", - label: "Redis username", - regex: "^.*$", - type: "text", - containerClass: "z-7", - pattern: "^.*$", - inpType: "input", - name: "Redis username", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Redis username used in AUTH command.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - REDIS_PASSWORD: { - context: "global", - default: "", - help: "Redis password used in AUTH command.", - id: "redis-password-default", - label: "Redis password", - regex: "^.*$", - type: "password", - containerClass: "z-6", - pattern: "^.*$", - inpType: "input", - name: "Redis password", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Redis password used in AUTH command.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - REDIS_SENTINEL_HOSTS: { - context: "global", - default: "", - help: "Redis sentinel hosts with format host:[port] separated with spaces.", - id: "redis-sentinel-hosts-default", - label: "Redis sentinel hosts", - regex: "^.*$", - type: "text", - containerClass: "z-5", - pattern: "^.*$", - inpType: "input", - name: "Redis sentinel hosts", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Redis sentinel hosts with format host:[port] separated with spaces.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - REDIS_SENTINEL_USERNAME: { - context: "global", - default: "", - help: "Redis sentinel username.", - id: "redis-sentinel-username-default", - label: "Redis sentinel username", - regex: "^.*$", - type: "text", - containerClass: "z-4", - pattern: "^.*$", - inpType: "input", - name: "Redis sentinel username", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Redis sentinel username.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - REDIS_SENTINEL_PASSWORD: { - context: "global", - default: "", - help: "Redis sentinel password.", - id: "redis-sentinel-password-default", - label: "Redis sentinel password", - regex: "^.*$", - type: "password", - containerClass: "z-3", - pattern: "^.*$", - inpType: "input", - name: "Redis sentinel password", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Redis sentinel password.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - REDIS_SENTINEL_MASTER: { - context: "global", - default: "", - help: "Redis sentinel master name.", - id: "redis-sentinel-master-default", - label: "Redis sentinel master", - regex: "^.*$", - type: "text", - containerClass: "z-2", - pattern: "^.*$", - inpType: "input", - name: "Redis sentinel master", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Redis sentinel master name.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - REDIS_KEEPALIVE_IDLE: { - context: "global", - default: "30000", - help: "Max idle time (in ms) before closing redis connection in the pool.", - id: "redis-keepalive-idle-default", - label: "Redis keepalive idle (ms)", - regex: "^[0-9]+$", - type: "text", - containerClass: "z-1", - pattern: "^[0-9]+$", - inpType: "input", - name: "Redis keepalive idle (ms)", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "30000", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Max idle time (in ms) before closing redis connection in the pool.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - REDIS_KEEPALIVE_POOL: { - context: "global", - default: "10", - help: "Max number of redis connection(s) kept in the pool.", - id: "redis-keepalive-pool-default", - label: "Redis keepalive pool", - regex: "^[0-9]+$", - type: "text", - containerClass: "z-0", - pattern: "^[0-9]+$", - inpType: "input", - name: "Redis keepalive pool", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "10", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Max number of redis connection(s) kept in the pool.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - }, - checksum: null, - }, - { - id: "reverseproxy", - stream: "partial", - name: "Reverse proxy", - description: "Manage reverse proxy configurations.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - USE_REVERSE_PROXY: { - context: "multisite", - default: "no", - help: "Activate reverse proxy mode.", - id: "use-reverse-proxy-default", - label: "Use reverse proxy", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-26", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use reverse proxy", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Activate reverse proxy mode.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_INTERCEPT_ERRORS: { - context: "multisite", - default: "yes", - help: "Intercept and rewrite errors.", - id: "reverse-proxy-intercept-errors-default", - label: "Intercept errors", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-25", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Intercept errors", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Intercept and rewrite errors.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_CUSTOM_HOST: { - context: "multisite", - default: "", - help: "Override Host header sent to upstream server.", - id: "reverse-proxy-custom-host-default", - label: "Reverse proxy custom host", - regex: "^.*$", - type: "text", - containerClass: "z-24", - pattern: "^.*$", - inpType: "input", - name: "Reverse proxy custom host", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Override Host header sent to upstream server.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_HOST: { - context: "multisite", - default: "", - help: "Full URL of the proxied resource (proxy_pass).", - id: "reverse-proxy-host-default", - label: "Reverse proxy host", - regex: "^.*$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-23", - pattern: "^.*$", - inpType: "input", - name: "Reverse proxy host", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Full URL of the proxied resource (proxy_pass).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_URL: { - context: "multisite", - default: "/", - help: "Location URL that will be proxied.", - id: "reverse-proxy-url-default", - label: "Reverse proxy url", - regex: "^.*$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-22", - pattern: "^.*$", - inpType: "input", - name: "Reverse proxy url", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "/", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Location URL that will be proxied.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_WS: { - context: "multisite", - default: "no", - help: "Enable websocket on the proxied resource.", - id: "reverse-proxy-ws-default", - label: "Reverse proxy WS", - regex: "^(yes|no)$", - type: "check", - multiple: "reverse-proxy", - containerClass: "z-21", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Reverse proxy WS", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Enable websocket on the proxied resource.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_HEADERS: { - context: "multisite", - default: "", - help: "List of HTTP headers to send to proxied resource separated with semicolons (values for proxy_set_header directive).", - id: "reverse-proxy-headers-default", - label: "Reverse proxy headers", - regex: "^(?![; ])(;? ?([\\w\\-]+)(?!.*\\2 ) [^;]+)*$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-20", - pattern: "^(?![; ])(;? ?([\\w\\-]+)(?!.*\\2 ) [^;]+)*$", - inpType: "input", - name: "Reverse proxy headers", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of HTTP headers to send to proxied resource separated with semicolons (values for proxy_set_header directive).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_HEADERS_CLIENT: { - context: "multisite", - default: "", - help: "List of HTTP headers to send to client separated with semicolons (values for add_header directive).", - id: "reverse-proxy-headers-client-default", - label: "Reverse proxy headers-client", - regex: "^(?![; ])(;? ?([\\w\\-]+)(?!.*\\2 ) [^;]+)*$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-19", - pattern: "^(?![; ])(;? ?([\\w\\-]+)(?!.*\\2 ) [^;]+)*$", - inpType: "input", - name: "Reverse proxy headers-client", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of HTTP headers to send to client separated with semicolons (values for add_header directive).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_BUFFERING: { - context: "multisite", - default: "yes", - help: "Enable or disable buffering of responses from proxied resource.", - id: "reverse-proxy-buffering-default", - label: "Reverse proxy buffering", - regex: "^(yes|no)$", - type: "check", - multiple: "reverse-proxy", - containerClass: "z-18", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Reverse proxy buffering", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Enable or disable buffering of responses from proxied resource.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_KEEPALIVE: { - context: "multisite", - default: "no", - help: "Enable or disable keepalive connections with the proxied resource.", - id: "reverse-proxy-keepalive-default", - label: "Reverse proxy keepalive", - regex: "^(yes|no)$", - type: "check", - multiple: "reverse-proxy", - containerClass: "z-17", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Reverse proxy keepalive", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Enable or disable keepalive connections with the proxied resource.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_AUTH_REQUEST: { - context: "multisite", - default: "", - help: "Enable authentication using an external provider (value of auth_request directive).", - id: "reverse-proxy-auth-request-default", - label: "Reverse proxy auth request", - regex: "^(\\/[\\w\\].~:\\/?#\\[@!$\\&'\\(\\)*+,;=\\-]*|off)?$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-16", - pattern: "^(\\/[\\w\\].~:\\/?#\\[@!$\\&'\\(\\)*+,;=\\-]*|off)?$", - inpType: "input", - name: "Reverse proxy auth request", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Enable authentication using an external provider (value of auth_request directive).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_AUTH_REQUEST_SIGNIN_URL: { - context: "multisite", - default: "", - help: "Redirect clients to sign-in URL when using REVERSE_PROXY_AUTH_REQUEST (used when auth_request call returned 401).", - id: "reverse-proxy-auth-request-signin-url-default", - label: "Auth request signin URL", - regex: - "^(https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)?$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-15", - pattern: - "^(https?:\\/\\/[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)?$", - inpType: "input", - name: "Auth request signin URL", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Redirect clients to sign-in URL when using REVERSE_PROXY_AUTH_REQUEST (used when auth_request call returned 401).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_AUTH_REQUEST_SET: { - context: "multisite", - default: "", - help: "List of variables to set from the authentication provider, separated with semicolons (values of auth_request_set directives).", - id: "reverse-proxy-auth-request-set-default", - label: "Reverse proxy auth request set", - regex: "^(?! ;)(;? ?(\\$[a-z_\\-]+)(?!.*\\2 ) [^;]+)*$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-14", - pattern: "^(?! ;)(;? ?(\\$[a-z_\\-]+)(?!.*\\2 ) [^;]+)*$", - inpType: "input", - name: "Reverse proxy auth request set", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of variables to set from the authentication provider, separated with semicolons (values of auth_request_set directives).", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_CONNECT_TIMEOUT: { - context: "multisite", - default: "60s", - help: "Timeout when connecting to the proxied resource.", - id: "reverse-proxy-connect-timeout-default", - label: "Reverse proxy connect timeout", - regex: "^\\d+(ms?|[shdwMy])$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-13", - pattern: "^\\d+(ms?|[shdwMy])$", - inpType: "input", - name: "Reverse proxy connect timeout", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "60s", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Timeout when connecting to the proxied resource.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_READ_TIMEOUT: { - context: "multisite", - default: "60s", - help: "Timeout when reading from the proxied resource.", - id: "reverse-proxy-read-timeout-default", - label: "Reverse proxy read timeout", - regex: "^\\d+(ms?|[shdwMy])$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-12", - pattern: "^\\d+(ms?|[shdwMy])$", - inpType: "input", - name: "Reverse proxy read timeout", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "60s", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Timeout when reading from the proxied resource.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_SEND_TIMEOUT: { - context: "multisite", - default: "60s", - help: "Timeout when sending to the proxied resource.", - id: "reverse-proxy-send-timeout-default", - label: "Reverse proxy send timeout", - regex: "^\\d+(ms?|[shdwMy])$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-11", - pattern: "^\\d+(ms?|[shdwMy])$", - inpType: "input", - name: "Reverse proxy send timeout", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "60s", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Timeout when sending to the proxied resource.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_PROXY_INCLUDES: { - context: "multisite", - default: "", - help: "Additional configuration to include in the location block, separated with spaces.", - id: "reverse-proxy-includes-default", - label: "Reverse proxy includes", - regex: "^(?! )( ?(\\w+)(?!.*\\b\\2\\b))*$", - type: "text", - multiple: "reverse-proxy", - containerClass: "z-10", - pattern: "^(?! )( ?(\\w+)(?!.*\\b\\2\\b))*$", - inpType: "input", - name: "Reverse proxy includes", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Additional configuration to include in the location block, separated with spaces.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - USE_PROXY_CACHE: { - context: "multisite", - default: "no", - help: "Enable or disable caching of the proxied resources.", - id: "use-proxy-cache-default", - label: "Reverse proxy cache", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-9", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Reverse proxy cache", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Enable or disable caching of the proxied resources.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - PROXY_CACHE_PATH_LEVELS: { - context: "global", - default: "1:2", - help: "Hierarchy levels of the cache.", - id: "proxy-cache-path-levels-default", - label: "Hierarchy levels", - regex: "^(:?[12]){1,3}$", - type: "text", - containerClass: "z-8", - pattern: "^(:?[12]){1,3}$", - inpType: "input", - name: "Hierarchy levels", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "1:2", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Hierarchy levels of the cache.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - PROXY_CACHE_PATH_ZONE_SIZE: { - context: "global", - default: "10m", - help: "Maximum size of cached metadata when caching proxied resources.", - id: "proxy-cache-path-zone-size-default", - label: "Reverse proxy cache zone size", - regex: "^\\d+[kKmMgG]?$", - type: "text", - containerClass: "z-7", - pattern: "^\\d+[kKmMgG]?$", - inpType: "input", - name: "Reverse proxy cache zone size", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "10m", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Maximum size of cached metadata when caching proxied resources.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - PROXY_CACHE_PATH_PARAMS: { - context: "global", - default: "max_size=100m", - help: "Additional parameters to add to the proxy_cache directive.", - id: "proxy-cache-path-params-default", - label: "Reverse proxy cache params", - regex: "^.*$", - type: "text", - containerClass: "z-6", - pattern: "^.*$", - inpType: "input", - name: "Reverse proxy cache params", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "max_size=100m", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Additional parameters to add to the proxy_cache directive.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - PROXY_CACHE_METHODS: { - context: "multisite", - default: "GET HEAD", - help: "HTTP methods that should trigger a cache operation.", - id: "proxy-cache-methods-default", - label: "Reverse proxy cache methods", - regex: - "^(?! )( ?(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH)(?!.*\\2))+$", - type: "text", - containerClass: "z-5", - pattern: - "^(?! )( ?(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH)(?!.*\\2))+$", - inpType: "input", - name: "Reverse proxy cache methods", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "GET HEAD", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "HTTP methods that should trigger a cache operation.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - PROXY_CACHE_MIN_USES: { - context: "multisite", - default: "2", - help: "The minimum number of requests before a response is cached.", - id: "proxy-cache-min-uses-default", - label: "Reverse proxy cache minimum uses", - regex: "^[1-9]\\d*$", - type: "text", - containerClass: "z-4", - pattern: "^[1-9]\\d*$", - inpType: "input", - name: "Reverse proxy cache minimum uses", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "2", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "The minimum number of requests before a response is cached.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - PROXY_CACHE_KEY: { - context: "multisite", - default: "$scheme$host$request_uri", - help: "The key used to uniquely identify a cached response.", - id: "proxy-cache-key-default", - label: "Reverse proxy cache key", - regex: "^(?! )( ?(\\$[a-z_]+)(?!.*\\2))+$", - type: "text", - containerClass: "z-3", - pattern: "^(?! )( ?(\\$[a-z_]+)(?!.*\\2))+$", - inpType: "input", - name: "Reverse proxy cache key", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "$scheme$host$request_uri", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "The key used to uniquely identify a cached response.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - PROXY_CACHE_VALID: { - context: "multisite", - default: "200=24h 301=1h 302=24h", - help: "Define the caching time depending on the HTTP status code (list of status=time), separated with spaces.", - id: "proxy-cache-valid-default", - label: "Reverse proxy cache valid", - regex: "^(?! )( ?([1-5]\\d{2})(?!.*\\2=)=\\d+(ms?|[shdwMy]))*$", - type: "text", - containerClass: "z-2", - pattern: "^(?! )( ?([1-5]\\d{2})(?!.*\\2=)=\\d+(ms?|[shdwMy]))*$", - inpType: "input", - name: "Reverse proxy cache valid", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "200=24h 301=1h 302=24h", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Define the caching time depending on the HTTP status code (list of status=time), separated with spaces.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - PROXY_NO_CACHE: { - context: "multisite", - default: "$http_pragma $http_authorization", - help: "Conditions to disable caching of responses.", - id: "proxy-no-cache-default", - label: "Reverse proxy no cache", - regex: "^.*$", - type: "text", - containerClass: "z-1", - pattern: "^.*$", - inpType: "input", - name: "Reverse proxy no cache", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "$http_pragma $http_authorization", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Conditions to disable caching of responses.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - PROXY_CACHE_BYPASS: { - context: "multisite", - default: "0", - help: "Conditions to bypass caching of responses.", - id: "proxy-cache-bypass-default", - label: "Reverse proxy bypass", - regex: "^.*$", - type: "text", - containerClass: "z-0", - pattern: "^.*$", - inpType: "input", - name: "Reverse proxy bypass", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "0", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Conditions to bypass caching of responses.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - }, - checksum: null, - }, - { - id: "reversescan", - stream: "yes", - name: "Reverse scan", - description: "Scan clients ports to detect proxies or servers.", - version: "1.0", - type: "core", - method: "manual", - page: true, - settings: { - USE_REVERSE_SCAN: { - context: "multisite", - default: "no", - help: "Enable scanning of clients ports and deny access if one is opened.", - id: "use-reverse-scan-default", - label: "Reverse scan", - regex: "^(no|yes)$", - type: "check", - containerClass: "z-2", - pattern: "^(no|yes)$", - inpType: "checkbox", - name: "Reverse scan", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Enable scanning of clients ports and deny access if one is opened.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_SCAN_PORTS: { - context: "multisite", - default: "22 80 443 3128 8000 8080", - help: "List of port to scan when using reverse scan feature.", - id: "reverse-scan-ports-default", - label: "Reverse scan ports", - regex: "^.*$", - type: "text", - containerClass: "z-1", - pattern: "^.*$", - inpType: "input", - name: "Reverse scan ports", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "22 80 443 3128 8000 8080", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of port to scan when using reverse scan feature.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - REVERSE_SCAN_TIMEOUT: { - context: "multisite", - default: "500", - help: "Specify the maximum timeout (in ms) when scanning a port.", - id: "reverse-scan-timeout-default", - label: "Reverse scan timeout", - regex: "^.*$", - type: "text", - containerClass: "z-0", - pattern: "^.*$", - inpType: "input", - name: "Reverse scan timeout", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "500", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Specify the maximum timeout (in ms) when scanning a port.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - }, - checksum: null, - }, - { - id: "selfsigned", - stream: "yes", - name: "Self-signed certificate", - description: "Generate self-signed certificate.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - GENERATE_SELF_SIGNED_SSL: { - context: "multisite", - default: "no", - help: "Generate and use self-signed certificate.", - id: "generate-self-signed-ssl-default", - label: "Activate self-signed certificate", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-2", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Activate self-signed certificate", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Generate and use self-signed certificate.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - SELF_SIGNED_SSL_EXPIRY: { - context: "multisite", - default: "365", - help: "Self-signed certificate expiry in days.", - id: "self-signed-ssl-expiry-default", - label: "Certificate expiry", - regex: "^\\d+$", - type: "text", - containerClass: "z-1", - pattern: "^\\d+$", - inpType: "input", - name: "Certificate expiry", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "365", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Self-signed certificate expiry in days.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - SELF_SIGNED_SSL_SUBJ: { - context: "multisite", - default: "/CN=www.example.com/", - help: "Self-signed certificate subject.", - id: "self-signed-ssl-subj-default", - label: "Certificate subject", - regex: "^/CN=[^,]+$", - type: "text", - containerClass: "z-0", - pattern: "^/CN=[^,]+$", - inpType: "input", - name: "Certificate subject", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "/CN=www.example.com/", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Self-signed certificate subject.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - }, - checksum: null, - }, - { - id: "sessions", - stream: "yes", - name: "Sessions", - description: "Management of session used by other plugins.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - SESSIONS_SECRET: { - context: "global", - default: "random", - help: "Secret used to encrypt sessions variables for storing data related to challenges.", - id: "session-secret-default", - label: "Sessions secret", - regex: "^\\w+$", - type: "password", - containerClass: "z-6", - pattern: "^\\w+$", - inpType: "input", - name: "Sessions secret", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "random", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Secret used to encrypt sessions variables for storing data related to challenges.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - SESSIONS_NAME: { - context: "global", - default: "random", - help: "Name of the cookie given to clients.", - id: "sessions-name-default", - label: "Sessions name", - regex: "^\\w+$", - type: "text", - containerClass: "z-5", - pattern: "^\\w+$", - inpType: "input", - name: "Sessions name", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "random", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Name of the cookie given to clients.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - SESSIONS_IDLING_TIMEOUT: { - context: "global", - default: "1800", - help: "Maximum time (in seconds) of inactivity before the session is invalidated.", - id: "sessions-idling-timeout-default", - label: "Sessions idling timeout", - regex: "^\\d+$", - type: "text", - containerClass: "z-4", - pattern: "^\\d+$", - inpType: "input", - name: "Sessions idling timeout", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "1800", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Maximum time (in seconds) of inactivity before the session is invalidated.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - SESSIONS_ROLLING_TIMEOUT: { - context: "global", - default: "3600", - help: "Maximum time (in seconds) before a session must be renewed.", - id: "sessions-rolling-timeout-default", - label: "Sessions rolling timeout", - regex: "^\\d+$", - type: "text", - containerClass: "z-3", - pattern: "^\\d+$", - inpType: "input", - name: "Sessions rolling timeout", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "3600", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Maximum time (in seconds) before a session must be renewed.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - SESSIONS_ABSOLUTE_TIMEOUT: { - context: "global", - default: "86400", - help: "Maximum time (in seconds) before a session is destroyed.", - id: "sessions-absolute-timeout-default", - label: "Sessions absolute timeout", - regex: "^\\d+$", - type: "text", - containerClass: "z-2", - pattern: "^\\d+$", - inpType: "input", - name: "Sessions absolute timeout", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "86400", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Maximum time (in seconds) before a session is destroyed.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - SESSIONS_CHECK_IP: { - context: "global", - default: "yes", - help: "Destroy session if IP address is different than original one.", - id: "sessions-check-ip-default", - label: "Sessions check IP", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-1", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Sessions check IP", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Destroy session if IP address is different than original one.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - SESSIONS_CHECK_USER_AGENT: { - context: "global", - default: "yes", - help: "Destroy session if User-Agent is different than original one.", - id: "sessions-user-agent-default", - label: "Sessions check User-Agent", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-0", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Sessions check User-Agent", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Destroy session if User-Agent is different than original one.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - }, - checksum: null, - }, - { - id: "ui", - stream: "no", - name: "UI", - description: "Integrate easily the BunkerWeb UI.", - version: "1.0", - type: "core", - method: "manual", - page: false, - settings: { - USE_UI: { - context: "multisite", - default: "no", - help: "Use UI", - id: "use-ui-default", - label: "Use UI", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-1", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Use UI", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Use UI", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - UI_HOST: { - context: "global", - default: "", - help: "Address of the web UI used for initial setup", - id: "ui-host-default", - label: "UI host", - regex: "^.*$", - type: "text", - containerClass: "z-0", - pattern: "^.*$", - inpType: "input", - name: "UI host", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Address of the web UI used for initial setup", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - }, - checksum: null, - }, - { - id: "whitelist", - stream: "partial", - name: "Whitelist", - description: - "Allow access based on internal and external IP/network/rDNS/ASN whitelists.", - version: "1.0", - type: "core", - method: "manual", - page: true, - settings: { - USE_WHITELIST: { - context: "multisite", - default: "yes", - help: "Activate whitelist feature.", - id: "use-whitelist-default", - label: "Activate whitelisting", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-11", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Activate whitelisting", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: true, - value: "no", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Activate whitelist feature.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - WHITELIST_IP: { - context: "multisite", - default: - "20.191.45.212 40.88.21.235 40.76.173.151 40.76.163.7 20.185.79.47 52.142.26.175 20.185.79.15 52.142.24.149 40.76.162.208 40.76.163.23 40.76.162.191 40.76.162.247", - help: "List of IP/network, separated with spaces, to put into the whitelist.", - id: "whitelist-ip-default", - label: "Whitelist IP/network", - regex: - "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - type: "text", - containerClass: "z-10", - pattern: - "^(?! )( *(((\\b25[0-5]|\\b2[0-4]\\d|\\b[01]?\\d\\d?)(\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)){3})(\\/([1-2][0-9]?|3[0-2]?|[04-9]))?|(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]Z{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d)|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\\d)?\\d)\\.){3}(25[0-5]|(2[0-4]|1?\\d)?\\d))(\\/(12[0-8]|1[01][0-9]|[0-9][0-9]?))?)(?!.*\\D\\2([^\\d\\/]|$)) *)*$", - inpType: "input", - name: "Whitelist IP/network", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: - "20.191.45.212 40.88.21.235 40.76.173.151 40.76.163.7 20.185.79.47 52.142.26.175 20.185.79.15 52.142.24.149 40.76.162.208 40.76.163.23 40.76.162.191 40.76.162.247", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of IP/network, separated with spaces, to put into the whitelist.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - WHITELIST_RDNS: { - context: "multisite", - default: - ".google.com .googlebot.com .yandex.ru .yandex.net .yandex.com .search.msn.com .baidu.com .baidu.jp .crawl.yahoo.net .fwd.linkedin.com .twitter.com .twttr.com .discord.com", - help: "List of reverse DNS suffixes, separated with spaces, to whitelist.", - id: "whitelist-rdns-default", - label: "Whitelist reverse DNS", - regex: "^( *(([^ ]+)(?!.*\\3( |$))) *)*$", - type: "text", - containerClass: "z-9", - pattern: "^( *(([^ ]+)(?!.*\\3( |$))) *)*$", - inpType: "input", - name: "Whitelist reverse DNS", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: - ".google.com .googlebot.com .yandex.ru .yandex.net .yandex.com .search.msn.com .baidu.com .baidu.jp .crawl.yahoo.net .fwd.linkedin.com .twitter.com .twttr.com .discord.com", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of reverse DNS suffixes, separated with spaces, to whitelist.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - WHITELIST_RDNS_GLOBAL: { - context: "multisite", - default: "yes", - help: "Only perform RDNS whitelist checks on global IP addresses.", - id: "whitelist-rdns-global-default", - label: "Whitelist reverse DNS global IPs", - regex: "^(yes|no)$", - type: "check", - containerClass: "z-8", - pattern: "^(yes|no)$", - inpType: "checkbox", - name: "Whitelist reverse DNS global IPs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "yes", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "Only perform RDNS whitelist checks on global IP addresses.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - WHITELIST_ASN: { - context: "multisite", - default: "32934", - help: "List of ASN numbers, separated with spaces, to whitelist.", - id: "whitelist-asn-default", - label: "Whitelist ASN", - regex: "^^( *((ASN?)?(\\d+)\\b(?!.*[SN ]\\4\\b)) *)*$", - type: "text", - containerClass: "z-7", - pattern: "^^( *((ASN?)?(\\d+)\\b(?!.*[SN ]\\4\\b)) *)*$", - inpType: "input", - name: "Whitelist ASN", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "32934", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of ASN numbers, separated with spaces, to whitelist.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - WHITELIST_USER_AGENT: { - context: "multisite", - default: "", - help: "List of User-Agent (PCRE regex), separated with spaces, to whitelist.", - id: "whitelist-user-agent-default", - label: "Whitelist User-Agent", - regex: "^.*$", - type: "text", - containerClass: "z-6", - pattern: "^.*$", - inpType: "input", - name: "Whitelist User-Agent", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of User-Agent (PCRE regex), separated with spaces, to whitelist.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - WHITELIST_URI: { - context: "multisite", - default: "", - help: "List of URI (PCRE regex), separated with spaces, to whitelist.", - id: "whitelist-uri-default", - label: "Whitelist URI", - regex: "^( *(.*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-5", - pattern: "^( *(.*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Whitelist URI", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of URI (PCRE regex), separated with spaces, to whitelist.", - }, - { - iconColor: "orange", - iconName: "disk", - text: "inp_popover_multisite", - }, - ], - }, - WHITELIST_IP_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing good IP/network to whitelist.", - id: "whitelist-ip-urls-default", - label: "Whitelist IP/network URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-4", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Whitelist IP/network URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of URLs, separated with spaces, containing good IP/network to whitelist.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - WHITELIST_RDNS_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing reverse DNS suffixes to whitelist.", - id: "whitelist-rdns-urls-default", - label: "Whitelist reverse DNS URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-3", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Whitelist reverse DNS URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of URLs, separated with spaces, containing reverse DNS suffixes to whitelist.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - WHITELIST_ASN_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing ASN to whitelist.", - id: "whitelist-asn-urls-default", - label: "Whitelist ASN URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-2", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Whitelist ASN URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of URLs, separated with spaces, containing ASN to whitelist.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - WHITELIST_USER_AGENT_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing good User-Agent to whitelist.", - id: "whitelist-user-agent-urls-default", - label: "Whitelist User-Agent URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-1", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Whitelist User-Agent URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of URLs, separated with spaces, containing good User-Agent to whitelist.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - WHITELIST_URI_URLS: { - context: "global", - default: "", - help: "List of URLs, separated with spaces, containing bad URI to whitelist.", - id: "whitelist-uri-urls-default", - label: "Whitelist URI URLs", - regex: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - type: "text", - containerClass: "z-0", - pattern: - "^( *((https?:\\/\\/|file:\\/\\/\\/)[\\-\\w@:%.+~#=]+[\\-\\w\\(\\)!@:%+.~#?&\\/=$]*)(?!.*\\2(?!.)) *)*$", - inpType: "input", - name: "Whitelist URI URLs", - columns: { - pc: 4, - tablet: 6, - mobile: 12, - }, - disabled: false, - value: "", - popovers: [ - { - iconColor: "info", - iconName: "info", - text: "List of URLs, separated with spaces, containing bad URI to whitelist.", - }, - { - iconColor: "blue", - iconName: "globe", - text: "inp_popover_global", - }, - ], - }, - }, - checksum: null, - }, - ], }, }; diff --git a/vuejs/client/src/pages/services/index.html b/vuejs/client/src/pages/services/index.html new file mode 100644 index 000000000..6b9eac754 --- /dev/null +++ b/vuejs/client/src/pages/services/index.html @@ -0,0 +1,22 @@ + + +
+ + + + + +
+ +
+