Commit 2569242a authored by Dries's avatar Dries

Imported sources

parent 008612ad
UPDATE=update.txt
clean:
rm -f *~ DEADJOE core
backup:
@echo "- Generating $(UPDATE) ..."
@echo "This tarball has been created on:" > $(UPDATE)
@date >> $(UPDATE)
@echo "- Removing older archives ..."
@rm -f drop.tar.gz
@echo "- Archiving PHP files ..."
@tar -cf drop.tar *
@gzip drop.tar
@cp -f drop.tar.gz /home/dries/backup
@echo "- A fresh archive is now available at http://www.drop.org/drop.tar.gz."
@echo " (MySQL backup NOT included.)"
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
<?PHP
if(!isset($sid) && !isset($tid)) { exit(); }
include "config.inc";
include "functions.inc";
include "theme.inc";
dbconnect();
if ($save) {
cookiedecode($user);
mysql_query("UPDATE users SET umode='$mode', uorder='$order', thold='$thold' where uid='$cookie[0]'");
getusrinfo($user);
$info = base64_encode("$userinfo[uid]:$userinfo[uname]:$userinfo[pass]:$userinfo[storynum]:$userinfo[umode]:$userinfo[uorder]:$userinfo[thold]:$userinfo[noscore]");
setcookie("user","$info",time() + 15552000);
}
if($op == "reply") Header("Location: comments.php?op=reply&pid=0&sid=$sid&mode=$mode&order=$order&thold=$thold");
$result = mysql_query("SELECT * FROM stories WHERE sid = $sid");
list($sid, $aid, $subject, $time, $abstract, $comments, $article, $category, $informant, $department) = mysql_fetch_row($result);
$theme->header();
$reply = "[ <A HREF=\"\"><FONT COLOR=\"$theme->hlcolor2\">home</FONT></A> | <A HREF=\"comments.php?op=reply&pid=0&sid=$sid\"><FONT COLOR=\"$theme->hlcolor2\">add a comment</FONT></A> ]";
$theme->article($aid, $informant, $time, stripslashes($subject), $department, stripslashes($abstract), stripslashes($comments), stripslashes($article), $reply);
cookiedecode($user);
if ($mode != "nocomments") include "comments.php";
$theme->footer();
?>
\ No newline at end of file
<?
if ((isset($aid)) && (isset($pwd)) && ($op == "login")) {
$admin = base64_encode("$aid:$pwd");
setcookie("admin","$admin",time()+2592000); // 1 mo is 2592000
}
if (isset($admin)) {
$admin = base64_decode($admin);
$admin = explode(":", $admin);
$aid = "$admin[0]";
$pwd = "$admin[1]";
dbconnect();
if (mysql_num_rows(mysql_query("SELECT * FROM authors WHERE aid = '$aid' AND pwd = '$pwd'")) == 1) $admin = 1;
else $admin = 0;
} else {
$admin = 0;
}
?>
\ No newline at end of file
This diff is collapsed.
<?PHP
#
# MySQL settings:
#
$dbhost = "zind.net";
$dbuname = "dries";
$dbpass = "Abc123";
$dbname = "dries";
#
# Name of the site
#
$sitename = "drop.org";
#
# Contact information:
# The contact information will be used to send out automated mails
# to users, account holders or visitors.
$contact_email = "droppies@zind.net";
$contact_signature = "Kind regards,\n\n-- the drop.org crew\nhttp://www.drop.org/";
#
# Notify information:
# The notify information will be used to send out automated mails
# for internal purpose.
#
$notify_email = $contact_email;
$notify_subject = "submission: ";
$notify_message = "New submission: '$subject'\n\n$story";
$notify_from = "droppies@zind.net";
#
# Comment meta reasons:
# The comment meta reasons are the various meta reasons used to
# moderate comments. The array should always be 'balanced': that
# the number of good reasons should equal the number of bad reason
# and those should be ordered from bad to good.
#
$comments_meta_reasons = array('Off topic', 'Redundant', 'Insightfull', 'As is', 'Interesting', 'Informative', 'Funny');
#
# Categories:
#
$categories = array('Announcements', 'Coding', 'Geeking', 'Drop.org', 'Gaming', 'Girls', 'Graphics', 'Hardware', 'Humor', 'Internet', 'Music', 'Movies', 'Politics', 'Science', 'Software', 'Space', 'Webdesign', 'Quickies');
#
# Notify:
# Set to '1' to receive an e-mail when news has been submitted
# through submit.php
#
$notify = 1;
#
# Allowed HTML tags:
#
$allowableHTML = array('B','/B','I','/I','P .*','P','/P','A .*','/A','LI','OL','/OL','UL','/UL','EM','/EM','BR','STRONG','/STRONG','BLOCKQUOTE','/BLOCKQUOTE','HR','DIV .*','DIV','/DIV','TT','/TT');
#
# Name of the 'anonymous' user account:
#
$anonymous = "Anonymous Chicken";
#
# Debug flag:
# Set to '1' if you are using Windows so the engine won't try
# to send out mails and such. When using Unix or Linux, set
# to '0'
$system = 0;
?>
\ No newline at end of file
File added
<?PHP
function defaultDisplay() {
include "functions.inc";
include "theme.inc";
$theme->header();
?>
<PRE>
<FONT FACE="courier">
<H3>General</H3>
* Mission statement:
--------------------
- New generation of weblog systems: mixture of slashdot.org,
squishdot.org, kuro5hin.org, etc.
- History
* Frequently asked questions:
-----------------------------
1. What is this site about, alas what is our 'mission statement'?
See above.
2. What kind of news should I submit?
Anything you find interesting. Read the site for a bit.
If the stories that appear on this site interest you, and
you come across a story that also interests you, chances
are, it will interest us too.
In general we prefer stories that some meat to them. We
encourage submitters to extend their posts, and perhaps
to offer some insight or explanation as to why they
thought their item was interesting, and what it means to
us.
todo: automatically generate a list of the available
news categories.
3. How to create an account?
- todo: explanation to write.
4. What can I do with an account?
- todo: check completed features (see below) as for now.
5. What is comment moderation and how does it work?
After a weblog gains some popularity, an inevitable question
shows up: "how do we sort the wheat from the chaff?".
The purpose of comment moderation is two-fold:
* To bring the really good comments to everyone's attention.
* To hide or get get rid of spam, flamebait and trolls.
In the latter, comment moderation provides a technical solution
to a social problem.
6. What is story moderation and how does it work?
Under construction.
7. Is the source code of this weblog engine available?
This site is powered by <A HREF="http://www.fsf.org/">Free Software</A>; including <A HREF="http://www.apache.org/">Apache</A>,
<A HREF="http://www.php.net/">PHP</A>, <A HREF="http://www.mysql.com/">MySQL</A> and <A HREF="http://www.linux.com/">Linux</A>. Therefor we have decided to make
the software engine of this site available under terms of
GPL.
* Disclaimer:
-------------
- todo: general disclaimer
- Short version: comments are owned by the poster and this site is
not responsible for what tey say.
</FONT>
</PRE>
<?php
$theme->footer();
}
switch($op) {
default:
defaultDisplay();
break;
}
?>
\ No newline at end of file
<?
include "config.inc";
$functions = 1;
function dbconnect() {
include "config.inc";
mysql_pconnect($dbhost, $dbuname, $dbpass);
@mysql_select_db("$dbname") or die ("Unable to select database");
}
function counter() {
dbconnect();
mysql_query("UPDATE vars SET value=value+1 where name='totalhits'");
}
function cookiedecode($user) {
global $cookie;
$user = base64_decode($user);
$cookie = explode(":", $user);
return $cookie;
}
function getusrinfo($user) {
global $userinfo;
$user2 = base64_decode($user);
dbconnect();
$user3 = explode(":", $user2);
$result = mysql_query("SELECT uid, name, uname, email, femail, url, pass, storynum, umode, uorder, thold, noscore, bio, ublockon, ublock, theme, signature FROM users WHERE uname = '$user3[1]' AND pass = '$user3[2]'");
if(mysql_num_rows($result)==1) {
$userinfo = mysql_fetch_array($result);
} else {
echo "<b>A problem occured</b><br>";
}
return $userinfo;
}
function FixQuotes ($what = "") {
$what = ereg_replace("'","''",$what);
while (eregi("\\\\'", $what)) {
$what = ereg_replace("\\\\'","'",$what);
}
return $what;
}
function check_html($message) {
## TODO
return $message;
}
function filter_text($message, $strip="") {
### TODO
return check_html($text, $strip);
}
function formatTimestamp($time) {
### Should be removed as soon as possible!
global $datetime;
ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})", $time, $datetime);
$datetime = date("l, F d, Y - h:i A", mktime($datetime[4],$datetime[5],$datetime[6],$datetime[2],$datetime[3],$datetime[1]));
return($datetime);
}
function addRefer($url) {
dbconnect();
$query = "SELECT * FROM refer WHERE url = '$url'";
$result = mysql_query($query);
if ($site = mysql_fetch_object($result)) {
if ($site->status) {
$site->refers++;
$query = "UPDATE refer SET refers = '$site->refers', access_dt = '". time() ."' WHERE url = '$url'";
$result = mysql_query($query);
}
}
else {
$query = "INSERT INTO refer (url, name, refers, create_dt, access_dt) VALUES ('$url', '', '1', '". time() ."', '". time() ."')";
$result = mysql_query($query);
}
}
function displayRelatedLinks($theme, $sid = 0) {
dbconnect();
$result = mysql_query("SELECT * FROM stories WHERE sid = $sid");
if ($story = mysql_fetch_object($result)) {
### parse story for A HREF-tags:
$text = "$story->abstract $story->comments $story->article";
while ($text = stristr($text, "<A HREF=")) {
$link = substr($text, 0, strpos($text, "</a>") + 4);
$text = stristr($text, "</A>");
if (!stristr($link, "mailto:")) $content .= "<LI>$link</LI>";
}
### default related links:
$content .= " <LI>More about <A HREF=\"search.php?category=$story->category\">$story->category</A>.</LI>";
$content .= " <LI>Also by <A HREF=\"search.php?author=$story->aid\">$story->aid</A>.</LI>";
$theme->box("Related links", $content);
}
}
function displayOldHeadlines($theme) {
global $user, $cookie;
if ($cookie[3]) $result = mysql_query("SELECT sid, subject, time FROM stories ORDER BY time DESC LIMIT $cookie[3], 10");
else $result = mysql_query("SELECT sid, subject, time FROM stories ORDER BY time DESC LIMIT 10, 10");
while ($story = mysql_fetch_object($result)) {
if ($time != date("F jS", $story->time)) {
$content .= "<P><B>". date("l, F jS", $story->time) ."</B></P>";
$time = date("F jS", $story->time);
}
if ($user) {
$content .= "<LI><A HREF=\"article.php?sid=$story->sid";
if (isset($cookie[4])) { $content .= "&mode=$cookie[4]"; } else { $content .= "&mode=threaded"; }
if (isset($cookie[5])) { $content .= "&order=$cookie[5]"; } else { $content .= "&order=0"; }
if (isset($cookie[6])) { $content .= "&thold=$cookie[6]"; } else { $content .= "&thold=0"; }
$content .= "\">$story->subject</A></LI>";
}
else {
$content .= "<LI><A HREF=\"article.php?sid=$story->sid&mode=threaded&order=1&thold=0\">$story->subject</A></LI>";
}
}
$content .= "<P ALIGN=\"right\">[ <A HREF=\"search.php\"><FONT COLOR=\"$theme->hlcolor2\">more</FONT></A> ]</P>";
$theme->box("Older headlines", $content);
}
function displayNewHeadlines($theme, $num = 10) {
global $user, $cookie;
dbconnect();
$content = "";
$result = mysql_query("SELECT sid, subject FROM stories ORDER BY time DESC LIMIT $num");
while(list($sid, $subject) = mysql_fetch_row($result)) {
if ($user) {
$content .= "<LI><A HREF=\"article.php?sid=$sid";
if (isset($cookie[4])) { $content .= "&mode=$cookie[4]"; } else { $content .= "&mode=threaded"; }
if (isset($cookie[5])) { $content .= "&order=$cookie[5]"; } else { $content .= "&order=0"; }
if (isset($cookie[6])) { $content .= "&thold=$cookie[6]"; } else { $content .= "&thold=0"; }
$content .= "\">$subject</A></LI>";
}
else {
$content .= "<LI><A HREF=\"article.php?sid=$sid&mode=threaded&order=1&thold=0\">$subject</A></LI>";
}
}
$content .= "<P ALIGN=\"right\">[ <A HREF=\"search.php\"><FONT COLOR=\"$theme->hlcolor2\">more</FONT></A> ]</P>";
$theme->box("Latest headlines", $content);
}
function displayAdminblock($theme) {
$result = mysql_query("SELECT title, content FROM blocks");
while (list($title, $content) = mysql_fetch_array($result)) {
$theme->box($title, nl2br($content));
}
}
function displayUserblock($theme) {
global $cookie;
dbconnect();
if ($cookie[8]) {
$block = mysql_query("SELECT ublock FROM users WHERE uid = '$cookie[0]'");
list($content) = mysql_fetch_row($block);
$content .= "<P ALIGN=\"right\">[ <A HREF=\"account.php?op=edithome\"><FONT COLOR=\"$theme->hlcolor2\">edit</FONT></A> | <A HREF=\"account.php?op=logout\"><FONT COLOR=\"$theme->hlcolor2\">logout</FONT></A> ]</P>";
$theme->box("$cookie[1]'s box", $content);
}
}
function displayAccount($theme) {
global $user, $cookie;
if ($user) {
### Display userblock if any:
displayUserblock();
}
else {
$content = "<CENTER><FORM METHOD=\"post\" ACTION=\"account.php\">\n <P>Username:<BR><INPUT TYPE=\"text\" NAME=\"uname\" MAXLENGTH=\"50\" SIZE=\"12\"></P>\n<P>Password:<BR> <INPUT TYPE=\"password\" NAME=\"pass\" MAXLENGTH=\"25\" SIZE=\"12\"></P>\n<INPUT TYPE=\"submit\" NAME=\"op\" VALUE=\"Login\">\n</FORM>\n<P><A HREF=\"account.php\">Register</A> as new user.<BR><A HREF=\"account.php\">Forgot</A> your password?</P></CENTER>";
$theme->box("Login", $content);
}
}
function displayAccountSettings($theme) {
global $user;
if ($user) {
### Display account settings:
$content .= "<LI><A HREF=\"account.php\">User info</A></LI>";
$content .= "<LI><A HREF=\"account.php?op=edituser\">Edit user info</A></LI>";
$content .= "<LI><A HREF=\"account.php?op=edithome\">Customize homepage</A></LI>";
$content .= "<LI><A HREF=\"account.php?op=editcomm\">Customize comments</A></LI>";
$content .= "<LI><A HREF=\"account.php?op=logout\">Logout</A></LI>";
### Decode user cookie to extract name:
$cookie = cookiedecode($user);
$theme->box("$cookie[1]'s acount", "$content");
}
}
function displayReferrals($theme, $number = 10) {
$count = 1;
dbconnect();
if ($number) {
$query = "SELECT * FROM refer ORDER BY refers DESC LIMIT $number";
$result = mysql_query($query);
}
else {
$query = "SELECT * FROM refer ORDER BY refers DESC";
$result = mysql_query($query);
}
while (($site = mysql_fetch_object($result)) && ($count <= $number)) {
if ($site->name) $rval .= "$count. <A HREF=\"$site->url\">$site->name</A> ($site->refers)<BR>";
else $rval .= "$count. <A HREF=\"$site->url\">$site->url</A> ($site->refers)<BR>";
$count++;
}
$theme->box("Referring sites", "$rval <P ALIGN=\"right\">[ <A HREF=\"refer.php#refer-info\"><FONT COLOR=\"$theme->hlcolor2\">info</FONT></A> | <A HREF=\"refer.php#refer-more\"><FONT COLOR=\"$theme->hlcolor2\">more</FONT></A> ]</P>");
}
function displayPoll($theme) {
global $answer, $answer1, $answer2, $answer3, $answer4, $answer5, $answer6, $id, $method, $section, $poll, $question;
// Pass the URI and FORM parameters along to poll.php.
$box = 1;
include "poll.php";
}
?>
\ No newline at end of file
This diff is collapsed.
foo
bar
guy
neo
geek
nerd
fish
hack
star
moon
hero
cola
girl
fish
java
boss
This diff is collapsed.
<?
function displayMain() {
include "functions.inc";
include "theme.inc";
dbconnect();
$result = mysql_query("SELECT * FROM queue");
$content .= "<P>Anyone who happens by, and has some news or some thoughts they'd like to share, can <A HREF=\"submit.php\">submit</A> new content for consideration. After someone has submitted something, their story is added to a queue. All registered users can access this list of pending stories, that is, stories that have been submitted, but do not yet appear on the public front page. Those registered users can vote whether they think the story should be posted or not. When enough people vote to post a story, the story is pushed over the threshold and up it goes on the public page. On the other hand, when too many people voted to drop a story, the story will be trashed.</P><P>Basically, this means that you, the community, are truly the editors of this site as you have the final decision on the content of this site. It's you judging the overall quality of a story. But remember, vote on whether the story is interesting, not on whether you agree with it or not. If the story goes up, you can disagree all you want, but don't vote 'no' because you think the ideas expressed are wrong. Instead, vote 'no' when you think the story is plain boring.</P>";
$content .= "<TABLE BORDER=\"0\" CELLSPACING=\"2\" CELLPADDING=\"2\">\n";
$content .= " <TR BGCOLOR=\"$bgcolor1\"><TD>Subject</TD><TD>Category</TD><TD>Date</TD><TD>Author</TD><TD>Score</TD></TR>\n";
while ($submission = mysql_fetch_object($result)) {
$content .= " <TR><TD WIDTH=\"100%\"><A HREF=\"queue.php?op=view&qid=$submission->qid\">$submission->subject</A></TD><TD>$submission->category</TD><TD NOWRAP>". date("Y-m-d h:m:s", $submission->timestamp) ."</TD><TD NOWRAP>$submission->uname</TD><TD>O</TD></TR>\n";
}
$content .= "</TABLE>\n";
$theme->header();
$theme->box("Pending stories", $content);
$theme->footer();
}
function displaySubmission($qid) {
include "functions.inc";
include "theme.inc";
dbconnect();
$result = mysql_query("SELECT * FROM queue WHERE qid = $qid");
$submission = mysql_fetch_object($result);
$theme->header();
$theme->article("", $submission->uname, $submission->time, $submission->subject, "", $submission->abstract, "", $submission->article, "[ <A HREF=\"javascript: history.back()\"><FONT COLOR=\"$theme->hlcolor2\">back</FONT></A> ]");
$theme->footer();
}
switch($op) {
case "view":
displaySubmission($qid);
break;
default:
displayMain();
break;
}
?>
\ No newline at end of file
<?
include "functions.inc";
include "theme.inc";
class rdf {
// Contains the raw rdf file:
var $data;
// Contains the parsed rdf file:
var $title; // website name
var $items; // latest headlines
function url2sql($site, $timout = 10) {
### Connect to database:
dbconnect();
### Get channel info:
$result = mysql_query("SELECT * FROM channel WHERE site = '$site'");
if ($channel = mysql_fetch_object($result)) {
### Decode URL:
$url = parse_url($channel->rdf);
$host = $url[host];
$port = $url[port] ? $url[port] : 80;
$path = $url[path];
// print "<PRE>$url - $host - $port - $path</PRE>";
### Retrieve data from website:
$fp = fsockopen($host, $port, &$errno, &$errstr, $timout);
if ($fp) {
### Get data from URL:
fputs($fp, "GET $path HTTP/1.0\n");
fputs($fp, "User-Agent: headline grabber\n");
fputs($fp, "Host: ". $host ."\n");
fputs($fp, "Accept: */*\n\n");
while(!feof($fp)) $data .= fgets($fp, 128);
// print "<PRE>$data</PRE><HR>";
if (strstr($data, "200 OK")) {
### Remove existing entries:
$result = mysql_query("DELETE FROM headlines WHERE id = $channel->id");
### Strip all 'junk':
$data = ereg_replace("<?xml.*/image>", "", $data);
$data = ereg_replace("</rdf.*", "", $data);
$data = chop($data);
### Iterating through our data processing each entry/item:
$items = explode("</item>", $data);
$number = 0;
for (reset($items); $item = current($items); next($items)) {
### Extract data:
$link = ereg_replace(".*<link>", "", $item);
$link = ereg_replace("</link>.*", "", $link);
$title = ereg_replace(".*<title>", "", $item);
$title = ereg_replace("</title>.*", "", $title);
### Clean headlines:
$title = stripslashes(fixquotes($title));
### Count the number of stories:
$number += 1;
### Insert item in database:
$result = mysql_query("INSERT INTO headlines (id, title, link, number) VALUES('$channel->id', '$title', '$link', '$number')");
}
### Mark channels as being updated:
$result = mysql_query("UPDATE channel SET timestamp = '". time() ."' WHERE id = $channel->id");
}
else print "<HR>RDF parser: 404 error?<BR><BR><PRE>$data</PRE><HR>";
}
}
}
function displayHeadlines($site, $timout = 1800) {
global $theme;
### Connect to database:
dbconnect();
### Get channel info:
$result = mysql_query("SELECT * FROM channel WHERE site = '$site'");
if ($channel = mysql_fetch_object($result)) {
### Check to see whether we have to update our headlines first:
if (time() - $channel->timestamp > $timout) $this->url2sql($site);
### Grab headlines from database:
$result = mysql_query("SELECT * FROM headlines WHERE id = $channel->id ORDER BY number");
while ($headline = mysql_fetch_object($result)) {
$content .= "<LI><A HREF=\"$headline->link\">$headline->title</A></LI>";
}
### Add timestamp:
$update = round((time() - $channel->timestamp) / 60);
$content .= "<P ALIGN=\"right\">[ <A HREF=\"rdf.php?op=reset&id=$channel->id\"><FONT COLOR=\"$theme->hlcolor2\">reset</FONT></A> | updated $update min. ago ]</P>";
### Display box:
$theme->box("$channel->site", $content);
}
else print "<P>Warning: something whiched happened: specified channel could not be found in database.</P>";
}
function addChannel($site, $url, $rdf) {
### Connect to database:
dbconnect();
### Add channel:
$query = mysql_query("INSERT INTO channel (site, url, rdf, timestamp) VALUES ('$site', '$url', '$rdf', now())");
}
function resetChannel($id) {
### Connect to database:
dbconnect();
### Delete headlines:
$result = mysql_query("DELETE FROM headlines WHERE id = $id");
### Mark channel as invalid to enforce an update:
$result = mysql_query("UPDATE channel SET timestamp = 42 WHERE id = $id");
}
}
function adminAddChannel() {
?>
<HR>
<FORM ACTION="rdf.php" METHOD="post">
<P>
<B>Site name:</B><BR>
<INPUT TYPE="text" NAME="site" SIZE="50">
</P>
<P>
<B>URL:</B><BR>
<INPUT TYPE="text" NAME="url" SIZE="50">
</P>
<P>
<B>RDF file:</B><BR>
<INPUT TYPE="text" NAME="rdf" SIZE="50">
</P>
<INPUT TYPE="submit" NAME="op" VALUE="Add RDF channel">
</FORM>
<?
}
function adminDisplayAll() {
### Connect to database:
dbconnect();
### Get channel info:
$result = mysql_query("SELECT * FROM channel ORDER BY id");
print "<TABLE BORDER=\"0\">";
while ($channel = mysql_fetch_object($result)) {
if ($state % 3 == 0) print " <TR>";
print " <TD ALIGN=\"center\" VALIGN=\"top\" WIDTH=\"33%\">";
$rdf = new rdf();
$rdf->displayHeadlines($channel->site);
print " </TD>";
if ($state % 3 == 2) print " </TR>";
$state += 1;
}
print "</TABLE>";
}
function adminDisplayInfo() {
?>
<H1>Headlines</H1>
<H3>Concept</H3>
<P>
RDF support can change a portal in a significant way: third party websites
can become <I>channels</I> in our portal without having to make 'real' deals
and with a minimum of extra work. All they need to do is to publish an RDF,
so we can include their latest updates in our portal. Yet another easy way
to add content.
</P>
<P>
That in and of itself is interesting, but it's not half so interesting as
the fact that other sites can include our headlines as well. Anyone can
grab our RDF, anyone can parse it, and anyone can put a list of our
headlines. Yet another way to generate more traffic.
</P>
<H3>Features</H3>
<P>
One of the most important features (if not the most important) is
chaching support. To avoid bogging down other portals with a continous
stream of headline grabbing, all headlines are cached and refreshed once
in a while. The 'while' can be costumized but is set to 30 minutes by
default.
</P>
<P>
You can reset a channel, that is force to update a channels headlines
and you can add new channels. If you don't know what channel to add,
check <A HREF="http://www.xmltree.com/">http://www.xmltree.com/</A>.
Make sure you don't add anything except valid RDF files!
</P>
<H3>Status</H3>