diff --git a/README-RASPBERRYPI.md b/README-RASPBERRYPI.md index e623985..9e5f2c2 100644 --- a/README-RASPBERRYPI.md +++ b/README-RASPBERRYPI.md @@ -4,16 +4,21 @@ This readme only contains a detailed explanation of how to set up the WireGuard ## Setup -You can download prebuild binaries from the [release page](https://github.com/h44z/wg-portal/releases). If you want to build the binary yourself, -use the following instructions: +You can either download prebuild binaries from the [release page](https://github.com/h44z/wg-portal/releases) or use Docker images for ARM. +If you want to build the binary yourself, use the following building instructions. ### Building This section describes how to build the WireGuard Portal code. To compile the final binary, use the Makefile provided in the repository. As WireGuard Portal is written in Go, **golang >= 1.16** must be installed prior to building. +If you want to cross compile ARM binaries from AMD64 systems, install *arm-linux-gnueabi-gcc* (armv7) or *aarch64-linux-gnu-gcc* (arm64). ``` -make build-cross-plat +# for 64 bit OS +make build-arm64 + +# for 32 bit OS +make build-arm ``` The compiled binary and all necessary assets will be located in the dist folder. diff --git a/README.md b/README.md index 0f354ff..704dddf 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,7 @@ services: ``` Please note that mapping ```/etc/wireguard``` to ```/etc/wireguard``` inside the docker, will erase your host's current configuration. If needed, please make sure to back up your files from ```/etc/wireguard```. -For a full list of configuration options take a look at the source file [internal/server/configuration.go](internal/server/configuration.go#L56). +For a full list of configuration options take a look at the source file [internal/server/configuration.go](internal/server/configuration.go#L58). ### Standalone For a standalone application, use the Makefile provided in the repository to build the application. Go version 1.16 or higher has to be installed to build WireGuard Portal. diff --git a/cmd/wg-portal/main.go b/cmd/wg-portal/main.go index 0535728..14b5841 100644 --- a/cmd/wg-portal/main.go +++ b/cmd/wg-portal/main.go @@ -2,7 +2,7 @@ package main import ( "context" - "io/ioutil" + "io" "os" "os/signal" "runtime" @@ -74,7 +74,7 @@ func setupLogger(logger *logrus.Logger) error { switch level { case "off": - logger.SetOutput(ioutil.Discard) + logger.SetOutput(io.Discard) case "info": logger.SetLevel(logrus.InfoLevel) case "debug": diff --git a/internal/authentication/providers/ldap/provider.go b/internal/authentication/providers/ldap/provider.go index dff2575..88a588d 100644 --- a/internal/authentication/providers/ldap/provider.go +++ b/internal/authentication/providers/ldap/provider.go @@ -2,7 +2,7 @@ package ldap import ( "crypto/tls" - "io/ioutil" + "os" "strings" "github.com/gin-gonic/gin" @@ -48,8 +48,8 @@ func (Provider) GetPriority() int { return 1 // LDAP password provider } -func (provider Provider) SetupRoutes(routes *gin.RouterGroup) { - // nothing todo here +func (provider Provider) SetupRoutes(_ *gin.RouterGroup) { + // nothing here } func (provider Provider) Login(ctx *authentication.AuthContext) (string, error) { @@ -97,8 +97,8 @@ func (provider Provider) Login(ctx *authentication.AuthContext) (string, error) return sr.Entries[0].GetAttributeValue(provider.config.EmailAttribute), nil } -func (provider Provider) Logout(context *authentication.AuthContext) error { - return nil // nothing todo here +func (provider Provider) Logout(_ *authentication.AuthContext) error { + return nil // nothing here } func (provider Provider) GetUserModel(ctx *authentication.AuthContext) (*authentication.User, error) { @@ -159,23 +159,23 @@ func (provider Provider) open() (*ldap.Conn, error) { if provider.config.LdapCertConn { - cert_plain, err := ioutil.ReadFile(provider.config.LdapTlsCert) + certPlain, err := os.ReadFile(provider.config.LdapTlsCert) if err != nil { return nil, errors.WithMessage(err, "failed to load the certificate") } - key, err := ioutil.ReadFile(provider.config.LdapTlsKey) + key, err := os.ReadFile(provider.config.LdapTlsKey) if err != nil { return nil, errors.WithMessage(err, "failed to load the key") } - cert_x509, err := tls.X509KeyPair(cert_plain, key) + certX509, err := tls.X509KeyPair(certPlain, key) if err != nil { return nil, errors.WithMessage(err, "failed X509") } - tlsConfig = &tls.Config{Certificates: []tls.Certificate{cert_x509}} + tlsConfig = &tls.Config{Certificates: []tls.Certificate{certX509}} } else { diff --git a/internal/authentication/providers/password/provider.go b/internal/authentication/providers/password/provider.go index e185ac1..7b28c18 100644 --- a/internal/authentication/providers/password/provider.go +++ b/internal/authentication/providers/password/provider.go @@ -50,8 +50,8 @@ func (Provider) GetPriority() int { return 0 // DB password provider = highest prio } -func (provider Provider) SetupRoutes(routes *gin.RouterGroup) { - // nothing todo here +func (provider Provider) SetupRoutes(_ *gin.RouterGroup) { + // nothing here } func (provider Provider) Login(ctx *authentication.AuthContext) (string, error) { @@ -79,8 +79,8 @@ func (provider Provider) Login(ctx *authentication.AuthContext) (string, error) return user.Email, nil } -func (provider Provider) Logout(context *authentication.AuthContext) error { - return nil // nothing todo here +func (provider Provider) Logout(_ *authentication.AuthContext) error { + return nil // nothing here } func (provider Provider) GetUserModel(ctx *authentication.AuthContext) (*authentication.User, error) { diff --git a/internal/common/email.go b/internal/common/email.go index c72f667..acd449b 100644 --- a/internal/common/email.go +++ b/internal/common/email.go @@ -3,7 +3,6 @@ package common import ( "crypto/tls" "io" - "io/ioutil" "time" "github.com/pkg/errors" @@ -96,7 +95,7 @@ func SendEmailWithAttachments(cfg MailConfig, sender, replyTo, subject, body, ht email.AddAlternative(mail.TextPlain, body) for _, attachment := range attachments { - attachmentData, err := ioutil.ReadAll(attachment.Data) + attachmentData, err := io.ReadAll(attachment.Data) if err != nil { return errors.Wrapf(err, "failed to read attachment data for %s", attachment.Name) } diff --git a/internal/ldap/ldap.go b/internal/ldap/ldap.go index d1d2c84..feec115 100644 --- a/internal/ldap/ldap.go +++ b/internal/ldap/ldap.go @@ -2,7 +2,7 @@ package ldap import ( "crypto/tls" - "io/ioutil" + "os" "github.com/go-ldap/ldap/v3" "github.com/pkg/errors" @@ -19,23 +19,23 @@ func Open(cfg *Config) (*ldap.Conn, error) { if cfg.LdapCertConn { - cert_plain, err := ioutil.ReadFile(cfg.LdapTlsCert) + certPlain, err := os.ReadFile(cfg.LdapTlsCert) if err != nil { return nil, errors.WithMessage(err, "failed to load the certificate") } - key, err := ioutil.ReadFile(cfg.LdapTlsKey) + key, err := os.ReadFile(cfg.LdapTlsKey) if err != nil { return nil, errors.WithMessage(err, "failed to load the key") } - cert_x509, err := tls.X509KeyPair(cert_plain, key) + certX509, err := tls.X509KeyPair(certPlain, key) if err != nil { return nil, errors.WithMessage(err, "failed X509") } - tlsConfig = &tls.Config{Certificates: []tls.Certificate{cert_x509}} + tlsConfig = &tls.Config{Certificates: []tls.Certificate{certX509}} } else { diff --git a/internal/server/server.go b/internal/server/server.go index 06cfeaa..5ccce9c 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -4,8 +4,8 @@ import ( "context" "encoding/gob" "html/template" + "io" "io/fs" - "io/ioutil" "math/rand" "net/http" "net/url" @@ -110,7 +110,7 @@ func (s *Server) Setup(ctx context.Context) error { // Setup http server gin.SetMode(gin.DebugMode) - gin.DefaultWriter = ioutil.Discard + gin.DefaultWriter = io.Discard s.server = gin.New() if logrus.GetLevel() == logrus.TraceLevel { s.server.Use(ginlogrus.Logger(logrus.StandardLogger())) diff --git a/internal/server/server_helper.go b/internal/server/server_helper.go index 6b75417..da00937 100644 --- a/internal/server/server_helper.go +++ b/internal/server/server_helper.go @@ -4,7 +4,7 @@ import ( "context" "crypto/md5" "fmt" - "io/ioutil" + "os" "path" "syscall" "time" @@ -224,7 +224,7 @@ func (s *Server) WriteWireGuardConfigFile(device string) error { return errors.WithMessage(err, "failed to get config file") } filePath := path.Join(s.config.WG.ConfigDirectoryPath, dev.DeviceName+".conf") - if err := ioutil.WriteFile(filePath, cfg, 0644); err != nil { + if err := os.WriteFile(filePath, cfg, 0644); err != nil { return errors.Wrap(err, "failed to write WireGuard config file") } return nil diff --git a/internal/users/user.go b/internal/users/user.go index 2a94fcf..7ae44df 100644 --- a/internal/users/user.go +++ b/internal/users/user.go @@ -11,7 +11,6 @@ type UserSource string const ( UserSourceLdap UserSource = "ldap" // LDAP / ActiveDirectory UserSourceDatabase UserSource = "db" // sqlite / mysql database - UserSourceOIDC UserSource = "oidc" // open id connect, TODO: implement ) type PrivateString string