Implement server whitelist

This commit is contained in:
enaix 2025-01-16 12:31:37 +03:00
parent add73ec866
commit b2ecd5648c
14 changed files with 332 additions and 0 deletions

View file

@ -31,6 +31,7 @@ type Database struct {
FederationQueueJSON tables.FederationQueueJSON
FederationJoinedHosts tables.FederationJoinedHosts
FederationBlacklist tables.FederationBlacklist
FederationWhitelist tables.FederationWhitelist
FederationAssumedOffline tables.FederationAssumedOffline
FederationRelayServers tables.FederationRelayServers
FederationOutboundPeeks tables.FederationOutboundPeeks
@ -148,6 +149,14 @@ func (d *Database) AddServerToBlacklist(
})
}
func (d *Database) AddServerToWhitelist(
serverName spec.ServerName,
) error {
return d.Writer.Do(d.DB, nil, func(txn *sql.Tx) error {
return d.FederationWhitelist.InsertWhitelist(context.TODO(), txn, serverName)
})
}
func (d *Database) RemoveServerFromBlacklist(
serverName spec.ServerName,
) error {
@ -156,18 +165,38 @@ func (d *Database) RemoveServerFromBlacklist(
})
}
func (d *Database) RemoveServerFromWhitelist(
serverName spec.ServerName,
) error {
return d.Writer.Do(d.DB, nil, func(txn *sql.Tx) error {
return d.FederationWhitelist.DeleteWhitelist(context.TODO(), txn, serverName)
})
}
func (d *Database) RemoveAllServersFromBlacklist() error {
return d.Writer.Do(d.DB, nil, func(txn *sql.Tx) error {
return d.FederationBlacklist.DeleteAllBlacklist(context.TODO(), txn)
})
}
func (d *Database) RemoveAllServersFromWhitelist() error {
return d.Writer.Do(d.DB, nil, func(txn *sql.Tx) error {
return d.FederationWhitelist.DeleteAllWhitelist(context.TODO(), txn)
})
}
func (d *Database) IsServerBlacklisted(
serverName spec.ServerName,
) (bool, error) {
return d.FederationBlacklist.SelectBlacklist(context.TODO(), nil, serverName)
}
func (d *Database) IsServerWhitelisted(
serverName spec.ServerName,
) (bool, error) {
return d.FederationWhitelist.SelectWhitelist(context.TODO(), nil, serverName)
}
func (d *Database) SetServerAssumedOffline(
ctx context.Context,
serverName spec.ServerName,