Loading go-apps/meep-iot-pltf/tinyiot-in-cse/Dockerfile +16 −7 Original line number Diff line number Diff line FROM meep-docker-registry:30001/meep-tinyiot-base:latest FROM ubuntu:22.04 RUN DEBIAN_FRONTEND=noninteractive apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get install -y \ autoconf bison build-essential cmake curl dos2unix doxygen emacs expect flex \ g++ gcc git gnutls-bin iputils-ping libedit2 libedit-dev libffi-dev \ libglib2.0-dev libgcrypt-dev libjsoncpp-dev libncurses5-dev libpcap-dev \ libssl-dev libtool-bin libtool libxml2-dev libxml2-utils libyaml-dev \ lsof ntp pkg-config sudo sshpass tcpdump tzdata \ libcurl4-openssl-dev libwebsockets-dev gettext jq && \ apt-get clean && rm -rf /var/lib/apt/lists/* ENV SERVER_IP="" ENV MQTT_ENABLE="" Loading @@ -17,12 +27,11 @@ ENV MEC_PLATFORM="" ENV MEC_SANDBOX_ID="" WORKDIR /usr/src/app COPY ./data/source /usr/src/app/tinyIoT WORKDIR /usr/src/app/tinyIoT COPY ./data /usr/src/app/tinyIoT # Single deterministic copy (no overlapping layers) COPY ./data/ /usr/src/app/tinyIoT/ RUN cd / && chmod +x /usr/src/app/tinyIoT/entrypoint.sh # Ensure entrypoint is executable RUN chmod +x /usr/src/app/tinyIoT/entrypoint.sh ENTRYPOINT ["/usr/src/app/tinyIoT/entrypoint.sh"] No newline at end of file go-apps/meep-iot-pltf/tinyiot-in-cse/entrypoint.sh +121 −77 Original line number Diff line number Diff line Loading @@ -2,46 +2,46 @@ set -e MQTT_ENABLE=${MQTT_ENABLE:-1} SERVER_IP="${SERVER_IP:-192.168.0.112}" echo "Using Helm-injected and Kubernetes auto-injected environment variables instead of API queries" # MEEP / MEC injected variables echo "MEEP_HOST_URL: ${MEEP_HOST_URL}" echo "MEEP_MEP_NAME: ${MEEP_MEP_NAME}" echo "MEEP_SANDBOX_NAME: ${MEEP_SANDBOX_NAME}" echo "MEEP_INSTANCE_ID: ${MEEP_INSTANCE_ID}" if [[ ! -z "${MEEP_MEP_NAME}" ]]; then svcPath="${MEEP_SANDBOX_NAME}/${MEEP_MEP_NAME}" else svcPath="${MEEP_SANDBOX_NAME}" fi if [ "${MEEP_HOST_URL}" == "" ] then echo "$0: MEEP_HOST_URL parameter is not set" MEEP_HOST_URL=mec-platform.etsi.org fi # Normalize host without modifying original MEEP_HOST_URL SERVER_IP="${MEEP_HOST_URL#http://}" SERVER_IP="${SERVER_IP#https://}" sleep 5 # Wait for ETSI MEC Platform up and stable MQTT_ENABLE=${MQTT_ENABLE:-1} # MQTT Configuration MQTT_HOST=${MQTT_HOST:-${MEP1_MEEP_MOSQUITTO_SERVICE_HOST:-${MEEP_MOSQUITTO_SERVICE_HOST:-"meep-mosquitto"}}} MQTT_PORT=${MQTT_PORT:-1883} SERVER_IP=${SERVER_IP:-"0.0.0.0"} [ -z "$SERVER_IP" ] && SERVER_IP="0.0.0.0" SERVER_IP="${SERVER_IP:-0.0.0.0}" SERVER_PORT=${SERVER_PORT:-3002} [ -z "$SERVER_PORT" ] && SERVER_PORT="3002" ENABLE_COAP=${ENABLE_COAP:-0} CSE_BASE_NAME=${CSE_BASE_NAME:-"TinyIoT"} CSE_BASE_RI=${CSE_BASE_RI:-"tinyiot"} SERVER_TYPE=${SERVER_TYPE:-IN_CSE} [ -z "$SERVER_TYPE" ] && SERVER_TYPE="IN_CSE" MQTT_USERNAME=${MQTT_USERNAME:-"tinyiot-in-cse"} MQTT_PASSWORD=${MQTT_PASSWORD:-"mqtt"} echo "MQTT_USERNAME: ${MQTT_USERNAME}" echo "MQTT_PASSWORD: ${MQTT_PASSWORD}" # ------------------------------------------------------------------ # MEC Configuration MEC_ENABLE=${MEC_ENABLE:-0} # Strip http:// or https:// prefix from MEEP_HOST_URL for MEC_HOST_URL MEC_HOST_URL=$(echo "${MEEP_HOST_URL:-meep-platform.etsi.org}" | sed 's|https\?://||') [ -z "$MEC_HOST_URL" ] && MEC_HOST_URL="meep-platform.etsi.org" MEC_PLATFORM=${MEC_PLATFORM:-"mep1"} # ------------------------------------------------------------------ MEC_ENABLE=${MEC_ENABLE:-1} MEC_HOST_URL=${SERVER_IP} MEC_PLATFORM=${MEEP_MEP_NAME:-${MEC_PLATFORM:-"mep1"}} MEC_SANDBOX_ID=${MEEP_SANDBOX_NAME:-"meep-sandbox"} MEC_HTTP_HOST=${MEC_HTTP_HOST:-"meep-tinyiot-in-cse"} MEC_APP_INSTANCE_ID=${MEEP_INSTANCE_ID:-"tinyiot-in-cse-instance"} MEC_HTTP_HOST=${MEC_HTTP_HOST:-"${MEEP_MEP_NAME:-"mep1"}-meep-tinyiot-in-cse"} echo "ENVIRONMENT VARIABLES SET:" echo "SERVER_IP: ${SERVER_IP}" Loading @@ -49,78 +49,122 @@ echo "SERVER_TYPE: ${SERVER_TYPE}" echo "SERVER_PORT: ${SERVER_PORT}" echo "CSE_BASE_NAME: ${CSE_BASE_NAME}" echo "CSE_BASE_RI: ${CSE_BASE_RI}" echo "MQTT_HOST: ${MQTT_HOST}" echo "MQTT_ENABLE: ${MQTT_ENABLE}" echo "MQTT_PORT: ${MQTT_PORT}" echo "MQTT_USERNAME: ${MQTT_USERNAME}" echo "MQTT_PASSWORD: ${MQTT_PASSWORD}" echo "MEC_ENABLE: ${MEC_ENABLE}" echo "MEC_HOST_URL: ${MEC_HOST_URL}" echo "MEC_PLATFORM: ${MEC_PLATFORM}" echo "MEC_SANDBOX_ID: ${MEC_SANDBOX_ID}" echo "MEC_APP_INSTANCE_ID: ${MEC_APP_INSTANCE_ID}" 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 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/source/server" cd "$workdir" || { echo "Directory $workdir not found" exit 1 } export MQTT_ENABLE export MQTT_HOST export MQTT_PORT export MQTT_USERNAME export MQTT_PASSWORD export SERVER_PORT export SERVER_TYPE export SERVER_IP export ENABLE_COAP export CSE_BASE_NAME export CSE_BASE_RI export MEC_ENABLE export MEC_HOST_URL export MEC_PLATFORM export MEC_SANDBOX_ID export MEC_HTTP_HOST workdir="/usr/src/app/tinyIoT/server" cd "$workdir" || { echo "Directory $workdir not found"; exit 1; } envsubst < config.h.in > config.h make clean && make # Start server in background # ------------------------------------------------------------------ # Start TinyIoT Server # ------------------------------------------------------------------ ./server & SERVER_PID=$! # Register to MEC platform after server is ready if [ "${MEC_ENABLE}" == "1" ]; then # ------------------------------------------------------------------ # Register to MEC Platform # ------------------------------------------------------------------ if [ "${MEC_ENABLE}" = "1" ]; then sleep 5 echo "Registering to MEC platform..." curl -k -s -X POST "https://${MEC_HOST_URL}/${MEC_SANDBOX_ID}/${MEC_PLATFORM}/iots/v1/registered_iot_platforms" \ curl -k -s -X POST \ "http://${MEC_PLATFORM}-meep-iot/iots/v1/registered_iot_platforms" \ -H "Content-Type: application/json" \ -d "{ \"iotPlatformId\": \"${CSE_BASE_RI}\", \"userTransportInfo\": [{ \"id\": \"${CSE_BASE_RI}-mqtt-01\", \"name\": \"${CSE_BASE_RI}\", \"description\": \"TinyIoT CSE MQTT\", \"type\": \"MB_TOPIC_BASED\", \"protocol\": \"MQTT\", \"version\": \"3.1.1\", \"endpoint\": {\"addresses\": [{\"host\": \"meep-cloud-mosquitto\", \"port\": 1883}]}, \"security\": {\"username\": \"${MQTT_USERNAME}\", \"password\": \"${MQTT_PASSWORD}\", \"useTLS\": false}, \"implSpecificInfo\": { \"eventTopics\": [\"/oneM2M/req/+/${CSE_BASE_RI}/#\"], \"uplinkTopics\": [\"/oneM2M/resp/${CSE_BASE_RI}/+/#\"], \"downlinkTopics\": [\"/oneM2M/reg_req/+/${CSE_BASE_RI}/#\", \"/oneM2M/reg_resp/${CSE_BASE_RI}/+/#\"] -d '{ "iotPlatformId": "'"${CSE_BASE_RI}"'", "userTransportInfo": [{ "id": "'"${CSE_BASE_RI}"'-mqtt-01", "name": "'"${CSE_BASE_RI}"'", "description": "TinyIoT CSE MQTT", "type": "MB_TOPIC_BASED", "protocol": "MQTT", "version": "3.1.1", "endpoint": { "addresses": [{ "host": "'"${MQTT_HOST}"'", "port": '"${MQTT_PORT}"' }] }, "security": { "username": "'"${MQTT_USERNAME}"'", "password": "'"${MQTT_PASSWORD}"'", "useTLS": false }, "implSpecificInfo": { "eventTopics": [ "/oneM2M/req/+/'"${CSE_BASE_RI}"'/#" ], "uplinkTopics": [ "/oneM2M/resp/'"${CSE_BASE_RI}"'/+/#" ], "downlinkTopics": [ "/oneM2M/reg_req/+/'"${CSE_BASE_RI}"'/#", "/oneM2M/reg_resp/'"${CSE_BASE_RI}"'/+/#" ] } }], \"customServicesTransportInfo\": [{ \"id\": \"${CSE_BASE_RI}-http-01\", \"name\": \"${CSE_BASE_RI}\", \"description\": \"TinyIoT CSE HTTP\", \"type\": \"REST_HTTP\", \"protocol\": \"REST_HTTP\", \"version\": \"1.1\", \"endpoint\": {\"addresses\": [{\"host\": \"${MEC_HTTP_HOST}\", \"port\": ${SERVER_PORT}}]}, \"security\": {} "customServicesTransportInfo": [{ "id": "'"${CSE_BASE_RI}"'-http-01", "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": 80 }] }, "security": {} }], \"enabled\": true }" && echo "MEC registration successful" || echo "MEC registration failed (non-fatal)" "enabled": true }' \ && echo "MEC registration successful" \ || echo "MEC registration failed (non-fatal)" fi # Wait for server process # ------------------------------------------------------------------ # Wait for Server Process # ------------------------------------------------------------------ wait $SERVER_PID No newline at end of file go-apps/meep-iot-pltf/tinyiot-mn-cse/Dockerfile +96 −50 Original line number Diff line number Diff line FROM meep-docker-registry:30001/meep-tinyiot-base:latest FROM ubuntu:22.04 RUN DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y \ autoconf \ bison \ build-essential \ cmake \ curl \ dos2unix \ doxygen \ emacs \ expect \ flex \ g++ \ gcc \ git \ gnutls-bin \ iputils-ping \ libedit2 \ libedit-dev \ libffi-dev \ libglib2.0-dev \ libgcrypt-dev \ libjsoncpp-dev \ libncurses5-dev \ libpcap-dev \ libssl-dev \ libtool-bin \ libtool \ libxml2-dev \ libxml2-utils \ libyaml-dev \ lsof \ ntp \ pkg-config \ sudo \ sshpass \ tcpdump \ tzdata \ libcurl4-openssl-dev \ libwebsockets-dev \ gettext \ jq \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* ENV SERVER_IP="" ENV MQTT_ENABLE="" Loading go-apps/meep-iot-pltf/tinyiot-mn-cse/entrypoint.sh +155 −108 Original line number Diff line number Diff line Loading @@ -2,42 +2,19 @@ set -e MQTT_ENABLE=${MQTT_ENABLE:-1} # Process MEEP_HOST_URL #SERVER_IP="${MEEP_HOST_URL#http://}"; MEEP_HOST_URL="${MEEP_HOST_URL#https://}" SERVER_IP="${SERVER_IP:-192.168.0.112}" # ========== KUBERNETES API QUERIES COMMENTED OUT ========== # These queries return null in this environment. # Instead, use Kubernetes auto-injected environment variables or Helm-injected values. # # MEEP_SANDBOX_NAME # SERVICE_NAME="meep-tinyiot-in-cse" # # Get the namespace from the service account # NAMESPACE=$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace) # # Get the token from the service account # TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token) # # Query the Kubernetes API to get the NodePort for the service # NODE_PORT_IN_CSE=$(curl -sSk \ # -H "Authorization: Bearer $TOKEN" \ # https://kubernetes.default.svc/api/v1/namespaces/$NAMESPACE/services/$SERVICE_NAME \ # | jq -r '.spec.ports[0].nodePort') # echo "External NodePort exposed for service [$SERVICE_NAME] in namespace [$NAMESPACE] is: $NODE_PORT_IN_CSE" # SERVICE_NAME="meep-mosquitto" # NODE_PORT_MEEP_MOSQUITTO=$(curl -sSk \ # -H "Authorization: Bearer $TOKEN" \ # https://kubernetes.default.svc/api/v1/namespaces/$NAMESPACE/services/$SERVICE_NAME \ # | jq -r '.spec.ports[0].nodePort') # echo "External NodePort exposed for service [$SERVICE_NAME] in namespace [$NAMESPACE] is: $NODE_PORT_MEEP_MOSQUITTO" # ------------------------------------------------------------------ # MEEP / MEC injected variables # ------------------------------------------------------------------ echo "Using Helm-injected and Kubernetes auto-injected environment variables instead of API queries" echo "MEEP_HOST_URL: ${MEEP_HOST_URL}" echo "MEEP_MEP_NAME: ${MEEP_MEP_NAME}" echo "MEEP_SANDBOX_NAME: ${MEEP_SANDBOX_NAME}" echo "MEEP_INSTANCE_ID: ${MEEP_INSTANCE_ID}" # REMOTE_CSE_HOST=$(curl -sSk \ # -H "Authorization: Bearer $TOKEN" \ # https://kubernetes.default.svc/api/v1/namespaces/$NAMESPACE/services/$SERVICE_NAME \ # | jq -r '.spec.clusterIP') # Normalize host without modifying original MEEP_HOST_URL SERVER_IP="${MEEP_HOST_URL#http://}" SERVER_IP="${SERVER_IP#https://}" if [[ ! -z "${MEEP_MEP_NAME}" ]]; then svcPath="${MEEP_SANDBOX_NAME}/${MEEP_MEP_NAME}" Loading @@ -45,43 +22,80 @@ else svcPath="${MEEP_SANDBOX_NAME}" fi if [ "${MEEP_HOST_URL}" == "" ] then if [ -z "${MEEP_HOST_URL}" ]; then echo "$0: MEEP_HOST_URL parameter is not set" MEEP_HOST_URL=mec-platform.etsi.org MEEP_HOST_URL="mec-platform.etsi.org" fi sleep 30 # Wait for ETSI MEC Platform and IN-CSE to be up and stable MQTT_ENABLE=${MQTT_ENABLE:-1} # Use Helm-injected values or Kubernetes auto-injected variables # ------------------------------------------------------------------ # MQTT Configuration # ------------------------------------------------------------------ MQTT_HOST=${MQTT_HOST:-${MEP1_MEEP_MOSQUITTO_SERVICE_HOST:-${MEEP_MOSQUITTO_SERVICE_HOST:-"meep-mosquitto"}}} MQTT_PORT=${MQTT_PORT:-1883} SERVER_IP=${SERVER_IP:-"0.0.0.0"} [ -z "$SERVER_IP" ] && SERVER_IP="0.0.0.0" SERVER_IP="${SERVER_IP:-0.0.0.0}" SERVER_PORT=${SERVER_PORT:-3005} [ -z "$SERVER_PORT" ] && SERVER_PORT="3005" ENABLE_COAP=${ENABLE_COAP:-0} CSE_BASE_NAME=${CSE_BASE_NAME:-"id-mn"} CSE_BASE_RI=${CSE_BASE_RI:-"id-mn"} SERVER_TYPE=${SERVER_TYPE:- MN_CSE} [ -z "$SERVER_TYPE" ] && SERVER_TYPE="MN_CSE" SERVER_TYPE=${SERVER_TYPE:-"MN_CSE"} MQTT_USERNAME=${MQTT_USERNAME:-"tinyiot-mn-cse"} MQTT_PASSWORD=${MQTT_PASSWORD:-"mqtt"} # Use Helm-injected values or Kubernetes auto-injected variables 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"} echo "MQTT_USERNAME: ${MQTT_USERNAME}" echo "MQTT_PASSWORD: ${MQTT_PASSWORD}" # ------------------------------------------------------------------ if [ -z "${REMOTE_CSE_HOST}" ]; then # Try different potential hostnames for IN-CSE for host in "monaco-telecom-meep-tinyiot-in-cse" "${MEEP_MEP_NAME}-meep-tinyiot-in-cse" "mep1-meep-tinyiot-in-cse" "mep2-meep-tinyiot-in-cse" "meep-tinyiot-in-cse"; do if [ ! -z "${host}" ]; then echo "Checking resolution for: ${host}" if getent hosts "${host}" >/dev/null 2>&1; then REMOTE_CSE_HOST="${host}" echo "Found resolvable remote CSE host: ${REMOTE_CSE_HOST}" break fi fi done # Fallback to default if none resolved REMOTE_CSE_HOST=${REMOTE_CSE_HOST:-"${MEEP_MEP_NAME:-"mep1"}-meep-tinyiot-in-cse"} fi REMOTE_CSE_PORT=${REMOTE_CSE_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 MEC_ENABLE=${MEC_ENABLE:-0} # Strip http:// or https:// prefix from MEEP_HOST_URL for MEC_HOST_URL MEC_HOST_URL=$(echo "${MEEP_HOST_URL:-meep-platform.etsi.org}" | sed 's|https\?://||') [ -z "$MEC_HOST_URL" ] && MEC_HOST_URL="meep-platform.etsi.org" MEC_PLATFORM=${MEC_PLATFORM:-"mep1"} # ------------------------------------------------------------------ MEC_ENABLE=${MEC_ENABLE:-1} MEC_HOST_URL=${SERVER_IP} [ -z "$MEC_HOST_URL" ] && MEC_HOST_URL="mec-platform.etsi.org" MEC_PLATFORM=${MEEP_MEP_NAME:-${MEC_PLATFORM:-"mep1"}} MEC_SANDBOX_ID=${MEEP_SANDBOX_NAME:-"meep-sandbox"} MEC_HTTP_HOST=${MEC_HTTP_HOST:-"meep-tinyiot-mn-cse-1"} MEC_APP_INSTANCE_ID=${MEEP_INSTANCE_ID:-"tinyiot-mn-cse-instance"} MEC_HTTP_HOST=${MEC_HTTP_HOST:-"${MEEP_MEP_NAME:-"mep1"}-meep-tinyiot-mn-cse"} # ------------------------------------------------------------------ # Environment Dump # ------------------------------------------------------------------ echo "ENVIRONMENT VARIABLES SET:" echo "SERVER_IP: ${SERVER_IP}" echo "SERVER_TYPE: ${SERVER_TYPE}" Loading @@ -101,73 +115,106 @@ echo "MEC_ENABLE: ${MEC_ENABLE}" echo "MEC_HOST_URL: ${MEC_HOST_URL}" echo "MEC_PLATFORM: ${MEC_PLATFORM}" echo "MEC_SANDBOX_ID: ${MEC_SANDBOX_ID}" echo "MEC_APP_INSTANCE_ID: ${MEC_APP_INSTANCE_ID}" 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 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/source/server" cd "$workdir" || { echo "Directory $workdir not found" exit 1 } export MQTT_ENABLE export MQTT_HOST export MQTT_PORT export MQTT_USERNAME export MQTT_PASSWORD export SERVER_PORT export SERVER_TYPE export SERVER_IP export ENABLE_COAP export CSE_BASE_NAME export CSE_BASE_RI export REMOTE_CSE_ID export REMOTE_CSE_NAME export REMOTE_CSE_HOST export REMOTE_CSE_PORT export MEC_ENABLE export MEC_HOST_URL export MEC_PLATFORM export MEC_SANDBOX_ID export MEC_HTTP_HOST workdir="/usr/src/app/tinyIoT/server" cd "$workdir" || { echo "Directory $workdir not found"; exit 1; } envsubst < config.h.in > config.h make clean && make # Start server in background # ------------------------------------------------------------------ # Start TinyIoT Server # ------------------------------------------------------------------ ./server & SERVER_PID=$! # Register to MEC platform after server is ready if [ "${MEC_ENABLE}" == "1" ]; then # ------------------------------------------------------------------ # Register to MEC Platform # ------------------------------------------------------------------ if [ "${MEC_ENABLE}" = "1" ]; then sleep 5 echo "Registering to MEC platform..." curl -k -s -X POST "https://${MEC_HOST_URL}/${MEC_SANDBOX_ID}/${MEC_PLATFORM}/iots/v1/registered_iot_platforms" \ curl -s -X POST \ "http://${MEC_PLATFORM}-meep-iot/iots/v1/registered_iot_platforms" \ -H "Content-Type: application/json" \ -d "{ \"iotPlatformId\": \"${CSE_BASE_RI}\", \"userTransportInfo\": [{ \"id\": \"${CSE_BASE_RI}-mqtt-01\", \"name\": \"${CSE_BASE_RI}\", \"description\": \"TinyIoT CSE MQTT\", \"type\": \"MB_TOPIC_BASED\", \"protocol\": \"MQTT\", \"version\": \"3.1.1\", \"endpoint\": {\"addresses\": [{\"host\": \"meep-cloud-mosquitto\", \"port\": 1883}]}, \"security\": {\"username\": \"${MQTT_USERNAME}\", \"password\": \"${MQTT_PASSWORD}\", \"useTLS\": false}, \"implSpecificInfo\": { \"eventTopics\": [\"/oneM2M/req/+/${CSE_BASE_RI}/#\"], \"uplinkTopics\": [\"/oneM2M/resp/${CSE_BASE_RI}/+/#\"], \"downlinkTopics\": [\"/oneM2M/reg_req/+/${CSE_BASE_RI}/#\", \"/oneM2M/reg_resp/${CSE_BASE_RI}/+/#\"] -d '{ "iotPlatformId": "'"${CSE_BASE_RI}"'", "userTransportInfo": [{ "id": "'"${CSE_BASE_RI}"'-mqtt-01", "name": "'"${CSE_BASE_RI}"'", "description": "TinyIoT CSE MQTT", "type": "MB_TOPIC_BASED", "protocol": "MQTT", "version": "3.1.1", "endpoint": { "addresses": [{ "host": "'"${MQTT_HOST}"'", "port": '"${MQTT_PORT}"' }] }, "security": { "username": "'"${MQTT_USERNAME}"'", "password": "'"${MQTT_PASSWORD}"'", "useTLS": false }, "implSpecificInfo": { "eventTopics": [ "/oneM2M/req/+/'"${CSE_BASE_RI}"'/#" ], "uplinkTopics": [ "/oneM2M/resp/'"${CSE_BASE_RI}"'/+/#" ], "downlinkTopics": [ "/oneM2M/reg_req/+/'"${CSE_BASE_RI}"'/#", "/oneM2M/reg_resp/'"${CSE_BASE_RI}"'/+/#" ] } }], \"customServicesTransportInfo\": [{ \"id\": \"${CSE_BASE_RI}-http-01\", \"name\": \"${CSE_BASE_RI}\", \"description\": \"TinyIoT CSE HTTP\", \"type\": \"REST_HTTP\", \"protocol\": \"REST_HTTP\", \"version\": \"1.1\", \"endpoint\": {\"addresses\": [{\"host\": \"${MEC_HTTP_HOST}\", \"port\": ${SERVER_PORT}}]}, \"security\": {} "customServicesTransportInfo": [{ "id": "'"${CSE_BASE_RI}"'-http-01", "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": 80 }] }, "security": {} }], \"enabled\": true }" && echo "MEC registration successful" || echo "MEC registration failed (non-fatal)" "enabled": true }' \ && echo "MEC registration successful" \ || echo "MEC registration failed (non-fatal)" fi # Wait for server process # ------------------------------------------------------------------ # Wait for Server Process # ------------------------------------------------------------------ wait $SERVER_PID No newline at end of file Loading
go-apps/meep-iot-pltf/tinyiot-in-cse/Dockerfile +16 −7 Original line number Diff line number Diff line FROM meep-docker-registry:30001/meep-tinyiot-base:latest FROM ubuntu:22.04 RUN DEBIAN_FRONTEND=noninteractive apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get install -y \ autoconf bison build-essential cmake curl dos2unix doxygen emacs expect flex \ g++ gcc git gnutls-bin iputils-ping libedit2 libedit-dev libffi-dev \ libglib2.0-dev libgcrypt-dev libjsoncpp-dev libncurses5-dev libpcap-dev \ libssl-dev libtool-bin libtool libxml2-dev libxml2-utils libyaml-dev \ lsof ntp pkg-config sudo sshpass tcpdump tzdata \ libcurl4-openssl-dev libwebsockets-dev gettext jq && \ apt-get clean && rm -rf /var/lib/apt/lists/* ENV SERVER_IP="" ENV MQTT_ENABLE="" Loading @@ -17,12 +27,11 @@ ENV MEC_PLATFORM="" ENV MEC_SANDBOX_ID="" WORKDIR /usr/src/app COPY ./data/source /usr/src/app/tinyIoT WORKDIR /usr/src/app/tinyIoT COPY ./data /usr/src/app/tinyIoT # Single deterministic copy (no overlapping layers) COPY ./data/ /usr/src/app/tinyIoT/ RUN cd / && chmod +x /usr/src/app/tinyIoT/entrypoint.sh # Ensure entrypoint is executable RUN chmod +x /usr/src/app/tinyIoT/entrypoint.sh ENTRYPOINT ["/usr/src/app/tinyIoT/entrypoint.sh"] No newline at end of file
go-apps/meep-iot-pltf/tinyiot-in-cse/entrypoint.sh +121 −77 Original line number Diff line number Diff line Loading @@ -2,46 +2,46 @@ set -e MQTT_ENABLE=${MQTT_ENABLE:-1} SERVER_IP="${SERVER_IP:-192.168.0.112}" echo "Using Helm-injected and Kubernetes auto-injected environment variables instead of API queries" # MEEP / MEC injected variables echo "MEEP_HOST_URL: ${MEEP_HOST_URL}" echo "MEEP_MEP_NAME: ${MEEP_MEP_NAME}" echo "MEEP_SANDBOX_NAME: ${MEEP_SANDBOX_NAME}" echo "MEEP_INSTANCE_ID: ${MEEP_INSTANCE_ID}" if [[ ! -z "${MEEP_MEP_NAME}" ]]; then svcPath="${MEEP_SANDBOX_NAME}/${MEEP_MEP_NAME}" else svcPath="${MEEP_SANDBOX_NAME}" fi if [ "${MEEP_HOST_URL}" == "" ] then echo "$0: MEEP_HOST_URL parameter is not set" MEEP_HOST_URL=mec-platform.etsi.org fi # Normalize host without modifying original MEEP_HOST_URL SERVER_IP="${MEEP_HOST_URL#http://}" SERVER_IP="${SERVER_IP#https://}" sleep 5 # Wait for ETSI MEC Platform up and stable MQTT_ENABLE=${MQTT_ENABLE:-1} # MQTT Configuration MQTT_HOST=${MQTT_HOST:-${MEP1_MEEP_MOSQUITTO_SERVICE_HOST:-${MEEP_MOSQUITTO_SERVICE_HOST:-"meep-mosquitto"}}} MQTT_PORT=${MQTT_PORT:-1883} SERVER_IP=${SERVER_IP:-"0.0.0.0"} [ -z "$SERVER_IP" ] && SERVER_IP="0.0.0.0" SERVER_IP="${SERVER_IP:-0.0.0.0}" SERVER_PORT=${SERVER_PORT:-3002} [ -z "$SERVER_PORT" ] && SERVER_PORT="3002" ENABLE_COAP=${ENABLE_COAP:-0} CSE_BASE_NAME=${CSE_BASE_NAME:-"TinyIoT"} CSE_BASE_RI=${CSE_BASE_RI:-"tinyiot"} SERVER_TYPE=${SERVER_TYPE:-IN_CSE} [ -z "$SERVER_TYPE" ] && SERVER_TYPE="IN_CSE" MQTT_USERNAME=${MQTT_USERNAME:-"tinyiot-in-cse"} MQTT_PASSWORD=${MQTT_PASSWORD:-"mqtt"} echo "MQTT_USERNAME: ${MQTT_USERNAME}" echo "MQTT_PASSWORD: ${MQTT_PASSWORD}" # ------------------------------------------------------------------ # MEC Configuration MEC_ENABLE=${MEC_ENABLE:-0} # Strip http:// or https:// prefix from MEEP_HOST_URL for MEC_HOST_URL MEC_HOST_URL=$(echo "${MEEP_HOST_URL:-meep-platform.etsi.org}" | sed 's|https\?://||') [ -z "$MEC_HOST_URL" ] && MEC_HOST_URL="meep-platform.etsi.org" MEC_PLATFORM=${MEC_PLATFORM:-"mep1"} # ------------------------------------------------------------------ MEC_ENABLE=${MEC_ENABLE:-1} MEC_HOST_URL=${SERVER_IP} MEC_PLATFORM=${MEEP_MEP_NAME:-${MEC_PLATFORM:-"mep1"}} MEC_SANDBOX_ID=${MEEP_SANDBOX_NAME:-"meep-sandbox"} MEC_HTTP_HOST=${MEC_HTTP_HOST:-"meep-tinyiot-in-cse"} MEC_APP_INSTANCE_ID=${MEEP_INSTANCE_ID:-"tinyiot-in-cse-instance"} MEC_HTTP_HOST=${MEC_HTTP_HOST:-"${MEEP_MEP_NAME:-"mep1"}-meep-tinyiot-in-cse"} echo "ENVIRONMENT VARIABLES SET:" echo "SERVER_IP: ${SERVER_IP}" Loading @@ -49,78 +49,122 @@ echo "SERVER_TYPE: ${SERVER_TYPE}" echo "SERVER_PORT: ${SERVER_PORT}" echo "CSE_BASE_NAME: ${CSE_BASE_NAME}" echo "CSE_BASE_RI: ${CSE_BASE_RI}" echo "MQTT_HOST: ${MQTT_HOST}" echo "MQTT_ENABLE: ${MQTT_ENABLE}" echo "MQTT_PORT: ${MQTT_PORT}" echo "MQTT_USERNAME: ${MQTT_USERNAME}" echo "MQTT_PASSWORD: ${MQTT_PASSWORD}" echo "MEC_ENABLE: ${MEC_ENABLE}" echo "MEC_HOST_URL: ${MEC_HOST_URL}" echo "MEC_PLATFORM: ${MEC_PLATFORM}" echo "MEC_SANDBOX_ID: ${MEC_SANDBOX_ID}" echo "MEC_APP_INSTANCE_ID: ${MEC_APP_INSTANCE_ID}" 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 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/source/server" cd "$workdir" || { echo "Directory $workdir not found" exit 1 } export MQTT_ENABLE export MQTT_HOST export MQTT_PORT export MQTT_USERNAME export MQTT_PASSWORD export SERVER_PORT export SERVER_TYPE export SERVER_IP export ENABLE_COAP export CSE_BASE_NAME export CSE_BASE_RI export MEC_ENABLE export MEC_HOST_URL export MEC_PLATFORM export MEC_SANDBOX_ID export MEC_HTTP_HOST workdir="/usr/src/app/tinyIoT/server" cd "$workdir" || { echo "Directory $workdir not found"; exit 1; } envsubst < config.h.in > config.h make clean && make # Start server in background # ------------------------------------------------------------------ # Start TinyIoT Server # ------------------------------------------------------------------ ./server & SERVER_PID=$! # Register to MEC platform after server is ready if [ "${MEC_ENABLE}" == "1" ]; then # ------------------------------------------------------------------ # Register to MEC Platform # ------------------------------------------------------------------ if [ "${MEC_ENABLE}" = "1" ]; then sleep 5 echo "Registering to MEC platform..." curl -k -s -X POST "https://${MEC_HOST_URL}/${MEC_SANDBOX_ID}/${MEC_PLATFORM}/iots/v1/registered_iot_platforms" \ curl -k -s -X POST \ "http://${MEC_PLATFORM}-meep-iot/iots/v1/registered_iot_platforms" \ -H "Content-Type: application/json" \ -d "{ \"iotPlatformId\": \"${CSE_BASE_RI}\", \"userTransportInfo\": [{ \"id\": \"${CSE_BASE_RI}-mqtt-01\", \"name\": \"${CSE_BASE_RI}\", \"description\": \"TinyIoT CSE MQTT\", \"type\": \"MB_TOPIC_BASED\", \"protocol\": \"MQTT\", \"version\": \"3.1.1\", \"endpoint\": {\"addresses\": [{\"host\": \"meep-cloud-mosquitto\", \"port\": 1883}]}, \"security\": {\"username\": \"${MQTT_USERNAME}\", \"password\": \"${MQTT_PASSWORD}\", \"useTLS\": false}, \"implSpecificInfo\": { \"eventTopics\": [\"/oneM2M/req/+/${CSE_BASE_RI}/#\"], \"uplinkTopics\": [\"/oneM2M/resp/${CSE_BASE_RI}/+/#\"], \"downlinkTopics\": [\"/oneM2M/reg_req/+/${CSE_BASE_RI}/#\", \"/oneM2M/reg_resp/${CSE_BASE_RI}/+/#\"] -d '{ "iotPlatformId": "'"${CSE_BASE_RI}"'", "userTransportInfo": [{ "id": "'"${CSE_BASE_RI}"'-mqtt-01", "name": "'"${CSE_BASE_RI}"'", "description": "TinyIoT CSE MQTT", "type": "MB_TOPIC_BASED", "protocol": "MQTT", "version": "3.1.1", "endpoint": { "addresses": [{ "host": "'"${MQTT_HOST}"'", "port": '"${MQTT_PORT}"' }] }, "security": { "username": "'"${MQTT_USERNAME}"'", "password": "'"${MQTT_PASSWORD}"'", "useTLS": false }, "implSpecificInfo": { "eventTopics": [ "/oneM2M/req/+/'"${CSE_BASE_RI}"'/#" ], "uplinkTopics": [ "/oneM2M/resp/'"${CSE_BASE_RI}"'/+/#" ], "downlinkTopics": [ "/oneM2M/reg_req/+/'"${CSE_BASE_RI}"'/#", "/oneM2M/reg_resp/'"${CSE_BASE_RI}"'/+/#" ] } }], \"customServicesTransportInfo\": [{ \"id\": \"${CSE_BASE_RI}-http-01\", \"name\": \"${CSE_BASE_RI}\", \"description\": \"TinyIoT CSE HTTP\", \"type\": \"REST_HTTP\", \"protocol\": \"REST_HTTP\", \"version\": \"1.1\", \"endpoint\": {\"addresses\": [{\"host\": \"${MEC_HTTP_HOST}\", \"port\": ${SERVER_PORT}}]}, \"security\": {} "customServicesTransportInfo": [{ "id": "'"${CSE_BASE_RI}"'-http-01", "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": 80 }] }, "security": {} }], \"enabled\": true }" && echo "MEC registration successful" || echo "MEC registration failed (non-fatal)" "enabled": true }' \ && echo "MEC registration successful" \ || echo "MEC registration failed (non-fatal)" fi # Wait for server process # ------------------------------------------------------------------ # Wait for Server Process # ------------------------------------------------------------------ wait $SERVER_PID No newline at end of file
go-apps/meep-iot-pltf/tinyiot-mn-cse/Dockerfile +96 −50 Original line number Diff line number Diff line FROM meep-docker-registry:30001/meep-tinyiot-base:latest FROM ubuntu:22.04 RUN DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y \ autoconf \ bison \ build-essential \ cmake \ curl \ dos2unix \ doxygen \ emacs \ expect \ flex \ g++ \ gcc \ git \ gnutls-bin \ iputils-ping \ libedit2 \ libedit-dev \ libffi-dev \ libglib2.0-dev \ libgcrypt-dev \ libjsoncpp-dev \ libncurses5-dev \ libpcap-dev \ libssl-dev \ libtool-bin \ libtool \ libxml2-dev \ libxml2-utils \ libyaml-dev \ lsof \ ntp \ pkg-config \ sudo \ sshpass \ tcpdump \ tzdata \ libcurl4-openssl-dev \ libwebsockets-dev \ gettext \ jq \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* ENV SERVER_IP="" ENV MQTT_ENABLE="" Loading
go-apps/meep-iot-pltf/tinyiot-mn-cse/entrypoint.sh +155 −108 Original line number Diff line number Diff line Loading @@ -2,42 +2,19 @@ set -e MQTT_ENABLE=${MQTT_ENABLE:-1} # Process MEEP_HOST_URL #SERVER_IP="${MEEP_HOST_URL#http://}"; MEEP_HOST_URL="${MEEP_HOST_URL#https://}" SERVER_IP="${SERVER_IP:-192.168.0.112}" # ========== KUBERNETES API QUERIES COMMENTED OUT ========== # These queries return null in this environment. # Instead, use Kubernetes auto-injected environment variables or Helm-injected values. # # MEEP_SANDBOX_NAME # SERVICE_NAME="meep-tinyiot-in-cse" # # Get the namespace from the service account # NAMESPACE=$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace) # # Get the token from the service account # TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token) # # Query the Kubernetes API to get the NodePort for the service # NODE_PORT_IN_CSE=$(curl -sSk \ # -H "Authorization: Bearer $TOKEN" \ # https://kubernetes.default.svc/api/v1/namespaces/$NAMESPACE/services/$SERVICE_NAME \ # | jq -r '.spec.ports[0].nodePort') # echo "External NodePort exposed for service [$SERVICE_NAME] in namespace [$NAMESPACE] is: $NODE_PORT_IN_CSE" # SERVICE_NAME="meep-mosquitto" # NODE_PORT_MEEP_MOSQUITTO=$(curl -sSk \ # -H "Authorization: Bearer $TOKEN" \ # https://kubernetes.default.svc/api/v1/namespaces/$NAMESPACE/services/$SERVICE_NAME \ # | jq -r '.spec.ports[0].nodePort') # echo "External NodePort exposed for service [$SERVICE_NAME] in namespace [$NAMESPACE] is: $NODE_PORT_MEEP_MOSQUITTO" # ------------------------------------------------------------------ # MEEP / MEC injected variables # ------------------------------------------------------------------ echo "Using Helm-injected and Kubernetes auto-injected environment variables instead of API queries" echo "MEEP_HOST_URL: ${MEEP_HOST_URL}" echo "MEEP_MEP_NAME: ${MEEP_MEP_NAME}" echo "MEEP_SANDBOX_NAME: ${MEEP_SANDBOX_NAME}" echo "MEEP_INSTANCE_ID: ${MEEP_INSTANCE_ID}" # REMOTE_CSE_HOST=$(curl -sSk \ # -H "Authorization: Bearer $TOKEN" \ # https://kubernetes.default.svc/api/v1/namespaces/$NAMESPACE/services/$SERVICE_NAME \ # | jq -r '.spec.clusterIP') # Normalize host without modifying original MEEP_HOST_URL SERVER_IP="${MEEP_HOST_URL#http://}" SERVER_IP="${SERVER_IP#https://}" if [[ ! -z "${MEEP_MEP_NAME}" ]]; then svcPath="${MEEP_SANDBOX_NAME}/${MEEP_MEP_NAME}" Loading @@ -45,43 +22,80 @@ else svcPath="${MEEP_SANDBOX_NAME}" fi if [ "${MEEP_HOST_URL}" == "" ] then if [ -z "${MEEP_HOST_URL}" ]; then echo "$0: MEEP_HOST_URL parameter is not set" MEEP_HOST_URL=mec-platform.etsi.org MEEP_HOST_URL="mec-platform.etsi.org" fi sleep 30 # Wait for ETSI MEC Platform and IN-CSE to be up and stable MQTT_ENABLE=${MQTT_ENABLE:-1} # Use Helm-injected values or Kubernetes auto-injected variables # ------------------------------------------------------------------ # MQTT Configuration # ------------------------------------------------------------------ MQTT_HOST=${MQTT_HOST:-${MEP1_MEEP_MOSQUITTO_SERVICE_HOST:-${MEEP_MOSQUITTO_SERVICE_HOST:-"meep-mosquitto"}}} MQTT_PORT=${MQTT_PORT:-1883} SERVER_IP=${SERVER_IP:-"0.0.0.0"} [ -z "$SERVER_IP" ] && SERVER_IP="0.0.0.0" SERVER_IP="${SERVER_IP:-0.0.0.0}" SERVER_PORT=${SERVER_PORT:-3005} [ -z "$SERVER_PORT" ] && SERVER_PORT="3005" ENABLE_COAP=${ENABLE_COAP:-0} CSE_BASE_NAME=${CSE_BASE_NAME:-"id-mn"} CSE_BASE_RI=${CSE_BASE_RI:-"id-mn"} SERVER_TYPE=${SERVER_TYPE:- MN_CSE} [ -z "$SERVER_TYPE" ] && SERVER_TYPE="MN_CSE" SERVER_TYPE=${SERVER_TYPE:-"MN_CSE"} MQTT_USERNAME=${MQTT_USERNAME:-"tinyiot-mn-cse"} MQTT_PASSWORD=${MQTT_PASSWORD:-"mqtt"} # Use Helm-injected values or Kubernetes auto-injected variables 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"} echo "MQTT_USERNAME: ${MQTT_USERNAME}" echo "MQTT_PASSWORD: ${MQTT_PASSWORD}" # ------------------------------------------------------------------ if [ -z "${REMOTE_CSE_HOST}" ]; then # Try different potential hostnames for IN-CSE for host in "monaco-telecom-meep-tinyiot-in-cse" "${MEEP_MEP_NAME}-meep-tinyiot-in-cse" "mep1-meep-tinyiot-in-cse" "mep2-meep-tinyiot-in-cse" "meep-tinyiot-in-cse"; do if [ ! -z "${host}" ]; then echo "Checking resolution for: ${host}" if getent hosts "${host}" >/dev/null 2>&1; then REMOTE_CSE_HOST="${host}" echo "Found resolvable remote CSE host: ${REMOTE_CSE_HOST}" break fi fi done # Fallback to default if none resolved REMOTE_CSE_HOST=${REMOTE_CSE_HOST:-"${MEEP_MEP_NAME:-"mep1"}-meep-tinyiot-in-cse"} fi REMOTE_CSE_PORT=${REMOTE_CSE_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 MEC_ENABLE=${MEC_ENABLE:-0} # Strip http:// or https:// prefix from MEEP_HOST_URL for MEC_HOST_URL MEC_HOST_URL=$(echo "${MEEP_HOST_URL:-meep-platform.etsi.org}" | sed 's|https\?://||') [ -z "$MEC_HOST_URL" ] && MEC_HOST_URL="meep-platform.etsi.org" MEC_PLATFORM=${MEC_PLATFORM:-"mep1"} # ------------------------------------------------------------------ MEC_ENABLE=${MEC_ENABLE:-1} MEC_HOST_URL=${SERVER_IP} [ -z "$MEC_HOST_URL" ] && MEC_HOST_URL="mec-platform.etsi.org" MEC_PLATFORM=${MEEP_MEP_NAME:-${MEC_PLATFORM:-"mep1"}} MEC_SANDBOX_ID=${MEEP_SANDBOX_NAME:-"meep-sandbox"} MEC_HTTP_HOST=${MEC_HTTP_HOST:-"meep-tinyiot-mn-cse-1"} MEC_APP_INSTANCE_ID=${MEEP_INSTANCE_ID:-"tinyiot-mn-cse-instance"} MEC_HTTP_HOST=${MEC_HTTP_HOST:-"${MEEP_MEP_NAME:-"mep1"}-meep-tinyiot-mn-cse"} # ------------------------------------------------------------------ # Environment Dump # ------------------------------------------------------------------ echo "ENVIRONMENT VARIABLES SET:" echo "SERVER_IP: ${SERVER_IP}" echo "SERVER_TYPE: ${SERVER_TYPE}" Loading @@ -101,73 +115,106 @@ echo "MEC_ENABLE: ${MEC_ENABLE}" echo "MEC_HOST_URL: ${MEC_HOST_URL}" echo "MEC_PLATFORM: ${MEC_PLATFORM}" echo "MEC_SANDBOX_ID: ${MEC_SANDBOX_ID}" echo "MEC_APP_INSTANCE_ID: ${MEC_APP_INSTANCE_ID}" 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 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/source/server" cd "$workdir" || { echo "Directory $workdir not found" exit 1 } export MQTT_ENABLE export MQTT_HOST export MQTT_PORT export MQTT_USERNAME export MQTT_PASSWORD export SERVER_PORT export SERVER_TYPE export SERVER_IP export ENABLE_COAP export CSE_BASE_NAME export CSE_BASE_RI export REMOTE_CSE_ID export REMOTE_CSE_NAME export REMOTE_CSE_HOST export REMOTE_CSE_PORT export MEC_ENABLE export MEC_HOST_URL export MEC_PLATFORM export MEC_SANDBOX_ID export MEC_HTTP_HOST workdir="/usr/src/app/tinyIoT/server" cd "$workdir" || { echo "Directory $workdir not found"; exit 1; } envsubst < config.h.in > config.h make clean && make # Start server in background # ------------------------------------------------------------------ # Start TinyIoT Server # ------------------------------------------------------------------ ./server & SERVER_PID=$! # Register to MEC platform after server is ready if [ "${MEC_ENABLE}" == "1" ]; then # ------------------------------------------------------------------ # Register to MEC Platform # ------------------------------------------------------------------ if [ "${MEC_ENABLE}" = "1" ]; then sleep 5 echo "Registering to MEC platform..." curl -k -s -X POST "https://${MEC_HOST_URL}/${MEC_SANDBOX_ID}/${MEC_PLATFORM}/iots/v1/registered_iot_platforms" \ curl -s -X POST \ "http://${MEC_PLATFORM}-meep-iot/iots/v1/registered_iot_platforms" \ -H "Content-Type: application/json" \ -d "{ \"iotPlatformId\": \"${CSE_BASE_RI}\", \"userTransportInfo\": [{ \"id\": \"${CSE_BASE_RI}-mqtt-01\", \"name\": \"${CSE_BASE_RI}\", \"description\": \"TinyIoT CSE MQTT\", \"type\": \"MB_TOPIC_BASED\", \"protocol\": \"MQTT\", \"version\": \"3.1.1\", \"endpoint\": {\"addresses\": [{\"host\": \"meep-cloud-mosquitto\", \"port\": 1883}]}, \"security\": {\"username\": \"${MQTT_USERNAME}\", \"password\": \"${MQTT_PASSWORD}\", \"useTLS\": false}, \"implSpecificInfo\": { \"eventTopics\": [\"/oneM2M/req/+/${CSE_BASE_RI}/#\"], \"uplinkTopics\": [\"/oneM2M/resp/${CSE_BASE_RI}/+/#\"], \"downlinkTopics\": [\"/oneM2M/reg_req/+/${CSE_BASE_RI}/#\", \"/oneM2M/reg_resp/${CSE_BASE_RI}/+/#\"] -d '{ "iotPlatformId": "'"${CSE_BASE_RI}"'", "userTransportInfo": [{ "id": "'"${CSE_BASE_RI}"'-mqtt-01", "name": "'"${CSE_BASE_RI}"'", "description": "TinyIoT CSE MQTT", "type": "MB_TOPIC_BASED", "protocol": "MQTT", "version": "3.1.1", "endpoint": { "addresses": [{ "host": "'"${MQTT_HOST}"'", "port": '"${MQTT_PORT}"' }] }, "security": { "username": "'"${MQTT_USERNAME}"'", "password": "'"${MQTT_PASSWORD}"'", "useTLS": false }, "implSpecificInfo": { "eventTopics": [ "/oneM2M/req/+/'"${CSE_BASE_RI}"'/#" ], "uplinkTopics": [ "/oneM2M/resp/'"${CSE_BASE_RI}"'/+/#" ], "downlinkTopics": [ "/oneM2M/reg_req/+/'"${CSE_BASE_RI}"'/#", "/oneM2M/reg_resp/'"${CSE_BASE_RI}"'/+/#" ] } }], \"customServicesTransportInfo\": [{ \"id\": \"${CSE_BASE_RI}-http-01\", \"name\": \"${CSE_BASE_RI}\", \"description\": \"TinyIoT CSE HTTP\", \"type\": \"REST_HTTP\", \"protocol\": \"REST_HTTP\", \"version\": \"1.1\", \"endpoint\": {\"addresses\": [{\"host\": \"${MEC_HTTP_HOST}\", \"port\": ${SERVER_PORT}}]}, \"security\": {} "customServicesTransportInfo": [{ "id": "'"${CSE_BASE_RI}"'-http-01", "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": 80 }] }, "security": {} }], \"enabled\": true }" && echo "MEC registration successful" || echo "MEC registration failed (non-fatal)" "enabled": true }' \ && echo "MEC registration successful" \ || echo "MEC registration failed (non-fatal)" fi # Wait for server process # ------------------------------------------------------------------ # Wait for Server Process # ------------------------------------------------------------------ wait $SERVER_PID No newline at end of file