Commit 3a429529 authored by Muhammad Umair Khan's avatar Muhammad Umair Khan
Browse files

fix(meep-iot, tinyiot): resolve MEC033 registered IoT platform callback failures

- Add hostId to SssMgrBindingProtocolContext to correct MQTT topics
- Avoid prepending CSE name twice to URL path in http.go
- Register with CSE_BASE_NAME instead of CSE_BASE_RI
- Expose external port 80 in user transport info to prevent callback timeouts
- Support ALLOWED_REMOTE_CSE_ID dynamically and handle hostname-to-IP resolution
- Fix service name fallback in meep-tinyiot-in-cse values template
parent 91cd00dc
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -25,10 +25,10 @@ image:
    MEEP_SANDBOX_NAME: {{.SandboxName}}
    MEEP_SVC_PATH: /tinyiot-in-cse
    MEEP_HOST_URL: {{.HostUrl}}
    SERVER_IP: {{ .ServerIP | default "192.168.0.112" | quote }}
    SERVER_IP: {{.HostUrl}}
    SERVER_TYPE: "IN_CSE"
    SERVER_PORT: 3002
    MQTT_ENABLE:  "true"
    MQTT_ENABLE:  "1"
    CSE_BASE_NAME: "TinyIoT-IN"
    CSE_BASE_RI: "tinyiot"
    MQTT_HOST: "meep-mosquitto"
@@ -52,7 +52,7 @@ service:
  {{- if .IsMepService }}
  name: {{.MepName}}-meep-tinyiot-in-cse
  {{- else }}
  name: meep-tinyiot-mn-cse
  name: meep-tinyiot-in-cse
  {{- end }}
  type: ClusterIP
  port: 80
+10 −6
Original line number Diff line number Diff line
@@ -41,7 +41,7 @@ MEC_HOST_URL=${SERVER_IP}
MEC_PLATFORM=${MEEP_MEP_NAME:-${MEC_PLATFORM:-"mep1"}}
MEC_SANDBOX_ID=${MEEP_SANDBOX_NAME:-"meep-sandbox"}
MEC_APP_INSTANCE_ID=${MEEP_INSTANCE_ID:-"tinyiot-in-cse-instance"}
MEC_HTTP_HOST=${MEC_HTTP_HOST:-"meep-tinyiot-in-cse"}
MEC_HTTP_HOST=${MEC_HTTP_HOST:-"${MEEP_MEP_NAME:-"mep1"}-meep-tinyiot-in-cse"}

echo "ENVIRONMENT VARIABLES SET:"
echo "SERVER_IP: ${SERVER_IP}"
@@ -66,17 +66,18 @@ echo "MEC_HTTP_HOST: ${MEC_HTTP_HOST}"
# ------------------------------------------------------------------
# Export Variables
# ------------------------------------------------------------------
ALLOWED_REMOTE_CSE_ID=${ALLOWED_REMOTE_CSE_ID:-"/tinyiot,/tinyiot-mn-cse,/tinyiot-in-cse,/id-in,/id-mn"}

export MQTT_ENABLE MQTT_HOST MQTT_PORT MQTT_USERNAME MQTT_PASSWORD
export SERVER_PORT SERVER_TYPE SERVER_IP
export ENABLE_COAP CSE_BASE_NAME CSE_BASE_RI
export ENABLE_COAP CSE_BASE_NAME CSE_BASE_RI ALLOWED_REMOTE_CSE_ID
export MEC_ENABLE MEC_HOST_URL MEC_PLATFORM MEC_SANDBOX_ID MEC_APP_INSTANCE_ID MEC_HTTP_HOST

# ------------------------------------------------------------------
# Build TinyIoT
# ------------------------------------------------------------------

workdir="/usr/src/app/tinyIoT/server"
workdir="/usr/src/app/tinyIoT/source/server"

