|
@@ -28,7 +28,10 @@ def is_valid_ip(ip):
|
|
|
return netaddr.valid_ipv4(ip) or netaddr.valid_ipv6(ip)
|
|
|
|
|
|
def resolve_name(hostname):
|
|
|
- return list({s[4][0] for s in socket.getaddrinfo(hostname, None)})
|
|
|
+ try:
|
|
|
+ return list({s[4][0] for s in socket.getaddrinfo(hostname, None)})
|
|
|
+ except socket.gaierror:
|
|
|
+ return []
|
|
|
|
|
|
class Target(db.Model):
|
|
|
"""Target IP to ping"""
|
|
@@ -165,13 +168,15 @@ def robots():
|
|
|
@app.route('/submit', methods=['POST'])
|
|
|
def submit_job():
|
|
|
if 'target' in request.form:
|
|
|
- target = request.form['target']
|
|
|
+ target = request.form['target'].strip()
|
|
|
if is_valid_ip(target):
|
|
|
# Explicit IP
|
|
|
targets = [Target(target)]
|
|
|
else:
|
|
|
# DNS name, might give multiple IP
|
|
|
targets = [Target(ip) for ip in resolve_name(target)]
|
|
|
+ if targets == []:
|
|
|
+ return render_template('submit_error.html', target=request.form['target'])
|
|
|
for t in targets:
|
|
|
db.session.add(t)
|
|
|
db.session.commit()
|