Web site updates.

comment.php:
    - Fix comment date.

data/software.md5:
    - Moved from swfiles/mxml.md5 and reformatted.

newsgroups.php:
    - Deleted

phplib/html.php:
    - Removed newsgroups and polls links.
    - Renamed "support" to "bugs & features"
    - Add refresh URL support.

software.php:
    - Use download mirrors.
    - Synced with other site code.

str.php:
    - Change to "Bugs & Features"
    - Add 2.1.1 version number

swfiles/*
    - Removed; all release files are on FTP server now.
    - mxml.md5 moved to data/software.md5
pull/193/head
Michael R Sweet 20 years ago
parent 7ec9c5924f
commit 0d83a3513c
  1. 6
      www/comment.php
  2. 6
      www/data/software.md5
  3. 835
      www/newsgroups.php
  4. 15
      www/phplib/html.php
  5. 244
      www/software.php
  6. 42
      www/str.php
  7. BIN
      www/swfiles/mxml-0.9.tar.gz
  8. BIN
      www/swfiles/mxml-0.91.tar.gz
  9. BIN
      www/swfiles/mxml-0.92.tar.gz
  10. BIN
      www/swfiles/mxml-0.93.tar.gz
  11. BIN
      www/swfiles/mxml-1.0-1.i386.rpm
  12. BIN
      www/swfiles/mxml-1.0.tar.gz
  13. BIN
      www/swfiles/mxml-1.1-1.i386.rpm
  14. BIN
      www/swfiles/mxml-1.1.1-1.i386.rpm
  15. BIN
      www/swfiles/mxml-1.1.1.tar.gz
  16. BIN
      www/swfiles/mxml-1.1.2-1.i386.rpm
  17. BIN
      www/swfiles/mxml-1.1.2.tar.gz
  18. BIN
      www/swfiles/mxml-1.1.tar.gz
  19. BIN
      www/swfiles/mxml-1.2-1.i386.rpm
  20. BIN
      www/swfiles/mxml-1.2.tar.gz
  21. BIN
      www/swfiles/mxml-1.3-1.i386.rpm
  22. BIN
      www/swfiles/mxml-1.3.tar.gz
  23. BIN
      www/swfiles/mxml-2.0-1.i386.rpm
  24. BIN
      www/swfiles/mxml-2.0.tar.gz
  25. BIN
      www/swfiles/mxml-2.1-1.i386.rpm
  26. BIN
      www/swfiles/mxml-2.1.tar.gz
  27. 20
      www/swfiles/mxml.md5

@ -1,6 +1,6 @@
<?php
//
// "$Id: comment.php,v 1.7 2004/05/20 02:04:44 mike Exp $"
// "$Id$"
//
// Comment and moderation interface for PHP pages...
//
@ -315,7 +315,7 @@ else
while ($row = db_next($result))
{
$create_date = date("M d, Y", $row['date']);
$create_date = date("M d, Y", $row['create_date']);
$create_user = sanitize_email($row['create_user']);
$contents = sanitize_text($row['contents']);
$location = str_replace("_", "?", $row['url']);
@ -373,6 +373,6 @@ else
}
//
// End of "$Id: comment.php,v 1.7 2004/05/20 02:04:44 mike Exp $".
// End of "$Id$".
//
?>

@ -0,0 +1,6 @@
e30ff88b15f74964e20d80c6577a1cb9 2.1 mxml/2.1/mxml-2.1-1.i386.rpm
35f829a907c0319f83a3661591788ed3 2.1 mxml/2.1/mxml-2.1.tar.gz
2d010aa0cfc1058aa48b3c03bc3781ec 2.0 mxml/2.0/mxml-2.0-1.i386.rpm
bd9194cdbf717550a130789802e5b81c 2.0 mxml/2.0/mxml-2.0.tar.gz
9dfb974bd31d60c97bfa394b7f6ca63e 1.3 mxml/1.3/mxml-1.3-1.i386.rpm
9b116daa370bf647447d6ffe70e73534 1.3 mxml/1.3/mxml-1.3.tar.gz

@ -1,835 +0,0 @@
<?php
//
// "$Id: newsgroups.php,v 1.1 2004/06/10 02:40:05 mike Exp $"
//
// Mini-XML newsgroup page...
//
include_once "phplib/html.php";
include_once "phplib/common.php";
// News server...
$NNTPSERVER = "localhost";
$NNTPPORT = 8119;
//$NNTPSERVER = "news.easysw.com";
//$NNTPPORT = 119;
// Cookie stuff...
if (array_key_exists("SEARCH", $_POST))
{
$search = $_POST["SEARCH"];
setcookie("SEARCH", "$search", 0, "/");
}
else if (array_key_exists("SEARCH", $_COOKIE))
$search = $_COOKIE["SEARCH"];
else
$search = "";
if (array_key_exists("FROM", $_POST))
{
$from = $_POST["FROM"];
setcookie("FROM", "$from", time() + 90 * 86400, "/");
}
else if ($LOGIN_EMAIL != "")
{
$from = $LOGIN_EMAIL;
setcookie("FROM", "$from", time() + 90 * 86400, "/");
}
else if (array_key_exists("FROM", $_COOKIE))
$from = $_COOKIE["FROM"];
else
$from = "Anonymous <anonymous@easysw.com>";
if ($from == "" || $from == "Anonymous")
$from = "Anonymous <anonymous@easysw.com>";
//
// 'nntp_close()' - Close a news server thing...
//
function
nntp_close($stream) // I - Socket stream
{
nntp_command($stream, "QUIT", 205);
fclose($stream);
}
//
// 'nntp_command()' - Send a command and get the response...
//
function // O - NNTP response
nntp_command($stream, // I - Socket stream
$command = "QUIT", // I - NNTP command
$expect = 200) // I - Expected status
{
// print("<p>nntp_command(stream=$stream, command='$command', expect=$expect)</p>\n");
fwrite($stream, "$command\r\n");
$status = fgets($stream, 1024);
// print("<p>status='$status'</p>\n");
if ((int)$status != $expect)
{
print("<p><b>Error:</b> $status</p>\n");
return (NULL);
}
else
return ($status);
}
//
// 'nntp_connect()' - Connect to the news server.
//
function // O - Socket stream
nntp_connect()
{
global $NNTPSERVER, $NNTPPORT;
$stream = fsockopen($NNTPSERVER, $NNTPPORT, &$errno, &$errstr);
if ($stream)
{
if ($line = fgets($stream, 1024))
{
if ((int)$line != 200)
{
print("<p><b>Error:</b> $line</p>\n");
fclose($stream);
return (FALSE);
}
}
else
{
print("<p><b>Error:</b> No response from NNTP server!</p>\n");
fclose($stream);
return (FALSE);
}
}
else
print("<p><b>Error:</b> $errstr ($errno)</p>\n");
return ($stream);
}
//
// 'nntp_search()' - Do a header search...
//
function // O - Matching message headers...
nntp_search($stream, // I - Socket stream
$group, // I - NNTP group
$search) // I - Search text
{
// print("<p>nntp_search(stream=$stream, group='$group', search='$search'</p>\n");
$status = nntp_command($stream, "GROUP $group", 211);
if (!$status)
return (NULL);
$fields = explode(" ", $status);
$status = nntp_command($stream, "XOVER $fields[2]-$fields[3]", 224);
if (!$status)
return (NULL);
$words = explode(" ", $search);
$num_matches = 0;
$matches = NULL;
while ($line = fgets($stream, 1024))
{
$line = rtrim($line);
if ($line == ".")
break;
if ($search == "")
{
// Return all matches...
$matches[$num_matches] = $line;
$num_matches ++;
}
else
{
// Search for words...
reset($words);
while (list($key, $word) = each($words))
{
if (stristr($line, $word))
{
$matches[$num_matches] = $line;
$num_matches ++;
break;
}
}
}
}
// print("<p>num_matches=$num_matches</p>\n");
return ($matches);
}
//
// 'show_prevnext_page()' - Show the prev/next links for the messages list...
//
function
show_prevnext_page($group, // I - Group
$group_filter, // I - Group filter
$start, // I - Start message
$end, // I - End message
$count) // I - Number of messages
{
global $PHP_SELF, $PAGE_MAX;
print("<p><table width='100%' border='0' cellpadding='0' cellspacing='0'>\n"
."<tr><td width='25%'>");
if ($start > 1)
{
$i = $start - $PAGE_MAX;
if ($i < 1)
$i = 1;
$j = $i + $PAGE_MAX - 1;
if ($j > $count)
$j = $count;
html_start_links();
html_link("Show Messages $i - $j", "$PHP_SELF?s$i+g$group+G$group_filter");
html_end_links();
}
print("</td><td align='center' width='50%'>");
html_start_links();
html_link("All Groups", "$PHP_SELF?G$group_filter");
if (!ereg(".*\.announce", $group) && !ereg(".*\.cvs", $group))
html_link("New Message", "$PHP_SELF?s$i+g$group+G$group_filter+n");
html_end_links();
print("</td><td align='right' width='25%'>");
if ($end < $count)
{
$i = $start + $PAGE_MAX;
$j = $i + $PAGE_MAX - 1;
if ($j > $count)
$j = $count;
html_start_links();
html_link("Show Messages $i - $j", "$PHP_SELF?s$i+g$group+G$group_filter");
}
print("</td></tr>\n"
."</table></p>\n");
}
//
// 'show_messages()' - Show messages in the named group...
//
function
show_messages($group, // I - Group
$group_filter, // I - Group filter
$start, // I - Start message
$search) // I - Search string
{
global $PHP_SELF, $PAGE_MAX;
// Figure out which messages to show...
$error = "";
$stream = nntp_connect();
$matches = nntp_search($stream, $group, $search);
$count = count($matches);
nntp_close($stream);
if (!$matches)
{
$count = 0;
$error = "No matches found for '" .
htmlspecialchars($search, ENT_QUOTES) . "'...";
}
if ($start == 0)
$start = $count - 9;
if ($start > ($count - $PAGE_MAX + 1))
$start = $count - $PAGE_MAX + 1;
if ($start < 1)
$start = 1;
$end = $start + $PAGE_MAX - 1;
if ($end > $count)
$end = $count;
// Show the standard header...
html_header("$group ($start - $end of $count)");
$temp = htmlspecialchars($search, ENT_QUOTES);
print("<form method='post' action='$PHP_SELF?g$group+G$group_filter'>\n"
."<p align='center'><input type='text' name='SEARCH' value='$temp' "
."size='60'/><input type='submit' value='Search $group'/></p>\n"
."</form>\n");
if ($error != "")
print("<p align='center'><i>$error</i></p>\n");
show_prevnext_page($group, $group_filter, $start, $end, $count);
html_start_table(array("Subject", "Author", "Date"));
for ($i = $start; $i <= $end; $i ++)
{
$fields = explode("\t", $matches[$i - 1]);
$msg = (int)$fields[0];
$subject = htmlspecialchars($fields[1], ENT_QUOTES);
$author = sanitize_email($fields[2]);
$date = htmlspecialchars($fields[3], ENT_QUOTES);
html_start_row();
print("<td><a href='$PHP_SELF?s$start+g$group+G$group_filter+v$i'>"
."$subject</a></td>"
."<td align='center'>$author</td>"
."<td align='right'>$date</td>");
html_end_row();
}
html_end_table();
show_prevnext_page($group, $group_filter, $start, $end, $count);
html_footer();
}
//
// 'show_groups()' - Show groups...
//
function
show_groups($group_filter, // I - Group filter
$search) // I - Search string
{
global $PHP_SELF;
html_header("Newsgroups");
// Figure out which messages to show...
$stream = nntp_connect();
// Search stuff...
print("<form method='post' action='$PHP_SELF?G$group_filter'>\n"
."<p align='center'><input type='text' name='SEARCH' value='$search' "
."size='60'/><input type='submit' value='Search All Groups'/></p>\n"
."</form>\n");
// Show the standard header...
html_start_table(array("Group", "Messages", ""));
$status = nntp_command($stream, "LIST", 215);
$num_groups = 0;
$groups = array();
if ($status)
{
while ($line = fgets($stream, 1024))
{
$line = rtrim($line);
if ($line == ".")
break;
$fields = explode(" ", $line);
$groups[$num_groups] = $fields[0];
$num_groups ++;
}
}
sort($groups);
while (list($key, $group) = each($groups))
{
if (ereg("(linuxprinting|private)\\..*", $group))
continue;
if ($group_filter && !ereg("${group_filter}\\.*", $group))
continue;
$status = nntp_command($stream, "GROUP $group", 211);
if (!$status)
continue;
$fields = explode(" ", $status);
$total = (int)$fields[1];
if ($search != "")
{
$matches = nntp_search($stream, $group, $search);
$count = count($matches);
}
else
$count = $total;
html_start_row();
print("<td align='center'>$group</td>"
."<td align='center'>$count");
if ($search != "")
print("/$total");
print("</td><td>");
html_start_links();
html_link("View", "$PHP_SELF?g$group+G$group_filter");
if (!ereg(".*\.announce", $group) && !ereg(".*\.cvs", $group))
html_link("New Message", "$PHP_SELF?g$group+G$group_filter+n");
html_end_links();
print("</td>");
html_end_row();
}
html_start_row("header");
print("<th colspan='3'>Newsgroups and Mailing Lists</th>");
html_end_row();
html_start_row();
print("<td colspan='3'>"
."<p>Point your news reader at <a href='news://news.easysw.com'>"
."news.easysw.com</a> to view these groups directly.</p>\n"
."<p>Go to <a href='http://lists.easysw.com/mailman/listinfo'>"
."http://lists.easysw.com/mailman/listinfo</a> "
."to subscribe to or unsubcribe from the mailing lists that mirror "
."these groups.</p>"
."</td>");
html_end_row();
html_end_table();
nntp_close($stream);
html_footer();
}
//
// 'show_prevnext_msg()' - Show the prev/next links for the messages list...
//
function
show_prevnext_msg($group, // I - Group
$group_filter, // I - Group filter
$start, // I - Start message
$count, // I - Number of messages
$msg) // I - Current message
{
global $PHP_SELF;
print("<p><table width='100%' border='0' cellpadding='0' cellspacing='0'>\n"
."<tr><td width='25%'>");
if ($msg > 1)
{
$i = $msg - 1;
html_start_links();
html_link("Previous Message", "$PHP_SELF?s$start+g$group+G$group_filter+v$i");
html_end_links();
}
print("</td><td align='center' width='50%'>");
html_start_links();
html_link("All Groups", "$PHP_SELF?G$group_filter");
html_link("Back to $group", "$PHP_SELF?s$msg+g$group+G$group_filter");
if (!ereg(".*\.announce", $group) && !ereg(".*\.cvs", $group))
{
html_link("Reply", "$PHP_SELF?s$start+g$group+G$group_filter+r$msg");
html_link("New Message", "$PHP_SELF?s$i+g$group+G$group_filter+n");
}
html_end_links();
print("</td><td align='right' width='25%'>");
if ($msg < $count)
{
$i = $msg + 1;
html_start_links();
html_link("Next Message", "$PHP_SELF?s$start+g$group+G$group_filter+v$i");
html_end_links();
}
print("</td></tr>\n"
."</table></p>\n");
}
//
// 'show_message()' - Show a single message...
//
function
show_message($group, // I - Group
$group_filter, // I - Group filter
$start, // I - Start message
$msg, // I - Current message
$search) // I - Search string
{
global $PHP_SELF;
// Figure out which messages to show...
$stream = nntp_connect();
$matches = nntp_search($stream, $group, $search);
$count = count($matches);
if ($msg < 1 || $msg > $count)
{
nntp_close($stream);
return;
}
$fields = explode("\t", $matches[$msg - 1]);
$msgnum = (int)$fields[0];
$subject = str_replace(":", "&#58;", htmlspecialchars($fields[1], ENT_QUOTES));
$author = str_replace(":", "&#58;", sanitize_email($fields[2]));
$date = str_replace(":", "&#58;", htmlspecialchars($fields[3], ENT_QUOTES));
$status = nntp_command($stream, "BODY $msgnum", 222);
if (!$status)
{
nntp_close($stream);
return;
}
$body = "";
while ($line = fgets($stream, 1024))
{
$line = rtrim($line);
if ($line == ".")
break;
$body = $body . $line . "\n";
}
nntp_close($stream);
$body = quote_text($body);
html_header("$subject");
show_prevnext_msg($group, $group_filter, $start, $count, $msg);
html_start_table(array($subject, $author, $date));
html_start_row();
print("<td colspan='3'><tt>$body</tt></td>");
html_end_row();
html_end_table();
show_prevnext_msg($group, $group_filter, $start, $count, $msg);
html_footer();
}
//
// 'post_message()' - Post a message...
//
function
post_message($group, // I - Group
$group_filter, // I - Group filter
$start, // I - Start message
$msg, // I - Current message
$search) // I - Search string
{
global $PHP_SELF, $_POST;
if (array_key_exists("FROM", $_POST))
$from = $_POST["FROM"];
else
$from = "";
if (array_key_exists("SUBJECT", $_POST))
$subject = $_POST["SUBJECT"];
else
$subject = "";
if (array_key_exists("BODY", $_POST))
$body = $_POST["BODY"];
else
$body = "";
if (!validate_email($from) || $subject == "" || $body == "")
{
new_message($group, $group_filter, $start, $from, $subject, $body);
return;
}
$stream = nntp_connect();
if (!$stream)
{
return;
}
$id = "";
if ($msg > 0)
{
$matches = nntp_search($stream, $group, $search);
$count = count($matches);
if ($msg <= $count)
{
$fields = explode("\t", $matches[$msg - 1]);
$id = $fields[4];
}
}
$status = nntp_command($stream, "POST", 340);
if (!$status)
{
nntp_close($stream);
return;
}
fwrite($stream, "From: $from\r\n");
fwrite($stream, "Subject: $subject\r\n");
fwrite($stream, "Newsgroups: $group\r\n");
if ($id != "")
fwrite($stream, "In-Reply-To: $id\r\n");
fwrite($stream, "\r\n");
$lines = explode("\n", $body);
$count = count($lines);
for ($i = 0; $i < $count; $i ++)
{
$line = rtrim($lines[$i]);
if ($line == ".")
fwrite($stream, ". \r\n");
else
fwrite($stream, "$line\r\n");
}
$status = nntp_command($stream, ".", 240);
if ($status)
{
if ($msg == 0)
header("Location: $PHP_SELF?s$start+g$group+G$group_filter");
else
header("Location: $PHP_SELF?s$start+g$group+G$group_filter+v$msg");
}
nntp_close($stream);
}
//
// 'reply_message()' - Reply to a message...
//
function
reply_message($group, // I - Group to reply to
$group_filter, // I - Group filter
$start, // I - First message in the display
$msg, // I - Message to reply to
$search, // I - Search string
$sender) // I - Sender address
{
global $PHP_SELF;
// Figure out which messages to show...
$stream = nntp_connect();
$matches = nntp_search($stream, $group, $search);
$count = count($matches);
if ($msg < 1 || $msg > $count)
{
nntp_close($stream);
return;
}
$fields = explode("\t", $matches[$msg - 1]);
$msgnum = (int)$fields[0];
$subject = htmlspecialchars($fields[1], ENT_QUOTES);
$author = sanitize_email($fields[2]);
$date = htmlspecialchars($fields[3], ENT_QUOTES);
if (strncasecmp($subject, "re:", 3))
$subject = "Re: " . $subject;
$status = nntp_command($stream, "BODY $msgnum", 222);
if (!$status)
{
nntp_close($stream);
return;
}
$body = "";
while ($line = fgets($stream, 1024))
{
$line = rtrim($line);
if ($line == ".")
break;
$body = $body . "> " . $line . "\n";
}
nntp_close($stream);
new_message($group, $group_filter, $start, $subject, $sender, $body);
}
//
// 'new_message()' - Post a new message...
//
function
new_message($group, // I - Group to post to
$group_filter, // I - Group filter
$start, // I - First message
$subject, // I - Subject of message
$sender, // I - Sender address
$body) // I - Message body
{
global $PHP_SELF, $NNTPSPEC;
$subject = htmlspecialchars($subject, ENT_QUOTES);
$sender = htmlspecialchars($sender, ENT_QUOTES);
$body = htmlspecialchars($body, ENT_QUOTES);
html_header("Post Message to $group");
html_start_links(1);
html_link("All Groups", "$PHP_SELF?G$group_filter");
html_link("Back to $group", "$PHP_SELF?s$start+g$group+G$group_filter");
html_end_links(1);
print("<h2>Post Message to $group</h2>");
print("<form action='$PHP_SELF?s$start+g$group+G$group_filter+p0' method='POST'>\n");
print("<center><table width='100%' border='0' cellpadding='5' cellspacing='0'>\n");
print("<tr><th align='right' valign='top'>Subject:</th>"
."<td><input type='text' name='SUBJECT' value='$subject' size='40'/></td></tr>\n");
print("<tr><th align='right' valign='top'>From:</th>"
."<td><input type='text' name='FROM' value='$sender' size='40'/></td></tr>\n");
print("<tr><th align='right' valign='top'>Body:</th>"
."<td><textarea name='BODY' cols='72' rows='24'>$body</textarea></td></tr>\n");
print("<tr><th></th>"
."<td><input type='submit' value='Post Message'/></td></tr>\n");
print("</table></center>\n");
print("</form>\n");
html_footer();
}
// Parse command-line options...
$start = 0;
$group = "";
$op = 'l';
$msg = "";
for ($i = 0; $i < $argc; $i ++)
{
switch ($argv[$i][0])
{
case 'g' :
$group = substr($argv[$i], 1);
break;
case 'G' :
$groups = substr($argv[$i], 1);
break;
case 'n' :
case 'p' :
case 'r' :
case 'v' :
$op = $argv[$i][0];
$msg = (int)substr($argv[$i], 1);
break;
case 's' :
$start = (int)substr($argv[$i], 1);
break;
}
}
// Now handle the request...
switch ($op)
{
case 'l' : // List
if ($group)
show_messages($group, $PROJECT_MODULE, $start, $search);
else
show_groups($PROJECT_MODULE, $search);
break;
case 'n' : // New message
new_message($group, $PROJECT_MODULE, $start, "", $from, "");
break;
case 'p' : // Post message
if (ereg(".*\.announce", $group) || ereg(".*\.cvs", $group))
{
html_header("Newsgroup Posting Error");
print("<p>We are sorry, but we could not post your message for the "
."following reason:\n"
."<blockquote>Group $group is read-only.</blockquote>\n");
html_footer();
}
else
post_message($group, $PROJECT_MODULE, $start, $msg, $search);
break;
case 'r' : // Reply message
reply_message($group, $PROJECT_MODULE, $start, $msg, $search, $from);
break;
case 'v' : // View message
show_message($group, $PROJECT_MODULE, $start, $msg, $search);
break;
}
//
// End of "$Id: newsgroups.php,v 1.1 2004/06/10 02:40:05 mike Exp $".
//
?>

@ -1,6 +1,6 @@
<?php
//
// "$Id: html.php,v 1.13 2004/06/10 02:40:05 mike Exp $"
// "$Id$"
//
// PHP functions for standardized HTML output...
//
@ -57,7 +57,8 @@ $html_keywords = array(
function // O - User information
html_header($title = "", // I - Additional document title
$path = "") // I - Relative path to root
$path = "", // I - Relative path to root
$refresh = "") // I - Refresh URL
{
global $html_keywords, $argc, $argv, $PHP_SELF, $LOGIN_USER;
@ -87,6 +88,10 @@ html_header($title = "", // I - Additional document title
."charset=iso-8859-1'/>\n"
." <link rel='stylesheet' type='text/css' href='${path}style.css'/>\n");
// If refresh URL is specified, add the META tag...
if ($refresh != "")
print(" <meta http-equiv='refresh' content='3; $refresh'/>\n");
// Search engine keywords...
reset($html_keywords);
@ -111,12 +116,10 @@ html_header($title = "", // I - Additional document title
."alt='Mini-XML' align='middle'/>&nbsp;&nbsp;&nbsp;</td>"
."<td width='100%'>[&nbsp;<a href='${path}index.php'>Home</a> | "
."<a href='${path}articles.php'>Articles</a> | "
."<a href='${path}str.php'>Bugs &amp; Features</a> | "
."<a href='${path}documentation.php'>Documentation</a> | "
."<a href='${path}software.php'>Download</a> | "
."<a href='${path}links.php'>Links</a> | "
."<a href='${path}newsgroups.php'>Newsgroups</a> | "
."<a href='${path}poll.php'>Polls</a> | "
."<a href='${path}str.php'>Support</a>&nbsp;]</td>"
."<a href='${path}links.php'>Links</a>&nbsp;]</td>"
."<td align='right'>[&nbsp;");

@ -1,6 +1,6 @@
<?php
//
// "$Id: software.php,v 1.4 2004/05/19 22:45:23 mike Exp $"
// "$Id$"
//
// Software download page.
//
@ -12,136 +12,194 @@
include_once "phplib/html.php";
// Get the list of software files...
$dir = opendir("swfiles");
$files = array();
// List of download servers...
$sitelist = array(
"http://ftp.easysw.com/pub" => "Oregon, USA via HTTP",
// "ftp://ftp.easysw.com/pub" => "Oregon, USA via FTP",
// "http://ftp2.easysw.com/pub" => "Maryland, USA via HTTP",
"ftp://ftp2.easysw.com/pub" => "Maryland, USA via FTP",
"ftp://ftp3.easysw.com/pub" => "California, USA via FTP",
"http://ftp.funet.fi/pub/mirrors/ftp.easysw.com/pub" => "Espoo, Finland via HTTP",
"ftp://ftp.funet.fi/pub/mirrors/ftp.easysw.com/pub" => "Espoo, Finland via FTP",
);
while ($file = readdir($dir))
{
if (fnmatch("*.tar.gz", $file) ||
fnmatch("*.tar.bz2", $file))
{
// Add source file...
$files[$file] = substr($file, 5, strpos($file, ".tar") - 5);
}
else if (fnmatch("*.rpm", $file) ||
fnmatch("*.deb", $file) ||
fnmatch("*.tgz", $file))
{
// Add binary file...
$data = explode("-", $file);
$files[$file] = $data[1];
}
}
// Get the list of software files...
$fp = fopen("data/software.md5", "r");
$files = array();
arsort($files);
while ($line = fgets($fp, 255))
$files[sizeof($files)] = trim($line);
closedir($dir);
fclose($fp);
// Read MD5 sums for each file...
$fp = fopen("swfiles/mxml.md5", "r");
$md5 = array();
// Get form data, if any...
if (array_key_exists("FILE", $_GET))
$file = $_GET["FILE"];
else
$file = "";
while ($line = fgets($fp))
if (array_key_exists("SITE", $_GET))
{
$data = explode(" ", trim($line));
$md5[$data[2]] = $data[0];
$site = $_GET["SITE"];
setcookie("SITE", $site, time() + 90 * 86400, "/");
}
else if (array_key_exists("SITE", $_COOKIE) &&
array_key_exists($_COOKIE["SITE"], $sitelist))
$site = $_COOKIE["SITE"];
else
$site = "";
//print("<pre>md5 =\n");
//print_r($md5);
//print("</pre>\n");
fclose($fp);
// Show files...
html_header("Download");
reset($files);
if (array_key_exists("VERSION", $_GET))
$version = $_GET["VERSION"];
else
{
$data = explode(" ", $files[0]);
$version = $data[1];
}
if ($argc >= 1)
$firstversion = $argv[0];
// Show the standard header...
if ($site != "" && $file != "")
html_header("Download", "", "$site/$file");
else
$firstversion = current($files);
html_header("Download");
html_start_links(1);
html_link("CVS", "#CVS");
$curversion = "";
while (list($file, $version) = each($files))
if ($version != $curversion)
for ($i = 0; $i < sizeof($files); $i ++)
{
// Grab the data for the current file...
$data = explode(" ", $files[$i]);
$fversion = $data[1];
if ($fversion != $curversion)
{
$curversion = $version;
html_link("v$version", "$PHP_SELF?$version");
$curversion = $fversion;
html_link("v$fversion", "$PHP_SELF?VERSION=$fversion");
}
}
html_end_links();
html_link("Subversion", "$PHP_SELF#SVN");
print("<h1>Download</h1>");
html_end_links();
html_start_table(array("Version", "Filename", "Size", "MD5 Sum"));
print("<h1>Download</h1>\n");
reset($files);
$curversion = "";
while (list($file, $version) = each($files))
// Show files or sites...
if ($file != "")
{
html_start_row();
if ($site != "")
print("<p>Your download should begin shortly. If not, please "
."<a href='$site/$file'>click here</a> to download the file "
."from the current mirror.</p>\n"
."<h2>Change Mirror Site:</h2>\n");
else
print("<p>Please select a mirror site below to begin the download.</p>\n"
."<h2>Select Mirror Site:</h2>\n");
print("<form action='$PHP_SELF' method='GET' name='download'>\n"
."<input type='hidden' name='FILE' value='"
. htmlspecialchars($file, ENT_QUOTES) . "'/>\n"
."<input type='hidden' name='VERSION' value='"
. htmlspecialchars($version, ENT_QUOTES) . "'/>\n");
if ($version == $firstversion)
if ($site == "")
print("<input type='radio' name='SITE' value='' checked/>None<br />\n");
reset($sitelist);
while (list($key, $val) = each($sitelist))
{
$cs = "<th>";
$ce = "</th>";
print("<input type='radio' name='SITE' value='$key' "
."onClick='document.download.submit();'");
if ($site == $key)
print(" checked");
print("/>$val<br />\n");
}
if ($site != "")
print("<input type='submit' value='Change Mirror Site'/>\n");
else
{
$cs = "<td align='center'>";
$ce = "</td>";
}
print("<input type='submit' value='Select Mirror Site'/>\n");
print("</form>\n");
}
else
{
// Show files...
print("<h2>Releases</h2>\n");
html_start_table(array("Version", "Filename", "Size", "MD5 Sum"));
if ($version != $curversion)
$curversion = "";
for ($i = 0; $i < sizeof($files); $i ++)
{
if ($curversion != "")
// Grab the data for the current file...
$data = explode(" ", $files[$i]);
$md5 = $data[0];
$fversion = $data[1];
$filename = $data[2];
$basename = basename($filename);
html_start_row();
if ($fversion == $version)
{
print("<td colspan='4'></td>");
html_end_row();
html_start_row();
$cs = "<th>";
$ce = "</th>";
}
else
{
$cs = "<td align='center'>";
$ce = "</td>";
}
$curversion = $version;
print("$cs<a name='$version'>$version</a>$ce");
}
else
print("$cs$ce");
if ($fversion != $curversion)
{
if ($curversion != "")
{
print("<td colspan='4'></td>");
html_end_row();
html_start_row();
}
$curversion = $fversion;
print("$cs<a name='$fversion'>$fversion</a>$ce");
}
else
print("$cs$ce");
$kbytes = (int)((filesize("swfiles/$file") + 1023) / 1024);
$filemd5 = $md5["$file"];
$kbytes = (int)((filesize("/home/ftp/pub/$filename") + 1023) / 1024);
print("$cs<a href='swfiles/$file'><tt>$file</tt></a>$ce"
."$cs${kbytes}k$ce"
."$cs<tt>$filemd5</tt>$ce");
print("$cs<a href='$PHP_SELF?VERSION=$version&amp;FILE=$filename'>"
."<tt>$basename</tt></a>$ce"
."$cs${kbytes}k$ce"
."$cs<tt>$md5</tt>$ce");
html_end_row();
}
html_end_row();
}
html_end_table();
print("<h2><a name='CVS'>CVS Access</a></h2>\n"
."<p>The $PROJECT_NAME software is available via anonymous CVS "
."using the following CVS root:</p>\n"
."<pre>\n"
." :pserver:anonymous@cvs.easysw.com:/home/anoncvs\n"
."</pre>\n"
."<p>The module name is <tt>$PROJECT_MODULE</tt>. The following "
."command can be used to checkout the $PROJECT_NAME source from "
."CVS:</p>\n"
."<pre>\n"
." <kbd>cvs -d:pserver:anonymous@cvs.easysw.com:/home/anoncvs get $PROJECT_MODULE</kbd>\n"
."</pre>\n");
html_end_table();
print("<h2><a name='SVN'>Subversion Access</a></h2>\n"
."<p>The $PROJECT_NAME software is available via Subversion "
."using the following URL:</p>\n"
."<pre>\n"
." <a href='http://svn.easysw.com/public/$PROJECT_MODULE/'>"
."http://svn.easysw.com/public/$PROJECT_MODULE/</a>\n"
."</pre>\n"
."<p>The following command can be used to checkout the current "
."$PROJECT_NAME source from Subversion:</p>\n"
."<pre>\n"
." <kbd>svn co http://svn.easysw.com/public/$PROJECT_MODULE/trunk/ $PROJECT_MODULE</kbd>\n"
."</pre>\n");
}
// Show the standard footer...
html_footer();
//
// End of "$Id: software.php,v 1.4 2004/05/19 22:45:23 mike Exp $".
// End of "$Id$".
//
?>

@ -1,6 +1,6 @@
<?php
//
// "$Id: str.php,v 1.16 2004/11/13 18:26:33 mike Exp $"
// "$Id$"
//
// Software Trouble Report page...
//
@ -23,9 +23,8 @@ include_once "phplib/str.php";
//
$messages = array(
"Fixed in CVS" =>
"Fixed in CVS - the anonymous CVS repository will be updated at "
."midnight EST.",
"Fixed in Repo" =>
"Fixed in Subversion repository.",
"Old STR" =>
"This STR has not been updated by the submitter for two or more weeks "
."and has been closed as required by the Mini-XML Configuration Management "
@ -51,6 +50,7 @@ $subsystems = array(
$versions = array(
"CVS",
"+2.2",
"+2.1.1",
"2.1",
"2.0",
"2.0rc1",
@ -234,7 +234,7 @@ if ($argc)
if ($op != 'L' && $op != 'M' && $op != 'T' && $op != 'F' &&
$op != 'N' && $op != 'U' && $op != 'B')
{
html_header("STR Error");
html_header("Bugs &amp; Features Error");
print("<p>Bad command '$op'!</p>\n");
html_footer();
exit();
@ -242,7 +242,7 @@ if ($argc)
if (($op == 'M' || $op == 'B') && $LOGIN_LEVEL < AUTH_DEVEL)
{
html_header("STR Error");
html_header("Bugs &amp; Features Error");
print("<p>The '$op' command is not available to you!</p>\n");
html_footer();
exit();
@ -250,7 +250,7 @@ if ($argc)
if (($op == 'M' || $op == 'T' || $op == 'F') && !$id)
{
html_header("STR Error");
html_header("Bugs &amp; Features Error");
print("<p>Command '$op' requires an STR number!</p>\n");
html_footer();
exit();
@ -258,7 +258,7 @@ if ($argc)
if ($op == 'N' && $id)
{
html_header("STR Error");
html_header("Bugs &amp; Features Error");
print("<p>Command '$op' cannot have an STR number!</p>\n");
html_footer();
exit();
@ -297,7 +297,7 @@ if ($argc)
$femail = (int)$option;
break;
default :
html_header("STR Error");
html_header("Bugs &amp; Features Error");
print("<p>Bad option '$argv[$i]'!</p>\n");
html_footer();
exit();
@ -417,7 +417,7 @@ switch ($op)
$row = db_next($result);
html_start_links(1);
html_link("Return to Support", "$PHP_SELF?L$options");
html_link("Return to Bugs &amp; Features", "$PHP_SELF?L$options");
if ($row['status'] >= $STR_STATUS_ACTIVE)
{
@ -563,13 +563,13 @@ switch ($op)
}
else
{
html_header("Support");
html_header("Bugs &amp; Features");
html_start_links(1);
html_link("Submit Support Request", "$PHP_SELF?N$options'");
html_link("Submit Bug or Feature Request", "$PHP_SELF?N$options'");
html_end_links();
print("<h1>Support</h1>\n");
print("<h1>Bugs &amp; Features</h1>\n");
print("<form method='POST' action='$PHP_SELF'><p align='center'>"
."Search&nbsp;Words: &nbsp;<input type='text' size='60' name='SEARCH' value='$search'>"
@ -1041,7 +1041,7 @@ switch ($op)
html_header("Modify STR #$id");
html_start_links(1);
html_link("Return to Support", "$PHP_SELF?L$options");
html_link("Return to Bugs &amp; Features", "$PHP_SELF?L$options");
html_link("Return to STR #$id", "$PHP_SELF?L$id$options");
html_link("Post Text", "$PHP_SELF?T$id$options");
html_link("Post File", "$PHP_SELF?F$id$options");
@ -1682,13 +1682,13 @@ switch ($op)
}
else
{
html_header("Submit Support Request");
html_header("Submit Bug or Feature Request");
html_start_links(1);
html_link("Return to Support", "$PHP_SELF?L$options");
html_link("Return to Bugs &amp; Features", "$PHP_SELF?L$options");
html_end_links();
print("<h1>Submit Support Request</h1>\n");
print("<h1>Submit Bug or Feature Request</h1>\n");
if ($REQUEST_METHOD == "POST")
{
@ -1818,7 +1818,7 @@ switch ($op)
print("<input name='STRFILE' type='FILE'></td></tr>\n");
print("<tr><th align='center' colspan='2'>"
."<input type='submit' value='Submit Support Request'></th></tr>\n");
."<input type='submit' value='Submit Bug or Feature Request'></th></tr>\n");
print("</table></p></form>\n");
html_footer();
}
@ -1830,7 +1830,7 @@ switch ($op)
if ($REQUEST_METHOD != "POST")
{
html_header("STR Error");
html_header("Bugs &amp; Features Error");
print("<p>The '$op' command requires a POST request!\n");
html_footer();
exit();
@ -1842,7 +1842,7 @@ switch ($op)
if (($notification != "ON" && $notification != "OFF") || $email == "" ||
!validate_email($email))
{
html_header("STR Error");
html_header("Bugs &amp; Features Error");
print("<p>Please press your browsers back button and enter a valid "
."EMail address and choose whether to receive notification "
."messages.</p>\n");
@ -1898,6 +1898,6 @@ switch ($op)
}
//
// End of "$Id: str.php,v 1.16 2004/11/13 18:26:33 mike Exp $".
// End of "$Id$".
//
?>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -1,20 +0,0 @@
2b55de728aa5e8c3d254bc192395b6b5 mxml-0.91.tar.gz
24a043c32316c23da079fcc0e5a9ee5d mxml-0.92.tar.gz
e52545d20d4713ed96054980efdfad9e mxml-0.93.tar.gz
f5fe73468b143a0ba0a52cc3fb70d50d mxml-0.9.tar.gz
fa81e0552c2296a9a96acab45ca40b97 mxml-1.0-1.i386.rpm
84dcb43388c621d0622b07d773e9330d mxml-1.0.tar.gz
707ccead0ba2e26828197760957a54b3 mxml-1.1.1-1.i386.rpm
56743f9515038682101506b7d5147968 mxml-1.1-1.i386.rpm
3529f8e70b1aa5e2f5de114cd58d63b8 mxml-1.1.1.tar.gz
9e5d8f70186a5ad84034721582945e24 mxml-1.1.2-1.i386.rpm
f77726908d86a167d3d63076b272dfcd mxml-1.1.2.tar.gz
8e2376171e14c59394b0c2c06ec2b1bd mxml-1.1.tar.gz
099d05a62278020189c258968aae7533 mxml-1.2-1.i386.rpm
57720317e7e5ad4c91fb076cb52105ad mxml-1.2.tar.gz
9dfb974bd31d60c97bfa394b7f6ca63e mxml-1.3-1.i386.rpm
9b116daa370bf647447d6ffe70e73534 mxml-1.3.tar.gz
2d010aa0cfc1058aa48b3c03bc3781ec mxml-2.0-1.i386.rpm
bd9194cdbf717550a130789802e5b81c mxml-2.0.tar.gz
e30ff88b15f74964e20d80c6577a1cb9 mxml-2.1-1.i386.rpm
35f829a907c0319f83a3661591788ed3 mxml-2.1.tar.gz
Loading…
Cancel
Save