Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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("/")
Exemplo n.º 3
0
 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(),
     })
Exemplo n.º 4
0
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", {}),
    })
Exemplo n.º 5
0
 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(),
     })
Exemplo n.º 6
0
 def decorator(request, *args, **kwargs):
     if not config.get_bool("app_installed", False):
         return redirect("/install")
     return func(request, *args, **kwargs)