Secret WordPress Options Page

OK, so maybe its not a complete secret, but after around 10 years of running WordPress I only just found out about it. Here it is:

Obviously you have to be logged in as admin. This basically gives you access to the wp_options table without having to go to a separate database management app, or do some mysql command line ninja.

Who knew? Its not on a menu, probably to hide it from fat fingers, but hey, I wish I’d known about this earlier. Would have saved me a few hours over the course of my work life.

Blocking irritating PLDT Billing popups

So you forgot to pay your bill. It happens. PLDT used to set an automated phone call to call you once a day until you paid. Now they have something much more irritating, and something that feels borderline illegal. What they do is they hijack your internet connection. Every four or five page loads, they inject an HTML frame with a monster ad, which sits on top of all your work. You have no choice but to click on the button which takes you to a page with the amount you owe (which means they know which IP is your account BTW).

However there is no way to remove the popup, which sits on top of your browser. There is no ‘close window’ button, which means your only choice is to refresh the page, or close the window and re-open it. Too bad if you were working on something and hadn’t pressed the save button: that’s now gone. And even after you pay, the popup sticks around for a day or two … (how hard can it be to automatically cancel it?)

So how do we block it? The frame is an iframe which uses an IP address, so we can’t use DNS blocking or hostfile blocking. So changing the routing table seems to be the way to go.

On Linux, using sudo if necessary:

# check routing table
route -n
# Add rule
route add gw lo
# check routing table again
route -n
# check desired result
ip route get


Getting logwatch to print out a list of apt packages with upgrades

Useful one to have appear in your inbox in the morning. Have just done this on a server, so I thought I’d put it here to remind myself. This works for debian and Ubuntu variants, which have the apt command (a meta-script for the apt-get ecosystem)

In note form …

Add the following text to /etc/logwatch/scripts/services/apt

/usr/bin/apt list --upgradable

Add the following text to /etc/logwatch/conf/services/apt.conf

# The title shown in the report.
Title = "Packages to upgrade"

# The name of the log file group (file name). 
# e.g for /etc/logwatch/conf/logfiles/apt.conf, we'd have Logfile = apt
LogFile = NONE

As we have NONE there, we don’t need to create /etc/logwatch/conf/logfiles/apt.conf.

mysql root password reset … for systemd

There are a lot of posts around telling you how to update mysql root password. “Simple!,” they cry, “just start mysqld_safe, and use mysqladmin …” But wait, what’s that? You don’t HAVE mysqld_safe? Well the chances are,  you’ve got one of these new fangled systemd systems, where everything is ass backwards.

Then you went and tried to run mysqld as root didn’t you? That didn’t work either. Read on …

Read more

MySQL mystery memory misuse.

I have a small VPS server which hosts a couple of low traffic websites. I’ve been battling it for a couple of years, trying to reduce the memory consumption. The VPS has 0.5Gb RAM, and the same sized swap file. Sure, I could upgrade the VPS, but sometimes this geeky battling stuff is half the fun!

I’ve been using the two obvious Mysql tuning scripts and altering the configuration gradually over the last year or so. If you’ve ever looked at any of this yourselves you’ll know them: and
So the problem was this. I’d start up Mysql and it would eat up all the memory, start swapping, and eventually invoke oom_killer. The first change I made was to disable innodb. I didn’t need it on this server, and immediately memory usage of MySQL dropped to about half. Now it would start up fine, and run for a week or two, but eventually it would crash out. It was using about 300Mb of the available 512Mb RAM, but would eventually use up all the swap as well. I set up monit to watch it and restart it when that happened, but that wasn’t a great solution, so I started chipping away at the my.cnf file, to reduce memory footprint.

Read more