Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- root@mikbill:/etc/php5/apache2# cat /var/www/mikbill/stat/newscript.php
- <?php
- //Параметры работы скрипта
- $mysql_host = 'localhost';
- $mysql_user = 'root';
- $mysql_password = 'f,jytyn';
- $mysql_dbase = 'mikbill';
- $log_file = $_SERVER['DOCUMENT_ROOT'].'/script_log_1.log';
- //параметры исходящей почты
- $config['smtp_username'] = 'iptv@pautina-ltd.ru';
- $config['smtp_port'] = '465';
- $config['smtp_host'] = 'ssl://smtp.yandex.ru';
- $config['smtp_password'] = '12345';
- $config['smtp_debug'] = false;
- $config['smtp_charset'] = 'UTF-8';
- $config['smtp_from'] = 'IPTVPORTAL SCRIPT';
- //параметры отправляемого письма
- $mail_to_admin = true;
- $mail_to = 'iptv@pautina-ltd.ru';
- $mail_subj = 'Отчёт о работе скрипта';
- $mail_headers = 'Content-type: text/html; charset="UTF-8"'."\r\n";
- $mail_headers .= 'From: '.$config['smtp_from'].' <'.$config['smtp_username'].'>'."\r\n";
- //параметры iptvportal.ru
- $_auth_uri = 'http://91.236.103.39/api/jsonrpc/';
- $_username = 'admin';
- $_password = 'admin123';
- $_jsonsql_uri = 'http://91.236.103.39/api/jsonsql/';
- $_iptvportal_header = null;
- //Системный профиль добавляемых пользователей
- $_system_profile = '70'; //niko
- //Группы синхронизируемых пользователей
- $_users_groups = "1"; //(список групп - через запятую+пробел, ХЗ - сейчас стоит группа 8, но функционал оставляю на будущее...)
- $_include_groups = false; //(для субпровайдеров - true), когда true - включать только пользователей указанных групп, false - включать только пользователей ВНЕ указанных групп
- //Тут приведу соответствие пакетов микбиловских и мидлваровских...
- $default_packets = array('1393'); // Базовый
- $mikbill_packets[112] = array('1393','1341'); // 11|Пакет Видео по Запросу
- $mikbill_packets[111] = array('1393','1336'); // 10|Пакет Управление Просмотром
- $mikbill_packets[110] = array('1393','1381'); // 09|Пакет HD
- $mikbill_packets[104] = array('1393','1390'); // 03|Пакет Спорт
- $mikbill_packets[107] = array('1393','1389'); // 06|Пакет А-Медиа
- $mikbill_packets[120] = array('1393','1349'); // 12|Пакет Виртуальный Кинозал
- $mikbill_packets[109] = array('1393','1388'); // 08|Пакет Взрослый
- $mikbill_packets[102] = array('1393','1382'); // 01|Пакет Детский
- $mikbill_packets[103] = array('1393','1383'); // 02|Пакет Кино
- $mikbill_packets[108] = array('1393','1391'); // 07|Пакет Наш Футбол
- $mikbill_packets[105] = array('1393','1384'); // 04|Пакет Познавательный
- $mikbill_packets[106] = array('1393','1386'); // 05|Пакет Развлекательный
- $mikbill_packets[116] = array('1393','1344','1382'); // Пакет Стандарт + Детский
- $mikbill_packets[113] = array('1393','1344','1390'); // Пакет Стандарт + Спорт
- $mikbill_packets[117] = array('1393','1344','1383'); // Пакет Стандарт + Кино
- $mikbill_packets[118] = array('1393','1344','1384'); // Пакет Стандарт + Познавательный
- $mikbill_packets[119] = array('1393','1344','1386'); // Пакет Стандарт + Развлекательный
- $mikbill_packets[114] = array('1393','1387'); // 13|Пакет "Все Включено"
- $mikbill_packets[115] = array('1393','1387'); // 20|Пакет "Все Включено" - free
- //параметры работы скрипта закончены, дальше чисто код
- header('Content-Type: text/html; charset=utf-8');
- setlocale(LC_ALL,'ru_RU.UTF-8');
- setlocale(LC_NUMERIC,'en_US.UTF-8');
- date_default_timezone_set('Europe/Moscow');
- //Для начала очищу файл логов
- if(!$handle = fopen($log_file, 'w')) {
- if($mail_to_admin){smtpmail($mail_to,$mail_subj,'FATAL ERROR: Не могу произвести запись логов',$mail_headers);}
- die('Не могу произвести запись логов');}
- ftruncate($handle,0);
- fclose($handle);
- ob_start();
- //проверяю соединение с базой данных MySQL
- $link=mysql_connect($mysql_host,$mysql_user,$mysql_password);
- if(!$link){
- $message = 'Ошибка соединения: ' . mysql_error();
- fatal_error($message);
- }
- log_save('1) Успешно соединился с сервером БД;',$log_file);
- //проверяю соединение с базой данных
- $db_selected = mysql_select_db($mysql_dbase,$link);
- if (!$db_selected) {
- $message = 'Не удалось выбрать базу '.$mysql_dbase.' : '.mysql_error();
- fatal_error($message);
- }
- log_save('2) Успешно выбрал базу данных;',$log_file);
- //Вычисляю для начала список БАЗОВЫХ услуг
- $query = "SELECT serviceid FROM services WHERE service_activation=0 AND suspended=0";
- trigger_error($query,E_USER_NOTICE);
- mysql_query('SET NAMES utf8');
- $result = mysql_query($query);
- while ($row = mysql_fetch_assoc($result)) {
- $BaseServices[] = $row['serviceid'];
- }
- //Затем выясняю, на каких тарифах доступны указанные базовые услуги
- for($i=0;$i<count($BaseServices);$i++){
- $query = "SELECT gid FROM services_packets_pairs WHERE serviceid=".$BaseServices[$i];
- trigger_error($query,E_USER_NOTICE);
- mysql_query('SET NAMES utf8');
- $result = mysql_query($query);
- while ($row = mysql_fetch_assoc($result)) {
- $BaseGids[] = $row['gid'];
- $GidServices[$row['gid']][] = $BaseServices[$i];
- }
- }
- //Список услуг доступных для подключения (НЕ БАЗОВЫХ)
- $query = "SELECT serviceid FROM services WHERE service_activation=1 AND suspended=0";
- trigger_error($query,E_USER_NOTICE);
- mysql_query('SET NAMES utf8');
- $result = mysql_query($query);
- while ($row = mysql_fetch_assoc($result)) {
- $AllServices[] = $row['serviceid'];
- }
- //Затем выясняю, на каких тарифах доступны указанные услуги
- for($i=0;$i<count($AllServices);$i++){
- $query = "SELECT gid FROM services_packets_pairs WHERE serviceid=".$AllServices[$i];
- trigger_error($query,E_USER_NOTICE);
- mysql_query('SET NAMES utf8');
- $result = mysql_query($query);
- while ($row = mysql_fetch_assoc($result)) {
- $AllGids[] = $row['gid'];
- $AllGidServices[$row['gid']][] = $AllServices[$i];
- }
- }
- //Первый запрос к БД, выборка пользователей
- $query = "SELECT uid, user, password, fio, address, prim, blocked, gid FROM users";
- //$query = "SELECT * FROM users";
- trigger_error($query,E_USER_NOTICE);
- mysql_query('SET NAMES utf8');
- $result = mysql_query($query);
- if (!$result) {
- $message ='Неверный запрос: '.mysql_error()."\n";
- $message.='Запрос целиком: '.$query;
- fatal_error($message);
- }
- log_save('3) Успешно запросил информацию о пользователях;',$log_file);
- if (!mysql_num_rows($result)) {
- $message='Запрос к таблице пользователей вернул пустой результат.'."\n";
- fatal_error($message);
- }
- $i=0;
- while ($$mik_bill_users[$i]['uid'] = $row['uid'];
- $mik_bill_users[$i]['user'] = $row['user'];
- $mik_bill_users[$i]['password'] = $row['password'];
- $mik_bill_users[$i]['fio'] = $row['fio'];
- $mik_bill_users[$i]['address'] = $row['address'];
- $mik_bill_users[$i]['prim'] = $row['prim'];
- $mik_bill_users[$i]['blocked'] = $row['blocked'];
- $mik_bill_users[$i]['gid'] = $row['gid'];
- $i++;
- }
- //ВОТ ТУТ ПРОВЕРЯЮ ГРУППЫ ПОЛЬЗОВАТЕЛЕЙ
- $query = "SELECT uid FROM usersgroups_users WHERE usersgroupid IN(".$_users_groups.")";
- mysql_query('SET NAMES utf8');
- trigger_error($query,E_USER_NOTICE);
- $result = mysql_query($query);
- if (!$result) {
- $message ='Неверный запрос: '.mysql_error()."\n";
- $message.='Запрос целиком: '.$query;
- fatal_error($message);
- }
- log_save('4) Успешно запросил информацию о пользователях нужных групп;',$log_file);
- if (!mysql_num_rows($result)) {
- $message='Запрос к таблице групп пользователей вернул пустой результат.'."\n";
- fatal_error($message);
- }
- $i=0;
- while ($row = mysql_fetch_assoc($result)) {
- $group_users[$i]['uid'] = $row['uid'];
- $i++;
- }
- $not_group_users_count = 0;
- $group_users_count = 0;
- for($j=0;$j<count($mik_bill_users);$j++){
- for($i=0;$i<count($group_users);$i++){
- $user_found_in_group = false;
- if($mik_bill_users[$j]['uid']==$group_users[$i]['uid']){
- $user_found_in_group = true;
- $mik_bill_group_users[$group_users_count]['uid'] = $mik_bill_users[$j]['uid'];
- $mik_bill_group_users[$group_users_count]['user'] = $mik_bill_users[$j]['user'];
- $mik_bill_group_users[$group_users_count]['password'] = $mik_bill_users[$j]['password'];
- $mik_bill_group_users[$group_users_count]['fio'] = $mik_bill_users[$j]['fio'];
- $mik_bill_group_users[$group_users_count]['address'] = $mik_bill_users[$j]['address'];
- $mik_bill_group_users[$group_users_count]['prim'] = $mik_bill_users[$j]['prim'];
- $mik_bill_group_users[$group_users_count]['blocked'] = $mik_bill_users[$j]['blocked'];
- $mik_bill_group_users[$group_users_count]['gid'] = $mik_bill_users[$j]['gid'];
- $group_users_count++;
- }
- }
- if(!$user_found_$mik_bill_not_group_users[$not_group_users_count]['uid'] = $mik_bill_users[$j]['uid'];
- $mik_bill_not_group_users[$not_group_users_count]['user'] = $mik_bill_users[$j]['user'];
- $mik_bill_not_group_users[$not_group_users_count]['password'] = $mik_bill_users[$j]['password'];
- $mik_bill_not_group_users[$not_group_users_count]['fio'] = $mik_bill_users[$j]['fio'];
- $mik_bill_not_group_users[$not_group_users_count]['address'] = $mik_bill_users[$j]['address'];
- $mik_bill_not_group_users[$not_group_users_count]['prim'] = $mik_bill_users[$j]['prim'];
- $mik_bill_not_group_users[$not_group_users_count]['blocked'] = $mik_bill_users[$j]['blocked'];
- $mik_bill_not_group_users[$not_group_users_count]['gid'] = $mik_bill_users[$j]['gid'];
- $not_group_users_count++;
- }
- }
- if($_include_groups){//включать только пользователей указанных групп
- $mik_bill_users = $mik_bill_group_users;
- }else{//включать только пользователей ВНЕ указанных групп
- $mik_bill_users = $mik_bill_not_group_users;
- }
- //Тут добавлю пользователям базовые пакеты, прописанные в выбранном тарифе
- for($j=0;$j<count($mik_bill_users);$j++){
- if (in_a$mik_bill_users[$j]['services'] = $GidServices[$mik_bill_users[$j]['gid']];
- }
- }
- //А вот тут - индивидуальные пакеты, вне выбранного тарифа...
- $query = "SELECT * FROM services_users_pairs";
- mysql_query('SET NAMES utf8');
- trigger_error($query,E_USER_NOTICE);
- $result = mysql_query($query);
- if (!$result) {
- $message ='Неверный запрос: '.mysql_error()."\n";
- $message.='Запрос целиком: '.$query;
- fatal_error($message);
- }
- log_save('5) Успешно запросил информацию о пакетах пользователей;',$log_file);
- $i=0;
- while ($row = mysql_fetch_assoc($result)) {
- for($j=0;$j<count($mik_bill_users);$j++){
- if ($rowif (!in_array($row['serviceid'], $BaseServices)) { //проверка наличия выбранного сервиса в списке БАЗОВЫХ, если сервис базовый - он добавляется не здесь, а вместе с тарифом...
- $mik_bill_users[$j]['services'][] = $row['serviceid'];ill_users[$j]['gid']])) { //проверка наличия выбранного сервиса в списке доступных, если услуга доступна на этом тарифе - тогда тогда добавление проходит...
- }
- }
- }
- }
- $i++;
- }
- //Авторизуюсь на сервере MiddleWare
- $user = authorize_user ($auth_uri=$_auth_uri, $username=$_username, $password=$_password);
- if(empty($user[session_id])){
- $message='Авторизация на сервере MiddleWare не прошла.'."\n";
- fatal_error($message);
- }
- log_save('6) Успешно авторизовался на сервере MiddleWare;',$log_file);
- # выборка списка абонентов
- $res = jsonsql_call ("select", array (
- "data" => array ("username", "comment"),
- "from" => "subscriber",
- "where" => array ("eq" => array ("sprofile_id", $_system_profile))
- ));
- //убираю из списка синхронизируемых пользователей юзеров с коментарием VIP
- foreach($res as $current_user)
- {
- if($current_user[1]<>"VIP"){$middleware_users[]['user'] = $current_user[0];}
- }
- //итак имеем две таблицы пользователей, сформирую массивы элементов, которые нужно добавить в MiddleWare, удалить из MiddleWare, а так же массив общих элементов
- $del_from_middleware_elements=array();
- for($i=0;$i<count($mik_bill_users);$i++){
- $element_present = false;
- for($j=0;$j<count($middleware_users);$j++){
- if($mik_bill_users[$i]['user']==$middleware_users[$j]['user']){
- $element_present = true;
- $common_elements[] = $mik_bill_users[$i];
- }
- }
- if(!$element_present){
- $add_to_middleware_elements[] = $mik_bill_users[$i];
- }
- }
- for($i=0;$i<count($middleware_users);$i++){
- $element_present = false;
- for($j=0;$j<count($mik_bill_users);$j++){
- if($mik_bill_users[$j]['user']==$middleware_users[$i]['user']){
- $element_present = true;
- }
- }
- if(!$element_present){
- $del_from_middleware_elements[] = $middleware_users[$i]['user'];
- }
- }
- //итак добавляю пользователей
- if(count($add_to_middleware_elements)>0){log_save(' Добавил пользователей:',$log_file);}
- for($i=0;$i<count($add_to_middleware_elements);$i++){
- $fio = explode(" ",$add_to_middleware_elements[$i]['fio']);
- $res = jsonsql_call ("insert", array (
- "into" => "subscriber",
- "columns" => array ("username","password","surname","comment","email","address","phone","first_name","middle_name","max_terminal","sprofile_id"),
- "values" => array (
- "username" => $add_to_middleware_elements[$i]['user'],
- "password" => $add_to_middleware_elements[$i]['password'],
- "surname" => $fio[0],
- "comment" => $add_to_middleware_elements[$i]['prim'],
- "email" => "",
- "address" => $add_to_middleware_elements[$i]['address'],
- "phone" => "",
- "first_name" => $fio[1],
- "middle_name" => $fio[2],
- "max_terminal" => "3",
- "sprofile_id" => $_system_profile,
- ),
- "returning" => "id"
- ));
- log_save(' '.$add_to_middleware_elements[$i]['user'].' '.$add_to_middleware_elements[$i]['fio'],$log_file);
- $res = jsonsql_call ("insert", array (
- "into" => "subscriber_package",
- "columns" => array ("subscriber_id", "package_id", "enabled"),
- "select" => array (
- "data" => array (array ("s" => "id"), array ("p" => "id"), true),
- "from" => array (array (
- "table" => "subscriber", "as" => "s"
- ), array (
- "table" => "package", "as" => "p"
- )),
- "where" => array (
- "and" => array (array (
- "eq" => array (array ("s" => "username"), $add_to_middleware_elements[$i]['user'])
- ), array (
- "in" => array (array ("p" => "name"), "Базовый", "Стандарт")
- ))
- )
- ),
- "returning" => "package_id"
- ));
- log_save(' Добавил пакеты "Базовый" и "Стандарт" пользователю ',$log_file);
- }
- //вот тут удаляю терминалы удаляемых пользователей
- if(count($del_from_middleware_elements)>0){log_save(' Удалил терминалы пользователей:',$log_file);}
- for($i=0;$i<count($del_from_middleware_elements);$i++){
- $res = jsonsql_call ("delete", array (
- "from" => "terminal",
- "where" => array ("in" => array ("subscriber_id", array (
- "select" => array (
- "data" => "id",
- "from" => "subscriber",
- "where" => array ("eq" => array ("username", $del_from_middleware_elements[$i]))
- )
- ))),
- "returning" => "id"
- ));
- log_save(' '.$del_from_middleware_elements[$i],$log_file);
- }
- //а тут удаляю неугодных пользователей
- if(count($del_from_middleware_elements)>0){log_save(' Удалил пользователей:',$log_file);}
- for($i=0;$i<count($del_from_middleware_elements);$i++){
- $res = jsonsql_call ("delete", array (
- "from" => "subscriber",
- "where" => array ("eq" => array ("username", $del_from_middleware_elements[$i])),
- "returning" => "id"
- ));
- log_save(' '.$del_from_middleware_elements[$i],$log_file);
- }
- //обновляю инфу существующих пользователей
- if(count($common_elements)>0){log_save(' Обновил пользователей:'."\n",$log_file);}
- for($i=0;$i<count($common_elements);$i++){
- $fio = explode(" ",$common_elements[$i]['fio']);
- $res = jsonsql_call ("update", array (
- "table" => "subscriber",
- "set" => array (
- "disabled" => false,
- "password" => $common_elements[$i]['password'],
- "surname" => $fio[0],
- "comment" => $common_elements[$i]['prim'],
- "email" => "",
- "address" => $common_elements[$i]['address'],
- "phone" => "",
- "first_name" => $fio[1],
- "middle_name" => $fio[2],
- "max_terminal" => "3",
- "sprofile_id" => $_system_profile,
- ),
- "where" => array ("eq" => array ("username", $common_elements[$i]['user'])),
- "returning" => "id"
- ));
- log_save(' '.$common_elements[$i]['user'].' '.$common_elements[$i]['fio']."\n",$log_file);
- }
- //Тут отключу заблокированных пользователей
- for($i=0if($mik_bill_users[$i]['blocked']==='1'){
- $res = jsonsql_call ("update", array (
- "table" => "subscriber",
- "set" => array ("disabled" => true),
- "where" => array ("eq" => array ("username", $mik_bill_users[$i]['user'])),
- "returning" => "id"
- ));
- // log_save(' Отключил пользователя '.$mik_bill_users[$i]['user'],$log_file);
- }else{ $res = jsonsql_call ("update", array (
- "table" => "subscriber",
- "set" => array ("disabled" => false),
- "where" => array ("eq" => array ("username", $mik_bill_users[$i]['user'])),
- "returning" => "id"
- ));
- // log_save(' Включил пользователя '.$mik_bill_users[$i]['user'],$log_file);
- }
- }
- //Выясню текущие подключеные пакеты в мидлвари...
- for($i=0;$i<count($mik_bill_users);$i++){
- $subscriber_packages = jsonsql_call ("select", array (
- "data" => array ("p" => "id"),
- "from" => array (
- array ("table" => "package", "as" => "p"),
- array ("join" => "subscriber_package", "join_type" => "inner", "as" => "s2p",
- "on" => array ("eq" => array (array ("s2p" => "package_id"), array ("p" => "id")))
- ),
- array ("join" => "subscriber", "join_type" => "inner", "as" => "s",
- "on" => array ("eq" => array (array ("s2p" => "subscriber_id"), array ("s" => "id")))
- )
- ),
- "where" => array ("eq" => array (array ("s" => "username"), $mik_bill_users[$i]['user'])),
- "order_by" => array ("p" => "name")
- ));
- $middleware_packets[$mik_bill_users[$i]['user']] = $subscriber_packages;
- //Ну и заодно в этом цикле расчитаю массив билинговский...
- if(empty($mik_bill_users[$i]['services'])){
- $mikbill_user_packets[$mik_bill_users[$i]['user']] = $default_packets;
- }else{
- $mikbill_user_packets[$mik_bill_users[$i]['user']] = array();
- foreach ($mik_bill_users[$i]['services'] as $v) {
- $mikbill_user_packets[$mik_bill_users[$i]['user']] = array_merge($mikbill_user_packets[$mik_bill_users[$i]['user']], $mikbill_packets[$v]);
- }
- $mikbill_user_packets[$mik_bill_users[$i]['user']] = array_unique($mikbill_user_packets[$mik_bill_users[$i]['user']]);
- }
- }
- for($i=0$DeletingPackets[$mik_bill_users[$i]['user']] = array_values(array_diff($middleware_packets[$mik_bill_users[$i]['user']],$mikbill_user_packets[$mik_bill_users[$i]['user']]));
- $AddingPackets[$mik_bill_users[$i]['user']] = array_values(array_diff($mikbill_user_packets[$mik_bill_users[$i]['user']],$middleware_packets[$mik_bill_users[$i]['user']]));
- }
- log_save(' Добавление пакетов пользователям:'."\n",$log_file);
- for($i=0;$i<count($mik_bill_users);$i++){
- if(!empty($AddingPackets[$mik_bill_users[$i]['user']])){
- $res = jsonsql_call ("insert", array (
- "into" => "subscriber_package",
- "columns" => array ("subscriber_id", "package_id", "enabled"),
- "select" => array (
- "data" => array (array ("s" => "id"), array ("p" => "id"), true),
- "from" => array (array (
- "table" => "subscriber", "as" => "s"
- ), array (
- "table" => "package", "as" => "p"
- )),
- "where" => array (
- "and" => array (array (
- "eq" => array (array ("s" => "username"), $mik_bill_users[$i]['user'])
- ), array (
- "in" => array (array ("p" => "id"), $AddingPackets[$mik_bill_users[$i]['user']])
- ))
- )
- ),
- "returning" => "package_id"
- ));
- log_save(' У пользователя '.$mik_bill_users[$i]['user'].' прошло успешно'."\n",$log_file);
- }else{
- log_save(' У пользователя '.$mik_bill_users[$i]['user'].' не требуется'."\n",$log_file);
- }
- }
- log_save(' Удаление пакетов у пользователей:'."\n",$log_file);
- for($i=0;$i<count($mik_bill_users);$i++){
- if(!empty($DeletingPackets[$mik_bill_users[$i]['user']])){
- $res = jsonsql_call ("delete", array (
- "from" => "subscriber_package",
- "where" => array ("and" => array (
- array ("in" => array ("subscriber_id", array (
- "select" => array (
- "data" => "id",
- "from" => "subscriber",
- "where" => array ("eq" => array ("username", $mik_bill_users[$i]['user']))
- )
- ))), array ("in" => array ("package_id", array (
- "select" => array (
- "data" => "id",
- "from" => "package",
- "where" => array ("in" => array ("id", $DeletingPackets[$mik_bill_users[$i]['user']]))
- )
- )))
- )),
- "returning" => "package_id"
- ));
- log_save(' У пользователя '.$mik_bill_users[$i]['user'].' прошло успешно'."\n",$log_file);
- }else{
- log_save(' У пользователя '.$mik_bill_users[$i]['user'].' не требуется'."\n",$log_file);
- }
- }
- //if(ob_get_length()>0){
- // log_save('7) Предупреждения, которые возникли в процессе выполнения кода: ',$log_file);
- // log_save(ob_get_contents(),$log_file);
- // log_save('7) Всем спасибо, все свободны :)',$log_file);
- //}else{
- log_save('7) Всем спасибо, все свободны :)',$log_file);
- //}
- ob_end_clean();
- echo str_replace(array("\r","\n"),"<br>\n",file_get_contents($log_file));
- if($mail_to_admin){smtpmail($mail_to,$mail_subj,str_replace(array("\r","\n"),"<br>",str_replace(" ", " ", file_get_contents($log_file))),$mail_headers);}
- //всё... код окончен, дальше чисто использумые функции...
- function fatal_error($message){
- global $log_file,$mail_to_admin,$mail_to,$mail_subj,$mail_headers;
- log_save('FATAL ERROR: '.$message,$log_file);
- if($mail_to_admin){smtpmail($mail_to,$mail_subj,str_replace(array("\r","\n"),"<br>",file_get_contents($log_file)),$mail_headers);}
- die($message);
- }
- function log_save($logtext, $log_file){echo $logtext.'<br>';
- $h = fopen($log_file , 'ab');
- fwrite($h, $logtext . "\n");
- fclose($h);
- }
- function smtpmail($mail_to, $subject, $message, $headers='') {
- global $config;
- $SEND = "Date: ".date("D, d M Y H:i:s") . " UT\r\n";
- $SEND .= 'Subject: =?'.$config['smtp_charset'].'?B?'.base64_encode($subject)."=?=\r\n";
- if ($headers) $SEND .= $headers."\r\n\r\n";
- else
- {
- $SEND .= "Reply-To: ".$config['smtp_username']."\r\n";
- $SEND .= "MIME-Version: 1.0\r\n";
- $SEND .= "Content-Type: text/plain; charset=\"".$config['smtp_charset']."\"\r\n";
- $SEND .= "Content-Transfer-Encoding: 8bit\r\n";
- $SEND .= "From: \"".$config['smtp_from']."\" <".$config['smtp_username'].">\r\n";
- $SEND .= "To: $mail_to <$mail_to>\r\n";
- $SEND .= "X-Priority: 3\r\n\r\n";
- }
- $SEND .= $message."\r\n";
- if( !$socket = fsockopen($config['smtp_host'], $config['smtp_port'], $errno, $errstr, 30) ) {
- if ($config['smtp_debug']) echo $errno."<br>".$errstr;
- return false;
- }
- if (!server_parse($socket, "220", __LINE__)) return false;
- fputs($socket, "HELO " . $config['smtp_host'] . "\r\n");
- if (!server_parse($socket, "250", __LINE__)) {
- if ($config['smtp_debug']) echo '<p>Не могу отправить HELO!</p>';
- fclose($socket);
- return false;
- }
- fputs($socket, "AUTH LOGIN\r\n");
- if (!server_parse($socket, "334", __LINE__)) {
- if ($config['smtp_debug']) echo '<p>Не могу найти ответ на запрос авторизаци.</p>';
- fclose($socket);
- return false;
- }
- fputs($socket, base64_encode($config['smtp_username']) . "\r\n");
- if (!server_parse($socket, "334", __LINE__)) {
- if ($config['smtp_debug']) echo '<p>Логин авторизации не был принят сервером!</p>';
- fclose($socket);
- return false;
- }
- fputs($socket, base64_encode($config['smtp_password']) . "\r\n");
- if (!server_parse($socket, "235", __LINE__)) {
- if ($config['smtp_debug']) echo '<p>Пароль не был принят сервером как верный! Ошибка авторизации!</p>';
- fclose($socket);
- return false;
- }
- fputs($socket, "MAIL FROM: <".$config['smtp_username'].">\r\n");
- if (!server_parse($socket, "250", __LINE__)) {
- if ($config['smtp_debug']) echo '<p>Не могу отправить комманду MAIL FROM: </p>';
- fclose($socket);
- return false;
- }
- fputs($socket, "RCPT TO: <" . $mail_to . ">\r\n");
- if (!server_parse($socket, "250", __LINE__)) {
- if ($config['smtp_debug']) echo '<p>Не могу отправить комманду RCPT TO: </p>';
- fclose($socket);
- return false;
- }
- fputs($socket, "DATA\r\n");
- if (!server_parse($socket, "354", __LINE__)) {
- if ($config['smtp_debug']) echo '<p>Не могу отправить комманду DATA</p>';
- fclose($socket);
- return false;
- }
- fputs($socket, $SEND."\r\n.\r\n");
- if (!server_parse($socket, "250", __LINE__)) {
- if ($config['smtp_debug']) echo '<p>Не смог отправить тело письма. Письмо не было отправленно!</p>';
- fclose($socket);
- return false;
- }
- fputs($socket, "QUIT\r\n");
- fclose($socket);
- return TRUE;
- }
- function server_parse($socket, $response, $line = __LINE__) {
- global $config;
- $server_response='';
- while (@substr($server_response, 3, 1) != ' ') {
- if (!($server_response = fgets($socket, 256))) {
- if ($config['smtp_debug']) echo "<p>Проблемы с отправкой почты!</p>$response<br>$line<br>";
- return false;
- }
- }
- if (!(substr($server_response, 0, 3) == $response)) {
- if ($config['smtp_debug']) echo "<p>Проблемы с отправкой почты!</p>$response<br>$line<br>";
- return false;
- }
- return true;
- }
- function send ($url, $data, $extra_headers=null) {
- $ch = curl_init ();
- curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 10);
- curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt ($ch, CURLOPT_TIMEOUT, 10);
- curl_setopt ($ch, CURLOPT_URL, $url);
- curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);
- curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, false);
- curl_setopt ($ch, CURLOPT_POST, true);
- curl_setopt ($ch, CURLOPT_POSTFIELDS, $data);
- if (isset ($extra_headers)) {
- curl_setopt ($ch, CURLOPT_HTTPHEADER, $extra_headers);
- }
- $content = curl_exec ($ch);
- $http_code = curl_getinfo ($ch, CURLINFO_HTTP_CODE);
- if ($content === false) {
- $err_msg = "HTTP error: $http_code (" . curl_error($ch) . ')' . '\n';
- echo $err_msg;
- throw new Exception ($err_msg);
- }
- if ($http_code != 200) {
- $err_msg = "HTTP request failed ($http_code)\n";
- echo $err_msg;
- throw new Exception ($err_msg);
- }
- curl_close ($ch);
- return $content;
- }
- function jsonrpc_call ($url, $method, $params, $extra_headers=null) {
- static $req_id = 1;
- $req = array (
- "jsonrpc" => '2.0',
- "id" => $req_id++,
- "method" => $method,
- "params" => $params
- );
- $req = json_encode ($req);
- $res = send ($url, $req, $extra_headers=$extra_headers);
- #echo $res;
- $res = json_decode ($res, true);
- if (!isset ($res)) {
- echo "error: not result\n";
- return null;
- } else if (!array_key_exists ('result', $res) || !isset ($res ['result'])) {
- print_r ($res ['error']);
- return null;
- } else {
- return $res ['result'];
- }
- return $res;
- }
- function jsonsql_call ($cmd, $params) {
- global $_jsonsql_uri, $_iptvportal_header;
- return jsonrpc_call ($_jsonsql_uri, $cmd, $params, $extra_headers=$_iptvportal_header);
- }
- function authorize_user ($auth_uri, $username, $password) {
- global $_iptvportal_header;
- $res = jsonrpc_call ($auth_uri, $cmd="authorize_user", $params=array (
- 'username' => $username,
- 'password' => $password
- ));
- if (isset ($res) && array_key_exists ('session_id', $res)) {
- $_iptvportal_header = array ('Iptvportal-Authorization: ' . 'sessionid=' . $res ['session_id']);
- }
- return $res;
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement