Improve condition form in popup for IP literals. Fix #301.

This commit is contained in:
FelisCatus 2015-05-01 15:28:53 +08:00
parent 13cadab9fa
commit 67bd3fc7f8
2 changed files with 35 additions and 12 deletions

View File

@ -263,19 +263,42 @@ module.controller 'PopupCtrl', ($scope, $window, $q, omegaTarget,
omegaTarget.state('currentProfileCanAddRule')
).then (value) ->
$scope.currentProfileCanAddRule = value
if $scope.currentProfileCanAddRule
currentDomain = $scope.currentDomain
currentDomainEscaped = currentDomain.replace('.', '\\.')
$scope.prepareConditionForm = ->
currentDomain = $scope.currentDomain
currentDomainEscaped = currentDomain.replace(/\./g, '\\.')
domainLooksLikeIp = false
if currentDomain.indexOf(':') >= 0
domainLooksLikeIp = true
if currentDomain[0] != '['
currentDomain = '[' + currentDomain + ']'
currentDomainEscaped = currentDomain.replace(/\./g, '\\.')
.replace(/\[/g, '\\[').replace(/\]/g, '\\]')
else if currentDomain[currentDomain.length - 1] >= 0
domainLooksLikeIp = true
if domainLooksLikeIp
conditionSuggestion =
'HostWildcardCondition': currentDomain
'HostRegexCondition': '^' + currentDomainEscaped + '$'
'UrlWildcardCondition': '*://' + currentDomain + '/*'
'UrlRegexCondition': '://' + currentDomainEscaped + '(:\\d+)?/'
'KeywordCondition': currentDomain
else
conditionSuggestion =
'HostWildcardCondition': '*.' + currentDomain
'HostRegexCondition': '(^|\\.)' + currentDomainEscaped + '$'
'UrlWildcardCondition': '*://*.' + currentDomain + '/*'
'UrlRegexCondition': '://([^/.]+\\.)*' + currentDomainEscaped + '/'
'UrlRegexCondition':
'://([^/.]+\\.)*' + currentDomainEscaped + '(:\\d+)?/'
'KeywordCondition': currentDomain
$scope.rule =
condition:
conditionType: 'HostWildcardCondition'
pattern: conditionSuggestion['HostWildcardCondition']
profileName: preselectedProfileNameForCondition
$scope.$watch 'rule.condition.conditionType', (type) ->
$scope.rule.condition.pattern = conditionSuggestion[type]
$scope.rule =
condition:
conditionType: 'HostWildcardCondition'
pattern: conditionSuggestion['HostWildcardCondition']
profileName: preselectedProfileNameForCondition
$scope.$watch 'rule.condition.conditionType', (type) ->
$scope.rule.condition.pattern = conditionSuggestion[type]
$scope.showConditionForm = true

View File

@ -59,7 +59,7 @@ html(lang='en' ng-app='omegaPopup' ng-controller='PopupCtrl' ng-csp)
span(omega-profile-inline='p' options='availableProfiles' disp-name='dispNameFilter')
li.divider(ng-show='!!currentDomain && validResultProfiles.length')
li(ng-show='!!currentProfileCanAddRule')
a(href='#' role='button' ng-click='showConditionForm = true' data-shortcut='addRule')
a(href='#' role='button' ng-click='prepareConditionForm()' data-shortcut='addRule')
span.glyphicon.glyphicon-plus
= ' '
span {{'popup_addCondition' | tr}}