Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
os-installer mini python installer für Linux
#1
Den habe ich für Ubuntu gemacht, läuft aber garantiert auf anderen Debian basierten Linux Versionen.
Dies installiert aber nur OpenSim Standalone in dem Verzeichnis wo es gestartet wird, sonst nichts weiter.

# Bitte zuerst mono installieren mit: sudo apt-get install mono-complete
# Dieses mini Python Skript installiert euch den OpenSimulator dorthin, wo ihr das Skript gespeichert habt.
# Dies ist mit Ubuntu getestet und alle Installationen laufen sofort als Standalone.
# Ihr muesst nur das Script Startbar machen mit: sudo chmod +x os-installer.py

Code:
#!/usr/bin/python
import os

# Bitte zuerst mono installieren mit: sudo apt-get install mono-complete
# Dieses mini Python Skript installiert euch den OpenSimulator dorthin, wo ihr das Skript gespeichert habt.
# Dies ist mit Ubuntu getestet und alle Installationen laufen sofort als Standalone.
# Ihr muesst nur das Script Startbar machen mit: sudo chmod +x os-installer.py

os.system("clear") # Bildschirm loeschen

print("\033[1;35;40m  ") # Textfarbe Blau
print "Bitte zuerst mono installieren mit: sudo apt-get install mono-complete"
print "Dieses mini Python Skript installiert euch den OpenSimulator dorthin,"
print "wo ihr das Skript gespeichert habt."
print "Dies ist mit Ubuntu getestet und alle Installationen laufen sofort als Standalone."
print "Ihr muesst nur das os-installer.py Skript Startbar machen mit: sudo chmod +x os-installer.py"
print("\033[0;37;40m  ") # Textfarbe Weiss Standart

# INI Dateien umbenennen
def umbenennen():
   print("\033[1;37;40m   ") # Textfarbe Black
   os.system("mv opensim/bin/Robust.HG.ini.example opensim/bin/Robust.ini")
   os.system("mv opensim/bin/config-include/CenomeCache.ini.example opensim/bin/config-include/CenomeCache.ini")
   os.system("mv opensim/bin/config-include/GridCommon.ini.example opensim/bin/config-include/GridCommon.ini")
   os.system("mv opensim/bin/config-include/StandaloneCommon.ini.example opensim/bin/config-include/StandaloneCommon.ini")
   print("\033[0;37;40m  ") # Textfarbe Weiss Standart
    
# INI Dateien umbenennen Dev
def umbenennendev():
   #print("\033[1;37;40m   ") # Textfarbe Black
   os.system("mv opensimdev/bin/OpenSim.ini.example opensimdev/bin/OpenSim.ini")
   os.system("mv opensimdev/bin/Robust.HG.ini.example opensimdev/bin/Robust.ini")
   os.system("mv opensimdev/bin/config-include/CenomeCache.ini.example opensimdev/bin/config-include/CenomeCache.ini")
   os.system("mv opensimdev/bin/config-include/GridCommon.ini.example opensimdev/bin/config-include/GridCommon.ini")
   os.system("mv opensimdev/bin/config-include/StandaloneCommon.ini.example opensimdev/bin/config-include/StandaloneCommon.ini")
   #print("\033[0;37;40m  ") # Textfarbe Weiss Standart

# Textausgabe
def ausgabe():
   #os.system("clear") # Bildschirm loeschen
   print("\033[1;32;40m   ") # Textfarbe Gruen
   print "OpenSim ist soweit fertig als Standalone vorkonfiguriert."
   print "Sollte mono nicht gefunden werden bitte mit sudo apt-get install mono-complete diese nachinstallieren."
   print "Einige OpenSim Funktionen benoetigen weitere Installationen oder Konfigurationen."
   print "Hierzu lesen sie die Anleitungen auf opensimulator.org oder in den einschlaegigen Foren."
   print("\033[0;37;40m  ") # Textfarbe Weiss Standart

# Kompilierscript erstellen
def kompilierscript():
   file = open('compi.sh','w')
   file.write('#!/bin/sh\n')
   file.write('cd opensimdev\n')
   file.write('./runprebuild.sh\n')
   file.write('msbuild /p:Configuration=Release')
   file.close()

print("\033[1;34;40m  ") # Textfarbe Blau
print "***********************************"
print "Sie haben folgende OpenSim auswahl:"
print "***********************************"
print("\033[1;32;40m   ") # Textfarbe Gruen
print "0 = Abbruch" # Abbruch
print "1 = opensim-0.8.2.1" # Alte Opensim Version
print "2 = opensim-0.9.0.0" # Alte Opensim Version
print "3 = opensim-0.9.0.1" # Aktuelle Opensim Version
print "9 = opensim Entwickler Version" # Aktuelle Opensim Version

print("\033[1;34;40m  ") # Textfarbe Blau
auswahl = input("Auswahl : ")

os.system("clear") # Bildschirm loeschen

print("\033[1;32;40m   ") # Textfarbe Gruen
print "OpenSim Downloaden"
print("\033[0;37;40m  ") # Textfarbe Weiss Standart

if auswahl == 1:
   os.system("wget http://opensimulator.org/dist/opensim-0.8.2.1.zip") # Datei holen
   os.system("unzip opensim-0.8.2.1.zip") # Datei entpacken
   os.system("rm -r opensim") # Alte Dateien entfernen
   os.system("mv opensim-0.8.2.1 opensim") # Datei umbenennen
   os.system("rm -r opensim-0.8.2.1.zip") # ZIP Datei entfernen
   umbenennen()
   ausgabe()
elif auswahl == 2:
   os.system("wget http://opensimulator.org/dist/opensim-0.9.0.0.zip") # Datei holen
   os.system("unzip opensim-0.9.0.0.zip") # Datei entpacken
   os.system("rm -r opensim") # Alte Dateien entfernen
   os.system("mv opensim-0.9.0.0 opensim") # Datei umbenennen
   os.system("rm -r opensim-0.9.0.0.zip") # ZIP Datei entfernen
   umbenennen()
   ausgabe()
elif auswahl == 3:
   os.system("wget http://opensimulator.org/dist/opensim-0.9.0.1.zip") # Datei holen
   os.system("unzip opensim-0.9.0.1.zip") # Datei entpacken
   os.system("rm -r opensim") # Alte Dateien entfernen
   os.system("mv opensim-0.9.0.1 opensim") # Datei umbenennen
   os.system("rm -r opensim-0.9.0.1.zip") # ZIP Datei entfernen
   umbenennen()
   ausgabe()
elif auswahl == 9:
   os.system("rm -r opensimdev") # DEV Dateien entfernen
   os.system("git clone git://opensimulator.org/git/opensim opensimdev") # DEV Dateien holen
   kompilierscript()
   os.system("chmod +x compi.sh") # Skript startbar machen
   os.system("./compi.sh") # Skript kompiliert OpenSim
   os.system("rm compi.sh") # Skript Datei entfernen
   umbenennendev()
   ausgabe()
else:
   os.system("clear") # Bildschirm loeschen
   print("\033[1;31;40m  ") # Red
   print "Diese auswahl gibt es nicht oder die Installation wurde abgebrochen."
   print "OpenSim wurde nicht installiert."

print("\033[0;37;40m  ") # Textfarbe Weiss Standart
- Beipackzettel: Kann Spuren von persönlichen Meinungen, Sarkasmus und Ironie enthalten.
Ausdrücke sind nicht für den Verkehr geeignet. Gelesen mindestens haltbar, siehe oben. -
Antworten }
Thanks given by:
#2
Version 3



Ich Habe Diva hinzugefügt.

Ach so was macht das überhaupt:
Es lädt den OpenSimulator aus verschiedenen Quellen herunter, entpackt diesen und benennt die example Dateien um.
Bei der Dev Version Kompiliert er diese vorher und löscht Dateileichen und benennt die example Dateien um.
Man hat dann eine OpenSim Version, ohne großartig etwas eingeben zu müssen.
Genau das richtige für viel Installierer, faule und Anfänger.

ACHTUNG DAS LÖSCHT ALTE INSTALLATIONEN DIE SICH IM GLEICHEN ORDNER BEFINDEN ALSO VORHER UMBENENNEN!!!




Code:
#!/usr/bin/python
import os
import re
import urllib
import ConfigParser

# retrieve data from url
url = urllib.urlopen("http://checkip.dyndns.org/")
data = url.read()
url.close()

#extract url
ip = re.findall(r"Current IP Address:(.*?)</", data)[0].strip()

# Version 2 von Manfred Aabye Lizens GPL 2.
# Bitte zuerst mono installieren mit: sudo apt-get install mono-complete
# Dieses mini Python Skript installiert euch den OpenSimulator dorthin, wo ihr das Skript gespeichert habt.
# Dies ist mit Ubuntu getestet und alle Installationen laufen sofort als Standalone.
# Ihr muesst nur das Script Startbar machen mit: sudo chmod +x os-installer.py

# Farben
# print("\033[1;30;40m")# Dark Gray
# print("\033[1;31;40m")# Bright Red
# print("\033[1;32;40m")# Bright Green
# print("\033[1;33;40m")# Yellow
# print("\033[1;34;40m")# Bright Blue
# print("\033[1;35;40m")# Bright Magenta
# print("\033[1;36;40m")# Bright Cyan
# print("\033[1;37;40m")# White

# INI Konfigurator
def configwriter():
   config = ConfigParser.RawConfigParser()

   config.add_section('Const')
   config.set('Const', ';#', 'Konstanten Sektionstest')
   config.set('Const', 'BaseHostname', '"' + ip + '"')
   config.set('Const', 'BaseURL', 'http://${Const|BaseHostname}')
   config.set('Const', 'PublicPort', '"' + '8002' + '"')
   config.set('Const', 'PrivatePort', '"' + '8003' + '"')

   # Schreibt in unsere Konfigurationsdatei example.ini
   with open('example.ini', 'wb') as configfile:
       config.write(configfile)

os.system("clear") # Bildschirm loeschen

def asciiart1():
   print("\033[1;32;40m")
   print "#######                       #####                                                    "
   print "#     # #####  ###### #    # #     # # #    # #    # #        ##   #####  ####  #####  "
   print "#     # #    # #      ##   # #       # ##  ## #    # #       #  #    #   #    # #    # "
   print "#     # #    # #####  # #  #  #####  # # ## # #    # #      #    #   #   #    # #    # "
   print "#     # #####  #      #  # #       # # #    # #    # #      ######   #   #    # #####  "
   print "#     # #      #      #   ## #     # # #    # #    # #      #    #   #   #    # #   #  "
   print "####### #      ###### #    #  #####  # #    #  ####  ###### #    #   #    ####  #    # "

def asciiart2():
   print("\033[1;32;40m")
   print "  ___                   ____  _                 _       _             "
   print " / _ \ _ __   ___ _ __ / ___|(_)_ __ ___  _   _| | __ _| |_ ___  _ __ "
   print "| | | | '_ \ / _ \ '_ \\___ \| | '_ ` _ \| | | | |/ _` | __/ _ \| '__|"
   print "| |_| | |_) |  __/ | | |___) | | | | | | | |_| | | (_| | || (_) | |   "
   print " \___/| .__/ \___|_| |_|____/|_|_| |_| |_|\__,_|_|\__,_|\__\___/|_|   "
   print "      |_|  "

def asciiart3():
   print("\033[1;32;40m")
   print "#####                       ####                                                   "
   print "#   # #####  ###### #    # #    # # #    # #    # #        ##   #####  ####  ####  "
   print "#   # #    # #      ##   # #      # ##  ## #    # #       #  #    #   #    # #   # "
   print "#   # #    # #####  # #  #  ####  # # ## # #    # #      #    #   #   #    # #   # "
   print "#   # #####  #      #  # #      # # #    # #    # #      ######   #   #    # ####  "
   print "#   # #      #      #   ## #    # # #    # #    # #      #    #   #   #    # #  #  "
   print "##### #      ###### #    #  ####  # #    #  ####  ###### #    #   #    ####  #   # "
    
# Textausgabe
def ueberschrift():
   print("\033[1;30;40m")# Dark Gray
   print "Bitte zuerst mono installieren mit: sudo apt-get install mono-complete"
   print "Dieses mini Python Skript installiert den OpenSimulator dorthin,"
   print "wo sie das Skript gespeichert haben."
   print "Dies ist mit Ubuntu getestet und alle Installationen laufen sofort als Standalone."
   print "Die Diva Version ist hier eine ausnahme da sie einen Konfigurator besitzt."
   print "Sie muessen nur das os-installer.py Skript Startbar machen mit: sudo chmod +x os-installer.py"

# INI Dateien umbenennen
def umbenennen():
   print("\033[1;37;40m   ") # Textfarbe Black
   os.system("mv opensim/bin/Robust.HG.ini.example opensim/bin/Robust.ini")
   os.system("mv opensim/bin/config-include/CenomeCache.ini.example opensim/bin/config-include/CenomeCache.ini")
   os.system("mv opensim/bin/config-include/GridCommon.ini.example opensim/bin/config-include/GridCommon.ini")
   os.system("mv opensim/bin/config-include/StandaloneCommon.ini.example opensim/bin/config-include/StandaloneCommon.ini")
   os.system("mv opensim/bin/config-include/FlotsamCache.ini.example opensim/bin/config-include/FlotsamCache.ini")
   os.system("mv opensim/bin/config-include/StandaloneCommon.ini.example opensim/bin/config-include/StandaloneCommon.inie")
   os.system("mv opensim/bin/config-include/StandaloneHypergrid.ini.example opensim/bin/config-include/StandaloneHypergrid.ini")
   os.system("mv opensim/bin/pCampBot.ini.example opensim/bin/pCampBot.ini")
   os.system("mv opensim/bin/Robust.HG.ini.example opensim/bin/Robust.HG.ini")
   os.system("mv opensim/bin/OpenSim.ConsoleClient.ini.example opensim/bin/OpenSim.ConsoleClient.ini")
   os.system("mv opensim/bin/shutdown_commands.txt.example opensim/bin/shutdown_commands.txt")
   os.system("mv opensim/bin/startup_commands.txt.example")
   os.system("mv opensim/bin/http_404.html.example opensim/bin/http_404.html")
   os.system("mv opensim/bin/http_500.html.example opensim/bin/http_500.html")
   os.system("mv opensim/bin/http_loginform.html.example opensim/bin/http_loginform.html")
    
# INI Dateien umbenennen Dev
def umbenennendev():
   #print("\033[1;37;40m   ") # Textfarbe Black
   os.system("mv opensim/bin/OpenSim.ini.example opensim/bin/OpenSim.ini")

# Textausgabe
def ausgabe():
   #os.system("clear") # Bildschirm loeschen
   print("\033[1;32;40m   ") # Textfarbe Gruen
   print "OpenSim ist soweit fertig als Standalone vorkonfiguriert."
   print "Sollte mono nicht gefunden werden, bitte diese mit "
   print "sudo apt-get install mono-complete diese nachzuinstallieren."
   print "Einige OpenSim Funktionen benoetigen weitere Installationen oder Konfigurationen."
   print "Hierzu lesen sie die Anleitungen auf opensimulator.org oder in den einschlaegigen Foren."
   print("\033[1;34;40m  ") # Textfarbe Blau
   print "Wechseln sie in das Verzeichnis opensim/bin/ und "
   print "starten sie den OpenSimulator mit mono OpenSim.exe."
   print "Beim ersten Start kommen ein paar abfragen die eigentlich selbsterklaerend sind."
   print "Die wichtigen Daten sind nur Regionsnamen, Vorname, Nachname, Passwort."
   print "Starten sie nun den OpenSimulator neu."
   print("\033[1;35;40m  ") # Textfarbe Rosa
   print "Sie koennen sich jetzt mit einem Viewer und ihrer IP gefolgt von :9000 einloggen, "
   print "hierzu geben sie einfach im Grid-Manager des "
   print 'Viewer http://' + str(ip) + ':9000/ ein und druecken sie auf Refresh.'
   print("\033[0;37;40m  ") # Textfarbe Weiss Standart

def ausgabediva():
   #os.system("clear") # Bildschirm loeschen
   print("\033[1;35;40m  ") # Textfarbe Rosa
   print "Die Diva Version des OpenSimulator hat einen Konfigurator "
   print "worueber das Paket eingestellt wird."
   print "Der Konfigurator kann so oft gestartet werden wie man moechte, keine Angst bei Fehlern"
   print "Die Diva Version benoetigt mySQL als Datenbank System, "
   print "dieses bitte vorher mit sudo apt-get install mysql-server installieren."
   print "Wechseln sie hierzu in das Verzeichnis opensim/bin/ "
   print "und starten sie den Konfigurator mit mono Configure.exe. "
   print "Befolgen sie nun alle schritte der abfrage."
   print("\033[1;34;40m  ") # Textfarbe Blau
   print "Wechseln sie in das Verzeichnis opensim/bin/ und "
   print "starten sie den OpenSimulator mit mono OpenSim.exe."
   print "Beim ersten Start kommen ein paar abfragen die eigentlich selbsterklaerend sind."
   print "Die wichtigen Daten sind nur Regionsnamen, Vorname, Nachname, Passwort."
   print "Starten sie nun den OpenSimulator neu."
   print("\033[1;32;40m   ") # Textfarbe Gruen
   print "Sie koennen sich jetzt mit einem Viewer und ihrer IP gefolgt von :9000 einloggen, "
   print "hierzu geben sie einfach im Grid-Manager des "
   print 'Viewer http://' + str(ip) + ':9000/ ein und druecken sie auf Refresh.'
   print("\033[0;37;40m  ") # Textfarbe Weiss Standart

