LicenseManager.hh 3.14 KB
Newer Older
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
//=============================================================================
//
//                               OpenFlipper
//        Copyright (C) 2008 by Computer Graphics Group, RWTH Aachen
//                           www.openflipper.org
//
//-----------------------------------------------------------------------------
//
//                                License
//
//  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.
//
//  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 Lesser General Public License
//  along with OpenFlipper.  If not, see <http://www.gnu.org/licenses/>.
//
//-----------------------------------------------------------------------------
//
//   $Revision: 4736 $
//   $Author: kremer $
//   $Date: 2009-02-10 11:34:14 +0100 (Di, 10. Feb 2009) $
//
//=============================================================================




//
// 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
47
48
49
50
51
52
#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"
53
54
55
56
57
58
59
60
61
62
63
64
65

class LicenseManager : public QObject, SecurityInterface  {

Q_OBJECT
Q_INTERFACES(SecurityInterface)

  public:

    virtual ~LicenseManager();
    LicenseManager();

  public :

Jan Möbius's avatar
Jan Möbius committed
66
67
68
    /** This function is overloaded and will not allow to unblock signals
        if the plugin is not authenticated
    */
69
    void blockSignals( bool _state);
Jan Möbius's avatar
Jan Möbius committed
70
71
72
    
    /** Return if the plugin has successfully passed the authentication 
    */
73
74
75
    bool authenticated();

  public slots:
Jan Möbius's avatar
Jan Möbius committed
76
77
78
79
80
    /** 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.
    */
81
82
83
    bool authenticate();

  private:
Jan Möbius's avatar
Jan Möbius committed
84
85
86
87
    /** 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;
88

Jan Möbius's avatar
Jan Möbius committed
89
90
91
    /** This function is special to the LicenseManager. It is used to
        find the plugin when checking its hash value
    */
92
93
    virtual QString pluginFileName();

Jan Möbius's avatar
Jan Möbius committed
94
95
96
    /// This flag is true if authentication was successfull
    bool authenticated_;

97
98

  protected :
Jan Möbius's avatar
Jan Möbius committed
99
100
101
102
    /** This function is overloaded in the security interface. If the
        plugin is not authenticated, all connections will be automatically
        removed again.
    */
103
104
105
106
107
    void connectNotify ( const char * /*signal*/ );

};

#endif // LICENSEMANAGER_HH