Loess.ru

having fun

Backing up Mikrotik RouterOS config to Git repository

#!/bin/sh
cd /home/user/mikrot-config/
/usr/bin/ssh -i /home/user/.ssh/id_rsa admin-ssh-account@ip.address.of.mikrot "export" > /home/user/mikrot-config/mikrot.conf 2>&1
#deletes first line with datetime for committing only config changes
/bin/sed -i '1{/by RouterOS 6/d;}' /home/user/mikrot-config/mikrot.conf
git add ./mikrot.conf
git commit -m "backup as of $(/bin/date +\%Y-\%m-\%d-\%H-\%M-\%S)"

if you need to backup a lot of hosts and webface for backup control, check https://www.ekzorchik.ru/2019/03/backing-up-mikrotik-via-oxidized/ (pdf)

Git clone branch from one remote to another by webhook call

quick and (very) dirty:

1.

git clone repo.git
cd repo
git status
git remote -v
git remote set-url --push origin git@github.com:User/repo.git

this should set your remote.origin.pushurl to another path, check it with

git remote -v

2. check it with

git pull origin master && git push

3. make sure you set your private and public ssh keys for pulling and pushing seamlessly

4. write bash script for this, for example:

cd /home/lol/repo/
echo $(date +%Y-%m-%d-%H:%M) >> /home/lol/copy-repo.log
git pull origin master >> /home/lol/copy-repo.log 2>&1
git push >> /home/lol/copy-repo.log 2>&1

You can skip and do this directly from within Python flask server with https://gitpython.readthedocs.io/en/stable/tutorial.html

5. Set up webhook @ first webservice to call @ push event. Write flask-server for getting webhooks, open incoming port, for example:

from flask import Flask
from flask import request
from bitbucket_webhooks import event_schemas
from bitbucket_webhooks import hooks
from bitbucket_webhooks import router
import subprocess

app = Flask(__name__)

@app.route("/hooks", methods=["POST"])
def bb_webhooks_handler():
    router.route(request.headers["X-Event-Key"], request.json)
    return ("", 204)

@hooks.repo_push
def _handle_repo_push(event: event_schemas.RepoPush):
    print(f"One or more commits pushed to: {event.repository.name}")
    subprocess.call("/home/lol/copy-repo.sh")

if __name__ == '__main__':
    app.run(host="0.0.0.0", port=617, debug=False)

or if you prefer bash+netcat-like way, consider trying this https://gist.github.com/orangeblock/15ee8e3cb304a4046082b422adaaf5fb

6. wrap it into waitress call (i don’t know why but flask says it sufficient 😀 ):

if __name__ == '__main__':
    from waitress import serve
    serve(app,host="0.0.0.0",port=617)

7. wrap it into Systemd unit (https://blog.miguelgrinberg.com/post/running-a-flask-application-as-a-service-with-systemd):

[Unit]
Description=Webhook monitor for copying repo from BB to GitHub
After=network.target

[Service]
User=lol
WorkingDirectory=/home/lol
ExecStart=/usr/bin/python3 /home/lol/clone-repo-webhook-server.py
Restart=always

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start clone-repo-webhook-server
systemctl enable clone-repo-webhook-server

p.s. and you could combine this with git full-mirroring capabilities as you like
p.s. heres bb man https://support.atlassian.com/bitbucket-cloud/docs/create-and-trigger-a-webhook-tutorial/ and webhook listener repo https://bitbucket.org/atlassianlabs/webhook-listener which I haven’t read

Windows-tools и автозапуск SSHD в WSL2

Список плюшек для упрощения жизни windows-рабов:

https://vas3k.club/post/6238/
https://www.hanselman.com/blog/scott-hanselmans-2021-ultimate-developer-and-power-users-tool-list-for-windows

Включить цветную рамку текущего окна в win10 (https://habr.com/ru/post/544214/):
HKCU\Software\Microsoft\Windows\DWM\
EnableWindowColorization:REG_DWORD:1
ColorPrevalence:REG_DWORD:1

Включить все иконки в system tray (https://winaero.com/always-show-tray-icons-windows-10/):
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\
EnableAutoTray:REG_DWORD:0
или cmd -> shell:::{05d7b0f4-2121-4eff-bf6b-ed3f69b894d9}

WSL2:

Дабы SSHD был запущен при старте windows 10 (не входя в bash), надо его перезапустить из-под root:

wsl sudo service ssh --full-restart

можно даже такой батник в автозапуск засунуть

Далее кратко описан процесс установки WSL2 на Win10 home:
Read More

Media-insatiability: some aspects of presence of social-media in our lives

1) Centralization of everything, diversity reduction

It is your moral obligation to use Firefox
https://0x46.net/thoughts/2019/04/09/use-firefox/

https://nomoregoogle.com/

https://killedbygoogle.com/

2) Behavior modifying

Андрей Курпатов. Гаджеты делают нас глупее, несчастнее и гробят наших детей?

3) Personal data gathering by default,

Как удалить «неудаляемые» приложения со смартфона
https://habr.com/ru/company/vdsina/blog/528550/

4) and following — Totalitarism

Судя по разговорам полицейских, меня нашла городская система наблюдения по камерам. Полицейские говорили, что проверят, не нахожусь ли я в уголовном розыске, и «все будет хорошо». В отделении полиции очень вежливый полицейский с грустным взглядом сразу стал оформлять протокол доставления в ОВД.

Я спрашивал, что происходит и почему задержан. Полицейский подтвердил, что меня нашли по камерам поиска, что сейчас будут проверять, участвовал ли я в митинге 23 января.На входе в ОВД Тверское уже сидели несколько задержанных, по разговорам которых я понял, что их тоже задержали по поиску камер на входе в метро.

— Особо интересны подобные улыбчивые фразы «щя проверим — и всё будет хорошо», с которыми людей провожают в камеру, с которыми назначают штрафы и сроки. Один раз это увидишь — и не забудешь никогда

Для распознавания лиц московские власти используют разработки трёх разных компаний но основа — алгоритм FaceN для определения лица в кадре от компании NTech Lab, создавшей сервис FindFace для поиска людей во «ВКонтакте» по одному снимку.

«Мне как обычному человеку важнее безопасность, чем приватность», — говорит Кухаренко.
В полиции тоже довольны приложением. «Если такая программа будет внедрена в телефоны сотрудников полиции, и не только полиции, то это поможет на месте определять, что за человек и кого они остановили»

https://tjournal.ru/tech/333457-sistema-raspoznavaniya-lic-v-moskve-teper-ishchet-protestuyushchih-kak-ona-ustroena-i-chto-sdelat-dlya-zashchity (pdf)

https://meduza.io/feature/2016/07/07/konets-chastnoy-zhizni (pdf)

Git tools: diff docx/pdf, git server

Using git diff for doc, xls, pdf, ppt, odt:

https://gist.github.com/mbrehin/634f46aeacb0a9a6da5e (pdf)
for docx use pandoc as following (https://blog.martinfenner.org/posts/using-microsoft-word-with-git):

[diff "docx"]
textconv=pandoc --to=markdown
prompt = false

Git personal server

(Gitolite, Cgit, fcgiwrap, and Nginx)

https://bryanbrattlof.com/cgit-nginx-gitolite-a-personal-git-server/ (pdf)

and more of freshly-baked gitlab alternatives: https://www.cyberciti.biz/open-source/github-alternatives-open-source-seflt-hosted/

Each neuron is two-layer computational network. And it strives for living

«… Yet, it is fascinating that, while surviving, a neuron makes computation.»

https://medium.com/the-spike/neuron-core-computational-principles-ed0fe9cfb711

https://medium.com/the-spike/your-cortex-contains-17-billion-computers-9034e42d34f2

Ася Казанцева. Как сдать любой экзамен, выучить иностранный язык и почему алкоголь меняет память?

44:44 — про организацию внешних ситуаций для того, чтобы жить правильно (правило 20 секунд)
49:25 — про дневники и историю в чятиках

Основы Wi-Fi (English)

magnet:?xt=urn:btih:7AA59D421CABD2400FD7CDDA9DB4738F0A89398C&tr=http%3A%2F%2Fbt2.t-ru.org%2Fann%3Fmagnet&dn=%5Bcwnp%5D%20CWS-100%20eLearning%20%5B2019%2C%20ENG%5D

Курс входного уровня по wi-fi сетям. После изучения Вы сможете разбираться в основных технических деталях и грамотно планировать маленькие сети.

The Certified Wireless Specialist (CWS) eLearning course teaches the language of Wi-Fi as well as the typical hardware and software used in wireless local area networks (WLANs). The course is an exceptional starting point for those in wireless sales, marketing, entry-level support, and decision-making professionals related to 802.11 wireless networks.
Спасибо https://github.com/ytdl-org/youtube-dl/releases

Содержание:
Read More

CI/CD: Многоэтапные (multi-stage builds) сборки в Docker

Лишь сегодня узнал о прекрасной возможности делать docker image компилируемых приложений без оставления зависимостей для этапа компилирования, и без применения тыщи действий для выуживания исполняемых файлов. Выглядит мультиэтапная сборка примерно так (реальный Dockerfile):

FROM debian:stable-slim AS builder

RUN apt-get update && \
apt-get install -y binutils-dev build-essential cmake \
git libcurl4-openssl-dev libdw-dev libiberty-dev \
ninja-build python3 zlib1g-dev \
;

ADD . /src/

RUN mkdir /src/build && \
cd /src/build && \
cmake -G 'Ninja' .. && \
cmake --build . && \
cmake --build . --target install

FROM debian:stable-slim

RUN apt-get update && \
apt-get install -y binutils libcurl4 libdw1 zlib1g && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*

COPY --from=builder /usr/local/bin/kcov* /usr/local/bin/
COPY --from=builder /usr/local/share/doc/kcov /usr/local/share/doc/kcov

CMD ["/usr/local/bin/kcov"]

Служит для, очевидно, деплоя только что собранного приложения в докер образ и, так сказать, запуска-тестирования без отрыва от «производства»
https://habr.com/ru/post/349802/