diff --git a/blocking.py b/blocking.py
index 36a4a77f3..6c6939b4e 100644
--- a/blocking.py
+++ b/blocking.py
@@ -327,8 +327,73 @@ def add_global_block(base_dir: str,
return True
+def _add_block_reason(base_dir: str,
+ nickname: str, domain: str,
+ block_nickname: str, block_domain: str,
+ reason: str) -> bool:
+ """Store a block reason
+ """
+ if not reason:
+ return False
+
+ domain = remove_domain_port(domain)
+ blocking_reasons_filename = \
+ acct_dir(base_dir, nickname, domain) + '/blocking.txt'
+
+ if not block_nickname.startswith('#'):
+ # is the handle already blocked?
+ block_id = block_nickname + '@' + block_domain
+ else:
+ block_id = block_nickname
+
+ reason = reason.replace('\n', '').strip()
+ reason_line = block_id + ' ' + reason + '\n'
+
+ if os.path.isfile(blocking_reasons_filename):
+ if not text_in_file(block_id,
+ blocking_reasons_filename):
+ try:
+ with open(blocking_reasons_filename, 'a+',
+ encoding='utf-8') as reas_file:
+ reas_file.write(reason_line)
+ except OSError:
+ print('EX: unable to add blocking reason 2 ' +
+ block_id)
+ else:
+ reasons_str = ''
+ try:
+ with open(blocking_reasons_filename, 'r',
+ encoding='utf-8') as reas_file:
+ reasons_str = reas_file.read()
+ except OSError:
+ print('EX: unable to read blocking reasons 2')
+ reasons_lines = reasons_str.split('\n')
+ new_reasons_str = ''
+ for line in reasons_lines:
+ if not line.startswith(block_id + ' '):
+ new_reasons_str += line + '\n'
+ continue
+ new_reasons_str += reason_line
+ try:
+ with open(blocking_reasons_filename, 'w+',
+ encoding='utf-8') as reas_file:
+ reas_file.write(new_reasons_str)
+ except OSError:
+ print('EX: unable to save blocking reasons 2' +
+ blocking_reasons_filename)
+ else:
+ try:
+ with open(blocking_reasons_filename, 'w+',
+ encoding='utf-8') as reas_file:
+ reas_file.write(reason_line)
+ except OSError:
+ print('EX: unable to save blocking reason 2 ' +
+ block_id + ' ' + blocking_reasons_filename)
+
+
def add_block(base_dir: str, nickname: str, domain: str,
- block_nickname: str, block_domain: str) -> bool:
+ block_nickname: str, block_domain: str,
+ reason: str) -> bool:
"""Block the given account
"""
if block_domain.startswith(domain) and nickname == block_nickname:
@@ -398,6 +463,11 @@ def add_block(base_dir: str, nickname: str, domain: str,
except OSError:
print('EX: unable to append block handle ' + block_handle)
return False
+
+ if reason:
+ _add_block_reason(base_dir, nickname, domain,
+ block_nickname, block_domain, reason)
+
return True
@@ -956,7 +1026,7 @@ def outbox_block(base_dir: str, nickname: str, domain: str,
domain_blocked_full = get_full_domain(domain_blocked, port_blocked)
add_block(base_dir, nickname, domain,
- nickname_blocked, domain_blocked_full)
+ nickname_blocked, domain_blocked_full, '')
if debug:
print('DEBUG: post blocked via c2s - ' + post_filename)
diff --git a/daemon.py b/daemon.py
index 86cc1026f..e24141991 100644
--- a/daemon.py
+++ b/daemon.py
@@ -4291,9 +4291,12 @@ class PubServer(BaseHTTPRequestHandler):
return
if '&submitYes=' in block_confirm_params:
- blocking_actor = \
+ blocking_confirm_str = \
urllib.parse.unquote_plus(block_confirm_params)
- blocking_actor = blocking_actor.split('actor=')[1]
+ block_reason = blocking_confirm_str.split('blockReason=')[1]
+ if '&' in block_reason:
+ block_reason = block_reason.split('&')[0]
+ blocking_actor = blocking_confirm_str.split('actor=')[1]
if '&' in blocking_actor:
blocking_actor = blocking_actor.split('&')[0]
blocking_nickname = get_nickname_from_actor(blocking_actor)
@@ -4322,7 +4325,7 @@ class PubServer(BaseHTTPRequestHandler):
' of ' + blocking_actor)
add_block(base_dir, blocker_nickname,
domain, blocking_nickname,
- blocking_domain_full)
+ blocking_domain_full, block_reason)
remove_follower(base_dir, blocker_nickname,
domain,
blocking_nickname,
diff --git a/translations/ar.json b/translations/ar.json
index 1b984acf6..0ea26806b 100644
--- a/translations/ar.json
+++ b/translations/ar.json
@@ -625,5 +625,6 @@
"Featured hashtags": "علامات التجزئة المميزة",
"Proxy": "الوكيل",
"Only allow replies from followers": "السماح فقط بالردود من المتابعين",
- "Only allow replies from mutuals": "السماح فقط بالردود من المتبادلين"
+ "Only allow replies from mutuals": "السماح فقط بالردود من المتبادلين",
+ "Reason": "سبب"
}
diff --git a/translations/bn.json b/translations/bn.json
index 267f3ee91..d68dcd403 100644
--- a/translations/bn.json
+++ b/translations/bn.json
@@ -625,5 +625,6 @@
"Featured hashtags": "বৈশিষ্ট্যযুক্ত হ্যাশট্যাগ",
"Proxy": "প্রক্সি",
"Only allow replies from followers": "শুধুমাত্র অনুসরণকারীদের কাছ থেকে উত্তরের অনুমতি দিন",
- "Only allow replies from mutuals": "শুধুমাত্র মিউচুয়াল থেকে উত্তরের অনুমতি দিন"
+ "Only allow replies from mutuals": "শুধুমাত্র মিউচুয়াল থেকে উত্তরের অনুমতি দিন",
+ "Reason": "কারণ"
}
diff --git a/translations/ca.json b/translations/ca.json
index 2763b21a7..66ed5577e 100644
--- a/translations/ca.json
+++ b/translations/ca.json
@@ -625,5 +625,6 @@
"Featured hashtags": "Hashtags destacats",
"Proxy": "Proxy",
"Only allow replies from followers": "Només permet respostes dels seguidors",
- "Only allow replies from mutuals": "Només permet respostes de mútues"
+ "Only allow replies from mutuals": "Només permet respostes de mútues",
+ "Reason": "Raó"
}
diff --git a/translations/cy.json b/translations/cy.json
index 91b2439b8..fb5ab2eaa 100644
--- a/translations/cy.json
+++ b/translations/cy.json
@@ -625,5 +625,6 @@
"Featured hashtags": "Hashtags dan sylw",
"Proxy": "Dirprwy",
"Only allow replies from followers": "Caniatewch atebion gan ddilynwyr yn unig",
- "Only allow replies from mutuals": "Caniatewch atebion gan gwmnïau cydfuddiannol yn unig"
+ "Only allow replies from mutuals": "Caniatewch atebion gan gwmnïau cydfuddiannol yn unig",
+ "Reason": "Rheswm"
}
diff --git a/translations/de.json b/translations/de.json
index a52269317..a07a0e58f 100644
--- a/translations/de.json
+++ b/translations/de.json
@@ -625,5 +625,6 @@
"Featured hashtags": "Ausgewählte Hashtags",
"Proxy": "Stellvertreterin",
"Only allow replies from followers": "Erlauben Sie nur Antworten von Followern",
- "Only allow replies from mutuals": "Erlauben Sie nur Antworten von Gegenseitigkeitsgesellschaften"
+ "Only allow replies from mutuals": "Erlauben Sie nur Antworten von Gegenseitigkeitsgesellschaften",
+ "Reason": "Grund"
}
diff --git a/translations/el.json b/translations/el.json
index 5891aaf9d..c0eb09f55 100644
--- a/translations/el.json
+++ b/translations/el.json
@@ -625,5 +625,6 @@
"Featured hashtags": "Επιλεγμένα hashtag",
"Proxy": "Πληρεξούσιο",
"Only allow replies from followers": "Επιτρέπονται μόνο οι απαντήσεις από τους ακόλουθους",
- "Only allow replies from mutuals": "Επιτρέπονται μόνο απαντήσεις από αμοιβαία μέλη"
+ "Only allow replies from mutuals": "Επιτρέπονται μόνο απαντήσεις από αμοιβαία μέλη",
+ "Reason": "Λόγος"
}
diff --git a/translations/en.json b/translations/en.json
index 3424ec4c2..e062d9225 100644
--- a/translations/en.json
+++ b/translations/en.json
@@ -625,5 +625,6 @@
"Featured hashtags": "Featured hashtags",
"Proxy": "Proxy",
"Only allow replies from followers": "Only allow replies from followers",
- "Only allow replies from mutuals": "Only allow replies from mutuals"
+ "Only allow replies from mutuals": "Only allow replies from mutuals",
+ "Reason": "Reason"
}
diff --git a/translations/es.json b/translations/es.json
index 7aa9f4823..e526db827 100644
--- a/translations/es.json
+++ b/translations/es.json
@@ -625,5 +625,6 @@
"Featured hashtags": "Hashtags destacados",
"Proxy": "Apoderada",
"Only allow replies from followers": "Permitir solo respuestas de seguidores",
- "Only allow replies from mutuals": "Permitir solo respuestas de mutuas"
+ "Only allow replies from mutuals": "Permitir solo respuestas de mutuas",
+ "Reason": "Razón"
}
diff --git a/translations/fa.json b/translations/fa.json
index 9bc1fcf25..939d0da4a 100644
--- a/translations/fa.json
+++ b/translations/fa.json
@@ -625,5 +625,6 @@
"Featured hashtags": "هشتگ های ویژه",
"Proxy": "پروکسی",
"Only allow replies from followers": "فقط اجازه پاسخ از طرفداران را بدهید",
- "Only allow replies from mutuals": "فقط اجازه پاسخ از طرف متقابل را بدهید"
+ "Only allow replies from mutuals": "فقط اجازه پاسخ از طرف متقابل را بدهید",
+ "Reason": "دلیل"
}
diff --git a/translations/fr.json b/translations/fr.json
index d2dad5917..c42746514 100644
--- a/translations/fr.json
+++ b/translations/fr.json
@@ -625,5 +625,6 @@
"Featured hashtags": "Mots-clics en vedette",
"Proxy": "Procuration",
"Only allow replies from followers": "Autoriser uniquement les réponses des abonnés",
- "Only allow replies from mutuals": "Autoriser uniquement les réponses des mutuelles"
+ "Only allow replies from mutuals": "Autoriser uniquement les réponses des mutuelles",
+ "Reason": "Raison"
}
diff --git a/translations/ga.json b/translations/ga.json
index 384e6453e..51b88d538 100644
--- a/translations/ga.json
+++ b/translations/ga.json
@@ -625,5 +625,6 @@
"Featured hashtags": "Hashtags faoi thrácht",
"Proxy": "Seachfhreastalaí",
"Only allow replies from followers": "Ná ceadaigh ach freagraí ó leantóirí",
- "Only allow replies from mutuals": "Ná ceadaigh ach freagraí ó chomhlachtaí frithpháirteacha"
+ "Only allow replies from mutuals": "Ná ceadaigh ach freagraí ó chomhlachtaí frithpháirteacha",
+ "Reason": "Cúis"
}
diff --git a/translations/hi.json b/translations/hi.json
index 87f58b683..6cccb8989 100644
--- a/translations/hi.json
+++ b/translations/hi.json
@@ -625,5 +625,6 @@
"Featured hashtags": "विशेष रुप से प्रदर्शित हैशटैग",
"Proxy": "प्रतिनिधि",
"Only allow replies from followers": "केवल अनुयायियों के उत्तरों की अनुमति दें",
- "Only allow replies from mutuals": "केवल पारस्परिक उत्तरों की अनुमति दें"
+ "Only allow replies from mutuals": "केवल पारस्परिक उत्तरों की अनुमति दें",
+ "Reason": "कारण"
}
diff --git a/translations/it.json b/translations/it.json
index 639eecc01..ac222ca34 100644
--- a/translations/it.json
+++ b/translations/it.json
@@ -625,5 +625,6 @@
"Featured hashtags": "Hashtag in primo piano",
"Proxy": "Delega",
"Only allow replies from followers": "Consenti solo risposte dai follower",
- "Only allow replies from mutuals": "Consenti solo risposte da mutue"
+ "Only allow replies from mutuals": "Consenti solo risposte da mutue",
+ "Reason": "Motivo"
}
diff --git a/translations/ja.json b/translations/ja.json
index 0a2596c37..5048478f8 100644
--- a/translations/ja.json
+++ b/translations/ja.json
@@ -625,5 +625,6 @@
"Featured hashtags": "注目のハッシュタグ",
"Proxy": "プロキシー",
"Only allow replies from followers": "フォロワーからの返信のみを許可する",
- "Only allow replies from mutuals": "相互からの返信のみを許可する"
+ "Only allow replies from mutuals": "相互からの返信のみを許可する",
+ "Reason": "理由"
}
diff --git a/translations/ko.json b/translations/ko.json
index 8e1369073..0aad0c405 100644
--- a/translations/ko.json
+++ b/translations/ko.json
@@ -625,5 +625,6 @@
"Featured hashtags": "추천 해시태그",
"Proxy": "대리",
"Only allow replies from followers": "팔로어의 답글만 허용",
- "Only allow replies from mutuals": "상호 간의 답장만 허용"
+ "Only allow replies from mutuals": "상호 간의 답장만 허용",
+ "Reason": "이유"
}
diff --git a/translations/ku.json b/translations/ku.json
index 7c87f8f4a..afce2be2c 100644
--- a/translations/ku.json
+++ b/translations/ku.json
@@ -625,5 +625,6 @@
"Featured hashtags": "Hashtagên taybetmendî",
"Proxy": "Proxy",
"Only allow replies from followers": "Tenê destûr bidin bersivên ji şagirtan",
- "Only allow replies from mutuals": "Tenê destûr bidin bersivên ji hevdu"
+ "Only allow replies from mutuals": "Tenê destûr bidin bersivên ji hevdu",
+ "Reason": "Semed"
}
diff --git a/translations/nl.json b/translations/nl.json
index 486fc37c6..4d8826821 100644
--- a/translations/nl.json
+++ b/translations/nl.json
@@ -625,5 +625,6 @@
"Featured hashtags": "Aanbevolen hashtags",
"Proxy": "Volmacht",
"Only allow replies from followers": "Sta alleen reacties van volgers toe",
- "Only allow replies from mutuals": "Sta alleen reacties van onderlinge maatschappijen toe"
+ "Only allow replies from mutuals": "Sta alleen reacties van onderlinge maatschappijen toe",
+ "Reason": "Reden"
}
diff --git a/translations/oc.json b/translations/oc.json
index 5af2afddf..f3e681177 100644
--- a/translations/oc.json
+++ b/translations/oc.json
@@ -621,5 +621,6 @@
"Featured hashtags": "Featured hashtags",
"Proxy": "Proxy",
"Only allow replies from followers": "Only allow replies from followers",
- "Only allow replies from mutuals": "Only allow replies from mutuals"
+ "Only allow replies from mutuals": "Only allow replies from mutuals",
+ "Reason": "Reason"
}
diff --git a/translations/pl.json b/translations/pl.json
index b03269e56..cd74678f3 100644
--- a/translations/pl.json
+++ b/translations/pl.json
@@ -625,5 +625,6 @@
"Featured hashtags": "Polecane hashtagi",
"Proxy": "Pełnomocnik",
"Only allow replies from followers": "Zezwalaj tylko na odpowiedzi od obserwujących",
- "Only allow replies from mutuals": "Zezwalaj tylko na odpowiedzi od towarzystw wzajemnych"
+ "Only allow replies from mutuals": "Zezwalaj tylko na odpowiedzi od towarzystw wzajemnych",
+ "Reason": "Powód"
}
diff --git a/translations/pt.json b/translations/pt.json
index e6187be9e..1b5f4d50f 100644
--- a/translations/pt.json
+++ b/translations/pt.json
@@ -625,5 +625,6 @@
"Featured hashtags": "Hashtags em destaque",
"Proxy": "Proxy",
"Only allow replies from followers": "Permitir apenas respostas de seguidores",
- "Only allow replies from mutuals": "Permitir apenas respostas de mútuos"
+ "Only allow replies from mutuals": "Permitir apenas respostas de mútuos",
+ "Reason": "Razão"
}
diff --git a/translations/ru.json b/translations/ru.json
index 260eec686..5ed2e0100 100644
--- a/translations/ru.json
+++ b/translations/ru.json
@@ -625,5 +625,6 @@
"Featured hashtags": "Избранные хэштеги",
"Proxy": "Прокси",
"Only allow replies from followers": "Разрешить ответы только от подписчиков",
- "Only allow replies from mutuals": "Разрешить ответы только от взаимных"
+ "Only allow replies from mutuals": "Разрешить ответы только от взаимных",
+ "Reason": "Причина"
}
diff --git a/translations/sw.json b/translations/sw.json
index eef5b16dd..c4b2d14f5 100644
--- a/translations/sw.json
+++ b/translations/sw.json
@@ -625,5 +625,6 @@
"Featured hashtags": "Reli zilizoangaziwa",
"Proxy": "Wakala",
"Only allow replies from followers": "Ruhusu tu majibu kutoka kwa wafuasi",
- "Only allow replies from mutuals": "Ruhusu tu majibu kutoka kwa pande zote mbili"
+ "Only allow replies from mutuals": "Ruhusu tu majibu kutoka kwa pande zote mbili",
+ "Reason": "Sababu"
}
diff --git a/translations/tr.json b/translations/tr.json
index 41a456f56..78b55eb5b 100644
--- a/translations/tr.json
+++ b/translations/tr.json
@@ -625,5 +625,6 @@
"Featured hashtags": "Öne çıkan etiketler",
"Proxy": "Vekil",
"Only allow replies from followers": "Yalnızca takipçilerden gelen yanıtlara izin ver",
- "Only allow replies from mutuals": "Yalnızca ortaklardan gelen yanıtlara izin ver"
+ "Only allow replies from mutuals": "Yalnızca ortaklardan gelen yanıtlara izin ver",
+ "Reason": "Sebep"
}
diff --git a/translations/uk.json b/translations/uk.json
index 46e3e96e7..917974337 100644
--- a/translations/uk.json
+++ b/translations/uk.json
@@ -625,5 +625,6 @@
"Featured hashtags": "Рекомендовані хештеги",
"Proxy": "Проксі",
"Only allow replies from followers": "Дозволити відповіді лише від підписників",
- "Only allow replies from mutuals": "Дозволити відповіді лише від взаємних клієнтів"
+ "Only allow replies from mutuals": "Дозволити відповіді лише від взаємних клієнтів",
+ "Reason": "Причина"
}
diff --git a/translations/yi.json b/translations/yi.json
index db3a7dfb4..8d3426a64 100644
--- a/translations/yi.json
+++ b/translations/yi.json
@@ -625,5 +625,6 @@
"Featured hashtags": "פֿעיִקייטן פון hashtags",
"Proxy": "פראקסי",
"Only allow replies from followers": "נאָר לאָזן ענטפֿערס פון אנהענגערס",
- "Only allow replies from mutuals": "לאָזן בלויז ענטפֿערס פון מיוטשואַלז"
+ "Only allow replies from mutuals": "לאָזן בלויז ענטפֿערס פון מיוטשואַלז",
+ "Reason": "סיבה"
}
diff --git a/translations/zh.json b/translations/zh.json
index a86e7f777..b96391eee 100644
--- a/translations/zh.json
+++ b/translations/zh.json
@@ -625,5 +625,6 @@
"Featured hashtags": "特色标签",
"Proxy": "代理人",
"Only allow replies from followers": "只允许关注者回复",
- "Only allow replies from mutuals": "只允许来自相互的回复"
+ "Only allow replies from mutuals": "只允许来自相互的回复",
+ "Reason": "原因"
}
diff --git a/webapp_confirm.py b/webapp_confirm.py
index 95bccb943..6d87c640c 100644
--- a/webapp_confirm.py
+++ b/webapp_confirm.py
@@ -385,7 +385,13 @@ def html_confirm_block(translate: {}, base_dir: str,
translate['Yes'] + '\n'
block_str += \
' \n'
+ translate['No'] + '
\n'
+ block_str += \
+ ' \n' + \
+ ' \n'
block_str += ' \n'
block_str += '\n'
block_str += '\n'