From a23f0cfb05ef3e8ba151862e9ca62c9c2c9255ea Mon Sep 17 00:00:00 2001 From: systopia Date: Thu, 1 Mar 2018 11:08:44 +0100 Subject: [PATCH] implementing #20 --- proxy/config.php | 14 ++++++++++---- proxy/proxy.php | 10 +++++++--- proxy/rest.php | 6 +++--- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/proxy/config.php b/proxy/config.php index 6b6e9c6..0423a9d 100644 --- a/proxy/config.php +++ b/proxy/config.php @@ -36,10 +36,10 @@ $target_mail_view = $target_civicrm . '/civicrm/mailing/view'; ** GENERAL OPTIONS ** ****************************************************************/ -// if you enable this, the system will also try to -// parse a parameter called 'json' as a JSON file -// when looking for a certain parameter -$evaluate_json_parameter = FALSE; +// This logo is shown if the proxy server is address with a web browser +// add your own logo here +$civiproxy_logo = "SYSTOPIA Organisationsberatung"; + // Set api-key for mail subscribe/unsubscribe user // Set to NULL/FALSE to disable the feature @@ -86,6 +86,12 @@ $file_cache_include = array( /**************************************************************** ** REST API OPTIONS ** ****************************************************************/ + +// if you enable this, the system will also try to +// parse the 'json' parameter, which holds additional +// input data according to the CiviCRM REST API specs +$rest_evaluate_json_parameter = FALSE; + // whitelisting is done per IP address ($_SERVER['REMOTE_ADDR']) with a 'all' for the generic stuff that applies to all IP addresses // - if a request comes in and the IP is not a key in the array, the whitelisted in 'all' are used // - if a request comes in and the IP is indeed a key in the array, the whitelisted in the IP are checked first. If nothing is diff --git a/proxy/proxy.php b/proxy/proxy.php index 244f167..20168c7 100644 --- a/proxy/proxy.php +++ b/proxy/proxy.php @@ -8,8 +8,7 @@ +---------------------------------------------------------*/ require_once "config.php"; -$civiproxy_version = '0.5.beta1+dev20'; -$civiproxy_logo = "SYSTOPIA Organisationsberatung"; +$civiproxy_version = '0.6.dev1'; /** * this will redirect the request to another URL, @@ -228,12 +227,17 @@ function civiproxy_sanitise($value, $type) { } } elseif ($type == 'json') { // valid json - $json_data = json_decode($value); + $json_data = json_decode($value, true); if ($json_data === NULL) { $value = ''; } else { $value = json_encode($value); } + } elseif ($type == 'array') { + // this should only happen _inside_ the json field + if (!is_array($value)) { + $value = ''; + } } elseif (is_array($type)) { // this is a list of valid options $requested_value = $value; diff --git a/proxy/rest.php b/proxy/rest.php index 4018a6e..a8848d4 100644 --- a/proxy/rest.php +++ b/proxy/rest.php @@ -76,10 +76,10 @@ foreach ($action as $key => $value) { } // evaluate the JSON parameter -global $evaluate_json_parameter; -if ($evaluate_json_parameter) { +global $rest_evaluate_json_parameter; +if ($rest_evaluate_json_parameter) { if (isset($_REQUEST['json'])) { - $json_data = json_decode($_REQUEST['json']); + $json_data = json_decode($_REQUEST['json'], true); if (!empty($json_data)) { $json_parameters = civiproxy_get_parameters($valid_parameters, $json_data); $parameters['json'] = json_encode($json_parameters);