<?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>ThePizzy.net/blog &#187; user</title>
	<atom:link href="http://thepizzy.net/blog/tag/user/feed/" rel="self" type="application/rss+xml" />
	<link>http://thepizzy.net/blog</link>
	<description>Solving the complex in 140 characters or less...</description>
	<lastBuildDate>Mon, 02 Jan 2012 15:55:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4-alpha-19719</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>POC: OpenVPN + Internet + MS Exchange Active Directory + Windows/Linux Mobile Client</title>
		<link>http://thepizzy.net/blog/2008/01/poc-openvpn-internet-ms-exchange-active-directory-windowslinux-mobile-client/</link>
		<comments>http://thepizzy.net/blog/2008/01/poc-openvpn-internet-ms-exchange-active-directory-windowslinux-mobile-client/#comments</comments>
		<pubDate>Sat, 19 Jan 2008 04:42:09 +0000</pubDate>
		<dc:creator>[[Neo]]</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Thought Experiments]]></category>
		<category><![CDATA[active directory]]></category>
		<category><![CDATA[aircard]]></category>
		<category><![CDATA[client]]></category>
		<category><![CDATA[computer]]></category>
		<category><![CDATA[desktop password]]></category>
		<category><![CDATA[directory domain]]></category>
		<category><![CDATA[Domain]]></category>
		<category><![CDATA[drive mappings]]></category>
		<category><![CDATA[group]]></category>
		<category><![CDATA[group policies]]></category>
		<category><![CDATA[high speed internet]]></category>
		<category><![CDATA[laptop]]></category>
		<category><![CDATA[ldap]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[network traffic]]></category>
		<category><![CDATA[openvpn]]></category>
		<category><![CDATA[passwords]]></category>
		<category><![CDATA[personal settings]]></category>
		<category><![CDATA[PSK]]></category>
		<category><![CDATA[scripts]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[security policy]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[University]]></category>
		<category><![CDATA[user]]></category>
		<category><![CDATA[vpn connection]]></category>
		<category><![CDATA[WAN]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://thepizzy.net/blog/?p=99</guid>
		<description><![CDATA[I have this idea, ok? What I noticed while migrating some of the users from the Admissions Department at the University for which I work, was that it was tough...]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-thumbnail wp-image-1187" title="Outlook 2007 Logo" src="http://thepizzy.net/blog/wp-content/uploads/2008/01/outlook_2007_logo1-150x146.jpg" alt="" width="150" height="146" />I have this idea, ok? What I noticed while migrating some of the users from the Admissions Department at the University for which I work, was that it was tough to explain to them sufficiently that:</p>
<ul>
<li>Their passwords are going to have to change at some point, due to security policy.</li>
<li>When they change it on their desktop, it&#8217;s not automatically done on their laptop.</li>
<li>After changing the desktop password, they need to connect the laptop to the network and then login with that new password for it to be cached.</li>
</ul>
<p>Now, it&#8217;s easy to write out, and easy for a tech to understand the scenario &#8211; but it&#8217;s not that easy for a 45yr old Hispanic guy who hates his laptop anyway to grasp. But what if they didn&#8217;t have to grasp anything? What if no matter where you were, the login process and the features available were as seamless in Wisconsin as if you were sitting at your desk in Texas?</p>
<p>What I&#8217;m proposing is this:<span id="more-99"></span></p>
<ul>
<li>Internet is gained through the use of a mobile AirCard, that is set to automatically connect once plugged in. If no AirCard, some other form of high-speed internet would suffice, and possibly be preferred.</li>
<li>Use OpenVPN as a system service that runs when Windows boots. It makes its connection to the Main Network with a PSK (pre-shared key), authenticates, and then routes all internet and network traffic through that connection.</li>
<li>A Windows or Linux client that has been previously joined to the Active Directory Domain on campus.</li>
</ul>
<p>Upon boot, the computer connects to the internet, and then sets up the VPN connection to the main campus. This is done as a Windows or Linux service. When the login prompt appears, the user enters their most recent credentials for the main campus, and logs in. These credentials are then passed through the secured VPN to the main campus, authenticated against LDAP or AD, and their group policies, logon scripts, and other drive mappings are passed back down to the client. After the personal settings have loaded, their laptop experience is just as it would be if they were on the main campus LAN &#8211; but all their traffic is secured, and over a WAN.</p>
<p>Can it be done? Has it been done? Is there a step I&#8217;m missing &#8211; or some important brick preventing it?</p>
<p style="text-align: right; font-size: 8px;">Blogged with <a title="Flock" href="http://www.flock.com/blogged-with-flock" target="_new">Flock</a></p>
<p><!-- technorati tags begin --></p>
<p style="font-size: 10px; text-align: right;">Tags: <a rel="tag" href="http://technorati.com/tag/openvpn">openvpn</a>, <a rel="tag" href="http://technorati.com/tag/network">network</a>, <a rel="tag" href="http://technorati.com/tag/%20windows"> windows</a>, <a rel="tag" href="http://technorati.com/tag/%20linux"> linux</a>, <a rel="tag" href="http://technorati.com/tag/%20authentication"> authentication</a>, <a rel="tag" href="http://technorati.com/tag/%20active%20directory"> active directory</a>, <a rel="tag" href="http://technorati.com/tag/%20PSK"> PSK</a>, <a rel="tag" href="http://technorati.com/tag/%20WAN"> WAN</a>, <a rel="tag" href="http://technorati.com/tag/%20LAN"> LAN</a>, <a rel="tag" href="http://technorati.com/tag/%20mobile"> mobile</a>, <a rel="tag" href="http://technorati.com/tag/%20laptop"> laptop</a>, <a rel="tag" href="http://technorati.com/tag/%20connection"> connection</a>, <a rel="tag" href="http://technorati.com/tag/%20internet"> internet</a>, <a rel="tag" href="http://technorati.com/tag/%20security"> security</a>, <a rel="tag" href="http://technorati.com/tag/%20group%20policy"> group policy</a></p>
<p><!-- technorati tags end --></p>

<!-- start wp-tags-to-technorati 1.02 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/active+directory' rel='tag' target='_blank'>active directory</a>, <a class='technorati-link' href='http://technorati.com/tag/aircard' rel='tag' target='_blank'>aircard</a>, <a class='technorati-link' href='http://technorati.com/tag/client' rel='tag' target='_blank'>client</a>, <a class='technorati-link' href='http://technorati.com/tag/computer' rel='tag' target='_blank'>computer</a>, <a class='technorati-link' href='http://technorati.com/tag/desktop+password' rel='tag' target='_blank'>desktop password</a>, <a class='technorati-link' href='http://technorati.com/tag/directory+domain' rel='tag' target='_blank'>directory domain</a>, <a class='technorati-link' href='http://technorati.com/tag/Domain' rel='tag' target='_blank'>Domain</a>, <a class='technorati-link' href='http://technorati.com/tag/drive+mappings' rel='tag' target='_blank'>drive mappings</a>, <a class='technorati-link' href='http://technorati.com/tag/group' rel='tag' target='_blank'>group</a>, <a class='technorati-link' href='http://technorati.com/tag/group+policies' rel='tag' target='_blank'>group policies</a>, <a class='technorati-link' href='http://technorati.com/tag/high+speed+internet' rel='tag' target='_blank'>high speed internet</a>, <a class='technorati-link' href='http://technorati.com/tag/laptop' rel='tag' target='_blank'>laptop</a>, <a class='technorati-link' href='http://technorati.com/tag/ldap' rel='tag' target='_blank'>ldap</a>, <a class='technorati-link' href='http://technorati.com/tag/Linux' rel='tag' target='_blank'>Linux</a>, <a class='technorati-link' href='http://technorati.com/tag/network' rel='tag' target='_blank'>network</a>, <a class='technorati-link' href='http://technorati.com/tag/network+traffic' rel='tag' target='_blank'>network traffic</a>, <a class='technorati-link' href='http://technorati.com/tag/openvpn' rel='tag' target='_blank'>openvpn</a>, <a class='technorati-link' href='http://technorati.com/tag/passwords' rel='tag' target='_blank'>passwords</a>, <a class='technorati-link' href='http://technorati.com/tag/personal+settings' rel='tag' target='_blank'>personal settings</a>, <a class='technorati-link' href='http://technorati.com/tag/PSK' rel='tag' target='_blank'>PSK</a>, <a class='technorati-link' href='http://technorati.com/tag/scripts' rel='tag' target='_blank'>scripts</a>, <a class='technorati-link' href='http://technorati.com/tag/security' rel='tag' target='_blank'>security</a>, <a class='technorati-link' href='http://technorati.com/tag/security+policy' rel='tag' target='_blank'>security policy</a>, <a class='technorati-link' href='http://technorati.com/tag/technology' rel='tag' target='_blank'>technology</a>, <a class='technorati-link' href='http://technorati.com/tag/University' rel='tag' target='_blank'>University</a>, <a class='technorati-link' href='http://technorati.com/tag/user' rel='tag' target='_blank'>user</a>, <a class='technorati-link' href='http://technorati.com/tag/vpn+connection' rel='tag' target='_blank'>vpn connection</a>, <a class='technorati-link' href='http://technorati.com/tag/WAN' rel='tag' target='_blank'>WAN</a>, <a class='technorati-link' href='http://technorati.com/tag/Windows' rel='tag' target='_blank'>Windows</a></p>

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://thepizzy.net/blog/2008/01/poc-openvpn-internet-ms-exchange-active-directory-windowslinux-mobile-client/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How To: Setup a UT3 Internet Server</title>
		<link>http://thepizzy.net/blog/2008/01/how-to-setup-a-ut3-internet-server/</link>
		<comments>http://thepizzy.net/blog/2008/01/how-to-setup-a-ut3-internet-server/#comments</comments>
		<pubDate>Sun, 13 Jan 2008 06:08:59 +0000</pubDate>
		<dc:creator>[[Neo]]</dc:creator>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Servers]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Updates]]></category>
		<category><![CDATA[Admin]]></category>
		<category><![CDATA[bot]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[configuration script]]></category>
		<category><![CDATA[dedicated]]></category>
		<category><![CDATA[Firewall]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[gamespy]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[internet server]]></category>
		<category><![CDATA[LAN]]></category>
		<category><![CDATA[localhost]]></category>
		<category><![CDATA[master server]]></category>
		<category><![CDATA[ports]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[server port]]></category>
		<category><![CDATA[server setup]]></category>
		<category><![CDATA[tournament]]></category>
		<category><![CDATA[UDP]]></category>
		<category><![CDATA[unreal]]></category>
		<category><![CDATA[unreal tournament]]></category>
		<category><![CDATA[user]]></category>
		<category><![CDATA[ut3]]></category>
		<category><![CDATA[ut3dedicated server]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[video game]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://thepizzy.net/blog/?p=98</guid>
		<description><![CDATA[Surprisingly there are no complete blog postings or forum topics that tell you how to set up a UT3 Internet Server from start to finish&#8230;so here we go: 1. Open...]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-667 alignright" title="UT 3 Logo" src="http://thepizzy.net/blog/wp-content/uploads/2008/01/Unreal-Tournament-III-2.png" alt="" width="256" height="256" />Surprisingly there are no complete blog postings or forum topics that tell you how to set up a UT3 Internet Server from start to finish&#8230;so here we go: <span id="more-98"></span></p>
<p><span style="font-weight: bold;">1. Open the ports<br />
</span></p>
<div style="margin-left: 40px;">To play online, you need not only the <a href="http://wiki.unrealadmin.org/FAQ:UT3#Running_Behind_a_Router.2FFirewall">UT3 ports</a>, but also the <a href="http://forums.gameconfig.co.uk/viewtopic.php?p=26#26">GameSpy</a> ports:</p>
<p>UDP:</p>
<ul>
<li>6500 (Query)</li>
<li>6515 (Dplay UDP)</li>
<li>7777 (Port for UT3 &#8211; default is 7777, you can change in server setup)</li>
<li>13000 (Port for UT3)</li>
<li>13139 (Custom UDP Pings)</li>
<li>27900 (<span class="postbody">Master Server UDP Heartbeat)</span></li>
</ul>
<p>TCP:</p>
<ul>
<li>3783 (Voice)</li>
<li>6667 (IRC)</li>
<li>28900 (Master Server List Request)</li>
<li>29900 (GP Connection Manager)</li>
<li>29901 (GP Search Manager)</li>
</ul>
<p>Be sure to open the ports on your localhost as well (Windows Firewall, Linux Firewall, etc.)</p>
</div>
<p><span style="font-weight: bold;">2. Download the Dedicated Server Package.</span></p>
<div style="margin-left: 40px;">You can get the Windows package from the <a href="http://forums.epicgames.com/showthread.php?p=25101055#post25101055">EpicGames.com thread</a> or directly from <a href="http://www.fileplanet.com/182580/180000/fileinfo/Unreal-Tournament-3-Windows-Dedicated-Server">fileplanet</a>.<br />
You can get the Linux package <a href="http://forums.epicgames.com/showthread.php?t=593584">here</a>.</div>
<p><span style="font-weight: bold;">3. Install the Dedicated Server Package.</span></p>
<div style="margin-left: 40px;">Once you finish downloading, unzip it to some kind of temporary location.<br />
Run the SetupUT3.exe program, and follow through the install process.</div>
<p><span style="font-weight: bold;">4. Create your server&#8217;s GameSpy Account.<br />
</span></p>
<div style="margin-left: 40px;">Before you&#8217;re able to do anything, you need to load the original game, and create an account for the server to use. Every instance of online UT3 requires a GameSpy account to play.</p>
<ol>
<li>Load the game (and log out if automatically logged in)</li>
<li>Hit Create Profile at the bottom of the login screen</li>
<li>Type in credentials for your new account</li>
<li>Hit Create Profile, and then login to make sure they work.</li>
<li>Log out.</li>
</ol>
</div>
<p><span style="font-weight: bold;">5. Create the configuration script.</span></p>
<div style="margin-left: 40px;">I made my configuration script using <span style="text-decoration: line-through;"><a href="http://www.m3nt0r.de/ut3/startupgen.html">this website</a></span> <a title="the old one went 404, this one was found by Boz in the comments" href="http://darkweb.nl/tools/ut3cmd/" target="_blank">*this* website</a> (via Boz), simply because it was easier than <a href="http://wiki.unrealadmin.org/FAQ:UT3#Game_Types_.26_Mutators">reading the wiki</a> to figure out how everything works. Once that was done, I then went back to look at what everything was in the command line, and customized it according to the wiki.</p>
<p>Server:</p>
<ul>
<li><span style="font-weight: bold;">Port:</span> 7777</li>
<li><span style="font-weight: bold;">Login:</span> &lt;the new account you just created&gt;</li>
<li><span style="font-weight: bold;">Password:</span> &lt;the password for your new account&gt;</li>
<li><span style="font-weight: bold;">Server Description:</span> &lt;use <a href="http://www.penetrate.nl/UT3ServerDesc.php">this website</a> to create a description&gt;</li>
</ul>
<p>Players:</p>
<ul>
<li><span style="font-weight: bold;">Max Players:</span> ## (max on the server)</li>
<li><span style="font-weight: bold;">Min. Players:</span> ## (min real-players, not bots, before a match begins)</li>
<li><span style="font-weight: bold;">Number of Bots:</span> ## (number of bots in the game &#8211; bots quit as humans join, unless configured to be vs humans)</li>
<li><span style="font-weight: bold;">**Public Connections: </span>## (max number of advertised connections)</li>
<li><span style="font-weight: bold;">**Private Connections:</span> ## (reserve slots for local connections &#8211; i.e. you host the internet game on a server in your network, and you&#8217;re playing on another computer local to the server)</li>
<li><span style="font-weight: bold;">**Open Public Connections: </span>## (max number of public connections)</li>
</ul>
<p>** These I&#8217;m not really sure about the descriptions. &#8220;Public Connections&#8221; does show max advertised for the server, but not sure about the others)</p>
<p>Game Setup:</p>
</div>
<div style="margin-left: 40px;">
<ul>
<li><span style="font-weight: bold;">Game Mode:</span> &lt;choose your game type&gt;</li>
<li><span style="font-weight: bold;">Map Name:</span> &lt;be sure to choose an appropriate map for the game type. Find your maps available <a href="http://wiki.unrealadmin.org/FAQ:UT3#Enable_Mapvote">here</a> in the configuration line for your game mode. I&#8217;ll get to that configuration further down.&gt;</li>
<li><span style="font-weight: bold;">Goal Score:</span> ## &lt;max frags/caps before next map&gt;</li>
<li><span style="font-weight: bold;">Time Limit:</span> ## &lt;timelimit for the map&gt;</li>
<li><span style="font-weight: bold;">Versus Bots:</span> #.# &lt;here&#8217;s where you deicide if it will be humans vs bots&gt;</li>
<li><span style="font-weight: bold;">Bot Skill:</span> ## &lt;1-6 bot skill, 1: Novice &#8211; 6: Godlike&gt;</li>
</ul>
<p>Game Flags:</p>
<ul>
<li><span style="font-weight: bold;">Force Respawn:</span> &lt;make the user respawn upon death&gt;</li>
<li><span style="font-weight: bold;">Pure Server:</span> &lt;game mode is forced on all maps, even maps belonging to other game modes&gt;</li>
</ul>
<p>Mutators:</p>
<ul>
<li>Choose the mutators you want for the map</li>
</ul>
<p>Community Options:</p>
<ul>
<li><span style="font-weight: bold;">Allow Join in Progress: </span>&lt;allows people to join mid-game&gt;</li>
<li><span style="font-weight: bold;">Allow Invites:</span> &lt;allow users to invite others to the game&gt;</li>
<li><span style="font-weight: bold;">Uses Presence:</span> &lt;tell the Master Server that a user is playing on this server&gt;</li>
<li><span style="font-weight: bold;">Allow Join via Presence: </span>&lt;allow friends of a user to follow the user currently playing on the server&gt;</li>
</ul>
<p>Server Options:</p>
<ul>
<li>Advertise Server: &lt;show it in the server browser&gt;</li>
<li>Report Stats</li>
<li>Is LAN Only: &lt;only a lan server?&gt;</li>
<li>Is Dedicated: &lt;is it a dedicated server?&gt;</li>
</ul>
<p>Passwords:</p>
<ul>
<li>Game Password: &lt;password to join the server&gt;</li>
<li>Admin Password: &lt;admin joining password&gt;</li>
</ul>
<p>Once you have done all those settings on the site, you click Create Lines button and come up with some code&#8230;your code will be all scrunched up into one line. Broken down it looks something like this (for Vehicle CTF):</p>
<div style="margin-left: 40px;"><span style="font-style: italic;">ut3.exe Server<br />
vCTF-Suspense?<br />
ServerDescription=116000104000101000045000115000112000111000116000<br />
MaxPlayers=12?<br />
MinNetPlayers=1?<br />
NumPlay=4?<br />
NumPublicConnections=12?<br />
<span style="color: #ff0000;">NumPublicConnections=2?</span><br />
NumOpenPublicConnections=12?<br />
GoalScore=3?<br />
TimeLimit=20?<br />
VsBots=1.5?<br />
BotSkill=4?<br />
PureServer=1?<br />
bAllowJoinInProgress=True?<br />
bAllowInvites=True?<br />
bUsesPresence=True?<br />
bAllowJoinViaPresence=True?<br />
bShouldAdvertise=True?<br />
bUsesStats=True?<br />
bIsLanMatch=False?<br />
<span style="color: #3366ff;">GamePassword=playme?</span><br style="color: #3366ff;" /><span style="color: #3366ff;">AdminPassword=bigbawls</span></p>
<p><span style="color: #ff9900;">-Port=7777 </span><br />
<span style="color: #33cc00;">-Login=SurvurBocks</span><br style="color: #33cc00;" /><span style="color: #33cc00;">-Password=sekratshiz</span><br />
-log=DedicatedServer.log</p>
<p></span></div>
<p>Note the <span style="color: #ff0000;">red line</span> of text: Change that from &#8220;Num<span style="font-weight: bold;">Public</span>Connections&#8221; to Num<span style="font-weight: bold;">Private</span>Connections&#8221; &#8211; that is an error in the script creator&#8217;s website<br />
Also note the <span style="color: #ff9900;">orange line</span> of text: If you&#8217;re not using the default 7777 port number as described above, then change that information here.<br />
The <span style="color: #3366ff;">blue lines</span> of text are the server logins to play the game<br />
The <span style="color: #33cc00;">green lines</span> of text are the GameSpy credentials for your server.</p>
</div>
<p><span style="font-weight: bold;">5b. Optional: Edit the DefaultGame.ini file to allow for map voting.<br />
</span></p>
<div style="margin-left: 40px;">Chances are, you want to allow for map voting, or at least a map rotation&#8230;here&#8217;s how you do that:</p>
<ol>
<li>Locate the Dedicate Server files (e.g. &#8220;C:\Program Files\Unreal Tournament 3 (Dedicated)&#8221;) and navigate to &#8220;.\UTGame\Config&#8221;</li>
<li>Change the Properties on the DefaultGame.ini to remove &#8220;Read-Only&#8221;, and then open it in Notepad and search for &#8220;bAllowMapVoting&#8221;</li>
<li>Find your map-cycle-list <a href="http://wiki.unrealadmin.org/FAQ:UT3#Enable_Mapvote">here</a>.</li>
<li>Make sure your Game Mode is shown in the .ini file with maps to cycle. I know that on mine, the Vehicle CTF did not have a map rotation already in the .ini file, and I had to add it.</li>
</ol>
</div>
<p><span style="font-weight: bold;">6. Create the batch file to load the server.<br />
</span></p>
<div style="margin-left: 40px;">To make things easy on you, you&#8217;ll probably want to create a batch file to load the server with a single click. Here&#8217;s how you do that:</p>
<ol>
<li>Open Notepad</li>
<li>Start off with the location of the Dedicated Server files (e.g. cd &#8220;C:\Program Files\Unreal Tournament 3 (Dedicated)\Binaries&#8221;)</li>
<li>Then enter your commandline from above</li>
<li>You should then have a batch file that looks something like this (only 2 lines, cd and ut3.exe):<span style="font-style: italic;">cd &#8220;C:\Program Files\Unreal Tournament 3 (Dedicated)\Binaries&#8221;</span><br style="font-style: italic;" /><span style="font-style: italic;">ut3.exe Server</span><br />
[this should all be on one line]<span style="font-style: italic;">vCTF-Suspense?ServerDescription=11600010400010100<br />
0045000115000112000111000116000?MaxPlayers=12?Min<br />
NetPlayers=1?NumPlay=4?NumPublicConnections=12?Nu<br />
mPublicConnections=2?NumOpenPublicConnections=12?<br />
GoalScore=3?TimeLimit=20?VsBots=1.5?BotSkill=4?Pu<br />
reServer=1?bAllowJoinInProgress=True?bAllowInvite<br />
s=True?bUsesPresence=True?bAllowJoinViaPresence=T<br />
rue?bShouldAdvertise=True?bUsesStats=True?bIsLanM<br />
atch=False?GamePassword=playme?AdminPassword=bigb<br />
awls -Port=7777 -Login=SurvurBocks -Password=sekratshiz -log=DedicatedServer.log</span> [/end one line]</li>
<li>Save the file where ever you want to keep your server batch files, and then all you have to do is double click it to start your server.</li>
<li>When the batch file runs, it should call the ut3 console and start processing the attributes in there. When the last line says &#8220;Log: GAME PATH IS UTVehicleCTFGame_Content&#8221; (or whatever game mode you&#8217;ve chosen) then your server is up, and ready to be searched for in the Server list. You&#8217;ll have to play around with the filter to find your server.</li>
</ol>
</div>
<p>That&#8217;s all there is to it. At least, that&#8217;s all there was to mine.<br />
Happy Fraggin&#8217;!</p>
<p>Update: I don&#8217;t run my server much anymore &#8211; but when I did, it worked, and I followed these instructions. I can&#8217;t provide individual support for everyone that tries to create a server, but doesn&#8217;t figure it out by these steps. I documented everything I did, step-by-step, and put them here &#8211; I didn&#8217;t do anything extra or different from what&#8217;s here. So if you have trouble getting your server up, you&#8217;re just going to have to play around with it like everyone else did before you to get their server up.</p>
<p style="text-align: right; font-size: 8px;">Blogged with <a title="Flock" href="http://www.flock.com/blogged-with-flock" target="_new">Flock</a></p>
<p><!-- technorati tags begin --></p>
<p style="font-size: 10px; text-align: right;">Tags: <a rel="tag" href="http://technorati.com/tag/ut3dedicated%20server">ut3dedicated server</a>, <a rel="tag" href="http://technorati.com/tag/%20ut3"> ut3</a>, <a rel="tag" href="http://technorati.com/tag/%20dedicated"> dedicated</a>, <a rel="tag" href="http://technorati.com/tag/%20internet"> internet</a>, <a rel="tag" href="http://technorati.com/tag/%20server"> server</a>, <a rel="tag" href="http://technorati.com/tag/%20game"> game</a>, <a rel="tag" href="http://technorati.com/tag/%20unreal%20tournament"> unreal tournament</a>, <a rel="tag" href="http://technorati.com/tag/%20unreal"> unreal</a>, <a rel="tag" href="http://technorati.com/tag/%20tournament"> tournament</a>, <a rel="tag" href="http://technorati.com/tag/%20video%20game"> video game</a>, <a rel="tag" href="http://technorati.com/tag/%20video"> video</a>, <a rel="tag" href="http://technorati.com/tag/%20game"> game</a>, <a rel="tag" href="http://technorati.com/tag/%20configuration"> configuration</a></p>
<p><!-- technorati tags end --><br />
<a href="http://twitter.com/neotsn"><img class="size-full wp-image-583  aligncenter" title="twitter.com/neotsn" src="http://thepizzy.net/blog/wp-content/uploads/2010/08/twitter-wordpress-neo12.png" alt="twitter.com/neotsn" width="350" height="125" /></a></p>

<!-- start wp-tags-to-technorati 1.02 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/Admin' rel='tag' target='_blank'>Admin</a>, <a class='technorati-link' href='http://technorati.com/tag/bot' rel='tag' target='_blank'>bot</a>, <a class='technorati-link' href='http://technorati.com/tag/configuration' rel='tag' target='_blank'>configuration</a>, <a class='technorati-link' href='http://technorati.com/tag/configuration+script' rel='tag' target='_blank'>configuration script</a>, <a class='technorati-link' href='http://technorati.com/tag/dedicated' rel='tag' target='_blank'>dedicated</a>, <a class='technorati-link' href='http://technorati.com/tag/Firewall' rel='tag' target='_blank'>Firewall</a>, <a class='technorati-link' href='http://technorati.com/tag/game' rel='tag' target='_blank'>game</a>, <a class='technorati-link' href='http://technorati.com/tag/gamespy' rel='tag' target='_blank'>gamespy</a>, <a class='technorati-link' href='http://technorati.com/tag/internet' rel='tag' target='_blank'>internet</a>, <a class='technorati-link' href='http://technorati.com/tag/internet+server' rel='tag' target='_blank'>internet server</a>, <a class='technorati-link' href='http://technorati.com/tag/LAN' rel='tag' target='_blank'>LAN</a>, <a class='technorati-link' href='http://technorati.com/tag/localhost' rel='tag' target='_blank'>localhost</a>, <a class='technorati-link' href='http://technorati.com/tag/master+server' rel='tag' target='_blank'>master server</a>, <a class='technorati-link' href='http://technorati.com/tag/ports' rel='tag' target='_blank'>ports</a>, <a class='technorati-link' href='http://technorati.com/tag/server' rel='tag' target='_blank'>server</a>, <a class='technorati-link' href='http://technorati.com/tag/server+port' rel='tag' target='_blank'>server port</a>, <a class='technorati-link' href='http://technorati.com/tag/server+setup' rel='tag' target='_blank'>server setup</a>, <a class='technorati-link' href='http://technorati.com/tag/tournament' rel='tag' target='_blank'>tournament</a>, <a class='technorati-link' href='http://technorati.com/tag/UDP' rel='tag' target='_blank'>UDP</a>, <a class='technorati-link' href='http://technorati.com/tag/unreal' rel='tag' target='_blank'>unreal</a>, <a class='technorati-link' href='http://technorati.com/tag/unreal+tournament' rel='tag' target='_blank'>unreal tournament</a>, <a class='technorati-link' href='http://technorati.com/tag/user' rel='tag' target='_blank'>user</a>, <a class='technorati-link' href='http://technorati.com/tag/ut3' rel='tag' target='_blank'>ut3</a>, <a class='technorati-link' href='http://technorati.com/tag/ut3dedicated+server' rel='tag' target='_blank'>ut3dedicated server</a>, <a class='technorati-link' href='http://technorati.com/tag/video' rel='tag' target='_blank'>video</a>, <a class='technorati-link' href='http://technorati.com/tag/video+game' rel='tag' target='_blank'>video game</a>, <a class='technorati-link' href='http://technorati.com/tag/Windows' rel='tag' target='_blank'>Windows</a></p>

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://thepizzy.net/blog/2008/01/how-to-setup-a-ut3-internet-server/feed/</wfw:commentRss>
		<slash:comments>42</slash:comments>
		</item>
		<item>
		<title>Update: tsnX Database Conversion @ 50%</title>
		<link>http://thepizzy.net/blog/2006/06/update-tsnx-database-conversion-50/</link>
		<comments>http://thepizzy.net/blog/2006/06/update-tsnx-database-conversion-50/#comments</comments>
		<pubDate>Tue, 06 Jun 2006 21:29:30 +0000</pubDate>
		<dc:creator>[[Neo]]</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[the-spot.net]]></category>
		<category><![CDATA[The-Spot.Network]]></category>
		<category><![CDATA[Updates]]></category>
		<category><![CDATA[account]]></category>
		<category><![CDATA[alpha]]></category>
		<category><![CDATA[alpha phase]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[database conversion]]></category>
		<category><![CDATA[database structure]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[forums]]></category>
		<category><![CDATA[site]]></category>
		<category><![CDATA[subSilver]]></category>
		<category><![CDATA[tsnV]]></category>
		<category><![CDATA[tsnX]]></category>
		<category><![CDATA[update]]></category>
		<category><![CDATA[user]]></category>
		<category><![CDATA[user accounts]]></category>

		<guid isPermaLink="false">http://thepizzy.net/blog/?p=62</guid>
		<description><![CDATA[Ok, so I&#8217;m converting the tsnV database into one that will work with the tsnX database structure. What this will do is bring our posts, user accounts, and forums over...]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-1181" title="the-spot.net logo" src="http://thepizzy.net/blog/wp-content/uploads/2008/04/Untitled-2-150x150.png" alt="" width="150" height="150" />Ok, so I&#8217;m converting the tsnV database into one that will work with the tsnX database structure. What this will do is bring our posts, user accounts, and forums over from the old site and make it work with the mods and settings of the new site. It&#8217;s something I have not done before, but is apparently going rather smoothly.</p>
<p>I spent all night working on it, and then another 3 hours today already, and am going to take a break from it. But once the database conversion is finished, and I revisit the bugs in the code, I&#8217;ll load the database, and start working on the site design.</p>
<p>The theme that I&#8217;m going to be working off of is just going to be a re-coded subSilver theme. If you want to use the theme as I build it, to be one of the first to experience the tsnX feel, then feel free to do so. However, the theme is going to be in the alpha phase, which will guarantee nothing as far as it&#8217;s ability to function is concerned. So if I&#8217;m working on something, and the theme breaks, and it&#8217;s not something that I can fix immediately, then you will most likely be SOL until I get it fixed, as far as using the site is concerned.</p>
<p>For this purpose if you wish to create a separate user on the site and use the settings for it to work with everything beta, then that will be acceptable. Just name your user account _beta so that you can distinguish which is which, and we&#8217;ll still know who you are.</p>

<!-- start wp-tags-to-technorati 1.02 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/account' rel='tag' target='_blank'>account</a>, <a class='technorati-link' href='http://technorati.com/tag/alpha' rel='tag' target='_blank'>alpha</a>, <a class='technorati-link' href='http://technorati.com/tag/alpha+phase' rel='tag' target='_blank'>alpha phase</a>, <a class='technorati-link' href='http://technorati.com/tag/beta' rel='tag' target='_blank'>beta</a>, <a class='technorati-link' href='http://technorati.com/tag/code' rel='tag' target='_blank'>code</a>, <a class='technorati-link' href='http://technorati.com/tag/database' rel='tag' target='_blank'>database</a>, <a class='technorati-link' href='http://technorati.com/tag/database+conversion' rel='tag' target='_blank'>database conversion</a>, <a class='technorati-link' href='http://technorati.com/tag/database+structure' rel='tag' target='_blank'>database structure</a>, <a class='technorati-link' href='http://technorati.com/tag/design' rel='tag' target='_blank'>design</a>, <a class='technorati-link' href='http://technorati.com/tag/forums' rel='tag' target='_blank'>forums</a>, <a class='technorati-link' href='http://technorati.com/tag/site' rel='tag' target='_blank'>site</a>, <a class='technorati-link' href='http://technorati.com/tag/subSilver' rel='tag' target='_blank'>subSilver</a>, <a class='technorati-link' href='http://technorati.com/tag/tsnV' rel='tag' target='_blank'>tsnV</a>, <a class='technorati-link' href='http://technorati.com/tag/tsnX' rel='tag' target='_blank'>tsnX</a>, <a class='technorati-link' href='http://technorati.com/tag/update' rel='tag' target='_blank'>update</a>, <a class='technorati-link' href='http://technorati.com/tag/user' rel='tag' target='_blank'>user</a>, <a class='technorati-link' href='http://technorati.com/tag/user+accounts' rel='tag' target='_blank'>user accounts</a></p>

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://thepizzy.net/blog/2006/06/update-tsnx-database-conversion-50/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Project: tsnXchat</title>
		<link>http://thepizzy.net/blog/2006/03/project-tsnxchat/</link>
		<comments>http://thepizzy.net/blog/2006/03/project-tsnxchat/#comments</comments>
		<pubDate>Wed, 01 Mar 2006 18:50:10 +0000</pubDate>
		<dc:creator>[[Neo]]</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Thought Experiments]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[auto increment]]></category>
		<category><![CDATA[database access]]></category>
		<category><![CDATA[flooble chatterbox]]></category>
		<category><![CDATA[hiddenFrame]]></category>
		<category><![CDATA[innerHTML]]></category>
		<category><![CDATA[localhost]]></category>
		<category><![CDATA[ms iis]]></category>
		<category><![CDATA[mysql database]]></category>
		<category><![CDATA[open source version]]></category>
		<category><![CDATA[php engine]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[user]]></category>
		<category><![CDATA[variable]]></category>
		<category><![CDATA[web server apache]]></category>

		<guid isPermaLink="false">http://thepizzy.net/blog/?p=17</guid>
		<description><![CDATA[After using a flooble chatterbox from www.flooble.com, and trying to (unsuccessfully) hack it to get rid of the ads at the bottom, I have resolved to putting my newly developed...]]></description>
			<content:encoded><![CDATA[<p>After using a flooble chatterbox from www.flooble.com, and trying to (unsuccessfully) hack it to get rid of the ads at the bottom, I have resolved to putting my newly developed AJAX skills to the test, to create an open-source version, with no ads. I&#8217;ll explain how you can make one too in this entry.<br />
<span id="more-17"></span></p>
<p>It only requires 3 files, a MYSQL database, access to a server running PHP, and a basic understanding of JavaScript, HTML, PHP, MySQL, and about 10-30 minutes (depending on your understanding of this stuff). I&#8217;ll try to keep things as basic as possible so that anyone who reads this can understand what&#8217;s going on.</p>
<p>Before you get started, you need to have a couple things.</p>
<ul>
<li>A database that you can access, with a known username and password, and that you&#8217;re able to write to. You&#8217;ll be creating a table and populating it with data. If you don&#8217;t have that, go to <a href="http://www.mysql.com" target="_blank">mysql.com</a> and get one there. (If you want to facilitate the use of MySQL, then you should probably go with something like <a href="http://sourceforge.net/projects/phpmyadmin" target="_blank">phpMyAdmin</a>.</li>
<li>PHP engine. If you don&#8217;t have PHP, you&#8217;ll need to <a href="http://www.php.net" target="_blank">get that also</a>.</li>
<li>A web server. <a href="http://www.apache.org" target=_blank">Apache works fine.</a> I haven&#8217;t used MS IIS in about 5 years, and I don&#8217;t think you should either really. But there&#8217;s not anything wrong with it&#8230;just setting it up take time.</li>
<li>Also, if you don&#8217;t have a good coding program, I recommend using <a href="http://notepad-plus.sourceforge.net/uk/site.htm" target="_blank">Notepad++</a>. It&#8217;s opensource, free, and rawks face.</li>
</ul>
<p>Now if you don&#8217;t have the ability to set all these things up on your own, or don&#8217;t already have them on a web server somewhere &#8211; then you can <a href="http://www.en.wampserver.com/index.php" target="_blank">always get WAMP</a> and it will have everything you need, bundled together, and in one install file. (Note: I don&#8217;t offer support for setting these services up. There is documentation, and they are all freeware/opensource, so everything you need is out there on their website)</p>
<p>Moving on&#8230;.</p>
<p>Once you have your empty database created, you&#8217;ll need to run some SQL Commands to set up the table&#8230;</p>
<blockquote><pre><code>CREATE TABLE `ajax_chat`
(`id` INT NOT NULL AUTO_INCREMENT ,
`ajaxchat_username` VARCHAR( 255 ) NOT NULL ,
`ajaxchat_text` TEXT NOT NULL ,
PRIMARY KEY ( `id` ) ,
FULLTEXT (`ajaxchat_text`))
TYPE = MYISAM ;</code></code></pre>
</blockquote>
<p>This code creates a table <code>ajax_chat</code> with 3 fields: <code>id, ajaxchat_username, and ajaxchat_text</code>. <code>id</code> is used for the primary key to sort the entries by number, since we&#8217;re not keeping track of the time they were entered. <code>ajaxchat_username</code> is going to be the username that the user inputs on the chat dialogue page. And <code>ajaxchat_text</code> is the chat text itself. It&#8217;s set up for a full text box, not just a 255 input box, like the <code>ajaxchat_username</code> is.</p>
<p>And then some sample data so you can test it&#8217;s functionality&#8230;</p>
<blockquote><pre><code>INSERT INTO `ajax_chat` (`ajaxchat_username` , `ajaxchat_text` )
VALUES ('User1', 'hello world!'),
('User2', 'testing...hello world again');</code></code></pre>
</blockquote>
<p>Here we enter two records. Note that in the first set of SQL code we created a field called &#8216;id&#8217; but here we leave it out of the Values() section because it&#8217;s auto-incremented.So we have (&#8216;username&#8217;, &#8216;chat_text&#8217;) as the format for entering this in the database manually.</p>
<p>Now let&#8217;s move on to the pages&#8230;<br />
__________________________________________________</p>
<p>Inside the <code>index.htm</code> we&#8217;ll have the only page that the user will see:</p>
<blockquote><pre><code>&lt;html&gt;

&lt;head&gt;
&lt;title&gt;AJAXchatbox&lt;/title&gt;
&nbsp;&nbsp;&nbsp;&lt;script type="text/javascript"&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Called by getchatdata.php
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function requestChatInfo()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;top.frames["hiddenFrame"].location = "getchatdata.php";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function displayChatInfo(sText)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var divChatInfo = document.getElementById("divChatInfo");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;divChatInfo.innerHTML = sText;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Called by sendchat.php
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function clearChatBox ()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var sayBox = document.getElementById("txtChat");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sayBox.value = "";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function saveResult(sMessage)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;requestChatInfo();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (sMessage)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var divStatus = document.getElementById("divStatus");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;divStatus.innerHTML = sMessage;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&lt;/script&gt;
&lt;/head&gt;

&lt;body onload="requestChatInfo()"&gt;

&lt;div id="divChatInfo"&gt;&lt;/div&gt;
&lt;div id="divStatus"&gt;&lt;/div&gt;
&lt;form method="post" action="sendchat.php" target="hiddenFrame"&gt;
&nbsp;&nbsp;&nbsp;&lt;p&gt;Name: &lt;input type="text" name="txtName" value="" style="width: 100px" /&gt;&lt;br /&gt;
&nbsp;&nbsp;&nbsp;Say: &lt;input type="text" id="txtChat" name="txtChat" value="" style="width: 113px"&gt;&lt;br /&gt;&lt;/p&gt;
&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;input type="submit" value="Send" /&gt; &lt;input type="button" value="Refresh" onclick="requestChatInfo()" /&gt;&lt;/p&gt;
&lt;/form&gt;
&lt;iframe src="about:blank" name="hiddenFrame" width="0" height="0" frameborder="0"&gt;&lt;/iframe&gt;
&lt;/body&gt;

&lt;/html&gt;</code></code></pre>
</blockquote>
<p>Let&#8217;s break this down a bit&#8230;we&#8217;ll start at the bottom to understand the layout of the page:</p>
<blockquote><pre><code>&lt;body onload="requestChatInfo()"&gt;

&lt;div id="divChatInfo"&gt;&lt;/div&gt;
&lt;div id="divStatus"&gt;&lt;/div&gt;
&lt;form method="post" action="sendchat.php" target="hiddenFrame"&gt;
&nbsp;&nbsp;&nbsp;&lt;p&gt;Name: &lt;input type="text" name="txtName" value="" style="width: 100px" /&gt;&lt;br /&gt;
&nbsp;&nbsp;&nbsp;Say: &lt;input type="text" id="txtChat" name="txtChat" value="" style="width: 113px"&gt;&lt;br /&gt;&lt;/p&gt;
&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;input type="submit" value="Send" /&gt; &lt;input type="button" value="Refresh" onclick="requestChatInfo()" /&gt;&lt;/p&gt;
&lt;/form&gt;
&lt;iframe src="about:blank" name="hiddenFrame" width="0" height="0" frameborder="0"&gt;&lt;/iframe&gt;
&lt;/body&gt;</code></blockquote>

The first line is the <code>&lt;body&gt;</code> tage with the call to requestChatInfo() when the page loads. That way it automatically shows the chat text. Then there is <code>&lt;div id="divChatInfo"&gt;&lt;/div&gt;</code>. This is where the chat text is going to show up.
Next is <code>&lt;div id="divStatus"&gt;&lt;/div&gt;</code>. Any error messages will appear here if there is a problem.
Then the form for posting. The form calls <code>sendchat.php</code> when submitted, and loads it in <code>target="hiddenFrame"</code>. The hiddenFrame is at the end of the html segment. When the form is submitted it sends two input boxes, <code>txtName</code> and <code>txtChat</code>. There is also a "Refresh" button. This makes the function call to the function <code>requestChatInfo()</code> which will be explained in a bit.

Then the <code>iframe</code> is the hiddenFrame mentioned earlier. It has a width and height both of 0px and a border of 0px. This hides it from the user's view. And since there is no useful information displayed on this page for the user to read, they don't need to know it's there. When you're debugging though, if you choose to edit the .php pages, you might want to put some greater values in for the width and height so you can see any SQL error messages that might show up.

Now for the top half...the javascript codes.
<blockquote><pre><code>&nbsp;&nbsp;&nbsp;&lt;script type="text/javascript"&gt;
&nbsp;&nbsp;&nbsp;//Called by getchatdata.php
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function requestChatInfo() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;top.frames["hiddenFrame"].location = "getchatdata.php";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function displayChatInfo(sText) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var divChatInfo = document.getElementById("divChatInfo");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;divChatInfo.innerHTML = sText;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//Called by sendchat.php
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function clearChatBox () {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txtChat.value = "";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function saveResult(sMessage)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;requestChatInfo();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (sMessage)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var divStatus = document.getElementById("divStatus");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;divStatus.innerHTML = sMessage;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&lt;/script&gt;</code></code></pre>
</blockquote>
<p>The first set of functions are called by the <code>getchatdata.php</code> page<br />
The first function is <code>requestChatInfo(sText)</code>. This function goes to the hiddenFrame, and loads the <code>getchatdata.php</code>.<br />
The second function is to display the chat messages. It is going to be called by <code>getchatinfo.php</code> to send a variable across from the hiddenFrame to this visible page, denoted in the function call as <code>sText</code>.</p>
<p>The next set of functions are for the <code>sendchat.php</code>.<br />
The first function is <code>clearChatBox</code>. This one gave me the most trouble to come up with. It clears the text from the chat box after the information has been sent to the database and back to your page. You'll note in the html code above that the <code>&lt;input&gt;</code> for <code>txtChat</code> has an <code>ID="txtChat" NAME="txtChat"</code> tag, while the input for <code>txtName</code> does not, only the <code>NAME=</code> tag. This makes the txtChat an object so we can call the attributes as variables and set them. If for some reason you wanted to clear the name text box, you could add <code>ID="txtName"</code> to the name input box, and add another line to the <code>clearChatBox</code> function that said:</p>
<blockquote><pre><code>txtName.value = "";</code></code></pre>
</blockquote>
<p>The second function is the error message function, <code>saveResult(sMessage)</code>. This function first calls <code>requestChatInfo()</code> to load the chat messages. Then it brings over any error messages from <code>sendchat.php</code>, and loads them to the <code>divStatus</code> element.<br />
________________________________________________</p>
<p>On to the <code>getchatdata.php</code> page. This page operates in the hiddenFrame, making a database connection, quering the data, and returning it to the visible page every 10 seconds.</p>
<blockquote><pre><code>&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Get Chat Data&lt;/title&gt;
&lt;?php
&nbsp;&nbsp;&nbsp;//php code
&nbsp;&nbsp;&nbsp;$sInfo = ""; //Variable for storing chat messages
&nbsp;&nbsp;&nbsp;$max_id = ""; //Upper Limit of chat record IDs to show in the chat.
&nbsp;&nbsp;&nbsp;$min_id = 0; //Lower Limit of chat record IDs to show in the chat.
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;$sDBServer = "localhost"; //your server name, can usually be localhost,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//unless you're connecting across sites.
&nbsp;&nbsp;&nbsp;$sDBName = "ajax_chat_db"; //your database name
&nbsp;&nbsp;&nbsp;$sDBUsername = "ajax_chat_user123"; //user name to connect to the database
&nbsp;&nbsp;&nbsp;$sDBPassword = "sdf07hw2df"; //password for user to connect to the database
&nbsp;&nbsp;&nbsp;//SQL query to grab the max record id from the database.
&nbsp;&nbsp;&nbsp;$sQuery1 = "SELECT MAX(id) as id FROM ajax_chat";

&nbsp;&nbsp;&nbsp;//Connect to the database here
&nbsp;&nbsp;&nbsp;$oLink = mysql_connect($sDBServer,$sDBUsername,$sDBPassword);
&nbsp;&nbsp;&nbsp;@mysql_select_db($sDBName) or $sInfo="Unable to open database";
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//Check if the Query worked, and that there is at least one row.
&nbsp;&nbsp;&nbsp;if ($oResult = mysql_query($sQuery1) and mysql_num_rows($oResult) &gt; 0)
&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Grab the row from the results and put it to variable $max_id
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$max_id = mysql_fetch_array($oResult,MYSQL_ASSOC);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Is max_id bigger than 15?
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($max_id['id'] &gt; 15)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//It is...so we'll set the lower limit to only grab 15 records.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$min_id = $max_id['id'] - 15;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//It's not...so we'll set the lower limit to 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//so that we don't go negative with records.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$min_id = 0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//SQL Query number 2 to go get our records from
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//the database located between min and max ids.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$sQuery2 = "SELECT * FROM ajax_chat
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ORDER BY id LIMIT " . $min_id . ", " . $max_id['id'];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Did the query work? And is there at least one record?
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($oResult2 = mysql_query($sQuery2) and mysql_num_rows($oResult2) &gt; 0)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Loop-de-loop...grab up the data.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ($i=0; $i &lt; mysql_num_rows($oResult2); $i++ )
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Get the array of data, and store it
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$aValues = mysql_fetch_array($oResult2,MYSQL_ASSOC);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Let's add all the arrayed data to one variable to
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//simplify passing it back to the visible page.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$sInfo .= "&lt;font face=\"Trebuchet MS\" size=\"x-small\" color=\"#003366\"&gt;" .
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&lt;b&gt;" . $aValues['ajaxchat_username'] . "&lt;/b&gt;" .
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&lt;/font&gt;&lt;font face=\"Trebuchet MS\" size=\"x-small\"" .
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" color=\"#000000\"&gt;: $aValues['ajaxchat_text'] . "&lt;br /&gt;";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Crap, something didn't work if you see this.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$sInfo = "Error getting ajaxchat info.";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Shucks...something is wrong with your code if you see this.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$sInfor = "Error getting Max ID.";
&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//Thank you, come again.
&nbsp;&nbsp;&nbsp;mysql_close($oLink);
?&gt;

&nbsp;&nbsp;&nbsp;&lt;script type="text/javascript"&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.onload = function () {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var divInfoToReturn = document.getElementById("divInfoToReturn");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent.displayChatInfo(divInfoToReturn.innerHTML);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};
&nbsp;&nbsp;&nbsp;&lt;/script&gt;
&lt;meta http-equiv="refresh" content="10"&gt;&nbsp;&nbsp;&nbsp;

&lt;/head&gt;

&lt;body&gt;
&nbsp;&nbsp;&nbsp;&lt;div id="divInfoToReturn"&gt;&lt;?php echo $sInfo ?&gt;&lt;/div&gt;
&lt;/body&gt;

&lt;/html&gt;</code></code></pre>
</blockquote>
<p>I have commented each line to show you what is going on with each segment of code. Basically, without repeating the comments, if there is an error, then an error message is stored to $sInfo. If it is successful, then the chat is stored to $sInfo. Regardless, $sInfo is then passed to the <code>&lt;div&gt;</code> tag as an innerHTML, which will be called by the <code>requestChatInfo()</code> function in <code>index.htm</code>.<br />
__________________________________________________</p>
<p>Finally, is the <code>sendchat.php</code> page. This page takes what you put in the text input boxes, gets them from the variables passed to the hiddenFrame, and runs an SQL query on it to either show an error message or input the data and update the chat screen.</p>
<blockquote><pre><code>&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Send Chat Data&lt;/title&gt;
&lt;?php
&nbsp;&nbsp;&nbsp;$sName = $_POST["txtName"]; //Input Box for Name passed from index.htm
&nbsp;&nbsp;&nbsp;$sChat = $_POST["txtChat"]; //Input Box for Say passed from index.htm

&nbsp;&nbsp;&nbsp;//Did the person enter a name in the box?
&nbsp;&nbsp;&nbsp;//If not, call them Guest
&nbsp;&nbsp;&nbsp;if(!$_POST["txtName"])
&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$sName = "Guest";
&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//Initiate status message for errors.
&nbsp;&nbsp;&nbsp;$sStatus = "";
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//enter the same info from getchatdata.php for connecting
&nbsp;&nbsp;&nbsp;$sDBServer = "localhost"; //your server name, can usually be localhost,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//unless you're connecting across sites.
&nbsp;&nbsp;&nbsp;$sDBName = "ajax_chat_db"; //your database name
&nbsp;&nbsp;&nbsp;$sDBUsername = "ajax_chat_user123"; //user name to connect to the database
&nbsp;&nbsp;&nbsp;$sDBPassword = "sdf07hw2df"; //password for user to connect to the database
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//SQL Statement to enter the data into the database.
&nbsp;&nbsp;&nbsp;//No spaces, and backquotes for column header declaration
&nbsp;&nbsp;&nbsp;//and single quotes for data. Remember that `id` is auto-incremented
&nbsp;&nbsp;&nbsp;//so we don't need a value for that section, just to declare it.
&nbsp;&nbsp;&nbsp;$sSQL = "INSERT INTO ajax_chat(`ajaxchat_username`,`ajaxchat_text`)" .
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" values ('$sName','$sChat')";
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//Connect to the database
&nbsp;&nbsp;&nbsp;$oLink = mysql_connect($sDBServer,$sDBUsername,$sDBPassword);
&nbsp;&nbsp;&nbsp;@mysql_select_db($sDBName) or $sStatus="Unable to open database";
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//Did it work? If not create an error message
&nbsp;&nbsp;&nbsp;if(!$oResult = mysql_query($sSQL))
&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$sStatus = "&lt;font color=\"red\"&gt;An error occurred while sending; chat not sent.&lt;/font&gt;";
&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;//Buh-bye now...g'bye...byebye now.
&nbsp;&nbsp;&nbsp;mysql_close($oLink);
?&gt;
&nbsp;&nbsp;&nbsp;&lt;script type="text/javascript"&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.onload = function ()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent.saveResult("&lt;?php echo $sStatus ?&gt;");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent.clearChatBox();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&lt;/script&gt;

&lt;/head&gt;

&lt;body&gt;
&lt;/body&gt;

&lt;/html&gt;</code></pre>
</blockquote>
<p>I have also commented this code in the php section, so I won't bother to repeat myself here. There is no body for this page in html, only the header info where there is a javascript call to the <code>window.onload</code> event.<br />
When the window finishes loading, it calls the <code>saveResult()</code> function and passes it the $sStatus variable to be displayed on <code>index.htm</code>. If there is no error message, then there will be nothing displayed.<br />
Then it calls the <code>clearChatBox()</code> function to clear the Say box so that you can continue typing like normal.</p>
<p>Now, load them all up to your server, and call it in Firefox or IE, and see if it works. <a href="http://www.the-spot.net/ajax/tsnXchat" target="_blank">Go here to see a demo verison</a>. I'll be adding more functionality to this as I create it for the homepage of the-spot.net, and integrate it with the phpbb forums. I'm new to AJAX, therefore I may not have the most optimized code possible, but I'm open for suggestions for streamlining and security if you would like to add to the project. I'll comment your credits into the code. Also, you can feel free to bookmark this site and check back for update posts for this project. I don't offer any personal tech support for this (because to do so would be extremely trying on my time and availability), and you may have to modify it to meet your server's requirements. If you do use this though, and find it useful, all I ask is that you give me a little credit for the work I put into it (instead of doing homework) <img src='http://thepizzy.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
<p>A side feature is that if you save the url to your Bookmark Toolbar of FF (or Links Toolbar in IE) you can load the page into the Sidebar of FF and IE. In Firefox just drag the url to the Bookmark Toolbar, and right click on the button > Properties > Check "Load link in sidebar". For IE users (hopefully there are none) create a new shortcut with the url:<br />
<blockquote><code>javascript:Q='';if(top.frames.length==0)Q=document.selection.createRange().text;<br />
void(_search=open('<b>http://your.domain.com/page.htm</b>?popuptitle='+escape(document.title)<br />
+'&#038;popupurl='+escape(location.href)+'&#038;text='+escape(Q),'_search'))</code></p></blockquote>
<p>and change the web address that's bolded.</p>

<!-- start wp-tags-to-technorati 1.02 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/ajax' rel='tag' target='_blank'>ajax</a>, <a class='technorati-link' href='http://technorati.com/tag/auto+increment' rel='tag' target='_blank'>auto increment</a>, <a class='technorati-link' href='http://technorati.com/tag/database+access' rel='tag' target='_blank'>database access</a>, <a class='technorati-link' href='http://technorati.com/tag/flooble+chatterbox' rel='tag' target='_blank'>flooble chatterbox</a>, <a class='technorati-link' href='http://technorati.com/tag/hiddenFrame' rel='tag' target='_blank'>hiddenFrame</a>, <a class='technorati-link' href='http://technorati.com/tag/innerHTML' rel='tag' target='_blank'>innerHTML</a>, <a class='technorati-link' href='http://technorati.com/tag/localhost' rel='tag' target='_blank'>localhost</a>, <a class='technorati-link' href='http://technorati.com/tag/ms+iis' rel='tag' target='_blank'>ms iis</a>, <a class='technorati-link' href='http://technorati.com/tag/mysql+database' rel='tag' target='_blank'>mysql database</a>, <a class='technorati-link' href='http://technorati.com/tag/open+source+version' rel='tag' target='_blank'>open source version</a>, <a class='technorati-link' href='http://technorati.com/tag/php+engine' rel='tag' target='_blank'>php engine</a>, <a class='technorati-link' href='http://technorati.com/tag/sql' rel='tag' target='_blank'>sql</a>, <a class='technorati-link' href='http://technorati.com/tag/user' rel='tag' target='_blank'>user</a>, <a class='technorati-link' href='http://technorati.com/tag/variable' rel='tag' target='_blank'>variable</a>, <a class='technorati-link' href='http://technorati.com/tag/web+server+apache' rel='tag' target='_blank'>web server apache</a></p>

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://thepizzy.net/blog/2006/03/project-tsnxchat/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

