Vis innlegg

Denne delen lar deg se alle innlegg laget av dette medlemmet. Merk at du bare kan se innlegg gjort i områder du har tilgang til.


Meldinger - Floyd-ATC

Sider: 1 ... 5 6 [7] 8 9 ... 52
91
Minecraft / Flytting av serveren
« på: 29. August 2015, 09:54 am »
Hei,

Jeg vil bare si ifra at jeg planlegger å flytte serveren i løpet av kort tid, til en maskin med litt dårligere linje men med mye raskere disk, mer minne og mer ledig CPU. Flyttingen vil innebære at serveren blir utilgjengelig i en kort periode (opptil 1 time) mens DNS oppdateres.

92
ATC-Pjatt / Sv: Reklame???
« på: 25. August 2015, 06:37 am »
First! (Ironisk nok på min bursdag, 24 aug)
Gratulerer :-P

Edit: Prøvde å legge til bildet av kviteringen (Både som PNG og JPEG, begge under 100bk i størrelse, men fukk kun feilmeldingen

"Lagringsområdet for opplastinger er ikke skrivbart. Ditt vedlegg eller din avatar kan ikke lagres."

Det var da pussig... sånn, kanskje det funker bedre nå?

93
Minecraft / Sv: Rapportering av feil på serveren
« på: 24. August 2015, 21:06 pm »
Jeg skulle hjelpe en player med å tenne på portalen, som var på topen av nether. Men det som skjedde da vi teleporterte oss inn i den var at portalen på den andre enden var i et sted i verdenen som vi ikke kunne bevege oss i (det kom sån melding hele tiden "Turn back, here be dragons"). Enten var det utenfor verdenen, eller så var det i en region som gjorde at folk ikke kan gå inn i den. Men i hvertfall så kunne vi ikke røre oss. Vi bare ble teleportert tilbake til det samme stedet hele tiden. Vi var jo også i en portal, så vi kunne ikke åpne chatten, jeg kunne heller ikke knuse portalen, siden jeg ikke kunne endre gm tilbake til 1 og knuse den for så å bruke tpback.
Vi greide å komme oss løs til slutt ved å logge ut og inn igjen flere ganger for så å greie og åpne chatten.
Hmm, fascinerende problemstilling. Jeg vil anta at det er RangePlugin selv som må ta høyde for dette allerede i Nether og på en eller annen måte sørge for å hindre at dette skjer. Å innskrenke Nether til 1500x1500 inntil videre virker fristende. /worldborder skal være spesifikk for en og en verden, men jeg er ikke 100% overbevist om at det alene vil eliminere problemet fullstendig. Ettersom Nether er anarki kan det også være at en innskrenking vil kunne skape problemer for folk som har klart å holde stedet sitt hemmelig ved hjelp av avstander.

94
I have found thousands of articles on the net explaining how to set up a network load balancer using keepalived and haproxy in CentOS 7, in a few easy steps. Unfortunately, and not really surprising, most of those articles are incomplete -- basically pieces of a bigger puzzle. Instead of promising a complete solution to all your problems, I will therefore instead try to explain how I solved the various problems I ran across, hoping that they might be useful to someone else and perhaps inspire someone to point out flaws in my own setup.

Step 1: Install "keepalived" and "haproxy"
Because both are in the standard repo, this is pretty straight-forward:
Kode: [Velg]
yum install -y keepalived haproxy
Step 2: Punch the necessary holes in the firewall
You could open one port at the time, but one article pointed out that it's better to collect everything in a simple XML file so you remember exactly what you opened for haproxy based services to work. Create a file called "/etc/firewalld/services/haproxy.xml" with the following for starters:
Kode: [Velg]
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>HAProxy</short>
<description>HAProxy load-balancer</description>
<port protocol="tcp" port="80"/>
</service>
The cool thing about this is that not only can you use this file to punch holes in the firewall, it can also be used to make SElinux understand that haproxy is allowed to listen on those ports:
Kode: [Velg]
restorecon /etc/firewalld/services/haproxy.xmlThen open the firewall:
Kode: [Velg]
firewall-cmd --add-service haproxy --permanentWhile you're at it, don't forget that keepalived needs to send and receive VRRP messages. If not, both keepalive daemons will incorrectly assume that the partner is dead and they will both try to become MASTER:
Kode: [Velg]
firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
firewall-cmd --direct --permanent --add-rule ipv4 filter OUTPUT 0 --destination 224.0.0.18 --protocol vrrp -j ACCEPT

Step 3: Configure keepalived
This daemon will be used for High Availability, you can use as many load balancers as you like and they all need a reachable IP address for management but only one of them will be MASTER at any time and respond to the Virtual IP address where the haproxy will listen. Here is an example "/etc/keepalived/keepalived.conf" file:
Kode: [Velg]
! Configuration File for keepalived

global_defs {
   notification_email {
     you@your_domain
   }
   notification_email_from keepalived@your_host.your_domain
   smtp_server ###.###.###.###
   smtp_connect_timeout 30
   router_id your_host.your_domain
}

vrrp_instance VI_1 {
    state MASTER
    interface ens160
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        ###.###.###.### label ens160:10
    }
}

