mirror of
https://github.com/boringproxy/boringproxy.git
synced 2025-02-25 18:55:29 -06:00
Create UI tunnels through API
This commit is contained in:
32
api.go
32
api.go
@@ -3,9 +3,12 @@ package main
|
||||
import (
|
||||
"crypto/md5"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type Api struct {
|
||||
@@ -52,6 +55,35 @@ func (a *Api) GetTunnels(tokenData TokenData) map[string]Tunnel {
|
||||
return tunnels
|
||||
}
|
||||
|
||||
func (a *Api) CreateTunnel(tokenData TokenData, params url.Values) (*Tunnel, error) {
|
||||
|
||||
if len(params["domain"]) != 1 {
|
||||
return nil, errors.New("Invalid domain parameter")
|
||||
}
|
||||
domain := params["domain"][0]
|
||||
|
||||
if len(params["client-name"]) != 1 {
|
||||
return nil, errors.New("Invalid client-name parameter")
|
||||
}
|
||||
clientName := params["client-name"][0]
|
||||
|
||||
if len(params["client-port"]) != 1 {
|
||||
return nil, errors.New("Invalid client-port parameter")
|
||||
}
|
||||
|
||||
clientPort, err := strconv.Atoi(params["client-port"][0])
|
||||
if err != nil {
|
||||
return nil, errors.New("Invalid client-port parameter")
|
||||
}
|
||||
|
||||
tunnel, err := a.tunMan.CreateTunnelForClient(domain, tokenData.Owner, clientName, clientPort)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &tunnel, nil
|
||||
}
|
||||
|
||||
func (a *Api) handleTunnels(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
token, err := extractToken("access_token", r)
|
||||
|
||||
Reference in New Issue
Block a user