Set host domain when getting actor

merge-requests/30/head
Bob Mottram 2021-06-18 10:22:16 +01:00
parent ab7c2a9a66
commit c2bc98d4de
6 changed files with 23 additions and 21 deletions

View File

@ -726,7 +726,7 @@ def _readLocalBoxPost(session, nickname: str, domain: str,
if isPGPEncrypted(content):
sayStr = 'Encrypted message. Please enter your passphrase.'
_sayCommand(sayStr, sayStr, screenreader, systemLanguage, espeak)
content = pgpDecrypt(content, actor)
content = pgpDecrypt(domain, content, actor)
if isPGPEncrypted(content):
sayStr = 'Message could not be decrypted'
_sayCommand(sayStr, sayStr, screenreader, systemLanguage, espeak)
@ -837,7 +837,8 @@ def _desktopShowProfile(session, nickname: str, domain: str,
isHttp = False
if 'http://' in actor:
isHttp = True
actorJson, asHeader = getActorJson(actor, isHttp, False, False, True)
actorJson, asHeader = \
getActorJson(domain, actor, isHttp, False, False, True)
_desktopShowActor(baseDir, actorJson, translate,
systemLanguage, screenreader, espeak)
@ -855,7 +856,8 @@ def _desktopShowProfileFromHandle(session, nickname: str, domain: str,
"""Shows the profile for a handle
Returns the actor json
"""
actorJson, asHeader = getActorJson(handle, False, False, False, True)
actorJson, asHeader = \
getActorJson(domain, handle, False, False, False, True)
_desktopShowActor(baseDir, actorJson, translate,
systemLanguage, screenreader, espeak)
@ -1183,7 +1185,7 @@ def _desktopNewDMbase(session, toHandle: str,
for after in range(randint(1, 16)):
paddedMessage += ' '
cipherText = \
pgpEncryptToActor(paddedMessage, toHandle)
pgpEncryptToActor(domain, paddedMessage, toHandle)
if not cipherText:
sayStr = \
toHandle + ' has no PGP public key. ' + \

View File

@ -1632,7 +1632,7 @@ if args.migrations:
sys.exit()
if args.actor:
getActorJson(args.actor, args.http, args.gnunet, debug)
getActorJson(args.domain, args.actor, args.http, args.gnunet, debug)
sys.exit()
if args.followers:

View File

@ -1209,7 +1209,7 @@ def setPersonNotes(baseDir: str, nickname: str, domain: str,
return True
def getActorJson(handle: str, http: bool, gnunet: bool,
def getActorJson(hostDomain: str, handle: str, http: bool, gnunet: bool,
debug: bool, quiet=False) -> ({}, {}):
"""Returns the actor json
"""
@ -1354,7 +1354,7 @@ def getActorJson(handle: str, http: bool, gnunet: bool,
}
personJson = \
getJson(session, personUrl, asHeader, None,
debug, __version__, httpPrefix, None, 20, quiet)
debug, __version__, httpPrefix, hostDomain, 20, quiet)
if personJson:
if not quiet:
pprint(personJson)

13
pgp.py
View File

@ -332,12 +332,13 @@ def _pgpEncrypt(content: str, recipientPubKey: str) -> str:
return encryptResult
def _getPGPPublicKeyFromActor(handle: str, actorJson=None) -> str:
def _getPGPPublicKeyFromActor(domain: str, handle: str, actorJson=None) -> str:
"""Searches tags on the actor to see if there is any PGP
public key specified
"""
if not actorJson:
actorJson, asHeader = getActorJson(handle, False, False, False, True)
actorJson, asHeader = \
getActorJson(domain, handle, False, False, False, True)
if not actorJson:
return None
if not actorJson.get('attachment'):
@ -369,18 +370,18 @@ def hasLocalPGPkey() -> bool:
return False
def pgpEncryptToActor(content: str, toHandle: str) -> str:
def pgpEncryptToActor(domain: str, content: str, toHandle: str) -> str:
"""PGP encrypt a message to the given actor or handle
"""
# get the actor and extract the pgp public key from it
recipientPubKey = _getPGPPublicKeyFromActor(toHandle)
recipientPubKey = _getPGPPublicKeyFromActor(domain, toHandle)
if not recipientPubKey:
return None
# encrypt using the recipient public key
return _pgpEncrypt(content, recipientPubKey)
def pgpDecrypt(content: str, fromHandle: str) -> str:
def pgpDecrypt(domain: str, content: str, fromHandle: str) -> str:
""" Encrypt using your default pgp key to the given recipient
fromHandle can be a handle or actor url
"""
@ -391,7 +392,7 @@ def pgpDecrypt(content: str, fromHandle: str) -> str:
if containsPGPPublicKey(content):
pubKey = extractPGPPublicKey(content)
else:
pubKey = _getPGPPublicKeyFromActor(content, fromHandle)
pubKey = _getPGPPublicKeyFromActor(domain, content, fromHandle)
if pubKey:
_pgpImportPubKey(pubKey)

View File

@ -113,18 +113,17 @@ def getJson(session, url: str, headers: {}, params: {}, debug: bool,
if sessionHeaders2.get('Authorization'):
sessionHeaders2['Authorization'] = 'REDACTED'
if debug and not quiet:
print('ERROR: getJson failed\nurl: ' + str(url) + ' ' +
'headers: ' + str(sessionHeaders2) + ' ' +
'params: ' + str(sessionParams))
print(e)
print('ERROR: getJson failed, url: ' + str(url) + ', ' +
'headers: ' + str(sessionHeaders2) + ', ' +
'params: ' + str(sessionParams) + ', ' + str(e))
except ValueError as e:
sessionHeaders2 = sessionHeaders.copy()
if sessionHeaders2.get('Authorization'):
sessionHeaders2['Authorization'] = 'REDACTED'
if debug and not quiet:
print('ERROR: getJson failed\nurl: ' + str(url) + ' ' +
'headers: ' + str(sessionHeaders2) + ' ' +
'params: ' + str(sessionParams) + ' ' + str(e))
print('ERROR: getJson failed, url: ' + str(url) + ', ' +
'headers: ' + str(sessionHeaders2) + ', ' +
'params: ' + str(sessionParams) + ', ' + str(e))
except SocketError as e:
if not quiet:
if e.errno == errno.ECONNRESET:

View File

@ -80,7 +80,7 @@ def htmlProfileAfterSearch(cssCache: {},
elif httpPrefix == 'gnunet':
gnunet = True
profileJson, asHeader = \
getActorJson(profileHandle, http, gnunet, debug, False)
getActorJson(domain, profileHandle, http, gnunet, debug, False)
if not profileJson:
return None