Include port with domain

master
Bob Mottram 2019-06-30 19:23:18 +01:00
parent aa87daa0a1
commit 6c85b39adc
5 changed files with 19 additions and 7 deletions

View File

@ -66,7 +66,7 @@ followerOfPerson(username,domain,'giraffe','trees.com',federationList)
#sys.exit() #sys.exit()
privateKeyPem,publicKeyPem,person,wfEndpoint=createPerson(username,domain,https,True) privateKeyPem,publicKeyPem,person,wfEndpoint=createPerson(username,domain,port,https,True)
#deleteAllPosts(username,domain) #deleteAllPosts(username,domain)
setPreferredUsername(username,domain,'badger') setPreferredUsername(username,domain,'badger')
setBio(username,domain,'Some personal info') setBio(username,domain,'Some personal info')

View File

@ -114,7 +114,8 @@ def testHttpsigBase(withDigest):
username='socrates' username='socrates'
domain='argumentative.social' domain='argumentative.social'
https=True https=True
privateKeyPem,publicKeyPem,person,wfEndpoint=createPerson(username,domain,https,False) port=80
privateKeyPem,publicKeyPem,person,wfEndpoint=createPerson(username,domain,port,https,False)
messageBodyJson = '{"a key": "a value", "another key": "A string"}' messageBodyJson = '{"a key": "a value", "another key": "A string"}'
if not withDigest: if not withDigest:
headers = {'host': domain} headers = {'host': domain}

View File

@ -21,7 +21,7 @@ def generateRSAKey() -> (str,str):
publicKeyPem = key.publickey().exportKey("PEM").decode("utf-8") publicKeyPem = key.publickey().exportKey("PEM").decode("utf-8")
return privateKeyPem,publicKeyPem return privateKeyPem,publicKeyPem
def createPerson(username: str,domain: str,https: bool, saveToFile: bool) -> (str,str,{},{}): def createPerson(username: str,domain: str,port: int,https: bool, saveToFile: bool) -> (str,str,{},{}):
"""Returns the private key, public key, actor and webfinger endpoint """Returns the private key, public key, actor and webfinger endpoint
""" """
prefix='https' prefix='https'
@ -29,10 +29,14 @@ def createPerson(username: str,domain: str,https: bool, saveToFile: bool) -> (st
prefix='http' prefix='http'
privateKeyPem,publicKeyPem=generateRSAKey() privateKeyPem,publicKeyPem=generateRSAKey()
webfingerEndpoint=createWebfingerEndpoint(username,domain,https,publicKeyPem) webfingerEndpoint=createWebfingerEndpoint(username,domain,port,https,publicKeyPem)
if saveToFile: if saveToFile:
storeWebfingerEndpoint(username,domain,webfingerEndpoint) storeWebfingerEndpoint(username,domain,webfingerEndpoint)
handle=username.lower()+'@'+domain.lower()
if port!=80 and port!=443:
domain=domain+':'+str(port)
newPerson = {'@context': ['https://www.w3.org/ns/activitystreams', newPerson = {'@context': ['https://www.w3.org/ns/activitystreams',
'https://w3id.org/security/v1', 'https://w3id.org/security/v1',
{'Emoji': 'toot:Emoji', {'Emoji': 'toot:Emoji',
@ -75,7 +79,6 @@ def createPerson(username: str,domain: str,https: bool, saveToFile: bool) -> (st
if saveToFile: if saveToFile:
# save person to file # save person to file
handle=username.lower()+'@'+domain.lower()
baseDir=os.getcwd() baseDir=os.getcwd()
peopleSubdir='/accounts' peopleSubdir='/accounts'
if not os.path.isdir(baseDir+peopleSubdir): if not os.path.isdir(baseDir+peopleSubdir):

View File

@ -9,6 +9,8 @@ __status__ = "Production"
import requests import requests
import json import json
baseDirectory=None
def createSession(onionRoute: bool): def createSession(onionRoute: bool):
session = requests.session() session = requests.session()
if onionRoute: if onionRoute:
@ -42,3 +44,6 @@ def postJson(session,postJsonObject,federationList,inboxUrl: str,headers) -> str
postResult = session.post(url = inboxUrl, data = json.dumps(postJsonObject), headers=headers) postResult = session.post(url = inboxUrl, data = json.dumps(postJsonObject), headers=headers)
return postResult.text return postResult.text
def getBaseDirectory():
baseDirectory = os.getcwd()

View File

@ -77,13 +77,16 @@ def storeWebfingerEndpoint(username: str,domain: str,wfJson) -> bool:
commentjson.dump(wfJson, fp, indent=4, sort_keys=False) commentjson.dump(wfJson, fp, indent=4, sort_keys=False)
return True return True
def createWebfingerEndpoint(username,domain,https,publicKeyPem) -> {}: def createWebfingerEndpoint(username,domain,port,https,publicKeyPem) -> {}:
"""Creates a webfinger endpoint for a user """Creates a webfinger endpoint for a user
""" """
prefix='https' prefix='https'
if not https: if not https:
prefix='http' prefix='http'
if port!=80 and port!=443:
domain=domain+':'+str(port)
account = { account = {
"aliases": [ "aliases": [
prefix+"://"+domain+"/@"+username, prefix+"://"+domain+"/@"+username,