diff --git a/opentrafficshaper/plugins/webserver/pages/configmanager.pm b/opentrafficshaper/plugins/webserver/pages/configmanager.pm index b180a9f5318fae27d270c50fbc8b7797c664f12f..08be843be8758ccf296b519ee03680b807479839 100644 --- a/opentrafficshaper/plugins/webserver/pages/configmanager.pm +++ b/opentrafficshaper/plugins/webserver/pages/configmanager.pm @@ -211,7 +211,7 @@ sub override_addedit # We need a ID first of all... if (defined($queryParams->{'oid'})) { # Check if we get some data back when pulling the override from the backend - if (defined($formData = getOverride($queryParams->{'oid'}))) { + if (defined($formData = getOverride($queryParams->{'oid'}->{'value'}))) { # Setup our checkboxes foreach my $checkbox (@formElementCheckboxes) { if (defined($formData->{$checkbox})) { @@ -223,7 +223,7 @@ sub override_addedit # XXX - TODO # If we didn't get any data, then something went wrong } else { - my $encodedID = encode_entities($queryParams->{'oid'}); + my $encodedID = encode_entities($queryParams->{'oid'}->{'value'}); push(@errors,"Override data could not be loaded using oid '$encodedID'"); } # Lastly if we were given a oid, this is actually an edit @@ -600,10 +600,10 @@ EOF } # Grab the override - my $override = getOverride($queryParams->{'oid'}); + my $override = getOverride($queryParams->{'oid'}->{'value'}); # Make the oid safe for HTML - my $encodedID = encode_entities($queryParams->{'oid'}); + my $encodedID = encode_entities($queryParams->{'oid'}->{'value'}); # Make sure the oid was valid... we would have an override now if it was if (!defined($override)) { diff --git a/opentrafficshaper/plugins/webserver/pages/limits.pm b/opentrafficshaper/plugins/webserver/pages/limits.pm index 9aafe256e5c770d84d0d8b09384521187bac33b3..b89f14febadf5a6717ed3918d375d40540b84e28 100644 --- a/opentrafficshaper/plugins/webserver/pages/limits.pm +++ b/opentrafficshaper/plugins/webserver/pages/limits.pm @@ -110,7 +110,7 @@ EOF # Conditionals if (defined($queryParams->{'source'})) { - if ($limit->{'Source'} ne $queryParams->{'source'}) { + if ($limit->{'Source'} ne $queryParams->{'source'}->{'value'}) { next; } } @@ -323,7 +323,7 @@ sub limit_addedit # We need a key first of all... if (defined($queryParams->{'lid'})) { # Check if we get some data back when pulling the limit from the backend - if (defined($formData = getLimit($queryParams->{'lid'}))) { + if (defined($formData = getLimit($queryParams->{'lid'}->{'value'}))) { # We need to make sure we're only editing our own limits if ($formData->{'Source'} ne "plugin.webserver.limits") { return (HTTP_TEMPORARY_REDIRECT,'limits'); @@ -333,7 +333,7 @@ sub limit_addedit # XXX - TODO # If we didn't get any data, then something went wrong } else { - my $encodedID = encode_entities($queryParams->{'lid'}); + my $encodedID = encode_entities($queryParams->{'lid'}->{'value'}); push(@errors,"Limit data could not be loaded using limit ID '$encodedID'"); } # Lastly if we were given a key, this is actually an edit @@ -702,10 +702,10 @@ EOF } # Grab the limit - my $limit = getLimit($queryParams->{'lid'}); + my $limit = getLimit($queryParams->{'lid'}->{'value'}); # Make the key safe for HTML - my $encodedLID = encode_entities($queryParams->{'lid'}); + my $encodedLID = encode_entities($queryParams->{'lid'}->{'value'}); # Make sure the limit ID is valid... we would have a limit now if it was if (!defined($limit)) { diff --git a/opentrafficshaper/plugins/webserver/pages/statistics.pm b/opentrafficshaper/plugins/webserver/pages/statistics.pm index d3dd93078d73bc4fa7820b7951198a3be736cb33..b5018dc61e7420c3560d667c6e665522fc49b933 100644 --- a/opentrafficshaper/plugins/webserver/pages/statistics.pm +++ b/opentrafficshaper/plugins/webserver/pages/statistics.pm @@ -74,7 +74,7 @@ EOF goto END; } # Check if we get some data back when pulling the limit from the backend - if (!defined($limit = getLimit($queryParams->{'lid'}))) { + if (!defined($limit = getLimit($queryParams->{'lid'}->{'value'}))) { $content .=<<EOF; <tr class="info"> <td colspan="8"><p class="text-center">No Results</p></td> @@ -144,12 +144,12 @@ sub databylimit } my $limit; - if (!defined($limit = getLimit($queryParams->{'lid'}))) { + if (!defined($limit = getLimit($queryParams->{'lid'}->{'value'}))) { return (HTTP_OK,{ 'error' => 'Invalid limit' },{ 'type' => 'json' }); } # Pull in stats data - my $statsData = opentrafficshaper::plugins::statistics::getStatsByLID($queryParams->{'lid'}); + my $statsData = opentrafficshaper::plugins::statistics::getStatsByLID($queryParams->{'lid'}->{'value'}); # First stage refinement my $rawData; diff --git a/opentrafficshaper/utils.pm b/opentrafficshaper/utils.pm index efdbc0c22c7913555527caa94eba94b9bfa67cf8..88589fd758664827ee6786630a5364b26649e723 100644 --- a/opentrafficshaper/utils.pm +++ b/opentrafficshaper/utils.pm @@ -79,17 +79,23 @@ sub parseFormContent return \%res; } + # Parse query data sub parseURIQuery { my $request = shift; my %res; - use URI::QueryParam; - # Pull in URL params - foreach my $key ($request->uri->query_param) { - $res{$key} = $request->uri->query_param($key); + # Grab URI components + my @components = $request->uri->query_form; + # Loop with the components in sets of name & value + while (@components) { + my ($name,$value) = (shift(@components),shift(@components)); + + # Store values and the last value we go + push(@{$res{$name}->{'values'}},$value); + $res{$name}->{'value'} = $value; } return \%res;