MINI
C:
/
xampp
/
htdocs
/
.config
/
Upload File:
files >> C:/xampp/htdocs/.config/common-function.php
<?php defined( '_LANGSUNG' ) or die(''); require '.library/vendor/autoload.php'; use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; use PHPMailer\PHPMailer\SMTP; //$q_modules = $sambungan->prepare("SELECT name_mod FROM bet_modules"); //$q_modules->execute(); //$modules = $q_modules -> fetchAll(PDO::FETCH_COLUMN, 0); //$ttlmodul = $q_modules -> rowCount(); //$allowed = $modules; //$q_hmodules = $sambungan->prepare("SELECT name_mod FROM bet_modules WHERE parent_mod=0"); //$q_hmodules->execute(); //$hallowed = $q_hmodules -> fetchAll (PDO::FETCH_COLUMN, 0); //CEK SUPER ADMIN function SuperAdmin (){ if(in_array($_SESSION['AccountUserName'],explode(',',APP_SUPERADMIN_USERNAME)) && in_array($_SESSION['AccountName'],explode(',',APP_SUPERADMIN_NAME)) && $_SESSION['AccountLevel']==APP_SUPERADMIN_LEVEL) { return true; } else { return false; } } function FotoUser(){ $a = ''; if($_SESSION['AccountFoto']==1){ $a = APP_URI.'/images/admin/profile/'.$_SESSION['AccountId'].'.jpg';} else{ $a = APP_URI.'/images/admin/nophoto.jpg'; } return $a; } //MINIFY function Minify($data){ $output = trim(preg_replace('/\s\s+/', '', $data)); return $output; } function CekPost($datax){ $isian = str_replace(" ","",$datax); $isiana = explode(",", $isian); foreach ($isiana as $f) { if (!isset($_POST[$f]) || $_POST[$f]==="") { echo "$f Belum diisi<br/>"; } } } function backup_tables($host,$user,$pass,$name,$tables = '*'){ $link = mysql_connect($host,$user,$pass); mysql_select_db($name,$link); //get all of the tables if($tables == '*') { $tables = array(); $result = mysql_query('SHOW TABLES'); while($row = mysql_fetch_row($result)) { $tables[] = $row[0]; } } else { $tables = is_array($tables) ? $tables : explode(',',$tables); } //cycle through foreach($tables as $table) { $result = mysql_query('SELECT * FROM '.$table); $num_fields = mysql_num_fields($result); $return = 'DROP TABLE '.$table.';'; $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table)); $return.= "\n\n".$row2[1].";\n\n"; for ($i = 0; $i < $num_fields; $i++) { while($row = mysql_fetch_row($result)) { $return.= 'INSERT INTO '.$table.' VALUES('; for($j=0; $j < $num_fields; $j++) { $row[$j] = addslashes($row[$j]); $row[$j] = ereg_replace("\n","\\n",$row[$j]); if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; } if ($j < ($num_fields-1)) { $return.= ','; } } $return.= ");\n"; } } $return.="\n\n\n"; } //save file $handle = fopen('.database/'.$name.date("Ymdhis",time()).'.sql','w+'); if($handle){ echo 'Sukses';}else{ echo 'Gagal Backup';} fwrite($handle,$return); fclose($handle); } function IsLogin(){ global $sambungan; $q_islogin = $sambungan->prepare("SELECT is_login FROM bet_account WHERE id_account = :id_account"); $q_islogin->bindValue(':id_account',$_SESSION['AccountId'], PDO::PARAM_INT); $q_islogin->execute(); $islogin = $q_islogin->fetch(PDO::FETCH_ASSOC); if($islogin['is_login']==1) { return true; } else { return false; } } function IsLoginF(){ global $sambungan; $q_islogin = $sambungan->prepare("SELECT is_login FROM master_customer WHERE id_customer = :id_customer"); $q_islogin->bindValue(':id_customer',$_SESSION['FAccountId'], PDO::PARAM_INT); $q_islogin->execute(); $islogin = $q_islogin->fetch(PDO::FETCH_ASSOC); if($islogin['is_login']==1) { return true; } else { return false; } } function CekAksesLevelHack($fieldx){ global $sambungan; $q_cekhack = $sambungan->prepare("SELECT * FROM bet_account WHERE account_id = :account_id"); $q_cekhack ->bindValue(':account_id', $fieldx, PDO::PARAM_INT); $q_cekhack ->execute(); $hcekhack = $q_cekhack ->rowCount(); $cekhack = $q_cekhack -> fetch (PDO::FETCH_ASSOC); if($cekhack['account_level'] >= $_SESSION['AccountLevel'] || $hcekhack!=1) { false; echo 'Access Denied'; exit; } else { true; return; } } function CekAkses($fieldx){ if(in_array($fieldx,$_SESSION['AccountModules']) || SuperAdmin ()) { return true; } else { exit('Access denied'); } } function CekMenu($fieldx){ if(in_array($fieldx,$_SESSION['AccountModules']) || SuperAdmin ()) { return true; } else { return false; } } function _ED($action, $string) { $output = false; $encrypt_method = "AES-256-CBC"; $secret_key = APP_SECURITY; $secret_iv = APP_SECURITY; // hash $key = hash('sha256', $secret_key); // iv - encrypt method AES-256-CBC expects 16 bytes - else you will get a warning $iv = substr(hash('sha256', $secret_iv), 0, 16); if ( $action == 'E' ) { $output = openssl_encrypt($string, $encrypt_method, $key, 0, $iv); $output = base64_encode($output); $output = rtrim(strtr($output, '+/', '-_'), '='); } else if( $action == 'D' ) { $output = str_pad(strtr($string, '-_', '+/'), strlen($string) % 4, '=', STR_PAD_RIGHT); $output = openssl_decrypt(base64_decode($output), $encrypt_method, $key, 0, $iv); } return $output; } //ENKRIPSI DATA function _EnDec($action, $string) { $output = false; $encrypt_method = "AES-256-CBC"; $secret_key = APP_SECURITY; $secret_iv = APP_SECURITY; // hash $key = hash('sha256', $secret_key); // iv - encrypt method AES-256-CBC expects 16 bytes - else you will get a warning $iv = substr(hash('sha256', $secret_iv), 0, 16); if ( $action == 'E' ) { $output = openssl_encrypt($string, $encrypt_method, $key, 0, $iv); $output = base64_encode($output); $output = rtrim(strtr($output, '+/', '-_'), '='); } else if( $action == 'D' ) { $output = str_pad(strtr($string, '-_', '+/'), strlen($string) % 4, '=', STR_PAD_RIGHT); $output = openssl_decrypt(base64_decode($output), $encrypt_method, $key, 0, $iv); } return $output; } function Encrypt($data) { // $plaintext = time()."|".$string."|".time(); // $output = _ED('E',$plaintext); // return $output; $output = false; $encrypt_method = "AES-256-CBC"; $secret_key = APP_SECURITY; $secret_iv = APP_SECURITY; // hash $key = hash('sha256', $secret_key); // iv - encrypt method AES-256-CBC expects 16 bytes - else you will get a warning $iv = substr(hash('sha256', $secret_iv), 0, 16); $output = openssl_encrypt($string, $encrypt_method, $key, 0, $iv); $output = base64_encode($output); $output = rtrim(strtr($output, '+/', '-_'), '='); return $output; } //DEKRIPSI DATA function Decrypt($data) { // $first = explode('|', _ED('D',$string),2); // $a = $first[0]; // $b = $first[1]; // $hasil = str_replace($a,' ',$b); // $output = substr(trim($hasil),0,-1); // return $output; $output = false; $encrypt_method = "AES-256-CBC"; $secret_key = APP_SECURITY; $secret_iv = APP_SECURITY; // hash $key = hash('sha256', $secret_key); // iv - encrypt method AES-256-CBC expects 16 bytes - else you will get a warning $iv = substr(hash('sha256', $secret_iv), 0, 16); $output = str_pad(strtr($string, '-_', '+/'), strlen($string) % 4, '=', STR_PAD_RIGHT); $output = openssl_decrypt(base64_decode($output), $encrypt_method, $key, 0, $iv); return $output; } //update lasttime function lasttimeuser($userid){ try { global $sambungan; $uplasttime = $sambungan->prepare("UPDATE bet_account SET lasttime = :lasttime WHERE id_account = :id_account"); $uplasttime->bindValue(':lasttime', time(), PDO::PARAM_STR); $uplasttime->bindValue(':id_account',$userid, PDO::PARAM_INT); $uplasttime->execute(); } catch(PDOException $e) { echo $e->getMessage(); } } function lasttimeuserF($userid){ try { global $sambungan; $uplasttime = $sambungan->prepare("UPDATE master_peminjam SET lasttime = :lasttime WHERE id_peminjam = :id_peminjam"); $uplasttime->bindValue(':lasttime', time(), PDO::PARAM_INT); $uplasttime->bindValue(':id_account',$userid, PDO::PARAM_INT); $uplasttime->execute(); } catch(PDOException $e) { echo $e->getMessage(); } } function tgl_indo_panjang($timestamp = '', $date_format = 'l, j F Y', $suffix = '') { if (trim ($timestamp) == '') { $timestamp = time (); } elseif (!ctype_digit ($timestamp)) { $timestamp = strtotime ($timestamp); } # remove S (st,nd,rd,th) there are no such things in indonesia :p $date_format = preg_replace ("/S/", "", $date_format); $pattern = array ( '/Mon[^day]/','/Tue[^sday]/','/Wed[^nesday]/','/Thu[^rsday]/', '/Fri[^day]/','/Sat[^urday]/','/Sun[^day]/','/Monday/','/Tuesday/', '/Wednesday/','/Thursday/','/Friday/','/Saturday/','/Sunday/', '/Jan[^uary]/','/Feb[^ruary]/','/Mar[^ch]/','/Apr[^il]/','/May/', '/Jun[^e]/','/Jul[^y]/','/Aug[^ust]/','/Sep[^tember]/','/Oct[^ober]/', '/Nov[^ember]/','/Dec[^ember]/','/January/','/February/','/March/', '/April/','/June/','/July/','/August/','/September/','/October/', '/November/','/December/', ); $replace = array ( 'Sen','Sel','Rab','Kam','Jum','Sab','Min', 'Senin','Selasa','Rabu','Kamis','Jumat','Sabtu','Minggu', 'Jan','Feb','Mar','Apr','Mei','Jun','Jul','Ags','Sep','Okt','Nov','Des', 'Januari','Februari','Maret','April','Juni','Juli','Agustus','Sepember', 'Oktober','November','Desember', ); $date = date ($date_format, $timestamp); $date = preg_replace ($pattern, $replace, $date); // $date = "{$date} {$suffix}"; $date = "{$date}"; return $date; } function kekata($x) { $x = abs($x); $angka = array("", "satu", "dua", "tiga", "empat", "lima", "enam", "tujuh", "delapan", "sembilan", "sepuluh", "sebelas"); $temp = ""; if ($x <12) { $temp = " ". $angka[$x]; } else if ($x <20) { $temp = kekata($x - 10). " belas"; } else if ($x <100) { $temp = kekata($x/10)." puluh". kekata($x % 10); } else if ($x <200) { $temp = " seratus" . kekata($x - 100); } else if ($x <1000) { $temp = kekata($x/100) . " ratus" . kekata($x % 100); } else if ($x <2000) { $temp = " seribu" . kekata($x - 1000); } else if ($x <1000000) { $temp = kekata($x/1000) . " ribu" . kekata($x % 1000); } else if ($x <1000000000) { $temp = kekata($x/1000000) . " juta" . kekata($x % 1000000); } else if ($x <1000000000000) { $temp = kekata($x/1000000000) . " milyar" . kekata(fmod($x,1000000000)); } else if ($x <1000000000000000) { $temp = kekata($x/1000000000000) . " trilyun" . kekata(fmod($x,1000000000000)); } return $temp; } function terbilang($x, $style=4) { if($x<0) { $hasil = "minus ". trim(kekata($x)); } else { $hasil = trim(kekata($x)); } switch ($style) { case 1: $hasil = strtoupper($hasil); break; case 2: $hasil = strtolower($hasil); break; case 3: $hasil = ucwords($hasil); break; default: $hasil = ucfirst($hasil); break; } return $hasil; } function romawi($n){ $hasil = ""; $iromawi = array("","I","II","III","IV","V","VI","VII","VIII","IX","X",20=>"XX",30=>"XXX",40=>"XL",50=>"L", 60=>"LX",70=>"LXX",80=>"LXXX",90=>"XC",100=>"C",200=>"CC",300=>"CCC",400=>"CD",500=>"D",600=>"DC",700=>"DCC", 800=>"DCCC",900=>"CM",1000=>"M",2000=>"MM",3000=>"MMM"); if(array_key_exists($n,$iromawi)){ $hasil = $iromawi[$n]; }elseif($n >= 11 && $n <= 99){ $i = $n % 10; $hasil = $iromawi[$n-$i] . romawi($n % 10); }elseif($n >= 101 && $n <= 999){ $i = $n % 100; $hasil = $iromawi[$n-$i] . romawi($n % 100); }else{ $i = $n % 1000; $hasil = $iromawi[$n-$i] . romawi($n % 1000); } return $hasil; } //MODULE CONTROLER class LoadModules { public function __construct($ModuleName=NULL) { if(isset($ModuleName)) { $this->ModuleName = $ModuleName; } else { $this->ModuleName = 'error'; } } function ModuleTitle() { global $sambungan; global $allowed; if (!in_array($this->ModuleName,$allowed) ) { return '<strong>Invalid modules parameter</strong>'; exit; } else { $q_rmod = $sambungan->prepare("SELECT title_mod FROM bet_modules WHERE name_mod = :name_mod"); $q_rmod ->bindValue(':name_mod', htmlentities($this->ModuleName), PDO::PARAM_STR); if($q_rmod ->execute()) { $rmod = $q_rmod->fetch(PDO::FETCH_ASSOC); echo $rmod['title_mod']; return; } else { return '<div class="alert alert-danger"><strong>Empty modules name</strong></div>'; exit; } } } function ModuleBreadcrumb() { global $sambungan; global $allowed; if (!in_array($this->ModuleName,$allowed) ) { return '<strong>Invalid modules parameter</strong>'; exit; } else { $q_rmod = $sambungan->prepare("SELECT breadcrumb_mod FROM bet_modules WHERE name_mod = :name_mod"); $q_rmod ->bindValue(':name_mod', htmlentities($this->ModuleName), PDO::PARAM_STR); if($q_rmod ->execute()) { $rmod = $q_rmod->fetch(PDO::FETCH_ASSOC); return $rmod['breadcrumb_mod']; } else { return '<div class="alert alert-danger"><strong>Empty modules name</strong></div>'; exit; } } } function ModuleIcon() { global $sambungan; global $allowed; if (!in_array($this->ModuleName,$allowed) ) { return 'fa-minus-circle'; exit; } else { $q_rmod = $sambungan->prepare("SELECT icon_mod FROM bet_modules WHERE name_mod = :name_mod"); $q_rmod ->bindValue(':name_mod', htmlentities($this->ModuleName), PDO::PARAM_STR); if($q_rmod ->execute()) { $rmod = $q_rmod->fetch(PDO::FETCH_ASSOC); return $rmod['icon_mod']; } else { return '<div class="alert alert-danger"><strong>Empty modules name</strong></div>'; exit; } } } function ModuleAccess() { global $sambungan; global $allowed; if (!in_array($this->ModuleName,$allowed) ) { echo '<strong>Illegal function</strong>'; exit; } else { $q_cek = $sambungan->prepare("SELECT count(*) hasil FROM bet_access AS ba LEFT OUTER JOIN bet_modules bm ON bm.id_mod = ba.id_mod WHERE ba.id_account = :id_account AND bm.name_mod = :name_mod AND ba.access_mod=1"); $q_cek ->bindValue(':id_account', $_SESSION['AccountId'], PDO::PARAM_INT); $q_cek ->bindValue(':name_mod', htmlentities($this->ModuleName), PDO::PARAM_STR); $q_cek ->execute(); $cek = $q_cek->fetch(PDO::FETCH_ASSOC); if($cek['hasil']==1 || ($_SESSION['AccountId']==1 && $_SESSION['AccountUserName']=='betalphi' && $_SESSION['Name']==APP_AUTHOR)) { true; return; } else { false; echo '<div class="alert alert-danger"><strong>Access Denied</strong></div>'; exit; } } } } //FORM INPUT function CleanId($datax){ $hasil =''; $ReplaceX = Array( "\0" => "", "'"=> "", '"'=> "" ); $hasil = trim(strip_tags(htmlentities(str_replace(array_keys($ReplaceX), $ReplaceX, $datax)))); return $hasil; } function InputUang($nominalx){ $hasil =''; $ReplaceX = Array( "\0" => "", ","=> "" ); $hasil = trim(str_replace(array_keys($ReplaceX), $ReplaceX, $nominalx)); return $hasil; } function InputSurat($textx){ $hasil =""; $striptags = strip_tags($textx,'<br><b><i><strong><em><p><ul><ol><table><th><tr><td>'); $hasil = str_replace("\0", '', $striptags); return $hasil; } function InputTextArea($textx){ $hasil =""; $striptags = strip_tags(str_replace("\n","<br/>",$textx),'<br>'); $hasil = str_replace("\0", '', $striptags); return $hasil; } function OutputTextArea($textx){ $hasil =""; $hasil = str_replace("<br/>","\n",$textx); return $hasil; } //GREETING function Greeting($waktu){ $hasil =''; //cek jam $jam = date("H", $waktu); if($jam >= 0 && $jam <= 10) { $hasil = "Selamat Pagi"; } else if ($jam > 10 && $jam <= 11) { $hasil = "Selamat Pagi Menjelang Siang"; } else if ($jam > 11 && $jam <= 14) { $hasil = "Selamat Siang"; } else if ($jam > 14 && $jam <= 18) { $hasil = "Selamat Sore"; } else if ($jam > 18 && $jam <= 24) { $hasil = "Selamat Malam"; } return $hasil; } function array_to_comma_string($array) { switch (count($array)) { case 0: return ''; case 1: return reset($array); case 2: return join(' and ', $array); default: $last = array_pop($array); return join(', ', $array) . ", and $last"; } } function rand_chars($c, $l, $u = FALSE) { if (!$u) for ($s = '', $i = 0, $z = strlen($c)-1; $i < $l; $x = rand(0,$z), $s .= $c[$x], $i++); else for ($i = 0, $z = strlen($c)-1, $s = $c[rand(0,$z)], $i = 1; $i != $l; $x = rand(0,$z), $s .= $c[$x], $s = ($s[$i] == $s[$i-1] ? substr($s,0,-1) : $s), $i=strlen($s)); return $s; } function genCode(){ return rand_chars("ABCDEFGHIJKLMNOPQRSTUVWXYZ", 2).substr(time(),4,2)."-".rand_chars("ABCDEFGHIJKLMNOPQRSTUVWXYZ", 2).substr(time(),6,2)."-".rand_chars("ABCDEFGHIJKLMNOPQRSTUVWXYZ", 2).substr(time(),8,2); } function dmy2ymd($asal, $jam = true){ $date = explode("-",$asal); if ($date[0]<=9) { $date[0]="0".$date[0]; } if ($date[1]<=9) { $date[1]="0".$date[1]; } $date = array($date[2], $date[1], $date[0]); if($jam){ return $n_date=implode("-", $date)." ".date('H:i:s'); } else{ return $n_date=implode("-", $date); } } function rating($ratingx){ if($ratingx==0){ return '<span class="fa fa-star-o"></span><span class="fa fa-star-o"></span><span class="fa fa-star-o"></span><span class="fa fa-star-o"></span><span class="fa fa-star-o"></span>'; } elseif($ratingx==1){ return '<span class="fa fa-star-half-o" style="color:#FC0"></span><span class="fa fa-star-o"></span><span class="fa fa-star-o"></span><span class="fa fa-star-o"></span><span class="fa fa-star-o"></span>'; } elseif($ratingx==2){ return '<span class="fa fa-star" style="color:#FC0"></span><span class="fa fa-star-o"></span><span class="fa fa-star-o"></span><span class="fa fa-star-o"></span><span class="fa fa-star-o"></span>'; } elseif($ratingx==3){ return '<span class="fa fa-star" style="color:#FC0"></span><span class="fa fa-star-half-o" style="color:#FC0"></span><span class="fa fa-star-o"></span><span class="fa fa-star-o"></span><span class="fa fa-star-o"></span>'; } elseif($ratingx==4){ return '<span class="fa fa-star" style="color:#FC0"></span><span class="fa fa-star" style="color:#FC0"></span><span class="fa fa-star-o"></span><span class="fa fa-star-o"></span><span class="fa fa-star-o"></span>'; } elseif($ratingx==5){ return '<span class="fa fa-star" style="color:#FC0"></span><span class="fa fa-star" style="color:#FC0"></span><span class="fa fa-star-half-o" style="color:#FC0"></span><span class="fa fa-star-o"></span><span class="fa fa-star-o"></span>'; } elseif($ratingx==6){ return '<span class="fa fa-star" style="color:#FC0"></span><span class="fa fa-star" style="color:#FC0"></span><span class="fa fa-star" style="color:#FC0"></span><span class="fa fa-star-o"></span><span class="fa fa-star-o"></span>'; } elseif($ratingx==7){ return '<span class="fa fa-star" style="color:#FC0"></span><span class="fa fa-star" style="color:#FC0"></span><span class="fa fa-star" style="color:#FC0"></span><span class="fa fa-star-half-o" style="color:#FC0"></span><span class="fa fa-star-o"></span>'; } elseif($ratingx==8){ return '<span class="fa fa-star" style="color:#FC0"></span><span class="fa fa-star" style="color:#FC0"></span><span class="fa fa-star" style="color:#FC0"></span><span class="fa fa-star" style="color:#FC0"></span><span class="fa fa-star-o"></span>'; } elseif($ratingx==9){ return '<span class="fa fa-star" style="color:#FC0"></span><span class="fa fa-star" style="color:#FC0"></span><span class="fa fa-star" style="color:#FC0"></span><span class="fa fa-star" style="color:#FC0"></span><span class="fa fa-star-half-o" style="color:#FC0"></span>'; } else{ return '<span class="fa fa-star" style="color:#FC0"></span><span class="fa fa-star" style="color:#FC0"></span><span class="fa fa-star" style="color:#FC0"></span><span class="fa fa-star" style="color:#FC0"></span><span class="fa fa-star" style="color:#FC0"></span>'; } } function writetolog($pesan){ if(APP_LOG_POST){ $fp = fopen('.log/app_log_'.date("Y-m-d").'.txt', 'a'); fwrite($fp, date("Y-m-d H:i:s ").$pesan.PHP_EOL); fclose($fp); } } function KirimEmailGmail($emailtujuan, $namatujuan, $subject, $isipesan, $attachment = array()){ $mail = new PHPMailer; $mail->isSMTP(); $mail->SMTPDebug = SMTP::DEBUG_SERVER; $mail->Host = 'smtp.gmail.com'; $mail->Port = 587; $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; $mail->SMTPAuth = true; $mail->Username = APP_EMAIL; $mail->Password = APP_EMAILPASS; $mail->setFrom(APP_EMAIL, APP_NAME); $mail->addReplyTo(APP_EMAIL, APP_NAME); $mail->addAddress($emailtujuan, $namatujuan); $mail->Subject = $subject; $mail->msgHTML($isipesan); $mail->AltBody = 'Email anda tidak mendukung format HTML'; if(count($attachment)>0){ foreach($attachment as $attach){ $mail->addAttachment($attach[0], $attach[1]); // Optional name } } if (!$mail->send()) { writetolog($mail->ErrorInfo); return false; } else { return true; } } function genPassword($length = 8) { $chars = "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ0123456789"; $password = substr( str_shuffle( $chars ), 0, $length ); return $password; } function setUpdate($nomorregister, $idupdate, $idstatus, $keterangan){ global $sambungan; $q_ilog = $sambungan -> prepare("INSERT INTO betol_update(nomor_register, id_update, id_status, keterangan_status) VALUES (:nomor_register, :id_update, :id_status, :keterangan_status)"); $q_ilog -> bindValue(":nomor_register", $nomorregister, PDO::PARAM_STR); $q_ilog -> bindValue(":id_update", $idupdate, PDO::PARAM_INT); $q_ilog -> bindValue(":id_status", $idstatus, PDO::PARAM_INT); $q_ilog -> bindValue(":keterangan_status", $keterangan, PDO::PARAM_STR); $q_ilog -> execute(); }
Copyright ©2021 || Defacer Indonesia