mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Endpoint to print directly to server log
This commit is contained in:
parent
0951d3228d
commit
4eb45e1816
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
from __future__ import (unicode_literals, division, absolute_import,
|
from __future__ import (unicode_literals, division, absolute_import,
|
||||||
print_function)
|
print_function)
|
||||||
import hashlib, random, zipfile
|
import hashlib, random, zipfile, shutil, sys
|
||||||
from json import load as load_json_file
|
from json import load as load_json_file
|
||||||
|
|
||||||
from calibre import as_unicode
|
from calibre import as_unicode
|
||||||
@ -33,6 +33,14 @@ def auto_reload(ctx, rd):
|
|||||||
rd.outheaders.set('Calibre-Auto-Reload-Port', type('')(auto_reload_port), replace_all=True)
|
rd.outheaders.set('Calibre-Auto-Reload-Port', type('')(auto_reload_port), replace_all=True)
|
||||||
return lopen(P('content-server/autoreload.js'), 'rb')
|
return lopen(P('content-server/autoreload.js'), 'rb')
|
||||||
|
|
||||||
|
|
||||||
|
@endpoint('/console-print', methods=('POST',))
|
||||||
|
def console_print(ctx, rd):
|
||||||
|
if not getattr(rd.opts, 'allow_console_print', False):
|
||||||
|
raise HTTPNotFound('console printing is not allowed')
|
||||||
|
shutil.copyfileobj(rd.request_body_file, sys.stdout)
|
||||||
|
return ''
|
||||||
|
|
||||||
def get_basic_query_data(ctx, rd):
|
def get_basic_query_data(ctx, rd):
|
||||||
db, library_id, library_map, default_library = get_library_data(ctx, rd)
|
db, library_id, library_map, default_library = get_library_data(ctx, rd)
|
||||||
skeys = db.field_metadata.sortable_field_keys()
|
skeys = db.field_metadata.sortable_field_keys()
|
||||||
@ -89,6 +97,7 @@ def interface_data(ctx, rd):
|
|||||||
'gui_last_modified_display_format':tweaks['gui_last_modified_display_format'],
|
'gui_last_modified_display_format':tweaks['gui_last_modified_display_format'],
|
||||||
'use_roman_numerals_for_series_number': get_use_roman(),
|
'use_roman_numerals_for_series_number': get_use_roman(),
|
||||||
'translations': get_translations(),
|
'translations': get_translations(),
|
||||||
|
'allow_console_print':getattr(rd.opts, 'allow_console_print', False),
|
||||||
}
|
}
|
||||||
ans['library_map'], ans['default_library'] = ctx.library_info(rd)
|
ans['library_map'], ans['default_library'] = ctx.library_info(rd)
|
||||||
ud = {}
|
ud = {}
|
||||||
|
@ -235,6 +235,7 @@ def main(args=sys.argv):
|
|||||||
except NoAutoReload as e:
|
except NoAutoReload as e:
|
||||||
raise SystemExit(e.message)
|
raise SystemExit(e.message)
|
||||||
opts.auto_reload_port=int(os.environ.get('CALIBRE_AUTORELOAD_PORT', 0))
|
opts.auto_reload_port=int(os.environ.get('CALIBRE_AUTORELOAD_PORT', 0))
|
||||||
|
opts.allow_console_print = 'CALIBRE_ALLOW_CONSOLE_PRINT' in os.environ
|
||||||
server=Server(libraries, opts)
|
server=Server(libraries, opts)
|
||||||
if opts.daemonize:
|
if opts.daemonize:
|
||||||
if not opts.log and not iswindows:
|
if not opts.log and not iswindows:
|
||||||
|
@ -99,6 +99,20 @@ def ajax_send(path, data, on_complete, on_progress=None, query=None, timeout=30*
|
|||||||
xhr.send(JSON.stringify(data))
|
xhr.send(JSON.stringify(data))
|
||||||
return xhr
|
return xhr
|
||||||
|
|
||||||
|
|
||||||
|
allow_console_print = False
|
||||||
|
|
||||||
|
def set_allow_console_print(val):
|
||||||
|
nonlocal allow_console_print
|
||||||
|
allow_console_print = bool(val)
|
||||||
|
|
||||||
|
def console_print(*args):
|
||||||
|
print(*args)
|
||||||
|
if allow_console_print:
|
||||||
|
data = ' '.join(map(str, args)) + '\n'
|
||||||
|
xhr = ajax('console-print', def():pass;, method='POST', progress_totals_needed=False)
|
||||||
|
xhr.send(data)
|
||||||
|
|
||||||
# TODO: Implement AJAX based switch user by:
|
# TODO: Implement AJAX based switch user by:
|
||||||
# 1) POST to a logout URL with an incorrect username and password
|
# 1) POST to a logout URL with an incorrect username and password
|
||||||
# 2) Have the server accept that incorrect username/password
|
# 2) Have the server accept that incorrect username/password
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
from __python__ import hash_literals
|
from __python__ import hash_literals
|
||||||
|
|
||||||
import initialize # noqa: unused-import
|
import initialize # noqa: unused-import
|
||||||
from ajax import ajax
|
from ajax import ajax, set_allow_console_print
|
||||||
from elementmaker import E
|
from elementmaker import E
|
||||||
from gettext import gettext as _, install
|
from gettext import gettext as _, install
|
||||||
from session import UserSessionData
|
from session import UserSessionData
|
||||||
@ -20,6 +20,7 @@ def on_library_loaded(end_type, xhr, ev):
|
|||||||
if end_type is 'load':
|
if end_type is 'load':
|
||||||
interface_data = JSON.parse(xhr.responseText)
|
interface_data = JSON.parse(xhr.responseText)
|
||||||
interface_data.main_js = main_js
|
interface_data.main_js = main_js
|
||||||
|
set_allow_console_print(interface_data.allow_console_print)
|
||||||
main_js = None
|
main_js = None
|
||||||
script = document.getElementById('main_js')
|
script = document.getElementById('main_js')
|
||||||
if script:
|
if script:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user