The firmware of this GPON ONT SFP module can be updated using the web interface (Management | Update Software):
The web interface only accepts image files with a special header. These can be created by adding the header to a flash dump.
| name: build | |
| on: | |
| push: | |
| branches: master | |
| jobs: | |
| tap: | |
| runs-on: macos-latest | |
| steps: |
| # RouterOS script for pinging a list of addresses (sending SMS from UBILL API https://ubill.ge) | |
| # Example | |
| # Insert script: System > Scheduler > + Name=ubill-ping; interval=00:01:00; | |
| # insert IP for monitoring: IP > Firewall > Address Lists > + Name=ubill-ping; Address=1.1.1.1; Comment=Router-Tbilisi; | |
| :local ip; | |
| :local disabled; | |
| :local com; | |
| /ip firewall address-list |
This note describes how to connect two networks/devices/VMs over public network using Wireguard with Layer 2 support (ARP, IPv6 link-local, etc).
This can also be achieved using SSH and its "tap" tunnel, however, it does not provide the same level of latency and bandwidth as full-blown VPN such as Wireguard.
In addition, this note describes how to tunnel Wireguard over TCP connection. This may be of use if you encounter firewall in-between so, for instance, you can use TCP port 443 only.
One of the key parts of the save/load process in Factorio is that it must be deterministic. This means that for a given save file (when no external factors change) saving, exiting, and loading the save shouldn't change any observable behavior.
There are a few reasons and benefits for this strict requirement:
| #cloud-config | |
| # Set the hostname for this machine (takes precedence over hostname assigned by DHCP lease). | |
| hostname: myhost | |
| # Authorize SSH keys for the `rancher` sudoer user | |
| ssh_authorized_keys: | |
| - ssh-rsa AAA...ZZZ example1@rancher | |
The Brother PTP300BT label maker is intended to be controlled using the official Brother P-Touch Design & Print iOS/Android app. The app has arbitrary limits on what you can print (1 text object and up to 3 preset icons), so I thought it would be a fun challenge to reverse engineer the protocol to print whatever I wanted.
Python code at the bottom if you want to skip the fine details.
Intitially I had a quick peek at the Android APK to see if there was any useful information inside. The code that handles the communication with the printer in Print&Design turned out to be a native library, but the app clearly prepares a bitmap image and passes it to this native library for printing. Bitmaps are definitely something we can work with.
Info: https://www.nginx.com/resources/admin-guide/nginx-https-upstreams/
Source: http://nategood.com/client-side-certificate-authentication-in-ngi
This is SSL, so you'll need an cert-key pair for you/the server, the api users/the client and a CA pair. You will be the CA in this case (usually a role played by VeriSign, thawte, GoDaddy, etc.), signing your client's certs. There are plenty of tutorials out there on creating and signing certificates, so I'll leave the details on this to someone else and just quickly show a sample here to give a complete tutorial. NOTE: This is just a quick sample of creating certs and not intended for production.
| from zipfile import ZipFile | |
| from struct import Struct | |
| class Deserializer: | |
| u16 = Struct('<H') | |
| u32 = Struct('<I') | |
| def __init__(self, stream): | |
| self.stream = stream |
I wanted to easily make HTTP requests (both GET & POST) with a simple interface that returns promises.
The popular request & request-promises package are good, but I wanted to figure out how to do it w/out using external dependencies.
The key features are: