24
Март
2023
При работе в тестовой или локальной среде как правило отключат работу с почтой — иначе возможна рассылка реальным клиентам всякой информации с тестового или локального сервера, что конечно же недопустимо.
Тем не менее отладку функционала работающего с почтой никто не отменял — как же быть?
Один из вариантов решений — mailhog
Сервис настраивается вместо smtp почтового сервера и всё — он ловит всю исходящую почту, для просмотра есть веб мордочка.

Для установки и настройки MailHog
Берём отсюда
https://gist.github.com/Caffe1neAdd1ct/ea28bb49baaea86c203407629b442681
установочный скрипт — запускаем.
Далее с этой же страницы берём сам скрипт запуска (я взял тот, что без авторизации — пониже который) и заменяем /etc/init.d/mailhog
Всё сервис должен работать.
Далее настраиваем веб мордочку.
Берём тут конфиг https://gist.github.com/blakethepatton/7928abb131593fd192606b681ee47b2b и вставляем в nginx (я предварительно создал сайт mailhog.mysite.loc и там уже подменил)
Всё — веб мордочка тоже должна заработать.
Далее нужно в самой системе установить mhsendmail и в конфиге php.ini указать, что при отправке почты использовать именно его.
Я ставил так
yum install go
go install github.com/mailhog/mhsendmail@latest
ln ~/go/bin/mhsendmail /usr/bin/mhsendmail
mhsendmail -h
далее идём в /etc/php.d/bitrixenv.ini
и правим
sendmail_path = mhsendmail
ребутим аппач — должно работать
у меня сразу не взлетело т.к. в настройках сайта sendmail_path был переопределён — так что если что смотрите конфиги nginx и httpd на предмет sendmail_path
после того как в php.ini добавили sendmail_path = mhsendmail можно проверить отправку письма с командной строки https://github.com/mailhog/mhsendmail
> mhsendmail test@mailhog.local <
To: Test
Subject: Test message
Some content!
EOF
рубрики: Полезности, Программирование |
8
Ноябрь
2022
Очень часто в программировании профи отсылают к документации именно на английском языке, как к первоисточнику.
Я не очень сильно в английском (школа + институт был немецкий) поэтому частенько ленюсь напрягать извилины и читаю на русском.
Сегодня словил яркий пример почему всё таки английский — благо есть более опытный коллега, направил в нужное русло.
Итак ссылки и скриншоты в студию
Русская дока
https://symfony.ru/doc/current/security/impersonating_user.html
Английская дока
https://symfony.com/doc/current/security/impersonating_user.html
Вот этого фрагмента в русской доке попросту нет!
В решении поставленной по проекту задачи именно передача параметров в заголовке стала главным техническим решением.

рубрики: Полезности, Программирование, Размышления |
1
Август
2022
Сначала, попробовал воспользоваться триальным месяцем для вновь созданного аккаунта — но почему-то триальные лицензий на таких аккаунтах не находились 🙁
пробовал в режиме инкогнито а так же с Tora, с аккаунтов yandex и gmail — эффект нулевой
Далее решил уже приобрести платный ключ и каждый год продлять (на 3й год сумма существенно снижается) — НО к сожалению из-за санкций к России оплатить заказ никак не получилось — даже после смены страны в настройке акканута оплата картой VISA Российских банков не проходила — PayPal у меня нет, а других вариантов оплаты на сайте не было…
Пришлось гуглить тему взлома 🙁

Идём сюда https://jetbra.in/s
выбираем «живой» сервер, заходим — там качаем архив и кликаем по иконке PHPStorm (ключ активации скопируется в буфер обмена)
Далее я некоторое время помучался, т.к. у меня Ubuntu и по инструкции не «взлетало» (пользователям Windows думаю будет попроще)
Правил вручную phpstorm64.vmoptions — ожидаемого результата не было 🙁 при вводе ключа в PHPStorm получал «key is invalid»
При запуске скрипта scripts/install.sh получал
|
ja-netfilter.jar not found ./install.sh: 19: exit: Illegal number: -1 |
В итоге помогло решение скопировать содержимое архива прямо в пользовательскую директорию /home/alex/
Далее запуск /home/alex/scripts/install.sh отработал корректно — ввёл скопированный ключ и получил активацию на 1 год.
Чуть подробнее о моих изысканиях:
Читать полностью »
рубрики: PHP, взлом и безопасность, Полезности, Программирование |
13
Июль
2022
На Ubuntu при сборке фронта gulp при минимизации изображений ругается
gulp-imagemin: Couldn’t load default plugin «gifsicle»
TypeError in plugin «gulp-imagemin»
Message:
fn is not a function
Details:
Ошибка: gulp-imagemin couldn’t load default plugin gifsicle
Решение: поочередный запуск команд в терминале ubuntu (внутри корневой директории проекта)
sudo apt-get install dh-autoreconf
sudo npm install -g gifsicle
npm install —force
Источник
https://zencod.ru/gists/error-gulp-imagemin-couldnt-load-default-plugin-gifsicle/
рубрики: Полезности, Программирование |
8
Сентябрь
2020
Итак, на новом проекте — интернет магазин по продаже фотообоев даже после всех настроек почты, опубликованных ранее (пост 1, пост 2) почта на GMail, полученная с сайта всё равно улетала в спам 🙁
Я попробовал отправить с этого же сайта почту скриптом через Яндекс (домен уже был привязан через pdd.yandex.ru к Яндексу, MX запись так же была настроена) — и о чудо, сообщение без проблем пришло во входящее!
Далее стандартную функцию по отправке почты Битрикса я подменил на новую (путём объявления функции custom_mail в /bitrix/php_interfaces/init.php) и вуаля — теперь вся почта отправленная с Битрикса теперь отправляется через Яндекс Почту и не падает в спам!
Ссылочка на готовое решение — функция по отправке почты Битрикс через Яндекс
Готовое решение не моё — вот исходник, но сразу скажу, что там допущены две ошибки которые я пофиксил в своём варианте.
Отдельно о моментах, которые пришлось решать попутно
* Пришлось ставить composer, в связи с чем потребовалось включить php расширение phar — решение mv /etc/php.d/20-phar.ini.disabled /etc/php.d/20-phar.ini и рестарт браузера
wget https://getcomposer.org/composer.phar
chmod +x composer.phar
Далее, что бы Composer был доступен не только из папки, но и глобально в системе перемещаем его в папку /usr/local/bin/ командой mv
mv composer.phar /usr/local/bin/composer
* Для работы скрипта использовал скрипт PHPMailer + хорошая статья по данному скрипту
* Для работы imap_mime_header_decode используемой в скрипте потребовалось установить (именно установить а не включить) расширение php_imap (на centos команда yum install php_imap отработала корректно)
рубрики: Bitrix, PHP, Программирование |
24
Январь
2020
Скорость загрузки сайта была улучшена с 7.9 секунд до 1.45 секунды!
Кому интересно — читаем 🙂
Преамбула — обратился ко мне клиент с просьбой ускорить загрузку сайта, т.к. ну уж очень медленно всё — более 7 секунд!!! на загрузку главной страницы
изначальная версия главной (для тестирования обновляем страницу со сбросом кэша браузера)
Реклама крутится — бабки ввалены, а с такой скоростью врят ли стоит чего то ловить…
Сайт — очень красивая лендинг простыня, с кучей красивой графики и всяких не менее красивых эффектов появления другой графики — в общем полный треш в плане веса страницы, со всеми вытекающими …
Причём именно для этого сайта тормознутость загрузки очень явно видна т.к. пока не прогрузится вся страничка на видимой части не всплывёт непосредственно главное содержание странички — заголовки и футболист! До этого страничка будет выглядеть пустой.

