<?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>forums &#8211; Virtually Fun</title>
	<atom:link href="https://virtuallyfun.com/category/forums/feed/" rel="self" type="application/rss+xml" />
	<link>https://virtuallyfun.com</link>
	<description>Fun with Virtualization</description>
	<lastBuildDate>Sat, 02 Jul 2022 05:29:57 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>
	<item>
		<title>VOGONS.org turns 20 years old today!ï¿¼</title>
		<link>https://virtuallyfun.com/2022/07/02/vogons-org-turns-20-years-old-today%ef%bf%bc/</link>
					<comments>https://virtuallyfun.com/2022/07/02/vogons-org-turns-20-years-old-today%ef%bf%bc/#respond</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Sat, 02 Jul 2022 05:29:52 +0000</pubDate>
				<category><![CDATA[forums]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[MS-DOS]]></category>
		<category><![CDATA[sound cards]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/wordpress/?p=11946</guid>

					<description><![CDATA[Stiletto had dropped on by to share this amazing milestone! Follow the twitter thread here! For the longest time VOGONS was the place to get information about VDMsound the sound blaster emulator for NTVDM, allowing a far more rich gaming &#8230; <a href="https://virtuallyfun.com/2022/07/02/vogons-org-turns-20-years-old-today%ef%bf%bc/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Stiletto had dropped on by to share this amazing milestone!</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://twitter.com/stilett0_/status/1542675790445305857"><img fetchpriority="high" decoding="async" width="604" height="257" src="https://virtuallyfun.com/wp-content/uploads/2022/07/Screen-Shot-2022-07-01-at-08.49.35.png" alt="" class="wp-image-11947" srcset="https://virtuallyfun.com/wp-content/uploads/2022/07/Screen-Shot-2022-07-01-at-08.49.35.png 604w, https://virtuallyfun.com/wp-content/uploads/2022/07/Screen-Shot-2022-07-01-at-08.49.35-300x128.png 300w, https://virtuallyfun.com/wp-content/uploads/2022/07/Screen-Shot-2022-07-01-at-08.49.35-500x213.png 500w" sizes="(max-width: 604px) 100vw, 604px" /></a><figcaption>Today is the 20th anniversary of <a rel="noreferrer noopener" href="https://t.co/2U8mcTNHzP" target="_blank">http://VOGONS.org</a>. I was there helping to brainstorm it into existence in June 2000 at <a href="https://twitter.com/bravenet">@bravenet</a> on vladr&#8217;s VDMSound forums before <a href="https://twitter.com/zetafleet">@zetafleet</a> hosted it, I registered for it on July 1st, and I helped give it its name and &#8220;theme&#8221;!</figcaption></figure>
</div>


<p class="wp-block-paragraph">Follow the <a href="https://twitter.com/stilett0_/status/1542675790445305857" target="_blank" rel="noreferrer noopener">twitter thread here</a>!</p>



<p class="wp-block-paragraph">For the longest time VOGONS was the place to get information about <a rel="noreferrer noopener" href="https://sourceforge.net/projects/vdmsound/" target="_blank">VDMsound</a> the sound blaster emulator for NTVDM, allowing a far more rich gaming experience on NT, <a rel="noreferrer noopener" href="https://sourceforge.net/projects/dosbox/" target="_blank">DOSBox</a>, the ubiquitous PC/MS-DOS emulator that is simply everywhere, and of course where I was &#8216;discovered&#8217; via &#8216;<a rel="noreferrer noopener" href="https://www.vogons.org/viewtopic.php?f=31&amp;t=27084" target="_blank">Quake1 with WATTCP built with DJGPP on DOSBox</a>&#8216; some 10+ years ago!</p>



<p class="wp-block-paragraph">So happy 20th to <a rel="noreferrer noopener" href="https://www.vogons.org/" target="_blank">VOGONS</a>!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2022/07/02/vogons-org-turns-20-years-old-today%ef%bf%bc/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Reviving 20 year old web forum software</title>
		<link>https://virtuallyfun.com/2019/07/21/reviving-20-year-old-web-forum-software/</link>
					<comments>https://virtuallyfun.com/2019/07/21/reviving-20-year-old-web-forum-software/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Sun, 21 Jul 2019 17:41:18 +0000</pubDate>
				<category><![CDATA[forums]]></category>
		<category><![CDATA[guest post]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/wordpress/?p=9630</guid>

					<description><![CDATA[(This is a guest post by&#160;xorhash.) What makes you nostalgic? I don&#8217;t know about you, but for me, it&#8217;s definitely early 2000s web forums. Names like vBulletin, UltimateBB, phpBB, YaBB, IkonBoard, â€¦ bring a smile to my face. Thus, I &#8230; <a href="https://virtuallyfun.com/2019/07/21/reviving-20-year-old-web-forum-software/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>(This is a guest post by&nbsp;<a href="https://twitter.com/xorhash">xorhash</a>.)</em></p>



<p class="wp-block-paragraph">What makes you nostalgic? I don&#8217;t know about you, but for me, it&#8217;s definitely early 2000s web forums. Names like vBulletin, UltimateBB, phpBB, YaBB, IkonBoard, â€¦ bring a smile to my face. Thus, I figured it would be time to revisit the oldest vBulletin I could get my hands on. As it turns out,&nbsp;<a href="https://web.archive.org/web/20000926005905/http://vbulletin.com/download/">vBulletin used to offer â€œvBulletin Liteâ€</a>&nbsp;back in the year&nbsp;2000, which is a version of vBulletin&nbsp;1.x stripped down so much, it almost stops being vBulletin.</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" width="761" height="420" src="https://virtuallyfun.com/wp-content/uploads/2019/07/index.png" alt="" class="wp-image-9631" srcset="https://virtuallyfun.com/wp-content/uploads/2019/07/index.png 761w, https://virtuallyfun.com/wp-content/uploads/2019/07/index-300x166.png 300w" sizes="(max-width: 761px) 100vw, 761px" /></figure></div>



<p class="wp-block-paragraph">Because they hid it behind a form, the web archive didn&#8217;t quite catch it, but I managed to find a different copy online, which&nbsp;<em>seems</em>&nbsp;pristine enough at least:&nbsp;<a href="https://virtuallyfun.com/wp-content/uploads/2019/07/vbulletinlite101.zip">vbulletinlite101.zip</a></p>



<p class="wp-block-paragraph">So that&#8217;s just a bunch of code. I could just get a period-appropriate Red&nbsp;Hat&nbsp;9 installation going, but that&#8217;d be&nbsp;<em>boring</em>. How much work could it possibly be to get this to run? In hindsight: just about six&nbsp;hours. Please allow me to say that the code is of rather questionable quality.&nbsp;<strong>Do not expose this to the Internet</strong>. Without even trying, I found at least two SQL injections. Every SQL injection immediately leads to code execution under PHP as well since the templates are interpreted using&nbsp;<code>eval()</code>. And so I set out on my quest to port this to a modern OS.</p>



<table>
  <tr><th>Software</th><th>Original Requirement</th><th>My Version</th></tr>
  <tr><td>Operating System</td><td>&ldquo;different flavours of UNIX, as well as Windows&nbsp;NT/98&rdquo;</td><td>Ubuntu&nbsp;19.04</td></tr>
  <tr><td>Interpreter</td><td>PHP&nbsp;3.0.9</td><td>PHP&nbsp;7.2.19</td></tr>
  <tr><td>Database</td><td>MySQL&nbsp;3.22</td><td>MariaDB&nbsp;10.3.13</td></tr>
</table>



<figure class="wp-block-image"><img decoding="async" width="759" height="436" src="https://virtuallyfun.com/wp-content/uploads/2019/07/forumdisplay.png" alt="" class="wp-image-9633" srcset="https://virtuallyfun.com/wp-content/uploads/2019/07/forumdisplay.png 759w, https://virtuallyfun.com/wp-content/uploads/2019/07/forumdisplay-300x172.png 300w" sizes="(max-width: 759px) 100vw, 759px" /></figure>



<p class="wp-block-paragraph">The details of this are rather boring, so allow me to point out some highlights and discoveries made while digging through the code:</p>



<ul class="wp-block-list"><li><strong>50&nbsp;reply limit</strong>: Threads were limited to 50&nbsp;replies. There was no pagination. Any replies beyond that would just replace the most recent post. I&#8217;m not sure if this was an attempt at preventing server and client load from excessively large pages or an attempt to â€œencourageâ€ people to actually buy vBulletin.</li><li><strong>No accounts</strong>: Unlike vBulletin&nbsp;1.x, there were no accounts. All posts would just have a username field and an optional field for an e-mail address; even if provided, the e-mail address does not get verified.</li><li><strong>No thread/post management</strong>: There&#8217;s no way to conveniently delete threads or posts, leaving the forums completely defenseless against spam. I suspect this was by design, so that nobody would stick with vBulletin Lite.</li><li><strong>Icon plagiarism</strong>: The icons for the â€œsearchâ€ and â€œhomeâ€ buttons are actually taken from Internet Explorer&nbsp;4. For comparison, here are the buttons in Internet Explorer:</li></ul>



<center><img decoding="async" src="https://virtuallyfun.com/wp-content/uploads/2019/07/ie4-search.jpg" alt="Internet Explorer 4 search button">
<img decoding="async" src="https://virtuallyfun.com/wp-content/uploads/2019/07/IE4-home.jpg" alt="Internet Explorer 4 home button"></center>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="760" height="588" src="https://virtuallyfun.com/wp-content/uploads/2019/07/showthread.png" alt="" class="wp-image-9637" srcset="https://virtuallyfun.com/wp-content/uploads/2019/07/showthread.png 760w, https://virtuallyfun.com/wp-content/uploads/2019/07/showthread-300x232.png 300w" sizes="auto, (max-width: 760px) 100vw, 760px" /></figure></div>



<ul class="wp-block-list"><li><strong>Questionable security</strong>: vBulletin Lite was not a pinnacle of secure and defensive coding. Though some efforts were made (e.â€‰g. using&nbsp;<a href="https://www.php.net/manual/en/function.addslashes.php"><code>addslashes()</code></a>, which is nowadays considered inappropriate, but was all that what was available at the time in PHP&nbsp;3), they were not thorough and overlooked spots. When encountering a database error, the&nbsp;<em>actual</em>&nbsp;SQL query and error details would be shown in an HTML comment on the error page, greatly helping attackers build their SQL injection even without source code available. The admin control panel password is stored in plaintext: on the server as well as in the cookie that persists an admin session. I&#8217;m also not sold on using&nbsp;<code>eval()</code>&nbsp;for interpreting templates from the database.</li><li><strong>Filenames ending in .php3</strong>: Back then, it was common for PHP scripts to have a filename ending in .php3, though I couldn&#8217;t find the exact reason why this used to be common practice (possibly to allow PHP/FI&nbsp;2.0 and PHP&nbsp;3.0 to co-exist, maybe?). Nowadays, everything&#8217;s normally just a .php file.</li><li><strong>register_globals was very much a thing</strong>: The PHP (anti-)feature&nbsp;<a href="https://www.php.net/manual/en/security.globals.php">register_globals</a>&nbsp;caused request parameters and cookies to be turned into global variables in the script, e.â€‰g. https://www.php.example/test.php?x=1 would set&nbsp;<code>$x</code>&nbsp;to&nbsp;<code>1</code>. vBulletin Lite relied on register_globals existing and working. PHP removed it in version&nbsp;5.4, so a lot of request handling needed to be changed for vBulletin Lite to work at all.</li><li><strong>MySQL has implicit defaults</strong>: Apparently, if strict mode is not enabled,&nbsp;<a href="https://www.php.net/manual/en/function.mysql-real-escape-string.php#data-types-defaults-implicit">MySQL has implicit defaults for various data types</a>. vBulletin Lite relied on this behavior, much to my surprise. I&#8217;m not sure who thought this was a good feature, but it sure surprised me.</li></ul>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="803" height="464" src="https://virtuallyfun.com/wp-content/uploads/2019/07/acp.png" alt="" class="wp-image-9638" srcset="https://virtuallyfun.com/wp-content/uploads/2019/07/acp.png 803w, https://virtuallyfun.com/wp-content/uploads/2019/07/acp-300x173.png 300w, https://virtuallyfun.com/wp-content/uploads/2019/07/acp-768x444.png 768w" sizes="auto, (max-width: 803px) 100vw, 803px" /></figure></div>



<ul class="wp-block-list"><li><strong>Password caching until exactly 2020</strong>: When successfully logging into the admin control panel, a cookie â€œcontrolpasswordâ€ is set. It is hardcoded to expire at the beginning of 2020â€”next year. I&#8217;m glad I didn&#8217;t have to try and debug that subtle issue. My patch makes it so that the cookie expires at the start of the next year.</li><li><strong>A typo in the admin control panel</strong>: In&nbsp;<code>admin/forum.php</code>, deletion of a forum should bring the list of forums again. However, due to a typo (â€œmodfiyâ€ instead of â€œmodifyâ€), the page instead stays blank. I also took the liberty to fix this obvious bug.</li><li><strong>Feature remnants</strong>: vBulletin Lite kind of looks like a rushjob; I&#8217;d love to find out if that&#8217;s true. There are leftovers of various features, which manifest themselves in stray variables being referenced but never set. For example, the e-mail field in the template for the&nbsp;<code>newthread.php</code>&nbsp;page actually references&nbsp;<code>$password</code>, which nothing else ever reads or sets. Similarly,&nbsp;<code>forumdisplay.php</code>&nbsp;references a&nbsp;<code>$datecut</code>&nbsp;variable, which I assume regular vBulletin&nbsp;1.x would use to prune old threads by date (to save space on the database?).</li><li><strong>Ampersands in HTML</strong>: vBulletin had literal ampersands (&amp;) in the templates, namely in links. Firefox complains about this nowadays and expects&nbsp;<code>&amp;amp;</code>&nbsp;even in&nbsp;<code>&lt;a href&gt;</code>, but I didn&#8217;t want to touch that because I&#8217;m afraid I might break an old browser by changing this behavior.</li></ul>



<p class="wp-block-paragraph"> As mentioned above, I&nbsp;<strong>made a patch for vBulletin Lite&nbsp;1.0.1</strong>&nbsp;to make it work with modern versions of PHP and MySQL:&nbsp;<a href="https://virtuallyfun.com/wp-content/uploads/2019/07/vbulletinlite101-2019.zip">vbulletinlite101-2019.diff</a><br>Applying it requires some preparation (renaming the files from .php3 to .php and adjusting the names of included files ahead of time); after that, it should apply cleanly: </p>



<pre>$ for i in *.php3; do mv $i $(basename $i .php3).php; done
$ cd admin && for i in *.php3; do mv $i $(basename $i .php3).php; done
$ cd .. && find . -name "*.php" -exec sed -i 's/php3/php/g' {} \;
$ patch -p1 < PATH_TO_PATCH.diff</pre>



<p class="wp-block-paragraph">vBulletin Lite had a mechanism that would send e-mail a configurable address about SQL errors. I ended up disabling that in&nbsp;<code>db_mysql.php</code>, spilling the error onto the page and kept that behavior in the patch to make debugging easier (since this has no business running in production anymore anyway). See the areas marked with TODO if you want to undo that after all.</p>



<p class="wp-block-paragraph">I used the newÂ <code>??</code>Â syntax introduced in PHPÂ 7, so this patch may not immediately work with PHPÂ 5, though the worst grunt work has already been taken care of.</p>



<p class="wp-block-paragraph">And for those who want to give it a kick, I put one up on  <a href="https://vbulletin.virtuallyfun.com/">vbulletin.virtuallyfun.com</a>. </p>



<hr class="wp-block-separator"/>



<p class="wp-block-paragraph">The&nbsp;<a href="https://web.archive.org/web/20000926005905/http://vbulletin.com/download/">website that used to host vBulletin Lite</a>&nbsp;notes that â€œvBulletin Lite may be modified for your own use only. Under no circumstances may any modified vBulletin Lite code be distributedâ€.</p>



<p class="wp-block-paragraph"><em>I hope that separating this into a pristine archive and a patchâ€”with no functional changesâ€”is good enough. Should this still not be enough for the rightsholders (currently MH&nbsp;Sub&nbsp;I,&nbsp;LLC dba vBulletin), takedown requests will of course be honored.</em></p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2019/07/21/reviving-20-year-old-web-forum-software/feed/</wfw:commentRss>
			<slash:comments>12</slash:comments>
		
		
			</item>
	</channel>
</rss>
