mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-09-16 15:17:14 +00:00
feat(outbounds): support custom subscription user agents (#6398)
Some subscription providers require a client-specific User-Agent before returning outbound links. Persist an optional value per subscription and use it for refreshes and previews while preserving the existing default for blank values.
This commit is contained in:
@@ -96,10 +96,21 @@ func migrateClientTrafficLastSubFetchColumn() error {
|
||||
return migrator.AddColumn(&xray.ClientTraffic{}, "LastSubFetch")
|
||||
}
|
||||
|
||||
func migrateOutboundSubscriptionUserAgentColumn() error {
|
||||
migrator := db.Migrator()
|
||||
if !migrator.HasTable(&model.OutboundSubscription{}) || migrator.HasColumn(&model.OutboundSubscription{}, "user_agent") {
|
||||
return nil
|
||||
}
|
||||
return migrator.AddColumn(&model.OutboundSubscription{}, "UserAgent")
|
||||
}
|
||||
|
||||
func initModels() error {
|
||||
if err := migrateClientTrafficLastSubFetchColumn(); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := migrateOutboundSubscriptionUserAgentColumn(); err != nil {
|
||||
return err
|
||||
}
|
||||
models := allModels()
|
||||
for _, mdl := range models {
|
||||
if IsPostgres() && postgresModelSettled(mdl) {
|
||||
|
||||
@@ -1248,6 +1248,7 @@ type OutboundSubscription struct {
|
||||
Enabled bool `json:"enabled" form:"enabled" gorm:"default:true"`
|
||||
AllowPrivate bool `json:"allowPrivate" form:"allowPrivate" gorm:"default:false"`
|
||||
AllowInsecure bool `json:"allowInsecure" form:"allowInsecure" gorm:"default:false"`
|
||||
UserAgent string `json:"userAgent" form:"userAgent"`
|
||||
TagPrefix string `json:"tagPrefix" form:"tagPrefix"`
|
||||
UpdateInterval int `json:"updateInterval" form:"updateInterval" gorm:"default:600"` // seconds between refreshes
|
||||
Priority int `json:"priority" form:"priority" gorm:"default:0"` // order among subscriptions in the merged outbounds (lower = earlier)
|
||||
|
||||
Reference in New Issue
Block a user