def server_config(): """ Returns the OpenVPN server configuration generated from the application settings. :return: str """ conf = render_to_string( "openvpn/server.conf", { "root_dir": settings.BASE_DIR, "bind_address": net.interface_ip(config.get("vpn_interface")), "bind_port": config.get("vpn_port"), "ca_crt": config.get("ca_crt"), "crl_file": settings.PKI_CRL_FILE, "dh_params": config.get("vpn_dh_params"), "domain": config.get("domain"), "log_file": settings.OPENVPN_LOG_FILE, "managment_socket": settings.OPENVPN_MANAGEMENT_SOCKET, "nameservers": config.get_list("vpn_nameservers"), "protocol": config.get("vpn_protocol"), "redirect_gateway": config.get_bool("vpn_redirect_gateway", False), "routes": config.get_list("vpn_routes"), "server_crt": config.get("vpn_crt"), "server_key": config.get("vpn_key"), "status_file": settings.OPENVPN_STATUS_FILE, "subnet": config.get("vpn_subnet"), "tls_auth_key": config.get("vpn_tls_auth_key"), }) return strings.remove_empty_lines(conf)
def process_install(request): """ Processes the application installation form. :return: Response """ # do not let the installation run twice if config.get_bool("app_installed", True): return redirect("/") form = forms.InstallForm(request.POST) if not form.is_valid(): save_form(request, form) return redirect("/install") # save() updates the application settings and creates the administrator # user that was defined in the form and log the user in admin = form.save() login(request, admin, "django.contrib.auth.backends.ModelBackend") # set the ``app_installed`` setting to True to indicate installation has # been performed and the application is ready for use before redirecting # the user to the main application config.set("app_installed", True) return redirect("/")
def list(self, request, *args, **kwargs): """ Returns the status of the OpenVPN server. :return: Response """ return Response({ "restart_pending": config.get_bool("vpn_restart_pending", False), "status": openvpn.is_running(), })
def show_install(request): """ Renders the application installation page. :return: Response """ # do not let the installation run twice if config.get_bool("app_installed", True): return redirect("/") return render(request, "Install.html", { "form": request.session.pop("form", {}), })
def get(self, request): """ Returns general API information. :return: Response """ return Response({ "app_organization": config.get("app_organization", "Mangle"), "app_version": version(), "vpn_restart_pending": config.get_bool("vpn_restart_pending", False), "update_available": self.update_available(), })
def decorator(request, *args, **kwargs): if not config.get_bool("app_installed", False): return redirect("/install") return func(request, *args, **kwargs)