Skip to content

Instantly share code, notes, and snippets.

@athoune
athoune / server.py
Created Sep 28, 2020
Route to healthy server
View server.py
#!/usr/bin/env python3
import signal
import os
from flask import Flask, abort
from werkzeug.serving import run_simple
state = True
@athoune
athoune / cgroup_swap.py
Last active Jun 2, 2020
display swap and rss in cgroup services
View cgroup_swap.py
#!/usr/bin/env python3
from pathlib import Path
def containerd():
for p in Path("/sys/fs/cgroup/memory/system.slice/containerd.service/").iterdir():
if not p.is_dir():
continue
print(p.name)
with (p / "memory.stat").open("r") as f:
@athoune
athoune / who_connect.py
Last active May 29, 2020
nia nia nia ssh public key
View who_connect.py
#!/usr/bin/env python3
import pwd
import sys
import re
import subprocess
import tempfile
import os
import io
from collections import namedtuple
View pubsub.go
package pubsub
import (
"sync"
)
type Pubsub struct {
channels map[string]map[int]*Channel
cpt int
lock sync.Mutex
@athoune
athoune / pubsub.py
Created Nov 2, 2018
aio pubsub pattern
View pubsub.py
from collections import defaultdict
from asyncio import gather
class Pubsub:
channels = defaultdict(list)
def add_handler(self, key: str, handler):
self.channels[key].append(handler)
@athoune
athoune / github_webhook.py
Last active Jun 2, 2020
aiohttp webhook for github
View github_webhook.py
async def github_webhook(secret :str, request :web.Request) -> dict:
assert request.content_length < 1000000, "Request content too fat" # 1M
digest, signature = request.headers['X-HUB-SIGNATURE'].split("=", 1)
assert digest == "sha1", "Digest must be sha1" # use a whitelist
body = await request.content.read()
h = hmac.HMAC(bytes(secret, "UTF8"), msg=body, digestmod=digest)
assert h.hexdigest() == signature, "Bad signature"
return json.loads(body.decode('UTF8'))
@athoune
athoune / jsonrpc.py
Created Jan 7, 2018
jsonrpc2 with aiohttp
View jsonrpc.py
import logging
from jsonrpc.jsonrpc2 import JSONRPC20Request
def jsonrpcrequest(data):
logging.debug(data)
if isinstance(data, list):
for d in data:
yield JSONRPC20Request.from_data(d)
@athoune
athoune / sidekiq.lua
Last active Dec 11, 2017
Get all Sidekiq's queues length
View sidekiq.lua
local a={}
local queues=redis.call('smembers', 'resque:gitlab:queues')
for i,v in ipairs(queues) do
a[i*2-1] = 'queue:' .. v
a[i*2] = redis.call('llen', 'resqueue:gitlab:queue:' .. v)
end
return a
@athoune
athoune / acme.go
Created May 23, 2017
Steal certificates from Traefik
View acme.go
package acme
import (
"crypto/tls"
"encoding/base64"
"encoding/json"
"io/ioutil"
)
type Cert struct {
View keybase.md

Keybase proof

I hereby claim:

  • I am athoune on github.
  • I am athoune (https://keybase.io/athoune) on keybase.
  • I have a public key ASAJyjChoVZ45_odQgM9uacmNqeKRTFAQMhtV7UhoFSdkwo

To claim this, I am signing this object: