diff --git a/flowspec/forms.py b/flowspec/forms.py index b4ed9991254caa8a732391a5a4cddb049790ca0e..afb99cc1d4907cafdba32766e40c62fc971bf535 100644 --- a/flowspec/forms.py +++ b/flowspec/forms.py @@ -273,5 +273,9 @@ def get_matchingprotocol_route_pks(protocolist, routes): class SetupForm(forms.Form): password = forms.CharField(widget=forms.PasswordInput(), label="Password") - + netconf_device = forms.CharField(label="Router host (NETCONF)") + netconf_port = forms.IntegerField(label="Router port (NETCONF)", min_value=0, max_value=65535) + netconf_user = forms.CharField(label="Router user (NETCONF)") + netconf_pass = forms.CharField(widget=forms.PasswordInput(), label="Router password (NETCONF)") + test_peer_addr = forms.CharField(label="Test peer IP subnet") diff --git a/flowspec/views.py b/flowspec/views.py index 0601464a5039b1b3f798c6cb535d41da1c834f71..fdf230b0da467c5ac827e6f6535d682d484b9edb 100644 --- a/flowspec/views.py +++ b/flowspec/views.py @@ -921,7 +921,7 @@ def routestats(request, route_slug): return HttpResponse(json.dumps({"error": "No data available. %s" % e}), mimetype="application/json", status=404) def setup(request): - if not User.objects.filter(username="admin"): + if User.objects.count() == 0: if request.method == "POST": form = SetupForm(request.POST) if form.is_valid(): @@ -929,6 +929,22 @@ def setup(request): u.is_superuser = True u.is_staff = True u.save() + pr = PeerRange(network = form.cleaned_data["test_peer_addr"]) + pr.save() + p = Peer(peer_name = "testpeer", peer_tag = "testpeer") + p.save() + p.networks.add(pr) + ua = UserProfile() + ua.user = u + ua.save() + ua.peers.add(p) + + with open("flowspy/settings_local.py", "a") as f: + f.write("NETCONF_DEVICE = \"%s\"\n" % form.cleaned_data["netconf_device"]) + f.write("NETCONF_USER = \"%s\"\n" % form.cleaned_data["netconf_port"]) + f.write("NETCONF_PASS = \"%s\"\n" % form.cleaned_data["netconf_user"]) + f.write("NETCONF_PORT = %s\n" % form.cleaned_data["netconf_pass"]) + logger.error('TODO REMOVE: password: %s' % form.cleaned_data["password"]) return HttpResponseRedirect(reverse("welcome")) else: diff --git a/templates/flowspy/setup.html b/templates/flowspy/setup.html index 6168c785467b9c3fe2e4d47f9ccc2f45c41dcbb8..7bed56838beb617d8dd54926ffc4d4872cb08950 100644 --- a/templates/flowspy/setup.html +++ b/templates/flowspy/setup.html @@ -6,7 +6,9 @@ Set the password of admin user: <form action="{% url setup %}" method="post"> {% csrf_token %} + <table> {{ form }} + </table> <input type="submit" value="Set"> </form> </div>