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))
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))