A1-Simulator - Align with OSC Near-RT-RIC A1 Mediator
[sim/a1-interface.git] / near-rt-ric-simulator / src / common / maincommon.py
index 79cda3b..6239f79 100644 (file)
@@ -1,5 +1,5 @@
 #  ============LICENSE_START===============================================
-#  Copyright (C) 2020 Nordix Foundation. All rights reserved.
+#  Copyright (C) 2021 Nordix Foundation. All rights reserved.
 #  ========================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -22,10 +22,11 @@ from flask import Response
 import socket
 import ssl
 
-#Must exist
+# Must exist
 apipath=os.environ['APIPATH']
-#May exist
+# May exist
 remote_hosts_logging=os.getenv('REMOTE_HOSTS_LOGGING')
+duplicate_check=os.getenv('DUPLICATE_CHECK')
 
 # Make sure the api path for the interface yaml file is set, otherwise exit
 def check_apipath():
@@ -40,40 +41,33 @@ def get_supported_interfaces_response():
     arr = os.listdir("../")
     del arr[arr.index('common')] # Remove the common lib
     del arr[arr.index('start.sh')] # Remove the start script
+    arr.sort()
     return Response("Current interface: " + str(pp[len(pp)-1]) + "  All supported A1 interface yamls in this container: "+str(arr), 200, mimetype='text/plain')
 
 # Remote host lookup and store host name in a set
 def extract_host_name(hosts_set, request):
     if (remote_hosts_logging is not None):
-        host_ip=str(request.environ['REMOTE_ADDR'])
+        if request.environ.get('HTTP_X_FORWARDED_FOR') is None:
+            host_ip=str(request.environ['REMOTE_ADDR'])
+        else:
+            host_ip=str(request.environ['HTTP_X_FORWARDED_FOR'])
         prefix='::ffff:'
         if (host_ip.startswith('::ffff:')):
             host_ip=host_ip[len(prefix):]
         try:
             name, alias, addresslist = socket.gethostbyaddr(host_ip)
             hosts_set.add(name)
-        except Exception as e:
+        except Exception:
             hosts_set.add(host_ip)
     else:
         hosts_set.add("logging_of_remote_host_names_not_enabled")
 
-# Check if cert is available and return a sec context, if not return 'None'
-def get_security_context():
-
-    try:
-        path="/usr/src/app/cert"
-        if (os.path.isdir(path)):
-            certpath=path+"/cert.crt"
-            keypath=path+"/key.crt"
-            if (os.path.isfile(certpath) and os.path.isfile(keypath)):
-                context = ssl.SSLContext(ssl.PROTOCOL_TLS)
-                context.load_cert_chain(certpath, keypath, password="test")
-                return context
-            else:
-                print("Cert and/or key does not exists in dir "+str(path))
+# Function to check if duplicate check shall be made
+# True = check for duplicates
+# False = ignore duplicates
+def is_duplicate_check():
+    global duplicate_check
 
-        else:
-            print("Path "+str(path)+" to certificate and key does not exists")
-    except Exception as e:
-        print("Problem when loading cert and key: "+str(e))
-    return None
+    if ((duplicate_check is not None) and (duplicate_check == "1")):
+        return True
+    return False