--- /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