Let’s Encrypt on Centos 7
Install required packages
# sudo yum install epel-release # sudo yum install httpd mod_ssl python-certbot-apache
Request an SSL Certificate
# sudo certbot --apache -d andeby.dk -d www.andeby.dk
Setup renewal cron
# sudo contab -e
Add the following
30 1 * * 1 /usr/bin/certbot renew >> /var/log/letsencrypt-renew.log
Check your certificate:
https://www.ssllabs.com/ssltest/analyze.html?d=morten.io&latest
Octoprint Windows – File Watcher
In frustration in slicing my 3D models in Cura or Simplify3d for then to upload them through Octoprint’s web interface, I created a little Windows Application around Octoprint’s API
The application is a tray icon application where you enter your Octoprint hostname, api key and which folders to monitor. After you drop the gcode file in the watched folder, I will automatically upload it to Octoprint.
Use it if you like – Or don’t
(The API key can be found under “Settings – API” in Octoprint)
It can be downloaded here: Octoprint Windows
Installation: Unzip under “c:\Program Files (x86)\Octoprint Windows” and add Octoprint Windows.exe to your startup folder in Windows – Or manually run it, when you need it
Upgrading: Close down Octoprint Windows application – Delete all content of “c:\Program Files (x86)\Octoprint Windows” and unzip the downloaded folder.
Changelog:
11-05-2016 | Feature: “New Update” info to main gui Bugfix: Changes to OnChanged Event |
11-06-2016 | Feature: Added Subdirectory watcher |
Note to self: F5 config editing
F5 LTM has a very cool web interface, but when it comes to bulk- editing or copying the cli is the fastest.
Config location
/config/bigip.conf
/config/partition/partitionname/bigip.conf
Verify config
tmsh load sys config verify partitions all
Load config
tmsh load sys config partitions all
.
Factor Exponent Prefix
--------------------------------------------------- 1 000 000 000 000 000 000 000 000...10^24....yotta 1 000 000 000 000 000 000 000...10^21....zetta 1 000 000 000 000 000 000...10^18....exa 1 000 000 000 000 000...10^15....peta 1 000 000 000 000...10^12....tera 1 000 000 000...10^9.....giga 1 000 000...10^6.....mega 1 000...10^3.....kilo 100...10^2.....hecto 10...10^1.....deka 0.1...10^-1....deci 0.01...10^-2....centi 0.001...10^-3....milli 0.000 001...10^-6....micro 0.000 000 001...10^-9....nano 0.000 000 000 001...10^-12...pico 0.000 000 000 000 001...10^-15...femto 0.000 000 000 000 000 001...10^-18...atto 0.000 000 000 000 000 000 001...10^-21...zepto 0.000 000 000 000 000 000 000 001...10^-24...yocto ---------------------------------------------------
OnApp API .NET Wrapper
I needed to interface the OnApp API at some of our installments at Solido Hosting. Sadly there is no official .NET wrapper to the API so I decided to make my own.
By design OnApp returns two-dimensional records-sets making .NET de-serialization a bit messy.
Currently its supporting the following methods:
- Virtual Machines
- Hypervisor
- Hypervisor Groups
- Image Template
- Logs
- Transactions
- Network
Check it out on my Github page
Samples:
List:
Client.Instance.Host = "http://controlpanel/"; Client.Instance.Username = "admin"; Client.Instance.Password = "changeme"; Console.WriteLine(""); Console.WriteLine("VIRTUAL MACHINES"); Console.WriteLine("-----------"); var virtualMachines = new VirtualMachine(); var machines = virtualMachines.GetAll(); foreach (var h in machines) { Console.WriteLine(h.Id + " - " + h.Label + " - " + h.Built + " - " + h.Booted); } Console.WriteLine(""); Console.WriteLine("HYPERVISORS GROUPS"); Console.WriteLine("-----------"); var hypervisorGroup = new HypervisorGroup(); foreach (var h in hypervisorGroup.GetAll()) { Console.WriteLine(h.Id + " - " + h.Label); Console.WriteLine("- Members in group"); foreach (var hyper in h.GetHypervisorsInZone()) { Console.WriteLine("- " + hyper.Id + " - " + hyper.Label); } } Console.WriteLine(""); Console.WriteLine("HYPERVISORS"); Console.WriteLine("-----------"); var hypervisors = new Hypervisor(); foreach (var h in hypervisors.GetAll()) { Console.WriteLine(h.Id + " - " + h.Label); } Console.WriteLine(""); Console.WriteLine("DATA STORES"); Console.WriteLine("-----------"); var datastores = new DataStoreGroup(); foreach (var d in datastores.GetAll()) { Console.WriteLine(d.Id + " - " + d.Label); } Console.WriteLine(""); Console.WriteLine("NETWORK"); Console.WriteLine("-----------"); var networks = new Network(); foreach (var n in networks.GetAll()) { Console.WriteLine(n.Id + " - " + n.Label); }
Check it out on my Github page.