Toon posts:

proxyserver in perl problemen

Pagina: 1
Acties:
  • 69 views sinds 30-01-2008

Verwijderd

Topicstarter
hallo,

Ik ben student informatica en we hebben de opdracht gekregen om een proxy server te programmeren. Het is niet de bedoeling om een mega uitgebreide versie te maken maar lieft wel eentje dat naar behoren werkt.

Momenteel hebben we nog twee problemen en dan zou hij af moeten zijn:

wat wil deze foutmelding zeggen:

bad arg lenght for socket::pack_sockaddr_in, length is 0, should be 4 at P:/ActivePer5.8.0/lib/socket.pm line 373

Iemand een idee en hoe je hem moet oplossen?

We hebben nog een klein probleempje. Wanneer we onze server runnen krijgen we een error op lijn 59. Daar staan een paar regels code om de client versie van de proxyserver te verzorgen. Het server gedeelte zelf werkt wel maar van de moment dat we het client gedeelte er aan toe voegen loopt het mis ...
De code van de proxyserver is als volgt:

#//////////////////////////////////// Begin code ////////////////////////////////////////

#!/usr/local/bin/perl

use Socket;
$queuelength = 1;

socket(HANDLE, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
$addr = sockaddr_in(80, INADDR_ANY);
bind(HANDLE, $addr);
listen(HANDLE, $queuelength);
while(true)
{

accept(NEW_HANDLE, HANDLE);

$line=<NEW_HANDLE>;
print $line;

#zoeken wat hij juist moet doen (get? adres?)
@headers = split(' ', $line);
$method = $headers[0];
$requestedDocument = "index.html";
$url = $headers[1];
$httpversion = $headers[2];

$lengte = length($url)-7;
$url = substr($url,7,$lengte);

@temp = split('/', $url);
$url = $temp[0];

print "$method\n";
print "$url\n";

if( $method eq "GET") {


open(FILE, "blacklist.txt") or die "Blacklist bestaat niet";
@banned = <FILE>;
close(FILE);

$toegelaten=0;
$teller=0;

while($teller<=$#banned){
if($banned[$teller] =~ /$url/){
$toegelaten=1;
}
$teller = $teller + 1;
print "$toegelaten toegelaten\n";
}
print "$toegelaten\n";

if($toegelaten == 0){
#send(NEW_HANDLE,"Grrrr", 0);

socket(HANDLE1, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
$addres = sockaddr_in(8080, inet_aton($url));
connect(HANDLE1,$addres) or die "verbinding niet gelukt";
send (HANDLE1, "GET / HTTP/1.1\r\nhost: $url\r\n\r\n",0);
@opvangen = <HANDLE1>;

print @opvangen;

} else {


send(NEW_HANDLE,"<HEAD><TITLE>403 Forbidden</TITLE></HEAD>\n", 0);
send(NEW_HANDLE, "<H1>Forbidden</H1>", 0);
send(NEW_HANDLE, "You don't have permission to access ... de url", 0);
send(NEW_HANDLE, "on this server.<P>", 0);
send(NEW_HANDLE, "<HR>", 0);
send(NEW_HANDLE, "<ADDRESS>...</ADDRESS>", 0);
send(NEW_HANDLE, "</BODY></HTML>", 0);

}


} else {

send(NEW_HANDLE,"$httpver 404 File Not Found\n\n",0);
send(NEW_HANDLE,"<HEAD><TITLE>404 File Not Found</TITLE></HEAD>\n", 0);
send(NEW_HANDLE, "<BODY><H1>File Not Found</H1>\n", 0);
send(NEW_HANDLE, "The requested URL $url was not found on this server.\n",0);
send(NEW_HANDLE, "De server kan alleen een GET afhandelen.\n",0);
send(NEW_HANDLE, "</BODY>", 0);

}

close(NEW_HANDLE);

}

#/////////////////////////////////// end code ///////////////////////////////////////


Is er iemand dat kan helpen want we zitten er zo dicht bij en toch met de handen in het haar ...

Alvast bedankt

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

P&W FAQ - De "quickstart"
***** Lees dit! Over topictitels in P&W *****

Gebruik code tags, en hoe moeten wij nou weten wat regel 373 is? Verder zegt de error wel genoeg imho, er is blijkbaar een parameter fout. Dus sla de documentatie open en kijk wat er verkeerd gaat

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Dit topic is gesloten.