mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-08-12 14:21:01 +00:00
fix(inbounds): drop unknown nodeId when importing an inbound
Importing an inbound that was exported from another panel (or whose node was later deleted) carried a non-zero nodeId referencing a node that does not exist on the importing panel. AddInbound -> nodePushPlan -> NodeSyncState looked that node up and returned gorm's "record not found", so the import failed with "Something went wrong Failed: record not found". Node IDs are panel-local and not portable, so the import handler now drops a nodeId that does not exist on this panel (new NodeService.NodeExists helper), importing it as a local inbound instead of erroring. This mirrors the existing nodeId==0 normalization in the same handler.
This commit is contained in:
@@ -350,8 +350,16 @@ func (a *InboundController) importInbound(c *gin.Context) {
|
||||
user := session.GetLoginUser(c)
|
||||
inbound.Id = 0
|
||||
inbound.UserId = user.Id
|
||||
if inbound.NodeID != nil && *inbound.NodeID == 0 {
|
||||
inbound.NodeID = nil
|
||||
// Node IDs are panel-local and not portable across panels. Drop a node
|
||||
// reference that is zero or that points to a node which doesn't exist on
|
||||
// this panel, so a cross-panel export imports as a local inbound instead of
|
||||
// failing with "record not found" when nodePushPlan looks the node up.
|
||||
if inbound.NodeID != nil {
|
||||
if *inbound.NodeID == 0 {
|
||||
inbound.NodeID = nil
|
||||
} else if exists, err := (&service.NodeService{}).NodeExists(*inbound.NodeID); err == nil && !exists {
|
||||
inbound.NodeID = nil
|
||||
}
|
||||
}
|
||||
|
||||
for index := range inbound.ClientStats {
|
||||
|
||||
Reference in New Issue
Block a user