diff --git a/charts/incubator/sogo/.helmignore b/charts/incubator/sogo/.helmignore new file mode 100644 index 00000000000..e559de0a012 --- /dev/null +++ b/charts/incubator/sogo/.helmignore @@ -0,0 +1,24 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# OWNERS file for Kubernetes +OWNERS diff --git a/charts/incubator/sogo/CONFIG.md b/charts/incubator/sogo/CONFIG.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/charts/incubator/sogo/Chart.yaml b/charts/incubator/sogo/Chart.yaml new file mode 100644 index 00000000000..0ce7623937f --- /dev/null +++ b/charts/incubator/sogo/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +appVersion: auto +dependencies: +- name: common + repository: https://truecharts.org/ + version: 6.13.7 +- condition: postgresql.enabled + name: postgresql + repository: https://truecharts.org/ + version: 1.6.1 +- condition: memcached.enabled + name: memcached + repository: https://charts.bitnami.com/bitnami + version: 5.14.2 +deprecated: false +description: Groupware package +home: https://github.com/truecharts/apps/tree/master/charts/stable/sogo +icon: https://truecharts.org/_static/sogo-icon.png +keywords: +- groupware +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: truecharts.org +name: sogo +sources: +- https://www.sogo.nu/ +type: application +version: 0.0.1 diff --git a/charts/incubator/sogo/README.md b/charts/incubator/sogo/README.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/charts/incubator/sogo/SCALE/item.yaml b/charts/incubator/sogo/SCALE/item.yaml new file mode 100644 index 00000000000..d656f47b6c3 --- /dev/null +++ b/charts/incubator/sogo/SCALE/item.yaml @@ -0,0 +1,3 @@ +categories: + - groupware +icon_url: https://truecharts.org/_static/sogo-icon.png diff --git a/charts/incubator/sogo/SCALE/ix_values.yaml b/charts/incubator/sogo/SCALE/ix_values.yaml new file mode 100644 index 00000000000..c64d50bad4b --- /dev/null +++ b/charts/incubator/sogo/SCALE/ix_values.yaml @@ -0,0 +1,42 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## +image: + repository: ghcr.io/truecharts/sogo + pullPolicy: IfNotPresent + tag: "v5.2.0" + +initContainers: + - name: init-postgresdb + image: postgres:13.1 + command: + - "sh" + - "-c" + - "until pg_isready -U authelia -h ${pghost} ; do sleep 2 ; done" + imagePullPolicy: IfNotPresent + env: + - name: pghost + valueFrom: + secretKeyRef: + name: dbcreds + key: plainhost + + +# Enabled postgres +postgresql: + enabled: true + postgresqlUsername: sogo + postgresqlDatabase: sogo + existingSecret: dbcreds + +# -- memcached dependency settings +memcached: + enabled: true + + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/charts/incubator/sogo/SCALE/questions.yaml b/charts/incubator/sogo/SCALE/questions.yaml new file mode 100644 index 00000000000..8c27760fd6c --- /dev/null +++ b/charts/incubator/sogo/SCALE/questions.yaml @@ -0,0 +1,1548 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Advanced" + description: "Advanced Configuration" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: controller + group: "Controller" + label: "" + schema: + type: dict + attrs: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + type: dict + attrs: + - variable: TZ + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: UMASK + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Configure Enviroment Variables + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: sogo + group: "App Configuration" + label: "SOGo Configuration " + schema: + type: dict + attrs: + - variable: general + label: "General" + schema: + type: dict + attrs: + - variable: SOGoLanguage + label: "SOGoLanguage" + schema: + type: string + required: true + default: "English" + - variable: SOGoSuperUsernames + label: "SOGoSuperUsernames" + schema: + type: string + default: "" + - variable: SxVMemLimit + label: "SxVMemLimit" + schema: + type: int + default: 384 + required: true + - variable: webui + label: "Web Interface" + schema: + type: dict + attrs: + - variable: SOGoPageTitle + label: "SOGoPageTitle" + schema: + type: string + required: true + default: "SOGo" + - variable: SOGoVacationEnabled + label: "SOGoVacationEnabled" + schema: + type: boolean + default: true + - variable: SOGoForwardEnabled + label: "SOGoForwardEnabled" + schema: + type: boolean + default: true + - variable: SOGoSieveScriptsEnabled + label: "SOGoSieveScriptsEnabled" + schema: + type: boolean + default: true + - variable: SOGoMailAuxiliaryUserAccountsEnabled + label: "SOGoMailAuxiliaryUserAccountsEnabled" + schema: + type: boolean + default: true + - variable: SOGoTrustProxyAuthentication + label: "SOGoTrustProxyAuthentication" + schema: + type: boolean + default: false + - variable: SOGoXSRFValidationEnabled + label: "SOGoXSRFValidationEnabled" + schema: + type: boolean + default: true + - variable: mail + label: "Mail" + schema: + type: dict + attrs: + - variable: SOGoDraftsFolderName + label: "SOGoDraftsFolderName" + schema: + type: string + default: "Drafts" + required: true + - variable: SOGoSentFolderName + label: "SOGoSentFolderName" + schema: + type: string + default: "Sent" + required: true + - variable: SOGoTrashFolderName + label: "SOGoTrashFolderName" + schema: + type: string + default: "Trash" + required: true + - variable: SOGoIMAPServer + label: "SOGoIMAPServer" + schema: + type: string + default: "localhost" + required: true + - variable: SOGoSieveServer + label: "SOGoSieveServer" + schema: + type: string + default: "" + - variable: SOGoMailDomain + label: "SOGoMailDomain" + schema: + type: string + default: "example.com" + required: true + - variable: SOGoMailingMechanism + label: "SOGoMailingMechanism" + schema: + type: string + default: "smtp" + enum: + - value: "smtp" + description: "smtp" + - value: "sendmail" + description: "sendmail" + - variable: SOGoSMTPServer + label: "SOGoSMTPServer" + schema: + type: string + show_if: [["SOGoMailingMechanism", "=", "smtp"]] + default: "smtp://domain:port" + required: true + - variable: SOGoForceExternalLoginWithEmail + label: "SOGoForceExternalLoginWithEmail" + schema: + type: boolean + default: false + - variable: SOGoMailSpoolPath + label: "SOGoMailSpoolPath" + schema: + type: string + default: "/var/spool/sogo" + required: true + - variable: NGMimeBuildMimeTempDirectory + label: "NGMimeBuildMimeTempDirectory" + schema: + type: string + default: "/mimetmp" + required: true + - variable: notifications + label: "Notifications" + schema: + type: dict + attrs: + - variable: SOGoAppointmentSendEMailNotifications + label: "SOGoAppointmentSendEMailNotifications" + schema: + type: boolean + default: false + - variable: SOGoACLsSendEMailNotifications + label: "SOGoACLsSendEMailNotifications" + schema: + type: boolean + default: false + - variable: SOGoFoldersSendEMailNotifications + label: "SOGoFoldersSendEMailNotifications" + schema: + type: boolean + default: false + - variable: auth + label: "Authentication" + schema: + type: dict + attrs: + - variable: SOGoPasswordChangeEnabled + label: "SOGoPasswordChangeEnabled" + schema: + type: boolean + default: true + - variable: usersources + label: "User Data Sources" + schema: + type: list + default: [] + items: + - variable: usersourcesEntry + label: "Source" + schema: + type: dict + attrs: + - variable: id + label: "id" + schema: + type: string + default: "id" + required: true + - variable: canAuthenticate + label: "canAuthenticate" + schema: + type: boolean + default: true + - variable: isAddressBook + label: "isAddressBook" + schema: + type: boolean + default: true + - variable: type + label: "Userdata Type" + schema: + type: string + default: "LDAP" + enum: + - value: "LDAP" + description: "LDAP" + - value: "SQL" + description: "SQL" + - variable: viewURL + label: "viewURL" + schema: + show_if: [["type", "=", "SQL"]] + type: string + default: "LDAP" + required: true + - variable: userPasswordAlgorithm + label: "userPasswordAlgorithm" + schema: + show_if: [["type", "=", "SQL"]] + type: string + default: "md5" + required: true + - variable: CNFieldName + label: "CNFieldName" + schema: + show_if: [["type", "=", "LDAP"]] + type: string + default: "cn" + required: true + - variable: UIDFieldName + label: "UIDFieldName" + schema: + show_if: [["type", "=", "LDAP"]] + type: string + default: "uid" + required: true + - variable: IDFieldName + label: "IDFieldName" + schema: + show_if: [["type", "=", "LDAP"]] + type: string + default: "uid" + required: true + - variable: bindFields + label: "bindFields" + schema: + show_if: [["type", "=", "LDAP"]] + type: string + default: "(uid, mail)" + required: true + - variable: baseDN + label: "baseDN" + schema: + show_if: [["type", "=", "LDAP"]] + type: string + default: "ou=users,dc=acme,dc=com" + required: true + - variable: bindDN + label: "bindDN" + schema: + show_if: [["type", "=", "LDAP"]] + type: string + default: "uid=sogo,ou=users,dc=acme,dc=com" + required: true + - variable: bindPassword + label: "bindPassword" + schema: + show_if: [["type", "=", "LDAP"]] + type: string + default: "qwerty" + required: true + - variable: displayName + label: "displayName" + schema: + show_if: [["type", "=", "LDAP"]] + type: string + default: "Shared Addresses" + required: true + - variable: hostname + label: "hostname" + schema: + show_if: [["type", "=", "LDAP"]] + type: string + default: "ldap://127.0.0.1:389" + required: true + - variable: custom + label: "Custom configuration Arguments" + schema: + type: list + default: [] + items: + - variable: customsourceEntry + label: "custom argument" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + - variable: debug + label: "Debug" + schema: + type: dict + attrs: + - variable: show + label: "show debug options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: SOGoDebugRequests + label: "SOGoDebugRequests" + schema: + type: boolean + default: false + - variable: SoDebugBaseURL + label: "SoDebugBaseURL" + schema: + type: boolean + default: false + - variable: LDAPDebugEnabled + label: "LDAPDebugEnabled" + schema: + type: boolean + default: false + - variable: ImapDebugEnabled + label: "ImapDebugEnabled" + schema: + type: boolean + default: false + - variable: PGDebugEnabled + label: "PGDebugEnabled" + schema: + type: boolean + default: false + - variable: MySQL4DebugEnabled + label: "MySQL4DebugEnabled" + schema: + type: boolean + default: false + - variable: SOGoUIxDebugEnabled + label: "SOGoUIxDebugEnabled" + schema: + type: boolean + default: false + - variable: WODontZipResponse + label: "WODontZipResponse" + schema: + type: boolean + default: false + - variable: WOLogFile + label: "WOLogFile" + schema: + type: string + default: "" + - variable: custom + label: "Custom configuration Arguments" + schema: + type: list + default: [] + items: + - variable: customEntry + label: "custom argument" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 80 + editable: false + hidden: true + - variable: port + label: "Container Port" + schema: + type: int + default: 80 + editable: true + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + default: 36102 + required: true + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + type: dict + attrs: + - variable: data + label: "App Data Storage" + description: "Stores the Application Data." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "pvc" + enum: + - value: "pvc" + description: "pvc" + - value: "emptyDir" + description: "emptyDir" + - value: "hostPath" + description: "hostPath" + - variable: storageClass + label: "(Advanced) storageClass" + description: " Warning: Anything other than SCALE-ZFS will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: hostPathType + label: "hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/data/conf/sogo/" + hidden: true + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "100Gi" + - variable: drafts + label: "App drafts Storage" + description: "Stores Draft emails" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "pvc" + enum: + - value: "pvc" + description: "pvc" + - value: "emptyDir" + description: "emptyDir" + - value: "hostPath" + description: "hostPath" + - variable: storageClass + label: "(Advanced) storageClass" + description: " Warning: Anything other than SCALE-ZFS will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: hostPathType + label: "hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/var/spool/sogo" + hidden: true + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "100Gi" + - variable: mimetmp + label: "App mimetmp Storage" + description: "Stores the temporary mime files" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "emptyDir" + enum: + - value: "pvc" + description: "pvc" + - value: "emptyDir" + description: "emptyDir" + - value: "hostPath" + description: "hostPath" + - variable: storageClass + label: "(Advanced) storageClass" + description: " Warning: Anything other than SCALE-ZFS will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: hostPathType + label: "hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/mimetmp" + hidden: true + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "100Gi" + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + enum: + - value: "pvc" + description: "pvc" + - value: "emptyDir" + description: "emptyDir" + - value: "hostPath" + description: "hostPath" + - variable: storageClass + label: "(Advanced) storageClass" + description: " Warning: Anything other than SCALE-ZFS will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: hostPathType + label: "hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + required: true + default: "" + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "100Gi" + + - variable: ingress + label: "" + group: "Ingress" + schema: + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: tls + label: "TLS-Settings" + schema: + type: list + default: [] + items: + - variable: tlsEntry + label: "Host" + schema: + type: dict + attrs: + - variable: hosts + label: "Certificate Hosts" + schema: + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: string + default: "" + required: true + - variable: scaleCert + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + $ref: + - "definitions/certificate" + - variable: entrypoint + label: "Traefik Entrypoint" + description: "Entrypoint used by Traefik when using Traefik as Ingress Provider" + schema: + type: string + default: "websecure" + required: true + - variable: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + + + - variable: ingressList + label: "Additional Ingress" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + type: dict + attrs: + - variable: name + label: "Service Name" + schema: + type: string + default: "" + - variable: port + label: "Service Port" + schema: + type: int + - variable: tls + label: "TLS-Settings" + schema: + type: list + default: [] + items: + - variable: tlsEntry + label: "Host" + schema: + type: dict + attrs: + - variable: hosts + label: "Certificate Hosts" + schema: + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: string + default: "" + required: true + - variable: scaleCert + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + $ref: + - "definitions/certificate" + - variable: entrypoint + label: "Traefik Entrypoint" + description: "Entrypoint used by Traefik when using Traefik as Ingress Provider" + schema: + type: string + default: "websecure" + required: true + - variable: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: securityContext + group: "Security and Permissions" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + + - variable: resources + group: "Resources and Devices" + label: "" + schema: + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + type: dict + attrs: + - variable: cpu + label: "CPU" + schema: + type: string + default: "2000m" + - variable: memory + label: "Memory RAM" + schema: + type: string + default: "2Gi" + - variable: requests + label: "Advanced Request minimum resources required" + schema: + type: dict + attrs: + - variable: cpu + label: "CPU" + schema: + type: string + default: "10m" + - variable: memory + label: "Memory RAM" + schema: + type: string + default: "50Mi" + + - variable: autoscaling + group: "Resources and Devices" + label: "Horizontal Pod Autoscaler" + schema: + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: target + label: "Target" + description: "deployment name, defaults to main deployment" + schema: + type: string + default: "" + - variable: minReplicas + label: "Minimum Replicas" + schema: + type: int + default: 1 + - variable: maxReplicas + label: "Maximum Replicas" + schema: + type: int + default: 5 + - variable: targetCPUUtilizationPercentage + label: "Target CPU Utilization Percentage" + schema: + type: int + default: 80 + - variable: targetMemoryUtilizationPercentage + label: "Target Memory Utilization Percentage" + schema: + type: int + default: 80 diff --git a/charts/incubator/sogo/app-readme.md b/charts/incubator/sogo/app-readme.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/charts/incubator/sogo/helm-values.md b/charts/incubator/sogo/helm-values.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/charts/incubator/sogo/templates/_config.tpl b/charts/incubator/sogo/templates/_config.tpl new file mode 100644 index 00000000000..3430ac78c0e --- /dev/null +++ b/charts/incubator/sogo/templates/_config.tpl @@ -0,0 +1,154 @@ +{{/* Define the configmap */}} +{{- define "sogo.config" -}} +--- + +apiVersion: v1 +kind: Secret +metadata: + labels: + {{- include "common.labels" . | nindent 4 }} + name: dbcreds +{{- $dbprevious := lookup "v1" "Secret" .Release.Namespace "dbcreds" }} +{{- $dbPass := "" }} +data: +{{- if $dbprevious }} + {{- $dbPass = ( index $dbprevious.data "postgresql-password" ) | b64dec }} + postgresql-password: {{ ( index $dbprevious.data "postgresql-password" ) }} + postgresql-postgres-password: {{ ( index $dbprevious.data "postgresql-postgres-password" ) }} +{{- else }} + {{- $dbPass = randAlphaNum 50 }} + postgresql-password: {{ $dbPass | b64enc | quote }} + postgresql-postgres-password: {{ randAlphaNum 50 | b64enc | quote }} +{{- end }} + {{- $url := printf "%v%v:%v@%v-%v:%v/%v" "postgresql://" .Values.postgresql.postgresqlUsername $dbPass .Release.Name "postgresql" "5432" .Values.postgresql.postgresqlDatabase }} + url: {{ $url | b64enc | quote }} + plainhost: {{ ( printf "%v-%v" .Release.Name "postgresql" ) | b64enc | quote }} +type: Opaque + +--- + +apiVersion: v1 +kind: ConfigMap +metadata: + name: sogo-config +data: + sogo.conf: | + { + /* ********************* Main SOGo configuration file ********************** + * * + * Since the content of this file is a dictionary in OpenStep plist format, * + * the curly braces enclosing the body of the configuration are mandatory. * + * See the Installation Guide for details on the format. * + * * + * C and C++ style comments are supported. * + * * + * This example configuration contains only a subset of all available * + * configuration parameters. Please see the installation guide more details. * + * * + * ~sogo/GNUstep/Defaults/.GNUstepDefaults has precedence over this file, * + * make sure to move it away to avoid unwanted parameter overrides. * + * * + * **************************************************************************/ + + /* Database configuration (mysql:// or postgresql://) */ + SOGoProfileURL = "{{ $url }}/sogo_user_profile"; + OCSFolderInfoURL = "{{ $url }}/sogo_folder_info"; + OCSSessionsFolderURL = "{{ $url }}/sogo_sessions_folder"; + + /* Mail */ + SOGoDraftsFolderName = {{ .Values.sogo.mail.SOGoDraftsFolderName | default "Drafts" }}; + SOGoSentFolderName = {{ .Values.sogo.mail.SOGoSentFolderName | default "Sent" }}; + SOGoTrashFolderName = {{ .Values.sogo.mail.SOGoTrashFolderName | default "Trash" }}; + SOGoIMAPServer = {{ .Values.sogo.mail.SOGoIMAPServer | default "localhost" }}; +{{- if .Values.sogo.mail.SOGoSieveServer}} + SOGoSieveServer = {{ .Values.sogo.mail.SOGoSieveServer | default "sieve://127.0.0.1:4190" }}; +{{- end }} + SOGoMailDomain = {{ .Values.sogo.mail.SOGoMailDomain | default "acme.com" }}; + SOGoMailingMechanism = {{ .Values.sogo.mail.SOGoMailingMechanism | default "smtp" }}; +{{- if eq .Values.sogo.mail.SOGoMailingMechanism "smtp" }} + SOGoSMTPServer = {{ .Values.sogo.mail.SOGoSMTPServer | default "smtp://domain:port/?tls=YES" }}; +{{- end }} + SOGoForceExternalLoginWithEmail = {{ if .Values.sogo.mail.SOGoForceExternalLoginWithEmail }}"YES"{{ else }}"NO"{{ end }}; + SOGoMailSpoolPath = {{ ( .Values.sogo.mail.SOGoMailSpoolPath | default "/var/spool/sogo") | quote }}; + NGMimeBuildMimeTempDirectory = {{ ( .Values.sogo.mail.NGMimeBuildMimeTempDirectory | default "/mimetmp") | quote }}; + + /* Notifications */ + SOGoAppointmentSendEMailNotifications = {{ if .Values.sogo.notifications.SOGoAppointmentSendEMailNotifications }}"YES"{{ else }}"NO"{{ end }}; + SOGoACLsSendEMailNotifications = {{ if .Values.sogo.notifications.SOGoACLsSendEMailNotifications }}"YES"{{ else }}"NO"{{ end }}; + SOGoFoldersSendEMailNotifications = {{ if .Values.sogo.notifications.SOGoFoldersSendEMailNotifications }}"YES"{{ else }}"NO"{{ end }}; + + /* Authentication */ + SOGoPasswordChangeEnabled = {{ if .Values.sogo.auth.SOGoPasswordChangeEnabled }}"YES"{{ else }}"NO"{{ end }}; + + /* User Sources */ +{{- if .Values.sogo.usersources }} + SOGoUserSources = ( + {{- range $index, $value := .Values.sogo.usersources }} + { + type = {{ $value.type | default "ldap" }}; + {{- if eq $value.type "ldap" }} + CNFieldName = {{ $value.CNFieldName | default "cn" }}; + UIDFieldName = {{ $value.UIDFieldName | default "uid" }}; + IDFieldName = {{ $value.IDFieldName | default "uid" }}; // first field of the DN for direct binds + bindFields = {{ $value.bindFields | default "(uid, mail)" }}; // array of fields to use for indirect binds + baseDN = {{ ( $value.baseDN | default "ou=users,dc=acme,dc=com" ) | quote }}; + bindDN = {{ ( $value.bindDN | default "uid=sogo,ou=users,dc=acme,dc=com" ) | quote }}; + bindPassword = {{ $value.bindPassword | default "qwerty" }}; + canAuthenticate = {{ if $value.canAuthenticate }}"YES"{{ else }}"NO"{{ end }}; + displayName = {{ ( $value.displayName | default "Shared Addresses" ) | quote }}; + hostname = {{ $value.hostname | default "ldap://127.0.0.1:389" }}; + id = {{ $value.id | default "public" }}; + isAddressBook = {{ if $value.isAddressBook }}"YES"{{ else }}"NO"{{ end }}; + {{- else if eq $value.type "sql" }} + id = {{ $value.sql.id | default "directory" }}; + viewURL = {{ ( $value.sql.viewURL | default "postgresql://sogo:sogo@127.0.0.1:5432/sogo/sogo_view" ) | quote }}; + canAuthenticate = {{ if $value.sql.canAuthenticate }}"YES"{{ else }}"NO"{{ end }}; + isAddressBook = {{ if $value.sql.isAddressBook }}"YES"{{ else }}"NO"{{ end }}; + userPasswordAlgorithm = {{ $value.sql.userPasswordAlgorithm | default "md5" }}; + {{- end }} + {{- range $value.custom }} + {{ .name }} = {{ .value }}; + {{- end }} + {{- if $index }} + } + {{- else }} + }, + {{- end }} + {{- end }} + ); +{{- end }} + + /* Web Interface */ + SOGoPageTitle = {{ .Values.sogo.webui.SOGoPageTitle | default "SOGo" }}; + SOGoVacationEnabled = {{ if .Values.sogo.webui.SOGoVacationEnabled }}"YES"{{ else }}"NO"{{ end }}; + SOGoForwardEnabled = {{ if .Values.sogo.webui.SOGoForwardEnabled }}"YES"{{ else }}"NO"{{ end }}; + SOGoSieveScriptsEnabled = {{ if .Values.sogo.webui.SOGoSieveScriptsEnabled }}"YES"{{ else }}"NO"{{ end }}; + SOGoMailAuxiliaryUserAccountsEnabled = {{ if .Values.sogo.webui.SOGoMailAuxiliaryUserAccountsEnabled }}"YES"{{ else }}"NO"{{ end }}; + SOGoTrustProxyAuthentication = {{ if .Values.sogo.webui.SOGoTrustProxyAuthentication }}"YES"{{ else }}"NO"{{ end }}; + SOGoXSRFValidationEnabled = {{ if .Values.sogo.webui.SOGoXSRFValidationEnabled }}"YES"{{ else }}"NO"{{ end }}; + + /* General - SOGoTimeZone *MUST* be defined */ + SOGoLanguage = {{ .Values.sogo.general.SOGoLanguage | default "English" }}; + SOGoTimeZone = {{ .Values.env.TZ | default "America/Montreal" }}; + SOGoSuperUsernames = ({{ .Values.sogo.general.SOGoSuperUsernames | default "" }}); // This is an array - keep the parens! + SxVMemLimit = {{ .Values.sogo.general.SxVMemLimit | default "384" }}; + SOGoMemcachedHost = {{ ( printf "%v-%v" .Release.Name "memcached" ) | quote }}; + + /* Debug */ + SOGoDebugRequests = {{ if .Values.sogo.debug.SOGoDebugRequests }}"YES"{{ else }}"NO"{{ end }}; + SoDebugBaseURL = {{ if .Values.sogo.debug.SoDebugBaseURL }}"YES"{{ else }}"NO"{{ end }}; + ImapDebugEnabled = {{ if .Values.sogo.debug.ImapDebugEnabled }}"YES"{{ else }}"NO"{{ end }}; + LDAPDebugEnabled = {{ if .Values.sogo.debug.LDAPDebugEnabled }}"YES"{{ else }}"NO"{{ end }}; + PGDebugEnabled = {{ if .Values.sogo.debug.PGDebugEnabled }}"YES"{{ else }}"NO"{{ end }}; + MySQL4DebugEnabled = {{ if .Values.sogo.debug.MySQL4DebugEnabled }}"YES"{{ else }}"NO"{{ end }}; + SOGoUIxDebugEnabled = {{ if .Values.sogo.debug.SOGoUIxDebugEnabled }}"YES"{{ else }}"NO"{{ end }}; + WODontZipResponse = {{ if .Values.sogo.debug.WODontZipResponse }}"YES"{{ else }}"NO"{{ end }}; + WOLogFile = {{ ( .Values.sogo.debug.WOLogFile | default "/var/log/sogo/sogo.log" ) | quote }}; + } + + /* Custom Arguments added by user */ + {{- range .Values.sogo.custom }} + {{ .name }} = {{ .value }}; + {{- end }} + +{{- end -}} diff --git a/charts/incubator/sogo/templates/common.yaml b/charts/incubator/sogo/templates/common.yaml new file mode 100644 index 00000000000..51e8201cc68 --- /dev/null +++ b/charts/incubator/sogo/templates/common.yaml @@ -0,0 +1,26 @@ +{{/* Make sure all variables are set properly */}} +{{- include "common.values.setup" . }} + +{{/* Render config and secrets for sogo */}} +{{- include "sogo.config" . }} + +{{/* Append the general configMap volume to the volumes */}} +{{- define "sogo.configmapVolume" -}} +enabled: "true" +mountPath: "/etc/sogo/sogo.conf" +readOnly: true +subPath: sogo.conf +type: "custom" +volumeSpec: + configMap: + name: sogo-config + items: + - key: sogo.conf + path: sogo.conf +{{- end -}} + +{{- $_ := set .Values.persistence "sogo-config" (include "sogo.configmapVolume" . | fromYaml) -}} + + +{{/* Render the templates */}} +{{ include "common.all" . }} diff --git a/charts/incubator/sogo/values.yaml b/charts/incubator/sogo/values.yaml new file mode 100644 index 00000000000..19bf6530d93 --- /dev/null +++ b/charts/incubator/sogo/values.yaml @@ -0,0 +1,142 @@ +# Default values for Bitwarden. +image: + repository: ghcr.io/truecharts/sogo + pullPolicy: IfNotPresent + tag: "v5.2.0" + +# -- services +service: + main: + ports: + main: + port: 80 + +# -- initcontainers +initContainers: + # -- wait for database before starting sogo + - name: init-postgresdb + image: postgres:13.1 + command: + - "sh" + - "-c" + - "until pg_isready -U sogo -h ${pghost} ; do sleep 2 ; done" + imagePullPolicy: IfNotPresent + env: + - name: pghost + valueFrom: + secretKeyRef: + name: dbcreds + key: plainhost + +# -- persistence settings +persistence: + data: + enabled: true + mountPath: "/data/conf/sogo/" + type: pvc + accessMode: ReadWriteOnce + size: "100Gi" + drafts: + enabled: true + mountPath: "/var/spool/sogo" + type: pvc + accessMode: ReadWriteOnce + size: "100Gi" + mimetmp: + enabled: true + mountPath: "/mimetmp" + type: emptyDir + + +# -- postgres dependency settings +postgresql: + enabled: true + postgresqlUsername: sogo + postgresqlDatabase: sogo + existingSecret: dbcreds + +# -- memcached dependency settings +memcached: + enabled: true + +# -- Sogo settings +sogo: + # -- Pre-configured Sogo mail settings + mail: + SOGoDraftsFolderName: "Drafts" + SOGoSentFolderName: "Sent" + SOGoTrashFolderName: "Trash" + SOGoIMAPServer: "localhost" + SOGoSieveServer: "" + SOGoMailDomain: "example.com" + SOGoMailingMechanism: "smtp" + SOGoSMTPServer: "smtp://domain:port" + SOGoForceExternalLoginWithEmail: false + SOGoMailSpoolPath: "/var/spool/sogo" + NGMimeBuildMimeTempDirectory: "/mimetmp" + # -- Pre-configured Sogo notifications settings + notifications: + SOGoAppointmentSendEMailNotifications: false + SOGoACLsSendEMailNotifications: false + SOGoFoldersSendEMailNotifications: false + # -- Pre-configured general Sogo settings + general: + SOGoLanguage: "English" + SOGoSuperUsernames: "" + SxVMemLimit: "384" + # -- Pre-configured Sogo authentication settings + auth: + SOGoPasswordChangeEnabled: true + # -- Sogo usersources + usersources: [] + # - type: "ldap" + # CNFieldName: "cn" + # UIDFieldName: "uid" + # IDFieldName: "uid" + # bindFields: "(uid, mail)" + # baseDN: "ou=users,dc=acme,dc=com" + # bindDN: "uid=sogo,ou=users,dc=acme,dc=com" + # bindPassword: "qwerty" + # canAuthenticate: true + # displayName: "Shared Addresses" + # hostname: "ldap://127.0.0.1:389" + # id: "public" + # isAddressBook: true + # custom: + # - name: name-of-ldap-setting + # value: somevalue + # + # - type: "sql" + # id: "directory" + # viewURL: "postgresql://sogo:sogo@127.0.0.1:5432/sogo/sogo_view" + # canAuthenticate: true + # isAddressBook: true + # userPasswordAlgorithm: "md5" + # custom: + # - name: name-of-sql-setting + # value: somevalue + + # -- Pre-configured Sogo debug settings + debug: + SOGoDebugRequests: false + SoDebugBaseURL: false + LDAPDebugEnabled: false + ImapDebugEnabled: false + PGDebugEnabled: false + MySQL4DebugEnabled: false + SOGoUIxDebugEnabled: false + WODontZipResponse: false + WOLogFile: "/var/log/sogo/sogo.log" + # -- Pre-configured Sogo webui settings + webui: + SOGoPageTitle: "SOGo" + SOGoVacationEnabled: true + SOGoForwardEnabled: true + SOGoSieveScriptsEnabled: true + SOGoMailAuxiliaryUserAccountsEnabled: true + SOGoTrustProxyAuthentication: false + SOGoXSRFValidationEnabled: true + # -- custom Sogo setting arguments + custom: [] + # - name: SOGoPageTitle + # value: "somevalue" diff --git a/docs/_static/img/sogo-icon.png b/docs/_static/img/sogo-icon.png new file mode 100644 index 00000000000..70f1ae9ca5f Binary files /dev/null and b/docs/_static/img/sogo-icon.png differ