HTTP Gateway
* Version: 0.6.x
* Download: https://news.novabbs.com/getrslight
*
* Based on Newsportal by Florian Amrhein
*
* E-Mail: retroguy@novabbs.com
* Web: https://news.novabbs.com
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
session_start();
include "config.inc.php";
$CONFIG = include($config_file);
@$fieldnamedecrypt=$_REQUEST['fielddecrypt'];
//@$newsgroups=$_REQUEST["newsgroups"];
//@$group=$_REQUEST["group"];
@$type=$_REQUEST["type"];
@$subject=stripslashes($_REQUEST[md5($fieldnamedecrypt."subject")]);
@$name=$_REQUEST[md5($fieldnamedecrypt."name")];
@$email=$_REQUEST[md5($fieldnamedecrypt."email")];
@$body=stripslashes($_REQUEST[md5($fieldnamedecrypt."body")]);
@$abspeichern=$_REQUEST["abspeichern"];
@$references=$_REQUEST["references"];
@$id=$_REQUEST["id"];
if (!isset($group)) $group=$newsgroups;
include "auth.inc";
if($post_captcha)
include "lib/captcha/captcha.php";
// Save name in cookies
if (($setcookies==true) && (isset($abspeichern)) && ($abspeichern=="ja")) {
setcookie("cookie_name",stripslashes($name),time()+(3600*24*90));
}
if ((isset($post_server)) && ($post_server!=""))
$server=$post_server;
if ((isset($post_port)) && ($post_port!=""))
$port=$post_port;
include "head.inc";
include $file_newsportal;
global $synchro_user,$synchro_pass;
// check to which groups the user is allowed to post to
$thisgroup=_rawurldecode($_REQUEST['group']);
if($testgroup) {
$newsgroups=testgroups($thisgroup);
} else {
$newsgroups=$thisgroup;
}
// has the user write-rights on the newsgroups?
if((function_exists("npreg_group_has_read_access") &&
!npreg_group_has_read_access($newsgroups)) ||
(function_exists("npreg_group_has_write_access") &&
!npreg_group_has_write_access($newsgroups))) {
die("access denied");
}
// Load name from cookies
if ($setcookies) {
if ((isset($_COOKIE["cookie_name"])) && (!isset($name)))
$name=$_COOKIE["cookie_name"];
// if ((isset($_COOKIE["cookie_email"])) && (!isset($email)))
// $email=$_COOKIE["cookie_email"];
}
// Load name and email from the registration system, if available
if(function_exists("npreg_get_name")) {
$name=npreg_get_name();
}
if(function_exists("npreg_get_email")) {
$email=npreg_get_email();
$form_noemail=true;
}
if(!strcmp($name, $CONFIG['anonusername']) && (isset($CONFIG['anonuser']))) {
$userpass = $CONFIG['anonuserpass'];
$email=$name.$CONFIG['email_tail'];
} else {
$userpass = $email;
$request="email";
$get_email = get_user_config($name,$request);
if($get_email === FALSE) {
$email=$name.$CONFIG['email_tail'];
} else {
$email=trim($get_email);
}
}
if (isset($CONFIG['synchronet']) && ($CONFIG['synchronet'] == true)) {
$synchro_user=$name;
$synchro_pass=$userpass;
}
if($name=="")
$name=$_SERVER['REMOTE_USER'];
if((!isset($references)) || ($references=="")) {
$references=false;
}
if (!isset($type)) {
$type="new";
}
if ($type=="new") {
$subject="";
$bodyzeile="";
$show=1;
}
// Is there a new article to post to the newsserver?
if ($type=="post") {
$show=0;
if (!$CONFIG['synchronet']) {
if (check_bbs_auth(trim($name), $userpass)==FALSE) {
$type="retry";
$error=$text_error["auth_error"];
}
}
// error handling
if (trim($body)=="") {
$type="retry";
$error=$text_post["missing_message"];
}
if ((trim($email)=="") && (!isset($anonym_address))) {
$type="retry";
$error=$text_post["missing_email"];
}
if (($email) && (!validate_email(trim($email)))) {
$type="retry";
$error=$text_post["error_wrong_email"];
}
if (trim($name)=="") {
$type="retry";
$error=$text_post["missing_name"];
}
if (trim($subject)=="") {
$type="retry";
$error=$text_post["missing_subject"];
}
// captcha-check
if(($post_captcha) && (captcha::check()==false)) {
$type="retry";
$error=$text_post["captchafail"];
}
if ($type=="post") {
if (!$CONFIG['readonly']) {
// post article to the newsserver
if($references)
$references_array=explode(" ",$references);
else
$references_array=false;
if(($email=="") && (isset($anonym_address)))
$nemail=$anonym_address;
else
$nemail=$email;
$rate_limit = get_user_config($name, 'rate_limit');
if(($rate_limit !== FALSE) && ($rate_limit > 0)) {
$CONFIG['rate_limit'] = $rate_limit;
}
if($CONFIG['rate_limit'] == true && strcmp($name, $CONFIG['anonusername'])) {
$postsremaining = check_rate_limit($name);
if($postsremaining < 1) {
$wait = check_rate_limit($name,0,1);
echo 'You have reached the limit of '.$CONFIG['rate_limit'].' posts per hour.
Please wait '.round($wait).' minutes before posting again.';
$returngroup=explode(',',$newsgroups);
echo '
'.$text_post["button_back"].' '.$text_post["button_back2"].' '.group_display_name($returngroup[0]).'
'; return; } } if(isset($_FILES["photo"]) && $_FILES["photo"]["error"] == 0) { // There is an attachment to handle $message=message_post_with_attachment(quoted_printable_encode($subject), $nemail." (".quoted_printable_encode($name).")", $newsgroups,$references_array,addslashes($body),$_POST['encryptthis'],$_POST['encryptto']); } else { $message=message_post(quoted_printable_encode($subject), $nemail." (".quoted_printable_encode($name).")", $newsgroups,$references_array,addslashes($body),$_POST['encryptthis'],$_POST['encryptto']); } // Article sent without errors, or duplicate? if ((substr($message,0,3)=="240") || (substr($message,0,7)=="441 435")) { echo ''.$text_post["message_posted2"].'
'; // This returns to multiple groups if crossposting, which does not work. FIXME // Try to return to just the first group in the list $returngroup=explode(',',$newsgroups); if(isset($CONFIG['auto_return']) && ($CONFIG['auto_return'] == true)) { echo ''; if($postsremaining < 1) { $wait = check_rate_limit($name,0,1); echo 'Please wait '.round($wait).' minutes before posting again.'.$text_post["button_back"].' '.$text_post["button_back2"].' '.group_display_name($returngroup[0]).'
'; } else { // article not accepted by the newsserver $type="retry"; $error=$text_post["error_newsserver"]."$message"; } } else { echo $text_post["error_readonly"]; } } } // A reply of an other article. if ($type=="reply") { $message=message_read($id,0,$newsgroups); $head=$message->header; $body=explode("\n",$message->body[0]); nntp_close($ns); if ($head->name != "") { $bodyzeile=$head->name; } else { $bodyzeile=$head->from; } // For Synchronet use $fromname=$bodyzeile; $bodyzeile=$text_post["wrote_prefix"].$bodyzeile. $text_post["wrote_suffix"]."\n\n"; for ($i=0; $i<=count($body)-1; $i++) { if((isset($cutsignature)) && ($cutsignature==true) && ($body[$i]=='-- ')) break; if (trim($body[$i])!="") { if($body[$i][0]=='>') $bodyzeile.=">".$body[$i]."\n"; else $bodyzeile.="> ".$body[$i]."\n"; } else { $bodyzeile.="\n"; } } $subject=$head->subject; if (isset($head->followup) && ($head->followup != "")) { $newsgroups=$head->followup; } else { if($testgroup) { $newsgroups=testgroups($head->newsgroups); } else { $newsgroups=$head->newsgroups; } } splitSubject($subject); $subject="Re: ".$subject; // Cut off old parts of a subject // for example: 'foo (was: bar)' becomes 'foo'. $subject=preg_replace('/(\(wa[sr]: .*\))$/i','',$subject); $show=1; $references=false; if (isset($head->references[0])) { for ($i=0; $i<=count($head->references)-1; $i++) { $references .= $head->references[$i]." "; } } $references .= $head->id; } if ($type=="retry") { $show=1; $bodyzeile=$body; } if ($show==1) { if ($newsgroups == "") { echo $text_post["followup_not_allowed"]; echo " ".$newsgroups; } else { // show post form $fieldencrypt=md5(rand(1,10000000)); echo '
$error
"; ?>