Completed
Push — php51 ( 617621...a4e868 )
by Gaetano
16:05 queued 06:04
created
debugger/common.php 1 patch
Indentation   +43 added lines, -43 removed lines patch added patch discarded remove patch
@@ -9,8 +9,8 @@  discard block
 block discarded – undo
9 9
  */
10 10
 
11 11
 // work around magic quotes
12
-  if (get_magic_quotes_gpc())
13
-  {
12
+    if (get_magic_quotes_gpc())
13
+    {
14 14
     function stripslashes_deep($value)
15 15
     {
16 16
         $value = is_array($value) ?
@@ -20,64 +20,64 @@  discard block
 block discarded – undo
20 20
         return $value;
21 21
     }
22 22
     $_GET = array_map('stripslashes_deep', $_GET);
23
-  }
23
+    }
24 24
 
25
-  $preferredEncodings = 'UTF-8, ASCII, ISO-8859-1, UTF-7, EUC-JP, SJIS, eucJP-win, SJIS-win, JIS, ISO-2022-JP';
26
-  $inputcharset = mb_detect_encoding(urldecode($_SERVER['REQUEST_URI']), $preferredEncodings);
25
+    $preferredEncodings = 'UTF-8, ASCII, ISO-8859-1, UTF-7, EUC-JP, SJIS, eucJP-win, SJIS-win, JIS, ISO-2022-JP';
26
+    $inputcharset = mb_detect_encoding(urldecode($_SERVER['REQUEST_URI']), $preferredEncodings);
27 27
 
28
-  if ( isset( $_GET['usepost'] ) && $_GET['usepost'] === 'true' )
29
-  {
30
-      $_GET = $_POST;
31
-      $inputcharset = mb_detect_encoding(implode('', $_GET), $preferredEncodings);
32
-  }
28
+    if ( isset( $_GET['usepost'] ) && $_GET['usepost'] === 'true' )
29
+    {
30
+        $_GET = $_POST;
31
+        $inputcharset = mb_detect_encoding(implode('', $_GET), $preferredEncodings);
32
+    }
33 33
 
34 34
 // recover input parameters
35
-  $debug = false;
36
-  $protocol = 0;
37
-  $run = false;
38
-  $wstype = 0;
39
-  $id = '';
40
-  if (isset($_GET['action']))
41
-  {
35
+    $debug = false;
36
+    $protocol = 0;
37
+    $run = false;
38
+    $wstype = 0;
39
+    $id = '';
40
+    if (isset($_GET['action']))
41
+    {
42 42
     if (isset($_GET['wstype']) && $_GET['wstype'] == '1')
43 43
     {
44
-      $wstype = 1;
45
-      if (isset($_GET['id']))
44
+        $wstype = 1;
45
+        if (isset($_GET['id']))
46 46
         $id = $_GET['id'];
47 47
     }
48 48
     $host = isset($_GET['host']) ? $_GET['host'] : 'localhost'; // using '' will trigger an xmlrpc error...
49 49
     if (isset($_GET['protocol']) && ($_GET['protocol'] == '1' || $_GET['protocol'] == '2'))
50
-      $protocol = $_GET['protocol'];
50
+        $protocol = $_GET['protocol'];
51 51
     if (strpos($host, 'http://') === 0)
52
-      $host = substr($host, 7);
52
+        $host = substr($host, 7);
53 53
     else if (strpos($host, 'https://') === 0)
54 54
     {
55
-      $host = substr($host, 8);
56
-      $protocol = 2;
55
+        $host = substr($host, 8);
56
+        $protocol = 2;
57 57
     }
58 58
     $port = isset($_GET['port']) ? $_GET['port'] : '';
59 59
     $path = isset($_GET['path']) ? $_GET['path'] : '';
60 60
     // in case user forgot initial '/' in xmlrpc server path, add it back
61 61
     if ($path && ($path[0]) != '/')
62
-      $path = '/'.$path;
62
+        $path = '/'.$path;
63 63
 
64 64
     if (isset($_GET['debug']) && ($_GET['debug'] == '1' || $_GET['debug'] == '2'))
65
-      $debug = $_GET['debug'];
65
+        $debug = $_GET['debug'];
66 66
 
67 67
     $verifyhost = (isset($_GET['verifyhost']) && ($_GET['verifyhost'] == '1' || $_GET['verifyhost'] == '2')) ? $_GET['verifyhost'] : 0;
68 68
     if (isset($_GET['verifypeer']) && $_GET['verifypeer'] == '1')
69
-      $verifypeer = true;
69
+        $verifypeer = true;
70 70
     else
71
-      $verifypeer = false;
71
+        $verifypeer = false;
72 72
     $cainfo= isset($_GET['cainfo']) ? $_GET['cainfo'] : '';
73 73
     $proxy = isset($_GET['proxy']) ? $_GET['proxy'] : 0;
74 74
     if (strpos($proxy, 'http://') === 0)
75
-      $proxy = substr($proxy, 7);
75
+        $proxy = substr($proxy, 7);
76 76
     $proxyuser= isset($_GET['proxyuser']) ? $_GET['proxyuser'] : '';
77 77
     $proxypwd = isset($_GET['proxypwd']) ? $_GET['proxypwd'] : '';
78 78
     $timeout = isset($_GET['timeout']) ? $_GET['timeout'] : 0;
79 79
     if (!is_numeric($timeout))
80
-      $timeout = 0;
80
+        $timeout = 0;
81 81
     $action = $_GET['action'];
82 82
 
83 83
     $method = isset($_GET['method']) ? $_GET['method'] : '';
@@ -86,7 +86,7 @@  discard block
 block discarded – undo
86 86
     $alt_payload = isset($_GET['altmethodpayload']) ? $_GET['altmethodpayload'] : '';
87 87
 
88 88
     if (isset($_GET['run']) && $_GET['run'] == 'now')
89
-      $run = true;
89
+        $run = true;
90 90
 
91 91
     $username = isset($_GET['username']) ? $_GET['username'] : '';
92 92
     $password = isset($_GET['password']) ? $_GET['password'] : '';
@@ -94,18 +94,18 @@  discard block
 block discarded – undo
94 94
     $authtype = (isset($_GET['authtype']) && ($_GET['authtype'] == '2' || $_GET['authtype'] == '8')) ? $_GET['authtype'] : 1;
95 95
 
96 96
     if (isset($_GET['requestcompression']) && ($_GET['requestcompression'] == '1' || $_GET['requestcompression'] == '2'))
97
-      $requestcompression = $_GET['requestcompression'];
97
+        $requestcompression = $_GET['requestcompression'];
98 98
     else
99
-      $requestcompression = 0;
99
+        $requestcompression = 0;
100 100
     if (isset($_GET['responsecompression']) && ($_GET['responsecompression'] == '1' || $_GET['responsecompression'] == '2' || $_GET['responsecompression'] == '3'))
101
-      $responsecompression = $_GET['responsecompression'];
101
+        $responsecompression = $_GET['responsecompression'];
102 102
     else
103
-      $responsecompression = 0;
103
+        $responsecompression = 0;
104 104
 
105 105
     $clientcookies = isset($_GET['clientcookies']) ? $_GET['clientcookies'] : '';
106
-  }
107
-  else
108
-  {
106
+    }
107
+    else
108
+    {
109 109
     $host = '';
110 110
     $port = '';
111 111
     $path = '';
@@ -127,11 +127,11 @@  discard block
 block discarded – undo
127 127
     $requestcompression = 0;
128 128
     $responsecompression = 0;
129 129
     $clientcookies = '';
130
-  }
130
+    }
131 131
 
132
-  // check input for known XMLRPC attacks against this or other libs
133
-  function payload_is_safe($input)
134
-  {
135
-      return true;
136
-  }
132
+    // check input for known XMLRPC attacks against this or other libs
133
+    function payload_is_safe($input)
134
+    {
135
+        return true;
136
+    }
137 137
 ?>
138 138
\ No newline at end of file
Please login to merge, or discard this patch.
debugger/action.php 1 patch
Indentation   +170 added lines, -170 removed lines patch added patch discarded remove patch
@@ -36,101 +36,101 @@  discard block
 block discarded – undo
36 36
 <body>
37 37
 <?php
38 38
 
39
-  include(dirname(__FILE__).'/common.php');
40
-  if ($action)
41
-  {
39
+    include(dirname(__FILE__).'/common.php');
40
+    if ($action)
41
+    {
42 42
 
43 43
     // make sure the script waits long enough for the call to complete...
44 44
     if ($timeout)
45
-      set_time_limit($timeout+10);
45
+        set_time_limit($timeout+10);
46 46
 
47 47
     include('xmlrpc.inc');
48 48
     if ($wstype == 1)
49 49
     {
50
-      @include('jsonrpc.inc');
51
-      if (!class_exists('jsonrpc_client'))
52
-      {
50
+        @include('jsonrpc.inc');
51
+        if (!class_exists('jsonrpc_client'))
52
+        {
53 53
         die('Error: to debug the jsonrpc protocol the jsonrpc.inc file is needed');
54
-      }
55
-      $clientclass = 'jsonrpc_client';
56
-      $msgclass = 'jsonrpcmsg';
57
-      $protoname = 'JSONRPC';
54
+        }
55
+        $clientclass = 'jsonrpc_client';
56
+        $msgclass = 'jsonrpcmsg';
57
+        $protoname = 'JSONRPC';
58 58
     }
59 59
     else
60 60
     {
61
-      $clientclass = 'xmlrpc_client';
62
-      $msgclass = 'xmlrpcmsg';
63
-      $protoname = 'XMLRPC';
61
+        $clientclass = 'xmlrpc_client';
62
+        $msgclass = 'xmlrpcmsg';
63
+        $protoname = 'XMLRPC';
64 64
     }
65 65
 
66 66
     if ($port != "")
67 67
     {
68
-      $client = new $clientclass($path, $host, $port);
69
-      $server = "$host:$port$path";
68
+        $client = new $clientclass($path, $host, $port);
69
+        $server = "$host:$port$path";
70 70
     } else {
71
-      $client = new $clientclass($path, $host);
72
-      $server = "$host$path";
71
+        $client = new $clientclass($path, $host);
72
+        $server = "$host$path";
73 73
     }
74 74
     if ($protocol == 2)
75 75
     {
76
-      $server = 'https://'.$server;
76
+        $server = 'https://'.$server;
77 77
     }
78 78
     else
79 79
     {
80
-      $server = 'http://'.$server;
80
+        $server = 'http://'.$server;
81 81
     }
82 82
     if ($proxy != '') {
83
-      $pproxy = explode(':', $proxy);
84
-      if (count($pproxy) > 1)
83
+        $pproxy = explode(':', $proxy);
84
+        if (count($pproxy) > 1)
85 85
         $pport = $pproxy[1];
86
-      else
86
+        else
87 87
         $pport = 8080;
88
-      $client->setProxy($pproxy[0], $pport, $proxyuser, $proxypwd);
88
+        $client->setProxy($pproxy[0], $pport, $proxyuser, $proxypwd);
89 89
     }
90 90
 
91 91
     if ($protocol == 2)
92 92
     {
93
-      $client->setSSLVerifyPeer($verifypeer);
94
-      $client->setSSLVerifyHost($verifyhost);
95
-      if ($cainfo)
96
-      {
93
+        $client->setSSLVerifyPeer($verifypeer);
94
+        $client->setSSLVerifyHost($verifyhost);
95
+        if ($cainfo)
96
+        {
97 97
         $client->setCaCertificate($cainfo);
98
-      }
99
-      $httpprotocol = 'https';
98
+        }
99
+        $httpprotocol = 'https';
100 100
     }
101 101
     else if ($protocol == 1)
102
-      $httpprotocol = 'http11';
102
+        $httpprotocol = 'http11';
103 103
     else
104
-      $httpprotocol = 'http';
104
+        $httpprotocol = 'http';
105 105
 
106 106
     if ($username)
107
-      $client->setCredentials($username, $password, $authtype);
107
+        $client->setCredentials($username, $password, $authtype);
108 108
 
109 109
     $client->setDebug($debug);
110 110
 
111 111
     switch ($requestcompression) {
112
-      case 0:
112
+        case 0:
113 113
         $client->request_compression = '';
114 114
         break;
115
-      case 1:
115
+        case 1:
116 116
         $client->request_compression = 'gzip';
117 117
         break;
118
-      case 2:
118
+        case 2:
119 119
         $client->request_compression = 'deflate';
120 120
         break;
121 121
     }
122 122
 
123 123
     switch ($responsecompression) {
124
-      case 0:
124
+        case 0:
125 125
         $client->accepted_compression = '';
126 126
         break;
127
-      case 1:
127
+        case 1:
128 128
         $client->accepted_compression = array('gzip');
129 129
         break;
130
-      case 2:
130
+        case 2:
131 131
         $client->accepted_compression = array('deflate');
132 132
         break;
133
-      case 3:
133
+        case 3:
134 134
         $client->accepted_compression = array('gzip', 'deflate');
135 135
         break;
136 136
     }
@@ -138,24 +138,24 @@  discard block
 block discarded – undo
138 138
     $cookies = explode(',', $clientcookies);
139 139
     foreach ($cookies as $cookie)
140 140
     {
141
-      if (strpos($cookie, '='))
142
-      {
141
+        if (strpos($cookie, '='))
142
+        {
143 143
         $cookie = explode('=', $cookie);
144 144
         $client->setCookie(trim($cookie[0]), trim(@$cookie[1]));
145
-      }
145
+        }
146 146
     }
147 147
 
148 148
     $msg = array();
149 149
     switch ($action) {
150 150
 
151
-      case 'wrap':
151
+        case 'wrap':
152 152
         @include('xmlrpc_wrappers.inc');
153 153
         if (!function_exists('build_remote_method_wrapper_code'))
154 154
         {
155
-          die('Error: to enable creation of method stubs the xmlrpc_wrappers.inc file is needed');
155
+            die('Error: to enable creation of method stubs the xmlrpc_wrappers.inc file is needed');
156 156
         }
157 157
         // fall thru intentionally
158
-      case 'describe':
158
+        case 'describe':
159 159
       case 'wrap':
160 160
         $msg[0] = new $msgclass('system.methodHelp', null, $id);
161 161
         $msg[0]->addparam(new xmlrpcval($method));
@@ -163,18 +163,18 @@  discard block
 block discarded – undo
163 163
         $msg[1]->addparam(new xmlrpcval($method));
164 164
         $actionname = 'Description of method "'.$method.'"';
165 165
         break;
166
-      case 'list':
166
+        case 'list':
167 167
         $msg[0] = new $msgclass('system.listMethods', null, $id);
168 168
         $actionname = 'List of available methods';
169 169
         break;
170
-      case 'execute':
170
+        case 'execute':
171 171
         if (!payload_is_safe($payload))
172
-          die("Tsk tsk tsk, please stop it or I will have to call in the cops!");
172
+            die("Tsk tsk tsk, please stop it or I will have to call in the cops!");
173 173
         $msg[0] = new $msgclass($method, null, $id);
174 174
         // hack! build xml payload by hand
175 175
         if ($wstype == 1)
176 176
         {
177
-          $msg[0]->payload = "{\n".
177
+            $msg[0]->payload = "{\n".
178 178
             '"method": "' . $method . "\",\n\"params\": [" .
179 179
             $payload .
180 180
             "\n],\n\"id\": ";
@@ -185,24 +185,24 @@  discard block
 block discarded – undo
185 185
             }
186 186
             else
187 187
             {
188
-              if (is_numeric($id) || $id == 'false' || $id == 'true' || $id == 'null')
189
-              {
188
+                if (is_numeric($id) || $id == 'false' || $id == 'true' || $id == 'null')
189
+                {
190 190
                 $msg[0]->payload .= "$id\n}";
191
-              }
192
-              else
193
-              {
191
+                }
192
+                else
193
+                {
194 194
                 $msg[0]->payload .= "\"$id\"\n}";
195
-              }
195
+                }
196 196
             }
197 197
         }
198 198
         else
199
-          $msg[0]->payload = $msg[0]->xml_header($inputcharset) .
199
+            $msg[0]->payload = $msg[0]->xml_header($inputcharset) .
200 200
             '<methodName>' . $method . "</methodName>\n<params>" .
201 201
             $payload .
202 202
             "</params>\n" . $msg[0]->xml_footer();
203 203
         $actionname = 'Execution of method '.$method;
204 204
         break;
205
-      default: // give a warning
205
+        default: // give a warning
206 206
         $actionname = '[ERROR: unknown action] "'.$action.'"';
207 207
     }
208 208
 
@@ -214,81 +214,81 @@  discard block
 block discarded – undo
214 214
     $response = null;
215 215
     // execute method(s)
216 216
     if ($debug)
217
-      echo '<div class="dbginfo"><h2>Debug info:</h2>';  /// @todo use ob_start instead
217
+        echo '<div class="dbginfo"><h2>Debug info:</h2>';  /// @todo use ob_start instead
218 218
     $resp = array();
219 219
     $mtime = explode(' ',microtime());
220 220
     $time = (float)$mtime[0] + (float)$mtime[1];
221 221
     foreach ($msg as $message)
222 222
     {
223
-      // catch errors: for older xmlrpc libs, send does not return by ref
224
-      @$response =& $client->send($message, $timeout, $httpprotocol);
225
-      $resp[] = $response;
226
-      if (!$response || $response->faultCode())
223
+        // catch errors: for older xmlrpc libs, send does not return by ref
224
+        @$response =& $client->send($message, $timeout, $httpprotocol);
225
+        $resp[] = $response;
226
+        if (!$response || $response->faultCode())
227 227
         break;
228 228
     }
229 229
     $mtime = explode(' ',microtime());
230 230
     $time = (float)$mtime[0] + (float)$mtime[1] - $time;
231 231
     if ($debug)
232
-      echo "</div>\n";
232
+        echo "</div>\n";
233 233
 
234 234
     if ($response)
235 235
     {
236 236
 
237 237
     if ($response->faultCode())
238 238
     {
239
-      // call failed! echo out error msg!
240
-      //echo '<h2>'.htmlspecialchars($actionname, ENT_COMPAT, $inputcharset).' on server '.htmlspecialchars($server, ENT_COMPAT, $inputcharset).'</h2>';
241
-      echo "<h3>$protoname call FAILED!</h3>\n";
242
-      echo "<p>Fault code: [" . htmlspecialchars($response->faultCode(), ENT_COMPAT, $GLOBALS['xmlrpc_internalencoding']) .
239
+        // call failed! echo out error msg!
240
+        //echo '<h2>'.htmlspecialchars($actionname, ENT_COMPAT, $inputcharset).' on server '.htmlspecialchars($server, ENT_COMPAT, $inputcharset).'</h2>';
241
+        echo "<h3>$protoname call FAILED!</h3>\n";
242
+        echo "<p>Fault code: [" . htmlspecialchars($response->faultCode(), ENT_COMPAT, $GLOBALS['xmlrpc_internalencoding']) .
243 243
         "] Reason: '" . htmlspecialchars($response->faultString(), ENT_COMPAT, $GLOBALS['xmlrpc_internalencoding']) . "'</p>\n";
244
-      echo (strftime("%d/%b/%Y:%H:%M:%S\n"));
244
+        echo (strftime("%d/%b/%Y:%H:%M:%S\n"));
245 245
     }
246 246
     else
247 247
     {
248
-      // call succeeded: parse results
249
-      //echo '<h2>'.htmlspecialchars($actionname, ENT_COMPAT, $inputcharset).' on server '.htmlspecialchars($server, ENT_COMPAT, $inputcharset).'</h2>';
250
-      printf ("<h3>%s call(s) OK (%.2f secs.)</h3>\n", $protoname, $time);
251
-      echo (strftime("%d/%b/%Y:%H:%M:%S\n"));
248
+        // call succeeded: parse results
249
+        //echo '<h2>'.htmlspecialchars($actionname, ENT_COMPAT, $inputcharset).' on server '.htmlspecialchars($server, ENT_COMPAT, $inputcharset).'</h2>';
250
+        printf ("<h3>%s call(s) OK (%.2f secs.)</h3>\n", $protoname, $time);
251
+        echo (strftime("%d/%b/%Y:%H:%M:%S\n"));
252 252
 
253
-      switch ($action)
254
-      {
253
+        switch ($action)
254
+        {
255 255
         case 'list':
256 256
 
257 257
         $v = $response->value();
258 258
         if ($v->kindOf()=="array")
259 259
         {
260
-          $max = $v->arraysize();
261
-          echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n";
262
-          echo "<thead>\n<tr><th>Method</th><th>Description</th></tr>\n</thead>\n<tbody>\n";
263
-          for($i=0; $i < $max; $i++)
264
-          {
260
+            $max = $v->arraysize();
261
+            echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n";
262
+            echo "<thead>\n<tr><th>Method</th><th>Description</th></tr>\n</thead>\n<tbody>\n";
263
+            for($i=0; $i < $max; $i++)
264
+            {
265 265
             $rec = $v->arraymem($i);
266 266
             if ($i%2) $class=' class="oddrow"'; else $class = ' class="evenrow"';
267 267
             echo ("<tr><td$class>".htmlspecialchars($rec->scalarval(), ENT_COMPAT, $GLOBALS['xmlrpc_internalencoding'])."</td><td$class><form action=\"controller.php\" method=\"get\" target=\"frmcontroller\">".
268
-              "<input type=\"hidden\" name=\"host\" value=\"".htmlspecialchars($host, ENT_COMPAT, $inputcharset)."\" />".
269
-              "<input type=\"hidden\" name=\"port\" value=\"".htmlspecialchars($port, ENT_COMPAT, $inputcharset)."\" />".
270
-              "<input type=\"hidden\" name=\"path\" value=\"".htmlspecialchars($path, ENT_COMPAT, $inputcharset)."\" />".
271
-              "<input type=\"hidden\" name=\"id\" value=\"".htmlspecialchars($id, ENT_COMPAT, $inputcharset)."\" />".
272
-              "<input type=\"hidden\" name=\"debug\" value=\"$debug\" />".
273
-              "<input type=\"hidden\" name=\"username\" value=\"".htmlspecialchars($username, ENT_COMPAT, $inputcharset)."\" />".
274
-              "<input type=\"hidden\" name=\"password\" value=\"".htmlspecialchars($password, ENT_COMPAT, $inputcharset)."\" />".
275
-              "<input type=\"hidden\" name=\"authtype\" value=\"$authtype\" />".
276
-              "<input type=\"hidden\" name=\"verifyhost\" value=\"$verifyhost\" />".
277
-              "<input type=\"hidden\" name=\"verifypeer\" value=\"$verifypeer\" />".
278
-              "<input type=\"hidden\" name=\"cainfo\" value=\"".htmlspecialchars($cainfo, ENT_COMPAT, $inputcharset)."\" />".
279
-              "<input type=\"hidden\" name=\"proxy\" value=\"".htmlspecialchars($proxy, ENT_COMPAT, $inputcharset)."\" />".
280
-              "<input type=\"hidden\" name=\"proxyuser\" value=\"".htmlspecialchars($proxyuser, ENT_COMPAT, $inputcharset)."\" />".
281
-              "<input type=\"hidden\" name=\"proxypwd\" value=\"".htmlspecialchars($proxypwd, ENT_COMPAT, $inputcharset)."\" />".
282
-              "<input type=\"hidden\" name=\"responsecompression\" value=\"$responsecompression\" />".
283
-              "<input type=\"hidden\" name=\"requestcompression\" value=\"$requestcompression\" />".
284
-              "<input type=\"hidden\" name=\"clientcookies\" value=\"".htmlspecialchars($clientcookies, ENT_COMPAT, $inputcharset)."\" />".
285
-              "<input type=\"hidden\" name=\"protocol\" value=\"$protocol\" />".
286
-              "<input type=\"hidden\" name=\"timeout\" value=\"".htmlspecialchars($timeout, ENT_COMPAT, $inputcharset)."\" />".
287
-              "<input type=\"hidden\" name=\"method\" value=\"".$rec->scalarval()."\" />".
288
-              "<input type=\"hidden\" name=\"wstype\" value=\"$wstype\" />".
289
-              "<input type=\"hidden\" name=\"action\" value=\"describe\" />".
290
-              "<input type=\"hidden\" name=\"run\" value=\"now\" />".
291
-              "<input type=\"submit\" value=\"Describe\" /></form></td>");
268
+                "<input type=\"hidden\" name=\"host\" value=\"".htmlspecialchars($host, ENT_COMPAT, $inputcharset)."\" />".
269
+                "<input type=\"hidden\" name=\"port\" value=\"".htmlspecialchars($port, ENT_COMPAT, $inputcharset)."\" />".
270
+                "<input type=\"hidden\" name=\"path\" value=\"".htmlspecialchars($path, ENT_COMPAT, $inputcharset)."\" />".
271
+                "<input type=\"hidden\" name=\"id\" value=\"".htmlspecialchars($id, ENT_COMPAT, $inputcharset)."\" />".
272
+                "<input type=\"hidden\" name=\"debug\" value=\"$debug\" />".
273
+                "<input type=\"hidden\" name=\"username\" value=\"".htmlspecialchars($username, ENT_COMPAT, $inputcharset)."\" />".
274
+                "<input type=\"hidden\" name=\"password\" value=\"".htmlspecialchars($password, ENT_COMPAT, $inputcharset)."\" />".
275
+                "<input type=\"hidden\" name=\"authtype\" value=\"$authtype\" />".
276
+                "<input type=\"hidden\" name=\"verifyhost\" value=\"$verifyhost\" />".
277
+                "<input type=\"hidden\" name=\"verifypeer\" value=\"$verifypeer\" />".
278
+                "<input type=\"hidden\" name=\"cainfo\" value=\"".htmlspecialchars($cainfo, ENT_COMPAT, $inputcharset)."\" />".
279
+                "<input type=\"hidden\" name=\"proxy\" value=\"".htmlspecialchars($proxy, ENT_COMPAT, $inputcharset)."\" />".
280
+                "<input type=\"hidden\" name=\"proxyuser\" value=\"".htmlspecialchars($proxyuser, ENT_COMPAT, $inputcharset)."\" />".
281
+                "<input type=\"hidden\" name=\"proxypwd\" value=\"".htmlspecialchars($proxypwd, ENT_COMPAT, $inputcharset)."\" />".
282
+                "<input type=\"hidden\" name=\"responsecompression\" value=\"$responsecompression\" />".
283
+                "<input type=\"hidden\" name=\"requestcompression\" value=\"$requestcompression\" />".
284
+                "<input type=\"hidden\" name=\"clientcookies\" value=\"".htmlspecialchars($clientcookies, ENT_COMPAT, $inputcharset)."\" />".
285
+                "<input type=\"hidden\" name=\"protocol\" value=\"$protocol\" />".
286
+                "<input type=\"hidden\" name=\"timeout\" value=\"".htmlspecialchars($timeout, ENT_COMPAT, $inputcharset)."\" />".
287
+                "<input type=\"hidden\" name=\"method\" value=\"".$rec->scalarval()."\" />".
288
+                "<input type=\"hidden\" name=\"wstype\" value=\"$wstype\" />".
289
+                "<input type=\"hidden\" name=\"action\" value=\"describe\" />".
290
+                "<input type=\"hidden\" name=\"run\" value=\"now\" />".
291
+                "<input type=\"submit\" value=\"Describe\" /></form></td>");
292 292
             //echo("</tr>\n");
293 293
 
294 294
             // generate lo scheletro per il method payload per eventuali test
@@ -303,10 +303,10 @@  discard block
 block discarded – undo
303 303
               "<input type=\"hidden\" name=\"action\" value=\"execute\" />".
304 304
               "<input type=\"submit\" value=\"Test\" /></td></form>");*/
305 305
             echo("</tr>\n");
306
-          }
307
-          echo "</tbody>\n</table>";
306
+            }
307
+            echo "</tbody>\n</table>";
308 308
         }
309
-          break;
309
+            break;
310 310
 
311 311
         case 'describe':
312 312
 
@@ -317,46 +317,46 @@  discard block
 block discarded – undo
317 317
         echo "<thead>\n<tr><th>Method</th><th>".htmlspecialchars($method, ENT_COMPAT, $inputcharset)."</th><th>&nbsp;</th><th>&nbsp;</th></tr>\n</thead>\n<tbody>\n";
318 318
         $desc = htmlspecialchars($r1->scalarval(), ENT_COMPAT, $GLOBALS['xmlrpc_internalencoding']);
319 319
         if ($desc == "")
320
-          $desc = "-";
320
+            $desc = "-";
321 321
         echo "<tr><td class=\"evenrow\">Description</td><td colspan=\"3\" class=\"evenrow\">$desc</td></tr>\n";
322 322
         $payload="";
323 323
         $alt_payload="";
324 324
         if ($r2->kindOf()!="array")
325
-          echo "<tr><td class=\"oddrow\">Signature</td><td class=\"oddrow\">Unknown</td><td class=\"oddrow\">&nbsp;</td></tr>\n";
325
+            echo "<tr><td class=\"oddrow\">Signature</td><td class=\"oddrow\">Unknown</td><td class=\"oddrow\">&nbsp;</td></tr>\n";
326 326
         else
327 327
         {
328
-          for($i=0; $i < $r2->arraysize(); $i++)
329
-          {
328
+            for($i=0; $i < $r2->arraysize(); $i++)
329
+            {
330 330
             if ($i+1%2) $class=' class="oddrow"'; else $class = ' class="evenrow"';
331 331
             echo "<tr><td$class>Signature&nbsp;".($i+1)."</td><td$class>";
332 332
             $x = $r2->arraymem($i);
333 333
             if ($x->kindOf()=="array")
334 334
             {
335
-              $ret = $x->arraymem(0);
336
-              echo "<code>OUT:&nbsp;" . htmlspecialchars($ret->scalarval(), ENT_COMPAT, $GLOBALS['xmlrpc_internalencoding']) . "<br />IN: (";
337
-              if ($x->arraysize() > 1)
338
-              {
335
+                $ret = $x->arraymem(0);
336
+                echo "<code>OUT:&nbsp;" . htmlspecialchars($ret->scalarval(), ENT_COMPAT, $GLOBALS['xmlrpc_internalencoding']) . "<br />IN: (";
337
+                if ($x->arraysize() > 1)
338
+                {
339 339
                 for($k = 1; $k < $x->arraysize(); $k++)
340 340
                 {
341
-                  $y = $x->arraymem($k);
342
-                  echo $y->scalarval();
343
-                  if ($wstype != 1)
344
-                  {
341
+                    $y = $x->arraymem($k);
342
+                    echo $y->scalarval();
343
+                    if ($wstype != 1)
344
+                    {
345 345
                     $payload = $payload . '<param><value><'.htmlspecialchars($y->scalarval(), ENT_COMPAT, $GLOBALS['xmlrpc_internalencoding']).'></'.htmlspecialchars($y->scalarval(), ENT_COMPAT, $GLOBALS['xmlrpc_internalencoding'])."></value></param>\n";
346
-                  }
347
-                  $alt_payload .= $y->scalarval();
348
-                  if ($k < $x->arraysize()-1)
349
-                  {
346
+                    }
347
+                    $alt_payload .= $y->scalarval();
348
+                    if ($k < $x->arraysize()-1)
349
+                    {
350 350
                     $alt_payload .= ';';
351 351
                     echo ", ";
352
-                  }
352
+                    }
353 353
                 }
354
-              }
355
-              echo ")</code>";
354
+                }
355
+                echo ")</code>";
356 356
             }
357 357
             else
358 358
             {
359
-              echo 'Unknown';
359
+                echo 'Unknown';
360 360
             }
361 361
             echo '</td>';
362 362
             //bottone per testare questo metodo
@@ -387,7 +387,7 @@  discard block
 block discarded – undo
387 387
             "<input type=\"hidden\" name=\"wstype\" value=\"$wstype\" />".
388 388
             "<input type=\"hidden\" name=\"action\" value=\"execute\" />";
389 389
             if ($wstype != 1)
390
-              echo "<input type=\"submit\" value=\"Load method synopsis\" />";
390
+                echo "<input type=\"submit\" value=\"Load method synopsis\" />";
391 391
             echo "</form></td>\n";
392 392
 
393 393
             echo "<td$class><form action=\"controller.php\" target=\"frmcontroller\" method=\"get\">".
@@ -420,66 +420,66 @@  discard block
 block discarded – undo
420 420
             "<input type=\"submit\" value=\"Generate method call stub code\" />";
421 421
             echo "</form></td></tr>\n";
422 422
 
423
-          }
423
+            }
424 424
         }
425 425
         echo "</tbody>\n</table>";
426 426
 
427
-          break;
427
+            break;
428 428
 
429 429
         case 'wrap':
430 430
           $r1 = $resp[0]->value();
431
-          $r2 = $resp[1]->value();
432
-          if ($r2->kindOf()!="array" || $r2->arraysize() <= $methodsig)
431
+            $r2 = $resp[1]->value();
432
+            if ($r2->kindOf()!="array" || $r2->arraysize() <= $methodsig)
433 433
             echo "Error: signature unknown\n";
434
-          else
435
-          {
436
-          $mdesc = $r1->scalarval();
437
-          $msig = php_xmlrpc_decode($r2);
438
-          $msig = $msig[$methodsig];
439
-          $proto = $protocol == 2 ? 'https' : $protocol == 1 ? 'http11' : '';
440
-          if ($proxy  == '' && $username == '' && !$requestcompression && !$responsecompression &&
434
+            else
435
+            {
436
+            $mdesc = $r1->scalarval();
437
+            $msig = php_xmlrpc_decode($r2);
438
+            $msig = $msig[$methodsig];
439
+            $proto = $protocol == 2 ? 'https' : $protocol == 1 ? 'http11' : '';
440
+            if ($proxy  == '' && $username == '' && !$requestcompression && !$responsecompression &&
441 441
             $clientcookies == '')
442
-          {
442
+            {
443 443
             $opts = 0; // simple client copy in stub code
444
-          }
445
-          else
446
-          {
444
+            }
445
+            else
446
+            {
447 447
             $opts = 1; // complete client copy in stub code
448
-          }
449
-          if ($wstype == 1)
450
-          {
448
+            }
449
+            if ($wstype == 1)
450
+            {
451 451
             $prefix = 'jsonrpc';
452
-          }
453
-          else
454
-          {
452
+            }
453
+            else
454
+            {
455 455
             $prefix = 'xmlrpc';
456
-          }
457
-          //$code = wrap_xmlrpc_method($client, $method, $methodsig, 0, $proto, '', $opts);
458
-          $code = build_remote_method_wrapper_code($client, $method, str_replace('.', '_', $prefix.'_'.$method), $msig, $mdesc, $timeout, $proto, $opts, $prefix);
459
-          //if ($code)
460
-          //{
461
-              echo "<div id=\"phpcode\">\n";
456
+            }
457
+            //$code = wrap_xmlrpc_method($client, $method, $methodsig, 0, $proto, '', $opts);
458
+            $code = build_remote_method_wrapper_code($client, $method, str_replace('.', '_', $prefix.'_'.$method), $msig, $mdesc, $timeout, $proto, $opts, $prefix);
459
+            //if ($code)
460
+            //{
461
+                echo "<div id=\"phpcode\">\n";
462 462
             highlight_string("<?php\n".$code['docstring'].$code['source'].'?>');
463 463
             echo "\n</div>";
464
-          //}
465
-          //else
466
-          //{
467
-          //  echo 'Error while building php code stub...';
468
-          }
464
+            //}
465
+            //else
466
+            //{
467
+            //  echo 'Error while building php code stub...';
468
+            }
469 469
 
470
-          break;
470
+            break;
471 471
 
472 472
         case 'execute':
473 473
           echo '<div id="response"><h2>Response:</h2>'.htmlspecialchars($response->serialize(), ENT_COMPAT, $GLOBALS['xmlrpc_internalencoding']).'</div>';
474
-          break;
474
+            break;
475 475
 
476 476
         default: // give a warning
477 477
       }
478 478
     } // if !$response->faultCode()
479 479
     } // if $response
480
-  }
481
-  else
482
-  {
480
+    }
481
+    else
482
+    {
483 483
     // no action taken yet: give some instructions on debugger usage
484 484
 ?>
485 485
 
@@ -490,10 +490,10 @@  discard block
 block discarded – undo
490 490
 <li>To run method: click on 'load method synopsis' for desired method. This will load a skeleton for method call parameters in the form above. Complete all xmlrpc values with appropriate data and click 'Execute'</li>
491 491
 </ol>
492 492
 <?php
493
-  if (!extension_loaded('curl'))
494
-  {
495
-      echo "<p class=\"evidence\">You will need to enable the CURL extension to use the HTTPS and HTTP 1.1 transports</p>\n";
496
-  }
493
+    if (!extension_loaded('curl'))
494
+    {
495
+        echo "<p class=\"evidence\">You will need to enable the CURL extension to use the HTTPS and HTTP 1.1 transports</p>\n";
496
+    }
497 497
 ?>
498 498
 
499 499
 <h3>Example:</h3>
@@ -521,7 +521,7 @@  discard block
 block discarded – undo
521 521
 <li>2005-06-24: fixed error with calling methods having parameters...</li>
522 522
 </ul>
523 523
 <?php
524
-  }
524
+    }
525 525
 ?>
