Novo pipeline de video: scripts/screencast/render.py roda uma fase em um pty,
emula o terminal com pyte, gera frames PNG e mux com ffmpeg (H.264,
yuv420p, +faststart, sem trilha de audio). Fallback de encoder: libx264 ->
libopenh264 -> VP9.
Fases (scripts/screencast/phases/, uma sessao real contra o lab por video):
1. implementacao no kernel - fontes OpenBSD + compat + build limpo do pf.ko
2. ativacao - insmod, /dev/pf, pfctl -e, pfctl -s info
3. regras basicas - tabela, anchor, keep state, block drop
4. roteamento - route-to e reply-to (provado com tcpdump nas 2 interfaces)
5. balanceamento - pool round-robin, pool source-hash, dup-to
6. QOS - filas hfsc, pfctl -s queue -v, transferencia de 2 MB pela fila
Os videos ficam versionados em out/screencast/ (.gitignore ajustado para
nao ignorar *.mp4) e o indice/texto de descricao do YouTube em
docs/{en,pt-BR}/screencast.md.
Correcoes na propria demo (encontradas gravando): a acao de uma regra no pf
e pass OU block (nunca os dois); as regras de um anchor vivem em um ruleset
proprio (pfctl -a <anchor> -f); o nc do QOS precisa rodar na VM do servidor,
nao no firewall; o rotulo 'FASE x/6' vem do numero da fase, nao da posicao
na lista de gravacao.
15 lines
659 B
Bash
Executable File
15 lines
659 B
Bash
Executable File
#!/bin/sh
|
|
# Analysis helper executed ON the firewall VM (avoids quoting hell through the
|
|
# ssh layers). usage: an.sh <capture-file> <mode>
|
|
f=$1
|
|
mode=$2
|
|
case "$mode" in
|
|
req) echo "requerentes no fio: $(grep -c 'echo request' "$f")" ;;
|
|
rep) echo "respostas no fio: $(grep -c 'echo reply' "$f")" ;;
|
|
src) echo "origem no fio (contagem por endereco de origem):"
|
|
grep 'echo request' "$f" | sed 's/.*: \([0-9.]*\) > .*/\1/' | sort | uniq -c ;;
|
|
uniq) echo "origens distintas: $(grep 'echo request' "$f" | sed 's/.*: \([0-9.]*\) > .*/\1/' | sort -u | tr '\n' ' ')" ;;
|
|
lines) grep 'echo request' "$f" | head -2 ;;
|
|
*) echo "modo desconhecido: $mode" ;;
|
|
esac
|