Le site des utilisateurs francophones de FluxBB.
Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
J'ai récemment passé l'un de mes forums en HTTPS.
Le problème, c'est que les avatars n'apparaissent plus.
En regardant de plus près, les liens générés sont de ce genre :
http://forum.hyze.fr/img/avatars/559.jpg?m=1373665684
Donc pas en https, ce qui est l'origine du problème puisque le même lien avec https fonctionne.
Donc la fonction get_base_url ne renvoie pas le bon lien.
Savez vous pourquoi, et comment réparer cela ?
Fluxbb est encore en 1.5.7 sur ce forum.
Merci d'avance.
Hors ligne
Yop,
Supprime le fichier :
./cache/cache_users_info.phppour le regénérer, il doit avoir les anciennes adresses en dur en mémoire.
:canon: Mangafan : Mettez un chat dans votre processeur ! 
Hors ligne
J'ai commencé par vider le cache lors de mes tentative de refaire fonctionner les avatars, donc malheureusement, cela ne vient pas de là.
Dernière modification par bagu (01-05-2015 00:23:02)
Hors ligne
Pardon. De toute façon je me suis trompé, je croyais que l'url de l'image était en cache mais c'est juste un array pour la page viewtopic.php qui m'a troublé.
Dans generate_avatar_markup() il y a pourtant get_base_url(true) et si c'est true logiquement ça roule pour https comme partout ailleurs où l'adresse est généré ainsi et si ça ne prenait pas en compte l'https ça le fait aussi pour les autres liens.
Qu'est-ce que retourne la fonction get_current_protocol() fait un debug maison sur ton serveur si il renvoi http au lieu d'https, la fonction au lieu de passer l'url en https la repasse en http.
echo "<!--".get_current_protocol()."-->\n\r";
echo "<!--".get_base_url()."-->\n\r";
echo "<!--".get_base_url(true)."-->\n\r";c'est trivial mais si ça te renvoie http au lieu d'https, c'est qu'il y a un truc qui cloche.
Apparemment ton feed aussi à la même problème dans le fichier extern.php.
https://forum.hyze.fr/extern.php?action … 2&type=rss
function get_base_url($support_https = false)
{
global $pun_config;
static $base_url;
if (!$support_https)
return $pun_config['o_base_url'];
if (!isset($base_url))
{
// Make sure we are using the correct protocol
$base_url = str_replace(array('http://', 'https://'), get_current_protocol().'://', $pun_config['o_base_url']);
}
return $base_url;
}
Elle n'a pas un truc bizarre la fonction par défaut des fois ou c'est la fatigue qui me fait penser que ce n'est pas prêt de marcher... Comment ça peut arriver ça :
Ou alors il faut enlever le https dans le config et laisser le script l'ajouter quand il y en a besoin mais cette façon de faire me perturbe un peu et la fonction n'est pas assez explicite.
:canon: Mangafan : Mettez un chat dans votre processeur ! 
Hors ligne
Je vais voir à faire le debug un peu plus tard aujourd'hui...
Par contre, le flux fonctionne bien lui, je récupère bien tout sur le blog associé http://blog.hyze.fr
Hors ligne
Je pense que par sécurité le navigateur empêche la redirection automatique de l'image quand il est en mode sécurisé, d'où la boucle infinie. Alors que si c'est la page elle même, il veut bien la recharger de http vers https, c'est apache qui doit gérer ça. Mais pas pour un élément dans la page qui est elle même déjà en ssl.
Donc à mon avis pour faire marcher un forum fluxbb correctement en https, il ne faut surtout pas mettre https dans l'url de la partie admin et laisser le serveur prendre le pas, c'est ce que le code semble suggérer.
:canon: Mangafan : Mettez un chat dans votre processeur ! 
Hors ligne
Pas sûr, car en mettant http en partie admin, et en vidant le cache, les avatars ne s'affichent toujours pas...J'ai aussi vidé le cache cloudflare.
Dernière modification par bagu (01-05-2015 22:12:03)
Hors ligne
Dans ce cas, c'est get_current_protocol() qui ne marche pas correctement. Regarde tes logs d'erreurs des fois que t'es une fonction deprecated ou une blague du genre. Après avoir bien regarder le code de get_current_protocol(), je dirais que tu as une variable serveur vide et que par défaut il place le contenu en http. Soit tu règles apache et php pour que cette variable soit renseignée cequi serait le mieux à mon avis. Soit tu triches.
function get_current_protocol()
{
//$protocol = 'http';
$protocol = 'https';
// Check if the server is claiming to using HTTPS
if (!empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) != 'off')
$protocol = 'https';
// If we are behind a reverse proxy try to decide which protocol it is using
if (defined('FORUM_BEHIND_REVERSE_PROXY'))
{
// Check if we are behind a Microsoft based reverse proxy
if (!empty($_SERVER['HTTP_FRONT_END_HTTPS']) && strtolower($_SERVER['HTTP_FRONT_END_HTTPS']) != 'off')
$protocol = 'https';
// Check if we're behind a "proper" reverse proxy, and what protocol it's using
if (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']))
$protocol = strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']);
}
return $protocol;
}Mais il faudra t'en rappeler.pour les prochaines majs, d'où l'idée qu'il serait préférable que la fonction marche comme prévu.
:canon: Mangafan : Mettez un chat dans votre processeur ! 
Hors ligne
ok, $_SERVER['HTTPS'] est vide.
Probablement parce que je passe par cloudfare.
En fait, ce qui me passe en https, c'est ceci dans apache :
RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"'
RewriteRule ^(.*) https://forum.hyze.fr$1 [L]Hors ligne
Salut,
J'ai fait un truc assez crade sur mon forum, mais ça tourne:
//
// Outputs markup to display a user's avatar
//
function generate_avatar_markup($user_id)
{
global $pun_config;
$filetypes = array('jpg', 'gif', 'png');
$avatar_markup = '';
foreach ($filetypes as $cur_type)
{
$path_real = $pun_config['o_avatars_dir'].'/'.$user_id.'.'.$cur_type;
$path = 'https://tonforum.fr/img/avatars/'.$user_id.'.'.$cur_type;
if (file_exists(PUN_ROOT.$path_real) && $img_size = getimagesize(PUN_ROOT.$path_real))
{
$avatar_markup = '<img src="'.$path.'?m='.filemtime(PUN_ROOT.$path_real).'" '.$img_size[3].' alt="" />';
break;
}
}
return $avatar_markup;
}Ça suffira si tu ne changes pas ton domaine tous les quatre matins.
Hors ligne
Ok, c'est bien cloudflare qui ne permet pas de renseigner la variable HTTPS...
J'ai donc modifié la fonction comme suit :
//
// Fetch the current protocol in use - http or https
//
function get_current_protocol()
{
$protocol = 'http';
// Check if the server is claiming to using HTTPS
if (!empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) != 'off')
$protocol = 'https';
if (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https')
$protocol = 'https';
// If we are behind a reverse proxy try to decide which protocol it is using
if (defined('FORUM_BEHIND_REVERSE_PROXY'))
{
// Check if we are behind a Microsoft based reverse proxy
if (!empty($_SERVER['HTTP_FRONT_END_HTTPS']) && strtolower($_SERVER['HTTP_FRONT_END_HTTPS']) != 'off')
$protocol = 'https';
// Check if we're behind a "proper" reverse proxy, and what protocol it's using
if (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']))
$protocol = strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']);
}
return $protocol;
}Ça a l'avantage de conserver l'aspect "détection automatique" de la présence https, qu'il y ai clouflare ou pas.
Dernière modification par bagu (01-05-2015 22:40:54)
Hors ligne
Je ne connais pas l’implantation de cloudflare. Après oui, ça doit certainement bloquer mais du coup le ssl avec cloudflare c'est très cosmétique, juste pour le SEO.
Client <- SSL -> Cloudfare <- NO SLL -> Site. C'est ça ?
Je ne comprends même pas qu'un simple hack via rewrite fasse croire au navigateur que la liaison est sécurisé.
C'est sécurisé jusqu'à l'intermédiaire. A côté de ça un certificat fait maison qui chiffre vraiment la connexion du client jusqu'au serveur, il couine parce que tu ne payes pas la taxe pour le faire signer...
Cela dit ça explique pourquoi il y avait un micmac de redirection. Et il n'a toujours pas disparu chez moi. Quand la limite est atteinte parfois des images n'apparaissent pas parce qu'elle semblent absentes et la redirection boucle à l'infini au lieu de faire suivre l'erreur ce qui crash le reste du chargement.
Mixed Content: The page at 'https://forum.hyze.fr/viewtopic.php?id=2205' was loaded over HTTPS, but requested an insecure image 'http://forum.hyze.fr/img/members/9/5f0a … ee319.jpeg'. This content should also be served over HTTPS.
viewtopic.php:219 Mixed Content: The page at 'https://forum.hyze.fr/viewtopic.php?id=2205' was loaded over HTTPS, but requested an insecure image 'http://www.dofusbook.net/38629-Ezechiiel.png'. This content should also be served over HTTPS.
2viewtopic.php:250 Mixed Content: The page at 'https://forum.hyze.fr/viewtopic.php?id=2205' was loaded over HTTPS, but requested an insecure image 'http://img33.imageshack.us/img33/5818/coeur002.gif'. This content should also be served over HTTPS.
viewtopic.php:250 Mixed Content: The page at 'https://forum.hyze.fr/viewtopic.php?id=2205' was loaded over HTTPS, but requested an insecure image 'http://img94.imageshack.us/img94/3671/0005e.gif'. This content should also be served over HTTPS.
viewtopic.php:156 GET https://forum.hyze.fr/img/members/9/5f0 … ee319.jpeg net::ERR_TOO_MANY_REDIRECTS
Le vrai problème vient peut être aussi de la redirection ou d'une autre règle du .htaccess.
:canon: Mangafan : Mettez un chat dans votre processeur ! 
Hors ligne
Pages : 1