import cherrypy import os import os.path import re def chrome_version(): ua = cherrypy.request.headers['User-Agent'] match = re.search('Mozilla\/5\.0 \(X11; Linux x86_64\) AppleWebKit\/\d+\.\d+ \(KHTML, like Gecko\) Chrome\/(\d+\.\d+\.\d+\.\d+) Safari\/\d+\.\d+', ua) if match is not None: return match.group(1) match = re.search('Mozilla\/5\.0 \(Windows NT 10\.0; Win64; x64\) AppleWebKit\/\d+\.\d+ \(KHTML, like Gecko\) Chrome\/(\d+\.\d+\.\d+\.\d+) Safari\/\d+\.\d+', ua) if match is not None: return 'win_' + match.group(1) def chrome_version_path(path): return os.path.join('./', chrome_version(), path) class Server(object): def _cp_dispatch(self, vpath): path = os.path.join(*vpath) cherrypy.request.params['file'] = path for i in range(len(vpath)): vpath.pop() return self @cherrypy.expose() def index(self, file=None): version = chrome_version() if not os.path.isdir(version): return '