The internal header directory conflicted with in-source builds causing a build failure. This is fixed by renaming the internal header directory to something other than maxscale. The renaming pointed out a few problems in a couple of source files that appeared to include internal headers when the headers were in fact public headers. Fixed maxctrl in-source builds by making the copying of the sources optional.
		
			
				
	
	
		
			122 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			122 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#pragma once
 | 
						|
/*
 | 
						|
 * Copyright (c) 2016 MariaDB Corporation Ab
 | 
						|
 *
 | 
						|
 * Use of this software is governed by the Business Source License included
 | 
						|
 * in the LICENSE.TXT file and at www.mariadb.com/bsl11.
 | 
						|
 *
 | 
						|
 * Change Date: 2020-01-01
 | 
						|
 *
 | 
						|
 * On the date above, in accordance with the Business Source License, use
 | 
						|
 * of this software will be governed by version 2 or later of the General
 | 
						|
 * Public License.
 | 
						|
 */
 | 
						|
 | 
						|
#include <maxscale/cppdefs.hh>
 | 
						|
 | 
						|
#include <string>
 | 
						|
#include <microhttpd.h>
 | 
						|
 | 
						|
#include <maxscale/thread.h>
 | 
						|
 | 
						|
class Client
 | 
						|
{
 | 
						|
    Client(const Client&);
 | 
						|
    Client& operator=(const Client&);
 | 
						|
 | 
						|
public:
 | 
						|
 | 
						|
    enum state
 | 
						|
    {
 | 
						|
        OK,
 | 
						|
        FAILED,
 | 
						|
        INIT,
 | 
						|
        CLOSED
 | 
						|
    };
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief Create a new client
 | 
						|
     *
 | 
						|
     * @param connection The connection handle for this client
 | 
						|
     */
 | 
						|
    Client(MHD_Connection *connection):
 | 
						|
        m_connection(connection),
 | 
						|
        m_state(INIT)
 | 
						|
    {
 | 
						|
    }
 | 
						|
 | 
						|
    ~Client()
 | 
						|
    {
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief Process a client request
 | 
						|
     *
 | 
						|
     * This function can be called multiple times if a PUT/POST/PATCH
 | 
						|
     * uploads a large amount of data.
 | 
						|
     *
 | 
						|
     * @param url    Requested URL
 | 
						|
     * @param method Request method
 | 
						|
     * @param data   Pointer to request data
 | 
						|
     * @param size   Size of request data
 | 
						|
     *
 | 
						|
     * @return MHD_YES on success, MHD_NO on error
 | 
						|
     */
 | 
						|
    int process(std::string url, std::string method, const char* data, size_t *size);
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief Authenticate the client
 | 
						|
     *
 | 
						|
     * @param connection The MHD connection object
 | 
						|
     * @param url        Requested URL
 | 
						|
     * @param method     The request method
 | 
						|
     *
 | 
						|
     * @return True if authentication was successful
 | 
						|
     */
 | 
						|
    bool auth(MHD_Connection* connection, const char* url, const char* method);
 | 
						|
 | 
						|
    /**
 | 
						|
     * Get client state
 | 
						|
     *
 | 
						|
     * @return The client state
 | 
						|
     */
 | 
						|
    state get_state() const
 | 
						|
    {
 | 
						|
        return m_state;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Close the client connection
 | 
						|
     *
 | 
						|
     * All further requests will be rejected immediately
 | 
						|
     */
 | 
						|
    void close()
 | 
						|
    {
 | 
						|
        m_state = CLOSED;
 | 
						|
    }
 | 
						|
 | 
						|
private:
 | 
						|
    MHD_Connection* m_connection; /**< Connection handle */
 | 
						|
    std::string     m_data;       /**< Uploaded data */
 | 
						|
    state           m_state;      /**< Client state */
 | 
						|
};
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief Start the administrative interface
 | 
						|
 *
 | 
						|
 * @return True if the interface was successfully started
 | 
						|
 */
 | 
						|
bool mxs_admin_init();
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief Shutdown the administrative interface
 | 
						|
 */
 | 
						|
void mxs_admin_shutdown();
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief Check if admin interface uses HTTPS protocol
 | 
						|
 *
 | 
						|
 * @return True if HTTPS is enabled
 | 
						|
 */
 | 
						|
bool mxs_admin_https_enabled();
 |