upnpsharing/upnpsecurity/inc/upnpsecaccesscontroller.h
changeset 0 7f85d04be362
--- /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 <e32base.h>
+
+// 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