Debug: Tentative d'activation d'un échange Genebank.

"; // paramètres statiques (peuvent être inclus à partir d'un include séparé, comme dans: // include('localGbkParams.inc'); if ($_SERVER['REMOTE_ADDR']=="127.0.0.1") { $connection = mysql_connect('localhost','root'); $myUrl = 'http://127.0.0.1/B005/affichageGbk.php'; $gbkUrl = 'http://www.geneabank.org/cgi-bin/transaction'; } else { $connection = mysql_connect('localhost','sfroc','36mp8yan'); $myUrl = 'http://cgiv35.org/v2/affichageGbk.php'; $gbkUrl = 'http://www.geneabank.org/cgi-bin/transaction'; } /* Séquence paranoïde : * Je range dans le contexte de session l'Id de la session elle-même. * Ce bidouillou apporte une redondance qui servira à me conforter * dans l'idée que la demande d'affichage en retour provient bien de Gbk */ $session = session_id(); $_SESSION['Gbk_Sid'] = $session; // Cette auto référence est vraiment de la paranoïa... M'enfin /* Je sauve dans l'environnement de session tout ce qui pourra * me servir à vérifier le jeton et afficher l'acte en retour */ $_SESSION['Gbk_Amount'] = $amount; $_SESSION['Gbk_Str'] = $str2Display; /* Je calcule une clé qui est différente du (seul) sid pour éviter de rejouer une requête * qui aurait seulement le même nombre de points */ $key = $session . md5($session.$str2Display); $nbPoints=$amount; if ($nbPoints > 1) { $pluriel ='s'; } else { $pluriel =''; } echo << EOT; } // fin de fonction Geneabank function GeneaBank2 ($amount, $assoc, $str2Display) { //echo "

Debug: Tentative d'activation d'un échange Genebank.

"; // paramètres statiques (peuvent être inclus à partir d'un include séparé, comme dans: // include('localGbkParams.inc'); if ($_SERVER['REMOTE_ADDR']=="127.0.0.1") { $connection = mysql_connect('localhost','root'); $myUrl = 'http://127.0.0.1/B005/affichageGbk.php'; $gbkUrl = 'http://www.geneabank.org/cgi-bin/transaction'; } else { $connection = mysql_connect('localhost','cgiv35','iv352001'); $myUrl = 'http://cgiv35.org/v2/affichageGbk.php'; $gbkUrl = 'http://www.geneabank.org/cgi-bin/transaction'; } /* Séquence paranoïde : * Je range dans le contexte de session l'Id de la session elle-même. * Ce bidouillou apporte une redondance qui servira à me conforter * dans l'idée que la demande d'affichage en retour provient bien de Gbk */ $session = session_id(); $_SESSION['Gbk_Sid'] = $session; // Cette auto référence est vraiment de la paranoïa... M'enfin /* Je sauve dans l'environnement de session tout ce qui pourra * me servir à vérifier le jeton et afficher l'acte en retour */ $_SESSION['Gbk_Amount'] = $amount; $_SESSION['Gbk_Str'] = $str2Display; /* Je calcule une clé qui est différente du (seul) sid pour éviter de rejouer une requête * qui aurait seulement le même nombre de points */ $key = $session . md5($session.substr($str2Display,1)); $nbPoints=$amount; if ($nbPoints > 1) { $pluriel ='s'; } else { $pluriel =''; } echo << EOT; } // fin de fonction GeneaBank2 function verifJetonGBK() { /* * On a besoin de connaître les mots de passe des associations reconnues * Ceci peut être fait dans un fichier séparé comme * include('localGbkParams.inc'); * Le principe est d'initialiser une liste des mots de passe des associations * reconnues dans un tableau GbkPwd: */ $GbkPwd['cgiv35']='renat56'; $GbkPwd['association2']='motDePasse2'; /* ... */ // On tente d'abord de récupérer la session à l'origine de cette demande if (isset($_GET['key'])) { $key = $_GET['key']; $l = strlen($key); //echo "

Debug Longueur de clé = $l

"; $inpSession=substr($key, 0, $l - 32); // Le MD5 doit occuper 32 caractères $session = session_id(); //echo "

