<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>tourniquet Wiki &amp; Documentation Rss Feed</title><link>http://www.codeplex.com/tourniquet/Wiki/View.aspx?title=Home</link><description>tourniquet Wiki Rss Description</description><item><title>Updated Wiki: Home</title><link>http://www.codeplex.com/tourniquet/Wiki/View.aspx?title=Home&amp;version=26</link><description>&lt;div class="wikidoc"&gt;
&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=tourniquet&amp;amp;DownloadId=41394" alt="TourniquetLogo_sm.png" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Stop the Bleeding!
&lt;/h2&gt; &lt;br /&gt;&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;Tourniquet is a personal caching proxy for Twitter. Client applications access Tourniquet in the same way that the Twitter API itself would be accessed by the application.  Tourniquet caches the data received from Twitter in its own persistance layer, and is able to serve up cached data when the live API is down.  This same thought process is also applied to outbound tweets and direct messages&amp;#58; Tourniquet will store the message and forward it to Twitter when the API is available.  Because Tourniquet is a personally-hosted solution, there are no Twitter-imposed API hourly usage limits for accessing cached data.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Status&lt;/b&gt;&lt;br /&gt;Tourniquet is in its first release development cycle, which is largely a prototype/proof of concept.  Features and interfaces are subject to change as code is written, tested, and refactored.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Requirements&lt;/b&gt;&lt;br /&gt;This iteration of Tourniquet is an ASP.NET 2.0 web application, and must be hosted on a web server.  It uses its own built-in HTTP Basic Authentication mechanism, so the web server must grant &lt;u&gt;ONLY&lt;/u&gt; anonymous access to the web application.  For example, in the IIS properties for the application, uncheck Basic, Digest, and Integrated Security or else the custom authentication will not work (i.e., IIS will try to authenticate the supplied credentials using OS-level security before Tourniquet gets control of the page lifecycle).&lt;br /&gt; &lt;br /&gt;To use the URL Rewriting functionality, ASP.NET must be mapped to handle .xml files (and optionally to .json, .rss, and .atom as well, if you want to pass requests in these formats through Tourniquet, though they will not be parsed or cached).&lt;br /&gt; &lt;br /&gt;Tourniquet implements its persistance layer using a Provider model so that any type of back-end data store can eventually be used.  The only provider that is currently available is one based on ADO.NET and SQL Server.  As such, access to a SQL Server database is required.  A SQL Server 2005 Express database is included.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Considerations for Using Tourniquet with Twitter Client Applications&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.codeplex.com/tourniquet/Wiki/View.aspx?title=List%20of%20Twitter%20clients%20known%20to%20work%20with%20Tourniquet&amp;amp;referringTitle=Home"&gt;List of Twitter clients known to work with Tourniquet&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;Tourniquet's primary design goal was to allow existing Twitter clients to access the Tourniquet application as if it were Twitter's actual server.  The mechanism that Tourniquet uses to provide this pass-through functionality is URL Rewriting (using &lt;a href="http://urlrewriter.net/" class="externalLink"&gt;UrlRewriter.NET&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;).  This works by ASP.NET intercepting the web request for an .xml file and changing the URL to &lt;b&gt;~/proxy.aspx?command=...&lt;/b&gt; instead.  &lt;br /&gt; &lt;br /&gt;The caveat here is that the Twitter client application must allow the user to configure the Twitter server address that is used by the application (so instead of &lt;b&gt;http://twitter.com/&lt;/b&gt;, the user must be able to specify something like &lt;b&gt;http://theirdomain.com/tourniquet/&lt;/b&gt;).&lt;br /&gt; &lt;br /&gt;When the user sends a tweet or direct message, Tourniquet will perform a store-and-forward operation.  This is useful because messages will not get lost if the Twitter API is unavailable (Tourniquet will just hold on to it until the server is back up, and then will send the message at that time).  One thing to be aware of is that a &amp;quot;fake status&amp;quot; will be returned by Tourniquet to indicate that the &amp;quot;store&amp;quot; operation was successful.  This is nearly equivalent to the actual status that Twitter would have returned, except that the status's ID will be set to -1 and the source will say &amp;quot;QUEUED (NOT LIVE YET)&amp;quot;.  The actual status will appear in the timeline after the &amp;quot;forward&amp;quot; operation takes place.  &lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/tourniquet/Wiki/View.aspx?title=Roadmap&amp;amp;referringTitle=Home"&gt;Roadmap&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/tourniquet/Wiki/View.aspx?title=Administration&amp;amp;referringTitle=Home"&gt;Administration&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/tourniquet/Wiki/View.aspx?title=Authentication&amp;amp;referringTitle=Home"&gt;Authentication&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>jfollas</author><pubDate>Sat, 27 Dec 2008 16:56:33 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20081227045633P</guid></item><item><title>Updated Wiki: Authentication</title><link>http://www.codeplex.com/tourniquet/Wiki/View.aspx?title=Authentication&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
Twitter uses HTTP Basic authentication as its primary (only?) authentication method.  In order to provide transparent access to Twitter, Tourniquet has adopted Basic authentication as well.&lt;br /&gt; &lt;br /&gt;However, this isn't your grandfather's Basic authentication, which has typically been handled automatically by IIS (using the operating system's security database).  Tourniquet needs to handle all authentication and authorization itself, so a custom HttpModule is included.  &lt;br /&gt; &lt;br /&gt;When Tourniquet needs the user credentials to be provided, it will return a 401 status code for the current request.  The user will then be prompted to provide a username or password, and the request will be submitted with the credentials embedded in the header (Note: this is all automated by the Twitter client application).  If IIS is not configured for pure anonymous access, then it will try to authenticate the new request itself before it enters the ASP.NET pipeline.  For this reason, all authentication types (Basic, Digest, Integrated Security, etc) must be disabled in the IIS properties for the web application.&lt;br /&gt; &lt;br /&gt;Once IIS is configured correctly, and the new request bearing the user credentials is received by Tourniquet, a couple of things will occur.&lt;br /&gt; &lt;br /&gt;1. If the username is Admin, the password is checked to see if it matches what was configured in the web.config.  If the password is still &amp;quot;Change Me&amp;quot;, then access will be denied (resulting in another 401 being returned).&lt;br /&gt; &lt;br /&gt;2. Tourniquet will first try to validate regular users against the Twitter API (/account/verify_credentials.xml).  If Twitter denies, then a 401 is returned, otherwise the user is authenticated and a 1-way SHA1 hash of the password is saved to the database.&lt;br /&gt; &lt;br /&gt;3. If Twitter is down, then a hash of the password is compared against a cached hash of the password stored in the database to see if the user had ever been successfully authenticated with this password before.  &lt;br /&gt; &lt;br /&gt;4. The default case is when the user is not &amp;quot;admin&amp;quot;, Twitter is down, and the user had not been seen before.  In this case, whatever password the user provided will be accepted.  The user has to be explicitly allowed (in the web.config) before Tourniquet will allow them to do anything, and in the worst case, Twitter will simply reject the request if the password is bad.  So, this is considered to be a low security risk.&lt;br /&gt;
&lt;/div&gt;</description><author>jfollas</author><pubDate>Mon, 18 Aug 2008 13:16:32 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Authentication 20080818011632P</guid></item><item><title>Updated Wiki: Authentication</title><link>http://www.codeplex.com/tourniquet/Wiki/View.aspx?title=Authentication&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
Twitter uses HTTP Basic authentication as its primary (only?) authentication method.  In order to provide transparent access to Twitter, Tourniquet has adopted Basic authentication as well.&lt;br /&gt; &lt;br /&gt;However, this isn't your grandfather's Basic authentication, which has typically been handled automatically by IIS (using the operating system's security database).  Tourniquet needs to handle all authentication and authorization itself, so a custom HttpModule is included.  &lt;br /&gt; &lt;br /&gt;When Tourniquet needs the user credentials to be provided, it will return a 401 status code for the current request.  The user will then be prompted to provide a username or password, and the request will be submitted with the credentials embedded in the header (Note: this is all automated by the Twitter client application).  If IIS is not configured for pure anonymous access, then it will try to authenticate the new request itself before it enters the ASP.NET pipeline.  For this reason, all authentication types (Basic, Digest, Integrated Security, etc) must be disabled in the IIS properties for the web application.&lt;br /&gt; &lt;br /&gt;Once IIS is configured correctly, and the new request bearing the user credentials is received by Tourniquet, a couple of things will occur.&lt;br /&gt; &lt;br /&gt;1. If the username is Admin, the password is checked to see if it matches what was configured in the web.config.  If the password is still &amp;quot;Change Me&amp;quot;, then access will be denied (resulting in another 401 being returned).&lt;br /&gt; &lt;br /&gt;2. Tourniquet will first try to validate regular users against the Twitter API (/account/verify_credentials.xml).  If Twitter denies, then a 401 is returned, otherwise the user is authenticated and a 1-way SHA1 hash of the password is saved to the database.&lt;br /&gt; &lt;br /&gt;3. If Twitter is down, then a hash of the password is compared against a cached hash of the password stored in the database to see if the user had ever been successfully authenticated with this password before.  &lt;br /&gt; &lt;br /&gt;4. The default case is when the user is not &amp;quot;admin&amp;quot;, Twitter is down, and the user had not been seen before.  In this case, whatever password was provided will be accepted.  The user has to be explicitly allowed (in the web.config) before Tourniquet will allow them to do anything, and in the worst case, Twitter will simply reject the request if the password is bad.  So, this is considered to be a low security risk.&lt;br /&gt;
&lt;/div&gt;</description><author>jfollas</author><pubDate>Mon, 18 Aug 2008 13:14:13 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Authentication 20080818011413P</guid></item><item><title>Updated Wiki: Home</title><link>http://www.codeplex.com/tourniquet/Wiki/View.aspx?title=Home&amp;version=25</link><description>&lt;div class="wikidoc"&gt;
&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=tourniquet&amp;amp;DownloadId=41394" alt="TourniquetLogo_sm.png" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Stop the Bleeding!
&lt;/h2&gt; &lt;br /&gt;&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;Tourniquet is a personal caching proxy for Twitter. Client applications access Tourniquet in the same way that the Twitter API itself would be accessed by the application.  Tourniquet caches the data received from Twitter in its own persistance layer, and is able to serve up cached data when the live API is down.  This same thought process is also applied to outbound tweets and direct messages&amp;#58; Tourniquet will store the message and forward it to Twitter when the API is available.  Because Tourniquet is a personally-hosted solution, there are no Twitter-imposed API hourly usage limits for accessing cached data.
&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Status&lt;/b&gt;&lt;br /&gt;Tourniquet is in its first release development cycle, which is largely a prototype/proof of concept.  Features and interfaces are subject to change as code is written, tested, and refactored.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Requirements&lt;/b&gt;&lt;br /&gt;This iteration of Tourniquet is an ASP.NET 2.0 web application, and must be hosted on a web server.  It uses its own built-in HTTP Basic Authentication mechanism, so the web server must grant &lt;u&gt;ONLY&lt;/u&gt; anonymous access to the web application.  For example, in the IIS properties for the application, uncheck Basic, Digest, and Integrated Security or else the custom authentication will not work (i.e., IIS will try to authenticate the supplied credentials using OS-level security before Tourniquet gets control of the page lifecycle).&lt;br /&gt; &lt;br /&gt;To use the URL Rewriting functionality, ASP.NET must be mapped to handle .xml files (and optionally to .json, .rss, and .atom as well, if you want to pass requests in these formats through Tourniquet, though they will not be parsed or cached).&lt;br /&gt; &lt;br /&gt;Tourniquet implements its persistance layer using a Provider model so that any type of back-end data store can eventually be used.  The only provider that is currently available is one based on ADO.NET and SQL Server.  As such, access to a SQL Server database is required.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Considerations for Using Tourniquet with Twitter Client Applications&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.codeplex.com/tourniquet/Wiki/View.aspx?title=List%20of%20Twitter%20clients%20known%20to%20work%20with%20Tourniquet&amp;amp;referringTitle=Home"&gt;List of Twitter clients known to work with Tourniquet&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;Tourniquet's primary design goal was to allow existing Twitter clients to access the Tourniquet application as if it were Twitter's actual server.  The mechanism that Tourniquet uses to provide this pass-through functionality is URL Rewriting (using &lt;a href="http://urlrewriter.net/" class="externalLink"&gt;UrlRewriter.NET&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;).  This works by ASP.NET intercepting the web request for an .xml file and changing the URL to &lt;b&gt;~/proxy.aspx?command=...&lt;/b&gt; instead.  &lt;br /&gt; &lt;br /&gt;The caveat here is that the Twitter client application must allow the user to configure the Twitter server address that is used by the application (so instead of &lt;b&gt;http://twitter.com/&lt;/b&gt;, the user must be able to specify something like &lt;b&gt;http://theirdomain.com/tourniquet/&lt;/b&gt;).&lt;br /&gt; &lt;br /&gt;When the user sends a tweet or direct message, Tourniquet will perform a store-and-forward operation.  This is useful because messages will not get lost if the Twitter API is unavailable (Tourniquet will just hold on to it until the server is back up, and then will send the message at that time).  One thing to be aware of is that a &amp;quot;fake status&amp;quot; will be returned by Tourniquet to indicate that the &amp;quot;store&amp;quot; operation was successful.  This is nearly equivalent to the actual status that Twitter would have returned, except that the status's ID will be set to -1 and the source will say &amp;quot;QUEUED (NOT LIVE YET)&amp;quot;.  The actual status will appear in the timeline after the &amp;quot;forward&amp;quot; operation takes place.  &lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/tourniquet/Wiki/View.aspx?title=Roadmap&amp;amp;referringTitle=Home"&gt;Roadmap&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/tourniquet/Wiki/View.aspx?title=Administration&amp;amp;referringTitle=Home"&gt;Administration&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/tourniquet/Wiki/View.aspx?title=Authentication&amp;amp;referringTitle=Home"&gt;Authentication&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>jfollas</author><pubDate>Mon, 18 Aug 2008 12:54:50 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20080818125450P</guid></item><item><title>Updated Wiki: Administration</title><link>http://www.codeplex.com/tourniquet/Wiki/View.aspx?title=Administration&amp;version=5</link><description>&lt;div class="wikidoc"&gt;
As part of installing Tourniquet onto your web server, you should have edited the web.config file and set the Admin.Password appSetting.  By default, this contains a value of &amp;quot;Change Me&amp;quot;, which will not be accepted by Tourniquet.  You should have also added &amp;quot;admin&amp;quot; to the &amp;lt;allow user=&amp;quot;&amp;quot;&amp;gt; list, which is a comma-delimited list of users that are permitted to access Tourniquet.  Regular user credentials will be verified against Twitter, but the &amp;quot;admin&amp;quot; user is used only for connecting to the admin site (i.e., it cannot access Twitter).&lt;br /&gt; &lt;br /&gt;To access the Tourniquet administration website, simply open the following URL on your server:&lt;br /&gt; &lt;br /&gt;http://{ your server name }/{ path to Tourniquet }/Admin&lt;br /&gt; &lt;br /&gt;When prompted for credentials, enter &amp;quot;admin&amp;quot; as the username, and the password that you set in web.config.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Admin Menu&lt;/b&gt;&lt;br /&gt;On all of the admin screens, clicking on the Tourniquet logo will return you to the admin menu.&lt;br /&gt; &lt;br /&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=tourniquet&amp;amp;DownloadId=41593" alt="admin_menu.png" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Database Statistics&lt;/b&gt;&lt;br /&gt;Shows how many statuses (tweets) and how many users have been saved to the database.  Nice way to check that autofetching is working.&lt;br /&gt; &lt;br /&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=tourniquet&amp;amp;DownloadId=41594" alt="admin_dbstats.png" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Autofetch&lt;/b&gt;&lt;br /&gt;Used for setting up repeating commands, like fetching your friends timeline every 10 minutes, etc.  Check a row, specify an optional start time and repeat frequency, enter your Twitter username/password, and then click Save.  Note that any existing autofetches will be deleted, making what you save on this screen become the master list.&lt;br /&gt; &lt;br /&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=tourniquet&amp;amp;DownloadId=41595" alt="admin_autofetch.png" /&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>jfollas</author><pubDate>Mon, 18 Aug 2008 12:49:01 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Administration 20080818124901P</guid></item><item><title>Updated Wiki: Administration</title><link>http://www.codeplex.com/tourniquet/Wiki/View.aspx?title=Administration&amp;version=4</link><description>&lt;div class="wikidoc"&gt;
As part of installing Tourniquet onto your web server, you should have edited the web.config file and set the Admin.Password appSetting.  By default, this contains a value of &amp;quot;Change Me&amp;quot;, which will not be accepted by Tourniquet.  You should have also added &amp;quot;admin&amp;quot; to the &amp;lt;allow user=&amp;quot;&amp;quot;&amp;gt; list, which is a comma-delimited list of users that are permitted to access Tourniquet.  Regular user credentials will be verified against Twitter, but the &amp;quot;admin&amp;quot; user is used only for connecting to the admin site (i.e., it cannot access Twitter).&lt;br /&gt; &lt;br /&gt;To access the Tourniquet administration website, simply open the following URL on your server:&lt;br /&gt; &lt;br /&gt;http://{ your server name }/{ path to Tourniquet }/Admin&lt;br /&gt; &lt;br /&gt;When prompted for credentials, enter &amp;quot;admin&amp;quot; as the username, and the password that you set in web.config.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Admin Menu&lt;/b&gt;&lt;br /&gt;On all of the admin screens, clicking on the Tourniquet logo will return you to the admin menu.&lt;br /&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=tourniquet&amp;amp;DownloadId=41593" alt="admin_menu.png" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Database Statistics&lt;/b&gt;&lt;br /&gt;Shows how many statuses (tweets) and how many users have been saved to the database.  Nice way to check that autofetching is working.&lt;br /&gt; &lt;br /&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=tourniquet&amp;amp;DownloadId=41594" alt="admin_dbstats.png" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Autofetch&lt;/b&gt;&lt;br /&gt;Used for setting up repeating commands, like fetching your friends timeline every 10 minutes, etc.  Check a row, specify an optional start time and repeat frequency, enter your Twitter username/password, and then click Save.  Note that any existing autofetches will be deleted, making what you save on this screen become the master list.&lt;br /&gt; &lt;br /&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=tourniquet&amp;amp;DownloadId=41595" alt="admin_autofetch.png" /&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>jfollas</author><pubDate>Mon, 18 Aug 2008 12:48:46 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Administration 20080818124846P</guid></item><item><title>Updated Wiki: Administration</title><link>http://www.codeplex.com/tourniquet/Wiki/View.aspx?title=Administration&amp;version=3</link><description>&lt;div class="wikidoc"&gt;
As part of installing Tourniquet onto your web server, you should have edited the web.config file and set the Admin.Password appSetting.  By default, this contains a value of &amp;quot;Change Me&amp;quot;, which will not be accepted by Tourniquet.  You should have also added &amp;quot;admin&amp;quot; to the &amp;lt;allow user=&amp;quot;&amp;quot;&amp;gt; list, which is a comma-delimited list of users that are permitted to access Tourniquet.  Regular user credentials will be verified against Twitter, but the &amp;quot;admin&amp;quot; user is used only for connecting to the admin site (i.e., it cannot access Twitter).&lt;br /&gt; &lt;br /&gt;To access the Tourniquet administration website, simply open the following URL on your server:&lt;br /&gt; &lt;br /&gt;http://{ your server name }/{ path to Tourniquet }/Admin&lt;br /&gt; &lt;br /&gt;When prompted for credentials, enter &amp;quot;admin&amp;quot; as the username, and the password that you set in web.config.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Admin Menu&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=tourniquet&amp;amp;DownloadId=41593" alt="admin_menu.png" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;DB Stats&lt;/b&gt;&lt;br /&gt;Shows how many statuses (tweets) and how many users have been saved to the database.  Nice way to check that autofetching is working.&lt;br /&gt; &lt;br /&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=tourniquet&amp;amp;DownloadId=41594" alt="admin_dbstats.png" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Autofetch&lt;/b&gt;&lt;br /&gt;Used for setting up repeating commands, like fetching your friends timeline every 10 minutes, etc.  Check a row, specify an optional start time and repeat frequency, enter your Twitter username/password, and then click Save.  Note that any existing autofetches will be deleted, making what you save on this screen become the master list.&lt;br /&gt; &lt;br /&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=tourniquet&amp;amp;DownloadId=41595" alt="admin_autofetch.png" /&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>jfollas</author><pubDate>Mon, 18 Aug 2008 12:47:58 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Administration 20080818124758P</guid></item><item><title>Updated Wiki: Administration</title><link>http://www.codeplex.com/tourniquet/Wiki/View.aspx?title=Administration&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
As part of installing Tourniquet onto your web server, you should have edited the web.config file and set the Admin.Password appSetting.  By default, this contains a value of &amp;quot;Change Me&amp;quot;, which will not be accepted by Tourniquet.  You should have also added &amp;quot;admin&amp;quot; to the &amp;lt;allow user=&amp;quot;&amp;quot;&amp;gt; list, which is a comma-delimited list of users that are permitted to access Tourniquet.  Regular user credentials will be verified against Twitter, but the &amp;quot;admin&amp;quot; user is used only for connecting to the admin site (i.e., it cannot access Twitter).&lt;br /&gt; &lt;br /&gt;To access the Tourniquet administration website, simply open the following URL on your server:&lt;br /&gt; &lt;br /&gt;http://{ your server name }/{ path to Tourniquet }/Admin&lt;br /&gt; &lt;br /&gt;When prompted for credentials, enter &amp;quot;admin&amp;quot; as the username, and the password that you set in web.config.&lt;br /&gt; &lt;br /&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=tourniquet&amp;amp;DownloadId=41593" alt="admin_menu.png" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=tourniquet&amp;amp;DownloadId=41594" alt="admin_dbstats.png" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=tourniquet&amp;amp;DownloadId=41595" alt="admin_autofetch.png" /&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>jfollas</author><pubDate>Mon, 18 Aug 2008 12:43:36 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Administration 20080818124336P</guid></item><item><title>Updated Wiki: Administration</title><link>http://www.codeplex.com/tourniquet/Wiki/View.aspx?title=Administration&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
As part of installing Tourniquet onto your web server, you should have edited the web.config file and set the Admin.Password appSetting.  By default, this contains a value of &amp;quot;Change Me&amp;quot;, which will not be accepted by Tourniquet.  You should have also added &amp;quot;admin&amp;quot; to the &amp;lt;allow user=&amp;quot;&amp;quot;&amp;gt; list, which is a comma-delimited list of users that are permitted to access Tourniquet.  Regular user credentials will be verified against Twitter, but the &amp;quot;admin&amp;quot; user is used only for connecting to the admin site (i.e., it cannot access Twitter).&lt;br /&gt; &lt;br /&gt;To access the Tourniquet administration website, simply open the following URL on your server:&lt;br /&gt; &lt;br /&gt;http://{ your server name }/{ path to Tourniquet }/Admin&lt;br /&gt; &lt;br /&gt;When prompted for credentials, enter &amp;quot;admin&amp;quot; as the username, and the password that you set in web.config.&lt;br /&gt; &lt;br /&gt;
&lt;/div&gt;</description><author>jfollas</author><pubDate>Mon, 18 Aug 2008 12:42:06 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Administration 20080818124206P</guid></item><item><title>Updated Wiki: Home</title><link>http://www.codeplex.com/tourniquet/Wiki/View.aspx?title=Home&amp;version=24</link><description>&lt;div class="wikidoc"&gt;
&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=tourniquet&amp;amp;DownloadId=41394" alt="TourniquetLogo_sm.png" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Stop the Bleeding!
&lt;/h2&gt; &lt;br /&gt;&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;Tourniquet is a personal caching proxy for Twitter. Client applications access Tourniquet in the same way that the Twitter API itself would be accessed by the application.  Tourniquet caches the data received from Twitter in its own persistance layer, and is able to serve up cached data when the live API is down.  This same thought process is also applied to outbound tweets and direct messages&amp;#58; Tourniquet will store the message and forward it to Twitter when the API is available.  Because Tourniquet is a personally-hosted solution, there are no Twitter-imposed API hourly usage limits for accessing cached data.
&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Status&lt;/b&gt;&lt;br /&gt;Tourniquet is in its first release development cycle, which is largely a prototype/proof of concept.  Features and interfaces are subject to change as code is written, tested, and refactored.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Requirements&lt;/b&gt;&lt;br /&gt;This iteration of Tourniquet is an ASP.NET 2.0 web application, and must be hosted on a web server.  It uses its own built-in HTTP Basic Authentication mechanism, so the web server must grant &lt;u&gt;ONLY&lt;/u&gt; anonymous access to the web application.  For example, in the IIS properties for the application, uncheck Basic, Digest, and Integrated Security or else the custom authentication will not work (i.e., IIS will try to authenticate the supplied credentials using OS-level security before Tourniquet gets control of the page lifecycle).&lt;br /&gt; &lt;br /&gt;To use the URL Rewriting functionality, ASP.NET must be mapped to handle .xml files (and optionally to .json, .rss, and .atom as well, if you want to pass requests in these formats through Tourniquet, though they will not be parsed or cached).&lt;br /&gt; &lt;br /&gt;Tourniquet implements its persistance layer using a Provider model so that any type of back-end data store can eventually be used.  The only provider that is currently available is one based on ADO.NET and SQL Server.  As such, access to a SQL Server database is required.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Considerations for Using Tourniquet with Twitter Client Applications&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.codeplex.com/tourniquet/Wiki/View.aspx?title=List%20of%20Twitter%20clients%20known%20to%20work%20with%20Tourniquet&amp;amp;referringTitle=Home"&gt;List of Twitter clients known to work with Tourniquet&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;Tourniquet's primary design goal was to allow existing Twitter clients to access the Tourniquet application as if it were Twitter's actual server.  The mechanism that Tourniquet uses to provide this pass-through functionality is URL Rewriting (using &lt;a href="http://urlrewriter.net/" class="externalLink"&gt;UrlRewriter.NET&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;).  This works by ASP.NET intercepting the web request for an .xml file and changing the URL to &lt;b&gt;~/proxy.aspx?command=...&lt;/b&gt; instead.  &lt;br /&gt; &lt;br /&gt;The caveat here is that the Twitter client application must allow the user to configure the Twitter server address that is used by the application (so instead of &lt;b&gt;http://twitter.com/&lt;/b&gt;, the user must be able to specify something like &lt;b&gt;http://theirdomain.com/tourniquet/&lt;/b&gt;).&lt;br /&gt; &lt;br /&gt;When the user sends a tweet or direct message, Tourniquet will perform a store-and-forward operation.  This is useful because messages will not get lost if the Twitter API is unavailable (Tourniquet will just hold on to it until the server is back up, and then will send the message at that time).  One thing to be aware of is that a &amp;quot;fake status&amp;quot; will be returned by Tourniquet to indicate that the &amp;quot;store&amp;quot; operation was successful.  This is nearly equivalent to the actual status that Twitter would have returned, except that the status's ID will be set to -1 and the source will say &amp;quot;QUEUED (NOT LIVE YET)&amp;quot;.  The actual status will appear in the timeline after the &amp;quot;forward&amp;quot; operation takes place.  &lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/tourniquet/Wiki/View.aspx?title=Roadmap&amp;amp;referringTitle=Home"&gt;Roadmap&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/tourniquet/Wiki/View.aspx?title=Administration&amp;amp;referringTitle=Home"&gt;Administration&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>jfollas</author><pubDate>Mon, 18 Aug 2008 12:32:30 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20080818123230P</guid></item></channel></rss>