526 526
 </body>
527 527
 </html>
Please login to merge, or discard this patch.
debugger/index.php 1 patch
Indentation   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -1,11 +1,11 @@
 block discarded – undo
1 1
 <?php
2
-  $query = '';
3
-  if (isset($_GET['run']))
4
-  {
2
+    $query = '';
3
+    if (isset($_GET['run']))
4
+    {
5 5
     $path = parse_url($_GET['run']);
6 6
     if (isset($path['query']))
7
-      $query = '?'.$path['query'];
8
-  }
7
+        $query = '?'.$path['query'];
8
+    }
9 9
 ?>
10 10
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
11 11
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
Please login to merge, or discard this patch.
debugger/controller.php 1 patch
Indentation   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -13,13 +13,13 @@
 block discarded – undo
13 13
  * @todo add http no-cache headers
14 14
  **/
15 15
 
16
-  include(dirname(__FILE__).'/common.php');
17
-  if ($action == '')
16
+    include(dirname(__FILE__).'/common.php');
17
+    if ($action == '')
18 18
     $action = 'list';
19 19
 
20
-  // relative path to the visual xmlrpc editing dialog
21
-  $editorpath = '../../javascript/debugger/';
22
-  $editorlibs = '../../javascript/lib/';
20
+    // relative path to the visual xmlrpc editing dialog
21
+    $editorpath = '../../javascript/debugger/';
22
+    $editorlibs = '../../javascript/lib/';
23 23
 ?>
24 24
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
25 25
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Please login to merge, or discard this patch.
demo/server/proxy.php 1 patch
Indentation   +69 added lines, -69 removed lines patch added patch discarded remove patch
@@ -9,77 +9,77 @@
 block discarded – undo
9 9
  * @license code licensed under the BSD License: http://phpxmlrpc.sourceforge.net/license.txt
10 10
  */
11 11
 
12
-	include("xmlrpc.inc");
13
-	include("xmlrpcs.inc");
12
+    include("xmlrpc.inc");
13
+    include("xmlrpcs.inc");
14 14
 
15
-	/**
16
-	* Forward an xmlrpc request to another server, and return to client the response received.
17
-	* @param xmlrpcmsg $m (see method docs below for a description of the expected parameters)
18
-	* @return xmlrpcresp
19
-	*/
20
-	function forward_request($m)
21
-	{
22
-		// create client
23
-		$timeout = 0;
24
-		$url = php_xmlrpc_decode($m->getParam(0));
25
-		$c = new xmlrpc_client($url);
26
-		if ($m->getNumParams() > 3)
27
-		{
28
-			// we have to set some options onto the client.
29
-			// Note that if we do not untaint the received values, warnings might be generated...
30
-			$options = php_xmlrpc_decode($m->getParam(3));
31
-			foreach($options as $key => $val)
32
-			{
33
-				switch($key)
34
-				{
35
-					case 'Cookie':
36
-						break;
37
-					case 'Credentials':
38
-						break;
39
-					case 'RequestCompression':
40
-						$c->setRequestCompression($val);
41
-						break;
42
-					case 'SSLVerifyHost':
43
-						$c->setSSLVerifyHost($val);
44
-						break;
45
-					case 'SSLVerifyPeer':
46
-						$c->setSSLVerifyPeer($val);
47
-						break;
48
-					case 'Timeout':
49
-						$timeout = (integer) $val;
50
-						break;
51
-				} // switch
52
-			}
53
-		}
15
+    /**
16
+     * Forward an xmlrpc request to another server, and return to client the response received.
17
+     * @param xmlrpcmsg $m (see method docs below for a description of the expected parameters)
18
+     * @return xmlrpcresp
19
+     */
20
+    function forward_request($m)
21
+    {
22
+        // create client
23
+        $timeout = 0;
24
+        $url = php_xmlrpc_decode($m->getParam(0));
25
+        $c = new xmlrpc_client($url);
26
+        if ($m->getNumParams() > 3)
27
+        {
28
+            // we have to set some options onto the client.
29
+            // Note that if we do not untaint the received values, warnings might be generated...
30
+            $options = php_xmlrpc_decode($m->getParam(3));
31
+            foreach($options as $key => $val)
32
+            {
33
+                switch($key)
34
+                {
35
+                    case 'Cookie':
36
+                        break;
37
+                    case 'Credentials':
38
+                        break;
39
+                    case 'RequestCompression':
40
+                        $c->setRequestCompression($val);
41
+                        break;
42
+                    case 'SSLVerifyHost':
43
+                        $c->setSSLVerifyHost($val);
44
+                        break;
45
+                    case 'SSLVerifyPeer':
46
+                        $c->setSSLVerifyPeer($val);
47
+                        break;
48
+                    case 'Timeout':
49
+                        $timeout = (integer) $val;
50
+                        break;
51
+                } // switch
52
+            }
53
+        }
54 54
 
55
-		// build call for remote server
56
-		/// @todo find a weay to forward client info (such as IP) to server, either
57
-		/// - as xml comments in the payload, or
58
-		/// - using std http header conventions, such as X-forwarded-for...
59
-		$method = php_xmlrpc_decode($m->getParam(1));
60
-		$pars = $m->getParam(2);
61
-		$m = new xmlrpcmsg($method);
62
-		for ($i = 0; $i < $pars->arraySize(); $i++)
63
-		{
64
-			$m->addParam($pars->arraymem($i));
65
-		}
55
+        // build call for remote server
56
+        /// @todo find a weay to forward client info (such as IP) to server, either
57
+        /// - as xml comments in the payload, or
58
+        /// - using std http header conventions, such as X-forwarded-for...
59
+        $method = php_xmlrpc_decode($m->getParam(1));
60
+        $pars = $m->getParam(2);
61
+        $m = new xmlrpcmsg($method);
62
+        for ($i = 0; $i < $pars->arraySize(); $i++)
63
+        {
64
+            $m->addParam($pars->arraymem($i));
65
+        }
66 66
 
67
-		// add debug info into response we give back to caller
68
-		xmlrpc_debugmsg("Sending to server $url the payload: ".$m->serialize());
69
-		return $c->send($m, $timeout);
70
-	}
67
+        // add debug info into response we give back to caller
68
+        xmlrpc_debugmsg("Sending to server $url the payload: ".$m->serialize());
69
+        return $c->send($m, $timeout);
70
+    }
71 71
 
72
-	// run the server
73
-	$server = new xmlrpc_server(
74
-		array(
75
-			'xmlrpcproxy.call' => array(
76
-				'function' => 'forward_request',
77
-				'signature' => array(
78
-					array('mixed', 'string', 'string', 'array'),
79
-					array('mixed', 'string', 'string', 'array', 'stuct'),
80
-				),
81
-				'docstring' => 'forwards xmlrpc calls to remote servers. Returns remote method\'s response. Accepts params: remote server url (might include basic auth credentials), method name, array of params, and (optionally) a struct containing call options'
82
-			)
83
-		)
84
-	);
72
+    // run the server
73
+    $server = new xmlrpc_server(
74
+        array(
75
+            'xmlrpcproxy.call' => array(
76
+                'function' => 'forward_request',
77
+                'signature' => array(
78
+                    array('mixed', 'string', 'string', 'array'),
79
+                    array('mixed', 'string', 'string', 'array', 'stuct'),
80
+                ),
81
+                'docstring' => 'forwards xmlrpc calls to remote servers. Returns remote method\'s response. Accepts params: remote server url (might include basic auth credentials), method name, array of params, and (optionally) a struct containing call options'
82
+            )
83
+        )
84
+    );
85 85
 ?>
Please login to merge, or discard this patch.
demo/server/discuss.php 1 patch
Indentation   +108 added lines, -108 removed lines patch added patch discarded remove patch
@@ -1,124 +1,124 @@
 block discarded – undo
1 1
 <?php
2 2
 
3
-	include("xmlrpc.inc");
4
-	include("xmlrpcs.inc");
3
+    include("xmlrpc.inc");
4
+    include("xmlrpcs.inc");
5 5
 
6
-	$addcomment_sig=array(array($xmlrpcInt, $xmlrpcString, $xmlrpcString, $xmlrpcString));
6
+    $addcomment_sig=array(array($xmlrpcInt, $xmlrpcString, $xmlrpcString, $xmlrpcString));
7 7
 
8
-	$addcomment_doc='Adds a comment to an item. The first parameter
8
+    $addcomment_doc='Adds a comment to an item. The first parameter
9 9
 is the item ID, the second the name of the commenter, and the third
10 10
 is the comment itself. Returns the number of comments against that
11 11
 ID.';
12 12
 
13
-	function addcomment($m)
14
-	{
15
-		global $xmlrpcerruser;
16
-		$err="";
17
-		// since validation has already been carried out for us,
18
-		// we know we got exactly 3 string values
19
-		$n = php_xmlrpc_decode($m);
20
-		$msgID = $n[0];
21
-		$name  = $n[1];
22
-		$comment = $n[2];
13
+    function addcomment($m)
14
+    {
15
+        global $xmlrpcerruser;
16
+        $err="";
17
+        // since validation has already been carried out for us,
18
+        // we know we got exactly 3 string values
19
+        $n = php_xmlrpc_decode($m);
20
+        $msgID = $n[0];
21
+        $name  = $n[1];
22
+        $comment = $n[2];
23 23
 
24
-		$dbh=dba_open("/tmp/comments.db", "c", "db2");
25
-		if($dbh)
26
-		{
27
-			$countID="${msgID}_count";
28
-			if(dba_exists($countID, $dbh))
29
-			{
30
-				$count=dba_fetch($countID, $dbh);
31
-			}
32
-			else
33
-			{
34
-				$count=0;
35
-			}
36
-			// add the new comment in
37
-			dba_insert($msgID . "_comment_${count}", $comment, $dbh);
38
-			dba_insert($msgID . "_name_${count}", $name, $dbh);
39
-			$count++;
40
-			dba_replace($countID, $count, $dbh);
41
-			dba_close($dbh);
42
-		}
43
-		else
44
-		{
45
-			$err="Unable to open comments database.";
46
-		}
47
-		// if we generated an error, create an error return response
48
-		if($err)
49
-		{
50
-			return new xmlrpcresp(0, $xmlrpcerruser, $err);
51
-		}
52
-		else
53
-		{
54
-			// otherwise, we create the right response
55
-			// with the state name
56
-			return new xmlrpcresp(new xmlrpcval($count, "int"));
57
-		}
58
-	}
24
+        $dbh=dba_open("/tmp/comments.db", "c", "db2");
25
+        if($dbh)
26
+        {
27
+            $countID="${msgID}_count";
28
+            if(dba_exists($countID, $dbh))
29
+            {
30
+                $count=dba_fetch($countID, $dbh);
31
+            }
32
+            else
33
+            {
34
+                $count=0;
35
+            }
36
+            // add the new comment in
37
+            dba_insert($msgID . "_comment_${count}", $comment, $dbh);
38
+            dba_insert($msgID . "_name_${count}", $name, $dbh);
39
+            $count++;
40
+            dba_replace($countID, $count, $dbh);
41
+            dba_close($dbh);
42
+        }
43
+        else
44
+        {
45
+            $err="Unable to open comments database.";
46
+        }
47
+        // if we generated an error, create an error return response
48
+        if($err)
49
+        {
50
+            return new xmlrpcresp(0, $xmlrpcerruser, $err);
51
+        }
52
+        else
53
+        {
54
+            // otherwise, we create the right response
55
+            // with the state name
56
+            return new xmlrpcresp(new xmlrpcval($count, "int"));
57
+        }
58
+    }
59 59
 
60
-	$getcomments_sig=array(array($xmlrpcArray, $xmlrpcString));
60
+    $getcomments_sig=array(array($xmlrpcArray, $xmlrpcString));
61 61
 
62
-	$getcomments_doc='Returns an array of comments for a given ID, which
62
+    $getcomments_doc='Returns an array of comments for a given ID, which
63 63
 is the sole argument. Each array item is a struct containing name
64 64
 and comment text.';
65 65
 
66
-	function getcomments($m)
67
-	{
68
-		global $xmlrpcerruser;
69
-		$err="";
70
-		$ra=array();
71
-		// get the first param
72
-		if(XMLRPC_EPI_ENABLED == '1')
73
-		{
74
-			$msgID=xmlrpc_decode($m->getParam(0));
75
-		}
76
-		else
77
-		{
78
-			$msgID=php_xmlrpc_decode($m->getParam(0));
79
-		}
80
-		$dbh=dba_open("/tmp/comments.db", "r", "db2");
81
-		if($dbh)
82
-		{
83
-			$countID="${msgID}_count";
84
-			if(dba_exists($countID, $dbh))
85
-			{
86
-				$count=dba_fetch($countID, $dbh);
87
-				for($i=0; $i<$count; $i++)
88
-				{
89
-					$name=dba_fetch("${msgID}_name_${i}", $dbh);
90
-					$comment=dba_fetch("${msgID}_comment_${i}", $dbh);
91
-					// push a new struct onto the return array
92
-					$ra[] = array(
93
-						"name" => $name,
94
-						"comment" => $comment
95
-						);
96
-				}
97
-			}
98
-		}
99
-		// if we generated an error, create an error return response
100
-		if($err)
101
-		{
102
-			return new xmlrpcresp(0, $xmlrpcerruser, $err);
103
-		}
104
-		else
105
-		{
106
-			// otherwise, we create the right response
107
-			// with the state name
108
-			return new xmlrpcresp(php_xmlrpc_encode($ra));
109
-		}
110
-	}
66
+    function getcomments($m)
67
+    {
68
+        global $xmlrpcerruser;
69
+        $err="";
70
+        $ra=array();
71
+        // get the first param
72
+        if(XMLRPC_EPI_ENABLED == '1')
73
+        {
74
+            $msgID=xmlrpc_decode($m->getParam(0));
75
+        }
76
+        else
77
+        {
78
+            $msgID=php_xmlrpc_decode($m->getParam(0));
79
+        }
80
+        $dbh=dba_open("/tmp/comments.db", "r", "db2");
81
+        if($dbh)
82
+        {
83
+            $countID="${msgID}_count";
84
+            if(dba_exists($countID, $dbh))
85
+            {
86
+                $count=dba_fetch($countID, $dbh);
87
+                for($i=0; $i<$count; $i++)
88
+                {
89
+                    $name=dba_fetch("${msgID}_name_${i}", $dbh);
90
+                    $comment=dba_fetch("${msgID}_comment_${i}", $dbh);
91
+                    // push a new struct onto the return array
92
+                    $ra[] = array(
93
+                        "name" => $name,
94
+                        "comment" => $comment
95
+                        );
96
+                }
97
+            }
98
+        }
99
+        // if we generated an error, create an error return response
100
+        if($err)
101
+        {
102
+            return new xmlrpcresp(0, $xmlrpcerruser, $err);
103
+        }
104
+        else
105
+        {
106
+            // otherwise, we create the right response
107
+            // with the state name
108
+            return new xmlrpcresp(php_xmlrpc_encode($ra));
109
+        }
110
+    }
111 111
 
112
-	$s = new xmlrpc_server(array(
113
-		"discuss.addComment" => array(
114
-			"function" => "addcomment",
115
-			"signature" => $addcomment_sig,
116
-			"docstring" => $addcomment_doc
117
-		),
118
-		"discuss.getComments" => array(
119
-			"function" => "getcomments",
120
-			"signature" => $getcomments_sig,
121
-			"docstring" => $getcomments_doc
122
-		)
123
-	));
112
+    $s = new xmlrpc_server(array(
113
+        "discuss.addComment" => array(
114
+            "function" => "addcomment",
115
+            "signature" => $addcomment_sig,
116
+            "docstring" => $addcomment_doc
117
+        ),
118
+        "discuss.getComments" => array(
119
+            "function" => "getcomments",
120
+            "signature" => $getcomments_sig,
121
+            "docstring" => $getcomments_doc
122
+        )
123
+    ));
124 124
 ?>
Please login to merge, or discard this patch.
demo/server/server.php 1 patch
Indentation   +811 added lines, -811 removed lines patch added patch discarded remove patch
@@ -13,240 +13,240 @@  discard block
 block discarded – undo
13 13
 // give user a chance to see the source for this server instead of running the services
