Example #1
0
function processAMIresponse($aResponse)
{
    global $szAMIusername, $szAMIsecret, $lStartTime, $lEndTime, $szPacketTerminator, $szCRLF;
    //print_r($aResponse);
    //	if(	isset($aResponse["Event"]))
    ////	if(strtolower($aResponse["Event"])=="configentry")
    //	{//	print "\nDetected (configentry) ".print_r($aResponse,true);//	}
    if (isset($aResponse["Response"])) {
        switch ($aResponse["Response"]) {
            case "_AMIQueues":
                //		if(isset($aResponse["QUEUESResponse"]))
                //			{
                //dPrint("QUEUES RESPONSE HERE!!!!!!!!!!!!!!!!".print_r($aResponse,TRUE),iCare_dPrint_always);
                //			vectorEvent($aResponse);
                //			return;
                //			}
                //		return;
                break;
            case "Authenticate":
                // Remap the authentication request to look like an event.
                //dPrint("Authenticate REQUEST",iCare_dPrint_always);
                $aResponse["Event"] = "_AMIauthenticate";
                break;
            case "Success":
                // Remap success	packets to pseudo events.
                // Provide special handling for the huge list
                // returned by the "listcommands" command.
                if (isset($aResponse["WaitEvent"])) {
                    if (isset($aResponse["MeetmeList"])) {
                        if (isset($aResponse["DAHDIRestart"])) {
                            handleAMI_ListCommands($aResponse);
                            return;
                        }
                    }
                }
                if (isset($aResponse["Message"])) {
                    switch ($aResponse["Message"]) {
                        case "Authentication accepted":
                            //Remap to look like event
                            $oSHM = new shm();
                            $oSHM->bAuthenticated = TRUE;
                            // Flag indicating if we have been
                            // Authenticated by AMI.
                            // Get a copy of the AsterClick.conf user logins and pass it back
                            // to code in class.wSockets.inc to reflect the list into that
                            // process's thread.
                            AMIaction("getconfig", array("ORIGIN" => "SYSTEM_ASTERCLICK", "filename" => "AsterClick.conf"));
                            $aPendingLogin = $oSHM->aPendingLogin;
                            dPrint("AMI AUTHENTICATION ACCEPTED (" . count($aPendingLogin) . ")", 3);
                            for (; count($aPendingLogin);) {
                                $value = array_shift($aPendingLogin);
                                AMIaction($value["szAction"], $value["aParams"], $value["bStack"]);
                            }
                            $oSHM->aPendingLogin = array();
                            $aResponse["Event"] = "_AMIauthenticateAccepted";
                            break;
                        case "Meetme user list will follow":
                            $aResponse["Event"] = "MeetmeListStarts";
                            break;
                        default:
                            $aResponse["Event"] = "_AMIsuccess";
                            break;
                    }
                    // /switch(Message)
                } else {
                    // Reporting of events setting ("On","Off") .
                    if (isset($aResponse["Events"])) {
                        $aResponse["Event"] = "Events";
                        break;
                    }
                    //			print "\nAMIresponse (success ) now test for config stuff ".print_r($aResponse,TRUE);
                    if (isset($aResponse["Category-000000"])) {
                        if (isset($aResponse["Line-000000-000000"])) {
                            $aResponse["Event"] = "_AMIConfigFile";
                            break;
                        } else {
                            $aResponse["Event"] = "_AMIConfigFileCategories";
                            break;
                        }
                    }
                    $aResponse["Event"] = "_AMIpayload";
                    dPrint("\nprocessAMIresponse(" . count($aResponse) . ")[" . $aResponse["Response"] . "|||" . $aResponse["Event"] . "]");
                }
                break;
            case "Failure":
                // Remap Failure	packets to pseudo Event
                $aResponse["Event"] = "_AMIfailure";
                break;
            case "Error":
                // Remap error		packets to pseudo Event
                $aResponse["Event"] = "_AMIerror";
                break;
            case "Follows":
                // Remap follows	packets to pseudo Event
                $aResponse["Event"] = "_AMIfollows";
                if (isset($aResponse["CLIResponse"])) {
                    handleAMI_CLIresponse($aResponse);
                    // parses CLI text blob responses into structured data,
                    // divides them up into nice sized chunks
                    // and sends them to vectorEvent().
                    return;
                }
                break;
            default:
                dPrint("switch(Response) ERROR , unhanded response (" . $aResponse["Response"] . ")");
                break;
        }
        // /switch(Response)
    } else {
        //		if(!isset($aResponse["Event"]))
        //		dPrint("\nDAH , No Response ".print_r($aResponse,TRUE));
    }
    // end big if
    if (isset($aResponse["Event"])) {
        //		require_once("caseEvent.php");
        vectorEvent($aResponse);
    }
    $lEndTime = mktime();
}
    array_push($arr_xticks, $row['uts']);
}
// get maxs
list($max_temp, $max_temp_uts) = getArrEXTUTS($Temp_data, $arr_xticks, 1);
list($max_prss, $max_prss_uts) = getArrEXTUTS($Prss_data, $arr_xticks, 1);
list($max_wnds, $max_wnds_uts) = getArrEXTUTS($WndS_data, $arr_xticks, 1);
list($max_batt, $max_batt_uts) = getArrEXTUTS($Batt_data, $arr_xticks, 1);
// get mins
list($min_temp, $min_temp_uts) = getArrEXTUTS($Temp_data, $arr_xticks, 0, true);
list($min_prss, $min_prss_uts) = getArrEXTUTS($Prss_data, $arr_xticks, 0, true);
//extInsert(data, maxmin, value, uts)
extInsert("temp", 1, $max_temp, $max_temp_uts);
extInsert("temp", 0, $min_temp, $min_temp_uts);
extInsert("pressure", 1, $max_prss, $max_prss_uts);
extInsert("pressure", 0, $min_prss, $min_prss_uts);
extInsert("wind_spd", 1, $max_wnds, $max_wnds_uts);
extInsert("batt", 1, $max_batt, $max_batt_uts);
// and debug
function dPrint($data, $value, $uts, $maxmin, $units)
{
    echo $maxmin == 1 ? "max" : "min";
    echo " " . $data . " was: " . $value . $units . " at " . date("G:i, F j Y", $uts) . ".<br>";
}
if ($DEBUG) {
    dPrint("temp", $max_temp, $max_temp_uts, 1, "C");
    dPrint("temp", $min_temp, $min_temp_uts, 0, "C");
    dPrint("prss", $max_prss, $max_prss_uts, 1, "mb");
    dPrint("prss", $min_prss, $min_prss_uts, 0, "mb");
    dPrint("WndS", $max_wnds, $max_wnds_uts, 1, " rpm");
    dPrint("batt", $max_batt, $max_batt_uts, 1, "V");
}
Example #3
0
function vectorEventSend($aResponse)
{
    global $oMSGqueue;
    // System V message queue class.
    if (!isset($aResponse["ActionID"])) {
        $aResponse["ActionID"] = mktime() . "_0_ALL_ALL";
    }
    $aActionID = explode("_", $aResponse["ActionID"]);
    for ($x = 0; $x < 4; $x++) {
        if (!isset($aActionID[$x])) {
            $aActionID[$x] = "";
        }
    }
    $aActionIDmap = array("timestamp" => $aActionID[0], "sequence" => $aActionID[1], "groupID" => $aActionID[2], "userID" => $aActionID[3], "response" => $aResponse);
    $aResponse["__userID"] = $aActionID[3];
    $aResponse["__groupID"] = $aActionID[2];
    foreach ($aResponse as $key => $value) {
        $aResponse[$key] = trim($value);
    }
    switch ($aResponse["__groupID"]) {
        case "SYSTEM":
            processAsterClickResponse($aResponse);
            dPrint("SYSTEM EVENT:" . print_r($aResponse, TRUE), iCare_dPrint_SYSTEMevent);
            break;
        case "FastAMI":
        case "ALL":
            //	print "\n SAW GROUP ALL"	;
        //	print "\n SAW GROUP ALL"	;
        case "HTML5":
            //	print "\n SAW GROUP HTML5"	;
            $oMSGqueue->msg_send(array("message" => $aResponse));
            break;
        default:
            print "\n SAW UNKNOWN GROUP " . $aResponse["__groupID"];
            break;
    }
    // End Switch
    $aStatus = $oMSGqueue->msg_stat_queue();
    $iQueued = $aStatus["msg_qnum"];
    $iPauseUnit = 95;
    $iPause = $iQueued * $iPauseUnit;
    dPrint("\n QUE LENGTH(" . $iQueued . ")\n" . $iQueued * $iPauseUnit . "\n");
    usleep($iPause);
}