<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Peter's Blog - Nodes for exchange</title>
    <link>http://www.petersblog.org/</link>
    <description>Nodes containing the tag exchange</description>
    <item>
      <title>Backing up Exchange</title>
      <link>http://www.petersblog.org/node/view/1222</link>
      <description>&lt;p&gt;
Microsoft Exchange uses a nasty database to store all the users mailboxes. Picture it as a big black box, email goes in and there it stays in a locked-in proprietary form. If users lose any email then tough: you cannot just browse through a backup of the database and drag and drop the message, you have to jump through very small high hoops: mount a backup of the database and restore the whole mail box. It's a horror unless you invest in third party tools. 
&lt;/p&gt;
&lt;p&gt;
BUT I came across a Better Way. Download a tool from Microsoft called ExMerge. This tool allows you to export all the messages in a user's mailbox to a .PST file. This file can easily be opened in outlook and manipulated with drag and drop. Should you be unlucky enough to lose your exchange database you can reimport the .PST files back into Exchange. Should a user mess up their mailbox, give them the PST file and let THEM sort it out! 
&lt;/p&gt;
&lt;p&gt;
Exchange backup strategy: 
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;
daily dump of all User's accounts to PST files (actually it synchronises the account with the PST files so it copies the differences which is much faster). 
&lt;/li&gt;
&lt;li&gt;
put PST files into standard backup/archive strategy. To be safe, do this in addition to backing up the raw exchange database. 
&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;
This makes it easy to restore a user's email from a particular date: get the PST file from the tape and open it in outlook. 
&lt;/p&gt;
&lt;p&gt;
Best of all, ExMerge is a free download. 
&lt;/p&gt;
&lt;p&gt;
The main problem running it on the Exchange Server is that the login account it runs under needs to have 'Receive As' and 'Send As' permissions on the mailbox. It is trivial to schedule it to run every day from the windows scheduler. 
&lt;/p&gt;&lt;p&gt;Related Posts: &lt;a href="/tag/exchange"&gt;exchange&lt;/a&gt;&lt;/p&gt;</description>
      <guid>http://www.petersblog.org/node/view/1222</guid>
      <category domain="http://www.technorati.com/tag">exchange</category>
    </item>
    <item>
      <title>Outlook vs Thunderbird</title>
      <link>http://www.petersblog.org/node/view/1146</link>
      <description>&lt;p&gt;
I'm back to using Outlook for two reasons: 
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;
the journal feature may be useable as a desktop notetaking tool. Being integrated into the email program means fewer apps running and a leaner and meaner system (ha). It does look like a half decent note taking tool, entries can be formatted, pictures pasted in etc. 
&lt;/li&gt;
&lt;li&gt;
was reading how hackers can carry packet sniffers on memory keys and became paranoid about my unencrypted password floating around the ether(net). I looked into setting up ssl authentication on the exchange server but it involves messing around setting up an ssl certificate server and I couldn't be bothered. 
&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;
I've given up on using folders to categorise my email: I leave it all in the inbox and rely in searching to find stuff. I have google desktop search to speed this up but that still thinks I am still using thunderbird and tries using that to display messages. How to persuade it I have vaccilated back to the evil ones? 
&lt;/p&gt;&lt;p&gt;Related Posts: &lt;a href="/tag/desktop"&gt;desktop&lt;/a&gt; &lt;a href="/tag/email"&gt;email&lt;/a&gt; &lt;a href="/tag/exchange"&gt;exchange&lt;/a&gt; &lt;a href="/tag/google"&gt;google&lt;/a&gt; &lt;a href="/tag/outlook"&gt;outlook&lt;/a&gt; &lt;a href="/tag/thunderbird"&gt;thunderbird&lt;/a&gt;&lt;/p&gt;</description>
      <guid>http://www.petersblog.org/node/view/1146</guid>
      <category domain="http://www.technorati.com/tag">desktop</category>
      <category domain="http://www.technorati.com/tag">email</category>
      <category domain="http://www.technorati.com/tag">exchange</category>
      <category domain="http://www.technorati.com/tag">google</category>
      <category domain="http://www.technorati.com/tag">outlook</category>
      <category domain="http://www.technorati.com/tag">thunderbird</category>
    </item>
    <item>
      <title>Opera</title>
      <link>http://www.petersblog.org/node/view/1111</link>
      <description>&lt;p&gt;
I'm trying the &lt;a href="http://labs.opera.com/"&gt;Opera&lt;/a&gt; 9 preview as an alternative (or complement) to &lt;a href="/tag/firefox"&gt;Firefox&lt;/a&gt;. Opera has been attractive to me in the past but always gave odd rendering problems or crashes that put me off. This version has been ok thus far and has features built in that are quite seductive. Ok firefox has extensions but these all seem to break every time they upgrade it and I have got fed up with reinstalling them (too high maintenance). 
&lt;/p&gt;
&lt;p&gt;
Opera goodies, some maybe all available as Firefox extensions but are bundled with opera: 
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;
Fast Forward: this button seems to find the 'next' link on your page and clicks it for you. You can go through google results very quickly. 
&lt;/li&gt;
&lt;li&gt;
gestures: right click and move the cursor around to control the browser: e.g. right click and move right does the fast forward action so takes you to the next page with no fuss and minimal physical effort. 
&lt;/li&gt;
&lt;li&gt;
email client: this supports IMAP and works with Microsoft Exchange. It chucks all email in one folder and gives lots of options for searching through it. For example, you click on a contact name and see all the mail from that contact. Looks ok so far and is appealing as the memory footprint of Opera should be less than Firefox + Thunderbird. Only downside so far: cannot compose html email. Not a showstopper as I rarely bother to format email (like I rarely bother to format blog postings) and it does display html email (as a web browser should be able to). 
&lt;/li&gt;
&lt;li&gt;
It supports widgets if you have a need for a huge clock that cannot be resized. There are only 9 of them so far (clock, calculator, calendar etc). 
&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;
Possibly more cool: &lt;a href="http://www.opera.com/products/mobile/operamini/campaign/"&gt;Opera Mini&lt;/a&gt;. This is a version of Opera written in Java so it works on my Sony-Ericsson K750i phone. This is a proper web browser, it supports http/html, it is not a crippled WAP thing so you can look at real web sites. It displays them in a tiny font that gets a lot of info on the screen. It communicates with a server at Opera which compresses the pages you are viewing and minimises the download: the front page of this site was a 8k! I installed it thusly: 
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;
Download the .jar and .jad files for the k750i. 
&lt;/li&gt;
&lt;li&gt;
Connect phone to USB 
&lt;/li&gt;
&lt;li&gt;
Copy files to \MSSEMC\Media files\other 
&lt;/li&gt;
&lt;li&gt;
Unplug phone (stopping USB devices on Windows 2000, not necessary on XP). 
&lt;/li&gt;
&lt;li&gt;
On phone, go to 'My Items', Other. 
&lt;/li&gt;
&lt;li&gt;
Select the .jar file, right click and Install. It will ask you if you want it installed as an Application or Game: you decide. 
&lt;/li&gt;
&lt;li&gt;
For uk vodafone, go to Settings/Connectivity/Internet Settings/Internet Profiles and create a new profile. Give it any name and set the 'Connect Using' field to 'Contract Internet'. 
&lt;/li&gt;
&lt;li&gt;
Go to Settings/Connectivity/Internet Settings/Settings for Java(tm) and select here the new profile you created above. 
&lt;/li&gt;
&lt;li&gt;
Go to My Items/Applications (or Games) and select Opera Mini. It will do a connectivity test. If it fails the internet profile for java above might be wrong. 
&lt;/li&gt;
&lt;li&gt;
Enjoy 
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Related Posts: &lt;a href="/tag/exchange"&gt;exchange&lt;/a&gt; &lt;a href="/tag/firefox"&gt;firefox&lt;/a&gt; &lt;a href="/tag/imap"&gt;imap&lt;/a&gt; &lt;a href="/tag/opera"&gt;opera&lt;/a&gt; &lt;a href="/tag/thunderbird"&gt;thunderbird&lt;/a&gt;&lt;/p&gt;</description>
      <guid>http://www.petersblog.org/node/view/1111</guid>
      <category domain="http://www.technorati.com/tag">exchange</category>
      <category domain="http://www.technorati.com/tag">firefox</category>
      <category domain="http://www.technorati.com/tag">imap</category>
      <category domain="http://www.technorati.com/tag">opera</category>
      <category domain="http://www.technorati.com/tag">thunderbird</category>
    </item>
    <item>
      <title>Outlook Users can   read each others mail boxes</title>
      <link>http://www.petersblog.org/node/view/1103</link>
      <description>&lt;p&gt;
Panic at work when it was discovered that anyone could read anyone elses mailbox on the Exchange 2000 Server through Outlook. 
&lt;/p&gt;
&lt;p&gt;
Examining the permissions in the 'Exchange Advanced' tab of a Users properties in Active Directory, it appeared that the 'Everyone' user had 'Full Mailbox Access' rights. 
&lt;/p&gt;
&lt;p&gt;
Found a &lt;a href=" http://support.microsoft.com/default.aspx?scid=kb;en-us;328670"&gt;mskb article&lt;/a&gt; which says that in Exchange Administrator this can happen if the 'Everyone' user had been given 'Receive As' and 'Send As' accesses. Denied both of these in Exchange and rebooted it. After this the 'Everyone' user in active directory no longer had 'Full Mailbox Access' and people could no longer look at each other's mail. 
&lt;/p&gt;
&lt;p&gt;
Working with Active Directory and Exchange and the horrible plethora of subtly different property dialogs is bewildering. There is one property dialog in exchange with a 'Client permission' button on it that shows different dialogs if you click it with and without holding the CTRL key (mentioned in &lt;a href="http://www.microsoft.com/technet/prodtechnol/exchange/2003/insider/pubfolderpermissions.mspx"&gt;this article&lt;/a&gt;), you wouldn't guess it from the dialog: why not two buttons? Why the hidden option?. 
&lt;/p&gt;
&lt;p&gt;
I can think of a few reasons for this complex mess: 
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;
it keeps 10,000 software engineers at microsoft busy knocking out complex architectural stuff that doesn't add any real benefits 
&lt;/li&gt;
&lt;li&gt;
much money to be made from training courses 
&lt;/li&gt;
&lt;li&gt;
creates an army of people with noddy qualifications resistant to change 
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Related Posts: &lt;a href="/tag/exchange"&gt;exchange&lt;/a&gt;&lt;/p&gt;</description>
      <guid>http://www.petersblog.org/node/view/1103</guid>
      <category domain="http://www.technorati.com/tag">exchange</category>
    </item>
    <item>
      <title>Using Thunderbird with Microsoft Exchange</title>
      <link>http://www.petersblog.org/node/view/1034</link>
      <description>&lt;p&gt;
I seem to get a lot of people visiting this site looking at how to use &lt;a href="/tag/thunderbird"&gt;thunderbird&lt;/a&gt; with &lt;a href="/tag/exchange"&gt;Exchange&lt;/a&gt;. I don't think I ever described it in detail as I found it quite easy. I just enabled an IMAP service on the exchange server and I connect to that from Thunderbird using the standard procedure (username/password). IMAP has the advantage of keeping all the messages on the server so it is someone elses problem to back them up. Also searching through messages seems to work much faster as the server is good at that kind of thing and Microsofts local message archive format, the .pst file, is pretty poor. It is probably just as easy to set up POP3. Email is sent using authenticated smtp so I am prompted for username/password to send messages. 
&lt;/p&gt;
&lt;p&gt;
With this setup I don't get shared calendars or any other executive gimmicks but I don't use them anyway. 
&lt;/p&gt;
&lt;p&gt;
Sorry if this suggestion seems inane but as far as I know this is the only way this can be done. 
&lt;/p&gt;&lt;p&gt;Related Posts: &lt;a href="/tag/exchange"&gt;exchange&lt;/a&gt; &lt;a href="/tag/imap"&gt;imap&lt;/a&gt; &lt;a href="/tag/thunderbird"&gt;thunderbird&lt;/a&gt;&lt;/p&gt;</description>
      <guid>http://www.petersblog.org/node/view/1034</guid>
      <category domain="http://www.technorati.com/tag">exchange</category>
      <category domain="http://www.technorati.com/tag">imap</category>
      <category domain="http://www.technorati.com/tag">thunderbird</category>
    </item>
    <item>
      <title>Status Report</title>
      <link>http://www.petersblog.org/node/view/893</link>
      <description>&lt;p&gt;
&lt;a href="tags/salamander"&gt;Servant Salamander&lt;/a&gt;: coming to rely on this. Pretty much destined to register it. Today I discovered that I can get it to calculate space used in subdirectorys and then send a report of directory names and sizes, sorted by size, to the clipboard. Try doing that with Windows Explorer. I've stopped using filezilla, Salamander is a useful sftp client. Things I do wish it could do: 
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;
copy directly from one sftp site to another. Similarly, since you can browse straight into a zip or tgz file, it would be nice to be able to copy a file from within an archive on one window to other window showing an sftp site. The user interface spoils you, you start thinking these things are possible, you try them and are thwarted. 
&lt;/li&gt;
&lt;li&gt;
create tar.gz files. I have actually learned the incantation for this, I am becoming such a command line junkie: 
&lt;div class="verbatim-block"&gt;&lt;pre&gt;tar cvfz blah *
&lt;/pre&gt;&lt;/div&gt;
It can do zips and rars and stuff. 
&lt;/li&gt;
&lt;li&gt;
It sometimes goes a bit crazy with the confirmation dialogs, sometimes giving two or three in a row. I don't have faith enough to disable them, combining them into one dialog would be nice (e.g. yes I want to copy, I want to copy it there, I want to overwrite everything). 
&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;
&lt;a href="tags/thunderbird"&gt;Thunderbird&lt;/a&gt;: since I &lt;a href="/node/874"&gt;fixed the exchange server&lt;/a&gt; I have been using this instead of outlook and have not looked back. I use an IMAP connection to the Exchange server and it is working just fine. I used to have problems with it when my network connection was flakier (it kept asking me for my password) but since I installed XP on my pc the network has been ok (one of those software decay things on my old Win2k install). I think outlook was tainted by &lt;a href="tags/spambayes"&gt;spambayes&lt;/a&gt; which was pretty lethargic in moving spam around (to get around outlook's flaky message filtering it does lots of sleeps to keep out of the way). So you go to look at a message and find that spambayes is still in the process of moving it to the junk folder. Thunderbirds integrated bayesian spam filter is working for me. Another thing I like about thunderbird, the flag thing that pops up and goes away again when new mail arrives. The outlook taskbar thing always used to get stuck on, even after deleting new messages, to the extent that I disabled it. 
&lt;/p&gt;&lt;p&gt;Related Posts: &lt;a href="/tag/email"&gt;email&lt;/a&gt; &lt;a href="/tag/exchange"&gt;exchange&lt;/a&gt; &lt;a href="/tag/imap"&gt;imap&lt;/a&gt; &lt;a href="/tag/outlook"&gt;outlook&lt;/a&gt; &lt;a href="/tag/salamander"&gt;salamander&lt;/a&gt; &lt;a href="/tag/thunderbird"&gt;thunderbird&lt;/a&gt;&lt;/p&gt;</description>
      <guid>http://www.petersblog.org/node/view/893</guid>
      <category domain="http://www.technorati.com/tag">email</category>
      <category domain="http://www.technorati.com/tag">exchange</category>
      <category domain="http://www.technorati.com/tag">imap</category>
      <category domain="http://www.technorati.com/tag">outlook</category>
      <category domain="http://www.technorati.com/tag">salamander</category>
      <category domain="http://www.technorati.com/tag">thunderbird</category>
    </item>
    <item>
      <title>POP and IMAP on Exchange Server broken.</title>
      <link>http://www.petersblog.org/node/view/874</link>
      <description>&lt;p&gt;
I wanted to get the POP and IMAP services on our Exchange 2003 server running so: 
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;
I could use &lt;a href="tags/thunderbird"&gt;Thunderbird&lt;/a&gt; (or at least had the choice) 
&lt;/li&gt;
&lt;li&gt;
Folks could potentially look at their email from their mobile phones. 
&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;
Clicking on the 'POP3' service in the Exchange manager gave the useless error 'The server is not operational'. Googling for this implied a DNS problem so I looked in the event log and found a number of instances of error event 5789. The details of this were: 
&lt;/p&gt;
&lt;div class="verbatim-block"&gt;&lt;pre&gt;Attempt to update DNS Host Name of the computer object in Active Directory failed.
The updated value was 'server.work.co.uk'. The following error occurred:

The parameter is incorrect.
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;
Searching for event 5789 gave &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;258503"&gt;this MS knowledge base article&lt;/a&gt;. Aparently this error is due to the DNS domain name being different to the Active Directory Domain Name. In the case here, the DNS domain name of the exchange box should have been domain_name.work.co.uk, not work.co.uk. I fixed this in Control Panel/System/Network Identification and did the mandatory reboot. 
&lt;/p&gt;
&lt;p&gt;
When it came up, life was sweet, existing POP3 and IMAP services were reborn and Thunderbird is working nicely. 
&lt;/p&gt;
&lt;p&gt;
Moral: Never ever assume that working with Microsoft Exchange is easy. 
&lt;/p&gt;&lt;p&gt;Related Posts: &lt;a href="/tag/exchange"&gt;exchange&lt;/a&gt; &lt;a href="/tag/imap"&gt;imap&lt;/a&gt; &lt;a href="/tag/thunderbird"&gt;thunderbird&lt;/a&gt; &lt;a href="/tag/windows"&gt;windows&lt;/a&gt;&lt;/p&gt;</description>
      <guid>http://www.petersblog.org/node/view/874</guid>
      <category domain="http://www.technorati.com/tag">exchange</category>
      <category domain="http://www.technorati.com/tag">imap</category>
      <category domain="http://www.technorati.com/tag">thunderbird</category>
      <category domain="http://www.technorati.com/tag">windows</category>
    </item>
    <item>
      <title>exchange</title>
      <link>http://www.petersblog.org/node/view/796</link>
      <description>&lt;p&gt;
Ugly, overblown email server written by about 3,000 software engineers at &lt;a href="http://www.microsoft.com"&gt;Microsoft&lt;/a&gt; who have never heard the expression 'keep it simple'. 
&lt;/p&gt;&lt;p&gt;Related Posts: &lt;a href="/tag/exchange"&gt;exchange&lt;/a&gt;&lt;/p&gt;</description>
      <guid>http://www.petersblog.org/node/view/796</guid>
      <category domain="http://www.technorati.com/tag">exchange</category>
    </item>
    <item>
      <title>Python Web Applications</title>
      <link>http://www.petersblog.org/node/view/762</link>
      <description>&lt;p&gt;
I've been contemplating some python web development. This is mainly for the following reasons: 
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;
I'd like my blog to have features for threading subjects based on keywords, a kind of related articles list. This would be dynamically updated, old articles could link to newer articles. This is possible in &lt;a href="http://www.drupal.org"&gt;Drupal&lt;/a&gt; but the taxonomy system is laborious to configure through the web interface. There is a new keyword feature (folksonomies) but it appears to be a library for other modules to use. There are some modules that promise this kind of thing but they are not what I am looking for. The most important thing is that old articles are displayed with links to new articles, which involves messing around with themeing to add links to a cached page or figuring out how to flush the cache and put articles through a filter that would add the links. 
&lt;/li&gt;
&lt;li&gt;
I'd rather spend my limited programming time being creative with technologies I am already familiar with. I don't like php enough to want to learn it any more. I know and like python. 
&lt;/li&gt;
&lt;li&gt;
I don't want to spend my time trying to figure out how the Drupal code base works. Ok, I'm lazy and I have a short attention span and I'm not very interested in how it works. 
&lt;/li&gt;
&lt;li&gt;
If I do this as a spare time project I want to enjoy it, I don't want it to feel like a maintenance exercise. I can do that at work. 
&lt;/li&gt;
&lt;li&gt;
I have found that using librarys etc written by third partys can give you 95% of what you want, then you spend weeks trying to hack them to get the extra 5%. The only exception to this rule I can think of is the python standard library which is way cool. 
&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;
So I looked at a few web application frameworks. This is a little lightweight and short on detail, I did most of it a few weeks ago and I didn't take notes. 
&lt;/p&gt;
&lt;p&gt;
 &lt;a href="http://www.cherrypy.org/"&gt;cherrypy&lt;/a&gt;: Requires python 2.3 and my hosting service will only give me python 2.2 with cgi. I think generator functions are way cool and I'd love to use them. Do I stand any chance of getting my hosting service to upgrade? I'll email them and ask. 
&lt;/p&gt;
&lt;p&gt;
 &lt;a href="http://www.mems-exchange.org/software/quixote/"&gt;quixote&lt;/a&gt;: got the demo going, although I had to fix some of the urls within it as they appeared to be broken. It worked easily enough with cgi, the 1.3 version worked with python 2.2. However, again they have just released version 2 which has a couple of &lt;code&gt;yield&lt;/code&gt; statements in it, limiting it python 2.3. 
&lt;/p&gt;
&lt;p&gt;
 &lt;a href="http://www.webwareforpython.org/"&gt;webware&lt;/a&gt;: I don't think I could see the advantage of 'servlets' and their web site (presumably powered by webware but it only says 'python powered') is not an impressive display of it's capabilities. 
&lt;/p&gt;
&lt;p&gt;
 &lt;a href="http://www.zope.org/"&gt;zope&lt;/a&gt;/&lt;a href="http://plone.org/"&gt;plone&lt;/a&gt;: I've toyed with zope in the past (version 2) and found it's learning curve to be almighty. It may be very capable but you have to learn the zope way to do everything. The developers seem to be concentrating on inventing new object-orientated paradigms rather than keeping things simple and I hate huge complex object models. I don't like the web-based source editor (what, no syntax highlighting?: although I could use &lt;a href="http://mozex.mozdev.org/"&gt;mozex&lt;/a&gt; and edit in vim). Also, non-cgi. 
&lt;/p&gt;
&lt;p&gt;
I was most interested in quixote until I came to the python 2.3 stumbling block with the new version 2. I don't want to settle for an old version. This led me on to think about what these frameworks actually give me: 
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;
map urls to class/method calls 
&lt;ul&gt;&lt;li&gt;
big deal 
&lt;/li&gt;&lt;/ul&gt;

&lt;/li&gt;
&lt;li&gt;
session management 
&lt;ul&gt;&lt;li&gt;
do I need it for my simple purposes? 
&lt;/li&gt;&lt;/ul&gt;

&lt;/li&gt;
&lt;li&gt;
templating systems 
&lt;ul&gt;&lt;li&gt;
&lt;a href="http://www.cheetahtemplate.org/"&gt;Cheetah&lt;/a&gt; 
&lt;/li&gt;&lt;/ul&gt;

&lt;/li&gt;
&lt;li&gt;
interface to cgi/mod_python/fastcgi/whatever 
&lt;ul&gt;&lt;li&gt;
I can only have cgi anyway 
&lt;/li&gt;&lt;/ul&gt;

&lt;/li&gt;
&lt;li&gt;
easy form generation 
&lt;ul&gt;&lt;li&gt;
classes to build the contents of a form. How many forms will I need? Can't templates do this? 
&lt;/li&gt;&lt;/ul&gt;

&lt;/li&gt;
&lt;li&gt;
already used on the internet and exposed to hackers 
&lt;ul&gt;&lt;li&gt;
lets not be too ambitious with what we do. Keep drupal in the background for data entry. 
&lt;/li&gt;&lt;/ul&gt;

&lt;/li&gt;
&lt;li&gt;
learning curves 
&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;
Which has led me to... straight cgi. Run my own scripts from cgi, using the cgi module in the standard python library to get the url parameters and generate a nice error page when things go wrong. I can get it going easily enough and below, with just a few hours hacking, is something that can display nodes from the drupal database. The output is themed through the Cheetah template engine and gives me the same look as my drupal theme. Given that it is only cgi it is not massively scalable, but I understand every line of it and that means a lot in terms of development time. Given that it generates pages that look like the drupal pages, I can chop and change, leaving some bits to drupal (data entry) and others in python (presentation). It's a lash up but so what? 
&lt;/p&gt;
&lt;p&gt;
The main challenge is porting &lt;a href="/node/484"&gt;my wilki module&lt;/a&gt; to python, particularly the &lt;a href="http://qbnz.com/highlighter/"&gt;geshi syntax highlighting&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
I am not planning to rewrite Drupal and I probably won't release Yet Another Python Web Framework. I may not even finish it. It is something for me to play with. 
&lt;/p&gt;
&lt;pre class="lazy"&gt;&lt;span class="line-numbers"&gt;   1 &lt;/span&gt; &lt;span class="Comment"&gt;&lt;span class="Comment"&gt;#&lt;/span&gt;!/usr/bin/python&lt;/span&gt;
&lt;span class="line-numbers"&gt;   2 &lt;/span&gt; &lt;span class="Comment"&gt;&lt;span class="Comment"&gt;#&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;   3 &lt;/span&gt; &lt;span class="Keyword"&gt;import&lt;/span&gt; Cheetah.Template
&lt;span class="line-numbers"&gt;   4 &lt;/span&gt; &lt;span class="Keyword"&gt;import&lt;/span&gt; cgi
&lt;span class="line-numbers"&gt;   5 &lt;/span&gt; &lt;span class="Keyword"&gt;import&lt;/span&gt; cgitb; &lt;span class="MetaFunctionCallPy"&gt;cgitb.enable&lt;span class="MetaFunctionCallPy"&gt;(&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;   6 &lt;/span&gt; &lt;span class="Keyword"&gt;import&lt;/span&gt; time
&lt;span class="line-numbers"&gt;   7 &lt;/span&gt; &lt;span class="Keyword"&gt;import&lt;/span&gt; datetime
&lt;span class="line-numbers"&gt;   8 &lt;/span&gt; &lt;span class="Keyword"&gt;import&lt;/span&gt; os
&lt;span class="line-numbers"&gt;   9 &lt;/span&gt; &lt;span class="Keyword"&gt;import&lt;/span&gt; pdo
&lt;span class="line-numbers"&gt;  10 &lt;/span&gt; 
&lt;span class="line-numbers"&gt;  11 &lt;/span&gt; &lt;span class="Keyword"&gt;def&lt;/span&gt; &lt;span class="Entity"&gt;ThemeAndOutput&lt;/span&gt;( &lt;span class="Variable"&gt;strPageTitle&lt;/span&gt;, &lt;span class="Variable"&gt;strContent&lt;/span&gt;, &lt;span class="Variable"&gt;oParams&lt;/span&gt;&lt;span class="Keyword"&gt;=&lt;/span&gt;{}):
&lt;span class="line-numbers"&gt;  12 &lt;/span&gt;     &lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;Theme the site&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  13 &lt;/span&gt; 
&lt;span class="line-numbers"&gt;  14 &lt;/span&gt;     strSideBar &lt;span class="Keyword"&gt;=&lt;/span&gt; &lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  15 &lt;/span&gt; &lt;span class="String"&gt;    &amp;lt;div class=&amp;quot;block&amp;quot;&amp;gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  16 &lt;/span&gt; &lt;span class="String"&gt;    &amp;lt;h2&amp;gt;Reports&amp;lt;/h2&amp;gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  17 &lt;/span&gt; &lt;span class="String"&gt;    &amp;lt;ul&amp;gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  18 &lt;/span&gt; &lt;span class="String"&gt;        &amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;Intranet.cgi&amp;quot;&amp;gt;Drupal Emulator&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  19 &lt;/span&gt; &lt;span class="String"&gt;    &amp;lt;/ul&amp;gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  20 &lt;/span&gt; &lt;span class="String"&gt;    &amp;lt;/div&amp;gt;&lt;span class="String"&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  21 &lt;/span&gt; 
&lt;span class="line-numbers"&gt;  22 &lt;/span&gt;     oDict &lt;span class="Keyword"&gt;=&lt;/span&gt; {
&lt;span class="line-numbers"&gt;  23 &lt;/span&gt;         &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;Root&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;: &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;/SMB&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;,
&lt;span class="line-numbers"&gt;  24 &lt;/span&gt;         &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;Url&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;: &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;/Intranet/Intranet.cgi&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;,
&lt;span class="line-numbers"&gt;  25 &lt;/span&gt;         &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;Title&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;: &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;Drupal Emulator&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;,
&lt;span class="line-numbers"&gt;  26 &lt;/span&gt;         &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;Slogan&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;: &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;There are no Problems, only Challenges&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;,
&lt;span class="line-numbers"&gt;  27 &lt;/span&gt;         &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;PrimaryLinks&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;: [ &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;&amp;lt;a href=&amp;quot;http://intranet.org&amp;quot;&amp;gt;Intranet&amp;lt;/a&amp;gt;&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;,
&lt;span class="line-numbers"&gt;  28 &lt;/span&gt;                             &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;&amp;lt;a href=&amp;quot;http://www.google.co.uk&amp;quot;&amp;gt;Google&amp;lt;/a&amp;gt;&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;],
&lt;span class="line-numbers"&gt;  29 &lt;/span&gt;         &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;PageTitle&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;: strPageTitle,
&lt;span class="line-numbers"&gt;  30 &lt;/span&gt;         &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;SideBar&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;: strSideBar,
&lt;span class="line-numbers"&gt;  31 &lt;/span&gt;         &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;Footer&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;: &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;Copyright 2005 Peter Wilkinson&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  32 &lt;/span&gt;     }
&lt;span class="line-numbers"&gt;  33 &lt;/span&gt; 
&lt;span class="line-numbers"&gt;  34 &lt;/span&gt;     &lt;span class="Comment"&gt;&lt;span class="Comment"&gt;#&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  35 &lt;/span&gt;     &lt;span class="Comment"&gt;&lt;span class="Comment"&gt;#&lt;/span&gt; Read page template and shove in the content.&lt;/span&gt;
&lt;span class="line-numbers"&gt;  36 &lt;/span&gt;     &lt;span class="Comment"&gt;&lt;span class="Comment"&gt;#&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  37 &lt;/span&gt;     strTemplate &lt;span class="Keyword"&gt;=&lt;/span&gt; &lt;span class="MetaFunctionCallPy"&gt;&lt;span class="Support"&gt;open&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;(&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt; &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;PageTemplate.html&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;)&lt;/span&gt;&lt;/span&gt;.&lt;span class="MetaFunctionCallPy"&gt;read&lt;span class="MetaFunctionCallPy"&gt;(&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;)&lt;/span&gt;&lt;/span&gt; &lt;span class="Keyword"&gt;%&lt;/span&gt; { &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;Content&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;: strContent}
&lt;span class="line-numbers"&gt;  38 &lt;/span&gt; 
&lt;span class="line-numbers"&gt;  39 &lt;/span&gt;     &lt;span class="Comment"&gt;&lt;span class="Comment"&gt;#&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  40 &lt;/span&gt;     &lt;span class="Comment"&gt;&lt;span class="Comment"&gt;#&lt;/span&gt; Run template and content through cheetah in one go.&lt;/span&gt;
&lt;span class="line-numbers"&gt;  41 &lt;/span&gt;     &lt;span class="Comment"&gt;&lt;span class="Comment"&gt;#&lt;/span&gt; Is this faster? Doubt it.&lt;/span&gt;
&lt;span class="line-numbers"&gt;  42 &lt;/span&gt;     &lt;span class="Comment"&gt;&lt;span class="Comment"&gt;#&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  43 &lt;/span&gt;     oHtml &lt;span class="Keyword"&gt;=&lt;/span&gt; &lt;span class="MetaFunctionCallPy"&gt;Cheetah.Template.Template&lt;span class="MetaFunctionCallPy"&gt;(&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt; strTemplate, &lt;span class="MetaFunctionCallPy"&gt;&lt;span class="MetaFunctionCallPy"&gt;[&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;oDict&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;,&lt;/span&gt; &lt;span class="MetaFunctionCallPy"&gt;oParams&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  44 &lt;/span&gt; 
&lt;span class="line-numbers"&gt;  45 &lt;/span&gt;     &lt;span class="Keyword"&gt;print&lt;/span&gt; &lt;span class="MetaFunctionCallPy"&gt;&lt;span class="Support"&gt;str&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;(&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;oHtml&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  46 &lt;/span&gt; 
&lt;span class="line-numbers"&gt;  47 &lt;/span&gt; &lt;span class="Keyword"&gt;def&lt;/span&gt; &lt;span class="Entity"&gt;MainPage&lt;/span&gt;( &lt;span class="Variable"&gt;oForm&lt;/span&gt;):
&lt;span class="line-numbers"&gt;  48 &lt;/span&gt;     &lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;Main welcome page: tell user what is going on&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  49 &lt;/span&gt; 
&lt;span class="line-numbers"&gt;  50 &lt;/span&gt;     &lt;span class="Comment"&gt;&lt;span class="Comment"&gt;#&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  51 &lt;/span&gt;     &lt;span class="Comment"&gt;&lt;span class="Comment"&gt;#&lt;/span&gt; Determine how many links to show.&lt;/span&gt;
&lt;span class="line-numbers"&gt;  52 &lt;/span&gt;     &lt;span class="Comment"&gt;&lt;span class="Comment"&gt;#&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  53 &lt;/span&gt;     strFrom &lt;span class="Keyword"&gt;=&lt;/span&gt; &lt;span class="MetaFunctionCallPy"&gt;oForm.getfirst&lt;span class="MetaFunctionCallPy"&gt;(&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt; &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;from&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  54 &lt;/span&gt;     &lt;span class="Keyword"&gt;if&lt;/span&gt; strFrom &lt;span class="Keyword"&gt;==&lt;/span&gt; &lt;span class="Constant"&gt;None&lt;/span&gt;:
&lt;span class="line-numbers"&gt;  55 &lt;/span&gt;         strLimit &lt;span class="Keyword"&gt;=&lt;/span&gt; &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt; LIMIT 10&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  56 &lt;/span&gt;     &lt;span class="Keyword"&gt;else&lt;/span&gt;:
&lt;span class="line-numbers"&gt;  57 &lt;/span&gt;         &lt;span class="Keyword"&gt;try&lt;/span&gt;:
&lt;span class="line-numbers"&gt;  58 &lt;/span&gt;             nLimit &lt;span class="Keyword"&gt;=&lt;/span&gt; &lt;span class="MetaFunctionCallPy"&gt;&lt;span class="Support"&gt;int&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;(&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;strFrom&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  59 &lt;/span&gt;             strLimit &lt;span class="Keyword"&gt;=&lt;/span&gt; &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt; LIMIT &lt;span class="StringInterpolation"&gt;%d&lt;/span&gt;, 10&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt; &lt;span class="Keyword"&gt;%&lt;/span&gt; nLimit
&lt;span class="line-numbers"&gt;  60 &lt;/span&gt;         &lt;span class="Keyword"&gt;except&lt;/span&gt;:
&lt;span class="line-numbers"&gt;  61 &lt;/span&gt;             strLimit &lt;span class="Keyword"&gt;=&lt;/span&gt; &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt; LIMIT 10&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  62 &lt;/span&gt; 
&lt;span class="line-numbers"&gt;  63 &lt;/span&gt;     c &lt;span class="Keyword"&gt;=&lt;/span&gt; &lt;span class="MetaFunctionCallPy"&gt;pdo.connect&lt;span class="MetaFunctionCallPy"&gt;(&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt; &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;Module=MySQLdb;user=drupal;passwd=secret;db=drupal&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  64 &lt;/span&gt;     rs &lt;span class="Keyword"&gt;=&lt;/span&gt; &lt;span class="MetaFunctionCallPy"&gt;c.open&lt;span class="MetaFunctionCallPy"&gt;(&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt; &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;SELECT * FROM node ORDER BY created DESC &lt;span class="StringInterpolation"&gt;%s&lt;/span&gt;&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt; &lt;span class="Keyword"&gt;%&lt;/span&gt; strLimit&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  65 &lt;/span&gt; 
&lt;span class="line-numbers"&gt;  66 &lt;/span&gt;     strTitles &lt;span class="Keyword"&gt;=&lt;/span&gt; []
&lt;span class="line-numbers"&gt;  67 &lt;/span&gt;     &lt;span class="Keyword"&gt;while&lt;/span&gt; &lt;span class="MetaFunctionCallPy"&gt;rs.next&lt;span class="MetaFunctionCallPy"&gt;(&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;)&lt;/span&gt;&lt;/span&gt;:
&lt;span class="line-numbers"&gt;  68 &lt;/span&gt;         &lt;span class="MetaFunctionCallPy"&gt;strTitles.append&lt;span class="MetaFunctionCallPy"&gt;(&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt; &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;&amp;lt;a href=&amp;quot;Intranet.cgi?node=&lt;span class="StringInterpolation"&gt;%s&lt;/span&gt;&amp;quot;&amp;gt;&lt;span class="StringInterpolation"&gt;%s&lt;/span&gt;&amp;lt;/a&amp;gt;&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt; &lt;span class="Keyword"&gt;%&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  69 &lt;/span&gt; &lt;span class="MetaFunctionCallPy"&gt;&lt;span class="MetaFunctionCallPy"&gt;              (&lt;span class="MetaFunctionCallPy"&gt;rs.fields&lt;span class="MetaFunctionCallPy"&gt;[&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;&lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;nid&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;]&lt;/span&gt;.value, &lt;span class="MetaFunctionCallPy"&gt;rs.fields&lt;span class="MetaFunctionCallPy"&gt;[&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;&lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;title&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;]&lt;/span&gt;.value)&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  70 &lt;/span&gt; 
&lt;span class="line-numbers"&gt;  71 &lt;/span&gt;     strPage &lt;span class="Keyword"&gt;=&lt;/span&gt; &lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  72 &lt;/span&gt; &lt;span class="String"&gt;&amp;lt;ul&amp;gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  73 &lt;/span&gt; &lt;span class="String"&gt;#for $strTitle in $titles&lt;/span&gt;
&lt;span class="line-numbers"&gt;  74 &lt;/span&gt; &lt;span class="String"&gt;&amp;lt;li&amp;gt;$strTitle&amp;lt;/li&amp;gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  75 &lt;/span&gt; &lt;span class="String"&gt;#end for&lt;/span&gt;
&lt;span class="line-numbers"&gt;  76 &lt;/span&gt; &lt;span class="String"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  77 &lt;/span&gt; &lt;span class="String"&gt;    &lt;span class="String"&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  78 &lt;/span&gt; 
&lt;span class="line-numbers"&gt;  79 &lt;/span&gt;     &lt;span class="MetaFunctionCallPy"&gt;ThemeAndOutput&lt;span class="MetaFunctionCallPy"&gt;(&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt; &lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;Welcome&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, strPage, &lt;span class="MetaFunctionCallPy"&gt;&lt;span class="MetaFunctionCallPy"&gt;{&lt;/span&gt; &lt;span class="MetaFunctionCallPy"&gt;&lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;titles&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;:&lt;/span&gt; &lt;span class="MetaFunctionCallPy"&gt;strTitles&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  80 &lt;/span&gt; 
&lt;span class="line-numbers"&gt;  81 &lt;/span&gt; &lt;span class="Keyword"&gt;def&lt;/span&gt; &lt;span class="Entity"&gt;NodePage&lt;/span&gt;( &lt;span class="Variable"&gt;oForm&lt;/span&gt;):
&lt;span class="line-numbers"&gt;  82 &lt;/span&gt;     &lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;Display a node&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  83 &lt;/span&gt; 
&lt;span class="line-numbers"&gt;  84 &lt;/span&gt;     strNode &lt;span class="Keyword"&gt;=&lt;/span&gt; &lt;span class="MetaFunctionCallPy"&gt;oForm.getfirst&lt;span class="MetaFunctionCallPy"&gt;(&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt; &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;node&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  85 &lt;/span&gt;     &lt;span class="Keyword"&gt;if&lt;/span&gt; strNode &lt;span class="Keyword"&gt;==&lt;/span&gt; &lt;span class="Constant"&gt;None&lt;/span&gt;:
&lt;span class="line-numbers"&gt;  86 &lt;/span&gt;         &lt;span class="MetaFunctionCallPy"&gt;ErrorPage&lt;span class="MetaFunctionCallPy"&gt;(&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  87 &lt;/span&gt;         &lt;span class="Keyword"&gt;return&lt;/span&gt;
&lt;span class="line-numbers"&gt;  88 &lt;/span&gt;     &lt;span class="Keyword"&gt;else&lt;/span&gt;:
&lt;span class="line-numbers"&gt;  89 &lt;/span&gt;         &lt;span class="Keyword"&gt;try&lt;/span&gt;:
&lt;span class="line-numbers"&gt;  90 &lt;/span&gt;             nNode &lt;span class="Keyword"&gt;=&lt;/span&gt; &lt;span class="MetaFunctionCallPy"&gt;&lt;span class="Support"&gt;int&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;(&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;strNode&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  91 &lt;/span&gt;         &lt;span class="Keyword"&gt;except&lt;/span&gt;:
&lt;span class="line-numbers"&gt;  92 &lt;/span&gt;             &lt;span class="MetaFunctionCallPy"&gt;ErrorPage&lt;span class="MetaFunctionCallPy"&gt;(&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  93 &lt;/span&gt;             &lt;span class="Keyword"&gt;return&lt;/span&gt;
&lt;span class="line-numbers"&gt;  94 &lt;/span&gt; 
&lt;span class="line-numbers"&gt;  95 &lt;/span&gt;     c &lt;span class="Keyword"&gt;=&lt;/span&gt; &lt;span class="MetaFunctionCallPy"&gt;pdo.connect&lt;span class="MetaFunctionCallPy"&gt;(&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt; &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;Module=MySQLdb;user=drupal;passwd=secret;db=drupal&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  96 &lt;/span&gt;     rs &lt;span class="Keyword"&gt;=&lt;/span&gt; &lt;span class="MetaFunctionCallPy"&gt;c.open&lt;span class="MetaFunctionCallPy"&gt;(&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt; &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;SELECT * FROM node WHERE nid = &lt;span class="StringInterpolation"&gt;%d&lt;/span&gt;&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt; &lt;span class="Keyword"&gt;%&lt;/span&gt; nNode&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  97 &lt;/span&gt; 
&lt;span class="line-numbers"&gt;  98 &lt;/span&gt;     &lt;span class="Keyword"&gt;if&lt;/span&gt; &lt;span class="MetaFunctionCallPy"&gt;rs.next&lt;span class="MetaFunctionCallPy"&gt;(&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;)&lt;/span&gt;&lt;/span&gt;:
&lt;span class="line-numbers"&gt;  99 &lt;/span&gt;         strTitle &lt;span class="Keyword"&gt;=&lt;/span&gt; rs.fields[&lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;title&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;].value
&lt;span class="line-numbers"&gt; 100 &lt;/span&gt;         strBody &lt;span class="Keyword"&gt;=&lt;/span&gt; rs.fields[&lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;body&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;].value
&lt;span class="line-numbers"&gt; 101 &lt;/span&gt;     &lt;span class="Keyword"&gt;else&lt;/span&gt;:
&lt;span class="line-numbers"&gt; 102 &lt;/span&gt;         &lt;span class="MetaFunctionCallPy"&gt;ErrorPage&lt;span class="MetaFunctionCallPy"&gt;(&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt; 103 &lt;/span&gt;         &lt;span class="Keyword"&gt;return&lt;/span&gt;
&lt;span class="line-numbers"&gt; 104 &lt;/span&gt; 
&lt;span class="line-numbers"&gt; 105 &lt;/span&gt;     strPage &lt;span class="Keyword"&gt;=&lt;/span&gt; &lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt; 106 &lt;/span&gt; &lt;span class="String"&gt;&amp;lt;h2&amp;gt;$strTitle&amp;lt;/h2&amp;gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt; 107 &lt;/span&gt; &lt;span class="String"&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt; 108 &lt;/span&gt; &lt;span class="String"&gt;&amp;lt;pre&amp;gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt; 109 &lt;/span&gt; &lt;span class="String"&gt;$strBody&lt;/span&gt;
&lt;span class="line-numbers"&gt; 110 &lt;/span&gt; &lt;span class="String"&gt;&amp;lt;/pre&amp;gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt; 111 &lt;/span&gt; &lt;span class="String"&gt;    &lt;span class="String"&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt; 112 &lt;/span&gt; 
&lt;span class="line-numbers"&gt; 113 &lt;/span&gt;     &lt;span class="MetaFunctionCallPy"&gt;ThemeAndOutput&lt;span class="MetaFunctionCallPy"&gt;(&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt; strTitle, strPage,&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt; 114 &lt;/span&gt; &lt;span class="MetaFunctionCallPy"&gt;&lt;span class="MetaFunctionCallPy"&gt;          &lt;span class="MetaFunctionCallPy"&gt;&lt;span class="MetaFunctionCallPy"&gt;{&lt;/span&gt; &lt;span class="MetaFunctionCallPy"&gt;&lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;strTitle&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;:&lt;/span&gt; &lt;span class="MetaFunctionCallPy"&gt;strTitle&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;,&lt;/span&gt; &lt;span class="MetaFunctionCallPy"&gt;&lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;strBody&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;:&lt;/span&gt; &lt;span class="MetaFunctionCallPy"&gt;strBody&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt; 115 &lt;/span&gt; 
&lt;span class="line-numbers"&gt; 116 &lt;/span&gt; &lt;span class="Keyword"&gt;def&lt;/span&gt; &lt;span class="Entity"&gt;ErrorPage&lt;/span&gt;():
&lt;span class="line-numbers"&gt; 117 &lt;/span&gt;     strPage &lt;span class="Keyword"&gt;=&lt;/span&gt; &lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;&amp;lt;p&amp;gt;There has been some kind of navigation error, the link&lt;/span&gt;
&lt;span class="line-numbers"&gt; 118 &lt;/span&gt; &lt;span class="String"&gt;you just clicked is broken&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt; 119 &lt;/span&gt; &lt;span class="String"&gt;&amp;lt;p&amp;gt;Better &amp;lt;a href=&amp;quot;mailto:someone@somewhere.com&amp;quot;&amp;gt;complain about it&amp;lt;/a&amp;gt;.&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt; 120 &lt;/span&gt; &lt;span class="String"&gt;    &lt;span class="String"&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt; 121 &lt;/span&gt; 
&lt;span class="line-numbers"&gt; 122 &lt;/span&gt;     &lt;span class="MetaFunctionCallPy"&gt;ThemeAndOutput&lt;span class="MetaFunctionCallPy"&gt;(&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt; &lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;Drupal emulator&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, strPage&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt; 123 &lt;/span&gt; 
&lt;span class="line-numbers"&gt; 124 &lt;/span&gt; oForm&lt;span class="Keyword"&gt;=&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;cgi.FieldStorage&lt;span class="MetaFunctionCallPy"&gt;(&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt; 125 &lt;/span&gt; 
&lt;span class="line-numbers"&gt; 126 &lt;/span&gt; node &lt;span class="Keyword"&gt;=&lt;/span&gt; &lt;span class="MetaFunctionCallPy"&gt;oForm.getfirst&lt;span class="MetaFunctionCallPy"&gt;(&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt; &lt;span class="String"&gt;&lt;span class="String"&gt;'&lt;/span&gt;node&lt;span class="String"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt; 127 &lt;/span&gt; &lt;span class="Keyword"&gt;if&lt;/span&gt; node:
&lt;span class="line-numbers"&gt; 128 &lt;/span&gt;     &lt;span class="MetaFunctionCallPy"&gt;NodePage&lt;span class="MetaFunctionCallPy"&gt;(&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt; oForm&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt; 129 &lt;/span&gt; &lt;span class="Keyword"&gt;else&lt;/span&gt;:
&lt;span class="line-numbers"&gt; 130 &lt;/span&gt;     &lt;span class="MetaFunctionCallPy"&gt;MainPage&lt;span class="MetaFunctionCallPy"&gt;(&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt; oForm&lt;/span&gt;&lt;span class="MetaFunctionCallPy"&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;
The page template is kept in a seperate file. It is based on the phptemplate of &lt;a href="/node/700"&gt;my drupal theme&lt;/a&gt; and was ported over in less than an hour. Theming engines? A specialisation of templates. 
&lt;/p&gt;
&lt;pre class="lazy"&gt;&lt;span class="line-numbers"&gt;   1 &lt;/span&gt; Content-Type: text/html
&lt;span class="line-numbers"&gt;   2 &lt;/span&gt; 
&lt;span class="line-numbers"&gt;   3 &lt;/span&gt; &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;DOCTYPE&lt;/span&gt; html PUBLIC &lt;span class="String"&gt;&amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;   4 &lt;/span&gt; &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt; &lt;span class="String"&gt;&amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;   5 &lt;/span&gt; &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;html&lt;/span&gt; &lt;span class="MetaTag"&gt;xmlns&lt;/span&gt;=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;http://www.w3.org/1999/xhtml&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class="MetaTag"&gt;lang&lt;/span&gt;=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;en&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class="MetaTag"&gt;xml:lang&lt;/span&gt;=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;en&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;   6 &lt;/span&gt; &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;head&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;   7 &lt;/span&gt; &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;title&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;$Title&lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;title&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;   8 &lt;/span&gt; &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;meta&lt;/span&gt; &lt;span class="MetaTag"&gt;http-equiv&lt;/span&gt;=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;Content-Style-Type&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class="MetaTag"&gt;content&lt;/span&gt;=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;text/css&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;/&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;   9 &lt;/span&gt; &amp;lt;&lt;span class="Entity"&gt;style&lt;/span&gt; &lt;span class="Entity"&gt;type&lt;/span&gt;=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;text/css&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;@import url(style.css);&amp;lt;/&lt;span class="Entity"&gt;style&lt;/span&gt;&amp;gt;
&lt;span class="line-numbers"&gt;  10 &lt;/span&gt; &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;head&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  11 &lt;/span&gt; &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;body&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  12 &lt;/span&gt;     &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt; &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;id&lt;/span&gt;&lt;span class="MetaTag"&gt;=&lt;/span&gt;&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;span class="String"&gt;headerleft&lt;/span&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  13 &lt;/span&gt;     &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  14 &lt;/span&gt;     &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt; &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;id&lt;/span&gt;&lt;span class="MetaTag"&gt;=&lt;/span&gt;&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;span class="String"&gt;headermain&lt;/span&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  15 &lt;/span&gt;         &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt; &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;id&lt;/span&gt;&lt;span class="MetaTag"&gt;=&lt;/span&gt;&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;span class="String"&gt;ie6hack&lt;/span&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  16 &lt;/span&gt;         &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  17 &lt;/span&gt;     &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  18 &lt;/span&gt;     &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt; &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;id&lt;/span&gt;&lt;span class="MetaTag"&gt;=&lt;/span&gt;&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;span class="String"&gt;headertitle&lt;/span&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  19 &lt;/span&gt;         &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;h1&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  20 &lt;/span&gt;             &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;a&lt;/span&gt; &lt;span class="MetaTag"&gt;href&lt;/span&gt;=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;$Url&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class="MetaTag"&gt;title&lt;/span&gt;=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;$Title&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  21 &lt;/span&gt;             $Title&lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;a&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  22 &lt;/span&gt;         &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;h1&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  23 &lt;/span&gt;     &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  24 &lt;/span&gt;     &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt; &lt;span class="MetaTag"&gt;class&lt;/span&gt;=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;slogan&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  25 &lt;/span&gt;         $Slogan
&lt;span class="line-numbers"&gt;  26 &lt;/span&gt;     &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  27 &lt;/span&gt;     &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt; &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;id&lt;/span&gt;&lt;span class="MetaTag"&gt;=&lt;/span&gt;&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;span class="String"&gt;logo&lt;/span&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  28 &lt;/span&gt;         &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;a&lt;/span&gt; &lt;span class="MetaTag"&gt;href&lt;/span&gt;=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;$Url&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class="MetaTag"&gt;title&lt;/span&gt;=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;$Title&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  29 &lt;/span&gt;             &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;img&lt;/span&gt; &lt;span class="MetaTag"&gt;src&lt;/span&gt;=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;ITL.gif&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;/&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  30 &lt;/span&gt;         &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;a&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  31 &lt;/span&gt;     &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  32 &lt;/span&gt;     &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt; &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;id&lt;/span&gt;&lt;span class="MetaTag"&gt;=&lt;/span&gt;&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;span class="String"&gt;headerright&lt;/span&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  33 &lt;/span&gt;     &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  34 &lt;/span&gt; #if len($PrimaryLinks) &amp;gt; 0
&lt;span class="line-numbers"&gt;  35 &lt;/span&gt;     &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt; &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;id&lt;/span&gt;&lt;span class="MetaTag"&gt;=&lt;/span&gt;&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;span class="String"&gt;primarylinks&lt;/span&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  36 &lt;/span&gt;         &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;ul&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  37 &lt;/span&gt; #for $PrimaryLink in $PrimaryLinks
&lt;span class="line-numbers"&gt;  38 &lt;/span&gt;             &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;li&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;$PrimaryLink&lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;li&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  39 &lt;/span&gt; #end for
&lt;span class="line-numbers"&gt;  40 &lt;/span&gt;         &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;ul&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  41 &lt;/span&gt;     &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  42 &lt;/span&gt; #end if
&lt;span class="line-numbers"&gt;  43 &lt;/span&gt; 
&lt;span class="line-numbers"&gt;  44 &lt;/span&gt;     &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt; &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;id&lt;/span&gt;&lt;span class="MetaTag"&gt;=&lt;/span&gt;&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;span class="String"&gt;ie5forcemargininsidehack&lt;/span&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  45 &lt;/span&gt;         &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt; &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;id&lt;/span&gt;&lt;span class="MetaTag"&gt;=&lt;/span&gt;&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;span class="String"&gt;main&lt;/span&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  46 &lt;/span&gt;             &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt; &lt;span class="MetaTag"&gt;class&lt;/span&gt;=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;tab&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  47 &lt;/span&gt;                 &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt; &lt;span class="MetaTag"&gt;class&lt;/span&gt;=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;tabbackground&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  48 &lt;/span&gt;                     &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt; &lt;span class="MetaTag"&gt;class&lt;/span&gt;=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;tableft&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  49 &lt;/span&gt;                         &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;h3&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  50 &lt;/span&gt;                             $PageTitle
&lt;span class="line-numbers"&gt;  51 &lt;/span&gt;                         &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;h3&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  52 &lt;/span&gt;                     &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  53 &lt;/span&gt;                 &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  54 &lt;/span&gt;             &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  55 &lt;/span&gt;             &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt; &lt;span class="MetaTag"&gt;class&lt;/span&gt;=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;tabbody&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  56 &lt;/span&gt;                 &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt; &lt;span class="MetaTag"&gt;class&lt;/span&gt;=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;ieisbuggy&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  57 &lt;/span&gt;                 &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  58 &lt;/span&gt;                 &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt; &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;id&lt;/span&gt;&lt;span class="MetaTag"&gt;=&lt;/span&gt;&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;span class="String"&gt;content&lt;/span&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  59 &lt;/span&gt;                     %(Content)s
&lt;span class="line-numbers"&gt;  60 &lt;/span&gt;                 &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  61 &lt;/span&gt;                 &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt; &lt;span class="MetaTag"&gt;class&lt;/span&gt;=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;ieisbuggy&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  62 &lt;/span&gt;                 &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  63 &lt;/span&gt;             &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  64 &lt;/span&gt;         &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  65 &lt;/span&gt;         &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt; &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;id&lt;/span&gt;&lt;span class="MetaTag"&gt;=&lt;/span&gt;&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;span class="String"&gt;footer&lt;/span&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  66 &lt;/span&gt;             &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt; &lt;span class="MetaTag"&gt;class&lt;/span&gt;=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;footerleft&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  67 &lt;/span&gt;                 &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;p&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  68 &lt;/span&gt;                 $Footer
&lt;span class="line-numbers"&gt;  69 &lt;/span&gt;                 &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;p&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  70 &lt;/span&gt;             &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  71 &lt;/span&gt;         &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  72 &lt;/span&gt;     &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  73 &lt;/span&gt;     &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt; &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;id&lt;/span&gt;&lt;span class="MetaTag"&gt;=&lt;/span&gt;&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;span class="String"&gt;sidebarright&lt;/span&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  74 &lt;/span&gt;         &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt; &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;id&lt;/span&gt;&lt;span class="MetaTag"&gt;=&lt;/span&gt;&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;span class="String"&gt;sidebar&lt;/span&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  75 &lt;/span&gt;             &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt; &lt;span class="MetaTag"&gt;class&lt;/span&gt;=&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;sidebarbox&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  76 &lt;/span&gt;                 $SideBar
&lt;span class="line-numbers"&gt;  77 &lt;/span&gt;             &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  78 &lt;/span&gt;         &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  79 &lt;/span&gt;         &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt; &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;id&lt;/span&gt;&lt;span class="MetaTag"&gt;=&lt;/span&gt;&lt;span class="String"&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;span class="String"&gt;sidebarbottom&lt;/span&gt;&lt;span class="String"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  80 &lt;/span&gt;         &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  81 &lt;/span&gt;     &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;div&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="line-numbers"&gt;  82 &lt;/span&gt; &lt;span class="MetaTag"&gt;&lt;span class="MetaTag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="MetaTag"&gt;body&lt;/span&gt;&lt;span class="MetaTag"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;p&gt;Related Posts: &lt;a href="/tag/blog"&gt;blog&lt;/a&gt; &lt;a href="/tag/cheetah"&gt;cheetah&lt;/a&gt; &lt;a href="/tag/drupal"&gt;drupal&lt;/a&gt; &lt;a href="/tag/email"&gt;email&lt;/a&gt; &lt;a href="/tag/exchange"&gt;exchange&lt;/a&gt; &lt;a href="/tag/google"&gt;google&lt;/a&gt; &lt;a href="/tag/php"&gt;php&lt;/a&gt; &lt;a href="/tag/python"&gt;python&lt;/a&gt; &lt;a href="/tag/theme"&gt;theme&lt;/a&gt; &lt;a href="/tag/vim"&gt;vim&lt;/a&gt; &lt;a href="/tag/wilki"&gt;wilki&lt;/a&gt;&lt;/p&gt;</description>
      <guid>http://www.petersblog.org/node/view/762</guid>
      <category domain="http://www.technorati.com/tag">blog</category>
      <category domain="http://www.technorati.com/tag">cheetah</category>
      <category domain="http://www.technorati.com/tag">drupal</category>
      <category domain="http://www.technorati.com/tag">email</category>
      <category domain="http://www.technorati.com/tag">exchange</category>
      <category domain="http://www.technorati.com/tag">google</category>
      <category domain="http://www.technorati.com/tag">php</category>
      <category domain="http://www.technorati.com/tag">python</category>
      <category domain="http://www.technorati.com/tag">theme</category>
      <category domain="http://www.technorati.com/tag">vim</category>
      <category domain="http://www.technorati.com/tag">wilki</category>
    </item>
    <item>
      <title>Exchange not Restarting</title>
      <link>http://www.petersblog.org/node/view/740</link>
      <description>&lt;p&gt;
Had a big problem with the Exchange Server. It stopped working and upon rebooting the system the exchange services would not start. The principal service that was stuck was the "Microsoft Exchange System Attendant" and the other services were waiting for it. Result: no company email for two and a half days. 
&lt;/p&gt;
&lt;p&gt;
When the service finally gave up trying to start it would give the following error: 
&lt;/p&gt;
&lt;div class="verbatim-block"&gt;&lt;pre&gt;The Server is not operational
Facility: Win 32
ID no: 8007203a
Exchange System Manager
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;
Someone had been altering the configuration of the DNS server over the weekend and had deleted a few zones that did not appear to be used. Looking through the list of computers in the Active Directory on the Domain Server (a different box to the Exchance Server), these all had their URLs specified as being in one of the zones that was deleted. On a hunch I recreated one of the deleted zones with a single host entry for the exchange server and, voila, exchange started and has been fine. 
&lt;/p&gt;
&lt;p&gt;
It seems that the basic cause was that Exchange could not get access to the Active Directory on the Domain Server, probably because the Domain Server was doing some kind of validation on the IP address that was failing. 
&lt;/p&gt;
&lt;p&gt;
What is weird is that all other Windows computers in the building were in the same deleted zone but everyone was still able to log into the domain server. There may be some extra security in there to get access to Active Directory compared to logging into a domain, who knows. 
&lt;/p&gt;&lt;p&gt;Related Posts: &lt;a href="/tag/email"&gt;email&lt;/a&gt; &lt;a href="/tag/exchange"&gt;exchange&lt;/a&gt; &lt;a href="/tag/windows"&gt;windows&lt;/a&gt;&lt;/p&gt;</description>
      <guid>http://www.petersblog.org/node/view/740</guid>
      <category domain="http://www.technorati.com/tag">email</category>
      <category domain="http://www.technorati.com/tag">exchange</category>
      <category domain="http://www.technorati.com/tag">windows</category>
    </item>
  </channel>
</rss>