Debug session = $session

"; //session_id($session); En principe, ceci a déjà été fait if (isset($_SESSION['Gbk_Sid'])) { $sessKid = $_SESSION['Gbk_Sid']; if ( ($session != $inpSession) ) { echo "

Erreur d'identification de session"; echo "
session = $session"; echo "
sessKid = $sessKid"; echo '
inpSession = ' . htmlspecialchars($inpSession); echo "

"; $_SESSION['Gbk_Sid']=''; // Tuer ce code pour éviter tout vol de session return false; } } else { echo "

Erreur d'initialisation de session"; /* Code parano Debug only * echo "
session = $session"; echo "
sessKid = $sessKid"; echo '
inpSession = ' . htmlspecialchars($inpSession); * Fin de code Debug */ echo "

"; return false; } } else { echo "

Erreur: Clé manquante en retour

"; $_SESSION['Gbk_Sid']=''; // Tuer ce code pour éviter tout vol de session return false; } /* ATTENTION: l'instruction suivante est peut-être gênante, * Dans la mesure où elle va interdire un réaffichage de la même * page par le bouton "actualiser" du navigateur. * Il pourrait être judicieux de la *supprimer* (elle n'est pas fondamentale) */ //$_SESSION['Gbk_Sid']=''; // Tuer ce code, maintenant inutile, pour éviter tout vol de session if (isset($_SESSION['Gbk_Str'])) { $str = $_SESSION['Gbk_Str']; //echo $str; } else { echo "

Erreur d'initialisation (chaîne) de session

"; return false; } $expected_key = $session . md5($session.$str); //echo "

Debug:"; //echo "
str=$str"; //echo "
key=$key"; //echo "
expd=$expected_key"; if ($key == $expected_key) { echo '
Good:'; } echo '

'; if ($key != $expected_key) { echo "

Erreur de validation de cle de session.

"; return false; } /* On va récupérer ici les AUTRES paramètres de la requête, * Puis on vérifiera la signature du jeton, basée sur ces params */ if (isset($_GET['auth'])) { $auth = $_GET['auth']; // On n'arrive ici qu'après avoir vérifié que l'item était défini } else { echo "

Erreur: non respect du protocole GeneBank (absence jeton)

"; return false; } if (isset($_GET['ref'])) { $ref = $_GET['ref']; //echo '

Debug: ref = ' . htmlspecialchars($ref) . '

'; } else { echo "

Erreur: non respect du protocole GeneBank (absence référence)

"; return false; } if (isset($_GET['amount'])) { $amount=$_GET['amount']; //echo "

Debug amount = $amount

"; if ($amount != $_SESSION['Gbk_Amount']) { echo '

Erreur: Le nb de points accordés ' . htmlspecialchars($amount) . "n'est pas celui demandé

"; return false; } } else { echo "

Erreur: Nb de points accordés manquant.

"; return false; } if (isset($_GET['to'])) { $to=$_GET['to']; //echo "

Debug to = $to

"; if (!isset ($GbkPwd[$to])) { echo '

Erreur: ' . htmlspecialchars($to) . " = Id inconnu pour l'association

"; return false; } } else { echo "

Erreur: Id association manquant.

"; return false; } $passAsso=$GbkPwd[$to]; $expected_auth = md5("$amount $to $key $ref $passAsso"); /* * echo "

Debug:"; echo "
auth=$auth"; echo "
expd=$expected_auth"; if ($auth == $expected_auth) { echo '
Good:'; } echo '

'; * */ //echo $str; if ($auth == $expected_auth) { return $str; } else { echo "

Erreur: l'autorisation d'affichage par Généabank est invalide.

"; return false; } } // Fin de function verifJetonGBK function verifJetonGBK2() { /* * On a besoin de connaître les mots de passe des associations reconnues * Ceci peut être fait dans un fichier séparé comme * include('localGbkParams.inc'); * Le principe est d'initialiser une liste des mots de passe des associations * reconnues dans un tableau GbkPwd: */ $GbkPwd['cgiv35']='renat56'; $GbkPwd['association2']='motDePasse2'; /* ... */ // On tente d'abord de récupérer la session à l'origine de cette demande if (isset($_GET['key'])) { $key = $_GET['key']; $l = strlen($key); //echo "

