LicenseManagerActive.hh 5.46 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

#ifndef LICENSEMANAGER_HH
#define LICENSEMANAGER_HH

Jan Möbius's avatar
Jan Möbius committed
46 47
#include <OpenFlipper/BasePlugin/SecurityInterface.hh>

48 49 50 51 52 53
/** \file LicenseManager.hh
*
* This interface is used to add copy protection to plugins. \ref securityInterfacePage
*
*/

54 55 56 57 58
/* 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"

59 60 61 62 63 64 65 66
/** \brief License management base class
 *
 * See \ref securityInterfacePage for Details on how to use it.
 *
 * The class is used by plugins to integrate license management. It will check the license,
 * generate license requests and prevent the plugin from loading if an invalid license or no license
 * is found.
 */
Jan Möbius's avatar
Jan Möbius committed
67
class LicenseManager : public QObject, SecurityInterface  {
68 69 70 71 72 73 74 75 76 77 78

Q_OBJECT
Q_INTERFACES(SecurityInterface)

  public:

    virtual ~LicenseManager();
    LicenseManager();

  public :

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

  public slots:
Jan Möbius's avatar
Jan Möbius committed
89
    /** Call this function for plugin authentication. If it returns true,
90
        the authentication has been successful. Otherwise the core will
Jan Möbius's avatar
Jan Möbius committed
91 92
        stop loading the plugin. Additionally the plugin will make itself
        unusable by not allowing any signal slot connections.
93

Jan Möbius's avatar
Jan Möbius committed
94
    */
95 96
    bool authenticate();
    
97 98
    /** if authenticate returns false, this string will contain the license information required
     *  to generate a license request and the error that caused the failure.
99 100
    */
    QString licenseError();
101 102

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

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

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

119 120

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

};

129
#endif // LICENSEMANAGER_HH