<?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>Blog of Alexander Mamchenkov</title>
	<atom:link href="http://alex.mamchenkov.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://alex.mamchenkov.net</link>
	<description>... mammoth cave ...</description>
	<lastBuildDate>Wed, 22 Jul 2009 05:30:36 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Quick update</title>
		<link>http://alex.mamchenkov.net/2009/07/22/quick-update/</link>
		<comments>http://alex.mamchenkov.net/2009/07/22/quick-update/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 05:30:36 +0000</pubDate>
		<dc:creator>Alexander Mamchenkov</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://alex.mamchenkov.net/?p=291</guid>
		<description><![CDATA[These days are very hot and brain just boils :( No willingness to do anything. Lots of people coming to Cyprus for their holidays. Lots of parties and drinking.
Finally got my car back from the garage after I had a small incident (nobody died). Cost me a fortune though.
Waiting for winter to get rest from [...]]]></description>
			<content:encoded><![CDATA[<p>These days are very hot and brain just boils :( No willingness to do anything. Lots of people coming to Cyprus for their holidays. Lots of parties and drinking.</p>
<p>Finally got my car back from the garage after I had a small incident (nobody died). Cost me a fortune though.</p>
<p>Waiting for winter to get rest from the sun.</p>]]></content:encoded>
			<wfw:commentRss>http://alex.mamchenkov.net/2009/07/22/quick-update/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>RT3 ActiveDirectory User Attributes Sync</title>
		<link>http://alex.mamchenkov.net/2009/03/14/rt3-activedirectory-user-attributes-sync/</link>
		<comments>http://alex.mamchenkov.net/2009/03/14/rt3-activedirectory-user-attributes-sync/#comments</comments>
		<pubDate>Sat, 14 Mar 2009 10:47:37 +0000</pubDate>
		<dc:creator>Alexander Mamchenkov</dc:creator>
				<category><![CDATA[Directory Service]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://alex.mamchenkov.net/?p=285</guid>
		<description><![CDATA[Ok, here is another small script to deal with RT3 and Active Directory. If you apply the apache LDAP auth described previously to your RT3 installation, you will have no problem getting people logged in, but you will still have to adjust their names and emails. Doing this manually is not the best choice, so [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, here is another small script to deal with RT3 and Active Directory. If you apply the apache <acronym title="Lightweight Directory Access Protocol">LDAP</acronym> auth described previously to your RT3 installation, you will have no problem getting people logged in, but you will still have to adjust their names and emails. Doing this manually is not the best choice, so here is a small script, which can be run from the cron (or manually) to update user info in RT3 according to user attributes in Active Directory:</p>
<pre>
#!/usr/bin/php
< ?php

# Debug flag. Set to non-zero for verbose output
$debug = 0;

# Settings to use while connecting to active directory
$ldap_host = "10.10.10.1"; # AD server
$ldap_user = "someuser@example.com"; # User in AD with read writes
$ldap_pass = "someuser_password"; # Password for the user above
$ldap_base = "dc=example,dc=com"; # AD base to search (recursivly)

# Settings to use while connecting to rt3 MySQL DB
$sql_host = "127.0.0.1"; # MySQL server
$sql_name = "rt3"; # RT3 DB name in MySQL
$sql_user = "rt3_user"; # User to connect to above DB
$sql_pass = "rt3_pass"; # Password for the user above

# Map of RT3 -> AD attributes
$attr_map = array(
	'RealName'		=> 'displayName',
	'EmailAddress'	=> 'mail'
);

# Connect to AD and authenticate
$ldap = ldap_connect($ldap_host);
if (!$ldap) {
	die ("Failed to connect to LDAP server: " . ldap_error() . "\n");
}
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);
if (!ldap_bind($ldap,$ldap_user,$ldap_pass)) {
	die ("Failed to bind to LDAP server: " . ldap_error() . "\n");
}

# Connect to MySQL
$sql = mysql_connect($sql_host,$sql_user,$sql_pass);
if (!$sql) {
	die ("Failed to connect to MySQL server: " . mysql_error() . "\n");
}
if (!mysql_select_db($sql_name)) {
	die ("Failed to select MySQL database: " . mysql_error() . "\n");
}

# Get a list of RT3 users from MySQL
$users = get_rt3_users();

# Update attributes for each RT3 user according to AD attributes
foreach ($users as $user) {
	set_rt3_user_info($user,get_ldap_user_attr($user));
}

# Close the connections to MySQL and AD
mysql_close($sql);
ldap_unbind($ldap);

# Gets a list of RT3 users from MySQL
function get_rt3_users () {
	global $sql;

	# Skips the external users (the ones that look like email address)
	$result = mysql_query("SELECT Name FROM Users WHERE Name NOT LIKE '%@%'",$sql);
	$users = array();
	while ($user = mysql_fetch_array($result)) {
		array_push($users,$user[0]);
	}
	return $users;
}

# Gets AD attributes for the given user
function get_ldap_user_attr ($user) {
	global $ldap,$ldap_base,$attr_map,$debug;

	if ($debug) { print "Searching for user $user\n"; }
	$result = ldap_search($ldap,$ldap_base,"(sAMAccountName=$user)");
	$entries = array();
	if ($result) {
		$entries = ldap_get_entries($ldap,$result);
	} else {
		die("Failed to search LDAP: " . ldap_error($ldap) . "\n");
	}
	return $entries;
}

# Updates RT3 user in MySQL with given AD attributes
function set_rt3_user_info ($user,$attr) {
	global $sql,$attr_map;

	# Construct an update SQL query arguments
	$query = "";
	foreach ($attr_map as $k => $v) {

		# Update field only if it is set and non empty
		if (isset($attr[0][strtolower($v)][0]) and $attr[0][strtolower($v)][0] != "") {
			$query .= ",$k='" . mysql_escape_string($attr[0][strtolower($v)][0]) . "'";
		}
	}

	# Run the actual query
	$query = "UPDATE Users SET ".substr($query,1)." WHERE Name='".mysql_escape_string($user)."';";
	mysql_query($query);
}

?>
</pre>
<p>Now each time a new user logs in to RT3 and his username appears in RT3 database, this script will update his/her name and email. You can extend a list of mapped attributes to have more info updated if you want so.</p>]]></content:encoded>
			<wfw:commentRss>http://alex.mamchenkov.net/2009/03/14/rt3-activedirectory-user-attributes-sync/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache MS Active Directory Auth</title>
		<link>http://alex.mamchenkov.net/2009/03/13/apache-activedirectory-auth/</link>
		<comments>http://alex.mamchenkov.net/2009/03/13/apache-activedirectory-auth/#comments</comments>
		<pubDate>Fri, 13 Mar 2009 12:19:33 +0000</pubDate>
		<dc:creator>Alexander Mamchenkov</dc:creator>
				<category><![CDATA[Directory Service]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://alex.mamchenkov.net/?p=284</guid>
		<description><![CDATA[I know there are plenty of methods to apache auth through active directory, but recently I found out that some of them didn&#8217;t work for me or didn&#8217;t do well. The more or less successfull one was perl Apache2::AuthenNTLM, but when you have a lot of users, this one blocks apache now and then and [...]]]></description>
			<content:encoded><![CDATA[<p>I know there are plenty of methods to apache auth through active directory, but recently I found out that some of them didn&#8217;t work for me or didn&#8217;t do well. The more or less successfull one was perl Apache2::AuthenNTLM, but when you have a lot of users, this one blocks apache now and then and causes some real problems.</p>
<p>Like always, found out about apache mod_authnz_external and ended up writing my own authentication script. Here is how to make things work:</p>
<p>First of all download and install mod_authnz_external (google for the package and installation instructions).</p>
<p>Then put the next script somewhere on the apache server (for example /etc/httpd/conf/ad_login.php):</p>
<pre>
< ?php

// AD server IP address
$ldap_host = "10.10.10.1";

// AD Base
$ldap_base = "dc=example,dc=com";

// AD domain
$ldap_domain = "example.com";

// Connect to AD server
$stderr = fopen("php://stderr","w");
$ldap = @ldap_connect($ldap_host);
if (!$ldap) {
	fwrite($stderr,"AD Auth: Failed to connect to $ldap_host\n");
	fclose($stderr);
	exit(1);
}
@ldap_set_option($ldap, LDAP_OPT_PROTOCOLO_VERSION, 3);
@ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);

// Try to login with the supplied username and password
// (using environment to pass the stuff)
if (!@ldap_bind($ldap,$_ENV['USER'] . '@' . $ldap_domain,$_ENV['PASS'])) {
	fwrite($stderr,"AD Auth: Failed to authenticate " . $_ENV['USER'] . "\n");
	fclose($stderr);

	// if failed - exit with 1
	exit(1);
}

ldap_unbind($ldap);
fclose($stderr);

// exit with 0 on success
exit(0);

?>
</pre>
<p>Next, add the following into VirtualHost (or similar) definition in apache config:</p>
<pre>
AddExternalAuth ad "/usr/bin/php -f /etc/httpd/conf/ad_login.php"
SetExternalAuthMethod ad environment

# This can go into Location or Directory sections
AuthType basic
AuthName "My Closed Zone"
AuthBasicProvider external
AuthExternal "ad"
require valid-user
</pre>
<p>Restart apache and you are done.</p>
<p>How does it work? Simple. Each time apache will need to authenticate a user, it will start a script (ad_login.php) and pass it username and password as environment variables. The script, in turn, will try to connect to AD and authenticate itself as given user. If that fails &#8211; login fails, otherwise &#8211; login ok. So basically, if a user has writes to connect to AD, (s)he has write to login to apache.</p>
<p>And of course you can extend the <acronym title="Hypertext PreProcessing">PHP</acronym> script with some extras, like additional checks on username, caching and so on.</p>]]></content:encoded>
			<wfw:commentRss>http://alex.mamchenkov.net/2009/03/13/apache-activedirectory-auth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WP upgrade 2.5 to 2.7.1</title>
		<link>http://alex.mamchenkov.net/2009/03/13/wp-upgrade-25-to-271/</link>
		<comments>http://alex.mamchenkov.net/2009/03/13/wp-upgrade-25-to-271/#comments</comments>
		<pubDate>Fri, 13 Mar 2009 09:18:43 +0000</pubDate>
		<dc:creator>Alexander Mamchenkov</dc:creator>
				<category><![CDATA[Blogging]]></category>

		<guid isPermaLink="false">http://alex.mamchenkov.net/?p=286</guid>
		<description><![CDATA[Finally I got annoyed by the upgrade warning and did the thing. Looks fine (at least for me). Let me know if something went wrong from your side.]]></description>
			<content:encoded><![CDATA[<p>Finally I got annoyed by the upgrade warning and did the thing. Looks fine (at least for me). Let me know if something went wrong from your side.</p>]]></content:encoded>
			<wfw:commentRss>http://alex.mamchenkov.net/2009/03/13/wp-upgrade-25-to-271/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>More scripts comming</title>
		<link>http://alex.mamchenkov.net/2009/03/12/more-scripts-comming/</link>
		<comments>http://alex.mamchenkov.net/2009/03/12/more-scripts-comming/#comments</comments>
		<pubDate>Thu, 12 Mar 2009 15:39:35 +0000</pubDate>
		<dc:creator>Alexander Mamchenkov</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://alex.mamchenkov.net/?p=283</guid>
		<description><![CDATA[Similar to the latest port, I will be putting more scripts that I use(d) here and there, since recently I found quite a few in my collection and I don&#8217;t want to lose them as well as want other people to use them if they need.]]></description>
			<content:encoded><![CDATA[<p>Similar to the latest port, I will be putting more scripts that I use(d) here and there, since recently I found quite a few in my collection and I don&#8217;t want to lose them as well as want other people to use them if they need.</p>]]></content:encoded>
			<wfw:commentRss>http://alex.mamchenkov.net/2009/03/12/more-scripts-comming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MailDir to RT import</title>
		<link>http://alex.mamchenkov.net/2009/03/12/maildir-to-rt-import/</link>
		<comments>http://alex.mamchenkov.net/2009/03/12/maildir-to-rt-import/#comments</comments>
		<pubDate>Thu, 12 Mar 2009 15:11:50 +0000</pubDate>
		<dc:creator>Alexander Mamchenkov</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://alex.mamchenkov.net/?p=282</guid>
		<description><![CDATA[Recently I had to do an import of mailboxes hosted in the maildirs into RT3. Looking around on the web didn&#8217;t found ready solutions. Looking some more and getting small portions of code here and there ended up writing my own script.
One thing though, I had to stop using rt-mailgate for the purpose of import [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I had to do an import of mailboxes hosted in the maildirs into RT3. Looking around on the web didn&#8217;t found ready solutions. Looking some more and getting small portions of code here and there ended up writing my own script.</p>
<p>One thing though, I had to stop using rt-mailgate for the purpose of import since it was overloading Apache and MySQL. Through I still use rt-mailgate for normal mail aliases to pass incoming mail to RT.</p>
<p>The script should be started from inside of the root of the maildir which you want to import. Prior to this, few parameters needed to be adjusted like the RT queue, tickets status and log file (right at the top of the script).</p>
<p>Few notes:<br />
- assuming RT is hosted on the same machine the maildir is located (alternativly copy the maildir to the same server).<br />
- script works with files and RT modules (which work directly with MySQL) and is much lighter and more flexible than the default rt-mailgate.<br />
- I am not a programmer, so don&#8217;t blame me for bad coding, suggestions welcome.<br />
- All the stuff is in perl, tested to be working for me on Fedora 10 with RT3 version 3.8.2<br />
- If you uncomment the DEBUG section of the code, it will do dry run, showing what will be imported and what not, without doing actual imports or writing to any logs.<br />
- If, by some chance, you lost your log of previous import, or want to import only a portion of emails in the current maildir, you can use unix find instead of perl glob in the for statement. (For example, put the next statement as a condition for <em>for</em> loop to find messages that were changed within last day: <strong>split /\n/,`find new cur tmp .*/cur .*/new .*/tmp -mtime -1 -type f`</strong>)</p>
<p>Ok, here is the code:</p>
<pre>
#!/usr/bin/perl -w

use RT;
use Email::MIME;
use Data::Dumper;

# RT Queue to import email to
my $desired_queue = "my_rt_queue_name_here";

# Log file to write update (and read old data from)
my $log_file = "/tmp/rt3_import_log-$desired_queue.txt";

# Status of the tickets created
my $status = 'resolved';

# Get connected to RT
RT::LoadConfig();
RT::Init();
RT::ConnectToDatabase();

# Store already imported emails here
my $imported = {};

# If the log file already exists
if (-f $log_file) {

	# Try to read it and get all email ids
	# that were already imported
	open LOG, "< $log_file";
	while (my $line = <LOG>) {
		if (my $id = get_msgid($line)) {
			$imported->{$id} = 1;
		}
	}
	close LOG;
}

open LOG, ">>$log_file";
my $total = 0;

# Find all files in current dir (recursivly
for my $file (glob "cur/* tmp/* new/* .*/cur/* .*/tmp/* .*/new/*") {

	$total++;
	print "$file: ";

	# Try to get message ID
	my $msgid = get_msgid($file);
	if ($msgid) {

		# Skip if already imported
		if (defined($imported->{$msgid}) &#038;&#038; $imported->{$msgid} == 1) {
			print "skipping\n";
			next;
		}
	} else {

		# Skip of no message ID
		print "no message id\n";
		next;
	}

# DEBUG!!!
#	print "fetching\n";
#	next;
# !DEBUG

	# Try to create a ticket
	my ($id,$error) = create_ticket($desired_queue,$file,$status);

	if ($id) {

		# Log to STDOUT and log file on success
		print " $id\n";
		print LOG "$file: $id\n";
		$imported->{$msgid} = 1;

	} else {

		# Log to STDOUT on failure
		print "$error\n";
	}

	# Sleep for 30 secs each 50 msgs not to overload MySQL
	# (Adjust if needed, this is for heavy production systems)
	if ($total == 50) {
		$total = 0;
		sleep 30;
	}
}

close LOG;

# Parse message ID from file name
sub get_msgid {
	my $msg = shift;

	if ($msg =~ /^.*\/([0-9A-Z]+)\.([0-9A-Z]+)\.[^\/]+?:.*$/) {

		# Return only the first two portions of msg ID
		# (works file with Exim/Dovecot IDs)
		return "$1.$2";
	}

	return 0;
}

# Create a ticket in RT
sub create_ticket {
	my ($queue,$filename,$ticket_status) = @_;

	# Read the content of the msg file
	open FH,"< $filename";
	my $message = "";
	my $subject = "";
	while (my $line = <FH>) {
		$message .= "$line";

		# Try to find out the subject
		if ($line =~ /^Subject: (.*)\n$/ &#038;&#038; $subject eq "") {
			$subject = $1;
		}
	}
	close FH;

	# Create MIME entity (RT wants it like this)
	my $entity = new Email::MIME($message);

	# Parse it the way RT wants
	my $parser = RT::EmailParser->new();
	$parser->SmartParseMIMEEntityFromScalar(Message => $entity->as_string);

	# Create the ticket
	my $ticket = new RT::Ticket($RT::SystemUser);
	my ($t_id,$transaction,$error_str) = $ticket->Create(
			Queue => $queue,
			Requestor => $entity->header('From'),
			Subject => $subject,
			MIMEObj => $parser->Entity,
			Status => $ticket_status,
	);

	# Give back ID and message
	return ($t_id,$error_str);
}
</pre>]]></content:encoded>
			<wfw:commentRss>http://alex.mamchenkov.net/2009/03/12/maildir-to-rt-import/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RT3, Exim 4, Apache, etc</title>
		<link>http://alex.mamchenkov.net/2009/02/23/rt3-exim-4-apache-etc/</link>
		<comments>http://alex.mamchenkov.net/2009/02/23/rt3-exim-4-apache-etc/#comments</comments>
		<pubDate>Mon, 23 Feb 2009 10:05:45 +0000</pubDate>
		<dc:creator>Alexander Mamchenkov</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://alex.mamchenkov.net/?p=281</guid>
		<description><![CDATA[There is an annoying problem with RT3 sending emails through exim are shown in outlook as being from apache@your-domain.com, istead of the email assigned to the queue in RT (like support@your-domain.com).
To fix this boolshit:
- add a line trusted_users: apache into exim config (you might need to replace apache with whatever user apache is running under)
- [...]]]></description>
			<content:encoded><![CDATA[<p>There is an annoying problem with RT3 sending emails through exim are shown in outlook as being from apache@your-domain.com, istead of the email assigned to the queue in RT (like support@your-domain.com).</p>
<p>To fix this boolshit:</p>
<p>- add a line <em>trusted_users: apache</em> into exim config (you might need to replace apache with whatever user apache is running under)</p>
<p>- add a line <em>apache@your-domain.com &#8220;${if !eq {$header_From:}{}{$header_sender:$header_From:}fail}&#8221; Fs</em> in the rewrite section of exim config (adjust apache@your-domain.com to whatever fits you)</p>
<p>- restart/reload exim</p>]]></content:encoded>
			<wfw:commentRss>http://alex.mamchenkov.net/2009/02/23/rt3-exim-4-apache-etc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Car</title>
		<link>http://alex.mamchenkov.net/2008/08/11/new-car/</link>
		<comments>http://alex.mamchenkov.net/2008/08/11/new-car/#comments</comments>
		<pubDate>Mon, 11 Aug 2008 12:54:03 +0000</pubDate>
		<dc:creator>Alexander Mamchenkov</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://alex.mamchenkov.net/?p=279</guid>
		<description><![CDATA[Was thinking about buying myself a new car for a while and finally decided to, so after some small research of available options I got myself a Suzuki SX4. Took it for ride last weekend to Akamas &#8211; great car. Pics available here and here
BTW, this is 4&#215;4 version of the car, what makes it [...]]]></description>
			<content:encoded><![CDATA[<p>Was thinking about buying myself a new car for a while and finally decided to, so after some small research of available options I got myself a Suzuki SX4. Took it for ride last weekend to Akamas &#8211; great car. Pics available <a href="http://www.flickr.com/photos/alex_mamchenkov/sets/72157606513847895/" target="_blank">here</a> and <a href="http://www.flickr.com/photos/alex_mamchenkov/sets/72157606519602965/" target="_blank">here</a></p>
<p><acronym title="By The Way">BTW</acronym>, this is 4&#215;4 version of the car, what makes it possible for me to go further than just normal roads :)</p>]]></content:encoded>
			<wfw:commentRss>http://alex.mamchenkov.net/2008/08/11/new-car/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Upgrade went fine</title>
		<link>http://alex.mamchenkov.net/2008/04/26/upgrade-went-fine/</link>
		<comments>http://alex.mamchenkov.net/2008/04/26/upgrade-went-fine/#comments</comments>
		<pubDate>Sat, 26 Apr 2008 10:06:40 +0000</pubDate>
		<dc:creator>Alexander Mamchenkov</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Site News]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://alex.mamchenkov.net/?p=277</guid>
		<description><![CDATA[It seems that the upgrade of WordPress went fine. Now I have the latest version of WP. Also upgrade all plugins and did some minor cleanup (like removing disabled plugins and similar).
If you will notice any problems here, please let me know.]]></description>
			<content:encoded><![CDATA[<p>It seems that the upgrade of WordPress went fine. Now I have the latest version of WP. Also upgrade all plugins and did some minor cleanup (like removing disabled plugins and similar).</p>
<p>If you will notice any problems here, please let me know.</p>]]></content:encoded>
			<wfw:commentRss>http://alex.mamchenkov.net/2008/04/26/upgrade-went-fine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Going for WP upgrade</title>
		<link>http://alex.mamchenkov.net/2008/04/26/going-for-wp-upgrade/</link>
		<comments>http://alex.mamchenkov.net/2008/04/26/going-for-wp-upgrade/#comments</comments>
		<pubDate>Sat, 26 Apr 2008 09:17:58 +0000</pubDate>
		<dc:creator>Alexander Mamchenkov</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://alex.mamchenkov.net/2008/04/26/going-for-wp-upgrade/</guid>
		<description><![CDATA[It&#8217;s been a while I upgraded my WordPress installation, so I think it&#8217;s time now. If you will see any problems on my blog, know &#8211; I am upgrading now )))
Hopefully will go ok and in few hours I will have all done.]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a while I upgraded my WordPress installation, so I think it&#8217;s time now. If you will see any problems on my blog, know &#8211; I am upgrading now )))</p>
<p>Hopefully will go ok and in few hours I will have all done.</p>]]></content:encoded>
			<wfw:commentRss>http://alex.mamchenkov.net/2008/04/26/going-for-wp-upgrade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
