mirror of https://gitlab.com/bashrc2/epicyon
Send shared items token to domains within the approved federation
parent
ebac11f502
commit
84ad6d9f4f
|
@ -169,7 +169,7 @@ def createAnnounce(session, baseDir: str, federationList: [],
|
|||
announceNickname, announceDomain, announcePort, None,
|
||||
httpPrefix, True, clientToServer, federationList,
|
||||
sendThreads, postLog, cachedWebfingers, personCache,
|
||||
debug, projectVersion)
|
||||
debug, projectVersion, None)
|
||||
|
||||
return newAnnounce
|
||||
|
||||
|
|
|
@ -1131,7 +1131,9 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.YTReplacementDomain,
|
||||
self.server.showPublishedDateOnly,
|
||||
self.server.allowLocalNetworkAccess,
|
||||
city, self.server.systemLanguage)
|
||||
city, self.server.systemLanguage,
|
||||
self.server.sharedItemsFederatedDomains,
|
||||
self.server.sharedItemFederationTokens)
|
||||
|
||||
def _postToOutboxThread(self, messageJson: {}) -> bool:
|
||||
"""Creates a thread to send a post
|
||||
|
|
|
@ -821,7 +821,7 @@ def followedAccountAccepts(session, baseDir: str, httpPrefix: str,
|
|||
httpPrefix, True, clientToServer,
|
||||
federationList,
|
||||
sendThreads, postLog, cachedWebfingers,
|
||||
personCache, debug, projectVersion)
|
||||
personCache, debug, projectVersion, None)
|
||||
|
||||
|
||||
def followedAccountRejects(session, baseDir: str, httpPrefix: str,
|
||||
|
@ -882,7 +882,7 @@ def followedAccountRejects(session, baseDir: str, httpPrefix: str,
|
|||
httpPrefix, True, clientToServer,
|
||||
federationList,
|
||||
sendThreads, postLog, cachedWebfingers,
|
||||
personCache, debug, projectVersion)
|
||||
personCache, debug, projectVersion, None)
|
||||
|
||||
|
||||
def sendFollowRequest(session, baseDir: str,
|
||||
|
@ -941,7 +941,7 @@ def sendFollowRequest(session, baseDir: str,
|
|||
httpPrefix, True, clientToServer,
|
||||
federationList,
|
||||
sendThreads, postLog, cachedWebfingers, personCache,
|
||||
debug, projectVersion)
|
||||
debug, projectVersion, None)
|
||||
|
||||
return newFollowJson
|
||||
|
||||
|
|
10
inbox.py
10
inbox.py
|
@ -2000,7 +2000,7 @@ def _sendToGroupMembers(session, baseDir: str, handle: str, port: int,
|
|||
memberNickname, memberDomain, memberPort, cc,
|
||||
httpPrefix, False, False, federationList,
|
||||
sendThreads, postLog, cachedWebfingers,
|
||||
personCache, debug, __version__)
|
||||
personCache, debug, __version__, None)
|
||||
|
||||
|
||||
def _inboxUpdateCalendar(baseDir: str, handle: str,
|
||||
|
@ -2178,7 +2178,7 @@ def _bounceDM(senderPostId: str, session, httpPrefix: str,
|
|||
senderNickname, senderDomain, senderPort, cc,
|
||||
httpPrefix, False, False, federationList,
|
||||
sendThreads, postLog, cachedWebfingers,
|
||||
personCache, debug, __version__)
|
||||
personCache, debug, __version__, None)
|
||||
return True
|
||||
|
||||
|
||||
|
@ -2476,6 +2476,8 @@ def _inboxAfterInitial(recentPostsCache: {}, maxRecentPosts: int,
|
|||
# if the votes on a question have changed then
|
||||
# send out an update
|
||||
questionJson['type'] = 'Update'
|
||||
sharedItemsFederatedDomains = []
|
||||
sharedItemFederationTokens = {}
|
||||
sendToFollowersThread(session, baseDir,
|
||||
nickname, domain,
|
||||
onionDomain, i2pDomain, port,
|
||||
|
@ -2483,7 +2485,9 @@ def _inboxAfterInitial(recentPostsCache: {}, maxRecentPosts: int,
|
|||
sendThreads, postLog,
|
||||
cachedWebfingers, personCache,
|
||||
postJsonObject, debug,
|
||||
__version__)
|
||||
__version__,
|
||||
sharedItemsFederatedDomains,
|
||||
sharedItemFederationTokens)
|
||||
|
||||
isReplyToMutedPost = False
|
||||
|
||||
|
|
2
like.py
2
like.py
|
@ -113,7 +113,7 @@ def _like(recentPostsCache: {},
|
|||
'https://www.w3.org/ns/activitystreams#Public',
|
||||
httpPrefix, True, clientToServer, federationList,
|
||||
sendThreads, postLog, cachedWebfingers, personCache,
|
||||
debug, projectVersion)
|
||||
debug, projectVersion, None)
|
||||
|
||||
return newLikeJson
|
||||
|
||||
|
|
12
outbox.py
12
outbox.py
|
@ -190,7 +190,9 @@ def postMessageToOutbox(session, translate: {},
|
|||
YTReplacementDomain: str,
|
||||
showPublishedDateOnly: bool,
|
||||
allowLocalNetworkAccess: bool,
|
||||
city: str, systemLanguage: str) -> bool:
|
||||
city: str, systemLanguage: str,
|
||||
sharedItemsFederatedDomains: [],
|
||||
sharedItemFederationTokens: {}) -> bool:
|
||||
"""post is received by the outbox
|
||||
Client to server message post
|
||||
https://www.w3.org/TR/activitypub/#client-to-server-outbox-delivery
|
||||
|
@ -462,7 +464,9 @@ def postMessageToOutbox(session, translate: {},
|
|||
cachedWebfingers,
|
||||
personCache,
|
||||
messageJson, debug,
|
||||
version)
|
||||
version,
|
||||
sharedItemsFederatedDomains,
|
||||
sharedItemFederationTokens)
|
||||
followersThreads.append(followersThread)
|
||||
|
||||
if debug:
|
||||
|
@ -584,5 +588,7 @@ def postMessageToOutbox(session, translate: {},
|
|||
cachedWebfingers,
|
||||
personCache,
|
||||
messageJson, debug,
|
||||
version)
|
||||
version,
|
||||
sharedItemsFederatedDomains,
|
||||
sharedItemFederationTokens)
|
||||
return True
|
||||
|
|
49
posts.py
49
posts.py
|
@ -2211,7 +2211,8 @@ def sendSignedJson(postJsonObject: {}, session, baseDir: str,
|
|||
httpPrefix: str, saveToFile: bool, clientToServer: bool,
|
||||
federationList: [],
|
||||
sendThreads: [], postLog: [], cachedWebfingers: {},
|
||||
personCache: {}, debug: bool, projectVersion: str) -> int:
|
||||
personCache: {}, debug: bool, projectVersion: str,
|
||||
sharedItemsToken: str) -> int:
|
||||
"""Sends a signed json object to an inbox/outbox
|
||||
"""
|
||||
if debug:
|
||||
|
@ -2336,6 +2337,10 @@ def sendSignedJson(postJsonObject: {}, session, baseDir: str,
|
|||
createSignedHeader(privateKeyPem, nickname, domain, port,
|
||||
toDomain, toPort,
|
||||
postPath, httpPrefix, withDigest, postJsonStr)
|
||||
# optionally add a token so that the receiving instance may access
|
||||
# your shared items catalog
|
||||
if sharedItemsToken:
|
||||
signatureHeaderJson['SharesCatalog'] = sharedItemsToken
|
||||
|
||||
# Keep the number of threads being used small
|
||||
while len(sendThreads) > 1000:
|
||||
|
@ -2446,7 +2451,9 @@ def sendToNamedAddresses(session, baseDir: str,
|
|||
sendThreads: [], postLog: [],
|
||||
cachedWebfingers: {}, personCache: {},
|
||||
postJsonObject: {}, debug: bool,
|
||||
projectVersion: str) -> None:
|
||||
projectVersion: str,
|
||||
sharedItemsFederatedDomains: [],
|
||||
sharedItemFederationTokens: {}) -> None:
|
||||
"""sends a post to the specific named addresses in to/cc
|
||||
"""
|
||||
if not session:
|
||||
|
@ -2562,13 +2569,23 @@ def sendToNamedAddresses(session, baseDir: str,
|
|||
fromDomain = i2pDomain
|
||||
fromHttpPrefix = 'http'
|
||||
cc = []
|
||||
|
||||
# if the "to" domain is within the shared items
|
||||
# federation list then send the token for this domain
|
||||
# so that it can request a catalog
|
||||
sharedItemsToken = None
|
||||
if toDomain in sharedItemsFederatedDomains:
|
||||
if sharedItemFederationTokens.get(fromDomain):
|
||||
sharedItemsToken = sharedItemFederationTokens[fromDomain]
|
||||
|
||||
sendSignedJson(postJsonObject, session, baseDir,
|
||||
nickname, fromDomain, port,
|
||||
toNickname, toDomain, toPort,
|
||||
cc, fromHttpPrefix, True, clientToServer,
|
||||
federationList,
|
||||
sendThreads, postLog, cachedWebfingers,
|
||||
personCache, debug, projectVersion)
|
||||
personCache, debug, projectVersion,
|
||||
sharedItemsToken)
|
||||
|
||||
|
||||
def _hasSharedInbox(session, httpPrefix: str, domain: str,
|
||||
|
@ -2616,7 +2633,9 @@ def sendToFollowers(session, baseDir: str,
|
|||
sendThreads: [], postLog: [],
|
||||
cachedWebfingers: {}, personCache: {},
|
||||
postJsonObject: {}, debug: bool,
|
||||
projectVersion: str) -> None:
|
||||
projectVersion: str,
|
||||
sharedItemsFederatedDomains: [],
|
||||
sharedItemFederationTokens: {}) -> None:
|
||||
"""sends a post to the followers of the given nickname
|
||||
"""
|
||||
print('sendToFollowers')
|
||||
|
@ -2656,6 +2675,14 @@ def sendToFollowers(session, baseDir: str,
|
|||
if debug:
|
||||
pprint(followerHandles)
|
||||
|
||||
# if the followers domain is within the shared items
|
||||
# federation list then send the token for this domain
|
||||
# so that it can request a catalog
|
||||
sharedItemsToken = None
|
||||
if followerDomain in sharedItemsFederatedDomains:
|
||||
if sharedItemFederationTokens.get(domain):
|
||||
sharedItemsToken = sharedItemFederationTokens[domain]
|
||||
|
||||
# check that the follower's domain is active
|
||||
followerDomainUrl = httpPrefix + '://' + followerDomain
|
||||
if not siteIsActive(followerDomainUrl):
|
||||
|
@ -2720,7 +2747,8 @@ def sendToFollowers(session, baseDir: str,
|
|||
cc, fromHttpPrefix, True, clientToServer,
|
||||
federationList,
|
||||
sendThreads, postLog, cachedWebfingers,
|
||||
personCache, debug, projectVersion)
|
||||
personCache, debug, projectVersion,
|
||||
sharedItemsToken)
|
||||
else:
|
||||
# send to individual followers without using a shared inbox
|
||||
for handle in followerHandles:
|
||||
|
@ -2742,7 +2770,8 @@ def sendToFollowers(session, baseDir: str,
|
|||
cc, fromHttpPrefix, True, clientToServer,
|
||||
federationList,
|
||||
sendThreads, postLog, cachedWebfingers,
|
||||
personCache, debug, projectVersion)
|
||||
personCache, debug, projectVersion,
|
||||
sharedItemsToken)
|
||||
|
||||
time.sleep(4)
|
||||
|
||||
|
@ -2762,7 +2791,9 @@ def sendToFollowersThread(session, baseDir: str,
|
|||
sendThreads: [], postLog: [],
|
||||
cachedWebfingers: {}, personCache: {},
|
||||
postJsonObject: {}, debug: bool,
|
||||
projectVersion: str):
|
||||
projectVersion: str,
|
||||
sharedItemsFederatedDomains: [],
|
||||
sharedItemFederationTokens: {}):
|
||||
"""Returns a thread used to send a post to followers
|
||||
"""
|
||||
sendThread = \
|
||||
|
@ -2774,7 +2805,9 @@ def sendToFollowersThread(session, baseDir: str,
|
|||
sendThreads, postLog,
|
||||
cachedWebfingers, personCache,
|
||||
postJsonObject.copy(), debug,
|
||||
projectVersion), daemon=True)
|
||||
projectVersion,
|
||||
sharedItemsFederatedDomains,
|
||||
sharedItemFederationTokens), daemon=True)
|
||||
try:
|
||||
sendThread.start()
|
||||
except SocketError as e:
|
||||
|
|
|
@ -112,7 +112,9 @@ def _updatePostSchedule(baseDir: str, handle: str, httpd,
|
|||
httpd.YTReplacementDomain,
|
||||
httpd.showPublishedDateOnly,
|
||||
httpd.allowLocalNetworkAccess,
|
||||
httpd.city, httpd.systemLanguage):
|
||||
httpd.city, httpd.systemLanguage,
|
||||
httpd.sharedItemsFederatedDomains,
|
||||
httpd.sharedItemFederationTokens):
|
||||
indexLines.remove(line)
|
||||
os.remove(postFilename)
|
||||
continue
|
||||
|
|
Loading…
Reference in New Issue