Все обычные советы — сжать и обрезать картинки, объединить и сжать css и js, поместить в конец страницы и прочие — всё это как слону дробина при таких объёмах графики на странице.
Начал изучать и нашел на хабре среди обычных один довольно интересный совет
Читать полностью »
рубрики: Bitrix, Javascript - JQuery, PHP, Лайфхак, Полезности, Программирование |
23
Январь
2020
Всем привет!
Собственно, в качестве среды программирования поставил себе Visual Studio Code и начал потихоньку настраивать.
Судя по отзывам — лёгкий, удобный, функциональный и главное — бесплатный!
Для старта глянул видос от ITDoctor обзор редактора и начал осваивать.
Первая проблема с которой я столкнулся это то, что редактор не форматирует html разметку в php файлах
В том же Битриксе все шаблоны создаются в *.php файлах соответственно, вся html разметка там же
Всё что нашел в рунете — а ля расширение phpfmt умеет, но нифига оно не форматирует 🙁
Решение подсказали на форуме cyberforum.ru — ветка
Расширение Format HTML in PHP справилось с поставленной задачей!
рубрики: PHP, Программирование |
8
Ноябрь
2018
Собственно, задача — автоматизация процесса загрузки файла на сайты через веб-форму.
То есть на разные сайты мне нужно загрузить один и тот же файлик — захожу на сайт, выбираю нужный файл жму аплоад!
Список адресов сайтов с формой есть, файл конечно тоже — нужно автоматизировать!
Для реализации поставленной задачи решил использовать библиотеку curl, но вот с передачей файла возникла проблема — никак у меня не получалось отправить файл в форму!
Довольно долго рыл и нарыл таки рабочее решение
https://stackoverflow.com/questions/4223977/send-file-via-curl-from-form-post-in-php и оно же на другом ресурсе
https://exceptionshub.com/send-file-via-curl-from-form-post-in-php.html
Собственно, чел видимо затрахался как и я и решил передаваемые в POST данные сгенерировать самостоятельно с правильными заголовками.
Незнаю почему, но у меня в кодировке base64 ну никак не передавался, вернее передавался, но в такой кодировке и сохранялся 🙂 т.е. в закодированном виде, поэтому я несколько переделал скрипт до рабочего состояния (и увеличил кол-во передаваемых переменных для наглядности).
Получился такой код
Читать полностью »
рубрики: PHP, Полезности, Программирование |
26
Сентябрь
2018
Волею судеб приходится заниматься всякой всячиной — одна из которых поддержка клиентов по вопросам 1С 7.7
Т.к. поиск в сети не принес мне быстрых результатов пришлось сабж решать самому.
О проблеме более детально — выводим УПД из 1С 7.7. сохраняем в xls — открываем, а там количество вместо 2,000 стоит 2000
То есть запятая, отделяющая дробную часть тупо пропадает по всему документу.
Решение такое — открываем конфигуратор, там общий модуль — в нём ищём поиском УПД891 — позиционируемся на процедуру вывода в таблицу УПД891.
Там чуть ниже находим строчку, задающую формат вывода количества в таблице
ПечКоличество = Формат(ТабДок.Количество, «Ч-15.3,»);
Тройку меняем на двойку, сохраняемся и готово!
рубрики: 1С, Полезности, Программирование |
12
Сентябрь
2018
Спам в форме обратной связи Битрикса main.feedback ЗАДОЛБАЛ реально!
Собственно, презентую моё бесплатное решение, внедряемое за 5 минут:
Идея — проверка на вхождение в сообщение «http» «href» и дополнительное поле — результат суммы прописью
1. Копируем стандартный компонент main.feedback из папки ./bitrix/components/bitrix/ в свою ./bitrix/components/gtalex/
2. Заменяем подключение данного компонента на свой bitrix:main.feedback на gtalex:main.feedback
3. В форму добавляем (в массиве в цифрах прописью в каждой цифре один символ английский — чтоб было труднее спарсить) (скобки >< заменил на [])
…
$numbers = array(«нoль», «oдин», «двa», «mри», «чеmыре», «пяmь»);
$one = $numbers[rand(0,5)];
$two = $numbers[rand(0,5)];
…
[strong][?=$one?] плюс [?=$two?] = (запишите цифру ответа прописью с маленькой буквы)
[input type=’text’ name=’GT_SUM’ value=’=$arResult['GT_SUM']?]'/>[br/]
…
4. В компоненте ./bitrix/components/gtalex/component.php перед строкой
if(empty($arParams["REQUIRED_FIELDS"]) || !in_array("NONE", $arParams["REQUIRED_FIELDS"]))
добавляем обработку введённых данных
...
if(($_POST["GT_SUM"]==NULL)or($_POST["GT_SUM"]=="")) {
$arResult["ERROR_MESSAGE"][] = "Введите решение примера";
}
if(in_array($_POST["GT_SUM"],$summ)) {
} else {
$arResult["ERROR_MESSAGE"][] = "Неверное решение примера! Введите правильное.";
}
if(strpos($_POST["MESSAGE"], "href")===false) {
} else {
$arResult["ERROR_MESSAGE"][] = "Гиперссылки в сообщении запрещены";
}
if(strpos($_POST["MESSAGE"], "http")===false) {
} else {
$arResult["ERROR_MESSAGE"][] = "Гиперссылки в сообщении запрещены";
}
...
рубрики: Bitrix, Полезности, Программирование |