Skip to content

Instantly share code, notes, and snippets.

View StoneMoe's full-sized avatar

Lake Chan StoneMoe

View GitHub Profile
@StoneMoe
StoneMoe / tun2socks_cli.sh
Last active December 6, 2022 09:18
setup tun2socks with script
#!/bin/bash
if [ $UID -ne 0 ]; then
echo Please run as root.
exit 1
fi
GW=$(ip route | grep default | awk '{print $3}')
IF=$(ip route | grep default | awk '{print $5}')
TUN=192.18.0.1
echo Detected Network: $GW $IF
@StoneMoe
StoneMoe / unicorn.py
Created January 30, 2021 15:47
Simple preforking echo server in Python
"""
Simple preforking echo server in Python.
Python port of http://tomayko.com/writings/unicorn-is-unix.
"""
import os
import sys
import socket
#!/bin/bash
# Source https://stackoverflow.com/questions/36651091/how-to-install-packages-in-linux-centos-without-root-user-with-automatic-depen
pkgname=$1
if [ -z $pkgname ]; then
echo "Usage: ./non-root-yum-install.sh pkgname-here"
exit 1
fi
rand=$(openssl rand -base64 6)
@StoneMoe
StoneMoe / migrate.sh
Last active July 14, 2020 09:53
volume to volume
# make tarball from sentry_pgdb volume
docker run --rm -v sentry_pgdb:/var/lib/postgresql/data -v (pwd):/backup busybox tar cvf /backup/backup.tar /var/lib/postgresql/data
# create a sentry-postgres volum
docker volume create sentry-postgres
# restore to sentry-postgres volume
# NOTE: tarball will keep absolute path folder structure, so we don't need specify the target extract path
docker run --rm -v sentry-postgres:/var/lib/postgresql/data -v (pwd):/backup busybox tar xvf /backup/backup.tar
@StoneMoe
StoneMoe / traceicmpsoftirq.py
Created December 19, 2019 11:07 — forked from iAklis/traceicmpsoftirq.py
ICMP packet tracer using BCC
#!/usr/bin/python
bpf_text = """
#include <linux/ptrace.h>
#include <linux/sched.h> /* For TASK_COMM_LEN */
#include <linux/icmp.h>
#include <linux/netdevice.h>
struct probe_icmp_data_t
{
u64 timestamp_ns;
u32 tgid;
@StoneMoe
StoneMoe / supervisor.conf
Created September 26, 2019 14:50 — forked from hezhao/myapp.conf
Example supervisor config file /etc/supervisor/conf.d/myapp.conf
[program:myapp]
autostart = true
autorestart = true
command = python /home/pi/myapp.py
environment=SECRET_ID="secret_id",SECRET_KEY="secret_key_avoiding_%_chars"
stdout_logfile = /home/pi/stdout.log
stderr_logfile = /home/pi/stderr.log
startretries = 3
user = pi
@StoneMoe
StoneMoe / README.md
Created September 25, 2019 10:23 — forked from denji/README.md
Simple Sentry docker-compose.yml
  1. Download docker-compose.yml to dir named sentry
  2. Change SENTRY_SECRET_KEY to random 32 char string
  3. Run docker-compose up -d
  4. Run docker-compose exec sentry sentry upgrade to setup database and create admin user
  5. (Optional) Run docker-compose exec sentry pip install sentry-slack if you want slack plugin, it can be done later
  6. Run docker-compose restart sentry
  7. Sentry is now running on public port 9000
@StoneMoe
StoneMoe / tmux.md
Created January 8, 2019 06:19 — forked from andreyvit/tmux.md
tmux cheatsheet

tmux cheat sheet

(C-x means ctrl+x, M-x means alt+x)

Prefix key

The default prefix is C-b. If you (or your muscle memory) prefer C-a, you need to add this to ~/.tmux.conf:

remap prefix to Control + a

@StoneMoe
StoneMoe / eventlet_patcher.py
Created March 7, 2018 11:33
Monkey patch for eventlet wsgi environ string bug
def eventlet_patcher():
# Ref: https://github.com/eventlet/eventlet/pull/467
# Ref: https://github.com/eventlet/eventlet/issues/468
from eventlet.wsgi import HttpProtocol
def new_get_environ(self):
env = self.server.get_environ()
env['REQUEST_METHOD'] = self.command
env['SCRIPT_NAME'] = ''
@StoneMoe
StoneMoe / python_engineio_patcher.py
Last active January 15, 2019 05:29
Monkey patch for Python-EngineIO JSONP-Polling support
# For Python-EngineIO 2.0.2
def engine_io_patcher():
from engineio.payload import Payload as eio_Payload
from engineio.server import Server as eio_Server
original_handle_request = eio_Server.handle_request
def new_eioserv__ok(self, packets=None, headers=None, b64=False, jsonp_seq=None):
"""response generator."""
if packets is not None:
if headers is None: