LicenseManager.hh 4.88 KB
Newer Older
1
/*===========================================================================*\
Jan Möbius's avatar
Jan Möbius committed
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
*                                                                            *
*                              OpenFlipper                                   *
*      Copyright (C) 2001-2010 by Computer Graphics Group, RWTH Aachen       *
*                           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 65 66 67 68 69 70 71 72 73 74 75 76

class LicenseManager : public QObject, SecurityInterface  {

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 91
    /** 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.
    */
92 93 94
    bool authenticate();

  private:
Jan Möbius's avatar
Jan Möbius committed
95 96 97 98
    /** 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;
99

Jan Möbius's avatar
Jan Möbius committed
100 101 102
    /** This function is special to the LicenseManager. It is used to
        find the plugin when checking its hash value
    */
103 104
    virtual QString pluginFileName();

Jan Möbius's avatar
Jan Möbius committed
105 106 107
    /// This flag is true if authentication was successfull
    bool authenticated_;

108 109

  protected :
Jan Möbius's avatar
Jan Möbius committed
110 111 112 113
    /** This function is overloaded in the security interface. If the
        plugin is not authenticated, all connections will be automatically
        removed again.
    */
114 115 116 117 118
    void connectNotify ( const char * /*signal*/ );

};

#endif // LICENSEMANAGER_HH