mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-06-06 13:14:11 +00:00
Several related issues around node-managed clients:
- Remote runtime: drop the per-inbound resetAllClientTraffics path
and point traffic/onlines/lastOnline fetches at the new
/panel/api/clients/* routes.
- Delete from master: always push the updated inbound to the node
even when the client was already disabled or depleted, so the
node actually loses the user instead of silently keeping it.
- setRemoteTraffic: mirror remote clients into the central tables
only on first discovery of a node inbound. Matched inbounds let
the master own the join table, so a stale snap can no longer
re-create a ClientRecord (and join row) for a client that was
just deleted on the master.
- ClientService.Delete: route through submitTrafficWrite so deletes
serialize with node traffic merges, and switch the final
ClientRecord delete to an explicit Where("id = ?") clause.
- setRemoteTraffic UNIQUE-constraint fix: use clause.OnConflict on
inserts and email-keyed UPDATEs for client_traffics, so mirroring
a snap doesn't trip the unique email index.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
23 lines
637 B
Go
23 lines
637 B
Go
package runtime
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/mhsanaei/3x-ui/v3/database/model"
|
|
)
|
|
|
|
type Runtime interface {
|
|
Name() string
|
|
|
|
AddInbound(ctx context.Context, ib *model.Inbound) error
|
|
DelInbound(ctx context.Context, ib *model.Inbound) error
|
|
UpdateInbound(ctx context.Context, oldIb, newIb *model.Inbound) error
|
|
|
|
AddUser(ctx context.Context, ib *model.Inbound, userMap map[string]any) error
|
|
RemoveUser(ctx context.Context, ib *model.Inbound, email string) error
|
|
|
|
RestartXray(ctx context.Context) error
|
|
|
|
ResetClientTraffic(ctx context.Context, ib *model.Inbound, email string) error
|
|
ResetAllTraffics(ctx context.Context) error
|
|
}
|