<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>glenscott.net &#187; technical</title>
	<atom:link href="http://www.glenscott.net/category/technical/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.glenscott.net</link>
	<description>Reading, Writing, and Sysadmin.</description>
	<lastBuildDate>Mon, 12 Dec 2011 06:40:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Checking SSL certificate expiry date and issuer: an openssl wrapper in BASH</title>
		<link>http://www.glenscott.net/2011/12/09/checking-ssl-certificate-expiry-date-and-issuer-an-openssl-wrapper-in-bash/</link>
		<comments>http://www.glenscott.net/2011/12/09/checking-ssl-certificate-expiry-date-and-issuer-an-openssl-wrapper-in-bash/#comments</comments>
		<pubDate>Fri, 09 Dec 2011 08:35:45 +0000</pubDate>
		<dc:creator>Glen</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.glenscott.net/?p=310</guid>
		<description><![CDATA[I manage SSL certificate requests (and renewals) at work and the number of certs in use seems to be growing every year. There&#8217;s a nice cozy 3 year expiry on most of them which means to me just enough time for them to be potentially forgotten and cause a mad scurry come renewal time (or [...]]]></description>
			<content:encoded><![CDATA[<p>I manage SSL certificate requests (and renewals) at work and the number of certs in use seems to be growing every year. There&#8217;s a nice cozy 3 year expiry on most of them which means to me just enough time for them to be potentially forgotten and cause a mad scurry come renewal time (or worse, have them expire and have a service outage as a result).</p>
<p>Our CA has a recently unveiled service which will scan our public IPS and report on detected certificates close to expiry which is handy, but we have a lot of servers on non-routable and / or firewalled addresses, so an internal scan is the only way to cover them all.</p>
<p>There seem to be at least a couple of other published approaches in the google including <a href="http://freecode.com/projects/ssl-cert-check">ssl certificate expiration check</a> and the neat <a href="http://prefetch.net/articles/checkcertificate.html">ssl-cert-check script at prefetch.net</a> which will take a list of servers and express the expiry date. I wanted something slightly different (more minimalist): as we&#8217;re using the excellent <a href="http://www.zabbix.com">zabbix</a> for general system monitoring which especially likes system commands or scripts which take a single parameter and spit out a single return value.</p>
<p>In this case that parameter is a server name or IP address,  returning  either the number of days until SSL cert expiry, or the certificate issuer, depending on which version of the script is called. As I said, we&#8217;re using this with zabbix but this is just a command line script usable for quick on the spot checks or could easily be incorporated into another monitoring / alerting system.</p>
<p>A nice simple method I would probably use if I didn&#8217;t have zabbix would be to incorporate this into a quick and dirty loop script which periodically queries a list of ips or subnets and fires off an email if the &#8216;days to expiry&#8217;  is below a certain value (exactly what zabbix does now). It could be made a bit more elegant perhaps by using a bit of <a href="http://nmap.org">nmap</a> to build a fast list of responding servers to query, but depends what you want, how much time you have, and how much of a stickler you are for efficiency =)</p>
<p><em>(Command line for all scripts is simply: <code>./script-name server.name.or.ip.address</code> )</em></p>
<h3>Script: sslcheck-expiry</h3>
<pre>#!/bin/bash
# Simple SSL cert days-till-expiry check script
# by Glen Scott, www.glenscott.net

openssl_output=$(echo "
GET / HTTP/1.0
EOT" \
 | openssl s_client -connect $1:443 2&gt;&amp;1);

if [[ "$openssl_output" = *"-----BEGIN CERTIFICATE-----"* ]]; then

        cert_expiry_date=$(echo "$openssl_output" \
         | sed -n '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p' \
         | openssl x509 -enddate \
         | awk -F= ' /notAfter/ { printf("%s\n",$NF); } ');

        seconds_until_expiry=$(echo "$(date --date="$cert_expiry_date" +%s) - $(date +%s)" |bc);
        days_until_expiry=$(echo "$seconds_until_expiry/(60*60*24)" |bc);

        if [[ $days_until_expiry -ge 0 ]]; then

                echo "$days_until_expiry";
                exit 0

        else

                echo "EXPIRED ($days_until_expiry days)";

                exit 0
        fi

else
    echo "NOT_FOUND";
exit 1
</pre>
<h3>Checking the issuer as well as the expiry</h3>
<p>Because we have a bunch of servers setup for dev, test or other purposes with self signed &#8220;snake oil&#8221; certs and I dont really care about the certs on those, I wanted a method to determine the issuer. (Zabbix then has some logic which only bothers to email us if a cert is about to expire AND is from a real CA.)</p>
<h3>Script: sslcheck-issuer-o</h3>
<p>Returns the &#8220;O&#8221; (Organisation) value from the issuer string.</p>
<pre>#!/bin/bash
# Simple SSL cert get-issuer-O
# by Glen Scott, www.glenscott.net

openssl_output=$(echo "
GET / HTTP/1.0
EOT" \
 | openssl s_client -connect $1:443 2&gt;&amp;1);

if [[ "$openssl_output" = *"-----BEGIN CERTIFICATE-----"* ]]; then

        cert_issuer=$(echo "$openssl_output" \
         | sed -n '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p' \
         | openssl x509 -noout -issuer -nameopt sname \
         | tr '/' '\n' | grep O= | cut -c3- );

                echo "$cert_issuer";
                exit 0
else
    echo "NOT_FOUND";
exit 1
fi
</pre>
<h3>Script: sslcheck-issuer-cn</h3>
<p>If for some reason you want the CN value from the issuer string, use this instead.</p>
<pre> 
#!/bin/bash
# Simple SSL cert get-issuer-CN
# by Glen Scott, www.glenscott.net

openssl_output=$(echo "
GET / HTTP/1.0
EOT" \
 | openssl s_client -connect $1:443 2&gt;&amp;1);

if [[ "$openssl_output" = *"-----BEGIN CERTIFICATE-----"* ]]; then

        cert_issuer=$(echo "$openssl_output" \
         | sed -n '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p' \
         | openssl x509 -noout -issuer -nameopt sname \
         | tr '/' '\n' | grep CN= | cut -c4- );

                echo "$cert_issuer";
                exit 0

else
    echo "NOT_FOUND";
exit 1
fi
</pre>
<h3>Additional notes:</h3>
<p>All scripts use the <strong>openssl s_client</strong> function to connect to the first string (assuming IP or server name) on default port 443. It echoes some HTTP GET requests and an EOT, otherwise openssl will sit there until timeout waiting for something to happen. If the remote connection sends a certificate down the pipe (identified by the presence of &#8220;&#8221;&#8212;&#8211;BEGIN CERTIFICATE&#8212;&#8211;&#8221;) it will process it, otherwise it returns the value &#8216;NOT FOUND&#8217;, which is a catch all for no certificate, a malformed certificate, a network timeout and so on.</p>
<p>A quick glance at these will reveal a lot of duplication: indeed the last two only differ by one line. This is on purpose; I actually started out building a do-everything script with a switch to determine behavior (like <a href="http://freecode.com/projects/ssl-cert-check">this</a> script I subsequently found). This would be a lot more efficient in terms of network requests, you could retrieve the cert once and analyse it in multiple ways. Unfortunately it turns out zabbix really only likes dealing with the one parameter &#8211; a minor issue for which I will forgive it &#8211; so I&#8217;ve broken this out into three smaller scripts.</p>
<p>OpenSSL will only return the date in a format like <em>&#8220;Sat Jan 1 17:15:00 WAST 2010&#8243;.</em> I was starting to figure out how to chop it up into a usable format like DDMMYYYY using sed, awk, cut and the rest but discovered  to my surprise that the unix date utility understands the string just fine as is. The date is converted to seconds since epoch and the &#8216;bc&#8217; utility does some math on it, returning a rounded value in days.</p>
<p>Instead of awk in the last two I&#8217;ve used a handy-dandy utility called, simply, &#8216;text replace&#8217; (tr). I actually don&#8217;t use awk, sed and regular expressions much and am correspondingly unfamiliar with the syntax, thus was happy to discover and use this nifty shortcut. It&#8217;s not as powerful as sed/awk but is great for a simple character replace like this, especially when the process of trying to manipulate both kinds of slashes in the issuer string and replace them with newlines <code>'\n'</code> is frying my brain.</p>
<p>As always, your mileage may vary, particularly regarding any differences in the basic syntax of the various utilities across platforms (I&#8217;m using RHEL). &#8217;date&#8217; for example is very forgiving here, this might not be the same everywhere. I&#8217;ve also had issues in the past with the syntax of SED on OSX.</p>
<p>Hope someone finds this helpful, and I will write up a brief post on using zabbix to manage SSL cert expiry at some point as well.</p>
        <br><br><font size=1"><i><center>Visit <a href="http://www.glenscott.net">glenscott.net</a> for more content. Some rights reserved: Except where specified otherwise, the content of this feed is licensed under a <a href="http://creativecommons.org/licenses/by-nc-nd/3.0/">Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License. <br><img width="44" height="15" src="http://www.glenscott.net/misc/creative_commons_by-nc-nd_88x31.png"></a></center></i></font>                              ]]></content:encoded>
			<wfw:commentRss>http://www.glenscott.net/2011/12/09/checking-ssl-certificate-expiry-date-and-issuer-an-openssl-wrapper-in-bash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Displaying your windows mobile device on a bigger screen via VNC</title>
		<link>http://www.glenscott.net/2009/12/02/displaying-your-windows-mobile-device-on-a-bigger-screen-via-vnc/</link>
		<comments>http://www.glenscott.net/2009/12/02/displaying-your-windows-mobile-device-on-a-bigger-screen-via-vnc/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 16:46:08 +0000</pubDate>
		<dc:creator>Glen</dc:creator>
				<category><![CDATA[mobile devices]]></category>
		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.glenscott.net/?p=32</guid>
		<description><![CDATA[Some time ago I was tasked with creating some training sessions for staff using smartphones running WM6. So I could both record procedures from the smartphone using a flash-video creation software, and demo things on a big screen live in front of the class, I setup my phone with VNC which allowed me to do [...]]]></description>
			<content:encoded><![CDATA[<p>Some time ago I was tasked with creating some training sessions for staff using smartphones running WM6. So I could both record procedures from the smartphone using a flash-video creation software, and demo things on a big screen live in front of the class, I setup my phone with <a href="http://en.wikipedia.org/wiki/Virtual_Network_Computing">VNC</a> which allowed me to do both.</p>
<p>I needed to create and deliver several training sessions for PDAs covering the following topics:</p>
<ul>
<li>Connection to the wireless network and config of proxies etc for internet access</li>
<li>Synching with the exchange server and related calendaring and email</li>
<li>Transferring files back and forth to the device</li>
</ul>
<p>As well as a few other items which came up on the day.</p>
<p>You&#8217;ll need a VNC server (not client) on the windows mobile device. I ended up downloading <a href="http://www.pocketvnc.com/projects/pocketvnc/">Pocket VNC Server</a> and running that, with a <a href="http://www.tightvnc.com/download.php">regular VNC client</a> connection from the laptop.</p>
<p>Once the service is running you have to figure out which IP each device is listening on, then initiate a client vnc connection from the PC to the mobile device. After this you can use the PDA and the PCÂ  (eg projector or big screen) will display what is happening on the PDA in a window, which can be recorded or screenshot as required.</p>
<p>There are two ways to get a VNC session to the PDA &#8211; either via an activesync connection (I used a USB cable, possibly you could use ActiveSync via bluetooth if you&#8217;re adventurous), or via a local wireless LAN. I wasted a lot of time trying to setup a Bluetooth PAN (Personal Area Network) between my laptop and the PDA so I could connect via a small private subnet, but couldn&#8217;t get it working. &lt;rant&gt;I remain convinced that most of bluetooth networking is junk and not yet much good for enterprise use&lt;/rant&gt;.</p>
<h4><strong>Option 1: Activesync (Cabled)</strong></h4>
<p>Activesync is actually the easiest way to get an IP connection. It wasn&#8217;t documented anywhere obvious, but once you have an activesync connection established, the two devices (host PC/laptop, PDA) should have the following IPs:</p>
<ul>
<li>192.168.55.100 &#8211; Host PC</li>
<li>192.168.55.101 &#8211; PDA</li>
</ul>
<p>As long as you&#8217;re not going to be messing with the activesync connection and don&#8217;t want to walk around or move far from the PC, this is fine to use. Its actually preferable in that you&#8217;re not at the mercy of a wireless connection for your presentation. Having the wireless drop out or go flaky when you&#8217;re trying to demonstrate something to a room full of people is not what you want.</p>
<h4><strong>Option 2: Wireless</strong></h4>
<p>This method could be used either in AP or ad-hoc config. As there was a good wireless signal from one of our campus access points in the room, I went with the AP option. I also allowed each device to DHCP an address: somewhat risky in case the leases changed for some reason but it worked out ok. A more leak-proof method would have been to hardwire the IP&#8217;s to something static while still using the wireless network.</p>
<p>I used a well known freeware tool called <a href="http://www.cam.com/vxutil.html">VXUtil</a> to determine the ip address of my PDA to use for connection to the VNC server.</p>
<p><strong>Pros:</strong> You can walk around the room, you can demonstrate the full range of exchange/activesync settings, you can demonstrate internet connectivity. (I&#8217;ve demo&#8217;d google earth on the pda on a big screen via this method &#8211; it can be a bit of a slideshow over VNC, but it gets the point across).</p>
<p><strong>Cons:</strong> Wireless can have random connection issues. You cant demonstrate setup of a wireless connection on the PDA since its already using one. Even if your setup doesn&#8217;t involve disabling and re-enabling wireless, You&#8217;ll probably end up disconnecting yourself anyway. (Windows mobile networking is <a href="http://www.glenscott.net/2007/11/16/a-hall-of-mirrors-configuring-windows-mobile-networking-and-the-gremlins-therein/">fun like that</a>).</p>
<h4><strong>Option 3: Both Wireless and Activesync, or: </strong><em>Heres one we prepared earlie<strong>r.</strong></em></h4>
<p>To get this done, You can use any live screen recording software, or even take screenshots of the steps in your demo. I used an app for windows (camtasia) since we had a license for it, but there are likely suitable programs for linux as well (provided you can get your networking going with or without activesync).</p>
<p><strong>Pros:</strong> Its rock solid. Networking is taken out of the picture so you shouldn&#8217;t have a problem.</p>
<p><strong>Cons: </strong>You have to have it all pre-prepared, if you want to deviate from the prepared material you have to augment your presentation with either option 1 or 2.</p>
<p>That&#8217;s about it. Get the VPN server installed, get some form of networking up, connect to it from the PC, and you&#8217;re good. Its a little slow but a lot better than trying to get a room full of people to see what&#8217;s going on by holding your 320&#215;240 PDA screen above your head&#8230;</p>
        <br><br><font size=1"><i><center>Visit <a href="http://www.glenscott.net">glenscott.net</a> for more content. Some rights reserved: Except where specified otherwise, the content of this feed is licensed under a <a href="http://creativecommons.org/licenses/by-nc-nd/3.0/">Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License. <br><img width="44" height="15" src="http://www.glenscott.net/misc/creative_commons_by-nc-nd_88x31.png"></a></center></i></font>                              ]]></content:encoded>
			<wfw:commentRss>http://www.glenscott.net/2009/12/02/displaying-your-windows-mobile-device-on-a-bigger-screen-via-vnc/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to fix Huawei E620 USB 3G Modem in Ubuntu 9.10 Karmic Koala</title>
		<link>http://www.glenscott.net/2009/12/01/how-to-fix-huawei-e620-usb-3g-modem-in-ubuntu-9-10-karmic-koala/</link>
		<comments>http://www.glenscott.net/2009/12/01/how-to-fix-huawei-e620-usb-3g-modem-in-ubuntu-9-10-karmic-koala/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 15:30:17 +0000</pubDate>
		<dc:creator>Glen</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.glenscott.net/?p=211</guid>
		<description><![CDATA[I recently upgraded my laptop to Ubuntu 9.10 (Karmic Koala) and among a few other niggles (mostly related to intel video support, or lack thereof) it completely broke support for my Huawei 3G (E620) modem. Fortunately the fix is fairly straightforward: install a new kernel. I went with the latest (v2.6.32 release candidate available over [...]]]></description>
			<content:encoded><![CDATA[<p>I recently upgraded my laptop to Ubuntu 9.10 (Karmic Koala) and among a few other niggles (mostly related to intel video support, or lack thereof) it completely broke support for my Huawei 3G (E620) modem. Fortunately the fix is fairly straightforward:<em> install a new kernel</em>. I went with the latest (v2.6.32 release candidate available <a href="http://kernel.ubuntu.com/~kernel-ppa/mainline/">over here at kernel.ubuntu.org</a> ) and the problem is solved.</p>
<p>If you want the gory details, check <a href="https://bugs.launchpad.net/ubuntu/+source/linux/+bug/446146">the thread over at bugs.launchpad.net</a>. I&#8217;ll distil the useful bits below.</p>
<p>After the upgrade, my huawei 3G modem stopped being detected by <a href="http://projects.gnome.org/NetworkManager/">NetworkManager</a>. I&#8217;d see the fake &#8216;ZeroCD&#8217; drive try to map itself and occasionally a gnome message box would be thrown up about a failed mount attempt, but no modem.</p>
<p>A look in the logs revealed /var/log/messages filling up with lines like this:</p>
<pre>kernel: option 3-1:1.2: GSM modem (1-port) converter detected
kernel: usb 3-1: GSM modem (1-port) converter now attached to ttyUSB0
kernel: option 3-1:1.1: GSM modem (1-port) converter detected
kernel: usb 3-1: GSM modem (1-port) converter now attached to ttyUSB1
kernel: option 3-1:1.0: GSM modem (1-port) converter detected
kernel: usb 3-1: GSM modem (1-port) converter now attached to ttyUSB2
kernel: option1 ttyUSB2: GSM modem (1-port) converter now disconnected from ttyUSB2
kernel: option 3-1:1.0: device disconnected
kernel: option1 ttyUSB1: GSM modem (1-port) converter now disconnected from ttyUSB1
kernel: option 3-1:1.1: device disconnected
kernel: option1 ttyUSB0: GSM modem (1-port) converter now disconnected from ttyUSB0
kernel: option 3-1:1.2: device disconnected</pre>
<p>
<p>
So the modem was being disconnected and reconnected at least a couple of times a second for some reason, and the storage device was not appearing at all.</p>
<p>I tried the <a href="http://www.draisberghof.de/usb_modeswitch/">usb_modeswitch</a> tool which is supposed to jolt misbehaving HUAWEI (and other brand) devices out of their stupor with some undocumented SCSI/USB commands, but no success this time.</p>
<p>After a bit of googling, it turns out this is (was) a <a href="https://bugs.launchpad.net/ubuntu/+source/linux/+bug/446146">known bug</a> in the way the more recent linux kernel handles the combination USB Modem/Storage device hardware (and was allowed to remain in a major release of Ubuntu which is a bit unfortunate as it seems these types of USB modems are pretty common).</p>
<p>There are a couple of fixes pending an official update: either install a patched version of the kernel, or temporarily disable the USB Storage kernel module which looks pretty easy and apparently worked for a few people:</p>
<pre><strong># rmmod usb-storage</strong></pre>
<p>
<p>
Untested by me: Your mileage may vary.Â  Be warned that even if this works, by unloading the usb-storage kernel module you will lose support for any USB based storage devices, so this is strictly a temporary workaround. I thought I&#8217;d try the more permanent and possibly dangerous (?) kernel solution first, which worked.</p>
<h3>Steps to upgrade your kernel to a compatible version:</h3>
<ol>
<li>Check your current version with the <strong>uname -a</strong> command. My post-9.10-Karmic upgrade version was:<em> 2.6.31-14-generic #48-Ubuntu SMPÂ  x86_64 GNU/Linux</em></li>
<li>Go to <a href="http://kernel.ubuntu.com/~kernel-ppa/mainline/">http://kernel.ubuntu.com/~kernel-ppa/mainline/</a> and download the .deb files for the kernel headers (&#8220;all&#8221;) and the kernel for your architecture (&#8220;amd64&#8243; or &#8220;i386&#8243;). If you don&#8217;t have any kind of internet on the affected ubuntu box, grab them via another connected machine and copy them via removable media (windows or mac should be fine for just getting the files). You want the &#8220;linux-header&#8221; and &#8220;linux-image&#8221; files from within the folder with the latest (hopefully stable) version number. You can ignore the source file for now.</li>
<li>Go to a command prompt, change to the folder where the downloaded .deb files are located, and execute the following, substituting the .deb file names for the versions you have (make sure you install the headers first).</li>
<li>
<pre>sudo dpkg -i ./linux-headers-2.6.32-020632rc8_2.6.32-020632rc8_all.deb</pre>
</li>
<li>
<pre>sudo dpkg -i ./linux-image-2.6.32-020632rc8-generic_2.6.32-020632rc8_amd64.deb</pre>
</li>
</ol>
<p>After this, provided everything worked, you&#8217;re a reboot away from your modem working again. After the boot, <strong>uname -a</strong> should reveal the newly installed kernel version. Mine is: <em>2.6.32-020632rc8-generic #020632rc8 SMP</em></p>
<p>Once plugged in, the modem worked instantly and my mobile broadband account connected fine. Hooray!</p>
<p>While <strong>lsusb</strong> output looked the same as before:</p>
<pre>Bus 006 Device 004: ID 12d1:1001 Huawei Technologies Co., Ltd. E620 USB Modem</pre>
<p>
<p>
My /var/log/messages also looked a lot healthier:</p>
<pre>kernel: USB Serial support registered for GSM modem (1-port)
kernel: option 6-2:1.0: GSM modem (1-port) converter detected
kernel: usb 6-2: GSM modem (1-port) converter now attached to ttyUSB0
kernel: option 6-2:1.1: GSM modem (1-port) converter detected
kernel: usb 6-2: GSM modem (1-port) converter now attached to ttyUSB1
kernel: option 6-2:1.2: GSM modem (1-port) converter detected
kernel: usb 6-2: GSM modem (1-port) converter now attached to ttyUSB2
kernel: usbcore: registered new interface driver option
kernel: option: v0.7.2:USB Driver for GSM modems
kernel: scsi 8:0:0:0: CD-ROMÂ Â Â Â Â Â Â Â Â Â Â  HUAWEIÂ Â  Mass StorageÂ Â Â Â  2.31 PQ: 0 ANSI: 2
kernel: scsi 8:0:0:1: Direct-AccessÂ Â Â Â  HUAWEIÂ Â  SD StorageÂ Â Â Â Â Â  2.31 PQ: 0 ANSI: 2
kernel: sr0: scsi-1 drive
kernel: Uniform CD-ROM driver Revision: 3.20
kernel: sr 8:0:0:0: Attached scsi generic sg1 type 5
kernel: sd 8:0:0:1: Attached scsi generic sg2 type 0
kernel: sd 8:0:0:1: [sdb] Attached SCSI removable disk</pre>
<p>
<p>
Additionally, with the new kernel, both the pseudo cdrom, the 3G modem, and presumably the SD storage (though I don&#8217;t use it) are working at the same time. So, problem solved.</p>
<p>(Another improvement I noticed with the new version of ubuntu/kernel is I can disconnect the wireless broadband account via networkmanager without nasty gnome freeze-ups. Not sure what the culprit was for this: I worked around by disconnecting the hardware to avoid freezes, but looks like this too is now solved).</p>
        <br><br><font size=1"><i><center>Visit <a href="http://www.glenscott.net">glenscott.net</a> for more content. Some rights reserved: Except where specified otherwise, the content of this feed is licensed under a <a href="http://creativecommons.org/licenses/by-nc-nd/3.0/">Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License. <br><img width="44" height="15" src="http://www.glenscott.net/misc/creative_commons_by-nc-nd_88x31.png"></a></center></i></font>                              ]]></content:encoded>
			<wfw:commentRss>http://www.glenscott.net/2009/12/01/how-to-fix-huawei-e620-usb-3g-modem-in-ubuntu-9-10-karmic-koala/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>WordPress, the OpenID plugin and &#8220;Fatal error: Call to a member function needsSigning() &#8230; in Server.php on line 1495&#8243;</title>
		<link>http://www.glenscott.net/2009/06/19/wordpress-the-openid-plugin-and-fatal-error-call-to-a-member-function-needssigning-in-server-php-on-line-1495/</link>
		<comments>http://www.glenscott.net/2009/06/19/wordpress-the-openid-plugin-and-fatal-error-call-to-a-member-function-needssigning-in-server-php-on-line-1495/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 07:36:48 +0000</pubDate>
		<dc:creator>Glen</dc:creator>
				<category><![CDATA[technical]]></category>
		<category><![CDATA[website]]></category>

		<guid isPermaLink="false">http://www.glenscott.net/?p=140</guid>
		<description><![CDATA[For many moons I&#8217;ve been attempting to get the server functionlity of the OpenID plugin working with my wordpress install and been stumped on the following two errors: First, any hit on the OpenID /openid/server url (I am using non-default permalinks) generated the following : Fatal error: Call to undefined function add_options_page() in /path/to/wp-content/plugins/wp-contact-form/wp-contactform.php on [...]]]></description>
			<content:encoded><![CDATA[<p>For many moons I&#8217;ve been attempting to get the server functionlity of the <a href="http://wordpress.org/extend/plugins/openid/">OpenID plugin</a> working with my wordpress install and been stumped on the following two errors:</p>
<p>First, any hit on the OpenID /openid/server url (I am using non-default permalinks) generated the following :</p>
<blockquote><p><pre>Fatal error: Call to undefined function add_options_page() in
/path/to/wp-content/plugins/wp-contact-form/wp-contactform.php on line 200
</pre>
</p>
</blockquote>
<p>
This was pretty obviously a conflict with <a href="http://wordpress.org/extend/plugins/wp-contactform/">WP-Contactform</a>. Disabling this plugin made the above error go away, so I&#8217;ll be looking for a <a href="http://wordpress.org/extend/plugins/search.php?q=contact+form">replacement</a> for it soon.
</p>
<p>Once the contactform error was worked around by disabling the plugin, the following appeared:</p>
<blockquote><p><pre>Fatal error: Call to a member function needsSigning() on a non-object in
/path/to/wp-content/plugins/openid/Auth/OpenID/Server.php
on line 1495</pre>
</p>
</blockquote>
<p>This would happen when I tried to specify my URL (whether main blog or wordpress author url) as an openid &#8211; it would seem to be working, go through the logon process then generate the error and the authentication process would abort.</p>
<p>After much googling (not much out there but <a href="http://code.google.com/p/diso/issues/detail?id=101">this was helpful</a>, sort of) and a good period of waiting and trying new versions of the OpenID plugin as they were released, the solution / workaround turned out to be extremely simple. It was a plugin conflict (doh) and a process of elimination identified the culprit and main show stopper: the <a href="http://wordpress.org/extend/plugins/cryptographp/">cryptographp plugin.</a></p>
<p>No idea why but once it was disabled things worked fine. I was using this plugin to generate protective captchas for my comment forms. I replaced it with <a href="http://wordpress.org/extend/plugins/simple-captcha/">Simple CAPTCHA</a>. (Its worth noting that in the 15 minutes or so I had no CAPTCHA active, I had already received a bot comment spam &#8211; and my site isn&#8217;t heavily trafficked by any means). I might choose another solution at some point from the <a title="a Plethora of PiÃ±atas" href="http://wordpress.org/extend/plugins/search.php?q=captcha">plethora</a> available, but for the time being, Simple Captcha gets the job done fine.</p>
<p>So thats about it. In a nutshell, some seemingly unrelated plugins were conflicting, disabling them and replacing with alternatives fixed it.</p>
<p>Now I can use glenscott.net as an OpenID, and my visitors have a nice simple OpenID login option on comments pages =)</p>
        <br><br><font size=1"><i><center>Visit <a href="http://www.glenscott.net">glenscott.net</a> for more content. Some rights reserved: Except where specified otherwise, the content of this feed is licensed under a <a href="http://creativecommons.org/licenses/by-nc-nd/3.0/">Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License. <br><img width="44" height="15" src="http://www.glenscott.net/misc/creative_commons_by-nc-nd_88x31.png"></a></center></i></font>                              ]]></content:encoded>
			<wfw:commentRss>http://www.glenscott.net/2009/06/19/wordpress-the-openid-plugin-and-fatal-error-call-to-a-member-function-needssigning-in-server-php-on-line-1495/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu Netbook Remix on Asus eeepc / eee pc</title>
		<link>http://www.glenscott.net/2008/12/11/ubuntu-netbook-remix-on-asus-eeepc-eee-pc/</link>
		<comments>http://www.glenscott.net/2008/12/11/ubuntu-netbook-remix-on-asus-eeepc-eee-pc/#comments</comments>
		<pubDate>Thu, 11 Dec 2008 06:53:07 +0000</pubDate>
		<dc:creator>Glen</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[netbook]]></category>
		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.glenscott.net/?p=108</guid>
		<description><![CDATA[Following my previous post on restoring the default xandros install to the eeepc, it didn&#8217;t take me long to move to (and ultimately settle on) Ubuntu. Its not perfect but a hell of a lot better than stock Xandros. I had a play with the stock ASUS install for a while, but it was less [...]]]></description>
			<content:encoded><![CDATA[<p>Following <a href="http://www.glenscott.net/2008/11/12/restore-an-eee-pc-701-back-to-factory-xandros-from-a-usb-stick-with-no-asus-support-dvd/">my previous post on restoring the default xandros install to the eeepc</a>, it didn&#8217;t take me long to move to (and ultimately settle on) Ubuntu. Its not perfect but a hell of a lot better than stock Xandros.</p>
<p>I had a play with the stock ASUS install for a while, but it was less than exciting. What finally killed it for me was the broken Xandros wireless networking. To get WPA you need to do an update (via the wired connection) and after the update it still didn&#8217;t work for me. I finally learned that due to some scripting errors by the eee pc xandros developers WPA still breaks if there are certain characters in the password. Rather than do the script editing dance to fix a distro I was already feeling lackluster about I decided to move on to Ubuntu.</p>
<p>Installation of Ubuntu is a total breeze and everything you need plus instructions is over here : <a href="http://www.ubuntu-eee.com/">http://www.ubuntu-eee.com/</a>. I won&#8217;t go over it here but to summarize:</p>
<ol>
<li>Grab the .ISO (less than 700MB, I used the torrent)</li>
<li>Get the <a href="http://unetbootin.sourceforge.net/">unetbootin netboot install utility</a> (sourceforge)</li>
<li>Blast the .ISO onto your 1GB usb drive</li>
<li>Fire up your eeepc, do the usual ESC to choose boot device, and you&#8217;re away.</li>
</ol>
<p>Up until the install I wasn&#8217;t aware of the existence of the <a href="http://www.canonical.com/projects/ubuntu/nbr">ubuntu netbook interface remix</a>: its essentially a touchscreen friendly netbook menu/window manager and very cool. Its the first real argument I&#8217;ve seen that might sway me towards installing a <a href="http://jkkmobile.blogspot.com/2007/12/asus-eee-pc-with-touch-screen.html">third party aftermarket touchscreen</a>.</p>
<p>There are a couple of things that needed changing from the stock install, most importantly the broken SD Card mount function. Fortunately this is dead easy to fix (and it is maybe already sorted in the latest release even as I type this).</p>
<h3>Run an update</h3>
<p>Before doing any tinkering, its worth allowing ubuntu to run a package update via the synaptic package manager / built in updater / cmd line &#8220;apt-get update, apt get upgrade&#8221;. This is dead easy: do it first =)</p>
<h3>Fixing the SD Card mount</h3>
<p>This is a minor annoyance, possibly already fixed if there is a new release out, but very easy to fix.</p>
<ol>
<li>Fire up a terminal window (under accessories)</li>
<li>
<pre><strong>sudo gedit /etc/fstab</strong></pre>
</li>
<li>Comment out (put a hash at the start of) the last line which refers to the cdrom.</li>
<li>Save and exit.</li>
</ol>
<p>This is a minor oversight by the distribution chefs and takes about five minutes to fix. After doing that the SD card mount works seamlessly.</p>
<h3>Getting your Divx/Xvid going</h3>
<p>The next thing you&#8217;ll probably want to do is install media codecs so you can play your divx/xvids files on the go. This is as simple as firing off the media player while you have an active net connection and telling it to download the codecs from the apt repository (just search for &#8216;xvid&#8217;).</p>
<p>Another package I needed which didn&#8217;t come preinstalled was the VPN client. Standard ubuntu procedure applies here, as in the following packages should be installed:</p>
<ul>
<li>pptp-client</li>
</ul>
<ul>
<li>gnome-network-manager</li>
</ul>
<p>After that a command line network manager restart command purports to give you the VPN options in your network menu, but I needed to reboot before mine appeared. After all this was installed, my netbook connected ot the WPA network and through again to the PPTP VPN no worries.</p>
<h3>Currently <span style="text-decoration: line-through;">Unresolved</span> Resolved Issue 1: hibernation is busted.</h3>
<p><em><span style="text-decoration: line-through;">I won&#8217;t go into detail, but even after installing the hibernate package and going in with a <a href="http://gparted.sourceforge.net/">gparted</a> usb boot to match the swap partition size to my installed RAM size (512mb), hibernation is still broken. I don&#8217;t get the &#8220;Insufficient SWAP&#8221; type error messages now and it appears to be hibernating, but powering it back on results in a fresh boot rather than a restore from hibernation.</span></em></p>
<p><em><span style="text-decoration: line-through;">For the time being I&#8217;m resorting to leaving it in suspend and making sure I keep it charged if its not being used for a few days.</span></em></p>
<p><strong>UPDATE:</strong> following the instructions for file-based hibernation in <a href="http://wiki.geteasypeasy.com/Fix:_hibernate">this excellent article at ubuntu-eee.com</a> has things working perfectly.</p>
<h3>Currently <span style="text-decoration: line-through;">Unresolved</span> Resolved Issue 2: Webcam is busted</h3>
<p><span style="text-decoration: line-through;"><em>Firing up the built-in &#8216;cheese&#8217; app doesn&#8217;t give me any webcam goodness, only static. This is probably some default setting gone awry in a config file: once again I havent done much (any) research on this so it might be a simple fix. I haven&#8217;t tried Skype with it yet either.</em></span></p>
<p><strong>UPDATE:</strong> Somehow the webcam had become disabled in the BIOS between the Xandros install and the Ubuntu install. Re-enabling it fixed all. Doh.</p>
<h3>Currently Unresolved Issue 3: Some windows don&#8217;t fit the screen</h3>
<p>This can be gotten around to an extent by the hold-down-alt-when-clicking trick, but what I really want is a VGA utility like the one included in the stock distro which allows a bigger virtual screen size. There might be something out there, but I haven&#8217;t give it a proper look yet.</p>
<p>I&#8217;ll post an update if I manage to resolve any of these items (before going on holiday in a few weeks =) )</p>
        <br><br><font size=1"><i><center>Visit <a href="http://www.glenscott.net">glenscott.net</a> for more content. Some rights reserved: Except where specified otherwise, the content of this feed is licensed under a <a href="http://creativecommons.org/licenses/by-nc-nd/3.0/">Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License. <br><img width="44" height="15" src="http://www.glenscott.net/misc/creative_commons_by-nc-nd_88x31.png"></a></center></i></font>                              ]]></content:encoded>
			<wfw:commentRss>http://www.glenscott.net/2008/12/11/ubuntu-netbook-remix-on-asus-eeepc-eee-pc/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Restore an Eee PC 701 back to factory Xandros from a USB stick with no ASUS Support DVD</title>
		<link>http://www.glenscott.net/2008/11/12/restore-an-eee-pc-701-back-to-factory-xandros-from-a-usb-stick-with-no-asus-support-dvd/</link>
		<comments>http://www.glenscott.net/2008/11/12/restore-an-eee-pc-701-back-to-factory-xandros-from-a-usb-stick-with-no-asus-support-dvd/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 15:13:30 +0000</pubDate>
		<dc:creator>Glen</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[netbook]]></category>
		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.glenscott.net/?p=93</guid>
		<description><![CDATA[My recently aquired (used) asus eee pc 701 came with XP installed and no support CD/DVD. I wanted to get rid of XP and have a play with the stock linux O/S instead: I expected this to be an easy gimmie, but it was not, and ate up an evenings worth of my time googling [...]]]></description>
			<content:encoded><![CDATA[<p>My recently aquired (used) asus eee pc 701 came with XP installed and no support CD/DVD. I wanted to get rid of XP and have a play with the stock linux O/S instead: I expected this to be an easy gimmie, but it was not, and ate up an evenings worth of my time googling around for solutions so I&#8217;m going to lay out the shortcuts here to hopefully save someone else the pain.</p>
<p>As mentioned, the eeepc I acquired had XP installed (nlited) and no recovery DVD, so no option of using the built in rescue partition to restore the EEEPC back to the factory state. (Apparently you can hit F9 normally and it takes to to a <em>&#8216;restore me from hidden partiton&#8217;</em> type GRUB menu). I figured this wouldn&#8217;t be a problem, I&#8217;d just go to the Asus support site and grab the image. Its linux, right, should be able to get the firmware images easily from the manufacturer, right?</p>
<p>Wrong.</p>
<p>I <em>ransacked </em>the <a href="http://support.asus.com">official eeepc.asus.com support site</a> looking for what I needed: at the other end of the search I can honestly say I found zero useful material or info there. (Don&#8217;t even bother visiting it, you&#8217;re better off going straight to google for this). The support/download section had BIOS updates and the like, but nothing to help with a reinstall. Even searching the forums for what I imagined to be blatantly obvious issues (eg: where do I download the restore cd?) came up with bupkis.</p>
<p>I concluded, to my chagrin, Asus has decided to withhold the support software (a linux distro?) for whatever reason, and the forums were evidently being policed according to this policy, removing any useful information pertaining to it. I expected to find at least a link to an outside site, as google was telling me about various helpful torrents: not finding even a whisper of this on the official support forums smells like seafood.</p>
<p>After a bit of googling and torrent searching I found a few ISO images which purported to be eeepc 701 flavored including a copy of Ubuntu, but I couldn&#8217;t get them to run from USB key: <a href="http://en.wikipedia.org/wiki/SYSLINUX">syslinux</a> made the drive bootable but either the kernel options were wrong and linux would not boot, or I could get it to boot by plugging in manual options (specifying location of initrd etc) but only made it partway into a boot before falling over and restarting. (I didn&#8217;t bother noting or chasing down those errors as I didn&#8217;t particularly fancy my mission this evening to be going down the road of fixing boot issues in roll-your-own livecds booting from USB sticks). I realise I&#8217;ll probably have to suss this out properly for installing Ubuntu and other flavors down the road, but for now I just wanted the <em>stock </em>Xandros system restore.</p>
<p>I eventually found some downloads which solved the problem.</p>
<h3>Heres the process in WinXP:</h3>
<ol>
<li>The first thing you need is the <span class="largefilename">EeePC 901 ASUS Linux USB Flash Utility available from eeefiles.com (<em>Link updated! </em></span><em>h<a href="http://www.netbookfiles.com/574/eee-pc-8g-xp-asus-usb-flash-utility-version-v1131/">ttp://www.netbookfiles.com/574/eee-pc-8g-xp-asus-usb-flash-utility-version-v1131/</a></em> )<span class="largefilename">. I guess this is the version which comes on the support DVD, but I don&#8217;t have that and it wasn&#8217;t available from the official site, so&#8230; (By the way, thanks a lot Asus, making me resort to downloading from a third party site instead of a trusted source).</span></li>
<li>The next file you&#8217;ll need is the Xandros Eee Pc 701 Edition ISO. Get it from the <a href="http://sourceforge.net/project/showfiles.php?group_id=215613">eeepc 701 community project on sourceforge</a>.</li>
<li>Once you&#8217;ve downloaded both of the above its all pretty much downhill!</li>
<li>Now either burn the ISO to a physical disk, or mount the image using a program like <a href="http://www.daemon-tools.cc">daemontools</a>.</li>
<li>Plug in your 2GB+ USB stick</li>
<li>Run the USB Flash utility, select the detected USB drive,wait for it to format. If prompted, remove and re-insert the stick after the format. It will ask for the linux disk (either insert the physical copy you burned or mount the ISO into a drive).</li>
<li>Linux will copy (it takes a few minutes) and at the end you should have a bootable restore on the USB drive.</li>
<li>Power on the eeepc, hit F2 for BIOS options, go to &#8220;Advanced&#8221; and set the &#8220;OS Installation&#8221; to &#8220;Start&#8221;. F10 to Save and exit.</li>
<li>Put the USB drive in your eeepc, reboot, hit escape on POST to get to the boot menu, and you&#8217;re off.</li>
<li>Xandros will install (took about ten minutes on mine). Remember to go back into the BIOS and set &#8220;OS Installation&#8221; to &#8220;Finished&#8221; once its finished.</li>
</ol>
<p>That really shouldn&#8217;t have taken me a whole evening of googling to get done =</p>
        <br><br><font size=1"><i><center>Visit <a href="http://www.glenscott.net">glenscott.net</a> for more content. Some rights reserved: Except where specified otherwise, the content of this feed is licensed under a <a href="http://creativecommons.org/licenses/by-nc-nd/3.0/">Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License. <br><img width="44" height="15" src="http://www.glenscott.net/misc/creative_commons_by-nc-nd_88x31.png"></a></center></i></font>                              ]]></content:encoded>
			<wfw:commentRss>http://www.glenscott.net/2008/11/12/restore-an-eee-pc-701-back-to-factory-xandros-from-a-usb-stick-with-no-asus-support-dvd/feed/</wfw:commentRss>
		<slash:comments>43</slash:comments>
		</item>
		<item>
		<title>Windows Mobile 5/6 Networking Profiles, Proxy and VPN setup</title>
		<link>http://www.glenscott.net/2008/11/04/windows-mobile-56-networking-profiles-proxy-and-vpn-setup/</link>
		<comments>http://www.glenscott.net/2008/11/04/windows-mobile-56-networking-profiles-proxy-and-vpn-setup/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 15:53:58 +0000</pubDate>
		<dc:creator>Glen</dc:creator>
				<category><![CDATA[mobile devices]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.glenscott.net/?p=35</guid>
		<description><![CDATA[After the last rant on Windows Mobile networking, I&#8217;ll go over a few actual solutions to the issues I encountered: hopefully a few people may find this more helpful. Note that the following explanations, definitions of features and so on are the product of my own observation and experimentation with various WM5 and WM6 mobile [...]]]></description>
			<content:encoded><![CDATA[<p>After <a href="http://www.glenscott.net/2007/11/16/a-hall-of-mirrors-configuring-windows-mobile-networking-and-the-gremlins-therein/">the last rant on Windows Mobile networking</a>, I&#8217;ll go over a few actual solutions to the issues I encountered: hopefully a few people may find this more helpful.</p>
<p>Note that the following explanations, definitions of features and so on are the product of my own observation and experimentation with various WM5 and WM6 mobile devices. I have found some documentation on their functions but the majority of information I have discovered through trial and error. If there is some official documentation somewhere which contradicts what I say here (and I wouldn&#8217;t be at all surprised) then so be it: what I can say for sure is mine <em>works</em>.</p>
<p>That said, Windows Mobile networking is in my experience notoriously flaky and even though the stuff here works for my device, your mileage may vary considerably.</p>
<p>Ok, lets get into it.</p>
<blockquote><p><span style="color: #ff0000;"><strong>Golden rule:</strong> <em>Anytime you change <strong>anything at all</strong> in the networking profiles, after you have saved the changes, disable and re-enable the wireless network/adapter. I have a control utility for this on my device &#8211; (<a href="http://wiki.xda-developers.com/index.php?pagename=HTC_Hermes">HTC Hermes</a>) &#8211; but this will vary between devices. Following this stepÂ  every time I change anything has reduced my frustrations considerably &#8211; <strong>not </strong>doing this means settings often just don&#8217;t take effect, and after doing this sometimes things just start working.</em></span></p></blockquote>
<h3>A quick explanation of terms I&#8217;ve used:</h3>
<ul>
<li><em>&#8220;Config Profiles&#8221; </em>refer to the named settings you can create and assign to different networks in &#8220;Network Management&#8221; (Start -&gt; Settings -&gt; Connections -&gt; Connections -&gt; Advanced -&gt; Select Networks) &#8211; Some of the existing config profiles are &#8216;My ISP&#8221; and &#8220;My Workplace&#8221; (and you will have others automatically created for your ISP if you have mobile internet access on your SIM card via a 3G or GPRS network).</li>
</ul>
<h3>Explanation of how WM decides which network to use (And hence which attached config profile is used to decide how to connect)</h3>
<p>Windows mobile networking is whack (but you knew that already, right?). Here&#8217;s how it breaks down: It decides how to handle a http network request based on whether there are any <em><strong>decimals </strong></em>(periods) in the dns name.</p>
<p>By its logic, anything with a decimal/period is &#8216;internet&#8217; and anything without a decimal/period is &#8216;work&#8217;.</p>
<p><strong>So: </strong></p>
<ol>
<li>&#8220;<strong>http://bogus.internal</strong>&#8221; is handled with the config profile attached to the<em>&#8220;Internet&#8221;</em> network</li>
<li>&#8220;<strong>http://bogus</strong>&#8221; is handled with the config profile attached to the<em>&#8220;Private Network&#8221;</em> network</li>
</ol>
<p>You can create multiple different named config profiles and assign any of them to either <em>&#8220;Internet&#8221;</em> or <em>&#8220;Private Network&#8221;</em>.</p>
<p>An important thing to note is, a config cannot have a VPN server added to it (or use an already setup VPN) when applied to the &#8216;Internet&#8217; network. If you want to use a VPN you&#8217;ll have to do it through the &#8216;Work&#8217; network (see exceptions hint below).</p>
<h3>Explanation of the &#8216;Exceptions&#8217; settings.</h3>
<p>Now &#8211; anything in the &#8216;Exceptions&#8217; list goes through the &#8220;My Work&#8221; profile regardless of whether the dns name has decimals in it to not. The good news is you can use wildcards here to force a wide range of sites through the &#8216;My Work&#8217; profile if you want &#8211; hint: <strong>http:/*.*</strong> and <strong>https://*.*</strong> . I didn&#8217;t end up using this for my solution, but you might find it useful.</p>
<p>I&#8217;m sure this flavor of networking makes sense to some software engineer in Microsoft land, but to me it just spells confusion. Once I worked out what was actually going on, I figured out some shortcuts/config hacks which can be used to railroad the networking into doing more or less what you tell it to.</p>
<h3>So here&#8217;s what I&#8217;ve done to make mine work:</h3>
<p>First, I access everything using its FQDN &#8211; no dotless machinename shortcuts. This makes sure everything is using the profile assigned to &#8220;Internet&#8221; (regardless of whether I&#8217;m on a work network or not).</p>
<p>Make sure the &#8216;Exceptions&#8217; section has no entries.</p>
<p>Next, tell windows mobile that every wireless network you connect to is &#8220;The Internet&#8221;. Forget about the &#8220;Work&#8221; option . As far as my usage goes, that option is useless. All the wireless networks I connect to are set to &#8220;Internet&#8221;. If you have already added a wireless network and don&#8217;t know if its tagged to &#8220;Work&#8221; or &#8220;Internet, you can go into settings -&gt; wireless networks, find existing networks, and change which network it connects to.</p>
<p>Next, create a couple of new custom network configs, as follows:</p>
<ul>
<li>&#8216;Direct Connection&#8217; &#8211; this does as it says, and contains no settings for proxy or vpn.</li>
<li>&#8216;Proxy Connection&#8217; &#8211; this has my work proxy server entered</li>
</ul>
<p>You do this via Settings &#8211;&gt; connections (tab) &#8211;&gt; connections (icon) &#8211;&gt; Advanced (tab), Select Networks (button). Here you can edit existing or create new config profiles.</p>
<blockquote><p><span style="color: #333399;"><em>Incidentally, my workplace uses VPNs to grant authenticated access to the wireless network &#8211; so not allowing a VPN connection to a host on a &#8220;private network&#8221; just breaks everything.</em></span></p></blockquote>
<p>Once you&#8217;ve done that and entered your proxy authentication credentials in the appropriate places, you&#8217;re ready to go. Whenever you want to change how you&#8217;re connecting to the net go to network settings, and change &#8220;internet&#8221; to one of your created profiles. Remember to start/stop the wireless to force the change, and your next network access should be using either direct, proxy, (or VPN &#8211; see below), whichever you&#8217;ve chosen.</p>
<p>By doing this you lose any pretense of windows Mobile networking transparently working from whichever location / network you are connected to, but it never worked properly for me anyway, and at least this way you have some control back.</p>
<h3>Connecting to a VPN</h3>
<p>The above covered getting web access only, either direct or via a proxy. To get a VPN connection active (eg for skype and the like) heres what you have to do instead:</p>
<ol>
<li>Assign a config profile to the &#8216;work&#8217; network</li>
<li>Add a VPN connection to the config profile you used. You can add VPN connections to a config profile by assigning it to to the &#8220;Internet&#8221; connection, hitting OK, going back to the &#8216;Tasks&#8217; tab and clicking the &#8216;Add a new VPN server connection&#8217;.</li>
<li>Add the appropriate wildcard exceptions (to the &#8216;exceptions&#8217; section) to trigger the VPN connection for every hostname.</li>
</ol>
<p>Once I get a VPN up at my work from inside the wireless I can make direct connections to outside hosts, for example using <a href="http://www.pocketputty.net/">PocketPutty</a>. Be warned though that even if it does connect, Windows Mobile likes to shut down the VPN connection once it decides it is no longer in use, eg after you haven&#8217;t looked at web pages for a while, regardless of whatever else you are doing on the network, (say in a live SSH session). Parking pocket IE on a web page with an auto-refresh might possibly fool it into keeping the VPN alive, but I haven&#8217;t experimented with that yet.</p>
<p>Hopefully there is some useful info in here and it eases the pain of getting your mobile device networking in a saner fashion.</p>
<p><em>This is a fairly quick covering of networking with WM5/6 and its highly likely there are holes, inaccuracies and/or bits left out:Â  If anyone has queries, corrections or extra to add, go ahead and comment or hit up the contact form for direct email.</em></p>
        <br><br><font size=1"><i><center>Visit <a href="http://www.glenscott.net">glenscott.net</a> for more content. Some rights reserved: Except where specified otherwise, the content of this feed is licensed under a <a href="http://creativecommons.org/licenses/by-nc-nd/3.0/">Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License. <br><img width="44" height="15" src="http://www.glenscott.net/misc/creative_commons_by-nc-nd_88x31.png"></a></center></i></font>                              ]]></content:encoded>
			<wfw:commentRss>http://www.glenscott.net/2008/11/04/windows-mobile-56-networking-profiles-proxy-and-vpn-setup/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Adding search plugins to firefox is now broken by default?</title>
		<link>http://www.glenscott.net/2008/07/07/adding-search-plugins-to-firefox-is-now-broken-by-default/</link>
		<comments>http://www.glenscott.net/2008/07/07/adding-search-plugins-to-firefox-is-now-broken-by-default/#comments</comments>
		<pubDate>Mon, 07 Jul 2008 04:12:39 +0000</pubDate>
		<dc:creator>Glen</dc:creator>
				<category><![CDATA[rant]]></category>
		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.glenscott.net/?p=36</guid>
		<description><![CDATA[I&#8217;ve just discovered an incredibly annoying bug downgrade &#8220;feature&#8221;Â in the new firefox (3) &#8211; the new add-search-plugins site is broken.Â IÂ noticed itÂ in later versions of firefox 2.xÂ asÂ well: I was kind of hoping itÂ was somethingÂ temporaryÂ butÂ it looksÂ likeÂ itsÂ hereÂ to stay. (QuickÂ solution: ignore the site the &#8220;Add engines&#8221; link takes you to and go to mycroft.mozilla.org instead &#8211; its all there). [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just discovered an incredibly annoying <span style="text-decoration: line-through;">bug</span> <span style="text-decoration: line-through;">downgrade</span> &#8220;feature&#8221;Â in the new firefox (3) &#8211; the new add-search-plugins site is broken.Â IÂ noticed itÂ in later versions of firefox 2.xÂ asÂ well: I was kind of hoping itÂ was somethingÂ temporaryÂ butÂ it looksÂ likeÂ itsÂ hereÂ to stay.</p>
<p><em>(QuickÂ solution: ignore the site the &#8220;Add engines&#8221; link takes you to and go to <a href="http://mycroft.mozdev.org/">mycroft.mozilla.org</a> instead &#8211; its all there).</em></p>
<p>I&#8217;m a big fan of the firefox search bar: I have it setup for <a href="http://www.google.com">google</a>, <a href="http://images.google.com">google images</a>, <a href="http://dictionary.reference.com">dictionary.com</a>, <a href="http://www.urbandictionary.com">urban dictionary</a>, <a href="http://en.wikipedia.org">wikipedia</a>, <a href="http://en.wikiquote.org">wikiquote</a>, <a href="http://www.youtube.com">youtube</a>, <a href="http://www.imdb.com">imdb</a> and <a href="http://www.ebay.com.au">ebay</a>. I&#8217;ve even written two searchÂ plugins inÂ use at the computer scienceÂ dept at myÂ university which is used to  searchÂ the staff directory +Â andÂ generalÂ website.Â  I useÂ them all theÂ time, and they will beÂ includedÂ in the firefox 3.x deployed toÂ the workstations our 17+Â computer labs thisÂ semester.</p>
<p>So I&#8217;mÂ aÂ fan, I consider searchÂ pluginsÂ aÂ highlyÂ desirable ifÂ not essential time-saving featureÂ in my browser,Â andÂ as soonÂ as I installÂ a new copy of firefox, I  take time out to customise my searchÂ menu pretty much straightaway. I quietly evangelise the feature to others, show them how easy their common searches can be. Click here, click there, bam, done, easier, isnt firefox great?</p>
<p>Problem is, Â what used to be a simple and smooth process is no longer. By default anyway &#8211; and only if you&#8217;ve upgraded your browser relatively recently.</p>
<p>Now I haven&#8217;t actually gone backÂ and installed an older version to check orÂ anything,Â but I&#8217;m pretty sure thatÂ gettingÂ more searchÂ pluginsÂ used toÂ beÂ aÂ case of dropping the search menu,Â selecting  <em>&#8220;Manage Search engines&#8221;</em>, then <em>&#8220;Get more search engines&#8221;</em> (or the equivalentÂ text) in the settings dialog.</p>
<p>This would take me to a site I never bothered to remember the URL of, since the link was always right there in settings.</p>
<p>Used to be, I could go <em>*wherever the aforementioned link went*</em>, type in the name of<em> *major searchableÂ site*</em> I wanted to add (ebay/youtube/wikipedia/etc) and would be presented with a list of links &#8211; click on them, approve the security popup, and wham, the plugin is added. It was quick and easy, and I found that if I was searching somewhere (ebay for example), rather than go straight to the site and use their search, it was worth the 60 or so extra seconds to go via the search plugins site and add them to my search bar.</p>
<p>Now, this simplicity is broken, due to a simple change: the <em>&#8220;Get more engines&#8221;</em> link now takes me to <a href="https://addons.mozilla.org/en-US/firefox/browse/type:4/cat:all?sort=name">addons.mozilla.org</a>. Different site, ok, cool &#8211; as long as it gives me the functionality,Â right? I have faith. Its landedÂ me automaticallyÂ in the &#8216;SearchÂ plugins&#8217;Â category. Cool.Â I seach for  &#8216;ebay&#8217;. It turns up&#8230; zilch. Searching for &#8216;google&#8217; gives me&#8230; &#8216;AOL search&#8217; (wtf?).</p>
<p>OhÂ no.</p>
<p>A couple of minutes later navigating around  and trying different searchesÂ withÂ no fruit, I realise that regardless of whetherÂ this site actually doesÂ conspireÂ toÂ harbour the search barÂ plugins I pursue, perhaps concealedÂ behindÂ someÂ menu or searchÂ option IÂ haveÂ overlooked,Â however n00b-like I may beÂ in overlookingÂ saidÂ option, this new way of addingÂ pluginsÂ hasÂ failed,Â catastrophically. It hasÂ failed theÂ end userÂ test. Namely, itsÂ chief advertised function &#8211; adding searchbarÂ plugins &#8211; isÂ nowhereÂ in sight. Not to the casualÂ user,Â andÂ not to me. It is, it seems, akin toÂ gettingÂ inÂ aÂ taxi,Â askingÂ toÂ beÂ taken to aÂ restaurant andÂ beingÂ dumped at the local gymnasium. IÂ wantedÂ a hamburger and I didn&#8217;t evenÂ getÂ something edible. <em>The place I&#8217;ve been taken isÂ not evenÂ related.</em></p>
<p>So I dumped the broken site and hit google looking for firefox search plugins. A couple of links in, I found what looks like the old site &#8211; <a href="http://mycroft.mozdev.org/">mycroft.mozdev.org</a> -Â whichÂ has the goodness, theÂ instant search,Â the 60Â second convenience IÂ wanted. I bookmarked it, problem solved &#8211; for me, anyway. Now I remember that URL in case I need  to add more plugins on another machine, or demonstrate the add plugins feature on someone elses browser.</p>
<p>I just hope this difficulty doesn&#8217;tÂ put people off using firefox, especially thoseÂ migratingÂ fromÂ other browsers.</p>
        <br><br><font size=1"><i><center>Visit <a href="http://www.glenscott.net">glenscott.net</a> for more content. Some rights reserved: Except where specified otherwise, the content of this feed is licensed under a <a href="http://creativecommons.org/licenses/by-nc-nd/3.0/">Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License. <br><img width="44" height="15" src="http://www.glenscott.net/misc/creative_commons_by-nc-nd_88x31.png"></a></center></i></font>                              ]]></content:encoded>
			<wfw:commentRss>http://www.glenscott.net/2008/07/07/adding-search-plugins-to-firefox-is-now-broken-by-default/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Simple quick and dirty linux to smb copy backup script using smbfs</title>
		<link>http://www.glenscott.net/2008/05/10/simple-quick-and-dirty-linux-to-smb-copy-backup-script-using-smbfs/</link>
		<comments>http://www.glenscott.net/2008/05/10/simple-quick-and-dirty-linux-to-smb-copy-backup-script-using-smbfs/#comments</comments>
		<pubDate>Sat, 10 May 2008 14:39:06 +0000</pubDate>
		<dc:creator>Glen</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.glenscott.net/?p=37</guid>
		<description><![CDATA[I recently wrote this bash script for the purpose of a simple selective backup on one of our linux servers. It tars up a bunch of files and copies them to a windows / SMB server elsewhere on the network (where it is then backed up to tape as per everything else on that server). [...]]]></description>
			<content:encoded><![CDATA[<p>I recently wrote this bash script for the purpose of a simple selective backup on one of our linux servers. It tars up a bunch of files and copies them to a windows / SMB server elsewhere on the network (where it is then backed up to tape as per everything else on that server). I know there are many different examples of this type of script on the interweb already, but someone might find this version helpful as well.</p>
<p>There seems to be a few different ways to get the SMB bit done but I ended up using smbfs: you&#8217;ll need this on your system for this script to work. If you don&#8217;t have it and you&#8217;re using a package manager it should be pretty simple to get, a bit of <strong><code>apt-get install smbfs</code></strong> should do the trick.</p>
<p>Note: I am aware of various security issues with running scripts as root, storing passwords in scripts, and this sort of thing. Since this is a <strong>super simple backup script</strong>, I&#8217;m doing it anyway : Complaints department is /dev/null ;)</p>
<p><strong>Script 1: </strong>this is a super simple version. It tars and copies some folders to the remote share and thats it.</p>
<p><code><br />
#!/bin/bash</code></p>
<p><code>#simple backup script<br />
#by Glen Scott, glenscott.net</code></p>
<p><code># set smb server and auth vars<br />
sharename="//ourserver/ourshare"<br />
username="ourdomain\ourbackupuser"<br />
password="passwordgoeshere"</code></p>
<p><code>backuplocation="/backups/*"<br />
savepath="/root/"<br />
filename=$(hostname).backup.$(date +%a).tar<br />
mountpoint="/mnt/smb"</code></p>
<p><code>#tar up the backup folder<br />
tar -cf $savepath$filename $backuplocation</code></p>
<p><code>#connect to the share<br />
mount.smbfs $sharename $mountpoint -o username=$username,password=$password</code></p>
<p><code># move the tar<br />
mv -f $savepath$filename $mountpoint</code></p>
<p><code># disconnect the share<br />
umount $mountpoint</code></p>
<p><code>#all done!</code></p>
<p><strong>Script 2:</strong> this is the second version I made for another box. It needed a mysql database backed up as well so I added a few lines in for that. I also took the chance to add a quick working folders checker / creator, tidy it up a bit and comment everything.</p>
<p><code><br />
#!/bin/bash</code></p>
<p><code># simple backup script<br />
# by Glen Scott, glenscott.net</code></p>
<p><code># this is a simple script to tar.gz certain folder locations and copy them to a SMB share<br />
# this script should be run periodically from crontab<br />
# you will need smbfs installed on your system or modify the samba mount method</code></p>
<p><code># set smb server and auth vars<br />
sharename="//ourserver/ourshare"<br />
username="ourdomain\ourbackupuser"<br />
password="passwordgoeshere"</code></p>
<p><code>#set mysql details<br />
mysqlhost="localhost"<br />
mysqlusername="root"<br />
mysqlpasswd="mysqlpasswordhere"</code></p>
<p><code>#set which folder locations we want to backup, inc trailing slashes<br />
#add more here and append to the appropriate tar line further down the script if needed</code></p>
<p><code>location1="/var/"<br />
location2="/backup/"</code></p>
<p><code>#set temp files and folders<br />
backuptemp="/backuptmp/"<br />
savepath="/root/backup/"<br />
filename=$(hostname).backup.$(date +%a).tar.gz<br />
mountpoint="/mnt/smb"</code></p>
<p><code># make sure our working folders are present and accounted for</code></p>
<p><code>if [ ! -d "${backuptemp}" ]<br />
then<br />
mkdir $backuptemp<br />
fi</code></p>
<p><code>if [ ! -d "${savepath}" ]<br />
then<br />
mkdir $savepath<br />
fi</code></p>
<p><code>if [ ! -d "${mountpoint}" ]<br />
then<br />
mkdir $mountpoint<br />
fi</code></p>
<p><code># tar up the files we want into the backup temp<br />
tar -cf ${backuptemp}files.tar $location1 $location2</code></p>
<p><code>#dump the local mysql db into the backup temp<br />
mysqldump "-h${mysqlhost}" "-u${mysqluser}" "-p${mysqlpasswd}" --all-databases --lock-tables &gt; ${backuptemp}mysqldump.sql</code></p>
<p><code>#tar up the backup temp folder<br />
tar -czf $savepath$filename $backuptemp</code></p>
<p><code>#connect the smb share to our mount point<br />
mount.smbfs $sharename $mountpoint -o username=$username,password=$password</code></p>
<p><code># copy the tar (could also move it but whatever you like)<br />
cp -f $savepath$filename $mountpoint<br />
</code><br />
<code># disconnect the share<br />
umount $mountpoint</code></p>
<p><code>#all done</code></p>
<p>As long as you have smbfs installed, the above should work fine.</p>
<p><strong>A word on smbfs:</strong> without it the above script will fail. You can probably install smbfs quite easily on your system with the command <code>apt-get install smbfs</code> (or <a href="http://en.wikipedia.org/wiki/Yellow_dog_Updater,_Modified">yum</a> if you&#8217;re using redhat/fedora, or whatever your flavor of package manager happens to be). I use debian, so apt-get works just fine for me.</p>
<p><strong>A word on Crontab:</strong> You&#8217;ll need to add the script to your local cron to get regular backups.</p>
<p>I won&#8217;t go into hideous details about how crontab works, theres <a href="http://www.google.com/search?q=cron+job">plenty of that on the net already</a>. To keep it simple, if your distro supports it (most should) you can put a <a href="http://www.google.com/search?q=symlink">symlink</a> to the script in /etc/cron.daily or /etc/cron.weekly which will give you a simple schedule.</p>
<p>If you want something a bit more complicated, you&#8217;ll have to mess with the crontab. I&#8217;m aware there are commands to get this done but I&#8217;ve always just edited the system crontab directly. Mine runs twice a week, on wednesdays and fridays, so my crontab line looks like this:</p>
<p><code># m h dom mon dow user    command<br />
0  2    * * 3,5 root    /root/backupscript</code></p>
<p>Righto, thats it.</p>
<p><strong>UPDATE: </strong>I notice a mutated version of this script has been <a href="http://www.linuxquestions.org/questions/linux-newbie-8/crontab-not-working-654561/">posted in this forum thread</a> over at <a href="http://www.linuxquestions.org/questions/index.php">linuxquestions.org</a> &#8211; cool! Check it out over there if you want to see what someone else has done with it.</p>
        <br><br><font size=1"><i><center>Visit <a href="http://www.glenscott.net">glenscott.net</a> for more content. Some rights reserved: Except where specified otherwise, the content of this feed is licensed under a <a href="http://creativecommons.org/licenses/by-nc-nd/3.0/">Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License. <br><img width="44" height="15" src="http://www.glenscott.net/misc/creative_commons_by-nc-nd_88x31.png"></a></center></i></font>                              ]]></content:encoded>
			<wfw:commentRss>http://www.glenscott.net/2008/05/10/simple-quick-and-dirty-linux-to-smb-copy-backup-script-using-smbfs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating &#8216;hidden&#8217; pages in wordpress which don&#8217;t appear in the navigation menu</title>
		<link>http://www.glenscott.net/2008/04/15/creating-hidden-pages-in-wordpress-which-dont-appear-in-the-navigation-menu/</link>
		<comments>http://www.glenscott.net/2008/04/15/creating-hidden-pages-in-wordpress-which-dont-appear-in-the-navigation-menu/#comments</comments>
		<pubDate>Tue, 15 Apr 2008 08:20:06 +0000</pubDate>
		<dc:creator>Glen</dc:creator>
				<category><![CDATA[technical]]></category>
		<category><![CDATA[website]]></category>
		<category><![CDATA[navigation]]></category>
		<category><![CDATA[template]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.glenscott.net/?p=40</guid>
		<description><![CDATA[Yeah I know theres seventy thousand or so articles out there already talking about modifying wp_list_pages(); to include and exclude various pages from your wordpress site menus, but I&#8217;m going to talk about they way I did it anyway =) The deal is, I&#8217;m wanting to publish stories and other standalone type pieces of writing [...]]]></description>
			<content:encoded><![CDATA[<p>Yeah I know theres seventy thousand or so articles out there already talking about modifying <code>wp_list_pages();</code> to include and exclude various pages from your wordpress site menus, but I&#8217;m going to talk about they way I did it anyway =)</p>
<p>The deal is, I&#8217;m wanting to publish stories and other standalone type pieces of writing on this site, and I want to create them as nice friendly text wordpress pages, but I don&#8217;t want each and every story to appear as a default pages link. The titles are long, there&#8217;ll be a few of them, and they&#8217;ll screw up my page layout if included in the pages menu(s), especially in the top nav bar where theres limited space.</p>
<p>To change this behavior, you just need to go into your theme template files and add some parameters to wp_list_pages(). The definitive list of parameters is over here and is worth a read:</p>
<p><a href="http://codex.wordpress.org/Template_Tags/wp_list_pages">http://codex.wordpress.org/Template_Tags/wp_list_pages</a></p>
<p>The most useful ones for this task are <strong>&#8216;include&#8217;</strong>, <strong>&#8216;exclude&#8217;</strong>, and <strong>&#8216;depth&#8217;</strong>. You can string multiple parameters together using the ampersand &amp; character like so: <code>wp_list_pages(foobar=1&amp;moobar=2);</code></p>
<p>Include and exclude will do as they suggest, given a comma delimited list of page numbers. If you use include it will only include the specified pages, if you use exclude it will include all except the specified pages.</p>
<p>I decided a better way to get it done, actually ideal for my purposes, is to create all my &#8216;hidden&#8217; pages in a subcategory, and set the depth parameter to &#8217;1&#8242;. This means any page created as a subcategory will not appear in the navigation menus, though it can be explicitly linked to, or appear in a list of links for that subcategory (exactly what I want).</p>
<p><strong>The Widgets file</strong></p>
<p>I managed to sort out the top nav bar page listing on my template pretty easily by making the change to the header.php file, but I couldn&#8217;t find anything immediately obvious generating the page listing in sidebar.php, or any of the other theme includes. After some bumbling around trying to figure this out, I discovered the sidebar listing was being handled by wordpress widgets . This was pretty easy to fix once I found out where the widgets file is (/wp-includes/widgets.php), although since it uses an array for the parameters its slightly different than the edit above.</p>
<p>You have a few options for changing how the pages display through the wordpress widgets control panel, but sadly no way to exclude sub-pages by default. This would be a cool thing to have available, and I&#8217;d write it into the widget file and make my version available, but my php is far too rusty at the moment for this even though its pretty simple.</p>
<p>Ok, how to do it manually. Open up the widgets file for editing and find the section which defines <strong>function wp_widget_pages</strong> and add to the line which starts as follows:</p>
<p><code>$out = wp_list_pages (array ('title_li' =&gt; '', </code> etc etc and add to it the parameter &#8216;depth&#8217; =&gt; 1, so it ends up looking something like this:</p>
<p><code>$out = wp_list_pages( array('title_li' =&gt; '', 'depth' =&gt; 1,'echo' =&gt; 0, 'sort_column' =&gt; $sortby, 'exclude' =&gt; $exclude) );</code></p>
<p>Thats it. save the file and your side menu should hide all pages in sub-categories.</p>
<p>Also, there is <a href="http://gmurphey.com/2006/10/05/wordpress-plugin-page-link-manager/">this plugin I found over here</a> which interferes somehow with <code>wp_list_pages();</code> to cause the change everywhere the function is called. Might save having to mess with multiple places in the template / widgets file depending how your theme is set up. (Mine has pages listed in a top nav bar as well as a side menu, for example).</p>
        <br><br><font size=1"><i><center>Visit <a href="http://www.glenscott.net">glenscott.net</a> for more content. Some rights reserved: Except where specified otherwise, the content of this feed is licensed under a <a href="http://creativecommons.org/licenses/by-nc-nd/3.0/">Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License. <br><img width="44" height="15" src="http://www.glenscott.net/misc/creative_commons_by-nc-nd_88x31.png"></a></center></i></font>                              ]]></content:encoded>
			<wfw:commentRss>http://www.glenscott.net/2008/04/15/creating-hidden-pages-in-wordpress-which-dont-appear-in-the-navigation-menu/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

