WinFuture-Forum.de: Ubuntu Server plus Minekraft - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Linux
  • 2 Seiten +
  • 1
  • 2

Ubuntu Server plus Minekraft Minekraft als Deamonservice nicht erreichbar


#1 Mitglied ist offline   Tomarr 

  • Gruppe: aktive Mitglieder
  • Beiträge: 25
  • Beigetreten: 02. Januar 08
  • Reputation: 0

geschrieben 24. Juni 2015 - 19:06

Hallo zusammen.

Ich habe bei mir zuhause einen Server basierend auf Ubuntu Server aufgesetzt der eigentlich nur als DLNA-Server dienen sollte.

Da der damit aber etwas unterfordert ist habe ich mich für einen Kumpel bereit erklärt auch noch einen Minecraft-Server darauf aufzusetzen.

Nun habe ich aber folgendes Problem. Ich wollte den Minecraft-Server als Daemon starten. Dazu habe ich auch folgendes Script im Internet gefunden.

#!/bin/bash
# /etc/init.d/minecraft
# version 0.4.1 2015-05-07 (YYYY-MM-DD)
#
### BEGIN INIT INFO
# Provides:   minecraft
# Required-Start: $local_fs $remote_fs screen-cleanup
# Required-Stop:  $local_fs $remote_fs
# Should-Start:   $network
# Should-Stop:    $network
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6
# Short-Description:    Minecraft server
# Description:    Starts the minecraft server
### END INIT INFO

#Settings
SERVICE='minecraft_server.jar'
SCREENNAME='minecraft_server'
OPTIONS='nogui'
USERNAME='minecraft'
WORLD='world'
MCPATH='/home/minecraft'
BACKUPPATH='/media/remote.share/minecraft.backup'
MAXHEAP=2048
MINHEAP=1024
HISTORY=1024
CPU_COUNT=1
INVOCATION="java -Xmx${MAXHEAP}M -Xms${MINHEAP}M -XX:+UseConcMarkSweepGC \
-XX:+CMSIncrementalPacing -XX:ParallelGCThreads=$CPU_COUNT -XX:+AggressiveOpts \
-jar $SERVICE $OPTIONS" 

ME=`whoami`
as_user() {
  if [ "$ME" = "$USERNAME" ] ; then
    bash -c "$1"
  else
    su - "$USERNAME" -c "$1"
  fi
}

mc_start() {
  if  pgrep -u $USERNAME -f $SERVICE > /dev/null
  then
    echo "$SERVICE is already running!"
  else
    echo "Starting $SERVICE..."
    cd $MCPATH
    as_user "cd $MCPATH && screen -h $HISTORY -dmS ${SCREENNAME} $INVOCATION"
    sleep 7
    if pgrep -u $USERNAME -f $SERVICE > /dev/null
    then
      echo "$SERVICE is now running."
    else
      echo "Error! Could not start $SERVICE!"
    fi
  fi
}

mc_saveoff() {
  if pgrep -u $USERNAME -f $SERVICE > /dev/null
  then
    echo "$SERVICE is running... suspending saves"
    as_user "screen -p 0 -S ${SCREENNAME} -X eval 'stuff \"say SERVER BACKUP STARTING. Server going readonly...\"\015'"
    as_user "screen -p 0 -S ${SCREENNAME} -X eval 'stuff \"save-off\"\015'"
    as_user "screen -p 0 -S ${SCREENNAME} -X eval 'stuff \"save-all\"\015'"
    sync
    sleep 10
  else
    echo "$SERVICE is not running. Not suspending saves."
  fi
}

mc_saveon() {
  if pgrep -u $USERNAME -f $SERVICE > /dev/null
  then
    echo "$SERVICE is running... re-enabling saves"
    as_user "screen -p 0 -S ${SCREENNAME} -X eval 'stuff \"save-on\"\015'"
    as_user "screen -p 0 -S ${SCREENNAME} -X eval 'stuff \"say SERVER BACKUP ENDED. Server going read-write...\"\015'"
  else
    echo "$SERVICE is not running. Not resuming saves."
  fi
}