Notice the "label ens160:10". By default, the Virtual IP address will not actually be visible when using "ifconfig" or other network tools, which can be very confusing. By adding a "label", keepalived will register a virtual network interface for no other purpose than to let "ipconfig" show the Virtual IP address. Just make sure the name conflict with other interfaces.

If you're concerned that multiple nodes become available at the same time and all try to become master, or perhaps you want a certain node to take preference, adjust the "priority" (higher value wins the election) and consider setting the initial state to BACKUP. As long as VRRP communication works, the nodes should be able to manage this perfectly on their own though.

One more thing, we need to adjust the startup parameters to keepalived. Do this by editing "/etc/sysconfig/keepalived":
Kode: [Velg]
# Options for keepalived. See `keepalived --help' output and keepalived(8) and
# keepalived.conf(5) man pages for a list of all options. Here are the most
# common ones :
#
# --vrrp               -P    Only run with VRRP subsystem.
# --check              -C    Only run with Health-checker subsystem.
# --dont-release-vrrp  -V    Dont remove VRRP VIPs & VROUTEs on daemon stop.
# --dont-release-ipvs  -I    Dont remove IPVS topology on daemon stop.
# --dump-conf          -d    Dump the configuration data.
# --log-detail         -D    Detailed log messages.
# --log-facility       -S    0-7 Set local syslog facility (default=LOG_DAEMON)
#
KEEPALIVED_OPTIONS="-D -P -S 1"

Step 4: Configure haproxy
This daemon is used to perform load balancing, spreading traffic across all of the backend servers.
Most of the articles I found presented a very short config for haproxy, which is pretty cool if you want to make it seem like haproxy takes very little effort to configure. Here's a more realistic "/etc/haproxy/haproxy.cfg" config file to start with:

Kode: [Velg]
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
    # Forward log messages to syslog (localhost is okay)
    log         ###.###.###.###:514 local2

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend http *:80
    #acl url_static       path_beg       -i /static /images /javascript /stylesheets
    #acl url_static       path_end       -i .jpg .gif .png .css .js
    #use_backend static          if url_static

    default_backend             web

#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
#backend static
#    balance     roundrobin
#    server      static 127.0.0.1:4331 check

#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend web
    #balance     roundrobin
    balance leastconn
    server  web1 ###.###.###.###:80 check
    server  web2 ###.###.###.###:80 check
    server  web3 ###.###.###.###:80 check

Step 5: Make sure haproxy can bind to the Virtual IP address on BACKUP nodes
By default, the Linux kernel does not allow a process to listen on a non-existing IP address. This is a problem for us because that address will only exist on the MASTER node. Fortunately, there is a sysctl setting for this exact situation and CentOS 7 makes it very easy to change those. The only side-effect is that any service configured with an incorrect IP address will no longer generate an error, possibly making the error difficult to spot. Simply create a file "/etc/sysctl.d/haproxy.conf":
Kode: [Velg]
net.ipv4.ip_nonlocal_bind=1
Step 6: Configure rsyslog
We will create two drop files, one for each daemon. Here is an example "/etc/rsyslog.d/keepalived.conf":
Kode: [Velg]
$ModLoad imudp
$UDPServerRun 514
$template Keepalive,"%timegenerated% your_host %syslogtag% %msg%\n"
local1.* -/var/log/keepalived.log;Keepalive
### keep logs in localhost ##
local1.* ~

And here is an example "/etc/rsyslog.d/haproxy.conf":
Kode: [Velg]
$ModLoad imudp
$UDPServerRun 514
$template Haproxy,"%timegenerated% your_host %syslogtag% %msg%\n"
local2.=info -/var/log/haproxy.log;Haproxy
local2.notice -/var/log/haproxy-status.log;Haproxy
### keep logs in localhost ##
local2.* ~

Notice that I have included the actual host name in the templates. This is useful if you decide to forward messages to a remote syslog messages, where the default hostname "localhost" will be completely useless.

Step 7: Configure logrotate
We've all forgotten this at some point, haven't we?
Here's "/etc/logrotate.d/haproxy":
Kode: [Velg]
/var/log/haproxy.log /var/log/haproxy-status.log {
    missingok
    notifempty
    sharedscripts
    rotate 7
    daily
    compress
    postrotate
        reload rsyslog >/dev/null 2>&1 || true
    endscript
}

And here's "/etc/logrotate.d/keepalived":
Kode: [Velg]
/var/log/keepalived.log {
    missingok
    notifempty
    sharedscripts
    rotate 7
    daily
    compress
    postrotate
        reload rsyslog >/dev/null 2>&1 || true
    endscript
}

Step 8: Restart all relevant services
You should now be able to restart everything, either one service at a time or simply by rebooting.
Kode: [Velg]
sysctl --system
firewall-cmd --reload
systemctl restart rsyslogd
systemctl start keepalived
systemctl start haproxy

Really? That's it?
Now, one last problem caused some head-scratching, and it wasn't actually a problem with the Linux setup. I'm using a Juniper SRX router/firewall which by default ignores Gratuitous ARP because while it does have legitimate uses (like, say, a VRRP host announcing that it has taken over a Virtual IP address) it can also be used for malicious things like man-in-the-middle attacks. Assuming your servers are on a network that you control, this shouldn't be an issue. (Or rather, if your servers are on a network where this might be an issue, you might want to ignore load balancing for now and solve that problem first) But I digress. The end result of having a router ignore GARP is that the router will merrily keep forwarding packets to your (presumably dead) load balancer and not the new MASTER. The solution for Juniper SRX is quite simple, just set "gratuitous-arp-reply" on the interface(s) facing your server network(s). Check your router docs if you see the same symptom.

Anything else?
Is anyone able to write an article that doesn't miss a single thing? I don't think I ever read one, and I know for a fact I never wrote one. Check your log files, test the service and start troubleshooting. Then test again. Reboot. Test more. Feel free to comment below :-)

95
ATC-Pjatt / Reklame???
« på: 24. August 2015, 17:22 pm »
Jeg har oppgradert forumet til SMF2 for å få inn reCAPTCHA og bekjempe spam, hvis det fortsetter å funke så bra som det ser ut kan det hende vi kan fjerne "godkjenning" av nye brukere sånn at det er lettere for folk å registrere seg.

En annen ting jeg eksperimenterer med er reklamebannere, som dere sikkert har lagt merke til. Foreløpig er de tomme men det endrer seg forhåpentligvis i løpet av få dager. Trafikken på forumet er neppe nok til å finansiere mer enn en pakke tyggegummi i året men alle monner drar.

Det som er viktig er at ikke dere prøver å "hjelpe til" ved å lage masse klikk eller andre dumme ting!

Bruk forumet akkurat som vanlig, ellers blir vi ganske enkelt svartelistet. For de av dere som bruker AdBlock eller lignende: Vit at jeg kjører AdBlock selv med verdens beste samvittighet. Du velger selv. Føler du for å bidra så legg inn nyttige ting i forumet. Har du både AdBlock, skrivesperre og for mye penger så har jeg lagt inn en donasjons-funksjon helt nederst på siden :-D


96
Generelt teknisk / Android Studio?
« på: 22. August 2015, 18:23 pm »
Noen som har tatt i dette? Jeg lastet ned nyeste versjon (23), installerte, opprettet et nytt prosjekt og vips -- det kommer tre feilmeldinger som gjør at det nekter å kompilere. Sjekker Google og det er et kjent problem med denne versjonen, offisiell fiks er et hack som gjør at den fortsetter å bruke versjon 22. Sikkert kjekt for de som ikke akkurat har lastet ned og installert for første gang.  ???

Oppdatering: I dag slapp de en patch som tok ca. en halv time å legge inn. Så knasket og kompilerte ting i et kvarters tid før jeg fikk enda flere feilmeldinger. Makan til makkverk er det lenge siden jeg har sett.

97
ATC-Pjatt / Sv: Minecraft mini games til ATC?
« på: 11. August 2015, 16:37 pm »
Beklager, dette kommer ikke til å skje.

Det finnes allerede en drøss av servere med minigames, det er den viktigste grunnen til at jeg ikke kommer til å installere minigames på mc.atc.no

En annen grunn er at enhver ny plugin må testes mot eksisterende plugins hver eneste gang noe oppgraderes eller endres. Minigames endrer mye rart og vil garantert skape problemer for drøssevis av andre plugins. (To eksempler: Creative mode med load/save av inventory, Teleplugin med permissions og integrering mot WorldGuard)


98
Minecraft / Sv: Stem på tiden
« på: 04. August 2015, 12:08 pm »
Det eneste er at enkelte ting ser kulere ut i skumring/natt enn i fullt dagslys. Stadig regnvær plager meg egentlig mer :o)

99
Minecraft / Sv: Det skal bli nye OP-er
« på: 02. August 2015, 13:45 pm »
Jepp, det må bli flere ops. Sørg for å stemme, jeg prøver å få gjennomført mot slutten av uka (dvs. før 10.august)

100
Minecraft / ATC.NO nede i fem uker - endelig oppe igjen
« på: 02. August 2015, 13:44 pm »
Neste gang jeg reiser på fem uker ferie kommer jeg nok muligens til å ta noen minutter for å forklare min overivrige samboer at det IKKE er nødvendig å nappe ut overspenningsvernet til nettlinja i tilfelle uvær, ettersom det er nettopp det overspenningsvernet er der for.

Beklager, det falt meg ikke engang inn at noen kunne være så tett i pappen, da hadde jeg fått noen til å komme innom og plugge dritten inn igjen før det hadde gått drøye fem uker.

101
Driftsmeldinger / ATC.NO nede i fem uker - endelig oppe igjen
« på: 02. August 2015, 13:43 pm »
Neste gang jeg reiser på fem uker ferie kommer jeg nok muligens til å ta noen minutter for å forklare min overivrige samboer at det IKKE er nødvendig å nappe ut overspenningsvernet til nettlinja i tilfelle uvær, ettersom det er nettopp det overspenningsvernet er der for.

Beklager, det falt meg ikke engang inn at noen kunne være så tett i pappen, da hadde jeg fått noen til å komme innom og plugge dritten inn igjen før det hadde gått drøye fem uker.




102
Minecraft / Sv: Mange folk på serveren
« på: 13. Juni 2015, 12:21 pm »
Kanskje det er på tide å utnevne en ny op eller to? Alle mann til stemmeurnene :-)

Hint: /help vote


103
Minecraft / Sv: Minecraft Pjatt
« på: 10. Juni 2015, 20:01 pm »
Nå kjenner jeg bare make overfladisk, det er som du sier ikke et fullverdig scriptspråk men det har makroer og det fine med make er at du kan bruke en Makefile til å beskrive avhengigheter mellom ulike deler av et prosjekt og spare tastetrykk på repetetive ting.

