This file is indexed.

/usr/share/php/XML/RPC2/Backend.php is in php-xml-rpc2 1.1.3-0.1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
<?php

/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4 foldmethod=marker: */

// LICENSE AGREEMENT. If folded, press za here to unfold and read license {{{ 

/**
* +-----------------------------------------------------------------------------+
* | Copyright (c) 2004-2006 Sergio Goncalves Carvalho                                |
* +-----------------------------------------------------------------------------+
* | This file is part of XML_RPC2.                                              |
* |                                                                             |
* | XML_RPC2 is free software; you can redistribute it and/or modify            |
* | it under the terms of the GNU Lesser General Public License as published by |
* | the Free Software Foundation; either version 2.1 of the License, or         |
* | (at your option) any later version.                                         |
* |                                                                             |
* | XML_RPC2 is distributed in the hope that it will be useful,                 |
* | but WITHOUT ANY WARRANTY; without even the implied warranty of              |
* | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               |
* | GNU Lesser General Public License for more details.                         |
* |                                                                             |
* | You should have received a copy of the GNU Lesser General Public License    |
* | along with XML_RPC2; if not, write to the Free Software                     |
* | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA                    |
* | 02111-1307 USA                                                              |
* +-----------------------------------------------------------------------------+
* | Author: Sergio Carvalho <sergio.carvalho@portugalmail.com>                  |
* +-----------------------------------------------------------------------------+
*
* @category   XML
* @package    XML_RPC2
* @author     Sergio Carvalho <sergio.carvalho@portugalmail.com>  
* @copyright  2004-2006 Sergio Carvalho
* @license    http://www.gnu.org/copyleft/lesser.html  LGPL License 2.1
* @version    CVS: $Id$
* @link       http://pear.php.net/package/XML_RPC2
*/

// }}}

// dependencies {{{
require_once 'XML/RPC2/Exception.php';
require_once 'PEAR.php';
// }}}

/**
 * XML_RPC Backend class. The backend is responsible for the actual execution of 
 * a request, as well as payload encoding and decoding. 
 *
 * The only external usage of this class is when explicitely setting the backend, as in
 * <code>
 *  XML_RPC2_Backend::setBackend('php');
 *  // or
 *  XML_RPC2_Backend::setBackend('xmlrpcext');
 * </code>
 * Note that if you do not explicitely set the backend, it will be selected automatically.
 *
 * Internally, this class provides methods to obtain the relevant backend classes:
 *  - The server class
 *  - The client class
 *  - The value class
 * 
 * @category   XML
 * @package    XML_RPC2
 * @author     Sergio Carvalho <sergio.carvalho@portugalmail.com>  
 * @copyright  2004-2006 Sergio Carvalho
 * @license    http://www.gnu.org/copyleft/lesser.html  LGPL License 2.1
 * @link       http://pear.php.net/package/XML_RPC2
 */
abstract class XML_RPC2_Backend 
{

    // {{{ properties
    
    /**
     * current backend
     *
     * @var string
     */
    protected static $currentBackend;
    
    // }}}
    // {{{ setBackend()
    
    /**
     * Backend setter. 
     * 
     * Currently, two backends exist: 'php' and 'XMLRPCext'. 
     * The PHP backend has no external dependencies, while the xmlrpcext
     * requires the xmlrpc extension. 
     *
     * The XMLRPCext backend is quite faster, and will be automatically 
     * selected when no explicit backend has been set and the extension
     * is available.
     *
     * @param string The backend to select. Either 'php' or 'XMLRPCext'.
     */ 
    public static function setBackend($backend)
    {
        $backend = ucfirst(strtolower($backend));
        if (
            $backend != 'Php' && 
            $backend != 'Xmlrpcext'
           ) {
            throw new XML_RPC2_Exception(sprintf('Backend %s does not exist', $backend));
        }       
        if (
            $backend == 'Xmlrpcext' &&
            !function_exists('xmlrpc_server_create') &&
            !( PEAR::loadExtension('php_xmlrpc') ) 
           ) {
            throw new XML_RPC2_Exception('Unable to load xmlrpc extension.');
        }     
        self::$currentBackend = $backend;
    }
    
    // }}}
    // {{{ getBackend()
    
    /**
     * Backend getter. 
     * 
     * Return the current backend name. If no backend was previously selected
     * select one and set it.
     *
     * The xmlrpcext backend is preferred, and will be automatically 
     * selected when no explicit backend has been set and the xmlrpc
     * extension exists. If it does not exist, then the php backend is 
     * selected.
     *
     * @return string The current backend
     */ 
    protected static function getBackend()
    {
        if (!isset(self::$currentBackend)) {
            try {
                self::setBackend('XMLRPCext'); // We prefer this one
            } catch (XML_RPC2_Exception $e) {
                // TODO According to PEAR CG logging should occur here
                self::setBackend('php');     // But will settle with this one in case of error
            }
        }
        return self::$currentBackend;
    }
    
    // }}}
    // {{{ getServerClassname()
    
    /**
     * Include the relevant php files for the server class, and return the backend server
     * class name.
     *
     * @return string The Server class name
     */
    public static function getServerClassname() {
        require_once(sprintf('XML/RPC2/Backend/%s/Server.php', self::getBackend()));
        return sprintf('XML_RPC2_Backend_%s_Server', self::getBackend());
    }
    
    // }}}
    // {{{ getClientClassname()
    
    /**
     * Include the relevant php files for the client class, and return the backend client
     * class name.
     *
     * @return string The Client class name
     */
    public static function getClientClassname() {
        require_once(sprintf('XML/RPC2/Backend/%s/Client.php', self::getBackend()));
        return sprintf('XML_RPC2_Backend_%s_Client', self::getBackend());
    }
    
    // }}}
    // {{{ getValueClassname()
        
    /**
     * Include the relevant php files for the value class, and return the backend value
     * class name.
     *
     * @return string The Value class name
     */
    public static function getValueClassname() {
        require_once(sprintf('XML/RPC2/Backend/%s/Value.php', self::getBackend()));
        return sprintf('XML_RPC2_Backend_%s_Value', self::getBackend());
    }
    
    // }}}
    
}