]> git.sur5r.net Git - freertos/blob - FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/tools/aws_config_quick_start/misc.py
Add the Labs projects provided in the V10.2.1_191129 zip file.
[freertos] / FreeRTOS-Labs / Demo / FreeRTOS_IoT_Libraries / tools / aws_config_quick_start / misc.py
1 #!/usr/bin/env python\r
2 \r
3 import os\r
4 import boto3\r
5 \r
6 \r
7 def describe_endpoint():\r
8     client = boto3.client('iot')\r
9     endpoint = client.describe_endpoint(endpointType='iot:Data-ATS')\r
10     return endpoint['endpointAddress']\r
11 \r
12 \r
13 def get_account_id():\r
14     client = boto3.client('sts')\r
15     aws_account_id = client.get_caller_identity()['Account']\r
16     return aws_account_id.strip('\n')\r
17 \r
18 \r
19 def get_aws_region():\r
20     my_session = boto3.session.Session()\r
21     aws_region = my_session.region_name\r
22     return aws_region.strip('\n')\r
23 \r
24 \r
25 def create_policy_document():\r
26     this_file_directory = os.getcwd()\r
27     policy_document = os.path.join(this_file_directory,\r
28                                    'policy_document.templ')\r
29     region_name = str(get_aws_region())\r
30     aws_account_id = str(get_account_id())\r
31     with open(policy_document) as policy_document_file:\r
32         policy_document_text = policy_document_file.read()\r
33 \r
34     # Replace Account ID and AWS Region\r
35     policy_document_text = policy_document_text.replace('<aws-region>',\r
36                                                         region_name)\r
37     policy_document_text = policy_document_text.replace('<aws-account-id>',\r
38                                                         aws_account_id)\r
39 \r
40     return policy_document_text\r
41 \r
42 \r
43 def format_credential_keys_text(credential_text):\r
44     credential_text_lines = credential_text.split('\n')\r
45     formatted_credential_text_lines = []\r
46 \r
47     for credential_text_line in credential_text_lines:\r
48         if credential_text_line.strip():\r
49             formatted_credential_text_line = '    {:68s}'\\r
50                 .format('"' + credential_text_line + '\\n"')\r
51             formatted_credential_text_lines.append(\r
52                 formatted_credential_text_line)\r
53 \r
54     formatted_credential_text = ' \\\n'.join(formatted_credential_text_lines)\r
55     return formatted_credential_text\r
56 \r
57 \r
58 def write_client_credentials(\r
59         source_dir,\r
60         thing_name='',\r
61         client_certificate_pem='',\r
62         client_private_key_pem='',\r
63         cleanup=False):\r
64 \r
65     file_to_modify = os.path.join(source_dir,\r
66                                   'FreeRTOS-Labs',\r
67                                   'Demo',\r
68                                   'FreeRTOS_IoT_Libraries',\r
69                                   'include',\r
70                                   'aws_iot_demo_profile.h')\r
71     file_text = ''\r
72 \r
73     if cleanup:\r
74         filename = "aws_iot_demo_profile_empty.templ"\r
75         with open(filename, 'r') as template_file:\r
76             file_text = template_file.read()\r
77 \r
78     else:\r
79         endpoint = describe_endpoint()\r
80         client_certificate_pem =\\r
81             format_credential_keys_text(client_certificate_pem)\r
82         client_private_key_pem =\\r
83             format_credential_keys_text(client_private_key_pem)\r
84 \r
85         filename = "aws_iot_demo_profile.templ"\r
86         with open(filename, 'r') as template_file:\r
87             file_text = template_file.read()\r
88             file_text = file_text.replace("<IOTEndpoint>",\r
89                                           "\"" + endpoint + "\"")\r
90             file_text = file_text.replace("<IOTThingName>",\r
91                                           "\"" + thing_name + "\"")\r
92             file_text = file_text.replace("<ClientCertificatePEM>",\r
93                                           client_certificate_pem)\r
94             file_text = file_text.replace("<ClientPrivateKeyPEM>",\r
95                                           client_private_key_pem)\r
96 \r
97     header_file = open(str(file_to_modify), 'w')\r
98     header_file.write(file_text)\r
99     header_file.close()\r