Skip to content

Instantly share code, notes, and snippets.

View growler's full-sized avatar

Alexey Naidyonov growler

  • ITooLabs
  • Madrid, Spain
  • 03:17 (UTC +02:00)
  • X @anaidyonov
View GitHub Profile

openpgp4fpr:B15C0E774320E4174DF6D8581A33005FC0E7FB82

@growler
growler / exec-as.nix
Created February 20, 2024 21:16
A simple sudo for launchd scripts
{pkgs, ... }:
{
nixpkgs.overlays = [
(final: prev: {
exec-as = pkgs.writeCBin "exec-as" ''
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <pwd.h>
module github.com/nicktrav/test
go 1.18
require (
github.com/DataDog/zstd v1.5.2 // indirect
github.com/cespare/xxhash/v2 v2.1.2 // indirect
github.com/cockroachdb/errors v1.9.0 // indirect
github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f // indirect
github.com/cockroachdb/pebble v0.0.0-20220519230332-3355a02e7cec // indirect
type randomSize interface {
clone() randomSize
size() int
}
type sampledTableSize struct {
sizes []int
ptr int
}
m4_divert(-1)
m4_changecom(`!')
!
! ENV(VAR) заменяется на значение переменной среды "VAR". Если переменная
! отсутствует, то заменится на пустой вывод
! ENV(VAR:default) заменяется на значение переменной среды "VAR", или на
! текст "default". Текст не должен содержать запятых
!
m4_define(`$env', `m4_pushdef(`_n',m4_divnum)m4_divert(-1)
m4_ifdef(`$e<$1>',,
морзе = {
'а': '.-',
'б': '-...',
'в': '.--',
'г': '--.',
'д': '-..',
'е': '.',
'ё': '.',
'ж': '...-',
'з': '--..',
### Keybase proof
I hereby claim:
* I am growler on github.
* I am anaidyonov (https://keybase.io/anaidyonov) on keybase.
* I have a public key ASAeIe5ngFp8f_gHTOo4ksyaRH_5rZbQy4ZJoGNmlpv0RAo
To claim this, I am signing this object:

Весь список блокируемых РКН адресов умещается в 64K префиксов для linux ipset(8). С таким объемом точно справляется хилый intel linux box в качестве внешнего маршрутизатора, и, возможно, справится SOHO железка с OpenWRT (не проверял).

Для обхода блокировок понадобится:

  • linux box в качестве маршрутизатора между внутренней сетью (интерфейс $INT_IF, сеть $INT_NET)
  • vpn на какую-нибудь площадку (интерфейс $VPN_IF -- предполагается, что VPN делает NAT сама)
  1. Сначала надо преобразовать список адресов в формат, приемлимый для ipset(8):
Verifying that +growler is my blockchain ID. https://onename.com/growler
@growler
growler / cli.go
Created February 25, 2015 14:41
Golang IDEA plugin bug
package cli
import (
"time"
)
// @short Returns its parameter
// @cmd echo <string>:text
func echo(text string) string {
return text