|
| 1 | +#!/usr/bin/env bash |
| 2 | + |
| 3 | +# Startup script for SONiC Management REST Server |
| 4 | + |
| 5 | +SERVER_PORT= |
| 6 | +LOG_LEVEL= |
| 7 | +CLIENT_AUTH= |
| 8 | +SERVER_CRT= |
| 9 | +SERVER_KEY= |
| 10 | +CA_CERT= |
| 11 | + |
| 12 | +# Read basic server settings from REST_SERVER|default entry |
| 13 | +HAS_REST_CONFIG=$(sonic-cfggen -d -v "1 if REST_SERVER and REST_SERVER['default']") |
| 14 | +if [ "$HAS_REST_CONFIG" == "1" ]; then |
| 15 | + SERVER_PORT=$(sonic-cfggen -d -v "REST_SERVER['default']['port']") |
| 16 | + CLIENT_AUTH=$(sonic-cfggen -d -v "REST_SERVER['default']['client_auth']") |
| 17 | + LOG_LEVEL=$(sonic-cfggen -d -v "REST_SERVER['default']['log_level']") |
| 18 | +fi |
| 19 | + |
| 20 | +# Read certificate file paths from DEVICE_METADATA|x509 entry. |
| 21 | +HAS_X509_CONFIG=$(sonic-cfggen -d -v "1 if DEVICE_METADATA and DEVICE_METADATA['x509']") |
| 22 | +if [ "$HAS_X509_CONFIG" == "1" ]; then |
| 23 | + SERVER_CRT=$(sonic-cfggen -d -v "DEVICE_METADATA['x509']['server_crt']") |
| 24 | + SERVER_KEY=$(sonic-cfggen -d -v "DEVICE_METADATA['x509']['server_key']") |
| 25 | + CA_CRT=$(sonic-cfggen -d -v "DEVICE_METADATA['x509']['ca_crt']") |
| 26 | +fi |
| 27 | + |
| 28 | +# Create temporary server certificate if they not configured in ConfigDB |
| 29 | +if [ -z $SERVER_CRT ] && [ -z $SERVER_KEY ]; then |
| 30 | + echo "Generating temporary TLS server certificate ..." |
| 31 | + (cd /tmp && /usr/sbin/generate_cert --host="localhost,127.0.0.1") |
| 32 | + SERVER_CRT=/tmp/cert.pem |
| 33 | + SERVER_KEY=/tmp/key.pem |
| 34 | +fi |
| 35 | + |
| 36 | + |
| 37 | +REST_SERVER_ARGS="-ui /rest_ui -logtostderr" |
| 38 | +[ ! -z $SERVER_PORT ] && REST_SERVER_ARGS+=" -port $SERVER_PORT" |
| 39 | +[ ! -z $LOG_LEVEL ] && REST_SERVER_ARGS+=" -v $LOG_LEVEL" |
| 40 | +[ ! -z $CLIENT_AUTH ] && REST_SERVER_ARGS+=" -client_auth $CLIENT_AUTH" |
| 41 | +[ ! -z $SERVER_CRT ] && REST_SERVER_ARGS+=" -cert $SERVER_CRT" |
| 42 | +[ ! -z $SERVER_KEY ] && REST_SERVER_ARGS+=" -key $SERVER_KEY" |
| 43 | +[ ! -z $CA_CRT ] && REST_SERVER_ARGS+=" -cacert $CA_CRT" |
| 44 | + |
| 45 | +echo "REST_SERVER_ARGS = $REST_SERVER_ARGS" |
| 46 | + |
| 47 | + |
| 48 | +export CVL_SCHEMA_PATH=/usr/sbin/schema |
| 49 | +export LIBYANG_EXTENSIONS_PLUGINS_DIR=/usr/lib/x86_64-linux-gnu/libyang/extensions |
| 50 | +export LIBYANG_USER_TYPES_PLUGINS_DIR=/usr/lib/x86_64-linux-gnu/libyang/user_types |
| 51 | + |
| 52 | +exec /usr/sbin/rest_server ${REST_SERVER_ARGS} |
0 commit comments