Server IP : 172.67.216.182 / Your IP : 172.71.124.10 Web Server : Apache System : Linux krdc-ubuntu-s-2vcpu-4gb-amd-blr1-01.localdomain 5.15.0-142-generic #152-Ubuntu SMP Mon May 19 10:54:31 UTC 2025 x86_64 User : www ( 1000) PHP Version : 7.4.33 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /www/server/panel/class_v2/ |
Upload File : |
import sys,os from gzip import GzipFile from io import BytesIO from flask import request, current_app,session,Response,g,abort if sys.version_info[:2] == (2, 6): class GzipFile(GzipFile): """ Backport of context manager support for python 2.6""" def __enter__(self): if self.fileobj is None: raise ValueError("I/O operation on closed GzipFile object") return self def __exit__(self, *args): self.close() class DictCache(object): def __init__(self): self.data = {} def get(self, key): return self.data.get(key) def set(self, key, value): self.data[key] = value class Compress(object): """ The Compress object allows your application to use Flask-Compress. When initialising a Compress object you may optionally provide your :class:`flask.Flask` application object if it is ready. Otherwise, you may provide it later by using the :meth:`init_app` method. :param app: optional :class:`flask.Flask` application object :type app: :class:`flask.Flask` or None """ def __init__(self, app=None): """ An alternative way to pass your :class:`flask.Flask` application object to Flask-Compress. :meth:`init_app` also takes care of some default `settings`_. :param app: the :class:`flask.Flask` application object. """ self.app = app if app is not None: self.init_app(app) def init_app(self, app): defaults = [ ('COMPRESS_MIMETYPES', ['text/html', 'text/css', 'text/xml', 'application/json', 'application/javascript']), ('COMPRESS_LEVEL', 9), ('COMPRESS_MIN_SIZE', 500), ('COMPRESS_CACHE_KEY', None), ('COMPRESS_CACHE_BACKEND', None), ('COMPRESS_REGISTER', True), ] for k, v in defaults: app.config.setdefault(k, v) backend = app.config['COMPRESS_CACHE_BACKEND'] self.cache = backend() if backend else None self.cache_key = app.config['COMPRESS_CACHE_KEY'] if (app.config['COMPRESS_REGISTER'] and app.config['COMPRESS_MIMETYPES']): app.after_request(self.after_request) def after_request(self, response): app = self.app or current_app accept_encoding = request.headers.get('Accept-Encoding', '') response.headers['Server'] = 'nginx' response.headers['Connection'] = 'keep-alive' if not 'tmp_login' in session: response.headers["X-Frame-Options"] = "SAMEORIGIN" if 'dologin' in g and app.config['SSL']: try: for k,v in request.cookies.items(): response.set_cookie(k,'',expires='Thu, 01-Jan-1970 00:00:00 GMT',path='/') except: pass if 'rm_ssl' in g: import public try: for k,v in request.cookies.items(): response.set_cookie(k,'',expires='Thu, 01-Jan-1970 00:00:00 GMT',path='/') except: pass session_name = app.config['SESSION_COOKIE_NAME'] session_id = public.get_session_id() response.set_cookie(session_name,'',expires='Thu, 01-Jan-1970 00:00:00 GMT',path='/') response.set_cookie(session_name, session_id, path='/', max_age=86400 * 30,httponly=True) request_token = request.cookies.get('request_token','') if request_token: response.set_cookie('request_token',request_token,path='/',max_age=86400 * 30) if (response.mimetype not in app.config['COMPRESS_MIMETYPES'] or 'gzip' not in accept_encoding.lower() or not 200 <= response.status_code < 300 or (response.content_length is not None and response.content_length < app.config['COMPRESS_MIN_SIZE']) or 'Content-Encoding' in response.headers): g.response = response return response response.direct_passthrough = False if self.cache: key = self.cache_key(response) gzip_content = self.cache.get(key) or self.compress(app, response) self.cache.set(key, gzip_content) else: gzip_content = self.compress(app, response) response.set_data(gzip_content) response.headers['Content-Encoding'] = 'gzip' response.headers['Content-Length'] = response.content_length vary = response.headers.get('Vary') if vary: if 'accept-encoding' not in vary.lower(): response.headers['Vary'] = '{}, Accept-Encoding'.format(vary) else: response.headers['Vary'] = 'Accept-Encoding' g.response = response return response def compress(self, app, response): gzip_buffer = BytesIO() with GzipFile(mode='wb', compresslevel=app.config['COMPRESS_LEVEL'], fileobj=gzip_buffer) as gzip_file: gzip_file.write(response.get_data()) return gzip_buffer.getvalue()