From a5c4f266a584d9501059ce422d120c716d35d66d Mon Sep 17 00:00:00 2001 From: Tomas Cejka <cejkat@cesnet.cz> Date: Mon, 1 Jul 2019 13:06:27 +0000 Subject: [PATCH] setup: improved - add NETCONF info (appended into settings_local.py), create peer --- flowspec/forms.py | 6 +++++- flowspec/views.py | 18 +++++++++++++++++- templates/flowspy/setup.html | 2 ++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/flowspec/forms.py b/flowspec/forms.py index b4ed9991..afb99cc1 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 0601464a..fdf230b0 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 6168c785..7bed5683 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> -- GitLab