Jan Möbius committed Aug 05, 2009 1 /*===========================================================================*\  Jan Möbius committed Nov 25, 2010 2 3 * * * OpenFlipper *  Jan Möbius committed Jan 26, 2011 4 * Copyright (C) 2001-2011 by Computer Graphics Group, RWTH Aachen *  Jan Möbius committed Nov 25, 2010 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 . * * *  Jan Möbius committed Aug 05, 2009 33 34 35 \*===========================================================================*/ /*===========================================================================*\  Jan Möbius committed Nov 25, 2010 36 37 38 39 40 * * * $Revision$ * * $LastChangedBy$ * * $Date$ * * *  Jan Möbius committed Aug 05, 2009 41 \*===========================================================================*/  Jan Möbius committed Jul 27, 2009 42 43 44 45  #ifndef LICENSEMANAGER_HH #define LICENSEMANAGER_HH  Jan Möbius committed Jul 28, 2009 46 47 #include  Jan Möbius committed Mar 16, 2011 48 49 50 51 52 53 /** \file LicenseManager.hh * * This interface is used to add copy protection to plugins. \ref securityInterfacePage * */  Jan Möbius committed May 05, 2011 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"  Jan Möbius committed Mar 16, 2011 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 committed Jan 05, 2011 67 class LicenseManager : public QObject, SecurityInterface {  Jan Möbius committed Jul 27, 2009 68 69 70 71 72 73 74 75 76 77 78  Q_OBJECT Q_INTERFACES(SecurityInterface) public: virtual ~LicenseManager(); LicenseManager(); public :  Jan Möbius committed Jul 28, 2009 79  /** This function is overloaded and will not allow to unblock signals  Jan Möbius committed Mar 16, 2011 80  if the plugin is not authenticated.  Jan Möbius committed Jul 28, 2009 81  */  Jan Möbius committed Jul 27, 2009 82  void blockSignals( bool _state);  Jan Möbius committed Jul 28, 2009 83   Jan Möbius committed Mar 16, 2011 84  /** Return if the plugin has successfully passed the authentication.  Jan Möbius committed Jul 28, 2009 85  */  Jan Möbius committed Jul 27, 2009 86 87 88  bool authenticated(); public slots:  Jan Möbius committed Jul 28, 2009 89  /** Call this function for plugin authentication. If it returns true,  Jan Möbius committed Mar 16, 2011 90  the authentication has been successful. Otherwise the core will  Jan Möbius committed Jul 28, 2009 91 92  stop loading the plugin. Additionally the plugin will make itself unusable by not allowing any signal slot connections.  Jan Möbius committed Mar 16, 2011 93   Jan Möbius committed Jul 28, 2009 94  */  Jan Möbius committed Jan 05, 2011 95 96  bool authenticate();  Jan Möbius committed Mar 16, 2011 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.  Jan Möbius committed Jan 05, 2011 99 100  */ QString licenseError();  Jan Möbius committed Jul 27, 2009 101 102  private:  Jan Möbius committed Jul 28, 2009 103  /** This is used to get the plugins Name from derived classes  Jan Möbius committed Mar 16, 2011 104  The plugin name is the usual name of the plugin  Jan Möbius committed Jul 28, 2009 105 106  */ virtual QString name() = 0;  Jan Möbius committed Jul 27, 2009 107   Jan Möbius committed Jul 28, 2009 108  /** This function is special to the LicenseManager. It is used to  Jan Möbius committed Mar 16, 2011 109  find the plugin when checking its hash value.  Jan Möbius committed Jul 28, 2009 110  */  Jan Möbius committed Jul 27, 2009 111 112  virtual QString pluginFileName();  Jan Möbius committed Mar 16, 2011 113  /// This flag is true if authentication was successful  Jan Möbius committed Jul 28, 2009 114  bool authenticated_;  Jan Möbius committed Jan 05, 2011 115 116 117  /// License information string QString authstring_;  Jan Möbius committed Jul 28, 2009 118   Jan Möbius committed Jul 27, 2009 119 120  protected :  Jan Möbius committed Jul 28, 2009 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. */  Jan Möbius committed Mar 16, 2011 125  void connectNotify ( const char * signal );  Jan Möbius committed Jul 27, 2009 126 127 128  };  Jan Möbius committed Mar 16, 2011 129 #endif // LICENSEMANAGER_HH