excubitor-monitoring / excubitor-backend Goto Github PK
View Code? Open in Web Editor NEWBackend for Excubitor. Excubitor is a modular web application to monitor linux servers.
License: GNU General Public License v3.0
Backend for Excubitor. Excubitor is a modular web application to monitor linux servers.
License: GNU General Public License v3.0
The WebSocket API should grant access to various operations. Among them are: GET, SUB, UNSUB, HIST, ERR,
GET: Get a single value
SUB: Get a value every x ms
UNSUB: Unsubscribe from a value
HIST: Get the history of a value with timestamps
ERR: Error message, i.e. value not available or not subscribed to a value when unsubscribing
The values shall be adressed using dot-separated strings like the following: Module.SensorName.ConcreteValue
This should be done using a database. Ideas include using SQLite and a Redis database.
fatal error: concurrent map writes
goroutine 109 [running]:
github.com/Excubitor-Monitoring/Excubitor-Backend/internal/pubsub.(*Broker).Unsubscribe(0xc0001dc380, 0xc000134140, {0xc000114610, 0xd})
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/pubsub/broker.go:67 +0x1da
github.com/Excubitor-Monitoring/Excubitor-Backend/internal/http_server/websocket.handleGET.func1.1()
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/http_server/websocket/websocket.go:141 +0x1c6
sync.(*Once).doSlow(0x10?, 0xc000100800?)
/usr/lib/golang/src/sync/once.go:74 +0xc2
sync.(*Once).Do(...)
/usr/lib/golang/src/sync/once.go:65
github.com/Excubitor-Monitoring/Excubitor-Backend/internal/http_server/websocket.handleGET.func1(0xc0005022a0?)
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/http_server/websocket/websocket.go:138 +0x85
github.com/Excubitor-Monitoring/Excubitor-Backend/internal/pubsub.(*Subscriber).Listen(0xc000134140, 0xc000514540)
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/pubsub/subscriber.go:80 +0x17a
created by github.com/Excubitor-Monitoring/Excubitor-Backend/internal/http_server/websocket.handleGET
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/http_server/websocket/websocket.go:137 +0x26d
goroutine 1 [IO wait]:
internal/poll.runtime_pollWait(0x7f82385a31c8, 0x72)
/usr/lib/golang/src/runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xc000548000?, 0x4?, 0x0)
/usr/lib/golang/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/lib/golang/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Accept(0xc000548000)
/usr/lib/golang/src/internal/poll/fd_unix.go:614 +0x2bd
net.(*netFD).accept(0xc000548000)
/usr/lib/golang/src/net/fd_unix.go:172 +0x35
net.(*TCPListener).accept(0xc000500768)
/usr/lib/golang/src/net/tcpsock_posix.go:148 +0x25
net.(*TCPListener).Accept(0xc000500768)
/usr/lib/golang/src/net/tcpsock.go:297 +0x3d
net/http.(*Server).Serve(0xc000546000, {0xf49cf0, 0xc000500768})
/usr/lib/golang/src/net/http/server.go:3059 +0x385
net/http.(*Server).ListenAndServe(0xc000546000)
/usr/lib/golang/src/net/http/server.go:2988 +0x7d
net/http.ListenAndServe(...)
/usr/lib/golang/src/net/http/server.go:3242
github.com/Excubitor-Monitoring/Excubitor-Backend/internal/http_server.Start()
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/http_server/http_server.go:29 +0x265
github.com/Excubitor-Monitoring/Excubitor-Backend/internal/excubitor.Execute()
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/excubitor/root.go:129 +0x6b7
main.main()
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/cmd/main.go:8 +0x19
goroutine 6 [select]:
database/sql.(*DB).connectionOpener(0xc000195520, {0xf4a4a0, 0xc0000a2a50})
/usr/lib/golang/src/database/sql/sql.go:1218 +0x8d
created by database/sql.OpenDB
/usr/lib/golang/src/database/sql/sql.go:791 +0x18d
goroutine 7 [sleep]:
time.Sleep(0x34630b8a000)
/usr/lib/golang/src/runtime/time.go:195 +0x135
github.com/Excubitor-Monitoring/Excubitor-Backend/internal/db.startPurgeCycle.func1()
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/db/database.go:90 +0x36
created by github.com/Excubitor-Monitoring/Excubitor-Backend/internal/db.startPurgeCycle
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/db/database.go:84 +0xdf
goroutine 8 [runnable]:
compress/flate.NewWriter({0xf44600, 0xc000450820}, 0xc0003b9c68?)
/usr/lib/golang/src/compress/flate/deflate.go:666 +0x2f
compress/flate.NewWriterDict({0xf445a0?, 0xc000408690}, 0x2?, {0x0, 0x0, 0x0})
/usr/lib/golang/src/compress/flate/deflate.go:681 +0x8f
compress/zlib.(*Writer).writeHeader(0xc000110120)
/usr/lib/golang/src/compress/zlib/writer.go:132 +0x165
compress/zlib.(*Writer).Write(0xc000110120, {0xc0000e4900, 0x477, 0x480})
/usr/lib/golang/src/compress/zlib/writer.go:146 +0x37
github.com/Excubitor-Monitoring/Excubitor-Backend/internal/db.compress({0xc0000e4480, 0x477})
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/db/compression.go:16 +0x7a
github.com/Excubitor-Monitoring/Excubitor-Backend/internal/db.(*Writer).AddHistoryEntry(0xc0003b9e88?, {0xc0001143b0, 0xd}, {0xc0000e4480, 0x477})
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/db/writer.go:25 +0x8e
github.com/Excubitor-Monitoring/Excubitor-Backend/internal/pubsub.(*Broker).Publish(0xc0001dc380, {0xc0001143b0, 0xd}, {0xc0000e4480, 0x477})
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/pubsub/broker.go:93 +0x345
github.com/Excubitor-Monitoring/Excubitor-Backend/internal/plugins.InitPlugins.func1()
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/plugins/loader.go:91 +0x85
github.com/Excubitor-Monitoring/Excubitor-Backend/internal/context.startClock.func1.1()
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/context/clock.go:24 +0x79
created by github.com/Excubitor-Monitoring/Excubitor-Backend/internal/context.startClock.func1
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/context/clock.go:20 +0x65
goroutine 9 [IO wait]:
internal/poll.runtime_pollWait(0x7f82385a32b8, 0x72)
/usr/lib/golang/src/runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xc000098a20?, 0xc000292000?, 0x1)
/usr/lib/golang/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/lib/golang/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000098a20, {0xc000292000, 0x10000, 0x10000})
/usr/lib/golang/src/internal/poll/fd_unix.go:167 +0x299
os.(*File).read(...)
/usr/lib/golang/src/os/file_posix.go:31
os.(*File).Read(0xc000014848, {0xc000292000?, 0xc0002b37a0?, 0x7f82384c3408?})
/usr/lib/golang/src/os/file.go:118 +0x5e
bufio.(*Reader).fill(0xc000206f40)
/usr/lib/golang/src/bufio/bufio.go:106 +0xff
bufio.(*Reader).ReadSlice(0xc000206f40, 0x1a?)
/usr/lib/golang/src/bufio/bufio.go:372 +0x2f
bufio.(*Reader).ReadLine(0xc000206f40)
/usr/lib/golang/src/bufio/bufio.go:401 +0x27
github.com/hashicorp/go-plugin.(*Client).logStderr(0xc0000e7550, {0xf459a0?, 0xc000014848?})
/home/uggah/go/pkg/mod/github.com/hashicorp/[email protected]/client.go:1002 +0x295
created by github.com/hashicorp/go-plugin.(*Client).Start
/home/uggah/go/pkg/mod/github.com/hashicorp/[email protected]/client.go:634 +0x145e
goroutine 10 [semacquire]:
sync.runtime_Semacquire(0x0?)
/usr/lib/golang/src/runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0x0?)
/usr/lib/golang/src/sync/waitgroup.go:116 +0x4b
github.com/hashicorp/go-plugin.(*Client).Start.func2()
/home/uggah/go/pkg/mod/github.com/hashicorp/[email protected]/client.go:650 +0xcb
created by github.com/hashicorp/go-plugin.(*Client).Start
/home/uggah/go/pkg/mod/github.com/hashicorp/[email protected]/client.go:637 +0x14d0
goroutine 11 [IO wait]:
internal/poll.runtime_pollWait(0x7f82385a3498, 0x72)
/usr/lib/golang/src/runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xc000098960?, 0xc0001f3027?, 0x1)
/usr/lib/golang/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/lib/golang/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000098960, {0xc0001f3027, 0xfd9, 0xfd9})
/usr/lib/golang/src/internal/poll/fd_unix.go:167 +0x299
os.(*File).read(...)
/usr/lib/golang/src/os/file_posix.go:31
os.(*File).Read(0xc000014838, {0xc0001f3027?, 0xc000068ea0?, 0x40fc05?})
/usr/lib/golang/src/os/file.go:118 +0x5e
bufio.(*Scanner).Scan(0xc000068f40)
/usr/lib/golang/src/bufio/scan.go:214 +0x876
github.com/hashicorp/go-plugin.(*Client).Start.func3()
/home/uggah/go/pkg/mod/github.com/hashicorp/[email protected]/client.go:685 +0x133
created by github.com/hashicorp/go-plugin.(*Client).Start
/home/uggah/go/pkg/mod/github.com/hashicorp/[email protected]/client.go:680 +0x158f
goroutine 18 [chan receive]:
github.com/hashicorp/go-plugin.(*Client).Start.func4.1()
/home/uggah/go/pkg/mod/github.com/hashicorp/[email protected]/client.go:698 +0x7f
created by github.com/hashicorp/go-plugin.(*Client).Start.func4
/home/uggah/go/pkg/mod/github.com/hashicorp/[email protected]/client.go:696 +0x7a
goroutine 19 [IO wait]:
internal/poll.runtime_pollWait(0x7f82385a30d8, 0x72)
/usr/lib/golang/src/runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xc0002bc000?, 0xc0002d2000?, 0x0)
/usr/lib/golang/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/lib/golang/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0002bc000, {0xc0002d2000, 0x1000, 0x1000})
/usr/lib/golang/src/internal/poll/fd_unix.go:167 +0x299
net.(*netFD).Read(0xc0002bc000, {0xc0002d2000?, 0xf44540?, 0xc0005020c0?})
/usr/lib/golang/src/net/fd_posix.go:55 +0x29
net.(*conn).Read(0xc0002a4010, {0xc0002d2000?, 0xc00050aef0?, 0x927c30?})
/usr/lib/golang/src/net/net.go:183 +0x45
bufio.(*Reader).Read(0xc0002ba060, {0xc000400060, 0xc, 0x455dd2?})
/usr/lib/golang/src/bufio/bufio.go:237 +0x1bb
io.ReadAtLeast({0xf44540, 0xc0002ba060}, {0xc000400060, 0xc, 0xc}, 0xc)
/usr/lib/golang/src/io/io.go:332 +0x9a
io.ReadFull(...)
/usr/lib/golang/src/io/io.go:351
github.com/hashicorp/yamux.(*Session).recvLoop(0xc0002dc000)
/home/uggah/go/pkg/mod/github.com/hashicorp/[email protected]/session.go:453 +0xbe
github.com/hashicorp/yamux.(*Session).recv(0x0?)
/home/uggah/go/pkg/mod/github.com/hashicorp/[email protected]/session.go:432 +0x1e
created by github.com/hashicorp/yamux.newSession
/home/uggah/go/pkg/mod/github.com/hashicorp/[email protected]/session.go:108 +0x4aa
goroutine 20 [select]:
github.com/hashicorp/yamux.(*Session).send(0xc0002dc000)
/home/uggah/go/pkg/mod/github.com/hashicorp/[email protected]/session.go:394 +0xb4
created by github.com/hashicorp/yamux.newSession
/home/uggah/go/pkg/mod/github.com/hashicorp/[email protected]/session.go:109 +0x4ea
goroutine 21 [select]:
github.com/hashicorp/yamux.(*Session).keepalive(0xc0002dc000)
/home/uggah/go/pkg/mod/github.com/hashicorp/[email protected]/session.go:308 +0x85
created by github.com/hashicorp/yamux.newSession
/home/uggah/go/pkg/mod/github.com/hashicorp/[email protected]/session.go:111 +0x536
goroutine 22 [select]:
github.com/hashicorp/yamux.(*Session).AcceptStream(0xc0002dc000)
/home/uggah/go/pkg/mod/github.com/hashicorp/[email protected]/session.go:207 +0x6f
github.com/hashicorp/go-plugin.(*MuxBroker).Run(0xc0002b4120)
/home/uggah/go/pkg/mod/github.com/hashicorp/[email protected]/mux_broker.go:142 +0x30
created by github.com/hashicorp/go-plugin.NewRPCClient
/home/uggah/go/pkg/mod/github.com/hashicorp/[email protected]/rpc_client.go:91 +0x225
goroutine 23 [select]:
github.com/hashicorp/yamux.(*Stream).Read(0xc0002e6000, {0xc0002ec000, 0x1000, 0xa7dbc0?})
/home/uggah/go/pkg/mod/github.com/hashicorp/[email protected]/stream.go:133 +0x41b
bufio.(*Reader).Read(0xc0002ba420, {0xc0002a20e0, 0x1, 0xc000531d70?})
/usr/lib/golang/src/bufio/bufio.go:237 +0x1bb
io.ReadAtLeast({0xf44540, 0xc0002ba420}, {0xc0002a20e0, 0x1, 0x9}, 0x1)
/usr/lib/golang/src/io/io.go:332 +0x9a
io.ReadFull(...)
/usr/lib/golang/src/io/io.go:351
encoding/gob.decodeUintReader({0xf44540?, 0xc0002ba420?}, {0xc0002a20e0?, 0x9?, 0x9?})
/usr/lib/golang/src/encoding/gob/decode.go:116 +0x57
encoding/gob.(*Decoder).recvMessage(0xc0002bc200)
/usr/lib/golang/src/encoding/gob/decoder.go:82 +0x39
encoding/gob.(*Decoder).decodeTypeSequence(0xc0002bc200, 0x0)
/usr/lib/golang/src/encoding/gob/decoder.go:148 +0x4f
encoding/gob.(*Decoder).DecodeValue(0xc0002bc200, {0xa6ac80?, 0xc000488000?, 0x7f8238482d28?})
/usr/lib/golang/src/encoding/gob/decoder.go:227 +0x18f
encoding/gob.(*Decoder).Decode(0xc0002bc200, {0xa6ac80?, 0xc000488000?})
/usr/lib/golang/src/encoding/gob/decoder.go:204 +0x165
net/rpc.(*gobClientCodec).ReadResponseHeader(0xaaa000?, 0xa6d480?)
/usr/lib/golang/src/net/rpc/client.go:228 +0x27
net/rpc.(*Client).input(0xc0002ba4e0)
/usr/lib/golang/src/net/rpc/client.go:109 +0xb4
created by net/rpc.NewClientWithCodec
/usr/lib/golang/src/net/rpc/client.go:206 +0xc5
goroutine 24 [select]:
github.com/hashicorp/yamux.(*Stream).Read(0xc0002e60c0, {0xc0001fc000, 0x2000, 0x0?})
/home/uggah/go/pkg/mod/github.com/hashicorp/[email protected]/stream.go:133 +0x41b
io.discard.ReadFrom({}, {0xf44c60, 0xc0002e60c0})
/usr/lib/golang/src/io/io.go:651 +0x72
io.copyBuffer({0xf46280, 0x1354d80}, {0xf44c60, 0xc0002e60c0}, {0x0, 0x0, 0x0})
/usr/lib/golang/src/io/io.go:413 +0x14b
io.Copy(...)
/usr/lib/golang/src/io/io.go:386
github.com/hashicorp/go-plugin.copyStream({0xb57868, 0x6}, {0xf46280?, 0x1354d80?}, {0xf44c60?, 0xc0002e60c0?})
/home/uggah/go/pkg/mod/github.com/hashicorp/[email protected]/stream.go:18 +0x78
created by github.com/hashicorp/go-plugin.(*RPCClient).SyncStreams
/home/uggah/go/pkg/mod/github.com/hashicorp/[email protected]/rpc_client.go:111 +0xcd
goroutine 25 [select]:
github.com/hashicorp/yamux.(*Stream).Read(0xc0002e6180, {0xc000430000, 0x2000, 0x0?})
/home/uggah/go/pkg/mod/github.com/hashicorp/[email protected]/stream.go:133 +0x41b
io.discard.ReadFrom({}, {0xf44c60, 0xc0002e6180})
/usr/lib/golang/src/io/io.go:651 +0x72
io.copyBuffer({0xf46280, 0x1354d80}, {0xf44c60, 0xc0002e6180}, {0x0, 0x0, 0x0})
/usr/lib/golang/src/io/io.go:413 +0x14b
io.Copy(...)
/usr/lib/golang/src/io/io.go:386
github.com/hashicorp/go-plugin.copyStream({0xb57862, 0x6}, {0xf46280?, 0x1354d80?}, {0xf44c60?, 0xc0002e6180?})
/home/uggah/go/pkg/mod/github.com/hashicorp/[email protected]/stream.go:18 +0x78
created by github.com/hashicorp/go-plugin.(*RPCClient).SyncStreams
/home/uggah/go/pkg/mod/github.com/hashicorp/[email protected]/rpc_client.go:112 +0x165
goroutine 34 [select]:
github.com/hashicorp/yamux.(*Stream).Read(0xc000536000, {0xc000437000, 0x1000, 0xa715e0?})
/home/uggah/go/pkg/mod/github.com/hashicorp/[email protected]/stream.go:133 +0x41b
bufio.(*Reader).Read(0xc00041e180, {0xc000400070, 0x1, 0xc000637d70?})
/usr/lib/golang/src/bufio/bufio.go:237 +0x1bb
io.ReadAtLeast({0xf44540, 0xc00041e180}, {0xc000400070, 0x1, 0x9}, 0x1)
/usr/lib/golang/src/io/io.go:332 +0x9a
io.ReadFull(...)
/usr/lib/golang/src/io/io.go:351
encoding/gob.decodeUintReader({0xf44540?, 0xc00041e180?}, {0xc000400070?, 0x9?, 0x9?})
/usr/lib/golang/src/encoding/gob/decode.go:116 +0x57
encoding/gob.(*Decoder).recvMessage(0xc000418080)
/usr/lib/golang/src/encoding/gob/decoder.go:82 +0x39
encoding/gob.(*Decoder).decodeTypeSequence(0xc000418080, 0x0)
/usr/lib/golang/src/encoding/gob/decoder.go:148 +0x4f
encoding/gob.(*Decoder).DecodeValue(0xc000418080, {0xa6ac80?, 0xc0002aa5a0?, 0x7f8238543048?})
/usr/lib/golang/src/encoding/gob/decoder.go:227 +0x18f
encoding/gob.(*Decoder).Decode(0xc000418080, {0xa6ac80?, 0xc0002aa5a0?})
/usr/lib/golang/src/encoding/gob/decoder.go:204 +0x165
net/rpc.(*gobClientCodec).ReadResponseHeader(0xaaa000?, 0xa5ee80?)
/usr/lib/golang/src/net/rpc/client.go:228 +0x27
net/rpc.(*Client).input(0xc00041e240)
/usr/lib/golang/src/net/rpc/client.go:109 +0xb4
created by net/rpc.NewClientWithCodec
/usr/lib/golang/src/net/rpc/client.go:206 +0xc5
goroutine 13 [IO wait]:
internal/poll.runtime_pollWait(0x7f82385a2fe8, 0x72)
/usr/lib/golang/src/runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xc000384100?, 0xc0002ed000?, 0x0)
/usr/lib/golang/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/lib/golang/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000384100, {0xc0002ed000, 0x1000, 0x1000})
/usr/lib/golang/src/internal/poll/fd_unix.go:167 +0x299
net.(*netFD).Read(0xc000384100, {0xc0002ed000?, 0x4dedc6?, 0x0?})
/usr/lib/golang/src/net/fd_posix.go:55 +0x29
net.(*conn).Read(0xc000210000, {0xc0002ed000?, 0x0?, 0xc00039c0c8?})
/usr/lib/golang/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc00039c0c0, {0xc0002ed000, 0x1000, 0x1000})
/usr/lib/golang/src/net/http/server.go:782 +0x171
bufio.(*Reader).fill(0xc000098660)
/usr/lib/golang/src/bufio/bufio.go:106 +0xff
bufio.(*Reader).Peek(0xc000098660, 0x4)
/usr/lib/golang/src/bufio/bufio.go:144 +0x5d
net/http.(*conn).serve(0xc0000fa000, {0xf4a548, 0xc000504960})
/usr/lib/golang/src/net/http/server.go:2030 +0x77c
created by net/http.(*Server).Serve
/usr/lib/golang/src/net/http/server.go:3089 +0x5ed
goroutine 57 [IO wait]:
internal/poll.runtime_pollWait(0x7f82385a33a8, 0x72)
/usr/lib/golang/src/runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xc00003c080?, 0xc000660000?, 0x0)
/usr/lib/golang/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/lib/golang/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00003c080, {0xc000660000, 0x1000, 0x1000})
/usr/lib/golang/src/internal/poll/fd_unix.go:167 +0x299
net.(*netFD).Read(0xc00003c080, {0xc000660000?, 0x4dedc6?, 0x0?})
/usr/lib/golang/src/net/fd_posix.go:55 +0x29
net.(*conn).Read(0xc000116000, {0xc000660000?, 0x0?, 0xc0001e8158?})
/usr/lib/golang/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc0001e8150, {0xc000660000, 0x1000, 0x1000})
/usr/lib/golang/src/net/http/server.go:782 +0x171
bufio.(*Reader).fill(0xc0001100c0)
/usr/lib/golang/src/bufio/bufio.go:106 +0xff
bufio.(*Reader).Peek(0xc0001100c0, 0x4)
/usr/lib/golang/src/bufio/bufio.go:144 +0x5d
net/http.(*conn).serve(0xc0003c2000, {0xf4a548, 0xc000504960})
/usr/lib/golang/src/net/http/server.go:2030 +0x77c
created by net/http.(*Server).Serve
/usr/lib/golang/src/net/http/server.go:3089 +0x5ed
goroutine 15 [IO wait]:
internal/poll.runtime_pollWait(0x7f82385a2e08, 0x72)
/usr/lib/golang/src/runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xc000384400?, 0xc000114670?, 0x0)
/usr/lib/golang/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/lib/golang/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000384400, {0xc000114670, 0x2, 0xc})
/usr/lib/golang/src/internal/poll/fd_unix.go:167 +0x299
net.(*netFD).Read(0xc000384400, {0xc000114670?, 0x5c7209?, 0x1?})
/usr/lib/golang/src/net/fd_posix.go:55 +0x29
net.(*conn).Read(0xc000210038, {0xc000114670?, 0x7f82385c3a48?, 0x7f826114a108?})
/usr/lib/golang/src/net/net.go:183 +0x45
io.ReadAtLeast({0xf456a0, 0xc000210038}, {0xc000114670, 0x2, 0xc}, 0x2)
/usr/lib/golang/src/io/io.go:332 +0x9a
io.ReadFull(...)
/usr/lib/golang/src/io/io.go:351
github.com/gobwas/ws.ReadHeader({0xf456a0, 0xc000210038})
/home/uggah/go/pkg/mod/github.com/gobwas/[email protected]/read.go:25 +0x65
github.com/gobwas/ws/wsutil.(*Reader).NextFrame(0xc00047c460)
/home/uggah/go/pkg/mod/github.com/gobwas/[email protected]/wsutil/reader.go:168 +0x46
github.com/gobwas/ws/wsutil.readData({0x7f823850caf8?, 0xc000210038}, 0x1, 0x3)
/home/uggah/go/pkg/mod/github.com/gobwas/[email protected]/wsutil/helper.go:258 +0x165
github.com/gobwas/ws/wsutil.ReadData(...)
/home/uggah/go/pkg/mod/github.com/gobwas/[email protected]/wsutil/helper.go:88
github.com/gobwas/ws/wsutil.ReadClientData({0x7f823850caf8?, 0xc000210038?})
/home/uggah/go/pkg/mod/github.com/gobwas/[email protected]/wsutil/helper.go:97 +0x2d
github.com/Excubitor-Monitoring/Excubitor-Backend/internal/http_server/websocket.HandleWebsocket({0xf4cfc0, 0xc000210038})
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/http_server/websocket/websocket.go:58 +0x377
github.com/Excubitor-Monitoring/Excubitor-Backend/internal/http_server.wsInit({0xf49ed0?, 0xc0000fe0e0?}, 0xc0000e2300)
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/http_server/http_server.go:65 +0x19e
net/http.HandlerFunc.ServeHTTP(0xf49ed0?, {0xf49ed0?, 0xc0000fe0e0?}, 0xc0000d200e?)
/usr/lib/golang/src/net/http/server.go:2122 +0x2f
github.com/Excubitor-Monitoring/Excubitor-Backend/internal/http_server.queryAuth.func1({0xf49ed0, 0xc0000fe0e0}, 0xc0000e2300)
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/http_server/authentication.go:240 +0x1a9
net/http.HandlerFunc.ServeHTTP(0xf46380?, {0xf49ed0?, 0xc0000fe0e0?}, 0x3?)
/usr/lib/golang/src/net/http/server.go:2122 +0x2f
github.com/Excubitor-Monitoring/Excubitor-Backend/internal/http_server.Serve({0xf49ed0, 0xc0000fe0e0}, 0xc0000e2300)
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/http_server/router.go:48 +0x9e7
net/http.HandlerFunc.ServeHTTP(0xc0005360c0?, {0xf49ed0?, 0xc0000fe0e0?}, 0xc0000e2300?)
/usr/lib/golang/src/net/http/server.go:2122 +0x2f
github.com/rs/cors.(*Cors).Handler.func1({0xf49ed0, 0xc0000fe0e0}, 0xc0000e2300)
/home/uggah/go/pkg/mod/github.com/rs/[email protected]/cors.go:236 +0x1c4
net/http.HandlerFunc.ServeHTTP(0xc0000d2008?, {0xf49ed0?, 0xc0000fe0e0?}, 0x46eb2e?)
/usr/lib/golang/src/net/http/server.go:2122 +0x2f
net/http.serverHandler.ServeHTTP({0xc00039c570?}, {0xf49ed0, 0xc0000fe0e0}, 0xc0000e2300)
/usr/lib/golang/src/net/http/server.go:2936 +0x316
net/http.(*conn).serve(0xc0000fa480, {0xf4a548, 0xc000504960})
/usr/lib/golang/src/net/http/server.go:1995 +0x612
created by net/http.(*Server).Serve
/usr/lib/golang/src/net/http/server.go:3089 +0x5ed
goroutine 60 [IO wait]:
internal/poll.runtime_pollWait(0x7f82385a2ef8, 0x72)
/usr/lib/golang/src/runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xc00003c400?, 0xc0001143c0?, 0x0)
/usr/lib/golang/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/lib/golang/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00003c400, {0xc0001143c0, 0x2, 0xc})
/usr/lib/golang/src/internal/poll/fd_unix.go:167 +0x299
net.(*netFD).Read(0xc00003c400, {0xc0001143c0?, 0xc0002b2300?, 0x680846?})
/usr/lib/golang/src/net/fd_posix.go:55 +0x29
net.(*conn).Read(0xc000116060, {0xc0001143c0?, 0x7f82385c3a48?, 0x7f826114aa68?})
/usr/lib/golang/src/net/net.go:183 +0x45
io.ReadAtLeast({0xf456a0, 0xc000116060}, {0xc0001143c0, 0x2, 0xc}, 0x2)
/usr/lib/golang/src/io/io.go:332 +0x9a
io.ReadFull(...)
/usr/lib/golang/src/io/io.go:351
github.com/gobwas/ws.ReadHeader({0xf456a0, 0xc000116060})
/home/uggah/go/pkg/mod/github.com/gobwas/[email protected]/read.go:25 +0x65
github.com/gobwas/ws/wsutil.(*Reader).NextFrame(0xc0003b20a0)
/home/uggah/go/pkg/mod/github.com/gobwas/[email protected]/wsutil/reader.go:168 +0x46
github.com/gobwas/ws/wsutil.readData({0x7f823850caf8?, 0xc000116060}, 0x1, 0x3)
/home/uggah/go/pkg/mod/github.com/gobwas/[email protected]/wsutil/helper.go:258 +0x165
github.com/gobwas/ws/wsutil.ReadData(...)
/home/uggah/go/pkg/mod/github.com/gobwas/[email protected]/wsutil/helper.go:88
github.com/gobwas/ws/wsutil.ReadClientData({0x7f823850caf8?, 0xc000116060?})
/home/uggah/go/pkg/mod/github.com/gobwas/[email protected]/wsutil/helper.go:97 +0x2d
github.com/Excubitor-Monitoring/Excubitor-Backend/internal/http_server/websocket.HandleWebsocket({0xf4cfc0, 0xc000116060})
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/http_server/websocket/websocket.go:58 +0x377
github.com/Excubitor-Monitoring/Excubitor-Backend/internal/http_server.wsInit({0xf49ed0?, 0xc00066a1c0?}, 0xc000662300)
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/http_server/http_server.go:65 +0x19e
net/http.HandlerFunc.ServeHTTP(0xf49ed0?, {0xf49ed0?, 0xc00066a1c0?}, 0xc0001b400e?)
/usr/lib/golang/src/net/http/server.go:2122 +0x2f
github.com/Excubitor-Monitoring/Excubitor-Backend/internal/http_server.queryAuth.func1({0xf49ed0, 0xc00066a1c0}, 0xc000662300)
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/http_server/authentication.go:240 +0x1a9
net/http.HandlerFunc.ServeHTTP(0xf46380?, {0xf49ed0?, 0xc00066a1c0?}, 0x3?)
/usr/lib/golang/src/net/http/server.go:2122 +0x2f
github.com/Excubitor-Monitoring/Excubitor-Backend/internal/http_server.Serve({0xf49ed0, 0xc00066a1c0}, 0xc000662300)
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/http_server/router.go:48 +0x9e7
net/http.HandlerFunc.ServeHTTP(0xc0005360c0?, {0xf49ed0?, 0xc00066a1c0?}, 0xc000662300?)
/usr/lib/golang/src/net/http/server.go:2122 +0x2f
github.com/rs/cors.(*Cors).Handler.func1({0xf49ed0, 0xc00066a1c0}, 0xc000662300)
/home/uggah/go/pkg/mod/github.com/rs/[email protected]/cors.go:236 +0x1c4
net/http.HandlerFunc.ServeHTTP(0xc0001b4008?, {0xf49ed0?, 0xc00066a1c0?}, 0x46eb2e?)
/usr/lib/golang/src/net/http/server.go:2122 +0x2f
net/http.serverHandler.ServeHTTP({0xc0001e88d0?}, {0xf49ed0, 0xc00066a1c0}, 0xc000662300)
/usr/lib/golang/src/net/http/server.go:2936 +0x316
net/http.(*conn).serve(0xc0003c2480, {0xf4a548, 0xc000504960})
/usr/lib/golang/src/net/http/server.go:1995 +0x612
created by net/http.(*Server).Serve
/usr/lib/golang/src/net/http/server.go:3089 +0x5ed
goroutine 62 [chan receive]:
github.com/Excubitor-Monitoring/Excubitor-Backend/internal/pubsub.(*Subscriber).Listen(0xc000134370, 0xc0001e8ae0)
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/pubsub/subscriber.go:78 +0x6c
created by github.com/Excubitor-Monitoring/Excubitor-Backend/internal/http_server/websocket.HandleWebsocket
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/http_server/websocket/websocket.go:47 +0x32a
goroutine 98 [chan receive]:
github.com/Excubitor-Monitoring/Excubitor-Backend/internal/pubsub.(*Subscriber).Listen(0xc0000a25a0, 0xc00039c780)
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/pubsub/subscriber.go:78 +0x6c
created by github.com/Excubitor-Monitoring/Excubitor-Backend/internal/http_server/websocket.HandleWebsocket
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/http_server/websocket/websocket.go:47 +0x32a
goroutine 74 [IO wait]:
internal/poll.runtime_pollWait(0x7f82385a2d18, 0x72)
/usr/lib/golang/src/runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xc000418000?, 0xc00014a000?, 0x0)
/usr/lib/golang/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/lib/golang/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000418000, {0xc00014a000, 0x1000, 0x1000})
/usr/lib/golang/src/internal/poll/fd_unix.go:167 +0x299
net.(*netFD).Read(0xc000418000, {0xc00014a000?, 0x4dedc6?, 0x0?})
/usr/lib/golang/src/net/fd_posix.go:55 +0x29
net.(*conn).Read(0xc0002a4000, {0xc00014a000?, 0x0?, 0xc000408248?})
/usr/lib/golang/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc000408240, {0xc00014a000, 0x1000, 0x1000})
/usr/lib/golang/src/net/http/server.go:782 +0x171
bufio.(*Reader).fill(0xc0002ba000)
/usr/lib/golang/src/bufio/bufio.go:106 +0xff
bufio.(*Reader).Peek(0xc0002ba000, 0x4)
/usr/lib/golang/src/bufio/bufio.go:144 +0x5d
net/http.(*conn).serve(0xc000406000, {0xf4a548, 0xc000504960})
/usr/lib/golang/src/net/http/server.go:2030 +0x77c
created by net/http.(*Server).Serve
/usr/lib/golang/src/net/http/server.go:3089 +0x5ed
goroutine 63 [IO wait]:
internal/poll.runtime_pollWait(0x7f82385a2c28, 0x72)
/usr/lib/golang/src/runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xc00003c480?, 0xc000160000?, 0x0)
/usr/lib/golang/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/lib/golang/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00003c480, {0xc000160000, 0x1000, 0x1000})
/usr/lib/golang/src/internal/poll/fd_unix.go:167 +0x299
net.(*netFD).Read(0xc00003c480, {0xc000160000?, 0x4dedc6?, 0x0?})
/usr/lib/golang/src/net/fd_posix.go:55 +0x29
net.(*conn).Read(0xc000116088, {0xc000160000?, 0x0?, 0xc000408368?})
/usr/lib/golang/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc000408360, {0xc000160000, 0x1000, 0x1000})
/usr/lib/golang/src/net/http/server.go:782 +0x171
bufio.(*Reader).fill(0xc0002ba540)
/usr/lib/golang/src/bufio/bufio.go:106 +0xff
bufio.(*Reader).Peek(0xc0002ba540, 0x4)
/usr/lib/golang/src/bufio/bufio.go:144 +0x5d
net/http.(*conn).serve(0xc0003c26c0, {0xf4a548, 0xc000504960})
/usr/lib/golang/src/net/http/server.go:2030 +0x77c
created by net/http.(*Server).Serve
/usr/lib/golang/src/net/http/server.go:3089 +0x5ed
goroutine 64 [IO wait]:
internal/poll.runtime_pollWait(0x7f82385a2b38, 0x72)
/usr/lib/golang/src/runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xc00003c500?, 0xc0001b7000?, 0x0)
/usr/lib/golang/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/lib/golang/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00003c500, {0xc0001b7000, 0x1000, 0x1000})
/usr/lib/golang/src/internal/poll/fd_unix.go:167 +0x299
net.(*netFD).Read(0xc00003c500, {0xc0001b7000?, 0x4dedc6?, 0x0?})
/usr/lib/golang/src/net/fd_posix.go:55 +0x29
net.(*conn).Read(0xc0001160a0, {0xc0001b7000?, 0x0?, 0xc0001e8c08?})
/usr/lib/golang/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc0001e8c00, {0xc0001b7000, 0x1000, 0x1000})
/usr/lib/golang/src/net/http/server.go:782 +0x171
bufio.(*Reader).fill(0xc000110420)
/usr/lib/golang/src/bufio/bufio.go:106 +0xff
bufio.(*Reader).Peek(0xc000110420, 0x4)
/usr/lib/golang/src/bufio/bufio.go:144 +0x5d
net/http.(*conn).serve(0xc0003c2750, {0xf4a548, 0xc000504960})
/usr/lib/golang/src/net/http/server.go:2030 +0x77c
created by net/http.(*Server).Serve
/usr/lib/golang/src/net/http/server.go:3089 +0x5ed
goroutine 79 [IO wait]:
internal/poll.runtime_pollWait(0x7f82385a2958, 0x72)
/usr/lib/golang/src/runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xc000384000?, 0xc0001cb000?, 0x0)
/usr/lib/golang/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/lib/golang/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000384000, {0xc0001cb000, 0x1000, 0x1000})
/usr/lib/golang/src/internal/poll/fd_unix.go:167 +0x299
net.(*netFD).Read(0xc000384000, {0xc0001cb000?, 0x4dedc6?, 0x0?})
/usr/lib/golang/src/net/fd_posix.go:55 +0x29
net.(*conn).Read(0xc000014008, {0xc0001cb000?, 0x0?, 0xc0004521b8?})
/usr/lib/golang/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc0004521b0, {0xc0001cb000, 0x1000, 0x1000})
/usr/lib/golang/src/net/http/server.go:782 +0x171
bufio.(*Reader).fill(0xc0002ba600)
/usr/lib/golang/src/bufio/bufio.go:106 +0xff
bufio.(*Reader).Peek(0xc0002ba600, 0x4)
/usr/lib/golang/src/bufio/bufio.go:144 +0x5d
net/http.(*conn).serve(0xc0000fa1b0, {0xf4a548, 0xc000504960})
/usr/lib/golang/src/net/http/server.go:2030 +0x77c
created by net/http.(*Server).Serve
/usr/lib/golang/src/net/http/server.go:3089 +0x5ed
goroutine 77 [IO wait]:
internal/poll.runtime_pollWait(0x7f82385a2a48, 0x72)
/usr/lib/golang/src/runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xc000418100?, 0xc0000f8000?, 0x0)
/usr/lib/golang/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/lib/golang/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000418100, {0xc0000f8000, 0x1000, 0x1000})
/usr/lib/golang/src/internal/poll/fd_unix.go:167 +0x299
net.(*netFD).Read(0xc000418100, {0xc0000f8000?, 0x4dedc6?, 0x0?})
/usr/lib/golang/src/net/fd_posix.go:55 +0x29
net.(*conn).Read(0xc0002a4008, {0xc0000f8000?, 0x0?, 0xc00039c848?})
/usr/lib/golang/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc00039c840, {0xc0000f8000, 0x1000, 0x1000})
/usr/lib/golang/src/net/http/server.go:782 +0x171
bufio.(*Reader).fill(0xc000098d80)
/usr/lib/golang/src/bufio/bufio.go:106 +0xff
bufio.(*Reader).Peek(0xc000098d80, 0x4)
/usr/lib/golang/src/bufio/bufio.go:144 +0x5d
net/http.(*conn).serve(0xc000406360, {0xf4a548, 0xc000504960})
/usr/lib/golang/src/net/http/server.go:2030 +0x77c
created by net/http.(*Server).Serve
/usr/lib/golang/src/net/http/server.go:3089 +0x5ed
goroutine 102 [IO wait]:
internal/poll.runtime_pollWait(0x7f82385a2868, 0x72)
/usr/lib/golang/src/runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xc000418180?, 0xc000122000?, 0x0)
/usr/lib/golang/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/lib/golang/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000418180, {0xc000122000, 0x1000, 0x1000})
/usr/lib/golang/src/internal/poll/fd_unix.go:167 +0x299
net.(*netFD).Read(0xc000418180, {0xc000122000?, 0x4dedc6?, 0x0?})
/usr/lib/golang/src/net/fd_posix.go:55 +0x29
net.(*conn).Read(0xc0001160d0, {0xc000122000?, 0x0?, 0xc00012e188?})
/usr/lib/golang/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc00012e180, {0xc000122000, 0x1000, 0x1000})
/usr/lib/golang/src/net/http/server.go:782 +0x171
bufio.(*Reader).fill(0xc0002ba780)
/usr/lib/golang/src/bufio/bufio.go:106 +0xff
bufio.(*Reader).Peek(0xc0002ba780, 0x4)
/usr/lib/golang/src/bufio/bufio.go:144 +0x5d
net/http.(*conn).serve(0xc0003c22d0, {0xf4a548, 0xc000504960})
/usr/lib/golang/src/net/http/server.go:2030 +0x77c
created by net/http.(*Server).Serve
/usr/lib/golang/src/net/http/server.go:3089 +0x5ed
goroutine 108 [runnable]:
bytes.growSlice.func1()
/usr/lib/golang/src/bytes/buffer.go:221 +0x57
bytes.growSlice({0xc00042e400, 0x100, 0x3d?}, 0xc0004908e0?)
/usr/lib/golang/src/bytes/buffer.go:242 +0x125
bytes.(*Buffer).grow(0xc000384080, 0x1)
/usr/lib/golang/src/bytes/buffer.go:142 +0x14f
bytes.(*Buffer).WriteByte(0xc000384080, 0x5c)
/usr/lib/golang/src/bytes/buffer.go:280 +0x52
encoding/json.(*encodeState).string(0xc000384080, {0xc0000e4480, 0x477}, 0x1)
/usr/lib/golang/src/encoding/json/encode.go:1041 +0xeb
encoding/json.stringEncoder(0xc000384080, {0xa7d980?, 0xc00012e020?, 0x422f91?}, {0x0?, 0x0?})
/usr/lib/golang/src/encoding/json/encode.go:645 +0x20a
encoding/json.structEncoder.encode({{{0xc0003c6480?, 0x42ace5?, 0x1356520?}, 0xc00012e300?}}, 0xc000384080, {0xb05aa0?, 0xc00012e000?, 0x0?}, {0x0, 0x1})
/usr/lib/golang/src/encoding/json/encode.go:759 +0x1f4
encoding/json.(*encodeState).reflectValue(0xc000384080?, {0xb05aa0?, 0xc00012e000?, 0x4175e7?}, {0x78?, 0x0?})
/usr/lib/golang/src/encoding/json/encode.go:358 +0x78
encoding/json.(*encodeState).marshal(0x422f91?, {0xb05aa0?, 0xc00012e000?}, {0x68?, 0x73?})
/usr/lib/golang/src/encoding/json/encode.go:330 +0xfa
encoding/json.Marshal({0xb05aa0, 0xc00012e000})
/usr/lib/golang/src/encoding/json/encode.go:161 +0xe5
github.com/Excubitor-Monitoring/Excubitor-Backend/internal/http_server/websocket.Message.Bytes(...)
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/http_server/websocket/message.go:32
github.com/Excubitor-Monitoring/Excubitor-Backend/internal/http_server/websocket.sendMessage({0xf4cfc0, 0xc000210038}, {{0xb55f6e, 0x5}, {0xc0001143b0, 0xd}, {0xc0000e4480, 0x477}})
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/http_server/websocket/websocket.go:248 +0xb9
github.com/Excubitor-Monitoring/Excubitor-Backend/internal/http_server/websocket.handleGET.func1.1()
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/http_server/websocket/websocket.go:144 +0x28c
sync.(*Once).doSlow(0x10?, 0xc000071400?)
/usr/lib/golang/src/sync/once.go:74 +0xc2
sync.(*Once).Do(...)
/usr/lib/golang/src/sync/once.go:65
github.com/Excubitor-Monitoring/Excubitor-Backend/internal/http_server/websocket.handleGET.func1(0xc000036480?)
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/http_server/websocket/websocket.go:138 +0x85
github.com/Excubitor-Monitoring/Excubitor-Backend/internal/pubsub.(*Subscriber).Listen(0xc0001340f0, 0xc0005144c0)
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/pubsub/subscriber.go:80 +0x17a
created by github.com/Excubitor-Monitoring/Excubitor-Backend/internal/http_server/websocket.handleGET
/home/uggah/Coding/Git-Repositories/Excubitor/Excubitor-Backend/internal/http_server/websocket/websocket.go:137 +0x26d
exit status 2
The WorkingDirectory option of the systemd unit needs to be set to /opt/excubitor
The standard javascript api for websocket connections does not support setting HTTP headers. Therefore, the token authentication has to work through a URL parameter.
The application reads from "http.auth.jwt.accessTokenSecret" and "http.auth.jwt.refreshTokenSecret". However, only the config placeholder "http.auth.jwt.tokenSecret" is generated.
{"timestamp":"2023-06-27T12:42:46.340358209Z","message":"Couldn't find requested resource /!","path":"/"}404 page not found
Idea: a /auth or /login HTTP endpoint. In the message body the parameters of the authentication are transferred. Then, a JWT is returned with which the user can authenticate themselves to the WebSocket API (i.e. "/ws?token=ey...").
The payload should look like the following:
Request:
{
"auth_method": "PAM",
"username": "username",
"password": "password",
}
Response:
{
"jwt": "ey..."
}
This way, other authentication methods can be implemented later on. For example:
Request:
{
"auth_method": "OIDC"
"token": "ey..."
}
The information shall be gathered from /proc/cpuinfo - See: https://man7.org/linux/man-pages/man5/proc.5.html
Currently, the GET operation is not implemented. This could either be done with a new entire application flow where or by implementing a second type of subscriber that only receives one message from the pubsub architecture.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.