mirror of
https://github.com/MikroWizard/mikroman.git
synced 2025-07-09 13:34:28 +02:00
Add device scan results for admins
This commit is contained in:
parent
69791457b8
commit
ba155aa3d0
2 changed files with 32 additions and 6 deletions
|
@ -37,3 +37,15 @@ def scan_network():
|
||||||
return buildResponse({'status': status},200)
|
return buildResponse({'status': status},200)
|
||||||
else:
|
else:
|
||||||
return buildResponse({'status': status},200)
|
return buildResponse({'status': status},200)
|
||||||
|
|
||||||
|
@app.route('/api/scanner/results', methods = ['POST'])
|
||||||
|
@login_required(role='admin',perm={'device':'full'})
|
||||||
|
def scan_resutls():
|
||||||
|
"""Do scan requested network for given ip range to find mikrotik devices"""
|
||||||
|
input = request.json
|
||||||
|
tasks=db_tasks.TaskResults
|
||||||
|
#Get tasks that is task_type is ip-scan
|
||||||
|
tasks=tasks.select().where(tasks.task_type=='ip-scan')
|
||||||
|
tasks=list(tasks.dicts())
|
||||||
|
#Get task results
|
||||||
|
return buildResponse({'status': True,'data':tasks},200)
|
||||||
|
|
|
@ -262,6 +262,15 @@ def scan_with_ip(*args, **kwargs):
|
||||||
task.status=0
|
task.status=0
|
||||||
task.save()
|
task.save()
|
||||||
return True
|
return True
|
||||||
|
now=datetime.datetime.now(datetime.timezone.utc)
|
||||||
|
#datetime to string fomat %Y-%m-%dT%H:%M:%S
|
||||||
|
now=now.strftime("%Y-%m-%dT%H:%M:%S")
|
||||||
|
info={
|
||||||
|
'username':kwargs.get('username','Unknown'),
|
||||||
|
'start_ip':start_ip,
|
||||||
|
'end_ip':end_ip,
|
||||||
|
'created':now
|
||||||
|
}
|
||||||
start_ip = ipaddress.IPv4Address(start_ip)
|
start_ip = ipaddress.IPv4Address(start_ip)
|
||||||
end_ip = ipaddress.IPv4Address(end_ip)
|
end_ip = ipaddress.IPv4Address(end_ip)
|
||||||
scan_port=kwargs.get('port',False)
|
scan_port=kwargs.get('port',False)
|
||||||
|
@ -270,11 +279,9 @@ def scan_with_ip(*args, **kwargs):
|
||||||
mikrotiks=[]
|
mikrotiks=[]
|
||||||
scan_results=[]
|
scan_results=[]
|
||||||
dev_number=0
|
dev_number=0
|
||||||
info={
|
|
||||||
'user':kwargs.get('user','Unknown'),
|
|
||||||
'start_ip':start_ip,
|
|
||||||
'end_ip':end_ip
|
|
||||||
}
|
|
||||||
for ip_int in range(int(start_ip), int(end_ip)):
|
for ip_int in range(int(start_ip), int(end_ip)):
|
||||||
ip=str(ipaddress.IPv4Address(ip_int))
|
ip=str(ipaddress.IPv4Address(ip_int))
|
||||||
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
@ -389,9 +396,15 @@ def scan_with_ip(*args, **kwargs):
|
||||||
dev_number+=1
|
dev_number+=1
|
||||||
log.error(e)
|
log.error(e)
|
||||||
continue
|
continue
|
||||||
|
else:
|
||||||
|
scan_results.append({})
|
||||||
|
scan_results[dev_number]['ip']=ip
|
||||||
|
scan_results[dev_number]['added']=False
|
||||||
|
scan_results[dev_number]['faileres']="Not MikroTik or Device/Api Port not accessible"
|
||||||
|
dev_number+=1
|
||||||
sock.close()
|
sock.close()
|
||||||
try:
|
try:
|
||||||
db_tasks.add_task_result('ip-scan', json.dumps(scan_results),json.dumps(info))
|
db_tasks.add_task_result('ip-scan', json.dumps(scan_results),json.dumps(info,default=serialize_datetime))
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
#ugly hack to reset sequnce number if device id
|
#ugly hack to reset sequnce number if device id
|
||||||
|
@ -426,6 +439,7 @@ def exec_snipet(*args, **kwargs):
|
||||||
if not task.status:
|
if not task.status:
|
||||||
task.status=1
|
task.status=1
|
||||||
task.save()
|
task.save()
|
||||||
|
now=datetime.datetime.now()
|
||||||
default_ip=kwargs.get('default_ip',False)
|
default_ip=kwargs.get('default_ip',False)
|
||||||
try:
|
try:
|
||||||
if kwargs.get('devices',False) and kwargs.get('task',False):
|
if kwargs.get('devices',False) and kwargs.get('task',False):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue