$error_error

"; } elseif (!empty($input)) { $error_error = $input; } } function success_msg($input = false) { global $success_msg; if (!empty($success_msg)) { echo "

$success_msg

"; } elseif (!empty($input)) { $success_msg = $input; } } function GetRaceID($race) { switch ($race) { case "HUMAN": return 1; case "ORC": return 2; case "DWARF": return 3; case "NIGHTELF": return 4; case "SCOURGE": return 5; case "TAUREN": return 6; case "GNOME": return 7; case "TROLL": return 8; case "BLOODELF": return 10; case "DRAENEI": return 11; default: exit("error"); } } function GetClassID($class) { switch ($class) { case "WARRIOR": return 1; case "PALADIN": return 2; case "HUNTER": return 3; case "ROGUE": return 4; case "PRIEST": return 5; case "DEATHKNIGHT": return 6; case "SHAMAN": return 7; case "MAGE": return 8; case "WARLOCK": return 9; case "DRUID": return 11; default: exit("
YOUR CHARACTER CLASS IS NOT BLIZZLIKE FOR 3.3.5a
"); } } function get_human_time_from_sec($seconds) { $interval = new DateInterval("PT{$seconds}S"); $now = new DateTimeImmutable('now', new DateTimeZone('utc')); return $now->diff($now->add($interval))->format('%a:%h:%i'); } function send_phpmailer($email, $subject, $message) { try { $mail = new PHPMailer(true); if (get_config('debug_mode')) { $mail->SMTPDebug = 2; } $mail->isSMTP(); $mail->Host = get_config('smtp_host'); $mail->SMTPAuth = get_config('smtp_auth'); $mail->Username = get_config('smtp_user'); $mail->Password = get_config('smtp_pass'); $mail->SMTPSecure = get_config('smtp_secure'); $mail->Port = get_config('smtp_port'); //Recipients $mail->setFrom(get_config('smtp_mail')); $mail->addAddress($email); // Add a recipient $mail->addReplyTo(get_config('smtp_mail')); // Content $mail->isHTML(true); $mail->Subject = $subject; $mail->Body = $message; $mail->send(); } catch (Exception $e) { if (get_config('debug_mode')) { echo 'Message: ' . $e->getMessage(); } } return true; } function generateRandomString($length = 10) { $characters = '0123456789abcdefghijklmnopqrstuvwxyz'; $charactersLength = strlen($characters); $randomString = ''; for ($i = 0; $i < $length; $i++) { $randomString .= $characters[rand(0, $charactersLength - 1)]; } return $randomString; } function RemoteCommandWithSOAP($COMMAND) { global $soap_connection_info; if (empty($COMMAND)) { return false; } try { $conn = new SoapClient(NULL, array( 'location' => 'http://' . get_config('soap_host') . ':' . get_config('soap_port') . '/', 'uri' => get_config('soap_uri'), 'style' => get_config('soap_style'), 'login' => get_config('soap_username'), 'password' => get_config('soap_password') )); $conn->executeCommand(new SoapParam($COMMAND, 'command')); unset($conn); return true; } catch (Exception $e) { return false; } } function validate_hcaptcha($value) { try { $data = array( 'secret' => get_config('captcha_secret'), 'response' => $_POST['h-captcha-response'] ); $verify = curl_init(); curl_setopt($verify, CURLOPT_URL, "https://hcaptcha.com/siteverify"); curl_setopt($verify, CURLOPT_POST, true); curl_setopt($verify, CURLOPT_POSTFIELDS, http_build_query($data)); curl_setopt($verify, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($verify); $responseData = json_decode($response); if ($responseData->success) { return true; } } catch (Exception $e) { } return false; } function validate_recaptcha($value) { try { $verify = curl_init(); curl_setopt($verify, CURLOPT_URL, "https://www.google.com/recaptcha/api/siteverify?secret=" . get_config('captcha_secret') . "&response=" . $_POST['g-recaptcha-response']); curl_setopt($verify, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($verify); $responseData = json_decode($response, true); if ($responseData["success"] == true) { return true; } } catch (Exception $e) { } return false; } function captcha_validation() { if (empty(get_config('captcha_type')) && !empty($_POST['captcha']) && !empty($_SESSION['captcha'])) { if (strtolower($_SESSION['captcha']) != strtolower($_POST['captcha'])) { error_msg('Captcha is not valid.'); return false; } unset($_SESSION['captcha']); } else if (!empty(get_config('captcha_type')) && get_config('captcha_type') > 2) { return true; } elseif (!empty(get_config('captcha_type')) && get_config('captcha_type') == 1 && !empty($_POST['h-captcha-response'])) { if (!validate_hcaptcha($_POST['h-captcha-response'])) { error_msg('HCaptcha is not valid.'); return false; } } elseif (!empty(get_config('captcha_type')) && get_config('captcha_type') == 2 && !empty($_POST['g-recaptcha-response'])) { if (!validate_recaptcha($_POST['g-recaptcha-response'])) { error_msg('ReCaptcha is not valid.'); return false; } } else { error_msg('Captcha is required.'); return false; } return true; } function getCaptchaJS() { if (!empty(get_config('captcha_type'))) { if (get_config('captcha_type') == 1) { return ''; } else if (get_config('captcha_type') == 2) { return ''; } } return ''; } function GetCaptchaHTML() { if (!empty(get_config('captcha_type'))) { if (get_config('captcha_type') == 1) { return '
'; } else if (get_config('captcha_type') == 2) { return '
'; } else { return ''; } } return '
Captcha

'; } // Its from Trinitycore/account-creator function calculateSRP6Verifier($username, $password, $salt) { // algorithm constants $g = gmp_init(7); $N = gmp_init('894B645E89E1535BBDAD5B8B290650530801B18EBFBF5E8FAB3C82872A3E9BB7', 16); // calculate first hash $h1 = sha1(strtoupper($username . ':' . $password), TRUE); // calculate second hash $h2 = sha1($salt . $h1, TRUE); // convert to integer (little-endian) $h2 = gmp_import($h2, 1, GMP_LSW_FIRST); // g^h2 mod N $verifier = gmp_powm($g, $h2, $N); // convert back to a byte array (little-endian) $verifier = gmp_export($verifier, 1, GMP_LSW_FIRST); // pad to 32 bytes, remember that zeros go on the end in little-endian! $verifier = str_pad($verifier, 32, chr(0), STR_PAD_RIGHT); // done! return $verifier; } // Returns SRP6 parameters to register this username/password combination with function getRegistrationData($username, $password) { // generate a random salt $salt = random_bytes(32); // calculate verifier using this salt $verifier = calculateSRP6Verifier($username, $password, $salt); // done - this is what you put in the account table! return array($salt, $verifier); } //From TrinityCore/AOWOW function verifySRP6($user, $pass, $salt, $verifier) { $g = gmp_init(7); $N = gmp_init('894B645E89E1535BBDAD5B8B290650530801B18EBFBF5E8FAB3C82872A3E9BB7', 16); $x = gmp_import( sha1($salt . sha1(strtoupper($user . ':' . $pass), TRUE), TRUE), 1, GMP_LSW_FIRST ); $v = gmp_powm($g, $x, $N); return ($verifier === str_pad(gmp_export($v, 1, GMP_LSW_FIRST), 32, chr(0), STR_PAD_RIGHT)); }