Новое приложение для изучения фразовых глаголов на Blazor

Некоторое время назад решили попробовать в действии ASP.NET Core Blazor. И придумали небольшое приложение, которое позволяет очень быстро выучить фразовые глаголы — TheVerbs.

Если у вас есть желание потестить и посмотреть как это работает приложение — вы можете поучавстовать в Beta-тесте. Для этого переходите по ссылке и устанавливайте приложение.

Ссылка на Google Store: https://play.google.com/apps/testing/ru.voiplab.theverbs

Любой фидбек приветствуется =)

Бесплатый SSL Wildcard сертификат без боли и страданий

Цель статьи: быстро и просто получить бесплатные wildcard ssl сертификаты на любой домен с автоматическим продлением.

Wildcard SSL позволяет защитить неограниченное количество субдоменов одним сертификатом. Это прекрасное решение для тех, кто хочет управлять множеством сайтов или страниц на одном домене. Заплатив за сертификат один раз, вы экономите средства, т.к. добавление дополнительных субдоменов и серверов в будущем производится без взимания оплаты. Надо отметить, что стоимость такого сертификата необоснованно завышена. У разных реселлеров цена может варьироваться от 3000-30000 тысяч рублей.

Но зачем платить, если можно не платить? Для этого очень крутые ребята создали проект Let’s Encrypt. Наверное, об этом проекте не слышал только ленивый. В данной статье вы узнаете как просто и без боли задействовать всю мощь автоматического получения wildcard сертификата на свой домен.

Let’s Encrypt — бесплатный, автоматизированный и открытый Центр Сертификации, созданный на благо всего общества организацией Internet Security Research Group (ISRG).

Основная проблема Let’s Encrypt в том, что для начинающих IT-специалистов процедура получения довольно неочивидная. Для решения данной проблемы мы с Вами воспользуемся проектом https://github.com/Neilpang/acme.sh

План

Наш план будет состоять из нескольких простых шагов: установка, базовая настройка, прописывание ключей API от вашего DNS хостера, генерация сертификата и установка скрипта для автоматического продления сертификата.

Установка и базовая настройка

Для установки и настройки вам понадобится Linux. Я данный скрипт поставил сразу на сервер с nginx/apache. Можете использовать локальную машину или виртуалку, это не принципиально.

curl https://get.acme.sh | sh

Вы увидите такое сообщение. На ошибку не обращайте внимания, мы не будем использовать standalone mode.

После этого запустите новый терминал, чтобы изменения сделанные в .bashrc применились.

Прописывание ключей API от вашего DNS хостера

Перейдите на страницу https://github.com/Neilpang/acme.sh/wiki/dnsapi и найдите поиском своего DNS-хостера. Вероятность, что вы его найдете очень выская, проект opensource и интеграции с новыми DNS-хостерами добавляется очень быстро. На момент написания статьи их уже более 90.

Далее опишу процесс на примере своего DNS-хостера reg.ru.

Как написано в инструкции по ссылке выше мне нужно создать 2 переменные с помощью команды export. Естественно, я вбиваю свои данные. Запросить данные можно у своего DNS-хостера через личный кабинет.

export REGRU_API_Username='test'
export REGRU_API_Password='test'

Генерация сертификата и установка скрипта для автоматического получения SSL сертификата

Там же в инструкции будет пример команды. Воспользуемся ей и получим наш новый SSL сертификат.

acme.sh --issue --dns dns_regru -d 'example.com' -d '*.example.com'

Если все прошло успешно и не было никаких ошибок, то новый сертификат вы найдете по пути ~/myacme/data/example.com. Там же вы найдете, если нужно csr и закрытый ключ, который вам понадобится для установки сертификата на nginx или apache.

Пропишите путь к сертификату в nginx или apache. Вам понадобится 2 файла:
1. fullchaing.cer — это непосредственно сертификат. Ну или если быть точнее цепочка сертификатов.
2. example.com.key — закрытый ключ

Пример:

server {
listen 443 ssl http2;
ssl on;
server_name example.com *.example.com;
ssl_certificate /etc/letsencrypt/certificates/example.com/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/certificates/example.com/example.com.key;
location / {
include www-location.conf;
proxy_pass https://192.168.1.2/;
}
}

Автоматического продление

Сертификат выдается на 90 дней и лучше заранее позаботиться о его автоматическом продлении. Можно раз в месяц запускать скрипт для обновления. Для этого просто в /etc/crontab добавьте строку. Обратите внимание на команду после &&. Вам нужно сделать так что бы ваш web-сервис перечитал конфигурацию. В данном примере это nginx. В вашем случае может быть другая команда. Каждое 1 числа acme будет пытаться продлить сертификат.

0 0 1 * * «/home/user/.acme.sh»/acme.sh —cron —home «/home/user/.acme.sh» > /dev/null && service nginx reload

На этом, пожалуй, все. Если у вас есть какие то вопросы — пишите в комментариях.

