Generalise proxying

main
Bob Mottram 2020-06-09 12:03:59 +01:00
parent 8ed646aed5
commit 35438c0fc8
8 changed files with 105 additions and 83 deletions

View File

@ -398,7 +398,7 @@ class PubServer(BaseHTTPRequestHandler):
if not self.server.session:
if self.server.debug:
print('DEBUG: creating new session during authenticated fetch')
self.server.session = createSession(self.server.useTor)
self.server.session = createSession(self.server.proxyType)
if not self.server.session:
print('ERROR: GET failed to create session 1')
return False
@ -812,7 +812,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.cachedWebfingers,
self.server.personCache,
self.server.allowDeletion,
self.server.useTor, version,
self.server.proxyType, version,
self.server.debug)
def _postToOutboxThread(self, messageJson: {}) -> bool:
@ -1177,7 +1177,7 @@ class PubServer(BaseHTTPRequestHandler):
if not self.server.session:
print('Starting new session')
self.server.session = createSession(self.server.useTor)
self.server.session = createSession(self.server.proxyType)
if not self.server.session:
print('ERROR: GET failed to create session 2')
self._404()
@ -1277,7 +1277,7 @@ class PubServer(BaseHTTPRequestHandler):
'@' + self.server.domain):
if not self.server.session:
self.server.session = \
createSession(self.server.useTor)
createSession(self.server.proxyType)
if not self.server.session:
print('ERROR: GET failed to create session 3')
self._404()
@ -1314,7 +1314,7 @@ class PubServer(BaseHTTPRequestHandler):
'@' + self.server.domain):
if not self.server.session:
self.server.session = \
createSession(self.server.useTor)
createSession(self.server.proxyType)
if not self.server.session:
print('ERROR: GET failed to create session 4')
self._404()
@ -1346,7 +1346,7 @@ class PubServer(BaseHTTPRequestHandler):
if '/rss.xml' not in self.path:
if not self.server.session:
self.server.session = \
createSession(self.server.useTor)
createSession(self.server.proxyType)
if not self.server.session:
print('ERROR: GET failed to create session 5')
self._404()
@ -1392,7 +1392,7 @@ class PubServer(BaseHTTPRequestHandler):
pageNumber = 10
if not self.server.session:
self.server.session = \
createSession(self.server.useTor)
createSession(self.server.proxyType)
if not self.server.session:
print('ERROR: GET failed to create session 6')
self._404()
@ -2280,7 +2280,7 @@ class PubServer(BaseHTTPRequestHandler):
callingDomain)
return
if not self.server.session:
self.server.session = createSession(self.server.useTor)
self.server.session = createSession(self.server.proxyType)
if not self.server.session:
print('ERROR: GET failed to create session 7')
self._404()
@ -2375,7 +2375,7 @@ class PubServer(BaseHTTPRequestHandler):
callingDomain)
return
if not self.server.session:
self.server.session = createSession(self.server.useTor)
self.server.session = createSession(self.server.proxyType)
if not self.server.session:
print('ERROR: GET failed to create session 8')
self._404()
@ -2425,7 +2425,7 @@ class PubServer(BaseHTTPRequestHandler):
followingHandle = self.path.split('/followapprove=')[1]
if '@' in followingHandle:
if not self.server.session:
self.server.session = createSession(self.server.useTor)
self.server.session = createSession(self.server.proxyType)
if not self.server.session:
print('ERROR: GET failed to create session 9')
self._404()
@ -2549,7 +2549,7 @@ class PubServer(BaseHTTPRequestHandler):
callingDomain)
return
if not self.server.session:
self.server.session = createSession(self.server.useTor)
self.server.session = createSession(self.server.proxyType)
if not self.server.session:
print('ERROR: GET failed to create session 10')
self._404()
@ -2648,7 +2648,7 @@ class PubServer(BaseHTTPRequestHandler):
callingDomain)
return
if not self.server.session:
self.server.session = createSession(self.server.useTor)
self.server.session = createSession(self.server.proxyType)
if not self.server.session:
print('ERROR: GET failed to create session 11')
self._404()
@ -2749,7 +2749,7 @@ class PubServer(BaseHTTPRequestHandler):
callingDomain)
return
if not self.server.session:
self.server.session = createSession(self.server.useTor)
self.server.session = createSession(self.server.proxyType)
if not self.server.session:
print('ERROR: GET failed to create session 12')
self._404()
@ -2836,7 +2836,7 @@ class PubServer(BaseHTTPRequestHandler):
callingDomain)
return
if not self.server.session:
self.server.session = createSession(self.server.useTor)
self.server.session = createSession(self.server.proxyType)
if not self.server.session:
print('ERROR: GET failed to create session 13')
self._404()
@ -2933,7 +2933,7 @@ class PubServer(BaseHTTPRequestHandler):
cookie, callingDomain)
return
if not self.server.session:
self.server.session = createSession(self.server.useTor)
self.server.session = createSession(self.server.proxyType)
if not self.server.session:
print('ERROR: GET failed to create session 14')
self._404()
@ -3364,10 +3364,10 @@ class PubServer(BaseHTTPRequestHandler):
if self.server.debug:
print('DEBUG: ' +
'creating new session')
useTor = \
self.server.useTor
proxyType = \
self.server.proxyType
self.server.session = \
createSession(useTor)
createSession(proxyType)
if not self.server.session:
print('ERROR: GET failed to ' +
'create session 15')
@ -3465,9 +3465,9 @@ class PubServer(BaseHTTPRequestHandler):
if self.server.debug:
print('DEBUG: ' +
'creating new session')
useTor = self.server.useTor
proxyType = self.server.proxyType
self.server.session = \
createSession(useTor)
createSession(proxyType)
if not self.server.session:
print('ERROR: GET failed to ' +
'create session 16')
@ -4547,7 +4547,7 @@ class PubServer(BaseHTTPRequestHandler):
if self.server.debug:
print('DEBUG: creating new session')
self.server.session = \
createSession(self.server.useTor)
createSession(self.server.proxyType)
if not self.server.session:
print('ERROR: GET failed to create session 17')
self._404()
@ -4626,7 +4626,7 @@ class PubServer(BaseHTTPRequestHandler):
if self.server.debug:
print('DEBUG: creating new session')
self.server.session = \
createSession(self.server.useTor)
createSession(self.server.proxyType)
if not self.server.session:
print('ERROR: GET failed to create session 18')
self._404()
@ -4705,7 +4705,7 @@ class PubServer(BaseHTTPRequestHandler):
if self.server.debug:
print('DEBUG: creating new session')
self.server.session = \
createSession(self.server.useTor)
createSession(self.server.proxyType)
if not self.server.session:
print('ERROR: GET failed to create session 19')
self._404()
@ -4759,7 +4759,7 @@ class PubServer(BaseHTTPRequestHandler):
if self.server.debug:
print('DEBUG: creating new session')
self.server.session = \
createSession(self.server.useTor)
createSession(self.server.proxyType)
if not self.server.session:
print('ERROR: GET failed to create session 20')
self._404()
@ -5465,7 +5465,7 @@ class PubServer(BaseHTTPRequestHandler):
if not self.server.session:
print('Starting new session from POST')
self.server.session = \
createSession(self.server.useTor)
createSession(self.server.proxyType)
if not self.server.session:
print('ERROR: POST failed to create session 1')
self._404()
@ -6657,7 +6657,7 @@ class PubServer(BaseHTTPRequestHandler):
nickname = getNicknameFromActor(actorStr)
if not self.server.session:
self.server.session = \
createSession(self.server.useTor)
createSession(self.server.proxyType)
if not self.server.session:
print('ERROR: POST failed to create session 2')
self._404()
@ -7816,7 +7816,7 @@ def runDaemon(blogsInstance: bool, mediaInstance: bool,
authenticatedFetch=False,
noreply=False, nolike=False, nopics=False,
noannounce=False, cw=False, ocapAlways=False,
useTor=False, maxReplies=64,
proxyType=None, maxReplies=64,
domainMaxPostsPerDay=8640, accountMaxPostsPerDay=864,
allowDeletion=False, debug=False, unitTest=False,
instanceOnlySkillsSearch=False, sendThreads=[],
@ -7922,7 +7922,7 @@ def runDaemon(blogsInstance: bool, mediaInstance: bool,
httpd.instanceId = instanceId
httpd.personCache = {}
httpd.cachedWebfingers = {}
httpd.useTor = useTor
httpd.proxyType = proxyType
httpd.session = None
httpd.sessionLastUpdate = 0
httpd.lastGET = 0
@ -8023,7 +8023,7 @@ def runDaemon(blogsInstance: bool, mediaInstance: bool,
baseDir, httpPrefix, httpd.sendThreads,
httpd.postLog, httpd.cachedWebfingers,
httpd.personCache, httpd.inboxQueue,
domain, onionDomain, i2pDomain, port, useTor,
domain, onionDomain, i2pDomain, port, proxyType,
httpd.federationList,
httpd.ocapAlways, maxReplies,
domainMaxPostsPerDay, accountMaxPostsPerDay,

View File

@ -386,8 +386,13 @@ if args.posts:
args.port = 443
nickname = args.posts.split('@')[0]
domain = args.posts.split('@')[1]
proxyType = None
if args.tor or domain.endswith('.onion'):
proxyType = 'tor'
elif args.i2p or domain.endswith('.i2p'):
proxyType = 'i2p'
getPublicPostsOfPerson(baseDir, nickname, domain, False, True,
args.tor, args.port, httpPrefix, debug,
proxyType, args.port, httpPrefix, debug,
__version__)
sys.exit()
@ -399,13 +404,18 @@ if args.postsraw:
args.port = 443
nickname = args.postsraw.split('@')[0]
domain = args.postsraw.split('@')[1]
proxyType = None
if args.tor or domain.endswith('.onion'):
proxyType = 'tor'
elif args.i2p or domain.endswith('.i2p'):
proxyType = 'i2p'
getPublicPostsOfPerson(baseDir, nickname, domain, False, False,
args.tor, args.port, httpPrefix, debug,
proxyType, args.port, httpPrefix, debug,
__version__)
sys.exit()
if args.json:
session = createSession(False)
session = createSession(None)
profileStr = 'https://www.w3.org/ns/activitystreams'
asHeader = {
'Accept': 'application/ld+json; profile="' + profileStr + '"'
@ -588,9 +598,11 @@ else:
if configFederationList:
federationList = configFederationList
useTor = args.tor
if domain.endswith('.onion'):
useTor = True
proxyType = None
if args.tor or domain.endswith('.onion'):
proxyType = 'tor'
elif args.i2p or domain.endswith('.i2p'):
proxyType = 'i2p'
if args.approve:
if not args.nickname:
@ -599,7 +611,7 @@ if args.approve:
if '@' not in args.approve:
print('syntax: --approve nick@domain')
sys.exit()
session = createSession(useTor)
session = createSession(proxyType)
sendThreads = []
postLog = []
cachedWebfingers = {}
@ -623,7 +635,7 @@ if args.deny:
if '@' not in args.deny:
print('syntax: --deny nick@domain')
sys.exit()
session = createSession(useTor)
session = createSession(proxyType)
sendThreads = []
postLog = []
cachedWebfingers = {}
@ -665,7 +677,7 @@ if args.message:
print('Specify a password with the --password option')
sys.exit()
session = createSession(useTor)
session = createSession(proxyType)
if not args.sendto:
print('Specify an account to sent to: --sendto [nickname@domain]')
sys.exit()
@ -738,7 +750,7 @@ if args.announce:
print('Specify a password with the --password option')
sys.exit()
session = createSession(useTor)
session = createSession(proxyType)
personCache = {}
cachedWebfingers = {}
print('Sending announce/repeat of ' + args.announce)
@ -786,7 +798,7 @@ if args.itemName:
'with the --duration option')
sys.exit()
session = createSession(useTor)
session = createSession(proxyType)
personCache = {}
cachedWebfingers = {}
print('Sending shared item: ' + args.itemName)
@ -818,7 +830,7 @@ if args.undoItemName:
print('Specify a nickname with the --nickname option')
sys.exit()
session = createSession(useTor)
session = createSession(proxyType)
personCache = {}
cachedWebfingers = {}
print('Sending undo of shared item: ' + args.undoItemName)
@ -844,7 +856,7 @@ if args.like:
print('Specify a password with the --password option')
sys.exit()
session = createSession(useTor)
session = createSession(proxyType)
personCache = {}
cachedWebfingers = {}
print('Sending like of ' + args.like)
@ -869,7 +881,7 @@ if args.undolike:
print('Specify a password with the --password option')
sys.exit()
session = createSession(useTor)
session = createSession(proxyType)
personCache = {}
cachedWebfingers = {}
print('Sending undo like of ' + args.undolike)
@ -894,7 +906,7 @@ if args.delete:
print('Specify a password with the --password option')
sys.exit()
session = createSession(useTor)
session = createSession(proxyType)
personCache = {}
cachedWebfingers = {}
print('Sending delete request of ' + args.delete)
@ -929,7 +941,7 @@ if args.follow:
sys.exit()
followDomain, followPort = getDomainFromActor(args.follow)
session = createSession(useTor)
session = createSession(proxyType)
personCache = {}
cachedWebfingers = {}
followHttpPrefix = httpPrefix
@ -967,7 +979,7 @@ if args.unfollow:
sys.exit()
followDomain, followPort = getDomainFromActor(args.unfollow)
session = createSession(useTor)
session = createSession(proxyType)
personCache = {}
cachedWebfingers = {}
followHttpPrefix = httpPrefix
@ -1052,14 +1064,18 @@ if args.actor:
domain = args.actor.split('@')[1]
domain = domain.replace('\n', '').replace('\r', '')
cachedWebfingers = {}
if args.http or domain.endswith('.onion'):
if args.http or \
domain.endswith('.onion') or domain.endswith('.i2p'):
httpPrefix = 'http'
port = 80
useTor = True
if domain.endswith('.onion'):
proxyType = 'tor'
elif domain.endswith('.i2p'):
proxyType = 'i2p'
else:
httpPrefix = 'https'
port = 443
session = createSession(useTor)
session = createSession(proxyType)
if nickname == 'inbox':
nickname = domain
@ -1348,7 +1364,7 @@ if args.skill:
print('Skill level should be a percentage in the range 0-100')
sys.exit()
session = createSession(useTor)
session = createSession(proxyType)
personCache = {}
cachedWebfingers = {}
print('Sending ' + args.skill + ' skill level ' +
@ -1375,7 +1391,7 @@ if args.availability:
print('Specify a password with the --password option')
sys.exit()
session = createSession(useTor)
session = createSession(proxyType)
personCache = {}
cachedWebfingers = {}
print('Sending availability status of ' + nickname +
@ -1416,7 +1432,7 @@ if args.block:
print(args.block + ' does not look like an actor url')
sys.exit()
session = createSession(useTor)
session = createSession(proxyType)
personCache = {}
cachedWebfingers = {}
print('Sending block of ' + args.block)
@ -1452,7 +1468,7 @@ if args.delegate:
delegatedNickname = args.delegate.split('@')[0]
args.delegate = blockedActor
session = createSession(useTor)
session = createSession(proxyType)
personCache = {}
cachedWebfingers = {}
print('Sending delegation for ' + args.delegate +
@ -1487,7 +1503,7 @@ if args.undelegate:
delegatedNickname = args.undelegate.split('@')[0]
args.undelegate = blockedActor
session = createSession(useTor)
session = createSession(proxyType)
personCache = {}
cachedWebfingers = {}
print('Sending delegation removal for ' + args.undelegate +
@ -1526,7 +1542,7 @@ if args.unblock:
print(args.unblock + ' does not look like an actor url')
sys.exit()
session = createSession(useTor)
session = createSession(proxyType)
personCache = {}
cachedWebfingers = {}
print('Sending undo block of ' + args.unblock)
@ -1686,7 +1702,7 @@ runDaemon(args.blogsinstance, args.mediainstance,
args.maxEmoji, args.authenticatedFetch,
args.noreply, args.nolike, args.nopics,
args.noannounce, args.cw, ocapAlways,
useTor, args.maxReplies,
proxyType, args.maxReplies,
args.domainMaxPostsPerDay,
args.accountMaxPostsPerDay,
args.allowdeletion, debug, False,

View File

@ -1937,7 +1937,7 @@ def inboxAfterCapabilities(recentPostsCache: {}, maxRecentPosts: int,
postLog: [], cachedWebfingers: {}, personCache: {},
queue: [], domain: str,
onionDomain: str, i2pDomain: str,
port: int, useTor: bool,
port: int, proxyType: str,
federationList: [], ocapAlways: bool, debug: bool,
acceptedCaps: [],
queueFilename: str, destinationFilename: str,
@ -2288,7 +2288,7 @@ def runInboxQueue(recentPostsCache: {}, maxRecentPosts: int,
baseDir: str, httpPrefix: str, sendThreads: [], postLog: [],
cachedWebfingers: {}, personCache: {}, queue: [],
domain: str,
onionDomain: str, i2pDomain: str, port: int, useTor: bool,
onionDomain: str, i2pDomain: str, port: int, proxyType: str,
federationList: [],
ocapAlways: bool, maxReplies: int,
domainMaxPostsPerDay: int, accountMaxPostsPerDay: int,
@ -2300,7 +2300,7 @@ def runInboxQueue(recentPostsCache: {}, maxRecentPosts: int,
"""
currSessionTime = int(time.time())
sessionLastUpdate = currSessionTime
session = createSession(useTor)
session = createSession(proxyType)
inboxHandle = 'inbox@' + domain
if debug:
print('DEBUG: Inbox queue running')
@ -2347,7 +2347,7 @@ def runInboxQueue(recentPostsCache: {}, maxRecentPosts: int,
# recreate the session periodically
if not session or currTime - sessionLastUpdate > 1200:
print('Creating inbox session')
session = createSession(useTor)
session = createSession(proxyType)
if not session:
continue
sessionLastUpdate = currTime
@ -2705,7 +2705,7 @@ def runInboxQueue(recentPostsCache: {}, maxRecentPosts: int,
personCache, queue,
domain,
onionDomain, i2pDomain,
port, useTor,
port, proxyType,
federationList, ocapAlways,
debug, acceptedCaps,
queueFilename, destination,
@ -2728,7 +2728,7 @@ def runInboxQueue(recentPostsCache: {}, maxRecentPosts: int,
personCache, queue,
domain,
onionDomain, i2pDomain,
port, useTor,
port, proxyType,
federationList, ocapAlways,
debug, acceptedCaps,
queueFilename, destination,

View File

@ -44,7 +44,7 @@ def postMessageToOutbox(messageJson: {}, postToNickname: str,
federationList: [], sendThreads: [],
postLog: [], cachedWebfingers: {},
personCache: {}, allowDeletion: bool,
useTor: bool, version: str, debug: bool) -> bool:
proxyType: str, version: str, debug: bool) -> bool:
"""post is received by the outbox
Client to server message post
https://www.w3.org/TR/activitypub/#client-to-server-outbox-delivery
@ -214,7 +214,7 @@ def postMessageToOutbox(messageJson: {}, postToNickname: str,
if not server.session:
if debug:
print('DEBUG: creating new session for c2s')
server.session = createSession(useTor)
server.session = createSession(proxyType)
if not server.session:
print('ERROR: Failed to create session for postMessageToOutbox')
return False

View File

@ -2825,12 +2825,12 @@ def archivePostsForPerson(httpPrefix: str, nickname: str, domain: str,
def getPublicPostsOfPerson(baseDir: str, nickname: str, domain: str,
raw: bool, simple: bool, useTor: bool,
raw: bool, simple: bool, proxyType: str,
port: int, httpPrefix: str,
debug: bool, projectVersion: str) -> None:
""" This is really just for test purposes
"""
session = createSession(useTor)
session = createSession(proxyType)
if not session:
return
personCache = {}

View File

@ -101,7 +101,7 @@ def updatePostSchedule(baseDir: str, handle: str, httpd,
httpd.cachedWebfingers,
httpd.personCache,
httpd.allowDeletion,
httpd.useTor,
httpd.proxyType,
httpd.projectVersion,
httpd.debug):
indexLines.remove(line)

View File

@ -14,17 +14,23 @@ import json
baseDirectory = None
def createSession(onionRoute: bool):
def createSession(proxyType: str):
session = None
try:
session = requests.session()
except BaseException:
print('ERROR: session request failed')
return None
if session and onionRoute:
if not session:
return None
if proxyType == 'tor':
session.proxies = {}
session.proxies['http'] = 'socks5h://localhost:9050'
session.proxies['https'] = 'socks5h://localhost:9050'
elif proxyType == 'i2p':
session.proxies = {}
session.proxies['http'] = 'socks5h://localhost:4447'
session.proxies['https'] = 'socks5h://localhost:4447'
return session

View File

@ -233,7 +233,7 @@ def createServerAlice(path: str, domain: str, port: int,
os.chdir(path)
nickname = 'alice'
httpPrefix = 'http'
useTor = False
proxyType = None
password = 'alicepass'
noreply = False
nolike = False
@ -280,7 +280,7 @@ def createServerAlice(path: str, domain: str, port: int,
onionDomain, i2pDomain, port, port,
httpPrefix, federationList, maxMentions, maxEmoji, False,
noreply, nolike, nopics, noannounce, cw, ocapAlways,
useTor, maxReplies,
proxyType, maxReplies,
domainMaxPostsPerDay, accountMaxPostsPerDay,
allowDeletion, True, True, False, sendThreads, False)
@ -296,7 +296,7 @@ def createServerBob(path: str, domain: str, port: int,
os.chdir(path)
nickname = 'bob'
httpPrefix = 'http'
useTor = False
proxyType = None
clientToServer = False
password = 'bobpass'
noreply = False
@ -343,7 +343,7 @@ def createServerBob(path: str, domain: str, port: int,
onionDomain, i2pDomain, port, port,
httpPrefix, federationList, maxMentions, maxEmoji, False,
noreply, nolike, nopics, noannounce, cw, ocapAlways,
useTor, maxReplies,
proxyType, maxReplies,
domainMaxPostsPerDay, accountMaxPostsPerDay,
allowDeletion, True, True, False, sendThreads, False)
@ -358,7 +358,7 @@ def createServerEve(path: str, domain: str, port: int, federationList: [],
os.chdir(path)
nickname = 'eve'
httpPrefix = 'http'
useTor = False
proxyType = None
password = 'evepass'
noreply = False
nolike = False
@ -383,7 +383,7 @@ def createServerEve(path: str, domain: str, port: int, federationList: [],
onionDomain, i2pDomain, port, port,
httpPrefix, federationList, maxMentions, maxEmoji, False,
noreply, nolike, nopics, noannounce, cw, ocapAlways,
useTor, maxReplies, allowDeletion, True, True, False,
proxyType, maxReplies, allowDeletion, True, True, False,
sendThreads, False)
@ -396,7 +396,7 @@ def testPostMessageBetweenServers():
testServerBobRunning = False
httpPrefix = 'http'
useTor = False
proxyType = None
baseDir = os.getcwd()
if os.path.isdir(baseDir + '/.tests'):
@ -461,7 +461,7 @@ def testPostMessageBetweenServers():
print('\n\n*******************************************************')
print('Alice sends to Bob')
os.chdir(aliceDir)
sessionAlice = createSession(useTor)
sessionAlice = createSession(proxyType)
inReplyTo = None
inReplyToAtomUri = None
subject = None
@ -550,7 +550,7 @@ def testPostMessageBetweenServers():
followPerson(aliceDir, 'alice', aliceDomain, 'bob',
bobDomain + ':' + str(bobPort), federationList, False)
sessionBob = createSession(useTor)
sessionBob = createSession(proxyType)
bobPostLog = []
bobPersonCache = {}
bobCachedWebfingers = {}
@ -654,7 +654,7 @@ def testFollowBetweenServers():
testServerBobRunning = False
httpPrefix = 'http'
useTor = False
proxyType = None
federationList = []
baseDir = os.getcwd()
@ -727,7 +727,7 @@ def testFollowBetweenServers():
print('*********************************************************')
print('Alice sends a follow request to Bob')
os.chdir(aliceDir)
sessionAlice = createSession(useTor)
sessionAlice = createSession(proxyType)
inReplyTo = None
inReplyToAtomUri = None
subject = None
@ -1205,7 +1205,7 @@ def testClientToServer():
testServerBobRunning = False
httpPrefix = 'http'
useTor = False
proxyType = None
federationList = []
baseDir = os.getcwd()
@ -1276,7 +1276,7 @@ def testClientToServer():
print('\n\n*******************************************************')
print('Alice sends to Bob via c2s')
sessionAlice = createSession(useTor)
sessionAlice = createSession(proxyType)
followersOnly = False
attachedImageFilename = baseDir+'/img/logo.png'
mediaType = getAttachmentMediaType(attachedImageFilename)
@ -1415,7 +1415,7 @@ def testClientToServer():
open(bobDir + '/accounts/bob@' + bobDomain + '/following.txt').read()
print('\n\nBob likes the post')
sessionBob = createSession(useTor)
sessionBob = createSession(proxyType)
password = 'bobpass'
outboxPath = bobDir + '/accounts/bob@' + bobDomain + '/outbox'
inboxPath = aliceDir + '/accounts/alice@' + aliceDomain + '/inbox'