Beispiel #1
0
 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
Beispiel #2
0
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
Beispiel #3
0
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"))
Beispiel #4
0
 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
Beispiel #5
0
 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
Beispiel #6
0
    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)
Beispiel #7
0
        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)
Beispiel #8
0
    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)
Beispiel #9
0
 def add_available_port(self, port):
     s = cache.get(self.global_port_key)
     s.add(port)
     cache.set(self.global_port_key, s)
Beispiel #10
0
 def add_available_network_range(self, *ranges):
     s = cache.get(self.global_network_key)
     s.update(ranges)
     cache.set(self.global_network_key, s)