require_once("lib.php");
class GAAuthClient {
- function syncUserToken($username, $tokenone, $tokentwo) {
- global $MSG_QUEUE_KEY_ID_SERVER, $MSG_QUEUE_KEY_ID_CLIENT;
-
+
+ // this functiuon will now act as our generic send/recieve client funciton
+ // im doing this because im going to move from ipc messaging to a tcp connection
+ // shortly and i want to encapsulate the send/receive behaviour
+ // things we need to add here are:
+ // 1) a way of saying "more data coming" cause getusers wont fit into one message
+ // 2) timeouts and locking
+
+ // io think this function should now "work" more or less as is
+ function sendReceiveTcp($message_type, $message) {
+ // yeah... this is totally gunna work
+ global $TCP_PORT_NUMBER;
- if(!msg_queue_exists($MSG_QUEUE_KEY_ID_SERVER)) {
- return false;
- }
-
- if(!msg_queue_exists($MSG_QUEUE_KEY_ID_CLIENT)) {
+ $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
+ $res = socket_connect($socket, "127.0.0.1", $TCP_PORT_NUMBER);
+ if(!$res) {
+ socket_close($socket);
return false;
}
- // TODO we need to setup a client queue sem lock here
- $cl_queue = msg_get_queue($MSG_QUEUE_KEY_ID_CLIENT);
- $sr_queue = msg_get_queue($MSG_QUEUE_KEY_ID_SERVER);
+ $msg["type"] = $message_type;
+ $msg["data"] = $message;
- $message["username"] = $username;
- $message["tokenone"] = $tokenone;
- $message["tokentwo"] = $tokentwo;
-
- msg_send($sr_queue, MSG_SYNC_TOKEN, $message, true, true, $msg_err);
+ $datacomp = base64_encode(serialize($msg));
+ $tosend = "AC:$datacomp:EOD";
- msg_receive($cl_queue, 0, $msg_type, 16384, $msg);
- return $msg;
+ socket_send($socket, $tosend, strlen($tosend));
- }
-
- function setUserToken($username, $token) {
- global $MSG_QUEUE_KEY_ID_SERVER, $MSG_QUEUE_KEY_ID_CLIENT;
+ // get up to one meg of data - this is bad... i can feel this function
+ // hurting alot
+ // TODO FIX THIS - its garbage code... im not really sure how to handle this really
+ // we need to read back as AS:data:EOD - i think it now does.. i hope, tho we need
+ // timeouts now.
+ $recvd = "";
+ $continue = true;
+ while($continue) {
+ $size = socket_recv($socket, $recvd_a, 1024, 0);
+ $recvd .= $recvd_a;
+ if(preg_match("/.*\:EOD$/", $recvd) {
+ // we have a full string... break out
+ $continue = false;
+ break;
+ }
+ }
- if(!msg_queue_exists($MSG_QUEUE_KEY_ID_SERVER)) {
- return false;
- }
-
- if(!msg_queue_exists($MSG_QUEUE_KEY_ID_CLIENT)) {
+ // first check we got something that makes sense
+ if(preg_match("/^AS:.*:EOD/", $recvd) < 1) {
+ socket_close($socket);
+ // we have a problem jim
return false;
}
- // TODO we need to setup a client queue sem lock here
- $cl_queue = msg_get_queue($MSG_QUEUE_KEY_ID_CLIENT);
- $sr_queue = msg_get_queue($MSG_QUEUE_KEY_ID_SERVER);
+ $xps = explode(":", $recvd);
- $message["username"] = $username;
- $message["tokenstring"] = $token;
+ $component = unserialize(base64_decode($xps[1]));
- msg_send($sr_queue, MSG_SET_USER_TOKEN, $message, true, true, $msg_err);
+ if($component["type"] != $message_type) {
+ // we have a problem jim
+ socket_close($socket);
+ return false;
+ }
- msg_receive($cl_queue, 0, $msg_type, 16384, $msg);
- return $msg;
+ socket_close($socket);
+
+ return $component["data"];
}
- function setUserPass($username, $password) {
+ function sendReceive($message_type, $message) {
global $MSG_QUEUE_KEY_ID_SERVER, $MSG_QUEUE_KEY_ID_CLIENT;
$cl_queue = msg_get_queue($MSG_QUEUE_KEY_ID_CLIENT);
$sr_queue = msg_get_queue($MSG_QUEUE_KEY_ID_SERVER);
-
- $message["username"] = $username;
- $message["password"] = $password;
- msg_send($sr_queue, MSG_SET_USER_PASSWORD, $message, true, true, $msg_err);
+ msg_send($sr_queue, $message_type, $message, true, true, $msg_err);
+ msg_receive($cl_queue, 0, $msg_type, 131072, $msg);
- msg_receive($cl_queue, 0, $msg_type, 16384, $msg);
-
return $msg;
}
- function getOtkID($username) {
- global $MSG_QUEUE_KEY_ID_SERVER, $MSG_QUEUE_KEY_ID_CLIENT;
-
-
- if(!msg_queue_exists($MSG_QUEUE_KEY_ID_SERVER)) {
- return false;
- }
-
- if(!msg_queue_exists($MSG_QUEUE_KEY_ID_CLIENT)) {
- return false;
- }
- // TODO we need to setup a client queue sem lock here
+ function addRadiusClient($clientname, $clientip, $clientsecret, $clientdesc) {
+
+ $message["clientname"] = $clientname;
+ $message["clientsecret"] = $clientsecret;
+ $message["clientip"] = $clientip;
+ $message["clientdescription"] = $clientdesc;
- $cl_queue = msg_get_queue($MSG_QUEUE_KEY_ID_CLIENT);
- $sr_queue = msg_get_queue($MSG_QUEUE_KEY_ID_SERVER);
+ return $this->sendReceive(MSG_ADD_RADIUS_CLIENT, $message);
+ }
- $message["username"] = $username;
- msg_send($sr_queue, MSG_GET_OTK_ID, $message, true, true, $msg_err);
-
- msg_receive($cl_queue, 0, $msg_type, 16384, $msg);
+ function deleteRadiusClient($clientname) {
+ $message["clientname"] = $clientname;
- return $msg;
+ return $this->sendReceive(MSG_REMOVE_RADIUS_CLIENT, $message);
}
- function getOtkPng($username, $otk) {
- global $MSG_QUEUE_KEY_ID_SERVER, $MSG_QUEUE_KEY_ID_CLIENT;
-
-
- if(!msg_queue_exists($MSG_QUEUE_KEY_ID_SERVER)) {
- return false;
- }
+ function getRadiusClients() {
+ return $this->sendReceive(MSG_GET_RADIUS_CLIENTS, "");
+ }
+
+
+ function syncUserToken($username, $tokenone, $tokentwo) {
+ $message["username"] = $username;
+ $message["tokenone"] = $tokenone;
+ $message["tokentwo"] = $tokentwo;
- if(!msg_queue_exists($MSG_QUEUE_KEY_ID_CLIENT)) {
- return false;
- }
- // TODO we need to setup a client queue sem lock here
-
- $cl_queue = msg_get_queue($MSG_QUEUE_KEY_ID_CLIENT);
- $sr_queue = msg_get_queue($MSG_QUEUE_KEY_ID_SERVER);
+ return $this->sendReceive(MSG_SYNC_TOKEN, $messgae);
+ }
+
+ function getUserTokenType($username) {
+ $message["username"] = $username;
- $message["otk"] = $otk;
+ return $this->sendReceive(MSG_GET_TOKEN_TYPE, $message);
+ }
+
+ function setUserToken($username, $token) {
$message["username"] = $username;
- error_log("sending message, $otk");
- msg_send($sr_queue, MSG_GET_OTK_PNG, $message, true, true, $msg_err);
-
- msg_receive($cl_queue, 0, $msg_type, 16384, $msg);
-
- return $msg;
+ $message["tokenstring"] = $token;
+ return $this->sendReceive(MSG_GET_USER_TOKEN, $message);
}
- function authUserPass($username, $password) {
- global $MSG_QUEUE_KEY_ID_SERVER, $MSG_QUEUE_KEY_ID_CLIENT;
-
+ function setUserPass($username, $password) {
+ $message["username"] = $username;
+ $message["password"] = $password;
- if(!msg_queue_exists($MSG_QUEUE_KEY_ID_SERVER)) {
- return false;
- }
+ return $this->sendReceive(MSG_SET_USER_PASSWORD, $message);
+ }
+
+ function getOtkID($username) {
+ $message["username"] = $username;
- if(!msg_queue_exists($MSG_QUEUE_KEY_ID_CLIENT)) {
- return false;
- }
- // TODO we need to setup a client queue sem lock here
-
- $cl_queue = msg_get_queue($MSG_QUEUE_KEY_ID_CLIENT);
- $sr_queue = msg_get_queue($MSG_QUEUE_KEY_ID_SERVER);
+ return $this->sendReceive(MSG_GET_OTK_ID, $message);
+ }
+
+ function getOtkPng($username, $otk) {
+ $message["otk"] = $otk;
+ $message["username"] = $username;
+ return $this->sendReceive(MSG_GET_OTK_PNG, $message);
+ }
+
+ function authUserPass($username, $password) {
$message["username"] = $username;
$message["password"] = $password;
- msg_send($sr_queue, MSG_AUTH_USER_PASSWORD, $message, true, true, $msg_err);
-
- msg_receive($cl_queue, 0, $msg_type, 16384, $msg);
- return $msg;
+ return $this->sendReceive(MSG_AUTH_USER_PASSWORD, $message);
}
function deleteUser($username) {
- global $MSG_QUEUE_KEY_ID_SERVER, $MSG_QUEUE_KEY_ID_CLIENT;
-
-
- if(!msg_queue_exists($MSG_QUEUE_KEY_ID_SERVER)) {
- return false;
- }
-
- if(!msg_queue_exists($MSG_QUEUE_KEY_ID_CLIENT)) {
- return false;
- }
- // TODO we need to setup a client queue sem lock here
-
- $cl_queue = msg_get_queue($MSG_QUEUE_KEY_ID_CLIENT);
- $sr_queue = msg_get_queue($MSG_QUEUE_KEY_ID_SERVER);
-
$message["username"] = $username;
- msg_send($sr_queue, MSG_DELETE_USER, $message, true, true, $msg_err);
-
- msg_receive($cl_queue, 0, $msg_type, 16384, $msg);
-
- return $msg;
-
+ return $this->sendReceive(MSG_DELETE_USER, $message);
}
function setUserRealName($username, $realname) {
- global $MSG_QUEUE_KEY_ID_SERVER, $MSG_QUEUE_KEY_ID_CLIENT;
-
-
- if(!msg_queue_exists($MSG_QUEUE_KEY_ID_SERVER)) {
- return false;
- }
-
- if(!msg_queue_exists($MSG_QUEUE_KEY_ID_CLIENT)) {
- return false;
- }
- // TODO we need to setup a client queue sem lock here
-
- $cl_queue = msg_get_queue($MSG_QUEUE_KEY_ID_CLIENT);
- $sr_queue = msg_get_queue($MSG_QUEUE_KEY_ID_SERVER);
-
$message["username"] = $username;
$message["realname"] = $realname;
- msg_send($sr_queue, MSG_SET_USER_REALNAME, $message, true, true, $msg_err);
-
- msg_receive($cl_queue, 0, $msg_type, 16384, $msg);
- return $msg;
+ return $this->sendReceive(MSG_SET_USER_REALNAME, $message);
}
function getUsers() {
- global $MSG_QUEUE_KEY_ID_SERVER, $MSG_QUEUE_KEY_ID_CLIENT;
-
-
- if(!msg_queue_exists($MSG_QUEUE_KEY_ID_SERVER)) {
- return false;
- }
-
- if(!msg_queue_exists($MSG_QUEUE_KEY_ID_CLIENT)) {
- return false;
- }
- // TODO we need to setup a client queue sem lock here
-
- $cl_queue = msg_get_queue($MSG_QUEUE_KEY_ID_CLIENT);
- $sr_queue = msg_get_queue($MSG_QUEUE_KEY_ID_SERVER);
-
- msg_send($sr_queue, MSG_GET_USERS, "", true, true, $msg_err);
-
- msg_receive($cl_queue, 0, $msg_type, 524288, $msg);
-
- return $msg;
+ return $this->sendReceive(MSG_GET_USERS, "");
}
function authUserToken($username, $passcode) {
- global $MSG_QUEUE_KEY_ID_SERVER, $MSG_QUEUE_KEY_ID_CLIENT;
-
-
- if(!msg_queue_exists($MSG_QUEUE_KEY_ID_SERVER)) {
- return false;
- }
-
- if(!msg_queue_exists($MSG_QUEUE_KEY_ID_CLIENT)) {
- return false;
- }
- // TODO we need to setup a client queue sem lock here
-
- $cl_queue = msg_get_queue($MSG_QUEUE_KEY_ID_CLIENT);
- $sr_queue = msg_get_queue($MSG_QUEUE_KEY_ID_SERVER);
-
-
$message["username"] = $username;
$message["passcode"] = $passcode;
- msg_send($sr_queue, MSG_AUTH_USER_TOKEN, $message, true, true, $msg_err);
-
- msg_receive($cl_queue, 0, $msg_type, 16384, $msg);
-
- return $msg;
+ return $this->sendReceive(MSG_AUTH_USER_TOKEN, $message);
}
function deleteUserToken($username) {
-
- global $MSG_QUEUE_KEY_ID_SERVER, $MSG_QUEUE_KEY_ID_CLIENT;
-
- if(!msg_queue_exists($MSG_QUEUE_KEY_ID_SERVER)) {
- return false;
- }
-
- if(!msg_queue_exists($MSG_QUEUE_KEY_ID_CLIENT)) {
- return false;
- }
-
- // TODO we need to setup a client queue sem lock here
-
- $cl_queue = msg_get_queue($MSG_QUEUE_KEY_ID_CLIENT);
- $sr_queue = msg_get_queue($MSG_QUEUE_KEY_ID_SERVER);
-
-
$message["username"] = $username;
- msg_send($sr_queue, MSG_DELETE_USER_TOKEN, $message, true, true, $msg_err);
-
- msg_receive($cl_queue, 0, $msg_type, 16384, $msg);
-
- return $msg;
+ return $this->sendReceive(MSG_DELETE_USER_TOKEN, $message);
}
function addUser($username, $tokentype="", $hexkey="") {
- global $MSG_QUEUE_KEY_ID_SERVER, $MSG_QUEUE_KEY_ID_CLIENT;
-
-
- if(!msg_queue_exists($MSG_QUEUE_KEY_ID_SERVER)) {
- return false;
- }
-
- if(!msg_queue_exists($MSG_QUEUE_KEY_ID_CLIENT)) {
- return false;
- }
-
- // TODO we need to setup a client queue sem lock here
-
- $cl_queue = msg_get_queue($MSG_QUEUE_KEY_ID_CLIENT);
- $sr_queue = msg_get_queue($MSG_QUEUE_KEY_ID_SERVER);
-
-
$message["username"] = $username;
if($tokentype!="") $message["tokentype"] = $tokentype;
if($hexkey!="") $message["hexkey"] = $hexkey;
- msg_send($sr_queue, MSG_ADD_USER_TOKEN, $message, true, true, $msg_err);
-
- msg_receive($cl_queue, 0, $msg_type, 16384, $msg);
-
- return $msg;
+ return $this->sendReceive(MSG_ADD_USER_TOKEN, $message);
}
function setUserTokenType($username, $tokentype) {
- global $MSG_QUEUE_KEY_ID_SERVER, $MSG_QUEUE_KEY_ID_CLIENT;
-
-
- if(!msg_queue_exists($MSG_QUEUE_KEY_ID_SERVER)) {
- return false;
- }
-
- if(!msg_queue_exists($MSG_QUEUE_KEY_ID_CLIENT)) {
- return false;
- }
-
- // TODO we need to setup a client queue sem lock here
-
- $cl_queue = msg_get_queue($MSG_QUEUE_KEY_ID_CLIENT);
- $sr_queue = msg_get_queue($MSG_QUEUE_KEY_ID_SERVER);
-
-
-
$message["username"] = $username;
$message["tokentype"] = $tokentype;
- msg_send($sr_queue, MSG_SET_USER_TOKEN_TYPE, $message, true, true, $msg_err);
-
- msg_receive($cl_queue, 0, $msg_type, 16384, $msg);
-
- return $msg;
-
+ return $this->sendReceive(MSG_SET_USER_TOKEN_TYPE, $message);
}
}