Replace wg-quick route management with idempotent PostUp routes
wg-quick's own AllowedIPs route handling does a plain `ip route add` per entry into the main table and hard-fails the whole interface bring-up with "RTNETLINK: File exists" the moment two servers share an overlapping AllowedIPs entry (real case: a client's transit IP duplicated across 4 imported servers). Set Table = off and generate `ip route replace` PostUp commands instead - idempotent, never fails on a pre-existing route, and multiple servers can coexist even when their peers' AllowedIPs overlap. Also make ServerServiceRestart write the config to disk first, same as ServerServiceStart already does - it had the same "config file missing" failure mode.
This commit is contained in:
@@ -299,7 +299,7 @@ func main() {
|
||||
app.GET(util.BasePath+"/servers/:id/service-status", handler.ServerServiceStatus(db), handler.ValidSession, handler.RequireServerAccess(db))
|
||||
app.POST(util.BasePath+"/servers/:id/service/start", handler.ServerServiceStart(db, tmplDir), handler.ValidSession, handler.ContentTypeJson, handler.NeedsAdmin)
|
||||
app.POST(util.BasePath+"/servers/:id/service/stop", handler.ServerServiceStop(db), handler.ValidSession, handler.ContentTypeJson, handler.NeedsAdmin)
|
||||
app.POST(util.BasePath+"/servers/:id/service/restart", handler.ServerServiceRestart(db), handler.ValidSession, handler.ContentTypeJson, handler.NeedsAdmin)
|
||||
app.POST(util.BasePath+"/servers/:id/service/restart", handler.ServerServiceRestart(db, tmplDir), handler.ValidSession, handler.ContentTypeJson, handler.NeedsAdmin)
|
||||
app.POST(util.BasePath+"/backup/download", handler.DownloadBackup(db), handler.ValidSession, handler.ContentTypeJson, handler.NeedsAdmin)
|
||||
app.GET(util.BasePath+"/api/clients", handler.GetClients(db), handler.ValidSession)
|
||||
app.GET(util.BasePath+"/api/client/:id", handler.GetClient(db), handler.ValidSession)
|
||||
|
||||
Reference in New Issue
Block a user