Tests
[plcapi.git] / tests / parse_args.php
1 <?php
2
3 /**
4  * Common parameter parsing for benchmark and tests scripts.
5  *
6  * @param integer DEBUG
7  * @param string  LOCALSERVER
8  * @param string  URI
9  * @param string  HTTPSSERVER
10  * @param string  HTTPSSURI
11  * @param string  PROXY
12  * @param string  NOPROXY
13  * @param bool    HTTPSIGNOREPEER
14  * @param int     HTTPSVERIFYHOST
15  * @param int     SSLVERSION
16  *
17  * @copyright (C) 2007-2020 G. Giunta
18  * @license code licensed under the BSD License: see file license.txt
19  **/
20 class argParser
21 {
22     public static function getArgs()
23     {
24         $args = array(
25             'DEBUG' => 0,
26             'LOCALSERVER' => 'localhost',
27             'HTTPSSERVER' => 'gggeek.ssl.altervista.org',
28             'HTTPSURI' => '/sw/xmlrpc/demo/server/server.php',
29             'HTTPSIGNOREPEER' => false,
30             'HTTPSVERIFYHOST' => 2,
31             'SSLVERSION' => 0,
32             'PROXYSERVER' => null,
33             //'NOPROXY' => false,
34             'LOCALPATH' => __DIR__,
35         );
36
37         // check for command line (env vars) vs. web page input params
38         if (!isset($_SERVER['REQUEST_METHOD'])) {
39             foreach($_SERVER as $key => $val) {
40                 if (array_key_exists($key, $args)) {
41                     $$key = $val;
42                 }
43             }
44         } else {
45             // NB: we might as well consider using $_GET stuff later on...
46             extract($_GET);
47             extract($_POST);
48         }
49
50         if (isset($DEBUG)) {
51             $args['DEBUG'] = intval($DEBUG);
52         }
53         if (isset($LOCALSERVER)) {
54             $args['LOCALSERVER'] = $LOCALSERVER;
55         } else {
56             if (isset($HTTP_HOST)) {
57                 $args['LOCALSERVER'] = $HTTP_HOST;
58             } elseif (isset($_SERVER['HTTP_HOST'])) {
59                 $args['LOCALSERVER'] = $_SERVER['HTTP_HOST'];
60             }
61         }
62         if (isset($HTTPSSERVER)) {
63             $args['HTTPSSERVER'] = $HTTPSSERVER;
64         }
65         if (isset($HTTPSURI)) {
66             $args['HTTPSURI'] = $HTTPSURI;
67         }
68         if (isset($HTTPSIGNOREPEER)) {
69             $args['HTTPSIGNOREPEER'] = (bool)$HTTPSIGNOREPEER;
70         }
71         if (isset($HTTPSVERIFYHOST)) {
72             $args['HTTPSVERIFYHOST'] = (int)$HTTPSVERIFYHOST;
73         }
74         if (isset($SSLVERSION)) {
75             $args['SSLVERSION'] = (int)$SSLVERSION;
76         }
77         if (isset($PROXYSERVER)) {
78             $arr = explode(':', $PROXYSERVER);
79             $args['PROXYSERVER'] = $arr[0];
80             if (count($arr) > 1) {
81                 $args['PROXYPORT'] = $arr[1];
82             } else {
83                 $args['PROXYPORT'] = 8080;
84             }
85         }
86         // used to silence testsuite warnings about proxy code not being tested
87         //if (isset($NOPROXY)) {
88         //    $args['NOPROXY'] = true;
89         //}
90         if (!isset($URI)) {
91             // GUESTIMATE the url of local demo server
92             // play nice to php 3 and 4-5 in retrieving URL of server.php
93             /// @todo filter out query string from REQUEST_URI
94             if (isset($REQUEST_URI)) {
95                 $URI = str_replace('/tests/testsuite.php', '/demo/server/server.php', $REQUEST_URI);
96                 $URI = str_replace('/testsuite.php', '/server.php', $URI);
97                 $URI = str_replace('/tests/benchmark.php', '/demo/server/server.php', $URI);
98                 $URI = str_replace('/benchmark.php', '/server.php', $URI);
99             } elseif (isset($_SERVER['PHP_SELF']) && isset($_SERVER['REQUEST_METHOD'])) {
100                 $URI = str_replace('/tests/testsuite.php', '/demo/server/server.php', $_SERVER['PHP_SELF']);
101                 $URI = str_replace('/testsuite.php', '/server.php', $URI);
102                 $URI = str_replace('/tests/benchmark.php', '/demo/server/server.php', $URI);
103                 $URI = str_replace('/benchmark.php', '/server.php', $URI);
104             } else {
105                 $URI = '/demo/server/server.php';
106             }
107         }
108         if ($URI[0] != '/') {
109             $URI = '/' . $URI;
110         }
111         $args['URI'] = $URI;
112         if (isset($LOCALPATH)) {
113             $args['LOCALPATH'] = $LOCALPATH;
114         }
115
116         return $args;
117     }
118 }