F.eks i dette tilfellet hvor jeg prøver meg fram til en måte å nullstille en liten del av serveren, det krever et spesifikt sett med kommandoer som man kunne ha samlet i et lite script. Så finner jeg fram til en måte å nullstille en annen del, denne kunne vært lagt i et annet script. Hvis jeg nå ønsker å nullstille "alt" så kunne jeg ha laget et tredje script som kjører de to andre i en bestemt rekkefølge.

Istedet samler jeg alle kommandoene i en og samme Makefile, jeg kan nå nullstille kun en og en del, eller alt sammen med en enkel kommando. Hvis de to metodene har fellestrekk (f.eks. paths eller andre argumenter) så holder det å deklarere disse ett sted (man kan til og med bruke en makro for å finne dem dynamisk).

Sånn ser Makefilen min ut akkurat nå:
Kode: [Velg]
JAVA_OPTIONS=-Xms4096m -Xmx4096m -Xmn1024m -Djava.io.tmpdir=/home/floyd/tmp -XX:MaxPermSize=512M
MC_OPTIONS=--log-append 0 --log-count 5 nogui

DB_NAME=mc
DB_USER=mc
DB_PASS=********

BASEPATH=/home/floyd/mc

clean:
        rm -fv *~ DEADJOE || true


# Destroy all databases, both flatfile and mysql. DO NOT USE unless you know what you're doing.
reset:          clean reset-players reset-logblock reset-dynmap reset-containerprotect reset-petition reset-spawncontrol reset-
warps reset-kits reset-stargates reset-regions

