def vpn_generate(request): context = RequestContext(request) form = VpnProfileForm(request.POST) if form.is_valid(): profilename = form.cleaned_data.get('profilename') dyndomain = form.cleaned_data.get('dyndomain') logger.info("generating profile %s" % profilename) profile = VpnProfile(profilename=profilename, dyndomain=dyndomain) profile.config = "# upri.box OVPN config for %s\nfoo bar baz bar OpenVPN config goes here" % profilename profile.save() if not (settings.IGNORE_MISSING_UPRICONFIG and not exists('/usr/local/bin/upri-config.py')): jobs.queue_job(vpnjobs.generate_profile, (str(profile.id), )) context.push({'message': True}) else: context.push({'message': False}) context.push({'form': VpnProfileForm()}) else: context.push({'form': VpnProfileForm(request.POST)}) context.push({ 'messagestore': jobs.get_messages(), 'profiles': VpnProfile.objects.all() }) return render_to_response("vpn.html", context)
def ninja(request): context = RequestContext(request) if request.method == 'POST': form = WlanForm(utils.get_fact('wlan', 'ninja', 'ssid'), request.POST) if form.is_valid(): password = form.cleaned_data['password2'] ssid = form.cleaned_data['ssid'] jobs.queue_job(wlanjobs.reconfigure_tor, (ssid, password)) context.push({'message': True, 'ninja_ssid':ssid}) else: logger.error("tor form validation failed for %s" % request.path) else: form = WlanForm(utils.get_fact('wlan','ninja','ssid')) model_info = ModelInfo() pi3 = model_info.runs_on_pi3() context.push({ 'form': form, 'messagestore': jobs.get_messages(), 'pi3': pi3}) return render_to_response("ninja.html", context)
def ninja(request): context = {} if request.method == 'POST': form = WlanForm(utils.get_fact('wlan', 'ninja', 'ssid'), request.POST) if form.is_valid(): password = form.cleaned_data['password2'] ssid = form.cleaned_data['ssid'] jobs.queue_job(wlanjobs.reconfigure_tor, (ssid, password)) context.update({'message': True, 'ninja_ssid': ssid}) else: logger.error("tor form validation failed for %s" % request.path) else: form = WlanForm(utils.get_fact('wlan', 'ninja', 'ssid')) model_info = ModelInfo() pi3 = model_info.runs_on_pi3() and not model_info.uses_external_wifi() context.update({ 'form': form, 'messagestore': jobs.get_messages(), 'pi3': pi3}) return render(request, "ninja.html", context)
def vpn_generate(request): context = RequestContext(request) form = VpnProfileForm(request.POST) if form.is_valid(): profilename = form.cleaned_data.get('profilename') dyndomain = form.cleaned_data.get('dyndomain') logger.info("generating profile %s" % profilename ) profile = VpnProfile(profilename=profilename, dyndomain=dyndomain) profile.config = "# upri.box OVPN config for %s\nfoo bar baz bar OpenVPN config goes here" % profilename profile.save() if not (settings.IGNORE_MISSING_UPRICONFIG and not exists('/usr/local/bin/upri-config.py')): jobs.queue_job(vpnjobs.generate_profile, (str(profile.id),)) context.push({'message': True}) else: context.push({'message': False}) context.push({'form': VpnProfileForm()}) else: context.push({'form': VpnProfileForm(request.POST)}) context.push({ 'messagestore': jobs.get_messages(), 'profiles': VpnProfile.objects.all()}) return render_to_response("vpn.html", context)
def silent_toggle(request): if request.method != 'POST': raise Http404() state = request.POST['enabled'] jobs.queue_job(wlanjobs.toggle_silent, (state,)) return render(request, "modal.html", {"message": True, "refresh_url": reverse('upri_silent')})
def ssh_toggle(request): if request.method != 'POST': raise Http404() state = request.POST['enabled'] jobs.queue_job(sshjobs.toggle_ssh, (state,)) return render_to_response("modal.html", {"message": True, "refresh_url": reverse('upri_more')})
def ninja_toggle(request): if request.method != 'POST': raise Http404() state = request.POST['enabled'] jobs.queue_job(wlanjobs.toogle_tor, (state,)) return render_to_response("modal.html", {"message": True, "refresh_url": reverse('upri_ninja')})
def save_dhcp(request): if request.method != 'POST': raise Http404() jobs.queue_job(sshjobs.toggle_static, ('dhcp', )) return render(request, "modal.html", { "message": True, "refresh_url": reverse('upri_more') })
def apate_toggle(request): if request.method != 'POST': raise Http404() state = request.POST['enabled'] jobs.queue_job(sshjobs.toggle_dhcpd, ('no', )) jobs.queue_job(sshjobs.toggle_apate, (state, )) return render(request, "modal.html", { "message": True, "refresh_url": reverse('upri_config') })
def set_device_mode(request): mode = request.POST.get('mode', None) try: device = DeviceEntry.objects.get(slug=request.POST.get('dev_id', None)) except DeviceEntry.DoesNotExist: device = None device.changing = True device.save() jobs.queue_job(devicejobs.toggle_device_mode, (mode, device)) return render(request, "modal.html", { "message": True, "refresh_url": reverse('upri_devices') })
def more_static(request, enable=None, dhcpd=None): context = {} net_info = utils.get_system_network_config() ip_form = StaticIPForm( net_info['ip'], net_info['netmask'], net_info['gateway'], net_info['dns_servers'][0], utils.get_fact('dhcpd', 'general', 'enabled'), ) if request.method == 'POST': ip_form = StaticIPForm(net_info['ip'], net_info['netmask'], net_info['gateway'], net_info['dns_servers'][0], utils.get_fact('dhcpd', 'general', 'enabled'), request.POST) if ip_form.is_valid(): ip = ip_form.cleaned_data['ip_address'] netmask = ip_form.cleaned_data['ip_netmask'] gateway = ip_form.cleaned_data['gateway'] dns = ip_form.cleaned_data['dns_server'] # dhcp = ip_form.cleaned_data['dhcp_server'] jobs.queue_job(sshjobs.reconfigure_network, (ip, netmask, gateway, dns, enable)) jobs.queue_job(sshjobs.toggle_dhcpd, ("yes" if dhcpd else "no", )) context.update({ 'message': True, "refresh_url": reverse('upri_config' ), # request.path, # reverse('upri_config_static'), 'messagestore': jobs.get_messages() }) context.update({ 'ip_form': ip_form, 'messagestore': jobs.get_messages(), 'href': request.path, "refresh_url": reverse('upri_config'), }) return render(request, "static.html", context)
def silent(request): context = {} if request.method == 'POST': form = WlanForm(utils.get_fact('wlan', 'upri', 'ssid'), request.POST) if form.is_valid(): password = form.cleaned_data['password2'] ssid = form.cleaned_data['ssid'] jobs.queue_job(wlanjobs.reconfigure_wlan, (ssid, password)) context.update({'message': True, 'upri_ssid': ssid}) else: logger.error("form validation failed for %s" % request.path) else: form = WlanForm(utils.get_fact('wlan', 'upri', 'ssid')) context.update({'form': form, 'messagestore': jobs.get_messages()}) return render(request, "silent.html", context)
def setup_failed(request): phase = "failed" context = {} if info.check_ipv6(): phase = "ipv6" _setup_redis(phase) if not info.check_ipv6(): if request.method == 'GET' and utils.get_fact('apate', 'general', 'enabled') == 'yes': jobs.queue_job(morejobs.toggle_apate, ("no", False), unique=True) # context.update({'message': True}) context.update({ 'phase': phase # init, failed, ipv6, success }) return render(request, "setup.html", context)
def silent(request): context = RequestContext(request) if request.method == 'POST': form = WlanForm(utils.get_fact('wlan', 'upri', 'ssid'), request.POST) if form.is_valid(): password = form.cleaned_data['password2'] ssid = form.cleaned_data['ssid'] jobs.queue_job(wlanjobs.reconfigure_wlan, (ssid, password)) context.push({'message': True, 'upri_ssid': ssid}) else: logger.error("form validation failed for %s" % request.path) else: form = WlanForm(utils.get_fact('wlan', 'upri', 'ssid')) context.push({'form': form}) context.push({'messagestore': jobs.get_messages()}) return render_to_response("silent.html", context)
def setup_init(request): phase = "init" context = {} if not info.check_ipv6(): if info.check_connection(): if request.method == 'GET' and utils.get_fact( 'apate', 'general', 'enabled') == 'no': jobs.queue_job(morejobs.toggle_apate, ("yes", ), unique=True) # context.update({'message': True}) else: phase = "isolated" if info.check_ipv6(): return redirect('upri_setup_failed') else: context.update({ 'phase': phase, # init, failed, success 'refresh_url': reverse('upri_setup_eval'), 'error_url': reverse('upri_setup_error') }) return render(request, "setup.html", context)
def static_toggle(request): if request.method != 'POST': raise Http404() current = [ utils.get_fact('interfaces', 'static', 'ip', defaults=False), utils.get_fact('interfaces', 'static', 'netmask', defaults=False), utils.get_fact('interfaces', 'static', 'dns', defaults=False), utils.get_fact('interfaces', 'static', 'gateway', defaults=False), ] state = request.POST.get('enabled', None) if all(current) or state == 'no': # all requirements met or dhcp requested jobs.queue_job(sshjobs.toggle_static, (state, )) return render(request, "modal.html", { "message": True, "refresh_url": reverse('upri_config') }) else: # not all requirements met return HttpResponseForbidden(reverse('upri_config_static_enable'))
def wifi_mode(request): if request.method != 'POST': raise Http404() jobs.queue_job(wlanjobs.toggle_silent, ('yes', )) jobs.queue_job(sshjobs.toggle_apate, ('no', )) jobs.queue_job(sshjobs.toggle_dhcpd, ('no', )) return render(request, "modal.html", { "message": True, "refresh_url": reverse('upri_config') })
def fail(request): # if not settings.DEBUG: # raise Http404() jobs.queue_job(devicejobs.fail_dummy, ("", )) return HttpResponse(status=200)
def more_config(request, save_form): context = {} form = AdminForm(request) net_info = utils.get_system_network_config() ip_form = StaticIPForm(net_info['ip'], net_info['netmask'], net_info['gateway'], net_info['dns_servers'][0], utils.get_fact('dhcpd', 'general', 'enabled')) if request.method == 'POST': if save_form == "user": form = AdminForm(request, request.POST) if form.is_valid(): new_password = form.cleaned_data['password2'] new_username = form.cleaned_data['username'] old_password = form.cleaned_data['oldpassword'] old_username = request.user.username logger.info("updating user %s..." % old_username) u = User.objects.get(username=old_username) # sanity check, this should never happen if not u: logger.error("unexpected error: user %s does not exist" % old_username) return HttpResponse(status=500) u.set_password(new_password) u.username = new_username u.save() logger.info( "user %s updated to %s (password changed: %s)" % (old_username, new_username, new_password != old_password)) context.update({'message': True}) else: logger.error("admin form validation failed") elif save_form == "static_ip": ip_form = StaticIPForm( net_info['ip'], net_info['netmask'], net_info['gateway'], net_info['dns_servers'][0], utils.get_fact('dhcpd', 'general', 'enabled'), request.POST) if ip_form.is_valid(): ip = ip_form.cleaned_data['ip_address'] netmask = ip_form.cleaned_data['ip_netmask'] gateway = ip_form.cleaned_data['gateway'] dns = ip_form.cleaned_data['dns_server'] dhcp = ip_form.cleaned_data['dhcp_server'] jobs.queue_job(sshjobs.reconfigure_network, (ip, netmask, gateway, dns, dhcp)) context.update({ 'message': True, "refresh_url": reverse('upri_more'), 'messagestore': jobs.get_messages() }) update_status = UpdateStatus() context.update({ 'form': form, 'ip_form': ip_form, 'messagestore': jobs.get_messages(), 'update_time': update_status.update_utc_time, 'version': update_status.get_version() }) return render(request, "more.html", context)