<?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>TECH.kulish.com</title>
	<atom:link href="http://tech.kulish.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://tech.kulish.com</link>
	<description>Technical Goulash</description>
	<lastBuildDate>Wed, 18 Apr 2012 12:40:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>VZ HTC Incredible Bypass Activation</title>
		<link>http://tech.kulish.com/2012/02/18/vz-htz-incredible-bypass-activation/</link>
		<comments>http://tech.kulish.com/2012/02/18/vz-htz-incredible-bypass-activation/#comments</comments>
		<pubDate>Sat, 18 Feb 2012 17:43:24 +0000</pubDate>
		<dc:creator>Null</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Change Mobile Directory]]></category>
		<category><![CDATA[support]]></category>
		<category><![CDATA[Tap Menu]]></category>

		<guid isPermaLink="false">http://tech.kulish.com/?p=505</guid>
		<description><![CDATA[1. Select emergency call and dial ##778. 2. Select edit and enter service password 000000. 3. Select NAM Settings. 4. Change Mobile Directory number to 0000000000 (Ten digits). 5. Change MIN1 to 0000000 (Seven digits). 6. Change Mobile Country Code to 000 (Three digits). 7. Tap &#8230; <a href="http://tech.kulish.com/2012/02/18/vz-htz-incredible-bypass-activation/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>1. Select emergency call and dial ##778.<br />
2. Select edit and enter service password 000000.<br />
3. Select NAM Settings.<br />
4. Change <span style="text-decoration: underline;">Mobile Directory</span> number to 0000000000 (Ten digits).<br />
5. Change<span style="text-decoration: underline;"> MIN1</span> to 0000000 (Seven digits).<br />
6. Change <span style="text-decoration: underline;">Mobile Country Code</span> to 000 (Three digits).<br />
7. <strong>Tap Menu</strong> and commit changes.<br />
8. The phone will auto reboot in 10 seconds.</p>
<p>I modified step 7 to be more clear from a forum post at:</p>
<p><a href="http://androidforums.com/incredible-support-troubleshooting/106652-bypassing-activation-screen-no-service-available.html#post990713">http://androidforums.com/incredible-support-troubleshooting/106652-bypassing-activation-screen-no-service-available.html#post990713</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tech.kulish.com/2012/02/18/vz-htz-incredible-bypass-activation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Home Storage: Increasing Filesystem Size</title>
		<link>http://tech.kulish.com/2012/02/16/home-storage-increasing-filesystem-size/</link>
		<comments>http://tech.kulish.com/2012/02/16/home-storage-increasing-filesystem-size/#comments</comments>
		<pubDate>Fri, 17 Feb 2012 00:48:46 +0000</pubDate>
		<dc:creator>Null</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[backup]]></category>

		<guid isPermaLink="false">http://tech.kulish.com/?p=486</guid>
		<description><![CDATA[Extending my backup volume group, logical volume and filesystem on both NASes. vgdisplay &#8212; Volume group &#8212; VG Name hcst002 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 &#8230; <a href="http://tech.kulish.com/2012/02/16/home-storage-increasing-filesystem-size/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Extending my backup volume group, logical volume and filesystem on both NASes.</p>
<p>vgdisplay</p>
<blockquote><p>&#8212; Volume group &#8212;<br />
VG Name hcst002<br />
System ID<br />
Format lvm2<br />
Metadata Areas 1<br />
Metadata Sequence No 3<br />
VG Access read/write<br />
VG Status resizable<br />
MAX LV 0<br />
Cur LV 2<br />
Open LV 2<br />
Max PV 0<br />
Cur PV 1<br />
Act PV 1<br />
VG Size 465.52 GiB<br />
PE Size 4.00 MiB<br />
Total PE 119173<br />
Alloc PE / Size 119173 / 465.52 GiB<br />
Free PE / Size 0 / 0<br />
VG UUID 7aaDWJ-6go0-nSLQ-3Hwa-FdJo-0g9q-3ZbW71</p>
<p>&#8212; Volume group &#8212;<br />
VG Name raid5_vg<br />
System ID<br />
Format lvm2<br />
Metadata Areas 1<br />
Metadata Sequence No 14<br />
VG Access read/write<br />
VG Status resizable<br />
MAX LV 0<br />
Cur LV 5<br />
Open LV 5<br />
Max PV 0<br />
Cur PV 1<br />
Act PV 1<br />
VG Size 5.46 TiB<br />
PE Size 4.00 MiB<br />
Total PE 1430793<br />
Alloc PE / Size 412160 / 1.57 TiB<br />
Free PE / Size 1018633 / 3.89 TiB<br />
VG UUID YvllV4-32bA-uBII-orNY-40RK-eIYF-csNooE</p></blockquote>
<p>It&#8217;s in the raid5VG</p>
<p>lvdisplay</p>
<blockquote><p>&#8212; Logical volume &#8212;<br />
LV Name /dev/hcst002/root<br />
VG Name hcst002<br />
LV UUID 1w8LwA-FDHw-aclD-SLfw-WkGf-GHNH-1t65ct<br />
LV Write Access read/write<br />
LV Status available<br />
# open 1<br />
LV Size 463.67 GiB<br />
Current LE 118699<br />
Segments 1<br />
Allocation inherit<br />
Read ahead sectors auto<br />
- currently set to 256<br />
Block device 253:0</p>
<p>&#8212; Logical volume &#8212;<br />
LV Name /dev/hcst002/swap_1<br />
VG Name hcst002<br />
LV UUID 71T2Lx-F4dV-xCOC-TWNJ-2X5G-qFUm-HEp0Tq<br />
LV Write Access read/write<br />
LV Status available<br />
# open 1<br />
LV Size 1.85 GiB<br />
Current LE 474<br />
Segments 1<br />
Allocation inherit<br />
Read ahead sectors auto<br />
- currently set to 256<br />
Block device 253:1</p>
<p>&#8212; Logical volume &#8212;<br />
LV Name /dev/raid5_vg/backup_lv<br />
VG Name raid5_vg<br />
LV UUID gnwkgv-NeOb-KPqd-RfCz-HFyp-sghl-9wTeT5<br />
LV Write Access read/write<br />
LV Status available<br />
# open 1<br />
LV Size 40.00 GiB<br />
Current LE 10240<br />
Segments 3<br />
Allocation inherit<br />
Read ahead sectors auto<br />
- currently set to 768<br />
Block device 253:2</p>
<p>&#8212; Logical volume &#8212;<br />
LV Name /dev/raid5_vg/iscsi_lv<br />
VG Name raid5_vg<br />
LV UUID UxabXT-pnsM-dUGg-7CeX-qR02-nlmD-ElHQCm<br />
LV Write Access read/write<br />
LV Status available<br />
# open 1<br />
LV Size 50.00 GiB<br />
Current LE 12800<br />
Segments 1<br />
Allocation inherit<br />
Read ahead sectors auto<br />
- currently set to 768<br />
Block device 253:3</p>
<p>&#8212; Logical volume &#8212;<br />
LV Name /dev/raid5_vg/media_lv<br />
VG Name raid5_vg<br />
LV UUID RHs90J-3KzU-Yt6g-TxiK-Na7K-4vUU-a4spaK<br />
LV Write Access read/write<br />
LV Status available<br />
# open 1<br />
LV Size 1.42 TiB<br />
Current LE 371200<br />
Segments 3<br />
Allocation inherit<br />
Read ahead sectors auto<br />
- currently set to 768<br />
Block device 253:4</p>
<p>&#8212; Logical volume &#8212;<br />
LV Name /dev/raid5_vg/common_lv<br />
VG Name raid5_vg<br />
LV UUID wZdWZI-44wi-MJjn-XF0A-Lq1V-XnWp-w8DtVf<br />
LV Write Access read/write<br />
LV Status available<br />
# open 1<br />
LV Size 10.00 GiB<br />
Current LE 2560<br />
Segments 1<br />
Allocation inherit<br />
Read ahead sectors auto<br />
- currently set to 768<br />
Block device 253:5</p>
<p>&#8212; Logical volume &#8212;<br />
LV Name /dev/raid5_vg/public_lv<br />
VG Name raid5_vg<br />
LV UUID j5Rfho-pHHB-Qxfv-DPZY-LgRm-Rwje-TH3UKc<br />
LV Write Access read/write<br />
LV Status available<br />
# open 1<br />
LV Size 60.00 GiB<br />
Current LE 15360<br />
Segments 2<br />
Allocation inherit<br />
Read ahead sectors auto<br />
- currently set to 768<br />
Block device 253:6</p></blockquote>
<p>lvextend -L+10G /dev/mapper/raid5_vg-backup_lv<br />
xfs_growfs /NAS/<strong>backup</strong></p>
<p>df -h .<br />
Filesystem Size Used Avail Use% Mounted on<br />
/dev/mapper/raid5_vg-backup_lv<br />
40G 30G 11G 75% /NAS/backup</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.kulish.com/2012/02/16/home-storage-increasing-filesystem-size/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debian Squeeze 802.3ad</title>
		<link>http://tech.kulish.com/2011/11/30/debian-squeeze-802-3ad/</link>
		<comments>http://tech.kulish.com/2011/11/30/debian-squeeze-802-3ad/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 00:12:38 +0000</pubDate>
		<dc:creator>Null</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[MAC]]></category>
		<category><![CDATA[RR]]></category>
		<category><![CDATA[support]]></category>
		<category><![CDATA[TCP]]></category>

		<guid isPermaLink="false">http://tech.kulish.com/?p=416</guid>
		<description><![CDATA[Debian Lenny and Squeeze 2x Realtek 8169 1x Reaktek 8169, 1x nForce Fisher-Price My First Managed Switch Testing: iptraf cat /proc/net/bonding/bond0 [1] mode=0 (balance-rr) Round-robin policy: Transmit packets in sequential order from the first available slave through the last. This &#8230; <a href="http://tech.kulish.com/2011/11/30/debian-squeeze-802-3ad/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Debian Lenny and Squeeze<br />
2x Realtek 8169<br />
1x Reaktek 8169, 1x nForce<br />
Fisher-Price <a href="http://www.dlink.com/products/?pid=759">My First Managed Switch</a><BR><BR></p>
<p>Testing:<br />
iptraf<br />
cat /proc/net/bonding/bond0<BR><BR></p>
<p>[1]<br />
mode=0 (balance-rr)<br />
Round-robin policy: Transmit packets in sequential order from the first available slave through the last. This mode provides load balancing and fault tolerance.<br />
<BR><br />
mode=1 (active-backup)<br />
One slave interface is active at any time. If one interface fails, another interface takes over the MAC address and becomes the active interface. Provides fault tolerance only. Doesn’t require special switch support.<br />
<BR><br />
mode=2 (balance-xor)<br />
Tranmissions are balanced across the slave interfaces based on ((source MAC) XOR (dest MAC)) modula slave count. The same slave is selected for each destination MAC. Provides load balancing and fault tolerance.<br />
<BR><br />
mode=3 (broadcast)<br />
Transmits everything on all slave interfaces. Provides fault tolerance.<br />
<BR><br />
<strong>mode=4 (802.3ad)</strong><br />
This is classic IEEE 802.3ad Dynamic link aggregation. This requires 802.3ad support in the switch and driver support for retrieving the speed and duplex of each slave.<br />
<BR><br />
mode=5 (balance-tlb)<br />
Adaptive Transmit Load Balancing. Incoming traffic is received on the active slave only, outgoing traffic is distributed according to the current load on each slave. Doesn’t require special switch support.<br />
<BR><br />
mode=6 (balance-alb)<br />
Adaptive Load Balancing &#8211; provides both transmit load balancing (TLB) and receive load balancing for IPv4 via ARP negotiation. Doesn’t require special switch support, but does require the ability to change the MAC address of a device while it is open.<br />
<BR><br />
[2]<br />
miimon<br />
Specifies the MII link monitoring frequency in milliseconds. This determines how often the link state of each slave is inspected for link failures. A value of zero disables MII link monitoring. A value of 100 is a good starting point. The use_carrier option, below, affects how the link state is determined. See the High Availability section for additional information. The default value is 0.<br />
<BR><br />
[3]<br />
bond-downdelay 200 : Set the time, t0 200 milliseconds, to wait before disabling a slave after a link failure has been detected. This option is only valid for the bond-miimon.<br />
<BR><br />
bond-updelay 200 : Set the time, to 200 milliseconds, to wait before enabling a slave after a link recovery has been detected. This option is only valid for the bond-miimon.<br />
<BR><br />
[4]<br />
J.A. Sullivan on the debian-user list writes:</p>
<blockquote><p>There are a couple of issues in bonding which can bite the unsuspecting (as they did me!). Round robin will load balance across multiple<br />
interfaces but can produce serious issues with managing out of order TCP<br />
packets. Thus, the performance gain decreases dramatically with the<br />
number of interfaces. In other words, 2 NICs in RR mode will not give 2x the performance nor 3 NICs 3x performance. I do not recall the exact<br />
numbers off the top of my head but averages are something like:<br />
2 NICs &#8211; 1.6x performance<br />
3 NICs &#8211; 1.9x performance<BR><BR></p>
<p>The other modes (other than failover) eliminate the out of order TCP<br />
problem but do so at a cost. All traffic for a single traffic flow goes<br />
across a single path. The most common way to identify a single traffic<br />
flow is matching source and destination MAC addresses. Some bonding algorithms allow matches on layer 3 or even layer 4 data but, if the switch through which they flow only supports MAC to MAC flow assignments, it will all devolve to matching MAC addresses anyway.<BR><BR></p>
<p>So what is the practical outcome using non-RR bonding? You have only one<br />
combination of source and destination MAC address for each socket, e.g.,<br />
if you are measuring a single FTP connection, there is only one<br />
combination of source and destination MAC address. Thus, no matter how<br />
many NICs you have, all the traffic will flow across one combination of<br />
NICs. You will see no performance improvement.<BR><BR></p>
<p>In fact, depending on how the MAC addresses are advertised from the<br />
systems with multiple NICs, all traffic between two systems may flow<br />
across the same pair of NICs even if there are multiple, different<br />
traffic streams.<BR><BR></p>
<p>On the other hand, if you are using bonding to provide a trunk carrying<br />
traffic from many different source and destination MAC address<br />
combinations, each separate stream will be limited to the maximum of the<br />
individual NICs but the aggregate throughput should increase almost<br />
linearly with the number of NICs. Hope that helps &#8211; John</p></blockquote>
<p><BR><br />
Resources:<br />
[1] http://www.howtoforge.com/nic-bonding-on-debian-lenny<br />
[2] http://www.linuxfoundation.org/collaborate/workgroups/networking/bonding<br />
[3] http://www.cyberciti.biz/tips/debian-ubuntu-teaming-aggregating-multiple-network-connections.html<br />
[4] http://comments.gmane.org/gmane.linux.debian.user/405553</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.kulish.com/2011/11/30/debian-squeeze-802-3ad/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>nginx+observium configuration</title>
		<link>http://tech.kulish.com/2011/11/30/nginxobservium-configuration/</link>
		<comments>http://tech.kulish.com/2011/11/30/nginxobservium-configuration/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 00:11:25 +0000</pubDate>
		<dc:creator>Null</dc:creator>
				<category><![CDATA[Daemons]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[kulish]]></category>

		<guid isPermaLink="false">http://tech.kulish.com/?p=411</guid>
		<description><![CDATA[Update to index.php in observium to work with nginx. Change from: $_SERVER['PATH_INFO'] = (isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : $_SERVER['ORIG_PATH_INFO']); Change to: $_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI']; nginx site configuration: server { listen 80; server_name hostname.kulish.com; access_log /var/log/nginx/hostname.kulish.com.acc.log; error_log /var/log/nginx/hostname.kulish.com.err.log; root /www/observium/html; index index.php; &#8230; <a href="http://tech.kulish.com/2011/11/30/nginxobservium-configuration/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Update to index.php in observium to work with nginx.</p>
<p>Change from:</p>
<blockquote><p>$_SERVER['PATH_INFO'] = (isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : $_SERVER['ORIG_PATH_INFO']);</p></blockquote>
<p>Change to:</p>
<blockquote><p>$_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'];</p></blockquote>
<p>nginx site configuration:</p>
<blockquote><p>server {<br />
listen 80;<br />
server_name hostname.kulish.com;</p>
<p>access_log /var/log/nginx/hostname.kulish.com.acc.log;<br />
error_log /var/log/nginx/hostname.kulish.com.err.log;</p>
<p>root /www/observium/html;<br />
index index.php;</p>
<p>error_page 500 502 503 504 /50x.html;<br />
location = /50x.html {<br />
root /usr/share/nginx/www;<br />
}</p>
<p>location / {<br />
try_files $uri $uri/ @observium;<br />
}</p>
<p>location @observium {<br />
rewrite ^(.+)$ /index.php/$1/ last;<br />
}</p>
<p>}</p>
<p># General php settings<br />
include php.conf;</p>
<p># We need to exclude robots.txt specifically<br />
include drop.conf;</p></blockquote>
<p>php.conf contents:</p>
<blockquote><p>location ~ \.php {<br />
fastcgi_param QUERY_STRING $query_string;<br />
fastcgi_param REQUEST_METHOD $request_method;<br />
fastcgi_param CONTENT_TYPE $content_type;<br />
fastcgi_param CONTENT_LENGTH $content_length;</p>
<p>fastcgi_param SCRIPT_NAME $fastcgi_script_name;<br />
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;<br />
fastcgi_param REQUEST_URI $request_uri;<br />
fastcgi_param DOCUMENT_URI $document_uri;<br />
fastcgi_param DOCUMENT_ROOT $document_root;<br />
fastcgi_param SERVER_PROTOCOL $server_protocol;</p>
<p>fastcgi_param GATEWAY_INTERFACE CGI/1.1;<br />
fastcgi_param SERVER_SOFTWARE nginx;</p>
<p>fastcgi_param REMOTE_ADDR $remote_addr;<br />
fastcgi_param REMOTE_PORT $remote_port;<br />
fastcgi_param SERVER_ADDR $server_addr;<br />
fastcgi_param SERVER_PORT $server_port;<br />
fastcgi_param SERVER_NAME $server_name;</p>
<p>fastcgi_pass unix:/var/run/php5-fpm/php5-fpm.sock;<br />
}</p></blockquote>
<p>I am connecting to a php5-fpm socket to avoid TCP overhead.</p>
<p>drop.conf contents:</p>
<blockquote><p># Drop from logging and accidental access</p>
<p>location = /favicon.ico { access_log off; log_not_found off; }<br />
location ~ /\. { access_log off; log_not_found off; deny all; }<br />
location ~ ~$ { access_log off; log_not_found off; deny all; }</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://tech.kulish.com/2011/11/30/nginxobservium-configuration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>observium: irc.php</title>
		<link>http://tech.kulish.com/paste/c5/</link>
		<comments>http://tech.kulish.com/paste/c5/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 23:14:06 +0000</pubDate>
		<dc:creator>Null</dc:creator>
		
		<guid isPermaLink="false">http://tech.kulish.com/?post_type=nk_paste&#038;p=437</guid>
		<description><![CDATA[#!/usr/bin/env php # port_info is broken. always reports same values no matter host selected &#60;?php # Disable annoying messages... well... all messages actually :) error_reporting(0); include_once(&#34;includes/defaults.inc.php&#34;); include_once(&#34;config.php&#34;); include_once(&#34;includes/functions.php&#34;); include_once(&#34;includes/discovery/functions.inc.php&#34;); include_once('Net/SmartIRC.php'); mysql_close(); # Redirect to /dev/null if you aren't using screen &#8230; <a href="http://tech.kulish.com/paste/c5/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<pre>#!/usr/bin/env php

# port_info is broken.  always reports same values no matter host selected

&lt;?php

# Disable annoying messages... well... all messages actually :)
error_reporting(0);

include_once(&quot;includes/defaults.inc.php&quot;);
include_once(&quot;config.php&quot;);
include_once(&quot;includes/functions.php&quot;);
include_once(&quot;includes/discovery/functions.inc.php&quot;);

include_once('Net/SmartIRC.php');

mysql_close();

# Redirect to /dev/null if you aren't using screen to keep tabs
echo &quot;Observer Bot Starting ...\n&quot;;
echo &quot;\n&quot;;
echo &quot;Timestamp         Command\n&quot;;
echo &quot;----------------- ------- \n&quot;;

class observiumbot
{

###
# Get HELP!
###
  function help_info(&amp;$irc, &amp;$data)
  {
    global $config;

    $irc-&gt;message(SMARTIRC_TYPE_CHANNEL, $data-&gt;channel, &quot;Commands: :help, :log, :status, :version, :down, :port, :device, :listdevices&quot;);

    echo date(&quot;m-d-y H:i:s &quot;);
    echo &quot;HELP\n&quot;;

    mysql_close();
  }

###
# Get status on !version
###
  function version_info(&amp;$irc, &amp;$data)
  {
    global $config;

    $irc-&gt;message(SMARTIRC_TYPE_CHANNEL, $data-&gt;channel, &quot;Observium Version &quot; . $config['version']);

    echo date(&quot;m-d-y H:i:s &quot;);
    echo &quot;VERSION\t\t&quot;. $config['version'] . &quot;\n&quot;;

    mysql_close();
  }

###
# Get last eventlog entry
###
  function log_info(&amp;$irc, &amp;$data)
  {
    global $config;

    mysql_connect($config['db_host'],$config['db_user'],$config['db_pass']);
    mysql_select_db($config['db_name']);

    $device = dbFetchRow(&quot;SELECT `event_id`,`host`,`datetime`,`message`,`type` FROM `eventlog` ORDER BY `event_id` DESC LIMIT 1&quot;);
    $host = $device['host'];
    $hostid = dbFetchRow(&quot;SELECT `hostname` FROM `devices` WHERE `device_id` = $host&quot;);

    $irc-&gt;message(SMARTIRC_TYPE_CHANNEL, $data-&gt;channel, $device['event_id'] .&quot; &quot;. $hostid['hostname'] .&quot; &quot;. $device['datetime'] .&quot; &quot;. $device['message'] .&quot; &quot;. $device['type']);

    echo date(&quot;m-d-y H:i:s &quot;);
    echo &quot;LOG\n&quot;;

    mysql_close();
  }

###
# Get status on !down devices
###
  function down_info(&amp;$irc, &amp;$data)
  {
    global $config;

    mysql_connect($config['db_host'],$config['db_user'],$config['db_pass']);
    mysql_select_db($config['db_name']);

    foreach (dbFetchRows(&quot;SELECT * FROM `devices` where status=0&quot;) as $device)
    {
      $message .= $sep . $device['hostname'];
      $sep = &quot;, &quot;;
    }
    $irc-&gt;message(SMARTIRC_TYPE_CHANNEL, $data-&gt;channel, $message);

    mysql_close();

    echo date(&quot;m-d-y H:i:s &quot;);
    echo &quot;DOWN\n&quot;;
  }

###
# Get status on !device &lt;hostname&gt;
###
  function device_info(&amp;$irc, &amp;$data)
  {
    global $config;

    $hostname = $data-&gt;messageex[1];

    mysql_connect($config['db_host'],$config['db_user'],$config['db_pass']);
    mysql_select_db($config['db_name']);

    $device = dbFetchRow(&quot;SELECT * FROM `devices` WHERE `hostname` = ?&quot;,array($hostname));

    mysql_close();

    if ($device['status'] == 1) { $status = &quot;Up &quot; . formatUptime($device['uptime'] . &quot; &quot;); } else { $status = &quot;Down &quot;; }
    if ($device['ignore']) { $status = &quot;*Ignored*&quot;; }
    if ($device['disabled']) { $status = &quot;*Disabled*&quot;; }

    $irc-&gt;message(SMARTIRC_TYPE_CHANNEL, $data-&gt;channel, $device['os'] . &quot; &quot; . $device['version'] . &quot; &quot; .
      $device['features'] . &quot; &quot; . $status);

    echo date(&quot;m-d-y H:i:s &quot;);
    echo &quot;DEVICE\t\t&quot;. $device['hostname'].&quot;\n&quot;;
  }

###
# Get status on !port &lt;hostname port&gt;
###
  function port_info(&amp;$irc, &amp;$data)
  {
    global $config;

    $hostname = $data-&gt;messageex[1];
    $ifname = $data-&gt;messageex[2];

    mysql_connect($config['db_host'],$config['db_user'],$config['db_pass']);
    mysql_select_db($config['db_name']);

    $device = dbFetchRow(&quot;SELECT * FROM `devices` WHERE `hostname` = ?&quot;,array($device));
    $port   = dbFetchRow(&quot;SELECT * FROM `ports` WHERE `ifName` = ? OR `ifDescr` = ? AND device_id = ?&quot;, array($ifname, $ifname, $device['device_id']));

    mysql_close();

    $bps_in = formatRates($port['ifInOctets_rate']);
    $bps_out = formatRates($port['ifOutOctets_rate']);
    $pps_in = format_bi($port['ifInUcastPkts_rate']);
    $pps_out = format_bi($port['ifOutUcastPkts_rate']);

    $irc-&gt;message(SMARTIRC_TYPE_CHANNEL, $data-&gt;channel, $port['ifAdminStatus'] . &quot;/&quot; . $port['ifOperStatus'] . &quot; &quot; .
      $bps_in. &quot; &gt; bps &gt; &quot; . $bps_out . &quot; | &quot; . $pps_in. &quot;pps &gt; PPS &gt; &quot; . $pps_out .&quot;pps&quot;);

    echo date(&quot;m-d-y H:i:s &quot;);
    echo &quot;PORT\t\t\t&quot; . $hostname . &quot;\t&quot;. $ifname . &quot;\n&quot;;
  }

###
# !listdevices lists all devices
###
  function list_devices(&amp;$irc, &amp;$data)
  {
    global $config;

    unset ($message);

    mysql_connect($config['db_host'],$config['db_user'],$config['db_pass']);
    mysql_select_db($config['db_name']);

    foreach (dbFetchRows(&quot;SELECT `hostname` FROM `devices`&quot;) as $device)
    {
      $message .= $sep . $device['hostname'];
      $sep = &quot;, &quot;;
    }

    mysql_close();

    $irc-&gt;message(SMARTIRC_TYPE_CHANNEL, $data-&gt;channel, $message);
    unset($sep);

    echo date(&quot;m-d-y H:i:s &quot;);
    echo &quot;LISTDEVICES\n&quot;;
  }

###
# !status &lt;dev prt srv&gt; gives overall status
###
  function status_info(&amp;$irc, &amp;$data)
  {
    global $config;

    $statustype = $data-&gt;messageex[1];

    mysql_connect($config['db_host'],$config['db_user'],$config['db_pass']);
    mysql_select_db($config['db_name']);

    if ($statustype == &quot;dev&quot;)
    {
      $devcount = array_pop(dbFetchRow(&quot;SELECT count(*) FROM devices&quot;));
      $devup = array_pop(dbFetchRow(&quot;SELECT count(*) FROM devices  WHERE status = '1' AND `ignore` = '0'&quot;));
      $devdown = array_pop(dbFetchRow(&quot;SELECT count(*) FROM devices WHERE status = '0' AND `ignore` = '0'&quot;));
      $devign = array_pop(dbFetchRow(&quot;SELECT count(*) FROM devices WHERE `ignore` = '1'&quot;));
      $devdis = array_pop(dbFetchRow(&quot;SELECT count(*) FROM devices WHERE `disabled` = '1'&quot;));
      $irc-&gt;message(SMARTIRC_TYPE_CHANNEL, $data-&gt;channel, &quot;Devices: &quot; .$devcount . &quot; (&quot; .$devup . &quot; up, &quot; .$devdown . &quot; down, &quot; .$devign . &quot; ignored, &quot; .$devdis . &quot; disabled&quot; . &quot;)&quot;);
    } else if ($statustype == &quot;prt&quot;) {
      $prtcount = array_pop(dbFetchRow(&quot;SELECT count(*) FROM ports&quot;));
      $prtup = array_pop(dbFetchRow(&quot;SELECT count(*) FROM ports AS I, devices AS D  WHERE I.ifOperStatus = 'up' AND I.ignore = '0' AND I.device_id = D.device_id AND D.ignore = '0'&quot;));
      $prtdown = array_pop(dbFetchRow(&quot;SELECT count(*) FROM ports AS I, devices AS D WHERE I.ifOperStatus = 'down' AND I.ifAdminStatus = 'up' AND I.ignore = '0' AND D.device_id = I.device_id AND D.ignore = '0'&quot;));
      $prtsht = array_pop(dbFetchRow(&quot;SELECT count(*) FROM ports AS I, devices AS D WHERE I.ifAdminStatus = 'down' AND I.ignore = '0' AND D.device_id = I.device_id AND D.ignore = '0'&quot;));
      $prtign = array_pop(dbFetchRow(&quot;SELECT count(*) FROM ports AS I, devices AS D WHERE D.device_id = I.device_id AND (I.ignore = '1' OR D.ignore = '1')&quot;));
      $prterr = array_pop(dbFetchRow(&quot;SELECT count(*) FROM ports AS I, devices AS D WHERE D.device_id = I.device_id AND (I.ignore = '0' OR D.ignore = '0') AND (I.ifInErrors_delta &gt; '0' OR I.ifOutErrors_delta &gt; '0')&quot;));
      $irc-&gt;message(SMARTIRC_TYPE_CHANNEL, $data-&gt;channel, &quot;Ports: &quot; .$prtcount . &quot; (&quot; .$prtup . &quot; up, &quot; .$prtdown . &quot; down, &quot; .$prtign . &quot; ignored, &quot; .$prtsht . &quot; shutdown&quot; . &quot;)&quot;);
    } else if ($statustype == &quot;srv&quot;) {
      $srvcount = array_pop(dbFetchRow(&quot;SELECT count(service_id) FROM services&quot;));
      $srvup = array_pop(dbFetchRow(&quot;SELECT count(service_id) FROM services  WHERE service_status = '1' AND service_ignore ='0'&quot;));
      $srvdown = array_pop(dbFetchRow(&quot;SELECT count(service_id) FROM services WHERE service_status = '0' AND service_ignore = '0'&quot;));
      $srvign = array_pop(dbFetchRow(&quot;SELECT count(service_id) FROM services WHERE service_ignore = '1'&quot;));
      $srvdis = array_pop(dbFetchRow(&quot;SELECT count(service_id) FROM services WHERE service_disabled = '1'&quot;));
      $irc-&gt;message(SMARTIRC_TYPE_CHANNEL, $data-&gt;channel, &quot;Services: &quot; .$srvcount . &quot; (&quot; .$srvup . &quot; up, &quot; .$srvdown . &quot; down, &quot; .$srvign . &quot; ignored, &quot; .$srvdis . &quot; disabled&quot; . &quot;)&quot;);
    } else {
        $irc-&gt;message(SMARTIRC_TYPE_CHANNEL, $data-&gt;channel, &quot;Error: STATUS requires one of the following &lt;dev prt srv&gt;&quot;); }

    mysql_close();

    echo date(&quot;m-d-y H:i:s &quot;);
    echo &quot;STATUS\t\t$statustype\n&quot;;
  }
}

$bot = &amp;new observiumbot();
$irc = &amp;new Net_SmartIRC();
$irc-&gt;setUseSockets(TRUE);

$irc-&gt;registerActionhandler(SMARTIRC_TYPE_CHANNEL, ':listdevices', $bot, 'list_devices');
$irc-&gt;registerActionhandler(SMARTIRC_TYPE_CHANNEL, ':device', $bot, 'device_info');
$irc-&gt;registerActionhandler(SMARTIRC_TYPE_CHANNEL, ':port', $bot, 'port_info');
$irc-&gt;registerActionhandler(SMARTIRC_TYPE_CHANNEL, ':down', $bot, 'down_info');
$irc-&gt;registerActionhandler(SMARTIRC_TYPE_CHANNEL, ':version', $bot, 'version_info');
$irc-&gt;registerActionhandler(SMARTIRC_TYPE_CHANNEL, ':status', $bot, 'status_info');
$irc-&gt;registerActionhandler(SMARTIRC_TYPE_CHANNEL, ':log', $bot, 'log_info');
$irc-&gt;registerActionhandler(SMARTIRC_TYPE_CHANNEL, ':help', $bot, 'help_info');

$irc-&gt;connect($config['irc_host'], $config['irc_port']);
$irc-&gt;login($config['irc_nick'], 'Observium Bot', 0, $config['irc_nick']);
$irc-&gt;join($config['irc_chan']);
$irc-&gt;listen();
$irc-&gt;disconnect();

?&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://tech.kulish.com/paste/c5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache to Nginx Migration</title>
		<link>http://tech.kulish.com/2011/11/19/apache-to-nginx-migration/</link>
		<comments>http://tech.kulish.com/2011/11/19/apache-to-nginx-migration/#comments</comments>
		<pubDate>Sat, 19 Nov 2011 17:20:25 +0000</pubDate>
		<dc:creator>Null</dc:creator>
				<category><![CDATA[Daemons]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[kulish]]></category>

		<guid isPermaLink="false">http://tech.kulish.com/?p=352</guid>
		<description><![CDATA[Status update of the web engine migration. All items are pending further testing. Tech.kulish.com Fully functional (including links to other/outside domains) Cars.kulish.com Theme issues but otherwise functional I am currently looking at new themes for this site Fully functional Family.kulish.com &#8230; <a href="http://tech.kulish.com/2011/11/19/apache-to-nginx-migration/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><center><br />
<a href="http://wiki.nginx.org"><br />
<img src="http://gallery.kulish.com/main.php?g2_view=core.DownloadItem&#038;g2_itemId=4846&#038;g2_serialNumber=1" title="Apache to Nginx Migration" alt=" Apache to Nginx Migration" /><br />
</a><br />
</center></p>
<p>Status update of the web engine migration.<br />
All items are pending further testing.<br />
<BR></p>
<p><strong><font color=cyan>Tech.kulish.com</font></strong><br />
Fully functional (including links to other/outside domains)</p>
<p><span id="more-352"></span><br />
<strong><font color=cyan>Cars.kulish.com</font></strong><br />
<del datetime="2011-11-22T14:13:39+00:00">Theme issues but otherwise functional<br />
I am currently looking at new themes for this site</del><br />
Fully functional<br />
<BR></p>
<p><strong><font color=cyan>Family.kulish.com</font></strong><br />
Fully functional<br />
<BR></p>
<p><strong><font color=cyan>Gallery.kulish.com</font></strong><br />
Working except HTTPS redirects to HTTP because of this&#8230;</p>
<blockquote><p><font color=red><br />
    <strong>setConfig(&#8216;baseUri&#8217;, &#8216;http://gallery.kulish.com/main.php&#8217;)</strong><br />
</font>
</p></blockquote>
<p><BR></p>
<p><strong><font color=cyan>Webmail.kulish.com</font></strong><br />
Fully functional, permanent HTTPS redirect in place<br />
<BR></p>
<p><strong><font color=cyan>Mediaserv.kulish.com</font></strong><br />
Fully functional<br />
<BR></p>
<p><strong><font color=cyan>Monitoring</font></strong><br />
My monitoring solution is collecting data <del datetime="2011-11-21T23:45:25+00:00">but display is broken</del>.<br />
<del datetime="2011-11-21T23:45:25+00:00">HTTP links do not work, just reloads the overview regardless of URL</del><br />
HTTPS links do not work, throws an error on every click</p>
<blockquote><p><font color=red><br />
 <strong> 400 Bad Request<br />
  The plain HTTP request was sent to HTTPS port</strong><br />
</font>
</p></blockquote>
<p><BR></p>
<p><strong><font color=cyan>Cloud</font></strong><br />
Fully functional, permanent HTTPS redirect in place<br />
<BR></p>
<p><strong><font color=cyan>Benchmarks</font></strong><br />
Benchmarks reflect real world performance but I&#8217;ve ran it locally against both engines.<br />
Command used: ab -n 1000 -c 5 http://tech.kulish.com/index.php<br />
<BR><br />
Short version.<br />
<font color=cyan>APACHE:</font><br />
Time taken for tests:   195.169 seconds<br />
Requests per second:    5.12 [#/sec] (mean)<br />
<BR><br />
Connect:        0    0   2.8      0      90<br />
Processing:   318  973 2219.7    595   27929<br />
Waiting:      318  965 2209.7    591   27929<br />
Total:        319  974 2219.9    595   27929<br />
<BR><br />
<font color=cyan>NGINX:</font><br />
Time taken for tests:   109.310 seconds<br />
Requests per second:    9.15 [#/sec] (mean)<br />
<BR><br />
Connect:        0    0   0.6      0      10<br />
Processing:   280  546  80.1    543    1022<br />
Waiting:      280  546  80.1    543    1022<br />
Total:        280  546  80.0    543    1022<br />
<BR><br />
Long version.<br />
<font color=cyan>APACHE:</font><br />
This is ApacheBench, Version 2.3 <$Revision: 655654 $><br />
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/<br />
Licensed to The Apache Software Foundation, http://www.apache.org/<br />
<BR><br />
Benchmarking tech.kulish.com (be patient)<br />
Completed 100 requests<br />
Completed 200 requests<br />
Completed 300 requests<br />
Completed 400 requests<br />
Completed 500 requests<br />
Completed 600 requests<br />
Completed 700 requests<br />
Completed 800 requests<br />
Completed 900 requests<br />
Completed 1000 requests<br />
Finished 1000 requests<br />
<BR></p>
<p>Server Software:        Apache/2.2.16<br />
Server Hostname:        tech.kulish.com<br />
Server Port:            80<br />
<BR><br />
Document Path:          /index.php<br />
Document Length:        0 bytes<br />
<BR><br />
Concurrency Level:      5<br />
Time taken for tests:   195.169 seconds<br />
Complete requests:      1000<br />
Failed requests:        0<br />
Write errors:           0<br />
Non-2xx responses:      1000<br />
Total transferred:      474000 bytes<br />
HTML transferred:       0 bytes<br />
Requests per second:    5.12 [#/sec] (mean)<br />
Time per request:       975.847 [ms] (mean)<br />
Time per request:       195.169 [ms] (mean, across all concurrent requests)<br />
Transfer rate:          2.37 [Kbytes/sec] received<br />
<BR><br />
Connection Times (ms)<br />
              min  mean[+/-sd] median   max<br />
Connect:        0    0   2.8      0      90<br />
Processing:   318  973 2219.7    595   27929<br />
Waiting:      318  965 2209.7    591   27929<br />
Total:        319  974 2219.9    595   27929<br />
<BR><br />
Percentage of the requests served within a certain time (ms)<br />
  50%    595<br />
  66%    663<br />
  75%    715<br />
  80%    761<br />
  90%   1014<br />
  95%   1855<br />
  98%   4427<br />
  99%  15662<br />
 100%  27929 (longest request)<br />
<BR><BR><br />
<font color=cyan>NGINX:</font><br />
This is ApacheBench, Version 2.3 <$Revision: 655654 $><br />
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/<br />
Licensed to The Apache Software Foundation, http://www.apache.org/<br />
<BR><br />
Benchmarking tech.kulish.com (be patient)<br />
Completed 100 requests<br />
Completed 200 requests<br />
Completed 300 requests<br />
Completed 400 requests<br />
Completed 500 requests<br />
Completed 600 requests<br />
Completed 700 requests<br />
Completed 800 requests<br />
Completed 900 requests<br />
Completed 1000 requests<br />
Finished 1000 requests<br />
<BR></p>
<p>Server Software:        nginx/1.0.10<br />
Server Hostname:        tech.kulish.com<br />
Server Port:            80<br />
<BR><br />
Document Path:          /index.php<br />
Document Length:        0 bytes<br />
<BR><br />
Concurrency Level:      5<br />
Time taken for tests:   109.310 seconds<br />
Complete requests:      1000<br />
Failed requests:        0<br />
Write errors:           0<br />
Non-2xx responses:      1000<br />
Total transferred:      411000 bytes<br />
HTML transferred:       0 bytes<br />
Requests per second:    9.15 [#/sec] (mean)<br />
Time per request:       546.548 [ms] (mean)<br />
Time per request:       109.310 [ms] (mean, across all concurrent requests)<br />
Transfer rate:          3.67 [Kbytes/sec] received<br />
<BR><br />
Connection Times (ms)<br />
              min  mean[+/-sd] median   max<br />
Connect:        0    0   0.6      0      10<br />
Processing:   280  546  80.1    543    1022<br />
Waiting:      280  546  80.1    543    1022<br />
Total:        280  546  80.0    543    1022<br />
<BR><br />
Percentage of the requests served within a certain time (ms)<br />
  50%    543<br />
  66%    573<br />
  75%    592<br />
  80%    605<br />
  90%    641<br />
  95%    674<br />
  98%    735<br />
  99%    779<br />
 100%   1022 (longest request)</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.kulish.com/2011/11/19/apache-to-nginx-migration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SSH via KEY quit working</title>
		<link>http://tech.kulish.com/2011/10/05/ssh-via-key-quit-working/</link>
		<comments>http://tech.kulish.com/2011/10/05/ssh-via-key-quit-working/#comments</comments>
		<pubDate>Wed, 05 Oct 2011 13:34:12 +0000</pubDate>
		<dc:creator>Null</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[KEY]]></category>
		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">http://tech.kulish.com/?p=335</guid>
		<description><![CDATA[PROBLEM: Could not ssh to server via key (or password, only enabled for testing). RESOLUTION: After restarting the daemon, checking configs, copying the key again, etc.. I found a strange permissions issue with the .ssh directory When I issued ls &#8230; <a href="http://tech.kulish.com/2011/10/05/ssh-via-key-quit-working/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>PROBLEM: Could not ssh to server via key (or password, only enabled for testing).<BR><BR></p>
<p>RESOLUTION: After restarting the daemon, checking configs, copying the key again, etc..<br />
I found a strange permissions issue with the .ssh directory<BR><BR></p>
<p>When I issued ls -la from the homedir, everything looks ok. </p>
<blockquote><p><code><br />
user@server:~ ls -la<br />
--SNIP--<br />
drwx------  2 user group  4096 Oct  5 07:58 .ssh<br />
--SNIP--<br />
</code></p></blockquote>
<p>Then I cd into .ssh and issue ls -la.  Note &#8220;..&#8221;<br />
It&#8217;s drw-rw-rw- and that&#8217;s not right (no pun intended).</p>
<blockquote><p><code><br />
cd .ssh<br />
user@server:~/.ssh ls -la<br />
total 12<br />
drwx------ 2 user group 4096 Oct  5 07:58 .<br />
drw-rw-rw- 7 user group 4096 Oct  5 08:04 ..<br />
-rw-r--r-- 1 user group  603 Oct  5 07:37 authorized_keys<br />
-rw-r--r-- 1 user group    0 Oct  5 07:38 known_hosts<br />
</code></p></blockquote>
<p>I fixed it by doing the following.</p>
<blockquote><p><code><br />
chmod 700 ..<br />
user@server:~/.ssh ls -la<br />
total 12<br />
drwx------ 2 user group 4096 Oct  5 07:58 .<br />
drwx------ 7 user group 4096 Oct  5 08:04 ..<br />
-rw-r--r-- 1 user group  603 Oct  5 07:37 authorized_keys<br />
-rw-r--r-- 1 user group    0 Oct  5 07:38 known_hosts<br />
</code></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://tech.kulish.com/2011/10/05/ssh-via-key-quit-working/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SSL Certs</title>
		<link>http://tech.kulish.com/2011/06/29/ssl-certs/</link>
		<comments>http://tech.kulish.com/2011/06/29/ssl-certs/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 15:26:17 +0000</pubDate>
		<dc:creator>Null</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tech.kulish.com/?p=330</guid>
		<description><![CDATA[All SSL Certs have been renewed at CA Cert.]]></description>
			<content:encoded><![CDATA[<p>All SSL Certs have been renewed at <a href="http://www.cacert.org">CA Cert</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.kulish.com/2011/06/29/ssl-certs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PSU Failure</title>
		<link>http://tech.kulish.com/2011/06/11/psu-failure/</link>
		<comments>http://tech.kulish.com/2011/06/11/psu-failure/#comments</comments>
		<pubDate>Sat, 11 Jun 2011 21:46:41 +0000</pubDate>
		<dc:creator>Null</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[PSU]]></category>
		<category><![CDATA[storage]]></category>

		<guid isPermaLink="false">http://tech.kulish.com/?p=328</guid>
		<description><![CDATA[We lost a PSU in one of our storage devices last night. Everything mirrored back up fine except for one filesystem which had to be restored from backup. Everything should be back up and running now.]]></description>
			<content:encoded><![CDATA[<p>We lost a <strong>PSU</strong> in one of our <strong>storage</strong> devices last night.<br />
Everything mirrored back up fine except for one filesystem which had to be restored from <strong>backup</strong>.</p>
<p>Everything should be back up and running now.</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.kulish.com/2011/06/11/psu-failure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Webmail Upgrade</title>
		<link>http://tech.kulish.com/2011/05/18/webmail-upgrade/</link>
		<comments>http://tech.kulish.com/2011/05/18/webmail-upgrade/#comments</comments>
		<pubDate>Thu, 19 May 2011 01:00:08 +0000</pubDate>
		<dc:creator>Null</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tech.kulish.com/?p=326</guid>
		<description><![CDATA[Webmail was upgraded to Roundcube v 0.5.2.]]></description>
			<content:encoded><![CDATA[<p>Webmail was upgraded to Roundcube v 0.5.2.</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.kulish.com/2011/05/18/webmail-upgrade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Served from: kulish.com @ 2012-05-20 11:32:14 by W3 Total Cache -->
