summaryrefslogtreecommitdiff
path: root/plugins/broadcast/websockets/access_validator.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/broadcast/websockets/access_validator.go')
-rw-r--r--plugins/broadcast/websockets/access_validator.go102
1 files changed, 0 insertions, 102 deletions
diff --git a/plugins/broadcast/websockets/access_validator.go b/plugins/broadcast/websockets/access_validator.go
deleted file mode 100644
index bf27386d..00000000
--- a/plugins/broadcast/websockets/access_validator.go
+++ /dev/null
@@ -1,102 +0,0 @@
-package websockets
-
-import (
- "bytes"
- "io"
- "net/http"
- "strings"
-
- "github.com/spiral/roadrunner/v2/plugins/http/attributes"
-)
-
-type accessValidator struct {
- buffer *bytes.Buffer
- header http.Header
- status int
-}
-
-func newValidator() *accessValidator {
- return &accessValidator{
- buffer: bytes.NewBuffer(nil),
- header: make(http.Header),
- }
-}
-
-// copy all content to parent response writer.
-func (w *accessValidator) copy(rw http.ResponseWriter) {
- rw.WriteHeader(w.status)
-
- for k, v := range w.header {
- for _, vv := range v {
- rw.Header().Add(k, vv)
- }
- }
-
- _, _ = io.Copy(rw, w.buffer)
-}
-
-// Header returns the header map that will be sent by WriteHeader.
-func (w *accessValidator) Header() http.Header {
- return w.header
-}
-
-// Write writes the data to the connection as part of an HTTP reply.
-func (w *accessValidator) Write(p []byte) (int, error) {
- return w.buffer.Write(p)
-}
-
-// WriteHeader sends an HTTP response header with the provided status code.
-func (w *accessValidator) WriteHeader(statusCode int) {
- w.status = statusCode
-}
-
-// IsOK returns true if response contained 200 status code.
-func (w *accessValidator) IsOK() bool {
- return w.status == 200
-}
-
-// Body returns response body to rely to user.
-func (w *accessValidator) Body() []byte {
- return w.buffer.Bytes()
-}
-
-// Error contains server response.
-func (w *accessValidator) Error() string {
- return w.buffer.String()
-}
-
-// assertServerAccess checks if user can join server and returns error and body if user can not. Must return nil in
-// case of error
-func (w *accessValidator) assertServerAccess(f http.HandlerFunc, r *http.Request) error {
- if err := attributes.Set(r, "ws:joinServer", true); err != nil {
- return err
- }
-
- defer delete(attributes.All(r), "ws:joinServer")
-
- f(w, r)
-
- if !w.IsOK() {
- return w
- }
-
- return nil
-}
-
-// assertAccess checks if user can access given upstream, the application will receive all user headers and cookies.
-// the decision to authorize user will be based on response code (200).
-func (w *accessValidator) assertTopicsAccess(f http.HandlerFunc, r *http.Request, channels ...string) error {
- if err := attributes.Set(r, "ws:joinTopics", strings.Join(channels, ",")); err != nil {
- return err
- }
-
- defer delete(attributes.All(r), "ws:joinTopics")
-
- f(w, r)
-
- if !w.IsOK() {
- return w
- }
-
- return nil
-}