mc_stop() {
  if pgrep -u $USERNAME -f $SERVICE > /dev/null
  then
    echo "Stopping $SERVICE"
    as_user "screen -p 0 -S ${SCREENNAME} -X eval 'stuff \"say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map...\"\015'"
    as_user "screen -p 0 -S ${SCREENNAME} -X eval 'stuff \"save-all\"\015'"
    sleep 10
    as_user "screen -p 0 -S ${SCREENNAME} -X eval 'stuff \"stop\"\015'"
    sleep 7
  else
    echo "$SERVICE was not running."
  fi
  if pgrep -u $USERNAME -f $SERVICE > /dev/null
  then
    echo "Error! $SERVICE could not be stopped."
  else
    echo "$SERVICE is stopped."
  fi
} 

mc_update() {
  if pgrep -u $USERNAME -f $SERVICE > /dev/null
  then
    echo "$SERVICE is running! Will not start update."
  else
    as_user "cd $MCPATH && wget -q -O $MCPATH/versions http://s3.amazonaws.com/Minecraft.Download/versions/versions.json"
       snap=`awk -v linenum=3 'NR == linenum {print; exit}' "$MCPATH/versions"`
       snapVersion=`echo $snap | awk -F'\"' '{print $4}'`
       re=`awk -v linenum=4 'NR == linenum {print; exit}' "$MCPATH/versions"`
       reVersion=`echo $re | awk -F'\"' '{print $4}'`
       as_user "rm $MCPATH/versions"
       if [ "$1" == "snapshot" ]; then
       MC_SERVER_URL=http://s3.amazonaws.com/Minecraft.Download/versions/$snapVersion/minecraft_server.$snapVersion.jar
       else
       MC_SERVER_URL=http://s3.amazonaws.com/Minecraft.Download/versions/$reVersion/minecraft_server.$reVersion.jar
       fi
    as_user "cd $MCPATH && wget -q -O $MCPATH/minecraft_server.jar.update $MC_SERVER_URL"
    if [ -f $MCPATH/minecraft_server.jar.update ]
    then
      if `diff $MCPATH/$SERVICE $MCPATH/minecraft_server.jar.update >/dev/null`
      then 
        echo "You are already running the latest version of $SERVICE."
      else
        as_user "mv $MCPATH/minecraft_server.jar.update $MCPATH/$SERVICE"
        echo "Minecraft successfully updated."
      fi
    else
      echo "Minecraft update could not be downloaded."
    fi
  fi
}

mc_backup() {
   mc_saveoff
   
   NOW=`date "+%Y-%m-%d_%Hh%M"`
   BACKUP_FILE="$BACKUPPATH/${WORLD}_${NOW}.tar"
   echo "Backing up minecraft world..."
   #as_user "cd $MCPATH && cp -r $WORLD $BACKUPPATH/${WORLD}_`date "+%Y.%m.%d_%H.%M"`"
   as_user "tar -C \"$MCPATH\" -cf \"$BACKUP_FILE\" $WORLD"

   echo "Backing up $SERVICE"
   as_user "tar -C \"$MCPATH\" -rf \"$BACKUP_FILE\" $SERVICE"
   #as_user "cp \"$MCPATH/$SERVICE\" \"$BACKUPPATH/minecraft_server_${NOW}.jar\""

   mc_saveon

   echo "Compressing backup..."
   as_user "gzip -f \"$BACKUP_FILE\""
   echo "Done."
}

mc_command() {
  command="$1";
  if pgrep -u $USERNAME -f $SERVICE > /dev/null
  then
    pre_log_len=`wc -l "$MCPATH/logs/latest.log" | awk '{print $1}'`
    echo "$SERVICE is running... executing command"
    as_user "screen -p 0 -S ${SCREENNAME} -X eval 'stuff \"$command\"\015'"
    sleep .1 # assumes that the command will run and print to the log file in less than .1 seconds
    # print output
    tail -n $[`wc -l "$MCPATH/logs/latest.log" | awk '{print $1}'`-$pre_log_len] "$MCPATH/logs/latest.log"
  fi
}

#Start-Stop here
case "$1" in
  start)
    mc_start
    ;;
  stop)
    mc_stop
    ;;
  restart)
    mc_stop
    mc_start
    ;;
  update)
    mc_stop
    mc_backup
    mc_update $2
    mc_start
    ;;
  backup)
    mc_backup
    ;;
  status)
    if pgrep -u $USERNAME -f $SERVICE > /dev/null
    then
      echo "$SERVICE is running."
    else
      echo "$SERVICE is not running."
    fi
    ;;
  command)
    if [ $# -gt 1 ]; then
      shift
      mc_command "$*"
    else
      echo "Must specify server command (try 'help'?)"
    fi
    ;;

  *)
  echo "Usage: $0 {start|stop|update|backup|status|restart|command \"server command\"}"
  exit 1
  ;;
esac

exit 0



Ich habe die Pfade und so weiter natürlich angepasst und wenn ich über "service minecraft status" abfrage sagt er mir auch das minecraft aktiv ist, jedoch ist der Server dann von keinem Client erreichbar.

Zur gegenprobe habe ich den Minecraftserver direkt von der Kommandozeile aus gestartet und er war ohne weiteres erreichbar. Das Problem ihn so laufen zu lassen ist nur das er dann die Terminaleingabe blockiert.
0

Anzeige



#2 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.895
  • Beigetreten: 20. Juli 07
  • Reputation: 1.126
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Ja

geschrieben 24. Juni 2015 - 19:37

Steht nix in der Logdatei drin? Wenn das Ding laut 'status' ausgeführt wird, kannst Dir unter /proc ja auch mal die Kommandozeile und die Umgebung anschauen. Vielleicht hakt da ja anderswo was.

Läßt sich das Ding eigentlich nicht direkt starten? Sollte das nicht auch ohne screen gehen?
"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

#3 Mitglied ist offline   Tomarr 

  • Gruppe: aktive Mitglieder
  • Beiträge: 25
  • Beigetreten: 02. Januar 08
  • Reputation: 0

geschrieben 25. Juni 2015 - 10:30

Doch, direct starten geht natürlich auch. Nur da der Server dann ja auf seine eigenen Kommandos wartet legt er mir dann natürlich die Servereingabe im Terminal lahm. Deswegen dachte ich halt dass das die Lösung währe weil man laut Script da ja die Minecraftkommandos per Servicebefehl eingeben kann.

Ach ja, und was die Logdatei von Minecraft angeht, die wird gar nicht erneuert. Was wiederum darauf deutet dass MC nicht wirklich ausgeführt wird. Nur wie bekomme ich jetzt raus was da wirklich los ist?

Dieser Beitrag wurde von Tomarr bearbeitet: 25. Juni 2015 - 10:34

0

#4 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.895
  • Beigetreten: 20. Juli 07
  • Reputation: 1.126
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Ja

geschrieben 25. Juni 2015 - 14:31

Hängst ein & hintendran und gut. :wink: Aber, einmal logoff und das Ding ist auch weg. Also nicht optimal.

Aber, nein, mit "direkt" meinte ich nicht vom Terminal aus starten, sondern ohne das "screen". Weiß aber jetzt nicht, ob java da mitmacht oder ob es da aussteigt, wenn es keine Benutzerschnittstelle findet, auf die es zeichnen könnte.


--- So oder so hattest Du aber gesagt, daß "service ... status" etwas ausgibt. Das Ding ist zwar ein bissel unsauber gebaut, aber... wenn Du einfach das "> /dev/null" hinter pgrep... in der status)-Sektion wegnimmst, solltest Du eigentlich (sehr quick und sehr dirty) auch zumindest eine PID zurückgeliefert kriegen. Mit der müßtest Du dann unter /proc schauen, was Sache ist - bzw ob überhaupt was Sache ist. Und wem der Prozess gehört, was das angeht; möglicherweise haut da schon was nicht hin.
"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

#5 Mitglied ist offline   Sturmovik 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.776
  • Beigetreten: 10. Januar 08
  • Reputation: 445
  • Geschlecht:unbekannt
  • Wohnort:In Reichweite der Kaffeemaschine
  • Interessen:IT, Luftfahrt, historische Technik

geschrieben 25. Juni 2015 - 17:07

Vielleicht müsste screen einfach nur installiert werden?
«Geschichte wiederholt sich nicht, aber sie reimt sich» (Mark Twain)

Unix won't hold your hand. You wanna shoot your foot, Unix reliably delivers the shot.

True Cloudstorage
0

#6 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.895
  • Beigetreten: 20. Juli 07
  • Reputation: 1.126
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Ja

geschrieben 25. Juni 2015 - 17:41

Hatte ich auch gedacht, aber wenn ich das Script oben richtig lese, dürfte es ja dann mit dem service status nix geben.

... Wenn das Ding nicht so larifari hingehustet wär :huh: Da gibts ja kein Check und nix, einmal die JAR von der Kommandozeile starten und das Teil meint der Service wäre da. :/
"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

#7 Mitglied ist offline   Sturmovik 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.776
  • Beigetreten: 10. Januar 08
  • Reputation: 445
  • Geschlecht:unbekannt
  • Wohnort:In Reichweite der Kaffeemaschine
  • Interessen:IT, Luftfahrt, historische Technik

geschrieben 25. Juni 2015 - 18:52

hm, stimmt auch wieder. hab mir das script vorhin nicht wirklich durchgelesen. Hatte selbst grad die Übersicht in nem 20k-Zeiler verloren :rolleyes:

Wenn das Script nur unreflektiert ausm Netz kopiert ist, gibts da einige Baustellen. Das fängt oben beim Usernamen an und geht über Programme, von denen das Script abhängt...

Was sagt eigentlich ps aux|grep 'USER\|minecraft' zu dem Thema?
«Geschichte wiederholt sich nicht, aber sie reimt sich» (Mark Twain)

Unix won't hold your hand. You wanna shoot your foot, Unix reliably delivers the shot.

True Cloudstorage
0

#8 Mitglied ist offline   Tomarr 

  • Gruppe: aktive Mitglieder
  • Beiträge: 25
  • Beigetreten: 02. Januar 08
  • Reputation: 0

geschrieben 25. Juni 2015 - 20:25

Screen ist natürlich installiert. Das war ja auch das einfachste an der Sache.

Mit Scripten in Linux kenne ich mich leider weniger aus als mir lieb ist. Aber da ich den Server ursprünglich nur als DNLA-Server betreiben wollte und die Einrichtung als eines solchen easy peasy ist habe ich keine Notwendigkeit gefunden mich näher damit zu beschäftigen. Mal abgesehen von der Zeit die ich so am Tag habe um sowas zu lernen.

Bin halt davon ausgegangen dass das Script aus dem offiziellen MC-Wiki schon ok sein wird. Ich meine, ich werde doch nicht den einzigen Ubuntu-Linux-Server in der Community haben. Da hätten sich doch bestimmt schon einige mit Verbesserungen gemeldet.

Welche Informationen aus deiner "ps aux|grep 'USER\|minecraft'" Kommandoreihe willst denn haben?
0

#9 Mitglied ist offline   Sturmovik 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.776
  • Beigetreten: 10. Januar 08
  • Reputation: 445
  • Geschlecht:unbekannt
  • Wohnort:In Reichweite der Kaffeemaschine
  • Interessen:IT, Luftfahrt, historische Technik

geschrieben 25. Juni 2015 - 20:38

Na eben das was da ausgegeben wird: ps aux => liste mal alle Prozesse | Filtere die Zeilen die entweder USER oder minecraft enthalten.

Interessant wäre hier a) ob da überhaupt was läuft und b) welche commandline dahinterliegt und c) unter welchem User das ganze stattfindet.

pgrep ist da nämlich wenig aussagekräftig, da es nur die PID raushaut.

netstat -a wäre auch ne Anlaufstelle um zu gucken, ob und auf welchem Port da ein Daemon horcht.
«Geschichte wiederholt sich nicht, aber sie reimt sich» (Mark Twain)

Unix won't hold your hand. You wanna shoot your foot, Unix reliably delivers the shot.

True Cloudstorage
0

#10 Mitglied ist offline   Tomarr 

  • Gruppe: aktive Mitglieder
  • Beiträge: 25
  • Beigetreten: 02. Januar 08
  • Reputation: 0

geschrieben 25. Juni 2015 - 21:47

Also die Zeile die minecraft beinhalten lauten (Ich lass mal die Zahlen vorne weg)

SCREEN -h 1024 -dmS minecraft java -Xmx8G -Xms4G -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalPacking -XX:ParallelGCThreads=1 -XX:+AggressivOpts -jar minecraft-s

Bei netstat -a finde ich nur die entsprechende Portummer als tcp6 und als Status LISTEN

Also sollte demzufolge ja auch alles ok sein. denke ich.
0

#11 Mitglied ist offline   Sturmovik 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.776
  • Beigetreten: 10. Januar 08
  • Reputation: 445
  • Geschlecht:unbekannt
  • Wohnort:In Reichweite der Kaffeemaschine
  • Interessen:IT, Luftfahrt, historische Technik

geschrieben 25. Juni 2015 - 21:55

Ja das sieht schonmal gut aus. Zumindest entspricht die Commandline in etwa dem, was in dem Script steht. Bis auf die Variablen maxheap und minheap.

Und wenn der Port offen ist, sollte der Server auch erreichbar sein.
«Geschichte wiederholt sich nicht, aber sie reimt sich» (Mark Twain)

Unix won't hold your hand. You wanna shoot your foot, Unix reliably delivers the shot.

True Cloudstorage
0

#12 Mitglied ist offline   Tomarr 

  • Gruppe: aktive Mitglieder
  • Beiträge: 25
  • Beigetreten: 02. Januar 08
  • Reputation: 0

geschrieben 26. Juni 2015 - 19:42

So, habe den Fehler gefumden. Es war wohl ein ganz anderer Fehler, nämlich dass die Dateizugriffsrechte nicht ganz passten. Typischer Linuxanfänger fehler würde ich sagen.

Nur habe ich jetzt ein etwas anderes Problem, er sagt mir das ich für den MC-Server ein Update benötige. Leider kann ich den Service jetzt nicht mehr stoppen. Also als typischer Windowsuser hatte ich ja schon einige Programme die nicht gestartet werden konnten, aber beenden ging eigentlich immer. Wie bekomme ich das denn nun hin?

EDit: Zu früh gefreut. Ich dachte schon es funktioniert. Hatte mit dem Client ausprobiert mich zu verbinden und es stand in der Serverliste danach Update, also das er wohl den Server gefunden hat, das jedoch die Versionen unterschiedlich sind. Nun habe ich den neuesten Server aufgespielt und es kommt wieder keine Verbindung zustande.

Aber vielleicht hilft ja der Hinweis das der Client sich soweit verbinden kann um zu erkennen dass die Versionen nicht überein stimmen.

Dieser Beitrag wurde von Tomarr bearbeitet: 26. Juni 2015 - 19:57

0

