You are heresoftware / php
php
Drupal blok: Mobile Vikings referrers
<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
Twitterbot
include_once "twitter.php";
include_once "user.php";
$data = shell_exec('/usr/games/fortune -s -n 140 bofh-excuses');
$twi_user->updateStatus($data);
?>
include_once "twitter.php";
include_once "user.php";
$data = shell_exec('/usr/bin/uptime');
$twi_user->updateStatus($data);
?>
include_once "twitter.php";
include_once "user.php";
$data = shell_exec('/usr/sbin/backup2l -s | tail -n 4 | head -n 1 | cut -f 2 -d "|" | sed "s/ //g"');
$twi_user->updateStatus("just made a ".$data." backup.");
?>
user.php:
$twi_user = new Twitter("intrepid_server","password");
?>
intrepid²: webserver
Installatie
Apache, PHP, MySQL en phpMyAdmin tesamen in één keer installeren met:
mysql-server phpmyadmin php5-curl php5-dev php-pear make
Debian trekt zelf alle noodzakelijke afhankelijkheden binnen.
Kleine bugjes fixen
Apache gaf wel enkele waarschuwingen tijdens de installatie:
-
Oplossing:Starting web server: apache2apache2: apr_sockaddr_info_get() failed for intrepid
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName- Toegevoegd aan
/etc/hosts:188.40.34.110 intrepid intrepid.amedee.be amedee.be - Toegevoegd aan
/etc/apache2/httpd.conf:ServerName amedee.be
- Toegevoegd aan
-
Oplossing:Setting up ssl-cert (1.0.23) ...
hostname: Unknown host
make-ssl-cert: Could not get FQDN, using "intrepid".
make-ssl-cert: You may want to fix your /etc/hosts and/or DNS setup and run
make-ssl-cert: make-ssl-cert generate-default-snakeoil --force-overwrite
make-ssl-cert: again.sudo make-ssl-cert generate-default-snakeoil --force-overwrite
Mod-rewrite aanzetten
Onder andere Drupal heeft mod-rewrite nodig, voor clean URLs. Dus:
In /etc/apache2/sites-enabled/000-default is er ook nog een aanpassing nodig:
Options Indexes FollowSymLinks MultiViews
#AllowOverride None
AllowOverride All
Order allow,deny
allow from all
</Directory>
Dus AllowOverride None moet vervangen worden door AllowOverride All, anders werken de .htaccess-bestanden niet.
phpMyAdmin beveiligen
Ik vind het niet zo leuk dat om het even wie met phpMyAdmin kan klooien (ook al staat er een sterk wachtwoord op alle mysql-users. Daarom beveilig ik phpMyAdmin met mod_access door volgende aanpassing van /etc/apache2/httpd.conf:
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Allow from 10
Allow from <mijn-ip-adres>
</Directory>
Van zodra de OpenVPN in orde is, gaat ook de regel Allow from <mijn-ip-adres> er uit, omdat de webserver dan te bereiken zal zijn via een 10.x.x.x adres.
Apache herstarten
Om al deze configuratiewijzigingen toe te passen, moet Apache herstart worden:
Websites overzetten
De websites draaien allemaal op één Drupal-installatie in /var/www maar wel met elk een eigen database.
Eerst de bestanden overzetten:
Daarna de databases overzetten. Eerst een backup maken op de oude server:
Vervolgens de backup kopiëren naar de nieuwe server en importeren in mysql:
bzcat databasebackup.sql.bz2 | mysql -u root -p
Omdat de users database nu ook mee gekopieerd is, moet er ook nog een flush privileges gebeuren in mysql. Dit heb ik via phpMyAdmin gedaan.
Eindresultaat: alle websites zijn getransplanteerd van de oude server naar de nieuwe server. Er zijn nog een paar kleinigheden die nagekeken moeten worden, zoals tijdelijke import-directories voor Drupal, maar voor de rest werkt alles.