GithubHelp home page GithubHelp logo

i-love-flamingo / flamingo Goto Github PK

View Code? Open in Web Editor NEW
428.0 428.0 47.0 3.79 MB

Flamingo Framework and Core Library. Flamingo is a go based framework to build pluggable applications. Focus is on clean architecture, maintainability and operation readiness.

Home Page: http://www.flamingo.me

License: MIT License

Go 99.56% Makefile 0.01% CUE 0.42%
application-framework dependency-injection framework go golang golang-library hacktoberfest modularization web-framework webframework

flamingo's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flamingo's Issues

Prefixrouter accepts repeated prefixes

The prefixrouter accepts requests to /prefix/prefix/ as / for /prefix

For full prefix this seems to be fine (inkl. host)

by @Ompluscator

the reason why flamingo doesn't recognize here /prefix/prefix is probably because BASE_PATH is now full domain "https://example.com/prefix", not just "/prefix"
^^ maybe Mr @bastian.ike can check this issue with flamingo core router

core/locale: Data race in translation_service

We just witnessed a race condition in the translation service. We should add some sort of mutex to avoid that.

==================
==================
WARNING: DATA RACE
Read at 0x00c0005215c9 by goroutine 132:
  flamingo.me/flamingo/v3/core/locale/infrastructure.(*TranslationService).loadFiles()
      /builds/shared/flamingo/flamingo-om3/.go/pkg/mod/flamingo.me/flamingo/[email protected]/core/locale/infrastructure/translation_service.go:127 +0x64
  flamingo.me/flamingo/v3/core/locale/infrastructure.(*TranslationService).initAndLoad()
      /builds/shared/flamingo/flamingo-om3/.go/pkg/mod/flamingo.me/flamingo/[email protected]/core/locale/infrastructure/translation_service.go:154 +0x84
  flamingo.me/flamingo/v3/core/locale/infrastructure.(*TranslationService).Translate()
      /builds/shared/flamingo/flamingo-om3/.go/pkg/mod/flamingo.me/flamingo/[email protected]/core/locale/infrastructure/translation_service.go:70 +0x4f
  go.aoe.com/flamingo-om3/v3/om3flight/interfaces/controller.(*FlightAPIController).JSONError()
      /builds/shared/flamingo/flamingo-om3/om3flight/interfaces/controller/flightapicontroller.go:222 +0x401
  go.aoe.com/flamingo-om3/v3/om3flight/interfaces/controller.(*FlightAPIController).SearchFlightsAction()
      /builds/shared/flamingo/flamingo-om3/om3flight/interfaces/controller/flightapicontroller.go:98 +0x6c7
  go.aoe.com/flamingo-om3/v3/om3flight/interfaces/controller.(*FlightAPIController).SearchFlightsAction-fm()
      /builds/shared/flamingo/flamingo-om3/om3flight/interfaces/controller/flightapicontroller.go:81 +0x74
  flamingo.me/flamingo/v3/framework/web.(*handler).ServeHTTP.func3()
      /builds/shared/flamingo/flamingo-om3/.go/pkg/mod/flamingo.me/flamingo/[email protected]/framework/web/handler.go:163 +0x481
  flamingo.me/flamingo/v3/framework/web.(*FilterChain).Next()
      /builds/shared/flamingo/flamingo-om3/.go/pkg/mod/flamingo.me/flamingo/[email protected]/framework/web/filter.go:58 +0x24d
  flamingo.me/flamingo/v3/framework/web/filter.(*MetricsFilter).Filter()
      /builds/shared/flamingo/flamingo-om3/.go/pkg/mod/flamingo.me/flamingo/[email protected]/framework/web/filter/request_metrics_filter.go:84 +0x7a
  flamingo.me/flamingo/v3/framework/web.(*FilterChain).Next()
      /builds/shared/flamingo/flamingo-om3/.go/pkg/mod/flamingo.me/flamingo/[email protected]/framework/web/filter.go:63 +0x1a2
  flamingo.me/flamingo/v3/framework/web.(*handler).ServeHTTP()
      /builds/shared/flamingo/flamingo-om3/.go/pkg/mod/flamingo.me/flamingo/[email protected]/framework/web/handler.go:174 +0xc12
  net/http.serverHandler.ServeHTTP()
      /usr/local/go/src/net/http/server.go:2887 +0xca
  net/http.(*conn).serve()
      /usr/local/go/src/net/http/server.go:1952 +0x87d
