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