• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Linuxquestions für Linux-Club.de funzt nicht mehr.

bommel

Member
Moin moin zusammen.

Bezogen auf diesen Thread hier http://www.linux-club.de/viewtopic.php?t=15545& hab ich das Problem das dieses Theme nicht mehr funktioniert.. Ist da was an der http://www.linux-club.de/backend.php verändert wurden. Ich glaub der PerlScript rdf.pl arbeitet nicht mehr korreckt, aber sicher bin ich mir da nicht.. Oder ist da ein Bug in Superkaramba drin seit dem letzten upgrade *grübel, nackdenk*. Bin ziemlich ratlos nach zweitägigen rumgeconfe an dem Theme.
SuSE 10.1

Gruß bommel
 

moenk

Administrator
Teammitglied
Die backend.php funktioniert durchaus noch - allerdings werden nicht die richtigen Links geliefert. Probier mal:
http://www.linux-club.de/rdf.php
 
OP
B

bommel

Member
moenk schrieb:
Die backend.php funktioniert durchaus noch - allerdings werden nicht die richtigen Links geliefert. Probier mal:
http://www.linux-club.de/rdf.php

Hi Moenk.

Geht leider auch nicht mit der rdf.php. Was ich nicht verstehe, es ging doch bis gestern oder vorgestern und nun mittem mal nicht mehr. Schon irgendwie seltsam.
 
OP
B

bommel

Member
Mittlerweile bin ich ein Stück schlauer geworden.
Der Perlscript rdf.pl bricht in Zeile 21 ab und das wars dann.
Soweit ich das jetzt deuten kann scheitert er daran die backend.php zu holen (forbidden)

Code:
didn't work  at ./rdf.pl line 21.

Hier mal der Script zur Ansicht, bin in Perl leider nicht so bewandert.

Code:
#!/usr/bin/perl

use LWP::UserAgent;
use HTML::TokeParser;


my $url = @ARGV[0];
my $ua = new LWP::UserAgent;

$url = "http://$url" unless($url =~ /^http:\/\//);

if($ENV{'http_proxy'}){
	$ua->env_proxy;
	$ua->proxy(http => $ENV{'http_proxy'});
}

my $req = new HTTP::Request 'GET',"$url";
# uncomment if you need it
# $req->quthorization_basic("user","pass");
my $res = $ua->request($req);
$res->is_success or die("didn't work $!");

my $page = $res->as_string;
my $p = HTML::TokeParser->new(\$page);
while ( $token = $p->get_tag("title") ) {
      my $title = $p->get_trimmed_text("/title");
      $p->get_tag("link");
      my $link = $p->get_trimmed_text("/link");
      print "$title\n$link\n";
}
 

Dr. Glastonbury

Advanced Hacker
Hmmm - gibts also doch schon nen Fred dafür...

hab das gleiche Problem - wär schon, wenn irgendwer weiß, woran's liegt....
 
OP
B

bommel

Member
Nach endlosen hin und her probieren habe ich die Lösung mit Hilfe eines Freundes gefunden.
Es liegt daran das der Script keine (Browser)kennung sendet und daher als Bot vom Server interpretiert wird. So nach dem Motto, beweise mir das du ein Mensch bist und kein Bot.

Folgende Zeile im Script hinter der Variablendeklarierung 'my $ua = new LWP::UserAgent;' hinzufügen.
Code:
$ua->agent("Konqueror");
Wobei der Browsername frei gewählt werden kann. Der Perlscript sollte dann so aussehen.
Code:
#!/usr/bin/perl

use LWP::UserAgent;
use HTML::TokeParser;


my $url = @ARGV[0];
my $ua = new LWP::UserAgent;
$ua->agent("Konqueror");


$url = "http://$url" unless($url =~ /^http:\/\//);

if($ENV{'http_proxy'}){
	$ua->env_proxy;
	$ua->proxy(http => $ENV{'http_proxy'});
}

my $req = new HTTP::Request 'GET',"$url";
# uncomment if you need it
# $req->quthorization_basic("user","pass");
my $res = $ua->request($req);
$res->is_success or die("didn't work $!");

my $page = $res->as_string;
my $p = HTML::TokeParser->new(\$page);
while ( $token = $p->get_tag("title") ) {
      my $title = $p->get_trimmed_text("/title");
      $p->get_tag("link");
      my $link = $p->get_trimmed_text("/link");
      print "$title\n$link\n";
}

Des weiteren sind zwei Zeilen im Shellscript 'linuxquestions' (im gleichen Verzeichnis) zu ändern.

Erstens die Zeile
Code:
$LQ/rdf.pl http://www.linux-club.de/backend.php > $LQ/tmp/stream;
in
Code:
$LQ/rdf.pl http://www.linux-club.de/rdf.php > $LQ/tmp/stream;

Und zweitens die Zeile
Code:
sed -n '/http:\/\/www.linux-club.de\/viewtopic.php/p' $LQ/tmp/stream > $LQ/tmp/url;
in
Code:
sed -n '/http:\/\/www.linux-club.de\/ftopic/p' $LQ/tmp/stream > $LQ/tmp/url;

Damit läuft Linuxquestions für Linux-Club.de wieder.

bommel
 
Oben