mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-08-30 15:07:14 +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:
@@ -298,6 +298,20 @@ func (s *NodeService) GetById(id int) (*model.Node, error) {
|
||||
return n, nil
|
||||
}
|
||||
|
||||
// NodeExists reports whether a node with the given id exists on this panel.
|
||||
// Used to drop stale, cross-panel node references on inbound import. A Count
|
||||
// query distinguishes "no such node" (count 0, no error) from a real DB error.
|
||||
func (s *NodeService) NodeExists(id int) (bool, error) {
|
||||
if id <= 0 {
|
||||
return false, nil
|
||||
}
|
||||
var count int64
|
||||
if err := database.GetDB().Model(model.Node{}).Where("id = ?", id).Count(&count).Error; err != nil {
|
||||
return false, err
|
||||
}
|
||||
return count > 0, nil
|
||||
}
|
||||
|
||||
func normalizeBasePath(p string) string {
|
||||
p = strings.TrimSpace(p)
|
||||
if p == "" {
|
||||
|
||||
Reference in New Issue
Block a user