Merge branch 'main' of ssh://code.freedombone.net:2222/bashrc/epicyon

main
Bob Mottram 2021-07-09 21:57:00 +01:00
commit dc107eb554
3 changed files with 80 additions and 94 deletions

View File

@ -208,6 +208,8 @@ 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 getImageExtensionFromMimeType
from utils import getImageMimeType
from utils import hasObjectDict from utils import hasObjectDict
from utils import userAgentDomain from utils import userAgentDomain
from utils import isLocalNetworkAddress from utils import isLocalNetworkAddress
@ -733,10 +735,6 @@ class PubServer(BaseHTTPRequestHandler):
self.send_header('Host', callingDomain) self.send_header('Host', callingDomain)
self.send_header('InstanceID', self.server.instanceId) self.send_header('InstanceID', self.server.instanceId)
self.send_header('Content-Length', '0') self.send_header('Content-Length', '0')
# self.send_header('X-Robots-Tag',
# 'noindex, nofollow, noarchive, nosnippet')
# self.send_header('Cache-Control', 'public')
# self.send_header('Referrer-Policy', 'origin')
self.end_headers() self.end_headers()
def _httpReturnCode(self, httpCode: int, httpDescription: str, def _httpReturnCode(self, httpCode: int, httpDescription: str,
@ -756,10 +754,6 @@ class PubServer(BaseHTTPRequestHandler):
self.send_header('Content-Type', 'text/html; charset=utf-8') self.send_header('Content-Type', 'text/html; charset=utf-8')
msgLenStr = str(len(msg)) msgLenStr = str(len(msg))
self.send_header('Content-Length', msgLenStr) self.send_header('Content-Length', msgLenStr)
# self.send_header('X-Robots-Tag',
# 'noindex, nofollow, noarchive, nosnippet')
# self.send_header('Cache-Control', 'public')
# self.send_header('Referrer-Policy', 'origin')
self.end_headers() self.end_headers()
if not self._write(msg): if not self._write(msg):
print('Error when showing ' + str(httpCode)) print('Error when showing ' + str(httpCode))
@ -3242,17 +3236,9 @@ class PubServer(BaseHTTPRequestHandler):
return return
mediaFilenameBase = accountsDir + '/upload' mediaFilenameBase = accountsDir + '/upload'
mediaFilename = mediaFilenameBase + '.png' mediaFilename = \
if self.headers['Content-type'].endswith('jpeg'): mediaFilenameBase + '.' + \
mediaFilename = mediaFilenameBase + '.jpg' getImageExtensionFromMimeType(self.headers['Content-type'])
if self.headers['Content-type'].endswith('gif'):
mediaFilename = mediaFilenameBase + '.gif'
if self.headers['Content-type'].endswith('svg+xml'):
mediaFilename = mediaFilenameBase + '.svg'
if self.headers['Content-type'].endswith('webp'):
mediaFilename = mediaFilenameBase + '.webp'
if self.headers['Content-type'].endswith('avif'):
mediaFilename = mediaFilenameBase + '.avif'
with open(mediaFilename, 'wb') as avFile: with open(mediaFilename, 'wb') as avFile:
avFile.write(mediaBytes) avFile.write(mediaBytes)
if debug: if debug:
@ -6011,23 +5997,11 @@ class PubServer(BaseHTTPRequestHandler):
self._304() self._304()
return return
mediaImageType = 'png' mediaImageType = getImageMimeType(emojiFilename)
if emojiFilename.endswith('.png'):
mediaImageType = 'png'
elif emojiFilename.endswith('.jpg'):
mediaImageType = 'jpeg'
elif emojiFilename.endswith('.webp'):
mediaImageType = 'webp'
elif emojiFilename.endswith('.avif'):
mediaImageType = 'avif'
elif emojiFilename.endswith('.svg'):
mediaImageType = 'svg+xml'
else:
mediaImageType = 'gif'
with open(emojiFilename, 'rb') as avFile: with open(emojiFilename, 'rb') as avFile:
mediaBinary = avFile.read() mediaBinary = avFile.read()
self._set_headers_etag(emojiFilename, self._set_headers_etag(emojiFilename,
'image/' + mediaImageType, mediaImageType,
mediaBinary, None, mediaBinary, None,
self.server.domainFull) self.server.domainFull)
self._write(mediaBinary) self._write(mediaBinary)
@ -6090,11 +6064,7 @@ class PubServer(BaseHTTPRequestHandler):
GETstartTime, GETtimings: {}) -> None: GETstartTime, GETtimings: {}) -> None:
"""Shows a help screen image """Shows a help screen image
""" """
if not path.endswith('.jpg') and \ if not isImageFile(path):
not path.endswith('.png') and \
not path.endswith('.webp') and \
not path.endswith('.avif') and \
not path.endswith('.gif'):
return return
mediaStr = path.split('/helpimages/')[1] mediaStr = path.split('/helpimages/')[1]
if '/' not in mediaStr: if '/' not in mediaStr:
@ -10070,23 +10040,11 @@ class PubServer(BaseHTTPRequestHandler):
self._304() self._304()
return True return True
mediaFileType = 'png' mediaFileType = getImageMimeType(mediaFilename)
if mediaFilename.endswith('.png'):
mediaFileType = 'png'
elif mediaFilename.endswith('.jpg'):
mediaFileType = 'jpeg'
elif mediaFilename.endswith('.webp'):
mediaFileType = 'webp'
elif mediaFilename.endswith('.avif'):
mediaFileType = 'avif'
elif mediaFilename.endswith('.svg'):
mediaFileType = 'svg+xml'
else:
mediaFileType = 'gif'
with open(mediaFilename, 'rb') as avFile: with open(mediaFilename, 'rb') as avFile:
mediaBinary = avFile.read() mediaBinary = avFile.read()
self._set_headers_etag(mediaFilename, self._set_headers_etag(mediaFilename,
'image/' + mediaFileType, mediaFileType,
mediaBinary, None, mediaBinary, None,
self.server.domainFull) self.server.domainFull)
self._write(mediaBinary) self._write(mediaBinary)
@ -10139,23 +10097,11 @@ class PubServer(BaseHTTPRequestHandler):
# The file has not changed # The file has not changed
self._304() self._304()
return True return True
mediaImageType = 'png' mediaImageType = getImageMimeType(avatarFile)
if avatarFile.endswith('.png'):
mediaImageType = 'png'
elif avatarFile.endswith('.jpg'):
mediaImageType = 'jpeg'
elif avatarFile.endswith('.gif'):
mediaImageType = 'gif'
elif avatarFile.endswith('.avif'):
mediaImageType = 'avif'
elif avatarFile.endswith('.svg'):
mediaImageType = 'svg+xml'
else:
mediaImageType = 'webp'
with open(avatarFilename, 'rb') as avFile: with open(avatarFilename, 'rb') as avFile:
mediaBinary = avFile.read() mediaBinary = avFile.read()
self._set_headers_etag(avatarFilename, self._set_headers_etag(avatarFilename,
'image/' + mediaImageType, mediaImageType,
mediaBinary, None, mediaBinary, None,
self.server.domainFull) self.server.domainFull)
self._write(mediaBinary) self._write(mediaBinary)
@ -11397,14 +11343,9 @@ class PubServer(BaseHTTPRequestHandler):
'show screenshot done') 'show screenshot done')
# image on login screen or qrcode # image on login screen or qrcode
if self.path == '/login.png' or \ if (isImageFile(self.path) and
self.path == '/login.gif' or \ (self.path.startswith('/login.') or
self.path == '/login.svg' or \ self.path.startswith('/qrcode.png'))):
self.path == '/login.webp' or \
self.path == '/login.avif' or \
self.path == '/login.jpeg' or \
self.path == '/login.jpg' or \
self.path == '/qrcode.png':
iconFilename = \ iconFilename = \
self.server.baseDir + '/accounts' + self.path self.server.baseDir + '/accounts' + self.path
if os.path.isfile(iconFilename): if os.path.isfile(iconFilename):

