|
@@ -928,7 +928,7 @@ func runSeeders(isUsersEmpty bool) error {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if empty && isUsersEmpty {
|
|
if empty && isUsersEmpty {
|
|
|
- seeders := []string{"UserPasswordHash", "ClientsTable", "InboundClientsArrayFix", "InboundClientTgIdFix", "InboundClientSubIdFix", "FreedomFinalRulesReverseFix", "ApiTokensHash", "LegacyProxySettingsCleanup", "WireguardPeersToClients", "MtprotoSecretsToClients"}
|
|
|
|
|
|
|
+ seeders := []string{"UserPasswordHash", "ClientsTable", "InboundClientsArrayFix", "InboundClientTgIdFix", "InboundClientSubIdFix", "FreedomFinalRulesReverseFix", "ApiTokensHash", "LegacyProxySettingsCleanup", "WireguardPeersToClients", "MtprotoSecretsToClients", "NodeInboundsAdopted"}
|
|
|
for _, name := range seeders {
|
|
for _, name := range seeders {
|
|
|
if err := db.Create(&model.HistoryOfSeeders{SeederName: name}).Error; err != nil {
|
|
if err := db.Create(&model.HistoryOfSeeders{SeederName: name}).Error; err != nil {
|
|
|
return err
|
|
return err
|
|
@@ -1021,6 +1021,12 @@ func runSeeders(isUsersEmpty bool) error {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ if !slices.Contains(seedersHistory, "NodeInboundsAdopted") {
|
|
|
|
|
+ if err := seedNodeInboundsAdopted(); err != nil {
|
|
|
|
|
+ return err
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
if err := seedHostsFromExternalProxy(); err != nil {
|
|
if err := seedHostsFromExternalProxy(); err != nil {
|
|
|
return err
|
|
return err
|
|
|
}
|
|
}
|
|
@@ -1055,6 +1061,17 @@ func runSeeders(isUsersEmpty bool) error {
|
|
|
return normalizeSettingPaths()
|
|
return normalizeSettingPaths()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+// seedNodeInboundsAdopted keeps the pre-existing reconcile behavior for nodes
|
|
|
|
|
+// that were already syncing before the inbounds_adopted_at gate was introduced.
|
|
|
|
|
+func seedNodeInboundsAdopted() error {
|
|
|
|
|
+ if err := db.Model(&model.Node{}).
|
|
|
|
|
+ Where("inbounds_adopted_at = 0").
|
|
|
|
|
+ Update("inbounds_adopted_at", time.Now().Unix()).Error; err != nil {
|
|
|
|
|
+ return err
|
|
|
|
|
+ }
|
|
|
|
|
+ return db.Create(&model.HistoryOfSeeders{SeederName: "NodeInboundsAdopted"}).Error
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
func seedHostGroupIds() error {
|
|
func seedHostGroupIds() error {
|
|
|
var history []string
|
|
var history []string
|
|
|
if err := db.Model(&model.HistoryOfSeeders{}).Pluck("seeder_name", &history).Error; err != nil {
|
|
if err := db.Model(&model.HistoryOfSeeders{}).Pluck("seeder_name", &history).Error; err != nil {
|