Auteur Sujet: [tentative ratée] Comment rendre IPv6 compatible un SMF 2.0+  (Lu 8799 fois)

0 Membres et 1 Invité sur ce sujet

turold

  • Profil non complété
  • ******
  • Messages: 1 687
  • mp fermée (sauf admin et exceptions temporaires)
Comment rendre IPv6 compatible un SMF 2.0+
« Réponse #24 le: 02 janvier 2016 à 17:32:52 »
Non ce sont des fonctions qui sont utilisés juste pour faire des vérifications, dans la db le code écrit les adresses sous leur forme abrégée.
Ah ok.
Ben c'est juste pour simplifier le code des vérifications alors.
Après, je ne sais pas ce qui est le mieux pour optimiser les performances des vérifications.

corrector

  • Invité
Comment rendre IPv6 compatible un SMF 2.0+
« Réponse #25 le: 02 janvier 2016 à 18:21:10 »
SMF 2.0 n'est pas entièrement compatibles IPv6, c'est assumé, la première version compatible IPv6 est la 2.1, en cours de dev.

Comme expliqué par turold, les log, les stats et le ban sont impactés.
Bref tous les modules qui gèrent les adresses!

J'ai du mal à comprendre comment un CMS arrive à gérer aussi mal les IP.

Il suffit simplement de regarder l'IP dans $_SERVER['REMOTE_ADDR'], augmenter la longueur du champ qui va bien dans MySQL et boom.
Les adresses IP ne sont pas juste stockées dans la table des messages.

Tu as aussi des opérations arithmétiques sur les adresses afin d'appliquer les bans.

corrector

  • Invité
Les adresses rfc1918 traitées comme non valides
« Réponse #26 le: 02 janvier 2016 à 18:39:18 »
Je sais pas pourquoi mais dans le code les devs traitent les adresses rfc1918 comme non valides.
Puisque l'adresse sert à attribuer la responsabilité les messages postés en cas de problème, éventuellement à faire des bans ou même à communiquer aux autorités en cas de plainte, il vaut mieux que l'adresse corresponde à quelque chose de bien défini et non un numéro dont le sens dépend du réseau local!

corrector

  • Invité
Comment rendre IPv6 compatible un SMF 2.0+
« Réponse #27 le: 26 janvier 2016 à 22:13:53 »
D'après nos retours, celui de Vivien, et de ce que j'en ai lu ailleurs, dans l'ordre des sources:
- Notre IPv6 ne s'affiche pas dans nos messages. C'est vide, aucune IP.
- Tous les invités IPv6 sont comptés comme un seul, car pas d'IP d'après SMF, donc pas possible de compter le nombre d'IPv6 différentes. Logique. Au revoir les nouveaux records de connexion en attendant la compatibilité IPv6 de SMF.
- Et en bonus, pour les admins qui adorent faire des ban IP: pas possible de ban IP quelqu'un en IPv6. Logique aussi.
En bonus : la limite du nombre de messages postés en rafale est atteinte facilement.
« Modifié: 30 octobre 2016 à 02:59:10 par corrector »

vivien

  • Administrateur
  • *
  • Messages: 47 294
    • Twitter LaFibre.info
Comment rendre IPv6 compatible un SMF 2.0+
« Réponse #28 le: 27 janvier 2016 à 02:35:25 »
En bonus : la limite du nombre de passage posté en rafale est atteinte facilement.

Tu as été confronté a une limite en terme de MP postés ou de messages publics sur le site ?

corrector

  • Invité
[tentative ratée] Comment rendre IPv6 compatible un SMF 2.0+
« Réponse #29 le: 27 janvier 2016 à 02:46:17 »
Sur le forum, j'ai atteint la limite de messages "par personne" postés en rafale : "ma personne" doit être "0.0.0.0"
« Modifié: 30 octobre 2016 à 02:59:28 par corrector »

vivien

  • Administrateur
  • *
  • Messages: 47 294
    • Twitter LaFibre.info
[tentative ratée] Comment rendre IPv6 compatible un SMF 2.0+
« Réponse #30 le: 27 janvier 2016 à 10:02:52 »
Je ne vois dans les paramètres que des limites pour les messages privés :

- Nombre maximal autorisé de destinataires dans un message personnel : 10
- Nombre de messages de forum en dessous duquel les utilisateurs doivent entrer un code lorsqu'ils envoient des messages personnels : pas de limite
- Nombre de messages personnels qu'un utilisateur peut envoyer en une heure : 10
- Nombre de messages de forum en dessous duquel les utilisateurs doivent entrer un code pour poster un message : pas de limite

buddy

  • Expert
  • Abonné Free fibre
  • *
  • Messages: 15 239
  • Alpes Maritimes (06)
[tentative ratée] Comment rendre IPv6 compatible un SMF 2.0+
« Réponse #31 le: 27 janvier 2016 à 10:33:46 »
Il n'y a pas une option délai minimal en secondes entre 2 messages postés ?

corrector

  • Invité
[tentative ratée] Comment rendre IPv6 compatible un SMF 2.0+
« Réponse #32 le: 27 janvier 2016 à 22:35:52 »