Я рекомендую настроить дополнительный мониторинг ssl сертификата на вашем домене. Чтобы вы получили алерт, в случае если до окончания остается 2 недели. Значит что то пошло не так и вам стоит посмотреть логи. Сервисов для мониторинга в Интернете множество.

git: нормализация lrlf

Если вы решили переконвертировать ваш репозиторий, убрав из файлов символы переноса каретки, то можно использовать https://rtyley.github.io/bfg-repo-cleaner/. Он работает намного быстрее, чем обычный filter-branch.

Итак, склонируем наш репозиторий с параметром —mirror

git clone —mirror https://github.com/voiplab/mysuperrepo
echo «regex:\r(\n)==>$1» > replacements.txt
java -jar bfg-1.13.0.jar —no-blob-protection —replace-text replacements.txt mysuperrepo.git

Запускаем провреку репозитория

Меняем origin если хотим запушить в новое место

git push origin -all

Screen resolution in selenium tests in teamcity

Many developers and testers try to change screen resolution in teamcity service. Default screen resolution is 800×600, but its so small. As one of solution is to start teamcity agent like a simple application. But this solution is bad. Because you need to use one license on Windows Server and start teamcity agent after Windows server finished to boot.

I found a solution which allows you without hacks.

  1. Open services.msc. Open properties in teamcity agent service and check on checkbox Allow service to unteract with desktop.
  2. Open registry and change this key HKLM\SYSTEM\CurrentControlSet\Control\Windows\NoInteractiveServices to 0.
  3. Change Interactive Service Detection start mode to auto and start it.
    sc config UI0Detect start= auto
    sc start UI0Detect
  4. Connect to server using RDP.
  5. Enter this text command in commandline rundll32 winsta.dll,WinStationSwitchToServicesSession. RDP session will broken but it’s ok.

Thats all. When you will run a new end2end tests you see that screen resolution will increase.

Teamcity и Mssql dbproject без установки Visual Studio

Возникла необходимость на build сервере с Teamcity собирать DBProject. Если у вас нет желания устанавливать Visual Studio и SSDT Tools для сборки, то ниже будет решение. Данное решение позволит установить все необходимое для сборки на все агенты.

Итак, сначала просто скачайте через nuget последнюю версию тулзов. Сделать это можно даже не локальном компьютере, не обязательно это делать на build сервере.

nuget.exe install Microsoft.data.tools.msbuild -ExcludeVersion

Следущим шагом запакуем скачанный каталог Microsoft.data.tools.msbuild в zip архив и раскидаем по агентам Teamcity. Для этого в панели управления Teamcity переходим в Administration -> Tools и под Zip Archive жмем Install. Выбираем наш архив и дождемся заливки на все нужные агенты.


Теперь подключаемся к серверу по RDP (ну или через консоль) и добавим 2 параметра в переменные System Variables:

  • SQLDBExtensionsRefPath
  • SSDTPath

Оба значения выставить в C:\BuildAgent\tools\Microsoft.Data.Tools.Msbuild\Microsoft.Data.Tools.Msbuild\lib\net46. Естественно, если у вас агенты установлены по другому пути, то нужно выставить правильный путь.

После этого нужно перезапустить агентов, чтобы они подтянули новые значения. Вообщем на этом настройка закончена.

 

 

Подключаем wildcard certificate на домен с помощью letsencrypt

Недавно letsencrypt анонсировал поддержку wildcard сертификатов. Это значит, что теперь вы можете закрыть все ваши поддомены одним сертификатом. Итак, давайте сделаем это =)

apt-get update
apt-get install git
git clone https://github.com/certbot/certbot
cd certbot
letsencrypt-auto certonly -d *.somedomain.com --server https://acme-v02.api.letsencrypt.org/directory --manual

После чего вы увидите такую фразу

Please deploy a DNS TXT record under the name
_acme-challenge.somedomain.com with the following value:

p0J6qdVIrElQWO_k9lsl5KVMPPfm0QO80EFInxtCGOg

Before continuing, verify the record is deployed.
--------------------------------------------------

Добавляйте текстовую запись в ваш DNS и жмете enter. Bingo =)

Можно почитать

Конвертируем pfx в crt и key файл

Итак, есть виндовый pfx. Решили закрыть backend nginx-ом. Надо конвертить сертификат, чтобы nginx его понял. Открываем консоль и пишем

openssl pkcs12 -in [yourfile.pfx] -nocerts -out [keyfile-encrypted.key]
openssl pkcs12 -in [yourfile.pfx] -clcerts -nokeys -out [certificate.crt]
openssl rsa -in [keyfile-encrypted.key] -out [keyfile-decrypted.key]

На выходе получаем [certificate.crt] и [keyfile-decrypted.key]. Теперь можно поднимать ssl на nginx

Статистика по обращениям к nginx в realtime

Иногда бывает полезно увидеть TOP IP адресов с которых идут обращения к вашему backend. Если у вас настроено логивание в nginx access.log, то с помощью такого нехитрого скрипта можно получить самые «активные» IP

tail -f access-api.log | awk {'print $1 ;fflush();'} | logtop