1 # ============LICENSE_START===============================================
2 # Copyright (C) 2020 Nordix Foundation. All rights reserved.
3 # ========================================================================
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
8 # http://www.apache.org/licenses/LICENSE-2.0
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15 # ============LICENSE_END=================================================
20 from pathlib import Path
21 from flask import Response
26 apipath=os.environ['APIPATH']
28 remote_hosts_logging=os.getenv('REMOTE_HOSTS_LOGGING')
30 # Make sure the api path for the interface yaml file is set, otherwise exit
33 print("Env APIPATH not set. Exiting....")
36 # Return a Response of currently supported interfaces
37 def get_supported_interfaces_response():
40 arr = os.listdir("../")
41 del arr[arr.index('common')] # Remove the common lib
42 del arr[arr.index('start.sh')] # Remove the start script
43 return Response("Current interface: " + str(pp[len(pp)-1]) + " All supported A1 interface yamls in this container: "+str(arr), 200, mimetype='text/plain')
45 # Remote host lookup and store host name in a set
46 def extract_host_name(hosts_set, request):
47 if (remote_hosts_logging is not None):
48 host_ip=str(request.environ['REMOTE_ADDR'])
50 if (host_ip.startswith('::ffff:')):
51 host_ip=host_ip[len(prefix):]
53 name, alias, addresslist = socket.gethostbyaddr(host_ip)
55 except Exception as e:
56 hosts_set.add(host_ip)
58 hosts_set.add("logging_of_remote_host_names_not_enabled")
60 # Check if cert is available and return a sec context, if not return 'None'
61 def get_security_context():
64 path="/usr/src/app/cert"
65 if (os.path.isdir(path)):
66 certpath=path+"/cert.crt"
67 keypath=path+"/key.crt"
68 if (os.path.isfile(certpath) and os.path.isfile(keypath)):
69 context = ssl.SSLContext(ssl.PROTOCOL_TLS)
70 context.load_cert_chain(certpath, keypath, password="test")
73 print("Cert and/or key does not exists in dir "+str(path))
76 print("Path "+str(path)+" to certificate and key does not exists")
77 except Exception as e:
78 print("Problem when loading cert and key: "+str(e))