mirror of
https://github.com/internetarchive/brozzler.git
synced 2025-02-24 00:29:53 -05:00
check browser version at startup
This commit is contained in:
parent
3b800b583f
commit
506ab0ccc2
@ -29,6 +29,35 @@ import signal
|
||||
import sqlite3
|
||||
import json
|
||||
import tempfile
|
||||
import sys
|
||||
|
||||
def check_version(chrome_exe):
|
||||
'''
|
||||
Raises SystemExit if `chrome_exe` is not a supported browser version.
|
||||
|
||||
Must run in the main thread to have the desired effect.
|
||||
'''
|
||||
# mac$ /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --version
|
||||
# Google Chrome 64.0.3282.140
|
||||
# mac$ /Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary --version
|
||||
# Google Chrome 66.0.3341.0 canary
|
||||
# linux$ chromium-browser --version
|
||||
# Using PPAPI flash.
|
||||
# --ppapi-flash-path=/usr/lib/adobe-flashplugin/libpepflashplayer.so --ppapi-flash-version=
|
||||
# Chromium 61.0.3163.100 Built on Ubuntu , running on Ubuntu 16.04
|
||||
cmd = [chrome_exe, '--version']
|
||||
out = subprocess.check_output(cmd, timeout=60)
|
||||
m = re.search(br'(Chromium|Google Chrome) ([\d.]+)', out)
|
||||
if not m:
|
||||
sys.exit(
|
||||
'unable to parse browser version from output of '
|
||||
'%r: %r' % (subprocess.list2cmdline(cmd), out))
|
||||
version_str = m.group(2).decode()
|
||||
major_version = int(version_str.split('.')[0])
|
||||
if major_version < 64:
|
||||
sys.exit('brozzler requires chrome/chromium version 64 or '
|
||||
'later but %s reports version %s' % (
|
||||
chrome_exe, version_str))
|
||||
|
||||
class Chrome:
|
||||
logger = logging.getLogger(__module__ + '.' + __qualname__)
|
||||
|
@ -167,6 +167,7 @@ def brozzle_page(argv=None):
|
||||
|
||||
args = arg_parser.parse_args(args=argv[1:])
|
||||
configure_logging(args)
|
||||
brozzler.chrome.check_version(args.chrome_exe)
|
||||
|
||||
behavior_parameters = {}
|
||||
if args.behavior_parameters:
|
||||
@ -325,6 +326,7 @@ def brozzler_worker(argv=None):
|
||||
|
||||
args = arg_parser.parse_args(args=argv[1:])
|
||||
configure_logging(args)
|
||||
brozzler.chrome.check_version(args.chrome_exe)
|
||||
|
||||
def dump_state(signum, frame):
|
||||
signal.signal(signal.SIGQUIT, signal.SIG_IGN)
|
||||
|
@ -268,6 +268,7 @@ def main(argv=None):
|
||||
arg_parser = _build_arg_parser(argv)
|
||||
args = arg_parser.parse_args(args=argv[1:])
|
||||
brozzler.cli.configure_logging(args)
|
||||
brozzler.chrome.check_version(args.chrome_exe)
|
||||
|
||||
controller = BrozzlerEasyController(args)
|
||||
signal.signal(signal.SIGTERM, lambda a,b: controller.stop.set())
|
||||
|
Loading…
x
Reference in New Issue
Block a user