<?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>[Ever]Evolving Software, Sean McIlvenna</title>
	<atom:link href="http://www.everevolvingsoftware.com/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.everevolvingsoftware.com</link>
	<description>Evolving software one discussion at a time.</description>
	<lastBuildDate>Mon, 14 May 2012 21:19:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<item>
		<title>Developing Mono-Android for C#</title>
		<link>http://www.everevolvingsoftware.com/index.php/2012/05/14/developing-mono-android-for-c/</link>
		<comments>http://www.everevolvingsoftware.com/index.php/2012/05/14/developing-mono-android-for-c/#comments</comments>
		<pubDate>Mon, 14 May 2012 21:19:53 +0000</pubDate>
		<dc:creator>Sean</dc:creator>
				<category><![CDATA[Informative]]></category>

		<guid isPermaLink="false">http://www.everevolvingsoftware.com/?p=212</guid>
		<description><![CDATA[I started playing around with the Mono-Android SDK. Pretty cool stuff! Not having developed anything for Android yet, it was admittedly confusing at first trying to figure out the structure of things. For example, the link between the XML UI definition and the actually class objects. Why you have to use + and / in ID, is [...]]]></description>
			<content:encoded><![CDATA[<p>I started playing around with the Mono-Android SDK. Pretty cool stuff! Not having developed anything for Android yet, it was admittedly confusing at first trying to figure out the structure of things. For example, the link between the XML UI definition and the actually class objects. Why you have to use + and / in ID, is very odd. I have yet to figure out the meaning behind it.</p>
<p>Pluses:</p>
<ul>
<li>Pretty easy to jump into. The visual studio project template jumps you right into it with a very basic application.</li>
<li>Configuration is reasonably simple. Ultimately, the installer app for Android SDK could never find my Java SDK installation. It worked out in the end though when I just used the .zip archive of the Android SDK and changed the settings in the Visual Studio Mono-Android app to point to the location of the Android SDK.</li>
</ul>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F05%2F14%2Fdeveloping-mono-android-for-c%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F05%2F14%2Fdeveloping-mono-android-for-c%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F05%2F14%2Fdeveloping-mono-android-for-c%2F&amp;linkname=Developing%20Mono-Android%20for%20C%23" title="Google Reader" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_button_email" href="http://www.addtoany.com/add_to/email?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F05%2F14%2Fdeveloping-mono-android-for-c%2F&amp;linkname=Developing%20Mono-Android%20for%20C%23" title="Email" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/email.png" width="16" height="16" alt="Email"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F05%2F14%2Fdeveloping-mono-android-for-c%2F&amp;linkname=Developing%20Mono-Android%20for%20C%23" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F05%2F14%2Fdeveloping-mono-android-for-c%2F&amp;linkname=Developing%20Mono-Android%20for%20C%23" title="Reddit" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_wordpress" href="http://www.addtoany.com/add_to/wordpress?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F05%2F14%2Fdeveloping-mono-android-for-c%2F&amp;linkname=Developing%20Mono-Android%20for%20C%23" title="WordPress" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/wordpress.png" width="16" height="16" alt="WordPress"/></a><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F05%2F14%2Fdeveloping-mono-android-for-c%2F&amp;counturl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F05%2F14%2Fdeveloping-mono-android-for-c%2F&amp;count=none&amp;text=Developing%20Mono-Android%20for%20C%23" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F05%2F14%2Fdeveloping-mono-android-for-c%2F&amp;counturl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F05%2F14%2Fdeveloping-mono-android-for-c%2F&amp;count=none&amp;text=Developing%20Mono-Android%20for%20C%23" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a class="a2a_button_myspace" href="http://www.addtoany.com/add_to/myspace?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F05%2F14%2Fdeveloping-mono-android-for-c%2F&amp;linkname=Developing%20Mono-Android%20for%20C%23" title="MySpace" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/myspace.png" width="16" height="16" alt="MySpace"/></a><a class="a2a_button_hotmail" href="http://www.addtoany.com/add_to/hotmail?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F05%2F14%2Fdeveloping-mono-android-for-c%2F&amp;linkname=Developing%20Mono-Android%20for%20C%23" title="Hotmail" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/live.png" width="16" height="16" alt="Hotmail"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F05%2F14%2Fdeveloping-mono-android-for-c%2F&amp;title=Developing%20Mono-Android%20for%20C%23" id="wpa2a_2">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.everevolvingsoftware.com/index.php/2012/05/14/developing-mono-android-for-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Multiple providers with ASP.NET Forms Authentication</title>
		<link>http://www.everevolvingsoftware.com/index.php/2012/05/14/multiple-providers-with-asp-net-forms-authentication/</link>
		<comments>http://www.everevolvingsoftware.com/index.php/2012/05/14/multiple-providers-with-asp-net-forms-authentication/#comments</comments>
		<pubDate>Mon, 14 May 2012 21:10:35 +0000</pubDate>
		<dc:creator>Sean</dc:creator>
				<category><![CDATA[Solutions]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[CSharp]]></category>
		<category><![CDATA[Login Control]]></category>
		<category><![CDATA[Membership]]></category>
		<category><![CDATA[Membership Provider]]></category>
		<category><![CDATA[Multiple Providers]]></category>
		<category><![CDATA[ProviderName]]></category>
		<category><![CDATA[Role Provider]]></category>
		<category><![CDATA[RolePrincipal]]></category>
		<category><![CDATA[Roles]]></category>

		<guid isPermaLink="false">http://www.everevolvingsoftware.com/?p=258</guid>
		<description><![CDATA[Microsoft claims that it is easy to setup multiple member and role providers in .NET. While that appears to be relatively true for configuration, getting Forms Authentication (most particularly, the ASP.NET Login control) to respect the multiple providers is much more difficult. I spent probably 3 hours this weekend trying to find good solutions to [...]]]></description>
			<content:encoded><![CDATA[<p>Microsoft claims that it is easy to setup multiple member and role providers in .NET. While that appears to be relatively true for configuration, getting Forms Authentication (most particularly, the ASP.NET Login control) to respect the multiple providers is much more difficult. I spent probably 3 hours this weekend trying to find good solutions to this problem… Many were present, but no single one solution provided the behavior I was looking for.<span id="more-258"></span></p>
<p>Ultimately the problem was related to the fact that the Login control is only intended for one membership provider (the default configured provider). One of the first posts I found indicated that you have to hook into the “Authenticate” event of the Login control so that you can validate against multiple membership providers, rather than the default configured membership provider (which is the default behavior of the Login control). I did this… However, the problem I ended up with was that the RolePrincipal.ProviderName property set in HttpContext.Current.User was not the provider that I had authenticated with. This caused the ASP.NET authentication mechanism to use the default configured role manager instead of the role manager intended for the membership provider that the user was authenticated with.</p>
<p>At first I thought I would programmatically change the MembershipProvider property of the Login control so that it would not use the default configuration membership provider, but for some reason that never worked.</p>
<p>Next I decided to try use the custom principal and store the correct membership provider along with the principal. Attempting that, however, caused a “Type not found for member” exception, supposedly because the principal is serialized to the app domain, rather than to the user context. There were suggestions to implement my own version of ISerializable on the principal and identity objects (which I tried), but that didn’t work either. There was also a suggestion to load the assembly that contained the IPrincipal and IIdentity objects into the GAC. I tried that as well, with no good results. I ended up ditching the custom principal and identities concept…</p>
<p>Lastly, I found a post saying I should store the extra information in the UserData property of the FormsAuthenticationTicket, and then set the data to a new RolePrincipal object within the Global.asax’s Application_AuthenticateRequest() method. That worked the first time, but subsequent loads to a page would lose information. Eventually I discovered the Application_PostAuthenticateRequest() method, which worked.</p>
<p>So, here is the fruits of my labor on the subject, in several small examples:</p>
<p><strong>Login.aspx</strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong></p>
<pre>protected void LoginUser_Authenticate(object sender, AuthenticateEventArgs e)
{
    this.authenticated =
        e.Authenticated = AuthHelper.Login(this.LoginUser.UserName, this.LoginUser.Password, out this.authenticatedProvider);
}

protected void LoginUser_LoggedIn(object sender, EventArgs e)
{
    if (this.authenticated)
    {
        string userData = string.Format("Provider={0}", authenticatedProvider);
        FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1, this.LoginUser.UserName, DateTime.Now, DateTime.Now.AddHours(2), true, userData);
        string encAuthTicket = FormsAuthentication.Encrypt(authTicket);
        HttpCookie faCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encAuthTicket);

        if (Response.Cookies[FormsAuthentication.FormsCookieName] != null)
            Response.Cookies.Set(faCookie);
        else
            Response.Cookies.Add(faCookie);
    }
}</pre>
<p></strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong>Global.asax</strong></p>
<pre>protected void Application_PostAuthenticateRequest(object sender, EventArgs e)
{
    HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];

    if (authCookie != null)
    {
        FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);

        if (!string.IsNullOrEmpty(authTicket.UserData))
        {
            string[] parts = authTicket.UserData.Split('=');

            if (parts.Length == 2 &amp;&amp; parts[0] == "Provider")
            {
                RolePrincipal newRolePrincipal = new RolePrincipal(parts[1], HttpContext.Current.User.Identity);
                HttpContext.Current.User = newRolePrincipal;
                Thread.CurrentPrincipal = newRolePrincipal;
            }
        }
    }
}</pre>
<p>In the end, using the above code, I was able to make calls to HttpContext.Current.User.IsInRole() for any user authenticated on any membership provider and it would get directed to the <em>appropriate </em>role provider based on the ProviderName set in the principal from the PostAuthenticateRequest() method.</p>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F05%2F14%2Fmultiple-providers-with-asp-net-forms-authentication%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F05%2F14%2Fmultiple-providers-with-asp-net-forms-authentication%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F05%2F14%2Fmultiple-providers-with-asp-net-forms-authentication%2F&amp;linkname=Multiple%20providers%20with%20ASP.NET%20Forms%20Authentication" title="Google Reader" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_button_email" href="http://www.addtoany.com/add_to/email?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F05%2F14%2Fmultiple-providers-with-asp-net-forms-authentication%2F&amp;linkname=Multiple%20providers%20with%20ASP.NET%20Forms%20Authentication" title="Email" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/email.png" width="16" height="16" alt="Email"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F05%2F14%2Fmultiple-providers-with-asp-net-forms-authentication%2F&amp;linkname=Multiple%20providers%20with%20ASP.NET%20Forms%20Authentication" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F05%2F14%2Fmultiple-providers-with-asp-net-forms-authentication%2F&amp;linkname=Multiple%20providers%20with%20ASP.NET%20Forms%20Authentication" title="Reddit" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_wordpress" href="http://www.addtoany.com/add_to/wordpress?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F05%2F14%2Fmultiple-providers-with-asp-net-forms-authentication%2F&amp;linkname=Multiple%20providers%20with%20ASP.NET%20Forms%20Authentication" title="WordPress" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/wordpress.png" width="16" height="16" alt="WordPress"/></a><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F05%2F14%2Fmultiple-providers-with-asp-net-forms-authentication%2F&amp;counturl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F05%2F14%2Fmultiple-providers-with-asp-net-forms-authentication%2F&amp;count=none&amp;text=Multiple%20providers%20with%20ASP.NET%20Forms%20Authentication" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F05%2F14%2Fmultiple-providers-with-asp-net-forms-authentication%2F&amp;counturl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F05%2F14%2Fmultiple-providers-with-asp-net-forms-authentication%2F&amp;count=none&amp;text=Multiple%20providers%20with%20ASP.NET%20Forms%20Authentication" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a class="a2a_button_myspace" href="http://www.addtoany.com/add_to/myspace?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F05%2F14%2Fmultiple-providers-with-asp-net-forms-authentication%2F&amp;linkname=Multiple%20providers%20with%20ASP.NET%20Forms%20Authentication" title="MySpace" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/myspace.png" width="16" height="16" alt="MySpace"/></a><a class="a2a_button_hotmail" href="http://www.addtoany.com/add_to/hotmail?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F05%2F14%2Fmultiple-providers-with-asp-net-forms-authentication%2F&amp;linkname=Multiple%20providers%20with%20ASP.NET%20Forms%20Authentication" title="Hotmail" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/live.png" width="16" height="16" alt="Hotmail"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F05%2F14%2Fmultiple-providers-with-asp-net-forms-authentication%2F&amp;title=Multiple%20providers%20with%20ASP.NET%20Forms%20Authentication" id="wpa2a_4">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.everevolvingsoftware.com/index.php/2012/05/14/multiple-providers-with-asp-net-forms-authentication/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JIRA 5 Sharing &amp; Mentions with Exchange 2010</title>
		<link>http://www.everevolvingsoftware.com/index.php/2012/02/27/jira-5-sharing-mentions-with-exchange-2010/</link>
		<comments>http://www.everevolvingsoftware.com/index.php/2012/02/27/jira-5-sharing-mentions-with-exchange-2010/#comments</comments>
		<pubDate>Mon, 27 Feb 2012 02:49:09 +0000</pubDate>
		<dc:creator>Sean</dc:creator>
				<category><![CDATA[Solutions]]></category>
		<category><![CDATA[anyone]]></category>
		<category><![CDATA[everyone]]></category>
		<category><![CDATA[exchange 2010]]></category>
		<category><![CDATA[jira]]></category>
		<category><![CDATA[receive connector]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[send as]]></category>

		<guid isPermaLink="false">http://www.everevolvingsoftware.com/?p=253</guid>
		<description><![CDATA[I recently updated our company&#8217;s JIRA installation to the latest version, JIRA 5. I was very excited to see the new sharing/mentioning features in JIRA. Unfortunately, I found that I had some initial problems getting the new features to work with our Exchange environment. Here are the solutions to those problems. Changes to SMTP settings [...]]]></description>
			<content:encoded><![CDATA[<p>I recently updated our company&#8217;s JIRA installation to the latest version, JIRA 5. I was very excited to see the new sharing/mentioning features in JIRA. Unfortunately, I found that I had some initial problems getting the new features to work with our Exchange environment.</p>
<p>Here are the solutions to those problems.<span id="more-253"></span></p>
<h2>Changes to SMTP settings</h2>
<p>First off, they made some changes to the email system that broke my SMTP settings. The exchange system replied with something like &#8220;User could not be authenticated&#8221;. Whatever changes they made behind the scenes, seemed to be causing my Exchange environment to reject the authentication method I was using. Prior to the JIRA update, my SMTP settings were set to use port 25 of the Exchange system. After I upgraded, I had to change the port to 587 and turn on TLS. This made authentication work again.</p>
<h2>Can&#8217;t send on as other users&#8230;</h2>
<p>After my SMTP settings were authenticating again, I ran into the next issue. My regular notifications worked just fine, but sharing/mentioning did not. The Exchange server was rejecting the emails because JIRA uses the logged in user&#8217;s email address in the &#8220;FROM:&#8221; address, rather than the default &#8220;jira@myorganization.com&#8221; email address that is setup in SMTP settings. So, in my example, it was trying to send email FROM sean@myorganization.com, rather than jira@myorganization.com. This was a big issue beacuse the default settings for Exchange do not allow authenticated users to send as just anyone&#8230; It only allows the authenticated user to send as themselves.</p>
<p>I searched for several hours trying to figure out how to get my jira email address to be allowed to send as anyone&#8230; There were solutions on a per-user basis, where I could assign my &#8220;sean@myorganization.com&#8221; user specific security privileges for the jira@myorganization.com user to send mail as me&#8230; But this isn&#8217;t what I wanted. For one, we have many users and I don&#8217;t want to have to go through each user and give jira the ability to send email as them. For two, we have several users of JIRA who are external to the organization and don&#8217;t have an @myorganization.com email. I wanted my Exchange environment to allow JIRA to relay email for anyone of these internal OR external users.</p>
<p>The solution took a while to figure out, and a little debugging. I found one post that showed how to setup the Exchange receive connector (on port 587) to allow anonymous users to send email as anyone. But I <em>definately </em>don&#8217;t want that&#8230; By using the Exchange Monitor I was able to figure out the right settings that I needed to apply to the receive connector to allow my jira@myorganization.com user to send emails as <em>anyone</em>. Here it is:</p>
<p>Get-ReceiveConnector &#8220;My Internal Receive Connector on Port 587&#8243; | Add-AdPermission -User jira@myorganization.com -ExtendedRights ms-Exch-SMTP-Submit,ms-Exch-SMTP-Accept-Any-Recipient,ms-Exch-SMTP-Accept-Any-Sender,ms-Exch-SMTP-Accept-Exch50,ms-Exch-Bypass-Anti-Spam,<strong>ms-Exch-SMTP-Accept-Authoritative-Domain-Sender</strong></p>
<p>The last option was one of the critical options that ended up making the whole thing work. Once I applied these security settings to my receive connector for the JIRA user, everything worked just fine.</p>
<p>One thing to note: I am using a VERY complicated password for the jira@myorganization.com user&#8230; You wouldn&#8217;t want this JIRA account to get hacked, because it would allow that person to send email on behalf of anyone in the organization.</p>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F02%2F27%2Fjira-5-sharing-mentions-with-exchange-2010%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F02%2F27%2Fjira-5-sharing-mentions-with-exchange-2010%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F02%2F27%2Fjira-5-sharing-mentions-with-exchange-2010%2F&amp;linkname=JIRA%205%20Sharing%20%26%23038%3B%20Mentions%20with%20Exchange%202010" title="Google Reader" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_button_email" href="http://www.addtoany.com/add_to/email?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F02%2F27%2Fjira-5-sharing-mentions-with-exchange-2010%2F&amp;linkname=JIRA%205%20Sharing%20%26%23038%3B%20Mentions%20with%20Exchange%202010" title="Email" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/email.png" width="16" height="16" alt="Email"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F02%2F27%2Fjira-5-sharing-mentions-with-exchange-2010%2F&amp;linkname=JIRA%205%20Sharing%20%26%23038%3B%20Mentions%20with%20Exchange%202010" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F02%2F27%2Fjira-5-sharing-mentions-with-exchange-2010%2F&amp;linkname=JIRA%205%20Sharing%20%26%23038%3B%20Mentions%20with%20Exchange%202010" title="Reddit" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_wordpress" href="http://www.addtoany.com/add_to/wordpress?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F02%2F27%2Fjira-5-sharing-mentions-with-exchange-2010%2F&amp;linkname=JIRA%205%20Sharing%20%26%23038%3B%20Mentions%20with%20Exchange%202010" title="WordPress" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/wordpress.png" width="16" height="16" alt="WordPress"/></a><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F02%2F27%2Fjira-5-sharing-mentions-with-exchange-2010%2F&amp;counturl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F02%2F27%2Fjira-5-sharing-mentions-with-exchange-2010%2F&amp;count=none&amp;text=JIRA%205%20Sharing%20%26%23038%3B%20Mentions%20with%20Exchange%202010" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F02%2F27%2Fjira-5-sharing-mentions-with-exchange-2010%2F&amp;counturl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F02%2F27%2Fjira-5-sharing-mentions-with-exchange-2010%2F&amp;count=none&amp;text=JIRA%205%20Sharing%20%26%23038%3B%20Mentions%20with%20Exchange%202010" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a class="a2a_button_myspace" href="http://www.addtoany.com/add_to/myspace?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F02%2F27%2Fjira-5-sharing-mentions-with-exchange-2010%2F&amp;linkname=JIRA%205%20Sharing%20%26%23038%3B%20Mentions%20with%20Exchange%202010" title="MySpace" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/myspace.png" width="16" height="16" alt="MySpace"/></a><a class="a2a_button_hotmail" href="http://www.addtoany.com/add_to/hotmail?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F02%2F27%2Fjira-5-sharing-mentions-with-exchange-2010%2F&amp;linkname=JIRA%205%20Sharing%20%26%23038%3B%20Mentions%20with%20Exchange%202010" title="Hotmail" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/live.png" width="16" height="16" alt="Hotmail"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2012%2F02%2F27%2Fjira-5-sharing-mentions-with-exchange-2010%2F&amp;title=JIRA%205%20Sharing%20%26%23038%3B%20Mentions%20with%20Exchange%202010" id="wpa2a_6">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.everevolvingsoftware.com/index.php/2012/02/27/jira-5-sharing-mentions-with-exchange-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programmatic generation of word documents</title>
		<link>http://www.everevolvingsoftware.com/index.php/2011/07/01/programmatic-generation-of-word-documents/</link>
		<comments>http://www.everevolvingsoftware.com/index.php/2011/07/01/programmatic-generation-of-word-documents/#comments</comments>
		<pubDate>Fri, 01 Jul 2011 23:26:36 +0000</pubDate>
		<dc:creator>Sean</dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[easy to use]]></category>
		<category><![CDATA[generate word documents]]></category>
		<category><![CDATA[microsoft office pia]]></category>
		<category><![CDATA[microsoft open xml api]]></category>
		<category><![CDATA[open xml]]></category>

		<guid isPermaLink="false">http://www.everevolvingsoftware.com/?p=246</guid>
		<description><![CDATA[I had the opportunity to play around with generating word documents last week. At first I looked at what I had used before (the Office PIA). I quickly remembered that it was not very easy to work with because most of it is based on COM interop anyways. Further-more, I stumbled across a little MSDN [...]]]></description>
			<content:encoded><![CDATA[<p>I had the opportunity to play around with generating word documents last week. At first I looked at what I had used before (the Office PIA).</p>
<p>I quickly remembered that it was not very easy to work with because most of it is based on COM interop anyways. Further-more, I stumbled across a little MSDN article that stated that the Office PIA should <em>not </em>be used to generate documents from a server; it suggested that it only be used in desktop application environments where a user is controlling the application itself. I imagine that is because the Office PIA really only invokes the Word application and tells the Word application what to do in real-time (or something like that)&#8230; and that makes sense to me. Can you imagine a web server that gets even 100 users spawning each of their own processes of word.exe to generate a doc?! Production&#8230; Nightmare&#8230;<span id="more-246"></span></p>
<p>Trying to think of some alternatives, I stumbled across Microsoft&#8217;s Open XML API. <em>What a wonderful thing.</em> Sure, it&#8217;s not generating documents in the well-established .doc format from 97, but then again, that format was established in 97. Isn&#8217;t it about time we move on? Newer versions of Office even default to .docx formats. I used to reset the defaults back to .doc, but eventually gave up and started paying attention to who the audience of my documents was before I hit the save button; something a good writer should do anyways.</p>
<p>In any event: After deciding that it was OK to generate in .docx format and then convert to .doc (only if needed), I played around with the API a bit and was astounded with how much easier it was to create a word document with the Open XML API rather than the Office PIA. Take a look at these little examples:</p>
<p><strong>Creating a document package:</strong></p>
<pre>using (MemoryStream docStream = new MemoryStream())
{
    WordprocessingDocument document = WordprocessingDocument.Create(
        this.docStream,
        DocumentFormat.OpenXml.WordprocessingDocumentType.Document);
    document.AddMainDocumentPart();

    // A method I use to setup the CSS (sorta) styles for the document
    SetupStyles(this.document.MainDocumentPart.AddNewPart());

    document.MainDocumentPart.Document =
        new Document(
            new Body());

    // DO STUFF TO THE DOC HERE

    document.Close();

    // Read the memory stream to get the binary contents of the document
}</pre>
<p><strong>Add a header line:</strong></p>
<pre>// Add a Header1
Paragraph p1 = new Paragraph(
    new ParagraphProperties(
        new ParagraphStyleId() { Val = "Heading1" }),
    new Run(
        new Text("This is a test header")));
document.MainDocumentPart.Document.Body.AppendChild(p1);</pre>
<p><strong>Create a table:</strong></p>
<pre>// Add a table
Table t = new Table();

TableRow r1 = new TableRow(
    new TableCell(
        new Paragraph(
            new Run(
                new Text("Row1-Cell1")))),
    new TableCell(
        new Paragraph(
            new Run(
                new Text("Row1-Cell2")))));
TableRow r2 = new TableRow(
    new TableCell(
        new Paragraph(
            new Run(
                new Text("Row2-Cell1")))),
    new TableCell(
        new Paragraph(
            new Run(
                new Text("Row2-Cell2")))));

t.AppendChild(r1);
t.AppendChild(r2);

document.MainDocumentPart.Document.Body.AppendChild(t);</pre>
<p>Those are only three of snippets I was able to come up with in a matter of a couple hours. I have other examples of adding images, creating internal hyper-links, creating external hyperlinks (all of which are about equally as easy).</p>
<p>The only down-side I can see so far to the MS Open XML API is that it doesn&#8217;t seem very well documented. I found better examples contributed by joe-nobody&#8217;s like myself than I did from Microsoft. Sure, they have class documentation, but that doesn&#8217;t compare to examples when dealing with a complex API like this.</p>
<p>I hope I get to work with the API more soon, cause it seems fun!</p>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F07%2F01%2Fprogrammatic-generation-of-word-documents%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F07%2F01%2Fprogrammatic-generation-of-word-documents%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F07%2F01%2Fprogrammatic-generation-of-word-documents%2F&amp;linkname=Programmatic%20generation%20of%20word%20documents" title="Google Reader" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_button_email" href="http://www.addtoany.com/add_to/email?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F07%2F01%2Fprogrammatic-generation-of-word-documents%2F&amp;linkname=Programmatic%20generation%20of%20word%20documents" title="Email" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/email.png" width="16" height="16" alt="Email"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F07%2F01%2Fprogrammatic-generation-of-word-documents%2F&amp;linkname=Programmatic%20generation%20of%20word%20documents" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F07%2F01%2Fprogrammatic-generation-of-word-documents%2F&amp;linkname=Programmatic%20generation%20of%20word%20documents" title="Reddit" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_wordpress" href="http://www.addtoany.com/add_to/wordpress?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F07%2F01%2Fprogrammatic-generation-of-word-documents%2F&amp;linkname=Programmatic%20generation%20of%20word%20documents" title="WordPress" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/wordpress.png" width="16" height="16" alt="WordPress"/></a><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F07%2F01%2Fprogrammatic-generation-of-word-documents%2F&amp;counturl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F07%2F01%2Fprogrammatic-generation-of-word-documents%2F&amp;count=none&amp;text=Programmatic%20generation%20of%20word%20documents" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F07%2F01%2Fprogrammatic-generation-of-word-documents%2F&amp;counturl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F07%2F01%2Fprogrammatic-generation-of-word-documents%2F&amp;count=none&amp;text=Programmatic%20generation%20of%20word%20documents" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a class="a2a_button_myspace" href="http://www.addtoany.com/add_to/myspace?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F07%2F01%2Fprogrammatic-generation-of-word-documents%2F&amp;linkname=Programmatic%20generation%20of%20word%20documents" title="MySpace" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/myspace.png" width="16" height="16" alt="MySpace"/></a><a class="a2a_button_hotmail" href="http://www.addtoany.com/add_to/hotmail?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F07%2F01%2Fprogrammatic-generation-of-word-documents%2F&amp;linkname=Programmatic%20generation%20of%20word%20documents" title="Hotmail" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/live.png" width="16" height="16" alt="Hotmail"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F07%2F01%2Fprogrammatic-generation-of-word-documents%2F&amp;title=Programmatic%20generation%20of%20word%20documents" id="wpa2a_8">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.everevolvingsoftware.com/index.php/2011/07/01/programmatic-generation-of-word-documents/feed/</wfw:commentRss>
		<slash:comments>58</slash:comments>
		</item>
		<item>
		<title>IIS7 URL Rewrite Basic Authentication Problems</title>
		<link>http://www.everevolvingsoftware.com/index.php/2011/05/02/ii7-url-rewrite-basic-authentication-problems/</link>
		<comments>http://www.everevolvingsoftware.com/index.php/2011/05/02/ii7-url-rewrite-basic-authentication-problems/#comments</comments>
		<pubDate>Mon, 02 May 2011 19:02:11 +0000</pubDate>
		<dc:creator>Sean</dc:creator>
				<category><![CDATA[Solutions]]></category>
		<category><![CDATA[basic authentication]]></category>
		<category><![CDATA[broken authentication]]></category>
		<category><![CDATA[iis 7]]></category>
		<category><![CDATA[tomcat]]></category>
		<category><![CDATA[url rewrite]]></category>

		<guid isPermaLink="false">http://www.everevolvingsoftware.com/?p=238</guid>
		<description><![CDATA[I have an IIS7 machine that is redirecting traffic for a tomcat application on our network. It was working fine until I realized that the webdav module of the application wasn&#8217;t authenticating. However, the un-proxy&#8217;d URL works just fine, so I figured it had to have something to do with IIS proxying the request. As [...]]]></description>
			<content:encoded><![CDATA[<p>I have an IIS7 machine that is redirecting traffic for a tomcat application on our network. It was working fine until I realized that the webdav module of the application wasn&#8217;t authenticating. However, the un-proxy&#8217;d URL works just fine, so I figured it had to have something to do with IIS proxying the request.</p>
<p>As it turns out, I was right. A huge amount of digging led me to find that basic authentication can&#8217;t be turned on in the website that is proxying requests for other applications that use basic authentication. It seems that IIS gets confused thinking that it should authenticate on the host machine, rather than the machine that it is proxying requests to.</p>
<p>Once I turned off basic authentication on the IIS website, basic authentcation passed without any problems to the application being proxied. Hopefully I never need to use basic authentication on the website that is proxying for these other applications though, or I will be out of luck.</p>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F05%2F02%2Fii7-url-rewrite-basic-authentication-problems%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F05%2F02%2Fii7-url-rewrite-basic-authentication-problems%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F05%2F02%2Fii7-url-rewrite-basic-authentication-problems%2F&amp;linkname=IIS7%20URL%20Rewrite%20Basic%20Authentication%20Problems" title="Google Reader" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_button_email" href="http://www.addtoany.com/add_to/email?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F05%2F02%2Fii7-url-rewrite-basic-authentication-problems%2F&amp;linkname=IIS7%20URL%20Rewrite%20Basic%20Authentication%20Problems" title="Email" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/email.png" width="16" height="16" alt="Email"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F05%2F02%2Fii7-url-rewrite-basic-authentication-problems%2F&amp;linkname=IIS7%20URL%20Rewrite%20Basic%20Authentication%20Problems" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F05%2F02%2Fii7-url-rewrite-basic-authentication-problems%2F&amp;linkname=IIS7%20URL%20Rewrite%20Basic%20Authentication%20Problems" title="Reddit" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_wordpress" href="http://www.addtoany.com/add_to/wordpress?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F05%2F02%2Fii7-url-rewrite-basic-authentication-problems%2F&amp;linkname=IIS7%20URL%20Rewrite%20Basic%20Authentication%20Problems" title="WordPress" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/wordpress.png" width="16" height="16" alt="WordPress"/></a><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F05%2F02%2Fii7-url-rewrite-basic-authentication-problems%2F&amp;counturl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F05%2F02%2Fii7-url-rewrite-basic-authentication-problems%2F&amp;count=none&amp;text=IIS7%20URL%20Rewrite%20Basic%20Authentication%20Problems" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F05%2F02%2Fii7-url-rewrite-basic-authentication-problems%2F&amp;counturl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F05%2F02%2Fii7-url-rewrite-basic-authentication-problems%2F&amp;count=none&amp;text=IIS7%20URL%20Rewrite%20Basic%20Authentication%20Problems" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a class="a2a_button_myspace" href="http://www.addtoany.com/add_to/myspace?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F05%2F02%2Fii7-url-rewrite-basic-authentication-problems%2F&amp;linkname=IIS7%20URL%20Rewrite%20Basic%20Authentication%20Problems" title="MySpace" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/myspace.png" width="16" height="16" alt="MySpace"/></a><a class="a2a_button_hotmail" href="http://www.addtoany.com/add_to/hotmail?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F05%2F02%2Fii7-url-rewrite-basic-authentication-problems%2F&amp;linkname=IIS7%20URL%20Rewrite%20Basic%20Authentication%20Problems" title="Hotmail" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/live.png" width="16" height="16" alt="Hotmail"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F05%2F02%2Fii7-url-rewrite-basic-authentication-problems%2F&amp;title=IIS7%20URL%20Rewrite%20Basic%20Authentication%20Problems" id="wpa2a_10">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.everevolvingsoftware.com/index.php/2011/05/02/ii7-url-rewrite-basic-authentication-problems/feed/</wfw:commentRss>
		<slash:comments>61</slash:comments>
		</item>
		<item>
		<title>Bill Gates had it easy</title>
		<link>http://www.everevolvingsoftware.com/index.php/2011/04/29/bill-gates-had-it-easy/</link>
		<comments>http://www.everevolvingsoftware.com/index.php/2011/04/29/bill-gates-had-it-easy/#comments</comments>
		<pubDate>Fri, 29 Apr 2011 15:35:41 +0000</pubDate>
		<dc:creator>Sean</dc:creator>
				<category><![CDATA[Uncategorized Thoughts]]></category>
		<category><![CDATA[bill gates]]></category>
		<category><![CDATA[complex ideas]]></category>
		<category><![CDATA[content management system]]></category>
		<category><![CDATA[ideas no-one has thought of]]></category>
		<category><![CDATA[joomla and wordpress]]></category>
		<category><![CDATA[missed the mark]]></category>
		<category><![CDATA[revolutionizing the industry]]></category>
		<category><![CDATA[simple ideas]]></category>

		<guid isPermaLink="false">http://www.everevolvingsoftware.com/?p=231</guid>
		<description><![CDATA[Flying on the airplane the other day I was trying to think of some cool ideas for software that would already have been developed 10k times over&#8230; Then it dawned on me; Bill Gates had it easy. Back in the early 80&#8242;s, it seems to me that it was rather easy to come up with [...]]]></description>
			<content:encoded><![CDATA[<p>Flying on the airplane the other day I was trying to think of some cool ideas for software that would already have been developed 10k times over&#8230; Then it dawned on me; Bill Gates had it easy.</p>
<p>Back in the early 80&#8242;s, it seems to me that it was rather easy to come up with a unique (truly unique) idea in personal computers. One could argue that because graphical user interfaces weren&#8217;t common that it would be hard to imagine something so futuristic as google&#8230; But, never-the-less, it seems to me that there was SOOO much room for brilliant software inventions.</p>
<p>Now, when you try to think &#8220;what could I make that no else has?&#8221; you&#8217;re left stuck with ideas like</p>
<ol>
<li>Eye scanner (with some AI) that detects rapid eye movement in combination with mouse clicks to eventually replace mouse-clicks with simply looking at the screen</li>
<li>Windows modification that changes the position of shadows and the over-all ambiance of windows, buttons, etc. based on the location of sun-light within the room.</li>
<li>AI-based program that monitors general interests over time and displays news-worthy events based on established interests.</li>
<li>THE LIST GOES ON&#8230;</li>
</ol>
<p>WTF! Not only have all of those ideas probably already have been thought of by someone at MIT, but I couldn&#8217;t imagine the education I would need to accomplish them, much less the time or funding.<span id="more-231"></span></p>
<p>A while back a guy made some stupid little game about farting&#8230; Now of course, when you search online for &#8220;fart game&#8221;, instead of getting the one single game you would expect to see, you get dozens of remakes. Who would have thought that a game about farting would be such a big hit. The guy apparently sold thousands of copies virtually over-night, making him a ton of money selling the stupid thing at a couple bucks per copy. <em>That&#8217;s</em> the brilliant idea that I want to come up with. A stupid little idea that no one else has thought of that would be super easy to make. Unfortunately, those ideas aren&#8217;t quite as common.</p>
<p>It feels like I have missed the mark on all of the good ideas. 12 years ago, when I was programming for a hobby still, I had a brilliant idea to build a re-usable website that could have modules in it that did different things for different different needs, and had a desktop client that allows you to integrate with your website so that you could manages inventory, products, page contents, etc. from the desktop in a cache (draft?) type fashion. Then I got picked up by the workplace and couldn&#8217;t continue my little project while working a full-time job (so I felt). A short while later, out popped WordPress and Joomla. Looking back, I should have toughed it out and just finished the damn thing!</p>
<p>Good ideas in the technological world are hard to come by any more. When you finally <em>do </em>find something that someone else hasn&#8217;t developed, the idea is too complex to actually develop (involving too much time and money). I feel like it is comparable to <a title="Imagining the 10th dimension" href="http://www.tenthdimension.com/medialinks.php">imagining the 10th dimension</a>. We have a hard enough time imagining 4 dimensions, much less ten dimensions. A cheap, easy-to-develop idea is like the 10th dimension.</p>
<p>So, my point, is that Bill Gates had it easy. In the dawn of the technological era, how hard was it to imagine that there should be a visual interface? Then again, playing devils advocate, with the lack of technological development, maybe a visual interface to computers <em>was </em>the 10th dimension for most of us&#8230; I&#8217;ll assume that&#8217;s not the case though and just continue with the anger of how easy it was for Bill to imagine something that hasn&#8217;t been done in this industry yet.</p>
<p>Surely there is plenty of debate on the topic; but one I don&#8217;t want to hear about is how Bill stole the idea for a GUI from someone else. Whether he came up with the idea on his own (which I don&#8217;t believe he did), or he built on the idea and made something better (which I believe <em>he did</em>), the fact is that what he rolled with revolutionized the industry.</p>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F29%2Fbill-gates-had-it-easy%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F29%2Fbill-gates-had-it-easy%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F29%2Fbill-gates-had-it-easy%2F&amp;linkname=Bill%20Gates%20had%20it%20easy" title="Google Reader" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_button_email" href="http://www.addtoany.com/add_to/email?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F29%2Fbill-gates-had-it-easy%2F&amp;linkname=Bill%20Gates%20had%20it%20easy" title="Email" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/email.png" width="16" height="16" alt="Email"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F29%2Fbill-gates-had-it-easy%2F&amp;linkname=Bill%20Gates%20had%20it%20easy" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F29%2Fbill-gates-had-it-easy%2F&amp;linkname=Bill%20Gates%20had%20it%20easy" title="Reddit" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_wordpress" href="http://www.addtoany.com/add_to/wordpress?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F29%2Fbill-gates-had-it-easy%2F&amp;linkname=Bill%20Gates%20had%20it%20easy" title="WordPress" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/wordpress.png" width="16" height="16" alt="WordPress"/></a><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F29%2Fbill-gates-had-it-easy%2F&amp;counturl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F29%2Fbill-gates-had-it-easy%2F&amp;count=none&amp;text=Bill%20Gates%20had%20it%20easy" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F29%2Fbill-gates-had-it-easy%2F&amp;counturl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F29%2Fbill-gates-had-it-easy%2F&amp;count=none&amp;text=Bill%20Gates%20had%20it%20easy" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a class="a2a_button_myspace" href="http://www.addtoany.com/add_to/myspace?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F29%2Fbill-gates-had-it-easy%2F&amp;linkname=Bill%20Gates%20had%20it%20easy" title="MySpace" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/myspace.png" width="16" height="16" alt="MySpace"/></a><a class="a2a_button_hotmail" href="http://www.addtoany.com/add_to/hotmail?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F29%2Fbill-gates-had-it-easy%2F&amp;linkname=Bill%20Gates%20had%20it%20easy" title="Hotmail" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/live.png" width="16" height="16" alt="Hotmail"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F29%2Fbill-gates-had-it-easy%2F&amp;title=Bill%20Gates%20had%20it%20easy" id="wpa2a_12">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.everevolvingsoftware.com/index.php/2011/04/29/bill-gates-had-it-easy/feed/</wfw:commentRss>
		<slash:comments>51</slash:comments>
		</item>
		<item>
		<title>Migrating Crowd Directories</title>
		<link>http://www.everevolvingsoftware.com/index.php/2011/04/18/migrating-crowd-directories/</link>
		<comments>http://www.everevolvingsoftware.com/index.php/2011/04/18/migrating-crowd-directories/#comments</comments>
		<pubDate>Mon, 18 Apr 2011 19:00:25 +0000</pubDate>
		<dc:creator>Sean</dc:creator>
				<category><![CDATA[Informative]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[confluence]]></category>
		<category><![CDATA[crowd]]></category>
		<category><![CDATA[index]]></category>
		<category><![CDATA[internal directory]]></category>
		<category><![CDATA[jira]]></category>
		<category><![CDATA[ldap directory]]></category>
		<category><![CDATA[migrate]]></category>
		<category><![CDATA[migrating directories]]></category>
		<category><![CDATA[sql scripts]]></category>

		<guid isPermaLink="false">http://www.everevolvingsoftware.com/?p=218</guid>
		<description><![CDATA[When I originally started using Crowd, I set it up with an internal directory&#8230; A type of directory that is proprietary to the Crowd application. Ideally, I would have set it up with an AD/LDAP directory, but at the time I did not have one setup. Now, of course, I have one setup and want [...]]]></description>
			<content:encoded><![CDATA[<p>When I originally started using Crowd, I set it up with an internal directory&#8230; A type of directory that is proprietary to the Crowd application. Ideally, I would have set it up with an AD/LDAP directory, but at the time I did not have one setup. Now, of course, I have one setup and want to migrate away from the old (proprietary) directory to the new LDAP directory. Confluence and JIRA are both using Crowd for authentication/SSO and of course migrating from one directory to another is not as easy as I had originally thought it would be.</p>
<p>Atlassian Support recommended that I use the Alias feature in Crowd.. The problem with that though, is that it only provides a synchronization of passwords. The users would still have to continue using their old username to login to Confluence and JIRA. I believe the reason Atlassian chose to do this is because there are many &#8220;behind-the-scenes&#8221; references to a username. This must be so that users can freely be added and removed from Confluence/JIRA without directly affecting the integrity of Confluence pages and JIRA issues. However, this provides a problem for me, because in my scenario I no longer can afford to manage users that have two separate usernames.</p>
<p>I ended up creating a set of SQL scripts to migrate my users from the old (proprietary) directory, to the new (LDAP) directory. It is a <em>very</em> manual process and not one that I take lightly. Ultimately, I have to migrate one user at a time and it involves notifying the user that they cannot use Confluence or JIRA, restarting Confluence and JIRA a number of times and updating a number of tables in the Confluence and JIRA databases. Here I will outline the process in which I have followed to accomplish this and will also provide the SQL scripts for download. I make no guarantee that this migration process will work for anyone else, but thought I would at least share it just in case.<span id="more-218"></span></p>
<h2>Notes</h2>
<ul>
<li>Even though you update the JIRA tables, many fields are stored in  memory in JIRA&#8217;s index. Even restarting JIRA doesn&#8217;t always do the trick. For example, I had to manually perform a re-index in order to get assignee&#8217;s to update.</li>
<li>In JIRA, I have not been able to determine where the favorite filters are stored&#8230; So, the scripts do not update the favorite filters. That does not mean that the filters don&#8217;t exist, I just mean that they aren&#8217;t shown on the favorite filters.</li>
<li>These scripts were built for<strong> JIRA 4.3.2</strong> and<strong> Confluence 3.5.2</strong>.</li>
<li>THIS IS NOT A GUARANTEED PROCESS. If you screw up your Confluence and JIRA instances, it&#8217;s not my fault.</li>
</ul>
<h2>Process</h2>
<ol>
<li>Backup the database! Whether you are doing a migration for Confluence, or JIRA or <em>both, </em>backup the databases that you are working with.</li>
<li>Install the procedure that I created for the appropriate application(s).</li>
<li>Work on one user at a time.</li>
<li>Remove all groups from the internal directory for the given user.</li>
<li>Disable the user in the internal directory so that the use doesn&#8217;t count against the license count. You should only have to be worried about this if you have a limited number of users on your license. If you have an unlimited user license, you are in a better position then I.</li>
<li>Activate the user in the LDAP directory and perform a Crowd authentication test for the application in question.</li>
<li>Run the following MySQL command on the application&#8217;s database:
<pre>CALL MigrateUser('myOldUsername', 'mynewUsername', 1234);</pre>
</li>
<li>After running the MySQL command, review the returned results to make sure there are no remaining entries that did not get updated</li>
<li>Re-synchronize the Crowd User Directory in the Confluence or JIRA application.</li>
<li>Flush cache or re-index.
<ol>
<li>When running the script on JIRA, re-index the application (or restart it).</li>
<li>When running the script in Confluence, flush the cache (or restart it).</li>
</ol>
</li>
</ol>
<h2>JIRA Script</h2>
<pre>-- JIRA
DELIMITER $$

DROP PROCEDURE IF EXISTS `MigrateUser`$$
CREATE PROCEDURE `MigrateUser` (
    inOldUsername VARCHAR(255),
    inNewUsername VARCHAR(255),
    inDirectoryId INT
)
BEGIN
    -- Update the crowd user entry
    update cwd_user set
      user_name = inNewUsername,
      lower_user_name = inNewUsername
    where
      user_name = inOldUsername
      and directory_id = inDirectoryId;

    -- Remove crowd's old membership entries for groups (assumes groups have changed)
    delete from cwd_membership where child_name = inOldUsername and directory_id = inDirectoryId;

    -- Update the project roles for the new user
    update projectroleactor set ROLETYPEPARAMETER = inNewUsername where ROLETYPEPARAMETER = inOldUsername;

    -- Update jira issues to reflect new assigne and reporter
    update jiraissue set assignee = inNewUsername where assignee = inOldUsername;
    update jiraissue set reporter = inNewUsername where reporter = inOldUsername;

    -- Miscellaneous updates
    update columnlayout set username = inNewUsername where username = inOldUsername;
    update favouriteassociations set username = inNewUsername where USERNAME = inOldUsername;
    update filtersubscription set USERNAME = inNewUsername where USERNAME = inOldUsername;
    update portalpage set USERNAME = inNewUsername where USERNAME = inOldUsername;
    update searchrequest set authorname = inNewUsername, username = inNewUsername where username = inOldUsername;
    update userhistoryitem set USERNAME = inNewUsername where USERNAME = inOldUsername;
    update component set LEAD = inNewUsername where lead = inOldUsername;
    update userassociation set SOURCE_NAME = inNewUsername where SOURCE_NAME = inOldUsername;
    update worklog set AUTHOR = inNewUsername where AUTHOR = inOldUsername;
    update worklog set UPDATEAUTHOR = inNewUsername where UPDATEAUTHOR = inOldUsername;
    update project set LEAD = inNewUsername where LEAD = inOldUsername;

    select * from columnlayout where username = inOldUsername;
    select * from favouriteassociations where username = inOldUsername;
    select * from filtersubscription where username = inOldUsername;
    select * from portalpage where username = inOldUsername;
    select * from searchrequest where username = inOldUsername;
    select * from userhistoryitem where username = inOldUsername;
    select * from userbase where username = inOldUsername;
    select * from columnlayout where username = inOldUsername;
    select * from projectroleactor where ROLETYPEPARAMETER = inOldUsername;
    select * from cwd_user where user_name = inOldUsername and directory_id = inDirectoryId;
END</pre>
<h2>Confluence Script</h2>
<pre>-- CONFLUENCE
DELIMITER $$

DROP PROCEDURE IF EXISTS `MigrateUser`$$
CREATE PROCEDURE `MigrateUser` (
    inOldUsername VARCHAR(255),
    inNewUsername VARCHAR(255),
    inDirectoryId INT
)
BEGIN
    update ATTACHMENTS a set a.creator = inNewUsername where a.creator = inOldUsername;
    update ATTACHMENTS a set a.lastmodifier = inNewUsername where a.lastmodifier = inOldUsername;

    update CONTENT a set a.creator = inNewUsername where a.creator = inOldUsername;
    update CONTENT a set a.lastmodifier = inNewUsername where a.lastmodifier = inOldUsername;
    update CONTENT a set a.username = inNewUsername where a.username = inOldUsername;

    update CONTENTLOCK a set a.creator = inNewUsername where a.creator = inOldUsername;
    update CONTENTLOCK a set a.lastmodifier = inNewUsername where a.lastmodifier = inOldUsername;

    update CONTENT_LABEL a set a.owner = inNewUsername where a.owner = inOldUsername;

    update CONTENT_PERM a set a.creator = inNewUsername where a.creator = inOldUsername;
    update CONTENT_PERM a set a.lastmodifier = inNewUsername where a.lastmodifier = inOldUsername;
    update CONTENT_PERM a set a.username = inNewUsername where a.username = inOldUsername;

    update CWD_USER a set a.lower_user_name = LOWER(inNewUsername) where a.lower_user_name = LOWER(inOldUsername) and a.directory_id = inDirectoryId;
    update CWD_USER a set a.user_name = inNewUsername where a.user_name = inOldUsername and a.directory_id = inDirectoryId;

    update EXTRNLNKS a set a.creator = inNewUsername where a.creator = inOldUsername;
    update EXTRNLNKS a set a.lastmodifier = inNewUsername where a.lastmodifier = inOldUsername;

    update FOLLOW_CONNECTIONS a set a.followee = inNewUsername where a.followee = inOldUsername;
    update FOLLOW_CONNECTIONS a set a.follower = inNewUsername where a.follower = inOldUsername;

    update LABEL a set a.owner = inNewUsername where a.owner = inOldUsername;

    update LINKS a set a.creator = inNewUsername where a.creator = inOldUsername;
    update LINKS a set a.lastmodifier = inNewUsername where a.lastmodifier = inOldUsername;

    update NOTIFICATIONS a set a.creator = inNewUsername where a.creator = inOldUsername;
    update NOTIFICATIONS a set a.lastmodifier = inNewUsername where a.lastmodifier = inOldUsername;
    update NOTIFICATIONS a set a.username = inNewUsername where a.username = inOldUsername;

    update PAGETEMPLATES a set a.creator = inNewUsername where a.creator = inOldUsername;
    update PAGETEMPLATES a set a.lastmodifier = inNewUsername where a.lastmodifier = inOldUsername;

    update REMEMBERMETOKEN a set a.username = inNewUsername where a.username = inOldUsername;

    update SPACEGROUPS a set a.creator = inNewUsername where a.creator = inOldUsername;
    update SPACEGROUPS a set a.lastmodifier = inNewUsername where a.lastmodifier = inOldUsername;

    update SPACEPERMISSIONS a set a.creator = inNewUsername where a.creator = inOldUsername;
    update SPACEPERMISSIONS a set a.lastmodifier = inNewUsername where a.lastmodifier = inOldUsername;
    update SPACEPERMISSIONS a set a.permusername = inNewUsername where a.permusername = inOldUsername;

    update SPACES a set a.creator = inNewUsername where a.creator = inOldUsername;
    update SPACES a set a.lastmodifier = inNewUsername where a.lastmodifier = inOldUsername;

    update TRACKBACKLINKS a set a.creator = inNewUsername where a.creator = inOldUsername;
    update TRACKBACKLINKS a set a.lastmodifier = inNewUsername where a.lastmodifier = inOldUsername;

    -- Reassign user preferences
    update OS_PROPERTYENTRY a
        set a.entity_name = concat('CWD_', inNewUsername)
        where a.entity_name = concat('CWD_', inOldUsername);

    -- Change space name
    update SPACES a
        set a.spacekey = concat('~', inNewUsername)
        where a.spacekey = concat('~', inOldUsername);

    update BANDANA a
        set a.bandanacontext = concat('~', inNewUsername)
        where a.bandanacontext = concat('~', inOldUsername);

    select * from cwd_user where user_name = inOldUsername;
    select * from NOTIFICATIONS where username = inOldUsername;
    select * from SPACEPERMISSIONS where PERMUSERNAME = inOldUsername;
    select * from CONTENT where username = inOldUsername;
END</pre>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F18%2Fmigrating-crowd-directories%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F18%2Fmigrating-crowd-directories%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F18%2Fmigrating-crowd-directories%2F&amp;linkname=Migrating%20Crowd%20Directories" title="Google Reader" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_button_email" href="http://www.addtoany.com/add_to/email?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F18%2Fmigrating-crowd-directories%2F&amp;linkname=Migrating%20Crowd%20Directories" title="Email" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/email.png" width="16" height="16" alt="Email"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F18%2Fmigrating-crowd-directories%2F&amp;linkname=Migrating%20Crowd%20Directories" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F18%2Fmigrating-crowd-directories%2F&amp;linkname=Migrating%20Crowd%20Directories" title="Reddit" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_wordpress" href="http://www.addtoany.com/add_to/wordpress?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F18%2Fmigrating-crowd-directories%2F&amp;linkname=Migrating%20Crowd%20Directories" title="WordPress" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/wordpress.png" width="16" height="16" alt="WordPress"/></a><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F18%2Fmigrating-crowd-directories%2F&amp;counturl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F18%2Fmigrating-crowd-directories%2F&amp;count=none&amp;text=Migrating%20Crowd%20Directories" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F18%2Fmigrating-crowd-directories%2F&amp;counturl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F18%2Fmigrating-crowd-directories%2F&amp;count=none&amp;text=Migrating%20Crowd%20Directories" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a class="a2a_button_myspace" href="http://www.addtoany.com/add_to/myspace?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F18%2Fmigrating-crowd-directories%2F&amp;linkname=Migrating%20Crowd%20Directories" title="MySpace" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/myspace.png" width="16" height="16" alt="MySpace"/></a><a class="a2a_button_hotmail" href="http://www.addtoany.com/add_to/hotmail?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F18%2Fmigrating-crowd-directories%2F&amp;linkname=Migrating%20Crowd%20Directories" title="Hotmail" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/live.png" width="16" height="16" alt="Hotmail"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F18%2Fmigrating-crowd-directories%2F&amp;title=Migrating%20Crowd%20Directories" id="wpa2a_14">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.everevolvingsoftware.com/index.php/2011/04/18/migrating-crowd-directories/feed/</wfw:commentRss>
		<slash:comments>53</slash:comments>
		</item>
		<item>
		<title>Hidden tables when restoring MySQL databases</title>
		<link>http://www.everevolvingsoftware.com/index.php/2011/04/16/hidden-tables-when-restoring-mysql-databases/</link>
		<comments>http://www.everevolvingsoftware.com/index.php/2011/04/16/hidden-tables-when-restoring-mysql-databases/#comments</comments>
		<pubDate>Sat, 16 Apr 2011 20:31:40 +0000</pubDate>
		<dc:creator>Sean</dc:creator>
				<category><![CDATA[Solutions]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[confluence]]></category>
		<category><![CDATA[hidden tables]]></category>
		<category><![CDATA[jira]]></category>
		<category><![CDATA[mysql database]]></category>
		<category><![CDATA[mysqldump]]></category>
		<category><![CDATA[restore]]></category>
		<category><![CDATA[upgrade]]></category>

		<guid isPermaLink="false">http://www.everevolvingsoftware.com/?p=209</guid>
		<description><![CDATA[This last week I was working a lot with MySQL databases&#8230; Trying to upgrade Confluence and JIRA. In the process of doing so I ended up having to backup and restore the MySQL databases a number of times to try and get the upgrades to work correctly (in my dev environment of course). However, I [...]]]></description>
			<content:encoded><![CDATA[<p>This last week I was working a lot with MySQL databases&#8230; Trying to upgrade Confluence and JIRA. In the process of doing so I ended up having to backup and restore the MySQL databases a number of times to try and get the upgrades to work correctly (in my dev environment of course). However, I ran into an odd issue which (for the longest while) stumped both Atlassian Support and myself&#8230;</p>
<p>What was happening, was that whenever I would attempt to upgrade Confluence or JIRA, it would fail saying it could not create a table. The error from the MySQL driver was not very specific at first and I could NOT figure out why the error was occurring. Eventually I found some logs saying that the table already existed. Of course, I restored the database and performed a &#8220;show tables&#8221; and did see the table in the list.<span id="more-209"></span></p>
<p>What I finally realized was that the MySQL instance must have been keeping track of some information in between my database restores. It suddenly dawned on me that there was a &#8220;mysql&#8221; database which keeps track of other &#8220;metadata&#8221; type information about the databases installed in the MySQL instance.</p>
<p>The problem ended up being that I was performing the backup and restore incorrectly. I was copying the .MDF files from the &#8220;confluence&#8221; data directory on the production machine and placing them directly in the confluence data directory on the dev machine. That might have worked out OK the first time, but after attempting the upgrade, removing the database data files and re-copying the database data files, it failed.</p>
<p>What I believe happened, was that when I copied the data files the first time, MySQL considered it a new database and gathered all metadata information necessary about the database based on the data files at that time. Then, when I attempted (and failed) my confluence upgrade, the upgrade had successfully created tables that got stored in the MySQL metadata. When I removed the data files and restored the original ones, the MDF files for the newly created tables were gone (thus not showing up in &#8220;show tables&#8221;) but metadata information still existed in the &#8220;mysql&#8221; database for those tables and caused problems when confluence attempted to create the new tables in my next attempts at upgrading.</p>
<p><strong>In summary</strong></p>
<p>The lessen learned is to always use the <strong>mysqldump </strong>command-line for backing up database data, and drop the database with &#8220;drop database XXX&#8221; and re-create the database with &#8220;create database XXX&#8221; prior to restoring; and do this every time. Simply copying the database data files <em>is not sufficient.</em></p>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F16%2Fhidden-tables-when-restoring-mysql-databases%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F16%2Fhidden-tables-when-restoring-mysql-databases%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F16%2Fhidden-tables-when-restoring-mysql-databases%2F&amp;linkname=Hidden%20tables%20when%20restoring%20MySQL%20databases" title="Google Reader" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_button_email" href="http://www.addtoany.com/add_to/email?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F16%2Fhidden-tables-when-restoring-mysql-databases%2F&amp;linkname=Hidden%20tables%20when%20restoring%20MySQL%20databases" title="Email" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/email.png" width="16" height="16" alt="Email"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F16%2Fhidden-tables-when-restoring-mysql-databases%2F&amp;linkname=Hidden%20tables%20when%20restoring%20MySQL%20databases" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F16%2Fhidden-tables-when-restoring-mysql-databases%2F&amp;linkname=Hidden%20tables%20when%20restoring%20MySQL%20databases" title="Reddit" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_wordpress" href="http://www.addtoany.com/add_to/wordpress?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F16%2Fhidden-tables-when-restoring-mysql-databases%2F&amp;linkname=Hidden%20tables%20when%20restoring%20MySQL%20databases" title="WordPress" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/wordpress.png" width="16" height="16" alt="WordPress"/></a><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F16%2Fhidden-tables-when-restoring-mysql-databases%2F&amp;counturl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F16%2Fhidden-tables-when-restoring-mysql-databases%2F&amp;count=none&amp;text=Hidden%20tables%20when%20restoring%20MySQL%20databases" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F16%2Fhidden-tables-when-restoring-mysql-databases%2F&amp;counturl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F16%2Fhidden-tables-when-restoring-mysql-databases%2F&amp;count=none&amp;text=Hidden%20tables%20when%20restoring%20MySQL%20databases" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a class="a2a_button_myspace" href="http://www.addtoany.com/add_to/myspace?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F16%2Fhidden-tables-when-restoring-mysql-databases%2F&amp;linkname=Hidden%20tables%20when%20restoring%20MySQL%20databases" title="MySpace" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/myspace.png" width="16" height="16" alt="MySpace"/></a><a class="a2a_button_hotmail" href="http://www.addtoany.com/add_to/hotmail?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F16%2Fhidden-tables-when-restoring-mysql-databases%2F&amp;linkname=Hidden%20tables%20when%20restoring%20MySQL%20databases" title="Hotmail" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/live.png" width="16" height="16" alt="Hotmail"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F16%2Fhidden-tables-when-restoring-mysql-databases%2F&amp;title=Hidden%20tables%20when%20restoring%20MySQL%20databases" id="wpa2a_16">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.everevolvingsoftware.com/index.php/2011/04/16/hidden-tables-when-restoring-mysql-databases/feed/</wfw:commentRss>
		<slash:comments>55</slash:comments>
		</item>
		<item>
		<title>Securing IIS FTP from brute attacks</title>
		<link>http://www.everevolvingsoftware.com/index.php/2011/04/12/securing-iis-ftp-from-brute-attacks/</link>
		<comments>http://www.everevolvingsoftware.com/index.php/2011/04/12/securing-iis-ftp-from-brute-attacks/#comments</comments>
		<pubDate>Tue, 12 Apr 2011 18:04:21 +0000</pubDate>
		<dc:creator>Sean</dc:creator>
				<category><![CDATA[Solutions]]></category>
		<category><![CDATA[block ip]]></category>
		<category><![CDATA[brute force attacks]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[iis ftp]]></category>
		<category><![CDATA[schedule task execution]]></category>

		<guid isPermaLink="false">http://www.everevolvingsoftware.com/index.php/2011/04/12/securing-iis-ftp-from-brute-attacks/</guid>
		<description><![CDATA[The other day I checked out the FTP logs on my server and found that there had been thousands of hits on random usernames like “Administrator”, “Anonymous” and “Guest”. I figured surely there was something built into Windows Server 2003’s IIS that supported brute force prevention, but sadly I came up with nothing. However, I [...]]]></description>
			<content:encoded><![CDATA[<p>The other day I checked out the FTP logs on my server and found that there had been thousands of hits on random usernames like “Administrator”, “Anonymous” and “Guest”. I figured surely there was something built into Windows Server 2003’s IIS that supported brute force prevention, but sadly I came up with nothing.</p>
<p>However, I <em>did </em>discover someone has made some custom code that goes through the IIS FTP logs and determines who brute-force hackers are, and subsequently adds them to the the block list.<span id="more-198"></span>You can find the code here: <a href="https://groups.google.com/group/microsoft.public.inetserver.iis.security/msg/a300c839bc5ba61d?hl=en">https://groups.google.com/group/microsoft.public.inetserver.iis.security/msg/a300c839bc5ba61d?hl=en</a></p>
<p>I have compiled this code into a re-distributable application with a couple minor modifications (see download link at bottom of article). The executable accepts a few parameters, like so:</p>
<p><strong>IISBlockFTP.exe &lt;host_address&gt; &lt;username&gt; &lt;password&gt;</strong></p>
<p>I recommend running it with localhost and Administrator, as that is the most likely success scenario. I haven’t tested it out on any other user accounts, but I doubt other user accounts have access to the files used by IIS.</p>
<p>A couple requirements to run the EXE are:</p>
<ol>
<li>Remote Registry service is running</li>
<li>IIS (W3SVC) is stopped</li>
</ol>
<p>After you have run it once successfully, you could set it up as a scheduled task like I did. The tricky thing here though, is that (at least on Windows Server 2003) you can’t use the Task Scheduler user interface, you have to use the AT command from the command line. Further-more, the IIS service needs to be stopped prior to running and when doing so, you probably want to have it wait a couple seconds to finish shutting down IIS in case your IIS process takes a while to stop. So, I have compiled a small batch script (which is packaged in with the download archive):</p>
<pre>sc stop w3svc
timeout 5
IISBlockFTP.exe localhost Administrator MyAdministratorPassword123
sc start w3svc</pre>
<p>This batch script stops IIS, waits for 5 seconds to make sure IIS is stopped, runs the IISBlockFTP executable with the Administrator rights, and then starts IIS again. You can schedule the batch script to run at 2AM every day using the following command:</p>
<pre>sc \\YOURSERVERNAME cmd /c "C:\IISBlockFTP.bat"</pre>
<p>Download the package <a href="http://www.everevolvingsoftware.com/wp-content/uploads/2011/04/IISBlockFTP.zip">HERE</a></p>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F12%2Fsecuring-iis-ftp-from-brute-attacks%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F12%2Fsecuring-iis-ftp-from-brute-attacks%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F12%2Fsecuring-iis-ftp-from-brute-attacks%2F&amp;linkname=Securing%20IIS%20FTP%20from%20brute%20attacks" title="Google Reader" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_button_email" href="http://www.addtoany.com/add_to/email?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F12%2Fsecuring-iis-ftp-from-brute-attacks%2F&amp;linkname=Securing%20IIS%20FTP%20from%20brute%20attacks" title="Email" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/email.png" width="16" height="16" alt="Email"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F12%2Fsecuring-iis-ftp-from-brute-attacks%2F&amp;linkname=Securing%20IIS%20FTP%20from%20brute%20attacks" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F12%2Fsecuring-iis-ftp-from-brute-attacks%2F&amp;linkname=Securing%20IIS%20FTP%20from%20brute%20attacks" title="Reddit" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_wordpress" href="http://www.addtoany.com/add_to/wordpress?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F12%2Fsecuring-iis-ftp-from-brute-attacks%2F&amp;linkname=Securing%20IIS%20FTP%20from%20brute%20attacks" title="WordPress" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/wordpress.png" width="16" height="16" alt="WordPress"/></a><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F12%2Fsecuring-iis-ftp-from-brute-attacks%2F&amp;counturl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F12%2Fsecuring-iis-ftp-from-brute-attacks%2F&amp;count=none&amp;text=Securing%20IIS%20FTP%20from%20brute%20attacks" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F12%2Fsecuring-iis-ftp-from-brute-attacks%2F&amp;counturl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F12%2Fsecuring-iis-ftp-from-brute-attacks%2F&amp;count=none&amp;text=Securing%20IIS%20FTP%20from%20brute%20attacks" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a class="a2a_button_myspace" href="http://www.addtoany.com/add_to/myspace?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F12%2Fsecuring-iis-ftp-from-brute-attacks%2F&amp;linkname=Securing%20IIS%20FTP%20from%20brute%20attacks" title="MySpace" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/myspace.png" width="16" height="16" alt="MySpace"/></a><a class="a2a_button_hotmail" href="http://www.addtoany.com/add_to/hotmail?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F12%2Fsecuring-iis-ftp-from-brute-attacks%2F&amp;linkname=Securing%20IIS%20FTP%20from%20brute%20attacks" title="Hotmail" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/live.png" width="16" height="16" alt="Hotmail"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F12%2Fsecuring-iis-ftp-from-brute-attacks%2F&amp;title=Securing%20IIS%20FTP%20from%20brute%20attacks" id="wpa2a_18">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.everevolvingsoftware.com/index.php/2011/04/12/securing-iis-ftp-from-brute-attacks/feed/</wfw:commentRss>
		<slash:comments>39</slash:comments>
		</item>
		<item>
		<title>Skype with Outlook 2010 Contacts</title>
		<link>http://www.everevolvingsoftware.com/index.php/2011/04/09/skype-with-outlook-2010-contacts/</link>
		<comments>http://www.everevolvingsoftware.com/index.php/2011/04/09/skype-with-outlook-2010-contacts/#comments</comments>
		<pubDate>Sat, 09 Apr 2011 18:31:11 +0000</pubDate>
		<dc:creator>Sean</dc:creator>
				<category><![CDATA[Solutions]]></category>
		<category><![CDATA[contacts in skype]]></category>
		<category><![CDATA[full version]]></category>
		<category><![CDATA[Outlook 2010]]></category>
		<category><![CDATA[outlook contacts]]></category>
		<category><![CDATA[Skype]]></category>
		<category><![CDATA[web installer]]></category>

		<guid isPermaLink="false">http://www.seanmcilvenna.com/wordpress/?p=47</guid>
		<description><![CDATA[A while back when I was using Outlook 2007, the contacts from Outlook would show up in Skype with a different icon so that I knew they were Skype contacts. This worked really well for me because I keep all my contacts in Exchange and Outlook (synch&#8217;d to google) and it made it very easy to simply [...]]]></description>
			<content:encoded><![CDATA[<p>A while back when I was using Outlook 2007, the contacts from Outlook would show up in Skype with a different icon so that I knew they were Skype contacts. This worked really well for me because I keep all my contacts in Exchange and Outlook (synch&#8217;d to google) and it made it very easy to simply double-click on someone&#8217;s name in Skype and have them dial their phone number that was stored in Exchange/Outlook. Best of all, any updates I would make on my phone to contacts would automatically get synch&#8217;d up with Outlook and as a result, Skype as well.</p>
<p>However, when I upgrade to Outlook 2010 it didn&#8217;t seem to work any more. Regardless of the Skype settings, Outlook would not pick up my Outlook contacts. Finally, I found the reason:</p>
<p>The reason was because I had installed the web-installer version of Outlook 2010. When you purchase Outlook 2010, they give you the option to do a quick install via their web-installer (which downloads the Outlook files necessary based on what installation options you select) or they give you the option to download the entire Outlook 2010 package at once. Aparently the two different installation options (web-install versus full download) get registered differently after you install; I guess they are technically different versions. Skype was not smart enough to recognize that I had the web-installer version of Outlook and therefore did not look for Outlook contacts. Once I downloaded the full version of Outlook 2010 and installed it contacts started showing up right away.</p>
<p><em>Note to Skype: Fix this. It&#8217;s annoying.</em></p>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F09%2Fskype-with-outlook-2010-contacts%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F09%2Fskype-with-outlook-2010-contacts%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F09%2Fskype-with-outlook-2010-contacts%2F&amp;linkname=Skype%20with%20Outlook%202010%20Contacts" title="Google Reader" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_button_email" href="http://www.addtoany.com/add_to/email?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F09%2Fskype-with-outlook-2010-contacts%2F&amp;linkname=Skype%20with%20Outlook%202010%20Contacts" title="Email" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/email.png" width="16" height="16" alt="Email"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F09%2Fskype-with-outlook-2010-contacts%2F&amp;linkname=Skype%20with%20Outlook%202010%20Contacts" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F09%2Fskype-with-outlook-2010-contacts%2F&amp;linkname=Skype%20with%20Outlook%202010%20Contacts" title="Reddit" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_wordpress" href="http://www.addtoany.com/add_to/wordpress?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F09%2Fskype-with-outlook-2010-contacts%2F&amp;linkname=Skype%20with%20Outlook%202010%20Contacts" title="WordPress" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/wordpress.png" width="16" height="16" alt="WordPress"/></a><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F09%2Fskype-with-outlook-2010-contacts%2F&amp;counturl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F09%2Fskype-with-outlook-2010-contacts%2F&amp;count=none&amp;text=Skype%20with%20Outlook%202010%20Contacts" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F09%2Fskype-with-outlook-2010-contacts%2F&amp;counturl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F09%2Fskype-with-outlook-2010-contacts%2F&amp;count=none&amp;text=Skype%20with%20Outlook%202010%20Contacts" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a class="a2a_button_myspace" href="http://www.addtoany.com/add_to/myspace?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F09%2Fskype-with-outlook-2010-contacts%2F&amp;linkname=Skype%20with%20Outlook%202010%20Contacts" title="MySpace" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/myspace.png" width="16" height="16" alt="MySpace"/></a><a class="a2a_button_hotmail" href="http://www.addtoany.com/add_to/hotmail?linkurl=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F09%2Fskype-with-outlook-2010-contacts%2F&amp;linkname=Skype%20with%20Outlook%202010%20Contacts" title="Hotmail" rel="nofollow" target="_blank"><img src="http://www.everevolvingsoftware.com/wp-content/plugins/add-to-any/icons/live.png" width="16" height="16" alt="Hotmail"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.everevolvingsoftware.com%2Findex.php%2F2011%2F04%2F09%2Fskype-with-outlook-2010-contacts%2F&amp;title=Skype%20with%20Outlook%202010%20Contacts" id="wpa2a_20">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.everevolvingsoftware.com/index.php/2011/04/09/skype-with-outlook-2010-contacts/feed/</wfw:commentRss>
		<slash:comments>53</slash:comments>
		</item>
	</channel>
</rss>

