flake8 format

main
Bob Mottram 2020-04-03 08:50:43 +00:00
parent 2f8d97701a
commit dfb1263f1a
1 changed files with 142 additions and 129 deletions

147
delete.py
View File

@ -6,10 +6,7 @@ __maintainer__="Bob Mottram"
__email__ = "bob@freedombone.net" __email__ = "bob@freedombone.net"
__status__ = "Production" __status__ = "Production"
import os
import json
from utils import getStatusNumber from utils import getStatusNumber
from utils import createOutboxDir
from utils import urlPermitted from utils import urlPermitted
from utils import getNicknameFromActor from utils import getNicknameFromActor
from utils import getDomainFromActor from utils import getDomainFromActor
@ -22,12 +19,13 @@ from webfinger import webfingerHandle
from auth import createBasicAuthHeader from auth import createBasicAuthHeader
from posts import getPersonBox from posts import getPersonBox
def createDelete(session,baseDir: str,federationList: [], \
nickname: str, domain: str, port: int, \ def createDelete(session, baseDir: str, federationList: [],
toUrl: str, ccUrl: str, httpPrefix: str, \ nickname: str, domain: str, port: int,
objectUrl: str,clientToServer: bool, \ toUrl: str, ccUrl: str, httpPrefix: str,
sendThreads: [],postLog: [], \ objectUrl: str, clientToServer: bool,
personCache: {},cachedWebfingers: {}, \ sendThreads: [], postLog: [],
personCache: {}, cachedWebfingers: {},
debug: bool) -> {}: debug: bool) -> {}:
"""Creates a delete message """Creates a delete message
Typically toUrl will be https://www.w3.org/ns/activitystreams#Public Typically toUrl will be https://www.w3.org/ns/activitystreams#Public
@ -48,11 +46,12 @@ def createDelete(session,baseDir: str,federationList: [], \
statusNumber, published = getStatusNumber() statusNumber, published = getStatusNumber()
newDeleteId = \ newDeleteId = \
httpPrefix+'://'+fullDomain+'/users/'+nickname+'/statuses/'+statusNumber httpPrefix + '://' + fullDomain + '/users/' + \
nickname + '/statuses/' + statusNumber
newDelete = { newDelete = {
"@context": "https://www.w3.org/ns/activitystreams", "@context": "https://www.w3.org/ns/activitystreams",
'actor': httpPrefix+'://'+fullDomain+'/users/'+nickname, 'actor': httpPrefix+'://'+fullDomain+'/users/'+nickname,
'atomUri': httpPrefix+'://'+fullDomain+'/users/'+nickname+'/statuses/'+statusNumber, 'atomUri': newDeleteId,
'cc': [], 'cc': [],
'id': newDeleteId + '/activity', 'id': newDeleteId + '/activity',
'object': objectUrl, 'object': objectUrl,
@ -74,20 +73,22 @@ def createDelete(session,baseDir: str,federationList: [], \
deleteDomain, deletePort = getDomainFromActor(objectUrl) deleteDomain, deletePort = getDomainFromActor(objectUrl)
if deleteNickname and deleteDomain: if deleteNickname and deleteDomain:
sendSignedJson(newDelete,session,baseDir, \ sendSignedJson(newDelete, session, baseDir,
nickname,domain,port, \ nickname, domain, port,
deleteNickname,deleteDomain,deletePort, \ deleteNickname, deleteDomain, deletePort,
'https://www.w3.org/ns/activitystreams#Public', \ 'https://www.w3.org/ns/activitystreams#Public',
httpPrefix,True,clientToServer,federationList, \ httpPrefix, True, clientToServer, federationList,
sendThreads,postLog,cachedWebfingers,personCache,debug) sendThreads, postLog, cachedWebfingers,
personCache, debug)
return newDelete return newDelete
def sendDeleteViaServer(baseDir: str,session, \
fromNickname: str,password: str, \ def sendDeleteViaServer(baseDir: str, session,
fromDomain: str,fromPort: int, \ fromNickname: str, password: str,
httpPrefix: str,deleteObjectUrl: str, \ fromDomain: str, fromPort: int,
cachedWebfingers: {},personCache: {}, \ httpPrefix: str, deleteObjectUrl: str,
cachedWebfingers: {}, personCache: {},
debug: bool, projectVersion: str) -> {}: debug: bool, projectVersion: str) -> {}:
"""Creates a delete request message via c2s """Creates a delete request message via c2s
""" """
@ -101,12 +102,14 @@ def sendDeleteViaServer(baseDir: str,session, \
if ':' not in fromDomain: if ':' not in fromDomain:
fromDomainFull = fromDomain + ':' + str(fromPort) fromDomainFull = fromDomain + ':' + str(fromPort)
actor = httpPrefix + '://' + fromDomainFull + \
'/users/' + fromNickname
toUrl = 'https://www.w3.org/ns/activitystreams#Public' toUrl = 'https://www.w3.org/ns/activitystreams#Public'
ccUrl=httpPrefix+'://'+fromDomainFull+'/users/'+fromNickname+'/followers' ccUrl = actor + '/followers'
newDeleteJson = { newDeleteJson = {
"@context": "https://www.w3.org/ns/activitystreams", "@context": "https://www.w3.org/ns/activitystreams",
'actor': httpPrefix+'://'+fromDomainFull+'/users/'+fromNickname, 'actor': actor,
'cc': [ccUrl], 'cc': [ccUrl],
'object': deleteObjectUrl, 'object': deleteObjectUrl,
'to': [toUrl], 'to': [toUrl],
@ -117,7 +120,7 @@ def sendDeleteViaServer(baseDir: str,session, \
# lookup the inbox for the To handle # lookup the inbox for the To handle
wfRequest = \ wfRequest = \
webfingerHandle(session,handle,httpPrefix,cachedWebfingers, \ webfingerHandle(session, handle, httpPrefix, cachedWebfingers,
fromDomain, projectVersion) fromDomain, projectVersion)
if not wfRequest: if not wfRequest:
if debug: if debug:
@ -127,9 +130,11 @@ def sendDeleteViaServer(baseDir: str,session, \
postToBox = 'outbox' postToBox = 'outbox'
# get the actor inbox for the To handle # get the actor inbox for the To handle
inboxUrl,pubKeyId,pubKey,fromPersonId,sharedInbox,capabilityAcquisition,avatarUrl,displayName= \ (inboxUrl, pubKeyId, pubKey,
getPersonBox(baseDir,session,wfRequest,personCache, \ fromPersonId, sharedInbox,
projectVersion,httpPrefix,fromNickname, \ capabilityAcquisition, avatarUrl,
displayName) = getPersonBox(baseDir, session, wfRequest, personCache,
projectVersion, httpPrefix, fromNickname,
fromDomain, postToBox) fromDomain, postToBox)
if not inboxUrl: if not inboxUrl:
@ -144,27 +149,28 @@ def sendDeleteViaServer(baseDir: str,session, \
authHeader = createBasicAuthHeader(fromNickname, password) authHeader = createBasicAuthHeader(fromNickname, password)
headers = { headers = {
'host': fromDomain, \ 'host': fromDomain,
'Content-type': 'application/json', \ 'Content-type': 'application/json',
'Authorization': authHeader 'Authorization': authHeader
} }
postResult = \ postResult = \
postJson(session, newDeleteJson, [], inboxUrl, headers, "inbox:write") postJson(session, newDeleteJson, [], inboxUrl, headers, "inbox:write")
#if not postResult: if not postResult:
# if debug: if debug:
# print('DEBUG: POST announce failed for c2s to '+inboxUrl) print('DEBUG: POST announce failed for c2s to ' + inboxUrl)
# return 5 return 5
if debug: if debug:
print('DEBUG: c2s POST delete request success') print('DEBUG: c2s POST delete request success')
return newDeleteJson return newDeleteJson
def deletePublic(session,baseDir: str,federationList: [], \
nickname: str, domain: str, port: int, httpPrefix: str, \ def deletePublic(session, baseDir: str, federationList: [],
objectUrl: str,clientToServer: bool, \ nickname: str, domain: str, port: int, httpPrefix: str,
sendThreads: [],postLog: [], \ objectUrl: str, clientToServer: bool,
personCache: {},cachedWebfingers: {}, \ sendThreads: [], postLog: [],
personCache: {}, cachedWebfingers: {},
debug: bool) -> {}: debug: bool) -> {}:
"""Makes a public delete activity """Makes a public delete activity
""" """
@ -175,22 +181,24 @@ def deletePublic(session,baseDir: str,federationList: [], \
fromDomain = domain + ':' + str(port) fromDomain = domain + ':' + str(port)
toUrl = 'https://www.w3.org/ns/activitystreams#Public' toUrl = 'https://www.w3.org/ns/activitystreams#Public'
ccUrl=httpPrefix+'://'+fromDomain+'/users/'+nickname+'/followers' ccUrl = httpPrefix + '://' + fromDomain + \
return createDelete(session,baseDir,federationList, \ '/users/' + nickname + '/followers'
nickname,domain,port, \ return createDelete(session, baseDir, federationList,
toUrl,ccUrl,httpPrefix, \ nickname, domain, port,
objectUrl,clientToServer, \ toUrl, ccUrl, httpPrefix,
sendThreads,postLog, \ objectUrl, clientToServer,
personCache,cachedWebfingers, \ sendThreads, postLog,
personCache, cachedWebfingers,
debug) debug)
def deletePostPub(session,baseDir: str,federationList: [], \
nickname: str, domain: str, port: int, httpPrefix: str, \ def deletePostPub(session, baseDir: str, federationList: [],
deleteNickname: str, deleteDomain: str, \ nickname: str, domain: str, port: int, httpPrefix: str,
deletePort: int, deleteHttpsPrefix: str, \ deleteNickname: str, deleteDomain: str,
deleteStatusNumber: int,clientToServer: bool, \ deletePort: int, deleteHttpsPrefix: str,
sendThreads: [],postLog: [], \ deleteStatusNumber: int, clientToServer: bool,
personCache: {},cachedWebfingers: {}, \ sendThreads: [], postLog: [],
personCache: {}, cachedWebfingers: {},
debug: bool) -> {}: debug: bool) -> {}:
"""Deletes a given status post """Deletes a given status post
""" """
@ -204,15 +212,16 @@ def deletePostPub(session,baseDir: str,federationList: [], \
deleteHttpsPrefix + '://' + deletedDomain + '/users/' + \ deleteHttpsPrefix + '://' + deletedDomain + '/users/' + \
deleteNickname + '/statuses/' + str(deleteStatusNumber) deleteNickname + '/statuses/' + str(deleteStatusNumber)
return deletePublic(session,baseDir,federationList, \ return deletePublic(session, baseDir, federationList,
nickname,domain,port,httpPrefix, \ nickname, domain, port, httpPrefix,
objectUrl,clientToServer, \ objectUrl, clientToServer,
sendThreads,postLog, \ sendThreads, postLog,
personCache,cachedWebfingers, \ personCache, cachedWebfingers,
debug) debug)
def outboxDelete(baseDir: str,httpPrefix: str, \
nickname: str,domain: str, \ def outboxDelete(baseDir: str, httpPrefix: str,
nickname: str, domain: str,
messageJson: {}, debug: bool, messageJson: {}, debug: bool,
allowDeletion: bool) -> None: allowDeletion: bool) -> None:
""" When a delete request is received by the outbox from c2s """ When a delete request is received by the outbox from c2s
@ -236,9 +245,9 @@ def outboxDelete(baseDir: str,httpPrefix: str, \
if debug: if debug:
print('DEBUG: c2s delete request arrived in outbox') print('DEBUG: c2s delete request arrived in outbox')
deletePrefix = httpPrefix + '://' + domain deletePrefix = httpPrefix + '://' + domain
if not allowDeletion and \ if (not allowDeletion and
(not messageJson['object'].startswith(deletePrefix) or \ (not messageJson['object'].startswith(deletePrefix) or
not messageJson['actor'].startswith(deletePrefix)): not messageJson['actor'].startswith(deletePrefix))):
if debug: if debug:
print('DEBUG: delete not permitted from other instances') print('DEBUG: delete not permitted from other instances')
return return
@ -256,22 +265,26 @@ def outboxDelete(baseDir: str,httpPrefix: str, \
deleteNickname = getNicknameFromActor(messageId) deleteNickname = getNicknameFromActor(messageId)
if deleteNickname != nickname: if deleteNickname != nickname:
if debug: if debug:
print("DEBUG: you can't delete a post which wasn't created by you (nickname does not match)") print("DEBUG: you can't delete a post which " +
"wasn't created by you (nickname does not match)")
return return
deleteDomain, deletePort = getDomainFromActor(messageId) deleteDomain, deletePort = getDomainFromActor(messageId)
if ':' in domain: if ':' in domain:
domain = domain.split(':')[0] domain = domain.split(':')[0]
if deleteDomain != domain: if deleteDomain != domain:
if debug: if debug:
print("DEBUG: you can't delete a post which wasn't created by you (domain does not match)") print("DEBUG: you can't delete a post which " +
"wasn't created by you (domain does not match)")
return return
removeModerationPostFromIndex(baseDir, messageId, debug) removeModerationPostFromIndex(baseDir, messageId, debug)
postFilename=locatePost(baseDir,deleteNickname,deleteDomain,messageId) postFilename = locatePost(baseDir, deleteNickname, deleteDomain,
messageId)
if not postFilename: if not postFilename:
if debug: if debug:
print('DEBUG: c2s delete post not found in inbox or outbox') print('DEBUG: c2s delete post not found in inbox or outbox')
print(messageId) print(messageId)
return True return True
deletePost(baseDir,httpPrefix,deleteNickname,deleteDomain,postFilename,debug) deletePost(baseDir, httpPrefix, deleteNickname, deleteDomain,
postFilename, debug)
if debug: if debug:
print('DEBUG: post deleted via c2s - ' + postFilename) print('DEBUG: post deleted via c2s - ' + postFilename)