mirror of
git://erdgeist.org/opentracker
synced 2025-01-14 00:40:09 +00:00
hooks into scanning functions built
This commit is contained in:
parent
2adf4fb28a
commit
83e339bbe0
@ -126,53 +126,48 @@ e400:
|
|||||||
if (c[0]!='/') goto e404;
|
if (c[0]!='/') goto e404;
|
||||||
while (c[1]=='/') ++c;
|
while (c[1]=='/') ++c;
|
||||||
|
|
||||||
if (!byte_diff(c,9,"announce?"))
|
data = c;
|
||||||
{
|
switch( scan_urlencoded_query( &c, data, SCAN_PATH ) ) {
|
||||||
|
case 6: /* scrape ? */
|
||||||
|
if (!byte_diff(c,6,"scrape"))
|
||||||
|
goto 404;
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
if( !byte_diff(c,8,"announce"))
|
||||||
|
goto 404;
|
||||||
|
else {
|
||||||
// info_hash, left, port, numwant, compact
|
// info_hash, left, port, numwant, compact
|
||||||
struct ot_peer peer;
|
struct ot_peer peer;
|
||||||
ot_hash hash;
|
ot_hash hash;
|
||||||
byte_copy( peer.ip, h->ip, 4);
|
byte_copy( peer.ip, h->ip, 4);
|
||||||
peer.port = 6881;
|
peer.port = 6881;
|
||||||
|
|
||||||
c+=9;
|
while( NOCHAMSCANNEN ) {
|
||||||
while( *c!=' ' ) {
|
data = c;
|
||||||
if(!byte_diff(c,10,"info_hash="))
|
switch( scan_urlencoded_query( &c, data, SCAN_SEARCHPATH_PARAM ) ) {
|
||||||
{
|
case -1: /* error */
|
||||||
size_t destlen = 20;
|
httperror(h,"404 Not Found","No such file or directory.");
|
||||||
// String is expected to be URL encoded, so expect
|
goto e404;
|
||||||
// (%[0-9A-F][0-9A-F]){20}
|
case 4:
|
||||||
|
if(!byte_diff(c,4,"port"))
|
||||||
int s = scan_urlencoded( c+10, hash, &destlen);
|
/* scan int */
|
||||||
if( c[s+10] != '&' )
|
else if(!byte_diff(c,4,"left"))
|
||||||
goto e_parse;
|
/* scan int */
|
||||||
|
break;
|
||||||
}
|
case 7:
|
||||||
else if(!byte_diff(c,8,"numwant="))
|
if(!byte_diff(c,7,"numwant"))
|
||||||
{
|
/* scan int */
|
||||||
|
else if(!byte_diff(c,7,"compact"))
|
||||||
}
|
/* scan flag */
|
||||||
else if(!byte_diff(c,8,"compact="))
|
break;
|
||||||
{
|
case 9: /* info_hash */
|
||||||
|
if(!byte_diff(c,9,"info_hash"))
|
||||||
}
|
/* scan 20 bytes */
|
||||||
else if(!byte_diff(c,5,"port="))
|
break;
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
else if(!byte_diff(c,5,"left="))
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
while( *++c!=' ' && *c!='&');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!byte_diff(c,7,"scrape?"))
|
break;
|
||||||
{
|
default: /* neither scrape nor announce */
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
httperror(h,"404 Not Found","No such file or directory.");
|
httperror(h,"404 Not Found","No such file or directory.");
|
||||||
goto e404;
|
goto e404;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user