2018-08-10 19:59:46 +00:00
|
|
|
import asyncio
|
|
|
|
import logging
|
2018-11-01 20:14:37 +00:00
|
|
|
import urllib.parse
|
2018-08-10 19:59:46 +00:00
|
|
|
import simplejson as json
|
|
|
|
|
|
|
|
|
|
|
|
from . import CONFIG
|
2019-05-21 16:29:55 +00:00
|
|
|
AP_CONFIG = CONFIG.get('ap', {'blocked_instances':[], 'whitelist_enabled': False, 'whitelist': []})
|
2018-08-10 19:59:46 +00:00
|
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
with open(CONFIG['db']) as f:
|
|
|
|
DATABASE = json.load(f)
|
|
|
|
except:
|
|
|
|
logging.info('No database was found, making a new one.')
|
|
|
|
DATABASE = {}
|
|
|
|
|
2018-10-31 19:29:30 +00:00
|
|
|
following = DATABASE.get('relay-list', [])
|
|
|
|
for inbox in following:
|
2019-05-21 16:29:55 +00:00
|
|
|
if urllib.parse.urlsplit(inbox).hostname in AP_CONFIG['blocked_instances']:
|
|
|
|
following.remove(inbox)
|
|
|
|
DATABASE['relay-list'] = following
|
|
|
|
|
|
|
|
elif AP_CONFIG['whitelist_enabled'] is True and urllib.parse.urlsplit(inbox).hostname not in AP_CONFIG['whitelist']:
|
2018-10-31 19:29:30 +00:00
|
|
|
following.remove(inbox)
|
|
|
|
DATABASE['relay-list'] = following
|
2018-08-10 19:59:46 +00:00
|
|
|
|
2018-11-18 14:25:04 +00:00
|
|
|
if 'actors' in DATABASE:
|
|
|
|
DATABASE.pop('actors')
|
|
|
|
|
2018-08-10 19:59:46 +00:00
|
|
|
async def database_save():
|
|
|
|
while True:
|
|
|
|
with open(CONFIG['db'], 'w') as f:
|
|
|
|
json.dump(DATABASE, f)
|
|
|
|
await asyncio.sleep(30)
|
|
|
|
|
|
|
|
|
|
|
|
asyncio.ensure_future(database_save())
|