loading...

Tuxmind

Firewall UFW Ubuntu 22.04 LTS

quarta-feira, 28 de junho de 2023
Tuxmind

A forma mais simples de configurar o iptables no Ubuntu é usando o UFW.

O UFW é um frontend para o iptables.

Configurar o iptables "manualmente" é uma tarefa trabalhosa. Além disso é necessário utilizar outra ferramenta para guardar, e aplicar as regras durante o boot.

O UFW veio para facilitar todo esse processo.

Exemplo para o iptables:

iptables -A INPUT -p tcp --dport 8000 -j ACCEPT

O mesmo com o ufw:

ufw allow 8000/tcp

Além de ser mais intuitivo ele guarda as regras para serem aplicadas durante o boot.

Alguns exemplos:

Mudando o status.

sudo ufw enable
sudo ufw disable

Ver status e regras.

sudo ufw status

Adicionando regra para abrir portas tcp ou udp.

sudo ufw allow 8000/tcp
sudo ufw allow 5000/udp

Adicionando regra para uma faixa de portas.

sudo ufw allow 5000:8000/tcp

Bloqueando IPs.

sudo ufw deny from 192.168.1.200

Listar as regras por número.

sudo ufw status numbered

Apagando uma regra.

sudo ufw delete

Reset para regras default.

sudo ufw reset

Ver lista de regras de perfil para apps da firewall.

sudo ufw app list

As regras de perfil para apps ficam no arquivo de configuração:

/etc/ufw/applications.d

As regras adicionadas ficam no arquivo de configuração:

/etc/ufw/user.rules


Visidata v2.2.1 Ubuntu 22.04

domingo, 5 de março de 2023
Tuxmind

O visidata versão que está no repositório do ubuntu 22.04 LTS não salva arquivos JSON com encode utf-8.

Após ver o código fonte, verifiquei que o problema está na classe "JSONEncoder" que por default utiliza o "ensure_ascii=True"

Solução:

Depois de instalar o visidata pelo apt é só abrir o arquivo:

/usr/lib/python3/dist-packages/visidata/loaders/json.py

e substituir a linha (94 aprox.):

super().__init__(sort_keys=options.json_sort_keys, **kwargs)

por:

super().__init__(sort_keys=options.json_sort_keys, ensure_ascii=False, **kwargs)

Como se trata de python, não se esqueça de manter a indentação :)

De salientar que esta solução é apenas para a versão v2.2.1 do ubuntu 22.04 LTS.

A última versão do visidata v2.11 que está no pip e no github, também não salva o JSON em utf-8.

Mas já fiz um "pull request" na página do projecto no github.

https://github.com/saulpw/visidata/pull/1776/commits

Nessa versão (v2.11) adicionei uma vd.option com o nome de "json_ensure_ascii".

É uma solução mais flexível. Porque passa a ser possível usar o "json_ensure_ascii" nas configurações do visidata em ".visidatarc".

Basta adicionar a seguinte linha no final do ".visidatarc"

options.json_ensure_ascii = False

O pull request que eu fiz no github já foi aceite na branch de desenvolvimento.

Provalvelmente versões maiores que a v2.11 já virão com essa alteração.


Visidata e UTF-8

terça-feira, 28 de fevereiro de 2023
Tuxmind

Editando um arquivo json no visidata me deparei com um bug.

Quando faço alterações e salvo um arquivo json, o visidata insite em guardar o texto em us-ascii. Mesmo que o fichero original esteja em UTF-8.

Palavras como "pão" fica com encode ascii escape "p\u00e3o".

Já verifiquei as configurações do visidata e tenho o encode UTF-8 como "default".

Não encontrei no site do visidata nada sobre este problema.

A versão do visidata com este problema é a v2.2.1 e usa o python v3.10.6.

Mas arranjei uma solução provisória com a ajuda de um programa para Linux chamado ascii2uni.

No Debian ou Ubuntu basta instalar...

sudo apt install uni2ascii

E depois para "corrigir" o ficheiro json use o comando...

cat file.json | ascii2uni -a U > file-out.json

Também encontrei outro problema do visidata com arquivos antigos que usam UTF-8 com (BOM) no encode.

Visidata não funciona com UTF-8 (BOM) files.

Para remover o "BOM" de um arquivo UTF-8, basta utilizar o sed.

sed '1s/^\xEF\xBB\xBF//' < original.json > new.json


Update

Já encontrei uma solução para este bug.

Veja aqui neste link, como resolver.


Inkscape na linha de comando

terça-feira, 28 de fevereiro de 2023
Tuxmind

Exportando imagens png no inkscape via linha de comando.

Útil para criar icons em várias dimenções para web sites ou desktop apps.

inkscape favicon.svg -w 512 -h 512 -o icon512.png

Ou use o seguinte loop para criar todas as dimenções mais utilizadas numa pasta com nome de "icons".

for a in 16 32 64 128 256 512 ; do inkscape -w ${a} -h ${a} -o icons/icon${a}.png; done


PocketBase. O backend em um único arquivo.

domingo, 2 de outubro de 2022
Tuxmind

Existe várias formas de criar uma REST API. Eu apenas já usei Express.js, PHP (sem framework), Laravel e Strapi.

Uma das mais fáceis que eu já testei foi o Strapi. Em 15 minutos consegue-se criar uma API. Basta instalar com a ajuda do npx (é preciso ter o node.js), editar um arquivo onde fica as informações da base de dados, e fazer uns pequenos ajustes.

Mas recentemente descobri o PocketBase  e fiquei impressionado. Está tudo em apenas um único arquivo. Após a primeira execução fica tudo guardado numa pasta com uma base de dados em SQlite. A configuração é zero! Nem se pode dizer que é preciso instalar. É apenas descompactar o zip, e executar.

Depois é só acessar a dashboard, escolher uma password para admin, e começar a criar as collections. Tudo isso numa interface web super fácil e intuitiva.

Para pequenos projetos não existe forma mais fácil e rápida para criar um backend.

https://pocketbase.io/