# Kompilierscript erstellen
def kompilierscript():
   file = open('compi.sh','w')
   file.write('#!/bin/sh\n')
   file.write('cd opensimdev\n')
   file.write('./runprebuild.sh\n')
   file.write('msbuild /p:Configuration=Release')
   file.close()

ueberschrift()
asciiart3()

print("\033[1;34;40m")# Bright Blue
print "Der OpenSimulator stellt einen Virtuellen Dreidimensionalen Raum zur verfuegung."
print("\033[1;30;40m")# Dark Gray
print 'Ihre Externe IP ist: '  + str(ip)
print 'Die Viewer Einwahl ist somit: http://' + str(ip) + ':9000/'
print("\033[1;34;40m  ") # Textfarbe Blau
print "***********************************"
print "Sie haben folgende OpenSim auswahl:"
print "***********************************"
print("\033[1;31;40m  ") # Red
print "0 = Abbruch" # Abbruch
print "1 = opensim-0.8.2.1" # Alte Opensim Version
print "2 = opensim-0.9.0.0" # Alte Opensim Version
print "3 = diva-opensim-0.9.0.0 mit Webinterface und Konfigurator" # Aktuelle Opensim Version
print "4 = opensim-0.9.0.1 Standardversion" # Aktuelle Opensim Version
print "7 = opensim 0.9.1 Entwickler Git Version" # Aktuelle Opensim Version
print "9 = Konfigurationstest" # Aktuelle Opensim Version

print("\033[1;34;40m  ") # Textfarbe Blau
auswahl = input("Auswahl : ")

os.system("clear") # Bildschirm loeschen

print("\033[1;32;40m   ") # Textfarbe Gruen
print "OpenSim Downloaden"
print("\033[0;37;40m  ") # Textfarbe Weiss Standart

if auswahl == 1:
   os.system("wget http://opensimulator.org/dist/opensim-0.8.2.1.zip") # Datei holen
   os.system("unzip opensim-0.8.2.1.zip") # Datei entpacken
   os.system("rm -r opensim") # Alte Dateien entfernen
   os.system("mv opensim-0.8.2.1 opensim") # Datei umbenennen
   os.system("rm -r opensim-0.8.2.1.zip") # ZIP Datei entfernen
   umbenennen() # Example umbenennen
   ausgabe() # Abschlusstext
elif auswahl == 2:
   os.system("wget http://opensimulator.org/dist/opensim-0.9.0.0.zip") # Datei holen
   os.system("unzip opensim-0.9.0.0.zip") # Datei entpacken
   os.system("rm -r opensim") # Alte Dateien entfernen
   os.system("mv opensim-0.9.0.0 opensim") # Datei umbenennen
   os.system("rm -r opensim-0.9.0.0.zip") # ZIP Datei entfernen
   umbenennen() # Example umbenennen
   ausgabe() # Abschlusstext
elif auswahl == 3:
   os.system("wget http://metaverseink.com/download/diva-r09000.zip") # Datei holen
   os.system("unzip diva-r09000.zip") # Datei entpacken
   os.system("rm -r opensim") # Alte Dateien entfernen
   os.system("mv diva-r09000 opensim") # Datei umbenennen
   os.system("rm -r diva-r09000.zip") # ZIP Datei entfernen
   ausgabediva() # Abschlusstext
