Skip to content

Commit 909e860

Browse files
authored
Merge pull request #1397 from HXSecurity/develop
Develop
2 parents 64c719d + a9335b1 commit 909e860

File tree

2 files changed

+114
-11
lines changed

2 files changed

+114
-11
lines changed

dongtai_protocol/views/agent_register.py

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,9 @@ class AgentRegisterEndPoint(OpenApiEndPoint):
3838
@staticmethod
3939
def register_agent(token, version, language, project_name, user,
4040
project_version):
41-
project = IastProject.objects.values('id').filter(name=project_name,
42-
user=user).first()
41+
department = user.get_using_department()
42+
project = IastProject.objects.values('id').filter(
43+
name=project_name, department=department).first()
4344
is_audit = AgentRegisterEndPoint.get_is_audit()
4445
if project:
4546
if project_version:
@@ -256,6 +257,7 @@ def post(self, request: Request):
256257
'mode': '插桩模式',
257258
'latest_time': int(time.time()),
258259
'template_id': template.id if template else -1,
260+
'user': user,
259261
}
260262

261263
default_params.update(
@@ -329,11 +331,20 @@ def post(self, request: Request):
329331

330332
@staticmethod
331333
def get_agent_id(token, project_name, user, current_project_version_id):
332-
queryset = IastAgent.objects.values('id').filter(
333-
token=token,
334-
project_name=project_name,
335-
user=user,
336-
project_version_id=current_project_version_id)
334+
project = IastProject.objects.filter(
335+
department=user.get_using_department(), name=project_name).first()
336+
if project:
337+
queryset = IastAgent.objects.values('id').filter(
338+
token=token,
339+
bind_project=project,
340+
department=user.get_using_department(),
341+
project_version_id=current_project_version_id)
342+
else:
343+
queryset = IastAgent.objects.values('id').filter(
344+
token=token,
345+
project_name=project_name,
346+
department=user.get_using_department(),
347+
project_version_id=current_project_version_id)
337348
agent = queryset.first()
338349
if agent:
339350
queryset.update(is_core_running=1, online=1, is_running=1)
@@ -344,8 +355,9 @@ def get_agent_id(token, project_name, user, current_project_version_id):
344355
def __register_agent(exist_project, token, user, version, project_id,
345356
project_name, project_version_id, language, is_audit):
346357
if exist_project:
347-
IastAgent.objects.filter(token=token, online=1,
348-
user=user).update(online=0)
358+
IastAgent.objects.filter(
359+
token=token, online=1,
360+
department=user.get_using_department()).update(online=0)
349361
agent = IastAgent.objects.create(
350362
token=token,
351363
version=version,
@@ -406,13 +418,11 @@ def project_create(default_params, project_name, user, version_name, template):
406418
project_created = False
407419
obj = IastProject.objects.filter(
408420
name=project_name,
409-
user=user,
410421
department=department,
411422
).first()
412423
if not obj:
413424
obj, project_created = IastProject.objects.get_or_create(
414425
name=project_name,
415-
user=user,
416426
department=department,
417427
defaults=default_params,
418428
)
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
######################################################################
2+
# @author : bidaya0 (bidaya0@$HOSTNAME)
3+
# @file : test_agent_register
4+
# @created : 星期五 12月 10, 2021 14:46:44 CST
5+
#
6+
# @description :
7+
######################################################################
8+
9+
from test.apiserver.test_agent_base import AgentTestCase
10+
from dongtai_common.models.agent import IastAgent
11+
from dongtai_common.models.department import Department
12+
from dongtai_web.projecttemplate.update_department_data import update_department_data
13+
import json
14+
import uuid
15+
16+
17+
class AgentNewRegisterGroupTokenTestCase(AgentTestCase):
18+
19+
def setUp(self):
20+
super().setUp()
21+
update_department_data()
22+
self.client.force_authenticate(user=None)
23+
self.test_agent_id = []
24+
25+
def test_rep_register(self):
26+
department = Department.objects.first()
27+
self.client.credentials(HTTP_AUTHORIZATION="Token GROUP" +
28+
department.token)
29+
resp1 = self.raw_register(projectVersion='V1.1', projectName='PNAME')
30+
data1 = json.loads(resp1.content)
31+
resp2 = self.raw_register(name='newtoken',
32+
projectVersion='V1.1',
33+
projectName='PNAME')
34+
data2 = json.loads(resp2.content)
35+
self.assertNotEqual(data1['data']['id'], data2['data']['id'])
36+
37+
def test_rep_register_2(self):
38+
department = Department.objects.first()
39+
self.client.credentials(HTTP_AUTHORIZATION="Token GROUP" +
40+
department.token)
41+
resp1 = self.raw_register(projectTemplateId=1,
42+
projectVersion='V1.1',
43+
projectName='PNAME')
44+
data1 = json.loads(resp1.content)
45+
self.assertEqual(data1['status'], 201)
46+
47+
def test_rep_register_3(self):
48+
department = Department.objects.first()
49+
self.client.credentials(HTTP_AUTHORIZATION="Token GROUP" +
50+
department.token)
51+
resp1 = self.raw_register(token=uuid.uuid4().hex)
52+
data1 = json.loads(resp1.content)
53+
self.assertEqual(data1['status'], 201)
54+
agent_id1 = data1['data']['id']
55+
agent1 = IastAgent.objects.filter(pk=agent_id1).first()
56+
agent1.bind_project.department_id = 2
57+
agent1.bind_project.save()
58+
resp2 = self.raw_register(token=uuid.uuid4().hex)
59+
data2 = json.loads(resp2.content)
60+
self.assertEqual(data2['status'], 201)
61+
agent_id2 = data2['data']['id']
62+
agent2 = IastAgent.objects.filter(pk=agent_id2).first()
63+
self.assertNotEqual(agent1.bind_project_id, agent2.bind_project_id)
64+
self.assertNotEqual(agent1.project_version_id,
65+
agent2.project_version_id)
66+
67+
def test_rep_register_4(self):
68+
department = Department.objects.first()
69+
self.client.credentials(HTTP_AUTHORIZATION="Token GROUP" +
70+
department.token)
71+
resp1 = self.raw_register(token=uuid.uuid4().hex)
72+
data1 = json.loads(resp1.content)
73+
self.assertEqual(data1['status'], 201)
74+
agent_id1 = data1['data']['id']
75+
agent1 = IastAgent.objects.filter(pk=agent_id1).first()
76+
agent1.bind_project.department_id = 2
77+
agent1.bind_project.save()
78+
resp2 = self.raw_register(token=uuid.uuid4().hex)
79+
data2 = json.loads(resp2.content)
80+
self.assertEqual(data2['status'], 201)
81+
agent_id2 = data2['data']['id']
82+
agent2 = IastAgent.objects.filter(pk=agent_id2).first()
83+
agent2.bind_project_id = agent1.bind_project_id
84+
agent2.save()
85+
self.client.credentials(HTTP_AUTHORIZATION="Token GROUP" +
86+
department.token)
87+
resp3 = self.raw_register(token=uuid.uuid4().hex)
88+
data3 = json.loads(resp3.content)
89+
self.assertEqual(data3['status'], 201)
90+
agent_id3 = data3['data']['id']
91+
agent3 = IastAgent.objects.filter(pk=agent_id3).first()
92+
self.assertNotEqual(agent_id3, agent_id2)
93+
self.assertNotEqual(agent3.bind_project_id, agent2.bind_project_id)

0 commit comments

Comments
 (0)