Esempio n. 1
0
def view_ssl_certificates(request):
    return_dict = {}
    try:
        cert_list, err = pki.get_ssl_certificates()
        if err:
            raise Exception(err)

        if "ack" in request.GET:
            if request.GET["ack"] == "deleted":
                return_dict[
                    'ack_message'] = "The certificate has been successfully deleted"
            elif request.GET["ack"] == "created_self_signed_cert":
                return_dict[
                    'ack_message'] = "A self signed SSL certificate has been successfully created"
            elif request.GET["ack"] == "uploaded_cert":
                return_dict[
                    'ack_message'] = "A new SSL certificate has been successfully uploaded"
        return_dict["cert_list"] = cert_list
        return django.shortcuts.render_to_response(
            'view_ssl_certificates.html',
            return_dict,
            context_instance=django.template.context.RequestContext(request))
    except Exception, e:
        return_dict['base_template'] = "key_management_base.html"
        return_dict["page_title"] = 'SSL certificates'
        return_dict['tab'] = 'certificates_tab'
        return_dict["error"] = 'Error loading SSL certificates'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response(
            "logged_in_error.html",
            return_dict,
            context_instance=django.template.context.RequestContext(request))
def view_ssl_certificates(request):
    return_dict = {}
    try:
        cert_list, err = pki.get_ssl_certificates()
        if err:
            raise Exception(err)

        if "ack" in request.GET:
            if request.GET["ack"] == "deleted":
                return_dict['ack_message'] = "The certificate has been successfully deleted"
            elif request.GET["ack"] == "created_self_signed_cert":
                return_dict['ack_message'] = "A self signed SSL certificate has been successfully created"
            elif request.GET["ack"] == "uploaded_cert":
                return_dict['ack_message'] = "A new SSL certificate has been successfully uploaded"
        return_dict["cert_list"] = cert_list
        return django.shortcuts.render_to_response('view_ssl_certificates.html', return_dict, context_instance=django.template.context.RequestContext(request))
    except Exception, e:
        return_dict['base_template'] = "keys_certs_base.html"
        return_dict["page_title"] = 'SSL certificates'
        return_dict['tab'] = 'certificates_tab'
        return_dict["error"] = 'Error loading SSL certificates'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
