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)
|
blocking_reasons_filename)
|
||||||
|
|
||||||
return True
|
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
|
||||||
|
|
34
daemon.py
34
daemon.py
|
@ -148,6 +148,7 @@ from media import attach_media
|
||||||
from media import path_is_video
|
from media import path_is_video
|
||||||
from media import path_is_audio
|
from media import path_is_audio
|
||||||
from blocking import import_blocks
|
from blocking import import_blocks
|
||||||
|
from blocking import export_blocks
|
||||||
from blocking import add_account_blocks
|
from blocking import add_account_blocks
|
||||||
from blocking import get_cw_list_variable
|
from blocking import get_cw_list_variable
|
||||||
from blocking import load_cw_lists
|
from blocking import load_cw_lists
|
||||||
|
@ -6341,6 +6342,14 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
cookie, calling_domain)
|
cookie, calling_domain)
|
||||||
self.server.postreq_busy = False
|
self.server.postreq_busy = False
|
||||||
return
|
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
|
# extract all of the text fields into a dict
|
||||||
fields = \
|
fields = \
|
||||||
|
@ -8388,6 +8397,25 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self._write(export_binary)
|
self._write(export_binary)
|
||||||
self._404()
|
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,
|
def _get_fonts(self, calling_domain: str, path: str,
|
||||||
base_dir: str, debug: bool,
|
base_dir: str, debug: bool,
|
||||||
getreq_start_time) -> None:
|
getreq_start_time) -> None:
|
||||||
|
@ -17318,6 +17346,12 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
return
|
return
|
||||||
|
|
||||||
if authorized and '/exports/' in self.path:
|
if authorized and '/exports/' in self.path:
|
||||||
|
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._get_exported_theme(self.path,
|
||||||
self.server.base_dir,
|
self.server.base_dir,
|
||||||
self.server.domain_full)
|
self.server.domain_full)
|
||||||
|
|
Loading…
Reference in New Issue