mirror of https://gitlab.com/bashrc2/epicyon
Merge branch 'main' of ssh://code.freedombone.net:2222/bashrc/epicyon
commit
a0ca4c075b
|
|
@ -7,7 +7,7 @@ __email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
__module_group__ = "ActivityPub"
|
__module_group__ = "ActivityPub"
|
||||||
|
|
||||||
from domainhandler import removeDomainPort
|
from utils import removeDomainPort
|
||||||
from utils import hasObjectDict
|
from utils import hasObjectDict
|
||||||
from utils import removeIdEnding
|
from utils import removeIdEnding
|
||||||
from utils import hasUsersPath
|
from utils import hasUsersPath
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ __version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
__module_group__ = "Core"
|
__module_group__ = "Profile Metadata"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from webfinger import webfingerHandle
|
from webfinger import webfingerHandle
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ import os
|
||||||
import json
|
import json
|
||||||
import time
|
import time
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from domainhandler import removeDomainPort
|
from utils import removeDomainPort
|
||||||
from utils import hasObjectDict
|
from utils import hasObjectDict
|
||||||
from utils import isAccountDir
|
from utils import isAccountDir
|
||||||
from utils import getCachedPostFilename
|
from utils import getCachedPostFilename
|
||||||
|
|
|
||||||
7
blog.py
7
blog.py
|
|
@ -26,6 +26,7 @@ from utils import getDomainFromActor
|
||||||
from utils import locatePost
|
from utils import locatePost
|
||||||
from utils import loadJson
|
from utils import loadJson
|
||||||
from utils import firstParagraphFromString
|
from utils import firstParagraphFromString
|
||||||
|
from utils import getActorPropertyUrl
|
||||||
from posts import createBlogsTimeline
|
from posts import createBlogsTimeline
|
||||||
from newswire import rss2Header
|
from newswire import rss2Header
|
||||||
from newswire import rss2Footer
|
from newswire import rss2Footer
|
||||||
|
|
@ -884,3 +885,9 @@ def pathContainsBlogLink(baseDir: str,
|
||||||
messageId = httpPrefix + '://' + domainFull + \
|
messageId = httpPrefix + '://' + domainFull + \
|
||||||
'/users/' + nickname + '/statuses/' + userEnding2[1]
|
'/users/' + nickname + '/statuses/' + userEnding2[1]
|
||||||
return locatePost(baseDir, nickname, domain, messageId), nickname
|
return locatePost(baseDir, nickname, domain, messageId), nickname
|
||||||
|
|
||||||
|
|
||||||
|
def getBlogAddress(actorJson: {}) -> str:
|
||||||
|
"""Returns blog address for the given actor
|
||||||
|
"""
|
||||||
|
return getActorPropertyUrl(actorJson, 'Blog')
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ import os
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
from webfinger import webfingerHandle
|
from webfinger import webfingerHandle
|
||||||
from auth import createBasicAuthHeader
|
from auth import createBasicAuthHeader
|
||||||
from domainhandler import removeDomainPort
|
from utils import removeDomainPort
|
||||||
from utils import hasUsersPath
|
from utils import hasUsersPath
|
||||||
from utils import getFullDomain
|
from utils import getFullDomain
|
||||||
from utils import removeIdEnding
|
from utils import removeIdEnding
|
||||||
|
|
|
||||||
2
cache.py
2
cache.py
|
|
@ -5,7 +5,7 @@ __version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
__module_group__ = "ActivityPub"
|
__module_group__ = "Core"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import datetime
|
import datetime
|
||||||
|
|
|
||||||
2
city.py
2
city.py
|
|
@ -5,7 +5,7 @@ __version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
__module_group__ = "Spoofing"
|
__module_group__ = "Metadata"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import datetime
|
import datetime
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ import os
|
||||||
import email.parser
|
import email.parser
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
from shutil import copyfile
|
from shutil import copyfile
|
||||||
from domainhandler import removeDomainPort
|
from utils import removeDomainPort
|
||||||
from utils import isValidLanguage
|
from utils import isValidLanguage
|
||||||
from utils import getImageExtensions
|
from utils import getImageExtensions
|
||||||
from utils import loadJson
|
from utils import loadJson
|
||||||
|
|
|
||||||
|
|
@ -140,13 +140,13 @@ from blog import htmlBlogView
|
||||||
from blog import htmlBlogPage
|
from blog import htmlBlogPage
|
||||||
from blog import htmlBlogPost
|
from blog import htmlBlogPost
|
||||||
from blog import htmlEditBlog
|
from blog import htmlEditBlog
|
||||||
|
from blog import getBlogAddress
|
||||||
from webapp_minimalbutton import setMinimal
|
from webapp_minimalbutton import setMinimal
|
||||||
from webapp_minimalbutton import isMinimal
|
from webapp_minimalbutton import isMinimal
|
||||||
from webapp_utils import getAvatarImageUrl
|
from webapp_utils import getAvatarImageUrl
|
||||||
from webapp_utils import htmlHashtagBlocked
|
from webapp_utils import htmlHashtagBlocked
|
||||||
from webapp_utils import htmlFollowingList
|
from webapp_utils import htmlFollowingList
|
||||||
from webapp_utils import setBlogAddress
|
from webapp_utils import setBlogAddress
|
||||||
from webapp_utils import getBlogAddress
|
|
||||||
from webapp_calendar import htmlCalendarDeleteConfirm
|
from webapp_calendar import htmlCalendarDeleteConfirm
|
||||||
from webapp_calendar import htmlCalendar
|
from webapp_calendar import htmlCalendar
|
||||||
from webapp_about import htmlAbout
|
from webapp_about import htmlAbout
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ __module_group__ = "ActivityPub"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from domainhandler import removeDomainPort
|
from utils import removeDomainPort
|
||||||
from utils import hasUsersPath
|
from utils import hasUsersPath
|
||||||
from utils import getFullDomain
|
from utils import getFullDomain
|
||||||
from utils import removeIdEnding
|
from utils import removeIdEnding
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ __version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
__module_group__ = "Security"
|
||||||
|
|
||||||
# REST API overview
|
# REST API overview
|
||||||
#
|
#
|
||||||
|
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
||||||
__filename__ = "domainhandler.py"
|
|
||||||
__author__ = "Bob Mottram"
|
|
||||||
__license__ = "AGPL3+"
|
|
||||||
__version__ = "1.2.0"
|
|
||||||
__maintainer__ = "Bob Mottram"
|
|
||||||
__email__ = "bob@freedombone.net"
|
|
||||||
__status__ = "Production"
|
|
||||||
__module_group__ = "Core"
|
|
||||||
|
|
||||||
|
|
||||||
def removeDomainPort(domain: str) -> str:
|
|
||||||
"""If the domain has a port appended then remove it
|
|
||||||
eg. mydomain.com:80 becomes mydomain.com
|
|
||||||
"""
|
|
||||||
if ':' in domain:
|
|
||||||
if domain.startswith('did:'):
|
|
||||||
return domain
|
|
||||||
domain = domain.split(':')[0]
|
|
||||||
return domain
|
|
||||||
|
|
||||||
|
|
||||||
def getPortFromDomain(domain: str) -> int:
|
|
||||||
"""If the domain has a port number appended then return it
|
|
||||||
eg. mydomain.com:80 returns 80
|
|
||||||
"""
|
|
||||||
if ':' in domain:
|
|
||||||
if domain.startswith('did:'):
|
|
||||||
return None
|
|
||||||
portStr = domain.split(':')[1]
|
|
||||||
if portStr.isdigit():
|
|
||||||
return int(portStr)
|
|
||||||
return None
|
|
||||||
|
|
@ -61,8 +61,8 @@ from tests import testUpdateActor
|
||||||
from tests import runAllTests
|
from tests import runAllTests
|
||||||
from auth import storeBasicCredentials
|
from auth import storeBasicCredentials
|
||||||
from auth import createPassword
|
from auth import createPassword
|
||||||
from domainhandler import removeDomainPort
|
from utils import removeDomainPort
|
||||||
from domainhandler import getPortFromDomain
|
from utils import getPortFromDomain
|
||||||
from utils import hasUsersPath
|
from utils import hasUsersPath
|
||||||
from utils import getFullDomain
|
from utils import getFullDomain
|
||||||
from utils import setConfigParam
|
from utils import setConfigParam
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ __version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
__module_group__ = "Moderation"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ __module_group__ = "ActivityPub"
|
||||||
|
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
import os
|
import os
|
||||||
from domainhandler import removeDomainPort
|
from utils import removeDomainPort
|
||||||
from utils import hasObjectDict
|
from utils import hasObjectDict
|
||||||
from utils import hasUsersPath
|
from utils import hasUsersPath
|
||||||
from utils import getFullDomain
|
from utils import getFullDomain
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,18 @@ __status__ = "Production"
|
||||||
__module_group__ = "Calendar"
|
__module_group__ = "Calendar"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from domainhandler import removeDomainPort
|
|
||||||
|
|
||||||
|
def _portDomainRemove(domain: str) -> str:
|
||||||
|
"""If the domain has a port appended then remove it
|
||||||
|
eg. mydomain.com:80 becomes mydomain.com
|
||||||
|
same as removeDomainPort in utils.py
|
||||||
|
"""
|
||||||
|
if ':' in domain:
|
||||||
|
if domain.startswith('did:'):
|
||||||
|
return domain
|
||||||
|
domain = domain.split(':')[0]
|
||||||
|
return domain
|
||||||
|
|
||||||
|
|
||||||
def receivingCalendarEvents(baseDir: str, nickname: str, domain: str,
|
def receivingCalendarEvents(baseDir: str, nickname: str, domain: str,
|
||||||
|
|
@ -44,7 +55,7 @@ def _receiveCalendarEvents(baseDir: str, nickname: str, domain: str,
|
||||||
indicating whether to receive calendar events from that account
|
indicating whether to receive calendar events from that account
|
||||||
"""
|
"""
|
||||||
# check that a following file exists
|
# check that a following file exists
|
||||||
domain = removeDomainPort(domain)
|
domain = _portDomainRemove(domain)
|
||||||
followingFilename = baseDir + '/accounts/' + \
|
followingFilename = baseDir + '/accounts/' + \
|
||||||
nickname + '@' + domain + '/following.txt'
|
nickname + '@' + domain + '/following.txt'
|
||||||
if not os.path.isfile(followingFilename):
|
if not os.path.isfile(followingFilename):
|
||||||
|
|
|
||||||
2
git.py
2
git.py
|
|
@ -5,7 +5,7 @@ __version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
__module_group__ = "Core"
|
__module_group__ = "Profile Metadata"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import html
|
import html
|
||||||
|
|
|
||||||
4
inbox.py
4
inbox.py
|
|
@ -13,8 +13,8 @@ import datetime
|
||||||
import time
|
import time
|
||||||
import random
|
import random
|
||||||
from linked_data_sig import verifyJsonSignature
|
from linked_data_sig import verifyJsonSignature
|
||||||
from domainhandler import removeDomainPort
|
from utils import removeDomainPort
|
||||||
from domainhandler import getPortFromDomain
|
from utils import getPortFromDomain
|
||||||
from utils import hasObjectDict
|
from utils import hasObjectDict
|
||||||
from utils import dmAllowedFromDomain
|
from utils import dmAllowedFromDomain
|
||||||
from utils import isRecentPost
|
from utils import isRecentPost
|
||||||
|
|
|
||||||
2
like.py
2
like.py
|
|
@ -7,7 +7,7 @@ __email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
__module_group__ = "ActivityPub"
|
__module_group__ = "ActivityPub"
|
||||||
|
|
||||||
from domainhandler import removeDomainPort
|
from utils import removeDomainPort
|
||||||
from utils import hasObjectDict
|
from utils import hasObjectDict
|
||||||
from utils import hasUsersPath
|
from utils import hasUsersPath
|
||||||
from utils import getFullDomain
|
from utils import getFullDomain
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,8 @@ from follow import followedAccountAccepts
|
||||||
from follow import followedAccountRejects
|
from follow import followedAccountRejects
|
||||||
from follow import removeFromFollowRequests
|
from follow import removeFromFollowRequests
|
||||||
from utils import loadJson
|
from utils import loadJson
|
||||||
from domainhandler import removeDomainPort
|
from utils import removeDomainPort
|
||||||
from domainhandler import getPortFromDomain
|
from utils import getPortFromDomain
|
||||||
|
|
||||||
|
|
||||||
def manualDenyFollowRequest(session, baseDir: str,
|
def manualDenyFollowRequest(session, baseDir: str,
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ __version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
__module_group__ = "Core"
|
__module_group__ = "API"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from utils import loadJson
|
from utils import loadJson
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ __version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
__module_group__ = "RSS Feeds"
|
__module_group__ = "Web Interface Columns"
|
||||||
|
|
||||||
# Example hashtag logic:
|
# Example hashtag logic:
|
||||||
#
|
#
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ __version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
__module_group__ = "RSS Feeds"
|
__module_group__ = "Web Interface Columns"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import json
|
import json
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ from roles import setRole
|
||||||
from roles import setRolesFromList
|
from roles import setRolesFromList
|
||||||
from roles import getActorRolesList
|
from roles import getActorRolesList
|
||||||
from media import processMetaData
|
from media import processMetaData
|
||||||
from domainhandler import removeDomainPort
|
from utils import removeDomainPort
|
||||||
from utils import getStatusNumber
|
from utils import getStatusNumber
|
||||||
from utils import getFullDomain
|
from utils import getFullDomain
|
||||||
from utils import validNickname
|
from utils import validNickname
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ __version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
__module_group__ = "Core"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
|
|
||||||
4
posts.py
4
posts.py
|
|
@ -32,8 +32,8 @@ from session import postImage
|
||||||
from webfinger import webfingerHandle
|
from webfinger import webfingerHandle
|
||||||
from httpsig import createSignedHeader
|
from httpsig import createSignedHeader
|
||||||
from siteactive import siteIsActive
|
from siteactive import siteIsActive
|
||||||
from domainhandler import removeDomainPort
|
from utils import removeDomainPort
|
||||||
from domainhandler import getPortFromDomain
|
from utils import getPortFromDomain
|
||||||
from utils import hasObjectDict
|
from utils import hasObjectDict
|
||||||
from utils import rejectPostId
|
from utils import rejectPostId
|
||||||
from utils import removeInvalidChars
|
from utils import removeInvalidChars
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ JSON-LD.
|
||||||
__copyright__ = 'Copyright (c) 2011-2014 Digital Bazaar, Inc.'
|
__copyright__ = 'Copyright (c) 2011-2014 Digital Bazaar, Inc.'
|
||||||
__license__ = 'New BSD license'
|
__license__ = 'New BSD license'
|
||||||
__version__ = '0.6.8'
|
__version__ = '0.6.8'
|
||||||
__module_group__ = "ActivityPub"
|
__module_group__ = "Security"
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'compact', 'expand', 'flatten', 'frame', 'link', 'from_rdf', 'to_rdf',
|
'compact', 'expand', 'flatten', 'frame', 'link', 'from_rdf', 'to_rdf',
|
||||||
|
|
|
||||||
3
roles.py
3
roles.py
|
|
@ -5,12 +5,13 @@ __version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
__module_group__ = "Profile Metadata"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from utils import loadJson
|
from utils import loadJson
|
||||||
from utils import saveJson
|
from utils import saveJson
|
||||||
from utils import getStatusNumber
|
from utils import getStatusNumber
|
||||||
from domainhandler import removeDomainPort
|
from utils import removeDomainPort
|
||||||
|
|
||||||
|
|
||||||
def _clearRoleStatus(baseDir: str, role: str) -> None:
|
def _clearRoleStatus(baseDir: str, role: str) -> None:
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ from utils import loadJson
|
||||||
from utils import saveJson
|
from utils import saveJson
|
||||||
from utils import getImageExtensions
|
from utils import getImageExtensions
|
||||||
from utils import hasObjectDict
|
from utils import hasObjectDict
|
||||||
from domainhandler import removeDomainPort
|
from utils import removeDomainPort
|
||||||
from media import processMetaData
|
from media import processMetaData
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ __version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
__module_group__ = "Core"
|
||||||
|
|
||||||
import http.client
|
import http.client
|
||||||
from urllib.parse import urlparse
|
from urllib.parse import urlparse
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ __version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
__module_group__ = "Profile Metadata"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from webfinger import webfingerHandle
|
from webfinger import webfingerHandle
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ __version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
__module_group__ = "Moderation"
|
||||||
|
|
||||||
from session import createSession
|
from session import createSession
|
||||||
from webfinger import webfingerHandle
|
from webfinger import webfingerHandle
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ __version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
__module_group__ = "Accessibility"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import html
|
import html
|
||||||
|
|
|
||||||
153
tests.py
153
tests.py
|
|
@ -2890,6 +2890,91 @@ def _functionArgsMatch(callArgs: [], funcArgs: []):
|
||||||
return callArgsCtr >= funcArgsCtr
|
return callArgsCtr >= funcArgsCtr
|
||||||
|
|
||||||
|
|
||||||
|
def _moduleInGroups(modName: str, includeGroups: [], modGroups: {}) -> bool:
|
||||||
|
"""Is the given module within the included groups list?
|
||||||
|
"""
|
||||||
|
for groupName in includeGroups:
|
||||||
|
if modName in modGroups[groupName]:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def _diagramGroups(includeGroups: [],
|
||||||
|
excludeExtraModules: [],
|
||||||
|
modules: {}, modGroups: {},
|
||||||
|
maxModuleCalls: int) -> None:
|
||||||
|
"""Draws a dot diagram containing only the given module groups
|
||||||
|
"""
|
||||||
|
callGraphStr = 'digraph EpicyonGroups {\n\n'
|
||||||
|
callGraphStr += ' graph [fontsize=10 fontname="Verdana" compound=true];\n'
|
||||||
|
callGraphStr += ' node [fontsize=10 fontname="Verdana"];\n\n'
|
||||||
|
excludeModulesFromDiagram = [
|
||||||
|
'setup', 'tests', '__init__', 'pyjsonld'
|
||||||
|
]
|
||||||
|
excludeModulesFromDiagram += excludeExtraModules
|
||||||
|
# colors of modules nodes
|
||||||
|
for modName, modProperties in modules.items():
|
||||||
|
if modName in excludeModulesFromDiagram:
|
||||||
|
continue
|
||||||
|
if not _moduleInGroups(modName, includeGroups, modGroups):
|
||||||
|
continue
|
||||||
|
if not modProperties.get('calls'):
|
||||||
|
callGraphStr += ' "' + modName + \
|
||||||
|
'" [fillcolor=yellow style=filled];\n'
|
||||||
|
continue
|
||||||
|
if len(modProperties['calls']) <= int(maxModuleCalls / 8):
|
||||||
|
callGraphStr += ' "' + modName + \
|
||||||
|
'" [fillcolor=green style=filled];\n'
|
||||||
|
elif len(modProperties['calls']) < int(maxModuleCalls / 4):
|
||||||
|
callGraphStr += ' "' + modName + \
|
||||||
|
'" [fillcolor=orange style=filled];\n'
|
||||||
|
else:
|
||||||
|
callGraphStr += ' "' + modName + \
|
||||||
|
'" [fillcolor=red style=filled];\n'
|
||||||
|
callGraphStr += '\n'
|
||||||
|
# connections between modules
|
||||||
|
for modName, modProperties in modules.items():
|
||||||
|
if modName in excludeModulesFromDiagram:
|
||||||
|
continue
|
||||||
|
if not _moduleInGroups(modName, includeGroups, modGroups):
|
||||||
|
continue
|
||||||
|
if not modProperties.get('calls'):
|
||||||
|
continue
|
||||||
|
for modCall in modProperties['calls']:
|
||||||
|
if modCall in excludeModulesFromDiagram:
|
||||||
|
continue
|
||||||
|
if not _moduleInGroups(modCall, includeGroups, modGroups):
|
||||||
|
continue
|
||||||
|
callGraphStr += ' "' + modName + '" -> "' + modCall + '";\n'
|
||||||
|
# module groups/clusters
|
||||||
|
clusterCtr = 1
|
||||||
|
for groupName, groupModules in modGroups.items():
|
||||||
|
if groupName not in includeGroups:
|
||||||
|
continue
|
||||||
|
callGraphStr += '\n'
|
||||||
|
callGraphStr += \
|
||||||
|
' subgraph cluster_' + str(clusterCtr) + ' {\n'
|
||||||
|
callGraphStr += ' node [style=filled];\n'
|
||||||
|
for modName in groupModules:
|
||||||
|
if modName not in excludeModulesFromDiagram:
|
||||||
|
callGraphStr += ' ' + modName + ';\n'
|
||||||
|
callGraphStr += ' label = "' + groupName + '";\n'
|
||||||
|
callGraphStr += ' color = blue;\n'
|
||||||
|
callGraphStr += ' }\n'
|
||||||
|
clusterCtr += 1
|
||||||
|
callGraphStr += '\n}\n'
|
||||||
|
filename = 'epicyon_groups'
|
||||||
|
for groupName in includeGroups:
|
||||||
|
filename += '_' + groupName.replace(' ', '-')
|
||||||
|
filename += '.dot'
|
||||||
|
with open(filename, 'w+') as fp:
|
||||||
|
fp.write(callGraphStr)
|
||||||
|
print('Graph saved to ' + filename)
|
||||||
|
print('Plot using: ' +
|
||||||
|
'sfdp -x -Goverlap=false -Goverlap_scaling=2 ' +
|
||||||
|
'-Gsep=+100 -Tx11 epicyon_modules.dot')
|
||||||
|
|
||||||
|
|
||||||
def _testFunctions():
|
def _testFunctions():
|
||||||
print('testFunctions')
|
print('testFunctions')
|
||||||
function = {}
|
function = {}
|
||||||
|
|
@ -3139,51 +3224,29 @@ def _testFunctions():
|
||||||
else:
|
else:
|
||||||
modules[modName]['calls'] = [modCall]
|
modules[modName]['calls'] = [modCall]
|
||||||
lineCtr += 1
|
lineCtr += 1
|
||||||
callGraphStr = 'digraph EpicyonModules {\n\n'
|
|
||||||
callGraphStr += ' graph [fontsize=10 fontname="Verdana" compound=true];\n'
|
_diagramGroups(['Commandline Interface', 'ActivityPub'], ['utils'],
|
||||||
callGraphStr += ' node [shape=record fontsize=10 fontname="Verdana"];\n\n'
|
modules, modGroups, maxModuleCalls)
|
||||||
# colors of modules nodes
|
_diagramGroups(['Commandline Interface', 'Core'], ['utils'],
|
||||||
for modName, modProperties in modules.items():
|
modules, modGroups, maxModuleCalls)
|
||||||
if not modProperties.get('calls'):
|
_diagramGroups(['Timeline', 'Core'], ['utils'],
|
||||||
callGraphStr += ' "' + modName + \
|
modules, modGroups, maxModuleCalls)
|
||||||
'" [fillcolor=yellow style=filled];\n'
|
_diagramGroups(['Web Interface', 'Core'], ['utils'],
|
||||||
continue
|
modules, modGroups, maxModuleCalls)
|
||||||
if len(modProperties['calls']) <= int(maxModuleCalls / 8):
|
_diagramGroups(['Web Interface Columns', 'Core'], ['utils'],
|
||||||
callGraphStr += ' "' + modName + \
|
modules, modGroups, maxModuleCalls)
|
||||||
'" [fillcolor=green style=filled];\n'
|
_diagramGroups(['Core'], [],
|
||||||
elif len(modProperties['calls']) < int(maxModuleCalls / 4):
|
modules, modGroups, maxModuleCalls)
|
||||||
callGraphStr += ' "' + modName + \
|
_diagramGroups(['ActivityPub'], [],
|
||||||
'" [fillcolor=orange style=filled];\n'
|
modules, modGroups, maxModuleCalls)
|
||||||
else:
|
_diagramGroups(['ActivityPub', 'Core'], ['utils'],
|
||||||
callGraphStr += ' "' + modName + \
|
modules, modGroups, maxModuleCalls)
|
||||||
'" [fillcolor=red style=filled];\n'
|
_diagramGroups(['ActivityPub', 'Security'], ['utils'],
|
||||||
callGraphStr += '\n'
|
modules, modGroups, maxModuleCalls)
|
||||||
# connections between modules
|
_diagramGroups(['Core', 'Security'], ['utils'],
|
||||||
for modName, modProperties in modules.items():
|
modules, modGroups, maxModuleCalls)
|
||||||
if not modProperties.get('calls'):
|
_diagramGroups(['Timeline', 'Security'], ['utils'],
|
||||||
continue
|
modules, modGroups, maxModuleCalls)
|
||||||
for modCall in modProperties['calls']:
|
|
||||||
callGraphStr += ' "' + modName + '" -> "' + modCall + '";\n'
|
|
||||||
# module groups/clusters
|
|
||||||
clusterCtr = 1
|
|
||||||
for groupName, groupModules in modGroups.items():
|
|
||||||
callGraphStr += '\n'
|
|
||||||
callGraphStr += \
|
|
||||||
' subgraph cluster_' + str(clusterCtr) + ' {\n'
|
|
||||||
callGraphStr += ' node [style=filled];\n'
|
|
||||||
for modName in groupModules:
|
|
||||||
callGraphStr += ' ' + modName + ';\n'
|
|
||||||
callGraphStr += ' label = "' + groupName + '";\n'
|
|
||||||
callGraphStr += ' color = blue;\n'
|
|
||||||
callGraphStr += ' }\n'
|
|
||||||
clusterCtr += 1
|
|
||||||
callGraphStr += '\n}\n'
|
|
||||||
with open('epicyon_modules.dot', 'w+') as fp:
|
|
||||||
fp.write(callGraphStr)
|
|
||||||
print('Modules call graph saved to epicyon_modules.dot')
|
|
||||||
print('Plot using: ' +
|
|
||||||
'sfdp -x -Goverlap=false -Goverlap_scaling=2 ' +
|
|
||||||
'-Gsep=+100 -Tx11 epicyon_modules.dot')
|
|
||||||
|
|
||||||
callGraphStr = 'digraph Epicyon {\n\n'
|
callGraphStr = 'digraph Epicyon {\n\n'
|
||||||
callGraphStr += ' size="8,6"; ratio=fill;\n'
|
callGraphStr += ' size="8,6"; ratio=fill;\n'
|
||||||
|
|
|
||||||
1
theme.py
1
theme.py
|
|
@ -5,6 +5,7 @@ __version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
__module_group__ = "Web Interface"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from utils import isAccountDir
|
from utils import isAccountDir
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ __version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
__module_group__ = "Core"
|
||||||
|
|
||||||
import threading
|
import threading
|
||||||
import sys
|
import sys
|
||||||
|
|
|
||||||
78
utils.py
78
utils.py
|
|
@ -5,7 +5,7 @@ __version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
__module_group__ = "ActivityPu"
|
__module_group__ = "Core"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
|
|
@ -16,8 +16,6 @@ import json
|
||||||
import idna
|
import idna
|
||||||
import locale
|
import locale
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
from domainhandler import removeDomainPort
|
|
||||||
from domainhandler import getPortFromDomain
|
|
||||||
from followingCalendar import addPersonToCalendar
|
from followingCalendar import addPersonToCalendar
|
||||||
from cryptography.hazmat.backends import default_backend
|
from cryptography.hazmat.backends import default_backend
|
||||||
from cryptography.hazmat.primitives import hashes
|
from cryptography.hazmat.primitives import hashes
|
||||||
|
|
@ -2403,3 +2401,77 @@ def hasObjectDict(postJsonObject: {}) -> bool:
|
||||||
if isinstance(postJsonObject['object'], dict):
|
if isinstance(postJsonObject['object'], dict):
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def getAltPath(actor: str, domainFull: str, callingDomain: str) -> str:
|
||||||
|
"""Returns alternate path from the actor
|
||||||
|
eg. https://clearnetdomain/path becomes http://oniondomain/path
|
||||||
|
"""
|
||||||
|
postActor = actor
|
||||||
|
if callingDomain not in actor and domainFull in actor:
|
||||||
|
if callingDomain.endswith('.onion') or \
|
||||||
|
callingDomain.endswith('.i2p'):
|
||||||
|
postActor = \
|
||||||
|
'http://' + callingDomain + actor.split(domainFull)[1]
|
||||||
|
print('Changed POST domain from ' + actor + ' to ' + postActor)
|
||||||
|
return postActor
|
||||||
|
|
||||||
|
|
||||||
|
def getActorPropertyUrl(actorJson: {}, propertyName: str) -> str:
|
||||||
|
"""Returns a url property from an actor
|
||||||
|
"""
|
||||||
|
if not actorJson.get('attachment'):
|
||||||
|
return ''
|
||||||
|
propertyName = propertyName.lower()
|
||||||
|
for propertyValue in actorJson['attachment']:
|
||||||
|
if not propertyValue.get('name'):
|
||||||
|
continue
|
||||||
|
if not propertyValue['name'].lower().startswith(propertyName):
|
||||||
|
continue
|
||||||
|
if not propertyValue.get('type'):
|
||||||
|
continue
|
||||||
|
if not propertyValue.get('value'):
|
||||||
|
continue
|
||||||
|
if propertyValue['type'] != 'PropertyValue':
|
||||||
|
continue
|
||||||
|
propertyValue['value'] = propertyValue['value'].strip()
|
||||||
|
prefixes = getProtocolPrefixes()
|
||||||
|
prefixFound = False
|
||||||
|
for prefix in prefixes:
|
||||||
|
if propertyValue['value'].startswith(prefix):
|
||||||
|
prefixFound = True
|
||||||
|
break
|
||||||
|
if not prefixFound:
|
||||||
|
continue
|
||||||
|
if '.' not in propertyValue['value']:
|
||||||
|
continue
|
||||||
|
if ' ' in propertyValue['value']:
|
||||||
|
continue
|
||||||
|
if ',' in propertyValue['value']:
|
||||||
|
continue
|
||||||
|
return propertyValue['value']
|
||||||
|
return ''
|
||||||
|
|
||||||
|
|
||||||
|
def removeDomainPort(domain: str) -> str:
|
||||||
|
"""If the domain has a port appended then remove it
|
||||||
|
eg. mydomain.com:80 becomes mydomain.com
|
||||||
|
"""
|
||||||
|
if ':' in domain:
|
||||||
|
if domain.startswith('did:'):
|
||||||
|
return domain
|
||||||
|
domain = domain.split(':')[0]
|
||||||
|
return domain
|
||||||
|
|
||||||
|
|
||||||
|
def getPortFromDomain(domain: str) -> int:
|
||||||
|
"""If the domain has a port number appended then return it
|
||||||
|
eg. mydomain.com:80 returns 80
|
||||||
|
"""
|
||||||
|
if ':' in domain:
|
||||||
|
if domain.startswith('did:'):
|
||||||
|
return None
|
||||||
|
portStr = domain.split(':')[1]
|
||||||
|
if portStr.isdigit():
|
||||||
|
return int(portStr)
|
||||||
|
return None
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ __version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
__module_group__ = "Web Interface"
|
__module_group__ = "Accessibility"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from utils import isAccountDir
|
from utils import isAccountDir
|
||||||
|
|
|
||||||
|
|
@ -18,12 +18,12 @@ from utils import getDomainFromActor
|
||||||
from utils import locatePost
|
from utils import locatePost
|
||||||
from utils import loadJson
|
from utils import loadJson
|
||||||
from utils import weekDayOfMonthStart
|
from utils import weekDayOfMonthStart
|
||||||
from domainhandler import removeDomainPort
|
from utils import getAltPath
|
||||||
|
from utils import removeDomainPort
|
||||||
from happening import getTodaysEvents
|
from happening import getTodaysEvents
|
||||||
from happening import getCalendarEvents
|
from happening import getCalendarEvents
|
||||||
from webapp_utils import htmlHeaderWithExternalStyle
|
from webapp_utils import htmlHeaderWithExternalStyle
|
||||||
from webapp_utils import htmlFooter
|
from webapp_utils import htmlFooter
|
||||||
from webapp_utils import getAltPath
|
|
||||||
from webapp_utils import htmlHideFromScreenReader
|
from webapp_utils import htmlHideFromScreenReader
|
||||||
from webapp_utils import htmlKeyboardNavigation
|
from webapp_utils import htmlKeyboardNavigation
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,13 +5,13 @@ __version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
__module_group__ = "Web Interface"
|
__module_group__ = "Web Interface Columns"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from utils import getConfigParam
|
from utils import getConfigParam
|
||||||
from utils import getNicknameFromActor
|
from utils import getNicknameFromActor
|
||||||
from utils import isEditor
|
from utils import isEditor
|
||||||
from domainhandler import removeDomainPort
|
from utils import removeDomainPort
|
||||||
from webapp_utils import sharesTimelineJson
|
from webapp_utils import sharesTimelineJson
|
||||||
from webapp_utils import htmlPostSeparator
|
from webapp_utils import htmlPostSeparator
|
||||||
from webapp_utils import getLeftImageFile
|
from webapp_utils import getLeftImageFile
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ __version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
__module_group__ = "Web Interface"
|
__module_group__ = "Web Interface Columns"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
@ -17,7 +17,7 @@ from utils import votesOnNewswireItem
|
||||||
from utils import getNicknameFromActor
|
from utils import getNicknameFromActor
|
||||||
from utils import isEditor
|
from utils import isEditor
|
||||||
from utils import getConfigParam
|
from utils import getConfigParam
|
||||||
from domainhandler import removeDomainPort
|
from utils import removeDomainPort
|
||||||
from posts import isModerator
|
from posts import isModerator
|
||||||
from webapp_utils import getRightImageFile
|
from webapp_utils import getRightImageFile
|
||||||
from webapp_utils import htmlHeaderWithExternalStyle
|
from webapp_utils import htmlHeaderWithExternalStyle
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ from utils import getDomainFromActor
|
||||||
from utils import locatePost
|
from utils import locatePost
|
||||||
from utils import loadJson
|
from utils import loadJson
|
||||||
from utils import getConfigParam
|
from utils import getConfigParam
|
||||||
from webapp_utils import getAltPath
|
from utils import getAltPath
|
||||||
from webapp_utils import htmlHeaderWithExternalStyle
|
from webapp_utils import htmlHeaderWithExternalStyle
|
||||||
from webapp_utils import htmlFooter
|
from webapp_utils import htmlFooter
|
||||||
from webapp_post import individualPostAsHtml
|
from webapp_post import individualPostAsHtml
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ __version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
__module_group__ = "Web Interface"
|
__module_group__ = "Timeline"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from utils import isSystemAccount
|
from utils import isSystemAccount
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ __version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
__module_group__ = "Web Interface"
|
__module_group__ = "Timeline"
|
||||||
|
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ __version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
__module_group__ = "Web Interface"
|
__module_group__ = "Timeline"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ __version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
__module_group__ = "Web Interface"
|
__module_group__ = "Timeline"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ __version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
__module_group__ = "Web Interface"
|
__module_group__ = "Moderation"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from utils import isAccountDir
|
from utils import isAccountDir
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ from webapp_utils import htmlFooter
|
||||||
from webapp_utils import addEmojiToDisplayName
|
from webapp_utils import addEmojiToDisplayName
|
||||||
from webapp_utils import getBannerFile
|
from webapp_utils import getBannerFile
|
||||||
from webapp_utils import htmlPostSeparator
|
from webapp_utils import htmlPostSeparator
|
||||||
from webapp_utils import getBlogAddress
|
from blog import getBlogAddress
|
||||||
from webapp_post import individualPostAsHtml
|
from webapp_post import individualPostAsHtml
|
||||||
from webapp_timeline import htmlIndividualShare
|
from webapp_timeline import htmlIndividualShare
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,13 +22,13 @@ from utils import locatePost
|
||||||
from utils import isPublicPost
|
from utils import isPublicPost
|
||||||
from utils import firstParagraphFromString
|
from utils import firstParagraphFromString
|
||||||
from utils import searchBoxPosts
|
from utils import searchBoxPosts
|
||||||
|
from utils import getAltPath
|
||||||
from skills import noOfActorSkills
|
from skills import noOfActorSkills
|
||||||
from skills import getSkillsFromList
|
from skills import getSkillsFromList
|
||||||
from categories import getHashtagCategory
|
from categories import getHashtagCategory
|
||||||
from feeds import rss2TagHeader
|
from feeds import rss2TagHeader
|
||||||
from feeds import rss2TagFooter
|
from feeds import rss2TagFooter
|
||||||
from webapp_utils import htmlKeyboardNavigation
|
from webapp_utils import htmlKeyboardNavigation
|
||||||
from webapp_utils import getAltPath
|
|
||||||
from webapp_utils import htmlHeaderWithExternalStyle
|
from webapp_utils import htmlHeaderWithExternalStyle
|
||||||
from webapp_utils import htmlFooter
|
from webapp_utils import htmlFooter
|
||||||
from webapp_utils import getSearchBannerFile
|
from webapp_utils import getSearchBannerFile
|
||||||
|
|
|
||||||
|
|
@ -150,20 +150,6 @@ def headerButtonsFrontScreen(translate: {},
|
||||||
return headerStr
|
return headerStr
|
||||||
|
|
||||||
|
|
||||||
def getAltPath(actor: str, domainFull: str, callingDomain: str) -> str:
|
|
||||||
"""Returns alternate path from the actor
|
|
||||||
eg. https://clearnetdomain/path becomes http://oniondomain/path
|
|
||||||
"""
|
|
||||||
postActor = actor
|
|
||||||
if callingDomain not in actor and domainFull in actor:
|
|
||||||
if callingDomain.endswith('.onion') or \
|
|
||||||
callingDomain.endswith('.i2p'):
|
|
||||||
postActor = \
|
|
||||||
'http://' + callingDomain + actor.split(domainFull)[1]
|
|
||||||
print('Changed POST domain from ' + actor + ' to ' + postActor)
|
|
||||||
return postActor
|
|
||||||
|
|
||||||
|
|
||||||
def getContentWarningButton(postID: str, translate: {},
|
def getContentWarningButton(postID: str, translate: {},
|
||||||
content: str) -> str:
|
content: str) -> str:
|
||||||
"""Returns the markup for a content warning button
|
"""Returns the markup for a content warning button
|
||||||
|
|
@ -174,48 +160,6 @@ def getContentWarningButton(postID: str, translate: {},
|
||||||
'</div></details>\n'
|
'</div></details>\n'
|
||||||
|
|
||||||
|
|
||||||
def _getActorPropertyUrl(actorJson: {}, propertyName: str) -> str:
|
|
||||||
"""Returns a url property from an actor
|
|
||||||
"""
|
|
||||||
if not actorJson.get('attachment'):
|
|
||||||
return ''
|
|
||||||
propertyName = propertyName.lower()
|
|
||||||
for propertyValue in actorJson['attachment']:
|
|
||||||
if not propertyValue.get('name'):
|
|
||||||
continue
|
|
||||||
if not propertyValue['name'].lower().startswith(propertyName):
|
|
||||||
continue
|
|
||||||
if not propertyValue.get('type'):
|
|
||||||
continue
|
|
||||||
if not propertyValue.get('value'):
|
|
||||||
continue
|
|
||||||
if propertyValue['type'] != 'PropertyValue':
|
|
||||||
continue
|
|
||||||
propertyValue['value'] = propertyValue['value'].strip()
|
|
||||||
prefixes = getProtocolPrefixes()
|
|
||||||
prefixFound = False
|
|
||||||
for prefix in prefixes:
|
|
||||||
if propertyValue['value'].startswith(prefix):
|
|
||||||
prefixFound = True
|
|
||||||
break
|
|
||||||
if not prefixFound:
|
|
||||||
continue
|
|
||||||
if '.' not in propertyValue['value']:
|
|
||||||
continue
|
|
||||||
if ' ' in propertyValue['value']:
|
|
||||||
continue
|
|
||||||
if ',' in propertyValue['value']:
|
|
||||||
continue
|
|
||||||
return propertyValue['value']
|
|
||||||
return ''
|
|
||||||
|
|
||||||
|
|
||||||
def getBlogAddress(actorJson: {}) -> str:
|
|
||||||
"""Returns blog address for the given actor
|
|
||||||
"""
|
|
||||||
return _getActorPropertyUrl(actorJson, 'Blog')
|
|
||||||
|
|
||||||
|
|
||||||
def _setActorPropertyUrl(actorJson: {}, propertyName: str, url: str) -> None:
|
def _setActorPropertyUrl(actorJson: {}, propertyName: str, url: str) -> None:
|
||||||
"""Sets a url for the given actor property
|
"""Sets a url for the given actor property
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ __version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
__module_group__ = "Web Interface"
|
__module_group__ = "Onboarding"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from shutil import copyfile
|
from shutil import copyfile
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ __version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
__module_group__ = "Web Interface"
|
__module_group__ = "Onboarding"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from shutil import copyfile
|
from shutil import copyfile
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ __version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
__module_group__ = "Web Interface"
|
__module_group__ = "Onboarding"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from shutil import copyfile
|
from shutil import copyfile
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ from utils import loadJson
|
||||||
from utils import loadJsonOnionify
|
from utils import loadJsonOnionify
|
||||||
from utils import saveJson
|
from utils import saveJson
|
||||||
from utils import getProtocolPrefixes
|
from utils import getProtocolPrefixes
|
||||||
from domainhandler import removeDomainPort
|
from utils import removeDomainPort
|
||||||
|
|
||||||
|
|
||||||
def _parseHandle(handle: str) -> (str, str):
|
def _parseHandle(handle: str) -> (str, str):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue