Pass base directory as parameter

master
Bob Mottram 2019-07-01 10:59:57 +01:00
parent d9d5ce94dc
commit 006cc3bbb3
5 changed files with 31 additions and 43 deletions

View File

@ -48,19 +48,19 @@ baseDir=os.getcwd()
session = createSession(useTor) session = createSession(useTor)
clearFollows(username,domain) clearFollows(baseDir,username,domain)
followPerson(username,domain,'badger','wild.com',federationList) followPerson(baseDir,username,domain,'badger','wild.com',federationList)
followPerson(username,domain,'squirrel','secret.com',federationList) followPerson(baseDir,username,domain,'squirrel','secret.com',federationList)
followPerson(username,domain,'rodent','drainpipe.com',federationList) followPerson(baseDir,username,domain,'rodent','drainpipe.com',federationList)
followPerson(username,domain,'batman','mesh.com',federationList) followPerson(baseDir,username,domain,'batman','mesh.com',federationList)
followPerson(username,domain,'giraffe','trees.com',federationList) followPerson(baseDir,username,domain,'giraffe','trees.com',federationList)
clearFollowers(username,domain) clearFollowers(baseDir,username,domain)
followerOfPerson(username,domain,'badger','wild.com',federationList) followerOfPerson(baseDir,username,domain,'badger','wild.com',federationList)
followerOfPerson(username,domain,'squirrel','secret.com',federationList) followerOfPerson(baseDir,username,domain,'squirrel','secret.com',federationList)
followerOfPerson(username,domain,'rodent','drainpipe.com',federationList) followerOfPerson(baseDir,username,domain,'rodent','drainpipe.com',federationList)
followerOfPerson(username,domain,'batman','mesh.com',federationList) followerOfPerson(baseDir,username,domain,'batman','mesh.com',federationList)
followerOfPerson(username,domain,'giraffe','trees.com',federationList) followerOfPerson(baseDir,username,domain,'giraffe','trees.com',federationList)
#unfollowPerson(username,domain,'squirrel','secret.com') #unfollowPerson(username,domain,'squirrel','secret.com')
#sys.exit() #sys.exit()
@ -75,18 +75,18 @@ followerOfPerson(username,domain,'giraffe','trees.com',federationList)
privateKeyPem,publicKeyPem,person,wfEndpoint=createPerson(baseDir,username,domain,port,https,True) privateKeyPem,publicKeyPem,person,wfEndpoint=createPerson(baseDir,username,domain,port,https,True)
#deleteAllPosts(username,domain) #deleteAllPosts(username,domain)
setPreferredUsername(username,domain,'badger') setPreferredUsername(baseDir,username,domain,'badger')
setBio(username,domain,'Some personal info') setBio(baseDir,username,domain,'Some personal info')
#createPublicPost(username, domain, https, "G'day world!", False, True, None, None, 'Not suitable for Vogons') #createPublicPost(username, domain, https, "G'day world!", False, True, None, None, 'Not suitable for Vogons')
#archivePosts(username,domain,baseDir,4) #archivePosts(username,domain,baseDir,4)
#outboxJson=createOutbox(baseDir,username,domain,port,https,2,True,None) #outboxJson=createOutbox(baseDir,username,domain,port,https,2,True,None)
#pprint(outboxJson) #pprint(outboxJson)
testPostMessageBetweenServers() #testPostMessageBetweenServers()
#runDaemon(domain,port,https,federationList,useTor) #runDaemon(domain,port,https,federationList,useTor)
#testHttpsig() #testHttpsig()
sys.exit() #sys.exit()
#pprint(person) #pprint(person)
#print('\n') #print('\n')
@ -96,9 +96,9 @@ handle="https://mastodon.social/@Gargron"
wfRequest = webfingerHandle(session,handle,True) wfRequest = webfingerHandle(session,handle,True)
if not wfRequest: if not wfRequest:
sys.exit() sys.exit()
#wfResult = json.dumps(wfRequest, indent=4, sort_keys=True) wfResult = json.dumps(wfRequest, indent=4, sort_keys=True)
#print(str(wfResult)) print(str(wfResult))
#sys.exit() sys.exit()
maxMentions=10 maxMentions=10
maxEmoji=10 maxEmoji=10

View File

@ -12,14 +12,13 @@ import os
import sys import sys
from person import validUsername from person import validUsername
def followPerson(username: str, domain: str, followUsername: str, followDomain: str, federationList, followFile='following.txt') -> bool: def followPerson(baseDir: str,username: str, domain: str, followUsername: str, followDomain: str, federationList, followFile='following.txt') -> bool:
"""Adds a person to the follow list """Adds a person to the follow list
""" """
if followDomain.lower().replace('\n','') not in federationList: if followDomain.lower().replace('\n','') not in federationList:
return False return False
handle=username.lower()+'@'+domain.lower() handle=username.lower()+'@'+domain.lower()
handleToFollow=followUsername.lower()+'@'+followDomain.lower() handleToFollow=followUsername.lower()+'@'+followDomain.lower()
baseDir=os.getcwd()
if not os.path.isdir(baseDir+'/accounts/'+handle): if not os.path.isdir(baseDir+'/accounts/'+handle):
os.mkdir(baseDir+'/accounts/'+handle) os.mkdir(baseDir+'/accounts/'+handle)
filename=baseDir+'/accounts/'+handle+'/'+followFile filename=baseDir+'/accounts/'+handle+'/'+followFile
@ -33,17 +32,16 @@ def followPerson(username: str, domain: str, followUsername: str, followDomain:
followfile.write(handleToFollow+'\n') followfile.write(handleToFollow+'\n')
return True return True
def followerOfPerson(username: str, domain: str, followerUsername: str, followerDomain: str, federationList) -> bool: def followerOfPerson(baseDir: str,username: str, domain: str, followerUsername: str, followerDomain: str, federationList) -> bool:
"""Adds a follower of the given person """Adds a follower of the given person
""" """
return followPerson(username, domain, followerUsername, followerDomain, federationList, 'followers.txt') return followPerson(baseDir,username, domain, followerUsername, followerDomain, federationList, 'followers.txt')
def unfollowPerson(username: str, domain: str, followUsername: str, followDomain: str,followFile='following.txt') -> None: def unfollowPerson(baseDir: str,username: str, domain: str, followUsername: str, followDomain: str,followFile='following.txt') -> None:
"""Removes a person to the follow list """Removes a person to the follow list
""" """
handle=username.lower()+'@'+domain.lower() handle=username.lower()+'@'+domain.lower()
handleToUnfollow=followUsername.lower()+'@'+followDomain.lower() handleToUnfollow=followUsername.lower()+'@'+followDomain.lower()
baseDir=os.getcwd()
if not os.path.isdir(baseDir+'/accounts/'+handle): if not os.path.isdir(baseDir+'/accounts/'+handle):
os.mkdir(baseDir+'/accounts/'+handle) os.mkdir(baseDir+'/accounts/'+handle)
filename=baseDir+'/accounts/'+handle+'/'+followFile filename=baseDir+'/accounts/'+handle+'/'+followFile
@ -62,27 +60,25 @@ def unfollowerOfPerson(username: str, domain: str, followerUsername: str, follow
""" """
unfollowPerson(username, domain, followerUsername, followerDomain,'followers.txt') unfollowPerson(username, domain, followerUsername, followerDomain,'followers.txt')
def clearFollows(username: str, domain: str,followFile='following.txt') -> None: def clearFollows(baseDir: str,username: str, domain: str,followFile='following.txt') -> None:
"""Removes all follows """Removes all follows
""" """
handle=username.lower()+'@'+domain.lower() handle=username.lower()+'@'+domain.lower()
baseDir=os.getcwd()
if not os.path.isdir(baseDir+'/accounts/'+handle): if not os.path.isdir(baseDir+'/accounts/'+handle):
os.mkdir(baseDir+'/accounts/'+handle) os.mkdir(baseDir+'/accounts/'+handle)
filename=baseDir+'/accounts/'+handle+'/'+followFile filename=baseDir+'/accounts/'+handle+'/'+followFile
if os.path.isfile(filename): if os.path.isfile(filename):
os.remove(filename) os.remove(filename)
def clearFollowers(username: str, domain: str) -> None: def clearFollowers(baseDir: str,username: str, domain: str) -> None:
"""Removes all followers """Removes all followers
""" """
clearFollows(username, domain,'followers.txt') clearFollows(baseDir,username, domain,'followers.txt')
def getNoOfFollows(username: str,domain: str, followFile='following.txt') -> int: def getNoOfFollows(baseDir: str,username: str,domain: str, followFile='following.txt') -> int:
"""Returns the number of follows or followers """Returns the number of follows or followers
""" """
handle=username.lower()+'@'+domain.lower() handle=username.lower()+'@'+domain.lower()
baseDir=os.getcwd()
filename=baseDir+'/accounts/'+handle+'/'+followFile filename=baseDir+'/accounts/'+handle+'/'+followFile
if not os.path.isfile(filename): if not os.path.isfile(filename):
return 0 return 0
@ -102,7 +98,7 @@ def getNoOfFollowers(username: str,domain: str) -> int:
""" """
return getNoOfFollows(username,domain,'followers.txt') return getNoOfFollows(username,domain,'followers.txt')
def getFollowingFeed(domain: str,port: int,path: str,https: bool,followsPerPage=12,followFile='following') -> {}: def getFollowingFeed(baseDir: str,domain: str,port: int,path: str,https: bool,followsPerPage=12,followFile='following') -> {}:
"""Returns the following and followers feeds from GET requests """Returns the following and followers feeds from GET requests
""" """
if '/'+followFile not in path: if '/'+followFile not in path:
@ -162,7 +158,6 @@ def getFollowingFeed(domain: str,port: int,path: str,https: bool,followsPerPage=
'totalItems': 0, 'totalItems': 0,
'type': 'OrderedCollectionPage'} 'type': 'OrderedCollectionPage'}
baseDir=os.getcwd()
handle=username.lower()+'@'+domain.lower() handle=username.lower()+'@'+domain.lower()
filename=baseDir+'/accounts/'+handle+'/'+followFile+'.txt' filename=baseDir+'/accounts/'+handle+'/'+followFile+'.txt'
if not os.path.isfile(filename): if not os.path.isfile(filename):

View File

@ -196,11 +196,10 @@ def personOutboxJson(baseDir: str,domain: str,port: int,path: str,https: bool,no
return None return None
return createOutbox(baseDir,username,domain,port,https,noOfItems,headerOnly,pageNumber) return createOutbox(baseDir,username,domain,port,https,noOfItems,headerOnly,pageNumber)
def setPreferredUsername(username: str, domain: str, preferredName: str) -> bool: def setPreferredUsername(baseDir: str,username: str, domain: str, preferredName: str) -> bool:
if len(preferredName)>32: if len(preferredName)>32:
return False return False
handle=username.lower()+'@'+domain.lower() handle=username.lower()+'@'+domain.lower()
baseDir=os.getcwd()
filename=baseDir+'/accounts/'+handle.lower()+'.json' filename=baseDir+'/accounts/'+handle.lower()+'.json'
if not os.path.isfile(filename): if not os.path.isfile(filename):
return False return False
@ -214,11 +213,10 @@ def setPreferredUsername(username: str, domain: str, preferredName: str) -> bool
commentjson.dump(personJson, fp, indent=4, sort_keys=False) commentjson.dump(personJson, fp, indent=4, sort_keys=False)
return True return True
def setBio(username: str, domain: str, bio: str) -> bool: def setBio(baseDir: str,username: str, domain: str, bio: str) -> bool:
if len(bio)>32: if len(bio)>32:
return False return False
handle=username.lower()+'@'+domain.lower() handle=username.lower()+'@'+domain.lower()
baseDir=os.getcwd()
filename=baseDir+'/accounts/'+handle.lower()+'.json' filename=baseDir+'/accounts/'+handle.lower()+'.json'
if not os.path.isfile(filename): if not os.path.isfile(filename):
return False return False

View File

@ -374,7 +374,7 @@ def sendPost(session,baseDir,username: str, domain: str, port: int, toUsername:
# construct the http header # construct the http header
signatureHeaderJson = createSignedHeader(privateKeyPem, username, domain, port, '/inbox', https, withDigest, postJsonObject) signatureHeaderJson = createSignedHeader(privateKeyPem, username, domain, port, '/inbox', https, withDigest, postJsonObject)
signatureHeaderJson['Content-type'] = 'application/json' signatureHeaderJson['Content-type'] = 'application/json'
print("*************signatureHeaderJson "+str(signatureHeaderJson))
# Keep the number of threads being used small # Keep the number of threads being used small
while len(sendThreads)>10: while len(sendThreads)>10:
sendThreads[0].kill() sendThreads[0].kill()

View File

@ -50,8 +50,6 @@ def webfingerHandle(session,handle: str,https: bool):
par = {'resource': 'acct:{}'.format(username+'@'+domain)} par = {'resource': 'acct:{}'.format(username+'@'+domain)}
hdr = {'Accept': 'application/jrd+json'} hdr = {'Accept': 'application/jrd+json'}
#try: #try:
print("webfinger url = "+url)
print("webfinger par = "+str(par))
result = getJson(session, url, hdr, par) result = getJson(session, url, hdr, par)
#except: #except:
# print("Unable to webfinger " + url) # print("Unable to webfinger " + url)
@ -149,13 +147,11 @@ def webfingerLookup(path: str,baseDir: str):
if not path.startswith('/.well-known/webfinger?'): if not path.startswith('/.well-known/webfinger?'):
return None return None
handle=None handle=None
print('************** '+path)
if 'resource=acct:' in path: if 'resource=acct:' in path:
handle=path.split('resource=acct:')[1].strip() handle=path.split('resource=acct:')[1].strip()
else: else:
if 'resource=acct%3A' in path: if 'resource=acct%3A' in path:
handle=path.split('resource=acct%3A')[1].replace('%40','@').strip() handle=path.split('resource=acct%3A')[1].replace('%40','@').strip()
print('************** handle: '+handle)
if not handle: if not handle:
return None return None
if '&' in handle: if '&' in handle:
@ -163,7 +159,6 @@ def webfingerLookup(path: str,baseDir: str):
if '@' not in handle: if '@' not in handle:
return None return None
filename=baseDir+'/wfendpoints/'+handle.lower()+'.json' filename=baseDir+'/wfendpoints/'+handle.lower()+'.json'
print('************** filename: '+filename)
if not os.path.isfile(filename): if not os.path.isfile(filename):
return None return None
wfJson={"user": "unknown"} wfJson={"user": "unknown"}