cd "$workdir" || {
    echo "Directory $workdir not found"
@@ -103,7 +104,7 @@ if [ "${MEC_ENABLE}" = "1" ]; then
    echo "Registering to MEC platform..."

    curl -k -s -X POST \
        "https://${MEC_HOST_URL}/${MEC_SANDBOX_ID}/${MEC_PLATFORM}/iots/v1/registered_iot_platforms" \
        "http://${MEC_PLATFORM}-meep-iot/iots/v1/registered_iot_platforms" \
        -H "Content-Type: application/json" \
        -d '{
            "iotPlatformId": "'"${CSE_BASE_RI}"'",
@@ -140,15 +141,18 @@ if [ "${MEC_ENABLE}" = "1" ]; then
            }],
            "customServicesTransportInfo": [{
                "id": "'"${CSE_BASE_RI}"'-http-01",
                "name": "'"${CSE_BASE_RI}"'",
                "name": "'"${CSE_BASE_NAME}"'",
                "description": "TinyIoT CSE HTTP",
                "type": "REST_HTTP",
                "protocol": "REST_HTTP",
                "version": "1.1",
                "endpoint": {
                    "uris": [
                        "'"${MEEP_HOST_URL}/${MEC_SANDBOX_ID}/${MEC_PLATFORM}/${MEC_HTTP_HOST}"'"
                    ],
                    "addresses": [{
                        "host": "'"${MEC_HTTP_HOST}"'",
                        "port": '"${SERVER_PORT}"'
                        "port": 80
                    }]
                },
                "security": {}
+1 −1
Original line number Diff line number Diff line
@@ -73,7 +73,7 @@ export MEC_HOST_URL
export MEC_PLATFORM
export MEC_SANDBOX_ID

workdir="/usr/src/app/tinyIoT/server"
workdir="/usr/src/app/tinyIoT/source/server"
cd "$workdir" || { echo "Directory $workdir not found"; exit 1; }
envsubst < config.h.in > config.h
make clean && make
+1 −1
Original line number Diff line number Diff line
@@ -38,7 +38,7 @@
#define DEFAULT_ACOP ACOP_CREATE

// Set allowed remote CSE ID
#define ALLOWED_REMOTE_CSE_ID "/id-in,/id-mn"
#define ALLOWED_REMOTE_CSE_ID "${ALLOWED_REMOTE_CSE_ID}"

// Run server in mono Thread
// 0 → multi-thread, 1 → mono-thread
+27 −9
Original line number Diff line number Diff line
@@ -52,10 +52,22 @@ echo "MQTT_PASSWORD: ${MQTT_PASSWORD}"
# ------------------------------------------------------------------
# Remote IN-CSE Configuration
# ------------------------------------------------------------------
REMOTE_CSE_HOST=${REMOTE_CSE_HOST:-${MEEP_TINYIOT_IN_CSE_SERVICE_HOST:-"meep-tinyiot-in-cse"}}
REMOTE_CSE_PORT=${REMOTE_CSE_PORT:-${MEEP_TINY_IN_CSE_SERVICE_PORT:-3002}}
REMOTE_CSE_ID=${REMOTE_CSE_ID:-"TinyIoT"}
REMOTE_CSE_NAME=${REMOTE_CSE_NAME:-"tinyiot"}
REMOTE_CSE_HOST=${REMOTE_CSE_HOST:-${MEEP_TINYIOT_IN_CSE_SERVICE_HOST:-"${MEEP_MEP_NAME:-"mep1"}-meep-tinyiot-in-cse"}}
REMOTE_CSE_PORT=${REMOTE_CSE_PORT:-${MEEP_TINY_IN_CSE_SERVICE_PORT:-80}}
REMOTE_CSE_ID=${REMOTE_CSE_ID:-"tinyiot"}
REMOTE_CSE_NAME=${REMOTE_CSE_NAME:-"TinyIoT-IN"}

# Resolve REMOTE_CSE_HOST to IP address since TinyIoT HTTP client doesn't support DNS resolution
if [[ ! "$REMOTE_CSE_HOST" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
    echo "Resolving REMOTE_CSE_HOST hostname to IP: ${REMOTE_CSE_HOST}"
    RESOLVED_IP=$(getent hosts "${REMOTE_CSE_HOST}" | awk '{print $1}')
    if [ ! -z "${RESOLVED_IP}" ]; then
        REMOTE_CSE_HOST="${RESOLVED_IP}"
        echo "Resolved to IP: ${REMOTE_CSE_HOST}"
    else
        echo "Warning: Could not resolve hostname ${REMOTE_CSE_HOST} to IP"
    fi
fi

# ------------------------------------------------------------------
# MEC Configuration
@@ -67,7 +79,7 @@ MEC_HOST_URL=${SERVER_IP}
MEC_PLATFORM=${MEEP_MEP_NAME:-${MEC_PLATFORM:-"mep1"}}
MEC_SANDBOX_ID=${MEEP_SANDBOX_NAME:-"meep-sandbox"}
MEC_APP_INSTANCE_ID=${MEEP_INSTANCE_ID:-"tinyiot-mn-cse-instance"}
MEC_HTTP_HOST=${MEC_HTTP_HOST:-"meep-tinyiot-mn-cse"}
MEC_HTTP_HOST=${MEC_HTTP_HOST:-"${MEEP_MEP_NAME:-"mep1"}-meep-tinyiot-mn-cse"}

# ------------------------------------------------------------------
# Environment Dump
@@ -97,16 +109,18 @@ echo "MEC_HTTP_HOST: ${MEC_HTTP_HOST}"
# ------------------------------------------------------------------
# Export Variables
# ------------------------------------------------------------------
ALLOWED_REMOTE_CSE_ID=${ALLOWED_REMOTE_CSE_ID:-"/tinyiot,/tinyiot-mn-cse,/tinyiot-in-cse,/id-in,/id-mn"}

export MQTT_ENABLE MQTT_HOST MQTT_PORT MQTT_USERNAME MQTT_PASSWORD
export SERVER_PORT SERVER_TYPE SERVER_IP
export ENABLE_COAP CSE_BASE_NAME CSE_BASE_RI
export ENABLE_COAP CSE_BASE_NAME CSE_BASE_RI ALLOWED_REMOTE_CSE_ID
export REMOTE_CSE_ID REMOTE_CSE_NAME REMOTE_CSE_HOST REMOTE_CSE_PORT
export MEC_ENABLE MEC_HOST_URL MEC_PLATFORM MEC_SANDBOX_ID MEC_APP_INSTANCE_ID MEC_HTTP_HOST

# ------------------------------------------------------------------
# Build TinyIoT
# ------------------------------------------------------------------
workdir="/usr/src/app/tinyIoT/server"
workdir="/usr/src/app/tinyIoT/source/server"
cd "$workdir" || {
    echo "Directory $workdir not found"
    exit 1
@@ -166,7 +180,7 @@ if [ "${MEC_ENABLE}" = "1" ]; then
            }],
            "customServicesTransportInfo": [{
                "id": "'"${CSE_BASE_RI}"'-http-01",
                "name": "'"${CSE_BASE_RI}"'",
                "name": "'"${CSE_BASE_NAME}"'",
                "description": "TinyIoT CSE HTTP",
                "type": "REST_HTTP",
                "protocol": "REST_HTTP",
@@ -174,7 +188,11 @@ if [ "${MEC_ENABLE}" = "1" ]; then
                "endpoint": {
                    "uris": [
                        "'"${MEEP_HOST_URL}/${MEC_SANDBOX_ID}/${MEC_PLATFORM}/${MEC_HTTP_HOST}"'"
                    ]
                    ],
                    "addresses": [{
                        "host": "'"${MEC_HTTP_HOST}"'",
                        "port": 80
                    }]
                },
                "security": {}
            }],
Loading