function processAuthentications()
{
    if (isset($_POST[POST_INTERN_PROCESS_AUTHENTICATIONS . "_va"])) {
        if (isValidated()) {
            appendAuthentications();
        }
    }
}
function validate($_basic = false)
{
    global $INTERNAL, $GROUPS, $RESPONSE, $CONFIG, $CM;
    if (!empty($CONFIG["gl_rhts"]) && getScheme() != SCHEME_HTTP_SECURE) {
        define("AUTH_RESULT", LOGIN_REPLY_HTTPS);
    } else {
        if (DB_CONNECTION || SERVERSETUP) {
            if (!empty($_POST[POST_INTERN_AUTHENTICATION_USERID]) && !empty($_POST[POST_INTERN_AUTHENTICATION_PASSWORD])) {
                foreach ($INTERNAL as $sysId => $operator) {
                    if (strtolower($operator->UserId) == strtolower($_POST[POST_INTERN_AUTHENTICATION_USERID])) {
                        if ($operator->ValidateLoginAttempt()) {
                            if (!empty($operator->Password) && ($operator->Password == md5($_POST[POST_INTERN_AUTHENTICATION_PASSWORD]) || sha1($operator->Password) == $_POST[POST_INTERN_AUTHENTICATION_PASSWORD])) {
                                define("CALLER_SYSTEM_ID", $sysId);
                                if ($_basic) {
                                    define("VALIDATED", true);
                                    return;
                                }
                                if (!empty($CM)) {
                                    $operator->LoadUnCacheables();
                                }
                                if (isset($_POST[POST_INTERN_NEW_PASSWORD])) {
                                    $INTERNAL[CALLER_SYSTEM_ID]->ChangePassword($_POST[POST_INTERN_NEW_PASSWORD], true, true);
                                    $RESPONSE->Authentications = "<val userid=\"" . base64_encode(CALLER_SYSTEM_ID) . "\" pass=\"" . base64_encode($_POST[POST_INTERN_NEW_PASSWORD]) . "\" />\r\n";
                                }
                                if (empty($_POST["p_db_no_req"]) && !DB_CONNECTION) {
                                    define("AUTH_RESULT", LOGIN_REPLY_DB);
                                    break;
                                }
                                if (!LOGIN && !SERVERSETUP) {
                                    if ($operator->Deactivated) {
                                        define("AUTH_RESULT", LOGIN_REPLY_ACCOUNT_DEACTIVATED);
                                        break;
                                    }
                                    if (!$operator->ClientWeb && $operator->LastActive < time() - $CONFIG["timeout_clients"] && $_POST[POST_INTERN_AUTHENTICATION_LOGINID] == $operator->LoginId) {
                                        define("AUTH_RESULT", LOGIN_REPLY_SESSION_TIMEOUT);
                                        break;
                                    }
                                    if ($operator->SignOffRequest || !empty($_POST["p_app_device_id"]) && $operator->AppDeviceId != "LOGIN" && $operator->AppDeviceId != $_POST["p_app_device_id"]) {
                                        $operator->SignOff(false);
                                        define("AUTH_RESULT", LOGIN_REPLY_SIGN_OFF_REQUEST);
                                        break;
                                    }
                                    if (!empty($operator->LoginId) && !empty($_POST[POST_INTERN_AUTHENTICATION_LOGINID]) && $_POST[POST_INTERN_AUTHENTICATION_LOGINID] != $operator->LoginId) {
                                        define("AUTH_RESULT", LOGIN_REPLY_BAD_COMBINATION);
                                        break;
                                    }
                                } else {
                                    if (LOGIN && !SERVERSETUP) {
                                        $operator->AppClient = !empty($_POST["p_app"]);
                                        $operator->ClientWeb = !empty($_POST["p_web"]);
                                        if (($operator->AppClient || $operator->ClientWeb) && $operator->GetPermission(45, PERMISSION_FULL) == PERMISSION_NONE) {
                                            define("AUTH_RESULT", LOGIN_REPLY_NO_MOBILE_ACCESS);
                                            break;
                                        } else {
                                            if ($operator->Deactivated) {
                                                define("AUTH_RESULT", LOGIN_REPLY_ACCOUNT_DEACTIVATED);
                                                break;
                                            } else {
                                                if ($operator->SignOffRequest) {
                                                    $operator->SignOff(false);
                                                    define("AUTH_RESULT", LOGIN_REPLY_SIGN_OFF_REQUEST);
                                                    break;
                                                } else {
                                                    if (empty($_POST[POST_INTERN_IGNORE_SIGNED_ON]) && $operator->LastActive > time() - $CONFIG["timeout_clients"] && !empty($operator->LoginId) && $_POST[POST_INTERN_AUTHENTICATION_LOGINID] != $operator->LoginId) {
                                                        define("AUTH_RESULT", LOGIN_REPLY_ALREADY_ONLINE);
                                                        break;
                                                    } else {
                                                        if ($operator->PasswordChangeRequest) {
                                                            define("AUTH_RESULT", LOGIN_REPLY_CHANGE_PASS);
                                                            break;
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    } else {
                                        if (SERVERSETUP && $operator->Level != USER_LEVEL_ADMIN) {
                                            if (!(in_array($CONFIG["gl_host"], $operator->WebsitesUsers) && !empty($_POST[POST_INTERN_GET_MANAGEMENT])) && !(in_array($CONFIG["gl_host"], $operator->WebsitesConfig) && empty($_POST[POST_INTERN_GET_MANAGEMENT]))) {
                                                define("AUTH_RESULT", LOGIN_REPLY_NOADMIN);
                                                break;
                                            }
                                        }
                                    }
                                }
                                define("VALIDATED", true);
                                if (!LOGOFF && isset($_POST[POST_INTERN_AUTHENTICATION_LOGINID])) {
                                    $operator->LoginId = $_POST[POST_INTERN_AUTHENTICATION_LOGINID];
                                } elseif (LOGOFF) {
                                    $operator->LoginId = null;
                                }
                                define("AUTH_RESULT", LOGIN_REPLY_SUCCEEDED);
                                break;
                            } else {
                                $operator->DeleteLoginAttempts();
                                $operator->SaveLoginAttempt(md5($_POST[POST_INTERN_AUTHENTICATION_PASSWORD]));
                                break;
                            }
                        }
                    }
                }
            }
        } else {
            define("AUTH_RESULT", LOGIN_REPLY_DB);
        }
    }
    if (isValidated() && LOGIN) {
        $INTERNAL[CALLER_SYSTEM_ID]->IP = getIP();
        $INTERNAL[CALLER_SYSTEM_ID]->FirstActive = time();
        $INTERNAL[CALLER_SYSTEM_ID]->VisitorFileSizes = array();
        $INTERNAL[CALLER_SYSTEM_ID]->VisitorStaticReload = array();
        $isex = !empty($INTERNAL[CALLER_SYSTEM_ID]->Groups) && $GROUPS[$INTERNAL[CALLER_SYSTEM_ID]->Groups[0]]->IsExternal;
        $RESPONSE->Login = $INTERNAL[CALLER_SYSTEM_ID]->GetLoginReply($isex, getTimeDifference($_POST[POST_INTERN_CLIENT_TIME]));
    }
    if (!defined("AUTH_RESULT")) {
        define("AUTH_RESULT", LOGIN_REPLY_BAD_COMBINATION);
    }
}
Example #3
0
define("LIVEZILLA_PATH", "../../");
@set_time_limit(30);
require LIVEZILLA_PATH . "_definitions/definitions.inc.php";
require LIVEZILLA_PATH . "_lib/objects.global.users.inc.php";
require LIVEZILLA_PATH . "_lib/functions.global.inc.php";
require LIVEZILLA_PATH . "_definitions/definitions.dynamic.inc.php";
require LIVEZILLA_PATH . "_definitions/definitions.protocol.inc.php";
require LIVEZILLA_PATH . "_lib/functions.internal.inc.php";
require LIVEZILLA_PATH . "_lib/objects.internal.inc.php";
@set_error_handler("handleError");
@error_reporting(E_ALL);
header("Pragma: no-cache");
header("Cache-Control: no-cache, must-revalidate");
header("Keep-Alive: timeout=5, max=100");
initDataProvider();
initData(array("INTERNAL", "INPUTS"));
validate(true);
if (isValidated() && is("CALLER_SYSTEM_ID")) {
    if ($INTERNAL[CALLER_SYSTEM_ID]->GetPermission(46) != PERMISSION_NONE) {
        require "objects.apiv2.inc.php";
        $apiv2 = new ApiV2(isset($_POST["p_json_pretty"]));
        if ($apiv2->RunActions() && empty($apiv2->ErrorField) && !empty($apiv2->JSONOutput)) {
            exit($apiv2->JSONOutput);
        } else {
            header("HTTP/1.1 400 Bad Request");
            exit("HTTP/1.1 400 Bad Request" . $apiv2->GetErrorCodes());
        }
    }
}
header("HTTP/1.1 403 Forbidden");
exit("HTTP/1.1 403 Forbidden");
 function SetPasswordChangeNeeded($_needed)
 {
     if (isValidated() || !$_needed) {
         $this->PasswordChangeRequest = $_needed;
         queryDB(true, "UPDATE `" . DB_PREFIX . DATABASE_OPERATORS . "` SET `password_change_request`='" . ($_needed ? "1" : "0") . "' WHERE `system_id`='" . DBManager::RealEscape($this->SystemId) . "' LIMIT 1;");
     }
 }
function setConfig($id = 0)
{
    global $INTERNAL, $RESPONSE, $STATS, $CONFIG;
    administrationLog("setConfig", "", CALLER_SYSTEM_ID);
    if (isValidated() && ($INTERNAL[CALLER_SYSTEM_ID]->Level == USER_LEVEL_ADMIN || in_array($CONFIG["gl_host"], $INTERNAL[CALLER_SYSTEM_ID]->WebsitesConfig))) {
        if (is("STATS_ACTIVE") && !empty($_POST["p_reset_stats"])) {
            $STATS->ResetAll();
        }
        $int = 0;
        $file = ISSUBSITE || $INTERNAL[CALLER_SYSTEM_ID]->Level != USER_LEVEL_ADMIN ? str_replace("config.inc", "config." . SUBSITEHOST . ".inc", FILE_CONFIG) : FILE_CONFIG;
        if (DB_CONNECTION && (!ISSUBSITE || file_exists($file))) {
            queryDB(true, "UPDATE `" . DB_PREFIX . DATABASE_COMMERCIAL_CHAT_TYPES . "` SET `delete`='1';");
            queryDB(true, "DELETE FROM `" . DB_PREFIX . DATABASE_COMMERCIAL_CHAT_LOCALIZATIONS . "`;");
            while (!empty($_POST["p_cfg_cct_id_" . $int])) {
                $cct = new CommercialChatBillingType($_POST["p_cfg_cct_id_" . $int], $_POST["p_cfg_cct_mnoc_" . $int], $_POST["p_cfg_cct_mtloc_" . $int], $_POST["p_cfg_cct_tae_" . $int], $_POST["p_cfg_cct_tvbo_" . $int], $_POST["p_cfg_cct_svbo_" . $int], $_POST["p_cfg_cct_evbo_" . $int], $_POST["p_cfg_cct_citl_" . $int], $_POST["p_cfg_cct_p_" . $int]);
                $cct->Save();
                $iint = 0;
                while (!empty($_POST["p_cfg_cctli_id_" . $int . "_" . $iint])) {
                    $cctl = new CommercialChatVoucherLocalization($_POST["p_cfg_cctli_id_" . $int . "_" . $iint], $_POST["p_cfg_cctli_itl_" . $int . "_" . $iint], $_POST["p_cfg_cctli_t_" . $int . "_" . $iint], $_POST["p_cfg_cctli_d_" . $int . "_" . $iint], $_POST["p_cfg_cctli_terms_" . $int . "_" . $iint], $_POST["p_cfg_cctli_emvc_" . $int . "_" . $iint], $_POST["p_cfg_cctli_emvp_" . $int . "_" . $iint], $_POST["p_cfg_cctli_emvu_" . $int . "_" . $iint], $_POST["p_cfg_cctli_exr_" . $int . "_" . $iint]);
                    $cctl->Save($_POST["p_cfg_cct_id_" . $int]);
                    $iint++;
                }
                $int++;
            }
            $int = 0;
            queryDB(true, "DELETE FROM `" . DB_PREFIX . DATABASE_COMMERCIAL_CHAT_PROVIDERS . "`;");
            while (!empty($_POST["p_cfg_ccpp_id_" . $int])) {
                $ccpp = new CommercialChatPaymentProvider($_POST["p_cfg_ccpp_id_" . $int], $_POST["p_cfg_ccpp_n_" . $int], $_POST["p_cfg_ccpp_a_" . $int], $_POST["p_cfg_ccpp_u_" . $int], $_POST["p_cfg_ccpp_l_" . $int]);
                $ccpp->Save();
                $int++;
            }
            $int = 0;
            queryDB(true, "DELETE FROM `" . DB_PREFIX . DATABASE_MAILBOXES . "`;");
            while (!empty($_POST["p_cfg_es_i_" . $int])) {
                $acc = new Mailbox($int, true);
                $acc->Save();
                $int++;
            }
            queryDB(true, "DELETE FROM `" . DB_PREFIX . DATABASE_COMMERCIAL_CHAT_TYPES . "` WHERE `delete`='1';");
            queryDB(true, "DELETE FROM `" . DB_PREFIX . DATABASE_CONFIG . "`;");
            foreach ($_POST as $key => $value) {
                if (strpos($key, "p_cfg_g_") === 0) {
                    $skey = str_replace("p_cfg_g_", "", $key);
                    $value = base64_decode($value);
                    queryDB(true, "REPLACE INTO `" . DB_PREFIX . DATABASE_CONFIG . "` (`key`,`value`) VALUES ('" . DBManager::RealEscape($skey) . "','" . DBManager::RealEscape($value) . "');");
                }
            }
        }
        if (isset($_POST["p_available"])) {
            setAvailability(!empty($_POST["p_available"]));
        }
        $id = createFile($file, base64_decode($_POST["p_upload_value"]), true);
        $int = 1;
        $delete = false;
        while (isset($_POST["p_int_trans_iso_" . $int]) && strpos($_POST["p_int_trans_iso_" . $int], "..") === false) {
            $file = getLocalizationFileString($_POST["p_int_trans_iso_" . $int], false);
            if (!isset($_POST["p_int_trans_delete_" . $int])) {
                createFile($file, $_POST["p_int_trans_content_" . $int], true);
            } else {
                $delete = true;
                if (file_exists($file)) {
                    @unlink($file);
                }
                if (empty($CONFIG["gl_root"])) {
                    createFile($file, "", true);
                }
            }
            $int++;
        }
        if (!$delete && (!@file_exists($file) || @file_exists($file) && @filemtime($file) !== false && @filemtime($file) < time() - 10)) {
            header("HTTP/1.1 502 Bad Gateway");
            exit("HTTP/1.1 502 Bad Gateway");
        }
    }
    removeSSpanFile(true);
    setIdle(0);
    $RESPONSE->SetStandardResponse($id, "");
}
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
} else {
    $RESPONSE->SetValidationError(AUTH_RESULT);
}
if (isValidated() && !SERVERSETUP) {
    if (LOGOFF || LOGIN) {
        if (LOGOFF) {
            $INTERNAL[CALLER_SYSTEM_ID]->GetExternalObjects();
        }
        foreach ($INTERNAL[CALLER_SYSTEM_ID]->ExternalChats as $chat) {
            $chat->Load();
            if ($chat->Members[CALLER_SYSTEM_ID]->Status == 0 && count($chat->Members) <= 1) {
                $chat->InternalClose(CALLER_SYSTEM_ID);
            } else {
                if ($chat->Status == 1 && $chat->Members[CALLER_SYSTEM_ID]->Status != 2) {
                    $chat->InternalDecline(CALLER_SYSTEM_ID);
                } else {
                    $chat->LeaveChat(CALLER_SYSTEM_ID);
                }
            }