reset-players:
        rm -Rfv world/players/*  || true
        rm -Rfv world_nether/players/*  || true
        rm -Rfv world_the_end/players/*  || true

reset-logblock:
        mysql -f ${DB_NAME} -u${DB_USER} -p${DB_PASS} -e 'truncate `lb-players`'
        mysql -f ${DB_NAME} -u${DB_USER} -p${DB_PASS} -e 'truncate `lb-world`'
        mysql -f ${DB_NAME} -u${DB_USER} -p${DB_PASS} -e 'truncate `lb-world-chest`'
        mysql -f ${DB_NAME} -u${DB_USER} -p${DB_PASS} -e 'truncate `lb-world-sign`'

reset-dynmap:
        rm -Rfv plugins/dynmap/web/tiles/world/*
        rm -Rfv plugins/dynmap/web/tiles/world_nether/*
        rm -Rfv plugins/dynmap/web/tiles/world_the_end/*

reset-containerprotect:
        rm -Rfv plugins/ContainerProtect/locations.txt
       
reset-petition:
        rm -Rfv plugins/PetitionPlugin/*.ticket || true
        rm -Rfv plugins/PetitionPlugin/archive/*.ticket || true
        rm -Rfv plugins/PetitionPlugin/last_ticket_id.txt || true
        rm -Rfv plugins/PetitionPlugin/mail/* || true

reset-spawncontrol:
        rm -Rfv plugins/SpawnControl/spawncontrol.db

reset-warps:
        rm -Rfv plugins/TelePlugin/warps/*

reset-kits:
        rm -Rfv plugins/KitPlugin/kits-*.txt

reset-stargates:
        rm -Rfv plugins/Stargate/portals/world.db

reset-regions:
        rm -Rfv plugins/WorldGuard/worlds/world/regions.yml || true
        rm -Rfv plugins/WorldGuard/worlds/world_nether/regions.yml || true
        rm -Rfv plugins/WorldGuard/worlds/world_the_end/regions.yml || true

reset-everything:       reset
        rm -Rf world
        rm -Rf world_nether
        rm -Rf world_the_end


plugins:        clean
        mv bukkit_update/plugins/*.jar plugins || true
        rm -Rfv bukkit_update/plugins/*.html  || true
        rm -Rfv bukkit_update/plugins/*.txt || true

publish-plugins:
        rm -Rfv /home/floyd/public_html/minecraft.atc.no/bin/plugins/*.jar || true
        cp -v plugins/*.jar /home/floyd/public_html/minecraft.atc.no/bin/plugins

db-backup:     
        mysqldump -f ${DB_NAME} -u${DB_USER} -p${DB_PASS} > minecraft.sql

db-restore:
        zcat mysql-20130628-000337.zip | mysql -f ${DB_NAME} -u${DB_USER} -p${DB_PASS}

mysql:
        mysql -f ${DB_NAME} -u${DB_USER} -p${DB_PASS}


space:
        -cd ${BASEPATH}
        -find backups/* -mtime +1 -type f -exec rm -v {} \;
        -find logs/* -mtime +1 -type f -exec rm -v {} \;

# Delete stale backups, then make labeled backups of everything
backup: space db-backup publish-plugins
        -cd ${BASEPATH}
        tar cvfz backups/plugins-`date +%Y%m%d-%H%M%S`.tgz --exclude=*.png --exclude=*.hash plugins 2&> backups/plugins.log ||e
        screen -S mc -X stuff 'save-all'`echo -ne '\015'`
        sleep 3
        screen -S mc -X stuff 'save-off'`echo -ne '\015'`
        sleep 1
        zip -r backups/world-`date +%Y%m%d-%H%M%S`.zip world
        screen -S mc -X stuff 'save-on'`echo -ne '\015'`
        zip -r backups/mysql-`date +%Y%m%d-%H%M%S`.zip minecraft.sql




# Destroy world data
wipe-world:     clean reset
        rm -Rfv world/*

wipe-nether:    clean
        rm -Rfv world_nether/*

wipe-endgame:   clean
        rm -Rfv world_the_end/*

wipe-test:      clean
        rm -Rfv test/*

wipe-all:       wipe-world wipe-nether wipe-endgame



# Download the most recent Bukkit build manually (CButD should take care of this)
bukkit:
        wget http://cbukk.it/craftbukkit.jar

screen:
        screen -S mc make server
# Start Bukkit minecraft server in an endless loop
server:
        echo "#!/bin/bash" > run.sh
        echo "while [ true ]" >> run.sh
        echo "do" >> run.sh
        echo "java ${JAVA_OPTIONS} -jar spigot.jar ${MC_OPTIONS}" >> run.sh
        echo "rm banned-players.txt" >> run.sh
        echo "echo Restarting in 30 seconds" >> run.sh
        echo "sleep 30" >> run.sh
        echo "done" >> run.sh
        chmod +x run.sh
        ./run.sh

servertest:
        echo "#!/bin/bash" > run.sh
        echo "java ${JAVA_OPTIONS} -jar spigot.jar ${MC_OPTIONS}" >> run.sh
        chmod +x run.sh
        ./run.sh


# Force CButD to check for updates immediately after server startup
updatecheck:
        rm -Rf plugins/CraftBukkitUpToDate ; true
       
server-save-all:
        screen -S mc -X stuff 'save-all'`echo -ne '\015'`

server-restart:
        screen -S mc -X stuff 'stop'`echo -ne '\015'`

Som du ser erstatter den en hel bråte med script, kommandoene kan testes og kjøres både manuelt og via crontab helt uten videre. Brukernavn/passord og annen nøkkelinfo er definert kun et enkelt sted.

Som jeg nevnte innledningsvis, dette er bare å skrape i overflaten av hva make kan gjøre. Større prosjekter har ofte et helt hierarki av Makefiles hvor hver fil håndterer standard funksjoner som kompilering, linking, testing og installasjon av akkurat "sin" komponent i et større system. En overordnet makefile vil da rekursere gjennom en liste med underkataloger og simpelthen kjøre "make install" eller hva det skal være.


104
Minecraft / Sv: mc.atc.no - Planlagt nedetid lørdag
« på: 30. Mai 2015, 21:16 pm »
Arbeidet var ikke relatert til selve serveren. Den står ikke hjemme hos meg vet du :-)

105
Minecraft / Sv: mc.atc.no - Planlagt nedetid lørdag
« på: 30. Mai 2015, 17:08 pm »
Ferdig litt tidligere enn beregnet, serveren skal nå være oppe igjen.

Sider: 1 ... 5 6 [7] 8 9 ... 52