23 lipca 2018

Let’s Encrypt wildcard certificate renewal

wget https://dl.eff.org/certbot-auto
chmod a+x ./certbot-auto
./certbot-auto --help
./certbot-auto --version

2. execute command: ./certbot-auto certonly --server https://acme-v02.api.letsencrypt.org/directory -a manual -d '*.kkthx.pl' -d 'kkthx.pl'

3. put DNS TXT record in DNS provider:

key: “_acme-challenge” or “_acme-challenge.kkthx.pl.”

value: value given by generator

4. wait 15 min, check if record exists:

  • windows: nslookup -q=TXT kkthx.pl
  • linux: dig -t TXT kkthx.pl

 

 

31 marca 2018

Łączenie wideo i audio w jeden plik

Sposób na złączenie dwóch plików audio i wideo w jeden jest bardzo prosty (przynajmniej w przypadku użycia ffmpeg):

ffmpeg -i video.mp4 -i audio.wav -c copy output.mkv

więcej: https://superuser.com/questions/277642/how-to-merge-audio-and-video-file-in-ffmpeg

25 marca 2018

Reenkodowanie plików dźwiękowych do formatu opus

Zaszła potrzeba zreenkodowania (w założeniu) dowolnego formatu pliku wejściowego audio do formatu wyjściowego opus. Celem było zminimalizowanie operacji pośrednich.
Jest to bardzo proste z wykorzystaniem ffmpeg oraz opusenc i opcją dekodowania/enkodowania do/z strumienia (pipe).
Przykład:

ffmpeg -i plik.mp3 -f wav - | opusenc <opcjonalne opcje> - output.opus

14 marca 2018

Edycja paczek Androida .apk i podpisywanie

Szybki wpis opisujący jak wyedytować i podpisać plik .apk

Było mi to potrzebne ze względu na błąd:

Failure [INSTALL_FAILED_SHARED_USER_INCOMPATIBLE: Package couldn’t be installed in /data/app/com.android.stk-1: Package com.android.stk has no signatures that match those in shared user android.uid.phone; ignoring!]

  1. Decompile the apk file using apktool(https://bitbucket.org/iBotPeaches/apktool/downloads/):
    1. java -jar apktool.jar d example.apk
  2. Make the changes needed – my app needed permissions, so I wanted to remove sharedUserId from AndroidMainfest.xml:
    1. remove android:sharedUserId= …
  3. Recompile the source code into a new apk:
    1. java -jar apktool.jar b -o example_my.apk example
  4. Create a signing key; Skip this step if you have created one already. Note: keytool is located in the Java SDK directory (e.g. C:\Program Files (x86)\Java\jdk1.8.0_161\bin)
    1. keytool -genkey -v -keystore myAndroidKey.keystore -alias myAndroidKeyAlias -keyalg RSA -keysize 2048 -validity 10000
  5. Sign your new apk
    1. jarsigner -verbose -keystore myAndroidKey.keystore ./example_my.apk myAndroidKeyAlias
  6. (Optional) Use zipalign to align your apk.
    1. zipalign -v 4 Reader_my.apk Reader_my_zipaligned.apk

 

based on:

  1. https://forum.xda-developers.com/showpost.php?p=37343918&postcount=2
  2. https://stackoverflow.com/questions/3997748/how-can-i-create-a-keystore

2 stycznia 2018

Dodawanie zakładek spisu treści do pliku pdf

Często zdarza się, że ściągnę użyteczną książkę w PDF, ale niestety bez zakładek. Aby ułatwić przeglądanie takiego pliku można dodać go własnoręcznie – wykorzystując skrypt Python, który zmodyfikuje nam plik pdf i doda stworzone przez nas zakładki.

Zakładki w przykładowym pliku pdf

Wpierw trzeba przygotować plik, z którego wygenerujemy zakładki. Format jest następujący:

Rozdział<spacja>nr-strony
<tab>Podrozdział<spacja>nr-strony

Np:

r.1 3
	r.1.1 5
	r.1.2 6
		r.1.2.1 7
		r.1.2.2 8
	r.1.3 10

Następnie tak sformatowany plik zostaje przetworzony przez skrypt Python, który wkleja zakładki do pdf-a.

Skrypt można ściągnąć ze strony: https://github.com/kkthx/pdf_bookmarks/releases

 

24 grudnia 2017

Instalacja Gitea w RPi0W

Gitea jest to interfejs graficzny do Gita, podobny do Githuba – fork Gogs. Napisany w Go, po kompilacji nie wymaga praktycznie żadnych dodatkowych konfiguracji i mieści się w jednym pliku binarnym.

Uruchamianie Gitea

Ściąganie binarki gitea na dysk:

wget https://dl.gitea.io/gitea/1.3.2/gitea-1.3.2-linux-arm-6

Doda nowego użytkownika do systemu:

# useradd --system -m -d /home/gitea -s /bin/bash gitea

mv https://dl.gitea.io/gitea/1.3.2/gitea-1.3.2-linux-arm-6 /home/gitea

Ustawienie serwisu:

Stworzenie pliku gitea.service w katalogu /lib/systemd/system/:


[Unit]
Description=Gitea
After=syslog.service
Wants=network.target

[Service]
Type=simple
User=gitea
WORKINGDIR=/home/gitea
ExecStart=/home/gitea/gitea-1.3.2-linux-arm-6 web
Restart=always
Environment=USER=gitea HOME=/home/gitea

[Install]
WantedBy=multi-user.target

ustawienie serwisu:

systemctl enable gitea.service

Jeśli zmieniamy konfigurację trzeba zresetować serwis poleceniem:

systemctl stop gitea
systemctl start gitea