Move to mirrorred images for Drone and Dockerfile, linting fixes.
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
899c406f09
commit
9e5f98a413
12
.drone.yml
12
.drone.yml
@ -5,7 +5,7 @@ name: build
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: lint
|
- name: lint
|
||||||
image: golangci/golangci-lint:v1.43.0
|
image: code.pztrn.name/containers/mirror/golangci/golangci-lint:v1.46.2
|
||||||
environment:
|
environment:
|
||||||
CGO_ENABLED: 0
|
CGO_ENABLED: 0
|
||||||
commands:
|
commands:
|
||||||
@ -19,15 +19,15 @@ steps:
|
|||||||
- go test ./...
|
- go test ./...
|
||||||
|
|
||||||
- name: docker
|
- name: docker
|
||||||
image: plugins/docker
|
image: code.pztrn.name/containers/mirror/plugins/docker:20.13.0
|
||||||
when:
|
when:
|
||||||
branch: ["master"]
|
branch: ["master"]
|
||||||
settings:
|
settings:
|
||||||
username:
|
registry: code.pztrn.name
|
||||||
from_secret: dockerhub_user
|
username: drone
|
||||||
password:
|
password:
|
||||||
from_secret: dockerhub_password
|
from_secret: drone_secret
|
||||||
repo: pztrn/giredore
|
repo: code.pztrn.name/apps/giredore
|
||||||
auto_tag: true
|
auto_tag: true
|
||||||
depends_on:
|
depends_on:
|
||||||
- lint
|
- lint
|
||||||
|
@ -12,6 +12,8 @@ linters:
|
|||||||
- funlen
|
- funlen
|
||||||
# Magic numbers might be everywhere. Disabled for now.
|
# Magic numbers might be everywhere. Disabled for now.
|
||||||
- gomnd
|
- gomnd
|
||||||
|
# Deprecated.
|
||||||
|
- exhaustivestruct
|
||||||
linters-settings:
|
linters-settings:
|
||||||
lll:
|
lll:
|
||||||
line-length: 420
|
line-length: 420
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
FROM golang:1.17.3-alpine AS build
|
FROM code.pztrn.name/containers/mirror/golang:1.18.3-alpine AS build
|
||||||
|
|
||||||
WORKDIR /go/src/sources.dev.pztrn.name/pztrn/giredore
|
WORKDIR /go/src/sources.dev.pztrn.name/pztrn/giredore
|
||||||
COPY . .
|
COPY . .
|
||||||
@ -6,7 +6,7 @@ COPY . .
|
|||||||
ENV CGO_ENABLED=0
|
ENV CGO_ENABLED=0
|
||||||
RUN cd /go/src/sources.dev.pztrn.name/pztrn/giredore/cmd/giredored && go build -tags netgo -ldflags '-w -extldflags "-static"' && cd ../giredorectl && go build -tags netgo -ldflags '-w -extldflags "-static"'
|
RUN cd /go/src/sources.dev.pztrn.name/pztrn/giredore/cmd/giredored && go build -tags netgo -ldflags '-w -extldflags "-static"' && cd ../giredorectl && go build -tags netgo -ldflags '-w -extldflags "-static"'
|
||||||
|
|
||||||
FROM alpine:latest
|
FROM code.pztrn.name/containers/mirror/alpine:3.16.0
|
||||||
LABEL maintainer "Stanislav N. <pztrn@pztrn.name>"
|
LABEL maintainer "Stanislav N. <pztrn@pztrn.name>"
|
||||||
|
|
||||||
COPY --from=build /go/src/sources.dev.pztrn.name/pztrn/giredore/cmd/giredored/giredored /usr/local/bin/giredored
|
COPY --from=build /go/src/sources.dev.pztrn.name/pztrn/giredore/cmd/giredored/giredored /usr/local/bin/giredored
|
||||||
|
@ -27,7 +27,7 @@ func DeletePackage(args []string, options map[string]string) {
|
|||||||
func GetPackages(args []string, options map[string]string) {
|
func GetPackages(args []string, options map[string]string) {
|
||||||
pkgs := strings.Split(args[0], ",")
|
pkgs := strings.Split(args[0], ",")
|
||||||
|
|
||||||
// nolint:exhaustivestruct
|
// nolint:exhaustruct
|
||||||
req := &structs.PackageGetRequest{}
|
req := &structs.PackageGetRequest{}
|
||||||
if pkgs[0] == "all" {
|
if pkgs[0] == "all" {
|
||||||
req.All = true
|
req.All = true
|
||||||
|
@ -15,11 +15,11 @@ func configurationGET(ec echo.Context) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func configurationAllowedIPsSET(ectx echo.Context) error {
|
func configurationAllowedIPsSET(ectx echo.Context) error {
|
||||||
// nolint:exhaustivestruct
|
// nolint:exhaustruct
|
||||||
req := &structs.AllowedIPsSetRequest{}
|
req := &structs.AllowedIPsSetRequest{}
|
||||||
if err := ectx.Bind(req); err != nil {
|
if err := ectx.Bind(req); err != nil {
|
||||||
log.Error().Err(err).Msg("Failed to parse allowed IPs set request")
|
log.Error().Err(err).Msg("Failed to parse allowed IPs set request")
|
||||||
// nolint:exhaustivestruct,wrapcheck
|
// nolint:exhaustruct,wrapcheck
|
||||||
return ectx.JSON(http.StatusBadRequest, &structs.Reply{Status: structs.StatusFailure, Errors: []structs.Error{structs.ErrParsingAllowedIPsSetRequest}})
|
return ectx.JSON(http.StatusBadRequest, &structs.Reply{Status: structs.StatusFailure, Errors: []structs.Error{structs.ErrParsingAllowedIPsSetRequest}})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -27,6 +27,6 @@ func configurationAllowedIPsSET(ectx echo.Context) error {
|
|||||||
|
|
||||||
configuration.Cfg.SetAllowedIPs(req.AllowedIPs)
|
configuration.Cfg.SetAllowedIPs(req.AllowedIPs)
|
||||||
|
|
||||||
// nolint:exhaustivestruct,wrapcheck
|
// nolint:exhaustruct,wrapcheck
|
||||||
return ectx.JSON(http.StatusOK, &structs.Reply{Status: structs.StatusSuccess})
|
return ectx.JSON(http.StatusOK, &structs.Reply{Status: structs.StatusSuccess})
|
||||||
}
|
}
|
||||||
|
@ -20,18 +20,18 @@ func throwGoImports(ectx echo.Context) error {
|
|||||||
if errs != nil {
|
if errs != nil {
|
||||||
log.Error().Str("package", packageNameRaw).Msgf("Failed to get package information: %+v", errs)
|
log.Error().Str("package", packageNameRaw).Msgf("Failed to get package information: %+v", errs)
|
||||||
|
|
||||||
// nolint:exhaustivestruct,wrapcheck
|
// nolint:exhaustruct,wrapcheck
|
||||||
return ectx.JSON(http.StatusBadRequest, &structs.Reply{Status: structs.StatusFailure, Errors: errs})
|
return ectx.JSON(http.StatusBadRequest, &structs.Reply{Status: structs.StatusFailure, Errors: errs})
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(pkgs) == 0 {
|
if len(pkgs) == 0 {
|
||||||
// nolint:exhaustivestruct,wrapcheck
|
// nolint:exhaustruct,wrapcheck
|
||||||
return ectx.JSON(http.StatusBadRequest, &structs.Reply{Status: structs.StatusFailure, Errors: []structs.Error{structs.ErrNoPackagesFound}})
|
return ectx.JSON(http.StatusBadRequest, &structs.Reply{Status: structs.StatusFailure, Errors: []structs.Error{structs.ErrNoPackagesFound}})
|
||||||
}
|
}
|
||||||
|
|
||||||
pkg, found := pkgs[packageNameRaw]
|
pkg, found := pkgs[packageNameRaw]
|
||||||
if !found {
|
if !found {
|
||||||
// nolint:exhaustivestruct,wrapcheck
|
// nolint:exhaustruct,wrapcheck
|
||||||
return ectx.JSON(http.StatusBadRequest, &structs.Reply{Status: structs.StatusFailure, Errors: []structs.Error{structs.ErrNoPackagesFound}})
|
return ectx.JSON(http.StatusBadRequest, &structs.Reply{Status: structs.StatusFailure, Errors: []structs.Error{structs.ErrNoPackagesFound}})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,12 +11,12 @@ import (
|
|||||||
|
|
||||||
// This function responsible for getting packages configuration.
|
// This function responsible for getting packages configuration.
|
||||||
func packagesGET(ectx echo.Context) error {
|
func packagesGET(ectx echo.Context) error {
|
||||||
// nolint:exhaustivestruct
|
// nolint:exhaustruct
|
||||||
req := &structs.PackageGetRequest{}
|
req := &structs.PackageGetRequest{}
|
||||||
if err := ectx.Bind(req); err != nil {
|
if err := ectx.Bind(req); err != nil {
|
||||||
log.Error().Err(err).Msg("Failed to parse package get request")
|
log.Error().Err(err).Msg("Failed to parse package get request")
|
||||||
|
|
||||||
// nolint:exhaustivestruct,wrapcheck
|
// nolint:exhaustruct,wrapcheck
|
||||||
return ectx.JSON(http.StatusBadRequest, &structs.Reply{Status: structs.StatusFailure, Errors: []structs.Error{structs.ErrParsingPackagesGetRequest}})
|
return ectx.JSON(http.StatusBadRequest, &structs.Reply{Status: structs.StatusFailure, Errors: []structs.Error{structs.ErrParsingPackagesGetRequest}})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -37,18 +37,18 @@ func packagesGET(ectx echo.Context) error {
|
|||||||
return ectx.JSON(http.StatusBadRequest, &structs.Reply{Status: structs.StatusFailure, Errors: errors, Data: pkgs})
|
return ectx.JSON(http.StatusBadRequest, &structs.Reply{Status: structs.StatusFailure, Errors: errors, Data: pkgs})
|
||||||
}
|
}
|
||||||
|
|
||||||
// nolint:exhaustivestruct,wrapcheck
|
// nolint:exhaustruct,wrapcheck
|
||||||
return ectx.JSON(http.StatusOK, &structs.Reply{Status: structs.StatusSuccess, Data: pkgs})
|
return ectx.JSON(http.StatusOK, &structs.Reply{Status: structs.StatusSuccess, Data: pkgs})
|
||||||
}
|
}
|
||||||
|
|
||||||
// This function responsible for deleting package.
|
// This function responsible for deleting package.
|
||||||
func packagesDELETE(ectx echo.Context) error {
|
func packagesDELETE(ectx echo.Context) error {
|
||||||
// nolint:exhaustivestruct
|
// nolint:exhaustruct
|
||||||
req := &structs.PackageDeleteRequest{}
|
req := &structs.PackageDeleteRequest{}
|
||||||
if err := ectx.Bind(req); err != nil {
|
if err := ectx.Bind(req); err != nil {
|
||||||
log.Error().Err(err).Msg("Failed to parse package delete request")
|
log.Error().Err(err).Msg("Failed to parse package delete request")
|
||||||
|
|
||||||
// nolint:exhaustivestruct,wrapcheck
|
// nolint:exhaustruct,wrapcheck
|
||||||
return ectx.JSON(http.StatusBadRequest, &structs.Reply{Status: structs.StatusFailure, Errors: []structs.Error{structs.ErrParsingDeleteRequest}})
|
return ectx.JSON(http.StatusBadRequest, &structs.Reply{Status: structs.StatusFailure, Errors: []structs.Error{structs.ErrParsingDeleteRequest}})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -57,17 +57,17 @@ func packagesDELETE(ectx echo.Context) error {
|
|||||||
errs := configuration.Cfg.DeletePackage(req)
|
errs := configuration.Cfg.DeletePackage(req)
|
||||||
|
|
||||||
if len(errs) > 0 {
|
if len(errs) > 0 {
|
||||||
// nolint:exhaustivestruct,wrapcheck
|
// nolint:exhaustruct,wrapcheck
|
||||||
return ectx.JSON(http.StatusBadRequest, &structs.Reply{Status: structs.StatusFailure, Errors: errs})
|
return ectx.JSON(http.StatusBadRequest, &structs.Reply{Status: structs.StatusFailure, Errors: errs})
|
||||||
}
|
}
|
||||||
|
|
||||||
// nolint:exhaustivestruct,wrapcheck
|
// nolint:exhaustruct,wrapcheck
|
||||||
return ectx.JSON(http.StatusOK, &structs.Reply{Status: structs.StatusSuccess})
|
return ectx.JSON(http.StatusOK, &structs.Reply{Status: structs.StatusSuccess})
|
||||||
}
|
}
|
||||||
|
|
||||||
// This function responsible for setting or updating packages.
|
// This function responsible for setting or updating packages.
|
||||||
func packagesSET(ectx echo.Context) error {
|
func packagesSET(ectx echo.Context) error {
|
||||||
// nolint:exhaustivestruct
|
// nolint:exhaustruct
|
||||||
req := &structs.Package{}
|
req := &structs.Package{}
|
||||||
if err := ectx.Bind(req); err != nil {
|
if err := ectx.Bind(req); err != nil {
|
||||||
log.Error().Err(err).Msg("Failed to parse package data")
|
log.Error().Err(err).Msg("Failed to parse package data")
|
||||||
@ -80,12 +80,12 @@ func packagesSET(ectx echo.Context) error {
|
|||||||
|
|
||||||
// Validate passed package data.
|
// Validate passed package data.
|
||||||
if !strings.HasPrefix(req.OriginalPath, "/") {
|
if !strings.HasPrefix(req.OriginalPath, "/") {
|
||||||
// nolint:exhaustivestruct,wrapcheck
|
// nolint:exhaustruct,wrapcheck
|
||||||
return ectx.JSON(http.StatusBadRequest, &structs.Reply{Status: structs.StatusFailure, Errors: []structs.Error{structs.ErrPackageOrigPathShouldStartWithSlash}})
|
return ectx.JSON(http.StatusBadRequest, &structs.Reply{Status: structs.StatusFailure, Errors: []structs.Error{structs.ErrPackageOrigPathShouldStartWithSlash}})
|
||||||
}
|
}
|
||||||
|
|
||||||
configuration.Cfg.AddOrUpdatePackage(req)
|
configuration.Cfg.AddOrUpdatePackage(req)
|
||||||
|
|
||||||
// nolint:exhaustivestruct,wrapcheck
|
// nolint:exhaustruct,wrapcheck
|
||||||
return ectx.JSON(http.StatusOK, &structs.Reply{Status: structs.StatusSuccess})
|
return ectx.JSON(http.StatusOK, &structs.Reply{Status: structs.StatusSuccess})
|
||||||
}
|
}
|
||||||
|
@ -16,11 +16,11 @@ func Initialize() {
|
|||||||
log = logger.Logger.With().Str("type", "internal").Str("package", "configuration").Logger()
|
log = logger.Logger.With().Str("type", "internal").Str("package", "configuration").Logger()
|
||||||
log.Info().Msg("Initializing...")
|
log.Info().Msg("Initializing...")
|
||||||
|
|
||||||
// nolint:exhaustivestruct
|
// nolint:exhaustruct
|
||||||
envCfg = &envConfig{}
|
envCfg = &envConfig{}
|
||||||
envCfg.Initialize()
|
envCfg.Initialize()
|
||||||
|
|
||||||
// nolint:exhaustivestruct
|
// nolint:exhaustruct
|
||||||
Cfg = &fileConfig{}
|
Cfg = &fileConfig{}
|
||||||
Cfg.Initialize()
|
Cfg.Initialize()
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ func checkAllowedIPs() echo.MiddlewareFunc {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error().Err(err).Str("subnet", ipToParse).Msg("Failed to parse CIDR. /_api/ endpoint won't be accessible, this should be fixed manually in configuration file!")
|
log.Error().Err(err).Str("subnet", ipToParse).Msg("Failed to parse CIDR. /_api/ endpoint won't be accessible, this should be fixed manually in configuration file!")
|
||||||
|
|
||||||
// nolint:exhaustivestruct,wrapcheck
|
// nolint:exhaustruct,wrapcheck
|
||||||
return ectx.JSON(http.StatusInternalServerError, &structs.Reply{Status: structs.StatusFailure, Errors: []structs.Error{structs.ErrInvalidAllowedIPDefined}})
|
return ectx.JSON(http.StatusInternalServerError, &structs.Reply{Status: structs.StatusFailure, Errors: []structs.Error{structs.ErrInvalidAllowedIPDefined}})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,7 +60,7 @@ func checkAllowedIPs() echo.MiddlewareFunc {
|
|||||||
return next(ectx)
|
return next(ectx)
|
||||||
}
|
}
|
||||||
|
|
||||||
// nolint:exhaustivestruct,wrapcheck
|
// nolint:exhaustruct,wrapcheck
|
||||||
return ectx.JSON(http.StatusBadRequest, &structs.Reply{Status: structs.StatusFailure, Errors: []structs.Error{structs.ErrIPAddressNotAllowed}})
|
return ectx.JSON(http.StatusBadRequest, &structs.Reply{Status: structs.StatusFailure, Errors: []structs.Error{structs.ErrIPAddressNotAllowed}})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -62,7 +62,7 @@ func Start() {
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
// Check that HTTP server was started.
|
// Check that HTTP server was started.
|
||||||
// nolint:exhaustivestruct
|
// nolint:exhaustruct
|
||||||
httpc := &http.Client{Timeout: time.Second * 1}
|
httpc := &http.Client{Timeout: time.Second * 1}
|
||||||
checks := 0
|
checks := 0
|
||||||
|
|
||||||
|
@ -44,32 +44,32 @@ func Initialize() {
|
|||||||
zerolog.SetGlobalLevel(zerolog.InfoLevel)
|
zerolog.SetGlobalLevel(zerolog.InfoLevel)
|
||||||
}
|
}
|
||||||
|
|
||||||
// nolint:exhaustivestruct
|
// nolint:exhaustruct
|
||||||
output := zerolog.ConsoleWriter{Out: os.Stdout, NoColor: false, TimeFormat: time.RFC3339}
|
output := zerolog.ConsoleWriter{Out: os.Stdout, NoColor: false, TimeFormat: time.RFC3339}
|
||||||
output.FormatLevel = func(lvlRaw interface{}) string {
|
output.FormatLevel = func(lvlRaw interface{}) string {
|
||||||
var v string
|
var formattedLvl string
|
||||||
|
|
||||||
if lvl, ok := lvlRaw.(string); ok {
|
if lvl, ok := lvlRaw.(string); ok {
|
||||||
lvl = strings.ToUpper(lvl)
|
lvl = strings.ToUpper(lvl)
|
||||||
switch lvl {
|
switch lvl {
|
||||||
case "DEBUG":
|
case "DEBUG":
|
||||||
v = fmt.Sprintf("\x1b[30m%-5s\x1b[0m", lvl)
|
formattedLvl = fmt.Sprintf("\x1b[30m%-5s\x1b[0m", lvl)
|
||||||
case "ERROR":
|
case "ERROR":
|
||||||
v = fmt.Sprintf("\x1b[31m%-5s\x1b[0m", lvl)
|
formattedLvl = fmt.Sprintf("\x1b[31m%-5s\x1b[0m", lvl)
|
||||||
case "FATAL":
|
case "FATAL":
|
||||||
v = fmt.Sprintf("\x1b[35m%-5s\x1b[0m", lvl)
|
formattedLvl = fmt.Sprintf("\x1b[35m%-5s\x1b[0m", lvl)
|
||||||
case "INFO":
|
case "INFO":
|
||||||
v = fmt.Sprintf("\x1b[32m%-5s\x1b[0m", lvl)
|
formattedLvl = fmt.Sprintf("\x1b[32m%-5s\x1b[0m", lvl)
|
||||||
case "PANIC":
|
case "PANIC":
|
||||||
v = fmt.Sprintf("\x1b[36m%-5s\x1b[0m", lvl)
|
formattedLvl = fmt.Sprintf("\x1b[36m%-5s\x1b[0m", lvl)
|
||||||
case "WARN":
|
case "WARN":
|
||||||
v = fmt.Sprintf("\x1b[33m%-5s\x1b[0m", lvl)
|
formattedLvl = fmt.Sprintf("\x1b[33m%-5s\x1b[0m", lvl)
|
||||||
default:
|
default:
|
||||||
v = lvl
|
formattedLvl = lvl
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return fmt.Sprintf("| %s |", v)
|
return fmt.Sprintf("| %s |", formattedLvl)
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger = zerolog.New(output).With().Timestamp().Logger()
|
Logger = zerolog.New(output).With().Timestamp().Logger()
|
||||||
|
@ -30,6 +30,7 @@ func execRequest(method string, url string, data interface{}) ([]byte, error) {
|
|||||||
|
|
||||||
var dataToSend []byte
|
var dataToSend []byte
|
||||||
if data != nil {
|
if data != nil {
|
||||||
|
// nolint:errchkjson
|
||||||
dataToSend, _ = json.Marshal(data)
|
dataToSend, _ = json.Marshal(data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@ import (
|
|||||||
|
|
||||||
// nolint:exhaustivestruct
|
// nolint:exhaustivestruct
|
||||||
func getHTTPClient() *http.Client {
|
func getHTTPClient() *http.Client {
|
||||||
|
// nolint:exhaustruct
|
||||||
client := &http.Client{
|
client := &http.Client{
|
||||||
Transport: &http.Transport{
|
Transport: &http.Transport{
|
||||||
ExpectContinueTimeout: time.Second * 5,
|
ExpectContinueTimeout: time.Second * 5,
|
||||||
|
Loading…
Reference in New Issue
Block a user