Skip to content

Instantly share code, notes, and snippets.

View milankragujevic's full-sized avatar

Milan Kragujević milankragujevic

View GitHub Profile
@milankragujevic
milankragujevic / proxy.php
Created July 1, 2021 13:19
PHP streaming proxy with support for Range requests (perfect for proxying video files with progressive download MP4 streaming)
<?php
error_reporting(0);
set_time_limit(0);
ob_end_clean();
$url = $_GET['url'];
if(isset($_SERVER['HTTP_RANGE'])) {
stream_context_set_default([
'http' => [

Introduction

Sometimes you may want to use a DNS server for specific domain requests and another DNS server for all other requests. This is helpful, for instance, when connected to a VPN. For hosts behind that VPN you want to use the VPN's DNS server but all other hosts you want to use Google's public DNS. This is called "DNS splitting."

Here, we run dnsmasq as a background service on macOS. The dnsmasq configuration described below implements DNS splitting.

Install

brew install dnsmasq
@milankragujevic
milankragujevic / youtube-extract-ids-from-playlist.js
Created July 28, 2017 00:30
To extract all the video IDs from a YouTube playlist. Open the playlist page, scroll down to the bottom, click load more, repeat until the end, then open Console and paste this code. Output is a list of video IDs from the page.
var els = document.getElementsByClassName('pl-video');
for(i = 0; i < els.length; i++) {
var el = els[i];
if(el) {
var src = el.getElementsByClassName('yt-thumb-clip')[0].getElementsByTagName('img')[0].src;
if(!src.match(/\.com\/vi\//g)) { continue; }
var id = src.split('.com/vi/')[1].split('/')[0];
console.log(id);
}
@milankragujevic
milankragujevic / build.prop
Created March 2, 2019 23:45
Deen build.prop
# begin build properties
# autogenerated by buildinfo.sh
ro.build.id=PQ2A.190205.001
ro.build.display.id=deen-userdebug 9 PQ2A.190205.001 190302 test-keys
ro.build.version.incremental=190302
ro.build.version.sdk=28
ro.build.version.preview_sdk=0
ro.build.version.codename=REL
ro.build.version.all_codenames=REL
@milankragujevic
milankragujevic / build.sh
Last active December 10, 2023 13:02
Compile FFmpeg with support for OMX encoding of H264 video on Raspberry Pi 3
wget https://www.deb-multimedia.org/pool/main/d/deb-multimedia-keyring/deb-multimedia-keyring_2016.8.1_all.deb -O /tmp/deb-multimedia-keyring.deb
sudo dpkg -i /tmp/deb-multimedia-keyring.deb
rm /tmp/deb-multimedia-keyring.deb
sudo sh -c 'echo "deb https://www.deb-multimedia.org buster main non-free" >> /etc/apt/sources.list'
sudo apt update
sudo apt upgrade -y
sudo apt install -y libfdk-aac-dev libomxil-bellagio-dev libx264-dev libasound2-dev libmp3lame-dev autoconf automake build-essential libfreetype6-dev libtool pkg-config texinfo zlib1g-dev git
cd ~
git clone https://github.com/ffmpeg/ffmpeg -b release/4.2
cd ffmpeg/
@milankragujevic
milankragujevic / remote.ino
Created October 5, 2017 17:09
mts Huawei EC2108v5 IR remote ESP8266
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <IRremoteESP8266.h>
#include <IRsend.h>
#include <WiFiClient.h>
MDNSResponder mdns;
IRsend irsend(14);
ESP8266WebServer server(80);
@milankragujevic
milankragujevic / apps.log
Created January 19, 2019 21:14
Preinstalled apps on Motorola One (P30 Play)
com.android.cts.priv.ctsshim
com.qualcomm.qti.qms.service.telemetry
com.google.android.youtube
com.android.internal.display.cutout.emulation.corner
com.google.android.ext.services
com.motorola.motocare
com.android.internal.display.cutout.emulation.double
com.android.providers.telephony
com.android.sdm.plugins.connmo
com.google.android.googlequicksearchbox
@milankragujevic
milankragujevic / iptables.sh
Last active July 18, 2023 11:19
Hijack DNS on OpenWrt to another DNS server
iptables -I FORWARD ! -s 192.168.100.242 -p tcp --dport 53 -j ACCEPT
iptables -I FORWARD ! -s 192.168.100.242 -p udp --dport 53 -j ACCEPT
iptables -t nat -A PREROUTING ! -s 192.168.100.242 -p tcp --dport 53 -j DNAT --to 192.168.100.242:53
iptables -t nat -A PREROUTING ! -s 192.168.100.242 -p udp --dport 53 -j DNAT --to 192.168.100.242:53
iptables -I FORWARD ! -s 192.168.100.242 -p tcp --dport 5353 -j ACCEPT
iptables -I FORWARD ! -s 192.168.100.242 -p udp --dport 5353 -j ACCEPT
iptables -t nat -A PREROUTING ! -s 192.168.100.242 -p tcp --dport 5353 -j DNAT --to 192.168.100.242:53
iptables -t nat -A PREROUTING ! -s 192.168.100.242 -p udp --dport 5353 -j DNAT --to 192.168.100.242:53
@milankragujevic
milankragujevic / mouse.sh
Last active May 20, 2023 03:13
Normalize mouse speed on Ubuntu (flat acceleration profile, similar to Windows)
#!/bin/bash
# put in /opt/mouse.sh
# chmod a+rwx /opt/mouse.sh
# crontab -e
# @reboot sleep 5; bash /opt/mouse.sh &
gsettings set org.gnome.desktop.peripherals.mouse accel-profile flat
gsettings set org.gnome.desktop.peripherals.mouse speed 0
@milankragujevic
milankragujevic / enable_sshd.py
Created April 25, 2023 10:32 — forked from andyboeh/enable_sshd.py
Enable SSHD on the Aclatel HH40V (modify backup file)
#!/usr/bin/env python
import os
import sys
import subprocess
import tempfile
import struct
import shutil
import hashlib