Remove unused custom SSH key code

Was originally planning to allow people to upload public keys to
use for tunnels, but so far no one has asked for this and I
haven't needed it.
This commit is contained in:
Anders Pitman 2021-12-21 13:14:01 -07:00
parent 38cb381051
commit b795ee0bc9
4 changed files with 7 additions and 177 deletions

44
api.go
View File

@ -254,17 +254,6 @@ func (a *Api) CreateTunnel(tokenData TokenData, params url.Values) (*Tunnel, err
} }
} }
sshKeyId := params.Get("ssh-key-id")
var sshKey SshKey
if sshKeyId != "" {
var exists bool
sshKey, exists = a.db.GetSshKey(sshKeyId)
if !exists {
return nil, errors.New("SSH key does not exist")
}
}
clientName := params.Get("client-name") clientName := params.Get("client-name")
clientPort := 0 clientPort := 0
@ -317,7 +306,6 @@ func (a *Api) CreateTunnel(tokenData TokenData, params url.Values) (*Tunnel, err
request := Tunnel{ request := Tunnel{
Domain: domain, Domain: domain,
SshKey: sshKey.Key,
Owner: owner, Owner: owner,
ClientName: clientName, ClientName: clientName,
ClientPort: clientPort, ClientPort: clientPort,
@ -490,35 +478,3 @@ func (a *Api) DeleteClient(tokenData TokenData, ownerId, clientId string) error
return nil return nil
} }
func (a *Api) GetSshKeys(tokenData TokenData) map[string]SshKey {
user, _ := a.db.GetUser(tokenData.Owner)
var keys map[string]SshKey
if user.IsAdmin {
keys = a.db.GetSshKeys()
} else {
keys = make(map[string]SshKey)
for id, key := range a.db.GetSshKeys() {
if tokenData.Owner == key.Owner {
keys[id] = key
}
}
}
return keys
}
func (a *Api) DeleteSshKey(tokenData TokenData, params url.Values) error {
id := params.Get("id")
if id == "" {
return errors.New("Invalid id parameter")
}
a.db.DeleteSshKey(id)
return nil
}

View File

@ -13,7 +13,6 @@ type Database struct {
Tokens map[string]TokenData `json:"tokens"` Tokens map[string]TokenData `json:"tokens"`
Tunnels map[string]Tunnel `json:"tunnels"` Tunnels map[string]Tunnel `json:"tunnels"`
Users map[string]User `json:"users"` Users map[string]User `json:"users"`
SshKeys map[string]SshKey `json:"ssh_keys"`
dnsRequests map[string]DNSRequest `json:"dns_requests"` dnsRequests map[string]DNSRequest `json:"dns_requests"`
mutex *sync.Mutex mutex *sync.Mutex
} }
@ -27,11 +26,6 @@ type User struct {
Clients map[string]DbClient `json:"clients"` Clients map[string]DbClient `json:"clients"`
} }
type SshKey struct {
Owner string `json:"owner"`
Key string `json:"key"`
}
type DbClient struct { type DbClient struct {
} }
@ -49,7 +43,6 @@ type DNSRecord struct {
type Tunnel struct { type Tunnel struct {
Owner string `json:"owner"` Owner string `json:"owner"`
Domain string `json:"domain"` Domain string `json:"domain"`
SshKey string `json:"ssh_key"`
ServerAddress string `json:"server_address"` ServerAddress string `json:"server_address"`
ServerPort int `json:"server_port"` ServerPort int `json:"server_port"`
ServerPublicKey string `json:"server_public_key"` ServerPublicKey string `json:"server_public_key"`
@ -94,10 +87,6 @@ func NewDatabase() (*Database, error) {
db.Users = make(map[string]User) db.Users = make(map[string]User)
} }
if db.SshKeys == nil {
db.SshKeys = make(map[string]SshKey)
}
if db.dnsRequests == nil { if db.dnsRequests == nil {
db.dnsRequests = make(map[string]DNSRequest) db.dnsRequests = make(map[string]DNSRequest)
} }
@ -325,58 +314,6 @@ func (d *Database) DeleteUser(username string) {
d.persist() d.persist()
} }
func (d *Database) GetSshKey(id string) (SshKey, bool) {
d.mutex.Lock()
defer d.mutex.Unlock()
key, exists := d.SshKeys[id]
if !exists {
return SshKey{}, false
}
return key, true
}
func (d *Database) GetSshKeys() map[string]SshKey {
d.mutex.Lock()
defer d.mutex.Unlock()
keys := make(map[string]SshKey)
for k, v := range d.SshKeys {
keys[k] = v
}
return keys
}
func (d *Database) AddSshKey(id string, key SshKey) error {
d.mutex.Lock()
defer d.mutex.Unlock()
_, exists := d.SshKeys[id]
if exists {
return errors.New("SSH key id exists")
}
d.SshKeys[id] = key
d.persist()
return nil
}
func (d *Database) DeleteSshKey(id string) {
d.mutex.Lock()
defer d.mutex.Unlock()
delete(d.SshKeys, id)
d.persist()
}
func (d *Database) persist() { func (d *Database) persist() {
saveJson(d, "boringproxy_db.json") saveJson(d, "boringproxy_db.json")
} }

View File

@ -88,7 +88,7 @@ func (m *TunnelManager) RequestCreateTunnel(tunReq Tunnel) (Tunnel, error) {
} }
} }
privKey, err := m.addToAuthorizedKeys(tunReq.Domain, tunReq.TunnelPort, tunReq.AllowExternalTcp, tunReq.SshKey) privKey, err := m.addToAuthorizedKeys(tunReq.Domain, tunReq.TunnelPort, tunReq.AllowExternalTcp)
if err != nil { if err != nil {
return Tunnel{}, err return Tunnel{}, err
} }
@ -158,7 +158,7 @@ func (m *TunnelManager) GetPort(domain string) (int, error) {
return tunnel.TunnelPort, nil return tunnel.TunnelPort, nil
} }
func (m *TunnelManager) addToAuthorizedKeys(domain string, port int, allowExternalTcp bool, sshKey string) (string, error) { func (m *TunnelManager) addToAuthorizedKeys(domain string, port int, allowExternalTcp bool) (string, error) {
authKeysPath := fmt.Sprintf("%s/.ssh/authorized_keys", m.user.HomeDir) authKeysPath := fmt.Sprintf("%s/.ssh/authorized_keys", m.user.HomeDir)
@ -178,17 +178,12 @@ func (m *TunnelManager) addToAuthorizedKeys(domain string, port int, allowExtern
var privKey string var privKey string
var pubKey string var pubKey string
if sshKey == "" {
pubKey, privKey, err = MakeSSHKeyPair() pubKey, privKey, err = MakeSSHKeyPair()
if err != nil { if err != nil {
return "", err return "", err
} }
pubKey = strings.TrimSpace(pubKey) pubKey = strings.TrimSpace(pubKey)
} else {
privKey = ""
pubKey = sshKey
}
bindAddr := "127.0.0.1" bindAddr := "127.0.0.1"
if allowExternalTcp { if allowExternalTcp {

View File

@ -236,21 +236,6 @@ func (h *WebUiHandler) handleWebUiRequest(w http.ResponseWriter, r *http.Request
h.confirmDeleteToken(w, r) h.confirmDeleteToken(w, r)
case "/delete-token": case "/delete-token":
h.deleteToken(w, r, tokenData) h.deleteToken(w, r, tokenData)
//case "/ssh-keys":
// h.handleSshKeys(w, r, user, tokenData)
//case "/delete-ssh-key":
// r.ParseForm()
// err := h.api.DeleteSshKey(tokenData, r.Form)
// if err != nil {
// w.WriteHeader(400)
// h.alertDialog(w, r, err.Error(), "/ssh-keys")
// return
// }
// http.Redirect(w, r, "/ssh-keys", 303)
case "/confirm-logout": case "/confirm-logout":
data := &ConfirmData{ data := &ConfirmData{
@ -402,49 +387,6 @@ func (h *WebUiHandler) handleTokens(w http.ResponseWriter, r *http.Request, user
} }
} }
func (h *WebUiHandler) handleSshKeys(w http.ResponseWriter, r *http.Request, user User, tokenData TokenData) {
if r.Method != "POST" {
w.WriteHeader(405)
h.alertDialog(w, r, "Invalid method for /ssh-keys", "/ssh-keys")
return
}
r.ParseForm()
id := r.Form.Get("id")
if id == "" {
w.WriteHeader(400)
h.alertDialog(w, r, "Invalid id parameter", "/ssh-keys")
return
}
keyParam := r.Form.Get("key")
if keyParam == "" {
w.WriteHeader(400)
h.alertDialog(w, r, "Invalid key parameter", "/ssh-keys")
return
}
keyParam = strings.TrimSpace(keyParam)
parts := strings.Split(keyParam, " ")
if len(parts) > 2 {
keyParam = strings.Join(parts[:2], " ")
}
key := SshKey{Owner: tokenData.Owner, Key: keyParam}
err := h.db.AddSshKey(id, key)
if err != nil {
w.WriteHeader(400)
h.alertDialog(w, r, err.Error(), "/ssh-keys")
return
}
http.Redirect(w, r, "/ssh-keys", 303)
}
func (h *WebUiHandler) handleLogin(w http.ResponseWriter, r *http.Request) { func (h *WebUiHandler) handleLogin(w http.ResponseWriter, r *http.Request) {
if r.Method != "GET" { if r.Method != "GET" {