mirror of
https://github.com/torrentpier/torrentpier
synced 2025-08-20 13:24:01 -07:00
feat(freeipapi): Added ability to use own API token (#1901)
* feat(freeipapi): Added ability to use own API token * Updated * Update displaying_torrent.php * Update usercp_register.tpl * Update register.php
This commit is contained in:
parent
a4793f6ce1
commit
513e3065d3
7 changed files with 50 additions and 21 deletions
|
@ -463,10 +463,12 @@ if ($tor_reged && $tor_info) {
|
||||||
}
|
}
|
||||||
|
|
||||||
$peerCountry = $lang['UNKNOWN'];
|
$peerCountry = $lang['UNKNOWN'];
|
||||||
if (IS_AM || $peer['user_id'] == $userdata['user_id'] || !bf($peer['user_opt'], 'user_opt', 'user_hide_peer_country')) {
|
if ($bb_cfg['ip2country_settings']['enabled']) {
|
||||||
if ($infoByIP = infoByIP((!empty($peer['ipv6']) ? $peer['ipv6'] : $peer['ip']), $peer['port'])) {
|
if (IS_AM || $peer['user_id'] == $userdata['user_id'] || !bf($peer['user_opt'], 'user_opt', 'user_hide_peer_country')) {
|
||||||
if (!empty($infoByIP['countryCode'])) {
|
if ($infoByIP = infoByIP((!empty($peer['ipv6']) ? $peer['ipv6'] : $peer['ip']), $peer['port'])) {
|
||||||
$peerCountry = render_flag($infoByIP['countryCode'], false);
|
if (!empty($infoByIP['countryCode'])) {
|
||||||
|
$peerCountry = render_flag($infoByIP['countryCode'], false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -144,6 +144,14 @@ $bb_cfg['torr_server'] = [
|
||||||
'disable_for_guest' => true
|
'disable_for_guest' => true
|
||||||
];
|
];
|
||||||
|
|
||||||
|
// FreeIPAPI settings
|
||||||
|
$bb_cfg['ip2country_settings'] = [
|
||||||
|
// Documentation: https://docs.freeipapi.com/
|
||||||
|
'enabled' => true,
|
||||||
|
'endpoint' => 'https://freeipapi.com/api/json/',
|
||||||
|
'api_token' => '', // not required for basic usage
|
||||||
|
];
|
||||||
|
|
||||||
// FAQ url help link
|
// FAQ url help link
|
||||||
$bb_cfg['how_to_download_url_help'] = 'viewtopic.php?t=1'; // How to download?
|
$bb_cfg['how_to_download_url_help'] = 'viewtopic.php?t=1'; // How to download?
|
||||||
$bb_cfg['what_is_torrent_url_help'] = 'viewtopic.php?t=2'; // What is a torrent?
|
$bb_cfg['what_is_torrent_url_help'] = 'viewtopic.php?t=2'; // What is a torrent?
|
||||||
|
|
|
@ -35,9 +35,6 @@ define('UPDATER_URL', 'https://api.github.com/repos/torrentpier/torrentpier/rele
|
||||||
define('UPDATER_FILE', INT_DATA_DIR . '/updater.json');
|
define('UPDATER_FILE', INT_DATA_DIR . '/updater.json');
|
||||||
define('COOKIE_DBG', 'bb_dbg');
|
define('COOKIE_DBG', 'bb_dbg');
|
||||||
|
|
||||||
// TODO: Move in another section
|
|
||||||
define('API_IP_URL', 'https://freeipapi.com/api/json/');
|
|
||||||
|
|
||||||
// Templates
|
// Templates
|
||||||
define('ADMIN_TPL_DIR', TEMPLATES_DIR . '/admin/');
|
define('ADMIN_TPL_DIR', TEMPLATES_DIR . '/admin/');
|
||||||
define('XS_USE_ISSET', '1');
|
define('XS_USE_ISSET', '1');
|
||||||
|
|
|
@ -2186,20 +2186,40 @@ function readUpdaterFile(): array|bool
|
||||||
*/
|
*/
|
||||||
function infoByIP(string $ipAddress, int $port = 0): array
|
function infoByIP(string $ipAddress, int $port = 0): array
|
||||||
{
|
{
|
||||||
|
global $bb_cfg;
|
||||||
|
|
||||||
|
if (!$bb_cfg['ip2country_settings']['enabled']) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
$ipAddress = \TorrentPier\Helpers\IPHelper::long2ip_extended($ipAddress);
|
$ipAddress = \TorrentPier\Helpers\IPHelper::long2ip_extended($ipAddress);
|
||||||
$cacheName = hash('xxh128', ($ipAddress . '_' . $port));
|
$cacheName = hash('xxh128', ($ipAddress . '_' . $port));
|
||||||
|
|
||||||
if (!$data = CACHE('bb_ip2countries')->get($cacheName)) {
|
if (!$data = CACHE('bb_ip2countries')->get($cacheName)) {
|
||||||
$data = [];
|
$data = [];
|
||||||
$response = file_get_contents(API_IP_URL . $ipAddress);
|
|
||||||
$json = json_decode($response, true);
|
$contextOptions = [];
|
||||||
if (is_array($json) && !empty($json)) {
|
if (!empty($bb_cfg['ip2country_settings']['api_token'])) {
|
||||||
$data = [
|
$contextOptions['http'] = [
|
||||||
'ipVersion' => $json['ipVersion'],
|
'header' => "Authorization: Bearer " . $bb_cfg['ip2country_settings']['api_token'] . "\r\n"
|
||||||
'countryCode' => $json['countryCode'],
|
|
||||||
'continent' => $json['continent'],
|
|
||||||
'continentCode' => $json['continentCode']
|
|
||||||
];
|
];
|
||||||
CACHE('bb_ip2countries')->set($cacheName, $data, 1200);
|
}
|
||||||
|
|
||||||
|
$context = stream_context_create($contextOptions);
|
||||||
|
$response = file_get_contents($bb_cfg['ip2country_settings']['endpoint'] . $ipAddress, context: $context);
|
||||||
|
|
||||||
|
if ($response !== false) {
|
||||||
|
$json = json_decode($response, true);
|
||||||
|
|
||||||
|
if (is_array($json) && !empty($json)) {
|
||||||
|
$data = [
|
||||||
|
'ipVersion' => $json['ipVersion'],
|
||||||
|
'countryCode' => $json['countryCode'],
|
||||||
|
'continent' => $json['continent'],
|
||||||
|
'continentCode' => $json['continentCode']
|
||||||
|
];
|
||||||
|
CACHE('bb_ip2countries')->set($cacheName, $data, 1200);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -366,7 +366,7 @@ foreach ($profile_fields as $field => $can_edit) {
|
||||||
'user_callseed' => $reg_mode ? true : true,
|
'user_callseed' => $reg_mode ? true : true,
|
||||||
'user_retracker' => $reg_mode ? true : true,
|
'user_retracker' => $reg_mode ? true : true,
|
||||||
'user_hide_torrent_client' => $reg_mode ? true : true,
|
'user_hide_torrent_client' => $reg_mode ? true : true,
|
||||||
'user_hide_peer_country' => $reg_mode ? true : true,
|
'user_hide_peer_country' => $reg_mode ? true : $bb_cfg['ip2country_settings']['enabled'],
|
||||||
];
|
];
|
||||||
|
|
||||||
foreach ($update_user_opt as $opt => $can_change_opt) {
|
foreach ($update_user_opt as $opt => $can_change_opt) {
|
||||||
|
|
|
@ -326,6 +326,7 @@
|
||||||
<label><input type="radio" name="user_hide_torrent_client" value="0" <!-- IF not USER_HIDE_TORRENT_CLIENT -->checked<!-- ENDIF --> />{L_NO}</label>
|
<label><input type="radio" name="user_hide_torrent_client" value="0" <!-- IF not USER_HIDE_TORRENT_CLIENT -->checked<!-- ENDIF --> />{L_NO}</label>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<!-- IF $bb_cfg['ip2country_settings']['enabled'] -->
|
||||||
<tr>
|
<tr>
|
||||||
<td class="prof-title">{L_HIDE_PEER_COUNTRY_NAME}:</td>
|
<td class="prof-title">{L_HIDE_PEER_COUNTRY_NAME}:</td>
|
||||||
<td>
|
<td>
|
||||||
|
@ -333,6 +334,7 @@
|
||||||
<label><input type="radio" name="user_hide_peer_country" value="0" <!-- IF not USER_HIDE_PEER_COUNTRY -->checked<!-- ENDIF --> />{L_NO}</label>
|
<label><input type="radio" name="user_hide_peer_country" value="0" <!-- IF not USER_HIDE_PEER_COUNTRY -->checked<!-- ENDIF --> />{L_NO}</label>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<!-- ENDIF -->
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="2">{L_AVATAR_PANEL}</th>
|
<th colspan="2">{L_AVATAR_PANEL}</th>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
@ -155,7 +155,7 @@ ajax.callback.callseed = function (data) {
|
||||||
<th class="{sorter: 'digit'}"><b class="tbs-text">{L_DL_PORT}</b><img width="75" class="spacer" src="{SPACER}" alt="" /></th>
|
<th class="{sorter: 'digit'}"><b class="tbs-text">{L_DL_PORT}</b><img width="75" class="spacer" src="{SPACER}" alt="" /></th>
|
||||||
<!-- END porthead -->
|
<!-- END porthead -->
|
||||||
<th class="{sorter: false}"><b class="tbs-text">{L_DL_CLIENT}</b><img width="75" class="spacer" src="{SPACER}" alt="" /></th>
|
<th class="{sorter: false}"><b class="tbs-text">{L_DL_CLIENT}</b><img width="75" class="spacer" src="{SPACER}" alt="" /></th>
|
||||||
<th class="{sorter: false}"><b class="tbs-text">{L_COUNTRY}</b><img width="75" class="spacer" src="{SPACER}" alt="" /></th>
|
<!-- IF $bb_cfg['ip2country_settings']['enabled'] --><th class="{sorter: false}"><b class="tbs-text">{L_COUNTRY}</b><img width="75" class="spacer" src="{SPACER}" alt="" /></th><!-- ENDIF -->
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<!-- BEGIN srow -->
|
<!-- BEGIN srow -->
|
||||||
|
@ -173,7 +173,7 @@ ajax.callback.callseed = function (data) {
|
||||||
<td>{sfull.srow.port.PORT}</td>
|
<td>{sfull.srow.port.PORT}</td>
|
||||||
<!-- END port -->
|
<!-- END port -->
|
||||||
<td>{sfull.srow.PEER_ID}</td>
|
<td>{sfull.srow.PEER_ID}</td>
|
||||||
<td>{sfull.srow.COUNTRY}</td>
|
<!-- IF $bb_cfg['ip2country_settings']['enabled'] --><td>{sfull.srow.COUNTRY}</td><!-- ENDIF -->
|
||||||
</tr>
|
</tr>
|
||||||
<!-- END srow -->
|
<!-- END srow -->
|
||||||
</table>
|
</table>
|
||||||
|
@ -208,7 +208,7 @@ ajax.callback.callseed = function (data) {
|
||||||
<th class="{sorter: 'digit'}"><b class="tbs-text">{L_DL_PORT}</b><img width="75" class="spacer" src="{SPACER}" alt="" /></th>
|
<th class="{sorter: 'digit'}"><b class="tbs-text">{L_DL_PORT}</b><img width="75" class="spacer" src="{SPACER}" alt="" /></th>
|
||||||
<!-- END porthead -->
|
<!-- END porthead -->
|
||||||
<th class="{sorter: false}"><b class="tbs-text">{L_DL_CLIENT}</b><img width="75" class="spacer" src="{SPACER}" alt="" /></th>
|
<th class="{sorter: false}"><b class="tbs-text">{L_DL_CLIENT}</b><img width="75" class="spacer" src="{SPACER}" alt="" /></th>
|
||||||
<th class="{sorter: false}"><b class="tbs-text">{L_COUNTRY}</b><img width="75" class="spacer" src="{SPACER}" alt="" /></th>
|
<!-- IF $bb_cfg['ip2country_settings']['enabled'] --><th class="{sorter: false}"><b class="tbs-text">{L_COUNTRY}</b><img width="75" class="spacer" src="{SPACER}" alt="" /></th><!-- ENDIF -->
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<!-- BEGIN lrow -->
|
<!-- BEGIN lrow -->
|
||||||
|
@ -226,7 +226,7 @@ ajax.callback.callseed = function (data) {
|
||||||
<td>{lfull.lrow.port.PORT}</td>
|
<td>{lfull.lrow.port.PORT}</td>
|
||||||
<!-- END port -->
|
<!-- END port -->
|
||||||
<td>{lfull.lrow.PEER_ID}</td>
|
<td>{lfull.lrow.PEER_ID}</td>
|
||||||
<td>{lfull.lrow.COUNTRY}</td>
|
<!-- IF $bb_cfg['ip2country_settings']['enabled'] --><td>{lfull.lrow.COUNTRY}</td><!-- ENDIF -->
|
||||||
</tr>
|
</tr>
|
||||||
<!-- END lrow -->
|
<!-- END lrow -->
|
||||||
</table>
|
</table>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue