stian90_2 Skrevet 22. september 2007 Del Skrevet 22. september 2007 (endret) Heisann Først og fremst les dette om dere tror jeg strider mot regelverket: Klikk for å se/fjerne innholdet nedenfor Har snakket med moderator om og få ha denne tråden. Og det skulle jeg få lov til, så lenge det gikk i lovlig innhold, altså, ikke linking til ting som kan medføre ulovlig piratvirksomhet.. Trackeren min er kun ment som et ekperiment, og vil aldri bli brukt til no ulovlig, men skulle den bli brukt, vil dette være ting som er lovlig.. Skulle det være spørsmål vennligst send med en PM Jeg trenger altså hjelp med torrent trackeren min, og håper noen her inne har erfaringer med dette på et eller annet vis.. Det jeg har problemer med er at i torrent programmet får jeg feilen "invalid data from tracker" noe som betyr at det er feil i koden en eller annen plass.. Jeg er ikke sikker på om alle funksjonene er rett, men resten helt ned til der den skjekker ip adresse i bruker tabellen er rett, for jeg fikk error rett derifra når IP adressen min ikke fungerte. Så det er under der problemet ligger tror jeg, eventuelt i en funksjon lenger oppe.. Leger ved announce.php fila slik at dere kan se på den Klikk for å se/fjerne innholdet nedenfor <?php ob_start("ob_gzhandler") or err('feil0'); function benc_resp_raw($x) { header("Content-Type: text/plain"); header("Pragma: no-cache"); print($x); } function benc_resp($d) { benc_resp_raw(benc(array(type => "dictionary", value => $d))); } function err($msg) { benc_resp(array("failure reason" => array(type => "string", value => $msg))); exit(); } $index = true; include('/var/www/chill/torrent_inc/benc.php'); include('/var/www/chill/config.php'); //midlertig els function unesc($x) { if (get_magic_quotes_gpc()) return stripslashes($x); return $x; } function getip() { if (isset($_SERVER)) { if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && validip($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; } elseif (isset($_SERVER['HTTP_CLIENT_IP']) && validip($_SERVER['HTTP_CLIENT_IP'])) { $ip = $_SERVER['HTTP_CLIENT_IP']; } else { $ip = $_SERVER['REMOTE_ADDR']; } } else { if (getenv('HTTP_X_FORWARDED_FOR') && validip(getenv('HTTP_X_FORWARDED_FOR'))) { $ip = getenv('HTTP_X_FORWARDED_FOR'); } elseif (getenv('HTTP_CLIENT_IP') && validip(getenv('HTTP_CLIENT_IP'))) { $ip = getenv('HTTP_CLIENT_IP'); } else { $ip = getenv('REMOTE_ADDR'); } } return $ip; } function hash_pad($hash) { return str_pad($hash, 20); } function sqlesc($x) { return "'".mysql_real_escape_string($x)."'"; } function hash_where($name, $hash) { $shhash = preg_replace('/ *$/s', "", $hash); return "($name = " . sqlesc($hash) . " OR $name = " . sqlesc($shhash) . ")"; } //////////////// $req = "info_hash:peer_id:!ip:port:uploaded:downloaded:left:!event"; foreach (explode(":", $req) as $x) { if ($x[0] == "!") { $x = substr($x, 1); $opt = 1; } else $opt = 0; if (!isset($_GET[$x])) { if (!$opt) err("missing key"); continue; } $GLOBALS[$x] = unesc($_GET[$x]); } foreach (array("info_hash","peer_id") as $x) { if (strlen($GLOBALS[$x]) != 20) err("invalid $x (" . strlen($GLOBALS[$x]) . " - " . urlencode($GLOBALS[$x]) . ")"); } if (empty($ip) || !preg_match('/^(\d{1,3}\.){3}\d{1,3}$/s', $ip)) $ip = getip(); $port = 0 + $port; $downloaded = 0 + $downloaded; $uploaded = 0 + $uploaded; $left = 0 + $left; $rsize = 50; foreach(array("num want", "numwant", "num_want") as $k) { if (isset($_GET[$k])) { $rsize = 0 + $_GET[$k]; break; } } $agent = $_SERVER["HTTP_USER_AGENT"]; // Deny access made with a browser... //if (ereg("^Mozilla\\/", $agent) || ereg("^Opera\\/", $agent) || ereg("^Links ", $agent) || ereg("^Lynx\\/", $agent)) // err("torrent not registered with this tracker"); if (!$port || $port > 0xffff) err("invalid port"); if (!isset($event)) $event = ""; $seeder = ($left == 0) ? "yes" : "no"; $res = mysql_query("SELECT id, banned, seeders + leechers AS numpeers, UNIX_TIMESTAMP(added) AS ts FROM torrents WHERE " . hash_where("info_hash", $info_hash)) or err("bad SQL query1"); $torrent = mysql_fetch_assoc($res); if (!$torrent) err("torrent not registered with this tracker"); $torrentid = $torrent["id"]; $fields = "seeder, peer_id, ip, port, uploaded, downloaded, userid"; $numpeers = $torrent["numpeers"]; $limit = ""; if ($numpeers > $rsize) $limit = "ORDER BY RAND() LIMIT $rsize"; $res = mysql_query("SELECT $fields FROM peers WHERE torrent = $torrentid AND connectable = 'yes' $limit"); $resp = "d" . benc_str("interval") . "i" . $announce_interval . "e" . benc_str("peers") . "l"; unset($self); while ($row = mysql_fetch_assoc($res)) { $row["peer_id"] = hash_pad($row["peer_id"]); if ($row["peer_id"] === $peer_id) { $userid = $row["userid"]; $self = $row; continue; } $resp .= "d" . benc_str("ip") . benc_str($row["ip"]) . benc_str("peer id") . benc_str($row["peer_id"]) . benc_str("port") . "i" . $row["port"] . "e" . "e"; } $resp .= "ee"; $selfwhere = "torrent = $torrentid AND " . hash_where("peer_id", $peer_id); if (!isset($self)) { $res = mysql_query("SELECT $fields FROM peers WHERE $selfwhere"); $row = mysql_fetch_assoc($res); if ($row) { $userid = $row["userid"]; $self = $row; } } //// Up/down stats //////////////////////////////////////////////////////////// if (!isset($self)) { $rz = mysql_query("SELECT id, uploaded, downloaded FROM brukere WHERE ip='$ip' ORDER BY lastaction DESC LIMIT 1"); if (mysql_num_rows($rz) == 0) err("Unrecognized host ($ip). Please go to $BASEURL to sign-up or login."); $az = mysql_fetch_assoc($rz); $userid = $az["id"]; // if ($left > 0 && $az["class"] < UC_VIP) /* //vi vil ikke ha dette ENDA if ($az["class"] < UC_VIP) { $gigs = $az["uploaded"] / (1024*1024*1024); $elapsed = floor((gmtime() - $torrent["ts"]) / 3600); $ratio = (($az["downloaded"] > 0) ? ($az["uploaded"] / $az["downloaded"]) : 1); if ($ratio < 0.5 || $gigs < 5) $wait = 48; elseif ($ratio < 0.65 || $gigs < 6.5) $wait = 24; elseif ($ratio < 0.8 || $gigs < 8) $wait = 12; elseif ($ratio < 0.95 || $gigs < 9.5) $wait = 6; else $wait = 0; if ($elapsed < $wait) err("Not authorized (" . ($wait - $elapsed) . "h) - READ THE FAQ!"); } */ } else { $upthis = max(0, $uploaded - $self["uploaded"]); $downthis = max(0, $downloaded - $self["downloaded"]); if ($upthis > 0 || $downthis > 0) mysql_query("UPDATE brukere SET uploaded = uploaded + $upthis, downloaded = downloaded + $downthis WHERE id='$userid'") or err('feil'); } /////////////////////////////////////////////////////////////////////////////// function portblacklisted($port) { // direct connect if ($port >= 411 && $port <= 413) return true; // bittorrent if ($port >= 6881 && $port <= 6889) return true; // kazaa if ($port == 1214) return true; // gnutella if ($port >= 6346 && $port <= 6347) return true; // emule if ($port == 4662) return true; // winmx if ($port == 6699) return true; return false; } $updateset = array(); if ($event == "stopped") { if (isset($self)) { mysql_query("DELETE FROM peers WHERE $selfwhere"); if (mysql_affected_rows()) { if ($self["seeder"] == "yes") $updateset[] = "seeders = seeders - 1"; else $updateset[] = "leechers = leechers - 1"; } } } else { if ($event == "completed") $updateset[] = "times_completed = times_completed + 1"; if (isset($self)) { mysql_query("UPDATE peers SET uploaded = $uploaded, downloaded = $downloaded, to_go = $left, last_action = NOW(), seeder = '$seeder'" . ($seeder == "yes" && $self["seeder"] != $seeder ? ", finishedat = " . time() : "") . " WHERE $selfwhere"); if (mysql_affected_rows() && $self["seeder"] != $seeder) { if ($seeder == "yes") { $updateset[] = "seeders = seeders + 1"; $updateset[] = "leechers = leechers - 1"; } else { $updateset[] = "seeders = seeders - 1"; $updateset[] = "leechers = leechers + 1"; } } } else { if (portblacklisted($port)) err("Port $port is blacklisted."); else { $sockres = @fsockopen($ip, $port, $errno, $errstr, 5); if (!$sockres) $connectable = "no"; else { $connectable = "yes"; @fclose($sockres); } } $ret = mysql_query("INSERT INTO peers (connectable, torrent, peer_id, ip, port, uploaded, downloaded, to_go, started, last_action, seeder, userid, agent, uploadoffset, downloadoffset) VALUES ('$connectable', $torrentid, " . sqlesc($peer_id) . ", " . sqlesc($ip) . ", $port, $uploaded, $downloaded, $left, NOW(), NOW(), '$seeder', $userid, " . sqlesc($agent) . ", $uploaded, $downloaded)"); if ($ret) { if ($seeder == "yes") $updateset[] = "seeders = seeders + 1"; else $updateset[] = "leechers = leechers + 1"; } } } if ($seeder == "yes") { if ($torrent["banned"] != "yes") $updateset[] = "visible = 'yes'"; $updateset[] = "last_action = NOW()"; } if (count($updateset)) $query = mysql_query("UPDATE torrents SET " . join(",", $updateset) . " WHERE id = $torrentid"); benc_resp_raw($resp) or err('kake'); ?> Har også prøvd og kjøre denne fila i en browser ( som dere sett har jeg slått av funksjonen som ikke tilatter dette ) og der får jeg ingen beskjed om at funksjoner er feil, eller mangler ; els... om dere trenger benc.php fila også. Bare si ifra... Takker for all hjelp.. Endret 22. september 2007 av stianiquniez Lenke til kommentar
Stian Jacobsen Skrevet 22. september 2007 Del Skrevet 22. september 2007 I hvor stor grad kan du PHP? Har du kunnskap nok til å skjønne hele scriptet, eller kan du i bunn å grunn bare endre litt på variabler? Lenke til kommentar
stian90_2 Skrevet 22. september 2007 Forfatter Del Skrevet 22. september 2007 Jeg har laget et nettsamfunn, så jeg kan vel PHP i mer eller mindre grad ja.. ja, jeg skjønner scriptet, men jeg finner altså ikke feilen, og håper noen kan se den, lettere og se den når man ikke har sett gjennom koden litt over 150 ganger som meg, som holder på og bli idiot av og se på den og av ordene "invalid data from tracker". er sikkert bare en bagatel som banger, er det bestandig, men jeg finner den altså ikke Lenke til kommentar
Stian Jacobsen Skrevet 22. september 2007 Del Skrevet 22. september 2007 Jeg har laget et nettsamfunn, så jeg kan vel PHP i mer eller mindre grad ja.. ja, jeg skjønner scriptet, men jeg finner altså ikke feilen, og håper noen kan se den, lettere og se den når man ikke har sett gjennom koden litt over 150 ganger som meg, som holder på og bli idiot av og se på den og av ordene "invalid data from tracker". er sikkert bare en bagatel som banger, er det bestandig, men jeg finner den altså ikke 9552344[/snapback] Du har nettopp løst problemet selv.. du har et problem med hash strengen... Hvilket nettsamfunn btw? Lenke til kommentar
stian90_2 Skrevet 22. september 2007 Forfatter Del Skrevet 22. september 2007 hash strengen ? Kan du være litt mer spesifikk og fortelle meg hvor feilen ligger ? ifølge torrent programmet er det invalid data fra trackern, altså at trackern ikke skjønner hva den får tilbake.. Var et nettsamfunn som het NordNett eller SK gidder ikke skrive real navn på det her, som det het før.. Men ble lagt ned på grunn av en rekke grunner.. Lenke til kommentar
Stian Jacobsen Skrevet 22. september 2007 Del Skrevet 22. september 2007 hash strengen ? Kan du være litt mer spesifikk og fortelle meg hvor feilen ligger ? ifølge torrent programmet er det invalid data fra trackern, altså at trackern ikke skjønner hva den får tilbake.. Var et nettsamfunn som het NordNett eller SK gidder ikke skrive real navn på det her, som det het før.. Men ble lagt ned på grunn av en rekke grunner.. 9552517[/snapback] foreach (array("info_hash","peer_id") as $x) { if (strlen($GLOBALS[$x]) != 20) err("invalid $x (" . strlen($GLOBALS[$x]) . " - " . urlencode($GLOBALS[$x]) . ")"); } Sjekk om hash strengen din ikke er bare 20 tegn lang.. Lenke til kommentar
stian90_2 Skrevet 22. september 2007 Forfatter Del Skrevet 22. september 2007 Om det var en feil med hash strengen, ville det ikke stått "invalid $x (" . strlen($GLOBALS[$x]) . " - " . urlencode($GLOBALS[$x]) . ")" da ? dessuten funker jo scriptet helt ned til "err("Unrecognized host ($ip). Please go to $BASEURL to sign-up or login.");" for der fikk jeg err første gang fordi at jeg ikke hadde ip addressen min i brukere databasen, så min teori er jo at feilen må ligge lenger ned ? og når ip adressen var fikset, fikk jeg igjen "invalid data from tracker" så det er data senere i scriptet den ikke skjønner så vidt jeg har forstått.. Lenke til kommentar
AlecTBM Skrevet 23. september 2007 Del Skrevet 23. september 2007 (endret) Okey Da har jeg "tatt" over for stian for en stund Og jeg sendte litt falske error beskjeder til klienten. Deriblandt $resp. Altså det som blir sendt til klienten $resp inne holdt da: d8:intervalie5:peersld2:ip13:192.168.1.1007:peer id20:-KT2100-2084505407954:porti1337eed2:ip13:192.168.1.1007:peer id20:-KT2100-7730236908324:porti1337eeee Og helt feil etter det jeg har skjønt. Innholdet i torrent fila er: d8:announce42:http://torr_test.no-ip.org/announce.php10:created by12:KTorrent 2.113:creation datei1190552685e4:infod5:filesld6:lengthi56251e4:pathl14:bookmarks.htmleee4:name7:torrent12:piece lengthi262144e6:pieces20:L…?À×ÝS+dK|�>ô Qee Endret 23. september 2007 av AlecTBM Lenke til kommentar
AlecTBM Skrevet 29. september 2007 Del Skrevet 29. september 2007 Bumper bare denne litt Vi sitter fremdels fast Lenke til kommentar
Svish Skrevet 23. november 2007 Del Skrevet 23. november 2007 jeg vet ikke helt hva dere sliter med, men kan tipse om denne her: http://www.whitsoftdev.com/opentracker/ har brukt den til å lage en liten bittorrent tracker for meg selv. dette er da en ren tracker. så du må lage det rundt selv. det jeg gjorde var ganske enkelt å lage en table til hvor jeg matet inn torrent filer. bruker så bdecode(torrent) og sha1(bencode(torrent['info'])) og ender opp med hash verdien du trenger for å matche peers i tracker table med torrentfiler i torrentfil table. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå