Attempt to obtain instance actor when using commandline

merge-requests/30/head
Bob Mottram 2021-09-01 18:26:40 +01:00
parent bc77b25520
commit 152febac88
2 changed files with 74 additions and 43 deletions

View File

@ -25,6 +25,7 @@ from roles import setRole
from webfinger import webfingerHandle from webfinger import webfingerHandle
from bookmarks import sendBookmarkViaServer from bookmarks import sendBookmarkViaServer
from bookmarks import sendUndoBookmarkViaServer from bookmarks import sendUndoBookmarkViaServer
from posts import getInstanceActorKey
from posts import sendMuteViaServer from posts import sendMuteViaServer
from posts import sendUndoMuteViaServer from posts import sendUndoMuteViaServer
from posts import c2sBoxJson from posts import c2sBoxJson
@ -688,7 +689,7 @@ if args.posts:
proxyType = 'gnunet' proxyType = 'gnunet'
if not args.language: if not args.language:
args.language = 'en' args.language = 'en'
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
getPublicPostsOfPerson(baseDir, nickname, domain, False, True, getPublicPostsOfPerson(baseDir, nickname, domain, False, True,
proxyType, args.port, httpPrefix, debug, proxyType, args.port, httpPrefix, debug,
__version__, args.language, __version__, args.language,
@ -724,7 +725,7 @@ if args.postDomains:
domainList = [] domainList = []
if not args.language: if not args.language:
args.language = 'en' args.language = 'en'
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
domainList = getPublicPostDomains(None, domainList = getPublicPostDomains(None,
baseDir, nickname, domain, baseDir, nickname, domain,
proxyType, args.port, proxyType, args.port,
@ -769,7 +770,7 @@ if args.postDomainsBlocked:
domainList = [] domainList = []
if not args.language: if not args.language:
args.language = 'en' args.language = 'en'
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
domainList = getPublicPostDomainsBlocked(None, domainList = getPublicPostDomainsBlocked(None,
baseDir, nickname, domain, baseDir, nickname, domain,
proxyType, args.port, proxyType, args.port,
@ -812,7 +813,7 @@ if args.checkDomains:
maxBlockedDomains = 0 maxBlockedDomains = 0
if not args.language: if not args.language:
args.language = 'en' args.language = 'en'
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
checkDomains(None, checkDomains(None,
baseDir, nickname, domain, baseDir, nickname, domain,
proxyType, args.port, proxyType, args.port,
@ -833,7 +834,7 @@ if args.socnet:
proxyType = 'tor' proxyType = 'tor'
if not args.language: if not args.language:
args.language = 'en' args.language = 'en'
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, args.domain)
dotGraph = instancesGraph(baseDir, args.socnet, dotGraph = instancesGraph(baseDir, args.socnet,
proxyType, args.port, proxyType, args.port,
httpPrefix, debug, httpPrefix, debug,
@ -864,7 +865,7 @@ if args.postsraw:
proxyType = 'gnunet' proxyType = 'gnunet'
if not args.language: if not args.language:
args.language = 'en' args.language = 'en'
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
getPublicPostsOfPerson(baseDir, nickname, domain, False, False, getPublicPostsOfPerson(baseDir, nickname, domain, False, False,
proxyType, args.port, httpPrefix, debug, proxyType, args.port, httpPrefix, debug,
__version__, args.language, __version__, args.language,
@ -877,7 +878,7 @@ if args.json:
asHeader = { asHeader = {
'Accept': 'application/ld+json; profile="' + profileStr + '"' 'Accept': 'application/ld+json; profile="' + profileStr + '"'
} }
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, args.domain)
testJson = getJson(signingPrivateKeyPem, session, args.json, asHeader, testJson = getJson(signingPrivateKeyPem, session, args.json, asHeader,
None, debug, __version__, httpPrefix, None) None, debug, __version__, httpPrefix, None)
pprint(testJson) pprint(testJson)
@ -1088,7 +1089,7 @@ if args.approve:
postLog = [] postLog = []
cachedWebfingers = {} cachedWebfingers = {}
personCache = {} personCache = {}
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
manualApproveFollowRequest(session, baseDir, manualApproveFollowRequest(session, baseDir,
httpPrefix, httpPrefix,
args.nickname, domain, port, args.nickname, domain, port,
@ -1112,7 +1113,7 @@ if args.deny:
postLog = [] postLog = []
cachedWebfingers = {} cachedWebfingers = {}
personCache = {} personCache = {}
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
manualDenyFollowRequest(session, baseDir, manualDenyFollowRequest(session, baseDir,
httpPrefix, httpPrefix,
args.nickname, domain, port, args.nickname, domain, port,
@ -1201,7 +1202,7 @@ if args.message:
replyTo = args.replyto replyTo = args.replyto
followersOnly = False followersOnly = False
isArticle = False isArticle = False
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
print('Sending post to ' + args.sendto) print('Sending post to ' + args.sendto)
sendPostViaServer(signingPrivateKeyPem, __version__, sendPostViaServer(signingPrivateKeyPem, __version__,
@ -1234,7 +1235,7 @@ if args.announce:
session = createSession(proxyType) session = createSession(proxyType)
personCache = {} personCache = {}
cachedWebfingers = {} cachedWebfingers = {}
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
print('Sending announce/repeat of ' + args.announce) print('Sending announce/repeat of ' + args.announce)
sendAnnounceViaServer(baseDir, session, args.nickname, args.password, sendAnnounceViaServer(baseDir, session, args.nickname, args.password,
@ -1274,7 +1275,7 @@ if args.box:
args.port = 80 args.port = 80
elif args.gnunet: elif args.gnunet:
proxyType = 'gnunet' proxyType = 'gnunet'
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
session = createSession(proxyType) session = createSession(proxyType)
boxJson = c2sBoxJson(baseDir, session, boxJson = c2sBoxJson(baseDir, session,
@ -1331,7 +1332,7 @@ if args.itemName:
session = createSession(proxyType) session = createSession(proxyType)
personCache = {} personCache = {}
cachedWebfingers = {} cachedWebfingers = {}
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
print('Sending shared item: ' + args.itemName) print('Sending shared item: ' + args.itemName)
sendShareViaServer(baseDir, session, sendShareViaServer(baseDir, session,
@ -1370,7 +1371,7 @@ if args.undoItemName:
session = createSession(proxyType) session = createSession(proxyType)
personCache = {} personCache = {}
cachedWebfingers = {} cachedWebfingers = {}
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
print('Sending undo of shared item: ' + args.undoItemName) print('Sending undo of shared item: ' + args.undoItemName)
sendUndoShareViaServer(baseDir, session, sendUndoShareViaServer(baseDir, session,
@ -1428,7 +1429,7 @@ if args.wantedItemName:
session = createSession(proxyType) session = createSession(proxyType)
personCache = {} personCache = {}
cachedWebfingers = {} cachedWebfingers = {}
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
print('Sending wanted item: ' + args.wantedItemName) print('Sending wanted item: ' + args.wantedItemName)
sendWantedViaServer(baseDir, session, sendWantedViaServer(baseDir, session,
@ -1467,7 +1468,7 @@ if args.undoWantedItemName:
session = createSession(proxyType) session = createSession(proxyType)
personCache = {} personCache = {}
cachedWebfingers = {} cachedWebfingers = {}
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
print('Sending undo of wanted item: ' + args.undoWantedItemName) print('Sending undo of wanted item: ' + args.undoWantedItemName)
sendUndoWantedViaServer(baseDir, session, sendUndoWantedViaServer(baseDir, session,
@ -1497,7 +1498,7 @@ if args.like:
session = createSession(proxyType) session = createSession(proxyType)
personCache = {} personCache = {}
cachedWebfingers = {} cachedWebfingers = {}
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
print('Sending like of ' + args.like) print('Sending like of ' + args.like)
sendLikeViaServer(baseDir, session, sendLikeViaServer(baseDir, session,
@ -1526,7 +1527,7 @@ if args.undolike:
session = createSession(proxyType) session = createSession(proxyType)
personCache = {} personCache = {}
cachedWebfingers = {} cachedWebfingers = {}
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
print('Sending undo like of ' + args.undolike) print('Sending undo like of ' + args.undolike)
sendUndoLikeViaServer(baseDir, session, sendUndoLikeViaServer(baseDir, session,
@ -1556,7 +1557,7 @@ if args.bookmark:
session = createSession(proxyType) session = createSession(proxyType)
personCache = {} personCache = {}
cachedWebfingers = {} cachedWebfingers = {}
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
print('Sending bookmark of ' + args.bookmark) print('Sending bookmark of ' + args.bookmark)
sendBookmarkViaServer(baseDir, session, sendBookmarkViaServer(baseDir, session,
@ -1586,7 +1587,7 @@ if args.unbookmark:
session = createSession(proxyType) session = createSession(proxyType)
personCache = {} personCache = {}
cachedWebfingers = {} cachedWebfingers = {}
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
print('Sending undo bookmark of ' + args.unbookmark) print('Sending undo bookmark of ' + args.unbookmark)
sendUndoBookmarkViaServer(baseDir, session, sendUndoBookmarkViaServer(baseDir, session,
@ -1615,7 +1616,7 @@ if args.delete:
session = createSession(proxyType) session = createSession(proxyType)
personCache = {} personCache = {}
cachedWebfingers = {} cachedWebfingers = {}
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
print('Sending delete request of ' + args.delete) print('Sending delete request of ' + args.delete)
sendDeleteViaServer(baseDir, session, sendDeleteViaServer(baseDir, session,
@ -1656,7 +1657,7 @@ if args.follow:
followHttpPrefix = httpPrefix followHttpPrefix = httpPrefix
if args.follow.startswith('https'): if args.follow.startswith('https'):
followHttpPrefix = 'https' followHttpPrefix = 'https'
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
sendFollowRequestViaServer(baseDir, session, sendFollowRequestViaServer(baseDir, session,
args.nickname, args.password, args.nickname, args.password,
@ -1698,7 +1699,7 @@ if args.unfollow:
followHttpPrefix = httpPrefix followHttpPrefix = httpPrefix
if args.follow.startswith('https'): if args.follow.startswith('https'):
followHttpPrefix = 'https' followHttpPrefix = 'https'
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
sendUnfollowRequestViaServer(baseDir, session, sendUnfollowRequestViaServer(baseDir, session,
args.nickname, args.password, args.nickname, args.password,
@ -1729,7 +1730,7 @@ if args.followingList:
personCache = {} personCache = {}
cachedWebfingers = {} cachedWebfingers = {}
followHttpPrefix = httpPrefix followHttpPrefix = httpPrefix
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
followingJson = \ followingJson = \
getFollowingViaServer(baseDir, session, getFollowingViaServer(baseDir, session,
@ -1758,7 +1759,7 @@ if args.followersList:
personCache = {} personCache = {}
cachedWebfingers = {} cachedWebfingers = {}
followHttpPrefix = httpPrefix followHttpPrefix = httpPrefix
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
followersJson = \ followersJson = \
getFollowersViaServer(baseDir, session, getFollowersViaServer(baseDir, session,
@ -1788,7 +1789,7 @@ if args.followRequestsList:
personCache = {} personCache = {}
cachedWebfingers = {} cachedWebfingers = {}
followHttpPrefix = httpPrefix followHttpPrefix = httpPrefix
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
followRequestsJson = \ followRequestsJson = \
getFollowRequestsViaServer(baseDir, session, getFollowRequestsViaServer(baseDir, session,
@ -1836,7 +1837,7 @@ if args.migrations:
httpPrefix = 'https' httpPrefix = 'https'
port = 443 port = 443
session = createSession(proxyType) session = createSession(proxyType)
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
ctr = migrateAccounts(baseDir, session, ctr = migrateAccounts(baseDir, session,
httpPrefix, cachedWebfingers, httpPrefix, cachedWebfingers,
True, signingPrivateKeyPem) True, signingPrivateKeyPem)
@ -1847,7 +1848,7 @@ if args.migrations:
sys.exit() sys.exit()
if args.actor: if args.actor:
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
getActorJson(args.domain, args.actor, args.http, args.gnunet, getActorJson(args.domain, args.actor, args.http, args.gnunet,
debug, False, signingPrivateKeyPem) debug, False, signingPrivateKeyPem)
sys.exit() sys.exit()
@ -1925,7 +1926,7 @@ if args.followers:
nickname = domain nickname = domain
handle = nickname + '@' + domain handle = nickname + '@' + domain
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
wfRequest = webfingerHandle(session, handle, wfRequest = webfingerHandle(session, handle,
httpPrefix, cachedWebfingers, httpPrefix, cachedWebfingers,
None, __version__, debug, False, None, __version__, debug, False,
@ -1971,7 +1972,7 @@ if args.followers:
asHeader = { asHeader = {
'Accept': 'application/ld+json; profile="' + profileStr + '"' 'Accept': 'application/ld+json; profile="' + profileStr + '"'
} }
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
followersList = \ followersList = \
downloadFollowCollection(signingPrivateKeyPem, downloadFollowCollection(signingPrivateKeyPem,
'followers', session, 'followers', session,
@ -2224,7 +2225,7 @@ if args.skill:
session = createSession(proxyType) session = createSession(proxyType)
personCache = {} personCache = {}
cachedWebfingers = {} cachedWebfingers = {}
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
print('Sending ' + args.skill + ' skill level ' + print('Sending ' + args.skill + ' skill level ' +
str(args.skillLevelPercent) + ' for ' + nickname) str(args.skillLevelPercent) + ' for ' + nickname)
@ -2255,7 +2256,7 @@ if args.availability:
session = createSession(proxyType) session = createSession(proxyType)
personCache = {} personCache = {}
cachedWebfingers = {} cachedWebfingers = {}
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
print('Sending availability status of ' + nickname + print('Sending availability status of ' + nickname +
' as ' + args.availability) ' as ' + args.availability)
@ -2365,7 +2366,7 @@ if args.block:
session = createSession(proxyType) session = createSession(proxyType)
personCache = {} personCache = {}
cachedWebfingers = {} cachedWebfingers = {}
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
print('Sending block of ' + args.block) print('Sending block of ' + args.block)
sendBlockViaServer(baseDir, session, nickname, args.password, sendBlockViaServer(baseDir, session, nickname, args.password,
@ -2393,7 +2394,7 @@ if args.mute:
session = createSession(proxyType) session = createSession(proxyType)
personCache = {} personCache = {}
cachedWebfingers = {} cachedWebfingers = {}
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
print('Sending mute of ' + args.mute) print('Sending mute of ' + args.mute)
sendMuteViaServer(baseDir, session, nickname, args.password, sendMuteViaServer(baseDir, session, nickname, args.password,
@ -2421,7 +2422,7 @@ if args.unmute:
session = createSession(proxyType) session = createSession(proxyType)
personCache = {} personCache = {}
cachedWebfingers = {} cachedWebfingers = {}
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
print('Sending undo mute of ' + args.unmute) print('Sending undo mute of ' + args.unmute)
sendUndoMuteViaServer(baseDir, session, nickname, args.password, sendUndoMuteViaServer(baseDir, session, nickname, args.password,
@ -2461,7 +2462,7 @@ if args.unblock:
session = createSession(proxyType) session = createSession(proxyType)
personCache = {} personCache = {}
cachedWebfingers = {} cachedWebfingers = {}
signingPrivateKeyPem = None signingPrivateKeyPem = getInstanceActorKey(baseDir, domain)
print('Sending undo block of ' + args.unblock) print('Sending undo block of ' + args.unblock)
sendUndoBlockViaServer(baseDir, session, nickname, args.password, sendUndoBlockViaServer(baseDir, session, nickname, args.password,

View File

@ -130,19 +130,49 @@ def noOfFollowersOnDomain(baseDir: str, handle: str,
return ctr return ctr
def _getLocalPrivateKey(baseDir: str, nickname: str, domain: str) -> str:
"""Returns the private key for a local account
"""
handle = nickname + '@' + domain
keyFilename = baseDir + '/keys/private/' + handle.lower() + '.key'
if not os.path.isfile(keyFilename):
return None
with open(keyFilename, 'r') as pemFile:
return pemFile.read()
return None
def getInstanceActorKey(baseDir: str, domain: str) -> str:
"""Returns the private key for the instance actor used for
signing GET posts
"""
return _getLocalPrivateKey(baseDir, 'inbox', domain)
def _getLocalPublicKey(baseDir: str, nickname: str, domain: str) -> str:
"""Returns the public key for a local account
"""
handle = nickname + '@' + domain
keyFilename = baseDir + '/keys/public/' + handle.lower() + '.key'
if not os.path.isfile(keyFilename):
return None
with open(keyFilename, 'r') as pemFile:
return pemFile.read()
return None
def _getPersonKey(nickname: str, domain: str, baseDir: str, def _getPersonKey(nickname: str, domain: str, baseDir: str,
keyType: str = 'public', debug: bool = False): keyType: str = 'public', debug: bool = False):
"""Returns the public or private key of a person """Returns the public or private key of a person
""" """
handle = nickname + '@' + domain if keyType == 'private':
keyFilename = baseDir + '/keys/' + keyType + '/' + handle.lower() + '.key' keyPem = _getLocalPrivateKey(baseDir, nickname, domain)
if not os.path.isfile(keyFilename): else:
keyPem = _getLocalPublicKey(baseDir, nickname, domain)
if not keyPem:
if debug: if debug:
print('DEBUG: private key file not found: ' + keyFilename) print('DEBUG: ' + keyType + ' key file not found')
return '' return ''
keyPem = ''
with open(keyFilename, 'r') as pemFile:
keyPem = pemFile.read()
if len(keyPem) < 20: if len(keyPem) < 20:
if debug: if debug:
print('DEBUG: private key was too short: ' + keyPem) print('DEBUG: private key was too short: ' + keyPem)