setAuthCode($authCode); $auth->setAuthSession($encodedSession); $auth->auth(); $data = ""; $result = ""; $resultForm = ""; $message = ""; $button = ""; $lang = ""; $useResultForm = false; // Amennyiben stringkent akarjuk kezelni a formot, false-ra kell allitani if (isset($_POST["result_ok"])) $result = "result_ok"; elseif (isset($_POST["result_cancel"])) $result = "result_cancel"; switch ($action) { case 'login': require_once '../PasswordHash.php'; $needToken = false; $email = ''; if (isset($_POST['param'])) { // Custom Login $decoded_data = base64_decode($_POST['param']); $data = json_decode($decoded_data); $encodedSession = $data->session; $session = base64_decode($data->session); $decoded_param = '?' . Webform::decode($privatekey, $session, $data->id); $user = json_decode(base64_decode($_POST['data'])); $seatID = Webform::get_valueFromStringUrl($decoded_param, "seatID"); $npid = Webform::get_valueFromStringUrl($decoded_param, "npid"); $isTrial = Webform::get_valueFromStringUrl($decoded_param, "trial"); $ver8and9 = $data->ver; $custom = Webform::get_valueFromStringUrl($decoded_param, "custom"); $userID = crm_hardlock::GetRegistration($user, $npid, $isTrial, $ver8and9, $custom); $nUserID = -$userID; $name = $user->name; $needToken = true; $actual_link = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; $msg = "URL: " . $actual_link; crm_hardlock::AddToDebugTable($msg, "Custom Login"); } else { // Belso Login $username = $_POST['username']; $password = $_POST['password']; $seatID = $_POST['seatID']; $lang = $_POST['lang']; $query = "SELECT * FROM `" . JMLADATBAZIS . "`.`jml_users` WHERE username = ? OR email = ?"; Database::getInstance()->query($query, array('ss', $username, $username)); $res = Database::getInstance()->fetchNext(); if (!empty($res)) { $db_password = $res['password']; $nUserID = $res['nUserID']; $name = $res["name"]; $phpass = new PasswordHash(10, true); $ok = $phpass->CheckPassword($password, $db_password); if ($ok) { $crmEmailQuery = "SELECT * FROM `" . CRMADATBAZIS . "`.`u_emails` WHERE nUserID = ? LIMIT 1;"; Database::getInstance()->query($crmEmailQuery, array('i', $nUserID)); $crmEmail = Database::getInstance()->fetchNext(); $email = $crmEmail['email']; $needToken = true; } else { $result = 'result_cancel'; $data = "password_error"; } } else { $result = 'result_cancel'; $data = "username_error"; } } if ($needToken) { $tokenID = crm_hardlock::GetOrGenerateToken($seatID, $nUserID); $result = 'result_ok'; $data = " {$name} {$tokenID} {$email} "; } $param = Webform::encode($privatekey, $session, $data); Webform::SetWebformResult($session, $result, $param, $message, $button); if (isset($_POST['ex']) && $_POST['ex'] == 'true') { header('Location: https://www.archline.hu/maintenance/webform/loginresult.php?lang=' . $lang . '&result=' . $result); } else { $resultForm .= "
"; $resultForm .= ""; $resultForm .= ""; $resultForm .= "
"; $resultForm .= "'"; echo $resultForm; } die(); break; case 'ext_browser': $result = 'result_cancel'; $data = "external_login"; $param = Webform::encode($privatekey, $session, $data); Webform::SetWebformResult($session, $result, $param, $message, $button); if (isset($ex) && $ex == "true") { $useResultForm = false; } else { $resultForm .= "
"; $resultForm .= ""; $resultForm .= ""; $resultForm .= "
"; $resultForm .= "'"; echo $resultForm; } break; case 'cancel_login': $result = 'result_cancel'; $data = "cancel_login"; $param = Webform::encode($privatekey, $session, $data); Webform::SetWebformResult($session, $result, $param, $message, $button); if (isset($_POST['ex']) && $_POST['ex'] == 'true') { } else { $resultForm .= "
"; $resultForm .= ""; $resultForm .= ""; $resultForm .= "
"; $resultForm .= "'"; echo $resultForm; } die(); break; case 'sample': $data = $_POST["param"]; break; case 'register': $param = $_GET["param"]; // Encode-olt adat $param = Webform::decode($privatekey, $session, $param); // Adat decode-olása $param = "?" . $param; $serial = Webform::get_valueFromStringUrl($param, "password"); $npid = Webform::get_valueFromStringUrl($param, "npid"); $isid = Webform::get_valueFromStringUrl($param, "isid"); $comp_name = Webform::get_valueFromStringUrl($param, "name"); $ex = Webform::get_valueFromStringUrl($param, "ex"); $instcode = Webform::get_valueFromStringUrl($param, "instcode"); $lang = Webform::get_valueFromStringUrl($param, "lang"); $isTwTw = Webform::get_valueFromStringUrl($param, "twtw") == 'true'; $seatID = Webform::get_valueFromStringUrl($param, "seatid"); $build = Webform::get_valueFromStringUrl($param, "build"); $ver8And9 = crm_hardlock::GetVer8And9FromPassword($serial); $isFloating = 'false'; $isOffline = 'false'; if (crm_hardlock::isEmergencyServer($_GET['secondary'])) { $error = crm_hardlock::GetActivationError(crm_hardlock::SERVER_DOWN); $result = 'result_ok'; $data = ' true ' . $error . ' '; goto resultBack; } crm_hardlock::InsertLog($serial); if (isset($instcode) && Codegen::IsValidTimeCode($instcode)) { // 2020-tol a telepites ota eltelt idot jelzi a regisztracio // Amennyiben a telepitesi kod es a password parban all, akkor a valos eltelt idot jelzi $countryNotOK = Codegen::IsSoftwareKey($serial) ? false : Codegen::GetCountryFromTimeCode($installationCode) != Codegen::GetCountryFromPassword($serial); if (substr($instcode, 0, 4) != substr($serial, 2, 4) || $countryNotOK) { // Az installalasi kod nincs parban a passwordel, ilyenkor le kell generalni az installalasi kodot $instcode = ''; $numOfDays = 0; $registrationDate = crm_hardlock::GetInstallationDate_noRegisterAndValidate($serial, $isid, $instcode, $isTwTw); if ($registrationDate != '') { // Ha nem sikerult megallapitani a telepitesi datumot, akkor a mai napot allitjuk be if (strpos($registrationDate, 'error:') === false) { $dateNow = new DateTime(date('Y-m-d')); if ($isTwTw) $numOfDays = Codegen::GetDayInterval(crm_hardlock::getTwTwRootTimeString(), $dateNow->format('Y-m-d')); else $numOfDays = Codegen::GetDayInterval($registrationDate, $dateNow->format('Y-m-d')); $instcode = Codegen::GenerateTimeCode($serial, $isid, $numOfDays); } } } } else $instcode = ''; if (isset($ex) && $ex == "true") $useResultForm = true; // isid kiegeszitese 0-val crm_hardlock::correctIsid($isid); $softwarekey = Codegen::IsSoftwareKey($serial); if (!$softwarekey) // A regisztracional a gepazonositot kuldi a program, ez hardware kulcsnal nem alkalmazhato $isid = crm_hardlock::GetIsidFromPasswordForHardwareKeys($serial); $register_result = crm_hardlock::RegisterProgram($serial, $isid, $instcode, $npid, $comp_name, $isTwTw, $seatID, $build); if (substr($register_result, 0, 6) == "error:") crm_hardlock::_Hibajelento("regisztracio", substr($serial, 0, 6), "isid: {$isid}, valasz: {$register_result}"); if (substr($register_result, 0, 6) == "error:") $result = 'result_cancel'; else $result = 'result_ok'; $query = "SELECT * FROM `" . CRMADATBAZIS . "`.`computers` WHERE computer_id = ?"; Database::getInstance()->query($query, array('s', $npid)); $computers = Database::getInstance()->fetchNext(); $query = "SELECT * FROM `" . CRMADATBAZIS . "`.`p_serial_isid` WHERE serial = ? AND isid = ? AND aktiv = ?"; Database::getInstance()->query($query, array('ssi', $serial, $isid, 1)); $p_serial_isid = Database::getInstance()->fetchNext(); if (empty($p_serial_isid) || $p_serial_isid['computer_id'] == $computers['id']) $npidOK = 'true'; else $npidOK = 'false'; if (substr($register_result, 0, 6) != "error:") { if ($isTwTw) $aktkod = crm_hardlock::GetOrGenerateTimeCodeTWTW($serial, $isid, $instcode, $npid, $computers['computer_name'], $seatID, $build, false); else $aktkod = crm_hardlock::GetOrGenerateTimeCode($serial, $isid, $instcode, $npid, $computers['computer_name']); } if ($ver8And9 >= 40) { if ($ver8And9 > 40 || ($ver8And9 == 40 && $build > '255' && $build != '')) { $query = "SELECT isFloating FROM `" . CRMADATBAZIS . "`.`hardlock` WHERE hlNum = ?"; Database::getInstance()->query($query, array('s', substr($serial, 0, 6))); $key = Database::getInstance()->fetchNext(); if ($key['isFloating'] == 1) { $isFloating = 'true'; $query = "SELECT * FROM `" . SYNCADATBAZIS . "`.`floating_licenses` WHERE hlNum = ? AND seatID = ?"; Database::getInstance()->query($query, array('ss', substr($serial, 0, 6), $seatID)); $floatingLic = Database::getInstance()->fetchNext(); if (!empty($floatingLic) && $floatingLic['offline_expiration_date'] != '') { $isOffline = 'true'; $days = Codegen::GetDayInterval(crm_hardlock::getTwTwRootTimeString(), $floatingLic['offline_expiration_date']); $aktkod = Codegen::GenerateTimeCode($serial, $isid, $days); } } } } $data = ' ' . $npidOK . ' ' . ((isset($aktkod)) && substr($register_result, 0, 6) != "error:" ? '' . $aktkod . '' : '') . ' ' . ((isset($register_result)) && substr($register_result, 0, 6) == "error:" ? '' . $register_result . '' : '') . ' ' . $isFloating . ' ' . $isOffline . ' '; if ($lang == 'hun') { $message = 'Nyomja meg az alábbi gombot, hogy licencét ezen a gépen regisztrálja:'; $button = "LICENC REGISZTRÁLÁS"; } else { $message = 'To register your license on this computer, please press the following button:'; $button = "REGISTER MY LICENSE"; } break; case 'unregister': $param = $_GET["param"]; // Encode-olt adat $param = Webform::decode($privatekey, $session, $param); // Adat decode-olása $param = "?" . $param; $serial = Webform::get_valueFromStringUrl($param, "password"); $isid = Webform::get_valueFromStringUrl($param, "isid"); $npid = Webform::get_valueFromStringUrl($param, "npid"); $ex = Webform::get_valueFromStringUrl($param, "ex"); $lang = Webform::get_valueFromStringUrl($param, "lang"); if (crm_hardlock::isEmergencyServer($_GET['secondary'])) { $error = crm_hardlock::GetActivationError(crm_hardlock::SERVER_DOWN); $result = 'result_ok'; $data = ' true ' . $error . ' '; goto resultBack; } if (isset($ex) && $ex == "true") $useResultForm = true; // isid kiegeszitese 0-val crm_hardlock::correctIsid($isid); $query = "SELECT * FROM `" . CRMADATBAZIS . "`.`computers` WHERE computer_id = ?"; Database::getInstance()->query($query, array('s', $npid)); $computers = Database::getInstance()->fetchNext(); $query = "SELECT * FROM `" . CRMADATBAZIS . "`.`p_serial_isid` WHERE serial = ? AND isid = ? AND aktiv = ?"; Database::getInstance()->query($query, array('ssi', $serial, $isid, 1)); $p_serial_isid = Database::getInstance()->fetchNext(); if (empty($p_serial_isid) || $p_serial_isid['computer_id'] == $computers['id']) $npidOK = 'true'; else $npidOK = 'false'; $register_result = crm_hardlock::UnRegisterProgram($serial, $isid, '', $computers['computer_name'], '', 36, false); if (!$register_result) { $error = crm_hardlock::GetActivationError(crm_hardlock::UNREGISTER_FAILED); $result = 'result_cancel'; } else $result = 'result_ok'; $data = ' ' . $npidOK . ' ' . ((isset($error)) ? '' . $error . '' : '') . ' '; if ($lang == 'hun') { $message = 'Ha el akarja távolítani a licencét a számítógépről, kérjük nyomja meg az alábbi gombot:'; $button = "LICENC ELTÁVOLÍTÁSA"; } else { $message = 'If You want to remove Your license from this computer, please press the following button:'; $button = "RELEASE MY LICENSE"; } break; case 'selectProgramDialog': $result = isset($_POST['result_ok']) && isset($_POST['prPass']) && $_POST['prPass'] != '' && Codegen::IsValidPassword($_POST['prPass']) ? 'result_ok' : 'result_cancel'; $prPass = isset($_POST['prPass']) ? $_POST['prPass'] : ''; $restartRequired = Codegen::IsValidPassword($prPass) && isset($_POST['result_ok']) ? 'true' : 'false'; if (isset($ex) && $ex == "true") $useResultForm = true; if ($restartRequired && isset($_POST['param'])) { $param = $_POST["param"]; // Encode-olt adat $param = Webform::decode($privatekey, $session, $param); // Adat decode-olása $param = "?" . $param; $token = Webform::get_valueFromStringUrl($param, "tokenid"); $userID = crm_hardlock::GetUserIdFromToken($token); if ($userID < 0) { Database::getInstance()->update( CRMADATBAZIS . ".custom_login_licenses", array( 'serial' => $prPass ), array('id' => abs($userID)), 'si' ); } if ($userID == false) { die(); } } $data = ' ' . $prPass . ' '; $param = Webform::encode($privatekey, $session, $data); Webform::SetWebformResult($session, $result, $param, $message, $button); if (isset($_POST['ex']) && $_POST['ex'] == 'true') { //header('Location: https://www.archline.hu/maintenance/webform/loginresult.php?lang=' . $lang . '&result=' . $result); } else { $resultForm .= "
"; $resultForm .= ""; $resultForm .= ""; $resultForm .= "
"; $resultForm .= "'"; echo $resultForm; } break; case 'exchange_registration': $param = $_GET["param"]; // Encode-olt adat $param = Webform::decode($privatekey, $session, $param); // Adat decode-olása $param = "?" . $param; $serial = Webform::get_valueFromStringUrl($param, "password"); $npid = Webform::get_valueFromStringUrl($param, "npid"); $isid = Webform::get_valueFromStringUrl($param, "isid"); $comp_name = Webform::get_valueFromStringUrl($param, "name"); $ex = Webform::get_valueFromStringUrl($param, "ex"); $instcode = Webform::get_valueFromStringUrl($param, "instcode"); $lang = Webform::get_valueFromStringUrl($param, "lang"); $isTwTw = Webform::get_valueFromStringUrl($param, "twtw") == 'true'; $seatID = Webform::get_valueFromStringUrl($param, "seatid"); if (isset($ex) && $ex == "true") $useResultForm = true; // isid kiegeszitese 0-val crm_hardlock::correctIsid($isid); $softwarekey = Codegen::IsSoftwareKey($serial); if (!$softwarekey) // A regisztracional a gepazonositot kuldi a program, ez hardware kulcsnal nem alkalmazhato $isid = crm_hardlock::GetIsidFromPasswordForHardwareKeys($serial); $query = "SELECT * FROM `" . CRMADATBAZIS . "`.`p_serial_isid` WHERE serial = ? AND aktiv = ?"; Database::getInstance()->query($query, array('si', $serial, 1)); $p_serial_isid = Database::getInstance()->fetchNext(); $old_isid = $p_serial_isid['isid']; $old_comp_id = $p_serial_isid['computer_id']; $query = "SELECT * FROM `" . CRMADATBAZIS . "`.`computers` WHERE id = ?"; Database::getInstance()->query($query, array('i', $old_comp_id)); $computers = Database::getInstance()->fetchNext(); $register_result = crm_hardlock::UnRegisterProgram($serial, $old_isid, '', $comp_name); if (!$register_result) { $error = crm_hardlock::GetActivationError(crm_hardlock::UNREGISTER_FAILED); $result = 'result_cancel'; } else $result = 'result_ok'; $query = "SELECT * FROM `" . CRMADATBAZIS . "`.`p_serial_isid` WHERE serial = ? AND isid = ? AND aktiv = ?"; Database::getInstance()->query($query, array('ssi', $serial, $isid, 1)); $p_serial_isid = Database::getInstance()->fetchNext(); if (empty($p_serial_isid) || $p_serial_isid['computer_id'] == $computers['id']) $npidOK = 'true'; else $npidOK = 'false'; $register_result = crm_hardlock::RegisterProgram($serial, $isid, $instcode, $npid, $comp_name, $isTwTw, $seatID); if (substr($register_result, 0, 6) == "error:") crm_hardlock::_Hibajelento("regisztracio", substr($serial, 0, 6), "isid: {$isid}, valasz: {$register_result}"); if (substr($register_result, 0, 6) == "error:") $result = 'result_cancel'; else $result = 'result_ok'; if (substr($register_result, 0, 6) != "error:") { if ($isTwTw) $aktkod = crm_hardlock::GetOrGenerateTimeCodeTWTW($serial, $isid, $instcode, $npid, $comp_name, $seatID); else $aktkod = crm_hardlock::GetOrGenerateTimeCode($serial, $isid, $instcode, $npid, $comp_name); } $data = ' ' . $npidOK . ' ' . ((isset($aktkod)) && substr($register_result, 0, 6) != "error:" ? '' . $aktkod . '' : '') . ' ' . ((isset($register_result)) && substr($register_result, 0, 6) == "error:" ? '' . $register_result . '' : '') . ' '; if ($lang == 'hun') { $message = 'Nyomja meg az alábbi gombot, hogy licencét ezen a gépen regisztrálja:'; $button = "LICENC REGISZTRÁLÁS"; } else { $message = 'To register your license on this computer, please press the following button:'; $button = "REGISTER MY LICENSE"; } break; case 'select_distributor': $userID = $_POST['userID']; $distID = $_POST['distID']; if ($userID > 0 && $distID != '') { Database::getInstance()->update( CRMADATBAZIS . ".users", array( 'distID_by_user' => $distID ), array('nUserID' => $userID), 'ii' ); } if (isset($_POST['ex']) && $_POST['ex'] == 'true') { } else { $resultForm .= "
"; $resultForm .= ""; $resultForm .= ""; $resultForm .= ""; $resultForm .= "
"; $resultForm .= "'"; echo $resultForm; } die(); break; case 'unlockLicense': $param = $_GET["param"]; // Encode-olt adat $param = Webform::decode($privatekey, $session, $param); // Adat decode-olása $param = "?" . $param; $serial = Webform::get_valueFromStringUrl($param, "password"); $seatID = Webform::get_valueFromStringUrl($param, "seatid"); if (!crm_hardlock::isEmergencyServer($_GET['secondary'])) { crm_hardlock::floatingUnlock($serial, $seatID); } $result = 'result_ok'; $data = ' ' . $seatID . ' '; break; case 'lockLicense': $param = $_GET["param"]; // Encode-olt adat $param = Webform::decode($privatekey, $session, $param); // Adat decode-olása $param = "?" . $param; $serial = Webform::get_valueFromStringUrl($param, "password"); $seatID = Webform::get_valueFromStringUrl($param, "seatid"); $isid = Webform::get_valueFromStringUrl($param, "isid"); $npid = Webform::get_valueFromStringUrl($param, "npid"); $ex = Webform::get_valueFromStringUrl($param, "ex"); $build = $_GET['build']; if (crm_hardlock::isEmergencyServer($_GET['secondary'])) { $floatingLock = true; crm_hardlock::secondaryServerLog($serial, 'lockLicense', 'A floating lock lefutott'); } else { $floatingError = ''; $computerID = crm_hardlock::getComputerIdFromNpid($npid); $floatingLock = crm_hardlock::floatingLock($serial, $seatID, $computerID, $floatingError); } $message = 'Floating Lock message'; $button = 'Floating Lock button'; if (isset($ex) && $ex == "true") { $useResultForm = true; } $error = ''; $result = 'result_ok'; if (!$floatingLock) { $verID = crm_hardlock::GetVerIdFromPassword($serial); $error = crm_hardlock::convertFloatingErrorCodeToString($floatingError, $verID, $build); } $data = ' ' . $seatID . ' ' . ((isset($error)) ? '' . $error . '' : '') . ' '; break; case 'offlineFloating': $serial = $_POST['serial']; $seatID = $_POST['seatID']; $actDate = date("Y-m-d", strtotime($_POST['actDate'])); // TODO: errorokat lekezelni (pl. aktivalasi kod) $error = ''; // error: invalid date $message = ''; $button = ''; $result = 'result_ok'; $query = "SELECT * FROM `" . CRMADATBAZIS . "`.`h_programs` WHERE prPass = ?"; Database::getInstance()->query($query, array('s', $serial)); $program = Database::getInstance()->fetchNext(); if ($actDate > $program['prFizetve']) $actDate = $program['prFizetve']; Database::getInstance()->update( SYNCADATBAZIS . ".floating_licenses", array( 'offline_expiration_date' => date("Y-m-d", strtotime($_POST['actDate'])) ), array('seatID' => $seatID), 'ss' ); $query = "SELECT * FROM `" . SYNCADATBAZIS . "`.`floating_licenses` WHERE seatID = ?"; Database::getInstance()->query($query, array('s', $seatID)); $floatingLic = Database::getInstance()->fetchNext(); $query = "SELECT * FROM `" . CRMADATBAZIS . "`.`p_serial_isid` WHERE serial = ? AND computer_id = ?"; Database::getInstance()->query($query, array('si', $serial, $floatingLic['computer_id'])); $serialIsid = Database::getInstance()->fetchNext(); $napok = Codegen::GetDayInterval(crm_hardlock::getTwTwRootTimeString(), $actDate, true); if ($actDate >= '2050-01-01') $napok = 3583; $actCode = Codegen::GenerateTimeCode($serial, $serialIsid['isid'], $napok); Database::getInstance()->insert( 'local_crm.floating_log', array( "seatID" => $seatID, "hlNum" => substr($serial, 0, 6), "inserted" => date('Y-m-d H:i:s'), "isid" => $serialIsid['isid'], "eventID" => 3, "computerID" => $floatingLic['computer_id'] ), 'ssssii' ); $data = " {$actCode} true " . ((isset($error) && $error != '') ? '' . $error . '' : '') . " "; $param = Webform::encode($privatekey, $session, $data); Webform::SetWebformResult($session, $result, $param, $message, $button); if (isset($_POST['ex']) && $_POST['ex'] == 'true') { //header('Location: https://www.archline.hu/maintenance/webform/loginresult.php?lang=' . $lang . '&result=' . $result); } else { $resultForm .= "
"; $resultForm .= ""; $resultForm .= ""; $resultForm .= "
"; $resultForm .= "'"; echo $resultForm; } die(); break; case 'removeOffline': $serial = $_POST['serial']; $seatID = $_POST['seatID']; Database::getInstance()->update( SYNCADATBAZIS . ".floating_licenses", array( 'offline_expiration_date' => '' ), array('seatID' => $seatID), 'ss' ); $query = "SELECT * FROM `" . CRMADATBAZIS . "`.`h_programs` WHERE prPass = ?"; Database::getInstance()->query($query, array('s', $serial)); $program = Database::getInstance()->fetchNext(); $actCode = $program['prActCode']; $query = "SELECT * FROM `" . SYNCADATBAZIS . "`.`floating_licenses` WHERE seatID = ?"; Database::getInstance()->query($query, array('s', $seatID)); $key = Database::getInstance()->fetchNext(); $query = "SELECT * FROM `" . CRMADATBAZIS . "`.`p_serial_isid` WHERE serial = ? AND computer_id = ?"; Database::getInstance()->query($query, array('si', $serial, $key['computer_id'])); $p_serial_isid = Database::getInstance()->fetchNext(); Database::getInstance()->insert( 'local_crm.floating_log', array( "seatID" => $seatID, "hlNum" => substr($serial, 0, 6), "inserted" => date('Y-m-d H:i:s'), "isid" => $p_serial_isid['isid'], "eventID" => 4, "computerID" => $key['computer_id'] ), 'ssssii' ); $result = 'result_ok'; $data = " {$actCode} false "; $param = Webform::encode($privatekey, $session, $data); Webform::SetWebformResult($session, $result, $param, $message, $button); if (isset($_POST['ex']) && $_POST['ex'] == 'true') { //header('Location: https://www.archline.hu/maintenance/webform/loginresult.php?lang=' . $lang . '&result=' . $result); } else { $resultForm .= "
"; $resultForm .= ""; $resultForm .= ""; $resultForm .= "
"; $resultForm .= "'"; echo $resultForm; } die(); break; case 'hlPin': $serial = $_POST['serial']; $pin = hash('sha256', $_POST['pin-code']); $seatID = $_POST['seatID']; $query = "SELECT * FROM `" . SYNCADATBAZIS . "`.`hardlock_ext` WHERE hlNum = ? AND pin = ?"; Database::getInstance()->query($query, array('ss', substr($serial, 0, 6), $pin)); $hardlockExt = Database::getInstance()->fetchNext(); $result = 'result_ok'; $error = ''; if (empty($hardlockExt)) { $error = 'error: wrong pin code'; } elseif (!crm_hardlock::isEmergencyServer($_POST['secondary'])) { $query = "SELECT * FROM local_crm.hardlock_ext WHERE hlNum = ?"; Database::getInstance()->query($query, array('s', substr($serial, 0, 6))); $localHardlockExtExist = Database::getInstance()->fetchNext(); if (empty($localHardlockExtExist)) { Database::getInstance()->insert( "local_crm.hardlock_ext", array( "seatIDs" => $seatID, "hlNum" => substr($serial, 0, 6) ), 'ss' ); } else { if (strpos($localHardlockExtExist['seatIDs'], $seatID) === false) { $seatIDString = $localHardlockExtExist['seatIDs'] . ';' . $seatID; Database::getInstance()->update( "local_crm.hardlock_ext", array( 'seatIDs' => $seatIDString ), array('hlNum' => substr($serial, 0, 6)), 'ss' ); } } } $data = " {$seatID} " . ((isset($error)) ? '' . $error . '' : '') . " "; $param = Webform::encode($privatekey, $session, $data); Webform::SetWebformResult($session, $result, $param, $message, $button); if (isset($_POST['ex']) && $_POST['ex'] == 'true') { //header('Location: https://www.archline.hu/maintenance/webform/loginresult.php?lang=' . $lang . '&result=' . $result); } else { $resultForm .= "
"; $resultForm .= ""; $resultForm .= ""; $resultForm .= "
"; $resultForm .= "'"; echo $resultForm; } die(); break; case 'changeComputerName': Database::getInstance()->update( CRMADATBAZIS . ".computers", array( 'custom_name' => $_POST['computerName'] ), array('id' => $_POST['computerID']), 'si' ); header("Location: " . $_SERVER['HTTP_REFERER']); die(); break; case 'get_trial': $result = 'result_ok'; $error = ''; $captchaError = true; $ver = $_POST['ver']; $resource = new Resource($_POST['ctrID']); if ($_SERVER['REMOTE_ADDR'] == '106.120.112.154') { $checkCaptcha = true; } else { $checkCaptcha = crm_hardlock::checkCaptcha($_POST['g-recaptcha-response']); } if (!$checkCaptcha) { $error = $resource->getDlgString('12109'); } if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) { $error = $resource->getDlgString('12106'); $captchaError = false; } $query = "SELECT id, captcha, versionInfo, seatID FROM local_crm.trial_requests WHERE email = ?;"; Database::getInstance()->query($query, array('s', $_POST['email'])); $trialUser = Database::getInstance()->fetchNext(); $captcha = $checkCaptcha ? 'success' : 'failed'; $prod = $_POST['se'] == 'LT' ? 0 : (int)$_POST['prod']; $product = crm_hardlock::getProduction($se, $prod); if (empty($trialUser) && ($error == '' || $captchaError)) { $versionInfoArray[$product] = array(); $versionInfoArray[$product][$ver] = array(); $versionInfoArray[$product][$ver]['count'] = 1; $versionInfo = $error == '' ? json_encode($versionInfoArray, JSON_UNESCAPED_SLASHES) : ''; Database::getInstance()->insert( 'local_crm.trial_requests', array( "firstname" => $_POST['firstname'], "lastname" => $_POST['lastname'], "email" => $_POST['email'], "phone" => $_POST['phone'], "distID" => $_POST['distID'], "insert_date" => date('Y-m-d H:i:s'), "seatID" => $_POST['seatID'], "captcha" => $captcha, "versionInfo" => $versionInfo, "update_date" => date('Y-m-d H:i:s') ), 'ssssisssss', false ); } if (!empty($trialUser)) { $versionInfoArray = json_decode(stripslashes($trialUser['versionInfo']), true); $currentVersionInfo = $versionInfoArray[$product]; $currentVersion = $currentVersionInfo[$ver]; if ($error == '' && $currentVersion != null) { if ($trialUser['seatID'] != $_POST['seatID']) { $currentYear = crm_hardlock::GetLaunchYearFromVer8And9($ver); $error = $resource->getDlgString('12110', $currentYear); } } if ($error == '' && $currentVersion == null) { if (array_key_exists($product, $versionInfoArray)) { $versionInfoArray[$product][$ver]['count'] = 1; } else { $versionInfoArray[$product] = array(); $versionInfoArray[$product][$ver] = array(); $versionInfoArray[$product][$ver]['count'] = 1; } } if ($currentVersion != null && $checkCaptcha) { $versionInfoArray[$product][$ver]['count']++; } if (($error == '' && $currentVersion == null) || ($currentVersion != null && $checkCaptcha)) { $versionInfo = json_encode($versionInfoArray, JSON_UNESCAPED_SLASHES); Database::getInstance()->update( "local_crm.trial_requests", array( 'versionInfo' => $versionInfo, 'update_date' => date('Y-m-d H:i:s') ), array('id' => $trialUser['id']), 'ssi', false ); } } if (!empty($trialUser) && $error == '') { Database::getInstance()->update( "local_crm.trial_requests", array( 'captcha' => $captcha, 'distID' => $_POST['distID'], 'seatID' => $_POST['seatID'], "firstname" => $_POST['firstname'], "lastname" => $_POST['lastname'], "phone" => $_POST['phone'] ), array('id' => $trialUser['id']), 'sissssi' ); } if ($error == '') { $prodName = crm_hardlock::getProductNameByID($prod); $year = crm_hardlock::GetLaunchYearFromVer8And9($ver); $subject = 'ARCHLine.XP ' . $year . ' Trial Request'; $headers = "Content-Type: text/html; charset=utf-8\r\n"; //$headers .= 'Bcc: tamas@cadline.hu, mate.nagy@cadline.hu' . "\r\n"; $query = "SELECT * FROM `" . CRMADATBAZIS . "`.`distributors` WHERE id = ?"; Database::getInstance()->query($query, array('i', $_POST['distID'])); $dealer = Database::getInstance()->fetchNext(); if (!empty($dealer) && $dealer['email'] != '') { $message = "Dear Distributor,

This message is automatically generated because we have received an ARCHLine.XP Trial download with the following user details:

Name: " . $_POST['firstname'] . " " . $_POST['lastname'] . "
Email: " . $_POST['email'] . "
Phone: " . $_POST['phone'] . "
Product: " . $prodName . "
Version: " . $year . "

During installation, the user selected you as the local representative to contact.
" . $dealer['name'] . " Best regards,

partnering@archlinexp.com
www.archlinexp.com
CadLine Ltd.
1037 Budapest, Montevideo street 3/b
Hungary. "; mail($dealer['email'], $subject, $message, $headers); } else { $message = "Name: " . $_POST['firstname'] . " " . $_POST['lastname'] . "
Email: " . $_POST['email'] . "
Phone: " . $_POST['phone'] . "
Distributor: " . $dealer['name'] . "
Product: " . $prodName . "
Version: " . $year . ""; mail('mate.nagy@cadline.hu', $subject, $message, $headers); } $emailSubject = $_POST['ctrID'] == '36' ? "Üdvözlünk az ARCHLine.XP programban! Kezdjük el ...!" : "Welcome to ARCHLine.XP! Let's get started"; crm_hardlock::sentTrialEmail($_POST['email'], $_POST['firstname'] . " " . $_POST['lastname'], $_POST['phone'], $dealer['name'], $prodName, $year, $emailSubject, $_POST['ctrID']); $crmEmailQuery = "SELECT nUserID FROM `" . CRMADATBAZIS . "`.`u_emails` WHERE email = ? LIMIT 1;"; Database::getInstance()->query($crmEmailQuery, array('s', $_POST['email'])); $crmEmail = Database::getInstance()->fetchNext(); if (!empty($crmEmail)) { $topicID = $_POST['ctrID'] == '36' ? 395 : 396; Database::getInstance()->insert( CRMADATBAZIS . ".u_history", array( "nUserID" => $crmEmail['nUserID'], "nTopicID" => $topicID, "dateEvent" => date('Y-m-d'), "strPlace" => "web", "strInfo" => "regisztrált", "nManagerID" => 36, "insertDate" => date('Y-m-d H:i:s') ), 'iisssis' ); $phone = $_POST['phone']; $phone = str_replace('-', '', $phone); $phone = str_replace(' ', '', $phone); $phone = str_replace('+', '', $phone); $phone = str_replace('/', '', $phone); $phone = str_replace('.', '', $phone); $phone = str_replace(' ', '', $phone); $userQuery = "SELECT nUserID, strTel FROM `" . CRMADATBAZIS . "`.`users` WHERE nUserID = ? LIMIT 1;"; Database::getInstance()->query($userQuery, array('i', $crmEmail['nUserID'])); $crmUser = Database::getInstance()->fetchNext(); if (!empty($crmUser) && ($crmUser['strTel'] == '' || !strpos($crmUser['strTel'], $phone))) { if ($crmUser['strTel'] != '') { $strTel = $crmUser['strTel'] . ';' . $phone; } else { $strTel = ';' . $phone; } $updateUserQuery = "UPDATE `" . CRMADATBAZIS . "`.`users` SET strTel = ? WHERE nUserID = ? LIMIT 1;"; Database::getInstance()->query($updateUserQuery, array('si', $strTel, $crmUser['nUserID'])); } } if (!empty($dealer) && $dealer['custom_trial_api'] != '') { $jsonUser = new stdClass(); $jsonUser->name = $_POST['firstname'] . " " . $_POST['lastname']; $jsonUser->email = $_POST['email']; $jsonUser->prodName = $prodName; $jsonUser->year = $year; $jsonUser->phone = $_POST['phone']; $jsonString = json_encode($jsonUser); $encodedJson = base64_encode($jsonString); // base64 encode-olt JSON $postData = [ 'data' => $encodedJson ]; $cURLConnection = curl_init($dealer['custom_trial_api']); curl_setopt($cURLConnection, CURLOPT_RETURNTRANSFER, true); curl_setopt($cURLConnection, CURLOPT_POSTFIELDS, $postData); curl_exec($cURLConnection); } } $data = " " . ((isset($error)) ? '' . $error . '' : '') . " "; $param = Webform::encode($privatekey, $session, $data); Webform::SetWebformResult($session, $result, $param, $message, $button); if (isset($_POST['ex']) && $_POST['ex'] == 'true') { //header('Location: https://www.archline.hu/maintenance/webform/loginresult.php?lang=' . $lang . '&result=' . $result); } else { $resultForm .= "
"; $resultForm .= ""; $resultForm .= ""; $resultForm .= "
"; $resultForm .= "'"; echo $resultForm; } die(); break; case 'aiRender': if (!isset($_POST['param']) || $_POST['param'] == '') { die(); } set_time_limit(600); $privatekey = Webform::GetWebformPrivateKey(); $decoded_param = Webform::decode($privatekey, $session, $_POST['param']); $decoded_param = "?{$decoded_param}"; $alToken = Webform::get_valueFromStringUrl($decoded_param, "tokenid"); $fileName = Webform::get_valueFromStringUrl($decoded_param, "fileName"); $serial = Webform::get_valueFromStringUrl($decoded_param, "serial"); $baseUrl = 'https://www.archlinexp.com/maintenance/webform/ai_render_upload.php?'; $baseUrl .= 'session=' . $_POST['session'] . '¶m=' . $_POST['param'] . '&cnt=' . $_POST['cnt']; $promptEng = isset($_POST['prompt']) && $_POST['prompt'] != '' ? $_POST['prompt'] : 'Modern'; $nUserID = crm_hardlock::GetUserIdFromToken($alToken); if ($nUserID < 0) { $crmUserId = crm_hardlock::checkJoomlaAccount($serial); if (!$crmUserId) { $resource = new Resource($_POST['cnt']); echo ''; echo '

