resource: simpleserverHQ supports security PS 85/23585/2
authorPhilippe Coval <philippe.coval@osg.samsung.com>
Fri, 1 Dec 2017 14:12:44 +0000 (15:12 +0100)
committerAshok Babu Channa <ashok.channa@samsung.com>
Wed, 3 Jan 2018 13:26:01 +0000 (13:26 +0000)
By loading credentials and ACL using presistant storage

This was tested on iotivity-1.3.1~RC6 in secured mode

Bug: https://jira.iotivity.org/browse/IOT-2505
Change-Id: If8e2044ae3d8850cc163bca1511de406202b1ab6
Signed-off-by: Philippe Coval <philippe.coval@osg.samsung.com>
resource/examples/simpleclientHQ.cpp
resource/examples/simpleserverHQ.cpp

index 29247ce..447ef88 100644 (file)
@@ -48,6 +48,7 @@ struct dereference_compare
         return *lhs < *rhs;
     }
 };
+static const char* SVR_DB_FILE_NAME = "./oic_svr_db_client.dat";
 typedef std::set<std::shared_ptr<OCResource>, dereference_compare> DiscoveredResourceSet;
 
 DiscoveredResourceSet discoveredResources;
@@ -390,6 +391,19 @@ void PrintUsage()
     std::cout << "   ConnectivityType : 0 - IP"<< std::endl;
 }
 
+
+static FILE* override_fopen(const char* path, const char* mode)
+{
+    if (0 == strcmp(path, OC_SECURITY_DB_DAT_FILE_NAME))
+    {
+        return fopen(SVR_DB_FILE_NAME, mode);
+    }
+    else
+    {
+        return fopen(path, mode);
+    }
+}
+
 int main(int argc, char* argv[]) {
 
     std::ostringstream requestURI;
@@ -449,12 +463,12 @@ int main(int argc, char* argv[]) {
         return -1;
     }
 
-
+    OCPersistentStorage ps {override_fopen, fread, fwrite, fclose, unlink };
     // Create PlatformConfig object
     PlatformConfig cfg {
         OC::ServiceType::InProc,
         OC::ModeType::Client,
-        nullptr
+        &ps
     };
     
     cfg.QoS = OC::QualityOfService::HighQos;
index 9fce365..9101e71 100644 (file)
@@ -45,6 +45,7 @@ using namespace OC;
 using namespace std;
 namespace PH = std::placeholders;
 
+static const char* SVR_DB_FILE_NAME = "./oic_svr_db_server.dat";
 int gObservation = 0;
 void * ChangeLightRepresentation (void *param);
 
@@ -520,10 +521,20 @@ void PrintUsage()
     std::cout << "   ObserveType : 1 - Observe List of observers\n\n";
 }
 
+static FILE* override_fopen(const char* path, const char* mode)
+{
+    char const * filename = path;
+    if (0 == strcmp(path, OC_SECURITY_DB_DAT_FILE_NAME))
+    {
+        filename = SVR_DB_FILE_NAME;
+    }
+    return fopen(filename, mode);
+}
 
 int main(int argc, char* argv[])
 {
     PrintUsage();
+    OCPersistentStorage ps {override_fopen, fread, fwrite, fclose, unlink };
 
     if (argc == 1)
     {
@@ -548,7 +559,8 @@ int main(int argc, char* argv[])
         OC::ModeType::Server,
         "0.0.0.0", // By setting to "0.0.0.0", it binds to all available interfaces
         0,         // Uses randomly available port
-        OC::QualityOfService::LowQos
+        OC::QualityOfService::LowQos,
+        &ps
     };
 
     OCPlatform::Configure(cfg);