Files
freephilx 0e5af8a096 feat(listeners)!: select REALITY targets with server-side checks
BREAKING CHANGE: REALITY create and update requests require an explicit reality-config.dest; implicit Microsoft and SNI-derived destinations are no longer supplied.
feat(listeners)!: select REALITY targets with server-side checks
BREAKING CHANGE: REALITY create and update requests require an explicit reality-config.dest; implicit Microsoft and SNI-derived destinations are no longer supplied.
feat(listeners)!: select REALITY targets with server-side checks
BREAKING CHANGE: REALITY create and update requests require an explicit reality-config.dest; implicit Microsoft and SNI-derived destinations are no longer supplied.
feat(listeners)!: select REALITY targets with server-side checks
BREAKING CHANGE: REALITY create and update requests require an explicit reality-config.dest; implicit Microsoft and SNI-derived destinations are no longer supplied.
feat(listeners)!: select REALITY targets with server-side checks
BREAKING CHANGE: REALITY create and update requests require an explicit reality-config.dest; implicit Microsoft and SNI-derived destinations are no longer supplied.
feat(listeners)!: select REALITY targets with server-side checks
BREAKING CHANGE: REALITY create and update requests require an explicit reality-config.dest; implicit Microsoft and SNI-derived destinations are no longer supplied.
feat(listeners)!: select REALITY targets with server-side checks
BREAKING CHANGE: REALITY create and update requests require an explicit reality-config.dest; implicit Microsoft and SNI-derived destinations are no longer supplied.
feat(listeners)!: select REALITY targets with server-side checks
BREAKING CHANGE: REALITY create and update requests require an explicit reality-config.dest; implicit Microsoft and SNI-derived destinations are no longer supplied.
feat(listeners)!: select REALITY targets with server-side checks
BREAKING CHANGE: REALITY create and update requests require an explicit reality-config.dest; implicit Microsoft and SNI-derived destinations are no longer supplied.
feat(listeners)!: select REALITY targets with server-side checks
BREAKING CHANGE: REALITY create and update requests require an explicit reality-config.dest; implicit Microsoft and SNI-derived destinations are no longer supplied.
feat(listeners)!: select REALITY targets with server-side checks
BREAKING CHANGE: REALITY create and update requests require an explicit reality-config.dest; implicit Microsoft and SNI-derived destinations are no longer supplied.
feat(listeners)!: select REALITY targets with server-side checks
BREAKING CHANGE: REALITY create and update requests require an explicit reality-config.dest; implicit Microsoft and SNI-derived destinations are no longer supplied.
2026-09-08 22:47:32 +08:00

36 lines
1.6 KiB
Go

package models
import "time"
// RemoteNodeMirror caches shareable metadata from a remote 3m-ui panel node
// so the local panel can merge it into a user's subscription.
type RemoteNodeMirror struct {
BaseModel
RemoteServerID uint `gorm:"not null;index;uniqueIndex:uidx_remote_node" json:"remote_server_id"`
RemoteNodeID uint `gorm:"not null;uniqueIndex:uidx_remote_node" json:"remote_node_id"`
Name string `gorm:"size:128;not null" json:"name"`
Protocol string `gorm:"size:32" json:"protocol"`
Port string `gorm:"size:16" json:"port"`
PublicHost string `gorm:"size:255" json:"public_host"`
Enabled bool `gorm:"not null;default:true" json:"enabled"`
// ShareURI is the primary client share link from the remote panel.
ShareURI string `gorm:"type:text" json:"share_uri,omitempty"`
// ShareURIsJSON is a JSON array of additional share links.
ShareURIsJSON string `gorm:"type:text" json:"-"`
// ClientYAML is a Mihomo client proxy document snippet from the remote export.
ClientYAML string `gorm:"type:text" json:"client_yaml,omitempty"`
LastSyncAt *time.Time `json:"last_sync_at"`
LastError string `gorm:"type:text" json:"last_error,omitempty"`
// Joined for API responses (not persisted).
RemoteServerName string `gorm:"-" json:"remote_server_name,omitempty"`
}
// ProxyUserRemoteNode binds a local proxy user to a mirrored remote node.
type ProxyUserRemoteNode struct {
BaseModel
ProxyUserID uint `gorm:"not null;uniqueIndex:uidx_user_remote_node" json:"proxy_user_id"`
RemoteNodeMirrorID uint `gorm:"not null;uniqueIndex:uidx_user_remote_node;index" json:"remote_node_mirror_id"`
}