Esempio n. 3
0
def update_ftp_configuration(request):
    return_dict = {}
    try:
        config, err = vsftp.get_ftp_config()
        if err:
            raise Exception(err)
        pools, err = zfs.get_pools()
        ds_list = []
        for pool in pools:
            for ds in pool["datasets"]:
                if ds['properties']['type']['value'] == 'filesystem':
                    ds_list.append(ds["name"])
        cert_list, err = pki.get_ssl_certificates()
        if err:
            raise Exception(err)
        cert_name_list = []
        for cert in cert_list:
            cert_name_list.append(cert['name'])
        # print ds_list
        if not ds_list:
            raise Exception(
                'No ZFS datasets available. Please create a dataset before configuring the FTP service.')

        if request.method == 'GET':
            initial = {}
            if config:
                for key in config.keys():
                    initial[key] = config[key]
            form = ftp_management_forms.ConfigureFTPForm(
                datasets=ds_list, cert_names=cert_name_list, initial=initial)
            return_dict['form'] = form
            return django.shortcuts.render_to_response('update_ftp_configuration.html', return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            form = ftp_management_forms.ConfigureFTPForm(
                request.POST, cert_names=cert_name_list, datasets=ds_list)
            return_dict['form'] = form
            if not form.is_valid():
                return django.shortcuts.render_to_response("update_ftp_configuration.html", return_dict, context_instance=django.template.context.RequestContext(request))
            cd = form.cleaned_data
            ret, err = vsftp.update_ftp_config(cd)
            if err:
                raise Exception(err)
            users, err = local_users.get_local_users()
            if err:
                raise Exception(err)
            ret, err = vsftp.create_ftp_user_dirs(cd['dataset'], users)
            if err:
                raise Exception(err)
            audit_str = 'Updated FTP configuration.'
            if cd['ssl_enabled']:
                audit_str = audit_str + \
                    ' SSL enabled with certificate %s' % cd['cert_name']
            else:
                audit_str = audit_str + ' SSL disabled.'
            ret, err = audit.audit("update_ftp_config",
                                   audit_str, request)
            return django.http.HttpResponseRedirect('/view_ftp_configuration?ack=saved')
    except Exception, e:
        return_dict['base_template'] = "services_base.html"
        return_dict["page_title"] = 'Configure FTP service'
        return_dict['tab'] = 'ftp_service_settings'
        return_dict["error"] = 'Error configuring the FTP service '
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
def update_ftp_configuration(request):
    return_dict = {}
    try:
        config, err = vsftp.get_ftp_config()
        if err:
            raise Exception(err)
        pools, err = zfs.get_pools()
        ds_list = []
        for pool in pools:
            for ds in pool["datasets"]:
                if ds['properties']['type']['value'] == 'filesystem':
                    ds_list.append(ds["name"])
        cert_list, err = pki.get_ssl_certificates()
        if err:
            raise Exception(err)
        cert_name_list = []
        for cert in cert_list:
            cert_name_list.append(cert['name'])
        # print ds_list
        if not ds_list:
            raise Exception(
                'No ZFS datasets available. Please create a dataset before configuring the FTP service.')

        if request.method == 'GET':
            initial = {}
            if config:
                for key in config.keys():
                    initial[key] = config[key]
            form = ftp_management_forms.ConfigureFTPForm(
                datasets=ds_list, cert_names=cert_name_list, initial=initial)
            return_dict['form'] = form
            return django.shortcuts.render_to_response('update_ftp_configuration.html', return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            form = ftp_management_forms.ConfigureFTPForm(
                request.POST, cert_names=cert_name_list, datasets=ds_list)
            return_dict['form'] = form
            if not form.is_valid():
                return django.shortcuts.render_to_response("update_ftp_configuration.html", return_dict, context_instance=django.template.context.RequestContext(request))
            cd = form.cleaned_data
            ret, err = vsftp.update_ftp_config(cd)
            if err:
                raise Exception(err)
            users, err = local_users.get_local_users()
            if err:
                raise Exception(err)
            ret, err = vsftp.create_ftp_user_dirs(cd['dataset'], users)
            if err:
                raise Exception(err)
            audit_str = 'Updated FTP configuration.'
            if cd['ssl_enabled']:
                audit_str = audit_str + \
                    ' SSL enabled with certificate %s' % cd['cert_name']
            else:
                audit_str = audit_str + ' SSL disabled.'
            ret, err = audit.audit("update_ftp_config",
                                   audit_str, request)
            return django.http.HttpResponseRedirect('/storage_access/view_ftp_configuration?ack=saved')
    except Exception, e:
        return_dict['base_template'] = "storage_access_base.html"
        return_dict["page_title"] = 'Configure FTP service'
        return_dict['tab'] = 'ftp_service_settings'
        return_dict["error"] = 'Error configuring the FTP service '
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
def update_https_mode(request):
    return_dict = {}
    try:
        ret, err = django_utils.get_request_parameter_values(
            request, ['change_to'])
        if err:
            raise Exception(err)
        if 'change_to' not in ret:
            raise Exception("Invalid request, please use the menus.")
        change_to = ret['change_to']
        return_dict['change_to'] = change_to

        cert_list, err = pki.get_ssl_certificates()
        if err:
            raise Exception(err)
        if not cert_list:
            raise Exception(
                'No certificates have been created. Please create a certificate/key pair before you change the access method'
            )

        if request.method == "GET":
            if change_to == 'secure':
                form = keys_certs_forms.SetHttpsModeForm(cert_list=cert_list)
                return_dict['form'] = form
                return django.shortcuts.render_to_response(
                    "update_https_mode.html",
                    return_dict,
                    context_instance=django.template.context.RequestContext(
                        request))
            else:
                return_dict[
                    'conf_message'] = 'Are you sure you want to disable the secure access mode for IntegralView?'
                return django.shortcuts.render_to_response(
                    "update_http_mode_conf.html",
                    return_dict,
                    context_instance=django.template.context.RequestContext(
                        request))
        else:
            if change_to == 'secure':
                form = keys_certs_forms.SetHttpsModeForm(request.POST,
                                                         cert_list=cert_list)
                return_dict['form'] = form
                if not form.is_valid():
                    return django.shortcuts.render_to_response(
                        "update_https_mode.html",
                        return_dict,
                        context_instance=django.template.context.
                        RequestContext(request))
                cd = form.cleaned_data
            if change_to == 'secure':
                pki_dir, err = config.get_pki_dir()
                if err:
                    raise Exception(err)
                cert_loc = '%s/%s/%s.cert' % (pki_dir, cd['cert_name'],
                                              cd['cert_name'])
                if not os.path.exists(cert_loc):
                    raise Exception('Error locating certificate')
                ret, err = nginx.generate_nginx_conf(True, cert_loc, cert_loc)
                if err:
                    raise Exception(err)
            else:
                ret, err = nginx.generate_nginx_conf(False)
                if err:
                    raise Exception(err)
            audit_str = "Changed the IntegralView access mode to '%s'" % change_to
            audit.audit("set_https_mode", audit_str, request)

        redirect_url = "https://" if change_to == "secure" else "http://"
        redirect_url = redirect_url + \
            request.META["HTTP_HOST"] + \
            "/system/view_https_mode?ack=set_to_%s" % change_to
        restart, err = tasks_utils.create_task(
            'Chaging IntegralView access mode',
            [{
                'Restarting Web Server': 'service nginx restart'
            }], 2)
        if err:
            raise Exception(err)
        return django.http.HttpResponseRedirect(redirect_url)

    except Exception, e:
        return_dict['base_template'] = "system_base.html"
        return_dict["page_title"] = 'Modify Integralview access mode'
        return_dict['tab'] = 'system_info_tab'
        return_dict["error"] = 'Error modifying IntegralView access mode'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response(
            "logged_in_error.html",
            return_dict,
            context_instance=django.template.context.RequestContext(request))
def update_https_mode(request):
    return_dict = {}
    try:
        ret, err = django_utils.get_request_parameter_values(request, [
                                                             'change_to'])
        if err:
            raise Exception(err)
        if 'change_to' not in ret:
            raise Exception("Invalid request, please use the menus.")
        change_to = ret['change_to']
        return_dict['change_to'] = change_to

        cert_list, err = pki.get_ssl_certificates()
        if err:
            raise Exception(err)
        if not cert_list:
            raise Exception(
                'No certificates have been created. Please create a certificate/key pair before you change the access method')

        if request.method == "GET":
            if change_to == 'secure':
                form = keys_certs_forms.SetHttpsModeForm(cert_list=cert_list)
                return_dict['form'] = form
                return django.shortcuts.render_to_response("update_https_mode.html", return_dict, context_instance=django.template.context.RequestContext(request))
            else:
                return_dict['conf_message'] = 'Are you sure you want to disable the secure access mode for IntegralView?'
                return django.shortcuts.render_to_response("update_http_mode_conf.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            if change_to == 'secure':
                form = keys_certs_forms.SetHttpsModeForm(
                    request.POST, cert_list=cert_list)
                return_dict['form'] = form
                if not form.is_valid():
                    return django.shortcuts.render_to_response("update_https_mode.html", return_dict, context_instance=django.template.context.RequestContext(request))
                cd = form.cleaned_data
            if change_to == 'secure':
                pki_dir, err = config.get_pki_dir()
                if err:
                    raise Exception(err)
                cert_loc = '%s/%s/%s.cert' % (pki_dir,
                                              cd['cert_name'], cd['cert_name'])
                if not os.path.exists(cert_loc):
                    raise Exception('Error locating certificate')
                ret, err = nginx.generate_nginx_conf(True, cert_loc, cert_loc)
                if err:
                    raise Exception(err)
            else:
                ret, err = nginx.generate_nginx_conf(False)
                if err:
                    raise Exception(err)
            audit_str = "Changed the IntegralView access mode to '%s'" % change_to
            audit.audit("set_https_mode", audit_str, request)

        redirect_url = "https://" if change_to == "secure" else "http://"
        redirect_url = redirect_url + \
            request.META["HTTP_HOST"] + \
            "/system/view_https_mode?ack=set_to_%s" % change_to
        restart, err = tasks_utils.create_task('Chaging IntegralView access mode', [
            {'Restarting Web Server': 'service nginx restart'}], 2)
        if err:
            raise Exception(err)
        return django.http.HttpResponseRedirect(redirect_url)

    except Exception, e:
        return_dict['base_template'] = "system_base.html"
        return_dict["page_title"] = 'Modify Integralview access mode'
        return_dict['tab'] = 'system_info_tab'
        return_dict["error"] = 'Error modifying IntegralView access mode'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))