Skip to content

Commit 72ff938

Browse files
Merge pull request #8027 from rabbitmq/mergify/bp/v3.10.x/pr-8026
Management UI: handle invalid regular expressions in filters when switching tabs (backport #8010) (backport #8023) (backport #8026)
2 parents ef267f6 + cc48950 commit 72ff938

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

deps/rabbitmq_management/priv/www/js/global.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -489,8 +489,7 @@ var HELP = {
489489

490490
'filter-regex' :
491491
'Whether to enable regular expression matching. Both string literals \
492-
and regular expressions are matched in a case-insensitive manner.<br/><br/> \
493-
(<a href="https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions" target="_blank">Regular expression reference</a>)',
492+
and regular expressions are matched in a case-insensitive manner.<br/><br/>',
494493

495494
'consumer-active' :
496495
'Whether the consumer is active or not, i.e. whether the consumer can get messages from the queue. \
@@ -500,7 +499,7 @@ var HELP = {
500499
(<a href="https://www.rabbitmq.com/consumers.html#active-consumer" target="_blank">Documentation</a>)',
501500

502501
'consumer-owner' :
503-
'<a href="https://www.rabbitmq.com/consumers.html">AMQP consumers</a> belong to an AMQP channel, \
502+
'<a href="https://www.rabbitmq.com/consumers.html">AMQP 0-9-1 consumers</a> belong to a channel, \
504503
and <a href="https://www.rabbitmq.com/stream.html">stream consumers</a> belong to a stream connection.',
505504

506505
'plugins' :

deps/rabbitmq_management/priv/www/js/main.js

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,9 @@ function set_timer_interval(interval) {
247247
}
248248

249249
function reset_timer() {
250-
clearInterval(timer);
250+
if (timer != null) {
251+
clearInterval(timer);
252+
}
251253
if (timer_interval != null) {
252254
timer = setInterval(partial_update, timer_interval);
253255
}
@@ -726,13 +728,31 @@ function postprocess() {
726728
update_multifields();
727729
}
728730

731+
function is_valid_regexp(value) {
732+
try {
733+
var _ = new RegExp(value, 'i');
734+
return true;
735+
} catch (e) {
736+
return false;
737+
}
738+
}
739+
729740
function url_pagination_template_context(template, context, defaultPage, defaultPageSize){
730741
var page_number_request = fmt_page_number_request(context, defaultPage);
731742
var page_size = fmt_page_size_request(context, defaultPageSize);
732743
var name_request = fmt_filter_name_request(context, "");
733744
var use_regex = fmt_regex_request(context, "") == "checked";
734745
if (use_regex) {
735-
name_request = esc(name_request);
746+
// rabbitmq/rabbitmq-server#8008: if the expression cannot be compiled to a reg exp,
747+
// assume a regular text filter
748+
var valid_regexp = is_valid_regexp(name_request);
749+
if (!valid_regexp) {
750+
show_popup('warn', fmt_escape_html(`Filter expression '${name_request}' is not a valid regular expression, will perform a regular text query`));
751+
use_regex = false;
752+
}
753+
if (use_regex && valid_regexp) {
754+
name_request = esc(name_request);
755+
}
736756
}
737757
return '/' + template +
738758
'?page=' + page_number_request +

0 commit comments

Comments
 (0)