From 5ec97892b8d65ffdff8eef18495632e1c2c7c22e Mon Sep 17 00:00:00 2001 From: Michael Rasmussen Date: Tue, 23 Jun 2015 23:58:43 +0200 Subject: [PATCH] prepare for wblistadm server --- config.php | 3 +++ lib/utils.inc.php | 46 ++++++++++++++++++++++++++++++++++++++++++++++ rest_client.php | 45 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 94 insertions(+) create mode 100644 rest_client.php diff --git a/config.php b/config.php index da1e02e..ccc09c6 100644 --- a/config.php +++ b/config.php @@ -14,6 +14,9 @@ $CFG->amavis_policy_port = 9998; $CFG->ldap_dsn = "ldap://127.0.0.1:389"; $CFG->ldap_base_dn = "o=domains,dc=datanom,dc=net"; +// wblistadm server +$CFG->wblistadm_url = "http://127.0.0.1:8080"; + $CFG->root = '/usr/share/quarantine-admin/'; $CFG->wwwroot = '/qtadmin/'; diff --git a/lib/utils.inc.php b/lib/utils.inc.php index 5832d29..e0ab45d 100644 --- a/lib/utils.inc.php +++ b/lib/utils.inc.php @@ -236,6 +236,9 @@ class Utils { $admin = strtoupper($admin); } $this->settings['admin'] = ($admin == 'YES') ? true : false; + + // Log in to wblistadm server and get CSRFPreventionToken + $url = $CFG->wblistadm_host . ':' . $CFG->wblistadm_port . '/ticket'; } else { $this->settings['loginStatus'] = 'Login failed'; } @@ -381,4 +384,47 @@ class Utils { return $string; } + public function RESTCall($url, $data = null, $cookiesIn = '') { + $options = array( + CURLOPT_RETURNTRANSFER => true, // return web page + CURLOPT_HEADER => true, //return headers in addition to content + CURLOPT_FOLLOWLOCATION => true, // follow redirects + CURLOPT_ENCODING => "", // handle all encodings + CURLOPT_AUTOREFERER => true, // set referer on redirect + CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect + CURLOPT_TIMEOUT => 120, // timeout on response + CURLOPT_MAXREDIRS => 10, // stop after 10 redirects + CURLINFO_HEADER_OUT => true, + CURLOPT_SSL_VERIFYPEER => false, // Disabled SSL Cert checks + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_COOKIE => $cookiesIn + ); + + if ($data) { + $options[CURLOPT_POST] = 1; + $options[CURLOPT_POSTFIELDS] = $data; + } + + $ch = curl_init($url); + curl_setopt_array($ch, $options); + $rough_content = curl_exec($ch); + $err = curl_errno($ch); + $errmsg = curl_error($ch); + $header = curl_getinfo($ch); + curl_close($ch); + + $header_content = substr($rough_content, 0, $header['header_size']); + $body_content = trim(str_replace($header_content, '', $rough_content)); + $pattern = "#Set-Cookie:\\s+(?[^=]+=[^;]+)#m"; + preg_match_all($pattern, $header_content, $matches); + $cookiesOut = implode("; ", $matches['cookie']); + + $header['errno'] = $err; + $header['errmsg'] = $errmsg; + $header['headers'] = $header_content; + $header['content'] = $body_content; + $header['cookies'] = $cookiesOut; + + return $header; + } } diff --git a/rest_client.php b/rest_client.php new file mode 100644 index 0000000..0f1e44b --- /dev/null +++ b/rest_client.php @@ -0,0 +1,45 @@ + + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +require_once '/home/mir/git/qtadmin/config.php'; +require_once $CFG->root . 'lib/utils.inc.php'; + +$util = new Utils; + +$data = 'username=mir@miras.org&password=Clara0503'; +$response = $util->RESTCall($CFG->wblistadm_url.'/ticket', $data, $cookiesIn = '') + +?> + + + + + untitled + + + + + + + + + -- 2.39.2