mirror of https://gitlab.com/bashrc2/epicyon
Tidying of actor urls
parent
39e6e06ca3
commit
87a7d2e154
|
@ -18,6 +18,7 @@ from utils import followPerson
|
|||
from utils import hasObjectDict
|
||||
from utils import acctDir
|
||||
from utils import hasGroupType
|
||||
from utils import localActorUrl
|
||||
|
||||
|
||||
def _createAcceptReject(baseDir: str, federationList: [],
|
||||
|
@ -41,7 +42,7 @@ def _createAcceptReject(baseDir: str, federationList: [],
|
|||
newAccept = {
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
'type': acceptType,
|
||||
'actor': httpPrefix + '://' + domain + '/users/' + nickname,
|
||||
'actor': localActorUrl(httpPrefix, nickname, domain),
|
||||
'to': [toUrl],
|
||||
'cc': [],
|
||||
'object': objectJson
|
||||
|
|
18
announce.py
18
announce.py
|
@ -22,6 +22,7 @@ from utils import locatePost
|
|||
from utils import saveJson
|
||||
from utils import undoAnnounceCollectionEntry
|
||||
from utils import updateAnnounceCollection
|
||||
from utils import localActorUrl
|
||||
from posts import sendSignedJson
|
||||
from posts import getPersonBox
|
||||
from session import postJson
|
||||
|
@ -136,11 +137,11 @@ def createAnnounce(session, baseDir: str, federationList: [],
|
|||
statusNumber, published = getStatusNumber()
|
||||
newAnnounceId = httpPrefix + '://' + fullDomain + \
|
||||
'/users/' + nickname + '/statuses/' + statusNumber
|
||||
atomUriStr = httpPrefix + '://' + fullDomain + '/users/' + nickname + \
|
||||
atomUriStr = localActorUrl(httpPrefix, nickname, fullDomain) + \
|
||||
'/statuses/' + statusNumber
|
||||
newAnnounce = {
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
'actor': httpPrefix + '://' + fullDomain + '/users/' + nickname,
|
||||
'actor': localActorUrl(httpPrefix, nickname, fullDomain),
|
||||
'atomUri': atomUriStr,
|
||||
'cc': [],
|
||||
'id': newAnnounceId + '/activity',
|
||||
|
@ -193,8 +194,7 @@ def announcePublic(session, baseDir: str, federationList: [],
|
|||
fromDomain = getFullDomain(domain, port)
|
||||
|
||||
toUrl = 'https://www.w3.org/ns/activitystreams#Public'
|
||||
ccUrl = httpPrefix + '://' + fromDomain + '/users/' + nickname + \
|
||||
'/followers'
|
||||
ccUrl = localActorUrl(httpPrefix, nickname, fromDomain) + '/followers'
|
||||
return createAnnounce(session, baseDir, federationList,
|
||||
nickname, domain, port,
|
||||
toUrl, ccUrl, httpPrefix,
|
||||
|
@ -219,13 +219,11 @@ def sendAnnounceViaServer(baseDir: str, session,
|
|||
fromDomainFull = getFullDomain(fromDomain, fromPort)
|
||||
|
||||
toUrl = 'https://www.w3.org/ns/activitystreams#Public'
|
||||
ccUrl = httpPrefix + '://' + fromDomainFull + '/users/' + fromNickname + \
|
||||
'/followers'
|
||||
actorStr = localActorUrl(httpPrefix, fromNickname, fromDomainFull)
|
||||
ccUrl = actorStr + '/followers'
|
||||
|
||||
statusNumber, published = getStatusNumber()
|
||||
newAnnounceId = httpPrefix + '://' + fromDomainFull + '/users/' + \
|
||||
fromNickname + '/statuses/' + statusNumber
|
||||
actorStr = httpPrefix + '://' + fromDomainFull + '/users/' + fromNickname
|
||||
newAnnounceId = actorStr + '/statuses/' + statusNumber
|
||||
newAnnounceJson = {
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
'actor': actorStr,
|
||||
|
@ -308,7 +306,7 @@ def sendUndoAnnounceViaServer(baseDir: str, session,
|
|||
|
||||
domainFull = getFullDomain(domain, port)
|
||||
|
||||
actor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
actor = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
handle = actor.replace('/users/', '/@')
|
||||
|
||||
statusNumber, published = getStatusNumber()
|
||||
|
|
|
@ -18,6 +18,7 @@ from utils import getDomainFromActor
|
|||
from utils import loadJson
|
||||
from utils import saveJson
|
||||
from utils import acctDir
|
||||
from utils import localActorUrl
|
||||
|
||||
|
||||
def setAvailability(baseDir: str, nickname: str, domain: str,
|
||||
|
@ -90,13 +91,12 @@ def sendAvailabilityViaServer(baseDir: str, session,
|
|||
|
||||
domainFull = getFullDomain(domain, port)
|
||||
|
||||
toUrl = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
ccUrl = httpPrefix + '://' + domainFull + '/users/' + nickname + \
|
||||
'/followers'
|
||||
toUrl = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
ccUrl = toUrl + '/followers'
|
||||
|
||||
newAvailabilityJson = {
|
||||
'type': 'Availability',
|
||||
'actor': httpPrefix + '://' + domainFull + '/users/' + nickname,
|
||||
'actor': toUrl,
|
||||
'object': '"' + status + '"',
|
||||
'to': [toUrl],
|
||||
'cc': [ccUrl]
|
||||
|
|
|
@ -28,6 +28,7 @@ from utils import evilIncarnate
|
|||
from utils import getDomainFromActor
|
||||
from utils import getNicknameFromActor
|
||||
from utils import acctDir
|
||||
from utils import localActorUrl
|
||||
from conversation import muteConversation
|
||||
from conversation import unmuteConversation
|
||||
|
||||
|
@ -469,7 +470,7 @@ def mutePost(baseDir: str, nickname: str, domain: str, port: int,
|
|||
|
||||
if hasObjectDict(postJsonObject):
|
||||
domainFull = getFullDomain(domain, port)
|
||||
actor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
actor = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
|
||||
if postJsonObject['object'].get('conversation'):
|
||||
muteConversation(baseDir, nickname, domain,
|
||||
|
@ -559,7 +560,7 @@ def unmutePost(baseDir: str, nickname: str, domain: str, port: int,
|
|||
|
||||
if postJsonObject['object'].get('ignores'):
|
||||
domainFull = getFullDomain(domain, port)
|
||||
actor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
actor = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
totalItems = 0
|
||||
if postJsonObject['object']['ignores'].get('totalItems'):
|
||||
totalItems = \
|
||||
|
|
12
blog.py
12
blog.py
|
@ -17,6 +17,7 @@ from webapp_utils import htmlFooter
|
|||
from webapp_utils import getPostAttachmentsAsHtml
|
||||
from webapp_utils import editTextArea
|
||||
from webapp_media import addEmbeddedElements
|
||||
from utils import localActorUrl
|
||||
from utils import getActorLanguagesList
|
||||
from utils import getBaseContentFromPost
|
||||
from utils import getContentFromPost
|
||||
|
@ -242,8 +243,7 @@ def _htmlBlogPostContent(authorized: bool,
|
|||
if attachmentStr:
|
||||
blogStr += '<br><center>' + attachmentStr + '</center>'
|
||||
|
||||
personUrl = \
|
||||
httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
personUrl = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
actorJson = \
|
||||
getPersonFromCache(baseDir, personUrl, personCache, False)
|
||||
languagesUnderstood = []
|
||||
|
@ -288,8 +288,8 @@ def _htmlBlogPostContent(authorized: bool,
|
|||
|
||||
if not linkedAuthor:
|
||||
blogStr += '<p class="about"><a class="about" href="' + \
|
||||
httpPrefix + '://' + domainFull + \
|
||||
'/users/' + nickname + '">' + translate['About the author'] + \
|
||||
localActorUrl(httpPrefix, nickname, domainFull) + \
|
||||
'">' + translate['About the author'] + \
|
||||
'</a></p>\n'
|
||||
|
||||
replies = _noOfBlogReplies(baseDir, httpPrefix, translate,
|
||||
|
@ -902,8 +902,8 @@ def pathContainsBlogLink(baseDir: str,
|
|||
return None, None
|
||||
if '#' + userEnding2[1] + '.' not in open(blogIndexFilename).read():
|
||||
return None, None
|
||||
messageId = httpPrefix + '://' + domainFull + \
|
||||
'/users/' + nickname + '/statuses/' + userEnding2[1]
|
||||
messageId = localActorUrl(httpPrefix, nickname, domainFull) + \
|
||||
'/statuses/' + userEnding2[1]
|
||||
return locatePost(baseDir, nickname, domain, messageId), nickname
|
||||
|
||||
|
||||
|
|
11
bookmarks.py
11
bookmarks.py
|
@ -25,6 +25,7 @@ from utils import loadJson
|
|||
from utils import saveJson
|
||||
from utils import hasObjectDict
|
||||
from utils import acctDir
|
||||
from utils import localActorUrl
|
||||
from posts import getPersonBox
|
||||
from session import postJson
|
||||
|
||||
|
@ -242,7 +243,7 @@ def bookmark(recentPostsCache: {},
|
|||
newBookmarkJson = {
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
'type': 'Bookmark',
|
||||
'actor': httpPrefix + '://' + fullDomain + '/users/' + nickname,
|
||||
'actor': localActorUrl(httpPrefix, nickname, fullDomain),
|
||||
'object': objectUrl
|
||||
}
|
||||
if ccList:
|
||||
|
@ -301,10 +302,10 @@ def undoBookmark(recentPostsCache: {},
|
|||
newUndoBookmarkJson = {
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
'type': 'Undo',
|
||||
'actor': httpPrefix + '://' + fullDomain + '/users/' + nickname,
|
||||
'actor': localActorUrl(httpPrefix, nickname, fullDomain),
|
||||
'object': {
|
||||
'type': 'Bookmark',
|
||||
'actor': httpPrefix + '://' + fullDomain + '/users/' + nickname,
|
||||
'actor': localActorUrl(httpPrefix, nickname, fullDomain),
|
||||
'object': objectUrl
|
||||
}
|
||||
}
|
||||
|
@ -356,7 +357,7 @@ def sendBookmarkViaServer(baseDir: str, session,
|
|||
|
||||
domainFull = getFullDomain(domain, fromPort)
|
||||
|
||||
actor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
actor = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
|
||||
newBookmarkJson = {
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
|
@ -441,7 +442,7 @@ def sendUndoBookmarkViaServer(baseDir: str, session,
|
|||
|
||||
domainFull = getFullDomain(domain, fromPort)
|
||||
|
||||
actor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
actor = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
|
||||
newBookmarkJson = {
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
|
|
64
daemon.py
64
daemon.py
|
@ -225,6 +225,7 @@ from shares import sharesCatalogCSVEndpoint
|
|||
from categories import setHashtagCategory
|
||||
from languages import getActorLanguages
|
||||
from languages import setActorLanguages
|
||||
from utils import localActorUrl
|
||||
from utils import isfloat
|
||||
from utils import validPassword
|
||||
from utils import removeLineEndings
|
||||
|
@ -2586,8 +2587,7 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
print(followerNickname + ' stops following ' +
|
||||
followingActor)
|
||||
followActor = \
|
||||
httpPrefix + '://' + domainFull + \
|
||||
'/users/' + followerNickname
|
||||
localActorUrl(httpPrefix, followerNickname, domainFull)
|
||||
statusNumber, published = getStatusNumber()
|
||||
followId = followActor + '/statuses/' + str(statusNumber)
|
||||
unfollowJson = {
|
||||
|
@ -3091,10 +3091,11 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
searchNickname = getNicknameFromActor(searchStr)
|
||||
searchDomain, searchPort = \
|
||||
getDomainFromActor(searchStr)
|
||||
searchDomainFull = \
|
||||
getFullDomain(searchDomain, searchPort)
|
||||
actor = \
|
||||
httpPrefix + '://' + \
|
||||
getFullDomain(searchDomain, searchPort) + \
|
||||
'/users/' + searchNickname
|
||||
localActorUrl(httpPrefix, searchNickname,
|
||||
searchDomainFull)
|
||||
else:
|
||||
actor = searchStr
|
||||
avatarUrl = \
|
||||
|
@ -6660,8 +6661,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
return
|
||||
self.server.actorRepeat = path.split('?actor=')[1]
|
||||
announceToStr = \
|
||||
httpPrefix + '://' + domainFull + '/users/' + \
|
||||
self.postToNickname + '/followers'
|
||||
localActorUrl(httpPrefix, self.postToNickname, domainFull) + \
|
||||
'/followers'
|
||||
if not repeatPrivate:
|
||||
announceToStr = 'https://www.w3.org/ns/activitystreams#Public'
|
||||
announceJson = \
|
||||
|
@ -7066,8 +7067,7 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.GETbusy = False
|
||||
return
|
||||
likeActor = \
|
||||
httpPrefix + '://' + \
|
||||
domainFull + '/users/' + self.postToNickname
|
||||
localActorUrl(httpPrefix, self.postToNickname, domainFull)
|
||||
actorLiked = path.split('?actor=')[1]
|
||||
if '?' in actorLiked:
|
||||
actorLiked = actorLiked.split('?')[0]
|
||||
|
@ -7165,7 +7165,7 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.GETbusy = False
|
||||
return
|
||||
undoActor = \
|
||||
httpPrefix + '://' + domainFull + '/users/' + self.postToNickname
|
||||
localActorUrl(httpPrefix, self.postToNickname, domainFull)
|
||||
actorLiked = path.split('?actor=')[1]
|
||||
if '?' in actorLiked:
|
||||
actorLiked = actorLiked.split('?')[0]
|
||||
|
@ -7263,7 +7263,7 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.GETbusy = False
|
||||
return
|
||||
bookmarkActor = \
|
||||
httpPrefix + '://' + domainFull + '/users/' + self.postToNickname
|
||||
localActorUrl(httpPrefix, self.postToNickname, domainFull)
|
||||
ccList = []
|
||||
bookmark(self.server.recentPostsCache,
|
||||
self.server.session,
|
||||
|
@ -7349,7 +7349,7 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
self.server.GETbusy = False
|
||||
return
|
||||
undoActor = \
|
||||
httpPrefix + '://' + domainFull + '/users/' + self.postToNickname
|
||||
localActorUrl(httpPrefix, self.postToNickname, domainFull)
|
||||
ccList = []
|
||||
undoBookmark(self.server.recentPostsCache,
|
||||
self.server.session,
|
||||
|
@ -7616,15 +7616,15 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
'https://www.w3.org/ns/activitystreams'
|
||||
|
||||
firstStr = \
|
||||
httpPrefix + '://' + domainFull + '/users/' + nickname + \
|
||||
localActorUrl(httpPrefix, nickname, domainFull) + \
|
||||
'/statuses/' + statusNumber + '/replies?page=true'
|
||||
|
||||
idStr = \
|
||||
httpPrefix + '://' + domainFull + '/users/' + nickname + \
|
||||
localActorUrl(httpPrefix, nickname, domainFull) + \
|
||||
'/statuses/' + statusNumber + '/replies'
|
||||
|
||||
lastStr = \
|
||||
httpPrefix + '://' + domainFull + '/users/' + nickname + \
|
||||
localActorUrl(httpPrefix, nickname, domainFull) + \
|
||||
'/statuses/' + statusNumber + '/replies?page=true'
|
||||
|
||||
repliesJson = {
|
||||
|
@ -7701,13 +7701,12 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
contextStr = 'https://www.w3.org/ns/activitystreams'
|
||||
|
||||
idStr = \
|
||||
httpPrefix + '://' + domainFull + \
|
||||
'/users/' + nickname + '/statuses/' + \
|
||||
statusNumber + '?page=true'
|
||||
localActorUrl(httpPrefix, nickname, domainFull) + \
|
||||
'/statuses/' + statusNumber + '?page=true'
|
||||
|
||||
partOfStr = \
|
||||
httpPrefix + '://' + domainFull + \
|
||||
'/users/' + nickname + '/statuses/' + statusNumber
|
||||
localActorUrl(httpPrefix, nickname, domainFull) + \
|
||||
'/statuses/' + statusNumber
|
||||
|
||||
repliesJson = {
|
||||
'@context': contextStr,
|
||||
|
@ -10879,8 +10878,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
postId = path.split('/editnewspost=')[1]
|
||||
if '?' in postId:
|
||||
postId = postId.split('?')[0]
|
||||
postUrl = httpPrefix + '://' + domainFull + \
|
||||
'/users/' + postActor + '/statuses/' + postId
|
||||
postUrl = localActorUrl(httpPrefix, postActor, domainFull) + \
|
||||
'/statuses/' + postId
|
||||
path = path.split('/editnewspost=')[0]
|
||||
msg = htmlEditNewsPost(self.server.cssCache,
|
||||
translate, baseDir,
|
||||
|
@ -10930,8 +10929,7 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
# don't block self
|
||||
return False
|
||||
blockActor = \
|
||||
httpPrefix + '://' + blockerDomainFull + '/users/' + \
|
||||
blockerNickname
|
||||
localActorUrl(httpPrefix, blockerNickname, blockerDomainFull)
|
||||
toUrl = 'https://www.w3.org/ns/activitystreams#Public'
|
||||
ccUrl = blockActor + '/followers'
|
||||
|
||||
|
@ -13090,8 +13088,8 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
nickname = getNicknameFromActor(self.path.split('?')[0])
|
||||
if nickname == actor:
|
||||
postUrl = \
|
||||
self.server.httpPrefix + '://' + \
|
||||
self.server.domainFull + '/users/' + nickname + \
|
||||
localActorUrl(self.server.httpPrefix, nickname,
|
||||
self.server.domainFull) + \
|
||||
'/statuses/' + messageId
|
||||
msg = htmlEditBlog(self.server.mediaInstance,
|
||||
self.server.translate,
|
||||
|
@ -15243,23 +15241,25 @@ class PubServer(BaseHTTPRequestHandler):
|
|||
if callingDomain.endswith('.onion') and \
|
||||
self.server.onionDomain:
|
||||
actorPathStr = \
|
||||
'http://' + self.server.onionDomain + \
|
||||
'/users/' + nickname + '/' + postRedirect + \
|
||||
localActorUrl('http', nickname,
|
||||
self.server.onionDomain) + \
|
||||
'/' + postRedirect + \
|
||||
'?page=' + str(pageNumber)
|
||||
self._redirect_headers(actorPathStr, cookie,
|
||||
callingDomain)
|
||||
elif (callingDomain.endswith('.i2p') and
|
||||
self.server.i2pDomain):
|
||||
actorPathStr = \
|
||||
'http://' + self.server.i2pDomain + \
|
||||
'/users/' + nickname + '/' + postRedirect + \
|
||||
localActorUrl('http', nickname,
|
||||
self.server.i2pDomain) + \
|
||||
'/' + postRedirect + \
|
||||
'?page=' + str(pageNumber)
|
||||
self._redirect_headers(actorPathStr, cookie,
|
||||
callingDomain)
|
||||
else:
|
||||
actorPathStr = \
|
||||
self.server.httpPrefix + '://' + \
|
||||
self.server.domainFull + '/users/' + nickname + \
|
||||
localActorUrl(self.server.httpPrefix, nickname,
|
||||
self.server.domainFull) + \
|
||||
'/' + postRedirect + '?page=' + str(pageNumber)
|
||||
self._redirect_headers(actorPathStr, cookie,
|
||||
callingDomain)
|
||||
|
|
|
@ -18,6 +18,7 @@ from utils import getDomainFromActor
|
|||
from utils import locatePost
|
||||
from utils import deletePost
|
||||
from utils import removeModerationPostFromIndex
|
||||
from utils import localActorUrl
|
||||
from session import postJson
|
||||
from webfinger import webfingerHandle
|
||||
from auth import createBasicAuthHeader
|
||||
|
@ -38,8 +39,7 @@ def sendDeleteViaServer(baseDir: str, session,
|
|||
|
||||
fromDomainFull = getFullDomain(fromDomain, fromPort)
|
||||
|
||||
actor = httpPrefix + '://' + fromDomainFull + \
|
||||
'/users/' + fromNickname
|
||||
actor = localActorUrl(httpPrefix, fromNickname, fromDomainFull)
|
||||
toUrl = 'https://www.w3.org/ns/activitystreams#Public'
|
||||
ccUrl = actor + '/followers'
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@ from utils import removeHtml
|
|||
from utils import getNicknameFromActor
|
||||
from utils import getDomainFromActor
|
||||
from utils import isPGPEncrypted
|
||||
from utils import localActorUrl
|
||||
from session import createSession
|
||||
from speaker import speakableText
|
||||
from speaker import getSpeakerPitch
|
||||
|
@ -1374,7 +1375,7 @@ def runDesktopClient(baseDir: str, proxyType: str, httpPrefix: str,
|
|||
systemLanguage, espeak)
|
||||
|
||||
domainFull = getFullDomain(domain, port)
|
||||
yourActor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
yourActor = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
actorJson = None
|
||||
|
||||
notifyJson = {
|
||||
|
@ -1949,8 +1950,8 @@ def runDesktopClient(baseDir: str, proxyType: str, httpPrefix: str,
|
|||
blockDomain = blockHandle.split('@')[1]
|
||||
blockNickname = blockHandle.split('@')[0]
|
||||
blockActor = \
|
||||
httpPrefix + '://' + blockDomain + \
|
||||
'/users/' + blockNickname
|
||||
localActorUrl(httpPrefix,
|
||||
blockNickname, blockDomain)
|
||||
if currIndex > 0 and boxJson and not blockActor:
|
||||
postJsonObject = \
|
||||
_desktopGetBoxPostObject(boxJson, currIndex)
|
||||
|
|
|
@ -34,6 +34,7 @@ import os
|
|||
from utils import loadJson
|
||||
from utils import saveJson
|
||||
from utils import acctDir
|
||||
from utils import localActorUrl
|
||||
|
||||
|
||||
def E2EEremoveDevice(baseDir: str, nickname: str, domain: str,
|
||||
|
@ -142,7 +143,7 @@ def E2EEdevicesCollection(baseDir: str, nickname: str, domain: str,
|
|||
personDir = acctDir(baseDir, nickname, domain)
|
||||
if not os.path.isdir(personDir):
|
||||
return {}
|
||||
personId = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
personId = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
if not os.path.isdir(personDir + '/devices'):
|
||||
os.mkdir(personDir + '/devices')
|
||||
deviceList = []
|
||||
|
|
|
@ -1166,7 +1166,6 @@ if args.message:
|
|||
toDomain = 'public'
|
||||
toPort = port
|
||||
|
||||
# ccUrl = httpPrefix + '://' + domain + '/users/' + nickname + '/followers'
|
||||
ccUrl = None
|
||||
sendMessage = args.message
|
||||
followersOnly = args.followersonly
|
||||
|
|
47
follow.py
47
follow.py
|
@ -30,6 +30,7 @@ from utils import getUserPaths
|
|||
from utils import acctDir
|
||||
from utils import hasGroupType
|
||||
from utils import isGroupAccount
|
||||
from utils import localActorUrl
|
||||
from acceptreject import createAccept
|
||||
from acceptreject import createReject
|
||||
from webfinger import webfingerHandle
|
||||
|
@ -67,8 +68,7 @@ def createInitialLastSeen(baseDir: str, httpPrefix: str) -> None:
|
|||
domain = handle.split('@')[1]
|
||||
if nickname.startswith('!'):
|
||||
nickname = nickname[1:]
|
||||
actor = \
|
||||
httpPrefix + '://' + domain + '/users/' + nickname
|
||||
actor = localActorUrl(httpPrefix, nickname, domain)
|
||||
lastSeenFilename = \
|
||||
lastSeenDir + '/' + actor.replace('/', '#') + '.txt'
|
||||
if not os.path.isfile(lastSeenFilename):
|
||||
|
@ -399,11 +399,10 @@ def getFollowingFeed(baseDir: str, domain: str, port: int, path: str,
|
|||
|
||||
if headerOnly:
|
||||
firstStr = \
|
||||
httpPrefix + '://' + domain + '/users/' + \
|
||||
nickname + '/' + followFile + '?page=1'
|
||||
localActorUrl(httpPrefix, nickname, domain) + \
|
||||
'/' + followFile + '?page=1'
|
||||
idStr = \
|
||||
httpPrefix + '://' + domain + '/users/' + \
|
||||
nickname + '/' + followFile
|
||||
localActorUrl(httpPrefix, nickname, domain) + '/' + followFile
|
||||
totalStr = \
|
||||
_getNoOfFollows(baseDir, nickname, domain, authorized)
|
||||
following = {
|
||||
|
@ -420,10 +419,10 @@ def getFollowingFeed(baseDir: str, domain: str, port: int, path: str,
|
|||
|
||||
nextPageNumber = int(pageNumber + 1)
|
||||
idStr = \
|
||||
httpPrefix + '://' + domain + '/users/' + \
|
||||
nickname + '/' + followFile + '?page=' + str(pageNumber)
|
||||
localActorUrl(httpPrefix, nickname, domain) + \
|
||||
'/' + followFile + '?page=' + str(pageNumber)
|
||||
partOfStr = \
|
||||
httpPrefix + '://' + domain + '/users/' + nickname + '/' + followFile
|
||||
localActorUrl(httpPrefix, nickname, domain) + '/' + followFile
|
||||
following = {
|
||||
'@context': 'https://www.w3.org/ns/activitystreams',
|
||||
'id': idStr,
|
||||
|
@ -457,7 +456,7 @@ def getFollowingFeed(baseDir: str, domain: str, port: int, path: str,
|
|||
dom = line2.split('@')[1]
|
||||
if not nick.startswith('!'):
|
||||
# person actor
|
||||
url = httpPrefix + '://' + dom + '/users/' + nick
|
||||
url = localActorUrl(httpPrefix, nick, dom)
|
||||
else:
|
||||
# group actor
|
||||
url = httpPrefix + '://' + dom + '/c/' + nick
|
||||
|
@ -481,8 +480,8 @@ def getFollowingFeed(baseDir: str, domain: str, port: int, path: str,
|
|||
lastPage = 1
|
||||
if nextPageNumber > lastPage:
|
||||
following['next'] = \
|
||||
httpPrefix + '://' + domain + '/users/' + \
|
||||
nickname + '/' + followFile + '?page=' + str(lastPage)
|
||||
localActorUrl(httpPrefix, nickname, domain) + \
|
||||
'/' + followFile + '?page=' + str(lastPage)
|
||||
return following
|
||||
|
||||
|
||||
|
@ -969,7 +968,7 @@ def sendFollowRequest(session, baseDir: str,
|
|||
return None
|
||||
|
||||
fullDomain = getFullDomain(domain, port)
|
||||
followActor = httpPrefix + '://' + fullDomain + '/users/' + nickname
|
||||
followActor = localActorUrl(httpPrefix, nickname, fullDomain)
|
||||
|
||||
requestDomain = getFullDomain(followDomain, followPort)
|
||||
|
||||
|
@ -1040,10 +1039,8 @@ def sendFollowRequestViaServer(baseDir: str, session,
|
|||
|
||||
followDomainFull = getFullDomain(followDomain, followPort)
|
||||
|
||||
followActor = httpPrefix + '://' + \
|
||||
fromDomainFull + '/users/' + fromNickname
|
||||
followedId = httpPrefix + '://' + \
|
||||
followDomainFull + '/users/' + followNickname
|
||||
followActor = localActorUrl(httpPrefix, fromNickname, fromDomainFull)
|
||||
followedId = localActorUrl(httpPrefix, followNickname, followDomainFull)
|
||||
|
||||
statusNumber, published = getStatusNumber()
|
||||
newFollowJson = {
|
||||
|
@ -1126,10 +1123,8 @@ def sendUnfollowRequestViaServer(baseDir: str, session,
|
|||
fromDomainFull = getFullDomain(fromDomain, fromPort)
|
||||
followDomainFull = getFullDomain(followDomain, followPort)
|
||||
|
||||
followActor = httpPrefix + '://' + \
|
||||
fromDomainFull + '/users/' + fromNickname
|
||||
followedId = httpPrefix + '://' + \
|
||||
followDomainFull + '/users/' + followNickname
|
||||
followActor = localActorUrl(httpPrefix, fromNickname, fromDomainFull)
|
||||
followedId = localActorUrl(httpPrefix, followNickname, followDomainFull)
|
||||
statusNumber, published = getStatusNumber()
|
||||
|
||||
unfollowJson = {
|
||||
|
@ -1216,7 +1211,7 @@ def getFollowingViaServer(baseDir: str, session,
|
|||
return 6
|
||||
|
||||
domainFull = getFullDomain(domain, port)
|
||||
followActor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
followActor = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
|
||||
authHeader = createBasicAuthHeader(nickname, password)
|
||||
|
||||
|
@ -1257,7 +1252,7 @@ def getFollowersViaServer(baseDir: str, session,
|
|||
return 6
|
||||
|
||||
domainFull = getFullDomain(domain, port)
|
||||
followActor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
followActor = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
|
||||
authHeader = createBasicAuthHeader(nickname, password)
|
||||
|
||||
|
@ -1298,7 +1293,7 @@ def getFollowRequestsViaServer(baseDir: str, session,
|
|||
|
||||
domainFull = getFullDomain(domain, port)
|
||||
|
||||
followActor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
followActor = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
authHeader = createBasicAuthHeader(nickname, password)
|
||||
|
||||
headers = {
|
||||
|
@ -1339,7 +1334,7 @@ def approveFollowRequestViaServer(baseDir: str, session,
|
|||
return 6
|
||||
|
||||
domainFull = getFullDomain(domain, port)
|
||||
actor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
actor = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
|
||||
authHeader = createBasicAuthHeader(nickname, password)
|
||||
|
||||
|
@ -1379,7 +1374,7 @@ def denyFollowRequestViaServer(baseDir: str, session,
|
|||
return 6
|
||||
|
||||
domainFull = getFullDomain(domain, port)
|
||||
actor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
actor = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
|
||||
authHeader = createBasicAuthHeader(nickname, password)
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@ from time import gmtime, strftime
|
|||
import datetime
|
||||
from utils import getFullDomain
|
||||
from utils import getSHA256
|
||||
from utils import localActorUrl
|
||||
|
||||
|
||||
def messageContentDigest(messageBodyJsonStr: str) -> str:
|
||||
|
@ -48,7 +49,7 @@ def signPostHeaders(dateStr: str, privateKeyPem: str,
|
|||
|
||||
if not dateStr:
|
||||
dateStr = strftime("%a, %d %b %Y %H:%M:%S %Z", gmtime())
|
||||
keyID = httpPrefix + '://' + domain + '/users/' + nickname + '#main-key'
|
||||
keyID = localActorUrl(httpPrefix, nickname, domain) + '#main-key'
|
||||
if not messageBodyJsonStr:
|
||||
headers = {
|
||||
'(request-target)': f'post {path}',
|
||||
|
@ -125,7 +126,7 @@ def signPostHeadersNew(dateStr: str, privateKeyPem: str,
|
|||
currTime = datetime.datetime.strptime(dateStr, timeFormat)
|
||||
secondsSinceEpoch = \
|
||||
int((currTime - datetime.datetime(1970, 1, 1)).total_seconds())
|
||||
keyID = httpPrefix + '://' + domain + '/users/' + nickname + '#main-key'
|
||||
keyID = localActorUrl(httpPrefix, nickname, domain) + '#main-key'
|
||||
if not messageBodyJsonStr:
|
||||
headers = {
|
||||
'*request-target': f'post {path}',
|
||||
|
|
30
inbox.py
30
inbox.py
|
@ -46,6 +46,7 @@ from utils import saveJson
|
|||
from utils import updateLikesCollection
|
||||
from utils import undoLikesCollectionEntry
|
||||
from utils import hasGroupType
|
||||
from utils import localActorUrl
|
||||
from categories import getHashtagCategories
|
||||
from categories import setHashtagCategory
|
||||
from httpsig import verifyPostHeaders
|
||||
|
@ -401,8 +402,8 @@ def savePostToInboxQueue(baseDir: str, httpPrefix: str,
|
|||
if actor:
|
||||
postId = actor + '/statuses/' + statusNumber
|
||||
else:
|
||||
postId = httpPrefix + '://' + originalDomain + \
|
||||
'/users/' + nickname + '/statuses/' + statusNumber
|
||||
postId = localActorUrl(httpPrefix, nickname, originalDomain) + \
|
||||
'/statuses/' + statusNumber
|
||||
|
||||
# NOTE: don't change postJsonObject['id'] before signature check
|
||||
|
||||
|
@ -1912,7 +1913,7 @@ def _sendToGroupMembers(session, baseDir: str, handle: str, port: int,
|
|||
nickname = handle.split('@')[0].replace('!', '')
|
||||
domain = handle.split('@')[1]
|
||||
domainFull = getFullDomain(domain, port)
|
||||
groupActor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
groupActor = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
if groupActor not in postJsonObject['to']:
|
||||
return
|
||||
cc = ''
|
||||
|
@ -2148,8 +2149,8 @@ def _isValidDM(baseDir: str, nickname: str, domain: str, port: int,
|
|||
if not os.path.isfile(followDMsFilename):
|
||||
# dm index will be updated
|
||||
updateIndexList.append('dm')
|
||||
_dmNotify(baseDir, handle,
|
||||
httpPrefix + '://' + domain + '/users/' + nickname + '/dm')
|
||||
actUrl = localActorUrl(httpPrefix, nickname, domain)
|
||||
_dmNotify(baseDir, handle, actUrl + '/dm')
|
||||
return True
|
||||
|
||||
# get the file containing following handles
|
||||
|
@ -2216,8 +2217,8 @@ def _isValidDM(baseDir: str, nickname: str, domain: str, port: int,
|
|||
|
||||
# dm index will be updated
|
||||
updateIndexList.append('dm')
|
||||
_dmNotify(baseDir, handle,
|
||||
httpPrefix + '://' + domain + '/users/' + nickname + '/dm')
|
||||
actUrl = localActorUrl(httpPrefix, nickname, domain)
|
||||
_dmNotify(baseDir, handle, actUrl + '/dm')
|
||||
return True
|
||||
|
||||
|
||||
|
@ -2465,7 +2466,7 @@ def _inboxAfterInitial(recentPostsCache: {}, maxRecentPosts: int,
|
|||
return False
|
||||
|
||||
# get the actor being replied to
|
||||
actor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
actor = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
|
||||
# create a reply notification file if needed
|
||||
if not postIsDM and isReply(postJsonObject, actor):
|
||||
|
@ -2484,10 +2485,11 @@ def _inboxAfterInitial(recentPostsCache: {}, maxRecentPosts: int,
|
|||
if isinstance(inReplyTo, str):
|
||||
if not isMuted(baseDir, nickname, domain,
|
||||
inReplyTo, conversationId):
|
||||
actUrl = \
|
||||
localActorUrl(httpPrefix,
|
||||
nickname, domain)
|
||||
_replyNotify(baseDir, handle,
|
||||
httpPrefix + '://' + domain +
|
||||
'/users/' + nickname +
|
||||
'/tlreplies')
|
||||
actUrl + '/tlreplies')
|
||||
else:
|
||||
isReplyToMutedPost = True
|
||||
|
||||
|
@ -2523,10 +2525,10 @@ def _inboxAfterInitial(recentPostsCache: {}, maxRecentPosts: int,
|
|||
if notifyWhenPersonPosts(baseDir, nickname, domain,
|
||||
fromNickname, fromDomainFull):
|
||||
postId = removeIdEnding(jsonObj['id'])
|
||||
domFull = getFullDomain(domain, port)
|
||||
postLink = \
|
||||
httpPrefix + '://' + \
|
||||
getFullDomain(domain, port) + \
|
||||
'/users/' + nickname + \
|
||||
localActorUrl(httpPrefix,
|
||||
nickname, domFull) + \
|
||||
'?notifypost=' + postId.replace('/', '-')
|
||||
_notifyPostArrival(baseDir, handle, postLink)
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ from utils import getActorLanguagesList
|
|||
from utils import removeHtml
|
||||
from utils import hasObjectDict
|
||||
from utils import getConfigParam
|
||||
from utils import localActorUrl
|
||||
from cache import getPersonFromCache
|
||||
|
||||
|
||||
|
@ -104,7 +105,7 @@ def understoodPostLanguage(baseDir: str, nickname: str, domain: str,
|
|||
return True
|
||||
if msgObject['contentMap'].get(systemLanguage):
|
||||
return True
|
||||
personUrl = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
personUrl = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
actorJson = getPersonFromCache(baseDir, personUrl, personCache, False)
|
||||
if not actorJson:
|
||||
print('WARN: unable to load actor to check languages ' + personUrl)
|
||||
|
|
9
like.py
9
like.py
|
@ -19,6 +19,7 @@ from utils import locatePost
|
|||
from utils import updateLikesCollection
|
||||
from utils import undoLikesCollectionEntry
|
||||
from utils import hasGroupType
|
||||
from utils import localActorUrl
|
||||
from posts import sendSignedJson
|
||||
from session import postJson
|
||||
from webfinger import webfingerHandle
|
||||
|
@ -75,7 +76,7 @@ def _like(recentPostsCache: {},
|
|||
newLikeJson = {
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
'type': 'Like',
|
||||
'actor': httpPrefix + '://' + fullDomain + '/users/' + nickname,
|
||||
'actor': localActorUrl(httpPrefix, nickname, fullDomain),
|
||||
'object': objectUrl
|
||||
}
|
||||
if ccList:
|
||||
|
@ -139,7 +140,7 @@ def likePost(recentPostsCache: {},
|
|||
"""
|
||||
likeDomain = getFullDomain(likeDomain, likePort)
|
||||
|
||||
actorLiked = httpPrefix + '://' + likeDomain + '/users/' + likeNickname
|
||||
actorLiked = localActorUrl(httpPrefix, likeNickname, likeDomain)
|
||||
objectUrl = actorLiked + '/statuses/' + str(likeStatusNumber)
|
||||
|
||||
return _like(recentPostsCache,
|
||||
|
@ -163,7 +164,7 @@ def sendLikeViaServer(baseDir: str, session,
|
|||
|
||||
fromDomainFull = getFullDomain(fromDomain, fromPort)
|
||||
|
||||
actor = httpPrefix + '://' + fromDomainFull + '/users/' + fromNickname
|
||||
actor = localActorUrl(httpPrefix, fromNickname, fromDomainFull)
|
||||
|
||||
newLikeJson = {
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
|
@ -241,7 +242,7 @@ def sendUndoLikeViaServer(baseDir: str, session,
|
|||
|
||||
fromDomainFull = getFullDomain(fromDomain, fromPort)
|
||||
|
||||
actor = httpPrefix + '://' + fromDomainFull + '/users/' + fromNickname
|
||||
actor = localActorUrl(httpPrefix, fromNickname, fromDomainFull)
|
||||
|
||||
newUndoLikeJson = {
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
|
|
|
@ -33,6 +33,7 @@ from utils import saveJson
|
|||
from utils import getStatusNumber
|
||||
from utils import clearFromPostCaches
|
||||
from utils import dangerousMarkup
|
||||
from utils import localActorUrl
|
||||
from inbox import storeHashTags
|
||||
from session import createSession
|
||||
|
||||
|
@ -547,8 +548,8 @@ def _convertRSStoActivityPub(baseDir: str, httpPrefix: str,
|
|||
|
||||
statusNumber, published = getStatusNumber(dateStr)
|
||||
newPostId = \
|
||||
httpPrefix + '://' + domain + \
|
||||
'/users/news/statuses/' + statusNumber
|
||||
localActorUrl(httpPrefix, 'news', domain) + \
|
||||
'/statuses/' + statusNumber
|
||||
|
||||
# file where the post is stored
|
||||
filename = basePath + '/' + newPostId.replace('/', '#') + '.json'
|
||||
|
@ -613,7 +614,7 @@ def _convertRSStoActivityPub(baseDir: str, httpPrefix: str,
|
|||
continue
|
||||
|
||||
idStr = \
|
||||
httpPrefix + '://' + domain + '/users/news' + \
|
||||
localActorUrl(httpPrefix, 'news', domain) + \
|
||||
'/statuses/' + statusNumber + '/replies'
|
||||
blog['news'] = True
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@ from utils import containsInvalidChars
|
|||
from utils import removeHtml
|
||||
from utils import isAccountDir
|
||||
from utils import acctDir
|
||||
from utils import localActorUrl
|
||||
from blocking import isBlockedDomain
|
||||
from blocking import isBlockedHashtag
|
||||
from filters import isFiltered
|
||||
|
@ -68,8 +69,9 @@ def rss2Header(httpPrefix: str,
|
|||
else:
|
||||
rssStr += \
|
||||
' <title>' + translate[title] + '</title>' + \
|
||||
' <link>' + httpPrefix + '://' + domainFull + \
|
||||
'/users/' + nickname + '/rss.xml' + '</link>'
|
||||
' <link>' + \
|
||||
localActorUrl(httpPrefix, nickname, domainFull) + \
|
||||
'/rss.xml' + '</link>'
|
||||
return rssStr
|
||||
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ from utils import isFeaturedWriter
|
|||
from utils import loadJson
|
||||
from utils import saveJson
|
||||
from utils import acctDir
|
||||
from utils import localActorUrl
|
||||
from blocking import isBlockedDomain
|
||||
from blocking import outboxBlock
|
||||
from blocking import outboxUndoBlock
|
||||
|
@ -100,8 +101,8 @@ def _outboxPersonReceiveUpdate(recentPostsCache: {},
|
|||
if debug:
|
||||
print('DEBUG: c2s actor update id is not a string')
|
||||
return
|
||||
actor = \
|
||||
httpPrefix + '://' + getFullDomain(domain, port) + '/users/' + nickname
|
||||
domainFull = getFullDomain(domain, port)
|
||||
actor = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
if len(messageJson['to']) != 1:
|
||||
if debug:
|
||||
print('DEBUG: c2s actor update - to does not contain one actor ' +
|
||||
|
@ -393,7 +394,7 @@ def postMessageToOutbox(session, translate: {},
|
|||
if messageJson['type'] in indexedActivities:
|
||||
indexes = [outboxName, "inbox"]
|
||||
selfActor = \
|
||||
httpPrefix + '://' + domainFull + '/users/' + postToNickname
|
||||
localActorUrl(httpPrefix, postToNickname, domainFull)
|
||||
for boxNameIndex in indexes:
|
||||
if not boxNameIndex:
|
||||
continue
|
||||
|
|
|
@ -54,6 +54,7 @@ from utils import isImageFile
|
|||
from utils import acctDir
|
||||
from utils import getUserPaths
|
||||
from utils import getGroupPaths
|
||||
from utils import localActorUrl
|
||||
from session import createSession
|
||||
from session import getJson
|
||||
from webfinger import webfingerHandle
|
||||
|
@ -138,8 +139,8 @@ def setProfileImage(baseDir: str, httpPrefix: str, nickname: str, domain: str,
|
|||
if personJson:
|
||||
personJson[iconFilenameBase]['mediaType'] = mediaType
|
||||
personJson[iconFilenameBase]['url'] = \
|
||||
httpPrefix + '://' + fullDomain + '/users/' + \
|
||||
nickname + '/' + iconFilename
|
||||
localActorUrl(httpPrefix, nickname, fullDomain) + \
|
||||
'/' + iconFilename
|
||||
saveJson(personJson, personFilename)
|
||||
|
||||
cmd = \
|
||||
|
@ -251,7 +252,7 @@ def _createPersonBase(baseDir: str, nickname: str, domain: str, port: int,
|
|||
# Enable follower approval by default
|
||||
approveFollowers = manualFollowerApproval
|
||||
personName = nickname
|
||||
personId = httpPrefix + '://' + domain + '/users/' + nickname
|
||||
personId = localActorUrl(httpPrefix, nickname, domain)
|
||||
inboxStr = personId + '/inbox'
|
||||
personUrl = httpPrefix + '://' + domain + '/@' + personName
|
||||
if nickname == 'inbox':
|
||||
|
|
3
pgp.py
3
pgp.py
|
@ -15,6 +15,7 @@ from utils import containsPGPPublicKey
|
|||
from utils import isPGPEncrypted
|
||||
from utils import getFullDomain
|
||||
from utils import getStatusNumber
|
||||
from utils import localActorUrl
|
||||
from webfinger import webfingerHandle
|
||||
from posts import getPersonBox
|
||||
from auth import createBasicAuthHeader
|
||||
|
@ -489,7 +490,7 @@ def pgpPublicKeyUpload(baseDir: str, session,
|
|||
if debug:
|
||||
print('Actor for ' + handle + ' obtained')
|
||||
|
||||
actor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
actor = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
handle = actor.replace('/users/', '/@')
|
||||
|
||||
# check that this looks like the correct actor
|
||||
|
|
111
posts.py
111
posts.py
|
@ -63,6 +63,7 @@ from utils import votesOnNewswireItem
|
|||
from utils import removeHtml
|
||||
from utils import dangerousMarkup
|
||||
from utils import acctDir
|
||||
from utils import localActorUrl
|
||||
from media import attachMedia
|
||||
from media import replaceYouTube
|
||||
from content import limitRepeatedWords
|
||||
|
@ -292,7 +293,7 @@ def getPersonBox(baseDir: str, session, wfRequest: {},
|
|||
}
|
||||
else:
|
||||
# the final fallback is a mastodon style url
|
||||
personUrl = httpPrefix + '://' + domain + '/users/' + nickname
|
||||
personUrl = localActorUrl(httpPrefix, nickname, domain)
|
||||
if not personUrl:
|
||||
return None, None, None, None, None, None, None
|
||||
|
||||
|
@ -766,7 +767,7 @@ def savePostToBox(baseDir: str, httpPrefix: str, postId: str,
|
|||
if not postId:
|
||||
statusNumber, published = getStatusNumber()
|
||||
postId = \
|
||||
httpPrefix + '://' + originalDomain + '/users/' + nickname + \
|
||||
localActorUrl(httpPrefix, nickname, originalDomain) + \
|
||||
'/statuses/' + statusNumber
|
||||
postJsonObject['id'] = postId + '/activity'
|
||||
if hasObjectDict(postJsonObject):
|
||||
|
@ -919,14 +920,14 @@ def _createPostS2S(baseDir: str, nickname: str, domain: str, port: int,
|
|||
conversationId: str, lowBandwidth: bool) -> {}:
|
||||
"""Creates a new server-to-server post
|
||||
"""
|
||||
actorUrl = httpPrefix + '://' + domain + '/users/' + nickname
|
||||
actorUrl = localActorUrl(httpPrefix, nickname, domain)
|
||||
idStr = \
|
||||
httpPrefix + '://' + domain + '/users/' + nickname + \
|
||||
localActorUrl(httpPrefix, nickname, domain) + \
|
||||
'/statuses/' + statusNumber + '/replies'
|
||||
newPostUrl = \
|
||||
httpPrefix + '://' + domain + '/@' + nickname + '/' + statusNumber
|
||||
newPostAttributedTo = \
|
||||
httpPrefix + '://' + domain + '/users/' + nickname
|
||||
localActorUrl(httpPrefix, nickname, domain)
|
||||
if not conversationId:
|
||||
conversationId = newPostId
|
||||
newPost = {
|
||||
|
@ -991,8 +992,9 @@ def _createPostC2S(baseDir: str, nickname: str, domain: str, port: int,
|
|||
conversationId: str, lowBandwidth: str) -> {}:
|
||||
"""Creates a new client-to-server post
|
||||
"""
|
||||
domainFull = getFullDomain(domain, port)
|
||||
idStr = \
|
||||
httpPrefix + '://' + domain + '/users/' + nickname + \
|
||||
localActorUrl(httpPrefix, nickname, domainFull) + \
|
||||
'/statuses/' + statusNumber + '/replies'
|
||||
newPostUrl = \
|
||||
httpPrefix + '://' + domain + '/@' + nickname + '/' + statusNumber
|
||||
|
@ -1007,7 +1009,7 @@ def _createPostC2S(baseDir: str, nickname: str, domain: str, port: int,
|
|||
'inReplyTo': inReplyTo,
|
||||
'published': published,
|
||||
'url': newPostUrl,
|
||||
'attributedTo': httpPrefix + '://' + domain + '/users/' + nickname,
|
||||
'attributedTo': localActorUrl(httpPrefix, nickname, domainFull),
|
||||
'to': toRecipients,
|
||||
'cc': toCC,
|
||||
'sensitive': sensitive,
|
||||
|
@ -1205,8 +1207,8 @@ def _createPostBase(baseDir: str, nickname: str, domain: str, port: int,
|
|||
|
||||
statusNumber, published = getStatusNumber()
|
||||
newPostId = \
|
||||
httpPrefix + '://' + domain + '/users/' + \
|
||||
nickname + '/statuses/' + statusNumber
|
||||
localActorUrl(httpPrefix, nickname, domain) + \
|
||||
'/statuses/' + statusNumber
|
||||
|
||||
sensitive = False
|
||||
summary = None
|
||||
|
@ -1347,7 +1349,7 @@ def outboxMessageCreateWrap(httpPrefix: str,
|
|||
if messageJson.get('published'):
|
||||
published = messageJson['published']
|
||||
newPostId = \
|
||||
httpPrefix + '://' + domain + '/users/' + nickname + \
|
||||
localActorUrl(httpPrefix, nickname, domain) + \
|
||||
'/statuses/' + statusNumber
|
||||
cc = []
|
||||
if messageJson.get('cc'):
|
||||
|
@ -1356,7 +1358,7 @@ def outboxMessageCreateWrap(httpPrefix: str,
|
|||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
'id': newPostId + '/activity',
|
||||
'type': 'Create',
|
||||
'actor': httpPrefix + '://' + domain + '/users/' + nickname,
|
||||
'actor': localActorUrl(httpPrefix, nickname, domain),
|
||||
'published': published,
|
||||
'to': messageJson['to'],
|
||||
'cc': cc,
|
||||
|
@ -1366,7 +1368,7 @@ def outboxMessageCreateWrap(httpPrefix: str,
|
|||
newPost['object']['url'] = \
|
||||
httpPrefix + '://' + domain + '/@' + nickname + '/' + statusNumber
|
||||
newPost['object']['atomUri'] = \
|
||||
httpPrefix + '://' + domain + '/users/' + nickname + \
|
||||
localActorUrl(httpPrefix, nickname, domain) + \
|
||||
'/statuses/' + statusNumber
|
||||
return newPost
|
||||
|
||||
|
@ -1395,8 +1397,8 @@ def _postIsAddressedToFollowers(baseDir: str,
|
|||
if postJsonObject.get('cc'):
|
||||
ccList = postJsonObject['cc']
|
||||
|
||||
followersUrl = httpPrefix + '://' + domainFull + '/users/' + \
|
||||
nickname + '/followers'
|
||||
followersUrl = \
|
||||
localActorUrl(httpPrefix, nickname, domainFull) + '/followers'
|
||||
|
||||
# does the followers url exist in 'to' or 'cc' lists?
|
||||
addressedToFollowers = False
|
||||
|
@ -1434,7 +1436,7 @@ def getPinnedPostAsJson(baseDir: str, httpPrefix: str,
|
|||
accountDir = acctDir(baseDir, nickname, domain)
|
||||
pinnedFilename = accountDir + '/pinToProfile.txt'
|
||||
pinnedPostJson = {}
|
||||
actor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
actor = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
if os.path.isfile(pinnedFilename):
|
||||
pinnedContent = None
|
||||
with open(pinnedFilename, 'r') as pinFile:
|
||||
|
@ -1479,7 +1481,7 @@ def jsonPinPost(baseDir: str, httpPrefix: str,
|
|||
if pinnedPostJson:
|
||||
itemsList = [pinnedPostJson]
|
||||
|
||||
actor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
actor = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
return {
|
||||
'@context': [
|
||||
'https://www.w3.org/ns/activitystreams',
|
||||
|
@ -1559,10 +1561,10 @@ def createPublicPost(baseDir: str,
|
|||
anonymousParticipationEnabled = None
|
||||
eventStatus = None
|
||||
ticketUrl = None
|
||||
localActor = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
return _createPostBase(baseDir, nickname, domain, port,
|
||||
'https://www.w3.org/ns/activitystreams#Public',
|
||||
httpPrefix + '://' + domainFull + '/users/' +
|
||||
nickname + '/followers',
|
||||
localActor + '/followers',
|
||||
httpPrefix, content, followersOnly, saveToFile,
|
||||
clientToServer, commentsEnabled,
|
||||
attachImageFilename, mediaType,
|
||||
|
@ -1680,11 +1682,11 @@ def createQuestionPost(baseDir: str,
|
|||
"""Question post with multiple choice options
|
||||
"""
|
||||
domainFull = getFullDomain(domain, port)
|
||||
localActor = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
messageJson = \
|
||||
_createPostBase(baseDir, nickname, domain, port,
|
||||
'https://www.w3.org/ns/activitystreams#Public',
|
||||
httpPrefix + '://' + domainFull + '/users/' +
|
||||
nickname + '/followers',
|
||||
localActor + '/followers',
|
||||
httpPrefix, content, followersOnly, saveToFile,
|
||||
clientToServer, commentsEnabled,
|
||||
attachImageFilename, mediaType,
|
||||
|
@ -1729,9 +1731,9 @@ def createUnlistedPost(baseDir: str,
|
|||
"""Unlisted post. This has the #Public and followers links inverted.
|
||||
"""
|
||||
domainFull = getFullDomain(domain, port)
|
||||
localActor = localActorUrl(httpPrefix, domainFull, nickname)
|
||||
return _createPostBase(baseDir, nickname, domain, port,
|
||||
httpPrefix + '://' + domainFull + '/users/' +
|
||||
nickname + '/followers',
|
||||
localActor + '/followers',
|
||||
'https://www.w3.org/ns/activitystreams#Public',
|
||||
httpPrefix, content, followersOnly, saveToFile,
|
||||
clientToServer, commentsEnabled,
|
||||
|
@ -1762,9 +1764,9 @@ def createFollowersOnlyPost(baseDir: str,
|
|||
"""Followers only post
|
||||
"""
|
||||
domainFull = getFullDomain(domain, port)
|
||||
localActor = localActorUrl(httpPrefix, domainFull, nickname)
|
||||
return _createPostBase(baseDir, nickname, domain, port,
|
||||
httpPrefix + '://' + domainFull + '/users/' +
|
||||
nickname + '/followers',
|
||||
localActor + '/followers',
|
||||
None,
|
||||
httpPrefix, content, followersOnly, saveToFile,
|
||||
clientToServer, commentsEnabled,
|
||||
|
@ -1808,8 +1810,7 @@ def getMentionedPeople(baseDir: str, httpPrefix: str,
|
|||
if not validNickname(mentionedDomain, mentionedNickname):
|
||||
continue
|
||||
actor = \
|
||||
httpPrefix + '://' + handle.split('@')[1] + \
|
||||
'/users/' + mentionedNickname
|
||||
localActorUrl(httpPrefix, mentionedNickname, handle.split('@')[1])
|
||||
mentions.append(actor)
|
||||
return mentions
|
||||
|
||||
|
@ -1898,8 +1899,9 @@ def createReportPost(baseDir: str,
|
|||
if line.startswith('@'):
|
||||
line = line[1:]
|
||||
if '@' in line:
|
||||
moderatorActor = httpPrefix + '://' + domainFull + \
|
||||
'/users/' + line.split('@')[0]
|
||||
nick = line.split('@')[0]
|
||||
moderatorActor = \
|
||||
localActorUrl(httpPrefix, nick, domainFull)
|
||||
if moderatorActor not in moderatorsList:
|
||||
moderatorsList.append(moderatorActor)
|
||||
continue
|
||||
|
@ -1910,16 +1912,16 @@ def createReportPost(baseDir: str,
|
|||
moderatorsList.append(line)
|
||||
else:
|
||||
if '/' not in line:
|
||||
moderatorActor = httpPrefix + '://' + domainFull + \
|
||||
'/users/' + line
|
||||
moderatorActor = \
|
||||
localActorUrl(httpPrefix, line, domainFull)
|
||||
if moderatorActor not in moderatorsList:
|
||||
moderatorsList.append(moderatorActor)
|
||||
if len(moderatorsList) == 0:
|
||||
# if there are no moderators then the admin becomes the moderator
|
||||
adminNickname = getConfigParam(baseDir, 'admin')
|
||||
if adminNickname:
|
||||
moderatorsList.append(httpPrefix + '://' + domainFull +
|
||||
'/users/' + adminNickname)
|
||||
localActor = localActorUrl(httpPrefix, adminNickname, domainFull)
|
||||
moderatorsList.append(localActor)
|
||||
if not moderatorsList:
|
||||
return None
|
||||
if debug:
|
||||
|
@ -2236,18 +2238,17 @@ def sendPostViaServer(projectVersion: str,
|
|||
clientToServer = True
|
||||
if toDomain.lower().endswith('public'):
|
||||
toPersonId = 'https://www.w3.org/ns/activitystreams#Public'
|
||||
cc = httpPrefix + '://' + fromDomainFull + '/users/' + \
|
||||
fromNickname + '/followers'
|
||||
cc = localActorUrl(httpPrefix, fromNickname, fromDomainFull) + \
|
||||
'/followers'
|
||||
else:
|
||||
if toDomain.lower().endswith('followers') or \
|
||||
toDomain.lower().endswith('followersonly'):
|
||||
toPersonId = \
|
||||
httpPrefix + '://' + \
|
||||
fromDomainFull + '/users/' + fromNickname + '/followers'
|
||||
localActorUrl(httpPrefix, fromNickname, fromDomainFull) + \
|
||||
'/followers'
|
||||
else:
|
||||
toDomainFull = getFullDomain(toDomain, toPort)
|
||||
toPersonId = httpPrefix + '://' + toDomainFull + \
|
||||
'/users/' + toNickname
|
||||
toPersonId = localActorUrl(httpPrefix, toNickname, toDomainFull)
|
||||
|
||||
postJsonObject = \
|
||||
_createPostBase(baseDir,
|
||||
|
@ -3086,7 +3087,7 @@ def createModeration(baseDir: str, nickname: str, domain: str, port: int,
|
|||
pageNumber = 1
|
||||
|
||||
pageStr = '?page=' + str(pageNumber)
|
||||
boxUrl = httpPrefix + '://' + domain + '/users/' + nickname + '/' + boxname
|
||||
boxUrl = localActorUrl(httpPrefix, nickname, domain) + '/' + boxname
|
||||
boxHeader = {
|
||||
'@context': 'https://www.w3.org/ns/activitystreams',
|
||||
'first': boxUrl + '?page=true',
|
||||
|
@ -3362,7 +3363,7 @@ def _createBoxIndexed(recentPostsCache: {},
|
|||
originalDomain = domain
|
||||
domain = getFullDomain(domain, port)
|
||||
|
||||
boxActor = httpPrefix + '://' + domain + '/users/' + nickname
|
||||
boxActor = localActorUrl(httpPrefix, nickname, domain)
|
||||
|
||||
pageStr = '?page=true'
|
||||
if pageNumber:
|
||||
|
@ -3372,7 +3373,7 @@ def _createBoxIndexed(recentPostsCache: {},
|
|||
pageStr = '?page=' + str(pageNumber)
|
||||
except BaseException:
|
||||
pass
|
||||
boxUrl = httpPrefix + '://' + domain + '/users/' + nickname + '/' + boxname
|
||||
boxUrl = localActorUrl(httpPrefix, nickname, domain) + '/' + boxname
|
||||
boxHeader = {
|
||||
'@context': 'https://www.w3.org/ns/activitystreams',
|
||||
'first': boxUrl + '?page=true',
|
||||
|
@ -3493,8 +3494,8 @@ def _createBoxIndexed(recentPostsCache: {},
|
|||
if lastPage < 1:
|
||||
lastPage = 1
|
||||
boxHeader['last'] = \
|
||||
httpPrefix + '://' + domain + '/users/' + \
|
||||
nickname + '/' + boxname + '?page=' + str(lastPage)
|
||||
localActorUrl(httpPrefix, nickname, domain) + \
|
||||
'/' + boxname + '?page=' + str(lastPage)
|
||||
|
||||
if headerOnly:
|
||||
boxHeader['totalItems'] = len(postsInBox)
|
||||
|
@ -3502,13 +3503,13 @@ def _createBoxIndexed(recentPostsCache: {},
|
|||
if pageNumber > 1:
|
||||
prevPageStr = str(pageNumber - 1)
|
||||
boxHeader['prev'] = \
|
||||
httpPrefix + '://' + domain + '/users/' + \
|
||||
nickname + '/' + boxname + '?page=' + prevPageStr
|
||||
localActorUrl(httpPrefix, nickname, domain) + \
|
||||
'/' + boxname + '?page=' + prevPageStr
|
||||
|
||||
nextPageStr = str(pageNumber + 1)
|
||||
boxHeader['next'] = \
|
||||
httpPrefix + '://' + domain + '/users/' + \
|
||||
nickname + '/' + boxname + '?page=' + nextPageStr
|
||||
localActorUrl(httpPrefix, nickname, domain) + \
|
||||
'/' + boxname + '?page=' + nextPageStr
|
||||
return boxHeader
|
||||
|
||||
for postStr in postsInBox:
|
||||
|
@ -4358,11 +4359,10 @@ def sendBlockViaServer(baseDir: str, session,
|
|||
|
||||
fromDomainFull = getFullDomain(fromDomain, fromPort)
|
||||
|
||||
blockActor = localActorUrl(httpPrefix, fromNickname, fromDomainFull)
|
||||
toUrl = 'https://www.w3.org/ns/activitystreams#Public'
|
||||
ccUrl = httpPrefix + '://' + fromDomainFull + '/users/' + \
|
||||
fromNickname + '/followers'
|
||||
ccUrl = blockActor + '/followers'
|
||||
|
||||
blockActor = httpPrefix + '://' + fromDomainFull + '/users/' + fromNickname
|
||||
newBlockJson = {
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
'type': 'Block',
|
||||
|
@ -4439,7 +4439,7 @@ def sendMuteViaServer(baseDir: str, session,
|
|||
|
||||
fromDomainFull = getFullDomain(fromDomain, fromPort)
|
||||
|
||||
actor = httpPrefix + '://' + fromDomainFull + '/users/' + fromNickname
|
||||
actor = localActorUrl(httpPrefix, fromNickname, fromDomainFull)
|
||||
handle = actor.replace('/users/', '/@')
|
||||
|
||||
newMuteJson = {
|
||||
|
@ -4515,7 +4515,7 @@ def sendUndoMuteViaServer(baseDir: str, session,
|
|||
|
||||
fromDomainFull = getFullDomain(fromDomain, fromPort)
|
||||
|
||||
actor = httpPrefix + '://' + fromDomainFull + '/users/' + fromNickname
|
||||
actor = localActorUrl(httpPrefix, fromNickname, fromDomainFull)
|
||||
handle = actor.replace('/users/', '/@')
|
||||
|
||||
undoMuteJson = {
|
||||
|
@ -4597,11 +4597,10 @@ def sendUndoBlockViaServer(baseDir: str, session,
|
|||
|
||||
fromDomainFull = getFullDomain(fromDomain, fromPort)
|
||||
|
||||
blockActor = localActorUrl(httpPrefix, fromNickname, fromDomainFull)
|
||||
toUrl = 'https://www.w3.org/ns/activitystreams#Public'
|
||||
ccUrl = httpPrefix + '://' + fromDomainFull + '/users/' + \
|
||||
fromNickname + '/followers'
|
||||
ccUrl = blockActor + '/followers'
|
||||
|
||||
blockActor = httpPrefix + '://' + fromDomainFull + '/users/' + fromNickname
|
||||
newBlockJson = {
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
'type': 'Undo',
|
||||
|
@ -4705,7 +4704,7 @@ def c2sBoxJson(baseDir: str, session,
|
|||
return None
|
||||
|
||||
domainFull = getFullDomain(domain, port)
|
||||
actor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
actor = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
|
||||
authHeader = createBasicAuthHeader(nickname, password)
|
||||
|
||||
|
|
42
shares.py
42
shares.py
|
@ -37,6 +37,7 @@ from utils import acctDir
|
|||
from utils import isfloat
|
||||
from utils import getCategoryTypes
|
||||
from utils import getSharesFilesList
|
||||
from utils import localActorUrl
|
||||
from media import processMetaData
|
||||
from media import convertImageToLowBandwidth
|
||||
from filters import isFilteredGlobally
|
||||
|
@ -274,14 +275,13 @@ def _indicateNewShareAvailable(baseDir: str, httpPrefix: str,
|
|||
if isBlocked(baseDir, accountNickname, domain,
|
||||
nickname, domain, None):
|
||||
continue
|
||||
localActor = localActorUrl(httpPrefix, accountNickname, domainFull)
|
||||
try:
|
||||
with open(newShareFile, 'w+') as fp:
|
||||
if sharesFileType == 'shares':
|
||||
fp.write(httpPrefix + '://' + domainFull +
|
||||
'/users/' + accountNickname + '/tlshares')
|
||||
fp.write(localActor + '/tlshares')
|
||||
else:
|
||||
fp.write(httpPrefix + '://' + domainFull +
|
||||
'/users/' + accountNickname + '/tlwanted')
|
||||
fp.write(localActor + '/tlwanted')
|
||||
except BaseException:
|
||||
pass
|
||||
break
|
||||
|
@ -313,7 +313,7 @@ def addShare(baseDir: str,
|
|||
durationSec = _addShareDurationSec(duration, published)
|
||||
|
||||
domainFull = getFullDomain(domain, port)
|
||||
actor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
actor = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
itemID = _getValidSharedItemID(actor, displayName)
|
||||
dfcId = _getshareDfcId(baseDir, systemLanguage,
|
||||
itemType, itemCategory, translate)
|
||||
|
@ -474,7 +474,7 @@ def getSharesFeedForPerson(baseDir: str,
|
|||
sharesJson = loadJson(sharesFilename)
|
||||
if sharesJson:
|
||||
noOfShares = len(sharesJson.items())
|
||||
idStr = httpPrefix + '://' + domain + '/users/' + nickname
|
||||
idStr = localActorUrl(httpPrefix, nickname, domain)
|
||||
shares = {
|
||||
'@context': 'https://www.w3.org/ns/activitystreams',
|
||||
'first': idStr + '/' + sharesFileType + '?page=1',
|
||||
|
@ -488,7 +488,7 @@ def getSharesFeedForPerson(baseDir: str,
|
|||
pageNumber = 1
|
||||
|
||||
nextPageNumber = int(pageNumber + 1)
|
||||
idStr = httpPrefix + '://' + domain + '/users/' + nickname
|
||||
idStr = localActorUrl(httpPrefix, nickname, domain)
|
||||
shares = {
|
||||
'@context': 'https://www.w3.org/ns/activitystreams',
|
||||
'id': idStr + '/' + sharesFileType + '?page=' + str(pageNumber),
|
||||
|
@ -521,7 +521,7 @@ def getSharesFeedForPerson(baseDir: str,
|
|||
lastPage = 1
|
||||
if nextPageNumber > lastPage:
|
||||
shares['next'] = \
|
||||
httpPrefix + '://' + domain + '/users/' + nickname + \
|
||||
localActorUrl(httpPrefix, nickname, domain) + \
|
||||
'/' + sharesFileType + '?page=' + str(lastPage)
|
||||
return shares
|
||||
|
||||
|
@ -552,11 +552,10 @@ def sendShareViaServer(baseDir, session,
|
|||
|
||||
fromDomainFull = getFullDomain(fromDomain, fromPort)
|
||||
|
||||
actor = localActorUrl(httpPrefix, fromNickname, fromDomainFull)
|
||||
toUrl = 'https://www.w3.org/ns/activitystreams#Public'
|
||||
ccUrl = httpPrefix + '://' + fromDomainFull + \
|
||||
'/users/' + fromNickname + '/followers'
|
||||
ccUrl = actor + '/followers'
|
||||
|
||||
actor = httpPrefix + '://' + fromDomainFull + '/users/' + fromNickname
|
||||
newShareJson = {
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
'type': 'Add',
|
||||
|
@ -662,11 +661,10 @@ def sendUndoShareViaServer(baseDir: str, session,
|
|||
|
||||
fromDomainFull = getFullDomain(fromDomain, fromPort)
|
||||
|
||||
actor = localActorUrl(httpPrefix, fromNickname, fromDomainFull)
|
||||
toUrl = 'https://www.w3.org/ns/activitystreams#Public'
|
||||
ccUrl = httpPrefix + '://' + fromDomainFull + \
|
||||
'/users/' + fromNickname + '/followers'
|
||||
ccUrl = actor + '/followers'
|
||||
|
||||
actor = httpPrefix + '://' + fromDomainFull + '/users/' + fromNickname
|
||||
undoShareJson = {
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
'type': 'Remove',
|
||||
|
@ -766,11 +764,10 @@ def sendWantedViaServer(baseDir, session,
|
|||
|
||||
fromDomainFull = getFullDomain(fromDomain, fromPort)
|
||||
|
||||
actor = localActorUrl(httpPrefix, fromNickname, fromDomainFull)
|
||||
toUrl = 'https://www.w3.org/ns/activitystreams#Public'
|
||||
ccUrl = httpPrefix + '://' + fromDomainFull + \
|
||||
'/users/' + fromNickname + '/followers'
|
||||
ccUrl = actor + '/followers'
|
||||
|
||||
actor = httpPrefix + '://' + fromDomainFull + '/users/' + fromNickname
|
||||
newShareJson = {
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
'type': 'Add',
|
||||
|
@ -876,11 +873,10 @@ def sendUndoWantedViaServer(baseDir: str, session,
|
|||
|
||||
fromDomainFull = getFullDomain(fromDomain, fromPort)
|
||||
|
||||
actor = localActorUrl(httpPrefix, fromNickname, fromDomainFull)
|
||||
toUrl = 'https://www.w3.org/ns/activitystreams#Public'
|
||||
ccUrl = httpPrefix + '://' + fromDomainFull + \
|
||||
'/users/' + fromNickname + '/followers'
|
||||
ccUrl = actor + '/followers'
|
||||
|
||||
actor = httpPrefix + '://' + fromDomainFull + '/users/' + fromNickname
|
||||
undoShareJson = {
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
'type': 'Remove',
|
||||
|
@ -973,7 +969,7 @@ def getSharedItemsCatalogViaServer(baseDir, session,
|
|||
'Accept': 'application/json'
|
||||
}
|
||||
domainFull = getFullDomain(domain, port)
|
||||
url = httpPrefix + '://' + domainFull + '/users/' + nickname + '/catalog'
|
||||
url = localActorUrl(httpPrefix, nickname, domainFull) + '/catalog'
|
||||
if debug:
|
||||
print('Shared items catalog request to: ' + url)
|
||||
catalogJson = getJson(session, url, headers, None, debug,
|
||||
|
@ -1139,7 +1135,7 @@ def sharesCatalogAccountEndpoint(baseDir: str, httpPrefix: str,
|
|||
"http://static.datafoodconsortium.org/ontologies/DFC_FullModel.owl#"
|
||||
dfcPtUrl = \
|
||||
"http://static.datafoodconsortium.org/data/productTypes.rdf#"
|
||||
owner = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
owner = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
if sharesFileType == 'shares':
|
||||
dfcInstanceId = owner + '/catalog'
|
||||
else:
|
||||
|
@ -1248,7 +1244,7 @@ def sharesCatalogEndpoint(baseDir: str, httpPrefix: str,
|
|||
continue
|
||||
nickname = acct.split('@')[0]
|
||||
domain = acct.split('@')[1]
|
||||
owner = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
owner = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
|
||||
sharesFilename = \
|
||||
acctDir(baseDir, nickname, domain) + '/' + \
|
||||
|
|
|
@ -19,6 +19,7 @@ from utils import loadJson
|
|||
from utils import getOccupationSkills
|
||||
from utils import setOccupationSkillsList
|
||||
from utils import acctDir
|
||||
from utils import localActorUrl
|
||||
|
||||
|
||||
def setSkillsFromDict(actorJson: {}, skillsDict: {}) -> []:
|
||||
|
@ -185,7 +186,7 @@ def sendSkillViaServer(baseDir: str, session, nickname: str, password: str,
|
|||
|
||||
domainFull = getFullDomain(domain, port)
|
||||
|
||||
actor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
actor = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
toUrl = actor
|
||||
ccUrl = actor + '/followers'
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@ from utils import saveJson
|
|||
from utils import isPGPEncrypted
|
||||
from utils import hasObjectDict
|
||||
from utils import acctDir
|
||||
from utils import localActorUrl
|
||||
from content import htmlReplaceQuoteMarks
|
||||
|
||||
speakerRemoveChars = ('.\n', '. ', ',', ';', '?', '!')
|
||||
|
@ -452,7 +453,7 @@ def _postToSpeakerJson(baseDir: str, httpPrefix: str,
|
|||
img['name'] + '. '
|
||||
|
||||
isDirect = isDM(postJsonObject)
|
||||
actor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
actor = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
replyToYou = isReply(postJsonObject, actor)
|
||||
|
||||
published = ''
|
||||
|
|
6
utils.py
6
utils.py
|
@ -28,6 +28,12 @@ invalidCharacters = (
|
|||
)
|
||||
|
||||
|
||||
def localActorUrl(httpPrefix: str, nickname: str, domainFull: str) -> str:
|
||||
"""Returns the url for an actor on this instance
|
||||
"""
|
||||
return httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
|
||||
|
||||
def getActorLanguagesList(actorJson: {}) -> []:
|
||||
"""Returns a list containing languages used by the given actor
|
||||
"""
|
||||
|
|
|
@ -21,6 +21,7 @@ from utils import weekDayOfMonthStart
|
|||
from utils import getAltPath
|
||||
from utils import removeDomainPort
|
||||
from utils import acctDir
|
||||
from utils import localActorUrl
|
||||
from happening import getTodaysEvents
|
||||
from happening import getCalendarEvents
|
||||
from webapp_utils import htmlHeaderWithExternalStyle
|
||||
|
@ -37,7 +38,7 @@ def htmlCalendarDeleteConfirm(cssCache: {}, translate: {}, baseDir: str,
|
|||
"""Shows a screen asking to confirm the deletion of a calendar event
|
||||
"""
|
||||
nickname = getNicknameFromActor(path)
|
||||
actor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
actor = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
domain, port = getDomainFromActor(actor)
|
||||
messageId = actor + '/statuses/' + postId
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@ from utils import getConfigParam
|
|||
from utils import getNicknameFromActor
|
||||
from utils import isEditor
|
||||
from utils import removeDomainPort
|
||||
from utils import localActorUrl
|
||||
from webapp_utils import sharesTimelineJson
|
||||
from webapp_utils import htmlPostSeparator
|
||||
from webapp_utils import getLeftImageFile
|
||||
|
@ -37,7 +38,7 @@ def _getLeftColumnShares(baseDir: str,
|
|||
"""get any shares and turn them into the left column links format
|
||||
"""
|
||||
pageNumber = 1
|
||||
actor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
actor = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
# NOTE: this could potentially be slow if the number of federated
|
||||
# shared items is large
|
||||
sharesJson, lastPage = \
|
||||
|
@ -75,7 +76,7 @@ def _getLeftColumnWanted(baseDir: str,
|
|||
"""get any wanted items and turn them into the left column links format
|
||||
"""
|
||||
pageNumber = 1
|
||||
actor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
actor = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
# NOTE: this could potentially be slow if the number of federated
|
||||
# wanted items is large
|
||||
sharesJson, lastPage = \
|
||||
|
|
|
@ -15,6 +15,7 @@ from utils import loadJson
|
|||
from utils import getNicknameFromActor
|
||||
from utils import getDomainFromActor
|
||||
from utils import getConfigParam
|
||||
from utils import localActorUrl
|
||||
from posts import downloadFollowCollection
|
||||
from posts import getPublicPostInfo
|
||||
from posts import isModerator
|
||||
|
@ -94,7 +95,7 @@ def htmlAccountInfo(cssCache: {}, translate: {},
|
|||
|
||||
searchHandle = searchNickname + '@' + searchDomain
|
||||
searchActor = \
|
||||
httpPrefix + '://' + searchDomain + '/users/' + searchNickname
|
||||
localActorUrl(httpPrefix, searchNickname, searchDomain)
|
||||
infoForm += \
|
||||
'<center><h1><a href="/users/' + nickname + '/moderation">' + \
|
||||
translate['Account Information'] + ':</a> <a href="' + searchActor + \
|
||||
|
|
|
@ -48,6 +48,7 @@ from utils import removeIdEnding
|
|||
from utils import getNicknameFromActor
|
||||
from utils import getDomainFromActor
|
||||
from utils import acctDir
|
||||
from utils import localActorUrl
|
||||
from content import limitRepeatedWords
|
||||
from content import replaceEmojiFromTags
|
||||
from content import htmlReplaceQuoteMarks
|
||||
|
@ -1547,8 +1548,7 @@ def individualPostAsHtml(allowDownloads: bool,
|
|||
postJsonObject['object']['content']
|
||||
|
||||
domainFull = getFullDomain(domain, port)
|
||||
personUrl = \
|
||||
httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
personUrl = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
actorJson = \
|
||||
getPersonFromCache(baseDir, personUrl, personCache, False)
|
||||
languagesUnderstood = []
|
||||
|
|
|
@ -24,6 +24,7 @@ from utils import getConfigParam
|
|||
from utils import getImageFormats
|
||||
from utils import acctDir
|
||||
from utils import getSupportedLanguages
|
||||
from utils import localActorUrl
|
||||
from languages import getActorLanguages
|
||||
from skills import getSkills
|
||||
from theme import getThemesList
|
||||
|
@ -345,7 +346,7 @@ def _getProfileHeader(baseDir: str, httpPrefix: str,
|
|||
otherAccountsHtml = \
|
||||
' <p>' + translate['Other accounts'] + ': '
|
||||
|
||||
actor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
actor = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
ctr = 0
|
||||
if isinstance(alsoKnownAs, list):
|
||||
for altActor in alsoKnownAs:
|
||||
|
@ -654,10 +655,10 @@ def htmlProfile(rssIconAtTop: bool,
|
|||
if '://' in followerHandle:
|
||||
followerActor = followerHandle
|
||||
else:
|
||||
nick = followerHandle.split('@')[0]
|
||||
dom = followerHandle.split('@')[1]
|
||||
followerActor = \
|
||||
httpPrefix + '://' + \
|
||||
followerHandle.split('@')[1] + \
|
||||
'/users/' + followerHandle.split('@')[0]
|
||||
localActorUrl(httpPrefix, nick, dom)
|
||||
basePath = '/users/' + nickname
|
||||
followApprovalsSection += '<div class="container">'
|
||||
followApprovalsSection += \
|
||||
|
|
|
@ -25,6 +25,7 @@ from utils import firstParagraphFromString
|
|||
from utils import searchBoxPosts
|
||||
from utils import getAltPath
|
||||
from utils import acctDir
|
||||
from utils import localActorUrl
|
||||
from skills import noOfActorSkills
|
||||
from skills import getSkillsFromList
|
||||
from categories import getHashtagCategory
|
||||
|
@ -597,7 +598,7 @@ def htmlHistorySearch(cssCache: {}, translate: {}, baseDir: str,
|
|||
|
||||
# add the page title
|
||||
domainFull = getFullDomain(domain, port)
|
||||
actor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
actor = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
historySearchTitle = '🔍 ' + translate['Your Posts']
|
||||
if boxName == 'bookmarks':
|
||||
historySearchTitle = '🔍 ' + translate['Bookmarks']
|
||||
|
|
|
@ -17,6 +17,7 @@ from utils import isEditor
|
|||
from utils import removeIdEnding
|
||||
from utils import acctDir
|
||||
from utils import isfloat
|
||||
from utils import localActorUrl
|
||||
from follow import followerApprovalActive
|
||||
from person import isPersonSnoozed
|
||||
from markdown import markdownToHtml
|
||||
|
@ -996,12 +997,12 @@ def _htmlSharesTimeline(translate: {}, pageNumber: int, itemsPerPage: int,
|
|||
baseDir, domain, nickname, maxSharesPerAccount,
|
||||
sharedItemsFederatedDomains, sharesFileType)
|
||||
domainFull = getFullDomain(domain, port)
|
||||
actor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
actor = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
adminNickname = getConfigParam(baseDir, 'admin')
|
||||
adminActor = ''
|
||||
if adminNickname:
|
||||
adminActor = \
|
||||
httpPrefix + '://' + domainFull + '/users/' + adminNickname
|
||||
localActorUrl(httpPrefix, adminNickname, domainFull)
|
||||
timelineStr = ''
|
||||
|
||||
if pageNumber > 1:
|
||||
|
|
|
@ -10,6 +10,7 @@ __module_group__ = "Web Interface"
|
|||
import os
|
||||
from shutil import copyfile
|
||||
from utils import getConfigParam
|
||||
from utils import localActorUrl
|
||||
from webapp_utils import htmlHeaderWithExternalStyle
|
||||
from webapp_utils import htmlFooter
|
||||
from markdown import markdownToHtml
|
||||
|
@ -44,8 +45,7 @@ def htmlTermsOfService(cssCache: {}, baseDir: str,
|
|||
TOSForm = htmlHeaderWithExternalStyle(cssFilename, instanceTitle)
|
||||
TOSForm += '<div class="container">' + TOSText + '</div>\n'
|
||||
if adminNickname:
|
||||
adminActor = httpPrefix + '://' + domainFull + \
|
||||
'/users/' + adminNickname
|
||||
adminActor = localActorUrl(httpPrefix, adminNickname, domainFull)
|
||||
TOSForm += \
|
||||
'<div class="container"><center>\n' + \
|
||||
'<p class="administeredby">Administered by <a href="' + \
|
||||
|
|
|
@ -22,6 +22,7 @@ from utils import isfloat
|
|||
from utils import getAudioExtensions
|
||||
from utils import getVideoExtensions
|
||||
from utils import getImageExtensions
|
||||
from utils import localActorUrl
|
||||
from cache import storePersonInCache
|
||||
from content import addHtmlTags
|
||||
from content import replaceEmojiFromTags
|
||||
|
@ -692,7 +693,7 @@ def htmlHeaderWithBlogMarkup(cssFilename: str, instanceTitle: str,
|
|||
htmlStr = htmlHeaderWithExternalStyle(cssFilename, instanceTitle,
|
||||
systemLanguage)
|
||||
|
||||
authorUrl = httpPrefix + '://' + domain + '/users/' + nickname
|
||||
authorUrl = localActorUrl(httpPrefix, nickname, domain)
|
||||
aboutUrl = httpPrefix + '://' + domain + '/about.html'
|
||||
|
||||
# license for content on the site may be different from
|
||||
|
@ -1310,7 +1311,7 @@ def htmlSearchResultShare(baseDir: str, sharedItem: {}, translate: {},
|
|||
' ' + sharedItem['itemCurrency']
|
||||
sharedItemsForm += '</p>\n'
|
||||
contactActor = \
|
||||
httpPrefix + '://' + domainFull + '/users/' + contactNickname
|
||||
localActorUrl(httpPrefix, contactNickname, domainFull)
|
||||
sharedItemsForm += \
|
||||
'<p>' + \
|
||||
'<a href="' + actor + '?replydm=sharedesc:' + \
|
||||
|
@ -1401,7 +1402,7 @@ def htmlShowShare(baseDir: str, domain: str, nickname: str,
|
|||
if not sharesJson.get(itemID):
|
||||
return None
|
||||
sharedItem = sharesJson[itemID]
|
||||
actor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||
actor = localActorUrl(httpPrefix, nickname, domainFull)
|
||||
|
||||
# filename of the banner shown at the top
|
||||
bannerFile, bannerFilename = \
|
||||
|
|
|
@ -15,6 +15,7 @@ from utils import getConfigParam
|
|||
from utils import getImageExtensions
|
||||
from utils import getImageFormats
|
||||
from utils import acctDir
|
||||
from utils import localActorUrl
|
||||
from webapp_utils import htmlHeaderWithExternalStyle
|
||||
from webapp_utils import htmlFooter
|
||||
from webapp_utils import editTextField
|
||||
|
@ -75,8 +76,7 @@ def htmlWelcomeProfile(baseDir: str, nickname: str, domain: str,
|
|||
if os.path.isfile(avatarFilename):
|
||||
break
|
||||
avatarUrl = \
|
||||
httpPrefix + '://' + domainFull + \
|
||||
'/users/' + nickname + '/avatar.' + ext
|
||||
localActorUrl(httpPrefix, nickname, domainFull) + '/avatar.' + ext
|
||||
|
||||
imageFormats = getImageFormats()
|
||||
profileForm += '<div class="container">' + profileText + '</div>\n'
|
||||
|
|
|
@ -20,6 +20,7 @@ from utils import getProtocolPrefixes
|
|||
from utils import removeDomainPort
|
||||
from utils import getUserPaths
|
||||
from utils import getGroupPaths
|
||||
from utils import localActorUrl
|
||||
|
||||
|
||||
def _parseHandle(handle: str) -> (str, str, bool):
|
||||
|
@ -145,7 +146,7 @@ def createWebfingerEndpoint(nickname: str, domain: str, port: int,
|
|||
domain = getFullDomain(domain, port)
|
||||
|
||||
personName = nickname
|
||||
personId = httpPrefix + "://" + domain + "/users/" + personName
|
||||
personId = localActorUrl(httpPrefix, personName, domain)
|
||||
if not groupAccount:
|
||||
subjectStr = "acct:" + personName + "@" + originalDomain
|
||||
else:
|
||||
|
@ -158,7 +159,7 @@ def createWebfingerEndpoint(nickname: str, domain: str, port: int,
|
|||
profilePageHref = httpPrefix + '://' + domain + \
|
||||
'/about/more?instance_actor=true'
|
||||
|
||||
actor = httpPrefix + "://" + domain + "/users/" + nickname
|
||||
actor = localActorUrl(httpPrefix, nickname, domain)
|
||||
account = {
|
||||
"aliases": [
|
||||
httpPrefix + "://" + domain + "/@" + personName,
|
||||
|
|
Loading…
Reference in New Issue