Changeset 598 for wifidog/wifidog-auth/wifidog/ping/index.php
- Timestamp:
- 01/21/09 23:13:05 (1 year ago)
- Files:
-
- wifidog/wifidog-auth/wifidog/ping/index.php (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
wifidog/wifidog-auth/wifidog/ping/index.php
r307 r598 46 46 47 47 /** 48 * Raphael Jacquot 2009-01-15 49 * amélioration des vérifications des entrées. 50 */ 51 52 /** 48 53 * Load required files 49 */ 50 require_once('../include/common.php'); 54 * connect to the database directly, get rid of the dumbass abstraction layer from hell 55 */ 56 require_once('../config.php'); 57 $conn_string = "host=".CONF_DATABASE_HOST." dbname=".CONF_DATABASE_NAME." user=".CONF_DATABASE_USER." password=".CONF_DATABASE_PASSWORD; 58 $db = @ pg_pconnect($conn_string); 59 60 if ($db == FALSE) { 61 // si on a un probleme, on sort sans rien faire 62 error_log ("Unable to connect to database"); 63 exit(1); 64 } 51 65 52 66 echo "Pong"; 53 67 54 68 // On recupere l'id de la gateway 55 $node_id = $db->escapeString($_REQUEST['gw_id']); 69 if (array_key_exists('gw_id',$_REQUEST)) $node_id = $_REQUEST['gw_id']; 70 else $node_id=""; 56 71 57 72 // On recupere la version de Wifidog utilisee 58 $user_agent = $db->escapeString($_SERVER['HTTP_USER_AGENT']); 73 if (array_key_exists('HTTP_USER_AGENT',$_SERVER)) $user_agent = $_SERVER['HTTP_USER_AGENT']; 74 else $user_agent=""; 59 75 60 76 // On recupere le network_id 61 if (isset($_REQUEST['network_id'])) $network_id = $db->escapeString($_REQUEST['network_id']);62 77 if (array_key_exists('network_id',$_REQUEST)) $network_id = $_REQUEST['network_id']; 78 else $network_id=""; 63 79 64 80 // On recupere les coordonnees gps 65 if(isset($_REQUEST['lat'])) $lat = $db->escapeString($_REQUEST['lat']); 66 else $lat = 0;67 68 if (isset($_REQUEST['lon'])) $lon = $db->escapeString($_REQUEST['lon']);69 else $lon = 0 ;81 // c'est transformé en float automatiquement par php (comme ca on est tranquille) 82 if (array_key_exists('lat', $_REQUEST)) $lat = 0.0+$_REQUEST['lat']; 83 else $lat = 0.0; 84 if (array_key_exists('lon', $_REQUEST)) $lon=0.0+$_REQUEST['lon']; 85 else $lon = 0.0; 70 86 71 87 // On recupere le node name 72 if (isset($_REQUEST['node_name'])) $node_name = $db->escapeString($_REQUEST['node_name']);88 if (array_key_exists('node_name',$_REQUEST)) $node_name = trim($_REQUEST['node_name']); 73 89 else $node_name = ""; 74 90 75 91 if($node_name == "(null)") $node_name = ""; 76 92 77 78 93 // On verifie que le noeud existe en base 79 $ db->execSql("SELECT * FROM nodes WHERE node_id='$node_id'",$result0,false);80 $numrow = count($result0);94 $q = pg_query_params($db, "select node_id, name from nodes where node_id=$1;", array($node_id)); 95 $numrow = pg_num_rows($q); 81 96 82 97 // Si le noeud n'existe pas 83 if ( $numrow == 0 && isset($_REQUEST['prop'])){98 if (($numrow == 0) && array_key_exists('prop',$_REQUEST)){ 84 99 100 /* modifications de valeurs */ 101 if($network_id=="") $network_id="default-network"; 102 if($node_name=="") $node_name="Node".$owner; 103 104 echo "\nLe node $node_id n existe pas\n"; 85 105 // On verifie que le proprietaire est enregistre en base 86 $proprietary = $db->escapeString($_REQUEST['prop']); 87 $db->execSql("SELECT user_id FROM users WHERE username='$proprietary'",$result,false); 88 $numrow = count($result); 106 107 $owner = $_REQUEST['prop']; 108 echo "Proprio: $owner\n"; 109 110 $q = pg_query_params($db, "select user_id from users where username=$1;", array($owner)); 111 $numrow = pg_num_rows($q); 89 112 113 echo "Nbr de résultats : $numrow\n"; 114 90 115 // Si le proprietaire est enregistre comme utilisateur 116 // normalement on ne doit en avoir qu'un seul 91 117 if ($numrow == 1){ 92 $user_id=$result[0]["user_id"]; 118 echo "Proprio $owner existe\n"; 119 120 $row = pg_fetch_assoc($q); 121 $user_id=$row["user_id"]; 93 122 94 123 // On ajoute le noeud a la base 95 if($network_id=="") $network_id="default-network";96 97 if($node_name=="") $node_name="Node".$proprietary; 98 99 $db->execSql("INSERT into nodes(network_id,last_heartbeat_ip,last_heartbeat_timestamp,last_heartbeat_user_agent,node_id,latitude,longitude,node_deployment_status,name) values('$network_id','$_SERVER[REMOTE_ADDR]', NOW(), '$user_agent', '$node_id', $lat, $lon , 'DEPLOYED', '$node_name' )",$result,false);124 echo "Rajout du node $node_id\n"; 125 126 pg_query_params ($db, "insert into nodes(network_id, last_heartbeat_ip, last_heartbeat_timestamp, last_heartbeat_user_agent,". 127 "node_id, latitude, longitude, node_deployment_status, name) values ($1, $2, CURRENT_TIMESTAMP, $3, $4, $5, $6, $7, $8);", 128 array ($network_id, $_SERVER['REMOTE_ADDR'], $user_agent, $node_id, $lat, $lon, "DEPLOYED", $node_name)); 100 129 101 130 // On ajoute les droits d'administration du noeud au proprietaire 102 $db->execSql("INSERT into node_stakeholders(node_id,user_id,is_owner,is_tech_officer) values('$node_id','$user_id', 'TRUE', 'FALSE')",$result,false); 131 echo "Rajout $user_id pour $node_id\n"; 132 pg_query_params ($db, "insert into node_stakeholders (node_id, user_id, is_owner, is_tech_officer) values ($1, $2, 'TRUE', 'FALSE');", array($node_id, $user_id)); 103 133 134 } else { 135 if ($numrow==0) { 136 $errmsg = sprintf("Attempting to add node %s (%s) to network %s with owner %s failed, owner does not exist", 137 $node_id, $node_name, $network_id, $owner); 138 error_log ($errmsg); 139 } else { 140 $errmsg = sprintf("CAN'T HAPPEN: found multiple (%d) users for user_id %s", $numrow, $user_id); 141 error_log ($errmsg); 142 } 104 143 } 105 144 … … 107 146 // Le noeud existe deja en base, on met a jour ses informations 108 147 148 echo "\nMise a jour des infos.\n"; 149 109 150 $sql = "last_heartbeat_ip='". $_SERVER['REMOTE_ADDR']. "', last_heartbeat_user_agent='$user_agent'"; 110 151 … … 113 154 if($lat!=0 && $lon!=0) $sql .= ", latitude=$lat, longitude=$lon"; 114 155 115 if($result0[0]["name"] == "") $sql .= ", name='". $node_name ."'"; 116 117 $db->execSqlUpdate("UPDATE nodes SET last_heartbeat_timestamp=NOW(), node_deployment_status='DEPLOYED', $sql WHERE node_id='$node_id'"); 156 // change le nom du node si ca a changé 157 $row = pg_fetch_assoc($q); 158 $errmsg = "node_id = '".$node_id."', name = '".$row['name']."', node_name = '".$node_name."'"; 159 if (strcmp($row["name"], $node_name)!=0) { 160 $errmsg.=" ==> name change"; 161 error_log ($errmsg); 162 } 163 164 $req = "update nodes set last_heartbeat_timestamp=CURRENT_TIMESTAMP, node_deployment_status='DEPLOYED', $sql where node_id='$node_id';"; 165 pg_query($db, $req); 118 166 119 167 } 120 168 169 pg_close($db); 121 170 122 171 ////////////////////////////////////////////////////////////////////////
