diff --git a/clusters/base/apps/authelia/secret.enc.yaml b/clusters/base/apps/authelia/secret.enc.yaml index 13a8348..ffa062c 100644 --- a/clusters/base/apps/authelia/secret.enc.yaml +++ b/clusters/base/apps/authelia/secret.enc.yaml @@ -4,20 +4,20 @@ metadata: name: authelia-secrets namespace: auth stringData: - configuration.yml: ENC[AES256_GCM,data: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,iv:hkpXLWotnzyGrLLigZppA5VDEZcVd/An4YigJYzxynQ=,tag:9GYX8h/8KFO39gD0Q19YGw==,type:str] - users_database.yml: ENC[AES256_GCM,data:j2TyG9OcrGmrDZMKvFf1dI31IOT2bp4esOuV5qmpw95hM75i/kCxNSPh6P0ioLeeBSDnstz9wBkC2JDKUhwl1bp7AanGtEp40Rs6mO94LYyd/By5SabmAEJEkpIzsTR4cupPcQ8c5SZIz895YiqpIQEkW/6DA6Hm+VDDUgH+LOtL11hzCPqXwFQQdwoGqWHD/wLDwukUJkZiGdDL0upv0xtEhVvamHheP8e+oU6so7hSvruTtFdfXz5lArhrbnrJfHCZ6mLwcmjBk5BezcyMv+PC450PQTIXBzWCWzg6nLGDGrnTaN2a0J8IMUToqqM0K2GQWWRFyPi//SN+pyE7T38FiYHGCpdgnHOWjhtp/msBsFyM/QfKSEE240X7yVTUMOtPPVBimMI4jO7MLNtr1K5voqdUxnpgAchLLbrSa9rfXCJmqbtFGSe9UGYQtUpSn4cgP1E4bOhHL1Xvt2wB/LYrY8LOyM48z0ItGeOYW1tElqPL1kUadivIlxe9X241EH0Oen5fedcCNz2ij+WNXkn96LrWHQx2BW1O5Pos4OxCV84SwwsOqGh1YAwEHGJXOtmQPTIshikKfL4HFmoy6QAOWZz4tkF4Y5nWALwXT6rVTym0EYvEqUUrkw//9s4mKK7jQzWxqa23s7xzig7uujGwr8EnPoXLZdTFm+sAQlWh5Cnb1fQkUIhxTuYpEYbI7ZWjnpx5+GoqpFaEzOYyuumbmnWTp1vB1xUpqr8vGI8xwYaLcvh5jK1vNwrNZggbZ7M6+ZM2k0vNIBXKGmItRcC0wfbPJuJ3hzrDI1/9O/2F2q3NTatNcaMwYUGjTuADL5Y6IJY7KDNDVoXy7LTauSsN6nnwhUtEl0O+33zrsFC2c2HxPLdQmaRk8FLnrR0S+FFRTiNn71hayySaADe1RFsp8GRqzM8ggs/0czKfSBdLP9yiwOgZ+y7G/CXvyxHUOEv62P3n9hc+2sT88SID0fpiDaU5gL8LDzmRwIJY9bRFqbboes9ZC24Q3wPqIxP3Jl8OGXDuTuVFnd3fztJ0BV7LV+/CsFN0st0RMUtRgeCSKI2y9Xgtc8Thr40uVyuiq+E7KiFQ5l1vz1h8scumk06655uCbqo3AivWDFlMoeLXAu8UtRPMkvMoZB9O1qiVSluy3/odzzWsklU0jhxaJOVCtXaLD5qYE56GJj0JfemakAkAq/k5CfaFC5vfBQHBT4OO8Bxd4SrCdSo7M/2/K0kD4TM4WgDK9TYrZP7ByXB22XCVqnJo5d8DMhNLLSC5CCo8NjxqO6dYIqWEQSFE7QtUS1nM9174ocdBgJpQwUI30jr4GQv9HWeqSMQ/62hN85mniIUv/wvE5xrjulB17ERmdzK3v+bw4VTgg++DlNx2S5rRE/cAElmn+iN/tF0XsIiTrMI7fUGajAsTPJN8RsJCYOzFLL95tBIYyMPRFh9D0C8ERzKviuQSTaek0LSvg6eWPnOttT6Xfaz6X8sFCAbQCa5vTCY59QTWjiKwWHB5Xy1CzVuc/Bv4cO677xh6HIhLFNDmOJZ9A2q0kPS88GaX35GulLypqgRq/kfSpQY70iwWwsK99tKR8wmVFxIXm5H19L9evhU8n7FAsLtL5Z3jo1PyVjnRNk7r/E7Mk7IG81p0e99q2BDcWZOieuq72sM/JzPVBFk/1axi0rX3RLuUQ0HgytOAtDLUGApmxmPq+3vRyUks97yUEEtGSw==,iv:Vei0P1GyHt6UZ3ncMUzFWwUedyGER/aPxYlf5+UtkFE=,tag:q37pq1THu2NRaDV8/qXDPw==,type:str] + configuration.yml: ENC[AES256_GCM,data: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,iv:O4/0wqUpK+Wi03ntcMTMN45rxngeYIGVbqrjZKfs2Bs=,tag:bv1LT7CpsU9J3rLfT8Q9gA==,type:str] + users_database.yml: ENC[AES256_GCM,data:O6ITZIWXw9stlPck+PnhITUL1EAGxuoU+I7xUONw+a5m64I5/c/d0EoUpr+fjH76sHT9mkhW75YNukgokSCBGkvN01e4coYvj+pF5jhDI91QlqKNr6WeflYqiCsux077KrW61wECAz1u0BCuLe0ZpKSdzCk3h35spFCvB7N2szC8mdxyWVahv80WQkTkWxqkDVEHQVJqnnF8uMQ2iBwH9FaqCPbuxByxvNgnA6HkQGUP3sU/E995guxLz9s1EtGWf6tHtmmoB+ne/w6mwPHtT/d46/7MjsV+aEVBMl5t0FlGaOx+CURtf0LTfu1u0UxmEusPTWGoBtWCvAGFICpT3zqnBgLwPOhS64BjY2Udk3lg6stlVW033TuHSCI2QS6Br52z/o+2VBKoFagyTtnce3aaLwdFDZbMkiH5Qi8ycwWwgzK6hdBgKIhxMrjB3GUaCCFaHMkiaYritNK4vO3+Zt+xRcHeilXlTg9vrj0gx+jVBGeSSq9ifLRks1KdiScOWTc1PIyg7X1NTGlCVCH1+wVu8AmN5H562Qnhla+sqhlhzLAdjmjUCuSmE67Q3Z5O510NrNUAnK2puQOLk+ua8XJijrhyeqDzZjUHaJV24fPTeNblKfJEtRxTUuIORS+XXiEmXumJhGc+LVhNIOb8LosLuQK4gNjYQvN/QJ+8yfyyogGd6GVAvTCbudnEnKiQc9G0xSMSYv017iipMbeBKASfaZZIJJkH/ubAloR6TTcJtGgwEQUfIb3a+8x1IvVlSn7/idM4/Hfev/dYNkJBtGMehPSN4aMwvIxGyX6kX48JpcJr04PegLNbzfIHfGxEjoP3qTTq1GtKc+2UVvFIUhOmleRVFIJSL1ouKj2U2QMVqkqpkIGYn8TF6yqseX/yqn57j9+RjBck8AYPEC4WLzE/IEtogusKisEf4RMWOrjxxEK5hrMzLkBTDaxCDvkkmWceypFxHlYaDtBXCCL6njZGbtNNTr1f6Qhe1+SOWNQnumn4kz8o6O2WrrkIgbyw3m5/QwPySzYncMm4PEwna27uBNB2udXBkCcN0ZMW8quNyKF+d8shMsn0zdnhpBGXCDf04ooYVQUt3Isxcd2M6Spmj7ZupAwl0G+JTm7+u5z1z2Q/T1tj4IxESbQUeghq1iSavjjhAsb2k8vzYpsAHeIcR+sliOdE1WUQXMPqLlrMqckWmhlJfUq3Z+zMwe74+Yz/9PlqRZdFhAvlZa0JQ7a4FoeZYuipiJReE/t8TYz43xrawgHoCYqWvRlydmHmhLopwfmYN4sYiV3WOx3y8kwC9uPWEApAIWGsyTtXjp1Gy2BCP3NSnQQmS+DkfhpLZCMCt+sl6p12Vc302LpMGTm82El1C58VWhQjd9z+eM36ngTXvcGXPkGNGM19ZqgS0iH0IGOH5Qyykp3PDnY34qXZIDvQQB2VesyXpLUyiFSzxN+Oo1AHhg1WNNM8IhCVudkN7JKM1Zl89iKMEh6HPhk7wQFh5+vpe4dkLDWF3FF+3LauM1CYOj9ZlyztC+kAgl2B1cveXutyGcszk8mn88RxV6Un69HMSAV2rAdPDlds7SxqgWCtPOd0DzSDUYojM9gIHGRGPgeDnzgaWeQ4Vku+X8G8zI6XiTGSy2n7ZVBTpmHJwE08y8F8NCwfRYSG3tavjShZ2IdWH2Dr1JUg3MOJvJkK+UVxnl3mZENOIdwp8wikN9K0aIEXHlP+XA==,iv:YxlgA4H+e4h5vGQOirLaIrNDxc71TsfYHe30O+3BTJI=,tag:lAFEmhzrsHfSqpzRitEwXQ==,type:str] sops: age: - recipient: age1ncw6uagcgncd5m2admqxt73ey0mcd99jsw9sa9lcdv3gu70mcerql8ya0k enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBuYTNoQTFsS1B3SWpzMW5K - REhKcEMwdUl1aHJRQkg4OVNIbzg0TGRubUE0Ck00N2ZuYzFOVzYyaXdSb3cyMXd6 - VHN3ckFKL21SY2lyTjFHelZHRzdkQXcKLS0tIHFFc1R3L2Jjb2xNS3RMQ0FQZFdW - aWdTQndwWDkzOE56Rnl3MEMzTjBuc1UK0HvBO2qJJOVg2CaCDi2kN0vcZbYBMhNE - XLxTcSwgMkq2Mt0cMqam8v7a7Of50ZEXC+jzUh+7Rnu7UqtjSo6yBQ== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBtZ0N1c1J3ZGwzNXRvZkY5 + ZEdzUzZXWXpxTXVJaFlkZVc5a2NrTTdiNTN3CkxRc1NFdFIyNDhINHllY1RFYm9p + dVNnbERPT0xTTzJGM1JsWTlaRzZzM1kKLS0tIEE5ZEJmSlpKcXRIOHpPRjFhZUlU + V29VYnR6MlQvd2FnWTlDYUE4YTNLMUUK9JfMOF5fiMs1Z9PdaJDBuHFlit1mjFLC + xBfsyua0W3uX7kcBb2DwMTd2DTftVb6o5etPhGYdt3YCaUJjZbDLmA== -----END AGE ENCRYPTED FILE----- - lastmodified: "2026-08-26T10:24:09Z" - mac: ENC[AES256_GCM,data:9FzwjfdyZ51D+Ploe16qjA5rpYKxjymfi+MQ0++qRoiHnftP6Ajscuba8PHrFmGJPkUT2miwyWCgbZRYP2Z9mDhdpve8fhMVHpeG5IRkJCqqCOgRVlE9gMWtkJrLAcM7BRzdsT0tz7DzZR3HWxlojL723IjbqcTukiyaAQoVoBg=,iv:K1UifI1Y1BvFjOEugVZ/JlPT71VTrGgCv8CEhNygLIQ=,tag:LMaIXolSMBGl2O9VBjkKvQ==,type:str] + lastmodified: "2026-08-26T10:24:16Z" + mac: ENC[AES256_GCM,data:/nC7Wzc2lByVvo0ZBFgjCZA9XuLS2e1gVCKCXlDHHDCXUr6UPZJHcwqR5lhWF7fjpWwUN5SNGhNdxLE+XzuscqRIgzUhw8SJdkbqOeLlwFEYI1XAzCNNn4FKtQycbfvueeU74IEcshPhdV4JM1AA66tPPObK66GHuoYIdMDImqE=,iv:MpwS6uxzUfw8SLfyw12fpp0g8WczxcMx2N2Zo7cHSoo=,tag:VxdUgR2xtO1q3vG/XjlxrQ==,type:str] encrypted_regex: ^(data|stringData)$ version: 3.11.0 diff --git a/clusters/base/apps/davical/helmrelease-davical.yaml b/clusters/base/apps/davical/helmrelease-davical.yaml index 88f01ea..1146429 100644 --- a/clusters/base/apps/davical/helmrelease-davical.yaml +++ b/clusters/base/apps/davical/helmrelease-davical.yaml @@ -90,6 +90,11 @@ spec: # No stripPrefix middleware either: Apache needs to see the /server # prefix itself (via the Alias added in the seed-config initContainer) # so that DAViCal's self-referential links come out correct. + # + # c2.aggtaa.com/server is the same backend, reachable same-origin + # from InfCloud (also on c2.aggtaa.com) so its browser-side CalDAV + # requests don't need CORS. That ingress owns the cert-manager + # annotation for c2.aggtaa.com; this one just reuses its secret. hosts: - host: c.aggtaa.com paths: @@ -98,10 +103,20 @@ spec: service: identifier: app port: http + - host: c2.aggtaa.com + paths: + - path: /server + pathType: Prefix + service: + identifier: app + port: http tls: - secretName: radicale-tls hosts: - c.aggtaa.com + - secretName: infcloud-tls + hosts: + - c2.aggtaa.com persistence: config: diff --git a/clusters/base/apps/davical/secret.enc.yaml b/clusters/base/apps/davical/secret.enc.yaml index c1ae1ed..fff86aa 100644 --- a/clusters/base/apps/davical/secret.enc.yaml +++ b/clusters/base/apps/davical/secret.enc.yaml @@ -4,21 +4,21 @@ metadata: name: davical-secrets namespace: pim stringData: - PGSQL_ROOT_PASS: ENC[AES256_GCM,data:6Jq0b77PNViMRIjKsIJPUTlWr3x1BJnjXUMm/UJdylDvc25IR9zb0PeN5O+UN3VW,iv:k+v9gxkjr5Y3o4YMBTeSZ6fq2XmcQHq4dbIzZ1aBm8k=,tag:fmOMjx90AvKFR1SBvpOITw==,type:str] - PASSDAVDB: ENC[AES256_GCM,data:FhXHxwd0aW4SzglYBEp5w5a0EXYYoeqSTBK7Samf1wQeNogJp69TqJBtv3pkoR4P,iv:qLFh2Ysah4F2KMowgDYgtHsCXsstSQxn7+pZAEyPOnk=,tag:rWxqEPnEwEmTCOcKewcSuQ==,type:str] - ADMINDAVICALPASS: ENC[AES256_GCM,data:4GtUmg0kTbqelWXtRFc4H7XlEgFTDAz4rni1GGNfRO0=,iv:quvQT1uHRMLRo7eTrzgs1xjhkpnDvl/R9No0Q6jGVIk=,tag:4hpt5VvXL8CvjbdL0u2UMA==,type:str] + PGSQL_ROOT_PASS: ENC[AES256_GCM,data:QGqssqH3ma/i6jKX46QrWT/ibuqxfTBjH8GRZP+EFZ19KgmW2MeUqPHp2b0KcPT9,iv:iwby/dEzV0X2Ca7diTLzUT5V+e3G2z4bxJSDyiblI8U=,tag:67s/Lo4CjjsDEkITKFnq5g==,type:str] + PASSDAVDB: ENC[AES256_GCM,data:UiW+Tf5LAQ24mthrB5pYqMt7V3G1oOC8eFnSZkVKHA2JIMEl3ptsO+tesl8Ada1y,iv:NDVa9RXC+uIGwKDUuTa6+nMiH9vpWuEIExzmKQTIS4k=,tag:ZN0aYgvUZX392DWAoV0jyA==,type:str] + ADMINDAVICALPASS: ENC[AES256_GCM,data:xnZTsq+ba9oCdtYnxuZbnlB4lcniOGpnKZSqqyCcG8w=,iv:vVaO2gg0o3LI6ZtNDPdjjnlm6dyYmeUT1jQRgyJ8Cqw=,tag:ILhGxMaB+Mmv2vyKbPyYaQ==,type:str] sops: age: - recipient: age1yx8mey02c0mu6te9hwxwdqp5n4enjz35e8thchsmvhqw7xsrzy0syg367g enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYNlhHS1B1L0JYa2FtYklt - UUt2UlJqNVFoZG5rU3laSTl3amtXQ0VnV2hNClhPbzVYejlkVVU1dG1tOU05QTBa - cEFkZ3ZkbjliZkVRM3ZPZkJkZmhTbXMKLS0tIEk5dHJmaFp1UGJVNFM3SlYwYUsz - RjkyQ3BUQktoK3Q2ejJtYVprTERzRFkKJsBYjpBQ5vrGjCe5UTBwbeGQCb5EImGz - HP7rtwdF+ACy3FBQCRpjR4wSZPmnN5tRth4Ut3SDvIzvpEx7p6gnEA== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBOcFhiVUNkZVRZU2hHUXhI + RlNzYXdIdElMbSttYVFibUM2NHVObWV4T1ZrCkp3ek9ZdEE0VTdMaWlRdHk3amsx + dmUvblo4ZVM4OEdnOXhkYmV2a2R4dkkKLS0tIHhoVUd4QThTZXVsNDMwVXY1bk4v + U0hLMkd1bllzaUxSVTRVUEk5WDgvZjAKIHfqnZMlM8IA83jIu6Isd+XObtATeUkp + vFRK/oxl3bV8OgyTFtTDotb16CvhN6IBjKqfC+7CIsrOh9fBwxwuQw== -----END AGE ENCRYPTED FILE----- - lastmodified: "2026-08-26T10:24:10Z" - mac: ENC[AES256_GCM,data:8CXLLLEwaaUqMa1PEwVok88CJsc+0VlsotyaZR+gkW53EnZBLi+jAxNm5j6ISpn/TJw2pLCMXGf8vB164OX4w0YPm5dVPQUhBNxONRcnbD/Cil54PIlG4MGgCIfalKDpB2Je0NpU+81B7KYQlaBezbNb0+G4GgTqwaY04rfs0mw=,iv:bYEiFvVqqiDi42G8oYvfKaHmEfkb2zLjfDJU2PmEZjc=,tag:lHO8xRWvAyh3CSVEB/+l6Q==,type:str] + lastmodified: "2026-08-26T10:24:17Z" + mac: ENC[AES256_GCM,data:gvbGpqeSUj6qHNcDX+FBxJJWGglNQwR61yWUo5wBrVaagxaO342pq/sDF7oDBG8AzIfSNk5kXuWzkWe8KJLFnCxzw4XxoFqBDp2Mlkr1iQfKVptj+Urv2Vrsgd9CN5ctUuDoas8U+oQhu5G4pni/KRLXBUwdO0Z0ZyzzdDaDGSU=,iv:Dc/o2x4dfT4Sx+5nqTIPx7wh5u0/ThO1uduLcGX8byk=,tag:AR716bU6P84AyyOVT8NwzA==,type:str] encrypted_regex: ^(data|stringData)$ version: 3.11.0 diff --git a/clusters/base/apps/infcloud/configmap.yaml b/clusters/base/apps/infcloud/configmap.yaml new file mode 100644 index 0000000..c73d0bb --- /dev/null +++ b/clusters/base/apps/infcloud/configmap.yaml @@ -0,0 +1,1449 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: infcloud-config + namespace: pim +data: + # upstream default config.js (https://inf-it.com/infcloud/config.js.txt), + # only the CalDAV href (points at davical, same-origin via /server to + # avoid CORS) and the default timezone were changed from stock. + config.js: | + /* + InfCloud - the open source CalDAV/CardDAV Web Client + Copyright (C) 2011-2015 + Jan Mate + Andrej Lezo + Matej Mihalik + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + + + // NOTE: see readme.txt before you start to configure this client! + + + // NOTE: do not forget to execute the cache_update.sh script every time you + // update this configuration file or any other files (otherwise your browser + // will use the previous version of files stored in HTML5 cache). Alternatively + // you can update the cache.manifest manually - edit the second line beginning + // with "#V 20" to anything else (this file simple needs "some" change) + + + // Supported setup types (use ONE of them): + // a.) globalAccountSettings => username and password is hardcoded + // in config.js, automatic login without the login screen + // - advantages: fast login process = no username/password is required + // - disadvantages: username/password is visible in your config.js, so + // this type of setup is recommended ONLY for intranet/home users + // b.) globalNetworkCheckSettings => standard setup with login screen + // - advantages: username/password is required (no visible + // username/password in config.js) + // - disadvantages: if a user enters wrong username/password then + // the browser will show authentication popup window (it is NOT + // possible to disable it in JavaScript; see the next option) + // c.) globalNetworkAccountSettings => advanced setup with login screen + // - advantages: no authentication popup if you enter wrong username/ + // password, dynamic XML configuration generator (you can generate + // different configurations for your users /by modifying the "auth" + // module configuration or the PHP code itself/) + // - disadvantages: requires PHP >= 5.3 and additional configuration, + // only basic http authentication is supported => always use https! + // + // + // What is a "principal URL"? => Check you server documentation! + // - "principal URL" is NOT "collection URL" + // - this client automatically detects collections for "principal URL" + // - PROPER "principal URL" looks like: + // https://server.com:8443/principals/users/USER/ + // https://server.com:8443/caldav.php/USER/ + // - INVALID principal URL looks like: + // https://server.com:8443/principals/users/USER/collection/ + // => this is a collection URL + // https://server.com:8443/caldav.php/USER/collection/ + // => this is a collection URL + // https://server.com:8443/principals/users/USER + // => missing trailing '/' + // https://server.com:8443/caldav.php/USER + // => missing trailing '/' + // /caldav.php/USER/ + // => relative URL instead of full URL + // + // + // List of properties used in globalAccountSettings, globalNetworkCheckSettings + // and globalNetworkAccountSettings variables (+ in the "auth" module): + // - href + // Depending on the setup type set the value to: + // a.) globalAccountSettings: full "principal URL" + // b.) globalNetworkCheckSettings: "principal URL" WITHOUT the "USER/" part + // c.) globalNetworkAccountSettings: "full URL" to the "auth" directory + // This property is supported in: + // globalAccountSettings + // globalNetworkCheckSettings + // globalNetworkAccountSettings + // - userAuth + // - userName + // Set the username you want to login. + // - userPassword + // Set the password for the given username. + // This property is supported in: + // globalAccountSettings + // - timeOut + // This option sets the timeout for jQuery .ajax call (in miliseconds). + // Example: + // timeOut: 90000 + // This property is supported in: + // globalAccountSettings + // globalNetworkCheckSettings + // globalNetworkAccountSettings + // - lockTimeOut + // NOTE: used only if server supports LOCK requests + // This option sets the LOCK timeout value if resource locking + // is used (in miliseconds). + // Example: + // lockTimeOut: 10000 + // This property is supported in: + // globalAccountSettings + // globalNetworkCheckSettings + // globalNetworkAccountSettings (available in auth module only) + // - checkContentType + // This option enables a content-type checking for server response. + // If enabled then only objects with proper content-type are inserted + // into the interface. + // If you cannot see data in the interface you may try to disable it (useful + // if your server returns wrong value in "propstat/prop/getcontenttype"). + // If undefined then content-type checking is enabled. + // Examples: + // checkContentType: true + // checkContentType: false + // This property is supported in: + // globalAccountSettings + // globalNetworkCheckSettings + // globalNetworkAccountSettings (available in auth module only) + // - settingsAccount + // NOTE: server support for custom DAV properties is REQUIRED! + // This option sets the account where the client properties such as: + // loaded collections, enabled collections, ... are saved during + // the logout and resource/collection synchronisation + // NOTE: set it to true ONLY for ONE account! + // Examples: + // settingsAccount: true + // settingsAccount: false + // This property is supported in: + // globalAccountSettings + // globalNetworkCheckSettings + // globalNetworkAccountSettings (available in auth module only) + // - delegation + // NOTE: server support for this functionality is REQUIRED! + // This option allows you to load delegated (shared) collections. + // If set to true (default) then delegation functionality is enabled, + // and the interface allows you to load delegated collections. + // If false then delegation functionality is completely disabled. + // Examples: + // delegation: true + // delegation: false + // This property is supported in: + // globalAccountSettings + // globalNetworkCheckSettings + // globalNetworkAccountSettings (available in auth module only) + // - additionalResources + // This options sets the list of additional resources (e.g. shared resources + // accessible by all users). If the server supports delegation (see + // the delegation option above) there is no reason to use this option! + // Supported values: + // - array of URL encoded resource names (not collections), such as: + // 'company' + // 'shared_resource' + // If empty (default) or undefined then shared resources are not loaded + // using this option, but may be loaded using the delegation option. + // Examples: + // additionalResources=[] + // additionalResources=['public', 'shared_resource'] + // This property is supported in: + // globalNetworkCheckSettings + // - hrefLabel + // This option sets the server name in the resource header (useful if + // you want to see custom resource header above the collections). + // You can use the following variables in the value: + // %H = full hostname (including the port number) + // %h = full hostname (without the port number) + // %D = full domain name + // %d = only the first and second level domain + // %P = principal name + // %p = principal name without the @domain.com part (if present) + // %U = logged user name + // %u = logged user name without the @domain.com part (if present) + // If undefined, empty or or null then '%d/%p [%u]' is used. + // Examples: + // hrefLabel: '%d/%p [%u]' + // hrefLabel: '%D/%u' + // This property is supported in: + // globalAccountSettings + // globalNetworkCheckSettings + // globalNetworkAccountSettings (available in auth module only) + // - forceReadOnly + // This option sets the list of collections as "read-only". + // Supported values: + // - true + // all collections will be "read-only" + // - array of URL encoded + // - collections, such as: + // '/caldav.php/user/calendar/' + // '/caldav.php/user%40domain.com/calendar/' + // - regexes, such as: + // new RegExp('^/caldav.php/user/calendar[0-9]/$', 'i') + // specifies the list of collections marked as "read-only" + // If null (default) or undefined then server detected privileges are used. + // Examples: + // forceReadOnly: null + // forceReadOnly: true + // forceReadOnly: ['/caldav.php/user/calendar/', + // '/caldav.php/user/calendar2/'] + // forceReadOnly: [new RegExp('^/.*/user/calendar[0-9]/$', 'i')] + // This property is supported in: + // globalAccountSettings + // globalNetworkCheckSettings + // globalNetworkAccountSettings (available in auth module only, with + // different syntax for regexes) + // - ignoreAlarms + // This option sets list of calendar collections with disabled + // alarm functionality. + // Supported values: + // - true + // alarm functionality is disabled for all collections + // - array of URL encoded + // - collections, such as: + // '/caldav.php/user/calendar/' + // '/caldav.php/user%40domain.com/calendar/' + // - regexes, such as: + // new RegExp('^/caldav.php/user/calendar[0-9]/$', 'i') + // specifies the list of collections with disabled alarm functionality. + // If false (default) or undefined then alarm functionality is enabled + // for all collections. + // Examples: + // ignoreAlarms: true + // ignoreAlarms: ['/caldav.php/user/calendar/', + // '/caldav.php/user/calendar2/'] + // ignoreAlarms: [new RegExp('^/.*/user/calendar[0-9]/$', 'i')] + // This property is supported in: + // globalAccountSettings + // globalNetworkCheckSettings + // globalNetworkAccountSettings (available in auth module only, with + // different syntax for regexes) + // - backgroundCalendars + // This options defines a list of background calendars. If there is + // at least one event defined for the given day in a background calendar, + // the background color for that day will be pink/light-red. + // Supported values: + // - array of URL encoded + // - collections, such as: + // '/caldav.php/user/calendar/' + // '/caldav.php/user%40domain.com/calendar/' + // - regexes, such as: + // new RegExp('^/caldav.php/user/calendar[0-9]/$', 'i') + // specifies the list of background calendar collections. + // Examples: + // backgroundCalendars: ['/caldav.php/user/calendar/', + // '/caldav.php/user/calendar2/'] + // backgroundCalendars: [new RegExp('^/.*/user/calendar[0-9]/$', 'i')] + // This property is supported in: + // globalAccountSettings + // globalNetworkCheckSettings + // globalNetworkAccountSettings (available in auth module only, with + // different syntax for regexes) + // Special options not present in configuration examples: + // NOTE: use ONLY if you know what are you doing! + // - crossDomain + // This option sets the crossDomain for jQuery .ajax call. If null (default) + // then the value is autodetected /and the result is shown in the console/ + // - withCredentials + // This option sets the withCredentials for jQuery .ajax call. The default + // value is false and there is NO REASON to change it to true! + // NOTE: if true, Access-Control-Allow-Origin "*" (CORS header) not works! + + + // globalAccountSettings + // Use this option if you want to use automatic login (without a login + // screen) with hardcoded username/password in config.js. Otherwise use + // globalNetworkCheckSettings or globalNetworkAccountSettings (see below). + // NOTE: if this option is used the value must be an array of object(s). + // List of properties used in globalAccountSettings variable: + // - href + // Set this option to the full "principal URL". + // NOTE: the last character in the value must be '/' + // - userAuth + // - userName + // Set the username you want to login. + // - userPassword + // Set the password for the given username. + // NOTE: for description of other properties see comments at the beginning + // of this file. + // NOTE: for minimal/fast setup you need to set only the href and userAuth + // options. It is safe/recommended to keep the remaining options unchanged! + // Example: + //var globalAccountSettings=[ + // { + // href: 'https://server1.com:8443/caldav.php/USERNAME1/', + // userAuth: + // { + // userName: 'USERNAME1', + // userPassword: 'PASSWORD1' + // }, + // timeOut: 90000, + // lockTimeOut: 10000, + // checkContentType: true, + // settingsAccount: true, + // delegation: true, + // hrefLabel: null, + // forceReadOnly: null, + // ignoreAlarms: false, + // backgroundCalendars: [] + // }, + // { + // href: 'https://server2.com:8443/caldav.php/USERNAME2/', + // ... + // ... + // } + //]; + + + // globalNetworkCheckSettings + // Use this option if you want to use standard login screen without + // hardcoded username/password in config.js (used by globalAccountSettings). + // NOTE: if this option is used the value must be an object. + // List of properties used in globalAccountSettings variable: + // - href + // Set this option to the "principal URL" WITHOUT the "USERNAME/" + // part (this options uses the username from the login screen). + // NOTE: the last character in the value must be '/' + // NOTE: for description of other properties see comments at the beginning + // of this file. + // NOTE: for minimal/fast setup you need to set only the href option. It is + // safe/recommended to keep the remaining options unchanged! + // Example href values: + // OS X server http example (see misc/readme_osx.txt for server setup): + // href: 'http://osx.server.com:8008/principals/users/' + // OS X server https example (see misc/readme_osx.txt for server setup): + // href: 'https://osx.server.com:8443/principals/users/' + // Cyrus server https example: + // href: 'https://cyrus.server.com/dav/principals/user/' + // Example: + // Davical example which automatically detects the protocol, server name, + // port, ... (client installed into Davical "htdocs" subdirectory; + // works "out of the box", no additional setup required): + var globalNetworkCheckSettings={ + href: location.protocol+'//'+location.hostname+ + (location.port ? ':'+location.port: '')+ + '/server/caldav.php/', + timeOut: 90000, + lockTimeOut: 10000, + checkContentType: true, + settingsAccount: true, + delegation: true, + additionalResources: [], + hrefLabel: null, + forceReadOnly: null, + ignoreAlarms: false, + backgroundCalendars: [] + } + + + // globalNetworkAccountSettings + // Try this option ONLY if you have working setup using + // globalNetworkCheckSettings and want to fix the authentication popup + // window problem (if invalid username/password is entered)! + // If you use this option then your browser sends username/password to the PHP + // "auth" module ("auth" directory) instead of the DAV server itself. + // The "auth" module then validates your username/password against your server, + // and if the authentication is successful, then it sends back a configuration + // XML (requires additional configuration). The resulting XML is handled + // IDENTICALLY as the globalAccountSettings configuration option. + // NOTE: for the "auth" module configuration see readme.txt! + // NOTE: this option invokes a login screen and disallows access until + // the client gets correct XML configuration file from the server! + // List of properties used in globalNetworkAccountSettings variable: + // - href + // Set this option to the "full URL" of the "auth" directory + // NOTE: the last character in the value must be '/' + // NOTE: for description of other properties see comments at the beginning + // of this file. + // Example href values: + // href: 'https://server.com/client/auth/' + // Example: + // Use this configuration if the "auth" module is located in the client + // installation subdirectory (default): + //var globalNetworkAccountSettings={ + // href: location.protocol+'//'+location.hostname+ + // (location.port ? ':'+location.port : '')+ + // location.pathname.replace(RegExp('index\.html$'),'')+ + // 'auth/', + // timeOut: 30000 + //}; + + + // globalUseJqueryAuth + // Use jQuery .ajax() auth or custom header for HTTP basic auth (default). + // Set this option to true if your server uses digest auth (note: you may + // experience auth popups on some browsers). + // If undefined (or empty), custom header for HTTP basic auth is used. + // Example: + //var globalUseJqueryAuth=false; + + + // globalBackgroundSync + // Enable background synchronization even if the browser window/tab has no + // focus. + // If false, synchronization is performed only if the browser window/tab + // is focused. If undefined or not false, then background sync is enabled. + // Example: + var globalBackgroundSync=true; + + + // globalSyncResourcesInterval + // This option defines how often (in miliseconds) are resources/collections + // asynchronously synchronized. + // Example: + var globalSyncResourcesInterval=120000; + + + // globalEnableRefresh + // This option enables or disables the manual synchronization button in + // the interface. If this option is enabled then users can perform server + // synchronization manually. Enabling this option may cause high server + // load (even DDOS) if users will try to manually synchronize data too + // often (instead of waiting for the automatic synchronization). + // If undefined or false, the synchronization button is disabled. + // NOTE: enable this option only if you really know what are you doing! + // Example: + var globalEnableRefresh=false; + + + // globalEnableKbNavigation + // Enable basic keyboard navigation using arrow keys? + // If undefined or not false, keyboard navigation is enabled. + // Example: + var globalEnableKbNavigation=true; + + + // globalSettingsType + // Where to store user settings such as: active view, enabled/selected + // collections, ... (the client store them into DAV property on the server). + // NOTE: not all servers support storing DAV properties (some servers support + // only subset /or none/ of these URLs). + // Supported values: + // - 'principal-URL', '', null or undefined (default) => settings are stored + // to principal-URL (recommended for most servers) + // - 'addressbook-home-set' => settings are are stored to addressbook-home-set + // - 'calendar-home-set' => settings are stored to calendar-home-set + // Example: + //var globalSettingsType=''; + + + // globalCrossServerSettingsURL + // Settings such as enabled/selected collections are stored on the server + // (see the previous option) in form of full URL + // (e.g.: https://user@server:port/principal/collection/), but even if this + // approach is "correct" (you can use the same principal URL with multiple + // different logins, ...) it causes a problem if your server is accessible + // from multiple URLs (e.g. http://server/ and https://server/). If you want + // to store only the "principal/collection/" part of the URL (instead of the + // full URL) then enable this option. + // Example: + //var globalCrossServerSettingsURL=false; + + + // globalInterfaceLanguage + // Default interface language (note: this option is case sensitive): + // cs_CZ (Čeština [Czech]) + // da_DK (Dansk [Danish]; thanks Niels Bo Andersen) + // de_DE (Deutsch [German]; thanks Marten Gajda and Thomas Scheel) + // en_US (English [English/US]) + // es_ES (Español [Spanish]; thanks Damián Vila) + // fr_FR (Français [French]; thanks John Fischer) + // it_IT (Italiano [Italian]; thanks Luca Ferrario) + // ja_JP (日本語 [Japan]; thanks Muimu Nakayama) + // hu_HU (Magyar [Hungarian]) + // nl_NL (Nederlands [Dutch]; thanks Johan Vromans) + // sk_SK (Slovenčina [Slovak]) + // tr_TR (Türkçe [Turkish]; thanks Selcuk Pultar) + // ru_RU (Русский [Russian]; thanks Александр Симонов) + // uk_UA (Українська [Ukrainian]; thanks Serge Yakimchuck) + // zh_CN (中国 [Chinese]; thanks Fandy) + // Example: + var globalInterfaceLanguage='en_US'; + + + // globalInterfaceCustomLanguages + // If defined and not empty then only languages listed here are shown + // at the login screen, otherwise (default) all languages are shown + // NOTE: values in the array must refer to an existing localization + // (see the option above) + // Example: + // globalInterfaceCustomLanguages=['en_US', 'sk_SK']; + var globalInterfaceCustomLanguages=[]; + + + // globalSortAlphabet + // Use JavaScript localeCompare() or custom alphabet for data sorting. + // Custom alphabet is used by default because JavaScript localeCompare() + // not supports collation and often returns "wrong" result. If set to null + // then localeCompare() is used. + // Example: + // var globalSortAlphabet=null; + var globalSortAlphabet=' 0123456789'+ + 'AÀÁÂÄÆÃÅĀBCÇĆČDĎEÈÉÊËĒĖĘĚFGĞHIÌÍÎİÏĪĮJKLŁĹĽMNŃÑŇOÒÓÔÖŐŒØÕŌ'+ + 'PQRŔŘSŚŠȘșŞşẞTŤȚțŢţUÙÚÛÜŰŮŪVWXYÝŸZŹŻŽ'+ + 'aàáâäæãåābcçćčdďeèéêëēėęěfgğhiìíîïīįıjklłĺľmnńñňoòóôöőœøõō'+ + 'pqrŕřsśšßtťuùúûüűůūvwxyýÿzźżžАБВГҐДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЮЯ'+ + 'Ьабвгґдеєжзиіїйклмнопрстуфхцчшщюяь'; + + + // globalSearchTransformAlphabet + // To support search without diacritics (e.g. search for 'd' will find: 'Ď', 'ď') + // it is required to define something like "character equivalence". + // key = regex text, value = search character + // Example: + var globalSearchTransformAlphabet={ + '[ÀàÁáÂâÄ䯿ÃãÅåĀā]': 'a', '[ÇçĆćČč]': 'c', '[Ďď]': 'd', + '[ÈèÉéÊêËëĒēĖėĘęĚě]': 'e', '[Ğğ]': 'g', '[ÌìÍíÎîİıÏïĪīĮį]': 'i', + '[ŁłĹ弾]': 'l', '[ŃńÑñŇň]': 'n', '[ÒòÓóÔôÖöŐőŒœØøÕõŌō]': 'o', + '[ŔŕŘř]': 'r', '[ŚśŠšȘșŞşẞß]': 's', '[ŤťȚțŢţ]': 't', + '[ÙùÚúÛûÜüŰűŮůŪū]': 'u', '[ÝýŸÿ]': 'y', '[ŹźŻżŽž]': 'z' + }; + + // globalResourceAlphabetSorting + // If more than one resource (server account) is configured, sort the + // resources alphabetically? + // Example: + var globalResourceAlphabetSorting=true; + + + // globalNewVersionNotifyUsers + // Update notification will be shown only to users with login names defined + // in this array. + // If undefined (or empty), update notifications will be shown to all users. + // Example: + // globalNewVersionNotifyUsers=['admin', 'peter']; + var globalNewVersionNotifyUsers=[]; + + + // globalDatepickerFormat + // Set the datepicker format (see + // http://docs.jquery.com/UI/Datepicker/formatDate for valid values). + // NOTE: date format is predefined for each localization - use this option + // ONLY if you want to use custom date format (instead of the localization + // predefined one). + // Example: + //var globalDatepickerFormat='dd.mm.yy'; + + + // globalDatepickerFirstDayOfWeek + // Set the datepicker first day of the week: Sunday is 0, Monday is 1, etc. + // Example: + var globalDatepickerFirstDayOfWeek=1; + + + // globalHideInfoMessageAfter + // How long are information messages (such as: success, error) displayed + // (in miliseconds). + // Example: + var globalHideInfoMessageAfter=1800; + + + // globalEditorFadeAnimation + // Set the editor fade in/out animation duration when editing or saving data + // (in miliseconds). + // Example: + var globalEditorFadeAnimation=666; + + + + + // ******* CalDAV (CalDavZAP) related settings ******* // + + // globalEventStartPastLimit, globalEventStartFutureLimit, globalTodoPastLimit + // Number of months pre-loaded from past/future in advance for calendars + // and todo lists (if null then date range synchronization is disabled). + // NOTE: interval synchronization is used only if your server supports + // sync-collection REPORT (e.g. DAViCal). + // NOTE: if you experience problems with data loading and your server has + // no time-range filtering support set these variables to null. + // Example: + var globalEventStartPastLimit=3; + var globalEventStartFutureLimit=3; + var globalTodoPastLimit=1; + + + // globalLoadedCalendarCollections + // This option sets the list of calendar collections (down)loaded after login. + // If empty then all calendar collections for the currently logged user are + // loaded. + // NOTE: settings stored on the server (see settingsAccount) overwrite this + // option. + // Example: + var globalLoadedCalendarCollections=[]; + + + // globalLoadedTodoCollections + // This option sets the list of todo collections (down)loaded after login. + // If empty then all todo collections for the currently logged user are loaded. + // NOTE: settings stored on the server (see settingsAccount) overwrite this + // option. + // Example: + var globalLoadedTodoCollections=[]; + + + // globalActiveCalendarCollections + // This options sets the list of calendar collections checked (enabled + // checkbox => data visible in the interface) by default after login. + // If empty then all loaded calendar collections for the currently logged + // user are checked. + // NOTE: only already (down)loaded collections can be checked (see + // the globalLoadedCalendarCollections option). + // NOTE: settings stored on the server (see settingsAccount) overwrite this + // option. + // Example: + var globalActiveCalendarCollections=[]; + + + // globalActiveTodoCollections + // This options sets the list of todo collections checked (enabled + // checkbox => data visible in the interface) by default after login. + // If empty then all loaded todo collections for the currently logged + // user are checked. + // NOTE: only already (down)loaded collections can be checked (see + // the globalLoadedTodoCollections option). + // NOTE: settings stored on the server (see settingsAccount) overwrite this + // option. + // Example: + var globalActiveTodoCollections=[]; + + + // globalCalendarSelected + // This option sets which calendar collection will be pre-selected + // (if you create a new event) by default after login. + // The value must be URL encoded path to a calendar collection, + // for example: 'USER/calendar/' + // If empty or undefined then the first available calendar collection + // is selected automatically. + // NOTE: only already (down)loaded collections can be pre-selected (see + // the globalLoadedCalendarCollections option). + // NOTE: settings stored on the server (see settingsAccount) overwrite this + // option. + // Example: + //var globalCalendarSelected=''; + + + // globalTodoCalendarSelected + // This option sets which todo collection will be pre-selected + // (if you create a new todo) by default after login. + // The value must be URL encoded path to a todo collection, + // for example: 'USER/todo_calendar/' + // If empty or undefined then the first available todo collection + // is selected automatically. + // NOTE: only already (down)loaded collections can be pre-selected (see + // the globalLoadedTodoCollections option). + // NOTE: settings stored on the server (see settingsAccount) overwrite this + // option. + // Example: + //var globalTodoCalendarSelected=''; + + + // globalActiveView + // This options sets the default fullcalendar view option (the default calendar + // view after the first login). + // Supported values: + // - 'month' + // - 'multiWeek' + // - 'agendaWeek' + // - 'agendaDay' + // NOTE: we use custom and enhanced version of fullcalendar! + // Example: + var globalActiveView='multiWeek'; + + + // globalOpenFormMode + // Open new event form on 'single' or 'double' click. + // If undefined or not 'double', then 'single' is used. + // Example: + var globalOpenFormMode='double'; + + + // globalTodoListFilterSelected + // This options sets the list of filters in todo list that are selected + // after login. + // Supported options: + // - 'filterAction' + // - 'filterProgress' (available only if globalAppleRemindersMode is disabled) + // - 'filterCompleted' + // - 'filterCanceled' (available only if globalAppleRemindersMode is disabled) + // NOTE: settings stored on the server (see settingsAccount) overwrite this + // option. + // Example: + var globalTodoListFilterSelected=['filterAction', 'filterProgress']; + + + // globalCalendarStartOfBusiness, globalCalendarEndOfBusiness + // These options set the start and end of business hours with 0.5 hour + // precision. Non-business hours are faded out in the calendar interface. + // If both variables are set to the same value then no fade out occurs. + // Example: + var globalCalendarStartOfBusiness=8; + var globalCalendarEndOfBusiness=17; + + + // globalDefaultEventDuration + // This option sets the default duration (in minutes) for newly created events. + // If undefined or null, globalCalendarEndOfBusiness value will be taken as + // a default end time instead. + // Example: + var globalDefaultEventDuration=120; + + + // globalAMPMFormat + // This option enables to use 12 hours format (AM/PM) for displaying time. + // NOTE: time format is predefined for each localization - use this option + // ONLY if you want to use custom time format (instead of the localization + // predefined one). + // Example: + //var globalAMPMFormat=false; + + + // globalTimeFormatBasic + // This option defines the time format information for events in month and + // multiweek views. If undefined or null then default value is used. + // If defined as empty string no time information is shown in these views. + // See http://arshaw.com/fullcalendar/docs/utilities/formatDate/ for exact + // formating rules. + // Example: + //var globalTimeFormatBasic=''; + + + // globalTimeFormatAgenda + // This option defines the time format information for events in day and + // week views. If undefined or null then default value is used. + // If defined as empty string no time information is shown in these views. + // See http://arshaw.com/fullcalendar/docs/utilities/formatDate/ for exact + // formating rules. + // Example: + //var globalTimeFormatAgenda=''; + + + // globalDisplayHiddenEvents + // This option defined whether events from unechecked calendars are displayed + // with certain transparency (true) or completely hidden (false). + // Example: + var globalDisplayHiddenEvents=false; + + + // globalTimeZoneSupport + // This option enables timezone support in the client. + // NOTE: timezone cannot be specified for all-day events because these don't + // have start and end time. + // If this option is disabled then local time is used. + // Example: + var globalTimeZoneSupport=true; + + + // globalTimeZone + // If timezone support is enabled, this option sets the default timezone. + // See timezones.js or use the following command to get the list of supported + // timezones (defined in timezones.js): + // grep "'[^']\+': {" timezones.js | sed -Ee "s#(\s*'|':\s*\{)##g" + // Example: + var globalTimeZone='Europe/Moscow'; + + + // globalTimeZonesEnabled + // This option sets the list of available timezones in the interface (for the + // list of supported timezones see the comment for the previous configuration + // option). + // NOTE: if there is at least one event/todo with a certain timezone defined, + // that timezone is enabled (even if it is not present in this list). + // Example: + // var globalTimeZonesEnabled=['America/New_York', 'Europe/Berlin']; + var globalTimeZonesEnabled=[]; + + + // globalRewriteTimezoneComponent + // This options sets whether the client will enhance/replace (if you edit an + // event or todo) the timezone information using the official IANA timezone + // database information (recommended). + // Example: + var globalRewriteTimezoneComponent=true; + + + // globalRemoveUnknownTimezone + // This options sets whether the client will remove all non-standard timezone + // names from events and todos (if you edit an event or todo) + // (e.g.: /freeassociation.sourceforge.net/Tzfile/Europe/Vienna) + // Example: + var globalRemoveUnknownTimezone=false; + + + // globalShowHiddenAlarms + // This option sets whether the client will show alarm notifications for + // unchecked calendars. If this option is enabled and you uncheck a calendar + // in the calendar list, alarm notifications will be temporary disabled for + // unchecked calendar(s). + // Example: + var globalShowHiddenAlarms=false; + + + // globalIgnoreCompletedOrCancelledAlarms + // This options sets whether the client will show alarm notifications for + // already completed or cancelled todos. If enabled then alarm notification + // for completed and cancelled todos are disabled. + // Example: + var globalIgnoreCompletedOrCancelledAlarms=true; + + + // globalMozillaSupport + // Mozilla automatically treats custom repeating event calculations as if + // the start day of the week is Monday, despite what day is chosen in settings. + // Set this variable to true to use the same approach, ensuring compatible + // event rendering in special cases. + // Example: + var globalMozillaSupport=false; + + + // globalCalendarColorPropertyXmlns + // This options sets the namespace used for storing the "calendar-color" + // property by the client. + // If true, undefined (or empty) "http://apple.com/ns/ical/" is used (Apple + // compatible). If false, then the calendar color modification functionality + // is completely disabled. + // Example: + //var globalCalendarColorPropertyXmlns=true; + + + // globalWeekendDays + // This option sets the list of days considered as weekend days (these + // are faded out in the calendar interface). Non-weekend days are automatically + // considered as business days. + // Sunday is 0, Monday is 1, etc. + // Example: + var globalWeekendDays=[0, 6]; + + + // globalAppleRemindersMode + // If this option is enabled then then client will use the same approach + // for handling repeating reminders (todos) as Apple. It is STRONGLY + // recommended to enabled this option if you use any Apple clients for + // reminders (todos). + // Supported options: + // - 'iOS6' + // - 'iOS7' + // - true (support of the latest iOS version - 'iOS8') + // - false + // If this option is enabled: + // - RFC todo support is SEVERELY limited and the client mimics the behaviour + // of Apple Reminders.app (to ensure maximum compatibility) + // - when a single instance of repeating todo is edited, it becomes an + // autonomous non-repeating todo with NO relation to the original repeating + // todo + // - capabilities of repeating todos are limited - only the first instance + // is ever visible in the interface + // - support for todo DTSTART attribute is disabled + // - support for todo STATUS attribute other than COMPLETED and NEEDS-ACTION + // is disabled + // - [iOS6 only] support for LOCATION and URL attributes is disabled + // Example: + var globalAppleRemindersMode=true; + + + // globalSubscribedCalendars + // This option specifies a list of remote URLs to ics files (e.g.: used + // for distributing holidays information). Subscribed calendars are + // ALWAYS read-only. Remote servers where ics files are hosted MUST + // return proper CORS headers (see readme.txt) otherwise this functionality + // will not work! + // NOTE: subsribed calendars are NOT "shared" calendars. For "shared" + // calendars see the delegation option in globalAccountSettings, + // globalNetworkCheckSettings and globalNetworkAccountSettings. + // List of properties used in globalSubscribedCalendars variable: + // - hrefLabel + // This options defines the header string above the subcsribed calendars. + // - calendars + // This option specifies an array of remote calendar objects with the + // following properties: + // - href + // Set this option to the "full URL" of the remote calendar + // - userAuth + // NOTE: keep empty if remote authentication is not required! + // - userName + // Set the username you want to login. + // - userPassword + // Set the password for the given username. + // - typeList + // Set the list of objects you want to process from remote calendars; + // two options are available: + // - 'vevent' (show remote events in the interface) + // - 'vtodo' (show remote todos in the interface) + // - ignoreAlarm + // Set this option to true if you want to disable alarm notifications + // from the remote calendar. + // - displayName + // Set this option to the name of the calendar you want to see + // in the interface. + // - color + // Set the calendar color you want to see in the interface. + // Example: + //var globalSubscribedCalendars={ + // hrefLabel: 'Subscribed', + // calendars: [ + // { + // href: 'http://something.com/calendar.ics', + // userAuth: { + // userName: '', + // userPassword: '' + // }, + // typeList: ['vevent', 'vtodo'], + // ignoreAlarm: true, + // displayName: 'Remote Calendar 1', + // color: '#ff0000' + // }, + // { + // href: 'http://calendar.com/calendar2.ics', + // ... + // ... + // } + // ] + //}; + + + + // ******* CardDAV (CardDavMATE) related settings ******* // + + + // globalLoadedAddressbookCollections + // This option sets the list of addressbook collections (down)loaded after + // login. If empty then all addressbook collections for the currently logged + // user are loaded. + // NOTE: settings stored on the server (see settingsAccount) overwrite this + // option. + // Example: + var globalLoadedAddressbookCollections=[]; + + + // globalActiveAddressbookCollections + // This options sets the list of addressbook collections checked (enabled + // checkbox => data visible in the interface) by default after login. + // If empty then all loaded addressbook collections for the currently logged + // user are checked. + // NOTE: only already (down)loaded collections can be checked (see + // the globalLoadedAddressbookCollections option). + // NOTE: settings stored on the server (see settingsAccount) overwrite this + // option. + // Example: + var globalActiveAddressbookCollections=[]; + + + // globalAddressbookSelected + // This option sets which addressbook collection will be pre-selected + // (if you create a new contact) by default after login. + // The value must be URL encoded path to an addressbook collection, + // for example: 'USER/addressbook/' + // If empty or undefined then the first available addressbook collection + // is selected automatically. + // NOTE: only already (down)loaded collections can be pre-selected (see + // the globalLoadedAddressbookCollections option). + // NOTE: settings stored on the server (see settingsAccount) overwrite this + // option. + // Example: + //var globalAddressbookSelected=''; + + + // globalCompatibility + // This options is reserved for various compatibility settings. + // NOTE: if this option is used the value must be an object. + // Currently there is only one supported option: + // - anniversaryOutputFormat + // Different clients use different (and incompatible) approach + // to store anniversary date in vCards. Apple stores this attribute as: + // itemX.X-ABDATE;TYPE=pref:2000-01-01\r\n + // itemX.X-ABLabel:_$!!$_\r\n' + // other clients store this attribute as: + // X-ANNIVERSARY:2000-01-01\r\n + // Choose 'apple' or 'other' (lower case) for your 3rd party client + // compatibility. You can chose both: ['apple', 'other'], but it may + // cause many problems in the future, for example: duplicate anniversary + // dates, invalid/old anniversary date in your clients, ...) + // Examples: + // anniversaryOutputFormat: ['other'] + // anniversaryOutputFormat: ['apple', 'other'] + // Example: + var globalCompatibility={anniversaryOutputFormat: ['apple']}; + + + // globalUriHandler{Tel,Email,Url,Profile} + // These options set the URI handlers for TEL, EMAIL, URL and X-SOCIALPROFILE + // vCard attributes. Set them to null (or comment out) to disable. + // NOTE: for globalUriHandlerTel is recommended to use 'tel:', 'callto:' + // or 'skype:'. The globalUriHandlerUrl value is used only if no URI handler + // is defined in the URL. + // NOTE: it is safe to keep these values unchanged! + // Example: + var globalUriHandlerTel='tel:'; + var globalUriHandlerEmail='mailto:'; + var globalUriHandlerUrl='http://'; + var globalUriHandlerProfile={ + 'twitter': 'http://twitter.com/%u', + 'facebook': 'http://www.facebook.com/%u', + 'flickr': 'http://www.flickr.com/photos/%u', + 'linkedin': 'http://www.linkedin.com/in/%u', + 'myspace': 'http://www.myspace.com/%u', + 'sinaweibo': 'http://weibo.com/n/%u' + }; + + + // globalDefaultAddressCountry + // This option sets the default country for new address fields. + // See common.js or use the following command to get the list of + // all supported country codes (defined in common.js): + // grep -E "'[a-z]{2}':\s+\[" common.js | sed -Ee 's#^\s+|\s+\[\s+# #g' + // Example: + var globalDefaultAddressCountry='us'; + + + // globalAddressCountryEquivalence + // This option sets the processing of the country field specified + // in the vCard ADR attribute. + // By default the address field in vCard looks like: + // ADR;TYPE=WORK:;;1 Waters Edge;Baytown;LA;30314;USA\r\n + // what cause a problem, because the country field is a plain + // text and can contain any value, e.g.: + // USA + // United States of America + // US + // and because the address format can be completely different for + // each country, e.g.: + // China address example: + // [China] + // [Province] [City] + // [Street] + // [Postal] + // Japan address example: + // [Postal] + // [Prefecture] [County/City] + // [Further Divisions] + // [Japan] + // the client needs to correctly detect the country from the ADR + // attribute. Apple solved this problem by using: + // item1.ADR;TYPE=WORK:;;1 Waters Edge;Baytown;LA;30314;USA\r\n + // item1.X-ABADR:us\r\n + // where the second "related" attribute defines the country code + // for the ADR attribute. This client uses the same approach, but + // if the vCard is created by 3rd party clients and the X-ABADR + // is missing, it is possible to define additional "rules" for + // country matching. These rules are specied by the country code + // (for full list of country codes see the comment for pre previous + // option) and a case insensitive regular expression (which matches + // the plain text value in the country field). + // NOTE: if X-ABADR is not present and the country not matches any + // country defined in this option, then globalDefaultAddressCountry + // is used by default. + // Example: + var globalAddressCountryEquivalence=[ + {country: 'de', regex: '^\\W*Deutschland\\W*$'}, + {country: 'sk', regex: '^\\W*Slovensko\\W*$'} + ]; + + + // globalAddressCountryFavorites + // This option defines the list of countries which are shown at the top + // of the country list in the interface (for full list of country codes + // see the comment for pre globalDefaultAddressCountry option). + // Example: + // var globalAddressCountryFavorites=['de','sk']; + var globalAddressCountryFavorites=[]; + + + // globalAddrColorPropertyXmlns + // This options sets the namespace used for storing the "addressbook-color" + // property by the client. + // If true, undefined (or empty) "http://inf-it.com/ns/ab/" is used. + // If false, then the addressbook color modification functionality + // is completely disabled, and addressbook colors in the interface are + // generated automatically. + // Example: + //var globalAddrColorPropertyXmlns=true; + + + // globalContactStoreFN + // This option specifies how the FN (formatted name) is stored into vCard. + // The value for this options must be an array of strings, that can contain + // the following variables: + // prefix + // last + // middle + // first + // suffix + // The string element of the array can contain any other characters (usually + // space or colon). Elements are added into FN only if the there is + // a variable match, for example if: + // last='Lastname' + // first='Firstname' + // middle='' (empty) + // and this option is set to: + // ['last', ' middle', ' first'] (space in the second and third element) + // the resulting value for FN will be: 'Lastname Firstname' and not + // 'Lastname Firstname' (two spaces), because the middle name is empty (so + // the second element is completely ignored /not added into FN/). + // NOTE: this attribute is NOT used by this client, and it is also NOT + // possible to directly edit it in the interface. + // Examples: + // var globalContactStoreFN=[' last', ' middle', ' first']; + // var globalContactStoreFN=['last', ', middle', ' ,first']; + var globalContactStoreFN=['prefix',' last',' middle',' first',' suffix']; + + + // globalGroupContactsByCompanies + // This options specifies how contacts are grouped in the interface. + // By default the interface looks like (very simple example): + // A + // Adams Adam + // Anderson Peter + // B + // Brown John + // Baker Josh + // if grouped by company/deparment the result is: + // Company A [Department X] + // Adams Adam + // Brown John + // Company B [Department Y] + // Anderson Peter + // Baker Josh + // If this option is set to true contacts are grouped by company/department, + // otherwise (default) contacts are grouped by letters of the alphabet. + // If undefined or not true, grouping by alphabet letters is used. + // NOTE: see also the globalCollectionDisplay option below. + var globalGroupContactsByCompanies=false; + + + // globalCollectionDisplay + // This options specifies how data columns in the contact list are displayed. + // + // NOTE: columns are displayed ONLY if there is enought horizontal place in + // the browser window (e.g. if you define 5 columns here, but your browser + // window is not wide enough, you will see only first 3 columns instead of 5). + // + // NOTE: see the globalContactDataMinVisiblePercentage option which defines the + // width for columns. + // + // The value must be an array of columns, where each column is represented by + // an object with the following properties: + // label => the value of this option is a string used as column header + // You can use the following localized variables in the label string: + // - {Name} + // - {FirstName} + // - {LastName} + // - {MiddleName} + // - {NickName} + // - {Prefix} + // - {Suffix} + // - {BirthDay} + // - {PhoneticLastName} + // - {PhoneticFirstName} + // - {JobTitle} + // - {Company} + // - {Department} + // - {Categories} + // - {NoteText} + // - {Address}, {AddressWork}, {AddressHome}, {AddressOther} + // - {Phone}, {PhoneWork}, {PhoneHome}, {PhoneCell}, {PhoneMain}, + // {PhonePager}, {PhoneFax}, {PhoneIphone}, {PhoneOther} + // - {Email}, {EmailWork}, {EmailHome}, {EmailMobileme}, {EmailOther} + // - {URL}, {URLWork}, {URLHome}, {URLHomepage}, {URLOther} + // - {Dates}, {DatesAnniversary}, {DatesOther} + // - {Related}, {RelatedManager}, {RelatedAssistant}, {RelatedFather}, + // {RelatedMother}, {RelatedParent}, {RelatedBrother}, {RelatedSister}, + // {RelatedChild}, {RelatedFriend}, {RelatedSpouse}, {RelatedPartner}, + // {RelatedOther} + // - {Profile}, {ProfileTwitter}, {ProfileFacebook}, {ProfileFlickr}, + // {ProfileLinkedin}, {ProfileMyspace}, {ProfileSinaweibo} + // - {IM}, {IMWork}, {IMHome}, {IMMobileme}, {IMOther}, {IMAim}, {IMIcq}, + // {IMIrc}, {IMJabber}, {IMMsn}, {IMYahoo}, {IMFacebook}, {IMGadugadu}, + // {IMGoogletalk}, {IMQq}, {IMSkype} + // value => the value of this option is an array of format strings, or + // an object with the following properties: + // - company (used for company contacts) + // - personal (used for user contacts) + // where the value of these properties is an array of format strings used + // for company or user contacts (you can have different values in the same + // column for personal and company contacts). + // You can use the following simple variables in the format string: + // - {FirstName} + // - {LastName} + // - {MiddleName} + // - {NickName} + // - {Prefix} + // - {Suffix} + // - {BirthDay} + // - {PhoneticLastName} + // - {PhoneticFirstName} + // - {JobTitle} + // - {Company} + // - {Department} + // - {Categories} + // - {NoteText} + // You can also use parametrized variables, where the parameter is enclosed + // in square bracket. Paramatrized variables are useful to extract data + // such as home phone {Phone[type=home]}, extract the second phone number + // {Phone[:1]} (zero based indexing) or extract the third home phone number + // {Phone[type=home][:2]} from the vCard. + // NOTE: if the parametrized variable matches multiple items, e.g.: + // {Phone[type=work]} (if the contact has multiple work phones) then the + // first one is used! + // + // The following parametrized variables are supported (note: you can use + // all of them also without parameters /the first one will be used/): + // - {Address[type=XXX]} or {Address[:NUM]} or {Address[type=XXX][:NUM]} + // where supported values for XXX are: + // - work + // - home + // - other + // - any other custom value + // - {Phone[type=XXX]} or {Phone[:NUM]} or {Phone[type=XXX][:NUM]} + // where supported values for XXX are: + // - work + // - home + // - cell + // - main + // - pager + // - fax + // - iphone + // - other + // - any other custom value + // - {Email[type=XXX]} or {Email[:NUM]} or {Email[type=XXX][:NUM]} + // where supported values for XXX are: + // - work + // - home + // - mobileme + // - other + // - any other custom value + // - {URL[type=XXX]} or {URL[:NUM]} or {URL[type=XXX][:NUM]} + // where supported values for XXX are: + // - work + // - home + // - homepage + // - other + // - any other custom value + // - {Dates[type=XXX]} or {Dates[:NUM]} or {Dates[type=XXX][:NUM]} + // where supported values for XXX are: + // - anniversary + // - other + // - any other custom value + // - {Related[type=XXX]} or {Related[:NUM]} or {Related[type=XXX][:NUM]} + // where supported values for XXX are: + // - manager + // - assistant + // - father + // - mother + // - parent + // - brother + // - sister + // - child + // - friend + // - spouse + // - partner + // - other + // - any other custom value + // - {Profile[type=XXX]} or {Profile[:NUM]} or {Profile[type=XXX][:NUM]} + // where supported values for XXX are: + // - twitter + // - facebook + // - flickr + // - linkedin + // - myspace + // - sinaweibo + // - any other custom value + // - {IM[type=XXX]} or {IM[service-type=YYY]} or {IM[:NUM]} + // where supported values for XXX are: + // - work + // - home + // - mobileme + // - other + // - any other custom value + // and supported values for YYY are: + // - aim + // - icq + // - irc + // - jabber + // - msn + // - yahoo + // - facebook + // - gadugadu + // - googletalk + // - qq + // - skype + // - any other custom value + // + // NOTE: if you want to use the "any other custom value" option (for XXX + // or YYY above) you MUST double escape the following characters: + // =[]{}\ + // for example: + // - for profile type "=XXX=" use: '{Profile[type=\\=XXX\\=]}' + // - for profile type "\XXX\" use: '{Profile[type=\\\\XXX\\\\]}' + // + // NOTE: if you want to use curly brackets in the format string you must + // double escape it, e.g.: ['{Company}', '\\{{Department}\\}'] + // + // The format string (for the value option) is an array to allow full + // customization of the interface. For example if: + // value: ['{LastName} {MiddleName} {FirstName}'] + // and the person has no middle name, then the result in the column + // will be (without quotes): + // "Parker Peter" (note: two space characters) + // but if you use: + // value: ['{LastName}', ' {MiddleName}', ' {FirstName}'] + // then the result will be (without quotes): + // "Parker Peter" (note: only one space character) + // The reason is that only those elements of the array are appended + // into the result where non-empty substitution was performed (so the + // ' {MiddleName}' element in this case is ignored, because the person + // in the example above has no /more precisely has empty/ middle name). + // + // Examples: + // To specify two columns (named "Company" and "Department / LastName"), + // where the first will display the company name, and the second will display + // department for company contacts (with "Dep -" prefix), and lastname for + // personal contacts (with "Name -" prefix) use: + // var globalCollectionDisplay=[ + // { + // label: 'Company', + // value: ['{Company}'] + // }, + // { + // label: 'Department / LastName', + // value: { + // company: ['Dep - {Department}'], + // personal: ['Name - {LastName}'] + // } + // } + // ]; + // To specify 3 columns (named "Categories", "URL" and "IM"), where the first + // will display categories, second will display the third work URL, and third + // will display ICQ IM use: + // var globalCollectionDisplay=[ + // { + // label: 'Categories', + // value: ['{Categories}'] + // }, + // { + // label: 'URL', + // value: ['{URL[type=WORK][:2]}'] + // }, + // { + // label: 'IM', + // value: ['{IM[service-type=ICQ]}'] + // } + // ]; + // + // Recommended settings if globalGroupContactsByCompanies + // is set to false: + // var globalCollectionDisplay=[ + // { + // label: '{Name}', + // value: ['{LastName}', ' {MiddleName}', ' {FirstName}'] + // }, + // { + // label: '{Company} [{Department}]', + // value: ['{Company}', ' [{Department}]'] + // }, + // { + // label: '{JobTitle}', + // value: ['{JobTitle}'] + // }, + // { + // label: '{Email}', + // value: ['{Email[:0]}'] + // }, + // { + // label: '{Phone} 1', + // value: ['{Phone[:0]}'] + // }, + // { + // label: '{Phone} 2', + // value: ['{Phone[:1]}'] + // }, + // { + // label: '{NoteText}', + // value: ['{NoteText}'] + // } + // ]; + // + // Recommended settings if globalGroupContactsByCompanies + // is set to true: + // var globalCollectionDisplay=[ + // { + // label: '{Name}', + // value: { + // personal: ['{LastName}', ' {MiddleName}', ' {FirstName}'], + // company: ['{Company}', ' [{Department}]'] + // } + // }, + // { + // label: '{JobTitle}', + // value: ['{JobTitle}'] + // }, + // { + // label: '{Email}', + // value: ['{Email[:0]}'] + // }, + // { + // label: '{Phone} 1', + // value: ['{Phone[:0]}'] + // }, + // { + // label: '{Phone} 2', + // value: ['{Phone[:1]}'] + // }, + // { + // label: '{NoteText}', + // value: ['{NoteText}'] + // } + // ]; + // + // NOTE: if left undefined, the recommended settings will be used. + + + // globalCollectionSort + // This options sets the ordering of contacts in the interface. In general + // contacts are ordered alphabetically by an internal "sort string" which + // is created for each contact. Here you can specify how this internal string + // is created. The value is a simple array holding only the values from the + // value property defined in the globalCollectionDisplay option. + // If undefined, the definition from globalCollectionDisplay is used. + // Example: + // var globalCollectionSort = [ + // ['{LastName}'], + // ['{FirstName}'], + // ['{MiddleName}'], + // { + // company: ['{Categories}'], + // personal: ['{Company}'] + // } + // ]; + + + // globalContactDataMinVisiblePercentage + // This option defines how the width for columns are computed. If you set + // it to 1 then 100% of all data in the column will be visible (the column + // width is determined by the longest string in the column). If you set it + // to 0.95 then 95% of data will fit into the column width, and the remaining + // 5% will be truncated (" ..."). + // Example: + var globalContactDataMinVisiblePercentage=0.95; + + diff --git a/clusters/base/apps/infcloud/helmrelease-infcloud.yaml b/clusters/base/apps/infcloud/helmrelease-infcloud.yaml new file mode 100644 index 0000000..00573b1 --- /dev/null +++ b/clusters/base/apps/infcloud/helmrelease-infcloud.yaml @@ -0,0 +1,62 @@ +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: infcloud + namespace: pim +spec: + interval: 10m + chartRef: + kind: OCIRepository + name: infcloud + driftDetection: + mode: enabled + values: + controllers: + infcloud: + containers: + app: + image: + repository: waja/infcloud + tag: "0.13.1-16" + probes: + liveness: + enabled: true + readiness: + enabled: true + + service: + app: + controller: infcloud + ports: + http: + port: 80 + + ingress: + app: + className: traefik + # this ingress owns the cert-manager request for c2.aggtaa.com; + # davical's ingress adds a second host on the same domain (for the + # /server CalDAV path) and just references the secret below. + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod + hosts: + - host: c2.aggtaa.com + paths: + - path: / + pathType: Prefix + service: + identifier: app + port: http + tls: + - secretName: infcloud-tls + hosts: + - c2.aggtaa.com + + persistence: + config: + type: configMap + name: infcloud-config + globalMounts: + - path: /srv/infcloud/config/config.js + subPath: config.js + readOnly: true diff --git a/clusters/base/apps/infcloud/helmrepository.yaml b/clusters/base/apps/infcloud/helmrepository.yaml new file mode 100644 index 0000000..b5707ec --- /dev/null +++ b/clusters/base/apps/infcloud/helmrepository.yaml @@ -0,0 +1,10 @@ +apiVersion: source.toolkit.fluxcd.io/v1 +kind: OCIRepository +metadata: + name: infcloud + namespace: pim +spec: + interval: 10m + url: oci://ghcr.io/bjw-s-labs/helm/app-template + ref: + tag: "5.0.1" diff --git a/clusters/base/apps/infcloud/kustomization.yaml b/clusters/base/apps/infcloud/kustomization.yaml new file mode 100644 index 0000000..c93e7e8 --- /dev/null +++ b/clusters/base/apps/infcloud/kustomization.yaml @@ -0,0 +1,6 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - helmrepository.yaml + - configmap.yaml + - helmrelease-infcloud.yaml diff --git a/clusters/base/apps/markdown-vault-mcp/secret.enc.yaml b/clusters/base/apps/markdown-vault-mcp/secret.enc.yaml index 9a9fb75..4e0f84d 100644 --- a/clusters/base/apps/markdown-vault-mcp/secret.enc.yaml +++ b/clusters/base/apps/markdown-vault-mcp/secret.enc.yaml @@ -4,21 +4,21 @@ metadata: name: markdown-vault-mcp-secrets namespace: mcp stringData: - BEARER_TOKEN: ENC[AES256_GCM,data:eX3LFXJXls7MXxfdIp7sWnNy65jT91YkKp+m4OVS9+s+Bgtrig0xfv+pB9DWZ+NfiV3woDi+OvegEQNNNhYjPg==,iv:6bl41MVDCv372UXpSad6hagdFe9ZOWGQ++T4LCOOwgo=,tag:lCQI8vtEmtUKF6lw7aKyaA==,type:str] - OIDC_CLIENT_SECRET: ENC[AES256_GCM,data:hK36dHVl3NSUMNv37ASMRTUgzuUw4MbBVWeIaovdpOVZ6J16Q9BPe4ZspeLlMR1YW75TDVN3P9MnZPbzJKR5Vg==,iv:vRiLCm//80VWVL0mxRHhzzo81cbhv8DBtxITa/JBE+Y=,tag:tMkzHd2e6vybF83r23yEkw==,type:str] - OIDC_JWT_SIGNING_KEY: ENC[AES256_GCM,data:eJaVC/+QWW11C9Q7dFIVLFzcyDjOXZ2pMR9iXPOaNc+SEv3Dn7v9lQz5UsexvzW0XlY0dzNfHwvYw+gzbziUfw==,iv:fAVLZeLLoLmQsIoJ5jSoyCA7TWJMoKuIRrSIyR+xu9g=,tag:DsL+QiERH3hgYp1wy8SSmQ==,type:str] + BEARER_TOKEN: ENC[AES256_GCM,data:D9JoX2e6PcCXcf2GkssbQ3zdvIqmXzq2PoocsZHs1YFH1eKQ5kBANlUqEibNasyZfX2YKMrJ31J5s0obQFBHEw==,iv:IsvqxDWesBgaFV96Gea33/M/bw+sodNDaRJHkDCLuFQ=,tag:mf0uycj9d1MYaBSX9T9dxQ==,type:str] + OIDC_CLIENT_SECRET: ENC[AES256_GCM,data:xfo1Ik3xMlnqgVc7kTuADMnntE/cn+WDDKB2r1+a64p7Rwhes7FLhCj7UpjOC8LGX5Yr38uOrZSQ6+JH1huCOw==,iv:BXUeP1/VYsxtHHEuid1mpDlHoGFmanUuXC3FITPTiDU=,tag:D3gTSQDAS6pd6tOXOTrzKg==,type:str] + OIDC_JWT_SIGNING_KEY: ENC[AES256_GCM,data:NWPiFXeFGpl2GvZ9MiSavm4DUvjSiFT1K7ywtwiEEEyndfugozNLhnh2z7ZX1KpWAo6v99CSkA9rYERVyg0E7A==,iv:/DFgPsM7tfRAw3LI2Aqn8VjGNvUwmDoQ5Aqp6QRyk5Y=,tag:jZnxFXPacNKs3fe9n2WI2w==,type:str] sops: age: - recipient: age1kct5g7d7eus2hvdnmx99ewsrtz70lhlasxa25euqwdctqhwqqpxqz0n7gg enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB1T0dUZWFaTGdWM3NoY1Rl - Q0tDZkJJeVZzdDVmc3JoY05lUmFvYzBVMENRCkVkNnNJbnhrMW1CQWFneGh0MTdV - TXE2dzNxckg3bnlFKzhSZDN1RXU0cEkKLS0tIGZ1TkdIdzVSYU1zYnRKdVBSOXBK - eWFhY0lmRGlZQ1BtTGFoVitnbjl1K28K+fFjGTtlzd/mjuf2XszQzfV0UXk+z3hZ - CiNtjApQWFGJ+l/zaSGqteojoBzCKaLbmqBmzmU9A2vIuMtfiJPFeA== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBZUWZqbXNCWEtuNHY1ZkMr + WDY0V3FDdnJJRklvcUdRR1VYSTdDZ3RSZWxvCjYrNWZLL2NvUjNYUWVCaGNQSVJv + Mkh0VnBza0JZNnRnRjNmMmRGK1NjMHMKLS0tIFdxTHR4U1Z0ZGhqVnBRY21WUHAz + K0o4ck5nczZzSUlTNEJVRjhaa3BRZUkKQYGifS0r9z8wCKU70WGky5BjLkuYuDXh + iDoZekixekhIPzVdqL3s9DgqUi39jTR/pHWzCIn7M6NUXYbTn5H1dw== -----END AGE ENCRYPTED FILE----- - lastmodified: "2026-08-26T10:24:10Z" - mac: ENC[AES256_GCM,data:pyaz6atUcXBdLkrvxrPayJPg3YUR30nLWYpKT4l2iOhmHQZl3Q4tR8E9Bg2oCTDPM3ouPMRXJHzfyQV00zFREdJINSyNr932oBRyL+p6on5pLxCTHQ4XBZdH94skRG5kfX8q5GvCcO07p1rUZgnbiUuqQ3nB6fs6g0/F3cxMDtQ=,iv:Ex9Ej8g6EdK1B6036GAkynv0NcEftmKxZ1NrjsDPDos=,tag:KRYYSscfEhAwwnT3q7VvKw==,type:str] + lastmodified: "2026-08-26T10:24:18Z" + mac: ENC[AES256_GCM,data:roCqrT8ovfYWCycLrtIp46DOpP69WAdu6GwqfpUlt73JE/qnvukOLeXPAOUoncDRZ7kcywKxPGVP9O5PJ22YmupKVCY6D0BmZSJHD/NT2NyUVXJTjXTVYi6zVFenhWhVJM8RMBGXZ1n08G9B858EcMznm394m1vRgCB4omeH1pc=,iv:sZvGEuebILKWTAZ48GtC8lEiSeomYjyai6wS9MAFT5Q=,tag:JWLYq5y8u8yWpFYGDUvzWg==,type:str] encrypted_regex: ^(data|stringData)$ version: 3.11.0 diff --git a/clusters/base/apps/mosquitto/secret.enc.yaml b/clusters/base/apps/mosquitto/secret.enc.yaml index 005305a..aef6be5 100644 --- a/clusters/base/apps/mosquitto/secret.enc.yaml +++ b/clusters/base/apps/mosquitto/secret.enc.yaml @@ -4,19 +4,19 @@ metadata: name: mosquitto-passwd namespace: mqtt stringData: - passwd: ENC[AES256_GCM,data:2lqZB/a/ySJzzvI67Lc89hP5iRpBg7WwngV7FoUqekDZTXyNt7EDkFACZ1qYAtPLPkPuJfwSEN6hCD/cuYN15DgPC1uUXDtmAaX9DRF2fKT2aQz4VIOblrB1aWm/sc2QYyp8ER+7h1KbYjU1kkvbDTLFzo/HL6KLZuWze1AA4ezeEozMZgzaRGyb66BXy1HJ7QxYh/Haaz7Ox20G7WdKUFyG4Cg9xa1sKiuQh+OcqFuG2TAdxdROIFbBmoKHgg==,iv:L4/+gG/gHjSL6HNFG9IRUvK5wJDgN+u7ZkRBcb9CJAM=,tag:Xh7M96DjvZMl0aXaOYZUpA==,type:str] + passwd: ENC[AES256_GCM,data:q7q6bZ1FbrcFSXP9/2IQYmci/YP0bZ+0fSpEbpKUa4c5U8Xk462gjIA34X5q2pEgglOhzIV5Vb+k194ltXbbETYgq+stu0umJ/w9LHk7Ekctg27odrp/yACTQTGmGJKnQBr3SXORZqO12lFen3aMvvwcXOTxqkQstv0K2F2w/uLZcL/54y+ZANb7/sN/nx3O3UfbnyHWsxsNNA8Y+nHKJAfHEIz2CKIHsK3gOXCHwdXR/srEjiUTUHWgE+gDtA==,iv:aHdOC491M5Tn+ZsLJfxpeZSV1mc1yufjEI81hjlkCGw=,tag:9pXihkRhtfbztjiedVmx7A==,type:str] sops: age: - recipient: age1u236u5mzkzj72y4mfxx68gfqw0u0j6tdgkudnm5pdfpe7apq4u6s89jr2h enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSArdmU2akdrejhQL2ZUUG1z - QU8xQ0FJMmdIemJUYnVNZlJZWjM1bkhTS25NCkpjeUlMbnN2QjVWdnFqQmRGOE5C - QUtUeEtra1VZUGhOUkE0ZzkwZmkvMTgKLS0tIG0ySDFvUllDQ05OeHpselE3UnpO - Uk9QZEpvamxVMmw2cEdtbnFQQ0tqYncKbmp8SeIqcSaFty78n/8mm3KlEg4yOB6r - ocPHeL574AHT2IQb+pm/HF/CXxZbmT83rcqZkQOGtUCa025bKM8OyQ== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBvQzM1enMwUWQySzRYMnV0 + azZMZFozMGdWaVNaRUZYY2V6WXlGVzZTeGlFCi8wRG9pUVRRODVFbHY0YjViMlJu + Zy8rSDNRbWFwbUs5VjZ1amZjNWpLYVkKLS0tIGVtZkVnci9nQ25BYy95eDJLVXlv + TkVHVzVQc082RlVrZmR4UTY4NUVwMUEK4jIqPdk71W2CFjtOJBVd8pLAKo3anQwm + CoGr6pbDTy2EiDAgDGUU7Avc9FohyBiJWtykCO2z8jolu+0xMugj+g== -----END AGE ENCRYPTED FILE----- - lastmodified: "2026-08-26T10:24:11Z" - mac: ENC[AES256_GCM,data:PeL+HIwiDftjvPebs9W/nratKesrqv36VPp5h1fJN/if3odrpDeMhYfa+rQ7agP5cBWcNnhZIqiditmkB650sPN51tkUcrPzvaMYwAMX2x+LTv7a9208UIn8oFYCmX9Qg6jDwWa6Jokg+FNf/Du3MhG9hGkhok5o01X0x0l2CLA=,iv:iKXjMV8TMuf29/M5d+p19pqj4RUiAV6XXiKKfCBEBuA=,tag:bAxPrOZ19ekEsc0KQZqwug==,type:str] + lastmodified: "2026-08-26T10:24:19Z" + mac: ENC[AES256_GCM,data:SZO/oSnvQdTl2JaH72be2ajTiPdfMj51Kyy7xjo2byGYevMEebyp3IhqQdNUe/e0oA6KFfLjXRxHr67i4FtPFqpRxnqhLftfJlUC5nVynxGqcmU0ddiQXHYWAjtYOcbvK3gb59wWG5iRH42AjKbddcZWkiKNBvZgVrvGL0rtSHs=,iv:Coo1XM5Cy4POdkVY51dJ/oU8nM9aR2dwvt/OT6U52EU=,tag:v00+HH7SNHtE7vTZHwQiAw==,type:str] encrypted_regex: ^(data|stringData)$ version: 3.11.0 diff --git a/clusters/base/apps/vaultwarden/secret.enc.yaml b/clusters/base/apps/vaultwarden/secret.enc.yaml index 1ed6403..631efb2 100644 --- a/clusters/base/apps/vaultwarden/secret.enc.yaml +++ b/clusters/base/apps/vaultwarden/secret.enc.yaml @@ -4,20 +4,20 @@ metadata: name: vaultwarden-secrets namespace: vaultwarden stringData: - #ENC[AES256_GCM,data:OnlA3qrgUaCmRyzl/XMtwSuBDC/Mv4G7CmNDvVgoIi/NIlJI2wZzRTUejh0L3RoLuqMVBkEhT1Pt,iv:XSrUWriJMpLs+VmKzocM6cg7+6d/Omvg6975SOx7lh0=,tag:lcSpJOEFLbuVxz7X/ZLeiQ==,type:comment] - ADMIN_TOKEN: ENC[AES256_GCM,data:Ja9UHtEAvRLpN/ZXuZYZp0uYHRjW+7cvhCgFkcrQ75psF+BMVarBQKfLjSJC82n/HCqwZM73AZNphDpeR3ploGBtwRbZq9yC3XlOVF+LcFRCcpGHYrysQjWxw+OL8O9qsqbYyXNqgAWRBri17HOXO3mXfS6yow==,iv:fSk7J/Q+RnZBy+HekkB/uo/lt+QLQ56bxtIG5Sc3C3o=,tag:suyj1ZPexG6K/912/BHmJQ==,type:str] + #ENC[AES256_GCM,data:TVJK6/rHcQhrTZldlBp2FTJ+YA1sEXT5AuMXXJQ2IY0ltLPxN8cxfloLdDEuYQHfUtzGHk4Z0HvQ,iv:zP9a6ibg6LsAWLMcttHNjgPWcWQg9s4HdZyS0JxIMTc=,tag:c+DTqM68+e30jz6QZ5bkFQ==,type:comment] + ADMIN_TOKEN: ENC[AES256_GCM,data:nyw2xSbK3M/+ksRYjfK2vGQpGYQfXUudfj0YUIy7duTP98LQxaLfWTyovip0JeI7YO7umZ8vH9aN7iPKDzWaVQYxObKqXop4c9lqOatg2seHHbwtyYh1G4tVYsPX7Hbz/BiY36fG4hb58Vr0pkxp0VExG5M2Vw==,iv:FG7WesrB2zFWqGvw1XJ5C6cTPBvAtgWYxjsWdlOdeTk=,tag:Cn2einme62teZSBI5h6I5Q==,type:str] sops: age: - recipient: age109zta6l0cwpkxn5wek82kvauxn6yqrq80rsz4mvu5atdnpcn9pusuvnqk5 enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBCaGVZOWJiNHNpek8zRFZn - T1hGNXZzUDJiSkZKMWpheDZNNGRjSVJnV1ZVCi9DMXRUM1NDSjhQVU5yVHpyczh4 - TTg2TFg0eWdIYkM5KzB5cG50eUdnMDAKLS0tIDMvTVJoaVoxOEwyWmIxSkVGWFdE - Q1NXaTY2eVAxRmk1YUxvS05BNWUzaWsKT9ISAtkl+imjDPZnHtm0Ky2hAtldD3j9 - QTW3Vx4nYExvx6azAv5JNjYUpS5BWk8kjiz/YtvCjVHqNGmqMHkR0A== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBPWG51MXVBRmhtQWJiL29M + dVhqWkFWRFdaQVBMemJXVTFKVXd4NWhLVGlvCllOdTgrLzZRV29PVEJvbmlkdzZG + SytSUndlNnVZa3Z5S3JDaE1jbU44djQKLS0tIHl5UDM1ZktGZWxnTlpkakJDbXVS + NkVlSEJTWGRjU3hjTHJONXpoSUk3dVEKyd7wJYlUyT+GjyC5kAw4TG8Z0K//lny9 + LUl2cVjojvcS26DzM4tkh9d1I+Ixeg6pqpDvO550B0kX7xCioi23OQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2026-08-26T10:24:12Z" - mac: ENC[AES256_GCM,data:6+jDS7K2m0usyVtFW181dg+1OrcxfAcWRpZl9yC+1GkCVooG4/e5Qu9tyxoM9qNRFVuxutHPwQXGRJeeHCNbTZcpG9BvUBFOCFU8fbhVYdcJBmsKy0pkbWWHwed+sHbgwFwel0qriGyHifuEtUduBuyOoBmXD0/do47+ZJOfenc=,iv:GmgK4NVaFui/KOMJgCstMoErcLBHOWbsKM3sdJuQ+6U=,tag:FZUqutGUP8SfDODX8WtbcA==,type:str] + lastmodified: "2026-08-26T10:24:20Z" + mac: ENC[AES256_GCM,data:teR8A90fQMnIF0yCw4B706sO1McwzS9agnSbOB3z17Oesi4o/rB5H5S+KE4LXwLredyk8Pc7kMhg0XX1ePrV/KzMBIw3ckWmmR5RaF/eBt1o1V0qXe7Vyr9nTwqZ1QC/AIDeBKfZTIOzHINzEZl2pffZUANQ93NPzq6W8XYuRN4=,iv:yOeMGHVYW4SIeHWWo97MsAI1KuD2AZLFMdAd+jq8Mdo=,tag:AeH9Ag1yGBqwU1n26D4cJA==,type:str] encrypted_regex: ^(data|stringData)$ version: 3.11.0 diff --git a/clusters/base/apps/webdav/secret.enc.yaml b/clusters/base/apps/webdav/secret.enc.yaml index f52b9fd..dbcb93b 100644 --- a/clusters/base/apps/webdav/secret.enc.yaml +++ b/clusters/base/apps/webdav/secret.enc.yaml @@ -4,20 +4,20 @@ metadata: name: webdav-secrets namespace: webdav stringData: - WEBDAV_USERNAME: ENC[AES256_GCM,data:+Zt3Ko4=,iv:IR4FJMCnr4vQr+xb3VWF3XoiM6hK99523YzUhsE0yVI=,tag:zC0QE5aHC/gl3EHYP+gQuQ==,type:str] - WEBDAV_PASSWORD: ENC[AES256_GCM,data:5uV7q8JNoHBCr444ABragJvUMUNyS8UlYnJ7eDiXbcvddvVtjPakhQdTCUuW/XGI,iv:hjma+IILnKD7NPqCkc40Tv4w71/1PyW//M3WYPF1T4s=,tag:Lerzvz9Cqw+ebWAgARWS9g==,type:str] + WEBDAV_USERNAME: ENC[AES256_GCM,data:1So6j3s=,iv:m349N8krx40gszI3BxkbwvcKrBCIaO3rOEmmSivZrQ8=,tag:2bHQSYRNQW/Bn4H+U5UDbg==,type:str] + WEBDAV_PASSWORD: ENC[AES256_GCM,data:lh19Vm1Q+UPgxWBDRVQuCMET1VrEf3GzSy/stJEpcmNiWA4eW3IA9UNY6W3y3mRN,iv:VOkdL7pXt+MwvqPd1lMDs3+SZ+cVpSZAkWISodZErEo=,tag:x0wHGWONhWH+WTgTOjCoSA==,type:str] sops: age: - recipient: age1y8t9v56yuvskznddqfsd4yddzzch0yf2dutvvt8rrx6rjh5f9g0s3qeays enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBkYTc5TjdMQXBsWlJKT0Na - TW5JMms3QTRCaHhXNTdkL3FxOEFQUjBmVUFzClFocGNMbjczR3JNQzMzL2k0by95 - NG4rL0xFSVhMc2tEV0dPSFZjSVFERlkKLS0tIFgzQ01EVVovYW5pNWNuRGxpaTQy - OTBMQU5pc3I1c0o2R2FtKzhQdnlQL0EKcH6hPJoWV6sYgUCrwiIBFU/v0v+3ZYB2 - QP4Rk36VoqPd4R0du2Fu/cCtqdLbx1bVdYPektLEww6i9laMdkda1A== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA5VE95VkxVRVVNT3UrWWN3 + Zm05aTU0VVIrWTg2c010T1B0Uk9ROUlHUlVBCmU4cExXT2h5eDA5NXBKWlVqUVNC + RElBVkZUZEVlMHVWaFVIdThBbVQ5Y1kKLS0tIEZEcDNyM21KVGZVR2dzYlIzN1k0 + dGJVRXduMFlaN0hMc0ttM0JLcGlPeHMKpfzkjS2Jl7x6P/zrx+Z/mXMDtOu0ocIO + VeRY+KwhdHCqier6fgHXMEwBrXBm02UiGYl2eMyeOtV53Zy0KzE/lQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2026-08-26T10:24:13Z" - mac: ENC[AES256_GCM,data:Vku2JIanl1NW+PnYNZZwF2VjaIqiQ6Q6q/bs8iLKYlYwpu1T6DUFf/EHesX7J47Nrn0V4hyiwzIGsg4kDeNxhzCEgaatFpGCACflUNmKBz5pCoHOuSbgH3SASOpaaVbA9knHRKh+5tD26H7M6Vq5S522xg2ChUE7HZrjsRq0gJM=,iv:0XQDUAk2uNwmTAMJtl9eGhHr1AIzI7p2vGfHmZO1odI=,tag:nYR8bzNGk9yGlwxIPmzzXA==,type:str] + lastmodified: "2026-08-26T10:24:21Z" + mac: ENC[AES256_GCM,data:+PhqTrn7lonm8S75pIdyq0N8A6LrIY6vrZXni8kLLe6YN/UDKbtl+2A6DMFUOQMX1d0RmNyM1A5i7CnRdTQuEduIexSAR7HhuKpyUdOZNo7g42dqLlfhSeIJORTUq2kWFY6tMQaqAToovozgG6VfLJ3S9/xfcNhN0CPZJffEG70=,iv:byPECUH4pTVbdxfzZ20m0jaDIPRXglEwe23t/jvy1KQ=,tag:RnY4i1y5xzN0mQ41HWGjoA==,type:str] encrypted_regex: ^(data|stringData)$ version: 3.11.0 diff --git a/clusters/base/apps/zigbee2mqtt/secret.enc.yaml b/clusters/base/apps/zigbee2mqtt/secret.enc.yaml index 271d76e..4c8adfe 100644 --- a/clusters/base/apps/zigbee2mqtt/secret.enc.yaml +++ b/clusters/base/apps/zigbee2mqtt/secret.enc.yaml @@ -4,19 +4,19 @@ metadata: name: zigbee2mqtt-secrets namespace: zigbee2mqtt stringData: - secret.yaml: ENC[AES256_GCM,data:GqAIjv9DVCBdtrBWESQo1zZLVvWDG894VUSwB6/ZILV+Nb24jLB2uIYinXSKu2fq2jhwrxUbsBIzZGsPL+0NMROx5G/5bjJKXIKJBzg4onnwcsPezr+q7wmt7IvD+gth9jyFCy6UIgUlxh6D8Z67mcz/IAkMBb+3Z+JP9q8=,iv:Gk5vGdk0TCXxK/2QQMWdyociupPe8xeokIKSJnj7+SQ=,tag:/0Khi59y6ZnY+6hIfqB9ow==,type:str] + secret.yaml: ENC[AES256_GCM,data:sZAZ/JnQwOEcIBdf+Ha+G/qcfPdU86orJu9KiBEARpW9+UA3Gdz/8yrAriqp6YC36hlYPfMoVpIMbGUXXWfcQldLQpgvFONBcZq5lNP3EP0G+C1eyMu+8tyaYqGU50DqrvCQ/9Yowhpd/rIreANtV+VkviKIJFrvpKwfQLs=,iv:PWhCNK0W1chBCMsFZwtJ2c0tRrByX5hKem9VQXfbwYs=,tag:LfvXx8tbjTIm18OTPjpj4Q==,type:str] sops: age: - recipient: age1tu4xgfefvgdda0vn2thaqndq4p9tuydq2ud6qa98tzzgnff6749qnlcx29 enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBVMElrSERQSHU4S1A5ZmVy - R2c0WFNGd3hOTTZpNEUyd0tXUGFFUldxL21BCmM1Um55aXI3SzdGNWJGYkxlOVFL - OUc1dE8zRkVzaDhxN2JPRE9jQ0dxRFkKLS0tIE1YZTY1TWJuWFZPY0JaKzAwT1lH - MWNOT0k4eFFhanRQLzdLMkdvTnVlZkkKH4dCot+sTB2VOscPGdUztpaKxcBnIrOF - sXiWE2akhi41Ce+JUvha4poESrbwDIZz4krjtvclBukb0uehyLDo8Q== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBjVUZGd0U2eFZrQlcvRkcv + dzlLTFNhQlpzY1JqQXo2S3g5UmFkVUJxODFVCmQ3S0ZDa3ozaW03NHMyTUR2aloz + K1lLL1J3WUxxZlBxdlhLZmpuZEdiMFUKLS0tIGhFby9CbXhMbVArcnJNTm5rbUZC + UXVHdU5aNk43NHhBVURuZnhzcDhtM00KqKteEPZ4OOUWIJgv7FaBUYvxa3MsPhBc + fRNODlsHTozbEKhpgoG7xKLXg7HlUAPa3X8kgyl8L9YcWKUuWAlHcA== -----END AGE ENCRYPTED FILE----- - lastmodified: "2026-08-26T10:24:14Z" - mac: ENC[AES256_GCM,data:dPwLxJT927rIGFgjIFkDA0v/l7JFGg6qUwCClDSIYocqdOb3kMkAwjwXPGJ4/5nHbLBW7LdYLeDF0oPylQHF2NHg76gkE01K1hnsvj3IOsw4B3uYn1bc72zz64iAcOe80fN80czYS2hmbHNxLcHtpszz1qm3zyMj9VUIwKARoiY=,iv:3pRQ+vStRLjzjX5CvODX3yY36mOiyWN/EQZlKt1mTIk=,tag:qdUcNRh/2lvxgIU4IVLxaw==,type:str] + lastmodified: "2026-08-26T10:24:21Z" + mac: ENC[AES256_GCM,data:55ki1WZIC10dHZqfS3CbeDPGaxhz1oZyVedRmkqit+oKReheKBd0JKdzdQMqQc/eEZELBIgDRkG2m3S2n/EPrYLBu0tD/iRcs+9Jp0eec/qkIwssUtY4KpWt03yQSWdmsGPhuWXF+mN5vnBz7uU3EPcSXFTAFcFCBM6ZzM4khYk=,iv:vEifujA4MvUakUtqMsQmuKIeg9w1T8IPl7CVFZthY7E=,tag:0PqOXLjWWblxC2dJ0mAWYw==,type:str] encrypted_regex: ^(data|stringData)$ version: 3.11.0 diff --git a/clusters/home/apps/infcloud.yaml b/clusters/home/apps/infcloud.yaml new file mode 100644 index 0000000..8e7826f --- /dev/null +++ b/clusters/home/apps/infcloud.yaml @@ -0,0 +1,21 @@ +apiVersion: kustomize.toolkit.fluxcd.io/v1 +kind: Kustomization +metadata: + name: infcloud + namespace: flux-system +spec: + interval: 10m + sourceRef: + kind: GitRepository + name: flux-system + path: ./clusters/base/apps/infcloud + prune: true + wait: true + dependsOn: + - name: namespaces + - name: infra + retryInterval: 5s + decryption: + provider: sops + secretRef: + name: sops-age diff --git a/clusters/home/apps/kustomization.yaml b/clusters/home/apps/kustomization.yaml index cf1cc03..d0934cd 100644 --- a/clusters/home/apps/kustomization.yaml +++ b/clusters/home/apps/kustomization.yaml @@ -12,4 +12,5 @@ resources: - markdown-vault-mcp.yaml - nfs-ganesha.yaml - webdav.yaml - - fava.yaml \ No newline at end of file + - fava.yaml + - infcloud.yaml \ No newline at end of file