diff -r 000000000000 -r 7f85d04be362 upnpsharing/upnpsecurity/inc/upnpsecaccesscontroller.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/upnpsharing/upnpsecurity/inc/upnpsecaccesscontroller.h Thu Dec 17 08:52:00 2009 +0200 @@ -0,0 +1,212 @@ +/** @file + * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Nokia Corporation - initial contribution. + * + * Contributors: + * + * Description : Access control interface + * + */ + +#ifndef UPNPSECACCESSCONTROLLER_H +#define UPNPSECACCESSCONTROLLER_H + +// INCLUDES +#include + +// FORWARD DECLARATIONS +class RUpnpSecurityManagerClientSession; +class TInetAddr; + +// ENUMS +enum TAccessType + { + ENoneAllowed, + EAddressAllowed, + EFileAllowed, + EFileAndAddressAllowed + }; + +/** + * Access controller class + * + * @lib upnpsecurity.lib + * @since S60 3.0 + */ +class CUpnpSecAccessController : public CBase + { + +public: + // Constructors and destructor. + + /** + * Two-phased constructor. + */ + IMPORT_C static CUpnpSecAccessController* NewL(); + + /** + * Destructor. + */ + IMPORT_C virtual ~CUpnpSecAccessController(); + +public: + // S60 UpnpMediaServer security manager activation methods. + + /** + * Enables the security plugin in Media Server. + * + * @since S60 3.1 + */ + IMPORT_C static void EnableMediaServerSecurityL(); + + /** + * Disables the security plugin in Media Server. + * + * @since S60 3.1 + */ + IMPORT_C static void DisableMediaServerSecurityL(); + + /** + * Returns the status of the Media Server security plugin. + * + * @since S60 3.1 + * @return TBool indicating the current status of the MS security + */ + IMPORT_C static TBool IsMediaServerSecurityEnabledL(); + +public: + // Business logic methods for handling the whitelists. + + /** + * Adds allowed file, so that no authorization is requested when + * client gets this file. + * @since S60 3.0 + * @param aFileName reference to allowed file + * @return TInt indicating the status of operation + */ + IMPORT_C TInt AddAllowedFile( const TDesC& aFileName ); + + /** + * Removes file from white list. + * @since S60 3.0 + * @param aFileName reference to file to be removed + * @return TInt indicating the status of operation + */ + IMPORT_C TInt RemoveAllowedFile( const TDesC& aFileName ); + + /** + * Adds allowed IP address, so that no authorization is requested + * when client with that IP address makes connection request. + * @since S60 3.0 + * @param aIpAddress reference to allowed IP address + * @return TInt indicating the status of operation + */ + IMPORT_C TInt AddAllowedAddress( const TInetAddr& aIpAddress ); + + /** + * Removes allowed IP address. + * @since S60 3.0 + * @param aIpAddress reference to IP address to be removed + * @return TInt indicating the status of operation + */ + IMPORT_C TInt RemoveAllowedAddress( const TInetAddr& aIpAddress ); + + /** + * Removes all allowed files from white list. + * @since S60 3.0 + * @return TInt indicating the status of operation + */ + IMPORT_C TInt ResetFileList(); + + /** + * Removes all allowed IP Addresses from white list. + * @since S60 3.0 + * @return TInt indicating the status of operation + */ + IMPORT_C TInt ResetAddressList(); + +public: + // Business logic methods. + + /** + * Checks if the given IP-address/action/file is authorized. Null + * parameters (filename and/or action name) are allowed. + * + * Leaves with standard e32err error code in case of an error, or + * with KErrAccessDenied if access is not authorized. + * + * @since S60 3.1 + * @param aIpAddress (const TInetAddr&) IP address + * @param aFileName (const TDesC&) filename + * @param aActionName (const TDesC8&) action name + */ + IMPORT_C void CheckAuthorizationL( const TInetAddr& aIpAddress, + const TDesC& aFileName, + const TDesC8& aActionName ); + + /** + * Query user to authorize connection from an IP-address. + * + * Leaves with standard e32err error code in case of an error, or + * with KErrAccessDenied if access is not authorized. + * + * @since S60 3.1 + * @param aIpAddress (const TInetAddr&) reference to IP Address + */ + IMPORT_C void QueryAuthorizationL( const TInetAddr& aIpAddress ); + +private: + // Business logic methods. + + /** + * Set securitymanagersetting to given value + * + * @param aSettingToSet value to set + */ + static void SetSecurityManagerSettingL( const TDesC8& aSettingToSet ); + + /** + * Checks if the requested file is automatically allowed. + * + * @since S60 3.1 + * @param aFileName (const TDesC&) the file that request concerns + * @return TBool access request status + */ + TBool IsAllowedFile( const TDesC& aFileName ); + + /** + * Checks if the requested action is automatically allowed. + * + * @since S60 3.1 + * @param aActionName (const TDesC8&) action name that request concerns + * @return TBool access request status + */ + TBool IsAllowedAction( const TDesC8& aActionName ); + +private: + // Constructors + + /** + * Second-phase constructor. + */ + void ConstructL(); + + /** + * C++ default constructor. + */ + CUpnpSecAccessController(); + +private: + // Member variables + RUpnpSecurityManagerClientSession* iSecurityManagerClientSession; + }; + +#endif // UPNPSECACCESSCONTROLLER_H +// End of File