mirror of
https://github.com/ManfredAabye/opensimMULTITOOLS-II.git
synced 2026-07-31 03:02:24 +00:00
V25.5.109.442 standalone test
This commit is contained in:
+384
-81
@@ -49,22 +49,6 @@ function log() {
|
||||
fi
|
||||
}
|
||||
|
||||
function rootrights() {
|
||||
# Root-Privilegien erforderlich
|
||||
if [[ "$EUID" -ne 0 ]]; then
|
||||
echo "Dieses Skript muss als Root ausgeführt werden (z. B. mit sudo)." >&2
|
||||
echo "Ohne Root-Privilegien müssen Sie z.B. das Passwort der Datenbank bei jedem Mal eingeben." >&2
|
||||
echo "Um dies zu verhindern, kann das Skript mit sudo ausgeführt werden." >&2
|
||||
echo -n "Möchten Sie trotzdem ohne Root-Privilegien fortfahren? (ja/N): " >&2
|
||||
read -r answer
|
||||
# Standardantwort "Nein", falls der Benutzer nichts eingibt oder "ja" falsch geschrieben wird
|
||||
if [[ ! "$answer" =~ ^[Jj]a$ ]]; then
|
||||
echo "Abbruch." >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
#?──────────────────────────────────────────────────────────────────────────────────────────
|
||||
#* Informationen Kopfzeile
|
||||
#?──────────────────────────────────────────────────────────────────────────────────────────
|
||||
@@ -78,7 +62,7 @@ SCRIPTNAME="opensimMULTITOOL II"
|
||||
#testmodus=1 # Testmodus: 1=aktiviert, 0=deaktiviert
|
||||
|
||||
# Versionsnummer besteht aus: Jahr.Monat.Funktionsanzahl.Eigentliche_Versionsnummer
|
||||
VERSION="V25.5.104.423"
|
||||
VERSION="V25.5.109.442"
|
||||
log "\e[36m$SCRIPTNAME\e[0m $VERSION"
|
||||
echo "Dies ist ein Tool welches der Verwaltung von OpenSim Servern dient."
|
||||
echo "Bitte beachten Sie, dass die Anwendung auf eigene Gefahr und Verantwortung erfolgt."
|
||||
@@ -102,15 +86,16 @@ COLOR_WARNING='\e[33m' # Gelb (Warnungen)
|
||||
COLOR_VALUE='\e[36m' # Cyan für Werte
|
||||
COLOR_ACTION='\e[92m' # Hellgrün für Aktionen
|
||||
COLOR_RESET='\e[0m' # Farbreset
|
||||
COLOR_RESTART='\e[93m' # Gelb (RESTART)
|
||||
|
||||
#* SYMBOLDEFINITIONEN
|
||||
SYM_OK="${COLOR_OK}✓${COLOR_RESET}"
|
||||
SYM_BAD="${COLOR_BAD}✗${COLOR_RESET}"
|
||||
SYM_INFO="${COLOR_VALUE}☛${COLOR_RESET}" # Alternative: ▲ ● ◆ ☛ ⚑ ⓘ
|
||||
SYM_INFO="${COLOR_VALUE}☛${COLOR_RESET}" # Alternative: ▲ ● ◆ ☛ ⚑ ⓘ
|
||||
SYM_WAIT="${COLOR_VALUE}⏳${COLOR_RESET}"
|
||||
SYM_LOG="${COLOR_VALUE}📋${COLOR_RESET}"
|
||||
COLOR_SECTION='\e[0;35m' # Magenta für Sektionsnamen
|
||||
COLOR_FILE='\e[0;33m' # Gelb für Dateipfade
|
||||
COLOR_SECTION='\e[0;35m' # Magenta für Sektionsnamen
|
||||
COLOR_FILE='\e[0;33m' # Gelb für Dateipfade
|
||||
|
||||
SYM_SYNC="${COLOR_VALUE}🔄${COLOR_RESET}" # Synchronisieren, Aktualisieren
|
||||
SYM_TOOLS="${COLOR_VALUE}🛠️${COLOR_RESET}" # Werkzeuge, Einstellungen, Reparatur
|
||||
@@ -128,7 +113,7 @@ SYM_PACKAGE="${COLOR_VALUE}📦${COLOR_RESET}" # Package
|
||||
SYM_OKN="${COLOR_VALUE}✔️${COLOR_RESET}" # OK
|
||||
SYM_FORWARD="${COLOR_VALUE}⏭️${COLOR_RESET}" # Weiter
|
||||
SYM_OKNN="${COLOR_VALUE}✅${COLOR_RESET}" # OK
|
||||
SYM_VOR="${COLOR_VALUE}●${COLOR_RESET}" # Alternative: ▲ ● ◆ ☛ ⚑ ⓘ ${SYM_VOR}
|
||||
SYM_VOR="${COLOR_VALUE}●${COLOR_RESET}" # Alternative: ▲ ● ◆ ☛ ⚑ ⓘ ${SYM_VOR}
|
||||
|
||||
#* WARTEZEITEN muessen leider sein damit der Server nicht überfordert wird.
|
||||
Simulator_Start_wait=15 # Sekunden
|
||||
@@ -138,9 +123,17 @@ Simulator_Stop_wait=15 # Sekunden
|
||||
MoneyServer_Stop_wait=30 # Sekunden
|
||||
RobustServer_Stop_wait=30 # Sekunden
|
||||
|
||||
function blankline() { sleep 0.5; echo " ";}
|
||||
KOMMANDO=$1 #! Eingabeauswertung fuer Funktionen.
|
||||
|
||||
# Hauptpfad des Skripts automatisch setzen
|
||||
#* Leere Zeile
|
||||
function blankline() {
|
||||
# Einfache Leerezeile
|
||||
#sleep 0.25; echo " "
|
||||
# Einfache Linie
|
||||
sleep 0.25; echo "____________________________________________________________________________________"; echo " "
|
||||
}
|
||||
|
||||
#* Hauptpfad des Skripts automatisch setzen
|
||||
SCRIPT_DIR="$(dirname "$(realpath "$0")")"
|
||||
cd "$SCRIPT_DIR" || exit 1
|
||||
system_ip=$(hostname -I | awk '{print $1}')
|
||||
@@ -148,7 +141,25 @@ log "${COLOR_LABEL}Das Arbeitsverzeichnis ist:${COLOR_RESET} ${COLOR_VALUE}$SCRI
|
||||
log "${COLOR_LABEL}Ihre IP Adresse ist:${COLOR_RESET} ${COLOR_VALUE}$system_ip${COLOR_RESET}"
|
||||
blankline
|
||||
|
||||
# Soll im Hypergrid Modus gearbeitet werden oder in einem Geschlossenen Grid?
|
||||
#* Rootrechte erforderlich
|
||||
function rootrights() {
|
||||
# Root-Privilegien erforderlich
|
||||
if [[ "$EUID" -ne 0 ]]; then
|
||||
log "${COLOR_WARNING}Dieses Skript muss als Root ausgeführt werden (z. B. mit sudo)." >&2
|
||||
log "Ohne Root-Privilegien müssen Sie z.B. das Passwort der Datenbank" >&2
|
||||
log "bei jeder Tabelle oder AssetType eingeben." >&2
|
||||
log "Um dies zu verhindern, kann das Skript mit sudo ausgeführt werden.${COLOR_RESET}" >&2
|
||||
log "Möchten Sie trotzdem ohne Root-Privilegien fortfahren? (ja/nein): " >&2
|
||||
read -r answer
|
||||
# Akzeptiere j, J, ja, Ja, JA
|
||||
if [[ ! "$answer" =~ ^([Jj]([Aa])?)$ ]]; then
|
||||
log "${COLOR_STOP}Abbruch.${COLOR_RESET}" >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
#* Soll im Hypergrid Modus gearbeitet werden oder in einem Geschlossenen Grid?
|
||||
function hypergrid() {
|
||||
local modus="$1"
|
||||
local robust_dir="$SCRIPT_DIR/robust/bin" # Korrekter Pfad zu Robust-Dateien
|
||||
@@ -189,7 +200,7 @@ function hypergrid() {
|
||||
}
|
||||
|
||||
|
||||
KOMMANDO=$1 # Eingabeauswertung fuer Funktionen.
|
||||
|
||||
|
||||
#?──────────────────────────────────────────────────────────────────────────────────────────
|
||||
#* Abhängigkeiten installieren
|
||||
@@ -425,6 +436,8 @@ function servercheck() {
|
||||
function setup_webserver() {
|
||||
log "${COLOR_SECTION}=== Web Server Setup (Apache/PHP) ===${COLOR_RESET}"
|
||||
|
||||
rootrights
|
||||
|
||||
# 1. Paketlisten mit erweiterten PHP-Modulen
|
||||
declare -A web_packages=(
|
||||
["ubuntu"]="apache2 php libapache2-mod-php php-mysql php-gd php-curl php-mbstring php-xml php-zip"
|
||||
@@ -542,6 +555,8 @@ function validate_sim_name() {
|
||||
return 0
|
||||
}
|
||||
|
||||
# Einzelne Instanzen starten und stoppen
|
||||
|
||||
function simstart() {
|
||||
local simstart=$1
|
||||
if ! validate_sim_name "$simstart"; then
|
||||
@@ -5059,59 +5074,12 @@ function renamefiles() {
|
||||
return 0
|
||||
}
|
||||
|
||||
# Standalone ist die erste Funktion, die funktioniert.
|
||||
function standalone() {
|
||||
log "\e[33m[Standalone] Setup wird durchgeführt...\e[0m"
|
||||
|
||||
# Prüfen ob SCRIPT_DIR gesetzt ist
|
||||
if [ -z "${SCRIPT_DIR}" ]; then
|
||||
log "\e[31mFehler: SCRIPT_DIR ist nicht gesetzt!\e[0m"
|
||||
return 1
|
||||
fi
|
||||
|
||||
local opensim_bin="${SCRIPT_DIR}/opensim/bin"
|
||||
local renamed=0
|
||||
local skipped=0
|
||||
|
||||
# Sicherstellen, dass das Verzeichnis existiert
|
||||
if [ ! -d "${opensim_bin}" ]; then
|
||||
log "\e[31mFehler: Verzeichnis ${opensim_bin} nicht gefunden!\e[0m"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Verarbeite alle .example Dateien
|
||||
while IFS= read -r -d '' file; do
|
||||
target="${file%.example}"
|
||||
|
||||
if [ -e "${target}" ]; then
|
||||
log "\e[33mÜbersprungen: ${target} existiert bereits\e[0m"
|
||||
((skipped++))
|
||||
else
|
||||
if mv "${file}" "${target}"; then
|
||||
log "\e[32mUmbenannt: ${file} → ${target}\e[0m"
|
||||
((renamed++))
|
||||
else
|
||||
log "\e[31mFehler beim Umbenennen von ${file}\e[0m"
|
||||
((skipped++))
|
||||
fi
|
||||
fi
|
||||
done < <(find "${opensim_bin}" -type f -name "*.example" -print0)
|
||||
|
||||
log "\n\e[36mZusammenfassung:\e[0m"
|
||||
log "\e[32mUmbenannte Dateien: ${renamed}\e[0m"
|
||||
log "\e[33mÜbersprungene Dateien: ${skipped}\e[0m"
|
||||
log "\e[32mStandalone-Konfiguration abgeschlossen!\e[0m"
|
||||
blankline
|
||||
}
|
||||
|
||||
# Helper to clean config files (remove leading spaces/tabs)
|
||||
function clean_config() {
|
||||
local file=$1
|
||||
sed -i 's/^[ \t]*//' "$file"
|
||||
}
|
||||
|
||||
|
||||
|
||||
# cleanall - Removes OpenSim completely
|
||||
function cleanall() {
|
||||
echo "Möchtest du OpenSim komplett mit Konfigurationen entfernen? (ja/nein)"
|
||||
@@ -5301,6 +5269,318 @@ function autoupgradefast() {
|
||||
opensimstartParallel
|
||||
}
|
||||
|
||||
#* OpenSimulator bauen aus Github.
|
||||
# Dies macht ausser dem OpenSimulator erstellen nichts weiter.
|
||||
function buildopensim() {
|
||||
opensimgitcopy
|
||||
moneygitcopy
|
||||
osslscriptsgit
|
||||
versionrevision
|
||||
opensimbuild
|
||||
}
|
||||
|
||||
# Standalone
|
||||
function standalonesetup() {
|
||||
# 12.05.2025
|
||||
log "\e[33m[Standalone] Setup wird durchgeführt...\e[0m"
|
||||
|
||||
# Prüfen ob SCRIPT_DIR gesetzt ist
|
||||
if [ -z "${SCRIPT_DIR}" ]; then
|
||||
log "\e[31mFehler: SCRIPT_DIR ist nicht gesetzt!\e[0m"
|
||||
return 1
|
||||
fi
|
||||
|
||||
local opensim_bin="${SCRIPT_DIR}/opensim/bin"
|
||||
local renamed=0
|
||||
local skipped=0
|
||||
|
||||
# Sicherstellen, dass das Verzeichnis existiert
|
||||
if [ ! -d "${opensim_bin}" ]; then
|
||||
log "\e[31mFehler: Verzeichnis ${opensim_bin} nicht gefunden!\e[0m"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Verarbeite alle .example Dateien
|
||||
while IFS= read -r -d '' file; do
|
||||
target="${file%.example}"
|
||||
|
||||
if [ -e "${target}" ]; then
|
||||
log "\e[33mÜbersprungen: ${target} existiert bereits\e[0m"
|
||||
((skipped++))
|
||||
else
|
||||
if mv "${file}" "${target}"; then
|
||||
log "\e[32mUmbenannt: ${file} → ${target}\e[0m"
|
||||
((renamed++))
|
||||
else
|
||||
log "\e[31mFehler beim Umbenennen von ${file}\e[0m"
|
||||
((skipped++))
|
||||
fi
|
||||
fi
|
||||
done < <(find "${opensim_bin}" -type f -name "*.example" -print0)
|
||||
|
||||
genPasswort=$(tr -dc 'A-Za-z0-9!@#$%^&*()' < /dev/urandom | head -c 16)
|
||||
#genUserid=$(command -v uuidgen >/dev/null 2>&1 && uuidgen 2>/dev/null || cat /proc/sys/kernel/random/uuid 2>/dev/null || echo "$RANDOM-$RANDOM-$RANDOM-$RANDOM")
|
||||
user_uuid=$(command -v uuidgen >/dev/null 2>&1 && uuidgen 2>/dev/null || cat /proc/sys/kernel/random/uuid 2>/dev/null || echo "$RANDOM-$RANDOM-$RANDOM-$RANDOM")
|
||||
|
||||
log "${COLOR_INFO}OpenSim User Erstellung${COLOR_RESET}"
|
||||
|
||||
echo -n "Vorname: "
|
||||
read -r VORNAME
|
||||
|
||||
echo -n "Nachname: "
|
||||
read -r NACHNAME
|
||||
|
||||
echo -n "Passwort: "
|
||||
read -r PASSWORT
|
||||
|
||||
echo -n "E-Mail: "
|
||||
read -r EMAIL
|
||||
|
||||
# **Speicherung der Benutzerdaten in UserInfo.ini** NEU
|
||||
ini_file="${SCRIPT_DIR}/OpenSimUserInfo.ini"
|
||||
log "${COLOR_INFO}Erstelle OpenSimUserInfo.ini neu${COLOR_RESET}"
|
||||
sudo rm -f "$ini_file"
|
||||
sudo touch "$ini_file"
|
||||
|
||||
log "\n[UserData]" | sudo tee -a "$ini_file" >/dev/null
|
||||
echo "System IP = ${system_ip}" | sudo tee -a "$ini_file" >/dev/null
|
||||
echo "Vorname = ${VORNAME}" | sudo tee -a "$ini_file" >/dev/null
|
||||
echo "Nachname = ${NACHNAME}" | sudo tee -a "$ini_file" >/dev/null
|
||||
echo "Passwort = ${PASSWORT}" | sudo tee -a "$ini_file" >/dev/null
|
||||
echo "E-Mail = ${EMAIL}" | sudo tee -a "$ini_file" >/dev/null
|
||||
echo "UserID = ${user_uuid}" | sudo tee -a "$ini_file" >/dev/null
|
||||
|
||||
log "${SYM_LOG} ${COLOR_LABEL}Benutzerdaten hinzugefügt in: ${COLOR_FILE}${ini_file}${COLOR_RESET}"
|
||||
|
||||
blankline
|
||||
}
|
||||
|
||||
function createstandaloneuser() {
|
||||
# 12.05.2025 OpenSim Avatar erstellen
|
||||
|
||||
# opensim starten
|
||||
echo "opensim starten, erster start..."
|
||||
if [[ -d "opensim/bin" && -f "opensim/bin/OpenSim.dll" ]]; then
|
||||
log "${SYM_OK} ${COLOR_START}Starte ${COLOR_SERVER}opensim ${COLOR_RESET} ${COLOR_START}aus ${COLOR_DIR}opensim/bin...${COLOR_RESET}"
|
||||
cd opensim/bin || exit 1
|
||||
|
||||
screen -fa -S opensim -d -U -m dotnet OpenSim.dll
|
||||
cd - >/dev/null 2>&1 || exit 1
|
||||
else
|
||||
log "${SYM_BAD} ${COLOR_SERVER}opensim: ${COLOR_BAD}OpenSim.dll nicht gefunden.${COLOR_RESET} ${COLOR_START}Überspringe Start.${COLOR_RESET}"
|
||||
fi
|
||||
|
||||
|
||||
# 1. INI-Datei auslesen mit angepasstem Parsing
|
||||
ini_file="${SCRIPT_DIR}/OpenSimUserInfo.ini"
|
||||
if [[ ! -f "$ini_file" ]]; then
|
||||
log "${COLOR_BAD}UserInfo.ini nicht gefunden unter: $ini_file${COLOR_RESET}"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Parsing-Funktion mit Trim und Leerzeichen im Pattern
|
||||
ini_get() {
|
||||
local section="$1" key="$2"
|
||||
awk -F ' = ' '
|
||||
/^\[/ { current_section = substr($0, 2, length($0)-2) }
|
||||
current_section == "'"$section"'" && $1 == "'"$key"'" {
|
||||
sub(/^[ \t]+/, "", $2) # Trim leading whitespace
|
||||
sub(/[ \t\r]+$/, "", $2) # Trim trailing whitespace
|
||||
print $2
|
||||
exit
|
||||
}
|
||||
' "$ini_file"
|
||||
}
|
||||
|
||||
# Werte auslesen
|
||||
VORNAME=$(ini_get "UserData" "Vorname")
|
||||
NACHNAME=$(ini_get "UserData" "Nachname")
|
||||
PASSWORT=$(ini_get "UserData" "Passwort")
|
||||
EMAIL=$(ini_get "UserData" "E-Mail")
|
||||
user_uuid=$(ini_get "UserData" "UserID")
|
||||
|
||||
# Überprüfe ob opensim läuft
|
||||
if ! screen -list | grep -q "opensim"; then
|
||||
log "${COLOR_BAD}CREATEUSER: opensim existiert nicht oder läuft nicht${COLOR_RESET}"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Benutzer in Robust erstellen
|
||||
screen -S opensim -p 0 -X eval "stuff 'create user'^M"
|
||||
screen -S opensim -p 0 -X eval "stuff '$VORNAME'^M"
|
||||
screen -S opensim -p 0 -X eval "stuff '$NACHNAME'^M"
|
||||
screen -S opensim -p 0 -X eval "stuff '$PASSWORT'^M"
|
||||
screen -S opensim -p 0 -X eval "stuff '$EMAIL'^M"
|
||||
screen -S opensim -p 0 -X eval "stuff '$user_uuid'^M"
|
||||
screen -S opensim -p 0 -X eval "stuff ''^M"
|
||||
|
||||
screen -S opensim -p 0 -X eval "stuff ''^M"
|
||||
screen -S opensim -p 0 -X eval "stuff ''^M"
|
||||
|
||||
log "${COLOR_OK}Masteruser $VORNAME $NACHNAME wurde erstellt${COLOR_RESET}"
|
||||
log "${COLOR_INFO}UserID: $user_uuid${COLOR_RESET}"
|
||||
blankline
|
||||
}
|
||||
|
||||
function createstandalonregion() {
|
||||
# 12.05.2025 Standalone Region erstellen
|
||||
local config_file="opensim/bin/Regions/opensim.ini"
|
||||
local region_name="OpenSim"
|
||||
local location="1000,1000"
|
||||
local port="9015"
|
||||
system_ip=$(hostname -I | awk '{print $1}')
|
||||
region_uuid=$(command -v uuidgen >/dev/null 2>&1 && uuidgen 2>/dev/null || cat /proc/sys/kernel/random/uuid 2>/dev/null || echo "$RANDOM-$RANDOM-$RANDOM-$RANDOM")
|
||||
SIZES=768
|
||||
|
||||
# 1. INI-Datei auslesen mit angepasstem Parsing
|
||||
ini_file="${SCRIPT_DIR}/OpenSimUserInfo.ini"
|
||||
if [[ ! -f "$ini_file" ]]; then
|
||||
log "${COLOR_BAD}UserInfo.ini nicht gefunden unter: $ini_file${COLOR_RESET}"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Parsing-Funktion mit Trim und Leerzeichen im Pattern
|
||||
ini_get() {
|
||||
local section="$1" key="$2"
|
||||
awk -F ' = ' '
|
||||
/^\[/ { current_section = substr($0, 2, length($0)-2) }
|
||||
current_section == "'"$section"'" && $1 == "'"$key"'" {
|
||||
sub(/^[ \t]+/, "", $2) # Trim leading whitespace
|
||||
sub(/[ \t\r]+$/, "", $2) # Trim trailing whitespace
|
||||
print $2
|
||||
exit
|
||||
}
|
||||
' "$ini_file"
|
||||
}
|
||||
|
||||
# Werte auslesen
|
||||
VORNAME=$(ini_get "UserData" "Vorname")
|
||||
NACHNAME=$(ini_get "UserData" "Nachname")
|
||||
PASSWORT=$(ini_get "UserData" "Passwort")
|
||||
|
||||
touch "$config_file"
|
||||
{
|
||||
echo "[${VORNAME}${NACHNAME}]"
|
||||
echo "RegionUUID = ${region_uuid}"
|
||||
echo "Location = ${location}"
|
||||
echo "SizeX = ${SIZES}"
|
||||
echo "SizeY = ${SIZES}"
|
||||
echo "SizeZ = ${SIZES}"
|
||||
echo "InternalPort = ${port}"
|
||||
echo "ExternalHostName = ${system_ip}"
|
||||
echo "MaxPrims = 45000"
|
||||
echo "MaxAgents = 40"
|
||||
echo "MaptileStaticUUID = 20000000-1000-1000-1000-200000000000"
|
||||
echo "InternalAddress = 0.0.0.0"
|
||||
echo "AllowAlternatePorts = False"
|
||||
echo "NonPhysicalPrimMax = 512"
|
||||
echo "PhysicalPrimMax = 128"
|
||||
echo ";ClampPrimSize = false"
|
||||
echo ";MaxPrimsPerUser = -1"
|
||||
echo ";ScopeID = 30000000-1000-1000-1000-300000000000"
|
||||
echo ";RegionType = Mainland"
|
||||
echo ";RenderMinHeight = -1"
|
||||
echo ";RenderMaxHeight = 100"
|
||||
echo ";MapImageModule = Warp3DImageModule"
|
||||
echo ";TextureOnMapTile = true"
|
||||
echo ";DrawPrimOnMapTile = true"
|
||||
echo ";GenerateMaptiles = true"
|
||||
echo ";MaptileRefresh = 0"
|
||||
echo ";MaptileStaticFile = path/to/SomeFile.png"
|
||||
echo ";MasterAvatarFirstName = ${VORNAME}"
|
||||
echo ";MasterAvatarLastName = ${NACHNAME}"
|
||||
echo ";MasterAvatarSandboxPassword = ${PASSWORT}"
|
||||
} > "$config_file"
|
||||
|
||||
echo "Region '${region_name}' wurde erfolgreich erstellt in ${config_file} (Location: ${location}, Port: ${port})"
|
||||
|
||||
# Datei Regions.ini löschen
|
||||
rm -v "opensim/bin/Regions/Regions.ini"
|
||||
}
|
||||
|
||||
function createstandaloneconfig() {
|
||||
system_ip=$(hostname -I | awk '{print $1}')
|
||||
file="$SCRIPT_DIR/opensim/bin/OpenSim.ini"
|
||||
standalonehg="ja"
|
||||
|
||||
# 1. INI-Datei auslesen mit angepasstem Parsing
|
||||
ini_file="${SCRIPT_DIR}/OpenSimUserInfo.ini"
|
||||
if [[ ! -f "$ini_file" ]]; then
|
||||
log "${COLOR_BAD}UserInfo.ini nicht gefunden unter: $ini_file${COLOR_RESET}"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Parsing-Funktion mit Trim und Leerzeichen im Pattern
|
||||
ini_get() {
|
||||
local section="$1" key="$2"
|
||||
awk -F ' = ' '
|
||||
/^\[/ { current_section = substr($0, 2, length($0)-2) }
|
||||
current_section == "'"$section"'" && $1 == "'"$key"'" {
|
||||
sub(/^[ \t]+/, "", $2) # Trim leading whitespace
|
||||
sub(/[ \t\r]+$/, "", $2) # Trim trailing whitespace
|
||||
print $2
|
||||
exit
|
||||
}
|
||||
' "$ini_file"
|
||||
}
|
||||
|
||||
# Werte auslesen
|
||||
VORNAME=$(ini_get "UserData" "Vorname")
|
||||
NACHNAME=$(ini_get "UserData" "Nachname")
|
||||
PASSWORT=$(ini_get "UserData" "Passwort")
|
||||
|
||||
if [[ -z "$standalonehg" ]]; then
|
||||
log "${COLOR_BAD}FEHLER: Variable 'standalonehg' nicht definiert!${COLOR_RESET}"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# [Const]
|
||||
set_ini_key "$file" "Const" "BaseHostname" "\"${system_ip}\""
|
||||
set_ini_key "$file" "Const" "PublicPort" "\"9010\""
|
||||
# [Estates]
|
||||
set_ini_key "$file" "Estates" "DefaultEstateName" "\"$VORNAME$NACHNAME Estate\""
|
||||
set_ini_key "$file" "Estates" "DefaultEstateOwnerName" "\"9010\""
|
||||
set_ini_key "$file" "Estates" "DefaultEstateOwnerUUID" "\"10000000-1000-1000-1000-100000000000\""
|
||||
set_ini_key "$file" "Estates" "DefaultEstateOwnerPassword" "\"${PASSWORT}\""
|
||||
# [Terrain]
|
||||
set_ini_key "$file" "Terrain" "InitialTerrain" "\"flat\""
|
||||
|
||||
if [[ "$standalonehg" = "ja" ]]; then
|
||||
# [Architecture]
|
||||
set_ini_key "$file" "Architecture" "Include-Architecture" "\"config-include/StandaloneHypergrid.ini\""
|
||||
log "${COLOR_FILE}Erstelle $file${COLOR_RESET}"
|
||||
else
|
||||
# [Architecture]
|
||||
set_ini_key "$file" "Architecture" "Include-Architecture" "\"config-include/Standalone.ini\""
|
||||
log "${COLOR_FILE}Erstelle $file${COLOR_RESET}"
|
||||
fi
|
||||
}
|
||||
|
||||
#* Standalone Installation
|
||||
function buildstandalone() {
|
||||
# OpenSimulator herunterladen und bauen
|
||||
opensimgitcopy
|
||||
# Skripte einfügen
|
||||
osslscriptsgit
|
||||
# Version einstellen
|
||||
versionrevision
|
||||
# OpenSimulator bauen
|
||||
opensimbuild
|
||||
# Standalone Setup
|
||||
standalonesetup
|
||||
# Create Standalone Config
|
||||
createstandaloneconfig
|
||||
# Create Startregion
|
||||
createstandalonregion
|
||||
# create user
|
||||
createstandaloneuser
|
||||
# Standalone neu starten
|
||||
standalonerestart
|
||||
|
||||
log "${COLOR_OK}Standalone OpenSimulator wurde erfolgreich installiert, die Daten stehen in der Datei OpenSimUserInfo.ini${COLOR_RESET}"
|
||||
|
||||
}
|
||||
|
||||
#?──────────────────────────────────────────────────────────────────────────────────────────
|
||||
#* Hilfefunktionen
|
||||
#?──────────────────────────────────────────────────────────────────────────────────────────
|
||||
@@ -5310,11 +5590,15 @@ function help() {
|
||||
log "${COLOR_SECTION}${SYM_SERVER} OpenSim Grundbefehle:${COLOR_RESET}"
|
||||
log "${SYM_VOR} ${COLOR_START}opensimstart${COLOR_RESET} \t\t # Startet OpenSimulator komplett"
|
||||
log "${SYM_VOR} ${COLOR_STOP}opensimstop${COLOR_RESET} \t\t # Stoppt OpenSimulator komplett"
|
||||
log "${SYM_VOR} ${COLOR_START}opensimrestart${COLOR_RESET} \t # Startet den OpenSimulator komplett neu"
|
||||
log "${SYM_VOR} ${COLOR_RESTART}opensimrestart${COLOR_RESET} \t # Startet den OpenSimulator komplett neu"
|
||||
echo
|
||||
log "${SYM_VOR} ${COLOR_START}simstart${COLOR_RESET} \t\t # simX angeben - startet einen Regionsserver"
|
||||
log "${SYM_VOR} ${COLOR_STOP}simstop${COLOR_RESET} \t\t # simX angeben - stoppt einen Regionsserver"
|
||||
log "${SYM_VOR} ${COLOR_START}simrestart${COLOR_RESET} \t\t # simX angeben - startet einen Regionsserver neu"
|
||||
log "${SYM_VOR} ${COLOR_RESTART}simrestart${COLOR_RESET} \t\t # simX angeben - startet einen Regionsserver neu"
|
||||
echo ""
|
||||
log "${SYM_VOR} ${COLOR_START}standalonestart${COLOR_RESET} \t # Standalone starten"
|
||||
log "${SYM_VOR} ${COLOR_STOP}standalonestop${COLOR_RESET} \t # Standalone stoppen"
|
||||
log "${SYM_VOR} ${COLOR_RESTART}standalonerestart${COLOR_RESET} \t # Standalone neu starten"
|
||||
echo ""
|
||||
|
||||
# System-Checks & Setup
|
||||
@@ -5370,13 +5654,30 @@ function prohelp() {
|
||||
log "${COLOR_SECTION}${SYM_SERVER} OpenSim Grundbefehle:${COLOR_RESET}"
|
||||
log "${SYM_VOR} ${COLOR_START}opensimstart${COLOR_RESET} \t\t # OpenSim starten"
|
||||
log "${SYM_VOR} ${COLOR_STOP}opensimstop${COLOR_RESET} \t\t # OpenSim stoppen"
|
||||
log "${SYM_VOR} ${COLOR_START}opensimrestart${COLOR_RESET} \t # OpenSim neu starten"
|
||||
log "${SYM_VOR} ${COLOR_RESTART}opensimrestart${COLOR_RESET} \t # OpenSim neu starten"
|
||||
log "${SYM_VOR} ${COLOR_OK}check_screens${COLOR_RESET} \t # Laufende OpenSim-Prozesse prüfen und neu starten"
|
||||
log "${SYM_VOR} ${COLOR_OK}autoupgrade${COLOR_RESET} \t\t # Automatisches OpenSim upgrade"
|
||||
echo " "
|
||||
log "${SYM_VOR} ${COLOR_START}opensimstartParallel${COLOR_RESET} \t # Startet alle Regionen parallel"
|
||||
log "${SYM_VOR} ${COLOR_STOP}opensimstopParallel${COLOR_RESET} \t # Stoppt alle Regionen parallel"
|
||||
log "${SYM_VOR} ${COLOR_RESTART}opensimrestartParallel${COLOR_RESET} # Startet alle Regionen neu (parallel)"
|
||||
echo " "
|
||||
|
||||
log "${SYM_VOR} ${COLOR_OK}opensimstartParallel${COLOR_RESET} \t # Startet alle Regionen parallel"
|
||||
log "${SYM_VOR} ${COLOR_OK}opensimstopParallel${COLOR_RESET} \t # Stoppt alle Regionen parallel"
|
||||
log "${SYM_VOR} ${COLOR_OK}opensimrestartParallel${COLOR_RESET} # Startet alle Regionen neu (parallel)"
|
||||
#* Standalone-Operationen
|
||||
log "${COLOR_SECTION}${SYM_SCRIPT} Standalone-Operationen:${COLOR_RESET}"
|
||||
log "${SYM_VOR} ${COLOR_START}standalonestart${COLOR_RESET} \t\t # Standalone starten"
|
||||
log "${SYM_VOR} ${COLOR_STOP}standalonestop${COLOR_RESET} \t\t # Standalone stoppen"
|
||||
log "${SYM_VOR} ${COLOR_RESTART}standalonerestart${COLOR_RESET} \t\t # Standalone neu starten"
|
||||
echo " "
|
||||
log "${SYM_VOR} ${COLOR_OK}buildstandalone${COLOR_RESET} \t\t # Standalone erstellen"
|
||||
log "${SYM_VOR} ${COLOR_OK}opensimgitcopy${COLOR_RESET} \t\t # OpenSimulator aus Git kopieren"
|
||||
log "${SYM_VOR} ${COLOR_OK}osslscriptsgit${COLOR_RESET} \t\t # Skripte aus Repository einfügen"
|
||||
log "${SYM_VOR} ${COLOR_OK}versionrevision${COLOR_RESET} \t\t # OpenSimulator-Version festlegen"
|
||||
log "${SYM_VOR} ${COLOR_OK}opensimbuild${COLOR_RESET} \t\t\t # OpenSimulator bauen"
|
||||
log "${SYM_VOR} ${COLOR_OK}standalonesetup${COLOR_RESET} \t\t # Standalone Setup durchführen"
|
||||
log "${SYM_VOR} ${COLOR_OK}createstandaloneconfig${COLOR_RESET} \t # OpenSimulator-Konfiguration erstellen"
|
||||
log "${SYM_VOR} ${COLOR_OK}createstandalonregion${COLOR_RESET} \t # Startregion konfigurieren"
|
||||
log "${SYM_VOR} ${COLOR_OK}createstandaloneuser${COLOR_RESET} \t\t # Benutzer erstellen"
|
||||
echo " "
|
||||
|
||||
#* System-Checks & Setup
|
||||
@@ -5548,7 +5849,7 @@ case $KOMMANDO in
|
||||
del_xml_section) del_xml_section "$2" "$3" ;;
|
||||
|
||||
# STANDALONE-MODUS #
|
||||
standalone) standalone ;;
|
||||
standalonesetup) standalonesetup ;;
|
||||
standalonestart) standalonestart ;;
|
||||
standalonestop) standalonestop ;;
|
||||
standalonerestart) standalonerestart ;;
|
||||
@@ -5569,8 +5870,8 @@ case $KOMMANDO in
|
||||
delete_opensim) delete_opensim ;;
|
||||
|
||||
# Tests #
|
||||
opensimstartParallel) opensimstartParallel ;;
|
||||
faststop|opensimstopParallel) opensimstopParallel ;;
|
||||
opensimstartParallel) opensimstartParallel ;; # Das Parallel verarbeiten kann bei großen Regionen den Server
|
||||
faststop|opensimstopParallel) opensimstopParallel ;; # so belasten das er nicht mehr reagieren kann.
|
||||
opensimrestartParallel) opensimrestartParallel ;;
|
||||
autoupgrade) autoupgrade ;;
|
||||
autoupgradefast) autoupgradefast ;;
|
||||
@@ -5580,6 +5881,8 @@ case $KOMMANDO in
|
||||
robustrepair) robustrepair "$2" "$3" "$4" ;;
|
||||
restoreRobustDump) restoreRobustDump "$2" "$3" "$4" "$5" ;;
|
||||
rootrights) rootrights ;;
|
||||
buildopensim) buildopensim ;;
|
||||
buildstandalone) buildstandalone ;;
|
||||
|
||||
# HILFE & SONSTIGES #
|
||||
generate_all_name) generate_all_name ;;
|
||||
|
||||
Reference in New Issue
Block a user