#13 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.895
  • Beigetreten: 20. Juli 07
  • Reputation: 1.126
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Ja

geschrieben 27. Juni 2015 - 05:11

service ... stop tut nix? :unsure: In jedem Fall war man bei der Erstellung so freundlich und hat auch gleich ein service ... update implementiert. Was, wenn die URLs so hinhauen, sogar funktionieren müßte.


Allerdings weiß ich jetzt wirklich nicht, und kann es auch grad nicht herauslesen, ob Du das Script - so wie es da oben steht -- an Dein System angepaßt hast oder nicht.

Eher im Gegenteil - und sorry, falls ich das mißverstanden haben sollte.


Denn falls nicht, wäre es nicht soo verwunderlich, daß das nicht so hinhaut, wie es soll.


Ansonsten stolper ich grad über das TCP6, was Status LISTENING hat. Da haut wohl was mit der Konfiguration nicht hin, wenn MC an TCP6 lauscht und an TCP4 aber nicht.
"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

#14 Mitglied ist offline   Tomarr 

  • Gruppe: aktive Mitglieder
  • Beiträge: 25
  • Beigetreten: 02. Januar 08
  • Reputation: 0

geschrieben 27. Juni 2015 - 10:19

Ja, mit Service Update habe ich es ja am Anfang versucht. Da kam dann auch die Meldung dass der Service nicht gestoppt werden kann und deswegen kein Update vollzogen wird. Danach mit Service Stop usw. genau das selbe Problem.

Wenn du mit Skript anpassen meinst das der Pfad, mein Username usw. eingestellt sein müssen, das sollte hinhauen. Sollte heißt natürlich nicht das es sicher hin haut. Hier oben ist allerdings das original Script weil ich vom Server aus, nur mit Commandozeile natürlich schlecht im Forum posten kann und ich nicht alles abtippen wollte.

Also Path stimm, Jardatei stimmt, Username stimmt. Von daher sollte das richtig sein. Allerdings muss ich ja zugeben das ich nicht alles im Script verstehe, weil zu wenig mit sowas beschäftigt. Kann natürlich sein dass da noch etwas fehlt. Z.B. habe ich statt nogui jetzt -nogui eingegeben, weil der paramater beim manuellen start halt ein Minus benötigt.

Was TCP6, und nicht TCP4 angeht, da habe ich aber so einige Programme in der Liste die entweder nur auf TCP6 oder auf TCP4 lauschen und nicht beides. Aber vielleicht könntest mir da ja ein paar Einstellungen verraten.
0

#15 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.895
  • Beigetreten: 20. Juli 07
  • Reputation: 1.126
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Ja

geschrieben 27. Juni 2015 - 14:16

"Nicht gestoppt werden kann"... mh. :huh:

Hast Du schon mal überprüft, in welchem Benutzerkontext der zugehörige Prozeß läuft und ob das auch der "richtige" Benutzer war?

Trau mich schon gar nicht mehr das Script oben anzuschauen. Mich juckts immer mehr in den Fingern, diesen redundanten Wurstcode umzuschreiben. :ph34r:

In jedem Fall: Steck mal ein "set -x" an den Anfang von mc_stop() und schau, ob das weitere Auskunft gibt, wo das Problem liegen könnte. Denn die verwendete Logik da drin bringt uns nicht wirklich viel - "Wenn Prozeß noch läuft, konnte er nicht beendet werden" ist da jetzt nicht sonderlich wertvoll (und auch eher unzuverlässig, aber ich schätze, screen bietet nicht viel mehr).

Und wo wir schon mal dabei sind: Schau auch mal durch, ob screen selber protokollieren kann und gib ggf die entsprechende Kommandozeilenoption/Konfigdatei-Einstellung mit.

Zumindest dann, wenn "set -x" nicht schon den Aha-Effekt bringt. :)
"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

Thema verteilen:


  • 2 Seiten +
  • 1
  • 2

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0