<?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>Technology Bits and Bytes &#187; IT</title>
	<atom:link href="http://blogs.circlesource.com/category/it/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.circlesource.com</link>
	<description>CircleSource Technical Talent ShowCase</description>
	<lastBuildDate>Thu, 10 Dec 2009 20:01:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Dynamically Changing MasterPage</title>
		<link>http://blogs.circlesource.com/2009/04/27/dynamically-changing-masterpage/</link>
		<comments>http://blogs.circlesource.com/2009/04/27/dynamically-changing-masterpage/#comments</comments>
		<pubDate>Mon, 27 Apr 2009 10:49:21 +0000</pubDate>
		<dc:creator>murulidhara.k</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[Baseclass]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Cookies]]></category>
		<category><![CDATA[Inheritence]]></category>
		<category><![CDATA[MasterPage]]></category>
		<category><![CDATA[OnPreinit]]></category>
		<category><![CDATA[Overriding]]></category>
		<category><![CDATA[Page Class]]></category>
		<category><![CDATA[Sessions]]></category>
		<category><![CDATA[Themes]]></category>

		<guid isPermaLink="false">http://blogs.circlesource.com/?p=453</guid>
		<description><![CDATA[Changing MasterPage Dynamically
In real-time we may come across scenario where depending on the particular group of users we need to show different layout, colors, themes, functionalities and so on. To achieve this there are various ways, maintain the settings for each user in table , maintain the cookies and so on. 
 In .net the best [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="margin: 0in 0in 10pt; text-indent: 0.25in; line-height: 150%;"><strong><span style="font-size: small;"><span style="font-family: Calibri;">Changing MasterPage Dynamically</span></span></strong></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt; text-indent: 0.25in; line-height: 150%;"><span style="font-size: small;"><span style="font-family: Calibri;">In real-time we may come across scenario where depending on the particular group of users we need to show different layout, colors, themes, functionalities and so on. To achieve this there are various ways, maintain the settings for each user in table , maintain the cookies and so on. </span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt; text-indent: 0.25in; line-height: 150%;"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="mso-spacerun: yes;"> </span>In .net the best way to achieve this is to change master page dynamically where the master pages will have different layout , different look and feel for different users.<span style="mso-spacerun: yes;">  </span>This we can achieve by following below mentioned steps.</span></span></p>
<p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in; line-height: 150%; mso-list: l1 level1 lfo1;"><span style="mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-size: small; font-family: Calibri;">1.</span><span style="font: 7pt &quot;Times New Roman&quot;;">       </span></span></span><span style="font-size: small;"><span style="font-family: Calibri;">All the WebPages will be inherited form System.UI.Web.Page base class</span></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in; line-height: 150%; mso-list: l1 level1 lfo1;"><span style="mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-size: small; font-family: Calibri;">2.</span><span style="font: 7pt &quot;Times New Roman&quot;;">       </span></span></span><span style="font-size: small;"><span style="font-family: Calibri;">In page directive we<span style="mso-spacerun: yes;">  </span>have a property to set masterpage file</span></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in; line-height: 150%; mso-list: l1 level1 lfo1;"><span style="mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-size: small; font-family: Calibri;">3.</span><span style="font: 7pt &quot;Times New Roman&quot;;">       </span></span></span><span style="font-size: small;"><span style="font-family: Calibri;">Once we attach any master page to any child, first all the controls of the master page are instantiated, then child page controls are instantiated</span></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in; line-height: 150%; mso-list: l1 level1 lfo1;"><span style="mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-size: small; font-family: Calibri;">4.</span><span style="font: 7pt &quot;Times New Roman&quot;;">       </span></span></span><span style="font-size: small;"><span style="font-family: Calibri;">If we want to apply master page in code behind file ,the page’s master page property needs to be applied in Onpreinit method only.</span></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in; line-height: 150%; mso-list: l1 level1 lfo1;"><span style="mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-size: small; font-family: Calibri;">5.</span><span style="font: 7pt &quot;Times New Roman&quot;;">       </span></span></span><span style="font-size: small;"><span style="font-family: Calibri;">After instantiating controls, child page load will be called first, then the master page will be loaded.</span></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; line-height: 150%;"><span style="font-size: small;"><span style="font-family: Calibri;">To change master page dynamically we need to follow the below mentioned process/method</span></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.75in; text-indent: -0.25in; line-height: 150%; mso-list: l0 level1 lfo2; mso-add-space: auto;"><span style="mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-size: small; font-family: Calibri;">1.</span><span style="font: 7pt &quot;Times New Roman&quot;;">       </span></span></span><span style="font-size: small;"><span style="font-family: Calibri;">Create one separate class file as public, which will inherits System.UI.Web.Page base class</span></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.75in; text-indent: -0.25in; line-height: 150%; mso-list: l0 level1 lfo2; mso-add-space: auto;"><span style="mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-size: small; font-family: Calibri;">2.</span><span style="font: 7pt &quot;Times New Roman&quot;;">       </span></span></span><span style="font-size: small;"><span style="font-family: Calibri;">Override the Page base class method onPreinit(), in this method set the master page property of the page, give the name of the master page file which you want to apply</span></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.75in; text-indent: -0.25in; line-height: 150%; mso-list: l0 level1 lfo2; mso-add-space: auto;"><span style="mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-size: small; font-family: Calibri;">3.</span><span style="font: 7pt &quot;Times New Roman&quot;;">       </span></span></span><span style="font-size: small;"><span style="font-family: Calibri;">At the end of the onPreinit() method call the base class onpreinit method</span></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.75in; text-indent: -0.25in; line-height: 150%; mso-list: l0 level1 lfo2; mso-add-space: auto;"><span style="mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-size: small; font-family: Calibri;">4.</span><span style="font: 7pt &quot;Times New Roman&quot;;">       </span></span></span><span style="font-size: small;"><span style="font-family: Calibri;">Inherit the newly created class in all of your web pages.</span></span></p>
<p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 10pt 0.75in; text-indent: -0.25in; line-height: 150%; mso-list: l0 level1 lfo2; mso-add-space: auto;"><span style="mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-size: small; font-family: Calibri;">5.</span><span style="font: 7pt &quot;Times New Roman&quot;;">       </span></span></span><span style="font-size: small;"><span style="font-family: Calibri;">To provide the custom master page, we may use cookies, sessions or the values stored from database, it depends on how we want to manage the customization.</span></span></p>
<p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 10pt 0.75in; text-indent: -0.25in; line-height: 150%; mso-list: l0 level1 lfo2; mso-add-space: auto;"> </p>
<div></div>
<p><span style="font-size: small;"><span style="font-family: Calibri;"></p>
<div id="attachment_454" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-454" src="http://blogs.circlesource.com/wp-content/uploads/2009/04/classdiagram-300x273.jpg" alt="Illustration" width="300" height="273" /><p class="wp-caption-text">Illustration</p></div>
<p> </p>
<p> </p>
<p></span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.circlesource.com/2009/04/27/dynamically-changing-masterpage/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to SSH tunneling</title>
		<link>http://blogs.circlesource.com/2009/01/27/ssh-tunneling/</link>
		<comments>http://blogs.circlesource.com/2009/01/27/ssh-tunneling/#comments</comments>
		<pubDate>Tue, 27 Jan 2009 10:04:47 +0000</pubDate>
		<dc:creator>bhupat.parmar</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Tunneling]]></category>

		<guid isPermaLink="false">http://blogs.circlesource.com/?p=178</guid>
		<description><![CDATA[SSH Tunneling

 What is tunneling?

A technology that enables private network (single machines or entire internetworks) to send its data or allow to use its resources via another network’s connections.Tunneling works by encapsulating a network protocol within packets carried by the second network.

Example:

PPTP (Point-to-Point Tunneling Protocol) technology enables organizations to use the Internet to transmit data [...]]]></description>
			<content:encoded><![CDATA[<p><span style="text-decoration: underline;"><strong>SSH Tunneling</strong></span></p>
<ul>
<li> What is tunneling?</li>
</ul>
<p>A technology that enables private network (single machines or entire internetworks) to send its data or allow to use its resources via another network’s connections.Tunneling works by encapsulating a network protocol within packets carried by the second network.</p>
<ul>
<li>Example:</li>
</ul>
<p>PPTP (Point-to-Point Tunneling Protocol) technology enables organizations to use the Internet to transmit data across a VPN. It does this by embedding its own network protocol within the TCP/IP packets carried by the Internet.</p>
<p><span style="text-decoration: underline;"><strong>Various Tunneling protocols include:</strong></span></p>
<p><strong> </strong><span style="text-decoration: underline;"><strong>Datagram-based:</strong></span></p>
<ul>
<li><span style="text-decoration: underline;"><strong> </strong></span>IPsec (Internet Protocol Security)</li>
<li> GRE (Generic Routing Encapsulation) supports multiple protocols and multiplexing</li>
<li> IP in IP Tunneling: Lower overhead than GRE and used when only 1 IP stream is to be tunneled</li>
<li> L2TP (Layer 2 Tunneling Protocol)</li>
<li> MPLS (Multi-Protocol Label Switching)</li>
<li> GTP (GPRS Tunneling Protocol)</li>
<li> PPTP (Point-to-Point Tunneling Protocol)</li>
<li> PPPoE (point-to-point protocol over Ethernet)</li>
<li> PPPoA (point-to-point protocol over ATM)</li>
<li> IEEE 802.1Q (Ethernet VLANs)</li>
<li> DLSw (SNA over IP)</li>
<li> XOT (X.25 datagrams over TCP)</li>
<li> IPv6 tunneling: 6to4; 6in4; Teredo</li>
<li>Anything In Anything (AYIYA; e.g. IPv6 over UDP over IPv4, IPv4 over IPv6, IPv6 over TCP IPv4,             etc.)</li>
</ul>
<p><strong> </strong><span style="text-decoration: underline;"><strong>Stream-based:</strong></span></p>
<ul>
<li>TLS (Transport Layer Security)</li>
<li>SSH (Secure Shell)</li>
<li>SOCKS (sockets)</li>
<li>HTTP CONNECT command</li>
<li>Various circuit-level proxy protocols, such as Microsoft Proxy Server&#8217;s Winsock RedirectionProtocol, or WinGate Winsock Redirection Service.</li>
</ul>
<p>Out of above available Tunneling protocol we will describe SSH based Tunneling.</p>
<p><span style="text-decoration: underline;"><strong>SSH Tunneling:<br />
</strong></span> -	SSH tunnel is an encrypted tunnel created through a SSH protocol connection.<br />
-	It takes place by using mechanism of port forwarding over a secure tunnel.<br />
-	SSH tunnels provide a means to bypass firewalls that prohibit certain Internet services provided that outgoing connections are allowed.</p>
<p>To understand SSH tunneling we will take a following example.<br />
In the following network diagram, my requirement is to access System B’s private network resources on system A. here system D’s application myWebApp on System A.</p>
<p><!--[if !mso]&gt; &lt;!  v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} --> <!--[endif]--><!--[if gte mso 9]&gt;  Normal 0     false false false  EN-US X-NONE X-NONE              MicrosoftInternetExplorer4              &lt;![endif]--><!--[if gte mso 9]&gt;                                                                                                                                            &lt;![endif]--><!--  /* Font Definitions */  @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:roman; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	margin-left:0in; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-fareast-font-family:Calibri; 	mso-bidi-font-family:"Times New Roman";} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	font-size:10.0pt; 	mso-ansi-font-size:10.0pt; 	mso-bidi-font-size:10.0pt; 	mso-ascii-font-family:Calibri; 	mso-fareast-font-family:Calibri; 	mso-hansi-font-family:Calibri;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.0in 1.0in 1.0in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --><!--[if gte mso 10]&gt; &lt;!   /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-qformat:yes; 	mso-style-parent:""; 	mso-padding-alt:0in 5.4pt 0in 5.4pt; 	mso-para-margin:0in; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} --> <!--[endif]--><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;"><!--[if gte vml 1]&gt;                    &lt;![endif]--><!--[if !vml]--><!--[endif]--><!--[if gte mso 9]&gt;   &lt;![endif]--></span><!--[if !mso]&gt; &lt;!  v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} --> <!--[endif]--><!--[if gte mso 9]&gt;  Normal 0     false false false  EN-US X-NONE X-NONE              MicrosoftInternetExplorer4              &lt;![endif]--><!--[if gte mso 9]&gt;                                                                                                                                            &lt;![endif]--><!--  /* Font Definitions */  @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:roman; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	margin-left:0in; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-fareast-font-family:Calibri; 	mso-bidi-font-family:"Times New Roman";} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	font-size:10.0pt; 	mso-ansi-font-size:10.0pt; 	mso-bidi-font-size:10.0pt; 	mso-ascii-font-family:Calibri; 	mso-fareast-font-family:Calibri; 	mso-hansi-font-family:Calibri;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.0in 1.0in 1.0in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --><!--[if gte mso 10]&gt; &lt;!   /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-qformat:yes; 	mso-style-parent:""; 	mso-padding-alt:0in 5.4pt 0in 5.4pt; 	mso-para-margin:0in; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} --> <!--[endif]--><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;"><!--[if gte vml 1]&gt;                    &lt;![endif]--><!--[if !vml]--><!--[endif]--><!--[if gte mso 9]&gt;   &lt;![endif]--></span></p>
<p>Here system A and system B are connected via Internet. So we can create a tunnel between system A and system D via system B and forward a 8080 port of system D to local port of system A.</p>
<p><img class="alignnone size-full wp-image-181" src="http://blogs.circlesource.com/wp-content/uploads/2009/01/image1.jpg" alt="image1" width="625" height="332" /></p>
<p>Below are steps to create a tunnel using SSH client (Putty).<br />
-	Start the SSH client (Putty) at system A.</p>
<p><img class="alignnone size-full wp-image-183" src="http://blogs.circlesource.com/wp-content/uploads/2009/01/image2.jpg" alt="image2" width="600" height="400" /></p>
<p><img class="alignnone size-full wp-image-184" src="http://blogs.circlesource.com/wp-content/uploads/2009/01/image3.jpg" alt="image3" width="600" height="400" /></p>
<p><img class="alignnone size-full wp-image-185" src="http://blogs.circlesource.com/wp-content/uploads/2009/01/image4.jpg" alt="image4" width="600" height="400" /></p>
<p>Step 4:<br />
This step is to verify Tunnel we created by above 1-3 steps:</p>
<p><img class="alignnone size-full wp-image-186" src="http://blogs.circlesource.com/wp-content/uploads/2009/01/image5.jpg" alt="image5" width="600" height="400" /></p>
<p>-	Right click on the caption bar of the shell window and then click on option ‘Change Settings…’, it will open a ‘Putty Reconfiguration’ window.<br />
-	On Putty Reconfiguration window, click on connection-&gt;SSH-&gt;Tunnels and right hand side you will see the mapping we did.<br />
-	Click on Apply<br />
-	Then open a web browser on your local system and type: http://localhost:1001/myWebApp<br />
Press Enter and you will see magic. You won’t believe yourself that you can access the application running on system D which in the private network of B.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.circlesource.com/2009/01/27/ssh-tunneling/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Trac hack to control email notification to the Reporter</title>
		<link>http://blogs.circlesource.com/2008/09/12/trac-hack-to-control-email-notification-to-the-reporter/</link>
		<comments>http://blogs.circlesource.com/2008/09/12/trac-hack-to-control-email-notification-to-the-reporter/#comments</comments>
		<pubDate>Fri, 12 Sep 2008 11:26:13 +0000</pubDate>
		<dc:creator>satyam</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[TRAC]]></category>

		<guid isPermaLink="false">http://blogs.circlesource.com/?p=18</guid>
		<description><![CDATA[We implemented Trac with a customized workflow. In our implementation a ticket has many additional states.
Thus during its lifecycle a ticket has to go through several stages. Most of these stages are irrelevant to the reporter of the ticket. He doesnt want to be overwhelemed by email notifications for each and every change to the [...]]]></description>
			<content:encoded><![CDATA[<p>We implemented Trac with a customized workflow. In our implementation a ticket has many additional states.</p>
<p>Thus during its lifecycle a ticket has to go through several stages. Most of these stages are irrelevant to the reporter of the ticket. He doesnt want to be overwhelemed by email notifications for each and every change to the ticket. Our managers used to get complains from clients who were ticket reporters about these notifications. We needed a solution.</p>
<p>One option was to turn off the the reporter notification completely other option was to modify trac&#8217;s default behaviour. The first option was not a good one as the reporters needed some kind of notification when a ticket was created, closed or reopened.</p>
<p>I searched Trac-hacks plugin list to find out something suitable. I couldnot find anything therefore i decided to tweak the Trac myself. It was not at all difficult as Trac has a plugin architecture and I found an api which could solve my problem. I just needed to add and modify few lines.That was it our problem was solved.I named it &#8220;<strong>FlexibleReporterNotification</strong>&#8221; plugin.</p>
<p>I have posted the solution at trac-hacks site so that someone needing similar solution may find it useful. It works on Trac 0.11.</p>
<p>Plugin url :- <a class="alignleft" href="http://trac-hacks.org/wiki/FlexibleReporterNotificationPlugin" target="_blank">http://trac-hacks.org/wiki/FlexibleReporterNotificationPlugin</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.circlesource.com/2008/09/12/trac-hack-to-control-email-notification-to-the-reporter/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Email2trac configuration on windows 2003.</title>
		<link>http://blogs.circlesource.com/2008/08/04/email2trac-configuration-on-windows-2003/</link>
		<comments>http://blogs.circlesource.com/2008/08/04/email2trac-configuration-on-windows-2003/#comments</comments>
		<pubDate>Mon, 04 Aug 2008 15:16:46 +0000</pubDate>
		<dc:creator>satyam</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[TRAC]]></category>

		<guid isPermaLink="false">http://blogs.circlesource.com/?p=16</guid>
		<description><![CDATA[This post shares our experience of configuring email2trac plugin. ]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal">Trac version 0.11b1</p>
<p class="MsoNormal">OS:-Windows 2003</p>
<p class="MsoNormal">Email client: &#8211; Fetchmail</p>
<p class="MsoNormal">Email2trac version: &#8211; 0.30</p>
<p class="MsoNormal">Others: &#8211; cygwin</p>
<p class="MsoNormal">
<p class="MsoNormal">Through this blog I intend to share our experience of configuring email2trac plugin on windows 2003. We had to make few changes in the original email2trac.py file in order to get it working.</p>
<p class="MsoNormal">
<p class="MsoNormal">We configured this plugin one eventful night a couple of months back. A normal trac plugin takes around 30-40 minutes at max to configure, but this one plugin took one whole night (around 6-7 hrs.).<span> </span>We started off with downloading the plugin and following the install instructions. After completing the instruction set we tried to test the plugin, the test failed we could not create tickets from email. We revisited the instructions to figure out if we had missed out something. We had followed the instructions quite well.</p>
<p class="MsoNormal">
<p class="MsoNormal">After playing around with the configuration files and revisiting the entire setup it was time to look at the code itself (email2trac.py). It took us a couple of hours to understand the code and its flow. Few things in the code did not make sense to us therefore we commented out those added few lines of ours and email2trac was working for us. <span> </span>Following are the things we commented out from email2trac.py</p>
<p class="MsoNormal">
<p class="MsoNormal" style="-0.25in;"><!--[if !supportLists]--><span>1)<span style="normal;"> </span></span><!--[endif]-->Blacklisting section.</p>
<p class="MsoNormal" style="-0.25in;"><!--[if !supportLists]--><span>2)<span style="normal;"> </span></span><!--[endif]-->Attachment Encoding.</p>
<p class="MsoNormal" style="-0.25in;"><!--[if !supportLists]--><span>3)<span style="normal;"> </span></span><!--[endif]-->Check for syslog.</p>
<p class="MsoNormal" style="-0.25in;"><!--[if !supportLists]--><span>4)<span style="normal;"> </span></span><!--[endif]-->Normalization of the file name for the attachment.</p>
<p class="MsoNormal" style="0.25in;">
<p class="MsoNormal">
<p class="MsoNormal">Due to the commenting of the above mentioned sections attachment path was not being generated correctly. To overcome this problem we added the following lines at the end of attachments definition after fd.close (line number 1073.)</p>
<p class="MsoNormal">
<p class="MsoNormal">
<p class="MsoNormal"><span> </span><strong><span>attachmentPath = self.PROJECTPATH + &#8220;/attachments/ticket/&#8221; + str(ticket['id']) + &#8220;/&#8221; + url_filename</span></strong></p>
<p class="MsoNormal"><strong><span> </span></strong></p>
<p class="MsoNormal"><strong><span><span> </span></span></strong></p>
<p class="MsoNormal"><strong><span><span> </span>shutil.copy2 (temppath, attachmentPath)</span></strong></p>
<p class="MsoNormal">
<p class="MsoNormal">
<p class="MsoNormal"><span> </span></p>
<p class="MsoNormal">
<p class="MsoNormal"><span> </span></p>
<p class="MsoNormal" style="0.5in;">Although this fix made the email2trac functional on our trac system, we are still struggling with attachments. We are able to send in zipped files in but the MS office documents get clobbered. We are still working on this and hopefully will resolve it soon at that point I will post another blog here.</p>
<p class="MsoNormal" style="0.5in;">
<p class="MsoNormal" style="0.5in;">In my view if any one wants to implement email2trac on windows they should be willing to make their hands dirty. There is not enough documentation available for this plugin. It is still a UNIX based program which can be made to work on windows with some hacks. <strong><em>Just as in our case we broke away from the program flow to make it work for us.</em></strong></p>
<p class="MsoNormal">
<p class="MsoNormal">
<p class="MsoNormal">
<p class="MsoNormal">Following links are helpful in setting up this plugin on windows.</p>
<p class="MsoNormal">
<p class="MsoNormal"><a href="https://subtrac.sara.nl/oss/email2trac/wiki/Email2tracInstallation/Windows">https://subtrac.sara.nl/oss/email2trac/wiki/Email2tracInstallation/Windows</a></p>
<p class="MsoNormal">
<p class="MsoNormal"><a href="http://functionalelegant.blogspot.com/search/label/Trac">http://functionalelegant.blogspot.com/search/label/Trac</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.circlesource.com/2008/08/04/email2trac-configuration-on-windows-2003/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