14 14
 if ($_SERVER['REQUEST_METHOD'] != 'POST' && isset($_GET['showSource']))
15 15
 {
16
-	highlight_file(__FILE__);
17
-	die();
16
+    highlight_file(__FILE__);
17
+    die();
18 18
 }
19 19
 
20
-	include("xmlrpc.inc");
21
-	include("xmlrpcs.inc");
22
-	include("xmlrpc_wrappers.inc");
23
-
24
-	/**
25
-	* Used to test usage of object methods in dispatch maps and in wrapper code
26
-	*/
27
-	class xmlrpc_server_methods_container
28
-	{
29
-		/**
30
-		* Method used to test logging of php warnings generated by user functions.
31
-		*/
32
-		function phpwarninggenerator($m)
33
-		{
34
-			$a = $b; // this triggers a warning in E_ALL mode, since $b is undefined
35
-			return new xmlrpcresp(new xmlrpcval(1, 'boolean'));
36
-		}
37
-
38
-	    /**
39
-	     * Method used to testcatching of exceptions in the server.
40
-	     */
41
-	    function exceptiongenerator($m)
42
-	    {
43
-	        throw new Exception("it's just a test", 1);
44
-	    }
45
-
46
-		/**
47
-		* a PHP version of the state-number server. Send me an integer and i'll sell you a state
48
-		* @param integer $s
49
-		* @return string
50
-		*/
51
-		static function findstate($s)
52
-		{
53
-			return inner_findstate($s);
54
-		}
55
-	}
56
-
57
-
58
-	// a PHP version
59
-	// of the state-number server
60
-	// send me an integer and i'll sell you a state
61
-
62
-	$stateNames = array(
63
-		"Alabama", "Alaska", "Arizona", "Arkansas", "California",
64
-		"Colorado", "Columbia", "Connecticut", "Delaware", "Florida",
65
-		"Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas",
66
-		"Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan",
67
-		"Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada",
68
-		"New Hampshire", "New Jersey", "New Mexico", "New York", "North Carolina",
69
-		"North Dakota", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island",
70
-		"South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont",
71
-		"Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming"
72
-	);
73
-
74
-	$findstate_sig=array(array($xmlrpcString, $xmlrpcInt));
75
-	$findstate_doc='When passed an integer between 1 and 51 returns the
20
+    include("xmlrpc.inc");
21
+    include("xmlrpcs.inc");
22
+    include("xmlrpc_wrappers.inc");
23
+
24
+    /**
25
+     * Used to test usage of object methods in dispatch maps and in wrapper code
26
+     */
27
+    class xmlrpc_server_methods_container
28
+    {
29
+        /**
30
+         * Method used to test logging of php warnings generated by user functions.
31
+         */
32
+        function phpwarninggenerator($m)
33
+        {
34
+            $a = $b; // this triggers a warning in E_ALL mode, since $b is undefined
35
+            return new xmlrpcresp(new xmlrpcval(1, 'boolean'));
36
+        }
37
+
38
+        /**
39
+         * Method used to testcatching of exceptions in the server.
40
+         */
41
+        function exceptiongenerator($m)
42
+        {
43
+            throw new Exception("it's just a test", 1);
44
+        }
45
+
46
+        /**
47
+         * a PHP version of the state-number server. Send me an integer and i'll sell you a state
48
+         * @param integer $s
49
+         * @return string
50
+         */
51
+        static function findstate($s)
52
+        {
53
+            return inner_findstate($s);
54
+        }
55
+    }
56
+
57
+
58
+    // a PHP version
59
+    // of the state-number server
60
+    // send me an integer and i'll sell you a state
61
+
62
+    $stateNames = array(
63
+        "Alabama", "Alaska", "Arizona", "Arkansas", "California",
64
+        "Colorado", "Columbia", "Connecticut", "Delaware", "Florida",
65
+        "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas",
66
+        "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan",
67
+        "Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada",
68
+        "New Hampshire", "New Jersey", "New Mexico", "New York", "North Carolina",
69
+        "North Dakota", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island",
70
+        "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont",
71
+        "Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming"
72
+    );
73
+
74
+    $findstate_sig=array(array($xmlrpcString, $xmlrpcInt));
75
+    $findstate_doc='When passed an integer between 1 and 51 returns the
76 76
 name of a US state, where the integer is the index of that state name
77 77
 in an alphabetic order.';
78 78
 
79 79
 
80
-	function findstate($m)
81
-	{
82
-		global $xmlrpcerruser, $stateNames;
83
-		$err="";
84
-		// get the first param
85
-		$sno=$m->getParam(0);
86
-
87
-		// param must be there and of the correct type: server object does the
88
-		// validation for us
89
-
90
-		// extract the value of the state number
91
-		$snv=$sno->scalarval();
92
-		// look it up in our array (zero-based)
93
-		if (isset($stateNames[$snv-1]))
94
-		{
95
-			$sname=$stateNames[$snv-1];
96
-		}
97
-		else
98
-		{
99
-			// not, there so complain
100
-			$err="I don't have a state for the index '" . $snv . "'";
101
-		}
102
-
103
-		// if we generated an error, create an error return response
104
-		if ($err)
105
-		{
106
-			return new xmlrpcresp(0, $xmlrpcerruser, $err);
107
-		}
108
-		else
109
-		{
110
-			// otherwise, we create the right response
111
-			// with the state name
112
-			return new xmlrpcresp(new xmlrpcval($sname));
113
-		}
114
-	}
115
-
116
-	/**
117
-	* Inner code of the state-number server.
118
-	* Used to test auto-registration of PHP funcions as xmlrpc methods.
119
-	* @param integer $stateno the state number
120
-	* @return string the name of the state (or error descrption)
121
-	*/
122
-	function inner_findstate($stateno)
123
-	{
124
-		global $stateNames;
125
-		if (isset($stateNames[$stateno-1]))
126
-		{
127
-			return $stateNames[$stateno-1];
128
-		}
129
-		else
130
-		{
131
-			// not, there so complain
132
-			return "I don't have a state for the index '" . $stateno . "'";
133
-		}
134
-	}
135
-	$findstate2_sig = wrap_php_function('inner_findstate');
136
-
137
-	$findstate3_sig = wrap_php_function(array('xmlrpc_server_methods_container', 'findstate'));
138
-
139
-	$findstate5_sig = wrap_php_function('xmlrpc_server_methods_container::findstate');
140
-
141
-	$obj = new xmlrpc_server_methods_container();
142
-	$findstate4_sig = wrap_php_function(array($obj, 'findstate'));
143
-
144
-	$addtwo_sig=array(array($xmlrpcInt, $xmlrpcInt, $xmlrpcInt));
145
-	$addtwo_doc='Add two integers together and return the result';
146
-	function addtwo($m)
147
-	{
148
-		$s=$m->getParam(0);
149
-		$t=$m->getParam(1);
150
-		return new xmlrpcresp(new xmlrpcval($s->scalarval()+$t->scalarval(),"int"));
151
-	}
152
-
153
-	$addtwodouble_sig=array(array($xmlrpcDouble, $xmlrpcDouble, $xmlrpcDouble));
154
-	$addtwodouble_doc='Add two doubles together and return the result';
155
-	function addtwodouble($m)
156
-	{
157
-		$s=$m->getParam(0);
158
-		$t=$m->getParam(1);
159
-		return new xmlrpcresp(new xmlrpcval($s->scalarval()+$t->scalarval(),"double"));
160
-	}
161
-
162
-	$stringecho_sig=array(array($xmlrpcString, $xmlrpcString));
163
-	$stringecho_doc='Accepts a string parameter, returns the string.';
164
-	function stringecho($m)
165
-	{
166
-		// just sends back a string
167
-		$s=$m->getParam(0);
168
-		$v = $s->scalarval();
169
-		return new xmlrpcresp(new xmlrpcval($s->scalarval()));
170
-	}
171
-
172
-	$echoback_sig=array(array($xmlrpcString, $xmlrpcString));
173
-	$echoback_doc='Accepts a string parameter, returns the entire incoming payload';
174
-	function echoback($m)
175
-	{
176
-		// just sends back a string with what i got
177
-		// sent to me, just escaped, that's all
178
-		//
179
-		// $m is an incoming message
180
-		$s="I got the following message:\n" . $m->serialize();
181
-		return new xmlrpcresp(new xmlrpcval($s));
182
-	}
183
-
184
-	$echosixtyfour_sig=array(array($xmlrpcString, $xmlrpcBase64));
185
-	$echosixtyfour_doc='Accepts a base64 parameter and returns it decoded as a string';
186
-	function echosixtyfour($m)
187
-	{
188
-		// accepts an encoded value, but sends it back
189
-		// as a normal string. this is to test base64 encoding
190
-		// is working as expected
191
-		$incoming=$m->getParam(0);
192
-		return new xmlrpcresp(new xmlrpcval($incoming->scalarval(), "string"));
193
-	}
194
-
195
-	$bitflipper_sig=array(array($xmlrpcArray, $xmlrpcArray));
196
-	$bitflipper_doc='Accepts an array of booleans, and returns them inverted';
197
-	function bitflipper($m)
198
-	{
199
-		global $xmlrpcArray;
200
-
201
-		$v=$m->getParam(0);
202
-		$sz=$v->arraysize();
203
-		$rv=new xmlrpcval(array(), $xmlrpcArray);
204
-
205
-		for($j=0; $j<$sz; $j++)
206
-		{
207
-			$b=$v->arraymem($j);
208
-			if ($b->scalarval())
209
-			{
210
-				$rv->addScalar(false, "boolean");
211
-			}
212
-			else
213
-			{
214
-				$rv->addScalar(true, "boolean");
215
-			}
216
-		}
217
-
218
-		return new xmlrpcresp($rv);
219
-	}
220
-
221
-	// Sorting demo
222
-	//
223
-	// send me an array of structs thus:
224
-	//
225
-	// Dave 35
226
-	// Edd  45
227
-	// Fred 23
228
-	// Barney 37
229
-	//
230
-	// and I'll return it to you in sorted order
231
-
232
-	function agesorter_compare($a, $b)
233
-	{
234
-		global $agesorter_arr;
235
-
236
-		// don't even ask me _why_ these come padded with
237
-		// hyphens, I couldn't tell you :p
238
-		$a=str_replace("-", "", $a);
239
-		$b=str_replace("-", "", $b);
240
-
241
-		if ($agesorter_arr[$a]==$agesorter[$b])
242
-		{
243
-			return 0;
244
-		}
245
-		return ($agesorter_arr[$a] > $agesorter_arr[$b]) ? -1 : 1;
246
-	}
247
-
248
-	$agesorter_sig=array(array($xmlrpcArray, $xmlrpcArray));
249
-	$agesorter_doc='Send this method an array of [string, int] structs, eg:
80
+    function findstate($m)
81
+    {
82
+        global $xmlrpcerruser, $stateNames;
83
+        $err="";
84
+        // get the first param
85
+        $sno=$m->getParam(0);
86
+
87
+        // param must be there and of the correct type: server object does the
88
+        // validation for us
89
+
90
+        // extract the value of the state number
91
+        $snv=$sno->scalarval();
92
+        // look it up in our array (zero-based)
93
+        if (isset($stateNames[$snv-1]))
94
+        {
95
+            $sname=$stateNames[$snv-1];
96
+        }
97
+        else
98
+        {
99
+            // not, there so complain
100
+            $err="I don't have a state for the index '" . $snv . "'";
101
+        }
102
+
103
+        // if we generated an error, create an error return response
104
+        if ($err)
105
+        {
106
+            return new xmlrpcresp(0, $xmlrpcerruser, $err);
107
+        }
108
+        else
109
+        {
110
+            // otherwise, we create the right response
111
+            // with the state name
112
+            return new xmlrpcresp(new xmlrpcval($sname));
113
+        }
114
+    }
115
+
116
+    /**
117
+     * Inner code of the state-number server.
118
+     * Used to test auto-registration of PHP funcions as xmlrpc methods.
119
+     * @param integer $stateno the state number
120
+     * @return string the name of the state (or error descrption)
121
+     */
122
+    function inner_findstate($stateno)
123
+    {
124
+        global $stateNames;
125
+        if (isset($stateNames[$stateno-1]))
126
+        {
127
+            return $stateNames[$stateno-1];
128
+        }
129
+        else
130
+        {
131
+            // not, there so complain
132
+            return "I don't have a state for the index '" . $stateno . "'";
133
+        }
134
+    }
135
+    $findstate2_sig = wrap_php_function('inner_findstate');
136
+
137
+    $findstate3_sig = wrap_php_function(array('xmlrpc_server_methods_container', 'findstate'));
138
+
139
+    $findstate5_sig = wrap_php_function('xmlrpc_server_methods_container::findstate');
140
+
141
+    $obj = new xmlrpc_server_methods_container();
142
+    $findstate4_sig = wrap_php_function(array($obj, 'findstate'));
143
+
144
+    $addtwo_sig=array(array($xmlrpcInt, $xmlrpcInt, $xmlrpcInt));
145
+    $addtwo_doc='Add two integers together and return the result';
146
+    function addtwo($m)
147
+    {
148
+        $s=$m->getParam(0);
149
+        $t=$m->getParam(1);
150
+        return new xmlrpcresp(new xmlrpcval($s->scalarval()+$t->scalarval(),"int"));
151
+    }
152
+
153
+    $addtwodouble_sig=array(array($xmlrpcDouble, $xmlrpcDouble, $xmlrpcDouble));
154
+    $addtwodouble_doc='Add two doubles together and return the result';
155
+    function addtwodouble($m)
156
+    {
157
+        $s=$m->getParam(0);
158
+        $t=$m->getParam(1);
159
+        return new xmlrpcresp(new xmlrpcval($s->scalarval()+$t->scalarval(),"double"));
160
+    }
161
+
162
+    $stringecho_sig=array(array($xmlrpcString, $xmlrpcString));
163
+    $stringecho_doc='Accepts a string parameter, returns the string.';
164
+    function stringecho($m)
165
+    {
166
+        // just sends back a string
167
+        $s=$m->getParam(0);
168
+        $v = $s->scalarval();
169
+        return new xmlrpcresp(new xmlrpcval($s->scalarval()));
170
+    }
171
+
172
+    $echoback_sig=array(array($xmlrpcString, $xmlrpcString));
173
+    $echoback_doc='Accepts a string parameter, returns the entire incoming payload';
174
+    function echoback($m)
175
+    {
176
+        // just sends back a string with what i got
177
+        // sent to me, just escaped, that's all
178
+        //
179
+        // $m is an incoming message
180
+        $s="I got the following message:\n" . $m->serialize();
181
+        return new xmlrpcresp(new xmlrpcval($s));
182
+    }
183
+
184
+    $echosixtyfour_sig=array(array($xmlrpcString, $xmlrpcBase64));
185
+    $echosixtyfour_doc='Accepts a base64 parameter and returns it decoded as a string';
186
+    function echosixtyfour($m)
187
+    {
188
+        // accepts an encoded value, but sends it back
189
+        // as a normal string. this is to test base64 encoding
190
+        // is working as expected
191
+        $incoming=$m->getParam(0);
192
+        return new xmlrpcresp(new xmlrpcval($incoming->scalarval(), "string"));
193
+    }
194
+
195
+    $bitflipper_sig=array(array($xmlrpcArray, $xmlrpcArray));
196
+    $bitflipper_doc='Accepts an array of booleans, and returns them inverted';
197
+    function bitflipper($m)
198
+    {
199
+        global $xmlrpcArray;
200
+
201
+        $v=$m->getParam(0);
202
+        $sz=$v->arraysize();
203
+        $rv=new xmlrpcval(array(), $xmlrpcArray);
204
+
205
+        for($j=0; $j<$sz; $j++)
206
+        {
207
+            $b=$v->arraymem($j);
208
+            if ($b->scalarval())
209
+            {
210
+                $rv->addScalar(false, "boolean");
211
+            }
212
+            else
213
+            {
214
+                $rv->addScalar(true, "boolean");
215
+            }
216
+        }
217
+
218
+        return new xmlrpcresp($rv);
219
+    }
220
+
221
+    // Sorting demo
222
+    //
223
+    // send me an array of structs thus:
224
+    //
225
+    // Dave 35
226
+    // Edd  45
227
+    // Fred 23
228
+    // Barney 37
229
+    //
230
+    // and I'll return it to you in sorted order
231
+
232
+    function agesorter_compare($a, $b)
233
+    {
234
+        global $agesorter_arr;
235
+
236
+        // don't even ask me _why_ these come padded with
237
+        // hyphens, I couldn't tell you :p
238
+        $a=str_replace("-", "", $a);
239
+        $b=str_replace("-", "", $b);
240
+
241
+        if ($agesorter_arr[$a]==$agesorter[$b])
242
+        {
243
+            return 0;
244
+        }
245
+        return ($agesorter_arr[$a] > $agesorter_arr[$b]) ? -1 : 1;
246
+    }
247
+
248
+    $agesorter_sig=array(array($xmlrpcArray, $xmlrpcArray));
249
+    $agesorter_doc='Send this method an array of [string, int] structs, eg:
250 250
 <pre>
251 251
  Dave   35
252 252
  Edd	45
@@ -255,80 +255,80 @@  discard block
 block discarded – undo
255 255
 </pre>
256 256
 And the array will be returned with the entries sorted by their numbers.
257 257
 ';
258
-	function agesorter($m)
259
-	{
260
-		global $agesorter_arr, $xmlrpcerruser, $s;
261
-
262
-		xmlrpc_debugmsg("Entering 'agesorter'");
263
-		// get the parameter
264
-		$sno=$m->getParam(0);
265
-		// error string for [if|when] things go wrong
266
-		$err="";
267
-		// create the output value
268
-		$v=new xmlrpcval();
269
-		$agar=array();
270
-
271
-		if (isset($sno) && $sno->kindOf()=="array")
272
-		{
273
-			$max=$sno->arraysize();
274
-			// TODO: create debug method to print can work once more
275
-			// print "<!-- found $max array elements -->\n";
276
-			for($i=0; $i<$max; $i++)
277
-			{
278
-				$rec=$sno->arraymem($i);
279
-				if ($rec->kindOf()!="struct")
280
-				{
281
-					$err="Found non-struct in array at element $i";
282
-					break;
283
-				}
284
-				// extract name and age from struct
285
-				$n=$rec->structmem("name");
286
-				$a=$rec->structmem("age");
287
-				// $n and $a are xmlrpcvals,
288
-				// so get the scalarval from them
289
-				$agar[$n->scalarval()]=$a->scalarval();
290
-			}
291
-
292
-			$agesorter_arr=$agar;
293
-			// hack, must make global as uksort() won't
294
-			// allow us to pass any other auxilliary information
295
-			uksort($agesorter_arr, agesorter_compare);
296
-			$outAr=array();
297
-			while (list( $key, $val ) = each( $agesorter_arr ) )
298
-			{
299
-				// recreate each struct element
300
-				$outAr[]=new xmlrpcval(array("name" =>
301
-				new xmlrpcval($key),
302
-				"age" =>
303
-				new xmlrpcval($val, "int")), "struct");
304
-			}
305
-			// add this array to the output value
306
-			$v->addArray($outAr);
307
-		}
308
-		else
309
-		{
310
-			$err="Must be one parameter, an array of structs";
311
-		}
312
-
313
-		if ($err)
314
-		{
315
-			return new xmlrpcresp(0, $xmlrpcerruser, $err);
316
-		}
317
-		else
318
-		{
319
-			return new xmlrpcresp($v);
320
-		}
321
-	}
322
-
323
-	// signature and instructions, place these in the dispatch
324
-	// map
325
-	$mail_send_sig=array(array(
326
-		$xmlrpcBoolean, $xmlrpcString, $xmlrpcString,
327
-		$xmlrpcString, $xmlrpcString, $xmlrpcString,
328
-		$xmlrpcString, $xmlrpcString
329
-	));
330
-
331
-	$mail_send_doc='mail.send(recipient, subject, text, sender, cc, bcc, mimetype)<br/>
258
+    function agesorter($m)
259
+    {
260
+        global $agesorter_arr, $xmlrpcerruser, $s;
261
+
262
+        xmlrpc_debugmsg("Entering 'agesorter'");
263
+        // get the parameter
264
+        $sno=$m->getParam(0);
265
+        // error string for [if|when] things go wrong
266
+        $err="";
267
+        // create the output value
268
+        $v=new xmlrpcval();
269
+        $agar=array();
270
+
271
+        if (isset($sno) && $sno->kindOf()=="array")
272
+        {
273
+            $max=$sno->arraysize();
274
+            // TODO: create debug method to print can work once more
275
+            // print "<!-- found $max array elements -->\n";
276
+            for($i=0; $i<$max; $i++)
277
+            {
278
+                $rec=$sno->arraymem($i);
279
+                if ($rec->kindOf()!="struct")
280
+                {
281
+                    $err="Found non-struct in array at element $i";
282
+                    break;
283
+                }
284
+                // extract name and age from struct
285
+                $n=$rec->structmem("name");
286
+                $a=$rec->structmem("age");
287
+                // $n and $a are xmlrpcvals,
288
+                // so get the scalarval from them
289
+                $agar[$n->scalarval()]=$a->scalarval();
290
+            }
291
+
292
+            $agesorter_arr=$agar;
293
+            // hack, must make global as uksort() won't
294
+            // allow us to pass any other auxilliary information
295
+            uksort($agesorter_arr, agesorter_compare);
296
+            $outAr=array();
297
+            while (list( $key, $val ) = each( $agesorter_arr ) )
298
+            {
299
+                // recreate each struct element
300
+                $outAr[]=new xmlrpcval(array("name" =>
301
+                new xmlrpcval($key),
302
+                "age" =>
303
+                new xmlrpcval($val, "int")), "struct");
304
+            }
305
+            // add this array to the output value
306
+            $v->addArray($outAr);
307
+        }
308
+        else
309
+        {
310
+            $err="Must be one parameter, an array of structs";
311
+        }
312
+
313
+        if ($err)
314
+        {
315
+            return new xmlrpcresp(0, $xmlrpcerruser, $err);
316
+        }
317
+        else
318
+        {
319
+            return new xmlrpcresp($v);
320
+        }
321
+    }
322
+
323
+    // signature and instructions, place these in the dispatch
324
+    // map
325
+    $mail_send_sig=array(array(
326
+        $xmlrpcBoolean, $xmlrpcString, $xmlrpcString,
327
+        $xmlrpcString, $xmlrpcString, $xmlrpcString,
328
+        $xmlrpcString, $xmlrpcString
329
+    ));
330
+
331
+    $mail_send_doc='mail.send(recipient, subject, text, sender, cc, bcc, mimetype)<br/>
332 332
 recipient, cc, and bcc are strings, comma-separated lists of email addresses, as described above.<br/>
333 333
 subject is a string, the subject of the message.<br/>
334 334
 sender is a string, it\'s the email address of the person sending the message. This string can not be
@@ -336,517 +336,517 @@  discard block
 block discarded – undo
336 336
 text is a string, it contains the body of the message.<br/>
337 337
 mimetype, a string, is a standard MIME type, for example, text/plain.
338 338
 ';
