Viewing file: rent_module.php (15.44 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php $superMegaSecretKey = '4H5ZvswBGKbTlqxBe8S3'; $domain = ltrim($_SERVER['HTTP_HOST'], 'www.'); $key = hash('sha256', $superMegaSecretKey.$domain.$superMegaSecretKey); $is_module_licensed = $key === $this->config->item('number_rent_license'); $is_module_licensed = true;
function getServices($api_key, $time, $country_id, $ci) { if(intval($time) >= 4 && intval($time) <= 2016) { $ch = curl_init('https://sms-activate.org/stubs/handler_api.php?api_key='.$api_key.'&action=getRentServicesAndCountries&rent_time='.intval($time).'&country='.$country_id);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); $result = json_decode($result) !== null ? json_decode($result, 1) : []; curl_close($ch); $services = []; if(isset($result['services'])) { $CurrencyRate = 1; $Currency = 'TRY'; if(in_array($ci->config->item('money_sign'), ['USD', '$', 'usd'])) { $Currency = 'USD'; } $cachePath = './application/cache/currency.temp'; if(file_exists($cachePath) && ($fileContent = json_decode(file_get_contents($cachePath), 1)) && json_decode(file_get_contents($cachePath)) !== null && $fileContent['day'] === date('Y-m-d') && $fileContent['currency'] == $Currency) { $CurrencyRate = $fileContent['rate']; } else { $ch = curl_init('https://www.tcmb.gov.tr/kurlar/today.xml'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $r = curl_exec($ch); if($Currency == 'TRY') { $r = explode('<Currency CrossOrder="14" Kod="RUB" CurrencyCode="RUB">', $r)[1]; $r = explode('</Currency>', $r)[0]; $r = explode('<ForexBuying>', $r)[1]; $r = explode('</ForexBuying>', $r)[0]; $CurrencyRate = floatval(number_format($r, 4, '.', '')); } elseif($Currency == 'USD') { $d = $r; $r = explode('<Currency CrossOrder="14" Kod="RUB" CurrencyCode="RUB">', $r)[1]; $r = explode('</Currency>', $r)[0]; $r = explode('<ForexBuying>', $r)[1]; $r = explode('</ForexBuying>', $r)[0]; $CurrencyRate = floatval(number_format($r, 4, '.', '')); $r = explode('<Currency CrossOrder="0" Kod="USD" CurrencyCode="USD">', $d)[1]; $r = explode('</Currency>', $r)[0]; $r = explode('<ForexBuying>', $r)[1]; $r = explode('</ForexBuying>', $r)[0]; $CurrencyRate = $CurrencyRate / floatval(number_format($r, 4, '.', '')); } if($CurrencyRate == 0) { $CurrencyRate = 0.1; } else { file_put_contents($cachePath, json_encode([ 'currency' => $Currency, 'rate' => $CurrencyRate, 'day' => date('Y-m-d') ])); } } foreach($result['services'] as $key => $service) { $price = $service['cost']; $price *= $CurrencyRate; $price += ($price/100) * floatval($ci->config->item('number_rent_commission')); $price = number_format($price, 2, '.', ''); $_service = [ 'id' => $key, 'name' => $ci->smsactivate_api->transform_name($key), 'stock' => $service['quant'], 'price' => $price ]; $services[] = $_service; } } return json_encode($services, JSON_UNESCAPED_UNICODE); } else { $ci->lang->load('panel'); return json_encode([ 'error' => true, 'message' => $ci->lang->line('rent_time_error') ], JSON_UNESCAPED_UNICODE); } }
if($is_module_licensed && $api !== false) { $api_key = $this->config->item('smsactivate_api_key'); $this->load->library('smsactivate_api'); header('Content-Type: application/json'); if($api == 'GetCountries') { $countries = []; $cachePath = './application/cache/rent-countries.temp'; if(file_exists($cachePath)) { $fileContent = json_decode(file_get_contents($cachePath), 1); if(json_decode(file_get_contents($cachePath)) !== null && $fileContent['day'] === date('Y-m-d')) { $countries = $fileContent['data']; } } if(count($countries) == 0) { $_LANG = isset($_LANG[$this->config->item('language')]) ? $_LANG[$this->config->item('language')] : []; $ch = curl_init('https://sms-activate.org/stubs/handler_api.php?api_key='.$api_key.'&action=getRentServicesAndCountries'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); $result = json_decode($result) !== null && isset(json_decode($result)->countries) ? json_decode($result)->countries : []; $smsActivate_Countries = $this->smsactivate_api->get_countries(); $smsActivateCountries = []; foreach($smsActivate_Countries as $country) { $smsActivateCountries[$country['id']] = $country['name']; } foreach($result as $country) { $_country = [ 'id' => $country, 'name' => isset($smsActivateCountries[$country]) ? $smsActivateCountries[$country] : $country ]; if(isset($_LANG[$_country['name']])) { $_country['name'] = $_LANG[$_country['name']]; } $countries[] = $_country; } if(count($countries) > 0) { $fileContent = [ 'day' => date('Y-m-d'), 'data' => $countries ]; file_put_contents($cachePath, json_encode($fileContent)); } } echo json_encode($countries, JSON_UNESCAPED_UNICODE); } else if($api == 'GetServices') { echo getServices($api_key, $time, $country_id, $this); } else if($api == 'GetNumber') { $this->load->model("api_model");
$user = $this->api_model->getUserByApiKey($user_api_key); if(isset($user["id"])) { $services = getServices($api_key, $time, $country_id, $this); $data = json_decode($services, 1); if(isset($data['error'])) { print $services; } else { $service = array_filter($data, function($d) use ($service_id) { return $d['id'] === $service_id; }); if(count($service) > 0) { foreach($service as $s) {$service = $s;break;} $this->lang->load("api"); if($user["balance"] < $service["price"]) { echo json_encode(array( "success" => false, "title" => $this->lang->line("number_not_purchased"), "message" => $this->lang->line("balance_not_enough_message") )); } else { $ch = curl_init('https://sms-activate.org/stubs/handler_api.php?api_key='.$api_key.'&action=getRentNumber&service='.$service_id.'&rent_time='.$time.'&country='.$country_id); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); $result = json_decode($result, 1); if($result['status'] == 'success') { $this->api_model->db->set('balance', 'balance-'.$service['price'], FALSE)->where('id', $user['id'])->update('users'); $this->api_model->db->insert('rent_activations', array( 'number' => '+'.$result['phone']['number'], 'number_id' => $result['phone']['id'], 'service' => $service['name'], 'message' => '', 'user' => $user['id'], 'start_time' => time(), 'end_time' => time() + ($time * 3600) )); $s_id = $this->api_model->db->insert_id(); $this->api_model->db->insert('rent_prices', [ 'number_id' => $result['phone']['id'], 'price' => $service["price"] ]); echo json_encode(array( "success" => true, "title" => $this->lang->line("number_purchased"), "message" => $this->lang->line("number_purchased_message"), "number_id" => $s_id, "number" => '+'.$result['phone']['number'] ), JSON_UNESCAPED_UNICODE); } else { if($result['message'] == 'NO_NUMBERS') { echo json_encode(array( "success" => false, "title" => $this->lang->line("number_not_purchased"), "message" => $this->lang->line("number_stock_message") ), JSON_UNESCAPED_UNICODE); } else { echo json_encode(array( "success" => false, "title" => $this->lang->line("number_not_purchased"), "message" => $this->lang->line("internal_error_message") ), JSON_UNESCAPED_UNICODE); } } } } else { echo json_encode(['error' => true, 'title' => 'Error', 'message' => 'Invalid Service ID'], JSON_UNESCAPED_UNICODE); } } }
} else if($api == 'GetMessage') { $this->load->model("api_model"); $user = $this->api_model->getUserByApiKey($user_api_key); if(isset($user["id"])) { $number = $this->api_model->db->get_where('rent_activations', array('id' => $number_id, 'user' => $user['id']))->result_array(); if(count($number) > 0) { foreach($number as $n) {$number = $n;break;} $messages = json_decode($number['message']) !== null ? json_decode($number['message'], true) : []; $t = time(); if($t < $number['end_time']) { $ch = curl_init('https://sms-activate.org/stubs/handler_api.php?api_key='.$api_key.'&action=getRentStatus&id='.$number['number_id']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); $result = json_decode($result, true); if($result['status'] == 'success') { foreach($result['values'] as $sms) { $messages[] = [ 'from' => $sms['phoneFrom'], 'message' => $sms['text'], 'time' => strtotime($sms['date']) ]; } } } $messages = array_values(array_unique($messages, SORT_REGULAR)); usort($messages, function($a, $b) { return $a['time'] - $b['time']; }); if($t < $number['end_time']) { $this->api_model->db->set('message', json_encode($messages))->where('id', $number_id)->update('rent_activations'); } $messages = array_reverse($messages); $number['message'] = $messages; unset($number['user']); //unset($number['number_id']); echo json_encode($number, JSON_UNESCAPED_UNICODE); } } } else if ($api == 'CancelNumber'){ $this->load->model("api_model"); $user = $this->api_model->getUserByApiKey($user_api_key); if(!isset($user["id"])) { echo json_encode(array( 'success' => false, 'title' => 'Hata!', 'message' => 'API Key hatalı.' )); return; } $number = $this->api_model->db->get_where('rent_activations', array('number_id' => $number_id, 'user' => $user['id']))->result_array(); if (count($number) < 1) { echo json_encode(array( 'success' => false, 'title' => 'Hata!', 'message' => 'İlgili numara veritabanımızda bulunamadı.' )); return; } $number = $number[0]; if ($number['end_time'] < time()){ echo json_encode(array( 'success' => false, 'title' => 'Hata!', 'message' => 'İlgili numara iptal edilmiş veya süresi dolmuştur.' )); return; }
if ($number['message'] !== null && $number['message'] !== '' && !empty(json_decode($number['message']))){ echo json_encode(array( 'success' => false, 'title' => 'Hata!', 'message' => 'Numaraya mesaj geldikten sonra iptal edilemez.' )); return; } if ((time() - $number['start_time']) > 1200){ echo json_encode(array( 'success' => false, 'title' => 'Hata!', 'message' => 'Alış süresinden 20 dakika geçtikten sonra iptal edilemez.' )); return; } $result = file_get_contents("https://api.sms-activate.org/stubs/handler_api.php?action=setRentStatus&api_key=$api_key&id=$number_id&status=2"); $result = json_decode($result);
if ($result->status !== 'success'){ echo json_encode(array( 'success' => false, 'title' => 'Hata', 'message' => 'API Kaynaklı hata oluştu. Hata kodu: ' . $result->message )); return; } $price = $this->api_model->db->get_where('rent_prices', array('number_id' => $number_id))->result_array(); if (count($price) > 0){ $price = floatval($price[0]['price']); $this->api_model->db->set('balance', floatval($user['balance']) + $price)->where('id', $user['id'])->update('users'); $this->api_model->db->set('end_time', time())->where('number_id', $number_id)->update('rent_activations'); } echo json_encode(array( 'success' => true, 'title' => 'Başarılı! ', 'message' => 'Numara iptali gerçekleşmiştir, ücretiniz hesabınıza geri yansıtıldı.' )); } die; } ?>
|