View File

@ -692,29 +692,40 @@ def _readLocalBoxPost(session, nickname: str, domain: str,
if hasObjectDict(postJsonObject2): if hasObjectDict(postJsonObject2):
if postJsonObject2['object'].get('attributedTo') and \ if postJsonObject2['object'].get('attributedTo') and \
postJsonObject2['object'].get('content'): postJsonObject2['object'].get('content'):
actor = postJsonObject2['object']['attributedTo'] attributedTo = postJsonObject2['object']['attributedTo']
nameStr += ' ' + translate['announces'] + ' ' + \ content = postJsonObject2['object']['content']
getNicknameFromActor(actor) if isinstance(attributedTo, str) and \
sayStr = nameStr isinstance(content, str):
_sayCommand(sayStr, sayStr, screenreader, actor = attributedTo
systemLanguage, espeak) nameStr += ' ' + translate['announces'] + ' ' + \
print('') getNicknameFromActor(actor)
if screenreader: sayStr = nameStr
time.sleep(2) _sayCommand(sayStr, sayStr, screenreader,
content = \ systemLanguage, espeak)
_textOnlyContent(postJsonObject2['object']['content']) print('')
content += _getImageDescription(postJsonObject2) if screenreader:
messageStr, detectedLinks = \ time.sleep(2)
speakableText(baseDir, content, translate) content = \
sayStr = content _textOnlyContent(content)
_sayCommand(sayStr, messageStr, screenreader, content += _getImageDescription(postJsonObject2)
systemLanguage, espeak) messageStr, detectedLinks = \
return postJsonObject2 speakableText(baseDir, content, translate)
sayStr = content
_sayCommand(sayStr, messageStr, screenreader,
systemLanguage, espeak)
return postJsonObject2
return {} return {}
actor = postJsonObject['object']['attributedTo'] attributedTo = postJsonObject['object']['attributedTo']
if not attributedTo:
return {}
content = postJsonObject['object']['content']
if not isinstance(attributedTo, str) or \
not isinstance(content, str):
return {}
actor = attributedTo
nameStr = getNicknameFromActor(actor) nameStr = getNicknameFromActor(actor)
content = _textOnlyContent(postJsonObject['object']['content']) content = _textOnlyContent(content)
content += _getImageDescription(postJsonObject) content += _getImageDescription(postJsonObject)
if isPGPEncrypted(content): if isPGPEncrypted(content):

View File

@ -238,6 +238,40 @@ def getImageExtensions() -> []:
return ('png', 'jpg', 'jpeg', 'gif', 'webp', 'avif', 'svg') return ('png', 'jpg', 'jpeg', 'gif', 'webp', 'avif', 'svg')
def getImageMimeType(imageFilename: str) -> str:
"""Returns the mime type for the given image
"""
extensionsToMime = {
'png': 'png',
'jpg': 'jpeg',
'gif': 'gif',
'avif': 'avif',
'svg': 'svg+xml',
'webp': 'webp'
}
for ext, mimeExt in extensionsToMime.items():
if imageFilename.endswith('.' + ext):
return 'image/' + mimeExt
return 'image/png'
def getImageExtensionFromMimeType(contentType: str) -> str:
"""Returns the image extension from a mime type, such as image/jpeg
"""
imageMedia = {
'png': 'png',
'jpeg': 'jpg',
'gif': 'gif',
'svg+xml': 'svg',
'webp': 'webp',
'avif': 'avif'
}
for mimeExt, ext in imageMedia.items():
if contentType.endswith(mimeExt):
return ext
return 'png'
def getVideoExtensions() -> []: def getVideoExtensions() -> []:
"""Returns a list of the possible video file extensions """Returns a list of the possible video file extensions
""" """