public function login($user = null, $pwd = null, $sn = null, $description = null) { /* * load user, pass and serial number */ $this->loadSettings(); $username = $this->username; $password = $this->password; $serial_number = $this->serial_number; /* * if $user, $pwd, $sn means that this login its to register an Appliance */ if ($user) { $username = $user; } if ($pwd) { $password = $pwd; } if ($sn) { $serial_number = $sn; } $url = $this->site_url . "/login"; /* * send authentication to mastersite */ $curl_req = new cURL($url); $send_auth_params = "username={$username}&password={$password}"; if ($serial_number) { $send_auth_params .= "&serial_number={$serial_number}"; } if ($description) { $send_auth_params .= "&description={$description}"; } $curl_req->post($send_auth_params); $curl_req->cookies(self::CONF_SITE_NAME); $curl_req->exec(); $curl_req->close(); $status = $curl_req->get_status(); if ($status != 200) { if ($status) { $raw_response = $curl_req->get_response(); $response_data = json_decode($raw_response, true); $data = array('success' => false, 'agent' => 'MASTERSITE', 'action' => 'login', 'info' => 'Cannot authenticate!', 'error' => 'Cannot authenticate!'); if ($status == 400) { $data['info'] = $response_data['error']; } } else { $error = $curl_req->get_error(); $data = array('success' => false, 'agent' => 'MASTERSITE', 'action' => 'login', 'info' => 'An error occurred! ' . $error, 'error' => $error); } return $data; } /* * ok... */ $raw_response = $curl_req->get_response(); $response_data = json_decode($raw_response, true); $response = $response_data['response']; $serial = $response['serial_number']; /* * * save SETTINGS * update user, pass and serial * */ if ($serial) { $this->saveSettings($serial, $username, $password, $description); } $data = array('success' => true, 'serial_number' => $serial); return $data; }