#!/usr/bin/php valideSiren($siren)) { kbisLog($siren, $piece, "IN : Siren $siren Invalide !"); } else { switch (strlen($siren)) { case 1: $siren='00000000'.$siren; break; case 2: $siren='0000000'.$siren; break; case 3: $siren='000000'.$siren; break; case 4: $siren='00000'.$siren; break; case 5: $siren='0000'.$siren; break; case 6: $siren='000'.$siren; break; case 7: $siren='00'.$siren; break; case 8: $siren='0'.$siren; break; } } if ($piece<>'kbis') { kbisLog($siren, $piece, "IN : Piece $piece inexistante !"); } // Ouverture de quelques fichiers pour lecture $fp = fopen("/tmp/$piece-$siren", 'w+'); fwrite($fp, "$siren;$piece;$type;$visu;$courrier;$ref"); rewind($fp); // Mise en place d'une connexion basique $conn_id = ftp_connect('192.168.3.4'); // Identification avec un nom d'utilisateur et un mot de passe $login_result = ftp_login($conn_id, 'kbis', 'kbis'); $tabListInit=ftp_nlist($conn_id, 'pdf/'); $nbList=count($tabListInit); $nbEssais=0; // Nombre de tentatives de récupération // Tente de charger le fichier $file if (!ftp_fput($conn_id, "in/$piece-$siren.txt", $fp, FTP_ASCII)) $erreur=true; fclose($fp); kbisLog($siren, $piece, "IN : Fichier déposé en commande sur le FTP"); while (true) { $nbEssais++; sleep($dureeInterval); $tabList=ftp_nlist($conn_id, 'pdf/'); if (count($tabList)>$nbList) { kbisLog($siren, $piece, "WAIT : Essai $nbEssais, des nouveaux fichiers sont disponibles sur le FTP !"); // On vérifie que le K-Bis récupéré est bien celui commandé !!! sleep($dureeInterval); // Laisse le temps au serveur de K-Bis de finir le fichier PDF !!! $tabNom=array_diff($tabList,$tabListInit); ftp_chdir($conn_id, 'pdf'); $ficDist=str_replace('pdf/', '', reset($tabNom)); if (!ftp_get($conn_id,"/tmp/$piece-$siren.pdf", $ficDist, FTP_BINARY)) { // Problème FTP --> STOP kbisLog($siren, $piece, "OUT : Problème FTP"); $erreur=true; die(); } shell_exec("/var/www/cgi-bin/pdftotext /tmp/$piece-$siren.pdf /tmp/$piece-$siren.txt"); $str=file_get_contents("/tmp/$piece-$siren.txt"); //if (preg_match("/((?:[0-9]{9,9})|(?:[0-9]{3,3} [0-9]{3,3} [0-9]{3,3})|(?:[0-9]{3,3}\.[0-9]{3,3}\.[0-9]{3,3})|(?:[0-9]{3,3}-[0-9]{3,3}-[0-9]{3,3}))/", $str, $matches)) { if (preg_match("/((?:\s[0-9]{9,9})|(?:\s[0-9]{3,3}\s[0-9]{3,3}\s[0-9]{3,3})|(?:\s[0-9]{3,3}\.[0-9]{3,3}\.[0-9]{3,3})|(?:\s[0-9]{3,3}-[0-9]{3,3}-[0-9]{3,3}))/U", $str, $matches)) { $sirenLu=trim(str_replace(' ','', $matches[1])); if ($sirenLu==$siren) { kbisLog($siren, $piece, "OUT : Le nouveau fichier est celui attendu ($sirenLu=$siren)"); copy("/tmp/$piece-$siren.pdf", DOC_WEB_LOCAL."pdf/$piece-$siren.pdf"); ftp_chdir($conn_id, '/html'); $tabListHtml=ftp_nlist($conn_id, $siren.'*'); foreach ($tabListHtml as $fichierHtml) { $ficDist2=str_replace('html/', '', $fichierHtml); $buff = ftp_mdtm($conn_id, $ficDist2); if ($buff!=-1 && date("Ymd", $buff)==date("Ymd")) { ftp_get($conn_id,"/tmp/$piece-$siren.html", $ficDist2, FTP_ASCII); $strKbis=file_get_contents("/tmp/$piece-$siren.html"); // Log provisoire $fp = fopen("/tmp/$piece-commande.log", 'a+'); fwrite($fp, date('Y/m/d H:i:s')." - $siren - Nb fichier HTML : ".count($tabListHtml).print_r($tabListHtml)); fclose($fp); /* if (preg_match('/IDENTIFICATION <\/B>(.*)RENSEIGNEMENTS RELATIFS A LA PERSONNE MORALE<\/B>/Uis', $strKbis, $matches)) { $htmlId=$matches[1]; if (preg_match('/Dénomination sociale \:<\/TD>(.*)<\/TD><\/TR>/Uis', $htmlId, $matches)) $rs=trim(strip_tags($matches[1])); if (preg_match('/Numéro RCS \:<\/TD>(.*)<\/TD><\/TR>/Uis', $htmlId, $matches)) $rcs=trim(strip_tags($matches[1])); //if (preg_match('/Date immatriculation \:<\/TD>(.*)<\/TD><\/TR>/Uis', $htmlId, $matches)) // $dateImmat=trim(strip_tags($matches[1])); } if (preg_match('/ADMINISTRATION<\/B>(.*)RENSEIGNEMENTS RELATIFS A L\'ACTIVITE COMMERCIALE<\/B>/Uis', $strKbis, $matches)) { // Les dirigeants provenants de toute autre source sont marqués inactifs $ret=$iDb->query("UPDATE rncs_dirigeants SET actif=0 WHERE source<>'gre' AND siren=$siren"); $tabDirs=array(); $htmlAd=$matches[1]; $tabTmp=explode('
', $htmlAd); foreach ($tabTmp as $i=>$htmlDir) { if ($i==0) continue; $tabDir=array(); if (preg_match('/(.*)<\/TD>/Uis', $htmlDir, $matches)) $tabDir['fonction']=trim(strip_tags($matches[1])); if (preg_match('/(?:.*)(?:.*)(.*)<\/TD><\/TR>/Uis', $htmlDir, $matches)) $tabDir['nom']=trim(strip_tags($matches[1])); if (preg_match('/\((.*)\)<\/TD><\/TR>/Uis', $htmlDir, $matches)) $tabDir['siren']=trim(strip_tags($matches[1])); if (preg_match('/(.*)<\/TD><\/TR>(?:.*)(?:.*)représentée par <\/TD><\/TR>(?:.*)(.*)<\/TD><\/TR>/Uis', $htmlDir, $matches)) { //$tabDir['rs']=trim(strip_tags($matches[1])); $tabDir['rep']=trim(strip_tags($matches[2])); } if (preg_match('/né\(e\)(.*)/Uis', $htmlDir, $matches)) $tabDir['naiss']=trim(strip_tags($matches[1])); if (preg_match('/de nationalité (.*)<\/TD><\/TR>demeurant (.*)<\/TD><\/TR>'') { $nom=$tabDir['rep']; $rs2=$tabDir['nom']; } if (preg_match('/( MONSIEUR | MADAME | MADEMOISELLE )/i', ' '.$nom,$matches2)) { switch (trim($matches2[1])) { case 'MONSIEUR ': $civ='M'; break; case 'MADAME ': $civ='MME'; break; case 'MADEMOISELLE ': $civ='MLLE'; break; } $nom=preg_replace('/( MONSIEUR | MADAME | MADEMOISELLE )/i','',' '.$nom); } $tabTmp=explode(' ', $nom); $nom=trim(strtr($tabTmp[0],array('&'=>'&'))); $prenom=trim($tabTmp[1]); if (preg_match('/(\d\d) (janvier|f.vrier|mars|avril|mai|juin|juillet|ao.t|septembre|octobre|novembre|d.cembre) (\d\d\d\d) (.*)/i', $tabDir['naiss'],$matches2)) { $j=trim($matches2[1]); $m=trim($matches2[2]); $a=trim($matches2[3]); $dateNaiss=Wdate::dateT('dMY', 'Y-m-d', $j.$m.$a); $lieuNaiss=preg_replace('/^à /','', trim(strtr($matches2[4],array(' '=>' ', '&'=>'&')))); } $iDb->insert('rncs_dirigeants', array( 'siren' => $siren, 'raisonSociale' => $rs, 'civilite' => $civ, 'dirSiren' => substr(trim(str_replace(' ','', $tabDir['siren'])),0,9), 'dirRS' => $rs2, 'nom' => $nom, 'prenom' => $prenom, 'naissance_nom' => '', 'naissance_date'=> $dateNaiss, 'naissance_lieu'=> $lieuNaiss, 'fonction_code' => 0000, 'fonction_lib' => $tabDir['fonction'], 'nat' => preg_replace('/^de nationalité /','', trim(strtr($tabDir['natio'],array(' '=>' ', '&'=>'&')))), 'adresse' => preg_replace('/^demeurant /','', trim(strtr($tabDir['adresse'],array(' '=>' ', '&'=>'&')))), 'actif' => 1, 'dateInsert' => date('YmdHis'), 'source' => 'gre', ), true); } } //debugLog('I',"Liste des dirigeants du kbis :".print_r($tabDirs),__LINE__,__FILE__, __FUNCTION__, __CLASS__);*/ } } break; } else kbisLog($siren, $piece, "OUT : Le nouveau fichier n'est pas celui attendu ($sirenLu<>$siren)"); } } else { kbisLog($siren, $piece, "WAIT : Essai $nbEssais, aucun nouveau fichier disponible sur le FTP !"); if (($nbEssais*$dureeInterval)>$dureeMaxi) { kbisLog($siren, $piece, "OUT : Essai $nbEssais, ERREUR aucun kbis trouvé en $dureeMaxi secondes sur le FTP !"); kbisLog($siren, $piece, "OUT : Essai $nbEssais, ERREUR aucun kbis trouvé en $dureeMaxi secondes sur le FTP !", 'ERROR'); $message="ERREUR lors de la récupération du '$piece' pour le siren $siren (aucun PDF sur le serveur FTP au bout de $nbEssais essais en $dureeMaxi secondes)".EOL; $message.=EOL."Si vous obtenez régulièrement ce message avec des siren différents, il faut probablement relancer la passerelle de commandes de pièces officielles.".EOL; sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com,mricois@scores-decisions.com', 'ERREUR KBIS entre la passerelle et le WebService', $message); die(); } } } // Fermeture de la connexion et du pointeur de fichier ftp_close($conn_id); kbisLog($siren, $piece, "OUT : Fin normale de la récupération du kbis".EOL); die();