Клиент + версия в статистике раздачи

Wertos

Пользователь
Кто-то данный мод под хобот реализовал?
пытался, пытаюсь до сих пор ))) Если включить в хоботе лог анонсов, то клиента можно вытащить из peer_id в xbt_announce_log НО эта табличка растёт ппц !! А заставить писать peer_id в bb_bt_tracker я не смог :(
 

Wertos

Пользователь
В server.cpp есть такие строки
Код:
      m_database.query("INSERT INTO " + table_name(table_files_users)
        + " (topic_id, peer_id, peer_hash, user_id, ip, ipv6, port, uploaded, downloaded,  seeder, releaser, complete_percent, speed_up, speed_down, update_time, xbt_error, ul_gdc, ul_gdc_c, ul_16k_c, ul_eq_dl) VALUES "
        + m_files_users_updates_buffer
        + " on duplicate key update"
        + "  topic_id = values(topic_id),"
        + "  peer_id = values(peer_id),"
        + "  peer_hash = values(peer_hash),"
        + "  user_id = values(user_id),"
        + "  ip = values(ip), ipv6 = values(ipv6),"
        + "  port = values(port),"
        + "  uploaded = uploaded + values(uploaded),"
        + "  downloaded = downloaded + values(downloaded),"
        + "  complete_percent = values(complete_percent),"
        + "  seeder = values(seeder),"
        + "  releaser = values(releaser),"
        + "  speed_up = values(speed_up),"
        + "  speed_down = values(speed_down),"
        + "  up_add = up_add + values(uploaded),"
        + "  down_add = down_add + values(downloaded),"
        + "  update_time = values(update_time),"
        + "  xbt_error = values(xbt_error), ul_gdc = values(ul_gdc), ul_gdc_c = values(ul_gdc_c), ul_16k_c = values(ul_16k_c), ul_eq_dl = values(ul_eq_dl)");

далее...
Код:
CREATE TABLE IF NOT EXISTS `bb_bt_tracker` (
  `peer_hash` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
  `topic_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
  `peer_id` varchar(20) NOT NULL,
  `user_id` mediumint(9) NOT NULL DEFAULT '0',
  `ip` char(8) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '0',
  `ipv6` varchar(32) DEFAULT NULL,
  `port` smallint(5) unsigned NOT NULL DEFAULT '0',
  `seeder` tinyint(1) NOT NULL DEFAULT '0',
  `releaser` tinyint(1) NOT NULL DEFAULT '0',
  `tor_type` tinyint(1) NOT NULL DEFAULT '0',
  `uploaded` bigint(20) unsigned NOT NULL DEFAULT '0',
  `downloaded` bigint(20) unsigned NOT NULL DEFAULT '0',
  `remain` bigint(20) unsigned NOT NULL DEFAULT '0',
  `speed_up` mediumint(8) unsigned NOT NULL DEFAULT '0',
  `speed_down` mediumint(8) unsigned NOT NULL DEFAULT '0',
  `up_add` bigint(20) unsigned NOT NULL DEFAULT '0',
  `down_add` bigint(20) unsigned NOT NULL DEFAULT '0',
  `update_time` int(11) NOT NULL DEFAULT '0',
  `xbt_error` varchar(200) DEFAULT NULL,
  `ul_gdc` bigint(20) unsigned NOT NULL DEFAULT '0',
  `ul_gdc_c` mediumint(9) unsigned NOT NULL DEFAULT '0',
  `ul_16k_c` mediumint(9) unsigned NOT NULL DEFAULT '0',
  `ul_eq_dl` mediumint(9) unsigned NOT NULL DEFAULT '0',
  `complete_percent` bigint(20) NOT NULL DEFAULT '0',
  PRIMARY KEY (`peer_hash`),
  KEY `topic_id` (`topic_id`),
  KEY `user_id` (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
структура базы ! Взята из ТП2, как и хобот ! Собираю... результат
Jun 24 14:46:20 ruerotic xbt_tracker: Column count doesn't match value count at row1
Кстати кто на хоботе, гляньте в bb_bt_tracker поле peer_id заполняется ?
 
S

Sarymian

Гость
Wertos, запросик бы увидить который ерор вызывает. Гугля говорит что не верное кол-во полей и переданных переменных.
 

Wertos

Пользователь
Функция определения торрент-клиента по peer_id для XBT аннонсера
PHP:
function detect_torrent_client($peer_id)
{
// Based on http://wiki.theory.org/BitTorrentSpecification
// Last update by NetS 15/05/2009
if (substr($peer_id,0,3) == "-UT")
return "uTorrent ".$peer_id{3}.".".$peer_id{4}.".".$peer_id{5}.".".$peer_id{6};
else if (substr($peer_id,0,3) == "M6-")
return "Bittorrent 6.".$peer_id{3}.".".$peer_id{5};
else if (substr($peer_id,0,3) == "-AZ")
return "Azureus ".$peer_id{3}.".".$peer_id{4}.".".$peer_id{5}.".".$peer_id{6};
else if (substr($peer_id,0,3) == "-SP")
return "BitSpirit ".$peer_id{3}.".".$peer_id{4}.".".$peer_id{5}.".".$peer_id{6};
else if (substr($peer_id,0,3) == "-KT")
return "KTorrent ".$peer_id{3}.".".$peer_id{4}.".".$peer_id{5}.".".$peer_id{6};
else if (substr($peer_id,0,3) == "-TR")
return "Transmission ".$peer_id{3}.".".$peer_id{4}.".".$peer_id{5}.".".$peer_id{6};
else if (substr($peer_id,0,3) == "-BC")
return "BitComet ".$peer_id{3}.".".$peer_id{4}.".".$peer_id{5}.".".$peer_id{6};
else if (substr($peer_id,0,3) == "-LT")
return "Libtorrent ".$peer_id{3}.".".$peer_id{4}.".".$peer_id{5}.".".$peer_id{6};
else if (substr($peer_id,0,3) == "-lt")
return "libTorrent ".$peer_id{3}.".".$peer_id{4}.".".$peer_id{5}.".".$peer_id{6};
else if (substr($peer_id,0,3) == "-DE")
return "DelugeTorrent ".$peer_id{3}.".".$peer_id{4}.".".$peer_id{5}.".".$peer_id{6};
else if (substr($peer_id,0,4) == "exbc")
return "BitComet";
else if (substr($peer_id,0,2) == "M4" || substr($peer_id,0,2) == "M3")
return "Bittorrent ".str_replace("-",".",substr($peer_id,1,5));
else if (substr($peer_id,0,2) == "OP")
return "Opera build".substr($peer_id,2,4);
else if (substr($peer_id,0,3) == "-qB")
return "qBittorrent ".$peer_id{3}.".".$peer_id{4}.".".$peer_id{5}.".".$peer_id{6};
else if (substr($peer_id,0,3) == "-XL")
return "Xunlei ".$peer_id{3}.".".$peer_id{4}.".".$peer_id{5}.".".$peer_id{6};
else if (substr($peer_id,0,3) == "-OS")
return "OneSwarm ".$peer_id{4}.".".$peer_id{5};
else if (substr($peer_id,0,3) == "XBT")
return "XBT Client ".$peer_id{4}.".".$peer_id{5}.".".$peer_id{6};
else if (substr($peer_id,0,3) == "-BB")
return "BitBuddy".$peer_id{3}.".".$peer_id{4}.".".$peer_id{5}.".".$peer_id{6};
else if (substr($peer_id,0,3) == "-CT")
return "CTorrent ".$peer_id{3}.".".$peer_id{4}.".".$peer_id{5}.".".$peer_id{6}; 
else if (substr($peer_id,0,3) == "-MT")
return "MoonlightTorrent ".$peer_id{3}.".".$peer_id{4}.".".$peer_id{5}.".".$peer_id{6};
else if (substr($peer_id,0,3) == "-BX")
return "Bittorrent X ".$peer_id{3}.".".$peer_id{4}.".".$peer_id{5}.".".$peer_id{6}; 
else if (substr($peer_id,0,3) == "-TS")
return "TorrentStorm ".$peer_id{3}.".".$peer_id{4}.".".$peer_id{5}.".".$peer_id{6};
else if (substr($peer_id,0,3) == "-QT")
return "QT 4 ".$peer_id{3}.".".$peer_id{4}.".".$peer_id{5}.".".$peer_id{6};
else if (substr($peer_id,0,3) == "-BL")
return "BitLord ".$peer_id{3}.".".$peer_id{4}.".".$peer_id{5}.".".$peer_id{6};
else if (substr($peer_id,0,3) == "-SZ")
return "Shareaza ".$peer_id{3}.".".$peer_id{4}.".".$peer_id{5}.".".$peer_id{6};
else if (substr($peer_id,0,3) == "-RT")
return "Retriever ".$peer_id{3}.".".$peer_id{4}.".".$peer_id{5}.".".$peer_id{6};
else if (substr($peer_id,0,3) == "-LP")
return "Lphant ".$peer_id{3}.".".$peer_id{4}.".".$peer_id{5}.".".$peer_id{6};
else if (substr($peer_id,0,3) == "-TN")
return "TorrentDotNet ".$peer_id{3}.".".$peer_id{4}.".".$peer_id{5}.".".$peer_id{6};
else if (substr($peer_id,0,3) == "-SS")
return "SwarmScope ".$peer_id{3}.".".$peer_id{4}.".".$peer_id{5}.".".$peer_id{6};
else if (substr($peer_id,0,3) == "-XT")
return "XanTorrent ".$peer_id{3}.".".$peer_id{4}.".".$peer_id{5}.".".$peer_id{6};
else if (substr($peer_id,0,3) == "-BS")
return "BTSlave ".$peer_id{3}.".".$peer_id{4}.".".$peer_id{5}.".".$peer_id{6};
else if (substr($peer_id,0,3) == "-ZT")
return "ZipTorrent ".$peer_id{3}.".".$peer_id{4}.".".$peer_id{5}.".".$peer_id{6}; 
else if (substr($peer_id,0,3) == "-AR")
return "Artic ".$peer_id{3}.".".$peer_id{4}.".".$peer_id{5}.".".$peer_id{6};
else if (substr($peer_id,0,3) == "-SB")
return "Swiftbit ".$peer_id{3}.".".$peer_id{4}.".".$peer_id{5}.".".$peer_id{6};
else if (substr($peer_id,0,3) == "-MP")
return "MooPolice ".$peer_id{3}.".".$peer_id{4}.".".$peer_id{5}.".".$peer_id{6};
else if (substr($peer_id,0,1) == "S" && is_int(substr($peer_id,1,3)))
return "Shadow ".$peer_id{1}.".".$peer_id{2}.".".$peer_id{3};
else if (substr($peer_id,0,1) == "U" && is_int(substr($peer_id,1,3)))
return "UPnP NAT Bit Torrent ".$peer_id{1}.".".$peer_id{2}.".".$peer_id{3};
else if (substr($peer_id,0,1) == "T") 
return "BitTornado ".$peer_id{1}.".".$peer_id{2}.".".$peer_id{3};
else if (substr($peer_id,0,1) == "O" && is_int(substr($peer_id,1,3)))
return "Osprey Permaseed ".$peer_id{1}.".".$peer_id{2}.".".$peer_id{3};
else
return "Unknown";
}
fix ! Обновил функцию, не определялся BitSpirit.
 
Сверху