mirror of https://gitlab.com/bashrc2/epicyon
Merge branch 'main' of ssh://code.freedombone.net:2222/bashrc/epicyon
commit
ed3497c5aa
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "acceptreject.py"
|
__filename__ = "acceptreject.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "announce.py"
|
__filename__ = "announce.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
2
auth.py
2
auth.py
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "auth.py"
|
__filename__ = "auth.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "availability.py"
|
__filename__ = "availability.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "blocking.py"
|
__filename__ = "blocking.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
2
blog.py
2
blog.py
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "blog.py"
|
__filename__ = "blog.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "bookmarks.py"
|
__filename__ = "bookmarks.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
2
briar.py
2
briar.py
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "briar.py"
|
__filename__ = "briar.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
2
cache.py
2
cache.py
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "cache.py"
|
__filename__ = "cache.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "categories.py"
|
__filename__ = "categories.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "content.py"
|
__filename__ = "content.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "inbox.py"
|
__filename__ = "inbox.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
55
daemon.py
55
daemon.py
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "daemon.py"
|
__filename__ = "daemon.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
@ -68,6 +68,8 @@ from person import removeAccount
|
||||||
from person import canRemovePost
|
from person import canRemovePost
|
||||||
from person import personSnooze
|
from person import personSnooze
|
||||||
from person import personUnsnooze
|
from person import personUnsnooze
|
||||||
|
from posts import outboxMessageCreateWrap
|
||||||
|
from posts import getPinnedPostAsJson
|
||||||
from posts import pinPost
|
from posts import pinPost
|
||||||
from posts import jsonPinPost
|
from posts import jsonPinPost
|
||||||
from posts import undoPinnedPost
|
from posts import undoPinnedPost
|
||||||
|
|
@ -183,6 +185,7 @@ from shares import addShare
|
||||||
from shares import removeShare
|
from shares import removeShare
|
||||||
from shares import expireShares
|
from shares import expireShares
|
||||||
from categories import setHashtagCategory
|
from categories import setHashtagCategory
|
||||||
|
from utils import decodedHost
|
||||||
from utils import isPublicPost
|
from utils import isPublicPost
|
||||||
from utils import getLockedAccount
|
from utils import getLockedAccount
|
||||||
from utils import hasUsersPath
|
from utils import hasUsersPath
|
||||||
|
|
@ -9875,7 +9878,7 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
def do_GET(self):
|
def do_GET(self):
|
||||||
callingDomain = self.server.domainFull
|
callingDomain = self.server.domainFull
|
||||||
if self.headers.get('Host'):
|
if self.headers.get('Host'):
|
||||||
callingDomain = self.headers['Host']
|
callingDomain = decodedHost(self.headers['Host'])
|
||||||
if self.server.onionDomain:
|
if self.server.onionDomain:
|
||||||
if callingDomain != self.server.domain and \
|
if callingDomain != self.server.domain and \
|
||||||
callingDomain != self.server.domainFull and \
|
callingDomain != self.server.domainFull and \
|
||||||
|
|
@ -10149,7 +10152,39 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
if '/users/' in self.path:
|
if '/users/' in self.path:
|
||||||
usersInPath = True
|
usersInPath = True
|
||||||
|
|
||||||
if usersInPath and self.path.endswith('/collections/featured'):
|
if not htmlGET and \
|
||||||
|
usersInPath and self.path.endswith('/pinned'):
|
||||||
|
nickname = self.path.split('/users/')[1]
|
||||||
|
if '/' in nickname:
|
||||||
|
nickname = nickname.split('/')[0]
|
||||||
|
pinnedPostJson = \
|
||||||
|
getPinnedPostAsJson(self.server.baseDir,
|
||||||
|
self.server.httpPrefix,
|
||||||
|
nickname, self.server.domain,
|
||||||
|
self.server.domainFull)
|
||||||
|
messageJson = {}
|
||||||
|
if pinnedPostJson:
|
||||||
|
postId = pinnedPostJson['id']
|
||||||
|
messageJson = \
|
||||||
|
outboxMessageCreateWrap(self.server.httpPrefix,
|
||||||
|
nickname,
|
||||||
|
self.server.domain,
|
||||||
|
self.server.port,
|
||||||
|
pinnedPostJson)
|
||||||
|
messageJson['id'] = postId + '/activity'
|
||||||
|
messageJson['object']['id'] = postId
|
||||||
|
messageJson['object']['url'] = postId.replace('/users/', '/@')
|
||||||
|
messageJson['object']['atomUri'] = postId
|
||||||
|
msg = json.dumps(messageJson,
|
||||||
|
ensure_ascii=False).encode('utf-8')
|
||||||
|
msglen = len(msg)
|
||||||
|
self._set_headers('application/json',
|
||||||
|
msglen, None, callingDomain)
|
||||||
|
self._write(msg)
|
||||||
|
return
|
||||||
|
|
||||||
|
if not htmlGET and \
|
||||||
|
usersInPath and self.path.endswith('/collections/featured'):
|
||||||
nickname = self.path.split('/users/')[1]
|
nickname = self.path.split('/users/')[1]
|
||||||
if '/' in nickname:
|
if '/' in nickname:
|
||||||
nickname = nickname.split('/')[0]
|
nickname = nickname.split('/')[0]
|
||||||
|
|
@ -10161,7 +10196,8 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self.server.domainFull)
|
self.server.domainFull)
|
||||||
return
|
return
|
||||||
|
|
||||||
if usersInPath and self.path.endswith('/collections/featuredTags'):
|
if not htmlGET and \
|
||||||
|
usersInPath and self.path.endswith('/collections/featuredTags'):
|
||||||
self._getFeaturedTagsCollection(callingDomain,
|
self._getFeaturedTagsCollection(callingDomain,
|
||||||
self.path,
|
self.path,
|
||||||
self.server.httpPrefix,
|
self.server.httpPrefix,
|
||||||
|
|
@ -10404,20 +10440,21 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
htmlAbout(self.server.cssCache,
|
htmlAbout(self.server.cssCache,
|
||||||
self.server.baseDir, 'http',
|
self.server.baseDir, 'http',
|
||||||
self.server.onionDomain,
|
self.server.onionDomain,
|
||||||
None)
|
None, self.server.translate)
|
||||||
elif callingDomain.endswith('.i2p'):
|
elif callingDomain.endswith('.i2p'):
|
||||||
msg = \
|
msg = \
|
||||||
htmlAbout(self.server.cssCache,
|
htmlAbout(self.server.cssCache,
|
||||||
self.server.baseDir, 'http',
|
self.server.baseDir, 'http',
|
||||||
self.server.i2pDomain,
|
self.server.i2pDomain,
|
||||||
None)
|
None, self.server.translate)
|
||||||
else:
|
else:
|
||||||
msg = \
|
msg = \
|
||||||
htmlAbout(self.server.cssCache,
|
htmlAbout(self.server.cssCache,
|
||||||
self.server.baseDir,
|
self.server.baseDir,
|
||||||
self.server.httpPrefix,
|
self.server.httpPrefix,
|
||||||
self.server.domainFull,
|
self.server.domainFull,
|
||||||
self.server.onionDomain)
|
self.server.onionDomain,
|
||||||
|
self.server.translate)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
self._login_headers('text/html', msglen, callingDomain)
|
self._login_headers('text/html', msglen, callingDomain)
|
||||||
|
|
@ -12034,7 +12071,7 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
def do_HEAD(self):
|
def do_HEAD(self):
|
||||||
callingDomain = self.server.domainFull
|
callingDomain = self.server.domainFull
|
||||||
if self.headers.get('Host'):
|
if self.headers.get('Host'):
|
||||||
callingDomain = self.headers['Host']
|
callingDomain = decodedHost(self.headers['Host'])
|
||||||
if self.server.onionDomain:
|
if self.server.onionDomain:
|
||||||
if callingDomain != self.server.domain and \
|
if callingDomain != self.server.domain and \
|
||||||
callingDomain != self.server.domainFull and \
|
callingDomain != self.server.domainFull and \
|
||||||
|
|
@ -12985,7 +13022,7 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
|
|
||||||
callingDomain = self.server.domainFull
|
callingDomain = self.server.domainFull
|
||||||
if self.headers.get('Host'):
|
if self.headers.get('Host'):
|
||||||
callingDomain = self.headers['Host']
|
callingDomain = decodedHost(self.headers['Host'])
|
||||||
if self.server.onionDomain:
|
if self.server.onionDomain:
|
||||||
if callingDomain != self.server.domain and \
|
if callingDomain != self.server.domain and \
|
||||||
callingDomain != self.server.domainFull and \
|
callingDomain != self.server.domainFull and \
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "delete.py"
|
__filename__ = "delete.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "devices.py"
|
__filename__ = "devices.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "donate.py"
|
__filename__ = "donate.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -538,6 +538,16 @@ a:focus {
|
||||||
border-radius: 0px;
|
border-radius: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.emoji {
|
||||||
|
float: none;
|
||||||
|
width: 50px;
|
||||||
|
margin-left: 0px;
|
||||||
|
margin-right: 0px;
|
||||||
|
padding-right: 0px;
|
||||||
|
border-radius: 0px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
.container img.emoji {
|
.container img.emoji {
|
||||||
float: none;
|
float: none;
|
||||||
width: 50px;
|
width: 50px;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "epicyon.py"
|
__filename__ = "epicyon.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
2
feeds.py
2
feeds.py
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "feeds.py"
|
__filename__ = "feeds.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "filters.py"
|
__filename__ = "filters.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "follow.py"
|
__filename__ = "follow.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "followingCalendar.py"
|
__filename__ = "followingCalendar.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
2
git.py
2
git.py
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "git.py"
|
__filename__ = "git.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "happening.py"
|
__filename__ = "happening.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ __filename__ = "posts.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__credits__ = ['lamia']
|
__credits__ = ['lamia']
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
2
inbox.py
2
inbox.py
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "inbox.py"
|
__filename__ = "inbox.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
2
jami.py
2
jami.py
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "jami.py"
|
__filename__ = "jami.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
2
like.py
2
like.py
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "like.py"
|
__filename__ = "like.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ __author__ = "Bob Mottram"
|
||||||
__credits__ = ['Based on ' +
|
__credits__ = ['Based on ' +
|
||||||
'https://github.com/tsileo/little-boxes']
|
'https://github.com/tsileo/little-boxes']
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "manualapprove.py"
|
__filename__ = "manualapprove.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "mastoapiv1.py"
|
__filename__ = "mastoapiv1.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "matrix.py"
|
__filename__ = "matrix.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
2
media.py
2
media.py
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "media.py"
|
__filename__ = "media.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "metadata.py"
|
__filename__ = "metadata.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "migrate.py"
|
__filename__ = "migrate.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "newsdaemon.py"
|
__filename__ = "newsdaemon.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "newswire.py"
|
__filename__ = "newswire.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "outbox.py"
|
__filename__ = "outbox.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "person.py"
|
__filename__ = "person.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "petnames.py"
|
__filename__ = "petnames.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
2
pgp.py
2
pgp.py
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "pgp.py"
|
__filename__ = "pgp.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
29
posts.py
29
posts.py
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "posts.py"
|
__filename__ = "posts.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
@ -1298,14 +1298,13 @@ def undoPinnedPost(baseDir: str, nickname: str, domain: str) -> None:
|
||||||
os.remove(pinnedFilename)
|
os.remove(pinnedFilename)
|
||||||
|
|
||||||
|
|
||||||
def jsonPinPost(baseDir: str, httpPrefix: str,
|
def getPinnedPostAsJson(baseDir: str, httpPrefix: str,
|
||||||
nickname: str, domain: str,
|
nickname: str, domain: str,
|
||||||
domainFull: str) -> {}:
|
domainFull: str) -> {}:
|
||||||
"""Returns a pinned post as json
|
"""Returns the pinned profile post as json
|
||||||
"""
|
"""
|
||||||
accountDir = baseDir + '/accounts/' + nickname + '@' + domain
|
accountDir = baseDir + '/accounts/' + nickname + '@' + domain
|
||||||
pinnedFilename = accountDir + '/pinToProfile.txt'
|
pinnedFilename = accountDir + '/pinToProfile.txt'
|
||||||
itemsList = []
|
|
||||||
pinnedPostJson = {}
|
pinnedPostJson = {}
|
||||||
actor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
actor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||||
if os.path.isfile(pinnedFilename):
|
if os.path.isfile(pinnedFilename):
|
||||||
|
|
@ -1338,7 +1337,23 @@ def jsonPinPost(baseDir: str, httpPrefix: str,
|
||||||
'type': 'Note',
|
'type': 'Note',
|
||||||
'url': actor.replace('/users/', '/@') + '/pinned'
|
'url': actor.replace('/users/', '/@') + '/pinned'
|
||||||
}
|
}
|
||||||
itemsList = [pinnedPostJson]
|
return pinnedPostJson
|
||||||
|
|
||||||
|
|
||||||
|
def jsonPinPost(baseDir: str, httpPrefix: str,
|
||||||
|
nickname: str, domain: str,
|
||||||
|
domainFull: str) -> {}:
|
||||||
|
"""Returns a pinned post as json
|
||||||
|
"""
|
||||||
|
pinnedPostJson = \
|
||||||
|
getPinnedPostAsJson(baseDir, httpPrefix,
|
||||||
|
nickname, domain,
|
||||||
|
domainFull)
|
||||||
|
itemsList = []
|
||||||
|
if pinnedPostJson:
|
||||||
|
itemsList = [pinnedPostJson]
|
||||||
|
|
||||||
|
actor = httpPrefix + '://' + domainFull + '/users/' + nickname
|
||||||
return {
|
return {
|
||||||
'@context': [
|
'@context': [
|
||||||
'https://www.w3.org/ns/activitystreams',
|
'https://www.w3.org/ns/activitystreams',
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "question.py"
|
__filename__ = "question.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
2
roles.py
2
roles.py
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "roles.py"
|
__filename__ = "roles.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "schedule.py"
|
__filename__ = "schedule.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "session.py"
|
__filename__ = "session.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
@ -54,7 +54,7 @@ def createSession(proxyType: str):
|
||||||
|
|
||||||
|
|
||||||
def getJson(session, url: str, headers: {}, params: {},
|
def getJson(session, url: str, headers: {}, params: {},
|
||||||
version='1.1.0', httpPrefix='https',
|
version='1.2.0', httpPrefix='https',
|
||||||
domain='testdomain') -> {}:
|
domain='testdomain') -> {}:
|
||||||
if not isinstance(url, str):
|
if not isinstance(url, str):
|
||||||
print('url: ' + str(url))
|
print('url: ' + str(url))
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "shares.py"
|
__filename__ = "shares.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "skills.py"
|
__filename__ = "skills.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "socnet.py"
|
__filename__ = "socnet.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
2
ssb.py
2
ssb.py
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "ssb.py"
|
__filename__ = "ssb.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
16
tests.py
16
tests.py
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "tests.py"
|
__filename__ = "tests.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
@ -33,6 +33,7 @@ from follow import clearFollows
|
||||||
from follow import clearFollowers
|
from follow import clearFollowers
|
||||||
from follow import sendFollowRequestViaServer
|
from follow import sendFollowRequestViaServer
|
||||||
from follow import sendUnfollowRequestViaServer
|
from follow import sendUnfollowRequestViaServer
|
||||||
|
from utils import decodedHost
|
||||||
from utils import getFullDomain
|
from utils import getFullDomain
|
||||||
from utils import validNickname
|
from utils import validNickname
|
||||||
from utils import firstParagraphFromString
|
from utils import firstParagraphFromString
|
||||||
|
|
@ -3059,9 +3060,22 @@ def testMastoApi():
|
||||||
assert nickname2 == nickname
|
assert nickname2 == nickname
|
||||||
|
|
||||||
|
|
||||||
|
def testDomainHandling():
|
||||||
|
print('testDomainHandling')
|
||||||
|
testDomain = 'localhost'
|
||||||
|
assert decodedHost(testDomain) == testDomain
|
||||||
|
testDomain = '127.0.0.1:60'
|
||||||
|
assert decodedHost(testDomain) == testDomain
|
||||||
|
testDomain = '192.168.5.153'
|
||||||
|
assert decodedHost(testDomain) == testDomain
|
||||||
|
testDomain = 'xn--espaa-rta.icom.museum'
|
||||||
|
assert decodedHost(testDomain) == "españa.icom.museum"
|
||||||
|
|
||||||
|
|
||||||
def runAllTests():
|
def runAllTests():
|
||||||
print('Running tests...')
|
print('Running tests...')
|
||||||
testFunctions()
|
testFunctions()
|
||||||
|
testDomainHandling()
|
||||||
testMastoApi()
|
testMastoApi()
|
||||||
testLinksWithinPost()
|
testLinksWithinPost()
|
||||||
testReplyToPublicPost()
|
testReplyToPublicPost()
|
||||||
|
|
|
||||||
2
theme.py
2
theme.py
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "theme.py"
|
__filename__ = "theme.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
"column-left-header-background": "#35244d",
|
||||||
"newswire-publish-icon": "True",
|
"newswire-publish-icon": "True",
|
||||||
"full-width-timeline-buttons": "False",
|
"full-width-timeline-buttons": "False",
|
||||||
"icons-as-buttons": "False",
|
"icons-as-buttons": "False",
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "threads.py"
|
__filename__ = "threads.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
2
tox.py
2
tox.py
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "tox.py"
|
__filename__ = "tox.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -361,5 +361,7 @@
|
||||||
"Moved to new account address": "انتقل إلى عنوان الحساب الجديد",
|
"Moved to new account address": "انتقل إلى عنوان الحساب الجديد",
|
||||||
"Yet another Epicyon Instance": "مثال آخر Epicyon",
|
"Yet another Epicyon Instance": "مثال آخر Epicyon",
|
||||||
"Other accounts": "حسابات أخرى",
|
"Other accounts": "حسابات أخرى",
|
||||||
"Pin this post to your profile.": "تثبيت هذه الوظيفة في ملف التعريف الخاص بك."
|
"Pin this post to your profile.": "تثبيت هذه الوظيفة في ملف التعريف الخاص بك.",
|
||||||
|
"Administered by": "تدار من قبل",
|
||||||
|
"Version": "الإصدار"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -361,5 +361,7 @@
|
||||||
"Moved to new account address": "S'ha mogut a l'adreça del compte nova",
|
"Moved to new account address": "S'ha mogut a l'adreça del compte nova",
|
||||||
"Yet another Epicyon Instance": "Encara una altra instància Epicyon",
|
"Yet another Epicyon Instance": "Encara una altra instància Epicyon",
|
||||||
"Other accounts": "Altres comptes",
|
"Other accounts": "Altres comptes",
|
||||||
"Pin this post to your profile.": "Fixa aquesta publicació al teu perfil."
|
"Pin this post to your profile.": "Fixa aquesta publicació al teu perfil.",
|
||||||
|
"Administered by": "Administrat per",
|
||||||
|
"Version": "Versió"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -361,5 +361,7 @@
|
||||||
"Moved to new account address": "Wedi'i symud i gyfeiriad cyfrif newydd",
|
"Moved to new account address": "Wedi'i symud i gyfeiriad cyfrif newydd",
|
||||||
"Yet another Epicyon Instance": "Digwyddiad Epicyon arall",
|
"Yet another Epicyon Instance": "Digwyddiad Epicyon arall",
|
||||||
"Other accounts": "Cyfrifon eraill",
|
"Other accounts": "Cyfrifon eraill",
|
||||||
"Pin this post to your profile.": "Piniwch y post hwn i'ch proffil."
|
"Pin this post to your profile.": "Piniwch y post hwn i'ch proffil.",
|
||||||
|
"Administered by": "Gweinyddir gan",
|
||||||
|
"Version": "Fersiwn"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -361,5 +361,7 @@
|
||||||
"Moved to new account address": "An neue Kontoadresse verschoben",
|
"Moved to new account address": "An neue Kontoadresse verschoben",
|
||||||
"Yet another Epicyon Instance": "Noch eine Epicyon-Instanz",
|
"Yet another Epicyon Instance": "Noch eine Epicyon-Instanz",
|
||||||
"Other accounts": "Andere Konten",
|
"Other accounts": "Andere Konten",
|
||||||
"Pin this post to your profile.": "Pin diesen Beitrag zu Ihrem Profil."
|
"Pin this post to your profile.": "Pin diesen Beitrag zu Ihrem Profil.",
|
||||||
|
"Administered by": "Verwaltet von",
|
||||||
|
"Version": "Ausführung"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -361,5 +361,7 @@
|
||||||
"Moved to new account address": "Moved to new account address",
|
"Moved to new account address": "Moved to new account address",
|
||||||
"Yet another Epicyon Instance": "Yet another Epicyon Instance",
|
"Yet another Epicyon Instance": "Yet another Epicyon Instance",
|
||||||
"Other accounts": "Other accounts",
|
"Other accounts": "Other accounts",
|
||||||
"Pin this post to your profile.": "Pin this post to your profile."
|
"Pin this post to your profile.": "Pin this post to your profile.",
|
||||||
|
"Administered by": "Administered by",
|
||||||
|
"Version": "Version"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -361,5 +361,7 @@
|
||||||
"Moved to new account address": "Movido a la nueva dirección de la cuenta",
|
"Moved to new account address": "Movido a la nueva dirección de la cuenta",
|
||||||
"Yet another Epicyon Instance": "Otra instancia más de Epicyon",
|
"Yet another Epicyon Instance": "Otra instancia más de Epicyon",
|
||||||
"Other accounts": "Otras cuentas",
|
"Other accounts": "Otras cuentas",
|
||||||
"Pin this post to your profile.": "Fija esta publicación a tu perfil."
|
"Pin this post to your profile.": "Fija esta publicación a tu perfil.",
|
||||||
|
"Administered by": "Administrado por",
|
||||||
|
"Version": "Versión"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -361,5 +361,7 @@
|
||||||
"Moved to new account address": "Déplacé vers une nouvelle adresse de compte",
|
"Moved to new account address": "Déplacé vers une nouvelle adresse de compte",
|
||||||
"Yet another Epicyon Instance": "Encore une autre instance Epicyon",
|
"Yet another Epicyon Instance": "Encore une autre instance Epicyon",
|
||||||
"Other accounts": "Autres comptes",
|
"Other accounts": "Autres comptes",
|
||||||
"Pin this post to your profile.": "Épinglez ce message à votre profil."
|
"Pin this post to your profile.": "Épinglez ce message à votre profil.",
|
||||||
|
"Administered by": "Administré par",
|
||||||
|
"Version": "Version"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -361,5 +361,7 @@
|
||||||
"Moved to new account address": "Ar athraíodh a ionad go seoladh cuntas nua",
|
"Moved to new account address": "Ar athraíodh a ionad go seoladh cuntas nua",
|
||||||
"Yet another Epicyon Instance": "Institiúid Epicyon eile fós",
|
"Yet another Epicyon Instance": "Institiúid Epicyon eile fós",
|
||||||
"Other accounts": "Cuntais eile",
|
"Other accounts": "Cuntais eile",
|
||||||
"Pin this post to your profile.": "Bioráin an post seo le do phróifíl."
|
"Pin this post to your profile.": "Bioráin an post seo le do phróifíl.",
|
||||||
|
"Administered by": "Riartha ag",
|
||||||
|
"Version": "Leagan"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -361,5 +361,7 @@
|
||||||
"Moved to new account address": "नए खाते के पते पर ले जाया गया",
|
"Moved to new account address": "नए खाते के पते पर ले जाया गया",
|
||||||
"Yet another Epicyon Instance": "फिर भी एक और एपिकॉन उदाहरण",
|
"Yet another Epicyon Instance": "फिर भी एक और एपिकॉन उदाहरण",
|
||||||
"Other accounts": "अन्य खाते",
|
"Other accounts": "अन्य खाते",
|
||||||
"Pin this post to your profile.": "इस पोस्ट को अपनी प्रोफाइल पर पिन करें।"
|
"Pin this post to your profile.": "इस पोस्ट को अपनी प्रोफाइल पर पिन करें।",
|
||||||
|
"Administered by": "द्वारा प्रशासित",
|
||||||
|
"Version": "संस्करण"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -361,5 +361,7 @@
|
||||||
"Moved to new account address": "Spostato al nuovo indirizzo dell'account",
|
"Moved to new account address": "Spostato al nuovo indirizzo dell'account",
|
||||||
"Yet another Epicyon Instance": "Ancora un'altra istanza di Epicyon",
|
"Yet another Epicyon Instance": "Ancora un'altra istanza di Epicyon",
|
||||||
"Other accounts": "Altri account",
|
"Other accounts": "Altri account",
|
||||||
"Pin this post to your profile.": "Metti questo post sul tuo profilo."
|
"Pin this post to your profile.": "Metti questo post sul tuo profilo.",
|
||||||
|
"Administered by": "Amministrato da",
|
||||||
|
"Version": "Versione"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -361,5 +361,7 @@
|
||||||
"Moved to new account address": "新しいアカウントアドレスに移動しました",
|
"Moved to new account address": "新しいアカウントアドレスに移動しました",
|
||||||
"Yet another Epicyon Instance": "さらに別のエピキオンインスタンス",
|
"Yet another Epicyon Instance": "さらに別のエピキオンインスタンス",
|
||||||
"Other accounts": "その他のアカウント",
|
"Other accounts": "その他のアカウント",
|
||||||
"Pin this post to your profile.": "この投稿をプロフィールに固定します。"
|
"Pin this post to your profile.": "この投稿をプロフィールに固定します。",
|
||||||
|
"Administered by": "管理者",
|
||||||
|
"Version": "バージョン"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -357,5 +357,7 @@
|
||||||
"Moved to new account address": "Moved to new account address",
|
"Moved to new account address": "Moved to new account address",
|
||||||
"Yet another Epicyon Instance": "Yet another Epicyon Instance",
|
"Yet another Epicyon Instance": "Yet another Epicyon Instance",
|
||||||
"Other accounts": "Other accounts",
|
"Other accounts": "Other accounts",
|
||||||
"Pin this post to your profile.": "Pin this post to your profile."
|
"Pin this post to your profile.": "Pin this post to your profile.",
|
||||||
|
"Administered by": "Administered by",
|
||||||
|
"Version": "Version"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -361,5 +361,7 @@
|
||||||
"Moved to new account address": "Movido para o novo endereço da conta",
|
"Moved to new account address": "Movido para o novo endereço da conta",
|
||||||
"Yet another Epicyon Instance": "Mais uma instância do Epicyon",
|
"Yet another Epicyon Instance": "Mais uma instância do Epicyon",
|
||||||
"Other accounts": "Outras contas",
|
"Other accounts": "Outras contas",
|
||||||
"Pin this post to your profile.": "Fixar esta postagem em seu perfil."
|
"Pin this post to your profile.": "Fixar esta postagem em seu perfil.",
|
||||||
|
"Administered by": "Administrado por",
|
||||||
|
"Version": "Versão"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -361,5 +361,7 @@
|
||||||
"Moved to new account address": "Перемещен на новый адрес учетной записи",
|
"Moved to new account address": "Перемещен на новый адрес учетной записи",
|
||||||
"Yet another Epicyon Instance": "Еще один экземпляр Эпикиона",
|
"Yet another Epicyon Instance": "Еще один экземпляр Эпикиона",
|
||||||
"Other accounts": "Другие аккаунты",
|
"Other accounts": "Другие аккаунты",
|
||||||
"Pin this post to your profile.": "Закрепите это сообщение в своем профиле."
|
"Pin this post to your profile.": "Закрепите это сообщение в своем профиле.",
|
||||||
|
"Administered by": "Под управлением",
|
||||||
|
"Version": "Версия"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -361,5 +361,7 @@
|
||||||
"Moved to new account address": "移至新帐户地址",
|
"Moved to new account address": "移至新帐户地址",
|
||||||
"Yet another Epicyon Instance": "另一个Epicyon实例",
|
"Yet another Epicyon Instance": "另一个Epicyon实例",
|
||||||
"Other accounts": "其他账户",
|
"Other accounts": "其他账户",
|
||||||
"Pin this post to your profile.": "将此帖子固定到您的个人资料。"
|
"Pin this post to your profile.": "将此帖子固定到您的个人资料。",
|
||||||
|
"Administered by": "由...管理",
|
||||||
|
"Version": "版"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
29
utils.py
29
utils.py
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "utils.py"
|
__filename__ = "utils.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
@ -14,11 +14,36 @@ import json
|
||||||
from socket import error as SocketError
|
from socket import error as SocketError
|
||||||
import errno
|
import errno
|
||||||
import urllib.request
|
import urllib.request
|
||||||
|
import idna
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
from calendar import monthrange
|
from calendar import monthrange
|
||||||
from followingCalendar import addPersonToCalendar
|
from followingCalendar import addPersonToCalendar
|
||||||
|
|
||||||
|
|
||||||
|
def _localNetworkHost(host: str) -> bool:
|
||||||
|
"""Returns true if the given host is on the local network
|
||||||
|
"""
|
||||||
|
if host.startswith('localhost') or \
|
||||||
|
host.startswith('192.') or \
|
||||||
|
host.startswith('127.') or \
|
||||||
|
host.startswith('10.'):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def decodedHost(host: str) -> str:
|
||||||
|
"""Convert hostname to internationalized domain
|
||||||
|
https://en.wikipedia.org/wiki/Internationalized_domain_name
|
||||||
|
"""
|
||||||
|
if ':' not in host:
|
||||||
|
# eg. mydomain:8000
|
||||||
|
if not _localNetworkHost(host):
|
||||||
|
if not host.endswith('.onion'):
|
||||||
|
if not host.endswith('.i2p'):
|
||||||
|
return idna.decode(host)
|
||||||
|
return host
|
||||||
|
|
||||||
|
|
||||||
def getLockedAccount(actorJson: {}) -> bool:
|
def getLockedAccount(actorJson: {}) -> bool:
|
||||||
"""Returns whether the given account requires follower approval
|
"""Returns whether the given account requires follower approval
|
||||||
"""
|
"""
|
||||||
|
|
@ -1096,7 +1121,7 @@ def validNickname(domain: str, nickname: str) -> bool:
|
||||||
'tlreplies', 'tlmedia', 'tlblogs',
|
'tlreplies', 'tlmedia', 'tlblogs',
|
||||||
'tlevents', 'tlblogs', 'tlfeatures',
|
'tlevents', 'tlblogs', 'tlfeatures',
|
||||||
'moderation', 'moderationaction',
|
'moderation', 'moderationaction',
|
||||||
'activity', 'undo',
|
'activity', 'undo', 'pinned',
|
||||||
'reply', 'replies', 'question', 'like',
|
'reply', 'replies', 'question', 'like',
|
||||||
'likes', 'users', 'statuses', 'tags',
|
'likes', 'users', 'statuses', 'tags',
|
||||||
'accounts', 'channels', 'profile',
|
'accounts', 'channels', 'profile',
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "webapp_about.py"
|
__filename__ = "webapp_about.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
@ -14,7 +14,7 @@ from webapp_utils import htmlFooter
|
||||||
|
|
||||||
|
|
||||||
def htmlAbout(cssCache: {}, baseDir: str, httpPrefix: str,
|
def htmlAbout(cssCache: {}, baseDir: str, httpPrefix: str,
|
||||||
domainFull: str, onionDomain: str) -> str:
|
domainFull: str, onionDomain: str, translate: {}) -> str:
|
||||||
"""Show the about screen
|
"""Show the about screen
|
||||||
"""
|
"""
|
||||||
adminNickname = getConfigParam(baseDir, 'admin')
|
adminNickname = getConfigParam(baseDir, 'admin')
|
||||||
|
|
@ -50,8 +50,10 @@ def htmlAbout(cssCache: {}, baseDir: str, httpPrefix: str,
|
||||||
adminActor = '/users/' + adminNickname
|
adminActor = '/users/' + adminNickname
|
||||||
aboutForm += \
|
aboutForm += \
|
||||||
'<div class="container"><center>\n' + \
|
'<div class="container"><center>\n' + \
|
||||||
'<p class="administeredby">Administered by <a href="' + \
|
'<p class="administeredby">' + \
|
||||||
adminActor + '">' + adminNickname + '</a></p>\n' + \
|
translate['Administered by'] + ' <a href="' + \
|
||||||
'</center></div>\n'
|
adminActor + '">' + adminNickname + '</a>. ' + \
|
||||||
|
translate['Version'] + ' ' + __version__ + \
|
||||||
|
'</p>\n</center></div>\n'
|
||||||
aboutForm += htmlFooter()
|
aboutForm += htmlFooter()
|
||||||
return aboutForm
|
return aboutForm
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "webapp_calendar.py"
|
__filename__ = "webapp_calendar.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "webapp_column_left.py"
|
__filename__ = "webapp_column_left.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "webapp_column_right.py"
|
__filename__ = "webapp_column_right.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "webapp_confirm.py"
|
__filename__ = "webapp_confirm.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "webapp_create_post.py"
|
__filename__ = "webapp_create_post.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "webapp_frontscreen.py"
|
__filename__ = "webapp_frontscreen.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "webapp_hashtagswarm.py"
|
__filename__ = "webapp_hashtagswarm.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "webapp_headerbuttons.py"
|
__filename__ = "webapp_headerbuttons.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "webapp_login.py"
|
__filename__ = "webapp_login.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "webapp_media.py"
|
__filename__ = "webapp_media.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "webapp_moderation.py"
|
__filename__ = "webapp_moderation.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "webapp_person_options.py"
|
__filename__ = "webapp_person_options.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "webapp_post.py"
|
__filename__ = "webapp_post.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "webapp_profile.py"
|
__filename__ = "webapp_profile.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "webapp_question.py"
|
__filename__ = "webapp_question.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "webapp_search.py"
|
__filename__ = "webapp_search.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "webapp_suspended.py"
|
__filename__ = "webapp_suspended.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "webapp_timeline.py"
|
__filename__ = "webapp_timeline.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "webapp_tos.py"
|
__filename__ = "webapp_tos.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "webapp_utils.py"
|
__filename__ = "webapp_utils.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "webfinger.py"
|
__filename__ = "webfinger.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
2
xmpp.py
2
xmpp.py
|
|
@ -1,7 +1,7 @@
|
||||||
__filename__ = "xmpp.py"
|
__filename__ = "xmpp.py"
|
||||||
__author__ = "Bob Mottram"
|
__author__ = "Bob Mottram"
|
||||||
__license__ = "AGPL3+"
|
__license__ = "AGPL3+"
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0"
|
||||||
__maintainer__ = "Bob Mottram"
|
__maintainer__ = "Bob Mottram"
|
||||||
__email__ = "bob@freedombone.net"
|
__email__ = "bob@freedombone.net"
|
||||||
__status__ = "Production"
|
__status__ = "Production"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue