diff --git a/daemon.py b/daemon.py index ee13b4718..67c796757 100644 --- a/daemon.py +++ b/daemon.py @@ -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, diff --git a/epicyon.py b/epicyon.py index 340eb0125..5ade09936 100644 --- a/epicyon.py +++ b/epicyon.py @@ -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, diff --git a/inbox.py b/inbox.py index c5f26cba4..2a7f41706 100644 --- a/inbox.py +++ b/inbox.py @@ -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, diff --git a/outbox.py b/outbox.py index 2e08fa09a..4a46789fb 100644 --- a/outbox.py +++ b/outbox.py @@ -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 diff --git a/posts.py b/posts.py index 2f9b75c57..994af9304 100644 --- a/posts.py +++ b/posts.py @@ -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 = {} diff --git a/schedule.py b/schedule.py index 51815b718..56c0ddd2f 100644 --- a/schedule.py +++ b/schedule.py @@ -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) diff --git a/session.py b/session.py index 1c819cf8e..20f4a7713 100644 --- a/session.py +++ b/session.py @@ -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 diff --git a/tests.py b/tests.py index 16504d80e..0b5c8c72a 100644 --- a/tests.py +++ b/tests.py @@ -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'