You are hereinternet / Drupal

Drupal


Todo-lijstje

Ik maak voor mezelf eventjes een lijstje van dingen die ik eens zou moeten doen.

To be continued...

Drupal blok: Mobile Vikings referrers

Voor de Mobile Vikings banner rechts in beeld heb ik dit blok aangemaakt in Drupal:
<!-- stylesheet based on http://www.alistapart.com/articles/taminglists/ -->

<style>
#inline-list {
        border: 0px solid #000;
        margin: 0em;
        width: 80%;
//      width: 120px;
   right: ;
        //text-align: right;
        padding: 0px;
        font-family: Verdana, sans-serif;
        }

#inline-list p {
        display: inline;
        }

#inline-list ul, #inline-list li {
        display: inline;
        margin: ;
        padding: ;
        color: #339;
        font-weight: bold;
        }

#inline-list ul li:after {
        content: ", ";
        }
               
#inline-list ul li.beforelast:after {
        content: " en ";
        }
               
#inline-list ul li.last:after {
        content: " ";
        }
</style>

<div id="inline-list">
Met dank aan

<ul>
<?php
$url = 'https://username:password@mobilevikings.com/api/2.0/basic/points/referrals.json?msisdn=phonenumber';
$contents = file_get_contents($url);
$contents = utf8_encode($contents);
$results = json_decode($contents, true);
$i = ;
foreach ($results as $item) {
  echo ('  <li');
  switch ($i) {
    case count($results) - 2:
      echo (' class="beforelast"');
      break;
    case count($results) - 1:
      echo (' class="last"');
      break;
  }
    printf ('>%s</li>' . PHP_EOL, trim($item['name']));
    $i++;
}
?>
</ul>

om mij een gratis herlading twv €15 te bezorgen!

<!-- code from https://mobilevikings.com/nl/myviking/points/referral-links/ -->
<p align="right"><a
href="http://mobilevikings.com/referral/nWDDPmWjqDNslgWicXgSmAmjpcuOgUEB/"
title="Word een Viking"><img
src="http://mobilevikings.com/nl/referral/image/nWDDPmWjqDNslgWicXgSmAmjpcuOgUEB/banner2.jpg/"
title="Word een Viking" /></a></p>

</div>

Code review is altijd welkom. Het is ondertussen al een paar jaar geleden dat ik nog PHP aangeraakt heb, en het is de allereerste keer dat ik iets met JSON doe.

EDIT: oops, er loopt iets mis... even geduld aub!

EDIT2: probleem opgelost, ik heb direct na de file_get_contents nog een if ($contents === false) blok toegevoegd. De volledige code staat nu op Github: https://github.com/amedee/MobileVikings

URL Icon is een traffiekvretertje

Het was me al opgevallen dat de server veel traffiek trekt. Abnormaal veel.
In cijfers:

$ vnstat -m

 eth0  /  monthly

   month         rx      |      tx      |   total
-------------------------+--------------+--------------------------------------
  Jun '09      38.69 GB  |     1.33 GB  |    40.02 GB   %%
  Jul '09     337.14 GB  |    43.20 GB  |   380.34 GB   %%%%%%%%%%%%%%%%%%%%::
  Aug '09      17.33 GB  |     4.47 GB  |    21.80 GB   %
-------------------------+--------------+--------------------------------------
 estimated     95.51 GB  |    24.66 GB  |   120.17 GB

amedee@intrepid:~$ vnstat -w

        eth0  /  weekly

                            rx      |       tx      |    total
        ----------------------------+---------------+--------------
          last 7 days     32.93 GB  |      5.02 GB  |     37.95 GB
            last week     69.42 GB  |      4.25 GB  |     73.67 GB
         current week      2.62 GB  |      3.56 GB  |      6.19 GB
        ----------------------------+---------------+--------------
            estimated      5.06 GB  |      6.88 GB  |     11.95 GB

$ vnstat -d

 eth0  /  daily

    day         rx      |     tx      |  total