// Modify all settings related to posts and posting.
function ModifyPostSettings($return_config = false)
{
global $context, $txt, $modSettings, $scripturl, $sourcedir, $smcFunc, $db_prefix;

// All the settings...
$config_vars = array(
// Simple post options...
array('check', 'removeNestedQuotes'),
array('check', 'enableEmbeddedFlash', 'subtext' => $txt['enableEmbeddedFlash_warning']),
// Note show the warning as read if pspell not installed!
array('check', 'enableSpellChecking', 'subtext' => (function_exists('pspell_new') ? $txt['enableSpellChecking_warning'] : ('<span class="alert">' . $txt['enableSpellChecking_warning'] . '</span>'))),
array('check', 'disable_wysiwyg'),
'',
// Posting limits...
array('int', 'max_messageLength', 'subtext' => $txt['max_messageLength_zero'], 'postinput' => $txt['manageposts_characters']),
array('int', 'fixLongWords', 'subtext' => $txt['fixLongWords_zero'] . ($context['utf8'] ? ' <span class="alert">' . $txt['fixLongWords_warning'] . '</span>' : ''), 'postinput' => $txt['manageposts_characters']),
array('int', 'topicSummaryPosts', 'postinput' => $txt['manageposts_posts']),
'',
// Posting time limits...
array('int', 'spamWaitTime', 'postinput' => $txt['manageposts_seconds']),
array('int', 'edit_wait_time', 'postinput' => $txt['manageposts_seconds']),
array('int', 'edit_disable_time', 'subtext' => $txt['edit_disable_time_zero'], 'postinput' => $txt['manageposts_minutes']),
);
ManagePosts.php
« Modifié: 27 janvier 2016 à 22:56:09 par corrector »

corrector

  • Invité
[tentative ratée] Comment rendre IPv6 compatible un SMF 2.0+
« Réponse #33 le: 27 janvier 2016 à 22:46:07 »
$txt['spamWaitTime'] = 'Time required between posts from the same IP';

Citer
If you have a busy forum and you are on dialup or DSL where your IP can change, or multiple people from the same internet connection are posting to the board at the same time, you will experience this.

You can disable the time between posting in Admin > Posts and Topics > Time required between posts from the same IP
http://www.simplemachines.org/community/index.php?topic=301521.msg1993379#msg1993379

corrector

  • Invité
[tentative ratée] Comment rendre IPv6 compatible un SMF 2.0+
« Réponse #34 le: 27 janvier 2016 à 22:53:43 »
Subs.php


// Make sure the user isn't posting over and over again.
function spamProtection($error_type)
{
global $modSettings, $txt, $user_info, $smcFunc;

// Certain types take less/more time.
$timeOverrides = array(
'login' => 2,
'register' => 2,
'sendtopc' => $modSettings['spamWaitTime'] * 4,
'sendmail' => $modSettings['spamWaitTime'] * 5,
'reporttm' => $modSettings['spamWaitTime'] * 4,
'search' => !empty($modSettings['search_floodcontrol_time']) ? $modSettings['search_floodcontrol_time'] : 1,
);

// Moderators are free...
if (!allowedTo('moderate_board'))
$timeLimit = isset($timeOverrides[$error_type]) ? $timeOverrides[$error_type] : $modSettings['spamWaitTime'];
else
$timeLimit = 2;

// Delete old entries...
$smcFunc['db_query']('', '
DELETE FROM {db_prefix}log_floodcontrol
WHERE log_time < {int:log_time}
AND log_type = {string:log_type}',
array(
'log_time' => time() - $timeLimit,
'log_type' => $error_type,
)
);

// Add a new entry, deleting the old if necessary.
$smcFunc['db_insert']('replace',
'{db_prefix}log_floodcontrol',
array('ip' => 'string-16', 'log_time' => 'int', 'log_type' => 'string'),
array($user_info['ip'], time(), $error_type),
array('ip', 'log_type')
);

// If affected is 0 or 2, it was there already.
if ($smcFunc['db_affected_rows']() != 1)
{
// Spammer!  You only have to wait a *few* seconds!
fatal_lang_error($error_type . 'WaitTime_broken', false, array($timeLimit));
return true;
}

// They haven't posted within the limit.
return false;
}

corrector

  • Invité
[tentative ratée] Comment rendre IPv6 compatible un SMF 2.0+
« Réponse #35 le: 27 janvier 2016 à 23:08:46 »
Code: (php) [Sélectionner]
// Check both IP addresses.
foreach (array('ip', 'ip2') as $ip_number)
{
// Check if we have a valid IP address.
if (preg_match('/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/', $user_info[$ip_number], $ip_parts) == 1)
{
$ban_query[] = '((' . $ip_parts[1] . ' BETWEEN bi.ip_low1 AND bi.ip_high1)
AND (' . $ip_parts[2] . ' BETWEEN bi.ip_low2 AND bi.ip_high2)
AND (' . $ip_parts[3] . ' BETWEEN bi.ip_low3 AND bi.ip_high3)
AND (' . $ip_parts[4] . ' BETWEEN bi.ip_low4 AND bi.ip_high4))';

// IP was valid, maybe there's also a hostname...
if (empty($modSettings['disableHostnameLookup']))
{
$hostname = host_from_ip($user_info[$ip_number]);
if (strlen($hostname) > 0)
{
$ban_query[] = '({string:hostname} LIKE bi.hostname)';
$ban_query_vars['hostname'] = $hostname;
}
}
}
// We use '255.255.255.255' for 'unknown' since it's not valid anyway.
elseif ($user_info['ip'] == 'unknown')
$ban_query[] = '(bi.ip_low1 = 255 AND bi.ip_high1 = 255
AND bi.ip_low2 = 255 AND bi.ip_high2 = 255
AND bi.ip_low3 = 255 AND bi.ip_high3 = 255
AND bi.ip_low4 = 255 AND bi.ip_high4 = 255)';
}
Security.php