Tags: fsmv/daemon
Tags
Portal covers more edge cases and portal/spawn bug fixes New features: - Portal allows multiple leases with the same port (with different patterns) when registered with FixedPort. - This is for backends that insist on being the root of the path structure. You might need to register /appName/ and /api/ pointing to the same port. - Portal API clients can register two paths by sending two Registration requests with the second one using the port from the first lease as a FixedPort - 5 minute HSTS by default if there are no forwarders that AllowHTTP - This prevents people from connecting to portal as a proper TLS client then re-serving the content over HTTP as a MITM attack. - I aim to have more options to set more strict HSTS later but once you set you're locked in so I can't make strict year+ expiration HSTS the default. I'm still not sure what a good UX for this is. See: https://hstspreload.org/#opt-in - This means if you register the first AllowHTTP forwarder it will work for people who have been using the domain name recently after 5 minutes - Portal now has a -reserved_ports flag so you can tell portal not to lease out ports that other non-daemon services might be using on your machine - I also slightly adjusted the default port range to avoid NFS servers Bug fixes: - Fix other processes being started before portal is ready with the API port - Fix restarting portal sometimes creating a lease with a shorter timeout than the one that was stored on disk - Protect against segfaults in portal when reading old saved registrations
More robust TLS support, improved logging, and bug fixes Visible changes: - Added useragent to the logs for portal and host - Accurately log the bytes sent over the wire instead of just the size of the file (and added this as an API in the tools library). - Clean up several extraneous log lines that appeared in the demo run - Randomly stagger the lease expirations to stagger renews - Better support for attempting TLS in both TCP and HTTP forwarding. - TCP I think has no edge cases where it will not detect athough it doesn't verify certs. - HTTP works unless you're an API client that turned off CertificateRequest for some reason, so third party HTTPS servers should work now. Improvements and bug fixes: - Add a call to sync when saving the state file on unix OSs - On Windows do a more atomic file save with MoveFileEx - On Windows ask the OS to kill child processes automatically. Also use MoveFileEx to ask the OS to delete the copied binaries on reboot if you have admin permissions. - Fix a panic that happened if you have two different IPs connected to the same server requesting the same FixedPort because the state file didn't have the IP in the map key - On Linux fix a potential bug with killing children because go could kill the thread that called fork(), now we lock the thread and keep the goroutine alive. - Fixed spawn responding to ^C during the dashboard password prompt - Updated dependencies
More fixes and logging improvements - Fix a bug where go servers using the portal API to get a CA signed cert would fail to connect after 10 days. This was because of a bug introduced in v0.6.2 that caused the new CA certs to not be accepted for pre-existing registrations that got renewed for a long time. - The portal client library now re-registers if it gets an error from the server when it tries to renew saying the lease isn't registered. - This makes it more robust for multiple-machine setups where one might stay alive while the other one is restarted or altered or one could go into sleep mode etc. - I deprecated the KeepLeaseRenewed functions because they don't have the ability to re-register since they don't have the registration request in the API. StartRegistration is better anyway. - Now if you use syslog the version information is logged on startup in each binary - Now panics of spawn or any binary launched by spawn are syslogged, previously they only showed up on stdout. - Improved error logging and more info logging for future debugging
Fixes! - Improve compatibility with some backends: Use X-Forwarded-For-Port instead of X-Forwarded-Port to relay the port that the user connected to portal with. X-Forwarded-Port is apparently meant for the port that portal is listenting on (like X-Forwarded-Host). Also set X-Forwarded-Proto now. - Fix servers sometimes failing to connect to portal on startup by delaying properly in spawn
Support macOS and Windows! Additionally: - Automatically detect TLS support from backends registered with portal. If you setup your server to use a self-signed cert then the connection will be fully encrypted. - Add portal flags for the RPC port and the port range to lease out to clients. I just forgot I had it as constants. Now I can avoid testing in prod! - Fix a bug where if you ran it with $GOPATH/bin in your $PATH it would fail to copy the megabinary. - Update dependency versions. I had forgotten about this and didn't realize that go never updates it automatically after it is added. The github security checker notified me.
First public release! There are so many changes and improvements in this release, and a few backwards incompatible changes too. - Running `daemon spawn` with no configuration or arguments now writes out an example config and starts portal and the dashboard and prints a link to open in the terminal. This is so the first time user experience is nice and easy for testing it out. - The portal token is now automatically propegated to servers run by spawn if portal was also run by the same spawn instance. - Spawn now works with dynamically linked binaries. It automatically parses the ELF file and copies all the required libraries into the chroot - Resolving DNS names and validating TLS certs now works in a spawn chroot because necessary files are now copied in - Portal RegistrationRequest now includes a hostname option so that assimilate has the ability to register a path for another machine that cannot run assimilate on it e.g. a CPanel only host or a NAS - Improvements to the dashboard experience - When you press a button and refresh the page, it doesn't ask if you want to resubmit anymore - When you restart a server it scrolls to the server - Eliminated the logs pop-in problem. Now you will always see the logs history right away. - Restyled the dashboard based on styles my friend who beta-tested daemon made - In portal use the de-facto standard X-Forwarded-For and X-Forwarded-Port headers instead of my custom made Orig-Address. The incompatibilty is that I have changed the format of the portal state file and not bothered properly deprecating the old field and migrating configs. This should be safe because not many people are using it. I just wanted to take the opportunity to delete the field.
PreviousNext