diff --git a/CUETools.CTDB/Web/404.html b/CUETools.CTDB/Web/404.html deleted file mode 100644 index 3d18775..0000000 --- a/CUETools.CTDB/Web/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - - -disc not present in database - - \ No newline at end of file diff --git a/CUETools.CTDB/Web/about.php b/CUETools.CTDB/Web/about.php deleted file mode 100644 index b0e7d47..0000000 --- a/CUETools.CTDB/Web/about.php +++ /dev/null @@ -1,35 +0,0 @@ - -

What's it for?

-You probably heard about AccurateRip, a wonderfull database of CD rip checksums, which helps you make sure your CD rip is an exact copy of original CD. What it can tell you is how many other people got the same data when copying this CD. - -CUETools Database is an extension of this idea. - -

What are the advantages?

- -

What are the downsides and limitations?

- -

How many errors can a rip contain and still be repairable?

- -

What information does the database contain per each submission?

- - - diff --git a/CUETools.CTDB/Web/ctdb.png b/CUETools.CTDB/Web/ctdb.png deleted file mode 100644 index b5226ea..0000000 Binary files a/CUETools.CTDB/Web/ctdb.png and /dev/null differ diff --git a/CUETools.CTDB/Web/favicon.ico b/CUETools.CTDB/Web/favicon.ico deleted file mode 100644 index a8346ad..0000000 Binary files a/CUETools.CTDB/Web/favicon.ico and /dev/null differ diff --git a/CUETools.CTDB/Web/img/bg_bottom.jpg b/CUETools.CTDB/Web/img/bg_bottom.jpg deleted file mode 100644 index 668b9a1..0000000 Binary files a/CUETools.CTDB/Web/img/bg_bottom.jpg and /dev/null differ diff --git a/CUETools.CTDB/Web/img/bg_left_border.jpg b/CUETools.CTDB/Web/img/bg_left_border.jpg deleted file mode 100644 index 90756df..0000000 Binary files a/CUETools.CTDB/Web/img/bg_left_border.jpg and /dev/null differ diff --git a/CUETools.CTDB/Web/img/bg_right_border.jpg b/CUETools.CTDB/Web/img/bg_right_border.jpg deleted file mode 100644 index 4fed854..0000000 Binary files a/CUETools.CTDB/Web/img/bg_right_border.jpg and /dev/null differ diff --git a/CUETools.CTDB/Web/img/bg_top_border.jpg b/CUETools.CTDB/Web/img/bg_top_border.jpg deleted file mode 100644 index d3528eb..0000000 Binary files a/CUETools.CTDB/Web/img/bg_top_border.jpg and /dev/null differ diff --git a/CUETools.CTDB/Web/img/bottom_left_corner.jpg b/CUETools.CTDB/Web/img/bottom_left_corner.jpg deleted file mode 100644 index 229d9d1..0000000 Binary files a/CUETools.CTDB/Web/img/bottom_left_corner.jpg and /dev/null differ diff --git a/CUETools.CTDB/Web/img/bottom_right_corner.jpg b/CUETools.CTDB/Web/img/bottom_right_corner.jpg deleted file mode 100644 index 46e68c3..0000000 Binary files a/CUETools.CTDB/Web/img/bottom_right_corner.jpg and /dev/null differ diff --git a/CUETools.CTDB/Web/img/top_left_corner.jpg b/CUETools.CTDB/Web/img/top_left_corner.jpg deleted file mode 100644 index 0e6c0b3..0000000 Binary files a/CUETools.CTDB/Web/img/top_left_corner.jpg and /dev/null differ diff --git a/CUETools.CTDB/Web/img/top_right_corner.jpg b/CUETools.CTDB/Web/img/top_right_corner.jpg deleted file mode 100644 index 0f3332d..0000000 Binary files a/CUETools.CTDB/Web/img/top_right_corner.jpg and /dev/null differ diff --git a/CUETools.CTDB/Web/index.php b/CUETools.CTDB/Web/index.php deleted file mode 100644 index b652e88..0000000 --- a/CUETools.CTDB/Web/index.php +++ /dev/null @@ -1,49 +0,0 @@ - pg_num_rows($result)) - $count = pg_num_rows($result); -if ($start == '') $start = pg_num_rows($result) - $count; - -printf("

Recent additions:

"); -include 'list.php'; -pg_free_result($result); -printf("
"); -?> - - diff --git a/CUETools.CTDB/Web/list.php b/CUETools.CTDB/Web/list.php deleted file mode 100644 index 7d81a05..0000000 --- a/CUETools.CTDB/Web/list.php +++ /dev/null @@ -1,13 +0,0 @@ - - -= $start; $i--) { - $record = pg_fetch_array($result, $i); - printf('', urlencode($record['artist']), $record['artist'], $record['title'], $record['discid'], $record['discid'], $record['discid'], $record['ctdbid'], $record['ctdbid'], $record['confidence']); -} -if ($start > 0) printf('', $count * floor(($start - 1) / $count), $url); -printf("
ArtistAlbumDisc IdCTDB IdAR
%s%s%s%08x%d
More
"); -include 'table_end.php' ; -?> diff --git a/CUETools.CTDB/Web/logo_start.php b/CUETools.CTDB/Web/logo_start.php deleted file mode 100644 index 79897f1..0000000 --- a/CUETools.CTDB/Web/logo_start.php +++ /dev/null @@ -1,81 +0,0 @@ - - - -CUETools DB - - - - - - - - - - - - - - -
- -
- - - - - - - - -
HomePopularAboutCUETools
- -
-
diff --git a/CUETools.CTDB/Web/phpctdb/ctdb.php b/CUETools.CTDB/Web/phpctdb/ctdb.php deleted file mode 100644 index afa7820..0000000 --- a/CUETools.CTDB/Web/phpctdb/ctdb.php +++ /dev/null @@ -1,370 +0,0 @@ -fp = fopen($target_file, 'rb'); - $this->fpstats = fstat($this->fp); - $this->atoms = $this->parse_container_atom(0, $this->fpstats['size']); - $this->db = false; - foreach ($this->atoms as $entry) if($entry['name'] == 'CTDB') $this->db = $entry; - } - - function __destruct() { - fclose($this->fp); - } - - function ParseTOC() - { - $disc = $this->db['discs'][0]; - $this->fulltoc = ''; - $totalcount = 0; - $firstaudio = 0; - $lastaudio = 0; - foreach ($disc['TOC ']['subatoms'] as $track) - { - if ($track['name']=='INFO') { - $trackcount = phpCTDB::BigEndian2Int(substr($track['value'],0,4)); - $pregap = phpCTDB::BigEndian2Int(substr($track['value'],4,4)); - $pos = $pregap + 150; - } - if ($track['name']=='TRAK') { - $isaudio = phpCTDB::BigEndian2Int(substr($track['value'],0,4)); - $length = phpCTDB::BigEndian2Int(substr($track['value'],4,4)); - if ($isaudio == 0 && $totalcount!=0) - $pos += 11400; - $this->fulltoc = sprintf('%s %d', $this->fulltoc, $pos); - $pos += $length; - $totalcount ++; - if ($isaudio != 0) - $lastaudio = $totalcount; - if ($isaudio != 0 && $firstaudio == 0) - $firstaudio = $totalcount; - } - } - if ($trackcount != $totalcount) - die('wrong trackcount'); - $this->fulltoc = sprintf('%d %d %d %d%s', $firstaudio, $lastaudio, $totalcount, $pos, $this->fulltoc); - } - - static function toc2mbtoc($fulltoc) - { - $ids = explode(' ', $fulltoc); - $mbtoc = sprintf('%d %d', $ids[0], $ids[1]); - if ($ids[1] == $ids[2]) - { - for ($tr = 3; $tr < count($ids); $tr++) - $mbtoc = sprintf('%s %d', $mbtoc, $ids[$tr]); - } else // Enhanced CD - { - $mbtoc = sprintf('%s %d', $mbtoc, $ids[$ids[1] + 4] - 11400); - for ($tr = 4; $tr < $ids[1] + 4; $tr++) - $mbtoc = sprintf('%s %d', $mbtoc, $ids[$tr]); - } - return $mbtoc; - } - - static function toc2mbid($fulltoc) - { - $ids = explode(' ', $fulltoc); - $mbtoc = sprintf('%02X%02X', $ids[0], $ids[1]); - if ($ids[1] == $ids[2]) - { - for ($tr = 3; $tr < count($ids); $tr++) - $mbtoc = sprintf('%s%08X', $mbtoc, $ids[$tr]); - } else // Enhanced CD - { - $mbtoc = sprintf('%s%08X', $mbtoc, $ids[$ids[1] + 4] - 11400); - for ($tr = 4; $tr < $ids[1] + 4; $tr++) - $mbtoc = sprintf('%s%08X', $mbtoc, $ids[$tr]); - } -// echo $fulltoc . ':' . $mbtoc . '
'; - $mbtoc = str_pad($mbtoc,804,'0'); - $mbid = str_replace('+', '.', str_replace('/', '_', str_replace('=', '-', base64_encode(pack("H*" , sha1($mbtoc)))))); - return $mbid; - } - - static function mblookup($mbid) - { - $mbconn = pg_connect("dbname=musicbrainz_db user=musicbrainz_user"); - if (!$mbconn) - return false; - $mbresult = pg_query_params('SELECT DISTINCT album' - . ' FROM album_cdtoc, cdtoc' - . ' WHERE album_cdtoc.cdtoc = cdtoc.id' - . ' AND cdtoc.discid = $1', - array($mbid) - ); - $mbmeta = false; - while(true == ($mbrecord = pg_fetch_array($mbresult))) - { - $mbresult2 = pg_query_params('SELECT a.name as albumname, ar.name as artistname, coverarturl' - . ' FROM album a INNER JOIN albummeta m ON m.id = a.id, artist ar' - . ' WHERE a.id = $1' - . ' AND ar.id = a.artist', - array($mbrecord[0])); - $mbmeta[] = pg_fetch_array($mbresult2); - pg_free_result($mbresult2); - } - pg_free_result($mbresult); - return $mbmeta; - } - - function ctdb2pg($discid) - { - $disc = $this->db['discs'][0]; - $record = false; - $record['discid'] = $discid; - $record['ctdbid'] = $disc['CRC ']['int']; - $record['confidence'] = $disc['CONF']['int']; - $record['parity'] = base64_encode($this->read($disc['PAR ']['offset'], 16)); - $record['fulltoc'] = $this->fulltoc; - $record['userid'] = $disc['USER']['value']; - $record['agent'] = $disc['TOOL']['value']; - $record['time'] = date ("Y-m-d H:i:s"); - $record['artist'] = @$disc['ART ']['value']; - $record['title'] = @$disc['nam ']['value']; - return $record; - } - - static function pg2ctdb($dbconn, $id) - { - $target_path = phpCTDB::discid2path($id); - - $result = pg_query_params($dbconn, "SELECT * FROM submissions WHERE discid=$1", array($id)) - or die('Query failed: ' . pg_last_error()); - if (pg_num_rows($result) < 1) die('not found'); - - $totalconf = 0; - $newctdb = false; - $newctdb['name'] = 'CTDB'; - $newhead = false; - $newhead['name'] = 'HEAD'; - $newtotal = false; - $newtotal['name'] = 'TOTL'; - $newtotal['value'] = phpCTDB::BigEndian2String($totalconf,4); - $newhead['subatoms'][] = $newtotal; - $newctdb['subatoms'][] = $newhead; - - while (TRUE == ($record = pg_fetch_array($result))) - { - $totalconf += $record['confidence']; - $newdisc = false; - $newdisc['name'] = 'DISC'; - - $newatom = false; - $newatom['name'] = 'CRC '; - $newatom['value'] = phpCTDB::Hex2String(sprintf('%08x',$record['ctdbid'])); - $newdisc['subatoms'][] = $newatom; - - $newatom = false; - $newatom['name'] = 'NPAR'; - $newatom['value'] = phpCTDB::BigEndian2String(8,4); - $newdisc['subatoms'][] = $newatom; - - $newatom = false; - $newatom['name'] = 'CONF'; - $newatom['value'] = phpCTDB::BigEndian2String((int)($record['confidence']),4); - $newdisc['subatoms'][] = $newatom; - - $newatom = false; - $newatom['name'] = 'PAR '; - $newatom['value'] = base64_decode($record['parity']); - $newdisc['subatoms'][] = $newatom; - - $newctdb['subatoms'][] = $newdisc; - } - - pg_free_result($result); - - $newctdb['subatoms'][0]['subatoms'][0]['value'] = phpCTDB::BigEndian2String($totalconf,4); - - $ftyp=false; - $ftyp['name'] = 'ftyp'; - $ftyp['value'] = 'CTDB'; - - $tname = sprintf("%s/ctdb.tmp", $target_path); - $tfp = fopen($tname, 'wb'); - phpCTDB::unparse_atom($tfp,$ftyp); - phpCTDB::unparse_atom($tfp,$newctdb); - fclose($tfp); - if(!rename($tname,sprintf("%s/ctdb.bin", $target_path))) - die('error uploading file ' . $target_path); - } - - static function Hex2Int($hex_word, $signed = false) - { - $int_value = 0; - $byte_wordlen = strlen($hex_word); - for ($i = 0; $i < $byte_wordlen; $i++) { - sscanf($hex_word{$i}, "%x", $digit); - $int_value += $digit * pow(16, ($byte_wordlen - 1 - $i)); - } - if ($signed) { - $sign_mask_bit = 0x80 << 24; - if ($int_value & $sign_mask_bit) { - $int_value = 0 - ($int_value & ($sign_mask_bit - 1)); - } - } - return $int_value; - } - - static function BigEndian2Int($byte_word, $signed = false) { - - $int_value = 0; - $byte_wordlen = strlen($byte_word); - - for ($i = 0; $i < $byte_wordlen; $i++) { - $int_value += ord($byte_word{$i}) * pow(256, ($byte_wordlen - 1 - $i)); - } - - if ($signed) { - $sign_mask_bit = 0x80 << (8 * ($byte_wordlen - 1)); - if ($int_value & $sign_mask_bit) { - $int_value = 0 - ($int_value & ($sign_mask_bit - 1)); - } - } - - return $int_value; - } - - static function Hex2String($number) - { - $intstring = ''; - $hex_word = str_pad($number, 8, '0', STR_PAD_LEFT); - for ($i = 0; $i < 4; $i++) { - sscanf(substr($hex_word, $i*2, 2), "%x", $number); - $intstring = $intstring.chr($number); - } - return $intstring; - } - - static function LittleEndian2String($number, $minbytes=1, $synchsafe=false) { - $intstring = ''; - while ($number > 0) { - if ($synchsafe) { - $intstring = $intstring.chr($number & 127); - $number >>= 7; - } else { - $intstring = $intstring.chr($number & 255); - $number >>= 8; - } - } - return str_pad($intstring, $minbytes, "\x00", STR_PAD_RIGHT); - } - - static function BigEndian2String($number, $minbytes=1, $synchsafe=false) { - return strrev(phpCTDB::LittleEndian2String($number, $minbytes, $synchsafe)); - } - - static function discid2path($id) - { - $err = sscanf($id, "%03d-%04x%04x-%04x%04x-%04x%04x", $tracks, $id1a, $id1b, $id2a, $id2b, $cddbida, $cddbidb); - $parsedid = sprintf("%03d-%04x%04x-%04x%04x-%04x%04x", $tracks, $id1a, $id1b, $id2a, $id2b, $cddbida, $cddbidb); - if ($id != $parsedid) - die("bad id ". $id); - return sprintf("parity/%x/%x/%x/%s", $id1b & 15, ($id1b >> 4) & 15, ($id1b >> 8) & 15, $parsedid); - } - - static function ctdbid2path($discid, $ctdbid) - { - $path = phpCTDB::discid2path($discid); - sscanf($ctdbid, "%04x%04x", $ctdbida, $ctdbidb); - $parsedctdbid = sprintf("%04x%04x", $ctdbida, $ctdbidb); - if ($ctdbid != $parsedctdbid) - die("bad id ". $ctdbid); - return sprintf("%s/%s.bin", $path, $ctdbid); - } - - static function unparse_atom($fp, $atom) - { -// printf('unparse_atom(%s)
', $atom['name']); - $offset = ftell($fp); - fwrite($fp, phpCTDB::BigEndian2String(0, 4)); - fwrite($fp, $atom['name']); - if (@$atom['subatoms']) - foreach ($atom['subatoms'] as $subatom) - phpCTDB::unparse_atom($fp, $subatom); - else if ($atom['value']) - fwrite($fp, $atom['value']); - else - die(sprintf("couldn't write long atom %s: size %d", $atom['name'], $atom['size'])); - $pos = ftell($fp); - fseek($fp, $offset, SEEK_SET); - fwrite($fp, phpCTDB::BigEndian2String($pos - $offset, 4)); - fseek($fp, $pos, SEEK_SET); - } - - function read($offset, $len) - { - fseek($this->fp, $offset, SEEK_SET); - return fread($this->fp, $len); - } - - function parse_container_atom($offset, $len) - { -// printf('parse_container_atom(%d, %d)
', $offset, $len); - $atoms = false; - $fin = $offset + $len; - while ($offset < $fin) { - fseek($this->fp, $offset, SEEK_SET); - $atom_header = fread($this->fp, 8); - $atom_size = phpCTDB::BigEndian2Int(substr($atom_header, 0, 4)); - $atom_name = substr($atom_header, 4, 4); - $atom['name'] = $atom_name; - $atom['size'] = $atom_size - 8; - $atom['offset'] = $offset + 8; - if ($atom_size - 8 <= 256) - $atom['value'] = fread($this->fp, $atom_size - 8); - else - $atom['value'] = false; -// echo $len, ':', $offset, ":", $atom_size, ":", $atom_name, '
'; - if ($atom_name == 'CTDB' || $atom_name == 'DISC' || $atom_name == 'TOC ' || ($atom_name == 'HEAD' && ($atom_size != 28 || 256 != phpCTDB::BigEndian2Int(substr($atom['value'],0,4))))) - { - $atom['subatoms'] = $this->parse_container_atom($offset + 8, $atom_size - 8); - foreach ($atom['subatoms'] as $param) - switch ($param['name']) { - case 'HEAD': - case 'TOC ': - case 'CRC ': - case 'USER': - case 'TOOL': - case 'MBID': - case 'ART ': - case 'nam ': - case 'NPAR': - case 'CONF': - case 'TOTL': - case 'PAR ': - $atom[$param['name']] = $param; - break; - case 'DISC': - $atom['discs'][] = $param; - break; - } - } else - $atom['subatoms'] = false; - switch ($atom_name) - { - case 'CRC ': - case 'NPAR': - case 'CONF': - case 'TOTL': - $atom['int'] = phpCTDB::BigEndian2Int($atom['value']); - break; - } - $offset += $atom_size; - $atoms[] = $atom; - } - if ($offset > $fin) - die(printf("bad atom: offset=%d, fin=%d", $offset, $fin)); - return $atoms; - } -} -?> diff --git a/CUETools.CTDB/Web/robots.txt b/CUETools.CTDB/Web/robots.txt deleted file mode 100644 index 6072cbb..0000000 --- a/CUETools.CTDB/Web/robots.txt +++ /dev/null @@ -1,4 +0,0 @@ -User-agent: * -Disallow: /show.php -Disallow: /top.php -Disallow: /parity/ diff --git a/CUETools.CTDB/Web/show.php b/CUETools.CTDB/Web/show.php deleted file mode 100644 index 3358fbd..0000000 --- a/CUETools.CTDB/Web/show.php +++ /dev/null @@ -1,98 +0,0 @@ - 1) die('not unique'); -$record = pg_fetch_array($result); -pg_free_result($result); - -$mbid = phpCTDB::toc2mbid($record['fulltoc']); -$mbmeta = phpCTDB::mblookup($mbid); - -printf('
'); -$imgfound = false; -if ($mbmeta) - foreach ($mbmeta as $mbr) - if ($mbr['coverarturl']) - { - if (!$imgfound) include 'table_start.php'; - printf('', $mbr['coverarturl']); - $imgfound = true; - } -if ($imgfound) { - include 'table_end.php'; - printf('

'); -} -include 'table_start.php'; -?> - -', $discid); -printf('', $ctdbid); -printf('', phpCTDB::toc2mbtoc($record['fulltoc']), $mbid, $mbmeta ? count($mbmeta) : "-"); -//printf('', $record['fulltoc']); -printf(''); -if ($record['artist'] != '') - printf('', $record['artist']); -if ($mbmeta) - foreach ($mbmeta as $mbr) - if ($mbr['artistname'] != $record['artist']) - printf('', $mbr['artistname']); -if ($record['title'] != '') - printf('', $record['title']); -if ($mbmeta) - foreach ($mbmeta as $mbr) - if ($mbr['albumname'] != $record['title']) - printf('', $mbr['albumname']); -?> -
Disc ID%s
CTDB ID%s
Musicbrainz ID%s (%s)
Full TOC%s
'); -?> - -', $trno, $trstartmsf, $trlenmsf, $trstart, $trend); -} -printf("
TrackStartLengthStart sectorEnd sector
%d%s%s%d%d
"); -printf('
Artist%s
Artist (MB)%s
Title%s
Title (MB)%s
- -
- - diff --git a/CUETools.CTDB/Web/submit.php b/CUETools.CTDB/Web/submit.php deleted file mode 100644 index a7e28ff..0000000 --- a/CUETools.CTDB/Web/submit.php +++ /dev/null @@ -1,103 +0,0 @@ - - * @link http://de3.php.net/manual/en/ini.core.php#79564 - */ -function php_to_byte($v){ - $l = substr($v, -1); - $ret = substr($v, 0, -1); - switch(strtoupper($l)){ - case 'P': - $ret *= 1024; - case 'T': - $ret *= 1024; - case 'G': - $ret *= 1024; - case 'M': - $ret *= 1024; - case 'K': - $ret *= 1024; - break; - } - return $ret; -} - -// Return the human readable size of a file -// @param int $size a file size -// @param int $dec a number of decimal places - -function filesize_h($size, $dec = 1) -{ - $sizes = array('byte(s)', 'kb', 'mb', 'gb'); - $count = count($sizes); - $i = 0; - - while ($size >= 1024 && ($i < $count - 1)) { - $size /= 1024; - $i++; - } - - return round($size, $dec) . ' ' . $sizes[$i]; -} - -$file = $_FILES['uploadedfile']; - -//echo $file['name'], ini_get('upload_max_filesize'); - - // give info on PHP catched upload errors - if($file['error']) switch($file['error']){ - case 1: - case 2: - echo sprintf($lang['uploadsize'], - filesize_h(php_to_byte(ini_get('upload_max_filesize')))); - echo "Error ", $file['error']; - return; - default: - echo $lang['uploadfail']; - echo "Error ", $file['error']; - } - -//if ($_SERVER['HTTP_USER_AGENT'] != "CUETools 205") { -// echo "user agent ", $_SERVER['HTTP_USER_AGENT'], " is not allowed"; -// return; -//} - -$tmpname = $file['tmp_name']; -$size = (@file_exists($tmpname)) ? filesize($tmpname) : 0; -if ($size == 0) { - echo "no file uploaded"; - return; -} - -$dbconn = pg_connect("dbname=ctdb user=ctdb_user") - or die('Could not connect: ' . pg_last_error()); - -$id = $_POST['id']; -$target_path = phpCTDB::discid2path($id); -@mkdir($target_path, 0777, true); -$target_file = sprintf("%s/ctdb.bin", $target_path); - -$ctdb = new phpCTDB($tmpname); -$merging = @file_exists($target_file); -$ctdb->ParseTOC(); -$record = $ctdb->ctdb2pg($id); -unset($ctdb); - -$destname = sprintf("%s/%08x.bin", $target_path, $record['ctdbid']); -if(!move_uploaded_file($tmpname, $destname)) - die('error uploading file ' . $tmpname . ' to ' . $destname); - -$subres = pg_insert($dbconn, 'submissions', $record); - -phpCTDB::pg2ctdb($dbconn, $id); - -if ($merging) - printf("%s has been updated", $id); -else - printf("%s has been uploaded", $id); -?> diff --git a/CUETools.CTDB/Web/table_end.php b/CUETools.CTDB/Web/table_end.php deleted file mode 100644 index ebe80f2..0000000 --- a/CUETools.CTDB/Web/table_end.php +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/CUETools.CTDB/Web/table_start.php b/CUETools.CTDB/Web/table_start.php deleted file mode 100644 index b39065d..0000000 --- a/CUETools.CTDB/Web/table_start.php +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - -
- diff --git a/CUETools.CTDB/Web/top.php b/CUETools.CTDB/Web/top.php deleted file mode 100644 index ce0de21..0000000 --- a/CUETools.CTDB/Web/top.php +++ /dev/null @@ -1,48 +0,0 @@ -=100"; - $term = ' AND '; -} -$query = $query . " ORDER BY confidence"; -$result = pg_query($query) or die('Query failed: ' . pg_last_error()); -$start = @$_GET['start']; -if (pg_num_rows($result) == 0) - die('nothing found'); -if ($count > pg_num_rows($result)) - $count = pg_num_rows($result); -if ($start == '') $start = pg_num_rows($result) - $count; - -printf("

Popular discs:

"); -include 'list.php'; -pg_free_result($result); -printf("
"); -?> - - diff --git a/CUETools.CTDB/uploader.php b/CUETools.CTDB/uploader.php deleted file mode 100644 index a3bf7aa..0000000 --- a/CUETools.CTDB/uploader.php +++ /dev/null @@ -1,355 +0,0 @@ - - * @link http://de3.php.net/manual/en/ini.core.php#79564 - */ -function php_to_byte($v){ - $l = substr($v, -1); - $ret = substr($v, 0, -1); - switch(strtoupper($l)){ - case 'P': - $ret *= 1024; - case 'T': - $ret *= 1024; - case 'G': - $ret *= 1024; - case 'M': - $ret *= 1024; - case 'K': - $ret *= 1024; - break; - } - return $ret; -} - -// Return the human readable size of a file -// @param int $size a file size -// @param int $dec a number of decimal places - -function filesize_h($size, $dec = 1) -{ - $sizes = array('byte(s)', 'kb', 'mb', 'gb'); - $count = count($sizes); - $i = 0; - - while ($size >= 1024 && ($i < $count - 1)) { - $size /= 1024; - $i++; - } - - return round($size, $dec) . ' ' . $sizes[$i]; -} - -function BigEndian2Int($byte_word, $signed = false) { - - $int_value = 0; - $byte_wordlen = strlen($byte_word); - - for ($i = 0; $i < $byte_wordlen; $i++) { - $int_value += ord($byte_word{$i}) * pow(256, ($byte_wordlen - 1 - $i)); - } - - if ($signed) { - $sign_mask_bit = 0x80 << (8 * ($byte_wordlen - 1)); - if ($int_value & $sign_mask_bit) { - $int_value = 0 - ($int_value & ($sign_mask_bit - 1)); - } - } - - return $int_value; -} - -function LittleEndian2String($number, $minbytes=1, $synchsafe=false) { - $intstring = ''; - while ($number > 0) { - if ($synchsafe) { - $intstring = $intstring.chr($number & 127); - $number >>= 7; - } else { - $intstring = $intstring.chr($number & 255); - $number >>= 8; - } - } - return str_pad($intstring, $minbytes, "\x00", STR_PAD_RIGHT); -} - -function BigEndian2String($number, $minbytes=1, $synchsafe=false) { - return strrev(LittleEndian2String($number, $minbytes, $synchsafe)); -} - -function unparse_atom($fp, $atom) -{ -// printf('unparse_atom(%s)
', $atom['name']); - $offset = ftell($fp); - fwrite($fp, BigEndian2String(0, 4)); - fwrite($fp, $atom['name']); - if ($atom['subatoms']) - foreach ($atom['subatoms'] as $subatom) - unparse_atom($fp, $subatom); - else if ($atom['value']) - fwrite($fp, $atom['value']); - else - die(sprintf("couldn't write long atom %s: size %d", $atom['name'], $atom['size'])); - $pos = ftell($fp); - fseek($fp, $offset, SEEK_SET); - fwrite($fp, BigEndian2String($pos - $offset, 4)); - fseek($fp, $pos, SEEK_SET); -} - -function parse_container_atom($fp, $offset, $len) -{ -// printf('parse_container_atom(%d, %d)
', $offset, $len); - $atoms = false; - $fin = $offset + $len; - while ($offset < $fin) { - fseek($fp, $offset, SEEK_SET); - $atom_header = fread($fp, 8); - $atom_size = BigEndian2Int(substr($atom_header, 0, 4)); - $atom_name = substr($atom_header, 4, 4); - $atom['name'] = $atom_name; - $atom['size'] = $atom_size - 8; - $atom['offset'] = $offset + 8; - if ($atom_size - 8 <= 32) - $atom['value'] = fread($fp, $atom_size - 8); - else - $atom['value'] = false; -// echo $offset, ":", $atom_size, ":", $atom_name, '
'; - if ($atom_name == 'CTDB' || $atom_name == 'DISC' || $atom_name == 'TOC ') - { - $atom['subatoms'] = parse_container_atom($fp, $offset + 8, $atom_size - 8); - foreach ($atom['subatoms'] as $param) - switch ($param['name']) { - case 'HEAD': - case 'CRC ': - case 'NPAR': - case 'CONF': - case 'PAR ': - $atom[$param['name']] = $param; - break; - case 'DISC': - $atom['discs'][] = $param; - break; - } - } else - $atom['subatoms'] = false; - switch ($atom_name) - { - case 'CRC ': - case 'NPAR': - case 'CONF': - $atom['int'] = BigEndian2Int($atom['value']); - break; - } - $offset += $atom_size; - $atoms[] = $atom; - } - if ($offset > $fin) - die("bad atom"); - return $atoms; -} - -function get_chunk_offset($fp, $offset, $maxlen, $names, $namepos, &$res, &$len) -{ -// printf('get_chunk_offset(%d, %d, [%d]%s)
', $offset, $maxlen, $namepos, $names[$namepos]); - $subatoms = parse_container_atom($fp, $offset, $maxlen); - if (!$subatoms) return -1; - foreach($subatoms as $atom) - if ($atom['name'] == $names[$namepos]) - { - if ($namepos + 1 >= count($names)) - { - $res = $atom['offset']; - $len = $atom['size']; - return 0; - } - return get_chunk_offset($fp, $atom['offset'], $atom['size'], $names, $namepos + 1, $res, $len); - } - return -1; -} - -function chunk_offset($fp, $offset, $maxlen, $path, &$res, &$len) -{ -// printf('chunk_offset(%d, %d, %s)
', $offset, $maxlen, $path); - return get_chunk_offset($fp, $offset, $maxlen, explode(".", $path), 0, $res, $len); -} - -function read_chunk($fp, $offset, $maxlen, $path, $len = 32) -{ -// printf('read_chunk(%d, %d, %s)
', $offset, $maxlen, $path); - if (chunk_offset($fp, $offset, $maxlen, $path, $chunk_offset, $chunk_length) < 0) return; - if ($chunk_length > $len) return; - fseek($fp, $chunk_offset, SEEK_SET); - return fread($fp, $chunk_length); -} - -function read_int($fp, $offset, $len, $path) -{ -// printf('read_int(%d, %d, %s)
', $offset, $len, $path); - return BigEndian2Int(read_chunk($fp, $offset, $len, $path, 4)); -} - -function copy_data($srcfp, $srcoffset, $dstfp, $dstoffset, $length) -{ - fseek($srcfp, $srcoffset, SEEK_SET); - fseek($dstfp, $dstoffset, SEEK_SET); - fwrite($dstfp, fread($srcfp, $length)); -} - -$file = $_FILES['uploadedfile']; - -//echo $file['name'], ini_get('upload_max_filesize'); - - // give info on PHP catched upload errors - if($file['error']) switch($file['error']){ - case 1: - case 2: - echo sprintf($lang['uploadsize'], - filesize_h(php_to_byte(ini_get('upload_max_filesize')))); - echo "Error ", $file['error']; - return; - default: - echo $lang['uploadfail']; - echo "Error ", $file['error']; - } - -//if ($_SERVER['HTTP_USER_AGENT'] != "CUETools 205") { -// echo "user agent ", $_SERVER['HTTP_USER_AGENT'], " is not allowed"; -// return; -//} - -$tmpname = $file['tmp_name']; -$size = (@file_exists($tmpname)) ? filesize($tmpname) : 0; -if ($size == 0) { - echo "no file uploaded"; - return; -} - -$id = $_POST['id']; -$err = sscanf($id, "%03d-%04x%04x-%04x%04x-%04x%04x", $tracks, $id1a, $id1b, $id2a, $id2b, $cddbida, $cddbidb); -$parsedid = sprintf("%03d-%04x%04x-%04x%04x-%04x%04x", $tracks, $id1a, $id1b, $id2a, $id2b, $cddbida, $cddbidb); -if ($id != $parsedid) { - echo "bad id ", $id; - return; -} - -$fp = fopen($tmpname, 'rb'); -if (chunk_offset($fp, 0, $size, 'CTDB.DISC', $disc_offset, $disc_length) < 0) - die("bad file"); -$head = read_chunk($fp, 0, $size, 'CTDB.HEAD', 20); -$crc = read_int($fp, $disc_offset, $disc_length, 'CRC '); -$npar = read_int($fp, $disc_offset, $disc_length, 'NPAR'); -$tool = read_chunk($fp, $disc_offset, $disc_length, 'TOOL'); -$version = BigEndian2Int(substr($head,0,4)); -$disccount = BigEndian2Int(substr($head,4,4)); -$total = BigEndian2Int(substr($head,8,4)); -fclose($fp); - -$target_path = sprintf("parity/%x/%x/%x", $id1b & 15, ($id1b >> 4) & 15, ($id1b >> 8) & 15); -$target_file = sprintf("%s/dBCT-%s.bin", $target_path, $parsedid); - -@mkdir($target_path, 0777, true); - -if ($npar < 8 || $npar > 16 || $version != 256 || $disccount != 1) { - printf("bad file: version=%d, disccount=%d, total=%d, npar=%d, tool=%s", - $version, $disccount, $total, $npar, $tool); - return; -} - -if (!@file_exists($target_file)) { - if(!move_uploaded_file($tmpname, $target_file)) { - echo "there was an error uploading the file, please try again!"; - return; - } - printf("%s has been uploaded", $parsedid); - return; -} - -$fp = fopen($tmpname, 'rb'); -$fpstats = fstat($fp); -$db = parse_container_atom($fp, 0, $fpstats['size']); -foreach ($db as $entry) if($entry['name'] == 'CTDB') $ctdb = $entry; - -if (@file_exists($target_file)) { - $fp1 = fopen($target_file, 'rb'); - $fp1stats = fstat($fp1); - $db1 = parse_container_atom($fp1, 0, $fp1stats['size']); - foreach ($db1 as $entry) if($entry['name'] == 'CTDB') $ctdb1 = $entry; -} - -$ftyp['name'] = 'ftyp'; -$ftyp['value'] = 'CTDB'; - -$newctdb['name'] = 'CTDB'; - $newhead['name'] = 'HEAD'; - $newtotal['name'] = 'TOTL'; - $newtotal['value'] = $ctdb1 ? BigEndian2String(BigEndian2Int(substr($ctdb1['HEAD']['value'],8,4)) + 1,4) : substr($ctdb['HEAD']['value'],8,4); - $newhead['subatoms'][] = $newtotal; -$newctdb['subatoms'][] = $newhead; -$discs = 0; -foreach ($ctdb['subatoms'] as $disc) - if ($disc['name'] == 'DISC') - { - $crc = $disc['CRC ']['value']; - - $newdisc = false; - $newdisc['name'] = 'DISC'; - $newdisc['subatoms'][] = $disc['CRC ']; - $newdisc['subatoms'][] = $disc['NPAR']; - $newdisc['subatoms'][] = $disc['CONF']; - fseek($fp, $disc['PAR ']['offset']); - $newpar['name'] = 'PAR '; - $newpar['value'] = fread($fp, 16); - $newdisc['subatoms'][] = $newpar; - $newctdb['subatoms'][] = $newdisc; - $discs++; - } -if ($discs > 1) - die('One disc at a time, please'); -if ($discs < 1) - die('No disc records found'); -if ($ctdb1) -foreach ($ctdb1['subatoms'] as $disc) - if ($disc['name'] == 'DISC') - { - if ($crc == $disc['CRC ']['value']) - die("duplicate entry"); - - $newdisc = false; - $newdisc['name'] = 'DISC'; - $newdisc['subatoms'][] = $disc['CRC ']; - $newdisc['subatoms'][] = $disc['NPAR']; - $newdisc['subatoms'][] = $disc['CONF']; - fseek($fp1, $disc['PAR ']['offset']); - $newpar['name'] = 'PAR '; - $newpar['value'] = fread($fp1, 16); - $newdisc['subatoms'][] = $newpar; - $newctdb['subatoms'][] = $newdisc; - } - - -$destpath = sprintf("%s/%s/", $target_path, $parsedid); -@mkdir($destpath, 0777, true); - -$tname = sprintf("%s/ctdb.tmp", $destpath); -$tfp = fopen($tname, 'wb'); -unparse_atom($tfp,$ftyp); -unparse_atom($tfp,$newctdb); -fclose($tfp); - -$crca = BigEndian2Int(substr($crc,0,2)); -$crcb = BigEndian2Int(substr($crc,2,2)); -$destname = sprintf("%s/%04x%04x.bin", $destpath, $crca, $crcb); -if(!move_uploaded_file($tmpname, $destname)) - die('error uploading file'); - -if(!rename($tname,sprintf("%s/ctdb.bin", $destpath))) - die('error uploading file'); - -fclose($fp); -if ($fp1) fclose($fp1); - -printf("%s has been updated", $parsedid); -?>