From 81f4b8948f10b2a696c78cb16c0528a8d66f731b Mon Sep 17 00:00:00 2001 From: yuvaramachandran_gurusamy Date: Thu, 5 Jun 2025 15:31:43 +0000 Subject: [PATCH 1/3] RDKEMW-4129: Prepare native build environment Signed-off-by: yuvaramachandran_gurusamy --- .github/workflows/native_full_build.yml | 25 +++++++ build_dependencies.sh | 95 +++++++++++++++++++++++++ cov_build.sh | 23 ++++++ 3 files changed, 143 insertions(+) create mode 100755 .github/workflows/native_full_build.yml create mode 100755 build_dependencies.sh create mode 100755 cov_build.sh diff --git a/.github/workflows/native_full_build.yml b/.github/workflows/native_full_build.yml new file mode 100755 index 00000000..757298bf --- /dev/null +++ b/.github/workflows/native_full_build.yml @@ -0,0 +1,25 @@ +name: Build Component in Native Environment + +on: + push: + branches: [ main, 'sprint/**', 'release/**', topic/*, develop, topic/RDKEMW-4129 ] + pull_request: + branches: [ main, 'sprint/**', 'release/**', topic/*, develop, topic/RDKEMW-4129 ] + +jobs: + build-entservices-on-pr: + name: Build xdialserver component in github rdkcentral + runs-on: ubuntu-latest + container: + image: ghcr.io/rdkcentral/docker-rdk-ci:latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: native build + run: | + sh -x build_dependencies.sh + sh -x cov_build.sh + env: + GITHUB_TOKEN: ${{ secrets.RDKCM_RDKE }} diff --git a/build_dependencies.sh b/build_dependencies.sh new file mode 100755 index 00000000..c755d997 --- /dev/null +++ b/build_dependencies.sh @@ -0,0 +1,95 @@ +#!/bin/bash +set -x +set -e +############################## +GITHUB_WORKSPACE="${PWD}" +ls -la ${GITHUB_WORKSPACE} +cd ${GITHUB_WORKSPACE} + +# # ############################# +#1. Install Dependencies and packages + +apt update +#apt install -y libsqlite3-dev libcurl4-openssl-dev valgrind lcov clang libsystemd-dev libboost-all-dev libwebsocketpp-dev meson libcunit1 libcunit1-dev curl protobuf-compiler-grpc libgrpc-dev libgrpc++-dev libunwind-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev +pip install jsonref + +############################ +# Build trevor-base64 +if [ ! -d "trower-base64" ]; then +git clone https://github.com/xmidt-org/trower-base64.git +fi +cd trower-base64 +meson setup --warnlevel 3 --werror build +ninja -C build +ninja -C build install +cd .. +########################################### +# Clone the required repositories + + +git clone --branch R4.4.3 https://github.com/rdkcentral/ThunderTools.git + +git clone --branch R4.4.1 https://github.com/rdkcentral/Thunder.git + +git clone --branch main https://github.com/rdkcentral/entservices-apis.git + +git clone https://$GITHUB_TOKEN@github.com/rdkcentral/entservices-testframework.git + +############################ +# Build Thunder-Tools +echo "======================================================================================" +echo "buliding thunderTools" +cd ThunderTools +patch -p1 < $GITHUB_WORKSPACE/entservices-testframework/patches/00010-R4.4-Add-support-for-project-dir.patch +cd - + + +cmake -G Ninja -S ThunderTools -B build/ThunderTools \ + -DEXCEPTIONS_ENABLE=ON \ + -DCMAKE_INSTALL_PREFIX="/usr" \ + -DCMAKE_MODULE_PATH="$GITHUB_WORKSPACE/install/tools/cmake" \ + -DGENERIC_CMAKE_MODULE_PATH="$GITHUB_WORKSPACE/install/tools/cmake" \ + +cmake --build build/ThunderTools --target install + + +############################ +# Build Thunder +echo "======================================================================================" +echo "buliding thunder" + +cd Thunder +patch -p1 < $GITHUB_WORKSPACE/entservices-testframework/patches/Use_Legact_Alt_Based_On_ThunderTools_R4.4.3.patch +patch -p1 < $GITHUB_WORKSPACE/entservices-testframework/patches/error_code_R4_4.patch +patch -p1 < $GITHUB_WORKSPACE/entservices-testframework/patches/1004-Add-support-for-project-dir.patch +patch -p1 < $GITHUB_WORKSPACE/entservices-testframework/patches/RDKEMW-733-Add-ENTOS-IDS.patch +cd - + +cmake -G Ninja -S Thunder -B build/Thunder \ + -DMESSAGING=ON \ + -DCMAKE_INSTALL_PREFIX="/usr" \ + -DCMAKE_MODULE_PATH="$GITHUB_WORKSPACE/install/tools/cmake" \ + -DGENERIC_CMAKE_MODULE_PATH="$GITHUB_WORKSPACE/install/tools/cmake" \ + -DBUILD_TYPE=Debug \ + -DBINDING=127.0.0.1 \ + -DPORT=55555 \ + -DEXCEPTIONS_ENABLE=ON \ + +cmake --build build/Thunder --target install + + +############################ +# Build entservices-apis +echo "======================================================================================" +echo "buliding entservices-apis" +cd entservices-apis +rm -rf jsonrpc/DTV.json +cd .. + +cmake -G Ninja -S entservices-apis -B build/entservices-apis \ + -DEXCEPTIONS_ENABLE=ON \ + -DCMAKE_INSTALL_PREFIX="/usr" \ + -DCMAKE_MODULE_PATH="$GITHUB_WORKSPACE/install/tools/cmake" \ + +cmake --build build/entservices-apis --target install + diff --git a/cov_build.sh b/cov_build.sh new file mode 100755 index 00000000..54f3fb84 --- /dev/null +++ b/cov_build.sh @@ -0,0 +1,23 @@ +#!/bin/bash +set -x +set -e +############################## +GITHUB_WORKSPACE="${PWD}" +ls -la ${GITHUB_WORKSPACE} +############################ +# Build xdialserver +echo "buliding xdialserver" + +cd ${GITHUB_WORKSPACE} +cmake -G Ninja -S "$GITHUB_WORKSPACE" -B build/xdialserver \ +-DUSE_THUNDER_R4=ON \ +-DCMAKE_INSTALL_PREFIX="$GITHUB_WORKSPACE/install/usr" \ +-DCMAKE_MODULE_PATH="$GITHUB_WORKSPACE/install/tools/cmake" \ +-DCMAKE_VERBOSE_MAKEFILE=ON \ +-DCMAKE_CXX_FLAGS="-DEXCEPTIONS_ENABLE=ON \ +-I ${GITHUB_WORKSPACE}/Thunder/Source \ +-I ${GITHUB_WORKSPACE}/Thunder/Source/core" \ + +cmake --build build/xdialserver --target install +echo "======================================================================================" +exit 0 From 6750ebaf408e15a46cad36f53fae7966e8f869aa Mon Sep 17 00:00:00 2001 From: yuvaramachandran_gurusamy Date: Thu, 5 Jun 2025 19:20:11 +0000 Subject: [PATCH 2/3] RDKEMW-4129: Test Signed-off-by: yuvaramachandran_gurusamy --- build_dependencies.sh | 45 ++++++- cov_build.sh | 11 +- ...010-R4.4-Add-support-for-project-dir.patch | 116 ++++++++++++++++++ .../1004-Add-support-for-project-dir.patch | 42 +++++++ .../patches/RDKEMW-733-Add-ENTOS-IDS.patch | 21 ++++ ...act_Alt_Based_On_ThunderTools_R4.4.3.patch | 20 +++ .../patches/error_code_R4_4.patch | 64 ++++++++++ server/include/gdial-config.h | 10 +- stubs/iarm_stubs.cpp | 68 ++++++++++ stubs/securityagent/SecurityTokenUtil.cpp | 56 +++++++++ stubs/securityagent/SecurityTokenUtil.h | 50 ++++++++ 11 files changed, 482 insertions(+), 21 deletions(-) create mode 100755 entservices-testframework/patches/00010-R4.4-Add-support-for-project-dir.patch create mode 100755 entservices-testframework/patches/1004-Add-support-for-project-dir.patch create mode 100755 entservices-testframework/patches/RDKEMW-733-Add-ENTOS-IDS.patch create mode 100755 entservices-testframework/patches/Use_Legact_Alt_Based_On_ThunderTools_R4.4.3.patch create mode 100644 entservices-testframework/patches/error_code_R4_4.patch create mode 100644 stubs/iarm_stubs.cpp create mode 100644 stubs/securityagent/SecurityTokenUtil.cpp create mode 100644 stubs/securityagent/SecurityTokenUtil.h diff --git a/build_dependencies.sh b/build_dependencies.sh index c755d997..041b10da 100755 --- a/build_dependencies.sh +++ b/build_dependencies.sh @@ -3,14 +3,14 @@ set -x set -e ############################## GITHUB_WORKSPACE="${PWD}" -ls -la ${GITHUB_WORKSPACE} + cd ${GITHUB_WORKSPACE} # # ############################# #1. Install Dependencies and packages apt update -#apt install -y libsqlite3-dev libcurl4-openssl-dev valgrind lcov clang libsystemd-dev libboost-all-dev libwebsocketpp-dev meson libcunit1 libcunit1-dev curl protobuf-compiler-grpc libgrpc-dev libgrpc++-dev libunwind-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev +apt install -y ninja-build meson curl libsoup2.4-dev libxml2-dev libglib2.0-dev gobject-introspection libgirepository1.0-dev libgtk-3-dev valac pandoc pip install jsonref ############################ @@ -26,14 +26,36 @@ cd .. ########################################### # Clone the required repositories +rm -rf iarmbus +git clone https://github.com/rdkcentral/iarmbus.git +export IARMBUS_PATH=$GITHUB_WORKSPACE/iarmbus +rm -rf ThunderTools git clone --branch R4.4.3 https://github.com/rdkcentral/ThunderTools.git +rm -rf Thunder git clone --branch R4.4.1 https://github.com/rdkcentral/Thunder.git +rm -rf entservices-apis git clone --branch main https://github.com/rdkcentral/entservices-apis.git -git clone https://$GITHUB_TOKEN@github.com/rdkcentral/entservices-testframework.git +#git clone https://$GITHUB_TOKEN@github.com/rdkcentral/entservices-testframework.git + +rm -rf gssdp +git clone --branch gssdp-1.2.3 https://gitlab.gnome.org/GNOME/gssdp.git + +############################ +# Build gssdp-1.2 +echo "======================================================================================" +echo "buliding gssdp-1.2" +cd gssdp + +rm -rf build +meson setup build + +ninja -C build +ninja -C build install +cd - ############################ # Build Thunder-Tools @@ -77,7 +99,6 @@ cmake -G Ninja -S Thunder -B build/Thunder \ cmake --build build/Thunder --target install - ############################ # Build entservices-apis echo "======================================================================================" @@ -93,3 +114,19 @@ cmake -G Ninja -S entservices-apis -B build/entservices-apis \ cmake --build build/entservices-apis --target install +############################ + +############################ +# Build and deploy stubs for IARMBus and WPEFramework securityagent +mkdir -p /usr/include/WPEFramework/securityagent +cp $GITHUB_WORKSPACE/stubs/securityagent/* /usr/include/WPEFramework/securityagent/ -v + +echo "======================================================================================" +echo "Building IARMBus and WPEFramework securityagent stubs" +cd $GITHUB_WORKSPACE +cd ./stubs +g++ -fPIC -shared -o libIARMBus.so iarm_stubs.cpp -I$GITHUB_WORKSPACE/stubs -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I$IARMBUS_PATH/core -I$IARMBUS_PATH/core/include -fpermissive +g++ -fPIC -shared -o libWPEFrameworkSecurityUtil.so securityagent/SecurityTokenUtil.cpp -I$GITHUB_WORKSPACE/stubs -fpermissive + +cp libIARMBus.so /usr/local/lib/ +cp libWPEFrameworkSecurityUtil.so /usr/local/lib/ diff --git a/cov_build.sh b/cov_build.sh index 54f3fb84..da227aba 100755 --- a/cov_build.sh +++ b/cov_build.sh @@ -9,15 +9,8 @@ ls -la ${GITHUB_WORKSPACE} echo "buliding xdialserver" cd ${GITHUB_WORKSPACE} -cmake -G Ninja -S "$GITHUB_WORKSPACE" -B build/xdialserver \ --DUSE_THUNDER_R4=ON \ --DCMAKE_INSTALL_PREFIX="$GITHUB_WORKSPACE/install/usr" \ --DCMAKE_MODULE_PATH="$GITHUB_WORKSPACE/install/tools/cmake" \ --DCMAKE_VERBOSE_MAKEFILE=ON \ --DCMAKE_CXX_FLAGS="-DEXCEPTIONS_ENABLE=ON \ --I ${GITHUB_WORKSPACE}/Thunder/Source \ --I ${GITHUB_WORKSPACE}/Thunder/Source/core" \ -cmake --build build/xdialserver --target install +make + echo "======================================================================================" exit 0 diff --git a/entservices-testframework/patches/00010-R4.4-Add-support-for-project-dir.patch b/entservices-testframework/patches/00010-R4.4-Add-support-for-project-dir.patch new file mode 100755 index 00000000..dbb94881 --- /dev/null +++ b/entservices-testframework/patches/00010-R4.4-Add-support-for-project-dir.patch @@ -0,0 +1,116 @@ +diff --git a/JsonGenerator/source/class_emitter.py b/JsonGenerator/source/class_emitter.py +index 7f2fb01..67a6469 100644 +--- a/JsonGenerator/source/class_emitter.py ++++ b/JsonGenerator/source/class_emitter.py +@@ -113,7 +113,6 @@ + emit.Line("#include ") + emit.Line() + +- emit.Line("#include \"definitions.h\"") + + if not config.NO_INCLUDES: + if if_file.endswith(".h"): +diff --git a/ProxyStubGenerator/StubGenerator.py b/ProxyStubGenerator/StubGenerator.py +index 6e079b6..d2de681 100755 +--- a/ProxyStubGenerator/StubGenerator.py ++++ b/ProxyStubGenerator/StubGenerator.py +@@ -193,7 +193,7 @@ + + + # Generate interface information in lua +-def GenerateLuaData(emit, interfaces_list, enums_list, source_file=None, tree=None, ns=None): ++def GenerateLuaData(emit, interfaces_list, enums_list, project_dir, source_file=None, tree=None, ns=None): + + if not source_file: + assert(tree==None) +@@ -535,7 +535,7 @@ + + return tree + +-def GenerateStubs2(output_file, source_file, tree, ns, scan_only=False): ++def GenerateStubs2(output_file, source_file, project_dir, tree, ns, scan_only=False): + log.Info("Scanning '%s' (in %s)..." % (source_file, ns)) + + if not FORCE and (os.path.exists(output_file) and (os.path.getmtime(source_file) < os.path.getmtime(output_file))): +@@ -579,7 +579,7 @@ + emit.Line + emit.Line() + +- if os.path.isfile(os.path.join(os.path.dirname(source_file), "Module.h")): ++ if os.path.isfile(os.path.join(project_dir, "Module.h")): + emit.Line('#include "Module.h"') + + if os.path.isfile(os.path.join(os.path.dirname(source_file), interface_header_name)): +@@ -2085,6 +2085,8 @@ + help="include an additional C++ header file, may be used multiple times (default: include 'Ids.h')") + argparser.add_argument('-I', dest="includePaths", metavar="INCLUDE_DIR", action='append', default=[], type=str, + help='add an include search path, can be used multiple times') ++ argparser.add_argument("--projectdir",dest="project_dir",metavar="DIR",type=str,default="", ++ help="specify the project directory") + + args = argparser.parse_args(sys.argv[1:]) + SHOW_WARNINGS = not args.no_warnings +@@ -2221,7 +2223,10 @@ + + for source_file in interface_files: + try: +- _extra_includes = [ os.path.join("@" + os.path.dirname(source_file), IDS_DEFINITIONS_FILE) ] ++ if args.project_dir is not None: ++ _extra_includes = [ os.path.join("@" + args.project_dir, IDS_DEFINITIONS_FILE) ] ++ else: ++ _extra_includes = [ os.path.join("@" + os.path.dirname(source_file), IDS_DEFINITIONS_FILE) ] + _extra_includes.extend(args.extra_includes) + + tree = Parse(source_file, args.includePaths, +@@ -2242,7 +2247,7 @@ + some_omitted = False + + for ns in INTERFACE_NAMESPACES: +- output, some_omitted = GenerateStubs2(output_file, source_file, tree, ns, scan_only) ++ output, some_omitted = GenerateStubs2(output_file, source_file, args.project_dir, tree, ns, scan_only) + + new_faces += output + +@@ -2265,7 +2270,7 @@ + log.Print("(lua generator) Scanning %s..." % os.path.basename(source_file)) + + for ns in INTERFACE_NAMESPACES: +- GenerateLuaData(Emitter(lua_file, INDENT_SIZE), lua_interfaces, lua_enums, source_file, tree, ns) ++ GenerateLuaData(Emitter(lua_file, INDENT_SIZE), lua_interfaces, lua_enums, args.project_dir, source_file, tree, ns) + + except NotModifiedException as err: + log.Print("skipped file %s, up-to-date" % os.path.basename(output_file)) +@@ -2316,7 +2321,7 @@ + if args.lua_code: + # Epilogue + for ns in INTERFACE_NAMESPACES: +- GenerateLuaData(Emitter(lua_file, INDENT_SIZE), lua_interfaces, lua_enums) ++ GenerateLuaData(Emitter(lua_file, INDENT_SIZE), lua_interfaces, lua_enums,args.project_dir) + log.Print("Created %s (%s interfaces, %s enums)" % (lua_file.name, len(lua_interfaces), len(lua_enums))) + + else: + +diff --git a/cmake/FindProxyStubGenerator.cmake.in b/cmake/FindProxyStubGenerator.cmake.in +index 1344452..a8dbcea 100644 +--- a/cmake/FindProxyStubGenerator.cmake.in ++++ b/cmake/FindProxyStubGenerator.cmake.in. +@@ -31,7 +31,7 @@ function(ProxyStubGenerator) + endif() + + set(optionsArgs SECURE COHERENT TRACES VERBOSE NO_WARNINGS KEEP FORCE_GENERATE) +- set(oneValueArgs OUTDIR) ++ set(oneValueArgs OUTDIR PROJECT_DIR) + set(multiValueArgs INPUT INCLUDE INCLUDE_PATH NAMESPACE) + + cmake_parse_arguments(Argument "${optionsArgs}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) +@@ -81,6 +81,10 @@ function(ProxyStubGenerator) + list(APPEND _execute_command "--outdir" "${Argument_OUTDIR}") + endif() + ++ if(Argument_PROJECT_DIR) ++ list(APPEND _execute_command "--projectdir" "${Argument_PROJECT_DIR}") ++ endif() ++ + foreach(_include ${Argument_INCLUDE}) + list(APPEND _execute_command "-I" "${_include}") + endforeach(_include) diff --git a/entservices-testframework/patches/1004-Add-support-for-project-dir.patch b/entservices-testframework/patches/1004-Add-support-for-project-dir.patch new file mode 100755 index 00000000..26fdee12 --- /dev/null +++ b/entservices-testframework/patches/1004-Add-support-for-project-dir.patch @@ -0,0 +1,42 @@ +diff --git a/Source/plugins/CMakeLists.txt b/Source/plugins/CMakeLists.txt +index 4d362d545..9357c647c 100644 +--- a/Source/plugins/CMakeLists.txt ++++ b/Source/plugins/CMakeLists.txt +@@ -20,14 +20,14 @@ + string(TOLOWER ${NAMESPACE} NAMESPACE_LIB) + + option(VIRTUALINPUT_TOOLS "Build VirtualInput tools" OFF) +- +-ProxyStubGenerator(NAMESPACE "WPEFramework::PluginHost" INPUT "${CMAKE_CURRENT_SOURCE_DIR}/IPlugin.h" OUTDIR "${CMAKE_CURRENT_BINARY_DIR}/generated") +-ProxyStubGenerator(NAMESPACE "WPEFramework::PluginHost" INPUT "${CMAKE_CURRENT_SOURCE_DIR}/IShell.h" OUTDIR "${CMAKE_CURRENT_BINARY_DIR}/generated") +-ProxyStubGenerator(NAMESPACE "WPEFramework::Exchange" INPUT "${CMAKE_CURRENT_SOURCE_DIR}/IController.h" OUTDIR "${CMAKE_CURRENT_BINARY_DIR}/generated" INCLUDE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/..") +-ProxyStubGenerator(NAMESPACE "WPEFramework::PluginHost" INPUT "${CMAKE_CURRENT_SOURCE_DIR}/IControllerDeprecated.h" OUTDIR "${CMAKE_CURRENT_BINARY_DIR}/generated" INCLUDE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/..") +-ProxyStubGenerator(NAMESPACE "WPEFramework::PluginHost" INPUT "${CMAKE_CURRENT_SOURCE_DIR}/IStateControl.h" OUTDIR "${CMAKE_CURRENT_BINARY_DIR}/generated") +-ProxyStubGenerator(NAMESPACE "WPEFramework::PluginHost" INPUT "${CMAKE_CURRENT_SOURCE_DIR}/ISubSystem.h" OUTDIR "${CMAKE_CURRENT_BINARY_DIR}/generated") +-ProxyStubGenerator(NAMESPACE "WPEFramework::PluginHost" INPUT "${CMAKE_CURRENT_SOURCE_DIR}/IDispatcher.h" OUTDIR "${CMAKE_CURRENT_BINARY_DIR}/generated") ++set(PROJECT_DIR "${CMAKE_CURRENT_SOURCE_DIR}") ++ProxyStubGenerator(NAMESPACE "WPEFramework::PluginHost" INPUT "${CMAKE_CURRENT_SOURCE_DIR}/IPlugin.h" OUTDIR "${CMAKE_CURRENT_BINARY_DIR}/generated" PROJECT_DIR ${PROJECT_DIR}) ++ProxyStubGenerator(NAMESPACE "WPEFramework::PluginHost" INPUT "${CMAKE_CURRENT_SOURCE_DIR}/IShell.h" OUTDIR "${CMAKE_CURRENT_BINARY_DIR}/generated" PROJECT_DIR ${PROJECT_DIR}) ++ProxyStubGenerator(NAMESPACE "WPEFramework::Exchange" INPUT "${CMAKE_CURRENT_SOURCE_DIR}/IController.h" OUTDIR "${CMAKE_CURRENT_BINARY_DIR}/generated" INCLUDE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/.." PROJECT_DIR ${PROJECT_DIR}) ++ProxyStubGenerator(NAMESPACE "WPEFramework::PluginHost" INPUT "${CMAKE_CURRENT_SOURCE_DIR}/IControllerDeprecated.h" OUTDIR "${CMAKE_CURRENT_BINARY_DIR}/generated" INCLUDE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/.." PROJECT_DIR ${PROJECT_DIR}) ++ProxyStubGenerator(NAMESPACE "WPEFramework::PluginHost" INPUT "${CMAKE_CURRENT_SOURCE_DIR}/IStateControl.h" OUTDIR "${CMAKE_CURRENT_BINARY_DIR}/generated" PROJECT_DIR ${PROJECT_DIR}) ++ProxyStubGenerator(NAMESPACE "WPEFramework::PluginHost" INPUT "${CMAKE_CURRENT_SOURCE_DIR}/ISubSystem.h" OUTDIR "${CMAKE_CURRENT_BINARY_DIR}/generated" PROJECT_DIR ${PROJECT_DIR}) ++ProxyStubGenerator(NAMESPACE "WPEFramework::PluginHost" INPUT "${CMAKE_CURRENT_SOURCE_DIR}/IDispatcher.h" OUTDIR "${CMAKE_CURRENT_BINARY_DIR}/generated" PROJECT_DIR ${PROJECT_DIR}) + + JsonGenerator(CODE NAMESPACE WPEFramework::Exchange::Controller INPUT ${CMAKE_CURRENT_SOURCE_DIR}/IController.h OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/generated/jsonrpc" INCLUDE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/.." NO_INCLUDES LEGACY_ALT) + +diff --git a/Source/com/CMakeLists.txt b/Source/com/CMakeLists.txt +index 1de9ac176..bcf9489d1 100644 +--- a/Source/com/CMakeLists.txt ++++ b/Source/com/CMakeLists.txt +@@ -16,8 +16,8 @@ + # limitations under the License. + + set(TARGET ${NAMESPACE}COM) +- +-ProxyStubGenerator(NAMESPACE "WPEFramework::RPC" INPUT "${CMAKE_CURRENT_SOURCE_DIR}/ICOM.h" OUTDIR "${CMAKE_CURRENT_BINARY_DIR}/generated") ++set(PROJECT_DIR "${CMAKE_CURRENT_SOURCE_DIR}") ++ProxyStubGenerator(NAMESPACE "WPEFramework::RPC" INPUT "${CMAKE_CURRENT_SOURCE_DIR}/ICOM.h" OUTDIR "${CMAKE_CURRENT_BINARY_DIR}/generated" PROJECT_DIR ${PROJECT_DIR}) + + add_library(${TARGET} SHARED + Administrator.cpp diff --git a/entservices-testframework/patches/RDKEMW-733-Add-ENTOS-IDS.patch b/entservices-testframework/patches/RDKEMW-733-Add-ENTOS-IDS.patch new file mode 100755 index 00000000..c8fd3213 --- /dev/null +++ b/entservices-testframework/patches/RDKEMW-733-Add-ENTOS-IDS.patch @@ -0,0 +1,21 @@ +From: Sitaram, Soundaryaa +Date: 05 Feb 2025 17:24:43 +0000 +Subject: [PATCH] ENTOS IDs offset to be adjusted in rdkservices-apis + +Upstream-Status: None +Signed-off-by: ssitar583 +--- +diff --git a/Source/com/Ids.h b/Source/com/Ids.h +index cf2060333..75d235bbd 100644 +--- a/Source/com/Ids.h ++++ b/Source/com/Ids.h +@@ -74,7 +74,8 @@ namespace RPC { + ID_COMREQUEST_NOTIFICATION = (ID_OFFSET_INTERNAL + 0x003D), + ID_SYSTEM_METADATA = (ID_OFFSET_INTERNAL + 0x003E), + +- ID_EXTERNAL_INTERFACE_OFFSET = (ID_OFFSET_INTERNAL + 0x0040) ++ ID_EXTERNAL_INTERFACE_OFFSET = (ID_OFFSET_INTERNAL + 0x0040), ++ ID_EXTERNAL_CC_INTERFACE_OFFSET = (0xCC00) // ends on 0xDFFF + }; + } + } diff --git a/entservices-testframework/patches/Use_Legact_Alt_Based_On_ThunderTools_R4.4.3.patch b/entservices-testframework/patches/Use_Legact_Alt_Based_On_ThunderTools_R4.4.3.patch new file mode 100755 index 00000000..c5b4a36f --- /dev/null +++ b/entservices-testframework/patches/Use_Legact_Alt_Based_On_ThunderTools_R4.4.3.patch @@ -0,0 +1,20 @@ +commit 810aae64cb31c907698e468b615797750094b847 +Author: Pesala Lakshmi Jwala Priya +Date: Thu Aug 29 12:31:30 2024 +0530 + + Alt change + +diff --git a/Source/plugins/CMakeLists.txt b/Source/plugins/CMakeLists.txt +index 4d362d54..cdb53cdc 100644 +--- a/Source/plugins/CMakeLists.txt ++++ b/Source/plugins/CMakeLists.txt +@@ -29,7 +29,7 @@ ProxyStubGenerator(NAMESPACE "WPEFramework::PluginHost" INPUT "${CMAKE_CURRENT_S + ProxyStubGenerator(NAMESPACE "WPEFramework::PluginHost" INPUT "${CMAKE_CURRENT_SOURCE_DIR}/ISubSystem.h" OUTDIR "${CMAKE_CURRENT_BINARY_DIR}/generated") + ProxyStubGenerator(NAMESPACE "WPEFramework::PluginHost" INPUT "${CMAKE_CURRENT_SOURCE_DIR}/IDispatcher.h" OUTDIR "${CMAKE_CURRENT_BINARY_DIR}/generated") + +-JsonGenerator(CODE NAMESPACE WPEFramework::Exchange::Controller INPUT ${CMAKE_CURRENT_SOURCE_DIR}/IController.h OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/generated/jsonrpc" INCLUDE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/.." NO_INCLUDES) ++JsonGenerator(CODE NAMESPACE WPEFramework::Exchange::Controller INPUT ${CMAKE_CURRENT_SOURCE_DIR}/IController.h OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/generated/jsonrpc" INCLUDE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/.." NO_INCLUDES LEGACY_ALT) + + add_library(${TARGET} SHARED + Channel.cpp + diff --git a/entservices-testframework/patches/error_code_R4_4.patch b/entservices-testframework/patches/error_code_R4_4.patch new file mode 100644 index 00000000..954ca083 --- /dev/null +++ b/entservices-testframework/patches/error_code_R4_4.patch @@ -0,0 +1,64 @@ +diff --git a/Source/WPEFramework/PluginServer.h b/Source/WPEFramework/PluginServer.h +index e87933d9a..591385222 100644 +--- a/Source/WPEFramework/PluginServer.h ++++ b/Source/WPEFramework/PluginServer.h +@@ -1535,6 +1535,22 @@ namespace PluginHost { + response->Error.SetError(Core::ERROR_ILLEGAL_STATE); + response->Error.Text = _T("The service is in an illegal state!!!."); + break; ++ case Core::ERROR_INVALID_PARAMETER: ++ response->Error.SetError(Core::ERROR_INVALID_SIGNATURE); ++ response->Error.Text = _T("Invalid Parameter"); ++ break; ++ case Core::ERROR_INVALID_DEVICENAME: ++ response->Error.SetError(Core::ERROR_INVALID_DEVICENAME); ++ response->Error.Text = _T("Invalid device name"); ++ break; ++ case Core::ERROR_INVALID_MOUNTPOINT: ++ response->Error.SetError(Core::ERROR_INVALID_MOUNTPOINT); ++ response->Error.Text = _T("Invalid mount path"); ++ break; ++ case Core::ERROR_FIRMWAREUPDATE_INPROGRESS: ++ response->Error.SetError(Core::ERROR_FIRMWAREUPDATE_INPROGRESS); ++ response->Error.Text = _T("Firmware update already in progress"); ++ break; + case static_cast(~0): + response.Release(); + break; +diff --git a/Source/core/JSONRPC.h b/Source/core/JSONRPC.h +index a9c4360fb..5fcef161d 100644 +--- a/Source/core/JSONRPC.h ++++ b/Source/core/JSONRPC.h +@@ -98,6 +98,15 @@ namespace Core { + case Core::ERROR_TIMEDOUT: + Code = -32000; // Server defined, now mapped to Timed out + break; ++ case Core::ERROR_INVALID_DEVICENAME: ++ Code = -32001; // Invalid device name ++ break; ++ case Core::ERROR_INVALID_MOUNTPOINT: ++ Code = -32002; // Invalid mount path ++ break; ++ case Core::ERROR_FIRMWAREUPDATE_INPROGRESS: ++ Code = -32003; // Firmware update inprogress ++ break; + default: + Code = static_cast(frameworkError); + break; +diff --git a/Source/core/Portability.h b/Source/core/Portability.h +index 01e34d398..a5728eebf 100644 +--- a/Source/core/Portability.h ++++ b/Source/core/Portability.h +@@ -874,7 +874,11 @@ namespace Core { + ERROR_CODE(ERROR_HIBERNATED, 46) \ + ERROR_CODE(ERROR_INPROC, 47) \ + ERROR_CODE(ERROR_FAILED_REGISTERED, 48) \ +- ERROR_CODE(ERROR_FAILED_UNREGISTERED, 49) ++ ERROR_CODE(ERROR_FAILED_UNREGISTERED, 49) \ ++ ERROR_CODE(ERROR_INVALID_PARAMETER, 54) \ ++ ERROR_CODE(ERROR_INVALID_DEVICENAME, 59) \ ++ ERROR_CODE(ERROR_INVALID_MOUNTPOINT, 60) \ ++ ERROR_CODE(ERROR_FIRMWAREUPDATE_INPROGRESS,61) + + #define ERROR_CODE(CODE, VALUE) CODE = VALUE, + diff --git a/server/include/gdial-config.h b/server/include/gdial-config.h index c6b9a9bc..13dd4172 100644 --- a/server/include/gdial-config.h +++ b/server/include/gdial-config.h @@ -17,8 +17,8 @@ * limitations under the License. */ -#ifndef GDIAL_H_ -#define GDIAL_H_ +#ifndef _GDIAL_CONFIG_H_ +#define _GDIAL_CONFIG_H_ #ifdef __cplusplus extern "C" { @@ -81,12 +81,6 @@ extern "C" { #define GDIAL_THROTTLE_DELAY_US 100000 #define GDIAL_DEBUG g_print -enum { - GDIAL_ERROR_NONE = 0, - GDIAL_ERROR_NOT_REGISTERED, - GDIAL_ERROR_FAIL_TO_START, -} GDialError; - #define GDIAL_GERROR_CHECK_AND_FREE(err, msg) \ {\ if (err) {\ diff --git a/stubs/iarm_stubs.cpp b/stubs/iarm_stubs.cpp new file mode 100644 index 00000000..ef10fc2d --- /dev/null +++ b/stubs/iarm_stubs.cpp @@ -0,0 +1,68 @@ +#include "libIBus.h" +#include "libIARMCore.h" +using namespace std; + +IARM_Result_t IARM_Malloc(IARM_MemType_t type, size_t size, void **ptr) +{ + return IARM_RESULT_SUCCESS; +} + +IARM_Result_t IARM_Free(IARM_MemType_t type, void *alloc) +{ + return IARM_RESULT_SUCCESS; +} + +IARM_Result_t IARM_Bus_BroadcastEvent(const char *ownerName, IARM_EventId_t eventId, void *arg, size_t argLen) +{ + return IARM_RESULT_SUCCESS; +} + +IARM_Result_t IARM_Bus_Init(const char* name) +{ + return IARM_RESULT_SUCCESS; +} + +IARM_Result_t IARM_Bus_Connect() +{ + return IARM_RESULT_SUCCESS; +} + +IARM_Result_t IARM_Bus_IsConnected(const char* memberName, int* isRegistered) +{ + return IARM_RESULT_SUCCESS; +} + +IARM_Result_t IARM_Bus_RegisterEventHandler(const char* ownerName, IARM_EventId_t eventId, IARM_EventHandler_t handler) +{ + return IARM_RESULT_SUCCESS; +} + +IARM_Result_t IARM_Bus_UnRegisterEventHandler(const char* ownerName, IARM_EventId_t eventId) +{ + return IARM_RESULT_SUCCESS; +} + +IARM_Result_t IARM_Bus_RemoveEventHandler(const char* ownerName, IARM_EventId_t eventId, IARM_EventHandler_t handler) +{ + return IARM_RESULT_SUCCESS; +} +IARM_Result_t IARM_Bus_RegisterCall(const char *methodName, IARM_BusCall_t handler) +{ +return IARM_RESULT_SUCCESS; +} +IARM_Result_t IARM_Bus_Term(void) +{ +return IARM_RESULT_SUCCESS; +} +IARM_Result_t IARM_Bus_Disconnect(void) +{ +return IARM_RESULT_SUCCESS; +} +IARM_Result_t IARM_Bus_RegisterEvent(IARM_EventId_t maxEventId) +{ +return IARM_RESULT_SUCCESS; +} +IARM_Result_t IARM_Bus_Call(const char* ownerName, const char* methodName, void* arg, size_t argLen) +{ + return IARM_RESULT_SUCCESS; +} diff --git a/stubs/securityagent/SecurityTokenUtil.cpp b/stubs/securityagent/SecurityTokenUtil.cpp new file mode 100644 index 00000000..a743d52f --- /dev/null +++ b/stubs/securityagent/SecurityTokenUtil.cpp @@ -0,0 +1,56 @@ +/* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2020 RDK Management + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include "SecurityTokenUtil.h" +/* + * Send thunder security token for localhost. + * This token can be used by native applications to securely access rdkservices. + */ + +using namespace std; + +extern "C" { + /* + * GetSecurityToken - function to obtain a token from SecurityAgent + * + * Parameters + * maxLength - holds the maximum uint8_t length of the buffer + * Id - Buffer to hold the token. + * + * Return value + * < 0 - failure, absolute value returned is the length required to store the token + * > 0 - success, char length of the returned token + * + * Post-condition; return value 0 should not occur + * + */ + int GetSecurityToken(unsigned short maxLength, unsigned char buffer[]) + { + // get a localhost token + string payload = "http://localhost"; + + size_t len = payload.length(); + + if(!memcpy(buffer,payload.c_str(),len)) + return -1; + return 0; + } +} diff --git a/stubs/securityagent/SecurityTokenUtil.h b/stubs/securityagent/SecurityTokenUtil.h new file mode 100644 index 00000000..b32894f5 --- /dev/null +++ b/stubs/securityagent/SecurityTokenUtil.h @@ -0,0 +1,50 @@ +/* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2020 RDK Management + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#ifdef __WINDOWS__ +#undef EXTERNAL +#ifdef SECURITYUTILITY_EXPORTS +#define EXTERNAL EXTERNAL_EXPORT +#else +#define EXTERNAL EXTERNAL_IMPORT +#endif +#else +#undef EXTERNAL +#define EXTERNAL +#endif + +extern "C" { + /* + * GetSecurityToken - function to obtain a token from SecurityAgent + * + * Parameters + * maxLength - holds the maximum uint8_t length of the buffer + * buffer - Buffer to hold the token. + * + * Return value + * < 0 - failure, absolute value returned is the length required to store the token + * > 0 - success, char length of the returned token + * + * Post-condition; return value 0 should not occur + * + */ + int EXTERNAL GetSecurityToken(unsigned short maxLength, unsigned char buffer[]); +} From 83a1518bfc88b4528c95bdb0c65214c5157b77eb Mon Sep 17 00:00:00 2001 From: yuvaramachandran_gurusamy Date: Thu, 5 Jun 2025 19:20:11 +0000 Subject: [PATCH 3/3] RDKEMW-4129: Prepare native build script Signed-off-by: yuvaramachandran_gurusamy --- .github/workflows/native_full_build.yml | 4 +- build_dependencies.sh | 41 +++++++++++++- cov_build.sh | 11 +--- server/include/gdial-config.h | 10 +--- stubs/iarm_stubs.cpp | 68 +++++++++++++++++++++++ stubs/securityagent/SecurityTokenUtil.cpp | 56 +++++++++++++++++++ stubs/securityagent/SecurityTokenUtil.h | 50 +++++++++++++++++ 7 files changed, 218 insertions(+), 22 deletions(-) create mode 100644 stubs/iarm_stubs.cpp create mode 100644 stubs/securityagent/SecurityTokenUtil.cpp create mode 100644 stubs/securityagent/SecurityTokenUtil.h diff --git a/.github/workflows/native_full_build.yml b/.github/workflows/native_full_build.yml index 757298bf..b241c8d2 100755 --- a/.github/workflows/native_full_build.yml +++ b/.github/workflows/native_full_build.yml @@ -2,9 +2,9 @@ name: Build Component in Native Environment on: push: - branches: [ main, 'sprint/**', 'release/**', topic/*, develop, topic/RDKEMW-4129 ] + branches: [ main, 'sprint/**', 'release/**', topic/*, develop ] pull_request: - branches: [ main, 'sprint/**', 'release/**', topic/*, develop, topic/RDKEMW-4129 ] + branches: [ main, 'sprint/**', 'release/**', topic/*, develop ] jobs: build-entservices-on-pr: diff --git a/build_dependencies.sh b/build_dependencies.sh index c755d997..86d6c353 100755 --- a/build_dependencies.sh +++ b/build_dependencies.sh @@ -3,14 +3,14 @@ set -x set -e ############################## GITHUB_WORKSPACE="${PWD}" -ls -la ${GITHUB_WORKSPACE} + cd ${GITHUB_WORKSPACE} # # ############################# #1. Install Dependencies and packages apt update -#apt install -y libsqlite3-dev libcurl4-openssl-dev valgrind lcov clang libsystemd-dev libboost-all-dev libwebsocketpp-dev meson libcunit1 libcunit1-dev curl protobuf-compiler-grpc libgrpc-dev libgrpc++-dev libunwind-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev +apt install -y ninja-build meson curl libsoup2.4-dev libxml2-dev libglib2.0-dev gobject-introspection libgirepository1.0-dev libgtk-3-dev valac pandoc pip install jsonref ############################ @@ -26,6 +26,11 @@ cd .. ########################################### # Clone the required repositories +rm -rf iarmbus ThunderTools Thunder entservices-apis entservices-testframework gssdp + + +git clone https://github.com/rdkcentral/iarmbus.git +export IARMBUS_PATH=$GITHUB_WORKSPACE/iarmbus git clone --branch R4.4.3 https://github.com/rdkcentral/ThunderTools.git @@ -35,6 +40,21 @@ git clone --branch main https://github.com/rdkcentral/entservices-apis.git git clone https://$GITHUB_TOKEN@github.com/rdkcentral/entservices-testframework.git +git clone --branch gssdp-1.2.3 https://gitlab.gnome.org/GNOME/gssdp.git + +############################ +# Build gssdp-1.2 +echo "======================================================================================" +echo "buliding gssdp-1.2" +cd gssdp + +rm -rf build +meson setup build + +ninja -C build +ninja -C build install +cd - + ############################ # Build Thunder-Tools echo "======================================================================================" @@ -77,7 +97,6 @@ cmake -G Ninja -S Thunder -B build/Thunder \ cmake --build build/Thunder --target install - ############################ # Build entservices-apis echo "======================================================================================" @@ -93,3 +112,19 @@ cmake -G Ninja -S entservices-apis -B build/entservices-apis \ cmake --build build/entservices-apis --target install +############################ + +############################ +# Build and deploy stubs for IARMBus and WPEFramework securityagent +mkdir -p /usr/include/WPEFramework/securityagent +cp $GITHUB_WORKSPACE/stubs/securityagent/* /usr/include/WPEFramework/securityagent/ -v + +echo "======================================================================================" +echo "Building IARMBus and WPEFramework securityagent stubs" +cd $GITHUB_WORKSPACE +cd ./stubs +g++ -fPIC -shared -o libIARMBus.so iarm_stubs.cpp -I$GITHUB_WORKSPACE/stubs -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I$IARMBUS_PATH/core -I$IARMBUS_PATH/core/include -fpermissive +g++ -fPIC -shared -o libWPEFrameworkSecurityUtil.so securityagent/SecurityTokenUtil.cpp -I$GITHUB_WORKSPACE/stubs -fpermissive + +cp libIARMBus.so /usr/local/lib/ +cp libWPEFrameworkSecurityUtil.so /usr/local/lib/ diff --git a/cov_build.sh b/cov_build.sh index 54f3fb84..da227aba 100755 --- a/cov_build.sh +++ b/cov_build.sh @@ -9,15 +9,8 @@ ls -la ${GITHUB_WORKSPACE} echo "buliding xdialserver" cd ${GITHUB_WORKSPACE} -cmake -G Ninja -S "$GITHUB_WORKSPACE" -B build/xdialserver \ --DUSE_THUNDER_R4=ON \ --DCMAKE_INSTALL_PREFIX="$GITHUB_WORKSPACE/install/usr" \ --DCMAKE_MODULE_PATH="$GITHUB_WORKSPACE/install/tools/cmake" \ --DCMAKE_VERBOSE_MAKEFILE=ON \ --DCMAKE_CXX_FLAGS="-DEXCEPTIONS_ENABLE=ON \ --I ${GITHUB_WORKSPACE}/Thunder/Source \ --I ${GITHUB_WORKSPACE}/Thunder/Source/core" \ -cmake --build build/xdialserver --target install +make + echo "======================================================================================" exit 0 diff --git a/server/include/gdial-config.h b/server/include/gdial-config.h index c6b9a9bc..13dd4172 100644 --- a/server/include/gdial-config.h +++ b/server/include/gdial-config.h @@ -17,8 +17,8 @@ * limitations under the License. */ -#ifndef GDIAL_H_ -#define GDIAL_H_ +#ifndef _GDIAL_CONFIG_H_ +#define _GDIAL_CONFIG_H_ #ifdef __cplusplus extern "C" { @@ -81,12 +81,6 @@ extern "C" { #define GDIAL_THROTTLE_DELAY_US 100000 #define GDIAL_DEBUG g_print -enum { - GDIAL_ERROR_NONE = 0, - GDIAL_ERROR_NOT_REGISTERED, - GDIAL_ERROR_FAIL_TO_START, -} GDialError; - #define GDIAL_GERROR_CHECK_AND_FREE(err, msg) \ {\ if (err) {\ diff --git a/stubs/iarm_stubs.cpp b/stubs/iarm_stubs.cpp new file mode 100644 index 00000000..ef10fc2d --- /dev/null +++ b/stubs/iarm_stubs.cpp @@ -0,0 +1,68 @@ +#include "libIBus.h" +#include "libIARMCore.h" +using namespace std; + +IARM_Result_t IARM_Malloc(IARM_MemType_t type, size_t size, void **ptr) +{ + return IARM_RESULT_SUCCESS; +} + +IARM_Result_t IARM_Free(IARM_MemType_t type, void *alloc) +{ + return IARM_RESULT_SUCCESS; +} + +IARM_Result_t IARM_Bus_BroadcastEvent(const char *ownerName, IARM_EventId_t eventId, void *arg, size_t argLen) +{ + return IARM_RESULT_SUCCESS; +} + +IARM_Result_t IARM_Bus_Init(const char* name) +{ + return IARM_RESULT_SUCCESS; +} + +IARM_Result_t IARM_Bus_Connect() +{ + return IARM_RESULT_SUCCESS; +} + +IARM_Result_t IARM_Bus_IsConnected(const char* memberName, int* isRegistered) +{ + return IARM_RESULT_SUCCESS; +} + +IARM_Result_t IARM_Bus_RegisterEventHandler(const char* ownerName, IARM_EventId_t eventId, IARM_EventHandler_t handler) +{ + return IARM_RESULT_SUCCESS; +} + +IARM_Result_t IARM_Bus_UnRegisterEventHandler(const char* ownerName, IARM_EventId_t eventId) +{ + return IARM_RESULT_SUCCESS; +} + +IARM_Result_t IARM_Bus_RemoveEventHandler(const char* ownerName, IARM_EventId_t eventId, IARM_EventHandler_t handler) +{ + return IARM_RESULT_SUCCESS; +} +IARM_Result_t IARM_Bus_RegisterCall(const char *methodName, IARM_BusCall_t handler) +{ +return IARM_RESULT_SUCCESS; +} +IARM_Result_t IARM_Bus_Term(void) +{ +return IARM_RESULT_SUCCESS; +} +IARM_Result_t IARM_Bus_Disconnect(void) +{ +return IARM_RESULT_SUCCESS; +} +IARM_Result_t IARM_Bus_RegisterEvent(IARM_EventId_t maxEventId) +{ +return IARM_RESULT_SUCCESS; +} +IARM_Result_t IARM_Bus_Call(const char* ownerName, const char* methodName, void* arg, size_t argLen) +{ + return IARM_RESULT_SUCCESS; +} diff --git a/stubs/securityagent/SecurityTokenUtil.cpp b/stubs/securityagent/SecurityTokenUtil.cpp new file mode 100644 index 00000000..a743d52f --- /dev/null +++ b/stubs/securityagent/SecurityTokenUtil.cpp @@ -0,0 +1,56 @@ +/* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2020 RDK Management + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include "SecurityTokenUtil.h" +/* + * Send thunder security token for localhost. + * This token can be used by native applications to securely access rdkservices. + */ + +using namespace std; + +extern "C" { + /* + * GetSecurityToken - function to obtain a token from SecurityAgent + * + * Parameters + * maxLength - holds the maximum uint8_t length of the buffer + * Id - Buffer to hold the token. + * + * Return value + * < 0 - failure, absolute value returned is the length required to store the token + * > 0 - success, char length of the returned token + * + * Post-condition; return value 0 should not occur + * + */ + int GetSecurityToken(unsigned short maxLength, unsigned char buffer[]) + { + // get a localhost token + string payload = "http://localhost"; + + size_t len = payload.length(); + + if(!memcpy(buffer,payload.c_str(),len)) + return -1; + return 0; + } +} diff --git a/stubs/securityagent/SecurityTokenUtil.h b/stubs/securityagent/SecurityTokenUtil.h new file mode 100644 index 00000000..b32894f5 --- /dev/null +++ b/stubs/securityagent/SecurityTokenUtil.h @@ -0,0 +1,50 @@ +/* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2020 RDK Management + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#ifdef __WINDOWS__ +#undef EXTERNAL +#ifdef SECURITYUTILITY_EXPORTS +#define EXTERNAL EXTERNAL_EXPORT +#else +#define EXTERNAL EXTERNAL_IMPORT +#endif +#else +#undef EXTERNAL +#define EXTERNAL +#endif + +extern "C" { + /* + * GetSecurityToken - function to obtain a token from SecurityAgent + * + * Parameters + * maxLength - holds the maximum uint8_t length of the buffer + * buffer - Buffer to hold the token. + * + * Return value + * < 0 - failure, absolute value returned is the length required to store the token + * > 0 - success, char length of the returned token + * + * Post-condition; return value 0 should not occur + * + */ + int EXTERNAL GetSecurityToken(unsigned short maxLength, unsigned char buffer[]); +}