Online PHP and Javascript Decoder decode hidden script to uncover its real functionality


namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Helpers\Smm as Smm_Global; use App\Models\User; use App\Models\Category; use App\Models\Subcategory; use App\Models\Transaction; use App\Models\Services; use App\Models\Server; use App\Models\History_order; use App\Models\Orders; use App\Models\Ticket; use App\Models\Card; use App\Models\Banking; use App\Models\Websites; use App\Models\News; use App\Models\Noti; use App\Models\Activity_log; use App\Models\SmmPanel_Activity; use App\Models\SmmPanel; use App\Models\SmmPanel_percent; use App\Models\Settings; use Illuminate\Support\Str; use Illuminate\Support\Facades\Auth; use App\Http\Requests\Register; use App\Http\Requests\Login; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Mail; use Illuminate\Support\Facades\Session; use Carbon\Carbon; use App\Mail\Gmail; use App\Helpers\Anhyeuem37; use Illuminate\Support\Facades\Log; use Laravel\Socialite\Facades\Socialite; class Client extends Controller { private $domain; private $data; public function __construct(Request $request) { $this->domain = parse_url($request->root(), PHP_URL_HOST); $this->data = array(); } public function redirectToGoogle() { return Socialite::driver("google")->redirect(); } public function index() { $settings = Settings::get(); foreach ($settings as $value) { if ($value["key"] == "title") { $title = $value["value"]; break; } } $this->data["title"] = $title; $this->data["amount_month"] = Transaction::whereYear("created_at", "=", Carbon::now()->year)->whereMonth("created_at", "=", Carbon::now()->month)->where("username", Auth::user()->username)->sum("amount"); $this->data["amount_total"] = Transaction::where("username", Auth::user()->username)->sum("amount"); $this->data["settings"] = Settings::get(); $this->data["news"] = News::where("status", 1)->orderBy("id", "desc")->get(); $this->data["noti"] = Noti::where("status", 1)->orderBy("id", "desc")->get(); $this->data["total_order"] = Orders::where("username", Auth::user()->username)->count(); $this->data["total_order_inprogress"] = Orders::where("status", "inprogress")->where("username", Auth::user()->username)->count(); $this->data["total_order_success"] = Orders::where("status", "success")->where("username", Auth::user()->username)->count(); $this->data["total_order_error"] = Orders::where("status", "error")->where("username", Auth::user()->username)->count(); $this->data["total_order_cancel"] = Orders::where("status", "cancel")->where("username", Auth::user()->username)->count(); return view("index", array("data" => $this->data)); } public function history() { $this->data["title"] = "Lịch sử giao dịch"; $username = Auth::user()->username; $this->data["history"] = History_order::where("username", $username)->orderBy("id", "desc")->paginate(10); $this->data["settings"] = Settings::get(); $this->data["noti"] = Noti::where("status", 1)->orderBy("id", "desc")->get(); return view("history", array("data" => $this->data)); } public function info() { $this->data["title"] = "Thông tin tài khoản"; $username = Auth::user()->username; $this->data["info"] = User::where("username", $username)->first(); $this->data["activity_log"] = Activity_log::where("username", $username)->orderBy("id", "desc")->paginate(10); $this->data["settings"] = Settings::get(); $this->data["noti"] = Noti::where("status", 1)->orderBy("id", "desc")->get(); return view("info", array("data" => $this->data)); } public function register() { $this->data = array("title" => "Đăng ký tài khoản"); $this->data["logo"] = Settings::where("key", "logo")->get(); return view("register", array("data" => $this->data)); } public function login() { $this->data = array("title" => "Đăng nhập hệ thống"); $this->data["logo"] = Settings::where("key", "logo")->get(); return view("login", array("data" => $this->data)); } public function api() { $this->data = array("title" => "Kết nối API"); $username = Auth::user()->username; $this->data["info"] = User::where("username", $username)->first(); $this->data["noti"] = Noti::where("status", 1)->orderBy("id", "desc")->get(); $this->data["settings"] = Settings::get(); return view("api", array("data" => $this->data)); } public function banking() { $this->data = array("title" => "Nạp tiền vào tài khoản"); $this->data["syntax"] = Settings::where("key", "syntax")->first(); $this->data["banking"] = Banking::where("status", 1)->get(); $this->data["noti"] = Noti::where("status", 1)->orderBy("id", "desc")->get(); $username = Auth::user()->username; $this->data["transaction"] = Transaction::where("username", $username)->orderBy("id", "desc")->paginate(10); $this->data["settings"] = Settings::get(); return view("banking", array("data" => $this->data)); } public function card() { $this->data = array("title" => "Nạp tiền thẻ cào"); $this->data["syntax"] = Settings::where("key", "syntax")->first(); $this->data["noti"] = Noti::where("status", 1)->orderBy("id", "desc")->get(); $this->data["card"] = Card::where("username", Auth::user()->username)->orderBy("id", "desc")->paginate(10); $this->data["settings"] = Settings::get(); return view("card", array("data" => $this->data)); } public function upgrade() { $this->data = array("title" => "Nâng cấp tài khoản"); $this->data["syntax"] = Settings::where("key", "syntax")->first(); $this->data["noti"] = Noti::where("status", 1)->orderBy("id", "desc")->get(); $this->data["settings"] = Settings::get(); return view("upgrade", array("data" => $this->data)); } public function get_id() { $this->data = array("title" => "Get UID"); $this->data["syntax"] = Settings::where("key", "syntax")->first(); $this->data["noti"] = Noti::where("status", 1)->orderBy("id", "desc")->get(); $this->data["settings"] = Settings::get(); return view("get-id", array("data" => $this->data)); } public function website() { $this->data = array("title" => "Tạo website riêng"); $username = Auth::user()->username; $this->data["info"] = User::where("username", $username)->first(); $this->data["websites"] = Websites::where("username", $username)->orderBy("id", "desc")->paginate(10); $this->data["settings"] = Settings::get(); $this->data["noti"] = Noti::where("status", 1)->orderBy("id", "desc")->get(); return view("website", array("data" => $this->data)); } public function backup() { $this->data = array("title" => "Khôi phục tài khoản"); $this->data["noti"] = Noti::where("status", 1)->orderBy("id", "desc")->get(); return view("backup", array("data" => $this->data)); } public function ticket() { $this->data = array("title" => "Hỗ trợ - Khiếu nại"); $this->data["order"] = Orders::where("username", Auth::user()->username)->orderBy("id", "desc")->get(); $this->data["ticket"] = Ticket::where("username", Auth::user()->username)->orderBy("id", "desc")->paginate(10); $this->data["settings"] = Settings::get(); $this->data["noti"] = Noti::where("status", 1)->orderBy("id", "desc")->get(); return view("ticket", array("data" => $this->data)); } public function ticket_send(Request $request) { if (empty($request["title"])) { return with(array("error" => "Vui lòng nhập tiêu đề!")); } elseif (!is_string($request["title"])) { return with(array("error" => "Tiêu đề phải là một chuỗi!")); } elseif (strlen($request["title"]) < 6) { return with(array("error" => "Tiêu đề phải có ít nhất 6 ký tự!")); } elseif (strlen($request["title"]) > 255) { return with(array("error" => "Tiêu đề không được vượt quá 255 ký tự!")); } elseif (!preg_match("/^[\p{L}\p{N} ]+$/u", $request["title"])) { return with(array("error" => "Tiêu đề không đúng định dạng!")); } if (empty($request["level"])) { return with(array("error" => "Vui lòng nhập mức độ!")); } elseif (!preg_match("/^[\p{L}\p{N} ]+$/u", $request["level"])) { return with(array("error" => "Mức độ không đúng định dạng!")); } if (empty($request["id_order"])) { return with(array("error" => "Vui lòng nhập id đơn cần hỗ trợ!")); } elseif (!preg_match("/^[\p{L}\p{N} ]+$/u", $request["id_order"])) { return with(array("error" => "ID đơn không đúng định dạng!")); } if (empty($request["content"])) { return with(array("error" => "Vui lòng nhập nội dung!")); } elseif (!is_string($request["content"])) { return with(array("error" => "Nội dung phải là một chuỗi!")); } elseif (strlen($request["content"]) < 6) { return with(array("error" => "Nội dung phải có ít nhất 6 ký tự!")); } elseif (strlen($request["content"]) > 1000) { return with(array("error" => "Nội dung không được vượt quá  ký tự!")); } elseif (!preg_match("/^[\p{L}\p{N} ]+$/u", $request["title"])) { return with(array("error" => "Nội dung không đúng định dạng!")); } $checkStatusOrder = Orders::where("id_order", $request->id_order)->first(); if (!$checkStatusOrder) { return with(array("error" => "Đơn hàng không tồn tại!")); } $existingTicket = Ticket::where("id_order", $request->id_order)->first(); if ($existingTicket) { return with(array("error" => "Mã đơn hàng này đã tồn tại hỗ trợ!")); } $content = htmlspecialchars($request->content, ENT_QUOTES, "UTF-8"); $id = Ticket::create(array("id_order" => $request->id_order, "title" => $request->title, "content" => $content, "level" => $request->level, "username" => Auth::user()->username, "status" => 0)); if ($id) { $chatId = Settings::where("key", "telegram_chat_id")->first()->value; $tokenTelegram = Settings::where("key", "telegram")->first()->value; $message = "Thông Báo Hỗ Trợ Mới !\xa    - Tài khoản: " . Auth::user()->username . " 
    - Chủ đề: " . $request->title . "
    - ID order: " . $request->id_order . "
    - Mức độ: " . $request->level . "\xa    - Nội dung: " . $content . "
            "; if ($chatId && $tokenTelegram) { $result = Anhyeuem37::sendTelegramMessage($chatId, $tokenTelegram, $message); } return with(array("success" => "Gửi Ticket thành công !")); } else { return with(array("error" => "Gửi ticket thất bại !")); } } public function refill(Request $request) { } public function cancel(Request $request) { } public function logout() { Auth::logout(); request()->session()->invalidate(); request()->session()->regenerateToken(); return with(array("success" => "Đã đăng xuất tài khoản thành công!")); } public function reset_password($token = null) { if ($token) { $User = User::where("token", $token)->first(); if (!$User) { return redirect()->route("login")->withErrors("Token không hợp lệ!"); } } $this->data = array("title" => "Lấy lại mật khẩu"); $this->data["logo"] = Settings::where("key", "logo")->get(); return view("reset_password", array("data" => $this->data, "token" => $token)); } public function register_send(Request $request) { $userIpCount = User::where("ip_address", $request->ip())->count(); $registrationLimit = Settings::where("key", "gioihan_register")->first(); if ($userIpCount >= $registrationLimit->value) { return with(array("error" => "Bạn đã đăng ký quá nhiều tài khoản.")); } if (empty($request["name"])) { return with(array("error" => "Vui lòng nhập Họ Tên!")); } elseif (!is_string($request["name"])) { return with(array("error" => "Họ Tên phải là một chuỗi!")); } elseif (strlen($request["name"]) < 6) { return with(array("error" => "Họ Tên phải có ít nhất 6 ký tự!")); } elseif (strlen($request["name"]) > 35) { return with(array("error" => "Họ Tên không được vượt quá5 ký tự!")); } elseif (!preg_match("/^[\p{L} ]+$/u", $request["name"])) { return with(array("error" => "Họ Tên không đúng định dạng!")); } elseif (stripos($request["name"], "admin") !== false) { return with(array("error" => "Nếu bạn thích làm Admin hãy liên hệ ngay đến Admin Real để mua Code cho riêng mình!")); } elseif (stripos($request["name"], "fuong") !== false) { return with(array("error" => "Bạn không được tạo tài khoản trùng tên của Admin vì Admin không thích như vậy đâu!")); } if (empty($request["username"])) { return with(array("error" => "Vui lòng nhập Username!")); } elseif (!is_string($request["username"])) { return with(array("error" => "Username phải là một chuỗi!")); } elseif (strlen($request["username"]) < 6) { return with(array("error" => "Username phải có ít nhất 6 ký tự!")); } elseif (strlen($request["username"]) > 35) { return with(array("error" => "Username không được vượt quá5 ký tự!")); } elseif (!preg_match("/^[a-zA-Z0-9]+$/u", $request["username"])) { return with(array("error" => "Username chỉ chấp nhận chữ cái thường, số!")); } elseif (stripos($request["username"], "admin") !== false) { return with(array("error" => "Nếu bạn thích làm Admin hãy liên hệ ngay đến Admin Real để mua Code cho riêng mình!")); } elseif (stripos($request["username"], "fuong") !== false) { return with(array("error" => "Bạn không được tạo tài khoản trùng tên của Admin vì Admin không thích như vậy đâu!")); } if (empty($request["email"])) { return with(array("error" => "Vui lòng nhập địa chỉ email!")); } elseif (!filter_var($request["email"], FILTER_VALIDATE_EMAIL)) { return with(array("error" => "Địa chỉ email không hợp lệ!")); } if (empty($request["password"])) { return with(array("error" => "Vui lòng nhập mật khẩu!")); } elseif (strlen($request["password"]) < 6) { return with(array("error" => "Mật khẩu phải có ít nhất 6 ký tự!")); } $existingUser = User::where("username", $request->username)->first(); if ($existingUser) { return with(array("error" => "Username đã tồn tại!")); } $existingUser = User::where("email", $request->email)->first(); if ($existingUser) { return with(array("error" => "Email đã tồn tại!")); } $veri_mail_setting = Settings::where("key", "veri_mail")->first(); $veri_mail = $veri_mail_setting ? $veri_mail_setting->value : 0; if ($veri_mail == 0) { $newToken = Str::random(60); User::create(array("name" => $request->name, "username" => $request->username, "email" => $request->email, "password" => Hash::make($request->password), "verify" => 1, "ip_address" => $request->ip(), "token" => md5($newToken))); Activity_log::create(array("content" => "Tài khoản " . $request->username . " đăng ký bằng địa chỉ IP: " . $request->ip(), "username" => $request->username, "ip_address" => $request->ip())); return with(array("success" => "Đăng ký thành công tài khoản.")); } else { $newToken = Str::random(60); User::create(array("name" => $request->name, "username" => $request->username, "email" => $request->email, "password" => Hash::make($request->password), "verify" => 0, "ip_address" => $request->ip(), "token" => md5($newToken))); Activity_log::create(array("content" => "Tài khoản " . $request->username . " đăng ký bằng địa chỉ IP: " . $request->ip(), "username" => $request->username, "ip_address" => $request->ip())); $Email = User::where("email", $request->email)->first(); $token = $Email->token; $link = route("veri_code", array("token" => $token)); $subject = "Xác Minh Tài Khoản"; $content = "<div id=":o8" class="a3s aiL "><h3>" . $this->domain . " thông báo xác nhận đăng ký tài khoản !</h3>
                <p>Xin chào : " . $Email->name . "!</p>\xa                <p>Chúng tôi vừa nhận được yêu cầu đăng ký tài khoản của bạn. Nhấp vào liên kết sau để hoàn tất xác minh: <a href="" . $link . "" target="_blank" data-saferedirecturl="">" . $link . " </a></p>\xa                <p> Nếu không phải là bạn vui lòng bỏ qua Email này</p>
                
                <div class="yj6qo"></div><div class="adL">\xa                </div></div>"; Mail::to($request->email)->send(new Gmail($subject, $content)); return with(array("success" => "Đăng ký thành công tài khoản.")); } } public function GoogleCallback(Request $request) { $googleUser = Socialite::driver("google")->user(); $existingUser = User::where("email", $googleUser->email)->first(); $newToken = Str::random(60); if ($existingUser) { $existingUser->update(array("token" => md5($newToken))); Auth::login($existingUser); } else { $newUser = User::create(array("name" => $request->name, "username" => $request->username, "email" => $googleUser->email, "password" => $newToken, "verify" => 1, "ip_address" => $request->ip(), "token" => md5($newToken))); Auth::login($newUser); } Activity_log::create(array("content" => "Tài khoản " . $request->username . " đăng nhập bằng địa chỉ IP: " . $request->ip(), "username" => $request->username, "ip_address" => $request->ip())); return redirect()->route("home")->with("success", "Đăng nhập thành công"); } public function member_no_veri_mail(Request $request) { $now = Carbon::now(); $oneDaysAgo = $now->subDays(1); $deletedCount = User::where("verify", "!=", 1)->where("created_at", "<", $oneDaysAgo)->delete(); if ($deletedCount > 0) { return response()->json(array("message" => "Đã xóa thành công " . $deletedCount . " tài khoản chưa kích hoạt.")); } else { return response()->json(array("message" => "Không tìm thấy tài khoản nào cần xóa.")); } } public function deleteOldActivityLogs(Request $request) { $now = Carbon::now(); $onDaysAgo = $now->subDays(1); $twoDaysAgo = $now->subDays(2); $deletedActivityLogCount = Activity_log::where("updated_at", "<", $twoDaysAgo)->delete(); $deletedSmmpanelActivity = SmmPanel_Activity::where("created_at", "<", $onDaysAgo)->delete(); return response()->json(array("message" => "Đã xóa thành công " . $deletedActivityLogCount . " dữ liệu cũ ActivityLog và" . $deletedSmmpanelActivity . " dữ liệu cũ SmmPanel Activity")); } public function login_send(Request $request) { $credentials = $request->only("email", "password"); if (empty($request["email"])) { return with(array("error" => "Email không được bỏ trống!")); } if (!filter_var($request["email"], FILTER_VALIDATE_EMAIL)) { return with(array("error" => "Email không đúng định dạng!")); } if (empty($request["password"])) { return with(array("error" => "Password không được bỏ trống!")); } if (Auth::attempt($credentials)) { if (Auth::user()->status == 0) { Auth::logout(); return with(array("error" => "Tài khoản của bạn đã bị Admin cho ra đảo khỉ, liên hệ Admin để biết thêm chi tiết !")); } $user = User::where("username", Auth::user()->username)->first(); $baotri = Settings::where("key", "baotri")->first(); if ($baotri->value == 1 && $user->role !== "admin") { Auth::logout(); return with(array("error" => "Website đang bảo trì để nâng cấp, vui lòng quay lại sau!")); } $user->update(array("ip_address" => $request->ip())); Activity_log::create(array("content" => "Tài khoản " . $user->username . " đăng nhập bằng địa chỉ IP: " . $request->ip(), "username" => $user->username, "ip_address" => $request->ip())); $veri_mail_setting = Settings::where("key", "veri_mail")->first(); $veri_mail = $veri_mail_setting ? $veri_mail_setting->value : 0; if ($user->verify == 1 && $veri_mail == 1) { $TimeHienTai = Carbon::now(); $email = $user->email; $subject = "Cảnh Báo Đăng Nhập"; $content = "<div id=":o8" class="a3s aiL "><h3>" . $this->domain . " thông báo đăng nhập tài khoản thành công !</h3>\xa                    <p>Xin chào : " . $user->name . "!</p>\xa                    <p>Tài khoản của bạn vừa đăng nhập thành công vào lúc " . $TimeHienTai . " tại địa chỉ IP " . $request->ip() . " nếu không phải bạn vui lòng kiểm tra và bảo mật lại tài khoản của mình.</p>\xa                    <div class="yj6qo"></div><div class="adL">\xa                    </div></div>"; Mail::to($email)->send(new Gmail($subject, $content)); } return with(array("success" => "Đăng nhập thành công !")); } return with(array("error" => "Email hoặc mật khẩu không chính xác !")); } public function card_send(Request $request) { $request->validate(array("telco" => "required", "serial" => "required|numeric", "code" => "required|numeric", "amount" => "required|numeric"), array("telco.required" => "Vui lòng nhập loại thẻ!", "serial.required" => "Vui lòng nhập serial thẻ!", "code.required" => "Vui lòng nhập mã thẻ!", "amount.required" => "Vui lòng nhập mệnh giá thẻ!", "serial.numeric" => "Vui lòng nhập serial thẻ hợp lệ!", "code.numeric" => "Vui lòng nhập mã thẻ thẻ hợp lệ!", "amount.numeric" => "Vui lòng nhập mệnh giá thẻ hợp lệ!")); $telco = array("VIETTEL" => array("serial" => 14, "code" => 15), "VINAPHONE" => array("serial" => 14, "code" => 14), "MOBIFONE" => array("serial" => 15, "code" => 12), "ZING" => array("serial" => 12, "code" => 9), "GARENA" => array("serial" => 8, "code" => 16), "VCOIN" => array("serial" => 12, "code" => 12), "GATE" => array("serial" => 12, "code" => 16)); if (array_key_exists($request->telco, $telco)) { $telcoInfo = $telco[$request->telco]; if (strlen((string) $request->serial) == $telcoInfo["serial"]) { $site_gach_the = Settings::where("key", "site_gach_the")->value("value"); $sign = md5(Settings::where("key", "partner_key")->value("value") . $request->code . $request->serial); $request_id = substr(strval(time() + mt_rand()), -6); $response = Anhyeuem37::curl_post_json('' . $site_gach_the . "/chargingws/v2", array("telco" => $request->telco, "code" => $request->code, "serial" => $request->serial, "amount" => $request->amount, "request_id" => $request_id, "partner_id" => Settings::where("key", "partner_id")->value("value"), "sign" => $sign, "command" => "charging")); if ($response) { $result = json_decode($response, true); if (is_array($result) && isset($result["status"]) && $result["status"] == 99) { Card::create(array("telco" => $request->telco, "serial" => $request->serial, "code" => $request->code, "amount" => $request->amount, "sign" => $sign, "request_id" => $request_id, "username" => Auth::user()->username, "status" => 0)); return back()->with("success", "Nạp thẻ thành công, thẻ cào đang được xử lý!"); } else { return back()->withErrors($result["message"]); } } } else { return back()->withErrors("Serial thẻ cào không hợp lệ!"); } } else { return back()->withErrors("Loại thẻ không hợp lệ!"); } } public function change_token(request $request) { if (empty($request->token)) { return with(array("error" => "Vui lòng nhập nhập mã token !")); } $token = Auth::user()->token; $User = User::where("token", $token)->first(); $userNoVerify = User::where("verify", "!=", 1); if (!$userNoVerify) { return with(array("error" => "Tài khoản của bạn chưa kích hoạt email !")); } if ($User) { $newToken = Str::random(30); $User->update(array("token" => md5($newToken))); return with(array("success" => md5($newToken))); } return with(array("error" => "Thông tin Token không chính xác !")); } public function change_password(Request $request) { if (empty($request->old_password)) { return with(array("error" => "Vui lòng nhập mật khẩu cũ!")); } elseif (empty($request->new_password)) { return with(array("error" => "Vui lòng nhập mật khẩu mới!")); } elseif (strlen($request->new_password) < 6) { return with(array("error" => "Mật khẩu mới phải có ít nhất ký tự!")); } elseif ($request->new_password !== $request->new_password_confirmation) { return with(array("error" => "Xác nhận mật khẩu không khớp!")); } $currentUser = Auth::user(); if (!Auth::attempt(array("email" => $currentUser->email, "password" => $request->old_password))) { return with(array("error" => "Mật khẩu cũ không chính xác!")); } if (!Hash::check($request->old_password, $currentUser->password)) { return with(array("error" => "Mật khẩu cũ không chính xác!")); } $User = User::where("password", $currentUser->password)->first(); if ($User) { $newToken = Str::random(60); $User->update(array("token" => md5($newToken), "password" => Hash::make($request->new_password))); } Activity_log::create(array("content" => "Tài khoản " . $User->username . " thay đổi mật khẩu bằng địa chỉ IP: " . $request->ip(), "username" => $User->username, "ip_address" => $request->ip())); $veri_mail_setting = Settings::where("key", "veri_mail")->first(); $veri_mail = $veri_mail_setting ? $veri_mail_setting->value : 0; if ($veri_mail == 1) { $TimeHienTai = Carbon::now(); $email = $User->email; $subject = "Thay Đổi Mật Khẩu"; $content = "<div id=":o8" class="a3s aiL "><h3>" . $this->domain . " thông báo thay đổi mật khẩu thành công !</h3>
                    <p>Xin chào : " . $User->name . "!</p>
                    <p>Tài khoản của bạn vừa được thay đổi mật khẩu thành công vào lúc " . $TimeHienTai . " tại địa chỉ IP " . $request->ip() . " bằng phương thức thay đổi từ mật khẩu cũ trước đó, nếu không phải bạn vui lòng kiểm tra và bảo mật lại tài khoản của mình hoặc lấy lại mật khẩu tại <a href="https://" . $this->domain . "/client/reset_password">Reset Password</a></p>\xa                    \xa                    <div class="yj6qo"></div><div class="adL">
                    </div></div>"; Mail::to($email)->send(new Gmail($subject, $content)); } Auth::logout(); request()->session()->invalidate(); request()->session()->regenerateToken(); return with(array("success" => "Thay đổi mật khẩu thành công!")); } public function send_token(request $request) { $request->validate(array("email" => "required|email"), array("email.required" => "Vui lòng nhập địa chỉ email !", "email.email" => "Địa chỉ email không hợp lệ !")); if ($Email) { if ($Email->status == 0) { return with(array("error" => "Tài khoản email này chưa được kích hoạt hoặc đang bị khoá !")); } $veri_mail_setting = Settings::where("key", "veri_mail")->first(); $veri_mail = $veri_mail_setting ? $veri_mail_setting->value : 0; if ($veri_mail == 1) { $token = $Email->token; $link = route("reset_password", array("token" => $token)); $subject = "Quên mật khẩu"; $content = "<div id=":o8" class="a3s aiL "><h3>" . $this->domain . " xác nhận quên mật khẩu tài khoản !</h3>
                <p>Xin chào : " . $Email->name . "!</p>\xa                <p>Liên kết thay đổi mật khẩu: <a href="" . $link . "" target="_blank" data-saferedirecturl="">" . $link . " </a></p>
                <div class="yj6qo"></div><div class="adL">
                </div></div>"; Mail::to($request->email)->send(new Gmail($subject, $content)); } else { return with(array("success" => "Admin chưa thiết lập tính năng lấy lại mật khẩu. Nếu bạn là Admin hãy thiết lập SMTP Mail. Nếu bạn là khách hàng vui lòng liên hệ Admin Website để được hỗ trợ.")); } return with(array("success" => "Gửi email lấy lại mật khẩu thành công!")); } return with(array("error" => "Địa chỉ email không chính xác !")); } public function new_password(request $request) { if (empty($request->password)) { return with(array("error" => "Vui lòng nhập mật khẩu!")); } elseif (strlen($request->password) < 6) { return with(array("error" => "Mật khẩu phải có ít nhất 6 ký tự!")); } elseif ($request->password !== $request->password_confirmation) { return with(array("error" => "Password và Confirm Password phải giống nhau !")); } elseif (empty($request->token)) { return with(array("error" => "Token là bắt buộc !")); } $User = User::where("token", $request->token)->first(); if ($User) { $User->update(array("password" => Hash::make($request->password), "token" => Str::random(60))); Activity_log::create(array("content" => "Tài khoản " . $User->username . " lấy lại mật khẩu bằng địa chỉ IP: " . $request->ip(), "username" => $User->username, "ip_address" => $request->ip())); $veri_mail_setting = Settings::where("key", "veri_mail")->first(); $veri_mail = $veri_mail_setting ? $veri_mail_setting->value : 0; if ($veri_mail == 1) { $TimeHienTai = Carbon::now(); $email = $User->email; $subject = "Thay Đổi Mật Khẩu"; $content = "<div id=":o8" class="a3s aiL "><h3>" . $this->domain . " thông báo tài khoản thay đổi mật khẩu !</h3>
                    <p>Xin chào : " . $User->name . "!</p>\xa                    <p>Tài khoản của bạn vừa thay đổi mật khẩu vào lúc " . $TimeHienTai . " tại địa chỉ IP " . $request->ip() . " bằng phương thức reset password qua email, nếu không phải bạn vui lòng kiểm tra và bảo mật lại email của mình.</p>
                    <div class="yj6qo"></div><div class="adL">\xa                    </div></div>"; Mail::to($email)->send(new Gmail($subject, $content)); } return with(array("success" => "Lấy lại mật khẩu thành công !")); } return with(array("error" => "Token không hợp lệ !")); } public function veri_code(Request $request) { $request->validate(array("token" => "required"), array("token.required" => "Token là bắt buộc !")); $user = User::where("token", $request->token)->first(); $newCode = Str::random(60); if ($user) { $user->update(array("verify" => 1, "token" => md5($newCode))); $TimeHienTai = Carbon::now(); $email = $user->email; $subject = "Xác Minh Thành Công"; $content = "<div id=":o8" class="a3s aiL "><h3>" . $this->domain . " xác minh thành công tài khoản !</h3>
                    <p>Xin chào : " . $user->name . "!</p>\xa                    <p>Tài khoản của bạn đã xác minh vào lúc " . $TimeHienTai . " bằng địa chỉ IP: (" . $request->ip() . ") qua phương thức xác thực link email.</p>\xa                    <p>Cảm ơn bạn đã tin tưởng và lựa chọn dịch vụ của chúng tôi. Giờ đây, bạn có thể trải nghiệm toàn bộ các tính năng và ưu đãi hấp dẫn mà chúng tôi dành riêng cho thành viên. </p>

                    <p> Nếu bạn có bất kỳ câu hỏi hoặc cần hỗ trợ, đừng ngần ngại liên hệ với chúng tôi. Đội ngũ chăm sóc khách hàng của chúng tôi luôn sẵn sàng hỗ trợ bạn. </p>

                    <p>Chúc bạn có những trải nghiệm tuyệt vời!</p>
                    <div class="yj6qo"></div><div class="adL">
                    </div></div>"; Mail::to($email)->send(new Gmail($subject, $content)); Activity_log::create(array("content" => "Tài khoản " . $user->username . " Kích hoạt tài khoản bằng địa chỉ IP: " . $request->ip(), "username" => $user->username, "ip_address" => $request->ip())); if (auth()->check()) { return redirect()->route("home")->with("success", "Kích hoạt tài khoản thành công !"); } else { return redirect()->route("login")->with("success", "Kích hoạt tài khoản thành công !"); } } else { if (auth()->check()) { return redirect()->route("home")->withErrors("Token không hợp lệ hoặc đã hết hạn !"); } else { return redirect()->route("login")->withErrors("Token không hợp lệ hoặc đã hết hạn !"); } } } public function add_domain(Request $request) { $request->validate(array("domain" => "required|regex:/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i"), array("domain.required" => "Tên miền là bắt buộc!", "domain.regex" => "Tên miền không hợp lệ!")); $user = Auth::user(); $level = ''; $web = Websites::where("domain", $request->domain)->first(); if ($user->level < 1) { return redirect()->back()->withErrors(array("error" => "Cấp độ không đủ để tạo site con")); } if ($web) { return redirect()->back()->withErrors(array("error" => "Tên miền đã tồn tại")); } $parentWeb = Websites::where("domain", $this->domain)->first(); Websites::create(array("domain" => $request->domain, "parent_id" => $parentWeb ? $parentWeb->id : null, "username" => Auth::user()->username, "status" => 0)); return redirect()->back()->with("success", "Thêm mới tên miền thành công !"); } public function acb(Request $request) { $banking = Banking::where("type", "acb")->where("status", 1)->get(); $status = array(); foreach ($banking as $bank) { $result = Anhyeuem37::get("https://api.fuong.net/historyapiacbv3/" . $bank->password . "/" . $bank->account_number . "/" . $bank->token . ''); $keyword = Settings::where("key", "syntax")->value("value"); if (empty($result)) { $status[] = "Không có đơn nạp tiền nào cần xử lý"; continue; } $array_result = json_decode($result, true); if ($array_result["status"] !== "success") { $status[] = "Lỗi xử lý từ API"; continue; } foreach ($array_result["transactions"] as $history_bank) { if ($history_bank["type"] !== "IN") { continue; } $transactionid = $history_bank["transactionID"]; $amount = $history_bank["amount"]; $description_normal = $history_bank["description"]; $username = ''; $array = explode(, $description_normal); foreach ($array as $value) { if (preg_match("/" . preg_quote($keyword, "/") . "\s*(\S+)/", $value, $matches)) { $username = $matches[1]; break; } } if (empty($username)) { continue; } $existingTransaction = Transaction::where("transactionid", $transactionid)->first(); if ($existingTransaction) { $status[] = "Đơn nạp tiền đã được xử lý trước đó"; continue; } $user = User::where("username", $username)->first(); if (!$user) { $status[] = "Không tìm thấy tài khoản cần nạp tiền!"; continue; } if ($amount < 10000) { $status[] = "Số tiền chưa đạt mức tối thiểu!"; continue; } $promotionValue = Settings::where("key", "promotion")->value("value"); $newAmount = $amount + $amount * $promotionValue / 100; $user->update(array("balance" => $user->balance + $newAmount, "verify" => 1)); Transaction::create(array("type" => strtoupper($bank->type), "username" => $username, "amount" => $newAmount, "description" => $description_normal, "transactionid" => $transactionid)); $chatId = Settings::where("key", "telegram_chat_id")->first()->value; $tokenTelegram = Settings::where("key", "telegram")->first()->value; $message = "Thông Báo Nạp Tiền !
- Tài khoản: " . $username . " 
- Ngân hàng: ACB Bank\xa- Số tiền: " . $amount . " VND\xa- Thực nhận: " . $newAmount . " VND\xa"; if ($chatId && $tokenTelegram) { $result = Anhyeuem37::sendTelegramMessage($chatId, $tokenTelegram, $message); } if ($user) { $veri_mail_setting = Settings::where("key", "veri_mail")->first(); $veri_mail = $veri_mail_setting ? $veri_mail_setting->value : 0; if ($veri_mail == 1) { $email = $user->email; $subject = "Thông Báo Nạp Tiền"; $content = "<div id=":o8" class="a3s aiL "><h3>" . $this->domain . " thông báo hoá đơn nạp tiền mới !</h3>\xa                    <p>Xin chào : " . $user->name . "!</p>\xa                    <p>Bạn vừa thực hiện nạp thành công số tiền " . $newAmount . " VND vào tài khoản qua cổng ACB BANK.</a></p>
                    <div class="yj6qo"></div><div class="adL">
                    </div></div>"; Mail::to($email)->send(new Gmail($subject, $content)); } } $total_payment = Transaction::where("username", $username)->sum("amount"); $array_level_amount = array(); for ($i = 1; $i <= 5; $i++) { $level = Settings::where("key", "level" . $i)->first(); if ($level) { $array_level_amount[$i] = $level->value; } } $new_level = $user->level; foreach ($array_level_amount as $level => $amount) { if ($total_payment >= $amount) { $new_level = $level; } } if ($new_level != $user->level) { $user->level = $new_level; $user->save(); Activity_log::create(array("content" => "Tài khoản " . $username . " đạt tổng nạp: " . $total_payment . " tự động nâng cấp lên level" . $new_level, "ip_address" => $request->ip(), "username" => $user->username)); } $status[] = "Xử lý nạp tiền tự động thành công cho " . $username; } } echo "<pre>"; print_r($status); echo "</pre>"; } public function vcb(Request $request) { $banking = Banking::where("type", "vcb")->where("status", 1)->get(); $status = array(); $keyword = Settings::where("key", "syntax")->value("value"); foreach ($banking as $bank) { $result = Anhyeuem37::get("https://api.fuong.net/historyapivcbv3/" . $bank->password . "/" . $bank->account_number . "/" . $bank->token . ''); if (empty($result)) { $status[] = "Không có đơn nạp tiền nào cần xử lý"; continue; } $array_result = json_decode($result, true); if ($array_result["status"] !== "success") { $status[] = "Lỗi xử lý từ API"; continue; } foreach ($array_result["transactions"] as $history_bank) { if ($history_bank["type"] !== "IN") { continue; } $transactionid = $history_bank["transactionID"]; $amount = $history_bank["amount"]; $description_normal = $history_bank["description"]; $username = ''; $array = explode(, $description_normal); foreach ($array as $value) { $value = str_replace("-", " ", $value); if (preg_match("/" . preg_quote($keyword, "/") . "\s*(\S+)/", $value, $matches)) { $username = $matches[1]; break; } } if (empty($username)) { continue; } $existingTransaction = Transaction::where("transactionid", $transactionid)->first(); if ($existingTransaction) { $status[] = "Đơn nạp tiền đã được xử lý trước đó"; continue; } $user = User::where("username", $username)->first(); if (!$user) { $status[] = "Không tìm thấy tài khoản cần nạp tiền!"; continue; } if ($amount < 10000) { $status[] = "Số tiền chưa đạt mức tối thiểu!"; continue; } $promotionValue = Settings::where("key", "promotion")->value("value"); $newAmount = $amount + $amount * $promotionValue / 100; $user->update(array("balance" => $user->balance + $newAmount, "verify" => 1)); Transaction::create(array("type" => strtoupper($bank->type), "username" => $username, "amount" => $newAmount, "description" => $description_normal, "transactionid" => $transactionid)); $chatId = Settings::where("key", "telegram_chat_id")->first()->value; $tokenTelegram = Settings::where("key", "telegram")->first()->value; $message = "Thông Báo Nạp Tiền !
- Tài khoản: " . $username . " \xa- Ngân hàng: Vietcombank
- Số tiền: " . $amount . " VND\xa- Thực nhận: " . $newAmount . " VND\xa"; if ($chatId && $tokenTelegram) { $result = Anhyeuem37::sendTelegramMessage($chatId, $tokenTelegram, $message); } if ($user) { $veri_mail_setting = Settings::where("key", "veri_mail")->first(); $veri_mail = $veri_mail_setting ? $veri_mail_setting->value : 0; if ($veri_mail == 1) { $email = $user->email; $subject = "Thông Báo Nạp Tiền"; $content = "<div id=":o8" class="a3s aiL "><h3>" . $this->domain . " thông báo hoá đơn nạp tiền mới !</h3>\xa                    <p>Xin chào : " . $user->name . "!</p>\xa                    <p>Bạn vừa thực hiện nạp thành công số tiền " . $newAmount . " VND vào tài khoản qua cổng Vietcombank.</a></p>\xa                    <div class="yj6qo"></div><div class="adL">\xa                    </div></div>"; Mail::to($email)->send(new Gmail($subject, $content)); } } $total_payment = Transaction::where("username", $username)->sum("amount"); $array_level_amount = array(); for ($i = 1; $i <= 5; $i++) { $level = Settings::where("key", "level" . $i)->first(); if ($level) { $array_level_amount[$i] = $level->value; } } $new_level = $user->level; foreach ($array_level_amount as $level => $amount) { if ($total_payment >= $amount) { $new_level = $level; } } if ($new_level != $user->level) { $user->level = $new_level; $user->save(); Activity_log::create(array("content" => "Tài khoản " . $username . " đạt tổng nạp: " . $total_payment . " tự động nâng cấp lên level" . $new_level, "ip_address" => $request->ip(), "username" => $user->username)); } $status[] = "Xử lý nạp tiền tự động thành công cho " . $username; } } echo "<pre>"; print_r($status); echo "</pre>"; } public function mbbank(Request $request) { $banking = Banking::where("type", "mbbank")->where("status", 1)->get(); $status = array(); $keyword = Settings::where("key", "syntax")->value("value"); foreach ($banking as $bank) { $result = Anhyeuem37::get("https://api.fuong.net/historyapimbv3/" . $bank->password . "/" . $bank->account_number . "/" . $bank->token . ''); if (empty($result)) { $status[] = "Không có đơn nạp tiền nào cần xử lý"; continue; } $array_result = json_decode($result, true); if ($array_result["status"] !== "success") { $status[] = "Lỗi xử lý từ API"; continue; } foreach ($array_result["transactions"] as $history_bank) { if ($history_bank["type"] !== "IN") { continue; } $transactionid = $history_bank["transactionID"]; $amount = $history_bank["amount"]; $description_normal = $history_bank["description"]; $username = ''; $array = explode(, $description_normal); foreach ($array as $value) { $value = str_replace("-", " ", $value); if (preg_match("/" . preg_quote($keyword, "/") . "\s*(\S+)/", $value, $matches)) { $username = $matches[1]; break; } } if (empty($username)) { continue; } $existingTransaction = Transaction::where("transactionid", $transactionid)->first(); if ($existingTransaction) { $status[] = "Đơn nạp tiền đã được xử lý trước đó"; continue; } $user = User::where("username", $username)->first(); if (!$user) { $status[] = "Không tìm thấy tài khoản cần nạp tiền!"; continue; } if ($amount < 10000) { $status[] = "Số tiền chưa đạt mức tối thiểu!"; continue; } $transactionDate = Carbon::createFromFormat("d/m/Y H:i:s", $history_bank["transactionDate"]); $oneDayAgo = Carbon::now()->subDay(); if ($transactionDate->lt($oneDayAgo)) { $status[] = "Giao dịch đã quá hạn xử lý"; continue; } $promotionValue = Settings::where("key", "promotion")->value("value"); $newAmount = $amount + $amount * $promotionValue / 100; $user->update(array("balance" => $user->balance + $newAmount, "verify" => 1)); Transaction::create(array("type" => strtoupper($bank->type), "username" => $username, "amount" => $newAmount, "description" => $description_normal, "transactionid" => $transactionid)); $chatId = Settings::where("key", "telegram_chat_id")->first()->value; $tokenTelegram = Settings::where("key", "telegram")->first()->value; $message = "Thông Báo Nạp Tiền !\xa- Tài khoản: " . $username . " \xa- Ngân hàng: MB Bank
- Số tiền: " . $amount . " VND\xa- Thực nhận: " . $newAmount . " VND
"; if ($chatId && $tokenTelegram) { $result = Anhyeuem37::sendTelegramMessage($chatId, $tokenTelegram, $message); } if ($user) { $veri_mail_setting = Settings::where("key", "veri_mail")->first(); $veri_mail = $veri_mail_setting ? $veri_mail_setting->value : 0; if ($veri_mail == 1) { $email = $user->email; $subject = "Thông Báo Nạp Tiền"; $content = "<div id=":o8" class="a3s aiL "><h3>" . $this->domain . " thông báo hoá đơn nạp tiền mới !</h3>\xa                    <p>Xin chào : " . $user->name . "!</p>
                    <p>Bạn vừa thực hiện nạp thành công số tiền " . $newAmount . " VND vào tài khoản qua cổng MB Bank.</a></p>
                    <div class="yj6qo"></div><div class="adL">
                    </div></div>"; Mail::to($email)->send(new Gmail($subject, $content)); } } $total_payment = Transaction::where("username", $username)->sum("amount"); $array_level_amount = array(); for ($i = 1; $i <= 5; $i++) { $level = Settings::where("key", "level" . $i)->first(); if ($level) { $array_level_amount[$i] = $level->value; } } $new_level = $user->level; foreach ($array_level_amount as $level => $amount) { if ($total_payment >= $amount) { $new_level = $level; } } if ($new_level != $user->level) { $user->level = $new_level; $user->save(); Activity_log::create(array("content" => "Tài khoản " . $username . " đạt tổng nạp: " . $total_payment . " tự động nâng cấp lên level" . $new_level, "ip_address" => $request->ip(), "username" => $user->username)); } $status[] = "Xử lý nạp tiền tự động thành công cho " . $username; } } echo "<pre>"; print_r($status); echo "</pre>"; } public function viettel(Request $request) { $banking = Banking::where("type", "9702")->where("status", 1)->get(); $status = array(); $keyword = Settings::where("key", "syntax")->value("value"); foreach ($banking as $bank) { $result = Anhyeuem37::get("https://api.fuong.net/historyapiviettel/" . $bank->token . ''); if (empty($result)) { $status[] = "Không có đơn nạp tiền nào cần xử lý"; continue; } $array_result = json_decode($result, true); if ($array_result["status"]["message"] !== "Thành công.") { $status[] = "Lỗi xử lý từ API"; continue; } foreach ($array_result["data"]["content"] as $history_bank) { if ($history_bank["paymentType"] !== "CREDIT") { continue; } $transactionid = $history_bank["bankTransId"]; $amount = $history_bank["amount"]; $description_normal = $history_bank["description"]; $username = ''; $array = explode(, $description_normal); foreach ($array as $value) { $value = str_replace("-", " ", $value); if (preg_match("/" . preg_quote($keyword, "/") . "\s*(\S+)/", $value, $matches)) { $username = $matches[1]; break; } } if (empty($username)) { continue; } $existingTransaction = Transaction::where("transactionid", $transactionid)->first(); if ($existingTransaction) { $status[] = "Đơn nạp tiền đã được xử lý trước đó"; continue; } $user = User::where("username", $username)->first(); if (!$user) { $status[] = "Không tìm thấy tài khoản cần nạp tiền!"; continue; } if ($amount < 10000) { $status[] = "Số tiền chưa đạt mức tối thiểu!"; continue; } $promotionValue = Settings::where("key", "promotion")->value("value"); $newAmount = $amount + $amount * $promotionValue / 100; $user->update(array("balance" => $user->balance + $newAmount, "verify" => 1)); Transaction::create(array("type" => strtoupper($bank->type), "username" => $username, "amount" => $newAmount, "description" => $description_normal, "transactionid" => $transactionid)); $chatId = Settings::where("key", "telegram_chat_id")->first()->value; $tokenTelegram = Settings::where("key", "telegram")->first()->value; $message = "Thông Báo Nạp Tiền !\xa- Tài khoản: " . $username . " \xa- Ngân hàng: ViettelMoney\xa- Số tiền: " . $amount . " VND\xa- Thực nhận: " . $newAmount . " VND\xa"; if ($chatId && $tokenTelegram) { $result = Anhyeuem37::sendTelegramMessage($chatId, $tokenTelegram, $message); } if ($user) { $veri_mail_setting = Settings::where("key", "veri_mail")->first(); $veri_mail = $veri_mail_setting ? $veri_mail_setting->value : 0; if ($veri_mail == 1) { $email = $user->email; $subject = "Thông Báo Nạp Tiền"; $content = "<div id=":o8" class="a3s aiL "><h3>" . $this->domain . " thông báo hoá đơn nạp tiền mới !</h3>\xa                    <p>Xin chào : " . $user->name . "!</p>
                    <p>Bạn vừa thực hiện nạp thành công số tiền " . $newAmount . " VND vào tài khoản qua cổng ViettelMoney.</a></p>\xa                    <div class="yj6qo"></div><div class="adL">\xa                    </div></div>"; Mail::to($email)->send(new Gmail($subject, $content)); } } $total_payment = Transaction::where("username", $username)->sum("amount"); $array_level_amount = array(); for ($i = 1; $i <= 5; $i++) { $level = Settings::where("key", "level" . $i)->first(); if ($level) { $array_level_amount[$i] = $level->value; } } $new_level = $user->level; foreach ($array_level_amount as $level => $amount) { if ($total_payment >= $amount) { $new_level = $level; } } if ($new_level != $user->level) { $user->level = $new_level; $user->save(); Activity_log::create(array("content" => "Tài khoản " . $username . " đạt tổng nạp: " . $total_payment . " tự động nâng cấp lên level" . $new_level, "ip_address" => $request->ip(), "username" => $user->username)); } $status[] = "Xử lý nạp tiền tự động thành công cho " . $username; } } echo "<pre>"; print_r($status); echo "</pre>"; } }



© 2023 Quttera Ltd. All rights reserved.