339
-	// WARNING; this functionality depends on the sendmail -t option
340
-	// it may not work with Windows machines properly; particularly
341
-	// the Bcc option. Sneak on your friends at your own risk!
342
-	function mail_send($m)
343
-	{
344
-		global $xmlrpcerruser, $xmlrpcBoolean;
345
-		$err="";
346
-
347
-		$mTo=$m->getParam(0);
348
-		$mSub=$m->getParam(1);
349
-		$mBody=$m->getParam(2);
350
-		$mFrom=$m->getParam(3);
351
-		$mCc=$m->getParam(4);
352
-		$mBcc=$m->getParam(5);
353
-		$mMime=$m->getParam(6);
354
-
355
-		if ($mTo->scalarval()=="")
356
-		{
357
-			$err="Error, no 'To' field specified";
358
-		}
359
-
360
-		if ($mFrom->scalarval()=="")
361
-		{
362
-			$err="Error, no 'From' field specified";
363
-		}
364
-
365
-		$msghdr="From: " . $mFrom->scalarval() . "\n";
366
-		$msghdr.="To: ". $mTo->scalarval() . "\n";
367
-
368
-		if ($mCc->scalarval()!="")
369
-		{
370
-			$msghdr.="Cc: " . $mCc->scalarval(). "\n";
371
-		}
372
-		if ($mBcc->scalarval()!="")
373
-		{
374
-			$msghdr.="Bcc: " . $mBcc->scalarval(). "\n";
375
-		}
376
-		if ($mMime->scalarval()!="")
377
-		{
378
-			$msghdr.="Content-type: " . $mMime->scalarval() . "\n";
379
-		}
380
-		$msghdr.="X-Mailer: XML-RPC for PHP mailer 1.0";
381
-
382
-		if ($err=="")
383
-		{
384
-			if (!mail("",
385
-				$mSub->scalarval(),
386
-				$mBody->scalarval(),
387
-				$msghdr))
388
-			{
389
-				$err="Error, could not send the mail.";
390
-			}
391
-		}
392
-
393
-		if ($err)
394
-		{
395
-			return new xmlrpcresp(0, $xmlrpcerruser, $err);
396
-		}
397
-		else
398
-		{
399
-			return new xmlrpcresp(new xmlrpcval("true", $xmlrpcBoolean));
400
-		}
401
-	}
402
-
403
-	$getallheaders_sig=array(array($xmlrpcStruct));
404
-	$getallheaders_doc='Returns a struct containing all the HTTP headers received with the request. Provides limited functionality with IIS';
405
-	function getallheaders_xmlrpc($m)
406
-	{
407
-		global $xmlrpcerruser;
408
-		if (function_exists('getallheaders'))
409
-		{
410
-			return new xmlrpcresp(php_xmlrpc_encode(getallheaders()));
411
-		}
412
-		else
413
-		{
414
-			$headers = array();
415
-			// IIS: poor man's version of getallheaders
416
-			foreach ($_SERVER as $key => $val)
417
-				if (strpos($key, 'HTTP_') === 0)
418
-				{
419
-					$key = ucfirst(str_replace('_', '-', strtolower(substr($key, 5))));
420
-					$headers[$key] = $val;
421
-				}
422
-			return new xmlrpcresp(php_xmlrpc_encode($headers));
423
-		}
424
-	}
425
-
426
-	$setcookies_sig=array(array($xmlrpcInt, $xmlrpcStruct));
427
-	$setcookies_doc='Sends to client a response containing a single \'1\' digit, and sets to it http cookies as received in the request (array of structs describing a cookie)';
428
-	function setcookies($m)
429
-	{
430
-		$m = $m->getParam(0);
431
-		while(list($name,$value) = $m->structeach())
432
-		{
433
-			$cookiedesc = php_xmlrpc_decode($value);
434
-			setcookie($name, @$cookiedesc['value'], @$cookiedesc['expires'], @$cookiedesc['path'], @$cookiedesc['domain'], @$cookiedesc['secure']);
435
-		}
436
-		return new xmlrpcresp(new xmlrpcval(1, 'int'));
437
-	}
438
-
439
-	$getcookies_sig=array(array($xmlrpcStruct));
440
-	$getcookies_doc='Sends to client a response containing all http cookies as received in the request (as struct)';
441
-	function getcookies($m)
442
-	{
443
-		return new xmlrpcresp(php_xmlrpc_encode($_COOKIE));
444
-	}
445
-
446
-	$v1_arrayOfStructs_sig=array(array($xmlrpcInt, $xmlrpcArray));
447
-	$v1_arrayOfStructs_doc='This handler takes a single parameter, an array of structs, each of which contains at least three elements named moe, larry and curly, all <i4>s. Your handler must add all the struct elements named curly and return the result.';
448
-	function v1_arrayOfStructs($m)
449
-	{
450
-		$sno=$m->getParam(0);
451
-		$numcurly=0;
452
-		for($i=0; $i<$sno->arraysize(); $i++)
453
-		{
454
-			$str=$sno->arraymem($i);
455
-			$str->structreset();
456
-			while(list($key,$val)=$str->structeach())
457
-			{
458
-				if ($key=="curly")
459
-				{
460
-					$numcurly+=$val->scalarval();
461
-				}
462
-			}
463
-		}
464
-		return new xmlrpcresp(new xmlrpcval($numcurly, "int"));
465
-	}
466
-
467
-	$v1_easyStruct_sig=array(array($xmlrpcInt, $xmlrpcStruct));
468
-	$v1_easyStruct_doc='This handler takes a single parameter, a struct, containing at least three elements named moe, larry and curly, all &lt;i4&gt;s. Your handler must add the three numbers and return the result.';
469
-	function v1_easyStruct($m)
470
-	{
471
-		$sno=$m->getParam(0);
472
-		$moe=$sno->structmem("moe");
473
-		$larry=$sno->structmem("larry");
474
-		$curly=$sno->structmem("curly");
475
-		$num=$moe->scalarval() + $larry->scalarval() + $curly->scalarval();
476
-		return new xmlrpcresp(new xmlrpcval($num, "int"));
477
-	}
478
-
479
-	$v1_echoStruct_sig=array(array($xmlrpcStruct, $xmlrpcStruct));
480
-	$v1_echoStruct_doc='This handler takes a single parameter, a struct. Your handler must return the struct.';
481
-	function v1_echoStruct($m)
482
-	{
483
-		$sno=$m->getParam(0);
484
-		return new xmlrpcresp($sno);
485
-	}
486
-
487
-	$v1_manyTypes_sig=array(array(
488
-		$xmlrpcArray, $xmlrpcInt, $xmlrpcBoolean,
489
-		$xmlrpcString, $xmlrpcDouble, $xmlrpcDateTime,
490
-		$xmlrpcBase64
491
-	));
492
-	$v1_manyTypes_doc='This handler takes six parameters, and returns an array containing all the parameters.';
493
-	function v1_manyTypes($m)
494
-	{
495
-		return new xmlrpcresp(new xmlrpcval(array(
496
-			$m->getParam(0),
497
-			$m->getParam(1),
498
-			$m->getParam(2),
499
-			$m->getParam(3),
500
-			$m->getParam(4),
501
-			$m->getParam(5)),
502
-			"array"
503
-		));
504
-	}
505
-
506
-	$v1_moderateSizeArrayCheck_sig=array(array($xmlrpcString, $xmlrpcArray));
507
-	$v1_moderateSizeArrayCheck_doc='This handler takes a single parameter, which is an array containing between 100 and 200 elements. Each of the items is a string, your handler must return a string containing the concatenated text of the first and last elements.';
508
-	function v1_moderateSizeArrayCheck($m)
509
-	{
510
-		$ar=$m->getParam(0);
511
-		$sz=$ar->arraysize();
512
-		$first=$ar->arraymem(0);
513
-		$last=$ar->arraymem($sz-1);
514
-		return new xmlrpcresp(new xmlrpcval($first->scalarval() .
515
-		$last->scalarval(), "string"));
516
-	}
517
-
518
-	$v1_simpleStructReturn_sig=array(array($xmlrpcStruct, $xmlrpcInt));
519
-	$v1_simpleStructReturn_doc='This handler takes one parameter, and returns a struct containing three elements, times10, times100 and times1000, the result of multiplying the number by 10, 100 and 1000.';
520
-	function v1_simpleStructReturn($m)
521
-	{
522
-		$sno=$m->getParam(0);
523
-		$v=$sno->scalarval();
524
-		return new xmlrpcresp(new xmlrpcval(array(
525
-			"times10"   => new xmlrpcval($v*10, "int"),
526
-			"times100"  => new xmlrpcval($v*100, "int"),
527
-			"times1000" => new xmlrpcval($v*1000, "int")),
528
-			"struct"
529
-		));
530
-	}
531
-
532
-	$v1_nestedStruct_sig=array(array($xmlrpcInt, $xmlrpcStruct));
533
-	$v1_nestedStruct_doc='This handler takes a single parameter, a struct, that models a daily calendar. At the top level, there is one struct for each year. Each year is broken down into months, and months into days. Most of the days are empty in the struct you receive, but the entry for April 1, 2000 contains a least three elements named moe, larry and curly, all &lt;i4&gt;s. Your handler must add the three numbers and return the result.';
534
-	function v1_nestedStruct($m)
535
-	{
536
-		$sno=$m->getParam(0);
537
-
538
-		$twoK=$sno->structmem("2000");
539
-		$april=$twoK->structmem("04");
540
-		$fools=$april->structmem("01");
541
-		$curly=$fools->structmem("curly");
542
-		$larry=$fools->structmem("larry");
543
-		$moe=$fools->structmem("moe");
544
-		return new xmlrpcresp(new xmlrpcval($curly->scalarval() + $larry->scalarval() + $moe->scalarval(), "int"));
545
-	}
546
-
547
-	$v1_countTheEntities_sig=array(array($xmlrpcStruct, $xmlrpcString));
548
-	$v1_countTheEntities_doc='This handler takes a single parameter, a string, that contains any number of predefined entities, namely &lt;, &gt;, &amp; \' and ".<BR>Your handler must return a struct that contains five fields, all numbers: ctLeftAngleBrackets, ctRightAngleBrackets, ctAmpersands, ctApostrophes, ctQuotes.';
549
-	function v1_countTheEntities($m)
550
-	{
551
-		$sno=$m->getParam(0);
552
-		$str=$sno->scalarval();
553
-		$gt=0; $lt=0; $ap=0; $qu=0; $amp=0;
554
-		for($i=0; $i<strlen($str); $i++)
555
-		{
556
-			$c=substr($str, $i, 1);
557
-			switch($c)
558
-			{
559
-				case ">":
560
-					$gt++;
561
-					break;
562
-				case "<":
563
-					$lt++;
564
-					break;
565
-				case "\"":
566
-					$qu++;
567
-					break;
568
-				case "'":
569
-					$ap++;
570
-					break;
571
-				case "&":
572
-					$amp++;
573
-					break;
574
-				default:
575
-					break;
576
-			}
577
-		}
578
-		return new xmlrpcresp(new xmlrpcval(array(
579
-			"ctLeftAngleBrackets"  => new xmlrpcval($lt, "int"),
580
-			"ctRightAngleBrackets" => new xmlrpcval($gt, "int"),
581
-			"ctAmpersands"		 => new xmlrpcval($amp, "int"),
582
-			"ctApostrophes"		=> new xmlrpcval($ap, "int"),
583
-			"ctQuotes"			 => new xmlrpcval($qu, "int")),
584
-			"struct"
585
-		));
586
-	}
587
-
588
-	// trivial interop tests
589
-	// http://www.xmlrpc.com/stories/storyReader$1636
590
-
591
-	$i_echoString_sig=array(array($xmlrpcString, $xmlrpcString));
592
-	$i_echoString_doc="Echoes string.";
593
-
594
-	$i_echoStringArray_sig=array(array($xmlrpcArray, $xmlrpcArray));
595
-	$i_echoStringArray_doc="Echoes string array.";
596
-
597
-	$i_echoInteger_sig=array(array($xmlrpcInt, $xmlrpcInt));
598
-	$i_echoInteger_doc="Echoes integer.";
599
-
600
-	$i_echoIntegerArray_sig=array(array($xmlrpcArray, $xmlrpcArray));
601
-	$i_echoIntegerArray_doc="Echoes integer array.";
602
-
603
-	$i_echoFloat_sig=array(array($xmlrpcDouble, $xmlrpcDouble));
604
-	$i_echoFloat_doc="Echoes float.";
605
-
606
-	$i_echoFloatArray_sig=array(array($xmlrpcArray, $xmlrpcArray));
607
-	$i_echoFloatArray_doc="Echoes float array.";
608
-
609
-	$i_echoStruct_sig=array(array($xmlrpcStruct, $xmlrpcStruct));
610
-	$i_echoStruct_doc="Echoes struct.";
611
-
612
-	$i_echoStructArray_sig=array(array($xmlrpcArray, $xmlrpcArray));
613
-	$i_echoStructArray_doc="Echoes struct array.";
614
-
615
-	$i_echoValue_doc="Echoes any value back.";
616
-	$i_echoValue_sig=array(array($xmlrpcValue, $xmlrpcValue));
617
-
618
-	$i_echoBase64_sig=array(array($xmlrpcBase64, $xmlrpcBase64));
619
-	$i_echoBase64_doc="Echoes base64.";
620
-
621
-	$i_echoDate_sig=array(array($xmlrpcDateTime, $xmlrpcDateTime));
622
-	$i_echoDate_doc="Echoes dateTime.";
623
-
624
-	function i_echoParam($m)
625
-	{
626
-		$s=$m->getParam(0);
627
-		return new xmlrpcresp($s);
628
-	}
629
-
630
-	function i_echoString($m) { return i_echoParam($m); }
631
-	function i_echoInteger($m) { return i_echoParam($m); }
632
-	function i_echoFloat($m) { return i_echoParam($m); }
633
-	function i_echoStruct($m) { return i_echoParam($m); }
634
-	function i_echoStringArray($m) { return i_echoParam($m); }
635
-	function i_echoIntegerArray($m) { return i_echoParam($m); }
636
-	function i_echoFloatArray($m) { return i_echoParam($m); }
637
-	function i_echoStructArray($m) { return i_echoParam($m); }
638
-	function i_echoValue($m) { return i_echoParam($m); }
639
-	function i_echoBase64($m) { return i_echoParam($m); }
640
-	function i_echoDate($m) { return i_echoParam($m); }
641
-
642
-	$i_whichToolkit_sig=array(array($xmlrpcStruct));
643
-	$i_whichToolkit_doc="Returns a struct containing the following strings: toolkitDocsUrl, toolkitName, toolkitVersion, toolkitOperatingSystem.";
644
-
645
-	function i_whichToolkit($m)
646
-	{
647
-		global $xmlrpcName, $xmlrpcVersion,$SERVER_SOFTWARE;
648
-		$ret=array(
649
-			"toolkitDocsUrl" => "http://phpxmlrpc.sourceforge.net/",
650
-			"toolkitName" => $xmlrpcName,
651
-			"toolkitVersion" => $xmlrpcVersion,
652
-			"toolkitOperatingSystem" => isset ($SERVER_SOFTWARE) ? $SERVER_SOFTWARE : $_SERVER['SERVER_SOFTWARE']
653
-		);
654
-		return new xmlrpcresp ( php_xmlrpc_encode($ret));
655
-	}
656
-
657
-	$o=new xmlrpc_server_methods_container;
658
-	$a=array(
659
-		"examples.getStateName" => array(
660
-			"function" => "findstate",
661
-			"signature" => $findstate_sig,
662
-			"docstring" => $findstate_doc
663
-		),
664
-		"examples.sortByAge" => array(
665
-			"function" => "agesorter",
666
-			"signature" => $agesorter_sig,
667
-			"docstring" => $agesorter_doc
668
-		),
669
-		"examples.addtwo" => array(
670
-			"function" => "addtwo",
671
-			"signature" => $addtwo_sig,
672
-			"docstring" => $addtwo_doc
673
-		),
674
-		"examples.addtwodouble" => array(
675
-			"function" => "addtwodouble",
676
-			"signature" => $addtwodouble_sig,
677
-			"docstring" => $addtwodouble_doc
678
-		),
679
-		"examples.stringecho" => array(
680
-			"function" => "stringecho",
681
-			"signature" => $stringecho_sig,
682
-			"docstring" => $stringecho_doc
683
-		),
684
-		"examples.echo" => array(
685
-			"function" => "echoback",
686
-			"signature" => $echoback_sig,
687
-			"docstring" => $echoback_doc
688
-		),
689
-		"examples.decode64" => array(
690
-			"function" => "echosixtyfour",
691
-			"signature" => $echosixtyfour_sig,
692
-			"docstring" => $echosixtyfour_doc
693
-		),
694
-		"examples.invertBooleans" => array(
695
-			"function" => "bitflipper",
696
-			"signature" => $bitflipper_sig,
697
-			"docstring" => $bitflipper_doc
698
-		),
699
-		"examples.generatePHPWarning" => array(
700
-			"function" => array($o, "phpwarninggenerator")
701
-			//'function' => 'xmlrpc_server_methods_container::phpwarninggenerator'
702
-		),
703
-		"examples.raiseException" => array(
704
-			"function" => array($o, "exceptiongenerator")
705
-		),
706
-		"examples.getallheaders" => array(
707
-			"function" => 'getallheaders_xmlrpc',
708
-			"signature" => $getallheaders_sig,
709
-			"docstring" => $getallheaders_doc
710
-		),
711
-		"examples.setcookies" => array(
712
-			"function" => 'setcookies',
713
-			"signature" => $setcookies_sig,
714
-			"docstring" => $setcookies_doc
715
-		),
716
-		"examples.getcookies" => array(
717
-			"function" => 'getcookies',
718
-			"signature" => $getcookies_sig,
719
-			"docstring" => $getcookies_doc
720
-		),
721
-		"mail.send" => array(
722
-			"function" => "mail_send",
723
-			"signature" => $mail_send_sig,
724
-			"docstring" => $mail_send_doc
725
-		),
726
-		"validator1.arrayOfStructsTest" => array(
727
-			"function" => "v1_arrayOfStructs",
728
-			"signature" => $v1_arrayOfStructs_sig,
729
-			"docstring" => $v1_arrayOfStructs_doc
730
-		),
731
-		"validator1.easyStructTest" => array(
732
-			"function" => "v1_easyStruct",
733
-			"signature" => $v1_easyStruct_sig,
734
-			"docstring" => $v1_easyStruct_doc
735
-		),
736
-		"validator1.echoStructTest" => array(
737
-			"function" => "v1_echoStruct",
738
-			"signature" => $v1_echoStruct_sig,
739
-			"docstring" => $v1_echoStruct_doc
740
-		),
741
-		"validator1.manyTypesTest" => array(
742
-			"function" => "v1_manyTypes",
743
-			"signature" => $v1_manyTypes_sig,
744
-			"docstring" => $v1_manyTypes_doc
745
-		),
746
-		"validator1.moderateSizeArrayCheck" => array(
747
-			"function" => "v1_moderateSizeArrayCheck",
748
-			"signature" => $v1_moderateSizeArrayCheck_sig,
749
-			"docstring" => $v1_moderateSizeArrayCheck_doc
750
-		),
751
-		"validator1.simpleStructReturnTest" => array(
752
-			"function" => "v1_simpleStructReturn",
753
-			"signature" => $v1_simpleStructReturn_sig,
754
-			"docstring" => $v1_simpleStructReturn_doc
755
-		),
756
-		"validator1.nestedStructTest" => array(
757
-			"function" => "v1_nestedStruct",
758
-			"signature" => $v1_nestedStruct_sig,
759
-			"docstring" => $v1_nestedStruct_doc
760
-		),
761
-		"validator1.countTheEntities" => array(
762
-			"function" => "v1_countTheEntities",
763
-			"signature" => $v1_countTheEntities_sig,
764
-			"docstring" => $v1_countTheEntities_doc
765
-		),
766
-		"interopEchoTests.echoString" => array(
767
-			"function" => "i_echoString",
768
-			"signature" => $i_echoString_sig,
769
-			"docstring" => $i_echoString_doc
770
-		),
771
-		"interopEchoTests.echoStringArray" => array(
772
-			"function" => "i_echoStringArray",
773
-			"signature" => $i_echoStringArray_sig,
774
-			"docstring" => $i_echoStringArray_doc
775
-		),
776
-		"interopEchoTests.echoInteger" => array(
777
-			"function" => "i_echoInteger",
778
-			"signature" => $i_echoInteger_sig,
779
-			"docstring" => $i_echoInteger_doc
780
-		),
781
-		"interopEchoTests.echoIntegerArray" => array(
782
-			"function" => "i_echoIntegerArray",
783
-			"signature" => $i_echoIntegerArray_sig,
784
-			"docstring" => $i_echoIntegerArray_doc
785
-		),
786
-		"interopEchoTests.echoFloat" => array(
787
-			"function" => "i_echoFloat",
788
-			"signature" => $i_echoFloat_sig,
789
-			"docstring" => $i_echoFloat_doc
790
-		),
791
-		"interopEchoTests.echoFloatArray" => array(
792
-			"function" => "i_echoFloatArray",
793
-			"signature" => $i_echoFloatArray_sig,
794
-			"docstring" => $i_echoFloatArray_doc
795
-		),
796
-		"interopEchoTests.echoStruct" => array(
797
-			"function" => "i_echoStruct",
798
-			"signature" => $i_echoStruct_sig,
799
-			"docstring" => $i_echoStruct_doc
800
-		),
801
-		"interopEchoTests.echoStructArray" => array(
802
-			"function" => "i_echoStructArray",
803
-			"signature" => $i_echoStructArray_sig,
804
-			"docstring" => $i_echoStructArray_doc
805
-		),
806
-		"interopEchoTests.echoValue" => array(
807
-			"function" => "i_echoValue",
808
-			"signature" => $i_echoValue_sig,
809
-			"docstring" => $i_echoValue_doc
810
-		),
811
-		"interopEchoTests.echoBase64" => array(
812
-			"function" => "i_echoBase64",
813
-			"signature" => $i_echoBase64_sig,
814
-			"docstring" => $i_echoBase64_doc
815
-		),
816
-		"interopEchoTests.echoDate" => array(
817
-			"function" => "i_echoDate",
818
-			"signature" => $i_echoDate_sig,
819
-			"docstring" => $i_echoDate_doc
820
-		),
821
-		"interopEchoTests.whichToolkit" => array(
822
-			"function" => "i_whichToolkit",
823
-			"signature" => $i_whichToolkit_sig,
824
-			"docstring" => $i_whichToolkit_doc
825
-		)
826
-	);
827
-
828
-	if ($findstate2_sig)
829
-		$a['examples.php.getStateName'] = $findstate2_sig;
830
-
831
-	if ($findstate3_sig)
832
-		$a['examples.php2.getStateName'] = $findstate3_sig;
833
-
834
-	if ($findstate4_sig)
835
-		$a['examples.php3.getStateName'] = $findstate4_sig;
339
+    // WARNING; this functionality depends on the sendmail -t option
340
+    // it may not work with Windows machines properly; particularly
341
+    // the Bcc option. Sneak on your friends at your own risk!
342
+    function mail_send($m)
343
+    {
344
+        global $xmlrpcerruser, $xmlrpcBoolean;
345
+        $err="";
346
+
347
+        $mTo=$m->getParam(0);
348
+        $mSub=$m->getParam(1);
349
+        $mBody=$m->getParam(2);
350
+        $mFrom=$m->getParam(3);
351
+        $mCc=$m->getParam(4);
352
+        $mBcc=$m->getParam(5);
353
+        $mMime=$m->getParam(6);
354
+
355
+        if ($mTo->scalarval()=="")
356
+        {
357
+            $err="Error, no 'To' field specified";
358
+        }
359
+
360
+        if ($mFrom->scalarval()=="")
361
+        {
362
+            $err="Error, no 'From' field specified";
363
+        }
364
+
365
+        $msghdr="From: " . $mFrom->scalarval() . "\n";
366
+        $msghdr.="To: ". $mTo->scalarval() . "\n";
367
+
368
+        if ($mCc->scalarval()!="")
369
+        {
370
+            $msghdr.="Cc: " . $mCc->scalarval(). "\n";
371
+        }
372
+        if ($mBcc->scalarval()!="")
373
+        {
374
+            $msghdr.="Bcc: " . $mBcc->scalarval(). "\n";
375
+        }
376
+        if ($mMime->scalarval()!="")
377
+        {
378
+            $msghdr.="Content-type: " . $mMime->scalarval() . "\n";
379
+        }
380
+        $msghdr.="X-Mailer: XML-RPC for PHP mailer 1.0";
381
+
382
+        if ($err=="")
383
+        {
384
+            if (!mail("",
385
+                $mSub->scalarval(),
386
+                $mBody->scalarval(),
387
+                $msghdr))
388
+            {
389
+                $err="Error, could not send the mail.";
390
+            }
391
+        }
392
+
393
+        if ($err)
394
+        {
395
+            return new xmlrpcresp(0, $xmlrpcerruser, $err);
396
+        }
397
+        else
398
+        {
399
+            return new xmlrpcresp(new xmlrpcval("true", $xmlrpcBoolean));
400
+        }
401
+    }
402
+
403
+    $getallheaders_sig=array(array($xmlrpcStruct));
404
+    $getallheaders_doc='Returns a struct containing all the HTTP headers received with the request. Provides limited functionality with IIS';
405
+    function getallheaders_xmlrpc($m)
406
+    {
407
+        global $xmlrpcerruser;
408
+        if (function_exists('getallheaders'))
409
+        {
410
+            return new xmlrpcresp(php_xmlrpc_encode(getallheaders()));
411
+        }
412
+        else
413
+        {
414
+            $headers = array();
415
+            // IIS: poor man's version of getallheaders
416
+            foreach ($_SERVER as $key => $val)
417
+                if (strpos($key, 'HTTP_') === 0)
418
+                {
419
+                    $key = ucfirst(str_replace('_', '-', strtolower(substr($key, 5))));
420
+                    $headers[$key] = $val;
421
+                }
422
+            return new xmlrpcresp(php_xmlrpc_encode($headers));
423
+        }
424
+    }
425
+
426
+    $setcookies_sig=array(array($xmlrpcInt, $xmlrpcStruct));
427
+    $setcookies_doc='Sends to client a response containing a single \'1\' digit, and sets to it http cookies as received in the request (array of structs describing a cookie)';
428
+    function setcookies($m)
429
+    {
430
+        $m = $m->getParam(0);
431
+        while(list($name,$value) = $m->structeach())
432
+        {
433
+            $cookiedesc = php_xmlrpc_decode($value);
434
+            setcookie($name, @$cookiedesc['value'], @$cookiedesc['expires'], @$cookiedesc['path'], @$cookiedesc['domain'], @$cookiedesc['secure']);
435
+        }
436
+        return new xmlrpcresp(new xmlrpcval(1, 'int'));
437
+    }
438
+
439
+    $getcookies_sig=array(array($xmlrpcStruct));
440
+    $getcookies_doc='Sends to client a response containing all http cookies as received in the request (as struct)';
441
+    function getcookies($m)
442
+    {
443
+        return new xmlrpcresp(php_xmlrpc_encode($_COOKIE));
444
+    }
445
+
446
+    $v1_arrayOfStructs_sig=array(array($xmlrpcInt, $xmlrpcArray));
447
+    $v1_arrayOfStructs_doc='This handler takes a single parameter, an array of structs, each of which contains at least three elements named moe, larry and curly, all <i4>s. Your handler must add all the struct elements named curly and return the result.';
448
+    function v1_arrayOfStructs($m)
449
+    {
450
+        $sno=$m->getParam(0);
451
+        $numcurly=0;
452
+        for($i=0; $i<$sno->arraysize(); $i++)
453
+        {
454
+            $str=$sno->arraymem($i);
455
+            $str->structreset();
456
+            while(list($key,$val)=$str->structeach())
457
+            {
458
+                if ($key=="curly")
459
+                {
460
+                    $numcurly+=$val->scalarval();
461
+                }
462
+            }
463
+        }
464
+        return new xmlrpcresp(new xmlrpcval($numcurly, "int"));
465
+    }
466
+
467
+    $v1_easyStruct_sig=array(array($xmlrpcInt, $xmlrpcStruct));
468
+    $v1_easyStruct_doc='This handler takes a single parameter, a struct, containing at least three elements named moe, larry and curly, all &lt;i4&gt;s. Your handler must add the three numbers and return the result.';
469
+    function v1_easyStruct($m)
470
+    {
471
+        $sno=$m->getParam(0);
472
+        $moe=$sno->structmem("moe");
473
+        $larry=$sno->structmem("larry");
474
+        $curly=$sno->structmem("curly");
475
+        $num=$moe->scalarval() + $larry->scalarval() + $curly->scalarval();
476
+        return new xmlrpcresp(new xmlrpcval($num, "int"));
477
+    }
478
+
479
+    $v1_echoStruct_sig=array(array($xmlrpcStruct, $xmlrpcStruct));
480
+    $v1_echoStruct_doc='This handler takes a single parameter, a struct. Your handler must return the struct.';
481
+    function v1_echoStruct($m)
482
+    {
483
+        $sno=$m->getParam(0);
484
+        return new xmlrpcresp($sno);
485
+    }
486
+
487
+    $v1_manyTypes_sig=array(array(
488
+        $xmlrpcArray, $xmlrpcInt, $xmlrpcBoolean,
489
+        $xmlrpcString, $xmlrpcDouble, $xmlrpcDateTime,
490
+        $xmlrpcBase64
491
+    ));
492
+    $v1_manyTypes_doc='This handler takes six parameters, and returns an array containing all the parameters.';
493
+    function v1_manyTypes($m)
494
+    {
495
+        return new xmlrpcresp(new xmlrpcval(array(
496
+            $m->getParam(0),
497
+            $m->getParam(1),
498
+            $m->getParam(2),
499
+            $m->getParam(3),
500
+            $m->getParam(4),
501
+            $m->getParam(5)),
502
+            "array"
503
+        ));
504
+    }
505
+
506
+    $v1_moderateSizeArrayCheck_sig=array(array($xmlrpcString, $xmlrpcArray));
507
+    $v1_moderateSizeArrayCheck_doc='This handler takes a single parameter, which is an array containing between 100 and 200 elements. Each of the items is a string, your handler must return a string containing the concatenated text of the first and last elements.';
508
+    function v1_moderateSizeArrayCheck($m)
509
+    {
510
+        $ar=$m->getParam(0);
511
+        $sz=$ar->arraysize();
512
+        $first=$ar->arraymem(0);
513
+        $last=$ar->arraymem($sz-1);
514
+        return new xmlrpcresp(new xmlrpcval($first->scalarval() .
515
+        $last->scalarval(), "string"));
516
+    }
517
+
518
+    $v1_simpleStructReturn_sig=array(array($xmlrpcStruct, $xmlrpcInt));
519
+    $v1_simpleStructReturn_doc='This handler takes one parameter, and returns a struct containing three elements, times10, times100 and times1000, the result of multiplying the number by 10, 100 and 1000.';
520
+    function v1_simpleStructReturn($m)
521
+    {
522
+        $sno=$m->getParam(0);
523
+        $v=$sno->scalarval();
524
+        return new xmlrpcresp(new xmlrpcval(array(
525
+            "times10"   => new xmlrpcval($v*10, "int"),
526
+            "times100"  => new xmlrpcval($v*100, "int"),
527
+            "times1000" => new xmlrpcval($v*1000, "int")),
528
+            "struct"
529
+        ));
530
+    }
531
+
532
+    $v1_nestedStruct_sig=array(array($xmlrpcInt, $xmlrpcStruct));
533
+    $v1_nestedStruct_doc='This handler takes a single parameter, a struct, that models a daily calendar. At the top level, there is one struct for each year. Each year is broken down into months, and months into days. Most of the days are empty in the struct you receive, but the entry for April 1, 2000 contains a least three elements named moe, larry and curly, all &lt;i4&gt;s. Your handler must add the three numbers and return the result.';
534
+    function v1_nestedStruct($m)
535
+    {
536
+        $sno=$m->getParam(0);
537
+
538
+        $twoK=$sno->structmem("2000");
539
+        $april=$twoK->structmem("04");
540
+        $fools=$april->structmem("01");
541
+        $curly=$fools->structmem("curly");
542
+        $larry=$fools->structmem("larry");
543
+        $moe=$fools->structmem("moe");
544
+        return new xmlrpcresp(new xmlrpcval($curly->scalarval() + $larry->scalarval() + $moe->scalarval(), "int"));
545
+    }
546
+
547
+    $v1_countTheEntities_sig=array(array($xmlrpcStruct, $xmlrpcString));
548
+    $v1_countTheEntities_doc='This handler takes a single parameter, a string, that contains any number of predefined entities, namely &lt;, &gt;, &amp; \' and ".<BR>Your handler must return a struct that contains five fields, all numbers: ctLeftAngleBrackets, ctRightAngleBrackets, ctAmpersands, ctApostrophes, ctQuotes.';
549
+    function v1_countTheEntities($m)
550
+    {
551
+        $sno=$m->getParam(0);
552
+        $str=$sno->scalarval();
553
+        $gt=0; $lt=0; $ap=0; $qu=0; $amp=0;
554
+        for($i=0; $i<strlen($str); $i++)
555
+        {
556
+            $c=substr($str, $i, 1);
557
+            switch($c)
558
+            {
559
+                case ">":
560
+                    $gt++;
561
+                    break;
562
+                case "<":
563
+                    $lt++;
564
+                    break;
565
+                case "\"":
566
+                    $qu++;
567
+                    break;
568
+                case "'":
569
+                    $ap++;
570
+                    break;
571
+                case "&":
572
+                    $amp++;
573
+                    break;
574
+                default:
575
+                    break;
576
+            }
577
+        }
578
+        return new xmlrpcresp(new xmlrpcval(array(
579
+            "ctLeftAngleBrackets"  => new xmlrpcval($lt, "int"),
580
+            "ctRightAngleBrackets" => new xmlrpcval($gt, "int"),
581
+            "ctAmpersands"		 => new xmlrpcval($amp, "int"),
582
+            "ctApostrophes"		=> new xmlrpcval($ap, "int"),
583
+            "ctQuotes"			 => new xmlrpcval($qu, "int")),
584
+            "struct"
585
+        ));
586
+    }
587
+
588
+    // trivial interop tests
589
+    // http://www.xmlrpc.com/stories/storyReader$1636
590
+
591
+    $i_echoString_sig=array(array($xmlrpcString, $xmlrpcString));
592
+    $i_echoString_doc="Echoes string.";
593
+
594
+    $i_echoStringArray_sig=array(array($xmlrpcArray, $xmlrpcArray));
595
+    $i_echoStringArray_doc="Echoes string array.";
596
+
597
+    $i_echoInteger_sig=array(array($xmlrpcInt, $xmlrpcInt));
598
+    $i_echoInteger_doc="Echoes integer.";
599
+
600
+    $i_echoIntegerArray_sig=array(array($xmlrpcArray, $xmlrpcArray));
601
+    $i_echoIntegerArray_doc="Echoes integer array.";
602
+
603
+    $i_echoFloat_sig=array(array($xmlrpcDouble, $xmlrpcDouble));
604
+    $i_echoFloat_doc="Echoes float.";
605
+
606
+    $i_echoFloatArray_sig=array(array($xmlrpcArray, $xmlrpcArray));
607
+    $i_echoFloatArray_doc="Echoes float array.";
608
+
609
+    $i_echoStruct_sig=array(array($xmlrpcStruct, $xmlrpcStruct));
610
+    $i_echoStruct_doc="Echoes struct.";
611
+
612
+    $i_echoStructArray_sig=array(array($xmlrpcArray, $xmlrpcArray));
613
+    $i_echoStructArray_doc="Echoes struct array.";
614
+
615
+    $i_echoValue_doc="Echoes any value back.";
616
+    $i_echoValue_sig=array(array($xmlrpcValue, $xmlrpcValue));
617
+
618
+    $i_echoBase64_sig=array(array($xmlrpcBase64, $xmlrpcBase64));
619
+    $i_echoBase64_doc="Echoes base64.";
620
+
621
+    $i_echoDate_sig=array(array($xmlrpcDateTime, $xmlrpcDateTime));
622
+    $i_echoDate_doc="Echoes dateTime.";
623
+
624
+    function i_echoParam($m)
625
+    {
626
+        $s=$m->getParam(0);
627
+        return new xmlrpcresp($s);
628
+    }
629
+
630
+    function i_echoString($m) { return i_echoParam($m); }
631
+    function i_echoInteger($m) { return i_echoParam($m); }
632
+    function i_echoFloat($m) { return i_echoParam($m); }
633
+    function i_echoStruct($m) { return i_echoParam($m); }
634
+    function i_echoStringArray($m) { return i_echoParam($m); }
635
+    function i_echoIntegerArray($m) { return i_echoParam($m); }
636
+    function i_echoFloatArray($m) { return i_echoParam($m); }
637
+    function i_echoStructArray($m) { return i_echoParam($m); }
638
+    function i_echoValue($m) { return i_echoParam($m); }
639
+    function i_echoBase64($m) { return i_echoParam($m); }
640
+    function i_echoDate($m) { return i_echoParam($m); }
641
+
642
+    $i_whichToolkit_sig=array(array($xmlrpcStruct));
643
+    $i_whichToolkit_doc="Returns a struct containing the following strings: toolkitDocsUrl, toolkitName, toolkitVersion, toolkitOperatingSystem.";
644
+
645
+    function i_whichToolkit($m)
646
+    {
647
+        global $xmlrpcName, $xmlrpcVersion,$SERVER_SOFTWARE;
648
+        $ret=array(
649
+            "toolkitDocsUrl" => "http://phpxmlrpc.sourceforge.net/",
650
+            "toolkitName" => $xmlrpcName,
651
+            "toolkitVersion" => $xmlrpcVersion,
652
+            "toolkitOperatingSystem" => isset ($SERVER_SOFTWARE) ? $SERVER_SOFTWARE : $_SERVER['SERVER_SOFTWARE']
653
+        );
654
+        return new xmlrpcresp ( php_xmlrpc_encode($ret));
655
+    }
656
+
657
+    $o=new xmlrpc_server_methods_container;
658
+    $a=array(
659
+        "examples.getStateName" => array(
660
+            "function" => "findstate",
661
+            "signature" => $findstate_sig,
662
+            "docstring" => $findstate_doc
663
+        ),
664
+        "examples.sortByAge" => array(
665
+            "function" => "agesorter",
666
+            "signature" => $agesorter_sig,
667
+            "docstring" => $agesorter_doc
668
+        ),
669
+        "examples.addtwo" => array(
670
+            "function" => "addtwo",
671
+            "signature" => $addtwo_sig,
672
+            "docstring" => $addtwo_doc
673
+        ),
674
+        "examples.addtwodouble" => array(
675
+            "function" => "addtwodouble",
676
+            "signature" => $addtwodouble_sig,
677
+            "docstring" => $addtwodouble_doc
678
+        ),
679
+        "examples.stringecho" => array(
680
+            "function" => "stringecho",
681
+            "signature" => $stringecho_sig,
682
+            "docstring" => $stringecho_doc
683
+        ),
684
+        "examples.echo" => array(
685
+            "function" => "echoback",
686
+            "signature" => $echoback_sig,
687
+            "docstring" => $echoback_doc
688
+        ),
689
+        "examples.decode64" => array(
690
+            "function" => "echosixtyfour",
691
+            "signature" => $echosixtyfour_sig,
692
+            "docstring" => $echosixtyfour_doc
693
+        ),
694
+        "examples.invertBooleans" => array(
695
+            "function" => "bitflipper",
696
+            "signature" => $bitflipper_sig,
697
+            "docstring" => $bitflipper_doc
698
+        ),
699
+        "examples.generatePHPWarning" => array(
700
+            "function" => array($o, "phpwarninggenerator")
701
+            //'function' => 'xmlrpc_server_methods_container::phpwarninggenerator'
702
+        ),
703
+        "examples.raiseException" => array(
704
+            "function" => array($o, "exceptiongenerator")
705
+        ),
706
+        "examples.getallheaders" => array(
707
+            "function" => 'getallheaders_xmlrpc',
708
+            "signature" => $getallheaders_sig,
709
+            "docstring" => $getallheaders_doc
710
+        ),
711
+        "examples.setcookies" => array(
712
+            "function" => 'setcookies',
713
+            "signature" => $setcookies_sig,
714
+            "docstring" => $setcookies_doc
715
+        ),
716
+        "examples.getcookies" => array(
717
+            "function" => 'getcookies',
718
+            "signature" => $getcookies_sig,
719
+            "docstring" => $getcookies_doc
720
+        ),
721
+        "mail.send" => array(
722
+            "function" => "mail_send",
723
+            "signature" => $mail_send_sig,
724
+            "docstring" => $mail_send_doc
725
+        ),
726
+        "validator1.arrayOfStructsTest" => array(
727
+            "function" => "v1_arrayOfStructs",
728
+            "signature" => $v1_arrayOfStructs_sig,
729
+            "docstring" => $v1_arrayOfStructs_doc
730
+        ),
731
+        "validator1.easyStructTest" => array(
732
+            "function" => "v1_easyStruct",
733
+            "signature" => $v1_easyStruct_sig,
734
+            "docstring" => $v1_easyStruct_doc
735
+        ),
736
+        "validator1.echoStructTest" => array(
737
+            "function" => "v1_echoStruct",
738
+            "signature" => $v1_echoStruct_sig,
739
+            "docstring" => $v1_echoStruct_doc
740
+        ),
741
+        "validator1.manyTypesTest" => array(
742
+            "function" => "v1_manyTypes",
743
+            "signature" => $v1_manyTypes_sig,
744
+            "docstring" => $v1_manyTypes_doc
745
+        ),
746
+        "validator1.moderateSizeArrayCheck" => array(
747
+            "function" => "v1_moderateSizeArrayCheck",
748
+            "signature" => $v1_moderateSizeArrayCheck_sig,
749
+            "docstring" => $v1_moderateSizeArrayCheck_doc
750
+        ),
751
+        "validator1.simpleStructReturnTest" => array(
752
+            "function" => "v1_simpleStructReturn",
753
+            "signature" => $v1_simpleStructReturn_sig,
754
+            "docstring" => $v1_simpleStructReturn_doc
755
+        ),
756
+        "validator1.nestedStructTest" => array(
757
+            "function" => "v1_nestedStruct",
758
+            "signature" => $v1_nestedStruct_sig,
759
+            "docstring" => $v1_nestedStruct_doc
760
+        ),
761
+        "validator1.countTheEntities" => array(
762
+            "function" => "v1_countTheEntities",
763
+            "signature" => $v1_countTheEntities_sig,
764
+            "docstring" => $v1_countTheEntities_doc
765
+        ),
766
+        "interopEchoTests.echoString" => array(
767
+            "function" => "i_echoString",
768
+            "signature" => $i_echoString_sig,
769
+            "docstring" => $i_echoString_doc
770
+        ),
771
+        "interopEchoTests.echoStringArray" => array(
772
+            "function" => "i_echoStringArray",
773
+            "signature" => $i_echoStringArray_sig,
774
+            "docstring" => $i_echoStringArray_doc
775
+        ),
776
+        "interopEchoTests.echoInteger" => array(
777
+            "function" => "i_echoInteger",
778
+            "signature" => $i_echoInteger_sig,
779
+            "docstring" => $i_echoInteger_doc
780
+        ),
781
+        "interopEchoTests.echoIntegerArray" => array(
782
+            "function" => "i_echoIntegerArray",
783
+            "signature" => $i_echoIntegerArray_sig,
784
+            "docstring" => $i_echoIntegerArray_doc
785
+        ),
786
+        "interopEchoTests.echoFloat" => array(
787
+            "function" => "i_echoFloat",
788
+            "signature" => $i_echoFloat_sig,
789
+            "docstring" => $i_echoFloat_doc
790
+        ),
791
+        "interopEchoTests.echoFloatArray" => array(
792
+            "function" => "i_echoFloatArray",
793
+            "signature" => $i_echoFloatArray_sig,
794
+            "docstring" => $i_echoFloatArray_doc
795
+        ),
796
+        "interopEchoTests.echoStruct" => array(
797
+            "function" => "i_echoStruct",
798
+            "signature" => $i_echoStruct_sig,
799
+            "docstring" => $i_echoStruct_doc
800
+        ),
801
+        "interopEchoTests.echoStructArray" => array(
802
+            "function" => "i_echoStructArray",
803
+            "signature" => $i_echoStructArray_sig,
804
+            "docstring" => $i_echoStructArray_doc
805
+        ),
806
+        "interopEchoTests.echoValue" => array(
807
+            "function" => "i_echoValue",
808
+            "signature" => $i_echoValue_sig,
809
+            "docstring" => $i_echoValue_doc
810
+        ),
811
+        "interopEchoTests.echoBase64" => array(
812
+            "function" => "i_echoBase64",
813
+            "signature" => $i_echoBase64_sig,
814
+            "docstring" => $i_echoBase64_doc
815
+        ),
816
+        "interopEchoTests.echoDate" => array(
817
+            "function" => "i_echoDate",
818
+            "signature" => $i_echoDate_sig,
819
+            "docstring" => $i_echoDate_doc
820
+        ),
821
+        "interopEchoTests.whichToolkit" => array(
822
+            "function" => "i_whichToolkit",
823
+            "signature" => $i_whichToolkit_sig,
824
+            "docstring" => $i_whichToolkit_doc
825
+        )
826
+    );
827
+
828
+    if ($findstate2_sig)
829
+        $a['examples.php.getStateName'] = $findstate2_sig;
830
+
831
+    if ($findstate3_sig)
832
+        $a['examples.php2.getStateName'] = $findstate3_sig;
833
+
834
+    if ($findstate4_sig)
835
+        $a['examples.php3.getStateName'] = $findstate4_sig;
836 836
 
837 837
     if ($findstate5_sig)
838 838
         $a['examples.php4.getStateName'] = $findstate5_sig;
839 839
 
840
-	$s=new xmlrpc_server($a, false);
841
-	$s->setdebug(3);
842
-	$s->compress_response = true;
843
-
844
-	// out-of-band information: let the client manipulate the server operations.
845
-	// we do this to help the testsuite script: do not reproduce in production!
846
-	if (isset($_GET['RESPONSE_ENCODING']))
847
-		$s->response_charset_encoding = $_GET['RESPONSE_ENCODING'];
848
-	if (isset($_GET['EXCEPTION_HANDLING']))
849
-		$s->exception_handling = $_GET['EXCEPTION_HANDLING'];
850
-	$s->service();
851
-	// that should do all we need!
840
+    $s=new xmlrpc_server($a, false);
841
+    $s->setdebug(3);
842
+    $s->compress_response = true;
843
+
844
+    // out-of-band information: let the client manipulate the server operations.
845
+    // we do this to help the testsuite script: do not reproduce in production!
846
+    if (isset($_GET['RESPONSE_ENCODING']))
847
+        $s->response_charset_encoding = $_GET['RESPONSE_ENCODING'];
848
+    if (isset($_GET['EXCEPTION_HANDLING']))
849
+        $s->exception_handling = $_GET['EXCEPTION_HANDLING'];
850
+    $s->service();
851
+    // that should do all we need!
852 852
 ?>
853 853
\ No newline at end of file
Please login to merge, or discard this patch.
demo/vardemo.php 1 patch
Indentation   +71 added lines, -71 removed lines patch added patch discarded remove patch
@@ -2,59 +2,59 @@  discard block
 block discarded – undo
2 2
 <head><title>xmlrpc</title></head>
3 3
 <body>
4 4
 <?php
