Compare commits
16 commits
miniserver
...
main
Author | SHA1 | Date | |
---|---|---|---|
a9b16c18ad | |||
8f705fc8e3 | |||
b3070a8b8b | |||
6a203085b9 | |||
669b28f6ed | |||
9884b703cd | |||
fa63ad72d5 | |||
3a56995ab1 | |||
50b71bc8b8 | |||
fcd097599d | |||
563ba266ff | |||
209dedccf9 | |||
e51c24f837 | |||
72638e0856 | |||
2c83a5c4fc | |||
ec49c8d3ff |
17 changed files with 119 additions and 85 deletions
|
@ -17,7 +17,6 @@ defaults = {
|
||||||
'icinga2': {},
|
'icinga2': {},
|
||||||
'icinga2-ido-pgsql': {},
|
'icinga2-ido-pgsql': {},
|
||||||
'icingaweb2': {},
|
'icingaweb2': {},
|
||||||
'icingaweb2-module-monitoring': {},
|
|
||||||
'python3-easysnmp': {},
|
'python3-easysnmp': {},
|
||||||
'python3-flask': {},
|
'python3-flask': {},
|
||||||
'snmp': {},
|
'snmp': {},
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
from datetime import datetime, timezone
|
from datetime import datetime
|
||||||
from json import dumps
|
from json import dumps
|
||||||
from time import sleep
|
from time import sleep
|
||||||
|
from zoneinfo import ZoneInfo
|
||||||
|
|
||||||
import paho.mqtt.client as mqtt
|
import paho.mqtt.client as mqtt
|
||||||
from requests import RequestException, get
|
from requests import RequestException, get
|
||||||
|
@ -61,8 +62,6 @@ def mqtt_dump_state(device):
|
||||||
out.append("Location: {}".format(device["location"]))
|
out.append("Location: {}".format(device["location"]))
|
||||||
out.append("Setup: {} ({})".format(device["setup"]["name"], device["setup"]["id"]))
|
out.append("Setup: {} ({})".format(device["setup"]["name"], device["setup"]["id"]))
|
||||||
out.append("Resolution: {}".format(device["run"].get("resolution", "unknown")))
|
out.append("Resolution: {}".format(device["run"].get("resolution", "unknown")))
|
||||||
if not device["is_synced"]:
|
|
||||||
out.append("syncing ...")
|
|
||||||
|
|
||||||
mqtt_out(
|
mqtt_out(
|
||||||
" - ".join(out),
|
" - ".join(out),
|
||||||
|
@ -73,6 +72,9 @@ def mqtt_dump_state(device):
|
||||||
mqtt_out("Monitor starting up")
|
mqtt_out("Monitor starting up")
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
|
online_devices = set()
|
||||||
|
available_credits = None
|
||||||
|
|
||||||
try:
|
try:
|
||||||
r = get(
|
r = get(
|
||||||
"https://info-beamer.com/api/v1/device/list",
|
"https://info-beamer.com/api/v1/device/list",
|
||||||
|
@ -88,7 +90,6 @@ while True:
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
new_state = {}
|
new_state = {}
|
||||||
online_devices = set()
|
|
||||||
for device in ib_state:
|
for device in ib_state:
|
||||||
did = str(device["id"])
|
did = str(device["id"])
|
||||||
|
|
||||||
|
@ -140,16 +141,15 @@ while True:
|
||||||
if device["is_online"]:
|
if device["is_online"]:
|
||||||
if device["maintenance"]:
|
if device["maintenance"]:
|
||||||
mqtt_out(
|
mqtt_out(
|
||||||
"maintenance required: {}".format(' '.join(
|
"maintenance required: {}".format(
|
||||||
sorted(device["maintenance"])
|
" ".join(sorted(device["maintenance"]))
|
||||||
)),
|
),
|
||||||
level="WARN",
|
level="WARN",
|
||||||
device=device,
|
device=device,
|
||||||
)
|
)
|
||||||
|
|
||||||
if (
|
if (
|
||||||
device["is_synced"] != state[did]["is_synced"]
|
device["location"] != state[did]["location"]
|
||||||
or device["location"] != state[did]["location"]
|
|
||||||
or device["setup"]["id"] != state[did]["setup"]["id"]
|
or device["setup"]["id"] != state[did]["setup"]["id"]
|
||||||
or device["run"].get("resolution")
|
or device["run"].get("resolution")
|
||||||
!= state[did]["run"].get("resolution")
|
!= state[did]["run"].get("resolution")
|
||||||
|
@ -171,13 +171,56 @@ while True:
|
||||||
|
|
||||||
state = new_state
|
state = new_state
|
||||||
|
|
||||||
if (
|
try:
|
||||||
datetime.now(timezone.utc).strftime("%H%M") == "1312"
|
r = get(
|
||||||
and online_devices
|
"https://info-beamer.com/api/v1/account",
|
||||||
and int(datetime.now(timezone.utc).strftime("%S")) < 30
|
auth=("", CONFIG["api_key"]),
|
||||||
):
|
)
|
||||||
mqtt_out("Online Devices: {}".format(", ".join(sorted(online_devices))))
|
r.raise_for_status()
|
||||||
sleep(30)
|
ib_account = r.json()
|
||||||
|
except RequestException as e:
|
||||||
|
LOG.exception("Could not get data from info-beamer")
|
||||||
|
mqtt_out(
|
||||||
|
f"Could not get data from info-beamer: {e!r}",
|
||||||
|
level="WARN",
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
available_credits = ib_account["balance"]
|
||||||
|
if available_credits < 50:
|
||||||
|
mqtt_out(
|
||||||
|
f"balance has dropped below 50 credits! (available: {available_credits})",
|
||||||
|
level="ERROR",
|
||||||
|
)
|
||||||
|
elif available_credits < 100:
|
||||||
|
mqtt_out(
|
||||||
|
f"balance has dropped below 100 credits! (available: {available_credits})",
|
||||||
|
level="WARN",
|
||||||
|
)
|
||||||
|
|
||||||
|
for quota_name, quota_config in sorted(ib_account["quotas"].items()):
|
||||||
|
value = quota_config["count"]["value"]
|
||||||
|
limit = quota_config["count"]["limit"]
|
||||||
|
if value > limit * 0.9:
|
||||||
|
mqtt_out(
|
||||||
|
f"quota {quota_name} is over 90% (limit {limit}, value {value})",
|
||||||
|
level="ERROR",
|
||||||
|
)
|
||||||
|
elif value > limit * 0.8:
|
||||||
|
mqtt_out(
|
||||||
|
f"quota {quota_name} is over 80% (limit {limit}, value {value})",
|
||||||
|
level="WARN",
|
||||||
|
)
|
||||||
|
|
||||||
|
if datetime.now(ZoneInfo("Europe/Berlin")).strftime("%H%M") == "0900":
|
||||||
|
if available_credits is not None:
|
||||||
|
mqtt_out(f"Available Credits: {available_credits}")
|
||||||
|
|
||||||
|
if online_devices:
|
||||||
|
mqtt_out(
|
||||||
|
"Online Devices: {}".format(", ".join(sorted(online_devices)))
|
||||||
|
)
|
||||||
|
|
||||||
|
sleep(60)
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,6 @@ inet_interfaces = 127.0.0.1
|
||||||
% endif
|
% endif
|
||||||
|
|
||||||
<%text>
|
<%text>
|
||||||
smtp_use_tls = yes
|
|
||||||
smtp_tls_loglevel = 1
|
smtp_tls_loglevel = 1
|
||||||
smtp_tls_note_starttls_offer = yes
|
smtp_tls_note_starttls_offer = yes
|
||||||
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
|
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
|
||||||
|
|
|
@ -3,6 +3,8 @@ from os import listdir
|
||||||
from os.path import isfile, join
|
from os.path import isfile, join
|
||||||
from subprocess import check_output
|
from subprocess import check_output
|
||||||
|
|
||||||
|
from bundlewrap.utils.ui import io
|
||||||
|
|
||||||
zone_path = join(repo.path, 'data', 'powerdns', 'files', 'bind-zones')
|
zone_path = join(repo.path, 'data', 'powerdns', 'files', 'bind-zones')
|
||||||
|
|
||||||
nameservers = set()
|
nameservers = set()
|
||||||
|
@ -79,9 +81,10 @@ if node.metadata.get('powerdns/features/bind', False):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
try:
|
try:
|
||||||
output = check_output(['git', 'log', '-1', '--pretty=%ci', join(zone_path, zone)]).decode('utf-8').strip()
|
output = check_output(['git', 'log', '-1', '--pretty=%ci']).decode('utf-8').strip()
|
||||||
serial = datetime.strptime(output, '%Y-%m-%d %H:%M:%S %z').strftime('%y%m%d%H%M')
|
serial = datetime.strptime(output, '%Y-%m-%d %H:%M:%S %z').strftime('%y%m%d%H%M')
|
||||||
except:
|
except Exception as e:
|
||||||
|
io.stderr(f"Error while parsing commit time for {zone} serial: {e!r}")
|
||||||
serial = datetime.now().strftime('%y%m%d0000')
|
serial = datetime.now().strftime('%y%m%d0000')
|
||||||
|
|
||||||
primary_zones.add(zone)
|
primary_zones.add(zone)
|
||||||
|
|
|
@ -7,7 +7,6 @@ from subprocess import check_output
|
||||||
|
|
||||||
from requests import get
|
from requests import get
|
||||||
|
|
||||||
|
|
||||||
UPDATE_URL = '${url}'
|
UPDATE_URL = '${url}'
|
||||||
USERNAME = '${username}'
|
USERNAME = '${username}'
|
||||||
PASSWORD = '${password}'
|
PASSWORD = '${password}'
|
||||||
|
|
|
@ -5,7 +5,6 @@ from ipaddress import ip_address
|
||||||
from json import loads
|
from json import loads
|
||||||
from subprocess import check_output, run
|
from subprocess import check_output, run
|
||||||
|
|
||||||
|
|
||||||
DOMAIN = '${domain}'
|
DOMAIN = '${domain}'
|
||||||
|
|
||||||
# <%text>
|
# <%text>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
assert node.has_bundle('redis'), f'{node.name}: pretalx needs redis'
|
assert node.has_bundle('redis'), f'{node.name}: pretalx needs redis'
|
||||||
assert node.has_bundle('nodejs'), f'{node.name}: pretalx needs nodejs for rebuild and regenerate_css step'
|
assert node.has_bundle('nodejs'), f'{node.name}: pretalx needs nodejs for rebuild step'
|
||||||
|
|
||||||
actions = {
|
actions = {
|
||||||
'pretalx_create_virtualenv': {
|
'pretalx_create_virtualenv': {
|
||||||
|
@ -53,17 +53,6 @@ actions = {
|
||||||
},
|
},
|
||||||
'triggered': True,
|
'triggered': True,
|
||||||
},
|
},
|
||||||
'pretalx_regenerate-css': {
|
|
||||||
'command': 'sudo -u pretalx PRETALX_CONFIG_FILE=/opt/pretalx/pretalx.cfg /opt/pretalx/venv/bin/python -m pretalx regenerate_css',
|
|
||||||
'needs': {
|
|
||||||
'action:pretalx_migrate',
|
|
||||||
'directory:/opt/pretalx/data',
|
|
||||||
'directory:/opt/pretalx/static',
|
|
||||||
'file:/opt/pretalx/pretalx.cfg',
|
|
||||||
'bundle:nodejs',
|
|
||||||
},
|
|
||||||
'triggered': True,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
users = {
|
users = {
|
||||||
|
@ -90,7 +79,6 @@ git_deploy = {
|
||||||
'action:pretalx_install',
|
'action:pretalx_install',
|
||||||
'action:pretalx_migrate',
|
'action:pretalx_migrate',
|
||||||
'action:pretalx_rebuild',
|
'action:pretalx_rebuild',
|
||||||
'action:pretalx_regenerate-css',
|
|
||||||
'svc_systemd:pretalx-web:restart',
|
'svc_systemd:pretalx-web:restart',
|
||||||
'svc_systemd:pretalx-worker:restart',
|
'svc_systemd:pretalx-worker:restart',
|
||||||
},
|
},
|
||||||
|
@ -121,7 +109,6 @@ svc_systemd = {
|
||||||
'action:pretalx_install',
|
'action:pretalx_install',
|
||||||
'action:pretalx_migrate',
|
'action:pretalx_migrate',
|
||||||
'action:pretalx_rebuild',
|
'action:pretalx_rebuild',
|
||||||
'action:pretalx_regenerate-css',
|
|
||||||
'file:/etc/systemd/system/pretalx-web.service',
|
'file:/etc/systemd/system/pretalx-web.service',
|
||||||
'file:/opt/pretalx/pretalx.cfg',
|
'file:/opt/pretalx/pretalx.cfg',
|
||||||
},
|
},
|
||||||
|
@ -129,7 +116,8 @@ svc_systemd = {
|
||||||
'pretalx-worker': {
|
'pretalx-worker': {
|
||||||
'needs': {
|
'needs': {
|
||||||
'action:pretalx_install',
|
'action:pretalx_install',
|
||||||
'action:pretalx_migrate',
|
'action:pretalx_migrate',,
|
||||||
|
'action:pretalx_rebuild',
|
||||||
'file:/etc/systemd/system/pretalx-worker.service',
|
'file:/etc/systemd/system/pretalx-worker.service',
|
||||||
'file:/opt/pretalx/pretalx.cfg',
|
'file:/opt/pretalx/pretalx.cfg',
|
||||||
},
|
},
|
||||||
|
@ -204,7 +192,6 @@ for plugin_name, plugin_config in node.metadata.get('pretalx/plugins', {}).items
|
||||||
'triggers': {
|
'triggers': {
|
||||||
'action:pretalx_migrate',
|
'action:pretalx_migrate',
|
||||||
'action:pretalx_rebuild',
|
'action:pretalx_rebuild',
|
||||||
'action:pretalx_regenerate-css',
|
|
||||||
'svc_systemd:pretalx-web:restart',
|
'svc_systemd:pretalx-web:restart',
|
||||||
'svc_systemd:pretalx-worker:restart',
|
'svc_systemd:pretalx-worker:restart',
|
||||||
},
|
},
|
||||||
|
|
|
@ -2,7 +2,6 @@ import re
|
||||||
from json import load
|
from json import load
|
||||||
from os.path import join
|
from os.path import join
|
||||||
|
|
||||||
|
|
||||||
with open(join(repo.path, 'configs', 'netbox', f'{node.name}.json')) as f:
|
with open(join(repo.path, 'configs', 'netbox', f'{node.name}.json')) as f:
|
||||||
netbox = load(f)
|
netbox = load(f)
|
||||||
|
|
||||||
|
|
|
@ -1,30 +1,29 @@
|
||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
Version: GnuPG v2.0.19 (GNU/Linux)
|
|
||||||
|
|
||||||
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
|
ifY/dQmUP37n5XgMADRc
|
||||||
=icbY
|
=O0zm
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import bwpass
|
import bwpass
|
||||||
|
|
||||||
|
|
||||||
def demagify(something, vault):
|
def demagify(something, vault):
|
||||||
if isinstance(something, str):
|
if isinstance(something, str):
|
||||||
if something.startswith('!bwpass:'):
|
if something.startswith('!bwpass:'):
|
||||||
|
|
|
@ -4,9 +4,9 @@ from hashlib import sha3_224
|
||||||
|
|
||||||
from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PrivateKey
|
from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PrivateKey
|
||||||
from cryptography.hazmat.primitives.serialization import (Encoding,
|
from cryptography.hazmat.primitives.serialization import (Encoding,
|
||||||
NoEncryption,
|
NoEncryption,
|
||||||
PrivateFormat,
|
PrivateFormat,
|
||||||
PublicFormat)
|
PublicFormat)
|
||||||
|
|
||||||
from bundlewrap.utils import Fault
|
from bundlewrap.utils import Fault
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
from bundlewrap.utils.ui import io
|
|
||||||
from bundlewrap.utils.scm import get_rev
|
from bundlewrap.utils.scm import get_rev
|
||||||
from bundlewrap.utils.text import red, bold
|
from bundlewrap.utils.text import bold, red
|
||||||
|
from bundlewrap.utils.ui import io
|
||||||
|
|
||||||
|
|
||||||
@node_attribute
|
@node_attribute
|
||||||
def needs_apply(node):
|
def needs_apply(node):
|
||||||
|
|
|
@ -40,7 +40,7 @@ imap_pass = "!bwpass_attr:t-online.de/franzi.kunsmann@t-online.de:imap"
|
||||||
|
|
||||||
[metadata.element-web]
|
[metadata.element-web]
|
||||||
url = "chat.franzi.business"
|
url = "chat.franzi.business"
|
||||||
version = "v1.11.82"
|
version = "v1.11.85"
|
||||||
[metadata.element-web.config]
|
[metadata.element-web.config]
|
||||||
default_server_config.'m.homeserver'.base_url = "https://matrix.franzi.business"
|
default_server_config.'m.homeserver'.base_url = "https://matrix.franzi.business"
|
||||||
default_server_config.'m.homeserver'.server_name = "franzi.business"
|
default_server_config.'m.homeserver'.server_name = "franzi.business"
|
||||||
|
@ -49,8 +49,8 @@ defaultCountryCode = "DE"
|
||||||
jitsi.preferredDomain = "meet.ffmuc.net"
|
jitsi.preferredDomain = "meet.ffmuc.net"
|
||||||
|
|
||||||
[metadata.forgejo]
|
[metadata.forgejo]
|
||||||
version = "9.0.1"
|
version = "9.0.2"
|
||||||
sha1 = "060d9f00aaf595875eaf1897cbb24e760ef54d64"
|
sha1 = "5aecc64f93e8ef05c6d6f83d4b647bdb2c831d9f"
|
||||||
domain = "git.franzi.business"
|
domain = "git.franzi.business"
|
||||||
enable_git_hooks = true
|
enable_git_hooks = true
|
||||||
install_ssh_key = true
|
install_ssh_key = true
|
||||||
|
@ -114,8 +114,8 @@ provisioning.shared_secret = "!decrypt:encrypt$gAAAAABfVKflEMAi07C_QGP8cy97hF-4g
|
||||||
"'@kunsi:franzi.business'" = "admin"
|
"'@kunsi:franzi.business'" = "admin"
|
||||||
|
|
||||||
[metadata.mautrix-whatsapp]
|
[metadata.mautrix-whatsapp]
|
||||||
version = "v0.11.0"
|
version = "v0.11.1"
|
||||||
sha1 = "997c794eb246e6cc67ac050c106d54f88531f213"
|
sha1 = "ada2dc6acfd5cb15fae341266b383d3f6e8b42bd"
|
||||||
permissions."'@kunsi:franzi.business'" = "admin"
|
permissions."'@kunsi:franzi.business'" = "admin"
|
||||||
[metadata.mautrix-whatsapp.homeserver]
|
[metadata.mautrix-whatsapp.homeserver]
|
||||||
domain = "franzi.business"
|
domain = "franzi.business"
|
||||||
|
@ -126,7 +126,7 @@ domain = "rss.franzi.business"
|
||||||
|
|
||||||
[metadata.netbox]
|
[metadata.netbox]
|
||||||
domain = "netbox.franzi.business"
|
domain = "netbox.franzi.business"
|
||||||
version = "v4.1.4"
|
version = "v4.1.6"
|
||||||
admins.kunsi = "hostmaster@kunbox.net"
|
admins.kunsi = "hostmaster@kunbox.net"
|
||||||
|
|
||||||
[metadata.nextcloud]
|
[metadata.nextcloud]
|
||||||
|
|
|
@ -181,6 +181,10 @@ nodes['home.nas'] = {
|
||||||
'path': '/storage/nas/Musik',
|
'path': '/storage/nas/Musik',
|
||||||
'force_group': 'nas',
|
'force_group': 'nas',
|
||||||
},
|
},
|
||||||
|
'music_videos': {
|
||||||
|
'path': '/storage/nas/Musikvideos',
|
||||||
|
'force_group': 'nas',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
'restrict-to': {
|
'restrict-to': {
|
||||||
'172.19.138.0/24',
|
'172.19.138.0/24',
|
||||||
|
|
|
@ -48,7 +48,7 @@ nodes['home.paperless'] = {
|
||||||
},
|
},
|
||||||
'paperless': {
|
'paperless': {
|
||||||
'domain': 'paperless.home.kunbox.net',
|
'domain': 'paperless.home.kunbox.net',
|
||||||
'version': 'v2.13.0',
|
'version': 'v2.13.5',
|
||||||
'timezone': 'Europe/Berlin',
|
'timezone': 'Europe/Berlin',
|
||||||
},
|
},
|
||||||
'postgresql': {
|
'postgresql': {
|
||||||
|
|
|
@ -25,8 +25,8 @@ nodes['voc.infobeamer-cms'] = {
|
||||||
},
|
},
|
||||||
'infobeamer-cms': {
|
'infobeamer-cms': {
|
||||||
'domain': 'infobeamer.c3voc.de',
|
'domain': 'infobeamer.c3voc.de',
|
||||||
'event_start_date': '2024-10-03',
|
'event_start_date': '2024-12-26',
|
||||||
'event_duration_days': 4,
|
'event_duration_days': 5,
|
||||||
'config': {
|
'config': {
|
||||||
'ADMIN_USERS': [
|
'ADMIN_USERS': [
|
||||||
'hexchen',
|
'hexchen',
|
||||||
|
@ -39,7 +39,7 @@ nodes['voc.infobeamer-cms'] = {
|
||||||
'GITHUB_CLIENT_ID': vault.decrypt('encrypt$gAAAAABiNwHfIu9PYFfJrF7qirn_9vdvvUlEhJnadoNSS5XlCDbI_aMyj21_ZYQxaCkc6_eVX6Cj1jEHZ7Vs6wM-XyQdW0nUOahtqG4uvnYCiM3GFKHW_wQ='),
|
'GITHUB_CLIENT_ID': vault.decrypt('encrypt$gAAAAABiNwHfIu9PYFfJrF7qirn_9vdvvUlEhJnadoNSS5XlCDbI_aMyj21_ZYQxaCkc6_eVX6Cj1jEHZ7Vs6wM-XyQdW0nUOahtqG4uvnYCiM3GFKHW_wQ='),
|
||||||
'GITHUB_CLIENT_SECRET': vault.decrypt('encrypt$gAAAAABiNwHtdZC2XQ8IjosL7vsmrxZMwDIM6AD5dUlLo996tJs4qV7KJETHgYYZil2aMzClwhcE6JmxdhARRp7IJQ4rQQibelTNmyYSzj_V4puVpvma7SU0UZkTIG95SdPpoHY--Zba'),
|
'GITHUB_CLIENT_SECRET': vault.decrypt('encrypt$gAAAAABiNwHtdZC2XQ8IjosL7vsmrxZMwDIM6AD5dUlLo996tJs4qV7KJETHgYYZil2aMzClwhcE6JmxdhARRp7IJQ4rQQibelTNmyYSzj_V4puVpvma7SU0UZkTIG95SdPpoHY--Zba'),
|
||||||
'HOSTED_API_KEY': vault.decrypt('encrypt$gAAAAABhxJPH2sIGMAibU2Us1HoCVlNfF0SQQnVl0eiod48Zu8webL_-xk3wDw3yXw1Hkglj-2usl-D3Yd095yTSq0vZMCv2fh-JWwSPdJewQ45x9Ai4vXVD4CNz5vuJBESKS9xQWXTc'),
|
'HOSTED_API_KEY': vault.decrypt('encrypt$gAAAAABhxJPH2sIGMAibU2Us1HoCVlNfF0SQQnVl0eiod48Zu8webL_-xk3wDw3yXw1Hkglj-2usl-D3Yd095yTSq0vZMCv2fh-JWwSPdJewQ45x9Ai4vXVD4CNz5vuJBESKS9xQWXTc'),
|
||||||
'INTERRUPT_KEY': vault.human_password_for('infobeamer-cms interrupt key'),
|
'INTERRUPT_KEY': vault.human_password_for('infobeamer-cms interrupt key 38c3', words=1),
|
||||||
'SETUP_IDS': [
|
'SETUP_IDS': [
|
||||||
253559,
|
253559,
|
||||||
],
|
],
|
||||||
|
@ -64,7 +64,7 @@ nodes['voc.infobeamer-cms'] = {
|
||||||
'FAQ': {
|
'FAQ': {
|
||||||
'SOURCE': 'https://github.com/voc/infobeamer-cms',
|
'SOURCE': 'https://github.com/voc/infobeamer-cms',
|
||||||
'CONTACT': '''
|
'CONTACT': '''
|
||||||
Please use the <a href="https://webirc.hackint.org/#ircs://irc.hackint.org/#infobeamer">IRC
|
Please use the <a href="https://chat.hackint.org/?join=infobeamer">IRC
|
||||||
Channel #infobeamer on irc.hackint.org</a> (also
|
Channel #infobeamer on irc.hackint.org</a> (also
|
||||||
<a href="https://www.hackint.org/transport/matrix">bridged to matrix</a>)
|
<a href="https://www.hackint.org/transport/matrix">bridged to matrix</a>)
|
||||||
or #info-beamer on the cccv rocketchat instance.
|
or #info-beamer on the cccv rocketchat instance.
|
||||||
|
|
|
@ -49,14 +49,15 @@ nodes['voc.pretalx'] = {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'pretalx': {
|
'pretalx': {
|
||||||
'version': 'v2024.2.1',
|
# 2023.3.1 with some bugfixes
|
||||||
|
'version': '05e377398cecdd45d3ca6013040c5857bbe225d6',
|
||||||
'domain': 'pretalx.c3voc.de',
|
'domain': 'pretalx.c3voc.de',
|
||||||
'mail_from': 'pretalx@c3voc.de',
|
'mail_from': 'pretalx@c3voc.de',
|
||||||
'administrators-from-group-id': 1,
|
'administrators-from-group-id': 1,
|
||||||
'plugins': {
|
'plugins': {
|
||||||
'broadcast_tools': {
|
'broadcast_tools': {
|
||||||
'repo': 'https://github.com/Kunsi/pretalx-plugin-broadcast-tools.git',
|
'repo': 'https://github.com/Kunsi/pretalx-plugin-broadcast-tools.git',
|
||||||
'rev': 'main',
|
'rev': '2.4.0',
|
||||||
},
|
},
|
||||||
'downstream': {
|
'downstream': {
|
||||||
'repo': 'https://github.com/pretalx/pretalx-downstream.git',
|
'repo': 'https://github.com/pretalx/pretalx-downstream.git',
|
||||||
|
@ -81,6 +82,6 @@ nodes['voc.pretalx'] = {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'os': 'debian',
|
'os': 'debian',
|
||||||
'os_version': (11,),
|
'os_version': (12,),
|
||||||
'pip_command': 'pip3',
|
'pip_command': 'pip3',
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue