Fix deviceid bug
authorsaerome.kim <saerome.kim@samsung.com>
Thu, 4 Jan 2018 07:50:07 +0000 (16:50 +0900)
committersaerome.kim <saerome.kim@samsung.com>
Mon, 2 Jul 2018 10:38:38 +0000 (19:38 +0900)
Currently, deviceid is not applied based on Wi-Fi MAC address.
So, we fix this issue.

Signed-off-by: saerome.kim <saerome.kim@samsung.com>
packaging/d2d-manager.spec
src/d2d-subowner/CMakeLists.txt
src/d2d-subowner/d2ds-subowner.c
src/d2d-subowner/oic_svr_db_d2ds.dat [new file with mode: 0644]
src/d2d-subowner/oic_svr_db_d2ds.json [new file with mode: 0644]

index cbfa8a0b2e93b18a9f6e4af5c5f857171df42d38..54e611e733b9e0a709f0284c9294c10bc4d0e615 100644 (file)
@@ -13,7 +13,6 @@ Source6:    fnm.service
 Source7:    net.fnm.service
 Source8:    d2ds.service
 Source9:    net.d2ds.service
-Source10:    capi-network-familynet.manifest
 
 BuildRequires: cmake
 BuildRequires: pkgconfig(iotivity)
@@ -25,6 +24,7 @@ BuildRequires: pkgconfig(dbus-1)
 BuildRequires: pkgconfig(json-glib-1.0)
 BuildRequires: pkgconfig(uuid)
 BuildRequires: pkgconfig(capi-base-common)
+BuildRequires: pkgconfig(capi-network-wifi-manager)
 BuildRequires: pkgconfig(libtzplatform-config)
 BuildRequires: pkgconfig(aul)
 BuildRequires: pkgconfig(gmock)
@@ -41,22 +41,6 @@ Requires: %{name} = %{version}-%{release}
 %description devel
 This package contains the development files for %{name}.
 
-%package capi
-Summary:  D2D Manager CAPI
-Group:    Network & Connectivity/Other
-Requires: %{name} = %{version}-%{release}
-
-%description capi
-D2D Manager CAPI.
-
-%package capi-devel
-Summary:  D2D Manager CAPI (Development)
-Group:    Network & Connectivity/Other
-Requires: %{name} = %{version}-%{release}
-
-%description capi-devel
-This package contains the development files for %{name} CAPI.
-
 %prep
 %setup -q
 chmod 644 %{SOURCE0}
@@ -68,7 +52,6 @@ chmod 644 %{SOURCE6}
 chmod 644 %{SOURCE7}
 chmod 644 %{SOURCE8}
 chmod 644 %{SOURCE9}
-chmod 644 %{SOURCE10}
 
 cp %{SOURCE2} .
 cp %{SOURCE3} .
@@ -78,7 +61,6 @@ cp %{SOURCE6} .
 cp %{SOURCE7} .
 cp %{SOURCE8} .
 cp %{SOURCE9} .
-cp %{SOURCE10} .
 
 %build
 CFLAGS=$(echo $CFLAGS | sed 's/-O2/-O0/' | sed 's/-O1/-O0/' | sed 's/-Wp,-D_FORTIFY_SOURCE=2//')
@@ -116,24 +98,8 @@ cp %{SOURCE8} %{buildroot}%{_unitdir}/d2ds.service
 cp test/oic_svr_db_client.dat oic_svr_db_subowner_client.dat
 
 %postun
-#%{NETWORK_FW_DATADIR}/oic_amss_db.dat
-#%{NETWORK_FW_DATADIR}/oic_svr_db_client_devowner.dat
-#%{NETWORK_FW_DATADIR}/oic_svr_db_client_directpairing.dat
-#%{NETWORK_FW_DATADIR}/oic_svr_db_client_nondevowner.dat
-%{NETWORK_FW_DATADIR}/oic_svr_db_server_justworks.dat
-#%{NETWORK_FW_DATADIR}/oic_svr_db_randompin_with_empty_deviceid.dat
-#%{NETWORK_FW_DATADIR}/oic_svr_db_server_justworks_default.dat
-#%{NETWORK_FW_DATADIR}/oic_svr_db_server_justworks_protectedDB_plain.dat
-#%{NETWORK_FW_DATADIR}/oic_svr_db_server_mfg.dat
-#%{NETWORK_FW_DATADIR}/oic_svr_db_server_mvjustworks.dat
-#%{NETWORK_FW_DATADIR}/oic_svr_db_server_preconfpin.dat
-#%{NETWORK_FW_DATADIR}/oic_svr_db_client.dat
-#%{NETWORK_FW_DATADIR}/oic_svr_db_server.dat
-%{NETWORK_FW_DATADIR}/oic_svr_db_subowner_client.dat
-#%attr(750,network_fw,network_fw) %{_sbindir}/ocserverbasicops
-%attr(750,network_fw,network_fw) %{_sbindir}/sampleserver_justworks
-#%attr(750,network_fw,network_fw) %{_sbindir}/provisioningclient
-#%attr(750,network_fw,network_fw) %{_sbindir}/subownerclient
+rm -rf %{NETWORK_FW_DATADIR}/oic_pdm_d2ds.db
+rm -rf %{NETWORK_FW_DATADIR}/oic_pdm_subowner.db-journal
 
 %files
 %manifest %{name}.manifest
@@ -146,6 +112,7 @@ cp test/oic_svr_db_client.dat oic_svr_db_subowner_client.dat
 %attr(644,root,root) %{_unitdir}/d2dm.service
 %attr(644,root,root) %{_unitdir}/fnm.service
 %attr(644,root,root) %{_unitdir}/d2ds.service
+%attr(644,network_fw,network_fw) %{NETWORK_FW_DATADIR}/oic_svr_db_d2ds.dat
 
 %files devel
 %manifest %{name}-devel.manifest
@@ -168,14 +135,3 @@ cp test/oic_svr_db_client.dat oic_svr_db_subowner_client.dat
 %attr(750,network_fw,network_fw) %{_sbindir}/sampleserver_justworks
 %attr(750,network_fw,network_fw) %{_sbindir}/provisioningclient
 %attr(750,network_fw,network_fw) %{_sbindir}/subownerclient
-
-%files capi
-%manifest capi-network-familynet.manifest
-%defattr(-,root,root,-)
-%{_libdir}/libcapi-network-familynet.so*
-
-%files capi-devel
-%{_includedir}/*.h
-%{_libdir}/pkgconfig/*.pc
-%{_libdir}/libcapi-network-familynet.so
-%attr(777,root,root) %{_bindir}/familynet_unit_test
index 73f1668889522ee16ba8ac370990df7b1ed6ff7d..79b308b49dd8e4a8967a9c2fb71a93a903478f82 100644 (file)
@@ -1,6 +1,9 @@
 MESSAGE("===================================================================")
 MESSAGE("Building...subowner client")
 MESSAGE("===================================================================")
+
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/include/cjson)
+
 SET(INTROSPECTION_PATH ${CMAKE_CURRENT_SOURCE_DIR}/introspection)
 ADD_CUSTOM_COMMAND(
        OUTPUT dbus1
@@ -14,14 +17,21 @@ ADD_CUSTOM_COMMAND(
        COMMENT "Generating d2ds GDBus .c/.h"
 )
 
+MESSAGE(" - Check cmake packagesion")
+pkg_check_modules(d2ds_pkgs REQUIRED ${COMMON_DEPS} ${TIZEN_DEPS} capi-network-wifi-manager)
+
 ADD_CUSTOM_TARGET(GENERATED_D2DS_DBUS_CODE DEPENDS dbus1)
 MESSAGE(" - Set source folder")
 FILE(GLOB SUBOWNER_SRCS *.c)
 SET(SUBOWNER_SRCS ${SUBOWNER_SRCS} ${CMAKE_CURRENT_SOURCE_DIR}/d2ds-generated-code.c)
 SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_SOURCE_DIR}/d2ds-generated-code.c PROPERTIES GENERATED TRUE)
 
+INCLUDE_DIRECTORIES(${d2ds_pkgs_INCLUDE_DIRS})
+LINK_DIRECTORIES(${d2ds_pkgs_LIBRARY_DIRS})
+
 SET(SUBOWNER "d2d-subowner")
 ADD_EXECUTABLE(${SUBOWNER} ${SUBOWNER_SRCS})
 ADD_DEPENDENCIES(${SUBOWNER} GENERATED_D2DS_DBUS_CODE)
-TARGET_LINK_LIBRARIES(${SUBOWNER} ${daemon_pkgs_LIBRARIES} pthread)
+TARGET_LINK_LIBRARIES(${SUBOWNER} ${d2ds_pkgs_LIBRARIES} pthread)
 INSTALL(TARGETS ${SUBOWNER} DESTINATION bin)
+INSTALL(FILES oic_svr_db_d2ds.dat DESTINATION ${NETWORK_FW_DATADIR})
index 8b2c72259a96438b47ac4bc1f73b5ca317eaeb66..421d39c47718b4ad66fa97e7ae72bfc7e9ba6cc0 100644 (file)
@@ -42,6 +42,7 @@
 #include "pmtypes.h"
 #include "pmutility.h"
 
+#include <wifi-manager.h>
 #include <tzplatform_config.h>
 
 #include "d2ds.h"
@@ -51,6 +52,8 @@
 #include "d2ds-service-interface.h"
 #include "d2ds-generated-code.h"
 
+#define WIFI_MAC_ADDR_LENGTH 17
+
 #define MAX_FILE_PATH_LEN 1024
 #define ACL_RESRC_MAX_LEN   128
 
@@ -62,8 +65,8 @@
 #define CALLBACK_TIMEOUT_MS 10 * 50 /* 5sec = 100ms * 50 */
 
 /* '_' for separaing from the same constant variable in srmresourcestrings.c  */
-static const char* SVR_DB_FILE_NAME = "oic_svr_db_subowner_client.dat";
-static const char* PRVN_DB_FILE_NAME = "oic_pdm_subowner.db";
+static const char* SVR_DB_FILE_NAME = "oic_svr_db_d2ds.dat";
+static const char* PRVN_DB_FILE_NAME = "oic_pdm_d2ds.db";
 
 #ifdef TEST
 static const OicSecPrm_t  SUPPORTED_PRMS[2] = { PRM_PRE_CONFIGURED, PRM_RANDOM_PIN };
@@ -178,6 +181,31 @@ const char* _error_to_string(OCStackResult err)
        }
 }
 
+static const char* _wifi_error_to_string(wifi_manager_error_e err)
+{
+       switch (err) {
+       /* CHECK: List all enum values here */
+       CASE_TO_STR(WIFI_MANAGER_ERROR_NONE)
+       CASE_TO_STR(WIFI_MANAGER_ERROR_INVALID_PARAMETER)
+       CASE_TO_STR(WIFI_MANAGER_ERROR_OUT_OF_MEMORY)
+       CASE_TO_STR(WIFI_MANAGER_ERROR_INVALID_OPERATION)
+       CASE_TO_STR(WIFI_MANAGER_ERROR_ADDRESS_FAMILY_NOT_SUPPORTED)
+       CASE_TO_STR(WIFI_MANAGER_ERROR_OPERATION_FAILED)
+       CASE_TO_STR(WIFI_MANAGER_ERROR_NO_CONNECTION)
+       CASE_TO_STR(WIFI_MANAGER_ERROR_NOW_IN_PROGRESS)
+       CASE_TO_STR(WIFI_MANAGER_ERROR_ALREADY_EXISTS)
+       CASE_TO_STR(WIFI_MANAGER_ERROR_OPERATION_ABORTED)
+       CASE_TO_STR(WIFI_MANAGER_ERROR_DHCP_FAILED)
+       CASE_TO_STR(WIFI_MANAGER_ERROR_INVALID_KEY)
+       CASE_TO_STR(WIFI_MANAGER_ERROR_NO_REPLY)
+       CASE_TO_STR(WIFI_MANAGER_ERROR_SECURITY_RESTRICTED)
+       CASE_TO_STR(WIFI_MANAGER_ERROR_ALREADY_INITIALIZED)
+       CASE_TO_STR(WIFI_MANAGER_ERROR_PERMISSION_DENIED)
+       CASE_TO_STR(WIFI_MANAGER_ERROR_NOT_SUPPORTED)
+       default :
+               return "WIFI_MANAGER_ERROR_UNKNOWN";
+       }
+}
 static void _print_no_uuid(int idx, const OicUuid_t* uuid)
 {
        char uuid_string[256] = {0};
@@ -364,11 +392,48 @@ static void _remove_owned_client()
        g_mutex_unlock(&owned_dev_mutex);
 }
 
+static int _set_device_id_seed(void)
+{
+       int ret = WIFI_MANAGER_ERROR_NONE;
+       gchar *mac_addr = NULL;
+       const gchar *test_mac = "00:12:36:11:22:33";
+
+       wifi_manager_h wifi_handle = NULL;
+       bool wifi_activated = false;
+
+       /* Initialize Wi-Fi driver */
+       ret = wifi_manager_initialize(&wifi_handle);
+       if (WIFI_MANAGER_ERROR_NONE != ret)
+               D2DS_LOGE("Failed to get wifi manager handle ! [%d][%s]", ret, _wifi_error_to_string(ret));
+
+       wifi_manager_is_activated(wifi_handle, &wifi_activated);
+       if (false == wifi_activated) {
+               ret = wifi_manager_activate(wifi_handle, NULL, NULL);
+               if (WIFI_MANAGER_ERROR_NONE != ret)
+                       D2DS_LOGE("Failed to activate wifi ! [%d][%s]", ret, _wifi_error_to_string(ret));
+       }
+
+       ret = wifi_manager_get_mac_address(wifi_handle, &mac_addr);
+       if (WIFI_MANAGER_ERROR_NONE != ret) {
+               D2DS_LOGE("Fail to get MAC address  [%d][%s]", ret, _wifi_error_to_string(ret));
+               /* Make deviceID based on Fake MAC address */
+               ret = SetDeviceIdSeed(test_mac, WIFI_MAC_ADDR_LENGTH);
+       } else {
+               /* Make deviceID based on Wi-Fi MAC address */
+               ret = SetDeviceIdSeed((const guchar *)mac_addr, WIFI_MAC_ADDR_LENGTH);
+               g_free(mac_addr);
+       }
+       if (OC_STACK_OK != ret ) {
+               D2DS_LOGE( "SetDeviceIdSeed() error = [%d][%s]", ret, _error_to_string(ret));
+       }
+       wifi_manager_deinitialize(wifi_handle);
+       return  ret;
+}
+
 static int _init_provision_client(void)
 {
-       OCStackResult ret = OC_STACK_OK;
+       int ret = OC_STACK_OK;
        char data_dir[MAX_FILE_PATH_LEN] = {0,};
-       const uint8_t seed[6] = {0x00, 0x12, 0x34, 0x11, 0x22, 0x33};
 
        snprintf(data_dir, MAX_FILE_PATH_LEN, "%s/network/%s",
                        tzplatform_getenv(TZ_SYS_GLOBALUSER_DATA), PRVN_DB_FILE_NAME);
@@ -382,35 +447,25 @@ static int _init_provision_client(void)
                return ret;
        }
 
-       /* Make deviceID based on Wi-Fi MAC address */
-       ret = SetDeviceIdSeed(seed, 6);
-       if (OC_STACK_OK != ret ) {
-               D2DS_LOGE( "SetDeviceIdSeed() error = %d", ret);
-               return ret;
-       }
+       _set_device_id_seed();
 
        /* initialize OC stack and provisioning manager */
        ret = OCInit(NULL, 0, OC_CLIENT_SERVER);
        if (OC_STACK_OK != ret ) {
-               D2DS_LOGE( "OCInit() error = %d", ret);
+               D2DS_LOGE( "OCInit() error = [%d][%s]", ret, _error_to_string(ret));
                return ret;
        }
 
        /* Do Self-Ownership Transfer */
        ret = OCConfigSelfOwnership();
        if (OC_STACK_OK != ret ) {
-               D2DS_LOGE( "OCConfigSelfOwnership() error = %d", ret);
-               return ret;
+               D2DS_LOGE( "OCConfigSelfOwnership() error = [%d][%s]", ret, _error_to_string(ret));
+               //return ret;
        }
 