Previous write at 0x00c0005215c9 by goroutine 36:
  flamingo.me/flamingo/v3/core/locale/infrastructure.(*TranslationService).loadFiles()
      /builds/shared/flamingo/flamingo-om3/.go/pkg/mod/flamingo.me/flamingo/[email protected]/core/locale/infrastructure/translation_service.go:147 +0x199
  flamingo.me/flamingo/v3/core/locale/infrastructure.(*TranslationService).initAndLoad()
      /builds/shared/flamingo/flamingo-om3/.go/pkg/mod/flamingo.me/flamingo/[email protected]/core/locale/infrastructure/translation_service.go:154 +0x84
  flamingo.me/flamingo/v3/core/locale/infrastructure.(*TranslationService).Translate()
      /builds/shared/flamingo/flamingo-om3/.go/pkg/mod/flamingo.me/flamingo/[email protected]/core/locale/infrastructure/translation_service.go:70 +0x4f
  go.aoe.com/flamingo-om3/v3/om3flight/interfaces/controller.(*FlightAPIController).JSONError()
      /builds/shared/flamingo/flamingo-om3/om3flight/interfaces/controller/flightapicontroller.go:222 +0x401
  go.aoe.com/flamingo-om3/v3/om3flight/interfaces/controller.(*FlightAPIController).DeleteSessionFlightAction()
      /builds/shared/flamingo/flamingo-om3/om3flight/interfaces/controller/flightapicontroller.go:134 +0x27c
  go.aoe.com/flamingo-om3/v3/om3flight/interfaces/controller.(*FlightAPIController).DeleteSessionFlightAction-fm()
      /builds/shared/flamingo/flamingo-om3/om3flight/interfaces/controller/flightapicontroller.go:131 +0x74
  flamingo.me/flamingo/v3/framework/web.(*handler).ServeHTTP.func3()
      /builds/shared/flamingo/flamingo-om3/.go/pkg/mod/flamingo.me/flamingo/[email protected]/framework/web/handler.go:163 +0x481
  flamingo.me/flamingo/v3/framework/web.(*FilterChain).Next()
      /builds/shared/flamingo/flamingo-om3/.go/pkg/mod/flamingo.me/flamingo/[email protected]/framework/web/filter.go:58 +0x24d
  flamingo.me/flamingo/v3/framework/web/filter.(*MetricsFilter).Filter()
      /builds/shared/flamingo/flamingo-om3/.go/pkg/mod/flamingo.me/flamingo/[email protected]/framework/web/filter/request_metrics_filter.go:84 +0x7a
  flamingo.me/flamingo/v3/framework/web.(*FilterChain).Next()
      /builds/shared/flamingo/flamingo-om3/.go/pkg/mod/flamingo.me/flamingo/[email protected]/framework/web/filter.go:63 +0x1a2
  flamingo.me/flamingo/v3/framework/web.(*handler).ServeHTTP()
      /builds/shared/flamingo/flamingo-om3/.go/pkg/mod/flamingo.me/flamingo/[email protected]/framework/web/handler.go:174 +0xc12
  net/http.serverHandler.ServeHTTP()
      /usr/local/go/src/net/http/server.go:2887 +0xca
  net/http.(*conn).serve()
      /usr/local/go/src/net/http/server.go:1952 +0x87d
Goroutine 132 (running) created at:
  net/http.(*Server).Serve()
      /usr/local/go/src/net/http/server.go:3013 +0x644
  flamingo.me/flamingo-commerce/v3/test/integrationtest.(*testModule).startServer.func1()
      /builds/shared/flamingo/flamingo-om3/.go/pkg/mod/flamingo.me/flamingo-commerce/[email protected]/test/integrationtest/helper.go:98 +0x6a
Goroutine 36 (running) created at:
  net/http.(*Server).Serve()
      /usr/local/go/src/net/http/server.go:3013 +0x644
  flamingo.me/flamingo-commerce/v3/test/integrationtest.(*testModule).startServer.func1()
      /builds/shared/flamingo/flamingo-om3/.go/pkg/mod/flamingo.me/flamingo-commerce/[email protected]/test/integrationtest/helper.go:98 +0x6a
==================

Configuring Flamingo for HTTPS

How can I configure Flamingo to serve over HTTPS? I've looked all over in the docs, but found no mentions of how to do this. Any help would be greatly appreciated.

Sane web.Result defaults

Works: new(web.Responder).Data(data)
Doesn't work: &web.DataResponse{Data: data}

Both should work, so for basic usage it's possible to use functions for actions with creating bigger modules

web.Responder error handling for nil errors

// ServerErrorWithCodeAndTemplate error response with template and http status code
func (r *Responder) ServerErrorWithCodeAndTemplate(err error, tpl string, status uint) *ServerErrorResponse {
	errstr := err.Error()

err should be checked for nil.

web: Add context to error logs

Hello friends,

while analysing an issue with our SSO by investigating our application logs, I noticed
that the function called here:
https://github.com/i-love-flamingo/flamingo/blob/master/core/auth/oauth/oidc.go#L310

Does not consider the request context when logging the error
https://github.com/i-love-flamingo/flamingo/blob/master/framework/web/result.go#L430

This would require the function to be able to receive a context and log the error using WithContext
The adjustment would help with log analysis.
As this function is used across several classes, we could also create a new function and slowly migrate.

Decouple healthcheck from other modules

At the moment, the healthcheck module has a hard dependency on the session backend, but does not declare a dependency to the session module.

A similar situation is given for the auth check, but here the default setting is at least deactivated.

The healthcheck module should be usable in projects without sessions or auth, too.

I sugesst to move specific checks to their corresponding modules.

Adapt to go 1.16

Go 1.16 brings a lot of nice enhancements, so we should evaluate if we can adapt them.

NotifyContext

https://tip.golang.org/pkg/os/signal/#NotifyContext

signals := make(chan os.Signal, 1)
shutdownComplete := make(chan struct{}, 1)
signal.Notify(signals, syscall.SIGINT, syscall.SIGTERM)

embed

https://tip.golang.org/pkg/embed/
(not used yet, but might be useful to integrate something?)

metrics

https://tip.golang.org/pkg/runtime/metrics/
We should investigate how this extends/replaces opencensus/opentelemetry #179

Flamingo-Commerce priceFormatService should move to locale package

flamingo-commerce got new feature for its "commercePriceFormat" to configure price format "default" and per "currency"
This should move to flamingo and flamingo-commerce should reuse the flamingo service.

Currently flamingo-commerce reads from "locale.accounting.*" which is not nice anyway

Memory stats are not updated

Hello Flamingo team,

due to an issue in https://github.com/census-instrumentation/opencensus-go, the memory stats do not seem to be updated for opencensus.
In line

if err := runmetrics.Enable(runmetrics.RunMetricOptions{
EnableCPU: true,
EnableMemory: true,
}); err != nil {
the RunMetricOptions are instantiated without setting UseDerivedCumulative.
Consequently, in line https://github.com/census-instrumentation/opencensus-go/blob/052120675fac2ace91dc2c01e5f63c3e6ec62f04/plugin/runmetrics/producer.go#L133 only producer.deprecatedMemStats is instantiated and not producer.memStats.
But, the latter seems to be required to read current memory metrics => see https://github.com/census-instrumentation/opencensus-go/blob/052120675fac2ace91dc2c01e5f63c3e6ec62f04/plugin/runmetrics/producer.go#L169
A possible workaround might be, to set UseDerivedCumulative in framework/opencensus/module.go

Easy start with templates and assets

Document the minimum requirements such as:

package main

import (
	"flamingo.me/dingo"
	"flamingo.me/flamingo/v3"
	"flamingo.me/flamingo/v3/core/gotemplate"
)

func main() {
	flamingo.App([]dingo.Module{
		new(gotemplate.Module),
	})
}
- name: index
  path: /
  controller: flamingo.render(tpl="index")
- name: static
  path: /asset/*name
  controller: flamingo.static.file

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Edited/Blocked

These updates have been manually edited so Renovate will no longer make changes. To discard all commits and start over, click on a checkbox.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

docker-compose
core/auth/example/docker-compose.yml
  • quay.io/dexidp/dex v2.28.1
  • quay.io/dexidp/dex v2.28.1
  • quay.io/keycloak/keycloak 24.0.3
  • quay.io/keycloak/keycloak 24.0.3
core/oauth/example/docker-compose.yml
  • quay.io/dexidp/dex v2.28.1
github-actions
.github/workflows/daily.yml
  • actions/checkout v4
  • actions/setup-go v5
.github/workflows/golangci-lint.yml
  • actions/checkout v4
  • actions/setup-go v5
  • golangci/golangci-lint-action v5
.github/workflows/main.yml
  • actions/checkout v4
  • actions/setup-go v5
  • actions/checkout v4
  • actions/setup-go v5
  • irongut/CodeCoverageSummary v1.3.0
  • marocchino/sticky-pull-request-comment v2
  • actions/checkout v4
  • actions/setup-go v5
.github/workflows/semanticore.yml
  • actions/checkout v4
  • actions/setup-go v5
gomod
go.mod
  • go 1.21
  • contrib.go.opencensus.io/exporter/jaeger v0.2.1
  • contrib.go.opencensus.io/exporter/prometheus v0.4.2
  • contrib.go.opencensus.io/exporter/zipkin v0.1.2
  • cuelang.org/go v0.0.15
  • flamingo.me/dingo v0.2.10
  • github.com/coreos/go-oidc/v3 v3.10.0
  • github.com/ghodss/yaml v1.0.0
  • github.com/gofrs/uuid v4.4.0+incompatible
  • github.com/golang-jwt/jwt/v5 v5.2.1
  • github.com/google/go-cmp v0.6.0
  • github.com/gorilla/securecookie v1.1.2
  • github.com/gorilla/sessions v1.2.2
  • github.com/hashicorp/golang-lru/v2 v2.0.7
  • github.com/leekchan/accounting v0.3.1
  • github.com/nicksnyder/go-i18n v0.0.0-20180814031359-04f547cc50da@04f547cc50da
  • github.com/openzipkin/zipkin-go v0.4.2
  • github.com/pact-foundation/pact-go v0.0.13
  • github.com/rbcervilla/redisstore/v9 v9.0.0
  • github.com/redis/go-redis/v9 v9.5.1
  • github.com/spf13/cobra v1.8.0
  • github.com/spf13/pflag v1.0.5
  • github.com/stretchr/testify v1.9.0
  • github.com/zemirco/memorystore v0.0.0-20160308183530-ecd57e5134f6@ecd57e5134f6
  • go.opencensus.io v0.24.0
  • go.uber.org/automaxprocs v1.5.3
  • go.uber.org/zap v1.27.0
  • golang.org/x/oauth2 v0.19.0
  • golang.org/x/sync v0.7.0
regex
core/security/application/doc.go
  • github.com/vektra/mockery/v2 v2.42.3
core/security/application/role/doc.go
  • github.com/vektra/mockery/v2 v2.42.3
core/security/application/voter/doc.go
  • github.com/vektra/mockery/v2 v2.42.3
core/security/domain/doc.go
  • github.com/vektra/mockery/v2 v2.42.3
core/security/interface/middleware/doc.go
  • github.com/vektra/mockery/v2 v2.42.3

  • Check this box to trigger a request for Renovate to run again on this repository

Config errors are not explained well

e.g.:

DEBUG=1 CONTEXT=dev:testproducts go run main.go serve
panic: error converting YAML to JSON: yaml: line 131: did not find expected key

goroutine 1 [running]:
flamingo.me/flamingo/v3/framework/config.loadYamlConfig(0xc00047f680, 0xc000276000, 0xc49, 0xc80, 0xe76, 0x0)
/Users/daniel.poetzinger/Development/GOMOD/flamingo/flamingo/framework/config/loader.go:206 +0x1a2
flamingo.me/flamingo/v3/framework/config.loadYamlFile(0xc00047f680, 0xc000300fa0, 0xd, 0xd, 0x1)
/Users/daniel.poetzinger/Development/GOMOD/flamingo/flamingo/framework/config/loader.go:181 +0x222

Maybe the lines around the error can be printed - its not clear which file etc its referreing to

dependencies: Update cobra

Hello friends,
when running Nancy on flamingo it detects two vulnerable dependencies. One seems to be related to cobra

github.com/spf13/cobra v0.0.6

Cobra is currently available in version v1.1.3 https://github.com/spf13/cobra/tags

Approach
I am on flamingo master and execute:

go list -json -m all | docker run --rm -i sonatypecommunity/nancy:latest sleuth

Output

Checking for updates...
Already up-to-date.
pkg:golang/github.com/coreos/[email protected]
3 known vulnerabilities affecting installed version
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ [CVE-2020-15114] In etcd before versions 3.3.23 and 3.4.10, the etcd gateway is a simple TCP prox...                                                                                                                           ┃
┣━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ Description        ┃ In etcd before versions 3.3.23 and 3.4.10, the etcd gateway is a simple TCP                                                                                                                               ┃
┃                    ┃ proxy to allow for basic service discovery and access. However, it is                                                                                                                                     ┃
┃                    ┃ possible to include the gateway address as an endpoint. This results in a                                                                                                                                 ┃
┃                    ┃ denial of service, since the endpoint can become stuck in a loop of                                                                                                                                       ┃
┃                    ┃ requesting itself until there are no more available file descriptors to                                                                                                                                   ┃
┃                    ┃ accept connections on the gateway.                                                                                                                                                                        ┃
┣━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ OSS Index ID       ┃ bba60acb-c7b5-4621-af69-f4085a8301d0                                                                                                                                                                      ┃
┣━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ CVSS Score         ┃ 7.7/10 (High)                                                                                                                                                                                             ┃
┣━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ CVSS Vector        ┃ CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:N/A:H                                                                                                                                                              ┃
┣━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ Link for more info ┃ https://ossindex.sonatype.org/vuln/bba60acb-c7b5-4621-af69-f4085a8301d0?component-type=golang&component-name=github.com%2Fcoreos%2Fetcd&utm_source=nancy-client&utm_medium=integration&utm_content=1.0.15 ┃
┗━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ [CVE-2020-15136] In ectd before versions 3.4.10 and 3.3.23, gateway TLS authentication is only ap...                                                                                                                           ┃
┣━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ Description        ┃ In ectd before versions 3.4.10 and 3.3.23, gateway TLS authentication is                                                                                                                                  ┃
┃                    ┃ only applied to endpoints detected in DNS SRV records. When starting a                                                                                                                                    ┃
┃                    ┃ gateway, TLS authentication will only be attempted on endpoints identified                                                                                                                                ┃
┃                    ┃ in DNS SRV records for a given domain, which occurs in the                                                                                                                                                ┃
┃                    ┃ discoverEndpoints function. No authentication is performed against                                                                                                                                        ┃
┃                    ┃ endpoints provided in the --endpoints flag. This has been fixed in versions                                                                                                                               ┃
┃                    ┃ 3.4.10 and 3.3.23 with improved documentation and deprecation of the                                                                                                                                      ┃
┃                    ┃ functionality.                                                                                                                                                                                            ┃
┣━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ OSS Index ID       ┃ d373dc3f-aa88-483b-b501-20fe5382cc80                                                                                                                                                                      ┃
┣━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ CVSS Score         ┃ 6.5/10 (Medium)                                                                                                                                                                                           ┃
┣━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ CVSS Vector        ┃ CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:L/A:N                                                                                                                                                              ┃
┣━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ Link for more info ┃ https://ossindex.sonatype.org/vuln/d373dc3f-aa88-483b-b501-20fe5382cc80?component-type=golang&component-name=github.com%2Fcoreos%2Fetcd&utm_source=nancy-client&utm_medium=integration&utm_content=1.0.15 ┃
┗━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ [CVE-2020-15115] etcd before versions 3.3.23 and 3.4.10 does not perform any password length vali...                                                                                                                           ┃
┣━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ Description        ┃ etcd before versions 3.3.23 and 3.4.10 does not perform any password length                                                                                                                               ┃
┃                    ┃ validation, which allows for very short passwords, such as those with a                                                                                                                                   ┃
┃                    ┃ length of one. This may allow an attacker to guess or brute-force users'                                                                                                                                  ┃
┃                    ┃ passwords with little computational effort.                                                                                                                                                               ┃
┣━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ OSS Index ID       ┃ 5def94e5-b89c-4a94-b9c6-ae0e120784c2                                                                                                                                                                      ┃
┣━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ CVSS Score         ┃ 5.8/10 (Medium)                                                                                                                                                                                           ┃
┣━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ CVSS Vector        ┃ CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:N/A:N                                                                                                                                                              ┃
┣━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ Link for more info ┃ https://ossindex.sonatype.org/vuln/5def94e5-b89c-4a94-b9c6-ae0e120784c2?component-type=golang&component-name=github.com%2Fcoreos%2Fetcd&utm_source=nancy-client&utm_medium=integration&utm_content=1.0.15 ┃
┗━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
pkg:golang/github.com/gorilla/[email protected]
1 known vulnerabilities affecting installed version
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ CWE-190: Integer Overflow or Wraparound                                                                                                                                                                                              ┃
┣━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ Description        ┃ The software performs a calculation that can produce an integer overflow or                                                                                                                                     ┃
┃                    ┃ wraparound, when the logic assumes that the resulting value will always be                                                                                                                                      ┃
┃                    ┃ larger than the original value. This can introduce other weaknesses when                                                                                                                                        ┃
┃                    ┃ the calculation is used for resource management or execution control.                                                                                                                                           ┃
┣━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ OSS Index ID       ┃ 5f259e63-3efb-4c47-b593-d175dca716b0                                                                                                                                                                            ┃
┣━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ CVSS Score         ┃ 7.5/10 (High)                                                                                                                                                                                                   ┃
┣━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ CVSS Vector        ┃ CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H                                                                                                                                                                    ┃
┣━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ Link for more info ┃ https://ossindex.sonatype.org/vuln/5f259e63-3efb-4c47-b593-d175dca716b0?component-type=golang&component-name=github.com%2Fgorilla%2Fwebsocket&utm_source=nancy-client&utm_medium=integration&utm_content=1.0.15 ┃
┗━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

2 Vulnerable Packages

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Summary                       ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━┫
┃ Audited Dependencies    ┃ 176 ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━╋━━━━━┫
┃ Vulnerable Dependencies ┃ 2   ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━┻━━━━━┛

Checking the dependency graph:

go mod graph | grep 'github.com/gorilla/websocket'
> github.com/spf13/[email protected] github.com/gorilla/[email protected]

go mod graph | grep 'viper'
> github.com/spf13/[email protected] github.com/spf13/[email protected]

Go 1.13 errors

Now that go 1.14 is released we should:

  • drop go 1.12 compatibility shim (fmtErrorf for %w)
  • move everything to go errors

error in DataResponse should not trigger TemplateEngine reponse

If Data Response fails then the 500 error template is shown.

Expected: A json error format (?)

Example stack

2019-05-17T14:13:07.643+0200 ERROR web/result.go:386 json: unsupported type: ....
flamingo/flamingo/core/zap/logger.go:77
flamingo.me/flamingo/v3/framework/web.(*Responder).ServerError
flamingo/flamingo/framework/web/result.go:386
flamingo.me/flamingo/v3/framework/controller.(*Error).Error
flamingo/flamingo/framework/controller/error.go:28
flamingo.me/flamingo/v3/framework/web.(*handler).ServeHTTP
flamingo/flamingo/framework/web/handler.go:217
flamingo.me/flamingo/v3/framework/prefixrouter.(*FrontRouter).ServeHTTP
flamingo/flamingo/framework/prefixrouter/front_router.go:136

Security issue in github.com/satori/go.uuid

Hello Flamingo team,

the library github.com/satori/go.uuid has a security issue (see https://avd.aquasec.com/nvd/2021/cve-2021-3538/ for details). This library is used in Flamingo core:

It would be great, if you could replace it by a library, which does not suffer from this issue (e.g. https://github.com/gofrs/uuid or https://github.com/google/uuid).

Thanks for your help.

BR, Michael

Default errorhandling for templates

Empty projects end up with the message
Could not find the template error/withCode.html
eveywhere, because the 404 template is not found, triggers a 50x error, which defaults to the error/withCode.html template.
This is totally unclear/unusable for new adopters.

Focus items in RESTful API

hello.
Whether optimization of the REST API project will be considered later?

I intend to use this for RESTful projects that do not require the functionality of templates

flamingo.static.file controller

The flamingo.static.file controller is basically unusuable.

We need configuration/param for the path, rename to flamingo.static (because it actually serves folders and directory listings) and check for file-only serving

Use real port information in `ServerStartEvent`

Without further configuration Flamingo starts the server on port 3322 (normal router) or 3210 (prefixrouter) and the systemendpoint on 13210.

However, if you configure :0, the net.Listener will internally choose an available port and there is no possibility to know which ports have been selected.

The ServerStartEvent just has the configuration :0 instead of the "real port".
Also the log messages "Starting HTTP Server ..." and "systemendpoint: Start at ..." have only the configuration value.

Configuration for systemendpoint is flamingo.systemendpoint.serviceAddr
The main port is given by the --addr flag in the serve command (for router and prefixrouter respectively)

Document go:generate usage

E.g. for mockery:
Use

//go:generate go run github.com/vektra/mockery/cmd/mockery

Instead of

//go:generate mockery

to ensure reproducable usage without installing a, potentially random, version of mockery somewhere in your PATH

GOMAXPROCS configurable

Finding from "PET Team":

Der runtime-scheduler hat eine Funktion “GOMAXPROCS”, welche der runtime grob mitteilt wieviele parallele Verarbeitungen sie machen kann. Dieser Wert ist per default die Anzahl der Verfügbaren cores (seit 1.5). In einer Container Umgebung ist das trotz limits die Gesamtanzahl der Cores der darunterlegenden Node.
Da so der go-runtime-scheduler glaubt 4 cpu’s zur Verfügung zu haben, die aber per cgroup auf etwa 2 limitiert sind (aktuell bei kso), versucht go mehr zu parallelisieren als eigentlich möglich ist. Auch das führt zu unnötigem cfs-throtteling. Daher sollten wir das entsprechend des limits pro Projekt konfigurieren.

Ab Kubernetes Version 1.16 könnten wir dem Container exakte Kerne zuweisen (und damit die anderen verstecken). Da wir aber erst bei k8s 1.11 sind und es auch bei 1.16 noch Probleme damit gibt, können wir damit aktuell nicht arbeiten und nicht zeitnah rechnen.

Entweder konfigurieren wir das per Umgebungsvariable pro Projekt und Stage manuell oder automatisiert mit dieser Library von Uber: https://github.com/uber-go/automaxprocs Diese setzt den Wert automatisch zur Startzeit der Applikation. Evt könnte man dies in den Flamingo-Core integrieren? Was meint ihr?

License

Check compatibility with pkg.go.dev.

web: SessionFromContext

We should document the intention of web.SessionFromContext function.

The session should be an explicit parameter if needed.

Config aliasing

For upgrading configuration paths it would be nice to support aliasing, just like go type aliasing.

Redigo update

go: warning: github.com/gomodule/[email protected]+incompatible: retracted by module author: Old development version not maintained or published.
go: to switch to the latest unretracted version, run:
	go get github.com/gomodule/redigo@latest

Problem in bootstrapping graphql module

This is the error that is thrown when I try to run go generate . as mentioned in the graphql module readme.

2020/06/16 21:19:46 app: config load: root: flamingo.me/flamingo/v3/core/oauth.Module:4:10: cue: marshal error at path core.oauth.secret: cannot convert incomplete value "string" to JSON
exit status 1
main.go:4: running "go": exit status 1

Any idea?

core/locale: bad performance for translations endpoint in debug mode

We noticed that the translations endpoint in the core/locale module is really slow in flamingo debug mode. This is because in debug mode, we reload the translation files for each translation (see TranslateLabel and loadFiles methods). In the translations endpoint we list every translation, so we reload the translation files hundreds of times. It would make sense to only reload when necessary (e. g. a translation file changed).

Future of pact utils

The utils in core are somewhat outdated.
Let's discuss to extract it into a separate repository for v4

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.