123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- __filename__ = "manualapprove.py"
- __author__ = "Bob Mottram"
- __license__ = "AGPL3+"
- __version__ = "1.0.0"
- __maintainer__ = "Bob Mottram"
- __email__ = "bob@freedombone.net"
- __status__ = "Production"
- import os
- import json
- import time
- from follow import followedAccountAccepts
- from follow import followedAccountRejects
- from follow import removeFromFollowRequests
- from utils import loadJson
- from utils import saveJson
- def manualDenyFollowRequest(session,baseDir: str, \
- httpPrefix: str,
- nickname: str,domain: str,port: int, \
- denyHandle: str, \
- federationList: [], \
- sendThreads: [],postLog: [], \
- cachedWebfingers: {},personCache: {}, \
- debug: bool, \
- projectVersion: str) -> None:
- """Manually deny a follow request
- """
- handle=nickname+'@'+domain
- accountsDir=baseDir+'/accounts/'+handle
- # has this handle already been rejected?
- rejectedFollowsFilename=accountsDir+'/followrejects.txt'
- if os.path.isfile(rejectedFollowsFilename):
- if denyHandle in open(rejectedFollowsFilename).read():
- removeFromFollowRequests(baseDir,nickname,domain,denyHandle,debug)
- print(denyHandle+' has already been rejected as a follower of '+nickname)
- return
- removeFromFollowRequests(baseDir,nickname,domain,denyHandle,debug)
- # Store rejected follows
- rejectsFile=open(rejectedFollowsFilename, "a+")
- rejectsFile.write(denyHandle+'\n')
- rejectsFile.close()
-
- denyNickname=denyHandle.split('@')[0]
- denyDomain=denyHandle.split('@')[1].replace('\n','')
- denyPort=port
- if ':' in denyDomain:
- denyPort=denyDomain.split(':')[1]
- denyDomain=denyDomain.split(':')[0]
- followedAccountRejects(session,baseDir,httpPrefix, \
- nickname,domain,port, \
- denyNickname,denyDomain,denyPort, \
- followJson['actor'],federationList, \
- followJson, \
- sendThreads,postLog, \
- cachedWebfingers,personCache, \
- debug,projectVersion)
- print('Follow request from '+denyHandle+' was denied.')
-
- def manualApproveFollowRequest(session,baseDir: str, \
- httpPrefix: str,
- nickname: str,domain: str,port: int, \
- approveHandle: str, \
- federationList: [], \
- sendThreads: [],postLog: [], \
- cachedWebfingers: {},personCache: {}, \
- acceptedCaps: [], \
- debug: bool, \
- projectVersion: str) -> None:
- """Manually approve a follow request
- """
- print('Manually approving follow request from '+approveHandle)
- handle=nickname+'@'+domain
- accountsDir=baseDir+'/accounts/'+handle
- approveFollowsFilename=accountsDir+'/followrequests.txt'
- if not os.path.isfile(approveFollowsFilename):
- if debug:
- print('WARN: Follow requests file '+approveFollowsFilename+' not found')
- return
- if approveHandle not in open(approveFollowsFilename).read():
- if debug:
- print(handle+' not in '+approveFollowsFilename)
- return
-
- approvefilenew = open(approveFollowsFilename+'.new', 'w+')
- updateApprovedFollowers=False
- with open(approveFollowsFilename, 'r') as approvefile:
- for handle in approvefile:
- if handle.startswith(approveHandle):
- handle=handle.replace('\n','')
- port2=port
- if ':' in handle:
- port2=int(handle.split(':')[1])
- requestsDir=accountsDir+'/requests'
- followActivityfilename=requestsDir+'/'+handle+'.follow'
- if os.path.isfile(followActivityfilename):
- followJson=loadJson(followActivityfilename)
- if followJson:
- approveNickname=approveHandle.split('@')[0]
- approveDomain=approveHandle.split('@')[1].replace('\n','')
- approvePort=port2
- if ':' in approveDomain:
- approvePort=approveDomain.split(':')[1]
- approveDomain=approveDomain.split(':')[0]
- print('Sending Accept for '+handle+' follow request from '+approveHandle)
- followedAccountAccepts(session,baseDir,httpPrefix, \
- nickname,domain,port, \
- approveNickname,approveDomain,approvePort, \
- followJson['actor'],federationList, \
- followJson,acceptedCaps, \
- sendThreads,postLog, \
- cachedWebfingers,personCache, \
- debug,projectVersion)
- os.remove(followActivityfilename)
- updateApprovedFollowers=True
- else:
- approvefilenew.write(handle)
- approvefilenew.close()
- os.rename(approveFollowsFilename+'.new',approveFollowsFilename)
- if updateApprovedFollowers:
- # update the followers
- followersFilename=accountsDir+'/followers.txt'
- if os.path.isfile(followersFilename):
- if approveHandle not in open(followersFilename).read():
- try:
- with open(followersFilename, 'r+') as followersFile:
- content = followersFile.read()
- followersFile.seek(0, 0)
- followersFile.write(approveHandle+'\n'+content)
- except Exception as e:
- print('WARN: Failed to write entry to followers file '+str(e))
- else:
- followersFile=open(followersFilename, "w+")
- followersFile.write(approveHandle+'\n')
- followersFile.close()
|