Debug Longueur de clé = $l

"; $inpSession=substr($key, 0, $l - 32); // Le MD5 doit occuper 32 caractères $session = session_id(); //echo "

Debug session = $session

"; //session_id($session); En principe, ceci a déjà été fait if (isset($_SESSION['Gbk_Sid'])) { $sessKid = $_SESSION['Gbk_Sid']; if ( ($session != $sessKid) || ($session != $inpSession) ) { echo "

Erreur d'identification de session"; /* Code parano Debug only * echo "
session = $session"; echo "
sessKid = $sessKid"; echo '
inpSession = ' . htmlspecialchars($inpSession); * Fin de code Debug */ echo "

"; $_SESSION['Gbk_Sid']=''; // Tuer ce code pour éviter tout vol de session return false; } } else { echo "

Erreur d'initialisation de session"; /* Code parano Debug only * echo "
session = $session"; echo "
sessKid = $sessKid"; echo '
inpSession = ' . htmlspecialchars($inpSession); * Fin de code Debug */ echo "

"; return false; } } else { echo "

Erreur: Clé manquante en retour

"; $_SESSION['Gbk_Sid']=''; // Tuer ce code pour éviter tout vol de session return false; } /* ATTENTION: l'instruction suivante est peut-être gênante, * Dans la mesure où elle va interdire un réaffichage de la même * page par le bouton "actualiser" du navigateur. * Il pourrait être judicieux de la *supprimer* (elle n'est pas fondamentale) */ //$_SESSION['Gbk_Sid']=''; // Tuer ce code, maintenant inutile, pour éviter tout vol de session if (isset($_SESSION['Gbk_Str'])) { $str = $_SESSION['Gbk_Str']; //echo $str; } else { echo "

Erreur d'initialisation (chaîne) de session

"; return false; } $expected_key = $session . md5($session.substr($str,1)); /* * echo "

Debug:"; echo "
key=$key"; echo "
expd=$expected_key"; if ($key == $expected_key) { echo '
Good:'; } echo '

'; * */ if ($key != $expected_key) { echo "

Erreur de validation de cle de session.

"; return false; } /* On va récupérer ici les AUTRES paramètres de la requête, * Puis on vérifiera la signature du jeton, basée sur ces params */ if (isset($_GET['auth'])) { $auth = $_GET['auth']; // On n'arrive ici qu'après avoir vérifié que l'item était défini } else { echo "

Erreur: non respect du protocole GeneBank (absence jeton)

"; return false; } if (isset($_GET['ref'])) { $ref = $_GET['ref']; //echo '

Debug: ref = ' . htmlspecialchars($ref) . '

'; } else { echo "

Erreur: non respect du protocole GeneBank (absence référence)

"; return false; } if (isset($_GET['amount'])) { $amount=$_GET['amount']; //echo "

Debug amount = $amount

"; if ($amount != $_SESSION['Gbk_Amount']) { echo '

Erreur: Le nb de points accordés ' . htmlspecialchars($amount) . "n'est pas celui demandé

"; return false; } } else { echo "

Erreur: Nb de points accordés manquant.

"; return false; } if (isset($_GET['to'])) { $to=$_GET['to']; //echo "

Debug to = $to

"; if (!isset ($GbkPwd[$to])) { echo '

Erreur: ' . htmlspecialchars($to) . " = Id inconnu pour l'association

"; return false; } } else { echo "

Erreur: Id association manquant.

"; return false; } $passAsso=$GbkPwd[$to]; $expected_auth = md5("$amount $to $key $ref $passAsso"); /* * echo "

Debug:"; echo "
auth=$auth"; echo "
expd=$expected_auth"; if ($auth == $expected_auth) { echo '
Good:'; } echo '

'; * */ //echo $str; if ($auth == $expected_auth) { return $str; } else { echo "

Erreur: l'autorisation d'affichage par Généabank est invalide.

"; return false; } } // Fin de function verifJetonGBK2 ?>