<?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>Broken Bytes</title>
	<atom:link href="http://blog.brokenbytes.info/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.brokenbytes.info</link>
	<description></description>
	<lastBuildDate>Tue, 17 May 2011 20:51:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Stacking PostBack Events</title>
		<link>http://blog.brokenbytes.info/2011/02/stacking-postback-events/</link>
		<comments>http://blog.brokenbytes.info/2011/02/stacking-postback-events/#comments</comments>
		<pubDate>Sat, 12 Feb 2011 06:50:45 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[oncheckchanged]]></category>
		<category><![CDATA[PostBack]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Stacking Events]]></category>
		<category><![CDATA[Strange Behavior]]></category>

		<guid isPermaLink="false">http://blog.brokenbytes.info/?p=267</guid>
		<description><![CDATA[ He was stacking postbacks (accidently, causing strange behavior). He had a checkbox with an OnCheckChanged event specified, but it also had AutoPostBack="false" on it.]]></description>
			<content:encoded><![CDATA[<p>The other day at work I was working through a problem with a coworker. The short of it is that he had something going on that I didn&#8217;t even know could happen. I made a <a title="PostBack Experiments" href="http://brokenbytes.info/up/PostBackExperiments.zip">small project</a> to experiment with this and it attached for download if you want to try it out. It is in ASP.NET and C#. He was stacking postbacks (accidently, causing strange behavior). He had a checkbox with an OnCheckChanged event specified, but it also had AutoPostBack=&#8221;false&#8221; on it.</p>
<p>Check the checkbox first, then click the Submit button.</p>
<pre class="brush: csharp; title: ; notranslate">
    /* Front End Code
     * One check box has a normal postback the other creates
     * a stacked PostBack.
     */
    &lt;div&gt;
        &lt;asp:CheckBox ID=&quot;cb1&quot; Text=&quot;CheckBox 1 (AutoPostBack=false)&quot; OnCheckedChanged=&quot;cb1_CheckChanged&quot; AutoPostBack=&quot;false&quot; runat=&quot;server&quot; /&gt;&amp;nbsp;
        &lt;asp:CheckBox ID=&quot;cb2&quot; Text=&quot;CheckBox 2&quot; OnCheckedChanged=&quot;cb2_CheckChanged&quot; AutoPostBack=&quot;true&quot; runat=&quot;server&quot; /&gt;&amp;nbsp;
        &lt;br /&gt;
        &lt;br /&gt;
        &lt;asp:Label ID=&quot;lblTarget&quot; runat=&quot;server&quot; /&gt;
        &lt;br /&gt;
        &lt;br /&gt;
        &lt;asp:Button ID=&quot;Submit&quot; Text=&quot;Submit&quot; runat=&quot;server&quot; OnClick=&quot;Submit_Click&quot; /&gt;&amp;nbsp;
        &lt;asp:Button ID=&quot;Reset&quot; Text=&quot;Reset&quot; OnClick=&quot;Reset_Click&quot; runat=&quot;server&quot; /&gt;
    &lt;/div&gt;

    /* Back End Code
     * The back end code just adds the name of the ID of the button lblTarget
     */
        protected void cb1_CheckChanged(object sender, EventArgs e)
        {
            if (lblTarget.Text.Equals(lblTargetText))
            {
                lblTarget.Text = &quot; cb1 &quot;;
            }
            else
            {
                lblTarget.Text += &quot; cb1 &quot;;
            }
        }
</pre>
<p>Effectively he was doing something that requires a PostBack then saying not to PostBack. This leads to a stacking effect (which was unknown to us until recently). On the next PostBack  the method for the OnCheckedChanged event was fired then the actual item that caused the PostBack&#8217;s method is executed. I never realized you could queue up PostBack events. Hopefully this will help someone else out.</p>
<p><a href="http://brokenbytes.info/PostBackExperiments.zip">PostBack Event Experiments</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brokenbytes.info/2011/02/stacking-postback-events/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Passwords: Beating the Dead Horse</title>
		<link>http://blog.brokenbytes.info/2010/12/passwords-beating-the-dead-horse/</link>
		<comments>http://blog.brokenbytes.info/2010/12/passwords-beating-the-dead-horse/#comments</comments>
		<pubDate>Wed, 15 Dec 2010 06:10:26 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[computer security]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[512]]></category>
		<category><![CDATA[Gawker]]></category>
		<category><![CDATA[keepass]]></category>
		<category><![CDATA[LifeHacker]]></category>
		<category><![CDATA[md5]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[openid]]></category>
		<category><![CDATA[password]]></category>
		<category><![CDATA[passwords]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[sha1]]></category>
		<category><![CDATA[sha2]]></category>

		<guid isPermaLink="false">http://blog.brokenbytes.info/?p=243</guid>
		<description><![CDATA[Edit: Any comments expanding on password security would be great. It seems that everyone who is security oriented in computing knows that everyone who isn&#8217;t security oriented in computing doesn&#8217;t manage passwords properly. It is even the case that some people who do know a lot about security manage their passwords poorly as well. In [...]]]></description>
			<content:encoded><![CDATA[<p>Edit: Any comments expanding on password security would be great.</p>
<p>It seems that everyone who is security oriented in computing knows that everyone who isn&#8217;t security oriented in computing doesn&#8217;t manage passwords properly. It is even the case that some people who do know a lot about security manage their passwords poorly as well. In my eyes the main reasons for poor passwords is 3 fold.</p>
<ul>
<li>Poor enforcement</li>
<li>Lack of education</li>
<li>Loss of Convenience</li>
</ul>
<p>Poor enforcement and loss of convenience I believe are the developers fault and I will discuss them later. Lack of education is not entirely the developers fault in my opinion. There is no reason this issue still plagues the internet. We have classes in school about learning basic computer skills and yet we don&#8217;t cover password security. To me it is as important or more important then learning things like Excel and Word. A mere day of password security in school could go a long way.</p>
<h2>Rolling your own</h2>
<p>First and foremost I blame developers for the state of password based security. Developer&#8217;s are the front line when it comes to security. If we don&#8217;t contemplate security, it is likely the rest of the organization won&#8217;t either.  <a href="http://www.codinghorror.com/blog/2010/12/the-dirty-truth-about-web-passwords.html" target="_blank">Gawker&#8217;s recent password debacle</a> is a prime example of what not to do. It is amazing to me that a network that has technically oriented sites like <a href="http://lifehacker.com/5712785/" target="_blank">LifeHacker</a> can use such horrible password procedures (DES with 8 char max). Here are <a href="http://brokenbytes.info/up/gawkerhack.html" target="_blank">the results</a> and some <a href="http://www.codinghorror.com/blog/2007/09/rainbow-hash-cracking.html" target="_blank">evidence of encryption failures</a>.</p>
<p>If you are going to roll your own password security at least look into a little bit before you develop a million plus user database. Three of the basics everyone should know are:</p>
<ul>
<li>Use hashes, not encryption to store your passwords. Also you&#8217;ll probably want to use <a href="http://en.wikipedia.org/wiki/SHA-2" target="_blank">SHA2-512</a> or <a href="http://csrc.nist.gov/groups/ST/hash/sha-3/" target="_blank">SHA3</a> once it is available.<a href="http://csrc.nist.gov/groups/ST/hash/statement.html" target="_blank"> MD5 and SHA1 are both vulnerable</a> to collision based attacks already and it will only get worse as time progresses. In PHP it is as simple as
<pre class="brush: php; title: ; notranslate">hash('sha512', $pswd)</pre>
</li>
<li>Salt the passwords before hashing. Salting is adding a &#8220;secret&#8221; phrase to the password.
<pre class="brush: php; title: ; notranslate"> $pswd = &quot;secret&quot;.$pswd.&quot;phrase&quot;;</pre>
</li>
<li>Password Complexity Requirements. Passwords like &#8220;password&#8221; or &#8220;password1&#8243; should never be used. You should enforce some type of password complexity requirement on your site that prevents them from being used. Including symbols, numbers, as well as upper and lower case letters with a minimum length of 12 is what I would consider secure.</li>
</ul>
<p>To create a very basic authentication system using these concepts you would have a user input their password, then append your salt (secret phrase) to it, and last hash the password. This hashed result is stored (if they&#8217;re signing up) or compared (if they&#8217;re logging in) to the user information stored in the database. There are many other things to consider when developing an authentication system, but those are basics <strong>ANYONE </strong>should know (except Gawker apparently).</p>
<h2><a href="http://oauth.net/" target="_blank">OAuth</a>, the Single Sign On (<a href="http://blog.brokenbytes.info/2010/03/single-sign-on-sso/" target="_blank">SSO</a>) of the internet</h2>
<p>All of that being said, I support using  OAuth. They may have their weaknesses, but I believe it is the most effective way to create a secure internet infrastructure. One reason I believe so is that it eliminates the convenience problem discussed below. By making it more convenient for users you may be able to encourage them to use more secure passwords. Since you are basically using a SSO for the entire internet, you can create more complex password policies on the SSO and add very little inconvenience which then translate into better security for all the websites involved. It also centralizes the focus of security on the large OAuth suppliers like Google. Eventually we may be able to complete solve the password problem, but until then I think OAuth are a step in the right direction.</p>
<h2><span style="font-weight: normal; font-size: 13px;">Convenience is the enemy of most security. This is really unfortunate because it encourages people to be less secure to regain convenience. Passwords are something everyone has and most people hate. Even I hate when my domain credentials at work need to be changed. Coming up with a decently secure password that you can remember is a pain.  OAuth allow you to only have one painful password instead of many.</span></h2>
<p>Note: <a href="http://openid.net/">OpenID</a> is another similar concept to OAuth that could also work.</p>
<h2>Reality</h2>
<p>OAuth aren&#8217;t widely used yet.</p>
<p>The solution I use involves creating individual passwords for most sites, and a common password for sites I don&#8217;t care about. I then store these passwords for recovery purposes in an encrypted database that I can retrieve. Although it might sound complicated to some, it isn&#8217;t. It is however inconvenient. You can use programs like <a href="http://keepass.info/" target="_blank">KeePass </a>to help you manage and encrypt your passwords if this interests you, but for most it won&#8217;t because it is still inconvenient.</p>
<p>Hopefully someone will be touched by this post and understand a little more about password security and the basic concepts surrounding it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brokenbytes.info/2010/12/passwords-beating-the-dead-horse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP.NET Masterpage, JavaScript, and ResolveUrl</title>
		<link>http://blog.brokenbytes.info/2010/10/asp-net-masterpage-javascript-and-resolveurl/</link>
		<comments>http://blog.brokenbytes.info/2010/10/asp-net-masterpage-javascript-and-resolveurl/#comments</comments>
		<pubDate>Thu, 07 Oct 2010 04:06:48 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[data binding]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[master page]]></category>
		<category><![CDATA[masterpage]]></category>
		<category><![CDATA[ResolveUrl]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://blog.brokenbytes.info/?p=239</guid>
		<description><![CDATA[Today was an interesting day for many reasons. The one I&#8217;m going to share with you has to do with javascript and the ResolveUrl method in ASP.NET Masterpage. I recently added jQuery to our web project at work. We have a strange setup and using /Script/jQuery.js in the script tags src attribute won&#8217;t work. For [...]]]></description>
			<content:encoded><![CDATA[<p>Today was an interesting day for many reasons. The one I&#8217;m going to share with you has to do with javascript and the ResolveUrl method in ASP.NET Masterpage. I recently added jQuery to our web project at work. We have a strange setup and using /Script/jQuery.js in the script tags src attribute won&#8217;t work. For that reason I decided to use ResolveUrl() which gets the URL of a file you pass it (i.e. ResolveUrl(&#8220;~/Script/jQuery.js&#8221;) ). This worked great until I was going through the application working on something else and randomly received this error message:</p>
<p>System.Web.HttpException:The Controls collection cannot be modifiedbecause the control contains code blocks (i.e. &lt;% &#8230; %&gt;).</p>
<p>It only happened on a couple of pages and the others would load fine which added to the confusion. Honestly, this error made little to no sense when I first saw it, so I did what any resourceful individual would. I googled it. Luckily the first result was the answer to my issue! The fix is to use data binding (&lt;%#)  instead of writing it out (&lt;%=). It is strange, but it resolves the problem. This is the wonderful explanation and solution: <a href="http://leedumond.com/blog/the-controls-collection-cannot-be-modified-because-the-control-contains-code-blocks/">http://leedumond.com/blog/the-controls-collection-cannot-be-modified-because-the-control-contains-code-blocks/</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brokenbytes.info/2010/10/asp-net-masterpage-javascript-and-resolveurl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stripping Tags On Paste using jQuery</title>
		<link>http://blog.brokenbytes.info/2010/09/stripping-tags-on-paste-using-jquery/</link>
		<comments>http://blog.brokenbytes.info/2010/09/stripping-tags-on-paste-using-jquery/#comments</comments>
		<pubDate>Sat, 25 Sep 2010 06:04:23 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[computer security]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[remove tags on paste]]></category>
		<category><![CDATA[strip html]]></category>
		<category><![CDATA[stripping tags]]></category>

		<guid isPermaLink="false">http://blog.brokenbytes.info/?p=211</guid>
		<description><![CDATA[Recently, I came across a problem with copy and pasting from a web browser. Clients were copy pasting stuff from one web page into a textarea in my app. The browser was pasting the tags that formatted the information as well. This was a problem because it was hampering the users ability to edit the [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, I came across a problem with copy and pasting from a web browser. Clients were copy pasting stuff from one web page into a textarea in my app. The browser was pasting the tags that formatted the information as well. This was a problem because it was hampering the users ability to edit the information with our own html controls on the textarea. The solution: strip tags from all pasted information. I implemented a simple yet useful script using JavaScript, jQuery, and the <a title="fieldSelection Plugin" href="http://plugins.jquery.com/project/fieldselection" target="_blank">fieldSelection jQuery plugin</a> to accomplish this. Feel free to use this code how you see fit and it would be wonderful if you left the tribute to me in the code. The code is comment well enough it should explain itself. If you have any questions feel free to post them in the comments.</p>
<p>Limitation:</p>
<ul>
<li>When you paste over selected text it doesn&#8217;t work properly.</li>
<li>You need the <a title="fieldSelection jQuery plugin" href="http://plugins.jquery.com/project/fieldselection" target="_blank">fieldSelection plugin</a> to make this work properly.</li>
<li>All linebreaks are removed by default, but you can leave them by one of the options.</li>
</ul>
<p>Reminder:</p>
<ul>
<li>You still <strong>NEED </strong>to deal with tags on the server side (remove them, html encode them, etc). JavaScript can be turned off / bypassed.</li>
</ul>
<p>Here is the code:</p>
<pre class="brush: jscript; title: ; notranslate">
        /*
        * Author: Matt Seigel
        * Name: Strip Tags
        * Version: v2.0.340
        * Relase Date: 9/24/2010
        * Contact: http://brokenbytes.info
        */
        $(document).ready(function () {
            // ***** START OPTIONS ***** //
            // Name of target textarea / input box
            var target = &quot;#txtArea&quot;;
            // Boolean indicating wether to remove linebreaks or not
            var removeLinebreaks = true;
            // ****** END OPTIONS ****** //

            // Bind to the thing you want to check for pastes
            $(target).bind('paste', function (e) {
                // Calling Object
                var callingObject = $(this);
                // Get the original text in the target
                var originalText = $(this).val();
                // Get cursor information
                var cursorInfo = $(target).getSelection();
                // Set a very short timeout and set its callback to the function
                // stripping tags, the short timeout allows for the pasted text to be accessable
                setTimeout(function () { stripTags(callingObject, originalText, cursorInfo, removeLinebreaks) }, 1);
            });
        });
        /*
        * callingObject:       Calling object.
        * originalText:        The text inside the textarea before the paste.
        * cursorInfo:          Gets the information about the cursor. (location, etc)
        * removeLinebreaks:    true to remove linebreaks, false to ignore linebreaks
        */
        function stripTags(callingObject, originalText, cursorInfo, removeLinebreaks) {
            // Get the front part of the original text (part before the new text)
            var front = originalText.substring(0, cursorInfo.start);
            // Get the back part of the original text (part after the new text)
            var back = originalText.substring(cursorInfo.end);
            // Get the pasted text out of the new text
            var pasted = callingObject.val().replace(front, &quot;&quot;).replace(back, &quot;&quot;);
            // Remove tags from the pasted stuff
            pasted = pasted.replace(/(&lt;[^&lt;&gt;]*&gt;)/g, &quot;&quot;);
            // Remove newline characters, if we want to.
            if (removeLinebreaks) {
                pasted = pasted.replace(/\n/g, &quot;&quot;);
            }
            // Put the new text into the target
            $(callingObject).text(front + pasted + back);
        }
</pre>
<p>Resources:</p>
<ul>
<li><a href="http://mark.koli.ch/2009/09/use-javascript-and-jquery-to-get-user-selected-text.html">http://mark.koli.ch/2009/09/use-javascript-and-jquery-to-get-user-selected-text.html</a></li>
<li><a href="http://w3schools.invisionzone.com/index.php?showtopic=23510">http://w3schools.invisionzone.com/index.php?showtopic=23510</a></li>
<li><a href="http://stackoverflow.com/questions/441631/how-to-detect-right-mouse-click-paste-using-javascript">http://stackoverflow.com/questions/441631/how-to-detect-right-mouse-click-paste-using-javascript</a></li>
<li><a href="http://regexpal.com/">http://regexpal.com/</a></li>
<li><a href="http://plugins.jquery.com/project/fieldselection">http://plugins.jquery.com/project/fieldselection</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.brokenbytes.info/2010/09/stripping-tags-on-paste-using-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Life</title>
		<link>http://blog.brokenbytes.info/2010/07/life/</link>
		<comments>http://blog.brokenbytes.info/2010/07/life/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 04:30:16 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.brokenbytes.info/?p=205</guid>
		<description><![CDATA[I have experienced a lot of changes lately. I moved from the Midwest to the the West Coast. I got a programming in ASP.NET and C#. I even accomplished one of my long term goals, buying a motorcycle. All of this excitement has been keeping me very busy. I am still looking for a place [...]]]></description>
			<content:encoded><![CDATA[<p>I have experienced a lot of changes lately. I moved from the Midwest to the the West Coast. I got a programming in ASP.NET and C#. I even accomplished one of my long term goals, buying a motorcycle. All of this excitement has been keeping me very busy. I am still looking for a place to rent where I am living which takes up my time. I have also been very busy at work. If anyone actually reads this, I hope you&#8217;re doing well.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brokenbytes.info/2010/07/life/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Excitement.</title>
		<link>http://blog.brokenbytes.info/2010/06/excitement/</link>
		<comments>http://blog.brokenbytes.info/2010/06/excitement/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 04:02:44 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[ZX-6R]]></category>
		<category><![CDATA[2006]]></category>
		<category><![CDATA[kawasaki]]></category>
		<category><![CDATA[manual]]></category>
		<category><![CDATA[motorcycle]]></category>
		<category><![CDATA[owner's manual]]></category>

		<guid isPermaLink="false">http://blog.brokenbytes.info/?p=200</guid>
		<description><![CDATA[Well, I have wrote very much on my blog for a pretty long time. I graduated finally and got a job as a DoD contractor in California. I develop in C# and ASP.NET. It is great! I&#8217;m excited about my new life. I also bought myself a motorcycle! A 2006 Kawasaki ZX-6R. It is awesome. [...]]]></description>
			<content:encoded><![CDATA[<p>Well, I have wrote very much on my blog for a pretty long time. I graduated finally and got a job as a DoD contractor in California. I develop in C# and ASP.NET. It is great! I&#8217;m excited about my new life. I also bought myself a motorcycle! A 2006 Kawasaki ZX-6R. It is awesome. Unfortunately, it didn&#8217;t include the owner&#8217;s manual so I found it on the Kawasaki site. It was in a bunch of different piece so I combined it. <a href="http://blog.brokenbytes.info/wp-content/uploads/Owners_Manual_ZX636C.pdf">2006 ZX-6R Owner&#8217;s Manual</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brokenbytes.info/2010/06/excitement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Weekly</title>
		<link>http://blog.brokenbytes.info/2010/03/weekly/</link>
		<comments>http://blog.brokenbytes.info/2010/03/weekly/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 22:29:06 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Logs]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[LDAP]]></category>
		<category><![CDATA[MCEComments]]></category>
		<category><![CDATA[MediaWiki]]></category>
		<category><![CDATA[TinyMCE]]></category>

		<guid isPermaLink="false">http://blog.brokenbytes.info/?p=194</guid>
		<description><![CDATA[I&#8217;m still excited about being the employee of the month, but heres what happened in the rest of my week: This week I continued my work on integrating MSU SSO with the MediaWiki login. It now is able to effectively use the CAS server to authenticate users. I made a properly functioning logout for our [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m still excited about being the employee of the month, but heres what happened in the rest of my week:<br />
This week I continued my work on integrating MSU SSO with the MediaWiki login. It now is able to effectively use the CAS server to authenticate users. I made a properly functioning logout for our requirements too. I also made it so after the login is completed LDAP/AD is queried for information about the user to setup their MediaWiki account. I the login process to update the users information from LDAP/AD on each login though.  I also fixed a problem with MCEComments. It loaded for iPhone which for some reason doesn&#8217;t work with Tiny MCE preventing users from leaving comments on their iPhone. <a href="http://blog.brokenbytes.info/2010/03/tiny-mce-comments-problems-on-iphone/">I talked about how I fixed it in a post on my blog already</a>. This was only a three day week so I feel I made a lot of progress.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brokenbytes.info/2010/03/weekly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;m student employee of the month</title>
		<link>http://blog.brokenbytes.info/2010/03/im-student-employee-of-the-month/</link>
		<comments>http://blog.brokenbytes.info/2010/03/im-student-employee-of-the-month/#comments</comments>
		<pubDate>Tue, 30 Mar 2010 22:58:17 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.brokenbytes.info/2010/03/im-student-employee-of-the-month/</guid>
		<description><![CDATA[Woo woo! Here is my tribute mention Thank you to the Office of Web and New Media and University Relations at Missouri State University.]]></description>
			<content:encoded><![CDATA[<p>Woo woo!</p>
<p><a title="Post About My Achievement" href="http://blogs.missouristate.edu/web/2010/03/29/matt-seigel-recognized-as-student-employee-of-the-month/">Here is my tribute mention</a></p>
<p>Thank you to the Office of Web and New Media and University Relations at Missouri State University.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brokenbytes.info/2010/03/im-student-employee-of-the-month/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tiny MCE Comments &#8211; Problems on iPhone</title>
		<link>http://blog.brokenbytes.info/2010/03/tiny-mce-comments-problems-on-iphone/</link>
		<comments>http://blog.brokenbytes.info/2010/03/tiny-mce-comments-problems-on-iphone/#comments</comments>
		<pubDate>Tue, 30 Mar 2010 22:54:26 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[MCEComments]]></category>
		<category><![CDATA[tincymcecomments]]></category>
		<category><![CDATA[tiny MCE]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.brokenbytes.info/?p=179</guid>
		<description><![CDATA[Today at work we realized that Tiny MCE doesn&#8217;t work properly on the iPhone. At least MCEComments for WordPress doesn&#8217;t This prevented users from commenting from a mobile device on the MSU blogs. I fixed this pretty simply by doing browser detection in PHP before loading the files for MCEComments. I modified the loaders for [...]]]></description>
			<content:encoded><![CDATA[<p>Today at work we realized that Tiny MCE doesn&#8217;t work properly on the iPhone. At least MCEComments for WordPress doesn&#8217;t This prevented users from commenting from a mobile device on the MSU blogs. I fixed this pretty simply by doing browser detection in PHP before loading the files for MCEComments. I modified the loaders for the plugin. Only two modifications of the tinyMCEComments.php was neccesary.</p>
<pre class="brush: php; title: ; notranslate">
// Line 311
function mcecomment_init() {
    global $post;
    if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']), &quot;iphone&quot;) === false) {
        $loadJS = false;
        if (is_plugin_page()) {
        $loadJS = true;
        } else if (is_singular()) {
            if (comments_open() &amp;&amp; ( !get_option('comment_registration') || is_user_logged_in() )) {
                $loadJS = true;
            }
        }
        if ($loadJS)
        	mcecomment_getInitJS();
    }
}
</pre>
<pre class="brush: php; title: ; notranslate">
// Line 350
function mcecomment_loadCoreJS() {
    global $post, $mce_locale;
    if (is_singular() &amp;&amp; (strpos(strtolower($_SERVER['HTTP_USER_AGENT']), &quot;iphone&quot;) === false))
    {
        if (comments_open() &amp;&amp; ( !get_option('comment_registration') || is_user_logged_in() )) {
            wp_enqueue_script('tiny_mce', get_option('siteurl') .
            	'/wp-includes/js/tinymce/tiny_mce.js', false, '20081129');
            wp_enqueue_script('tiny_mce_lang', get_option('siteurl') .
                '/wp-includes/js/tinymce/langs/wp-langs-' . $mce_locale . '.js',
                false, '20081129');
            wp_deregister_script('comment-reply');
            wp_enqueue_script( 'comment-reply', get_option('siteurl') .
                '/wp-content/plugins/' . plugin_basename ( dirname ( __FILE__ ) ) .
                &quot;/comment-reply.dev.js&quot;, false, '20090102');
        }
    }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.brokenbytes.info/2010/03/tiny-mce-comments-problems-on-iphone/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Friday Update</title>
		<link>http://blog.brokenbytes.info/2010/03/friday-update-2/</link>
		<comments>http://blog.brokenbytes.info/2010/03/friday-update-2/#comments</comments>
		<pubDate>Fri, 26 Mar 2010 23:06:24 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Logs]]></category>

		<guid isPermaLink="false">http://blog.brokenbytes.info/?p=176</guid>
		<description><![CDATA[I am still working with integrating MediaWiki with our SSO. I&#8217;m trying to use a CAS plugin for MediaWiki that already exists, but we have a slightly modified configuration. I also did some site maintenance on the public affairs website. I added a section for them to embed videos into the speaker biographies and fixed [...]]]></description>
			<content:encoded><![CDATA[<p>I am still working with integrating MediaWiki with our SSO. I&#8217;m trying to use a CAS plugin for MediaWiki that already exists, but we have a slightly modified configuration. I also did some site maintenance on the public affairs website. I added a section for them to embed videos into the speaker biographies and fixed some admin back end reports that weren&#8217;t working correctly. The SQL statement wasn&#8217;t properly joining the ids of hosts to their names located in another table.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brokenbytes.info/2010/03/friday-update-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