------------------------+-------------+----------------------------------------
   08.07.      8.04 GB  |  348.55 MB  |    8.38 GB   %%%%%
   09.07.     10.58 GB  |  389.05 MB  |   10.96 GB   %%%%%%%
   10.07.     19.15 GB  |   17.26 GB  |   36.41 GB   %%%%%%%%%%%%%::::::::::::
   11.07.     14.92 GB  |    3.34 GB  |   18.26 GB   %%%%%%%%%%::
   12.07.     13.91 GB  |    2.23 GB  |   16.14 GB   %%%%%%%%%::
   13.07.     14.42 GB  |    2.08 GB  |   16.50 GB   %%%%%%%%%%:
   14.07.     20.49 GB  |    1.50 GB  |   21.99 GB   %%%%%%%%%%%%%%:
   15.07.     16.14 GB  |    1.61 GB  |   17.76 GB   %%%%%%%%%%%:
   16.07.     14.86 GB  |    1.10 GB  |   15.96 GB   %%%%%%%%%:
   17.07.     17.26 GB  |    1.20 GB  |   18.46 GB   %%%%%%%%%%%:
   18.07.     13.49 GB  |    1.26 GB  |   14.74 GB   %%%%%%%%%:
   19.07.     12.97 GB  |  980.82 MB  |   13.93 GB   %%%%%%%%:
   20.07.     13.81 GB  |    1.01 GB  |   14.82 GB   %%%%%%%%%:
   21.07.      8.44 GB  |  704.84 MB  |    9.13 GB   %%%%%%
   22.07.     10.88 GB  |    0.99 GB  |   11.86 GB   %%%%%%%:
   23.07.      9.01 GB  |  980.68 MB  |    9.97 GB   %%%%%:
   24.07.      7.39 GB  |  583.17 MB  |    7.96 GB   %%%%%
   25.07.      6.23 GB  |  484.04 MB  |    6.70 GB   %%%%
   26.07.      8.19 GB  |  395.95 MB  |    8.58 GB   %%%%%
   27.07.     12.87 GB  |  883.55 MB  |   13.73 GB   %%%%%%%%:
   28.07.      8.83 GB  |  762.62 MB  |    9.57 GB   %%%%%%
   29.07.      8.65 GB  |  631.73 MB  |    9.27 GB   %%%%%%
   30.07.      8.76 GB  |  587.09 MB  |    9.34 GB   %%%%%%
   31.07.     15.60 GB  |  558.70 MB  |   16.15 GB   %%%%%%%%%%%
   01.08.     13.45 GB  |  606.42 MB  |   14.05 GB   %%%%%%%%%
   02.08.      1.25 GB  |  326.41 MB  |    1.57 GB   %
   03.08.    130.79 MB  |  410.80 MB  |  541.59 MB
   04.08.    143.49 MB  |  414.06 MB  |  557.55 MB
   05.08.      2.28 GB  |    2.50 GB  |    4.78 GB   %::
   06.08.     33.89 MB  |  134.54 MB  |  168.43 MB
------------------------+-------------+----------------------------------------
 estimated       69 MB  |     280 MB  |     349 MB

amedee@intrepid:~$ vnstat -t

 eth0  /  top 10

   #       day         rx      |     tx      |  total
-------------------------------+-------------+---------------------------------
   1    10.07.09     19.15 GB  |   17.26 GB  |   36.41 GB   %%%%%%%%%:::::::::
   2    14.07.09     20.49 GB  |    1.50 GB  |   21.99 GB   %%%%%%%%%:
   3    17.07.09     17.26 GB  |    1.20 GB  |   18.46 GB   %%%%%%%%:
   4    11.07.09     14.92 GB  |    3.34 GB  |   18.26 GB   %%%%%%%::
   5    15.07.09     16.14 GB  |    1.61 GB  |   17.76 GB   %%%%%%%:
   6    13.07.09     14.42 GB  |    2.08 GB  |   16.50 GB   %%%%%%%:
   7    31.07.09     15.60 GB  |  558.70 MB  |   16.15 GB   %%%%%%%
   8    12.07.09     13.91 GB  |    2.23 GB  |   16.14 GB   %%%%%%:
   9    16.07.09     14.86 GB  |    1.10 GB  |   15.96 GB   %%%%%%%
  10    20.07.09     13.81 GB  |    1.01 GB  |   14.82 GB   %%%%%%%
-------------------------------+-------------+---------------------------------

Het is zeker niet omdat de foutparkeerders website zo populair is, want die is maar op 10 juli opgepikt door de pers, en de traffiek was er daarvoor ook al.

Ik heb er aanvankelijk niet veel aandacht aan besteed omdat de server er voor de rest blijkbaar niet veel last van had. Tot ik een mailtje kreeg van Luc dat hij traffiekwaarschuwingen begon te krijgen van Hetzner. Oeps, sorry Luc!

Na advies van een aantal mensen (op Facebook, Twitter, mailinglijsten) heb ik iptraf en ntop geïnstalleerd. Iptraf om live de traffiek op te volgen, ntop om het wat meer in detail te bekijken. Het was nog niet onmiddelijk duidelijk waar het probleem zat, maar het viel me wel op dat er enorm veel inkomend http-verkeer was van 193.190.67.15, beter bekend als http://ftp.belnet.be/
Als noodmaatregel heb ik dan maar 193.190.67.15 geblacklist in shorewall.

Ondertussen heeft Luc, die de Dom0 van de server beheert, een capture gemaakt van het netwerkverkeer (pcap). Na 1 uur was de dumpfile al 700 MB groot!
Een eerste voorlopige analyse bevestigt dat 193.190.67.15 voor veel verkeer zorgt:

Address,Port,Packets,Bytes,Tx Packets,Tx Bytes,Rx Packets,Rx Bytes
193.190.67.15,http,679101,696498644,452050,684235136,227051,12263508
188.40.34.110,hbci,88540,13756794,44074,6047109,44466,7709685
188.40.34.110,33667,117284,119561882,39723,2145218,77561,117416664
188.40.34.110,42873,116327,119298488,38899,2100722,77428,117197766
188.40.34.110,35777,115051,117747404,38648,2087168,76403,115660236
188.40.34.110,53186,114977,117801752,38539,2081282,76438,115720470
188.40.34.110,42862,113661,117683704,37249,2011622,76412,115672082
188.40.34.110,55430,101585,104311484,33885,1829966,67700,102481518
188.40.34.110,http,21232,19113987,13408,18174489,7824,939498
188.40.34.110,ssh,17563,4497320,11394,4047532,6169,449788
...

Volgende fase: analyse in Wireshark.
Nog in detail te schrijven, maar daaruit bleek dat de grote traffiek gepaard ging met een http-request vanuit mijn blog naar Belnet. Unk? Iets in Drupal?

Volgende stap: nie moeilijk doen, gewoon in de raw data van de database van Drupal kijken:

intrepid:~# strings /var/lib/mysql/drupal6/* | grep belnet | sort | uniq -c | sort -gr | head
   1765 Could not find favicon for URL <em>http://ftp.belnet.be/mirror/ubuntu.com/releases/8.10/</em> in metatags, trying webroot.
    168 Could not find favicon for URL <em>http://ftp.belnet.be/mirror/ubuntu.com/releases/8.10/ubuntu-8.10-mid-lpia.img</em> in metatags, trying webroot.

Favicon? Een Ubuntu ISO? Dat kan alleen maar van deze blogpost komen. Wat blijkt: de Drupal module URL Icon, die vóór links naar externe sites een mooi favicon zet, trekt alle externe links binnen. ALLE. Dus ook die naar een ISO van 700 MB. Hargl.

Oplossing: uninstall van URL Icon en een bug gefileerd. Case closed.

Checklist servermigratie

Deze server verhuist binnenkort naar een nieuwe fysieke machine met volgende specs:

  • Disk: 10 GiB / , 175 GiB /home , 512 MiB swap
  • Memory: 2 GiB RAM
  • CPU: 1 VCPU Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz

Deze pagina is vooral bedoeld als documentatie voor mezelf.

Planning:

  1. DONE 20090610: DNS TTL verlagen van amedee.be, vangasse.eu, dhertefelt.be bij Gandi.
  2. BUSY 20090618: configuratie van intrepid².
  3. DONE 20090620: configuratie testen
  4. DONE 20090621: migratie data van intrepid naar intrepid².
  5. DONE 20090622: DNS records aanpassen + TTL verhogen van amedee.be, vangasse.eu, dhertefelt.be, alle andere domeinen.
  6. DONE 20090622: web + mail testen
  7. DONE 20090629: services down op intrepid

 
Te installeren/configureren op de nieuwe server (intrepid²):

  • admin
  • web
    • apache
    • mysql
    • php5
    • phpmyadmin
    • drupal
  • mail
    • postfix
    • postgrey
    • dovecot
    • procmail
    • fetchmail

Zie ook logging configuratiewijzigingen.

Drupal from scratch

Ik was helemaal niet tevreden van mijn huidige site, en bovendien draaide er nog een véél te oude Drupal-versie op. Dus: alles weg, en opnieuw beginnen met een schone lei. Hopelijk vind ik nu ook nog de inspiratie om effectief te bloggen.

Reclame... ;-)

Met dank aan
  • Jasmina
  • Celine
  • Pieter
  • Jeff
  • Hans
  • Jurgen
  • Jurgen
  • Marijke
  • Amedee
  • Erik
  • Danny
  • Sofie
  • Lars
  • Christophe
  • Peter
  • Jeroen
  • Jurgen
om mij een gratis herlading twv €15 te bezorgen!

Waar ben ik?