sхс
Легенда
Поделюсь с вами небольшим модом. У меня древняя ревизия R600, так что подгоняйте под себя. Очень жаль что разработчики решили отказаться от подержки старых версий движка.
Итак
В config.php добавляем
peer_id клиентов
Кому интересно можете поковырятся в исходниках transmission и пополнить базу. Но большую часть я оттуда забрал
в function.php вставляем
в dispaying_torrent.php вставляем после
строку
в viewtopic_torrent.php
после
вставляем
в usercp_viewprofile.php
после
вставляем
в usercp_viewprofile.tpl
после
вставляем
В базе в таблице bb_bt_tracker у вас уже должно быть поле peer_id. Если его нет, то создайте. У меня стоит тип varchar так как есть фильтрация preg_match, но лучше делать его бинарным
папку с иконками прикрепил, кидайте в /images/clients/
Если у вас ничего не работает, значит я что-то забыл
Итак
В config.php добавляем
peer_id клиентов
PHP:
$bb_cfg['user_clients']['azureus'] = array(
//AZUREUS_STYLE_CLIENTS
'7T' => 'aTorrent (Android)',
'AB' => 'AnyEvent::BitTorrent',
'AG' => 'Ares',
'A~' => 'Ares',
'AN' => 'Ares',
'AR' => 'Arctic',
'AV' => 'Avicora',
'AT' => 'Artemis',
'AX' => 'BitPump',
'AZ' => 'Azureus',
'BA' => 'µTorrent',
'BB' => 'BitBuddy',
'BC' => 'BitComet',
'BE' => 'BareTorrent',
'BF' => 'BitFlu',
'BG' => 'BTGetit',
'BH' => 'BitZilla',
'BK' => 'BitKitten (libtorrent)',
'BL' => 'BitBlinder',
'BLZ' => 'Blizzard Downloader',
'BM' => 'BitMagnet',
'BN' => 'Baidu Netdisk',
'BOWP' => 'BitsOnWheels',
'BOW' => 'BitsOnWheels',
'BP' => 'BitTorrent Pro (Azureus + Spyware)',
'BR' => 'BitRocket',
'BS' => 'BTSlave',
//'BT' => 'BBtor',
'BT' => 'BitTorrent',
'BW' => 'BitWombat',
'BX' => 'Bittorrent X',
'CD' => 'Enhanced CTorrent',
'CT' => 'CTorrent',
'DE' => 'DelugeTorrent',
'DP' => 'Propagate Data Client',
'DNA' => 'BitTorrent DNA',
'EB' => 'EBit',
'ES' => 'Electric Sheep',
'FC' => 'FileCroc',
'FD' => 'Free Download Manager',
'FG' => 'FlashGet',
'FT' => 'FoxTorrent/RedSwoosh',
'FX' => 'Freebox',
'FL' => 'Flud',
//'FL' => 'Folx',
'G' => 'G3 Torrent',
'GS' => 'GSTorrent',
'GR' => 'GetRight',
'HK' => 'Hekate',
'HL' => 'Halite',
'HM' => 'hMule',
'HN' => 'Hydranode',
'IL' => 'iLivid',
'JS' => 'Justseed.it',
'JT' => 'JavaTorrent',
'KG' => 'KGet',
'KT' => 'KTorrent',
'LC' => 'LeechCraft',
'LH' => 'LH-ABC',
'LK' => 'Linkage',
'LP' => 'Lphant',
'LT' => 'LibTorrent',
//'LT' => 'LibTorrent (Rasterbar)',
//'lt' => 'LibTorrent (Rakshasa)',
'LW' => 'LimeWire',
'LIME' => 'LimeWire',
'MK' => 'Meerkat',
'ML' => 'MLDonkey',
'MG' => 'MediaGet',
'MO' => 'MonoTorrent',
'MP' => 'MooPolice',
'MR' => 'Miro',
'MT' => 'MoonlightTorrent',
'NB' => 'Net::BitTorrent',
'NE' => 'BT Next Evolution',
'NX' => 'Net Transport',
'OP' => 'Opera',
'OS' => 'OneSwarm',
'OT' => 'OmegaTorrent',
'PB' => 'Protocol::BitTorrent',
'pb' => 'pbTorrent',
'PC' => 'CacheLogic',
'PD' => 'Pando',
'PE' => 'PeerProject',
'PI' => 'PicoTorrent',
'PT' => 'PHPTracker',
'pX' => 'pHoeniX',
'QB' => 'qBittorrent',
'qB' => 'qBittorrent',
'QD' => 'QQDownload',
'QT' => 'QT',
'QWOD' => 'QWOD',
'RS' => 'Rufus',
'RT' => 'Retriever',
'RZ' => 'RezTorrent',
'SB' => 'Swiftbit',
'SD' => 'Thunder',
'SG' => 'GS Torrent',
'SM' => 'SoMud',
'SP' => 'BitSpirit',
'SS' => 'SwarmScope',
'ST' => 'SymTorrent',
'st' => 'sharktorrent',
'SZ' => 'Shareaza',
'S~' => 'Shareaza',
'TB' => 'Torch',
'TE' => 'Terasaur Seed Bank',
'TI' => 'Tixati',
'TIX' => 'Tixati',
'TIXX' => 'Tixati',
'TL' => 'Tribler',
'TN' => 'TorrentDotNET',
'TR' => 'Transmission',
'TS' => 'TorrentStorm',
'TT' => 'TuoTu',
'UE' => 'µTorrent Embedded',
'UL' => 'uLeecher!',
'UM' => 'µTorrent (Mac)',
'UT' => 'µTorrent',
'VG' => 'Vagaa',
'WT' => 'BitLet',
'WW' => 'WebTorrent',
'WY' => 'FireTorrent',
'XBT' => 'XBT Client',
'XF' => 'Xfplay',
'XL' => 'Xunlei',
'XS' => 'XSwifter',
'XT' => 'XanTorrent',
'XC' => 'Xtorrent',
'XX' => 'Xtorrent',
'ZT' => 'ZipTorrent',
'ZO' => 'Zona',
'ZT' => 'ZipTorrent',
'ZZ' => 'Unknown client',
);
$bb_cfg['user_clients']['shadow'] = array(
//SHADOW_STYLE_CLIENTS
'A' => 'ABC',
'O' => 'Osprey Permaseed',
'Q' => 'BTQueue',
'R' => 'Tribler',
'S' => 'Shadow\'s client',
'T' => 'BitTornado',
'U' => 'UPnP NAT Bit Torrent ',
);
$bb_cfg['user_clients']['mainline'] = array(
//MAINLINE_STYLE_CLIENTS
'M' => 'BitTorrent',
'Q' => 'Queen Bee'
);
Кому интересно можете поковырятся в исходниках transmission и пополнить базу. Но большую часть я оттуда забрал
в function.php вставляем
PHP:
function get_user_client($uclient,$full=true){
global $bb_cfg;
//var_dump($uclient);
if($uclient==false){return false;}
$uclient=($uclient{0}=="-") ? $uclient : "-".$uclient;
$uclient=str_replace('-TIX0','-TIX',$uclient);
$uclient=str_replace('-MG-2.01.','-MG201',$uclient);
preg_match('#^\-([a-z~]{1,4})([\d]{1}[\d\w]{1,4})\-?#i',$uclient,$match); //AZUREUS_STYLE_ENCODING
preg_match('#^\-([a-z])(\d+)\-(\d+)\-(\d+)#i',$uclient,$match2); //BRAM's_STYLE_ENCODING
preg_match('#^([a-z])(([a-z0-9]|-|\.){5})#i',$uclient,$match3); //SHADOW_STYLE_ENCODING
$client=array();
//vdn($match2);
$type='azureus';
if(isset($match[1])){$arr=$match;$type='azureus';}
if(isset($match2[1])){$arr=$match2;$type='mainline';}
if(isset($match3[1])){$arr=$match3;$type='shadow';}
//vdn($uclient);
switch($type){
case 'azureus':
$client['id']= (isset($arr[1])) ? strtoupper($arr[1]) : 'ZZ';
$client['ver']= (isset($arr[2])) ? $arr[2] : '';
break;
case 'mainline':
$client['id']= (isset($arr[1])) ? strtoupper($arr[1]) : 'ZZ';
$client['ver'][] = $v1=(isset($arr[2])) ? $arr[2] : '';
$client['ver'][] = $v2=(isset($arr[3])) ? $arr[3] : '';
$client['ver'][] = $v3=(isset($arr[4])) ? $arr[4] : '';
//$client['ver']= (isset($match[2])) ? $v1.'.'.$v2.'.'.$v3 '';
break;
case 'shadow':
$client['id']= (isset($arr[1])) ? strtoupper($arr[1]) : 'ZZ';
$client['ver'][] = $v1=(isset($arr[2])) ? $arr[2] : '';
$client['ver'][] = $v2=(isset($arr[3])) ? $arr[3] : '';
$client['ver'][] = $v3=(isset($arr[4])) ? $arr[4] : '';
break;
default:
$client['id']= (isset($arr[1])) ? strtoupper($arr[1]) : 'ZZ';
$client['ver']= (isset($arr[2])) ? $arr[2] : '';
}
//vdn($client);
if(isset($bb_cfg['user_clients'][$type][$client['id']])){
$client['name']=$bb_cfg['user_clients'][$type][$client['id']];
$client['format_ver']='';
for($i=0;$i<3;++$i){
$client['format_ver'].=(isset($client['ver'][$i]))?(($i==2)?$client['ver'][$i]:$client['ver'][$i]."."):0;
}
}
else{
$client['id']='ZZ';
$client['name']='Unknown client';
$client['format_ver']='';
}
if($client['format_ver']=='0.0.0') $client['format_ver'] ='';
if($full==true){
return '<img width="16" height="16" style="display:inline!important;vertical-align:middle" src="/images/clients/'.strtolower($client['id']).'.png" alt="'.$client['name'].'" title="'.$client['name'].' '.$client['format_ver'].' ('.$uclient.')" /><span style="display:inline!important;vertical-align:middle"> '.$client['name'].' '.$client['format_ver'].'</span>';
}
else{
return '<img width="16" height="16" style="display:inline!important;vertical-align:middle" src="/images/clients/'.strtolower($client['id']).'.png" alt="'.$client['name'].'" title="'.$client['name'].' '.$client['format_ver'].' ('.$uclient.')" />';
}
}
в dispaying_torrent.php вставляем после
PHP:
'NAME' => ($peer['update_time']) ? $name : "<s>$name</s>",
PHP:
'PEER_ID' => isset($peer['peer_id']) ? get_user_client($peer['peer_id']) : "-",
в viewtopic_torrent.php
после
PHP:
<!-- BEGIN port -->
<td class="hidden-xs hidden-sm">{sfull.srow.port.PORT}</td>
<!-- END port -->
PHP:
<td class="hidden-xs hidden-sm">{sfull.srow.port.PORT}</td>
в usercp_viewprofile.php
после
PHP:
'ALLOW_DLS' => bf($profiledata['user_opt'], 'user_opt', 'allow_dls'),
PHP:
'PEER_ID' => get_user_client($profiledata['peer_id']),
в usercp_viewprofile.tpl
после
PHP:
<!-- IF BIRTHDAY -->
<tr>
<th>{L_BIRTHDAY}:</th>
<td id="user_birthday"><b class="editable">{BIRTHDAY}</b></td>
</tr>
<tr>
<th>{L_AGE}:</th>
<td><b>{AGE}</b></td>
</tr>
<!-- ENDIF -->
PHP:
<!-- IF PEER_ID -->
<tr>
<th>{L_TOR_CLIENT}:</th>
<td id="peer_id">{PEER_ID}</td>
</tr>
<!-- ENDIF -->
В базе в таблице bb_bt_tracker у вас уже должно быть поле peer_id. Если его нет, то создайте. У меня стоит тип varchar так как есть фильтрация preg_match, но лучше делать его бинарным
папку с иконками прикрепил, кидайте в /images/clients/
Если у вас ничего не работает, значит я что-то забыл