mirror of https://gitlab.com/bashrc2/epicyon
Export blocked domains as csv
parent
50c47b89f8
commit
daea7de461
50
blocking.py
50
blocking.py
|
@ -1558,3 +1558,53 @@ def import_blocks(base_dir: str, nickname: str, domain: str,
|
|||
blocking_reasons_filename)
|
||||
|
||||
return True
|
||||
|
||||
|
||||
def export_blocks(base_dir: str, nickname: str, domain: str) -> str:
|
||||
"""exports account level blocks in a csv format
|
||||
"""
|
||||
account_directory = acct_dir(base_dir, nickname, domain)
|
||||
blocking_filename = \
|
||||
account_directory + '/blocking.txt'
|
||||
blocking_reasons_filename = \
|
||||
account_directory + '/blocking_reasons.txt'
|
||||
|
||||
blocks_header = \
|
||||
'#domain,#severity,#reject_media,#reject_reports,' + \
|
||||
'#public_comment,#obfuscate\n'
|
||||
|
||||
if not os.path.isfile(blocking_filename):
|
||||
return blocks_header
|
||||
|
||||
blocking_lines = []
|
||||
if os.path.isfile(blocking_filename):
|
||||
try:
|
||||
with open(blocking_filename, 'r', encoding='utf-8') as fp_block:
|
||||
blocking_lines = fp_block.read().splitlines()
|
||||
except OSError:
|
||||
print('EX: export_blocks failed to read ' + blocking_filename)
|
||||
|
||||
blocking_reasons = []
|
||||
if os.path.isfile(blocking_reasons_filename):
|
||||
try:
|
||||
with open(blocking_reasons_filename, 'r',
|
||||
encoding='utf-8') as fp_block:
|
||||
blocking_reasons = fp_block.read().splitlines()
|
||||
except OSError:
|
||||
print('EX: export_blocks failed to read ' +
|
||||
blocking_reasons_filename)
|
||||
|
||||
blocks_str = blocks_header
|
||||
for blocked_domain in blocking_lines:
|
||||
blocked_domain = blocked_domain.strip()
|
||||
if blocked_domain.startwith('#'):
|
||||
continue
|
||||
reason_str = ''
|
||||
for reason_line in blocking_reasons:
|
||||
if reason_line.startswith(blocked_domain + ' '):
|
||||
reason_str = reason_line.split(' ')[1]
|
||||
break
|
||||
blocks_str += \
|
||||
blocked_domain + ',suspend,false,false,"' + \
|
||||
reason_str + '",false\n'
|
||||
return blocks_str
|
||||
|
|
40
daemon.py
40
daemon.py
|
@ -148,6 +148,7 @@ from media import attach_media
|
|||
from media import path_is_video
|
||||
from media import path_is_audio
|
||||
from blocking import import_blocks
|
||||
from blocking import export_blocks
|
||||
from blocking import add_account_blocks
|
||||
from blocking import get_cw_list_variable
|
||||
from blocking import load_cw_lists
|
||||
|
@ -6341,6 +6342,14 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
cookie, calling_domain)
|
||||
self.server.postreq_busy = False
|
||||
return
|
||||
elif 'name="submitExportBlocks"' in post_bytes_str:
|
||||
print('submitExportBlocks')
|
||||
blocks_download_path = actor_str + '/exports/blocks.csv'
|
||||
print('submitExportBlocks path=' + blocks_download_path)
|
||||
self._redirect_headers(blocks_download_path,
|
||||
cookie, calling_domain)
|
||||
self.server.postreq_busy = False
|
||||
return
|
||||
|
||||
# extract all of the text fields into a dict
|
||||
fields = \
|
||||
|
@ -8388,6 +8397,25 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self._write(export_binary)
|
||||
self._404()
|
||||
|
||||
def _get_exported_blocks(self, path: str, base_dir: str,
|
||||
domain: str,
|
||||
calling_domain: str) -> None:
|
||||
"""Returns an exported blocks csv file
|
||||
"""
|
||||
filename = path.split('/exports/', 1)[1]
|
||||
filename = base_dir + '/exports/' + filename
|
||||
nickname = get_nickname_from_actor(path)
|
||||
if nickname:
|
||||
blocks_str = export_blocks(base_dir, nickname, domain)
|
||||
if blocks_str:
|
||||
msg = blocks_str.encode('utf-8')
|
||||
msglen = len(msg)
|
||||
self._set_headers('text/csv',
|
||||
msglen, None, calling_domain, False)
|
||||
self._write(msg)
|
||||
return
|
||||
self._404()
|
||||
|
||||
def _get_fonts(self, calling_domain: str, path: str,
|
||||
base_dir: str, debug: bool,
|
||||
getreq_start_time) -> None:
|
||||
|
@ -17318,9 +17346,15 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
return
|
||||
|
||||
if authorized and '/exports/' in self.path:
|
||||
self._get_exported_theme(self.path,
|
||||
self.server.base_dir,
|
||||
self.server.domain_full)
|
||||
if 'blocks.csv' in self.path:
|
||||
self._get_exported_blocks(self.path,
|
||||
self.server.base_dir,
|
||||
self.server.domain,
|
||||
calling_domain)
|
||||
else:
|
||||
self._get_exported_theme(self.path,
|
||||
self.server.base_dir,
|
||||
self.server.domain_full)
|
||||
return
|
||||
|
||||
# get fonts
|
||||
|
|
Loading…
Reference in New Issue