Skip to content

Commit 7c7c2b1

Browse files
committed
security: update quic-go to v0.57.0 to fix GO-2025-4233
1 parent 2a1e459 commit 7c7c2b1

7 files changed

Lines changed: 58 additions & 36 deletions

File tree

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
- name: Set up Go
3131
uses: actions/setup-go@v6
3232
with:
33-
go-version: "1.23"
33+
go-version: "1.24"
3434

3535
- name: Build
3636
run: make backend

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ jobs:
3535
- name: Set up Go
3636
uses: actions/setup-go@v6
3737
with:
38-
go-version: "1.23"
38+
go-version: "1.24"
3939

4040
- name: Run GoReleaser
4141
uses: goreleaser/goreleaser-action@v6

DEVELOPMENT.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
OpenVoxView has two components, a small golang backend and a Vue 3 (Quasar) frontend.
44

55
## Requirements
6-
- golang >= 1.23
6+
- golang >= 1.24
77
- yarn
88
- node >=20 <=24
99

go.mod

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,22 @@
11
module github.com/sebastianrakel/openvoxview
22

3-
go 1.23.0
3+
go 1.24
44

55
require github.com/gin-gonic/gin v1.11.0
66

77
require (
88
github.com/fsnotify/fsnotify v1.9.0 // indirect
99
github.com/go-viper/mapstructure/v2 v2.4.0 // indirect
1010
github.com/goccy/go-yaml v1.18.0 // indirect
11-
github.com/quic-go/qpack v0.5.1 // indirect
12-
github.com/quic-go/quic-go v0.54.0 // indirect
11+
github.com/quic-go/qpack v0.6.0 // indirect
12+
github.com/quic-go/quic-go v0.57.0 // indirect
1313
github.com/sagikazarmark/locafero v0.11.0 // indirect
1414
github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect
1515
github.com/spf13/afero v1.15.0 // indirect
1616
github.com/spf13/cast v1.10.0 // indirect
1717
github.com/spf13/pflag v1.0.10 // indirect
1818
github.com/subosito/gotenv v1.6.0 // indirect
19-
go.uber.org/mock v0.5.0 // indirect
2019
go.yaml.in/yaml/v3 v3.0.4 // indirect
21-
golang.org/x/mod v0.26.0 // indirect
22-
golang.org/x/sync v0.16.0 // indirect
23-
golang.org/x/tools v0.35.0 // indirect
2420
)
2521

2622
require (
@@ -44,8 +40,8 @@ require (
4440
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
4541
github.com/ugorji/go/codec v1.3.0 // indirect
4642
golang.org/x/arch v0.20.0 // indirect
47-
golang.org/x/crypto v0.40.0 // indirect
48-
golang.org/x/net v0.42.0 // indirect
43+
golang.org/x/crypto v0.41.0 // indirect
44+
golang.org/x/net v0.43.0 // indirect
4945
golang.org/x/sys v0.35.0 // indirect
5046
golang.org/x/text v0.28.0 // indirect
5147
google.golang.org/protobuf v1.36.9 // indirect

go.sum

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,12 @@ github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0
5555
github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
5656
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
5757
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
58-
github.com/quic-go/qpack v0.5.1 h1:giqksBPnT/HDtZ6VhtFKgoLOWmlyo9Ei6u9PqzIMbhI=
59-
github.com/quic-go/qpack v0.5.1/go.mod h1:+PC4XFrEskIVkcLzpEkbLqq1uCoxPhQuvK5rH1ZgaEg=
60-
github.com/quic-go/quic-go v0.54.0 h1:6s1YB9QotYI6Ospeiguknbp2Znb/jZYjZLRXn9kMQBg=
61-
github.com/quic-go/quic-go v0.54.0/go.mod h1:e68ZEaCdyviluZmy44P6Iey98v/Wfz6HCjQEm+l8zTY=
62-
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
63-
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
58+
github.com/quic-go/qpack v0.6.0 h1:g7W+BMYynC1LbYLSqRt8PBg5Tgwxn214ZZR34VIOjz8=
59+
github.com/quic-go/qpack v0.6.0/go.mod h1:lUpLKChi8njB4ty2bFLX2x4gzDqXwUpaO1DP9qMDZII=
60+
github.com/quic-go/quic-go v0.57.0 h1:AsSSrrMs4qI/hLrKlTH/TGQeTMY0ib1pAOX7vA3AdqE=
61+
github.com/quic-go/quic-go v0.57.0/go.mod h1:ly4QBAjHA2VhdnxhojRsCUOeJwKYg+taDlos92xb1+s=
62+
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
63+
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
6464
github.com/sagikazarmark/locafero v0.11.0 h1:1iurJgmM9G3PA/I+wWYIOw/5SyBtxapeHDcg+AAIFXc=
6565
github.com/sagikazarmark/locafero v0.11.0/go.mod h1:nVIGvgyzw595SUSUE6tvCp3YYTeHs15MvlmU87WwIik=
6666
github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw=
@@ -88,32 +88,28 @@ github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS
8888
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
8989
github.com/ugorji/go/codec v1.3.0 h1:Qd2W2sQawAfG8XSvzwhBeoGq71zXOC/Q1E9y/wUcsUA=
9090
github.com/ugorji/go/codec v1.3.0/go.mod h1:pRBVtBSKl77K30Bv8R2P+cLSGaTtex6fsA2Wjqmfxj4=
91-
go.uber.org/mock v0.5.0 h1:KAMbZvZPyBPWgD14IrIQ38QCyjwpvVVV6K/bHl1IwQU=
92-
go.uber.org/mock v0.5.0/go.mod h1:ge71pBPLYDk7QIi1LupWxdAykm7KIEFchiOqd6z7qMM=
91+
go.uber.org/mock v0.5.2 h1:LbtPTcP8A5k9WPXj54PPPbjcI4Y6lhyOZXn+VS7wNko=
92+
go.uber.org/mock v0.5.2/go.mod h1:wLlUxC2vVTPTaE3UD51E0BGOAElKrILxhVSDYQLld5o=
9393
go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
9494
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
9595
golang.org/x/arch v0.20.0 h1:dx1zTU0MAE98U+TQ8BLl7XsJbgze2WnNKF/8tGp/Q6c=
9696
golang.org/x/arch v0.20.0/go.mod h1:bdwinDaKcfZUGpH09BB7ZmOfhalA8lQdzl62l8gGWsk=
97-
golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM=
98-
golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY=
99-
golang.org/x/mod v0.26.0 h1:EGMPT//Ezu+ylkCijjPc+f4Aih7sZvaAr+O3EHBxvZg=
100-
golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ=
101-
golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs=
102-
golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8=
103-
golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=
104-
golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
97+
golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4=
98+
golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc=
99+
golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE=
100+
golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg=
105101
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
106102
golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI=
107103
golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
108104
golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng=
109105
golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU=
110-
golang.org/x/tools v0.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0=
111-
golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw=
106+
golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE=
107+
golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
112108
google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw=
113109
google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU=
114110
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
115-
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
116-
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
111+
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
112+
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
117113
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
118114
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
119115
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

ui/src/pages/DashboardPage.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@ onMounted(() => {
174174
suffix="nodes"
175175
:caption="$t('LABEL_UNREPORTED', { dur: unreportedDuration?.humanize() })"
176176
title_color="secondary"
177+
:to="{ name: 'NodeOverview', query: { status: 'unreported' } }"
177178
/>
178179
<DashboardItem
179180
v-model="population"

ui/src/pages/node/NodeOverviewPage.vue

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { useSettingsStore } from 'stores/settings';
55
import { PuppetNodeWithEventCount } from 'src/puppet/models/puppet-node';
66
import NodeTable from 'components/NodeTable.vue';
77
import { useRoute, useRouter } from 'vue-router';
8+
import moment from 'moment';
89
910
const route = useRoute();
1011
const router = useRouter();
@@ -13,13 +14,26 @@ const nodes = ref<PuppetNodeWithEventCount[]>([]);
1314
const settings = useSettingsStore();
1415
const isLoading = ref(false);
1516
const statusFilter = ref<string[]>();
16-
const statusOptions = ['failed', 'changed', 'unchanged', 'pending'];
17+
const statusOptions = ['failed', 'changed', 'unchanged', 'pending', 'unreported'];
18+
const unreportedDate = ref<moment.Moment>();
19+
20+
function loadMeta() {
21+
void Backend.getMeta().then((result) => {
22+
if (result.status === 200 && result.data.Data.UnreportedHours) {
23+
unreportedDate.value = moment().subtract(
24+
moment.duration(result.data.Data.UnreportedHours, 'hours'),
25+
);
26+
}
27+
});
28+
}
1729
1830
function loadData() {
1931
if (!settings.environment) return;
2032
const env = settings.hasEnvironment() ? settings.environment : undefined;
33+
const hasUnreported = statusFilter.value?.includes('unreported');
34+
const apiStatuses = hasUnreported ? undefined : statusFilter.value;
2135
isLoading.value = true;
22-
void Backend.getViewNodeOverview(env, statusFilter.value)
36+
void Backend.getViewNodeOverview(env, apiStatuses)
2337
.then((result) => {
2438
if (result.status === 200) {
2539
nodes.value = result.data.Data.map((s) =>
@@ -33,7 +47,19 @@ function loadData() {
3347
}
3448
3549
const filteredNodes = computed(() => {
36-
return nodes.value.filter((s) => s.certname.includes(filter.value));
50+
let result = nodes.value.filter((s) => s.certname.includes(filter.value));
51+
52+
if (statusFilter.value?.includes('unreported')) {
53+
const ud = unreportedDate.value;
54+
const otherStatuses = statusFilter.value.filter((s) => s !== 'unreported');
55+
result = result.filter((s) => {
56+
const isUnreported = !s.report_timestamp || (ud ? ud.isAfter(s.report_timestamp) : false);
57+
if (otherStatuses.length === 0) return isUnreported;
58+
return isUnreported || otherStatuses.includes(s.latest_report_status);
59+
});
60+
}
61+
62+
return result;
3763
});
3864
3965
function updateRoute() {
@@ -60,8 +86,11 @@ watch(settings, () => {
6086
});
6187
6288
onMounted(() => {
89+
loadMeta();
90+
6391
if (route.query.status) {
64-
statusFilter.value = route.query.status as string[];
92+
const s = route.query.status;
93+
statusFilter.value = (Array.isArray(s) ? s : [s]).filter((v): v is string => v !== null);
6594
}
6695
6796
if (route.query.filter) {

0 commit comments

Comments
 (0)