Releases: fsmv/daemon
v0.6.6: More robust TLS support, improved logging, and bug fixes
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.
- TCP I think has no edge cases where it will not detect athough it
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
v0.6.5
v0.6.4
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.
- This makes it more robust for multiple-machine setups where one
- 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
v0.6.3
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
v0.6.2: 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.
v0.6.1: Bugfixes!
- Fix chroots with dynamic libraries on Ubuntu (they use an additional library path config setup that I wasn't searching before) - Fix waiting for child processes to exit before exiting spawn
v0.6.0 - 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
- When you press a button and refresh the page, it doesn't ask if you
- 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.
Installing
If you have already cloned the repo or downloaded the zip just run go build
.
To download and build specifically this version you can use:
go install ask.systems/daemon@v0.6.0
I don't provide binaries because I think it's best to always use the latest version of go because they regularly release upgrades to the net/http package.
Be sure to check the Quick Start section of the README for more info.