refactor(session): add registry to manage SSH sessions
- Implement thread-safe session registry with sync.RWMutex - Add Registry interface for session management operations - Support Get, Register, Update, and Remove session operations - Enable dynamic slug updates for existing sessions - Fix Connection closed by remote because HandleTCPIPForward run on a goroutine
This commit is contained in:
@@ -106,7 +106,6 @@ func (s *SSHSession) HandleTCPIPForward(req *ssh.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
portToBind := uint16(rawPortToBind)
|
portToBind := uint16(rawPortToBind)
|
||||||
|
|
||||||
if isBlockedPort(portToBind) {
|
if isBlockedPort(portToBind) {
|
||||||
log.Printf("Port %d is blocked or restricted", portToBind)
|
log.Printf("Port %d is blocked or restricted", portToBind)
|
||||||
err := req.Reply(false, nil)
|
err := req.Reply(false, nil)
|
||||||
|
|||||||
@@ -199,6 +199,11 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if m.editingSlug {
|
if m.editingSlug {
|
||||||
|
if m.tunnelType != types.HTTP {
|
||||||
|
m.editingSlug = false
|
||||||
|
m.slugError = ""
|
||||||
|
return m, tea.Batch(tea.ClearScreen, textinput.Blink)
|
||||||
|
}
|
||||||
switch msg.String() {
|
switch msg.String() {
|
||||||
case "esc":
|
case "esc":
|
||||||
m.editingSlug = false
|
m.editingSlug = false
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ func (s *SSHSession) Start() error {
|
|||||||
s.lifecycle.SetChannel(ch)
|
s.lifecycle.SetChannel(ch)
|
||||||
s.interaction.SetChannel(ch)
|
s.interaction.SetChannel(ch)
|
||||||
|
|
||||||
go s.HandleTCPIPForward(tcpipReq)
|
s.HandleTCPIPForward(tcpipReq)
|
||||||
|
|
||||||
if err := s.lifecycle.Close(); err != nil {
|
if err := s.lifecycle.Close(); err != nil {
|
||||||
log.Printf("failed to close session: %v", err)
|
log.Printf("failed to close session: %v", err)
|
||||||
|
|||||||
Reference in New Issue
Block a user