' . $resource->getDlgString('12519') . '

'; die(); } $nUserID = $crmUserId; } $remainingCredits = crm_hardlock::getRemainingCredits($nUserID); $creditNumber = $_POST['type'] == 'video' ? 10 : 1; if ($remainingCredits < $creditNumber) { header('Location: ' . $baseUrl); die(); } if (substr($serial, 0, 2) == '99') { $query = "SELECT * FROM mobileview.ai_render_credit_history WHERE nUserID = ?;"; Database::getInstance()->query($query, array('i', $nUserID)); $res = Database::getInstance()->fetchNext(); if (empty($res)) { header('Location: ' . $baseUrl); die(); } } $viewerUrl = 'https://mobileview.archlinexp.com'; $authorization = 'Authorization: al-jHfdBNh458754bnfgjhsdfj834j54bndFjSFsdb348hN98jngUnjngRTbjngjn4x'; $token = ''; $fileUrl = isset($_POST['fileUrl']) ? $_POST['fileUrl'] : ''; $renderId = ''; $guid = ''; $roomType = isset($_POST['roomType']) ? $_POST['roomType'] : ''; $roomStyle = isset($_POST['roomStyle']) ? $_POST['roomStyle'] : ''; $movementType = isset($_POST['movementType']) ? $_POST['movementType'] : ''; $direction = isset($_POST['direction']) ? $_POST['direction'] : ''; $error_msg = ''; $loginResult = array(); $loginResult['tokenId'] = $alToken; $loginJsonContent = json_encode($loginResult); $curl = curl_init($viewerUrl . '/api/al-login'); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/json", $authorization)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($curl, CURLOPT_POSTFIELDS, $loginJsonContent); $json_login_response = curl_exec($curl); curl_close($curl); if ($json_login_response) { $loginResponse = json_decode($json_login_response); if (isset($loginResponse->token) && $loginResponse->token != '') { $token = $loginResponse->token; } } if ($token == '') { // TODO: Hiba echo 'An Error occured. Missing token.'; die(); } if ($fileUrl == '') { $imageResult = array(); $imageResult['fileName'] = $fileName; $imageJsonContent = json_encode($imageResult); $curl = curl_init($viewerUrl . '/api/render/getRenderImage'); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/json", $authorization)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($curl, CURLOPT_POSTFIELDS, $imageJsonContent); $json_image_response = curl_exec($curl); curl_close($curl); if ($json_image_response) { $imageResponse = json_decode($json_image_response); if (isset($imageResponse->fileUrl) && $imageResponse->fileUrl != '') { $fileUrl = $imageResponse->fileUrl; } } } if ($fileUrl == '') { // TODO: Hiba echo 'An Error occured. Missing file.'; die(); } $renderFields = [ 'fileUrl' => $fileUrl, 'external' => true, 'prompt' => $promptEng, 'scenario' => strtolower($_POST['scenario']), 'style' => strtolower($_POST['style']), 'type' => strtolower($_POST['type']), 'imgType' => strtolower($_POST['imgType']), 'roomType' => $roomType, 'roomStyle' => $roomStyle, 'movementType' => $movementType, 'direction' => $direction ]; $curl = curl_init($viewerUrl . '/api/render/renderImage'); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . $token)); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $renderFields); $json_render_response = curl_exec($curl); curl_close($curl); if ($json_render_response) { $renderResponse = json_decode($json_render_response); if (isset($renderResponse->renderId) && $renderResponse->renderId != '') { $guid = $renderResponse->guid; $renderId = $renderResponse->renderId; } else { if (isset($renderResponse->errors)) { $curl = curl_init($viewerUrl . '/api/logout'); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . $token)); curl_setopt($curl, CURLOPT_POST, true); curl_exec($curl); curl_close($curl); echo $renderResponse->errors->message; die(); } } } if ($guid == '' || $renderId == '') { if (substr($serial, 0, 6) == 950298) { echo $json_render_response; die(); } echo 'An Error occured.'; die(); } $imageFields = [ 'renderId' => $renderId, 'guid' => $guid, 'fileName' => $fileName, 'type' => strtolower($_POST['type']) ]; $imageStatus = 'pending'; $error = false; $message = ''; $curl = curl_init($viewerUrl . '/api/render/getAiRenderImage'); do { sleep(10); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . $token)); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $imageFields); $json_rendered_image_response = curl_exec($curl); if ($json_rendered_image_response) { $renderedImageResponse = json_decode($json_rendered_image_response); if (isset($renderedImageResponse->status) && $renderedImageResponse->status != '') { $imageUrl = $renderedImageResponse->url; $imageStatus = $renderedImageResponse->status; if ($imageStatus == 'error') { $error = true; break; } if ($imageStatus == 'success') { $error = false; break; } } else { $error = true; break; } } else { $error = true; break; } } while ($imageStatus != 'success' && $imageStatus != 'error'); curl_close($curl); if ($error) { echo 'An Error occured.'; die(); } $curl = curl_init($viewerUrl . '/api/logout'); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . $token)); curl_setopt($curl, CURLOPT_POST, true); curl_exec($curl); curl_close($curl); $baseUrl .= $baseUrl . '&render=' . $guid; header('Location: ' . $baseUrl); die(); break; default: die(); break; } resultBack: if ($data != '') { $param = Webform::encode($privatekey, $session, $data); if (!crm_hardlock::isEmergencyServer($_GET['secondary'])) { Webform::SetWebformResult($session, $result, $param, $message, $button); } /*if (crm_hardlock::isEmergencyServer($_GET['secondary'])) { var_dump('session=' . $encodedSession . '&' . $result . '=' . $param); die(); }*/ if ($useResultForm) { $resultForm .= "
"; if ($lang != '') $resultForm .= ""; if ($action == 'exchange_registration') $resultForm .= ""; $resultForm .= ""; $resultForm .= ""; $resultForm .= "
"; $resultForm .= "'"; echo $resultForm; } else { $resultXml .= '<' . '?' . 'xml version="1.0"' . '?' . '>'; $resultXml .= '?session=' . $encodedSession . '&' . $result . '=' . $param . '&'; $resultXml .= ''; header('Content-Type: text/xml; charset=utf-8'); header('Content-Disposition: inline; filename=response.xml'); echo $resultXml; } } /* - kapott adatok (serial, seatid) - xml visszateres - ActCode az XML-be */