crabs_firewall-3.0.1 ©2005-2011 - Christophe CAZAJUS (crabs-mettre_le_signe_at-crabs-world.com)
1 /* 2 **============================================================================= 3 ** crabs_firewall-3.0.1 : Firewall-Masquerade avec interface http 4 ** Copyright (C) 2005-2011 : Christophe CAZAJUS (crabs-mettre_le_signe_at-crabs-world.com) 5 ** 6 ** Ce source fait partie d'un projet logiciel libre. Vous pouvez le distribuer 7 ** et/ou le modifier en respectant les termes de la GNU General Public License 8 ** version 2 ou (suite a votre propre choix) une version ulterieure. 9 ** 10 ** Ce programme est distribue dans l'espoir qu'il puisse etre utile, mais 11 ** sans aucune garantie, meme si il est associe a un produit qui vous en 12 ** propose une. Conformez-vous a la GNU General Public License pour avoir 13 ** plus de precisions. 14 ** 15 ** L'auteur ne peut etre tenu responsable de l'utilisation faite des 16 ** composantes associees a ce projet (en partie ou dans leur totalite). 17 ** 18 ** Une copie du fichier de la GNU GPL est fournie dans le repertoire DOC 19 ** de ce projet sous le nom gnu_gpl.txt 20 ** 21 **============================================================================= 22 */ 23 #include <sys/types.h> 24 #include <string.h> 25 #include "cgi.h" 26 #include "cgi_var.H" 27 // Ici nous faisons un raccourci : on decode QUERY_STRING 28 // principe 29 // recherche les signes = et & 30 void Cgi::decode_get() 31 { 32 //g = new CgiVar ; 33 const char* qs = env( "QUERY_STRING" ) ; 34 if ( !qs ) return ; 35 size_t len = strlen( qs ) ; 36 char var[1024]; char val[1024]; *var=*val=0 ; 37 bool in_var = true; bool in_val = false ; size_t j=0 ; 38 for( size_t i=0; i<len;i++) 39 { 40 if ( qs[i] == '=' ) // fin de variable 41 { 42 if ( in_var ) 43 { 44 var[j] = 0 ; 45 in_val = true; in_var = false; j=0 ; 46 continue ; 47 } 48 } 49 if ( qs[i] == '&' ) // fin de valeur ou de variable 50 { 51 if ( in_var ) 52 var[j] = 0 , *val = 0 ; 53 else 54 val[j] = 0 ; 55 in_var = true ; in_val = false ; j = 0 ; 56 if ( !g ) g = new CgiVar ; 57 escape_caracteres( val ) ; g->ajouter( var, val ) ; 58 continue ; 59 } 60 if ( in_var ) var[j++] = qs[i] ; 61 if ( in_val ) val[j++] = qs[i] ; 62 } 63 if ( *var ) 64 { 65 if ( in_var ) { var[j] = 0; *val = 0 ; } 66 if ( in_val ) val[j] = 0 ; 67 if ( !g ) g = new CgiVar ; 68 escape_caracteres( val ) ; g->ajouter( var, val ) ; 69 } 70 } 71 72 const char* Cgi::get( const char* var ) 73 { 74 if (g) return g->chercher( var ) ; 75 return 0 ; 76 } 77
Date de génération : 22/09/2011 21:48