Обновление бложика

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

Как думаете стоит ли прибить Disquss к хуям собачим, мозилла его лочит как трекер. да и вообще что то это система комментариев себя как то изжила наверное.

может стоит перейти на встроенные?

шаб менять?)

jetbrains продукты и проблема с датами

При использовании SQLite в встроенном дбвьювере иногда возникают проблемы с датами.

и они приобразовуются из нормального формата DateTime в timestamp

в общем чтоб отображалось и хранилось норм.

Идем в

Data Source Settings -> advanced -> date_class

и проставляем формат TEXT

Проксирование в TOR

И так чаще всего если вам нужно осуществить проксирование вашего белого домена domain.com в ТОР то по старинке многие использовали socat или всякую самописную дичь.

чего уж там я не исключение. а все дело в том что nginx не умеет работать с socks.

Мы не будем поднимать какой либо модуль, типа nginx-socks-module а воспользуемся банальным и простым решением, чтобы сконвертировать socks в http прокси.

Ставим в общем на наш сервер 3proxy любым удобным для вас способом.

используем следующий конфиг для 3proxy

internal 127.0.0.1
daemon
auth iponly
allow * 127.0.0.1
fakeresolve
parent 100 socks5+ 127.0.0.1 9050
proxy -p3128

и вот такой пример для nginx (vhost)

server {
    listen 80;
    server_name _;

    location / {
        proxy_pass http://127.0.0.1:3128;
        proxy_set_header Host "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.onion";
        proxy_set_header Via "$host";
    }
}

В итоге получаем на нашем белом IP:80 наш TOR домен и контент.

Альетрнативой для 3proxy может быть privproxy или наверное redsocks.

Tor как служба Windows

Для начала нам понадобится сам Torbundle его можно взять тут

https://www.torproject.org/ru/download/tor/

Нам нужен именно Windows Expert Bundle

ну или прямая ссылка на актуальную на момент написания версию.

https://www.torproject.org/dist/torbrowser/10.0.18/tor-win32-0.4.5.9.zip

Скачиваем данный архив переходим в директорию нашего пользователя командой

%USERPROFILE%

Создаем папочку TorBundle и распаковываем туда содержимое скаченного архива.

Дальше нужно создать файлик torrc внутри директории Data\Tor со следующим содержимым

DataDirectory C:\Users\%USERPROFILE%\TorBundle\Data\Tor
GeoIPFile C:\Users\%USERPROFILE%\TorBundle\Data\Tor\geoip
GeoIPv6File C:\Users\%USERPROFILE%\TorBundle\Data\Tor\geoip6
AvoidDiskWrites 1
SocksPort 127.0.0.1:9160

%USERPROFILE% только меняем на имя вашего пользователя.

дальше нам нужно запустить CMD от имени Администратора и установить tor в качестве службы.

выполнив данную команду.

sc create TorBundle binPath= "C:\Users\%USERPROFILE%\TorBundle\Tor\tor.exe --nt-service -f C:\Users\%USERPROFILE%\TorBundle\Data\Tor\torrc" 

%USERPROFILE% меняем на имя вашего пользователя!!!

*ОБРАТИТЕ ВНИМАНИЕ НА ПРОБЕЛ ПОСЛЕ binPath= он должен быть!

пример

После этого идем в службы (Панель управления > Администрирование > Службы) и запускаем наш TorBundle

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

на этом настройка закончена, после всех манипуляций у вас должен быть локально запущен сокс5 на порту 9160.

Для тех кого еб*т все это делать, запилил инсталятор, он автоматически скачивает torbundle распаковывает в директорию вашего профиля в папку TorBundle и устанавливает службу, приложение нужно запускать с правами администратора и в системе должен быть .NET Framework не ниже 4.5

Тестед нах on Windows 7 / 8.1 / 10 | редакции (х64) виз дисаблед УАК ;)

https://nova.ws/dl/release/torbundle.zip

sha256sum exe файла.

0aa936ee30015ca8e56d6170f7433c4f79a27d782b674719b63dc758553f6e4b

Для тех кому интересен сурс этого приложения, он доступен тут

множественный walletnotify

немножко очевидных вещей.

по разным проектам в тестовой среде часто приходится получать txid от bitcoind а постоянно менять скрипт уведомлений на свой урл геморно. тут чинишь там ломаешь.

в общем небольшой выход c множественными уведомлениями.

#!/usr/bin/python3
import requests, sys

callback_url = [
    {'url': 'https://server1.domain.com', 'secret_key': '12356'},
    {'url': 'https://server2.domain.com', 'secret_key': '12356'}
]

for url in callback_url:
    try:
        requests.post(url.get('url'), data={'secret_key': url.get('secret_key'), 'txid': sys.argv[1]})
    except:
        pass

хз насколько это верное решение например для прода если использовать единственную ноду для всех проектов. но вроде работает ;)