Показаны сообщения с ярлыком Извращение. Показать все сообщения
Показаны сообщения с ярлыком Извращение. Показать все сообщения

среда, 8 июля 2020 г.

Build OpenVPN with XOR-patch (Scramble)

Task: It is necessary to compile the current version of OpenVPN for 32 bits with the XOR patch.

Solution: 
1. Download and install cygwin https://cygwin.com/install.html
During installation, you need to install the following packages -
autoconf, automake, diffutils, git, libtool, m4, make, mingw64-i686-binutils, mingw64-i686-gcc-core, mingw64-i686-headers, mingw64-i686-pthreads, mingw64-i686-runtime, mingw64-x86_64-binutils, mingw64-x86_64-gcc-core, mingw64-x86_64-headers, mingw64-x86_64-pthreads, mingw64-x86_64-runtime, patch, patchutils, perl, unzip, wget

2. After run cygwin -
cp `which true` /usr/bin/man2html                                           

3. Download OpenVPN Builds https://github.com/OpenVPN/openvpn-build
wget https://github.com/OpenVPN/openvpn-build/archive/master.zip
unpack
unzip master.zip
Go to the directory
cd openvpn-build-master/generic

4. Build (for the first time will get WITHOUT a patch)
IMAGEROOT=`pwd`/image-win32 CHOST=i686-w64-mingw32 CBUILD=i686-pc-cygwin ./build

5. After the build of the version is completed, without a patch, we go to the source directory - there will be downloaded archives with the OpenVPN source codes and the necessary libraries.

6. We need to unpack the source OpenVPN
tar xvfz openvpn-2.4.9.tar.gz
rm openvpn-2.4.9.tar.gz
cd openvpn-2.4.9

7. Download and apply xor patch - https://github.com/clayface/openvpn_xorpatch
wget https://raw.githubusercontent.com/clayface/openvpn_xorpatch/master/openvpn_xor.patch
git apply openvpn_xor.patch
tar -czvf openvpn-2.4.9.tar.gz openvpn-2.4.9

And go back to the generic folder
cd ..

8. Starting the project build again -
IMAGEROOT=`pwd`/image-win32 CHOST=i686-w64-mingw32 CBUILD=i686-pc-cygwin ./build

9. After finishing, you can goto the path  C:\cygwin\home\%YOURUSERNAME%\openvpn-build-master\generic\image-win32\openvpn\bin and test your own OpenVPN build

суббота, 14 января 2017 г.

"Колхозное" крепление Mikrotik SXT

Иногда нужно срочно устанавливать точку доступа Mikrotik SXT, причём не на мачту, а на стену. Но нормального крепления ( https://routerboard.com/QM ) нет. Да и вообще никаких креплений, кроме стандартного, нет. А магазины где можно купить что-либо для микротика далеко.

В таком случае может помочь использование такой штуки как "ответная часть петли". Стоит рублей 50. Отверстия для крепления есть. Нагрузку в виде антенны точно выдержит :) Продаётся в разных хозяйственных и строительных магазинах.


понедельник, 21 декабря 2015 г.

Использование ВК для логгирования через C#

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

Решение: Для начала нужна зарегистрированная страница в VK. Переходим по ссылке https://vk.com/apps?act=manage и нажимаем "Создать приложение". Название пусть будет "vkLogSend", тип "Standalone-приложение".

Придёт смс с кодом, который нужно указать. Далее переходим во вкладку "Настройки" и сохраняем куда-нибудь "ID приложения", в нашем случае 1111111.



На этом работа с сайтом закончена и можем переходить непосредственно к программированию.

Открываем Visual Studio и создаём консольный проект vkLogSend. Далее сразу можно перейти в NuGet и установить два пакета - VkNet (реализация ВКонтакте API для .NET) и NLog (библиотека логгирования для C#).

Далее создаём класс с именем "vkTarget.cs" и содержанием -

using System;

using NLog;
using NLog.Targets;

using VkNet;
using VkNet.Enums.Filters;

namespace vkLogSend
{
    [Target("vk")]
    public sealed class VKTarget : TargetWithLayout
    {
        public VKTarget() { }

        protected override void Write(LogEventInfo logEvent)
        {
            var logMessage = this.Layout.Render(logEvent);

            SendTheMessageToRemoteHost(logMessage);
        }

        [STAThread]
        private void SendTheMessageToRemoteHost(string message)
        {
            var appId = 111111; // указываем id приложения
            var email = "user@mail.com"; // email для авторизации
            var password = "Pa$$w00rd"; // пароль
            var settings = Settings.Messages; // уровень доступа к данным

            var api = new VkApi();

            api.Authorize(appId, email, password, settings); // авторизуемся

            api.Messages.Send(1111111, false, message); // посылаем сообщение пользователю
        }
    }
}

Теперь нужно создать правила для NLog, это делается через создание файла NLog.config, в нашем примере пусть будет два правила: вывод на консоль и отправка в ВК -

<?xml version="1.0" encoding="utf-8" ?>

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <extensions>
    <add assembly="vkLogSend"/>
  </extensions>

  <targets>
    <target name="console" xsi:type="Console" layout="${date:format=HH\:mm\:ss} | ${level} | ${message}" />
    <target name="vk" type="vk" layout="${date:format=HH\:mm\:ss} | ${level} | ${message}"/>
  </targets>

  <rules>
    <logger name="*" minlevel="Trace" writeTo="console" />
    <logger name="*" minlevel="Trace" writeTo="vk" />
  </rules>

</nlog>

По сути стандартный файл NLog с добавленной секцией <extensions> и прописывание правила для таргета "vk"

И напоследок использование -


using System;
using NLog;

namespace vkLogSend
{
    class Program
    {
        static Logger logger = LogManager.GetCurrentClassLogger();

        static void Main()
        {
            logger.Trace("vkLogSend test message. Error on machine: " + Environment.MachineName);
            Console.WriteLine("Press any key..."); Console.ReadKey();
        }
    }
}

И у нас ничего не работает :) В библиотеке VkNet, при установке через NuGet есть ошибка - устанавливаются библиотеки Newtonsoft.Json и HtmlAgilityPack неверных версий. Решение простое - через NuGet обновляем их до последних и всё должно заработать.

