If, for some reason, certbot's --renew-hook argument is not an option, you can use systemd to automatically restart any service whenever a certificate is renewed.
You need two files:
/etc/systemd/system/cerbot-watch@.service:
[Unit]Description=Certbot service restarterAfter=network.target[Service]Type=oneshotExecStartPre=/bin/sleep 10ExecStart=/usr/bin/systemctl restart %i.service[Install]WantedBy=multi-user.target
/etc/systemd/system/cerbot-watch@.path:
[Path]PathModified=/etc/letsencrypt/live/PathModified=/etc/letsencrypt/live/DOMAINNAME/# Add one entry here for every certificate that should be monitored[Install]WantedBy=multi-user.target
After changing these files, execute systemctl daemon-reload to notify systemd of the changes. Now you can start a "restart trigger" for each service you want to:
This article is out of date. ETS Inside is no longer being developed or distributed by the KNX Association. This means that there is currently no official way to parameterize a KNX system under Linux.
ETS is a vendor independent software to configure KNX installations. However, it targets professional electricians and is quite expensive for a home user with 1000 EUR (without VAT).
Since 2017 the people of knx.org developed a new software called ETS Inside that only costs 160 EUR and targets private users. It has less features, but should be sufficient for most family house installations.
The software runs on a Windows 10 system with IIS, and is accessed with a special app that's also called ETS Inside (Windows, iOS, Android).
it is not possible to access an ETS Inside server using an internet browser (e.g Firefox, Chrome, Internet Explorer, Edge, etc.). In order to protect the project data, the web service communication between the client and the server needs to be encrypted and this is only done when using the ETS Inside clients mentioned above.
This means that the body of every POST request to the web service and the response is encrypted. When analysing the traffic with a network monitor you'll notice that ETS Inside seems to use a symetric encryption with a static key, because the encrypted content will be the same for each identical request. This means the key must be somewhere in the client apps and it should be possible to extract it¹.
However, this is not neccessary, because we can just disable the encryption! Go to the installation directory of the ETS Inside Server, which should be "C:\Progam Files\ETS Inside\Server", and open the file "Web.config" with a text editor. Look for the line that defines the EncryptionModul:
AspConcurrencyModule does nothing relevant to the transmission, so it's basically a transparent no-op and eventually disabled the encryption. You can now open the client in a regular browser using the system's IP and Port 8081, for example http://127.0.0.1:8081. I've tested it with Vivaldi, Chrome, Firefox and Edge, and it worked in every browser.
The downsite is that the dedicated app cannot be used anymore because it expects encrypted contents. But if you really require this to work in both, App and Browser, just download this file and save it as Default.htm into C:\Progam Files\ETS Inside\Client. This file is preferred by IIS over index.html and will remove the cipher key that has been initialized by the App before loading the real index.html. Additionally, this adds a nice progress bar while waiting for the libraries to be loaded.
¹) Of course this means that the traffic between client and server isn't really secured. HTTPS would have been a better choice, also this is hard to implement [de] for a non-public domain in a private network.
Today I had to resolve a mysterious bug in a PyQt5 / QtWebEngine application. After the user unlocked his session, the application hangs for a while before resuming to normal activity. I've added an JavaScript interval that prints the current time once a second onto the console, but even through the timestamps were OK it seems that something had freezed the application while the screen was locked.
To make it short, the application requested a status update via WebChannel once a second. While the Javascript kept active, the event loop of QApplication was blocked, so that the WebChannel events were put into a queue. (The reason for the block was the change to a new VT by the light-locker lock screen - I was able emulate it by manually switching to VT1 after the application has been started). When the application got active again, Qt started to empty the queue before any new events were processed.
Nested Scroll is a Javascript library that allows you to scroll
selected elements into the viewport. You can define if the element should be aligned to the upper, lower, left or right
boundary, or let Nested Scroll automatically decide depending on the shortest path.
Additionally, it is possible to define some animation methods, respect the element's border and margin
and add extra margins on each side when scrolling.
But what makes this library unique compared to other libraries I've looked into is that it that it
not only works with vertical but also with horizontal scrollbars, with nested scrollable DIVs
and with fixed elements!
Usage
// Scroll with default optionsvar target = document.getElementById('target-element');nestedScroll(target);// Scroll with additional parametersvar options ={// See section optionsanimationMethod:'easeInOut',animationTimeout:500,force:true,align:'auto',withCssMargins:true,marginTop:10,marginLeft:10,marginRight:10,marginBottom:10};nestedScroll(target, options);// Define a global option
nestesScroll.defaultOptions['animationMethod']='easeIn';
Disclamer: This is tested on Vivaldi 1.10, Firefox 52 and Chromium 59. Edge should also work, but I had some problems using the example file with IE11. Maybe I'll fix this later, or somebody as does ;-)