def _generate_sid(self): sid = str(uuid4()) v = cache.get(key=self.key_prefix + sid) while v: sid = str(uuid4()) v = cache.get(key=self.key_prefix + sid) return sid
def import_in_progress(): import_status = cache.get(key="import_status") import_error = cache.get(key="import_error") if import_error: return False elif import_status: return True else: return False
def import_ctf(): if request.method == "GET": start_time = cache.get("import_start_time") end_time = cache.get("import_end_time") import_status = cache.get("import_status") import_error = cache.get("import_error") return render_template( "admin/import.html", start_time=start_time, end_time=end_time, import_status=import_status, import_error=import_error, ) elif request.method == "POST": backup = request.files["backup"] background_import_ctf(backup) return redirect(url_for("admin.import_ctf"))
def get_available_port(self): try: s = cache.get(self.global_port_key) r = s.pop() cache.set(self.global_port_key, s) return r except KeyError: return None
def get_available_network_range(self): try: s = cache.get(self.global_network_key) r = s.pop() cache.set(self.global_network_key, s) return r except KeyError: return None
def open_session(self, app, request): sid = request.cookies.get(app.session_cookie_name) if not sid: sid = self._generate_sid() return self.session_class(sid=sid, permanent=self.permanent) if not six.PY2 and not isinstance(sid, text_type): sid = sid.decode('utf-8', 'strict') val = cache.get(self.key_prefix + sid) if val is not None: try: data = self.serializer.loads(val) return self.session_class(data, sid=sid) except Exception as e: return self.session_class(sid=sid, permanent=self.permanent) return self.session_class(sid=sid, permanent=self.permanent)
def ratelimit_function(*args, **kwargs): ip_address = current_user.get_ip() key = "{}:{}:{}".format(key_prefix, ip_address, request.endpoint) current = cache.get(key) if request.method == method: if ( current and int(current) > limit - 1 ): # -1 in order to align expected limit with the real value resp = jsonify( { "code": 429, "message": "Too many requests." } ) resp.status_code = 429 return resp else: if current is None: cache.set(key, 1, timeout=interval) else: cache.set(key, int(current) + 1, timeout=interval) return f(*args, **kwargs)
def open_session(self, app, request): sid = request.cookies.get(app.session_cookie_name) if not sid: sid = self._generate_sid() return self.session_class(sid=sid, permanent=self.permanent) if self.use_signer: try: sid_as_bytes = unsign(sid) sid = sid_as_bytes.decode() except BadSignature: sid = self._generate_sid() return self.session_class(sid=sid, permanent=self.permanent) if isinstance(sid, text_type) is False: sid = sid.decode("utf-8", "strict") val = cache.get(self.key_prefix + sid) if val is not None: try: data = self.serializer.loads(val) return self.session_class(data, sid=sid) except Exception: return self.session_class(sid=sid, permanent=self.permanent) return self.session_class(sid=sid, permanent=self.permanent)
def add_available_port(self, port): s = cache.get(self.global_port_key) s.add(port) cache.set(self.global_port_key, s)
def add_available_network_range(self, *ranges): s = cache.get(self.global_network_key) s.update(ranges) cache.set(self.global_network_key, s)