Add RSS pull and post feature
This commit is contained in:
parent
6609288a2b
commit
db7c851891
|
@ -74,6 +74,7 @@ mkdir -p $spoolpath
|
||||||
echo "done"
|
echo "done"
|
||||||
echo -n "$configpath..."
|
echo -n "$configpath..."
|
||||||
mkdir -p $configpath
|
mkdir -p $configpath
|
||||||
|
mkdir -p $configpath/rss
|
||||||
mkdir -p $configpath/users
|
mkdir -p $configpath/users
|
||||||
mkdir -p $configpath/userconfig
|
mkdir -p $configpath/userconfig
|
||||||
echo "done"
|
echo "done"
|
||||||
|
|
|
@ -73,6 +73,7 @@ mkdir -p $spoolpath
|
||||||
echo "done"
|
echo "done"
|
||||||
echo -n "$configpath..."
|
echo -n "$configpath..."
|
||||||
mkdir -p $configpath
|
mkdir -p $configpath
|
||||||
|
mkdir -p $configpath/rss
|
||||||
mkdir -p $configpath/users
|
mkdir -p $configpath/users
|
||||||
mkdir -p $configpath/userconfig
|
mkdir -p $configpath/userconfig
|
||||||
echo "done"
|
echo "done"
|
||||||
|
|
|
@ -194,7 +194,7 @@ function check_rate_limit($name,$set=0,$gettime=0) {
|
||||||
* $ref: The references of the article
|
* $ref: The references of the article
|
||||||
* $body: The article itself
|
* $body: The article itself
|
||||||
*/
|
*/
|
||||||
function message_post($subject,$from,$newsgroups,$ref,$body,$encryptthis,$encryptto,$authname) {
|
function message_post($subject,$from,$newsgroups,$ref,$body,$encryptthis=null,$encryptto=null,$authname=null,$followupto=null) {
|
||||||
global $server,$port,$send_poster_host,$text_error,$CONFIG;
|
global $server,$port,$send_poster_host,$text_error,$CONFIG;
|
||||||
global $www_charset,$config_dir,$spooldir;
|
global $www_charset,$config_dir,$spooldir;
|
||||||
global $msgid_generate,$msgid_fqdn;
|
global $msgid_generate,$msgid_fqdn;
|
||||||
|
@ -259,6 +259,9 @@ function message_post($subject,$from,$newsgroups,$ref,$body,$encryptthis,$encryp
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fputs($ns,'From: '.$from."\r\n");
|
fputs($ns,'From: '.$from."\r\n");
|
||||||
|
if($followupto !== null) {
|
||||||
|
fputs($ns,'Followup-To: '.$followupto."\r\n");
|
||||||
|
}
|
||||||
fputs($ns,'Newsgroups: '.$newsgroups."\r\n");
|
fputs($ns,'Newsgroups: '.$newsgroups."\r\n");
|
||||||
$sitekey=password_hash($CONFIG['thissitekey'].$msgid, PASSWORD_DEFAULT);
|
$sitekey=password_hash($CONFIG['thissitekey'].$msgid, PASSWORD_DEFAULT);
|
||||||
fputs($ns,'X-Rslight-Site: '.$sitekey."\r\n");
|
fputs($ns,'X-Rslight-Site: '.$sitekey."\r\n");
|
||||||
|
|
|
@ -260,7 +260,11 @@ if ($type=="post") {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// echo '<p><a href="'.$file_thread.'?group='.urlencode($returngroup[0]).'">'.$text_post["button_back"].'</a> '.$text_post["button_back2"].' '.group_display_name($returngroup[0]).'</p>';
|
// echo '<p><a href="'.$file_thread.'?group='.urlencode($returngroup[0]).'">'.$text_post["button_back"].'</a> '.$text_post["button_back2"].' '.group_display_name($returngroup[0]).'</p>';
|
||||||
echo '<p><a href="'.$_SESSION['return_page'].'">Back to Previous Page</a></p>';
|
if(isset($_REQUEST['returngroup']) && $_REQUEST['returngroup'] !== '') {
|
||||||
|
echo '<p><a href="'.$file_thread.'?group='.$_REQUEST['returngroup'].'">Your post will appear in '.group_display_name($_REQUEST['returngroup']).'</a></p>';
|
||||||
|
} else {
|
||||||
|
echo '<p><a href="'.$_SESSION['return_page'].'">Back to Previous Page</a></p>';
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// article not accepted by the newsserver
|
// article not accepted by the newsserver
|
||||||
$type="retry";
|
$type="retry";
|
||||||
|
@ -342,7 +346,6 @@ if ($newsgroups == "") {
|
||||||
} else {
|
} else {
|
||||||
// show post form
|
// show post form
|
||||||
$fieldencrypt=md5(rand(1,10000000));
|
$fieldencrypt=md5(rand(1,10000000));
|
||||||
|
|
||||||
echo '<h1 class="np_post_headline">'.$text_post["group_head"].group_display_name($newsgroups)
|
echo '<h1 class="np_post_headline">'.$text_post["group_head"].group_display_name($newsgroups)
|
||||||
.$text_post["group_tail"].'</h1>';
|
.$text_post["group_tail"].'</h1>';
|
||||||
|
|
||||||
|
@ -438,16 +441,16 @@ function quoten() {
|
||||||
echo captcha::form($text_post["captchainfo1"],$text_post["captchainfo2"]);
|
echo captcha::form($text_post["captchainfo1"],$text_post["captchainfo2"]);
|
||||||
echo '</td></tr>';
|
echo '</td></tr>';
|
||||||
} ?>
|
} ?>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<input type="hidden" name="type" value="post">
|
<input type="hidden" name="type" value="post">
|
||||||
<input type="hidden" name="newsgroups" value="<?php echo htmlspecialchars($newsgroups); ?>">
|
<input type="hidden" name="newsgroups" value="<?php echo htmlspecialchars($newsgroups); ?>">
|
||||||
<input type="hidden" name="references" value="<?php echo htmlentities($references); ?>">
|
<input type="hidden" name="references" value="<?php echo htmlentities($references); ?>">
|
||||||
<input type="hidden" name="group" value="<?php echo htmlspecialchars($newsgroups); ?>">
|
<input type="hidden" name="group" value="<?php echo htmlspecialchars($newsgroups); ?>">
|
||||||
|
<input type="hidden" name="returngroup" value="<?php echo htmlspecialchars($head->followup); ?>">
|
||||||
<input type="hidden" name="fielddecrypt" value="<?php echo htmlspecialchars($fieldencrypt);?>">
|
<input type="hidden" name="fielddecrypt" value="<?php echo htmlspecialchars($fieldencrypt);?>">
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<?php } } ?>
|
<?php } } ?>
|
||||||
|
|
||||||
|
|
|
@ -74,6 +74,9 @@ foreach($menulist as $menu) {
|
||||||
exec($CONFIG['php_exec']." ".$config_dir."/scripts/expire.php");
|
exec($CONFIG['php_exec']." ".$config_dir."/scripts/expire.php");
|
||||||
echo "Expired articles\n";
|
echo "Expired articles\n";
|
||||||
}
|
}
|
||||||
|
# Run RSS Feeds
|
||||||
|
exec($CONFIG['php_exec']." ".$config_dir."/scripts/rss-feeds.php");
|
||||||
|
echo "RSS Feeds updated\n";
|
||||||
# Rotate log files
|
# Rotate log files
|
||||||
log_rotate();
|
log_rotate();
|
||||||
echo "Log files rotated\n";
|
echo "Log files rotated\n";
|
||||||
|
|
|
@ -0,0 +1,93 @@
|
||||||
|
#!/usr/local/bin/php
|
||||||
|
<?php
|
||||||
|
include "config.inc.php";
|
||||||
|
include "newsportal.php";
|
||||||
|
|
||||||
|
$rssdir = $config_dir.'/rss/';
|
||||||
|
$rssfiles = array();
|
||||||
|
if(isset($argv[1])) {
|
||||||
|
$rssfiles[0] = $argv[1];
|
||||||
|
} else {
|
||||||
|
$rssfiles = array_diff(scandir($rssdir), array('..', '.'));
|
||||||
|
}
|
||||||
|
foreach($rssfiles as $rssfile) {
|
||||||
|
if(!is_file($config_dir.'/rss/'.$rssfile)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$body = '';
|
||||||
|
unset($RSS);
|
||||||
|
$RSS = get_rss_config($config_dir.'/rss/'.$rssfile);
|
||||||
|
if($RSS['enable'] !== '1') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if(filemtime($spooldir.'/'.$rssfile.'-rss-timer') + $RSS['timer'] > time()) {
|
||||||
|
if(!is_file($rssdir.'/debug')) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$xmlData = file_get_contents($RSS['url']);
|
||||||
|
$xml = simplexml_load_string($xmlData);
|
||||||
|
if($RSS['root'] != '') {
|
||||||
|
$xmlstart = $xml->{$RSS['root']};
|
||||||
|
} else {
|
||||||
|
$xmlstart = $xml;
|
||||||
|
}
|
||||||
|
foreach($xmlstart->{$RSS['item']} as $item)
|
||||||
|
{
|
||||||
|
if(trim($item->{$RSS['link']}) == '') {
|
||||||
|
$item->{$RSS['link']} = $item->{$RSS['link']}[href];
|
||||||
|
} else {
|
||||||
|
$item->{$RSS['link']} = $item->{$RSS['link']};
|
||||||
|
}
|
||||||
|
$body.=$item->{$RSS['title']}."\n";
|
||||||
|
if(isset($RSS['urlprefix']) && ($RSS['urlprefix'] !== '')) {
|
||||||
|
$url = $RSS['urlprefix'].$item->{$RSS['link']};
|
||||||
|
} else {
|
||||||
|
$url = $item->{$RSS['link']};
|
||||||
|
}
|
||||||
|
if(isset($RSS['urlprefixalt']) && ($RSS['urlprefixalt'] !== '')) {
|
||||||
|
$urlalt = $RSS['urlprefixalt'].$item->{$RSS['link']};
|
||||||
|
} else {
|
||||||
|
$urlalt = '';
|
||||||
|
}
|
||||||
|
if(substr($url,0,4) !== "http") {
|
||||||
|
$urlprefix = explode('/', $RSS['url']);
|
||||||
|
$url = $urlprefix[0].'/'.$urlprefix[1].'/'.$urlprefix[2].$item->{$RSS['link']};
|
||||||
|
}
|
||||||
|
$body.=$url."\n";
|
||||||
|
if($urlalt !== '') {
|
||||||
|
$body.=$urlalt."\n";
|
||||||
|
}
|
||||||
|
if(isset($RSS['date_namespaceuri']) && ($RSS['date_namespaceuri'] !== '')) {
|
||||||
|
$dc_date = $item->children($RSS['date_namespaceuri']);
|
||||||
|
$body.=date("F j, Y, g:i A", strtotime($dc_date));
|
||||||
|
} else {
|
||||||
|
$body.=date("F j, Y, g:i A", strtotime($item->{$RSS['date']}));
|
||||||
|
}
|
||||||
|
$body.="\n";
|
||||||
|
$body.=trim($item->{$RSS['content']});
|
||||||
|
$body.="\n--------------------\n";
|
||||||
|
}
|
||||||
|
if(strpos($RSS['postfrom'], '@') === false) {
|
||||||
|
$RSS['postfrom'] = $RSS['postfrom'].$CONFIG['email_tail'];
|
||||||
|
}
|
||||||
|
if(isset($RSS['followupto']) && ($RSS['followupto'] !== '')) {
|
||||||
|
$followupto = $RSS['followupto'];
|
||||||
|
} else {
|
||||||
|
$followupto = null;
|
||||||
|
}
|
||||||
|
$body = strip_tags($body);
|
||||||
|
|
||||||
|
if(is_file($rssdir.'/debug')) {
|
||||||
|
echo $body;
|
||||||
|
} else {
|
||||||
|
echo message_post($RSS['message_subject'], $RSS['postfrom'], $RSS['newsgroup'], null, $body, null, null, null, $followupto)."\n";
|
||||||
|
touch($spooldir.'/'.$rssfile.'-rss-timer');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_rss_config($rssfile) {
|
||||||
|
$RSS = include($rssfile);
|
||||||
|
return($RSS);
|
||||||
|
}
|
||||||
|
?>
|
|
@ -0,0 +1 @@
|
||||||
|
../rocksolid/lib
|
|
@ -0,0 +1 @@
|
||||||
|
../rocksolid/post.php
|
Loading…
Reference in New Issue