LicenseManager.hh 5.21 KB
Newer Older
1
/*===========================================================================*\
Jan Möbius's avatar
Jan Möbius committed
2 3
*                                                                            *
*                              OpenFlipper                                   *
Jan Möbius's avatar
Jan Möbius committed
4
*      Copyright (C) 2001-2011 by Computer Graphics Group, RWTH Aachen       *
Jan Möbius's avatar
Jan Möbius committed
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
*                           www.openflipper.org                              *
*                                                                            *
*--------------------------------------------------------------------------- *
*  This file is part of OpenFlipper.                                         *
*                                                                            *
*  OpenFlipper 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 3 of            *
*  the License, or (at your option) any later version with the               *
*  following exceptions:                                                     *
*                                                                            *
*  If other files instantiate templates or use macros                        *
*  or inline functions from this file, or you compile this file and          *
*  link it with other files to produce an executable, this file does         *
*  not by itself cause the resulting executable to be covered by the         *
*  GNU Lesser General Public License. This exception does not however        *
*  invalidate any other reasons why the executable file might be             *
*  covered by the GNU Lesser General Public License.                         *
*                                                                            *
*  OpenFlipper 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 LesserGeneral Public           *
*  License along with OpenFlipper. If not,                                   *
*  see <http://www.gnu.org/licenses/>.                                       *
*                                                                            *
33 34 35
\*===========================================================================*/

/*===========================================================================*\
Jan Möbius's avatar
Jan Möbius committed
36 37 38 39 40
*                                                                            *
*   $Revision$                                                       *
*   $LastChangedBy$                                                *
*   $Date$                     *
*                                                                            *
41
\*===========================================================================*/
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57




//
// C++ Interface: SecurityInterface
//
// Description:
//
//
// Author: Jan Moebius <jan_moebius@web.de>, (C) 2007
//

#ifndef LICENSEMANAGER_HH
#define LICENSEMANAGER_HH

Jan Möbius's avatar
Jan Möbius committed
58 59 60 61 62 63
#include <OpenFlipper/BasePlugin/SecurityInterface.hh>

/** The salt file has to be provided for each plugin. It can be the same
  for all plugins. See example for details on how this file has to be setup
*/
#include "salt.hh"
64

Jan Möbius's avatar
Jan Möbius committed
65
class LicenseManager : public QObject, SecurityInterface  {
66 67 68 69 70 71 72 73 74 75 76

Q_OBJECT
Q_INTERFACES(SecurityInterface)

  public:

    virtual ~LicenseManager();
    LicenseManager();

  public :

Jan Möbius's avatar
Jan Möbius committed
77 78 79
    /** This function is overloaded and will not allow to unblock signals
        if the plugin is not authenticated
    */
80
    void blockSignals( bool _state);
Jan Möbius's avatar
Jan Möbius committed
81 82 83
    
    /** Return if the plugin has successfully passed the authentication 
    */
84 85 86
    bool authenticated();

  public slots:
Jan Möbius's avatar
Jan Möbius committed
87 88 89 90
    /** Call this function for plugin authentication. If it returns true,
        the authentication has been successfull. Otherwise the core will 
        stop loading the plugin. Additionally the plugin will make itself
        unusable by not allowing any signal slot connections.
Jan Möbius's avatar
Jan Möbius committed
91 92
        
        @param _authstring String returned, containing hashed license request, if something went wrong or no valid license available.
Jan Möbius's avatar
Jan Möbius committed
93
    */
94 95 96 97 98
    bool authenticate();
    
    /** if authenticate returns false, this string will containe the license information
    */
    QString licenseError();
99 100

  private:
Jan Möbius's avatar
Jan Möbius committed
101 102 103 104
    /** This is used to get the plugins Name from derived classes
        The glugin name is the usual name of the glugin
    */
    virtual QString name() = 0;
105

Jan Möbius's avatar
Jan Möbius committed
106 107 108
    /** This function is special to the LicenseManager. It is used to
        find the plugin when checking its hash value
    */
109 110
    virtual QString pluginFileName();

Jan Möbius's avatar
Jan Möbius committed
111 112
    /// This flag is true if authentication was successfull
    bool authenticated_;
113 114 115
    
    /// License information string
    QString authstring_;
Jan Möbius's avatar
Jan Möbius committed
116

117 118

  protected :
Jan Möbius's avatar
Jan Möbius committed
119 120 121 122
    /** This function is overloaded in the security interface. If the
        plugin is not authenticated, all connections will be automatically
        removed again.
    */
123 124 125 126 127
    void connectNotify ( const char * /*signal*/ );

};

#endif // LICENSEMANAGER_HH