chore: upgrade deprecated AWS SDK (#22738)
This commit is contained in:
parent
6a40aff4d4
commit
04f0e30fb8
4 changed files with 192 additions and 137 deletions
26
go.mod
26
go.mod
|
|
@ -13,7 +13,10 @@ require (
|
|||
github.com/andig/gosunspec v0.0.0-20240918203654-860ce51d602b
|
||||
github.com/andig/mbserver v0.0.0-20230310211055-1d29cbb5820e
|
||||
github.com/asaskevich/EventBus v0.0.0-20200907212545-49d423059eef
|
||||
github.com/aws/aws-sdk-go v1.55.7
|
||||
github.com/aws/aws-sdk-go-v2 v1.37.1
|
||||
github.com/aws/aws-sdk-go-v2/config v1.30.2
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.18.2
|
||||
github.com/aws/aws-sdk-go-v2/service/cognitoidentity v1.30.1
|
||||
github.com/basgys/goxml2json v1.1.0
|
||||
github.com/basvdlei/gotsmart v0.0.3
|
||||
github.com/benbjohnson/clock v1.3.5
|
||||
|
|
@ -50,7 +53,7 @@ require (
|
|||
github.com/gosimple/slug v1.15.0
|
||||
github.com/gregdel/pushover v1.3.1
|
||||
github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79
|
||||
github.com/grid-x/modbus v0.0.0-20250717144429-344b140e33c1
|
||||
github.com/grid-x/modbus v0.0.0-20250801110857-752051ed9df7
|
||||
github.com/hashicorp/go-version v1.7.0
|
||||
github.com/hasura/go-graphql-client v0.14.4
|
||||
github.com/influxdata/influxdb-client-go/v2 v2.14.0
|
||||
|
|
@ -77,7 +80,7 @@ require (
|
|||
github.com/olekukonko/tablewriter v1.0.9
|
||||
github.com/philippseith/signalr v0.7.0
|
||||
github.com/prometheus-community/pro-bing v0.7.0
|
||||
github.com/prometheus/client_golang v1.22.0
|
||||
github.com/prometheus/client_golang v1.23.0
|
||||
github.com/prometheus/common v0.65.0
|
||||
github.com/robertkrimen/otto v0.5.1
|
||||
github.com/samber/lo v1.51.0
|
||||
|
|
@ -91,7 +94,7 @@ require (
|
|||
github.com/spf13/pflag v1.0.7
|
||||
github.com/spf13/viper v1.20.1
|
||||
github.com/stretchr/testify v1.10.0
|
||||
github.com/teslamotors/vehicle-command v0.3.4
|
||||
github.com/teslamotors/vehicle-command v0.4.0
|
||||
github.com/traefik/yaegi v0.16.1
|
||||
github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c
|
||||
github.com/volkszaehler/mbmd v0.0.0-20250608084036-9a13257a4991
|
||||
|
|
@ -100,7 +103,7 @@ require (
|
|||
go.uber.org/mock v0.5.2
|
||||
go.yaml.in/yaml/v4 v4.0.0-20250730171608-926dd0b54a90
|
||||
golang.org/x/crypto v0.40.0
|
||||
golang.org/x/crypto/x509roots/fallback v0.0.0-20250711192710-b903b535d3ef
|
||||
golang.org/x/crypto/x509roots/fallback v0.0.0-20250803194717-c247dead11de
|
||||
golang.org/x/exp v0.0.0-20250718183923-645b1fa84792
|
||||
golang.org/x/net v0.42.0
|
||||
golang.org/x/oauth2 v0.30.0
|
||||
|
|
@ -119,6 +122,16 @@ require (
|
|||
github.com/andybalholm/cascadia v1.3.3 // indirect
|
||||
github.com/antihax/optional v1.0.0 // indirect
|
||||
github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.1 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.1 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.1 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.1 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.26.1 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.31.1 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.35.1 // indirect
|
||||
github.com/aws/smithy-go v1.22.5 // indirect
|
||||
github.com/azihsoyn/rijndael256 v0.0.0-20200316065338-d14eefa2b66b // indirect
|
||||
github.com/bahlo/generic-list-go v0.2.0 // indirect
|
||||
github.com/beorn7/perks v1.0.1 // indirect
|
||||
|
|
@ -168,7 +181,6 @@ require (
|
|||
github.com/invopop/jsonschema v0.13.0 // indirect
|
||||
github.com/itchyny/timefmt-go v0.1.6 // indirect
|
||||
github.com/jinzhu/inflection v1.0.0 // indirect
|
||||
github.com/jmespath/go-jmespath v0.4.0 // indirect
|
||||
github.com/josharian/intern v1.0.0 // indirect
|
||||
github.com/json-iterator/go v1.1.12 // indirect
|
||||
github.com/leodido/go-urn v1.4.0 // indirect
|
||||
|
|
@ -198,7 +210,7 @@ require (
|
|||
github.com/pkg/errors v0.9.1 // indirect
|
||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
|
||||
github.com/prometheus/client_model v0.6.2 // indirect
|
||||
github.com/prometheus/procfs v0.15.1 // indirect
|
||||
github.com/prometheus/procfs v0.16.1 // indirect
|
||||
github.com/quic-go/qpack v0.5.1 // indirect
|
||||
github.com/quic-go/quic-go v0.48.2 // indirect
|
||||
github.com/quic-go/webtransport-go v0.8.1-0.20241018022711-4ac2c9250e66 // indirect
|
||||
|
|
|
|||
55
go.sum
55
go.sum
|
|
@ -55,9 +55,35 @@ github.com/asaskevich/EventBus v0.0.0-20200907212545-49d423059eef h1:2JGTg6JapxP
|
|||
github.com/asaskevich/EventBus v0.0.0-20200907212545-49d423059eef/go.mod h1:JS7hed4L1fj0hXcyEejnW57/7LCetXggd+vwrRnYeII=
|
||||
github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU=
|
||||
github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
|
||||
github.com/aws/aws-sdk-go v1.55.7 h1:UJrkFq7es5CShfBwlWAC8DA077vp8PyVbQd3lqLiztE=
|
||||
github.com/aws/aws-sdk-go v1.55.7/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
|
||||
github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g=
|
||||
github.com/aws/aws-sdk-go-v2 v1.37.1 h1:SMUxeNz3Z6nqGsXv0JuJXc8w5YMtrQMuIBmDx//bBDY=
|
||||
github.com/aws/aws-sdk-go-v2 v1.37.1/go.mod h1:9Q0OoGQoboYIAJyslFyF1f5K1Ryddop8gqMhWx/n4Wg=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.30.2 h1:YE1BmSc4fFYqFgN1mN8uzrtc7R9x+7oSWeX8ckoltAw=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.30.2/go.mod h1:UNrLGZ6jfAVjgVJpkIxjLufRJqTXCVYOpkeVf83kwBo=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.18.2 h1:mfm0GKY/PHLhs7KO0sUaOtFnIQ15Qqxt+wXbO/5fIfs=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.18.2/go.mod h1:v0SdJX6ayPeZFQxgXUKw5RhLpAoZUuynxWDfh8+Eknc=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.1 h1:owmNBboeA0kHKDcdF8KiSXmrIuXZustfMGGytv6OMkM=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.1/go.mod h1:Bg1miN59SGxrZqlP8vJZSmXW+1N8Y1MjQDq1OfuNod8=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.1 h1:ksZXBYv80EFTcgc8OJO48aQ8XDWXIQL7gGasPeCoTzI=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.1/go.mod h1:HSksQyyJETVZS7uM54cir0IgxttTD+8aEoJMPGepHBI=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.1 h1:+dn/xF/05utS7tUhjIcndbuaPjfll2LhbH1cCDGLYUQ=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.1/go.mod h1:hyAGz30LHdm5KBZDI58MXx5lDVZ5CUfvfTZvMu4HCZo=
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo=
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo=
|
||||
github.com/aws/aws-sdk-go-v2/service/cognitoidentity v1.30.1 h1:NB1+cWutptq+UHLSodvhdhNw8mSf3L2slhysVs5HCh8=
|
||||
github.com/aws/aws-sdk-go-v2/service/cognitoidentity v1.30.1/go.mod h1:nPuM/gz996X+i7RSnw1LNdaP9NFBMgEpamx6YB2mrQQ=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0 h1:6+lZi2JeGKtCraAj1rpoZfKqnQ9SptseRZioejfUOLM=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0/go.mod h1:eb3gfbVIxIoGgJsi9pGne19dhCBpK6opTYpQqAmdy44=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.1 h1:ky79ysLMxhwk5rxJtS+ILd3Mc8kC5fhsLBrP27r6h4I=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.1/go.mod h1:+2MmkvFvPYM1vsozBWduoLJUi5maxFk5B7KJFECujhY=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.26.1 h1:uWaz3DoNK9MNhm7i6UGxqufwu3BEuJZm72WlpGwyVtY=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.26.1/go.mod h1:ILpVNjL0BO+Z3Mm0SbEeUoYS9e0eJWV1BxNppp0fcb8=
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.31.1 h1:XdG6/o1/ZDmn3wJU5SRAejHaWgKS4zHv0jBamuKuS2k=
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.31.1/go.mod h1:oiotGTKadCOCl3vg/tYh4k45JlDF81Ka8rdumNhEnIQ=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.35.1 h1:iF4Xxkc0H9c/K2dS0zZw3SCkj0Z7n6AMnUiiyoJND+I=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.35.1/go.mod h1:0bxIatfN0aLq4mjoLDeBpOjOke68OsFlXPDFJ7V0MYw=
|
||||
github.com/aws/smithy-go v1.22.5 h1:P9ATCXPMb2mPjYBgueqJNCA5S9UfktsW0tTxi+a7eqw=
|
||||
github.com/aws/smithy-go v1.22.5/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI=
|
||||
github.com/azihsoyn/rijndael256 v0.0.0-20200316065338-d14eefa2b66b h1:/2dABok/UswXOj5rjbR5bZ411ApGBq1pAEZdy5rvFrY=
|
||||
github.com/azihsoyn/rijndael256 v0.0.0-20200316065338-d14eefa2b66b/go.mod h1:ef+2vMUkiKcy2Tz7HykB01KbgUnkK4gQKq4ZeR4RYVs=
|
||||
github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk=
|
||||
|
|
@ -388,10 +414,6 @@ github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkr
|
|||
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
|
||||
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
|
||||
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
|
||||
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
|
||||
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
|
||||
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
|
||||
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
|
||||
github.com/joeshaw/carwings v0.0.0-20250704173606-1708e349f36c h1:qAJHVJ+s+pbLuvNiYhYVblTfgkFiPwUuAJMUNKh0uJc=
|
||||
github.com/joeshaw/carwings v0.0.0-20250704173606-1708e349f36c/go.mod h1:rNwwhAzMSNqlTsRQZ7a+jXHu4Mgn2ztr3aYCqRgWGlA=
|
||||
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
|
||||
|
|
@ -589,8 +611,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn
|
|||
github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og=
|
||||
github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
|
||||
github.com/prometheus/client_golang v1.10.0/go.mod h1:WJM3cc3yu7XKBKa/I8WeZm+V3eltZnBwfENSU7mdogU=
|
||||
github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q=
|
||||
github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0=
|
||||
github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc=
|
||||
github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE=
|
||||
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
|
||||
github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
|
||||
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||
|
|
@ -612,8 +634,8 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT
|
|||
github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
|
||||
github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
|
||||
github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
|
||||
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
|
||||
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
|
||||
github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg=
|
||||
github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is=
|
||||
github.com/quic-go/qpack v0.5.1 h1:giqksBPnT/HDtZ6VhtFKgoLOWmlyo9Ei6u9PqzIMbhI=
|
||||
github.com/quic-go/qpack v0.5.1/go.mod h1:+PC4XFrEskIVkcLzpEkbLqq1uCoxPhQuvK5rH1ZgaEg=
|
||||
github.com/quic-go/quic-go v0.48.2 h1:wsKXZPeGWpMpCGSWqOcqpW2wZYic/8T3aqiOID0/KWE=
|
||||
|
|
@ -718,8 +740,8 @@ github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSW
|
|||
github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA=
|
||||
github.com/teivah/onecontext v1.3.0 h1:tbikMhAlo6VhAuEGCvhc8HlTnpX4xTNPTOseWuhO1J0=
|
||||
github.com/teivah/onecontext v1.3.0/go.mod h1:hoW1nmdPVK/0jrvGtcx8sCKYs2PiS4z0zzfdeuEVyb0=
|
||||
github.com/teslamotors/vehicle-command v0.3.4 h1:77admcqrFSF2Qa00z1paLYq8h8w4+cZ1nwadg/vghno=
|
||||
github.com/teslamotors/vehicle-command v0.3.4/go.mod h1:l7Rxdpd/9QBnQnj6NQ/w4Vb5OSE1cB7okS4qmf+rIwI=
|
||||
github.com/teslamotors/vehicle-command v0.4.0 h1:39JJ7wGdS3dmW3tlsshg2C9/YWx+fxaUw6aRKfqWmpc=
|
||||
github.com/teslamotors/vehicle-command v0.4.0/go.mod h1:aL0IRpLu+l205NxejRkuxpqAovw69rDKriBKKyP8gLI=
|
||||
github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
|
||||
github.com/traefik/yaegi v0.16.1 h1:f1De3DVJqIDKmnasUF6MwmWv1dSEEat0wcpXhD2On3E=
|
||||
github.com/traefik/yaegi v0.16.1/go.mod h1:4eVhbPb3LnD2VigQjhYbEJ69vDRFdT2HQNrXx8eEwUY=
|
||||
|
|
@ -774,8 +796,8 @@ go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2
|
|||
go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
|
||||
go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
|
||||
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
|
||||
go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA=
|
||||
go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
|
||||
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
|
||||
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
|
||||
go.uber.org/mock v0.5.2 h1:LbtPTcP8A5k9WPXj54PPPbjcI4Y6lhyOZXn+VS7wNko=
|
||||
go.uber.org/mock v0.5.2/go.mod h1:wLlUxC2vVTPTaE3UD51E0BGOAElKrILxhVSDYQLld5o=
|
||||
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
|
||||
|
|
@ -801,8 +823,8 @@ golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v
|
|||
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
|
||||
golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM=
|
||||
golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY=
|
||||
golang.org/x/crypto/x509roots/fallback v0.0.0-20250711192710-b903b535d3ef h1:EJekzaXZlPQg739ghq7w/XWZVcuAOY6mh35JX2D+7Gc=
|
||||
golang.org/x/crypto/x509roots/fallback v0.0.0-20250711192710-b903b535d3ef/go.mod h1:lxN5T34bK4Z/i6cMaU7frUU57VkDXFD4Kamfl/cp9oU=
|
||||
golang.org/x/crypto/x509roots/fallback v0.0.0-20250803194717-c247dead11de h1:iGd5rLguHodZ8KhaKSNKl9QamKsae5egSDQVQC0PLJ0=
|
||||
golang.org/x/crypto/x509roots/fallback v0.0.0-20250803194717-c247dead11de/go.mod h1:lxN5T34bK4Z/i6cMaU7frUU57VkDXFD4Kamfl/cp9oU=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20250718183923-645b1fa84792 h1:R9PFI6EUdfVKgwKjZef7QIwGcBKu86OEFpJ9nUEP2l4=
|
||||
golang.org/x/exp v0.0.0-20250718183923-645b1fa84792/go.mod h1:A+z0yzpGtvnG90cToK5n2tu8UJVP2XUATh+r+sfOOOc=
|
||||
|
|
@ -1027,7 +1049,6 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
|||
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
||||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package vehicle
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
|
|
@ -19,11 +20,11 @@ type Fiat struct {
|
|||
}
|
||||
|
||||
func init() {
|
||||
registry.Add("fiat", NewFiatFromConfig)
|
||||
registry.AddCtx("fiat", NewFiatFromConfig)
|
||||
}
|
||||
|
||||
// NewFiatFromConfig creates a new vehicle
|
||||
func NewFiatFromConfig(other map[string]interface{}) (api.Vehicle, error) {
|
||||
func NewFiatFromConfig(ctx context.Context, other map[string]interface{}) (api.Vehicle, error) {
|
||||
cc := struct {
|
||||
embed `mapstructure:",squash"`
|
||||
User, Password, VIN, PIN string
|
||||
|
|
@ -47,7 +48,7 @@ func NewFiatFromConfig(other map[string]interface{}) (api.Vehicle, error) {
|
|||
}
|
||||
|
||||
log := util.NewLogger("fiat").Redact(cc.User, cc.Password, cc.VIN)
|
||||
identity := fiat.NewIdentity(log, cc.User, cc.Password)
|
||||
identity := fiat.NewIdentity(log, ctx, cc.User, cc.Password)
|
||||
|
||||
err := identity.Login()
|
||||
if err != nil {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
package fiat
|
||||
|
||||
import (
|
||||
"context"
|
||||
"crypto/sha256"
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
|
|
@ -9,11 +12,11 @@ import (
|
|||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/aws/aws-sdk-go/aws"
|
||||
"github.com/aws/aws-sdk-go/aws/credentials"
|
||||
"github.com/aws/aws-sdk-go/aws/session"
|
||||
v4 "github.com/aws/aws-sdk-go/aws/signer/v4"
|
||||
"github.com/aws/aws-sdk-go/service/cognitoidentity"
|
||||
v4 "github.com/aws/aws-sdk-go-v2/aws/signer/v4"
|
||||
"github.com/aws/aws-sdk-go-v2/config"
|
||||
"github.com/aws/aws-sdk-go-v2/credentials"
|
||||
"github.com/aws/aws-sdk-go-v2/service/cognitoidentity"
|
||||
"github.com/aws/aws-sdk-go-v2/service/cognitoidentity/types"
|
||||
"github.com/evcc-io/evcc/util"
|
||||
"github.com/evcc-io/evcc/util/request"
|
||||
"github.com/samber/lo"
|
||||
|
|
@ -28,13 +31,14 @@ const (
|
|||
|
||||
type Identity struct {
|
||||
*request.Helper
|
||||
ctx context.Context
|
||||
user, password string
|
||||
uid string
|
||||
creds *cognitoidentity.Credentials
|
||||
creds *types.Credentials
|
||||
}
|
||||
|
||||
// NewIdentity creates Fiat identity
|
||||
func NewIdentity(log *util.Logger, user, password string) *Identity {
|
||||
func NewIdentity(log *util.Logger, ctx context.Context, user, password string) *Identity {
|
||||
return &Identity{
|
||||
Helper: request.NewHelper(log),
|
||||
user: user,
|
||||
|
|
@ -46,8 +50,6 @@ func NewIdentity(log *util.Logger, user, password string) *Identity {
|
|||
func (v *Identity) Login() error {
|
||||
v.Client.Jar, _ = cookiejar.New(nil)
|
||||
|
||||
uri := fmt.Sprintf("%s/accounts.webSdkBootstrap", LoginURI)
|
||||
|
||||
data := url.Values{
|
||||
"APIKey": {ApiKey},
|
||||
"pageURL": {"https://myuconnect.fiat.com/de/de/vehicle-services"},
|
||||
|
|
@ -56,18 +58,12 @@ func (v *Identity) Login() error {
|
|||
"format": {"json"},
|
||||
}
|
||||
|
||||
headers := map[string]string{
|
||||
uri := fmt.Sprintf("%s/accounts.webSdkBootstrap?%s", LoginURI, data.Encode())
|
||||
req, _ := request.New(http.MethodGet, uri, nil, map[string]string{
|
||||
"Accept": "*/*",
|
||||
}
|
||||
|
||||
req, err := request.New(http.MethodGet, uri, nil, headers)
|
||||
if err == nil {
|
||||
req.URL.RawQuery = data.Encode()
|
||||
|
||||
var resp *http.Response
|
||||
if resp, err = v.Do(req); err == nil {
|
||||
resp.Body.Close()
|
||||
}
|
||||
})
|
||||
if _, err := v.Do(req); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var res struct {
|
||||
|
|
@ -80,115 +76,109 @@ func (v *Identity) Login() error {
|
|||
}
|
||||
}
|
||||
|
||||
if err == nil {
|
||||
uri = fmt.Sprintf("%s/accounts.login", LoginURI)
|
||||
uri = fmt.Sprintf("%s/accounts.login", LoginURI)
|
||||
|
||||
data := url.Values{
|
||||
"loginID": {v.user},
|
||||
"password": {v.password},
|
||||
"sessionExpiration": {"7776000"},
|
||||
"APIKey": {ApiKey},
|
||||
"pageURL": {"https://myuconnect.fiat.com/de/de/login"},
|
||||
"sdk": {"js_latest"},
|
||||
"sdkBuild": {"12234"},
|
||||
"format": {"json"},
|
||||
"targetEnv": {"jssdk"},
|
||||
"include": {"profile,data,emails"}, // subscriptions,preferences
|
||||
"includeUserInfo": {"true"},
|
||||
"loginMode": {"standard"},
|
||||
"lang": {"de0de"},
|
||||
"source": {"showScreenSet"},
|
||||
"authMode": {"cookie"},
|
||||
}
|
||||
|
||||
headers := map[string]string{
|
||||
"Accept": "*/*",
|
||||
"Content-Type": "application/x-www-form-urlencoded",
|
||||
}
|
||||
|
||||
if req, err = request.New(http.MethodPost, uri, strings.NewReader(data.Encode()), headers); err == nil {
|
||||
if err = v.DoJSON(req, &res); err == nil {
|
||||
err = res.ErrorInfo.Error()
|
||||
v.uid = res.UID
|
||||
}
|
||||
}
|
||||
data = url.Values{
|
||||
"loginID": {v.user},
|
||||
"password": {v.password},
|
||||
"sessionExpiration": {"7776000"},
|
||||
"APIKey": {ApiKey},
|
||||
"pageURL": {"https://myuconnect.fiat.com/de/de/login"},
|
||||
"sdk": {"js_latest"},
|
||||
"sdkBuild": {"12234"},
|
||||
"format": {"json"},
|
||||
"targetEnv": {"jssdk"},
|
||||
"include": {"profile,data,emails"}, // subscriptions,preferences
|
||||
"includeUserInfo": {"true"},
|
||||
"loginMode": {"standard"},
|
||||
"lang": {"de0de"},
|
||||
"source": {"showScreenSet"},
|
||||
"authMode": {"cookie"},
|
||||
}
|
||||
|
||||
req, _ = request.New(http.MethodPost, uri, strings.NewReader(data.Encode()), map[string]string{
|
||||
"Accept": "*/*",
|
||||
"Content-Type": "application/x-www-form-urlencoded",
|
||||
})
|
||||
if err := v.DoJSON(req, &res); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := res.ErrorInfo.Error(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
v.uid = res.UID
|
||||
|
||||
var token struct {
|
||||
ErrorInfo
|
||||
StatusReason string
|
||||
IDToken string `json:"id_token"`
|
||||
}
|
||||
|
||||
if err == nil {
|
||||
uri = fmt.Sprintf("%s/accounts.getJWT", LoginURI)
|
||||
data = url.Values{
|
||||
"fields": {"profile.firstName,profile.lastName,profile.email,country,locale,data.disclaimerCodeGSDP"}, // data.GSDPisVerified
|
||||
"APIKey": {ApiKey},
|
||||
"pageURL": {"https://myuconnect.fiat.com/de/de/dashboard"},
|
||||
"sdk": {"js_latest"},
|
||||
"sdkBuild": {"12234"},
|
||||
"format": {"json"},
|
||||
"login_token": {res.SessionInfo.LoginToken},
|
||||
"authMode": {"cookie"},
|
||||
}
|
||||
|
||||
data := url.Values{
|
||||
"fields": {"profile.firstName,profile.lastName,profile.email,country,locale,data.disclaimerCodeGSDP"}, // data.GSDPisVerified
|
||||
"APIKey": {ApiKey},
|
||||
"pageURL": {"https://myuconnect.fiat.com/de/de/dashboard"},
|
||||
"sdk": {"js_latest"},
|
||||
"sdkBuild": {"12234"},
|
||||
"format": {"json"},
|
||||
"login_token": {res.SessionInfo.LoginToken},
|
||||
"authMode": {"cookie"},
|
||||
}
|
||||
uri = fmt.Sprintf("%s/accounts.getJWT?%s", LoginURI, data.Encode())
|
||||
|
||||
headers := map[string]string{
|
||||
"Accept": "*/*",
|
||||
}
|
||||
|
||||
if req, err = request.New(http.MethodGet, uri, nil, headers); err == nil {
|
||||
req.URL.RawQuery = data.Encode()
|
||||
if err = v.DoJSON(req, &token); err == nil {
|
||||
err = token.ErrorInfo.Error()
|
||||
}
|
||||
}
|
||||
req, _ = request.New(http.MethodGet, uri, nil, map[string]string{
|
||||
"Accept": "*/*",
|
||||
})
|
||||
if err := v.DoJSON(req, &token); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := token.ErrorInfo.Error(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var identity struct {
|
||||
Token, IdentityID string
|
||||
}
|
||||
|
||||
if err == nil {
|
||||
data := struct {
|
||||
GigyaToken string `json:"gigya_token"`
|
||||
}{
|
||||
GigyaToken: token.IDToken,
|
||||
}
|
||||
|
||||
headers := map[string]string{
|
||||
"Content-Type": "application/json",
|
||||
"X-Clientapp-Version": "1.0",
|
||||
"ClientRequestId": lo.RandomString(16, lo.LettersCharset),
|
||||
"X-Api-Key": XApiKey,
|
||||
"X-Originator-Type": "web",
|
||||
}
|
||||
|
||||
if req, err = request.New(http.MethodPost, TokenURI, request.MarshalJSON(data), headers); err == nil {
|
||||
err = v.DoJSON(req, &identity)
|
||||
}
|
||||
gigya := struct {
|
||||
GigyaToken string `json:"gigya_token"`
|
||||
}{
|
||||
GigyaToken: token.IDToken,
|
||||
}
|
||||
|
||||
var credRes *cognitoidentity.GetCredentialsForIdentityOutput
|
||||
|
||||
if err == nil {
|
||||
session := session.Must(session.NewSession(&aws.Config{Region: aws.String(Region)}))
|
||||
svc := cognitoidentity.New(session)
|
||||
|
||||
credRes, err = svc.GetCredentialsForIdentity(&cognitoidentity.GetCredentialsForIdentityInput{
|
||||
IdentityId: &identity.IdentityID,
|
||||
Logins: map[string]*string{
|
||||
"cognito-identity.amazonaws.com": &identity.Token,
|
||||
},
|
||||
})
|
||||
headers := map[string]string{
|
||||
"Content-Type": "application/json",
|
||||
"X-Clientapp-Version": "1.0",
|
||||
"ClientRequestId": lo.RandomString(16, lo.LettersCharset),
|
||||
"X-Api-Key": XApiKey,
|
||||
"X-Originator-Type": "web",
|
||||
}
|
||||
|
||||
if err == nil {
|
||||
v.creds = credRes.Credentials
|
||||
req, _ = request.New(http.MethodPost, TokenURI, request.MarshalJSON(gigya), headers)
|
||||
if err := v.DoJSON(req, &identity); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return err
|
||||
cfg, err := config.LoadDefaultConfig(v.ctx, config.WithRegion(Region))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
svc := cognitoidentity.NewFromConfig(cfg)
|
||||
|
||||
credRes, err := svc.GetCredentialsForIdentity(v.ctx, &cognitoidentity.GetCredentialsForIdentityInput{
|
||||
IdentityId: &identity.IdentityID,
|
||||
Logins: map[string]string{
|
||||
"cognito-identity.amazonaws.com": identity.Token,
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
v.creds = credRes.Credentials
|
||||
return nil
|
||||
}
|
||||
|
||||
// UID returns the logged in users uid
|
||||
|
|
@ -206,10 +196,41 @@ func (v *Identity) Sign(req *http.Request, body io.ReadSeeker) error {
|
|||
}
|
||||
|
||||
// sign request
|
||||
signer := v4.NewSigner(credentials.NewStaticCredentials(
|
||||
credProvider := credentials.NewStaticCredentialsProvider(
|
||||
*v.creds.AccessKeyId, *v.creds.SecretKey, *v.creds.SessionToken,
|
||||
))
|
||||
_, err := signer.Sign(req, body, "execute-api", Region, time.Now())
|
||||
)
|
||||
credentials, err := credProvider.Retrieve(v.ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return err
|
||||
payloadHash, err := hashBody(body)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
signer := v4.NewSigner()
|
||||
return signer.SignHTTP(v.ctx, credentials, req, payloadHash, "execute-api", Region, time.Now())
|
||||
}
|
||||
|
||||
func hashBody(body io.ReadSeeker) (string, error) {
|
||||
if body == nil {
|
||||
// For empty payloads, use the SHA-256 hash of empty string
|
||||
return "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", nil
|
||||
}
|
||||
|
||||
// Read the body content
|
||||
bodyBytes, err := io.ReadAll(body)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
// Reset the body seeker to the beginning
|
||||
if _, err := body.Seek(0, io.SeekStart); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
// Calculate SHA-256 hash
|
||||
hash := sha256.Sum256(bodyBytes)
|
||||
return hex.EncodeToString(hash[:]), nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue