Esempio n. 1
0
def create(request):
    """ファイアウォール作成"""

    logger.info('ファイアウォール 作成')

    #セッションからログインユーザ情報を取得する
    login_user = request.session['ss_usr_user']

    # エラー情報
    errors = []

    # 入力フォーム
    form = CreateForm(request.POST)

    # 入力チェック
    if not form.is_valid():
        tmp_errors = form.errors.values()
        for error in tmp_errors:
            errors.extend(error)
        return render_to_response('securitygroup_create.html', {
            'form': form,
            'errors': errors
        },
                                  context_instance=RequestContext(request))

    #セキュリティグループ作成(Eucalyptus操作)
    try:
        #Eucalyptus基盤へのアクセサを生成する
        get_euca_info = GetEucalyptusInfo(login_user)

        #セキュリティグループ作成
        security_group = get_euca_info.create_securitygroup(
            name=form.cleaned_data['name'],
            description=form.cleaned_data['description'])

        if form.cleaned_data['defaultrule']:
            # 初期ルール設定
            # icmp
            return_code = get_euca_info.authorize_securitygroup(
                group_name=form.cleaned_data['name'],
                ip_protocol='icmp',
                from_port=-1,
                to_port=-1,
                cidr_ip='0.0.0.0/0')

            if not return_code:
                errors.append("初期ルールの登録に失敗しました。")

            # ssh
            return_code = get_euca_info.authorize_securitygroup(
                group_name=form.cleaned_data['name'],
                ip_protocol='tcp',
                from_port=22,
                to_port=22,
                cidr_ip='0.0.0.0/0')

            if not return_code:
                errors.append("初期ルールの登録に失敗しました。")

    except Exception, ex:
        # Eucalyptusエラー
        errors.append("ファイアウォール作成に失敗しました。")
        errors.append(euca_common.get_euca_error_msg('%s' % ex))
        return render_to_response('securitygroup_create.html', {
            'form': form,
            'errors': errors
        },
                                  context_instance=RequestContext(request))
Esempio n. 2
0
def ruleadd(request):
    """接続ルール追加"""

    logger.info('ファイアウォール 接続ルール追加')

    #セッションからログインユーザ情報を取得する
    login_user = request.session['ss_usr_user']

    # エラー情報
    errors = []

    # 入力フォーム
    form = ModifyForm(request.POST)

    # セッション情報
    target = request.session['ss_scr_modify']

    # 入力チェック
    if not form.is_valid():
        tmp_errors = form.errors.values()
        for error in tmp_errors:
            errors.extend(error)
        return render_to_response('securitygroup_mod.html', {
            'form': form,
            'errors': errors
        },
                                  context_instance=RequestContext(request))

    if form.cleaned_data['addType'] == "address":
        # 外部接続
        if not form.cleaned_data['protocol']:
            errors.append("プロトコルを入力してください。")
        if not form.cleaned_data['portMin'] or not form.cleaned_data['portMax']:
            errors.append("解放ポート範囲を入力してください。")
        elif form.cleaned_data['portMin'] > form.cleaned_data['portMax']:
            errors.append("解放ポート範囲が不正です。")
        if not form.cleaned_data['cidr']:
            errors.append("接続許可アドレス範囲を入力してください。")

    elif form.cleaned_data['addType'] == "group":
        # グループ間接続
        if not form.cleaned_data['fromUser']:
            errors.append("接続許可ユーザーを入力してください。")
        if not form.cleaned_data['fromGroup']:
            errors.append("接続許可ファイアウォールを入力してください。")

    if errors:
        return render_to_response('securitygroup_mod.html', {
            'form': form,
            'errors': errors
        },
                                  context_instance=RequestContext(request))

    #ルール追加(Eucalyptus操作)
    try:
        #Eucalyptus基盤へのアクセサを生成する
        get_euca_info = GetEucalyptusInfo(login_user)

        #ルール削除
        return_code = get_euca_info.authorize_securitygroup(
            group_name=target.name,
            src_security_group_name=form.cleaned_data['fromGroup'],
            src_security_group_owner_id=form.cleaned_data['fromUser'],
            ip_protocol=form.cleaned_data['protocol'],
            from_port=form.cleaned_data['portMin'],
            to_port=form.cleaned_data['portMax'],
            cidr_ip=form.cleaned_data['cidr'])

        if not return_code:
            errors.append("接続許可ルール追加に失敗しました。")
            return render_to_response('securitygroup_mod.html', {
                'form': form,
                'errors': errors
            },
                                      context_instance=RequestContext(request))

    except Exception, ex:
        # Eucalyptusエラー
        errors.append("接続許可ルール追加に失敗しました。")
        errors.append(euca_common.get_euca_error_msg('%s' % ex))
        return render_to_response('securitygroup_mod.html', {
            'form': form,
            'errors': errors
        },
                                  context_instance=RequestContext(request))