1 /*************************************************************************
3 * Copyright 2020 highstreet technologies GmbH and others
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 ***************************************************************************/
20 #include "web_cut_through.h"
21 #include "utils/log_utils.h"
22 #include "utils/sys_utils.h"
23 #include "utils/rand_utils.h"
24 #include "utils/http_client.h"
25 #include "utils/nts_utils.h"
29 #include "core/session.h"
30 #include "core/framework.h"
31 #include "core/xpath.h"
33 static int web_cut_through_status = 0;
35 int web_cut_through_feature_get_status(void) {
36 return web_cut_through_status;
39 int web_cut_through_feature_start(sr_session_ctx_t *current_session) {
40 assert(current_session);
43 if(web_cut_through_status == 0) {
44 //update ietf-system details
45 int rc = sr_set_item_str(current_session, IETF_SYSTEM_NAME_SCHEMA_XPATH, framework_environment.settings.hostname, 0, 0);
47 log_error("sr_set_item_str failed\n");
48 return NTS_ERR_FAILED;
51 controller_details_t *controller_details = controller_details_get(current_session);
52 if(controller_details == 0) {
53 log_error("controller_details_get failed\n");
54 return NTS_ERR_FAILED;
58 asprintf(&web_ui, "%s/odlux/index.html#/configuration/%s", controller_details->base_url, framework_environment.settings.hostname);
59 controller_details_free(controller_details);
62 log_error("asprintf failed\n");
63 return NTS_ERR_FAILED;
66 rc = sr_set_item_str(current_session, IETF_SYSTEM_WEB_UI_SCHEMA_XPATH, web_ui, 0, 0);
69 log_error("sr_set_item_str failed\n");
70 return NTS_ERR_FAILED;
73 rc = sr_set_item_str(current_session, IETF_SYSTEM_CONTACT_SCHEMA_XPATH, "O-RAN-SC SIM project", 0, 0);
75 log_error("sr_set_item_str failed\n");
76 return NTS_ERR_FAILED;
79 rc = sr_set_item_str(current_session, IETF_SYSTEM_HOSTNAME_SCHEMA_XPATH, framework_environment.settings.hostname, 0, 0);
81 log_error("sr_set_item_str failed\n");
82 return NTS_ERR_FAILED;
85 rc = sr_set_item_str(current_session, IETF_SYSTEM_LOCATION_SCHEMA_XPATH, "Open Wireless Lab", 0, 0);
87 log_error("sr_set_item_str failed\n");
88 return NTS_ERR_FAILED;
91 rc = sr_set_item_str(current_session, IETF_SYSTEM_TIMEZONE_NAME_SCHEMA_XPATH, "UTC", 0, 0);
93 log_error("sr_set_item_str failed\n");
94 return NTS_ERR_FAILED;
97 rc = sr_set_item_str(current_session, IETF_SYSTEM_NTP_ENABLED_SCHEMA_XPATH, "false", 0, 0);
99 log_error("sr_set_item_str failed\n");
100 return NTS_ERR_FAILED;
103 rc = sr_apply_changes(current_session, 0, 0);
104 if(rc != SR_ERR_OK) {
105 log_error("could not apply changes on datastore\n");
106 return NTS_ERR_FAILED;
109 web_cut_through_status = 1;
115 int web_cut_through_feature_stop(sr_session_ctx_t *current_session) {
116 assert(current_session);
119 if(web_cut_through_status) {
120 //update ietf-system details
121 int rc = sr_delete_item(current_session, IETF_SYSTEM_NAME_SCHEMA_XPATH, 0);
122 if(rc != SR_ERR_OK) {
123 log_error("sr_delete_item failed\n");
124 return NTS_ERR_FAILED;
127 rc = sr_delete_item(current_session, IETF_SYSTEM_WEB_UI_SCHEMA_XPATH, 0);
128 if(rc != SR_ERR_OK) {
129 log_error("sr_delete_item failed\n");
130 return NTS_ERR_FAILED;
133 rc = sr_apply_changes(current_session, 0, 0);
134 if(rc != SR_ERR_OK) {
135 log_error("could not apply changes on datastore\n");
136 return NTS_ERR_FAILED;
139 web_cut_through_status = 0;