5
-	include("xmlrpc.inc");
6
-
7
-	$f = new xmlrpcmsg('examples.getStateName');
8
-
9
-	print "<h3>Testing value serialization</h3>\n";
10
-
11
-	$v = new xmlrpcval(23, "int");
12
-	print "<PRE>" . htmlentities($v->serialize()) . "</PRE>";
13
-	$v = new xmlrpcval("What are you saying? >> << &&");
14
-	print "<PRE>" . htmlentities($v->serialize()) . "</PRE>";
15
-
16
-	$v = new xmlrpcval(array(
17
-		new xmlrpcval("ABCDEFHIJ"),
18
-		new xmlrpcval(1234, 'int'),
19
-		new xmlrpcval(1, 'boolean')),
20
-		"array"
21
-	);
22
-
23
-	print "<PRE>" . htmlentities($v->serialize()) . "</PRE>";
24
-
25
-	$v = new xmlrpcval(
26
-		array(
27
-			"thearray" => new xmlrpcval(
28
-				array(
29
-					new xmlrpcval("ABCDEFHIJ"),
30
-					new xmlrpcval(1234, 'int'),
31
-					new xmlrpcval(1, 'boolean'),
32
-					new xmlrpcval(0, 'boolean'),
33
-					new xmlrpcval(true, 'boolean'),
34
-					new xmlrpcval(false, 'boolean')
35
-				),
36
-				"array"
37
-			),
38
-			"theint" => new xmlrpcval(23, 'int'),
39
-			"thestring" => new xmlrpcval("foobarwhizz"),
40
-			"thestruct" => new xmlrpcval(
41
-				array(
42
-					"one" => new xmlrpcval(1, 'int'),
43
-					"two" => new xmlrpcval(2, 'int')
44
-				),
45
-				"struct"
46
-			)
47
-		),
48
-		"struct"
49
-	);
50
-
51
-	print "<PRE>" . htmlentities($v->serialize()) . "</PRE>";
52
-
53
-	$w = new xmlrpcval(array($v, new xmlrpcval("That was the struct!")), "array");
54
-
55
-	print "<PRE>" . htmlentities($w->serialize()) . "</PRE>";
56
-
57
-	$w = new xmlrpcval("Mary had a little lamb,
5
+    include("xmlrpc.inc");
6
+
7
+    $f = new xmlrpcmsg('examples.getStateName');
8
+
9
+    print "<h3>Testing value serialization</h3>\n";
10
+
11
+    $v = new xmlrpcval(23, "int");
12
+    print "<PRE>" . htmlentities($v->serialize()) . "</PRE>";
13
+    $v = new xmlrpcval("What are you saying? >> << &&");
14
+    print "<PRE>" . htmlentities($v->serialize()) . "</PRE>";
15
+
16
+    $v = new xmlrpcval(array(
17
+        new xmlrpcval("ABCDEFHIJ"),
18
+        new xmlrpcval(1234, 'int'),
19
+        new xmlrpcval(1, 'boolean')),
20
+        "array"
21
+    );
22
+
23
+    print "<PRE>" . htmlentities($v->serialize()) . "</PRE>";
24
+
25
+    $v = new xmlrpcval(
26
+        array(
27
+            "thearray" => new xmlrpcval(
28
+                array(
29
+                    new xmlrpcval("ABCDEFHIJ"),
30
+                    new xmlrpcval(1234, 'int'),
31
+                    new xmlrpcval(1, 'boolean'),
32
+                    new xmlrpcval(0, 'boolean'),
33
+                    new xmlrpcval(true, 'boolean'),
34
+                    new xmlrpcval(false, 'boolean')
35
+                ),
36
+                "array"
37
+            ),
38
+            "theint" => new xmlrpcval(23, 'int'),
39
+            "thestring" => new xmlrpcval("foobarwhizz"),
40
+            "thestruct" => new xmlrpcval(
41
+                array(
42
+                    "one" => new xmlrpcval(1, 'int'),
43
+                    "two" => new xmlrpcval(2, 'int')
44
+                ),
45
+                "struct"
46
+            )
47
+        ),
48
+        "struct"
49
+    );
50
+
51
+    print "<PRE>" . htmlentities($v->serialize()) . "</PRE>";
52
+
53
+    $w = new xmlrpcval(array($v, new xmlrpcval("That was the struct!")), "array");
54
+
55
+    print "<PRE>" . htmlentities($w->serialize()) . "</PRE>";
56
+
57
+    $w = new xmlrpcval("Mary had a little lamb,
58 58
 Whose fleece was white as snow,
59 59
 And everywhere that Mary went
60 60
 the lamb was sure to go.
@@ -63,29 +63,29 @@  discard block
 block discarded – undo
63 63
 She tied it to a pylon
64 64
 Ten thousand volts went down its back
65 65
 And turned it into nylon", "base64"
66
-	);
67
-	print "<PRE>" . htmlentities($w->serialize()) . "</PRE>";
68
-	print "<PRE>Value of base64 string is: '" . $w->scalarval() . "'</PRE>";
66
+    );
67
+    print "<PRE>" . htmlentities($w->serialize()) . "</PRE>";
68
+    print "<PRE>Value of base64 string is: '" . $w->scalarval() . "'</PRE>";
69 69
 
70
-	$f->method('');
71
-	$f->addParam(new xmlrpcval("41", "int"));
70
+    $f->method('');
71
+    $f->addParam(new xmlrpcval("41", "int"));
72 72
 
73
-	print "<h3>Testing request serialization</h3>\n";
74
-	$op = $f->serialize();
75
-	print "<PRE>" . htmlentities($op) . "</PRE>";
73
+    print "<h3>Testing request serialization</h3>\n";
74
+    $op = $f->serialize();
75
+    print "<PRE>" . htmlentities($op) . "</PRE>";
76 76
 
77
-	print "<h3>Testing ISO date format</h3><pre>\n";
77
+    print "<h3>Testing ISO date format</h3><pre>\n";
78 78
 
79
-	$t = time();
80
-	$date = iso8601_encode($t);
81
-	print "Now is $t --> $date\n";
82
-	print "Or in UTC, that is " . iso8601_encode($t, 1) . "\n";
83
-	$tb = iso8601_decode($date);
84
-	print "That is to say $date --> $tb\n";
85
-	print "Which comes out at " . iso8601_encode($tb) . "\n";
86
-	print "Which was the time in UTC at " . iso8601_decode($date, 1) . "\n";
79
+    $t = time();
80
+    $date = iso8601_encode($t);
81
+    print "Now is $t --> $date\n";
82
+    print "Or in UTC, that is " . iso8601_encode($t, 1) . "\n";
83
+    $tb = iso8601_decode($date);
84
+    print "That is to say $date --> $tb\n";
85
+    print "Which comes out at " . iso8601_encode($tb) . "\n";
86
+    print "Which was the time in UTC at " . iso8601_decode($date, 1) . "\n";
87 87
 
88
-	print "</pre>\n";
88
+    print "</pre>\n";
89 89
 ?>
90 90
 </body>
91 91
 </html>
Please login to merge, or discard this patch.
demo/client/comment.php 1 patch
Indentation   +88 added lines, -88 removed lines patch added patch discarded remove patch
@@ -6,41 +6,41 @@  discard block
 block discarded – undo
6 6
 // define some utility functions
7 7
 function bomb() { print "</body></html>"; exit(); }
8 8
 function dispatch($client, $method, $args) {
9
-	$msg=new xmlrpcmsg($method, $args);
10
-	$resp=$client->send($msg);
11
-	if (!$resp) { print "<p>IO error: ".$client->errstr."</p>"; bomb(); }
12
-	if ($resp->faultCode()) {
13
-		print "<p>There was an error: " . $resp->faultCode() . " " .
14
-			$resp->faultString() . "</p>";
15
-		bomb();
16
-	}
17
-	return php_xmlrpc_decode($resp->value());
9
+    $msg=new xmlrpcmsg($method, $args);
10
+    $resp=$client->send($msg);
11
+    if (!$resp) { print "<p>IO error: ".$client->errstr."</p>"; bomb(); }
12
+    if ($resp->faultCode()) {
13
+        print "<p>There was an error: " . $resp->faultCode() . " " .
14
+            $resp->faultString() . "</p>";
15
+        bomb();
16
+    }
17
+    return php_xmlrpc_decode($resp->value());
18 18
 }
19 19
 
20 20
 // create client for discussion server
21 21
 $dclient=new xmlrpc_client("${mydir}/discuss.php",
22
-													 "xmlrpc.usefulinc.com", 80);
22
+                                                        "xmlrpc.usefulinc.com", 80);
23 23
 
24 24
 // check if we're posting a comment, and send it if so
25 25
 @$storyid=$_POST["storyid"];
26 26
 if ($storyid) {
27 27
 
28 28
 
29
-	//	print "Returning to " . $HTTP_POST_VARS["returnto"];
29
+    //	print "Returning to " . $HTTP_POST_VARS["returnto"];
30 30
 
31
-	$res=dispatch($dclient, "discuss.addComment",
32
-								array(new xmlrpcval($storyid),
33
-											new xmlrpcval(stripslashes
34
-																		(@$_POST["name"])),
35
-											new xmlrpcval(stripslashes
36
-																		(@$_POST["commenttext"]))));
31
+    $res=dispatch($dclient, "discuss.addComment",
32
+                                array(new xmlrpcval($storyid),
33
+                                            new xmlrpcval(stripslashes
34
+                                                                        (@$_POST["name"])),
35
+                                            new xmlrpcval(stripslashes
36
+                                                                        (@$_POST["commenttext"]))));
37 37
 
38
-	// send the browser back to the originating page
39
-	Header("Location: ${mydir}/comment.php?catid=" .
40
-				 $_POST["catid"] . "&chanid=" .
41
-				 $_POST["chanid"] . "&oc=" .
42
-				 $_POST["catid"]);
43
-	exit(0);
38
+    // send the browser back to the originating page
39
+    Header("Location: ${mydir}/comment.php?catid=" .
40
+                    $_POST["catid"] . "&chanid=" .
41
+                    $_POST["chanid"] . "&oc=" .
42
+                    $_POST["catid"]);
43
+    exit(0);
44 44
 }
45 45
 
46 46
 // now we've got here, we're exploring the story store
@@ -52,17 +52,17 @@  discard block
 block discarded – undo
52 52
 <?php
53 53
 @$catid=$_GET["catid"];
54 54
 if (@$_GET["oc"]==$catid)
55
-	@$chanid=$_GET["chanid"];
55
+    @$chanid=$_GET["chanid"];
56 56
 else
57
-	$chanid=0;
57
+    $chanid=0;
58 58
 
59 59
 $client=new xmlrpc_client("/meerkat/xml-rpc/server.php",
60
-													"www.oreillynet.com", 80);
60
+                                                    "www.oreillynet.com", 80);
61 61
 
62 62
 if (@$_GET["comment"] &&
63
-		(!@$_GET["cdone"])) {
64
-	// we're making a comment on a story,
65
-	// so display a comment form
63
+        (!@$_GET["cdone"])) {
64
+    // we're making a comment on a story,
65
+    // so display a comment form
66 66
 ?>
67 67
 <h3>Make a comment on the story</h3>
68 68
 <form method="post">
@@ -80,54 +80,54 @@  discard block
 block discarded – undo
80 80
 </form>
81 81
 <?php
82 82
 } else {
83
-	$categories=dispatch($client, "meerkat.getCategories", array());
84
-	if ($catid)
85
-		$sources = dispatch($client, "meerkat.getChannelsByCategory",
86
-												array(new xmlrpcval($catid, "int")));
87
-	if ($chanid) {
88
-		$stories = dispatch($client, "meerkat.getItems",
89
-					array(new xmlrpcval(
90
-						array(
91
-							"channel" => new xmlrpcval($chanid, "int"),
92
-							"ids" => new xmlrpcval(1, "int"),
93
-							"descriptions" => new xmlrpcval(200, "int"),
94
-							"num_items" => new xmlrpcval(5, "int"),
95
-							"dates" => new xmlrpcval(0, "int")
96
-						), "struct")));
97
-	}
83
+    $categories=dispatch($client, "meerkat.getCategories", array());
84
+    if ($catid)
85
+        $sources = dispatch($client, "meerkat.getChannelsByCategory",
86
+                                                array(new xmlrpcval($catid, "int")));
87
+    if ($chanid) {
88
+        $stories = dispatch($client, "meerkat.getItems",
89
+                    array(new xmlrpcval(
90
+                        array(
91
+                            "channel" => new xmlrpcval($chanid, "int"),
92
+                            "ids" => new xmlrpcval(1, "int"),
93
+                            "descriptions" => new xmlrpcval(200, "int"),
94
+                            "num_items" => new xmlrpcval(5, "int"),
95
+                            "dates" => new xmlrpcval(0, "int")
96
+                        ), "struct")));
97
+    }
98 98
 ?>
99 99
 <form>
100 100
 <p>Subject area:<br />
101 101
 <select name="catid">
102 102
 <?php
103
-	if (!$catid)
104
-		print "<option value=\"0\">Choose a category</option>\n";
105
-	while(list($k,$v) = each($categories)) {
106
-		print "<option value=\"" . $v['id'] ."\"";
107
-		if ($v['id']==$catid) print " selected=\"selected\"";
108
-			print ">". $v['title'] . "</option>\n";
109
-	}
103
+    if (!$catid)
104
+        print "<option value=\"0\">Choose a category</option>\n";
105
+    while(list($k,$v) = each($categories)) {
106
+        print "<option value=\"" . $v['id'] ."\"";
107
+        if ($v['id']==$catid) print " selected=\"selected\"";
108
+            print ">". $v['title'] . "</option>\n";
109
+    }
110 110
 ?>
111 111
 </select></p>
112 112
 <?php
113
-	if ($catid) {
113
+    if ($catid) {
114 114
 ?>
115 115
 <p>News source:<br />
116 116
 <select name="chanid">
117 117
 <?php
118
-		if (!$chanid)
119
-			print "<option value=\"0\">Choose a source</option>\n";
120
-		while(list($k,$v) = each($sources)) {
121
-			print "<option value=\"" . $v['id'] ."\"";
122
-			if ($v['id']==$chanid) print "\" selected=\"selected\"";
123
-			print ">". $v['title'] . "</option>\n";
124
-		}
118
+        if (!$chanid)
119
+            print "<option value=\"0\">Choose a source</option>\n";
120
+        while(list($k,$v) = each($sources)) {
121
+            print "<option value=\"" . $v['id'] ."\"";
122
+            if ($v['id']==$chanid) print "\" selected=\"selected\"";
123
+            print ">". $v['title'] . "</option>\n";
124
+        }
125 125
 ?>
126 126
 </select>
127 127
 </p>
128 128
 
129 129
 <?php
130
-		} // end if ($catid)
130
+        } // end if ($catid)
131 131
 ?>
132 132
 
133 133
 <p><input type="submit" value="Update" /></p>
@@ -135,43 +135,43 @@  discard block
 block discarded – undo
135 135
 </form>
136 136
 
137 137
 <?php
138
-	 if ($chanid) {
138
+        if ($chanid) {
139 139
 ?>
140 140
 
141 141
 <h2>Stories available</h2>
142 142
 <table>
143 143
 <?php
144
-	 while(list($k,$v) = each($stories)) {
145
-		 print "<tr>";
146
-		 print "<td><b>" . $v['title'] . "</b><br />";
147
-		 print $v['description'] . "<br />";
148
-		 print "<em><a target=\"_blank\" href=\"" .
149
-			 $v['link'] . "\">Read full story</a> ";
150
-		 print "<a href=\"comment.php?catid=${catid}&chanid=${chanid}&" .
151
-			 "oc=${oc}&comment=" . $v['id'] . "\">Comment on this story</a>";
152
-		 print "</em>";
153
-		 print "</td>";
154
-		 print "</tr>\n";
155
-		 // now look for existing comments
156
-		 $res=dispatch($dclient, "discuss.getComments",
157
-							array(new xmlrpcval($v['id'])));
158
-		 if (sizeof($res)>0) {
159
-			 print "<tr><td bgcolor=\"#dddddd\"><p><b><i>" .
160
-				 "Comments on this story:</i></b></p>";
161
-			 for($i=0; $i<sizeof($res); $i++) {
162
-				 $s=$res[$i];
163
-				 print "<p><b>From:</b> " . htmlentities($s['name']) . "<br />";
164
-				 print "<b>Comment:</b> " . htmlentities($s['comment']) . "</p>";
165
-			 }
166
-			 print "</td></tr>\n";
167
-		 }
168
-		 print "<tr><td><hr /></td></tr>\n";
169
-	 }
144
+        while(list($k,$v) = each($stories)) {
145
+            print "<tr>";
146
+            print "<td><b>" . $v['title'] . "</b><br />";
147
+            print $v['description'] . "<br />";
148
+            print "<em><a target=\"_blank\" href=\"" .
149
+                $v['link'] . "\">Read full story</a> ";
150
+            print "<a href=\"comment.php?catid=${catid}&chanid=${chanid}&" .
151
+                "oc=${oc}&comment=" . $v['id'] . "\">Comment on this story</a>";
152
+            print "</em>";
153
+            print "</td>";
154
+            print "</tr>\n";
155
+            // now look for existing comments
156
+            $res=dispatch($dclient, "discuss.getComments",
157
+                            array(new xmlrpcval($v['id'])));
158
+            if (sizeof($res)>0) {
159
+                print "<tr><td bgcolor=\"#dddddd\"><p><b><i>" .
160
+                    "Comments on this story:</i></b></p>";
161
+                for($i=0; $i<sizeof($res); $i++) {
162
+                    $s=$res[$i];
163
+                    print "<p><b>From:</b> " . htmlentities($s['name']) . "<br />";
164
+                    print "<b>Comment:</b> " . htmlentities($s['comment']) . "</p>";
165
+                }
166
+                print "</td></tr>\n";
167
+            }
168
+            print "<tr><td><hr /></td></tr>\n";
169
+        }
170 170
 ?>
171 171
 </table>
172 172
 
173 173
 <?php
174
-		} // end if ($chanid)
174
+        } // end if ($chanid)
175 175
 } // end if comment
176 176
 ?>
177 177
 <hr />
Please login to merge, or discard this patch.