Skip to content

Releases: fsmv/daemon

v0.6.6: More robust TLS support, improved logging, and bug fixes

09 Jul 03:55
v0.6.6
afec07d
Compare
Choose a tag to compare

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

v0.6.5

28 Jan 02:20
v0.6.5
Compare
Choose a tag to compare

Fix the build on windows and update dependencies

Next time hopefully I'll remember to check github automation before I
tag a new version

v0.6.4

28 Jan 01:51
v0.6.4
Compare
Choose a tag to compare

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

v0.6.3

28 Jan 01:53
v0.6.3
Compare
Choose a tag to compare

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!

11 Jul 04:26
v0.6.2
Compare
Choose a tag to compare
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!

11 Jul 04:26
v0.6.1
Compare
Choose a tag to compare
 - 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!

07 Jul 00:04
v0.6.0
Compare
Choose a tag to compare

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.

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.