Compare commits

5 Commits

6 changed files with 31 additions and 51 deletions

View File

@@ -90,7 +90,7 @@ trok = {
inputs.trok.nixosModules.default inputs.trok.nixosModules.default
]; ];
tux.services.trok = { services.trok = {
enable = true; enable = true;
host = "0.0.0.0"; host = "0.0.0.0";
port = 1337; port = 1337;

View File

@@ -2,10 +2,12 @@
description = "Simple tunneler in Go that exposes local ports to the internet"; description = "Simple tunneler in Go that exposes local ports to the internet";
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
outputs = { outputs =
{
self, self,
nixpkgs, nixpkgs,
}: let }:
let
systems = [ systems = [
"x86_64-linux" "x86_64-linux"
"aarch64-linux" "aarch64-linux"
@@ -13,11 +15,13 @@
"aarch64-darwin" "aarch64-darwin"
]; ];
forAllSystems = function: nixpkgs.lib.genAttrs systems (system: function nixpkgs.legacyPackages.${system}); forAllSystems =
in { function: nixpkgs.lib.genAttrs systems (system: function nixpkgs.legacyPackages.${system});
in
{
packages = forAllSystems (pkgs: rec { packages = forAllSystems (pkgs: rec {
default = trok; default = trok;
trok = pkgs.callPackage ./default.nix {}; trok = pkgs.callPackage ./package.nix { };
}); });
nixosModules.default = ./module.nix; nixosModules.default = ./module.nix;

View File

@@ -30,7 +30,7 @@ type Trok struct {
func (t *Trok) Init(addr string) error { func (t *Trok) Init(addr string) error {
t.publicConns = make(map[string]Conn) t.publicConns = make(map[string]Conn)
t.webServer = NewTrokWeb(":443") t.webServer = NewTrokWeb(":1338")
err := t.controlServer.Init(addr, "Controller") err := t.controlServer.Init(addr, "Controller")
return err return err
} }

View File

@@ -1,14 +1,12 @@
package server package server
import ( import (
"crypto/tls"
"net/http" "net/http"
"github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/filesystem" "github.com/gofiber/fiber/v2/middleware/filesystem"
"github.com/rs/zerolog/log" "github.com/rs/zerolog/log"
"github.com/tuxdotrs/trok/internal/web" "github.com/tuxdotrs/trok/internal/web"
"golang.org/x/crypto/acme/autocert"
) )
type TrokWeb struct { type TrokWeb struct {
@@ -36,29 +34,7 @@ func (t *TrokWeb) Start() {
Browse: true, Browse: true,
})) }))
cfg := t.GetTLSCert() log.Panic().Err(t.app.Listen(t.addr)).Msg("unable to start trok webserver")
ln, err := tls.Listen("tcp", t.addr, cfg)
if err != nil {
log.Panic().Msgf("unable to start trok webserver: %v", err)
}
t.app.Listener(ln)
}
func (t *TrokWeb) GetTLSCert() *tls.Config {
m := &autocert.Manager{
Prompt: autocert.AcceptTOS,
HostPolicy: autocert.HostWhitelist("trok.cloud"),
Cache: autocert.DirCache("./certs"),
}
return &tls.Config{
GetCertificate: m.GetCertificate,
NextProtos: []string{
"http/1.1", "acme-tls/1",
},
}
} }
func (t *TrokWeb) Stop() { func (t *TrokWeb) Stop() {

View File

@@ -5,9 +5,9 @@
... ...
}: }:
with lib; let with lib; let
cfg = config.tux.services.trok; cfg = config.services.trok;
in { in {
options.tux.services.trok = { options.services.trok = {
enable = mkEnableOption "Enable trok"; enable = mkEnableOption "Enable trok";
host = mkOption { host = mkOption {