mirror of https://gitlab.com/bashrc2/epicyon
Merge branch 'main' of ssh://code.freedombone.net:2222/bashrc/epicyon
commit
31d6ca9985
37
daemon.py
37
daemon.py
|
|
@ -256,6 +256,7 @@ from cache import checkForChangedActor
|
||||||
from cache import storePersonInCache
|
from cache import storePersonInCache
|
||||||
from cache import getPersonFromCache
|
from cache import getPersonFromCache
|
||||||
from httpsig import verifyPostHeaders
|
from httpsig import verifyPostHeaders
|
||||||
|
from theme import exportTheme
|
||||||
from theme import isNewsThemeName
|
from theme import isNewsThemeName
|
||||||
from theme import getTextModeBanner
|
from theme import getTextModeBanner
|
||||||
from theme import setNewsAvatar
|
from theme import setNewsAvatar
|
||||||
|
|
@ -4135,6 +4136,18 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
welcomeScreenIsComplete(self.server.baseDir, nickname,
|
welcomeScreenIsComplete(self.server.baseDir, nickname,
|
||||||
self.server.domain)
|
self.server.domain)
|
||||||
onFinalWelcomeScreen = True
|
onFinalWelcomeScreen = True
|
||||||
|
elif 'name="submitExportTheme"' in postBytesStr:
|
||||||
|
print('submitExportTheme')
|
||||||
|
themeDownloadPath = actorStr
|
||||||
|
if exportTheme(self.server.baseDir,
|
||||||
|
self.server.themeName):
|
||||||
|
themeDownloadPath += \
|
||||||
|
'/exports/' + self.server.themeName + '.zip'
|
||||||
|
print('submitExportTheme path=' + themeDownloadPath)
|
||||||
|
self._redirect_headers(themeDownloadPath,
|
||||||
|
cookie, callingDomain)
|
||||||
|
self.server.POSTbusy = False
|
||||||
|
return
|
||||||
|
|
||||||
# extract all of the text fields into a dict
|
# extract all of the text fields into a dict
|
||||||
fields = \
|
fields = \
|
||||||
|
|
@ -5483,6 +5496,23 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
None, callingDomain)
|
None, callingDomain)
|
||||||
self._write(msg)
|
self._write(msg)
|
||||||
|
|
||||||
|
def _getExportedTheme(self, callingDomain: str, path: str,
|
||||||
|
baseDir: str, domainFull: str,
|
||||||
|
debug: bool) -> None:
|
||||||
|
"""Returns an exported theme zip file
|
||||||
|
"""
|
||||||
|
filename = path.split('/exports/', 1)[1]
|
||||||
|
filename = baseDir + '/exports/' + filename
|
||||||
|
if os.path.isfile(filename):
|
||||||
|
with open(filename, 'rb') as fp:
|
||||||
|
exportBinary = fp.read()
|
||||||
|
exportType = 'application/zip'
|
||||||
|
self._set_headers_etag(filename, exportType,
|
||||||
|
exportBinary, None,
|
||||||
|
domainFull)
|
||||||
|
self._write(exportBinary)
|
||||||
|
self._404()
|
||||||
|
|
||||||
def _getFonts(self, callingDomain: str, path: str,
|
def _getFonts(self, callingDomain: str, path: str,
|
||||||
baseDir: str, debug: bool,
|
baseDir: str, debug: bool,
|
||||||
GETstartTime, GETtimings: {}) -> None:
|
GETstartTime, GETtimings: {}) -> None:
|
||||||
|
|
@ -10815,6 +10845,13 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
GETstartTime, GETtimings):
|
GETstartTime, GETtimings):
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if authorized and '/exports/' in self.path:
|
||||||
|
self._getExportedTheme(callingDomain, self.path,
|
||||||
|
self.server.baseDir,
|
||||||
|
self.server.domainFull,
|
||||||
|
self.server.debug)
|
||||||
|
return
|
||||||
|
|
||||||
# get fonts
|
# get fonts
|
||||||
if '/fonts/' in self.path:
|
if '/fonts/' in self.path:
|
||||||
self._getFonts(callingDomain, self.path,
|
self._getFonts(callingDomain, self.path,
|
||||||
|
|
|
||||||
19
theme.py
19
theme.py
|
|
@ -11,9 +11,28 @@ from utils import loadJson
|
||||||
from utils import saveJson
|
from utils import saveJson
|
||||||
from utils import getImageExtensions
|
from utils import getImageExtensions
|
||||||
from shutil import copyfile
|
from shutil import copyfile
|
||||||
|
from shutil import make_archive
|
||||||
from content import dangerousCSS
|
from content import dangerousCSS
|
||||||
|
|
||||||
|
|
||||||
|
def exportTheme(baseDir: str, theme: str) -> bool:
|
||||||
|
"""Exports a theme as a zip file
|
||||||
|
"""
|
||||||
|
themeDir = baseDir + '/theme/' + theme
|
||||||
|
if not os.path.isfile(themeDir + '/theme.json'):
|
||||||
|
return False
|
||||||
|
if not os.path.isdir(baseDir + '/exports'):
|
||||||
|
os.mkdir(baseDir + '/exports')
|
||||||
|
exportFilename = baseDir + '/exports/' + theme + '.zip'
|
||||||
|
if os.path.isfile(exportFilename):
|
||||||
|
os.remove(exportFilename)
|
||||||
|
try:
|
||||||
|
make_archive(baseDir + '/exports/' + theme, 'zip', themeDir)
|
||||||
|
except BaseException:
|
||||||
|
pass
|
||||||
|
return os.path.isfile(exportFilename)
|
||||||
|
|
||||||
|
|
||||||
def _getThemeFiles() -> []:
|
def _getThemeFiles() -> []:
|
||||||
"""Gets the list of theme style sheets
|
"""Gets the list of theme style sheets
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
|
|
@ -1347,7 +1347,7 @@ def htmlEditProfile(cssCache: {}, translate: {}, baseDir: str, path: str,
|
||||||
translate['Export Theme'] + '</label><br>\n'
|
translate['Export Theme'] + '</label><br>\n'
|
||||||
graphicsStr += \
|
graphicsStr += \
|
||||||
' <button type="submit" class="button" ' + \
|
' <button type="submit" class="button" ' + \
|
||||||
'name="exportTheme">➤</button>\n'
|
'name="submitExportTheme">➤</button>\n'
|
||||||
|
|
||||||
graphicsStr += ' </div></details>\n'
|
graphicsStr += ' </div></details>\n'
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue