mirror of
https://github.com/QingdaoU/OnlineJudge.git
synced 2025-11-04 14:49:58 +08:00
commit
34b33d9b51
@ -14,6 +14,7 @@ class APITokenAuthMiddleware(MiddlewareMixin):
|
|||||||
try:
|
try:
|
||||||
request.user = User.objects.get(open_api_appkey=appkey, open_api=True, is_disabled=False)
|
request.user = User.objects.get(open_api_appkey=appkey, open_api=True, is_disabled=False)
|
||||||
request.csrf_processing_done = True
|
request.csrf_processing_done = True
|
||||||
|
request.auth_method = "api_key"
|
||||||
except User.DoesNotExist:
|
except User.DoesNotExist:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|||||||
@ -57,7 +57,7 @@ class ContestAPI(APIView):
|
|||||||
for ip_range in data["allowed_ip_ranges"]:
|
for ip_range in data["allowed_ip_ranges"]:
|
||||||
try:
|
try:
|
||||||
ip_network(ip_range, strict=False)
|
ip_network(ip_range, strict=False)
|
||||||
except ValueError as e:
|
except ValueError:
|
||||||
return self.error(f"{ip_range} is not a valid cidr network")
|
return self.error(f"{ip_range} is not a valid cidr network")
|
||||||
if not contest.real_time_rank and data.get("real_time_rank"):
|
if not contest.real_time_rank and data.get("real_time_rank"):
|
||||||
cache_key = f"{CacheKey.contest_rank_cache}:{contest.id}"
|
cache_key = f"{CacheKey.contest_rank_cache}:{contest.id}"
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
import os
|
|
||||||
import base64
|
import base64
|
||||||
import copy
|
import copy
|
||||||
import random
|
import random
|
||||||
|
|||||||
@ -14,9 +14,9 @@ TEMPLATE_BASE = """//PREPEND BEGIN
|
|||||||
|
|
||||||
|
|
||||||
def parse_problem_template(template_str):
|
def parse_problem_template(template_str):
|
||||||
prepend = re.findall("//PREPEND BEGIN\n([\s\S]+?)//PREPEND END", template_str)
|
prepend = re.findall(r"//PREPEND BEGIN\n([\s\S]+?)//PREPEND END", template_str)
|
||||||
template = re.findall("//TEMPLATE BEGIN\n([\s\S]+?)//TEMPLATE END", template_str)
|
template = re.findall(r"//TEMPLATE BEGIN\n([\s\S]+?)//TEMPLATE END", template_str)
|
||||||
append = re.findall("//APPEND BEGIN\n([\s\S]+?)//APPEND END", template_str)
|
append = re.findall(r"//APPEND BEGIN\n([\s\S]+?)//APPEND END", template_str)
|
||||||
return {"prepend": prepend[0] if prepend else "",
|
return {"prepend": prepend[0] if prepend else "",
|
||||||
"template": template[0] if template else "",
|
"template": template[0] if template else "",
|
||||||
"append": append[0] if append else ""}
|
"append": append[0] if append else ""}
|
||||||
|
|||||||
@ -18,6 +18,10 @@ from ..serializers import SubmissionSafeModelSerializer, SubmissionListSerialize
|
|||||||
|
|
||||||
class SubmissionAPI(APIView):
|
class SubmissionAPI(APIView):
|
||||||
def throttling(self, request):
|
def throttling(self, request):
|
||||||
|
# 使用 open_api 的请求暂不做限制
|
||||||
|
auth_method = getattr(request, "auth_method", "")
|
||||||
|
if auth_method == "api_key":
|
||||||
|
return
|
||||||
user_bucket = TokenBucket(key=str(request.user.id),
|
user_bucket = TokenBucket(key=str(request.user.id),
|
||||||
redis_conn=cache, **SysOptions.throttling["user"])
|
redis_conn=cache, **SysOptions.throttling["user"])
|
||||||
can_consume, wait = user_bucket.consume()
|
can_consume, wait = user_bucket.consume()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user