-       if (access(data_dir, F_OK) != -1)
-               D2DS_LOGI("Provisioning DB file already exists");
-       else
-               D2DS_LOGI("No provisioning DB file, creating new");
-
        ret = OCInitPM(data_dir);
        if (OC_STACK_OK != ret ) {
-               D2DS_LOGE( "OCInitPM() error = %d", ret);
+               D2DS_LOGE( "OCInitPM() error = [%d][%s]", ret, _error_to_string(ret));
                return ret;
        }
 
diff --git a/src/d2d-subowner/oic_svr_db_d2ds.dat b/src/d2d-subowner/oic_svr_db_d2ds.dat
new file mode 100644 (file)
index 0000000..d4e46c2
Binary files /dev/null and b/src/d2d-subowner/oic_svr_db_d2ds.dat differ
diff --git a/src/d2d-subowner/oic_svr_db_d2ds.json b/src/d2d-subowner/oic_svr_db_d2ds.json
new file mode 100644 (file)
index 0000000..c5b5d61
--- /dev/null
@@ -0,0 +1,85 @@
+{\r
+    "acl": {\r
+        "aclist": {\r
+            "aces": [\r
+                {\r
+                    "subjectuuid": "*",\r
+                    "resources": [\r
+                        {\r
+                            "href": "/oic/res",\r
+                            "rel": "",\r
+                            "rt": ["oic.wk.res"],\r
+                            "if": ["oic.if.ll"]\r
+                        },{\r
+                            "href": "/oic/d",\r
+                            "rel": "",\r
+                            "rt": ["oic.wk.d"],\r
+                            "if": ["oic.if.baseline", "oic.if.r"]\r
+                        },{\r
+                            "href": "/oic/p",\r
+                            "rel": "",\r
+                            "rt": ["oic.wk.p"],\r
+                            "if": ["oic.if.baseline", "oic.if.r"]\r
+                        }\r
+                    ],\r
+                    "permission": 2\r
+                },\r
+                {\r
+                    "subjectuuid": "*",\r
+                    "resources": [\r
+                        {\r
+                            "href": "/oic/sec/doxm",\r
+                            "rel": "",\r
+                            "rt": ["oic.r.doxm"],\r
+                            "if": ["oic.if.baseline"]\r
+                        },\r
+                        {\r
+                            "href": "/oic/sec/pstat",\r
+                            "rel": "",\r
+                            "rt": ["oic.r.pstat"],\r
+                            "if": ["oic.if.baseline"]\r
+                        }\r
+                    ],\r
+                    "permission": 2\r
+                },\r
+                {\r
+                    "subjectuuid": "*",\r
+                    "resources": [\r
+                        {\r
+                            "href": "/oic/sec/pconf",\r
+                            "rel": "",\r
+                            "rt": ["oic.r.pconf"],\r
+                            "if": ["oic.if.baseline"]\r
+                        },\r
+                        {\r
+                            "href": "/oic/sec/dpairing",\r
+                            "rel": "",\r
+                            "rt": ["oic.r.dpairing"],\r
+                            "if": ["oic.if.baseline"]\r
+                        }\r
+                    ],\r
+                    "permission": 2\r
+                }\r
+            ]\r
+        },\r
+        "rowneruuid" : "00000000-0000-0000-0000-000000000000"\r
+    },\r
+    "pstat": {\r
+        "isop": false,\r
+        "cm": 0,\r
+        "tm": 0,\r
+        "om": 3,\r
+        "sm": 3,\r
+        "deviceuuid": "00000000-0000-0000-0000-000000000000",\r
+        "rowneruuid": "00000000-0000-0000-0000-000000000000"\r
+    },\r
+    "doxm": {\r
+        "oxms": [0],\r
+        "oxmsel": 0,\r
+        "sct": 1,\r
+        "owned": false,\r
+        "deviceuuid": "00000000-0000-0000-0000-000000000000",\r
+        "devowneruuid": "",\r
+        "rowneruuid": "00000000-0000-0000-0000-000000000000"\r
+    }\r
+}\r