Ctrl K
ComunidadGuías…

server/ssh/web/websocket.go

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package web

import (
	"errors"
	"net/http"
	"strconv"

	"github.com/shellhub-io/shellhub/server/api/pkg/origin"
)

func getToken(req *http.Request) (string, error) {
	token := req.URL.Query().Get("token")

	if token == "" {
		return "", ErrGetToken
	}

	return token, nil
}

func getDimensions(req *http.Request) (uint16, uint16, error) {
	toUint16 := func(text string) (uint16, error) {
		integer, err := strconv.ParseUint(text, 10, 16)
		if err != nil {
			return 0, err
		}

		return uint16(integer), nil
	}

	cols, err := toUint16(req.URL.Query().Get("cols"))
	if err != nil {
		return 0, 0, errors.Join(ErrGetDimensions, err)
	}

	rows, err := toUint16(req.URL.Query().Get("rows"))
	if err != nil {
		return 0, 0, errors.Join(ErrGetDimensions, err)
	}

	return cols, rows, nil
}

func getIP(req *http.Request) (string, error) {
	resolved, ok := origin.FromContext(req.Context())
	if !ok || resolved.IP == "" {
		return "", ErrGetIP
	}

	return resolved.IP, nil
}