elif auswahl == 4:
   os.system("wget http://opensimulator.org/dist/opensim-0.9.0.1.zip") # Datei holen
   os.system("unzip opensim-0.9.0.1.zip") # Datei entpacken
   os.system("rm -r opensim") # Alte Dateien entfernen
   os.system("mv opensim-0.9.0.1 opensim") # Datei umbenennen
   os.system("rm -r opensim-0.9.0.1.zip") # ZIP Datei entfernen
   umbenennen() # Example umbenennen
   ausgabe() # Abschlusstext
elif auswahl == 7:
   os.system("rm -r opensimdev") # Alte DEV Dateien entfernen
   os.system("rm -r opensim") # Alte opensim Dateien entfernen
   os.system("git clone git://opensimulator.org/git/opensim opensimdev") # DEV Dateien holen
   kompilierscript()
   os.system("chmod +x compi.sh") # Skript startbar machen
   os.system("./compi.sh") # Skript kompiliert OpenSim
   os.system("rm compi.sh") # Skript Datei entfernen
   os.system("mkdir opensim") # Verzeichnis erstellen zum bereinigen
   os.system("cp -r opensimdev/bin opensim") # Kopieren der benoetigten Daten
   os.system("rm -r opensimdev") # DEV Dateien entfernen
   umbenennen() # Example umbenennen
   umbenennendev() # Example umbenennen der DEV
   ausgabe() # Abschlusstext
elif auswahl == 9:
   configwriter()
else:
   os.system("clear") # Bildschirm loeschen
   print("\033[1;31;40m  ") # Red
   print "Diese auswahl gibt es nicht oder die Installation wurde abgebrochen."
   print "OpenSim wurde nicht installiert."

print("\033[0;37;40m  ") # Textfarbe Weiss Standart
- Beipackzettel: Kann Spuren von persönlichen Meinungen, Sarkasmus und Ironie enthalten.
Ausdrücke sind nicht für den Verkehr geeignet. Gelesen mindestens haltbar, siehe oben. -
Antworten }
Thanks given by:
#3
Version 3

Auf Github: https://github.com/BigManzai/opensim-installer

   
- Beipackzettel: Kann Spuren von persönlichen Meinungen, Sarkasmus und Ironie enthalten.
Ausdrücke sind nicht für den Verkehr geeignet. Gelesen mindestens haltbar, siehe oben. -
Antworten }
Thanks given by:
#4
Wozu noch ein Installer fragt ihr euch sicher.
Dieser ist absolut minimal und ressourcenschonend das ist alles.

Das ganze funktioniert eigentlich ganz einfach.

In der regel installiert man den OpenSimulator in das Verzeichnis /opt also für Optionale Software.
Man kann es aber auch im home/.. Verzeichnis installieren oder sonst wo hin.

Kopiert das Installationsskript os-installer.py in dieses gewünschte Verzeichnis
und macht es bitte mit #sudo chmod +x os-installer.py# Startbar.
(os-installer arbeitet vom gewünschten Verzeichnis aus und legt dort weitere Verzeichnisse an.)

Jetzt startet ihr den os-installer mit #./os-installer.py#.

Nehmen wir jetzt an ihr wollt die Version 0.9.0.1 installieren dazu drückt ihr die 4 und anschließend enter.

Jetzt startet ihr es noch einmal mit #./os-installer.py# und wählt Start Stop Skripte erstellen genau so aus.

Jetzt könnt ihr euren neuen OpenSimulator einfach mit #./start.sh# starten und mit #./stop.sh# stoppen.

Wollt ihr an ein bestehendes Grid anbinden so besorgt euch von dort die Dateien OpenSim.ini und GridCommons.ini
und tauscht diese im OpenSimulator aus.
Sind die Versionsunterschiede zu groß zwischen dem OpenSimulator des Gridbetreiber und eurem OpenSimulator,
so müsst ihr die einzelnen Einträge von Hand in die neuen ini Dateien übertragen.

Ich habe versucht mit Python diese ini Dateien zu bearbeiten,
aber der ini Parser ist nicht wirklich kompatibel zu den vom OpenSimulator verwendeten ini Formates.
Das heißt wenn ich diese Funktion einfügen möchte, würde der os-installer einfach viel zu groß.
- Beipackzettel: Kann Spuren von persönlichen Meinungen, Sarkasmus und Ironie enthalten.
Ausdrücke sind nicht für den Verkehr geeignet. Gelesen mindestens haltbar, siehe oben. -
Antworten }
Thanks given by:


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste