Skip to content

Commit 82bec5b

Browse files
author
Nicolas Chatelain
committed
fix #146 (interface cleanup) - fix #148 (listeners api not working)
1 parent 7a5ee04 commit 82bec5b

File tree

4 files changed

+31
-6
lines changed

4 files changed

+31
-6
lines changed

cmd/proxy/app/daemon.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -365,11 +365,25 @@ func StartLigoloApi() {
365365
c.JSON(http.StatusInternalServerError, gin.H{"error": "invalid agent"})
366366
return
367367
}
368-
if _, err := AgentList[listenerRequest.AgentID].AddListener(listenerRequest.ListenerAddr, listenerRequest.Network, listenerRequest.RedirectAddr); err != nil {
368+
CurrentAgent := AgentList[listenerRequest.AgentID]
369+
proxyListener, err := CurrentAgent.AddListener(listenerRequest.ListenerAddr, listenerRequest.Network, listenerRequest.RedirectAddr)
370+
if err != nil {
369371
c.Error(err)
370372
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
371373
return
372374
}
375+
376+
go func() {
377+
err := proxyListener.StartRelay()
378+
if err != nil {
379+
logrus.WithFields(logrus.Fields{"listener": proxyListener.String(), "agent": CurrentAgent.Name, "id": CurrentAgent.SessionID}).Error("Listener relay failed with error: ", err)
380+
return
381+
}
382+
383+
logrus.WithFields(logrus.Fields{"listener": proxyListener.String(), "agent": CurrentAgent.Name, "id": CurrentAgent.SessionID}).Warning("Listener ended without error.")
384+
return
385+
}()
386+
373387
c.JSON(http.StatusOK, gin.H{"message": "listener created"})
374388
})
375389

cmd/proxy/app/interfaces.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ func init() {
115115
if ifName == "" {
116116
return errors.New("please specify a valid interface using --name [interface]")
117117
}
118-
if len(config.GetInterfaceRoutesConfig(ifName)) > 0 {
118+
if config.GetInterfaceConfig(ifName) != nil {
119119
if ask("Remove all interface routes and settings from config?") {
120120
if err := config.DeleteInterfaceConfig(ifName); err != nil {
121121
return err

cmd/proxy/config/ifconfig.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -203,9 +203,15 @@ func AddInterfaceConfig(ifName string) error {
203203
return nil
204204
}
205205

206-
func GetInterfaceRoutesConfig(ifName string) []string {
207-
configPath := fmt.Sprintf("interface.%s.routes", ifName)
208-
return Config.GetStringSlice(configPath)
206+
func GetInterfaceConfig(ifName string) *InterfaceConfig {
207+
var ifaceInfo map[string]InterfaceConfig
208+
// Unmarshal current interfaces config
209+
Config.UnmarshalKey("interface", &ifaceInfo)
210+
// Check if empty interface
211+
if iface, ok := ifaceInfo[ifName]; ok {
212+
return &iface
213+
}
214+
return nil
209215
}
210216

211217
func DeleteInterfaceConfig(ifName string) error {

pkg/agent/handler.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,12 @@ func HandleConn(conn net.Conn) {
278278
if err := encoder.Encode(listenerResponse); err != nil {
279279
logrus.Error(err)
280280
}
281-
go relay.StartRelay(conn, udplistener)
281+
go func() {
282+
err := relay.StartRelay(conn, udplistener)
283+
if err != nil {
284+
logrus.Error(err)
285+
}
286+
}()
282287
}
283288

284289
listenerID++

0 commit comments

Comments
 (0)