После обновления библиотек можем тестировать и отправлять себе логи через Вконтакт.

\



PS: Есть нюанс при работе - если у вас настроено подтверждение входа (через смс или другим способом), то данный код работать не будет. Имейте это в виду.

среда, 29 июля 2015 г.

Немного про кондиционирование

Захотели хорошие люди сделать себе в серверной кондиционирование. Отправили они запросы в разные фирмы и ответы их опечалили. Злой начальник не давал им бюджета столько много, как хотели алчные продавцы. Ну и начали искать разные варианты и нашли у одной девочки-блондинки. Девочка, в своё время, решила уйти из этой фирмы и заняться своим бизнесом, а конкретно торговлей цветами. Но что-то пошло не так и поторговав полгода в минус она решила забить на это дело и заняться чем-нибудь другим. А оборудование всё распродать (сами цветы ушли к конкурентам). Ну и выкупили у неё эту фирму. Мебель-стелажи-горшки и прочий хлам развезли по домам-дачам, но досталось главное - промышленная система охлаждения. Которую быстренько смонтировали своими силами и обошлось это раз этак в 5 меньше чем самая дешёвая "специализированная" система охлаждения.

вторник, 6 января 2015 г.

Использование телевизора как монитора, через wifi (gemoroi edition)

Вводная: Есть телевизор LG 47LB650V. На него нужно сделать вывод графиков из 1С. в идеале с возможностью управления. То есть использовать телевизор в качестве монитора. Но телевизор подключен к сети через WiFi. Возможности проложить дополнительно провода или установить рядом компьютер-неттоп нет. Из хорошего - частота обновления достаточная для нормальной работы - один раз в минуту, то есть видео не будет.

Поиск решения: Телевизор "умный" - SMART TV, есть магазин приложений и веб-браузер. Но чего-то для удалённого доступа к экрану монитора нет. (VNC, team viewer, RDP и прочее). Заявленный Screen Share также совершенно не работает. Miracast || Intel WiDi также не подошли по причине требования определённого сочетания железа и софта (ну и по невозможности поставить комп рядом). Думал над тем, чтобы выгружать графики в jpeg, а затем транслировать через DLNA - проблема в 1Ске (много графиков + могут меняться). Трансляцию рабочего стола в поток DLNA (к примеру через VLC) не завелась. 

Из за корявого встроенного браузера всевозможные logmein, teamviewer, rdp over web не заработали. Родное VNC over web также не заработало, так как сделано через java, а телек его не поддерживает. То есть не поддерживает вообще ничего - ни джаву, ни флэш, ни activex.

Продолжая гуглинг наткнулся на такой софт ка NoVNC, который работает через Web Sockets, по сути проксируя родной TCP-IP VNC в web-sockets. Далее инструкция по настройке. 

1. Заходим на http://www.tightvnc.com/download.php  и скачиваем TightVNC (в моём случае это был 32 битный инсталлер)

2. Устанавливаем. Я при установке выбрал устанавливать только сервер. Также при установке выбрал устанавливать, как службу и добавить исключение в  файрвол.

3. Затем идём в настройки сервера, вбиваем пароль. Можно отключить встроенный web-доступ (там через джаву). Главное на вкладке Access Control (на вкладе "Administration" в ветке 1.х), установить галочку - "Allow loopback connections"

4. Далее скачиваем websockify https://github.com/downloads/kanaka/websockify/websockify.zip . Данная программа используетя как прокси для доступа к vnc порту через web socket`ы. Распаковываем (в моём примере в папку C:\NoVNC\)

5. Далее скачиваем сервис Windows Websockify Service https://github.com/downloads/kanaka/websockify/Websockify%20Windows%20Service.zip
Распаковываем (в моём примере в папку C:\NoVNC\)

6. Создаём файл install.cmd который сделает установку службы -
sc create "noVNC Websocket Server" binPath= "C:\NoVNC\noVNC Websocket Service.exe" DisplayName= "noVNC Websocket Server"
Запускаем

7. В той же папке создаём файл noVNCConfig.ini и заполняем его примерно так -
:7000 localhost:5900
(7000 порт для вебсокета, localhost - текущий комп, можно сделать перенаправление на другой, но в рамках данной статьи это не рассматривается, 5900 - порт VNC по умолчанию, если вы его меняли установите другой)

8. Далее заходим в оснастку "Управление" запускаем службу  "noVNC Websocket Server" (можно сразу изменить тип запуска на "Авто")

9. Теперь можем заходить на http://novnc.com/ и тестируем соединение указав в качестве хоста наш внешний адрес (можно посмотреть на 2ip.ru, если есть роутер, то нужно настроить перенаправление на порты 5900-5901 и 7000)

10. Если всё работает, то можно копировать novnc на свой сервер - https://github.com/kanaka/noVNC/releases/latest

11. Далее можно настроить прямой доступ на рабочий стол по адресу и добавить в страницу по умолчанию на телевизоре - http://httpserver/noVNC-0.5/vnc_auto.html?autoconnect=true&host=HOSTNAME&port=7000&password=PASSWORD&encrypt=false

Mission complete!