<?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>MuchTall.com</title>
	<atom:link href="http://muchtall.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://muchtall.com</link>
	<description>Wearing the labels with pride: Catholic, Conservative, Republican, American, Husband, Dad, Geek.</description>
	<lastBuildDate>Tue, 21 May 2013 05:25:38 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Routed OpenVPN HOWTO</title>
		<link>http://muchtall.com/2013/05/07/routed-openvpn-howto/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=routed-openvpn-howto</link>
		<comments>http://muchtall.com/2013/05/07/routed-openvpn-howto/#comments</comments>
		<pubDate>Tue, 07 May 2013 21:37:03 +0000</pubDate>
		<dc:creator>MuchTall</dc:creator>
				<category><![CDATA[HowTo's]]></category>
		<category><![CDATA[MuchTall's Linux Tips]]></category>

		<guid isPermaLink="false">http://muchtall.com/?p=515</guid>
		<description><![CDATA[<img src="http://muchtall.com/wp-content/uploads/hammer.jpg" width="61" height="76" alt="HowTo's" title="HowTo's" /><img src="http://muchtall.com/wp-content/uploads/linuxpimp.jpg" width="57" height="76" alt="MuchTall's Linux Tips" title="MuchTall's Linux Tips" /><br/><p>This is my OpenVPN HOWTO. There are many like it, but this one is mine.</p> <p>It seems every few months I get asked the question by one of my friends &#8220;How do I set up a VPN?&#8221;. Sometimes the person is looking to set up a MS VPN variant, other times, OpenVPN. The principles and [...]]]></description>
				<content:encoded><![CDATA[<img src="http://muchtall.com/wp-content/uploads/hammer.jpg" width="61" height="76" alt="HowTo's" title="HowTo's" /><img src="http://muchtall.com/wp-content/uploads/linuxpimp.jpg" width="57" height="76" alt="MuchTall's Linux Tips" title="MuchTall's Linux Tips" /><br/><p>This is my OpenVPN HOWTO. There are many like it, but this one is mine.</p>
<p>It seems every few months I get asked the question by one of my friends &#8220;How do I set up a VPN?&#8221;. Sometimes the person is looking to set up a MS VPN variant, other times, OpenVPN. The principles and concepts seem simple to me, now, however for someone new to VPN architectures and perhaps even routing, it can be confusing. This is my attempt to make the mysterious understandable. Since roadwarrior (individual laptop clients) configs are fairly well documented by the official OpenVPN wiki, I&#8217;ll concentrate on a simple routed, LAN-to-LAN VPN networking concept, and cover roadwarrior config as an afterthought.</p>
<p>My weapon of choice distro-wise is CentOS, however these instructions could be applied to any other distro (ie, Ubuntu) with a basic understanding of your particular platform&#8217;s networking configuration methods. Really, OpenVPN can run on just about anything, including Windows, if you feel so inclined. However, you&#8217;ll probably get the most bang for your buck (free) using Linux. In my test environment, running stock CentOS 6.4, I had the scenario below running on a server with less than 90MB of total system memory usage.</p>
<p><strong>Why CentOS?</strong><br />
(BEGIN RANT)<br />
I have two main reasons for promoting the use of CentOS:<br />
1) CentOS is based upon RedHat Enterprise Linux (RHEL), which currently enjoys status as the most vendor-supported OS in enterprise environments. Translation? Knowledge of an RHEL derivitaves like CentOS is marketable skill to put on your resume. Yes, Ubuntu is gaining popularity in tech circles, but still doesn&#8217;t compare to RHEL for vendor support. There&#8217;s a reason both VMWare and Citrix use RHEL derivitaves as their baremetal OS.<br />
2) CentOS has long-term-support (LTS). I&#8217;ve used Fedora for years, and I enjoy(ed) playing with some of the bleeding-edge features it offers. But the bleeding edge is on a double-edged sword. Fedora has a relatively aggressive release and support schedule. Install Fedora X, and expect that Fedora Z will replace it in about a year, leaving version X effectively without support. This gets to be a pain when you need to &#8220;yum update&#8221; your system just a year or so after you installed it. CentOS however has a support schedule that will ensure you likely have updates for far more years than the lifecycle of your hardware. For example CentOS 6, released in 2011, reaches EOL in late 2020. That&#8217;s almost 10 years of support, on a free platform!<br />
(END RANT)</p>
<p>First, let&#8217;s diagram the network we are going to design:</p>
<blockquote><p><code>Remote Office 1 (10.101.0.x/24)<br />
 |<br />
VPN Tunnel (10.200.101.1/30)<br />
 |<br />
Main Office (10.100.0.x/24)<br />
 |<br />
VPN Tunnel (10.200.102.1/30)<br />
 |<br />
Remote Office 2 (10.102.0.x/24)</code></p></blockquote>
<p>For this guide, we&#8217;re going to assume you want all remote offices to have routing enabled to each other (via the Main office).</p>
<p>Note that the IP addresses above are just for example. You could create your own IP addressing scheme with FAR better utilization of the the private address space. The subnets I have used (ie 10.200.x.x/16) are just for increased clarity.</p>
<p>Each OpenVPN server/endpoint can have one interface (assuming you are doing NAT/firewalling elsewhere on your network), OR you could have dual interfaces: One on the LAN, the other on the WAN/Internet connection. It&#8217;s up to you depending on where you want to do your firewalling. For the purposes of this guide, we&#8217;re putting the VPN server behind another firewall.</p>
<p><strong>On your firewall</strong><br />
Forward UDP port 1194 for your external internet connection to the internal IP of your VPN servers/endpoints, ie:</p>
<blockquote><p><code>	Main Office	10.100.0.5:1194<br />
	Remote Office 1	10.101.0.5:1194<br />
	Remote Office 2	10.102.0.5:1194</code></p></blockquote>
<p>If for some reason UDP/1194 were blocked by your ISP, you could switch to something like TCP/80, but for the purposes of this guide, we&#8217;ll stick with the default UDP/1194.</p>
<p><strong>On each server/endpoint</strong><br />
Install your base OS. I chose to just install CentOS 6.4 minimal installation with the default options. Once installed, get networking set up and run</p>
<blockquote><p><code>yum update</code></p></blockquote>
<p>and get everything up-to-date.</p>
<p>Install the EPEL Repo configs</p>
<blockquote><p><code>yum install http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm</code></p></blockquote>
<p>Turn off the built-in firewall (remember, we&#8217;re using a 3rd party device for this). You could leave it on, but then you&#8217;d have to configure it to pass traffic to/from your VPN tunnel interface. I&#8217;ll leave that up to you to figure out should you choose to do so.</p>
<blockquote><p><code>chkconfig iptables off ; service iptables stop</code></p></blockquote>
<p>Install the OpenVPN packages and dependencies:</p>
<blockquote><p><code>yum install openvpn</code></p></blockquote>
<p><strong>Server (Main Office)</strong></p>
<p>Copy the the easy-rsa environment to /etc/openvpn/easy-rsa, do some config prep, and alter the vars file</p>
<blockquote><p><code>	cp -rp /usr/share/openvpn/easy-rsa/2.0 /etc/openvpn/easy-rsa<br />
	cd /etc/openvpn/easy-rsa/<br />
	cp -rp vars vars.orig<br />
	cp -rp openssl-1.0.0.cnf openssl.cnf<br />
	vi vars</code></p></blockquote>
<p>Go down to &#8220;KEY_COUNTRY&#8221; and edit the Country, Province, etc, down to the OU, ie:</p>
<blockquote><p><code>	export KEY_COUNTRY="US"<br />
	export KEY_PROVINCE="MN"<br />
	export KEY_CITY="Minneapolis"<br />
	export KEY_ORG="Muchtall"<br />
	export KEY_EMAIL="me@my.domain.com"<br />
	export KEY_EMAIL=me@my.domain.com<br />
	export KEY_CN=vpn.mydomain.com<br />
	export KEY_NAME=MuchtallOpenVPNServer<br />
	export KEY_OU=Muchtall</code></p></blockquote>
<p>Now generate your server&#8217;s certificate authority:</p>
<blockquote><p><code>	. ./vars<br />
	./clean-all<br />
	./build-ca</code></p></blockquote>
<p>Accept the defaults for the prompts (we already set them)</p>
<p>Now build the server key</p>
<blockquote><p><code>	./build-key-server vpn.mydomain.com</code></p></blockquote>
<p>Similar to above, accept the default prompts. You will have to answer &#8220;y&#8221; to the questions &#8220;Sign the certificate? [y/n]:&#8221; and &#8220;1 out of 1 certificate requests certified, commit? [y/n]&#8221;</p>
<p>Now generate certs/keys for each remote site</p>
<blockquote><p><code>	./build-key remote-office-1<br />
	./build-key remote-office-2</code></p></blockquote>
<p>Rinse, repeat on the prompts.	</p>
<p>And generate the Diffie-Hellman parameters:</p>
<blockquote><p><code>	./build-dh</code></p></blockquote>
<p>Great! Our certificates are all set up!</p>
<p>Next time you want to generate a new client key, just run</p>
<blockquote><p><code>	cd /etc/openvpn/easy-rsa/<br />
	. ./vars<br />
	./build-key remote-office-3</code></p></blockquote>
<p>Now, let&#8217;s set up the configs. There&#8217;s a sample config at /usr/share/doc/openvpn-2.2.2/sample-config-files/server.conf, however we&#8217;re going to set one up using this template, just to keep things simple:</p>
<blockquote><p><code>	port 1194<br />
	proto udp<br />
	dev tun<br />
	ca easy-rsa/keys/ca.crt<br />
	cert easy-rsa/keys/vpn.mydomain.com.crt<br />
	key easy-rsa/keys/vpn.mydomain.com.key<br />
	dh easy-rsa/keys/dh1024.pem<br />
	server 10.200.0.0 255.255.0.0<br />
	ifconfig-pool-persist ipp.txt<br />
	# Tell clients that we can handle routes for these networks<br />
	push "route 10.100.0.0 255.255.0.0"<br />
	push "route 10.101.0.0 255.255.0.0"<br />
	push "route 10.102.0.0 255.255.0.0"<br />
	client-config-dir ccd<br />
	# Tell OpenVPN that it routes for anything within these subnets<br />
	route 10.101.0.0 255.255.0.0<br />
	route 10.102.0.0 255.255.0.0<br />
	client-to-client<br />
	keepalive 10 120<br />
	comp-lzo<br />
	persist-key<br />
	persist-tun<br />
	status openvpn-status.log<br />
	verb 3</code></p></blockquote>
<p>Now create the ccd directory</p>
<blockquote><p><code>	mkdir /etc/openvpn/ccd</code></p></blockquote>
<p>And lets create the client-specific configs to route each individual subnet to the respective site:</p>
<blockquote><p><code>	# In /etc/openvpn/ccd/remote-office-1<br />
	iroute 10.101.0.0 255.255.255.0</code></p></blockquote>
<p>And</p>
<blockquote><p><code>	# In /etc/openvpn/ccd/remote-office-2<br />
	iroute 10.102.0.0 255.255.255.0</code>
</p></blockquote>
<p>Good? Good!</p>
<p>Normally, IP subnets for the tunnels are allocated as new tunnels connect to the server. Let&#8217;s pre-set the IPs for each tunnel. This part isn&#8217;t necessary, however I like to do this to assist with clarity in troubleshooting with traceroutes. In /etc/openvpn/ipp.txt:</p>
<blockquote><p><code>	remote-office-1,10.200.101.4<br />
	remote-office-2,10.200.102.4</code></p></blockquote>
<p>And re-set the SELinux permissions on the ipp.txt file</p>
<blockquote><p><code>	restorecon -v './ipp.txt'</code></p></blockquote>
<p>Now we&#8217;re ready to start the the OpenVPN service up:</p>
<blockquote><p><code>	service openvpn restart</code>
</p></blockquote>
<p>Check the syslog to see if anything serious got spit out:</p>
<blockquote><p><code>	tail -100 /var/log/messages</code></p></blockquote>
<p>You should see something similar to this:</p>
<blockquote><p><code>	May  7 14:54:53 mainoffice openvpn[13362]: OpenVPN 2.2.2 x86_64-redhat-linux-gnu [SSL] [LZO2] [EPOLL] [PKCS11] [eurephia] built on Aug 10 2012<br />
	May  7 14:54:53 mainoffice openvpn[13362]: NOTE: the current --script-security setting may allow this configuration to call user-defined scripts<br />
	May  7 14:54:53 mainoffice openvpn[13362]: Diffie-Hellman initialized with 1024 bit key<br />
	May  7 14:54:53 mainoffice openvpn[13362]: TLS-Auth MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ]<br />
	May  7 14:54:53 mainoffice openvpn[13362]: Socket Buffers: R=[229376->131072] S=[229376->131072]<br />
	May  7 14:54:53 mainoffice openvpn[13362]: ROUTE default_gateway=10.0.3.2<br />
	May  7 14:54:53 mainoffice openvpn[13362]: TUN/TAP device tun0 opened<br />
	May  7 14:54:53 mainoffice openvpn[13362]: TUN/TAP TX queue length set to 100<br />
	May  7 14:54:53 mainoffice openvpn[13362]: /sbin/ip link set dev tun0 up mtu 1500<br />
	May  7 14:54:53 mainoffice openvpn[13362]: /sbin/ip addr add dev tun0 local 10.200.0.1 peer 10.200.0.2<br />
	May  7 14:54:53 mainoffice openvpn[13362]: /sbin/ip route add 10.101.0.0/16 via 10.200.0.2<br />
	May  7 14:54:53 mainoffice openvpn[13362]: /sbin/ip route add 10.102.0.0/16 via 10.200.0.2<br />
	May  7 14:54:53 mainoffice openvpn[13362]: /sbin/ip route add 10.200.0.0/16 via 10.200.0.2<br />
	May  7 14:54:53 mainoffice openvpn[13362]: Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ]<br />
	May  7 14:54:53 mainoffice openvpn[13369]: UDPv4 link local (bound): [undef]:1194<br />
	May  7 14:54:53 mainoffice openvpn[13369]: UDPv4 link remote: [undef]<br />
	May  7 14:54:53 mainoffice openvpn[13369]: MULTI: multi_init called, r=256 v=256<br />
	May  7 14:54:53 mainoffice openvpn[13369]: IFCONFIG POOL: base=10.200.0.4 size=16382<br />
	May  7 14:54:53 mainoffice openvpn[13369]: IFCONFIG POOL LIST<br />
	May  7 14:54:53 mainoffice openvpn[13369]: remote-office-1,10.200.101.4<br />
	May  7 14:54:53 mainoffice openvpn[13369]: remote-office-2,10.200.102.4<br />
	May  7 14:54:53 mainoffice openvpn[13369]: Initialization Sequence Completed<br />
	May  7 14:54:53 mainoffice kernel: tun0: Disabled Privacy Extensions</code>
</p></blockquote>
<p>Once you&#8217;ve verified based upon the above output that everything is running fine, go ahead and mark the service to start automatically</p>
<blockquote><p><code>chkconfig openvpn on</code></p></blockquote>
<p><strong>Client Configs (Remote Offices)</strong><br />
On each server, create the file &#8220;/etc/openvpn/vpn.mydomain.com.conf&#8221;, and populate with the following:</p>
<blockquote><p><code>client<br />
dev tun<br />
proto udp<br />
remote 192.168.56.100 1194<br />
resolv-retry infinite<br />
nobind<br />
persist-key<br />
persist-tun<br />
ca ca.crt<br />
cert remote-office-1.crt<br />
key remote-office-1.key<br />
comp-lzo<br />
verb 3</code></p></blockquote>
<p>Be sure to change the cert name as appropriate.</p>
<p>Copy the ca.crt, remote-office-1.key, and remote-office-1.crt to the /etc/openvpn/ directory of the client. Repeat for Office 2.</p>
<p>Set the permissions on the key file so that it can&#8217;t be copied by non-root users.</p>
<blockquote><p><code>chmod 600 /etc/openvpn/remote-office-1.key</code></p></blockquote>
<p>Start the OpenVPN service</p>
<blockquote><p><code>service openvpn start</code></p></blockquote>
<p>Check the output of syslog for similar output:</p>
<blockquote><p><code>May  7 16:26:39 remote-office-1 openvpn[1566]: OpenVPN 2.2.2 x86_64-redhat-linux-gnu [SSL] [LZO2] [EPOLL] [PKCS11] [eurephia] built on Aug 10 2012<br />
May  7 16:26:39 remote-office-1 openvpn[1566]: WARNING: No server certificate verification method has been enabled.  See http://openvpn.net/howto.html#mitm for more info.<br />
May  7 16:26:39 remote-office-1 openvpn[1566]: NOTE: the current --script-security setting may allow this configuration to call user-defined scripts<br />
May  7 16:26:39 remote-office-1 openvpn[1566]: LZO compression initialized<br />
May  7 16:26:39 remote-office-1 openvpn[1566]: Control Channel MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ]<br />
May  7 16:26:39 remote-office-1 openvpn[1566]: Socket Buffers: R=[229376->131072] S=[229376->131072]<br />
May  7 16:26:39 remote-office-1 openvpn[1566]: Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ]<br />
May  7 16:26:39 remote-office-1 openvpn[1566]: Local Options hash (VER=V4): '41690919'<br />
May  7 16:26:39 remote-office-1 openvpn[1566]: Expected Remote Options hash (VER=V4): '530fdded'<br />
May  7 16:26:39 remote-office-1 openvpn[1567]: UDPv4 link local: [undef]<br />
May  7 16:26:39 remote-office-1 openvpn[1567]: UDPv4 link remote: x.x.x.x:1194<br />
May  7 16:26:39 remote-office-1 openvpn[1567]: TLS: Initial packet from x.x.x.x:1194, sid=f439995e ac9dd302<br />
May  7 16:26:39 remote-office-1 openvpn[1567]: VERIFY OK: depth=1, /C=US/ST=MN/L=Minneapolis/O=Muchtall/OU=Muchtall/CN=vpn.mydomain.com/name=MyOpenVPNServer/emailAddress=me@my.domain.com<br />
May  7 16:26:39 remote-office-1 openvpn[1567]: VERIFY OK: depth=0, /C=US/ST=MN/L=Minneapolis/O=Muchtall/OU=Muchtall/CN=vpn.mydomain.com/name=MyOpenVPNServer/emailAddress=me@my.domain.com<br />
May  7 16:26:39 remote-office-1 openvpn[1567]: Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key<br />
May  7 16:26:39 remote-office-1 openvpn[1567]: Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication<br />
May  7 16:26:39 remote-office-1 openvpn[1567]: Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key<br />
May  7 16:26:39 remote-office-1 openvpn[1567]: Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication<br />
May  7 16:26:39 remote-office-1 openvpn[1567]: Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSA<br />
May  7 16:26:39 remote-office-1 openvpn[1567]: [vpn.mydomain.com] Peer Connection Initiated with 192.168.56.150:1194<br />
May  7 16:26:41 remote-office-1 openvpn[1567]: SENT CONTROL [vpn.mydomain.com]: 'PUSH_REQUEST' (status=1)<br />
May  7 16:26:41 remote-office-1 openvpn[1567]: PUSH: Received control message: 'PUSH_REPLY,route 10.100.0.0 255.255.0.0,route 10.101.0.0 255.255.0.0,route 10.102.0.0 255.255.0.0,route 10.200.0.0 255.255.0.0,topology net30,ping 10,ping-restart 120,ifconfig 10.200.101.6 10.200.101.5'<br />
May  7 16:26:41 remote-office-1 openvpn[1567]: OPTIONS IMPORT: timers and/or timeouts modified<br />
May  7 16:26:41 remote-office-1 openvpn[1567]: OPTIONS IMPORT: --ifconfig/up options modified<br />
May  7 16:26:41 remote-office-1 openvpn[1567]: OPTIONS IMPORT: route options modified<br />
May  7 16:26:41 remote-office-1 openvpn[1567]: ROUTE default_gateway=10.0.3.2<br />
May  7 16:26:41 remote-office-1 openvpn[1567]: TUN/TAP device tun0 opened<br />
May  7 16:26:41 remote-office-1 openvpn[1567]: TUN/TAP TX queue length set to 100<br />
May  7 16:26:41 remote-office-1 openvpn[1567]: /sbin/ip link set dev tun0 up mtu 1500<br />
May  7 16:26:41 remote-office-1 kernel: tun0: Disabled Privacy Extensions<br />
May  7 16:26:41 remote-office-1 openvpn[1567]: /sbin/ip addr add dev tun0 local 10.200.101.6 peer 10.200.101.5<br />
May  7 16:26:41 remote-office-1 openvpn[1567]: /sbin/ip route add 10.100.0.0/16 via 10.200.101.5<br />
May  7 16:26:41 remote-office-1 openvpn[1567]: /sbin/ip route add 10.101.0.0/16 via 10.200.101.5<br />
May  7 16:26:41 remote-office-1 openvpn[1567]: /sbin/ip route add 10.102.0.0/16 via 10.200.101.5<br />
May  7 16:26:41 remote-office-1 openvpn[1567]: /sbin/ip route add 10.200.0.0/16 via 10.200.101.5<br />
May  7 16:26:41 remote-office-1 openvpn[1567]: Initialization Sequence Completed</code></p></blockquote>
<p>And verify that the routing is taking place</p>
<blockquote><p><code>ping 10.100.0.1</code></p></blockquote>
<p>Set the openvpn service to start automatically</p>
<blockquote><p><code>chkconfig openvpn on</code></p></blockquote>
<p>Repeat these steps for the Office 2 client. And verify that you can ping across both tunnels to Office 1</p>
<p><strong>Roadwarrior Config (this is optional)</strong><br />
As an afterthought, I said I&#8217;d cover Roadwarrior configuration. Here&#8217;s a basic rundown:</p>
<p>- Generate a new cert/key pair for your username using the above ./build-key commands<br />
- Install <a href="http://openvpn.net/index.php/open-source/downloads.html">OpenVPN for Windows</a> (if you&#8217;re on Mac or Linux, you likely know how to do this already)<br />
- Copy the ca.crt, username.crt, and username.key files to &#8220;C:\Program Files\OpenVPN\config\&#8221;<br />
- Create a config file named C:\Program Files\OpenVPN\config\vpn.mydomain.com.ovpn with these contents:</p>
<blockquote><p><code>client<br />
dev tun<br />
proto udp<br />
remote vpn.mydomain.com 1194<br />
resolv-retry infinite<br />
nobind<br />
persist-key<br />
persist-tun<br />
ca ca.crt<br />
cert myusername.crt<br />
key myusername.key<br />
comp-lzo<br />
verb 3</code></p></blockquote>
<p>Right-click on the OpenVPN GUI in the taskbar and click &#8220;Connect&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://muchtall.com/2013/05/07/routed-openvpn-howto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Muchtall Window Arranger (Save Window Positions and Size)</title>
		<link>http://muchtall.com/2013/04/23/muchtall-window-arranger-save-window-positions-and-size/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=muchtall-window-arranger-save-window-positions-and-size</link>
		<comments>http://muchtall.com/2013/04/23/muchtall-window-arranger-save-window-positions-and-size/#comments</comments>
		<pubDate>Tue, 23 Apr 2013 15:33:19 +0000</pubDate>
		<dc:creator>MuchTall</dc:creator>
				<category><![CDATA[Microsoft Frustrations]]></category>
		<category><![CDATA[Script Monkey]]></category>

		<guid isPermaLink="false">http://muchtall.com/?p=496</guid>
		<description><![CDATA[<img src="http://muchtall.com/wp-content/uploads/winblows.jpg" width="75" height="75" alt="Microsoft Frustrations" title="Microsoft Frustrations" /><br/><p>Over the years, I&#8217;ve noticed that there&#8217;s one &#8220;drawback&#8221; to multiple heads/screens on a laptop workstation. I get in the habit of arranging my workspace how I like it, where eventually I have 8-10 windows in positions I would prefer to be permanent whenever I hook up my external 2 heads. When I undock, of [...]]]></description>
				<content:encoded><![CDATA[<img src="http://muchtall.com/wp-content/uploads/winblows.jpg" width="75" height="75" alt="Microsoft Frustrations" title="Microsoft Frustrations" /><br/><p>Over the years, I&#8217;ve noticed that there&#8217;s one &#8220;drawback&#8221; to multiple heads/screens on a laptop workstation. I get in the habit of arranging my workspace how I like it, where eventually I have 8-10 windows in positions I would prefer to be permanent whenever I hook up my external 2 heads. When I undock, of course everything collapses back to my main display. When I re-dock, the windows remain in a cluttered pile on my main screen. In addition to this, changes in resolution can result in windows needing to be re-sized as well.</p>
<p>I&#8217;ve found one or two utilities over the years that have allowed me to save window positions and sizes, but nothing that handled it for me as automatically as I would have liked. So I wrote my own in AutoHotKey: the Muchtall Window Arranger.</p>
<p>It&#8217;s fairly simple, yet powerful if you want it to be. Since it&#8217;s written in AutoHotKey, you can write custom filters to apply to your window rules (assuming you know AHK). But, for the casual user, it simply grabs the active window information and allows you to alter the conditions that apply to the window matching before saving those settings.</p>
<p><strong>Download: <a href="http://muchtall.com/wp-content/uploads/2013/04/Muchtall-Window-Arranger.ahk">Muchtall Window Arranger</a></strong><br />
You must have AutoHotKey installed before using this script.</p>
<p>There&#8217;s one setting in the source you&#8217;ll probably want to modify before you get started. The variable &#8220;NumberOfScreens = 3&#8243; should be changed to the number of heads you want to have activate the auto-rearrange feature. If this is set to something higher than you&#8217;d ever have installed (say 10), the auto-rearrange feature should never activate.</p>
<p>Screenshots:<br />
<strong>Task Tray Menu</strong><br />
<a href="http://muchtall.com/wp-content/uploads/2013/04/ahkmenu.png"><img src="http://muchtall.com/wp-content/uploads/2013/04/ahkmenu.png" alt="ahkmenu" width="208" height="211" class="alignnone size-medium wp-image-500" /></a></p>
<p><strong>Capture/Save window settings</strong><br />
<a href="http://muchtall.com/wp-content/uploads/2013/04/newwindow.png"><img src="http://muchtall.com/wp-content/uploads/2013/04/newwindow.png" alt="newwindow" width="552" height="222" class="alignnone size-full wp-image-499" /></a></p>
<p>I&#8217;ll probably clean up the rough edges as I get feedback on it. I know there may be so use for feaures like re-arranging for multiple head settings, so there&#8217;s work to be done.</p>
]]></content:encoded>
			<wfw:commentRss>http://muchtall.com/2013/04/23/muchtall-window-arranger-save-window-positions-and-size/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Brewblog: Kickoff w/ Northern Brewer Nut Brown Ale</title>
		<link>http://muchtall.com/2013/04/19/brewblog-kickoff-w-northern-brewer-nut-brown-ale/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=brewblog-kickoff-w-northern-brewer-nut-brown-ale</link>
		<comments>http://muchtall.com/2013/04/19/brewblog-kickoff-w-northern-brewer-nut-brown-ale/#comments</comments>
		<pubDate>Fri, 19 Apr 2013 20:57:55 +0000</pubDate>
		<dc:creator>MuchTall</dc:creator>
				<category><![CDATA[Homebrewing]]></category>

		<guid isPermaLink="false">http://muchtall.com/?p=488</guid>
		<description><![CDATA[<br/><p>My wonderful wife got me a Northern Brewer Deluxe Brewing Starter Kit (Glass) a couple of Christmases ago, and I&#8217;ve been slowly expanding my &#8220;brewery&#8221; ever since. I&#8217;ve made maybe 6 batches of beer using the kit. One of which I royally messed up (NB Bavarian Hefeweizen) when I scorched the malt in my newly-keggle-fied [...]]]></description>
				<content:encoded><![CDATA[<br/><p>My wonderful wife got me a <a href="http://www.northernbrewer.com/shop/deluxe-brewing-starter-kit.html">Northern Brewer Deluxe Brewing Starter Kit (Glass)</a> a couple of Christmases ago, and I&#8217;ve been slowly expanding my &#8220;brewery&#8221; ever since. I&#8217;ve made maybe 6 batches of beer using the kit. One of which I royally messed up (NB Bavarian Hefeweizen) when I scorched the malt in my newly-keggle-fied boiling vessel (on high heat of course).</p>
<p>So far, here&#8217;s my inventory of equipment:</p>
<p>Northern Brewer Deluxe Starter Kit:<br />
 &#8211; 6 Gallon Primary Fermentor (Glass), Fermometer, Bung, Airlock, Blowoff Assembly<br />
 &#8211; 5 Gallon Secondary Fermentor (Glass), Fermometer, Bung, Airlock<br />
 &#8211; 6.5 Gallon Bottling Bucket, Bottling Spigot, Bottle Filler, Bottling Tubing<br />
 &#8211; Auto-Siphon, Siphon Tubing<br />
 &#8211; Beer Bottle Brush, Bottle Capper<br />
 &#8211; Carboy Brush</p>
<p>I also had a few pieces of equipment from my prior homebrewing adventures of years past:<br />
 &#8211; Another bottle-capper<br />
 &#8211; Another 5 gallon secondary glass fermentor<br />
 &#8211; Airlock (from a Mr. Beer kit)<br />
 &#8211; One of those common orange dual-vent carboy caps<br />
 &#8211; ~3 Gallon stainless steel kettle (w/glass lid that I interchange with the keggle below)</p>
<p>And a few new acquisitions and creations:<br />
 &#8211; 15 gallon boiling &#8220;keggle&#8221;, modified from an old stainless Miller keg (inherited)<br />
 &#8211; 10lb. CO2 canister w/ regulator<br />
 &#8211; 4 ball-lock corny kegs<br />
 &#8211; 1 set of ball lock inlet/outlet tubing, &#8220;foam-free&#8221; faucet, and connections (I can tap one keg at a time)<br />
 &#8211; 4 Perlick 545PC Flow Control Faucets (Xmas gift from Santa/Father-in-Law)<br />
 &#8211; ~7.x cu ft. Freezer (from grandmother-in-law)<br />
 &#8211; Johnson Controls A419 Temperature Controller (to convert freezer into kegerator)<br />
 &#8211; Bayou Classic SP10 High-Pressure Outdoor Gas Cooker<br />
 &#8211; ~20&#8242; counter-flow chiller w/partial convolution (see: http://www.thegatesofdawn.ca/wordpress/homebrewing/wort_chiller/)<br />
 &#8211; ~2&#8242; stainless steel spoon<br />
 &#8211; 2 reusable hop bags<br />
 &#8211; Yet-to-be-finished ~56qt mash tun cooler (still have to cut slots in my manifold, otherwise done)</p>
<p>Anyhow, I expect to be posting updates on future brewing exploits, so to kick it off, here&#8217;s my 6th-ish brew: the Northern Brewer Nut Brown Ale (extract kit). This is video I took of the fermentation just a mere 24 hours after directly pitching dry yeast into the wort. Not bad I think, considering that Danstar recommends prepping the yeast before pitching it.</p>
<p><a href="http://www.youtube.com/watch?v=OiMa-4mvUCo">http://www.youtube.com/watch?v=OiMa-4mvUCo</a></p>
<p>Yum.</p>
<p><strong>Vitals:</strong><br />
Brewed: 4/14<br />
OG: 1.050<br />
FG: 1.012<br />
ABV: 4.9%<br />
Kegged: 5/21</p>
]]></content:encoded>
			<wfw:commentRss>http://muchtall.com/2013/04/19/brewblog-kickoff-w-northern-brewer-nut-brown-ale/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick Tip: Identifying Space Consumption in Linux via Command line</title>
		<link>http://muchtall.com/2013/04/16/quick-tip-identifying-space-consumption-in-linux-via-command-line/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=quick-tip-identifying-space-consumption-in-linux-via-command-line</link>
		<comments>http://muchtall.com/2013/04/16/quick-tip-identifying-space-consumption-in-linux-via-command-line/#comments</comments>
		<pubDate>Tue, 16 Apr 2013 18:49:30 +0000</pubDate>
		<dc:creator>MuchTall</dc:creator>
				<category><![CDATA[MuchTall's Linux Tips]]></category>

		<guid isPermaLink="false">http://muchtall.com/?p=484</guid>
		<description><![CDATA[<img src="http://muchtall.com/wp-content/uploads/linuxpimp.jpg" width="57" height="76" alt="MuchTall's Linux Tips" title="MuchTall's Linux Tips" /><br/><p>Firstly, let me strongly recommend JDiskReport if a GUI is available to you. It&#8217;s super easy to use and helps you quickly drill down into the disk and identify disk space usage, on any platform with Java support.</p> <p>In lieu of that, if you have need to identify disk usage via the command line, run [...]]]></description>
				<content:encoded><![CDATA[<img src="http://muchtall.com/wp-content/uploads/linuxpimp.jpg" width="57" height="76" alt="MuchTall's Linux Tips" title="MuchTall's Linux Tips" /><br/><p>Firstly, let me strongly recommend JDiskReport if a GUI is available to you. It&#8217;s super easy to use and helps you quickly drill down into the disk and identify disk space usage, on any platform with Java support.</p>
<p>In lieu of that, if you have need to identify disk usage via the command line, run this set of commands:<br />
<code>find / -exec du -ks {} \; 2> /dev/null | sort -n | awk '{printf $1 "\t"; if (system("test -d \""$2"\"")) { print $2 } else { print $2 "/" } }' | tail -1000</code></p>
<p>This will spit out a list of the largest 1000 individual files and folder sums, sorted by size.</p>
<p>Depending on the size of the disk, this will take a while, as should be expected as it runs a &#8220;du&#8221; for each path it finds. Caching helps if/when you re-run this.</p>
]]></content:encoded>
			<wfw:commentRss>http://muchtall.com/2013/04/16/quick-tip-identifying-space-consumption-in-linux-via-command-line/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Excel Formula to Convert Polycom 8020/8440 Serial Number to MAC Address</title>
		<link>http://muchtall.com/2012/11/26/excel-formula-to-convert-polycom-80208440-serial-number-to-mac-address/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=excel-formula-to-convert-polycom-80208440-serial-number-to-mac-address</link>
		<comments>http://muchtall.com/2012/11/26/excel-formula-to-convert-polycom-80208440-serial-number-to-mac-address/#comments</comments>
		<pubDate>Mon, 26 Nov 2012 18:46:26 +0000</pubDate>
		<dc:creator>MuchTall</dc:creator>
				<category><![CDATA[HowTo's]]></category>

		<guid isPermaLink="false">http://muchtall.com/?p=464</guid>
		<description><![CDATA[<img src="http://muchtall.com/wp-content/uploads/hammer.jpg" width="61" height="76" alt="HowTo's" title="HowTo's" /><br/><p>This is an obscure tip, but it thought it was cool enough to post as it comes in handy when scanning in inventory with a barcode scanner. This works on Polycom 8400&#8242;s (8440/8450) and 8000&#8242;s (8020/8002)., and probably any other Polycom SIP device.</p> <p>This formula will take the serial number in the column to the [...]]]></description>
				<content:encoded><![CDATA[<img src="http://muchtall.com/wp-content/uploads/hammer.jpg" width="61" height="76" alt="HowTo's" title="HowTo's" /><br/><p>This is an obscure tip, but it thought it was cool enough to post as it comes in handy when scanning in inventory with a barcode scanner. This works on Polycom 8400&#8242;s (8440/8450) and 8000&#8242;s (8020/8002)., and probably any other Polycom SIP device.</p>
<p>This formula will take the serial number in the column to the left and convert it to a MAC address.</p>
<p><code>="00907A"&#038;REPT(0,6-LEN(DEC2HEX(VALUE(RIGHT(INDIRECT("RC[-1]",0),LEN(INDIRECT("RC[-1]",0))-3)))))&#038;DEC2HEX(VALUE(RIGHT(INDIRECT("RC[-1]",0),LEN(INDIRECT("RC[-1]",0))-3)))</code></p>
]]></content:encoded>
			<wfw:commentRss>http://muchtall.com/2012/11/26/excel-formula-to-convert-polycom-80208440-serial-number-to-mac-address/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Export/Import Grindstone XML to Google/iCal/ICS</title>
		<link>http://muchtall.com/2012/10/24/exportimport-grindstone-xml-to-googleicalics/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=exportimport-grindstone-xml-to-googleicalics</link>
		<comments>http://muchtall.com/2012/10/24/exportimport-grindstone-xml-to-googleicalics/#comments</comments>
		<pubDate>Thu, 25 Oct 2012 03:55:36 +0000</pubDate>
		<dc:creator>MuchTall</dc:creator>
				<category><![CDATA[HowTo's]]></category>

		<guid isPermaLink="false">http://muchtall.com/?p=457</guid>
		<description><![CDATA[<img src="http://muchtall.com/wp-content/uploads/hammer.jpg" width="61" height="76" alt="HowTo's" title="HowTo's" /><br/><p>I recently started using Grindstone to track my daily workload, and I&#8217;ve been using a number of calendars on Google to not only share classifications of appointments, but to track historical data (Android call logs, etc). I kind of expected that Grindstone would have iCal/ICS export capability, but sadly it does not appear so. You [...]]]></description>
				<content:encoded><![CDATA[<img src="http://muchtall.com/wp-content/uploads/hammer.jpg" width="61" height="76" alt="HowTo's" title="HowTo's" /><br/><p>I recently started using Grindstone to track my daily workload, and I&#8217;ve been using a number of calendars on Google to not only share classifications of appointments, but to track historical data (Android call logs, etc). I kind of expected that Grindstone would have iCal/ICS export capability, but sadly it does not appear so. You can, however, export to XML. So I thought I&#8217;d write up a Perl script to convert the XML data into an ICS file ready for import into Google Calendars. Feel free to download it and use to to convert your Grindstone XML files into iCal data.</p>
<p>Here&#8217;s the Perl script: <a href="/content/grindstone2ics.txt">grindstone2ics.txt</a> (Save as .pl, not .txt)</p>
<p>If you are on Windows with ActivePerl installed, here&#8217;s a batch file that you can drag-and-drop your XML file onto. Place it in the same folder as &#8220;grindstone2ics.pl&#8221;: <a href="/content/grindstone2ics.bat">grindstone2ics.bat</a></p>
<p>Let me know if this helped you!</p>
]]></content:encoded>
			<wfw:commentRss>http://muchtall.com/2012/10/24/exportimport-grindstone-xml-to-googleicalics/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Simple Script to Mount Disk Image Partitions Looped on Linux</title>
		<link>http://muchtall.com/2012/10/15/simple-script-to-mount-disk-image-partitions-looped-on-linux/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=simple-script-to-mount-disk-image-partitions-looped-on-linux</link>
		<comments>http://muchtall.com/2012/10/15/simple-script-to-mount-disk-image-partitions-looped-on-linux/#comments</comments>
		<pubDate>Mon, 15 Oct 2012 16:03:53 +0000</pubDate>
		<dc:creator>MuchTall</dc:creator>
				<category><![CDATA[HowTo's]]></category>

		<guid isPermaLink="false">http://muchtall.com/?p=453</guid>
		<description><![CDATA[<img src="http://muchtall.com/wp-content/uploads/hammer.jpg" width="61" height="76" alt="HowTo's" title="HowTo's" /><br/><p>Every so often I have to recover a drive to a disk image on Linux, and before I transfer the data back to a physical drive, I like to mount the disk image check on it&#8217;s status. Mounting a partition from a disk image is slightly more complicated than mounting just an image of a [...]]]></description>
				<content:encoded><![CDATA[<img src="http://muchtall.com/wp-content/uploads/hammer.jpg" width="61" height="76" alt="HowTo's" title="HowTo's" /><br/><p>Every so often I have to recover a drive to a disk image on Linux, and before I transfer the data back to a physical drive, I like to mount the disk image check on it&#8217;s status. Mounting a partition from a disk image is slightly more complicated than mounting just an image of a partition, so I thought I&#8217;d post a shortcut to doing so. This information was derived from the how-to posted here (http://madduck.net/blog/2006.10.20:loop-mounting-partitions-from-a-disk-image/). You will need to alter three variables: DISKIMAGE, DISKPARTITION, and the mount path at the end of command.</p>
<p><code>DISKIMAGE=/media/usbdisk/mydiskimage.img ; DISKPARTITON=2 ; mount -o loop,offset=$((`fdisk -lu $DISKIMAGE 2> /dev/null | grep -P "$DISKPARTITON\s+\**\s+[0-9]+\s+[0-9]+\s+[0-9]+\s+[0-9]+" | sed 's/\*//g' | awk '{print $2}'` * `fdisk -lu $DISKIMAGE 2> /dev/null | grep "^Units" | awk -F"= " '{print $3}' | awk '{print $1}'`)) $DISKIMAGE /media/recovereddisk/</code></p>
<p>Hope this helps someone else save some time!</p>
]]></content:encoded>
			<wfw:commentRss>http://muchtall.com/2012/10/15/simple-script-to-mount-disk-image-partitions-looped-on-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Whitelisting Incoming Calls on Asterisk</title>
		<link>http://muchtall.com/2012/05/23/whitelisting-incoming-calls-on-asterisk/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=whitelisting-incoming-calls-on-asterisk</link>
		<comments>http://muchtall.com/2012/05/23/whitelisting-incoming-calls-on-asterisk/#comments</comments>
		<pubDate>Wed, 23 May 2012 21:46:17 +0000</pubDate>
		<dc:creator>MuchTall</dc:creator>
				<category><![CDATA[HowTo's]]></category>

		<guid isPermaLink="false">http://muchtall.com/?p=450</guid>
		<description><![CDATA[<img src="http://muchtall.com/wp-content/uploads/hammer.jpg" width="61" height="76" alt="HowTo's" title="HowTo's" /><br/><p>For some reason, this is a topic that I couldn&#8217;t seem to find a simple HOWTO online for, so I had to create my own.</p> <p>I ran into a situation where I have a large number of auto-answering intercom boxes connected to an Asterisk system. The intercoms are programmed to pick up immediately upon ringing, [...]]]></description>
				<content:encoded><![CDATA[<img src="http://muchtall.com/wp-content/uploads/hammer.jpg" width="61" height="76" alt="HowTo's" title="HowTo's" /><br/><p>For some reason, this is a topic that I couldn&#8217;t seem to find a simple HOWTO online for, so I had to create my own.</p>
<p>I ran into a situation where I have a large number of auto-answering intercom boxes connected to an Asterisk system. The intercoms are programmed to pick up immediately upon ringing, allowing the caller to communicate with the room&#8217;s occupant without any action taken by the occupant. These intercom lines are assigned a DID number from the outside world in a large metro area. See the problem? The occupants were getting a number of calls from locals whom had dialed the wrong number. Sometimes the caller wouldn&#8217;t hear a response, so they&#8217;d call back repeatedly, to the irritation of the occupant. For our scenario, blacklisting wasn&#8217;t a good option. In metro areas, misdialed numbers are common, and rarely from the same person. I needed to only allow a handful (~20-50) of callers that we knew would be calling the intercoms legitimately. Furthermore, it would be useful to have a notice played for a blocked caller to that they knew either to not try calling again, or to contact us to whitelist the number.</p>
<p>Here are the rules I used in Asterisk to achieve this goal. First, in extensions.conf, I created a macro for whitelisting:<br />
<code><br />
; Only allows calls from numbers in the whitelist DB<br />
[macro-inbound-whitelist]<br />
exten => s,1,GotoIf(${DB_EXISTS(whitelist/${CALLERID(num)})}?:blacklisted,s,1)<br />
exten => s,2,Dial(${ARG1})<br />
</code></p>
<p>Then, if you don&#8217;t have a blacklisted context already, create one:<br />
<code><br />
[blacklisted]<br />
exten => s,1,Playback(not-taking-your-call)<br />
exten => s,3,Hangup<br />
</code></p>
<p>Next, change your inbound call config to use the inbound-whitelist macro:<br />
<code><br />
exten => 5551234567,1,Macro(inbound-whitelist,SIP/123)<br />
exten => 5551234567,2,Hangup<br />
</code></p>
<p>Reload the asterisk config and make a test call. You should get a recording saying that it (Asterisk) is not taking your call.</p>
<p>Now add your number to the whitelist:<br />
<code><br />
asterisk -r<br />
database put whitelist 5551230000 1<br />
</code></p>
<p>And do another test call.</p>
<p>One last word of warning. I did once run into a condition where our telco provider abruptly stopped sending caller ID through our PRI. When this happens, ALL calls show up as null/blank calling numbers. In these instances, ALL calls to your whitelist-protected extensions will be blocked (at least from outside). To temporarily disable whitelisting until the problem is resolved, simply comment out the &#8220;exten => s,1,GotoIf &#8230;&#8221; line and reload asterisk.</p>
<p>Hopefully this saved someone else out there some time.</p>
<p><strong>UPDATE:</strong> I found that comparing against two whitelists (a customer whitelist, and our support number whitelist) can be handy. Use this line instead if you want similar logic:<br />
<code><br />
exten => s,1,GotoIf($[ ${DB_EXISTS(whitelist-${ARG2}/${CALLERID(num)})} | ${DB_EXISTS(whitelist-support/${CALLERID(num)})} ]?:blacklisted,s,1)<br />
</code><br />
Also with this option, I can treat the whitelist name as an argument in my macro call:<br />
<code><br />
exten => 5551234567,1,Macro(inbound-whitelist,SIP/123,customername)<br />
</code><br />
In this case, the whitelist DB would be named &#8220;whitelist-customername&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://muchtall.com/2012/05/23/whitelisting-incoming-calls-on-asterisk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing Fedora 16 on XenServer 6</title>
		<link>http://muchtall.com/2012/05/20/installing-fedora-16-on-xenserver-6/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=installing-fedora-16-on-xenserver-6</link>
		<comments>http://muchtall.com/2012/05/20/installing-fedora-16-on-xenserver-6/#comments</comments>
		<pubDate>Mon, 21 May 2012 02:45:15 +0000</pubDate>
		<dc:creator>MuchTall</dc:creator>
				<category><![CDATA[HowTo's]]></category>

		<guid isPermaLink="false">http://muchtall.com/?p=447</guid>
		<description><![CDATA[<img src="http://muchtall.com/wp-content/uploads/hammer.jpg" width="61" height="76" alt="HowTo's" title="HowTo's" /><br/><p>Credit for this procedure goes to Major Hayden at Racker Hacker (http://rackerhacker.com/2012/02/11/installing-fedora-16-in-xenserver/). My procedure just uses an alternate, minimal kickstart file that gives you more control over the installation using the Anaconda GUI.</p> <p>- Start an installation using the RedHat 6.0 64bit template - In the installation wizard, use these advanced options: console=hvc0 serial ip=dhcp [...]]]></description>
				<content:encoded><![CDATA[<img src="http://muchtall.com/wp-content/uploads/hammer.jpg" width="61" height="76" alt="HowTo's" title="HowTo's" /><br/><p>Credit for this procedure goes to Major Hayden at Racker Hacker (<a href="http://rackerhacker.com/2012/02/11/installing-fedora-16-in-xenserver/">http://rackerhacker.com/2012/02/11/installing-fedora-16-in-xenserver/</a>). My procedure just uses an alternate, minimal kickstart file that gives you more control over the installation using the Anaconda GUI.</p>
<p>- Start an installation using the RedHat 6.0 64bit template<br />
- In the installation wizard, use these advanced options: console=hvc0 serial ip=dhcp nogpt vnc ks=http://muchtall.com/content/f16onxen6.ks<br />
- Connect to the installer GUI using VNC and the IP shown in the console.</p>
<p>Proceed as normal! If you care to see the source of the kickstart: <a href="http://muchtall.com/content/f16onxen6.ks">http://muchtall.com/content/f16onxen6.ks</a></p>
]]></content:encoded>
			<wfw:commentRss>http://muchtall.com/2012/05/20/installing-fedora-16-on-xenserver-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cisco ASDM-IDM Launcher: Stuck on &#8220;Contacting the device. Please wait&#8230;&#8221;</title>
		<link>http://muchtall.com/2012/04/09/cisco-asdm-idm-launcher-stuck-on-contacting-the-device-please-wait/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cisco-asdm-idm-launcher-stuck-on-contacting-the-device-please-wait</link>
		<comments>http://muchtall.com/2012/04/09/cisco-asdm-idm-launcher-stuck-on-contacting-the-device-please-wait/#comments</comments>
		<pubDate>Mon, 09 Apr 2012 16:12:53 +0000</pubDate>
		<dc:creator>MuchTall</dc:creator>
				<category><![CDATA[HowTo's]]></category>

		<guid isPermaLink="false">http://muchtall.com/?p=443</guid>
		<description><![CDATA[<img src="http://muchtall.com/wp-content/uploads/hammer.jpg" width="61" height="76" alt="HowTo's" title="HowTo's" /><br/><p>I recently ran into an issue on Windows 7 64-bit where ADSM-ISM Launcher failed to connect to my ASAs. Launching the application from a shortcut, and attempting to connect resulted in the launcher halting on &#8220;Contacting the device. Please wait&#8230;&#8221;. And waiting didn&#8217;t help. Opening the java console revealed another error which didn&#8217;t get me [...]]]></description>
				<content:encoded><![CDATA[<img src="http://muchtall.com/wp-content/uploads/hammer.jpg" width="61" height="76" alt="HowTo's" title="HowTo's" /><br/><p>I recently ran into an issue on Windows 7 64-bit where ADSM-ISM Launcher failed to connect to my ASAs. Launching the application from a shortcut, and attempting to connect resulted in the launcher halting on &#8220;Contacting the device. Please wait&#8230;&#8221;. And waiting didn&#8217;t help. Opening the java console revealed another error which didn&#8217;t get me any useful results on Google:</p>
<p><strong>Exception in thread &#8220;AWT-EventQueue-0&#8243; java.lang.ClassCastException: sun.security.ssl.X509TrustManagerImpl cannot be cast to com.sun.net.ssl.internal.ssl.X509ExtendedTrustManager</strong></p>
<p>However, if I &#8220;re-installed&#8221; ASDM via the &#8220;dm-launcher.msi&#8221;, the first time it was spawned by the installer, everything worked fine. Subsequent launches from the application shortcuts failed. A quick check with Process Explorer revealed the issue. The dm-launcher installer launched the java app using &#8220;C:\Windows\SysWOW64\javaw.exe&#8221;, whereas the shortcut would use &#8220;C:\Windows\system32\javaw.exe&#8221;.</p>
<p>The ultimate fix ended up being updating all my ASDM shortcuts to use &#8220;C:\Windows\SysWOW64\javaw.exe&#8221;. Now everything is working great!</p>
<p><strong>UPDATE 2/25/2013:</strong> So the pain continues with Java 7. If you have upgraded your JRE, you probably saw a recurrence of this issue. In that case, I recommend pointing your shortcut(s) directly to the version 1.6/6 JRE instead:<br />
<code>"C:\Program Files\Java\jre6\bin\javaw.exe"</code></p>
<p>Hope this helps someone else out there.</p>
]]></content:encoded>
			<wfw:commentRss>http://muchtall.com/2012/04/09/cisco-asdm-idm-launcher-stuck-on-contacting-the-device-please-wait/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>
