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
Dat het een probleem is met parameters weet ik ook wel. Maar overal waar ik gezocht heb staat het zo. Waarom lukt het de ene keer wel en de andere keer niet? Ik heb de indruk dat het afhangt van het adres dat je opvraagd (de lengte of zo?)
Iemand een idee en hoe je hem moet oplossen?
Maar het grootste probleem is eigenlijk dit. 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:
Is er iemand dat kan helpen want we zitten er zo dicht bij en toch met de handen in het haar ...
Alvast bedankt
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
Dat het een probleem is met parameters weet ik ook wel. Maar overal waar ik gezocht heb staat het zo. Waarom lukt het de ene keer wel en de andere keer niet? Ik heb de indruk dat het afhangt van het adres dat je opvraagd (de lengte of zo?)
Iemand een idee en hoe je hem moet oplossen?
Maar het grootste probleem is eigenlijk dit. 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:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
| #!/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);
} |
Is er iemand dat kan helpen want we zitten er zo dicht bij en toch met de handen in het haar ...
Alvast bedankt