Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/roundcube/roundcubemail.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Bruederli <thomas@roundcube.net>2022-11-07 00:48:28 +0300
committerThomas Bruederli <thomas@roundcube.net>2022-11-07 00:48:28 +0300
commitd0d268588f20f8468b104b65b7f6d3394c74cdf2 (patch)
tree563d9c6d6546e285232e27ad36caf904364c0c62
parent64131d8bd83ef1d55902838fb68dc5c82b06989d (diff)
Refactor & fix/adapt teststhomasb/fix-8738
-rw-r--r--program/include/rcmail.php7
-rw-r--r--tests/Rcmail/OutputHtml.php4
-rw-r--r--tests/Rcmail/Rcmail.php14
3 files changed, 16 insertions, 9 deletions
diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index a3bbc3e2f..f4f5e3298 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -1119,9 +1119,9 @@ class rcmail extends rcube
}
$base_path = '';
- $server_var = $this->get_requesr_uri_field();
+ $server_var = $this->get_request_uri_field();
if ($server_var && !empty($_SERVER[$server_var])) {
- $base_path = preg_replace('/[?&].*$/', '', $_SERVER[$server_var]) ?: './';
+ $base_path = preg_replace('/[?&].*$/', '', $_SERVER[$server_var]);
}
else if (!empty($_SERVER['REDIRECT_SCRIPT_URL'])) {
$base_path = $_SERVER['REDIRECT_SCRIPT_URL'];
@@ -1168,7 +1168,8 @@ class rcmail extends rcube
* Get the 'request_uri_field' config option
* with an additional check against the 'proxy_whitelist' config
*/
- protected function get_requesr_uri_field() {
+ protected function get_request_uri_field()
+ {
$server_var = $this->config->get('request_uri_field');
if (!empty($server_var) && (strpos($server_var, 'HTTP_') !== 0 || rcube_utils::check_proxy_whitelist_ip())) {
return $server_var;
diff --git a/tests/Rcmail/OutputHtml.php b/tests/Rcmail/OutputHtml.php
index 9aa294228..9c891831a 100644
--- a/tests/Rcmail/OutputHtml.php
+++ b/tests/Rcmail/OutputHtml.php
@@ -381,7 +381,7 @@ class Rcmail_RcmailOutputHtml extends PHPUnit\Framework\TestCase
$rcmail = rcube::get_instance();
$output = new rcmail_output_html();
- $this->assertSame('<form action="./phpunit?_task=cli" method="get">test</form>', $output->form_tag([], 'test'));
+ $this->assertSame('<form action="vendor/bin/phpunit?_task=cli" method="get">test</form>', $output->form_tag([], 'test'));
}
/**
@@ -404,7 +404,7 @@ class Rcmail_RcmailOutputHtml extends PHPUnit\Framework\TestCase
$output = new rcmail_output_html();
$expected = '<form name="rcmqsearchform" onsubmit="rcmail.command(\'search\'); return false"'
- . ' action="./phpunit?_task=cli" method="get"><label for="rcmqsearchbox" class="voice">Search terms</label>'
+ . ' action="vendor/bin/phpunit?_task=cli" method="get"><label for="rcmqsearchbox" class="voice">Search terms</label>'
. '<input name="_q" class="no-bs" id="rcmqsearchbox" placeholder="Search..." type="text"></form>';
$this->assertSame($expected, $output->search_form([]));
diff --git a/tests/Rcmail/Rcmail.php b/tests/Rcmail/Rcmail.php
index 1f5587273..4c4de7c68 100644
--- a/tests/Rcmail/Rcmail.php
+++ b/tests/Rcmail/Rcmail.php
@@ -14,6 +14,7 @@ class Rcmail_Rcmail extends ActionTestCase
$_SERVER['SERVER_PORT'] = '443';
$_SERVER['SCRIPT_NAME'] = '/sub/index.php';
$_SERVER['HTTPS'] = true;
+ $_SERVER['X_FORWARDED_PATH'] = '/proxied/';
rcmail::get_instance()->filename = '';
}
@@ -126,27 +127,32 @@ class Rcmail_Rcmail extends ActionTestCase
$rcmail = rcmail::get_instance();
$this->assertEquals(
- './?_task=cli&_action=test',
+ '/sub/?_task=cli&_action=test',
$rcmail->url('test'),
"Action only"
);
$this->assertEquals(
- './?_task=cli&_action=test&_a=AA',
+ '/sub/?_task=cli&_action=test&_a=AA',
$rcmail->url(['action' => 'test', 'a' => 'AA']),
"Unprefixed parameters"
);
$this->assertEquals(
- './?_task=cli&_action=test&_b=BB',
+ '/sub/?_task=cli&_action=test&_b=BB',
$rcmail->url(['_action' => 'test', '_b' => 'BB', '_c' => null]),
"Prefixed parameters (skip empty)"
);
- $this->assertEquals('./?_task=cli', $rcmail->url([]), "Empty input");
+ $this->assertEquals('/sub/?_task=cli', $rcmail->url([]), "Empty input");
+
$_SERVER['REQUEST_URI'] = '/rc/?_task=mail';
$this->assertEquals('/rc/?_task=cli', $rcmail->url([]), "Empty input with REQUEST_URI prefix");
+ $rcmail->config->set('request_uri_field', 'X_FORWARDED_PATH');
+ $this->assertEquals('/proxied/?_task=cli', $rcmail->url([]), "Consider request_uri_field config");
+ $rcmail->config->set('request_uri_field', 'UNDEFINED');
+
$this->assertEquals(
'/sub/?_task=cli&_action=test&_mode=ABS',
$rcmail->url(['_action' => 'test', '_mode' => 'ABS'], true),