Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # === Konfigurations-Assistent für Eggdrop ===
- # Dieses Skript erstellt eine neue Konfigurationsdatei basierend auf der Standard-eggdrop.conf.
- # Beende das Skript bei Fehlern und bei der Verwendung nicht gesetzter Variablen
- set -e
- set -u
- # Pfade zur Default-Config (eggdrop.conf) und zur neuen Config
- default_config="eggdrop.conf"
- # Prüfen, ob die Default-Config existiert
- if [[ ! -f "$default_config" ]]; then
- echo "Fehler: Default-Config ($default_config) nicht gefunden!"
- exit 1
- fi
- # Temporäre Datei für Server-Liste
- tempfile_server=$(mktemp)
- # Hilfsfunktion zum Escapen für sed
- function escape_sed() {
- echo "$1" | sed -e 's/[\/&]/\\&/g'
- }
- # Prüft IPv4-Syntax (4 Oktette, 0–255)
- function isValidIPv4() {
- local ip="$1"
- [[ "$ip" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]] || return 1
- local IFS='.'
- read -ra parts <<< "$ip"
- for part in "${parts[@]}"; do
- if (( part < 0 || part > 255 )); then
- return 1
- fi
- done
- return 0
- }
- # Prüft starre IPv6-Syntax (8 Blöcke à 1-4 Hex in [0-9A-Fa-f])
- function isValidIPv6Strict() {
- local ip="$1"
- [[ "$ip" =~ ^([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4}$ ]] || return 1
- return 0
- }
- # Dialog-Menü mit „Zurück“
- function dialog_with_back() {
- local title="$1"
- local message="$2"
- shift 2
- local choices=("$@")
- while true; do
- local result
- result=$(
- dialog --clear \
- --backtitle "Konfigurations-Assistent" \
- --title "$title" \
- --menu "$message" 15 60 10 \
- "${choices[@]}" \
- 3>&1 1>&2 2>&3
- )
- if [[ $? -eq 1 ]]; then
- # ESC/Abbrechen
- echo "back"
- return
- else
- echo "$result"
- return
- fi
- done
- }
- # Funktion zum Setzen einer exakten Konfigurationszeile
- function set_config_line() {
- local key="$1"
- local value="$2"
- local quote="${3:-}" # Optional: ' oder "
- local config_file="$new_config"
- # Präziseres Muster: Zeile beginnt (mit optionalem # und Whitespace), gefolgt von 'set', genauem Schlüssel und dann dem Wert
- sed -i "s|^[#]*[[:space:]]*set[[:space:]]\+$key[[:space:]]\+\".*\"$|set $key ${quote}${value}${quote}|" "$config_file"
- }
- # Funktion zum Einfügen der neuen 'channel add' Zeile an der gleichen Position
- function insert_channel_add() {
- local new_channel="$1"
- # Sucht nach der ersten 'channel add' Zeile (kommentiert oder nicht)
- # und ersetzt die gesamte Zeile mit der neuen 'channel add' Zeile
- if grep -q '^[#]*[[:space:]]*channel add ' "$new_config"; then
- sed -i "0,/^[#]*[[:space:]]*channel add .*/s|^[#]*[[:space:]]*channel add .*|channel add #${new_channel}|" "$new_config"
- else
- # Falls keine 'channel add' Zeile gefunden wurde, füge sie am Ende der Datei hinzu
- echo "channel add #${new_channel}" >> "$new_config"
- fi
- }
- # Funktion zum Einfügen der server add Zeilen nach set default-port
- function insert_server_add_after_default_port() {
- local new_server_lines="$1"
- # Find the line number of set default-port
- local line_num
- line_num=$(grep -n '^set default-port' "$new_config" | cut -d':' -f1 | head -n1)
- if [[ -n "$line_num" ]]; then
- # Insert the server add lines after this line
- awk -v n="$line_num" '
- NR==n {print; while(getline line < "-" > "/dev/null") {print "server add " line} next}
- {print}
- ' "$new_config" < <(echo "$new_server_lines") > "${new_config}.tmp"
- mv "${new_config}.tmp" "$new_config"
- else
- # If set default-port not found, append at end
- echo "" >> "$new_config"
- echo "# Benutzerdefinierte Server-Liste:" >> "$new_config"
- while IFS= read -r line; do
- [[ -z "$line" ]] && continue
- echo "server add $line" >> "$new_config"
- done <<< "$server_lines"
- fi
- }
- # Funktion zum Einfügen von ctcp-version nach set ctcp-mode
- function insert_ctcp_version() {
- local ctcp_version="$1"
- # Suche nach der ersten Zeile, die mit 'set ctcp-mode' beginnt
- if grep -q '^set ctcp-mode' "$new_config"; then
- # Füge 'set ctcp-version' direkt nach 'set ctcp-mode' ein
- sed -i "/^set ctcp-mode/c\\
- &\\
- set ctcp-version \"$ctcp_version\"
- " "$new_config"
- else
- # Falls 'set ctcp-mode' nicht gefunden wird, füge 'set ctcp-version' am Ende hinzu
- echo "set ctcp-version \"$ctcp_version\"" >> "$new_config"
- fi
- }
- # Funktion zum Einfügen der listen Zeile nach set offset
- function insert_listen() {
- local listen_line="$1"
- # Suche nach der Zeile, die mit 'set offset' beginnt
- if grep -q '^set offset' "$new_config"; then
- # Füge die listen Zeile direkt nach 'set offset' ein
- sed -i "/^set offset/c\\
- &\\
- $listen_line
- " "$new_config"
- else
- # Falls 'set offset' nicht gefunden wird, füge die listen Zeile am Ende hinzu
- echo "$listen_line" >> "$new_config"
- fi
- }
- # Funktion zum Setzen von addlang
- function set_addlang() {
- local lang="$1"
- if grep -q '^[#]*[[:space:]]*addlang ' "$new_config"; then
- # Ersetze die bestehende addlang Zeile mit der neuen, nicht kommentiert
- sed -i "s|^[#]*[[:space:]]*addlang .*|addlang \"$lang\"|" "$new_config"
- else
- # Falls keine addlang Zeile gefunden wird, füge sie am Ende hinzu
- echo "addlang \"$lang\"" >> "$new_config"
- fi
- }
- # Hauptkonfigurationsfunktion
- function configure() {
- local step=1
- # Variablen aus den Dialogen
- local username=""
- local admin=""
- local owners=""
- local network_choice=""
- local net_type_choice=""
- local realname_value=""
- local tz_name="CET"
- local tz_offset="-1"
- local listen_port="3333"
- local language="english"
- local prefer_ipv6="0"
- local vhost4_value=""
- local vhost6_value=""
- local channel_name="" # Einzelner Kanal
- local default_port="6667"
- local server_lines=""
- local nick_len="15"
- local ident_method="0"
- local ssl_ciphers="ALL" # Standardwert für ssl-ciphers
- # Extrahiere den bestehenden Kanal aus der Default-Konfiguration
- existing_channel=$(grep '^[#]*[[:space:]]*channel add ' "$default_config" | head -n1 | awk '{print $3}')
- # Entferne führende '#' falls vorhanden
- existing_channel="${existing_channel#\#}"
- while true; do
- case $step in
- ##################################################################
- # 1) Username
- ##################################################################
- 1)
- username=$(dialog --inputbox "Geben Sie den Benutzernamen ein:" 8 50 "lamest" 3>&1 1>&2 2>&3)
- [[ $? -eq 1 ]] && continue # ESC => erneut
- step=2
- ;;
- ##################################################################
- # 2) Admin
- ##################################################################
- 2)
- admin=$(dialog --inputbox "Geben Sie den Admin-Namen ein:" 8 50 "Lamer <email: lamer@lamest.lame.org>" 3>&1 1>&2 2>&3)
- [[ $? -eq 1 ]] && { step=1; continue; }
- step=3
- ;;
- ##################################################################
- # 3) Owner
- ##################################################################
- 3)
- owners=$(dialog --inputbox "Geben Sie den/die Owner-Handle(s) ein (Komma-getrennt):" 8 50 "" 3>&1 1>&2 2>&3)
- [[ $? -eq 1 ]] && { step=2; continue; }
- step=4
- ;;
- ##################################################################
- # 4) Netzwerk (EFnet / IRCnet) => set network
- ##################################################################
- 4)
- local menu_network
- menu_network=$(dialog_with_back "Wert für 'set network' wählen" "Nur EFnet oder IRCnet verfügbar." \
- 1 "EFnet" \
- 2 "IRCnet"
- )
- if [[ "$menu_network" == "back" ]]; then
- step=3
- continue
- fi
- case "$menu_network" in
- 1) network_choice="EFnet";;
- 2) network_choice="IRCnet";;
- *) network_choice="";;
- esac
- step=5
- ;;
- ##################################################################
- # 5) net-type (10 Auswahlen)
- ##################################################################
- 5)
- local net_menu
- net_menu=$(dialog_with_back \
- "IRC-Netzwerk (net-type)" \
- "Wählen Sie den net-type:" \
- 1 "EFnet" \
- 2 "IRCnet" \
- 3 "Undernet" \
- 4 "DALnet" \
- 5 "Libera" \
- 6 "freenode" \
- 7 "QuakeNet" \
- 8 "Rizon" \
- 9 "Twitch" \
- 10 "Other"
- )
- if [[ "$net_menu" == "back" ]]; then
- step=4
- continue
- fi
- case "$net_menu" in
- 1) net_type_choice="EFnet";;
- 2) net_type_choice="IRCnet";;
- 3) net_type_choice="Undernet";;
- 4) net_type_choice="DALnet";;
- 5) net_type_choice="Libera";;
- 6) net_type_choice="freenode";;
- 7) net_type_choice="QuakeNet";;
- 8) net_type_choice="Rizon";;
- 9) net_type_choice="Twitch";;
- 10)
- net_type_choice=$(dialog --inputbox "Bitte Wert für net-type eingeben:" 8 50 "OtherNet" 3>&1 1>&2 2>&3)
- [[ $? -eq 1 ]] && { step=4; continue; }
- ;;
- *) net_type_choice="IRCnet";;
- esac
- step=6
- ;;
- ##################################################################
- # 6) Realname
- ##################################################################
- 6)
- realname_value=$(dialog --inputbox \
- "Geben Sie den Realnamen an:\n(Standard: '/msg $username hello')" \
- 10 60 \
- "/msg $username hello" \
- 3>&1 1>&2 2>&3)
- [[ $? -eq 1 ]] && { step=5; continue; }
- if [[ -z "$realname_value" ]]; then
- realname_value="/msg $username hello"
- fi
- step=7
- ;;
- ##################################################################
- # 7) Zeitzone
- ##################################################################
- 7)
- local timezone_choice
- timezone_choice=$(dialog_with_back \
- "Zeitzone wählen" \
- "Wählen Sie die Zeitzone aus:" \
- 1 "CET" \
- 2 "EST" \
- 3 "Systemzeit automatisch erkennen"
- )
- if [[ "$timezone_choice" == "back" ]]; then
- step=6
- continue
- fi
- case "$timezone_choice" in
- 1)
- tz_name="CET"
- tz_offset=$(dialog --inputbox "Bitte Offset für CET (z. B. -1):" 8 50 "-1" 3>&1 1>&2 2>&3)
- [[ -z "$tz_offset" ]] && tz_offset="-1"
- ;;
- 2)
- tz_name="EST"
- tz_offset=$(dialog --inputbox "Bitte Offset für EST (z. B. +5):" 8 50 "+5" 3>&1 1>&2 2>&3)
- [[ -z "$tz_offset" ]] && tz_offset="+5"
- ;;
- 3)
- local local_offset sign hour_str hour
- local_offset=$(date +%z)
- sign="${local_offset:0:1}"
- hour_str="${local_offset:1:2}"
- hour=$((10#$hour_str))
- if [[ "$sign" == "+" && ( "$hour" == 1 || "$hour" == 2 ) ]]; then
- tz_name="CET"
- tz_offset="-$hour"
- elif [[ "$sign" == "-" && ( "$hour" == 4 || "$hour" == 5 ) ]]; then
- tz_name="EST"
- tz_offset="+$hour"
- else
- tz_name="UTC"
- tz_offset="0"
- fi
- ;;
- *)
- dialog --msgbox "Ungültige Auswahl." 8 50
- continue
- ;;
- esac
- step=8
- ;;
- ##################################################################
- # 8) Listen-Port
- ##################################################################
- 8)
- listen_port=$(dialog --inputbox "Bitte Listen-Port eingeben (nur Zahlen):" 8 50 "3333" 3>&1 1>&2 2>&3)
- [[ $? -eq 1 ]] && { step=7; continue; }
- if ! [[ "$listen_port" =~ ^[0-9]+$ ]]; then
- dialog --msgbox "Fehler: Der Listen-Port muss eine Zahl sein." 8 50
- continue
- fi
- step=9
- ;;
- ##################################################################
- # 9) Sprache
- ##################################################################
- 9)
- local lang_menu
- lang_menu=$(dialog_with_back \
- "Sprache wählen" \
- "Wählen Sie die Sprache für addlang:" \
- 1 "English" \
- 2 "German"
- )
- if [[ "$lang_menu" == "back" ]]; then
- step=8
- continue
- fi
- case "$lang_menu" in
- 1) language="english";;
- 2) language="german";;
- *)
- dialog --msgbox "Ungültige Auswahl." 8 50
- continue
- ;;
- esac
- step=10
- ;;
- ##################################################################
- # 10) prefer-ipv6
- ##################################################################
- 10)
- local ipv6res
- ipv6res=$(dialog_with_back "IPv6-Präferenz" "IPv6 bevorzugen?" \
- 0 "Nein" \
- 1 "Ja"
- )
- if [[ "$ipv6res" == "back" ]]; then
- step=9
- continue
- fi
- case "$ipv6res" in
- 0|1) prefer_ipv6="$ipv6res";;
- *)
- dialog --msgbox "Ungültige Auswahl." 8 50
- continue
- ;;
- esac
- step=11
- ;;
- ##################################################################
- # 11) vHost4 / vHost6
- ##################################################################
- 11)
- local vhostres
- vhostres=$(dialog_with_back \
- "vHost-Konfiguration" \
- "Welchen vHost wollen Sie verwenden?" \
- 1 "vhost4 (IPv4 oder Hostname)" \
- 2 "vhost6 (IPv6 oder Hostname)"
- )
- if [[ "$vhostres" == "back" ]]; then
- step=10
- continue
- fi
- if [[ "$vhostres" == "1" ]]; then
- while true; do
- local v4
- v4=$(dialog --inputbox "Bitte vhost4 eingeben (IPv4 oder Hostname):" 8 60 "virtual.host.com" 3>&1 1>&2 2>&3)
- [[ $? -eq 1 ]] && { step=10; break; }
- if [[ "$v4" =~ ^[0-9.]+$ ]]; then
- if isValidIPv4 "$v4"; then
- vhost4_value="$v4"
- vhost6_value="" # Deaktivieren von vhost6
- break
- else
- dialog --msgbox "Ungültige IPv4." 6 50
- continue
- fi
- else
- vhost4_value="$v4"
- vhost6_value="" # Deaktivieren von vhost6
- break
- fi
- done
- step=12
- elif [[ "$vhostres" == "2" ]]; then
- while true; do
- local v6
- v6=$(dialog --inputbox "Bitte vhost6 eingeben (IPv6 oder Hostname):" 8 60 "my.ipv6.host.com" 3>&1 1>&2 2>&3)
- [[ $? -eq 1 ]] && { step=10; break; }
- if [[ "$v6" =~ ^[0-9A-Fa-f:]+$ ]]; then
- if isValidIPv6Strict "$v6"; then
- vhost6_value="$v6"
- vhost4_value="" # Deaktivieren von vhost4
- break
- else
- dialog --msgbox "Ungültige IPv6 (8 Blöcke à 4 HEX)." 6 60
- continue
- fi
- else
- vhost6_value="$v6"
- vhost4_value="" # Deaktivieren von vhost4
- break
- fi
- done
- step=12
- else
- dialog --msgbox "Ungültige Auswahl." 8 50
- continue
- fi
- ;;
- ##################################################################
- # 12) Channel
- ##################################################################
- 12)
- # Zeige den bestehenden Kanal als Standardwert
- default_channel="#${existing_channel}"
- channel_name=$(dialog --inputbox "Welchen Kanal soll der Bot joinen?" 8 50 "$default_channel" 3>&1 1>&2 2>&3)
- [[ $? -eq 1 ]] && { step=11; continue; }
- # Entferne führendes '#' falls vorhanden und stelle sicher, dass der Kanal mit '#' beginnt
- channel_name="${channel_name#\#}"
- # Validierung: Keine Leerzeichen und keine zusätzlichen '#'
- if [[ "$channel_name" =~ [[:space:]] ]]; then
- dialog --msgbox "Fehler: Der Kanalname darf keine Leerzeichen enthalten." 6 50
- continue
- fi
- step=13
- ;;
- ##################################################################
- # 13) default-port
- ##################################################################
- 13)
- default_port=$(dialog --inputbox "Bitte default-port eingeben (Standard 6667):" 8 50 "6667" 3>&1 1>&2 2>&3)
- if [[ $? -eq 1 || -z "$default_port" ]]; then
- default_port="6667"
- fi
- step=14
- ;;
- ##################################################################
- # 14) Server-Liste
- ##################################################################
- 14)
- # Vorab definierte spezifische Serverzeilen hinzufügen
- cat <<EOF > "$tempfile_server"
- server add you.need.to.change.this 6667
- server add another.example.com 6669 password
- server add 2001:db8:618:5c0:263:: 6669 password
- server add ssl.example.net +7000
- EOF
- # Entferne die spezifischen Serverzeilen aus der temporären Datei
- sed -i '/you.need.to.change.this 6667/d' "$tempfile_server"
- sed -i '/another.example.com 6669 password/d' "$tempfile_server"
- sed -i '/2001:db8:618:5c0:263:: 6669 password/d' "$tempfile_server"
- sed -i '/ssl.example.net +7000/d' "$tempfile_server"
- # Öffne den Editierdialog für die Server-Liste
- dialog --title "Server-Liste bearbeiten" --editbox "$tempfile_server" 20 70 3>&1 1>&2 2>&3
- if [[ $? -eq 1 ]]; then
- # Wenn der Benutzer ESC drückt oder Abbricht, setze server_lines auf leer
- server_lines=""
- else
- # Lese den Inhalt des temporären Files
- server_lines=$(< "$tempfile_server")
- fi
- step=15
- ;;
- ##################################################################
- # 15) nick-len
- ##################################################################
- 15)
- nick_len=$(dialog --inputbox "Bitte nick-len eingeben (Standard 15):" 8 50 "15" 3>&1 1>&2 2>&3)
- if [[ $? -eq 1 || -z "$nick_len" ]]; then
- nick_len="15"
- fi
- step=16
- ;;
- ##################################################################
- # 16) ident-method (0=oidentd, 1=builtin)
- ##################################################################
- 16)
- local imenu
- imenu=$(dialog_with_back \
- "Ident-Konfiguration" \
- "Wählen Sie ident-method:\n0 = oidentd\n1 = Builtin" \
- 0 "oidentd (0)" \
- 1 "Builtin (1)"
- )
- if [[ "$imenu" == "back" ]]; then
- step=15
- continue
- fi
- if [[ "$imenu" == "0" || "$imenu" == "1" ]]; then
- ident_method="$imenu"
- else
- ident_method="0"
- fi
- step=17
- ;;
- ##################################################################
- # 17) ssl-ciphers setzen
- ##################################################################
- 17)
- ssl_ciphers=$(dialog --inputbox "Geben Sie den Wert für ssl-ciphers ein:" 8 50 "ALL" 3>&1 1>&2 2>&3)
- [[ $? -eq 1 || -z "$ssl_ciphers" ]] && ssl_ciphers="ALL" # Wenn abgebrochen oder leer, Standardwert setzen
- step=18
- ;;
- ##################################################################
- # 18) Fertig => Config anlegen
- ##################################################################
- 18)
- break
- ;;
- esac
- done
- ########################################################################
- # === Jetzt: Anlegen der neuen Konfiguration (username.conf) ===
- ########################################################################
- new_config="${username}.conf"
- cp "$default_config" "$new_config"
- # === Aktivieren und Überschreiben der spezifischen Zeilen ===
- # 1. set userfile "username.user"
- set_config_line "userfile" "${username}.user" "\""
- # 2. set botnet-nick "username"
- set_config_line "botnet-nick" "$username" "\""
- # 3. set resolve-timeout "5"
- set_config_line "resolve-timeout" "5"
- # 4. set ssl-privatekey "eggdrop.key"
- set_config_line "ssl-privatekey" "eggdrop.key" "\""
- # 5. set ssl-certificate "eggdrop.crt"
- set_config_line "ssl-certificate" "eggdrop.crt" "\""
- # 6. set ssl-protocols "TLSv1 TLSv1.1 TLSv1.2 TLSv1.3"
- set_config_line "ssl-protocols" "TLSv1 TLSv1.1 TLSv1.2 TLSv1.3" "\""
- # 7. set ssl-ciphers "ALL" (aus dem Dialog)
- set_config_line "ssl-ciphers" "$(escape_sed "$ssl_ciphers")" "\""
- # 8. loadmodule python
- sed -i 's|^[#]*[[:space:]]*loadmodule[[:space:]]\+python|loadmodule python|' "$new_config"
- # 9. set chanfile "username.chan" (ersetze "LamestBot.chan" mit username)
- set_config_line "chanfile" "${username}.chan" "\""
- # 10. channel add "#channel_name"
- # Ersetze die erste gefundene 'channel add' Zeile mit der neuen 'channel add' Zeile
- insert_channel_add "$channel_name"
- # 11. set username "username"
- set_config_line "username" "$(escape_sed "$username")" "\""
- # 12. set nick "username"
- set_config_line "nick" "$(escape_sed "$username")" "\""
- # 13. set altnick "username"
- set_config_line "altnick" "$(escape_sed "$username")" "\""
- # 14. set admin "admin_value"
- set_config_line "admin" "$(escape_sed "$admin")" "\""
- # 15. set owner "owners"
- set_config_line "owner" "$(escape_sed "$owners")" "\""
- # 16. set network "network_choice"
- if [[ -z "$network_choice" ]]; then
- # Kommentar setzen, falls keine Auswahl
- sed -i 's|^[#]*[[:space:]]*set network .*|#set network "EFnet"|' "$new_config"
- else
- # Aktivieren und Setzen der Auswahl
- set_config_line "network" "$(escape_sed "$network_choice")" "\""
- fi
- # 17. set net-type "net_type_choice"
- set_config_line "net-type" "$(escape_sed "$net_type_choice")" "\""
- # 18. set realname "/msg username hello"
- set_config_line "realname" "$(escape_sed "$realname_value")" "\""
- # 19. set timezone "tz_name"
- set_config_line "timezone" "$(escape_sed "$tz_name")" "\""
- # 20. set offset "tz_offset"
- set_config_line "offset" "$(escape_sed "$tz_offset")" "\""
- # 21. set env(TZ)
- sed -i 's|^[#]*[[:space:]]*set env(TZ)|set env(TZ)|' "$new_config"
- # 22. Listen-Port
- # Entferne alle existierenden listen Zeilen (kommentiert und aktiv)
- sed -i '/^[#]*[[:space:]]*listen /d' "$new_config"
- # Füge die gewünschte listen Zeile an der richtigen Position ein
- listen_line="listen ${listen_port} all"
- insert_listen "$listen_line"
- # 23. Sprache => addlang "language"
- set_addlang "$language"
- # 24. set prefer-ipv6 "prefer_ipv6"
- set_config_line "prefer-ipv6" "$(escape_sed "$prefer_ipv6")"
- # 25. vhost4 / vHost6
- if [[ -n "$vhost4_value" ]]; then
- # Kommentar alle vhost6 Zeilen
- sed -i 's|^[#]*[[:space:]]*set vhost6 .*|#set vhost6 "2001:db8::c001:b07"|' "$new_config"
- # Setze vhost4 neu
- set_config_line "vhost4" "$(escape_sed "$vhost4_value")" "\""
- elif [[ -n "$vhost6_value" ]]; then
- # Kommentar alle vhost4 Zeilen
- sed -i 's|^[#]*[[:space:]]*set vhost4 .*|#set vhost4 "99.99.0.0"|' "$new_config"
- # Setze vhost6 neu
- set_config_line "vhost6" "$(escape_sed "$vhost6_value")" "\""
- else
- # Beide deaktivieren
- sed -i 's|^[#]*[[:space:]]*set vhost4 .*|#set vhost4 "99.99.0.0"|' "$new_config"
- sed -i 's|^[#]*[[:space:]]*set vhost6 .*|#set vhost6 "2001:db8::c001:b07"|' "$new_config"
- fi
- # 26. default-port "default_port"
- set_config_line "default-port" "$(escape_sed "$default_port")"
- # 27. Server-Liste
- if [[ -n "$server_lines" ]]; then
- # Entferne alle bestehenden server add Zeilen vor dem Hinzufügen neuer
- sed -i '/^[#]*[[:space:]]*server add /d' "$new_config"
- # Insert server add lines nach set default-port
- insert_server_add_after_default_port "$server_lines"
- fi
- # 28. nick-len "nick_len" (aus dem Dialog)
- set_config_line "nick-len" "$(escape_sed "$nick_len")" "\""
- # 29. ident loadmodule + ident-method
- # loadmodule ident
- sed -i 's|^[#]*[[:space:]]*loadmodule[[:space:]]\+ident|loadmodule ident|' "$new_config"
- # set ident-method "ident_method"
- set_config_line "ident-method" "$(escape_sed "$ident_method")"
- # 30. Transfer-, Share-, Compress-, Woobie-, Assoc-Module aktivieren
- for module in transfer share compress woobie assoc; do
- if grep -q "^#[[:space:]]*loadmodule $module" "$new_config"; then
- sed -i "s|^#[[:space:]]*loadmodule[[:space:]]\+$module|loadmodule $module|" "$new_config"
- elif grep -q "^loadmodule $module" "$new_config"; then
- # Bereits aktiviert, nichts tun
- :
- else
- echo "loadmodule $module" >> "$new_config"
- fi
- done
- # 31. set compress-level "9"
- set_config_line "compress-level" "$(escape_sed "9")"
- # 32. set ctcp-version "ZNC 1.9.1 - http://znc.in"
- insert_ctcp_version "ZNC 1.9.1 - http://znc.in"
- # 33. set ctcp-version bereits durch insert_ctcp_version behandelt
- # 34. set use-exempts 1 aktivieren
- sed -i 's|^[#]*[[:space:]]*set[[:space:]]\+use-exempts[[:space:]]\+0|set use-exempts 1|' "$new_config"
- # 35. set use-invites 1 aktivieren
- sed -i 's|^[#]*[[:space:]]*set[[:space:]]\+use-invites[[:space:]]\+0|set use-invites 1|' "$new_config"
- # 36. set nick "username"
- set_config_line "nick" "$(escape_sed "$username")" "\""
- # 37. set altnick "username"
- set_config_line "altnick" "$(escape_sed "$username")" "\""
- # 38. set notefile "username.notes"
- set_config_line "notefile" "$(escape_sed "${username}.notes")" "\""
- # 39. Aktivieren von pbkdf2-method "SHA256"
- set_config_line "pbkdf2-method" "$(escape_sed "SHA256")" "\""
- # 40. Aktivieren von pbkdf2-rounds "16000" (aus dem Dialog)
- set_config_line "pbkdf2-rounds" "$(escape_sed "16000")" "\""
- # 41. Aktivieren von pidfile "pid.username"
- set_config_line "pidfile" "$(escape_sed "pid.${username}")" "\""
- # === Entferne alle Zeilen mit "Please make sure you edit your config file completely." ===
- sed -i '/Please make sure you edit your config file completely./d' "$new_config"
- echo "Die neue Konfiguration wurde in $new_config gespeichert."
- }
- # Hauptaufruf
- configure
- # Aufräumen
- rm -f "$tempfile_server"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement