blob: 17fffb42f5cec60cfc8d5f5d030f9027082c0ea5 [file] [log] [blame]
Jouni Malinencd4e3c32015-10-29 12:39:56 +02001/*
2 * Sigma Control API DUT (server)
3 * Copyright (c) 2014, Qualcomm Atheros, Inc.
4 * All Rights Reserved.
5 * Licensed under the Clear BSD license. See README for more details.
6 */
7
8#include "sigma_dut.h"
9
10
11static int cmd_server_reset_default(struct sigma_dut *dut,
12 struct sigma_conn *conn,
13 struct sigma_cmd *cmd)
14{
15 const char *var;
16
17 var = get_param(cmd, "Program");
18 if (var == NULL || strcasecmp(var, "HS2-R2") != 0) {
19 send_resp(dut, conn, SIGMA_ERROR,
20 "errorCode,Unsupported program");
21 return 0;
22 }
23
24 var = get_param(cmd, "UserName");
25 if (var) {
26 sigma_dut_print(dut, DUT_MSG_DEBUG, "Reset user %s", var);
27 /* TODO */
28 }
29
30 var = get_param(cmd, "SerialNo");
31 if (var) {
32 sigma_dut_print(dut, DUT_MSG_DEBUG, "Reset serial number %s",
33 var);
34 /* TODO */
35 }
36
37 return 1;
38}
39
40
41static int cmd_server_request_status(struct sigma_dut *dut,
42 struct sigma_conn *conn,
43 struct sigma_cmd *cmd)
44{
45 const char *var, *username, *serialno, *imsi, *addr, *status;
46 int osu, timeout;
47 char resp[500];
48
49 var = get_param(cmd, "Program");
50 if (var == NULL || strcasecmp(var, "HS2-R2") != 0) {
51 send_resp(dut, conn, SIGMA_ERROR,
52 "errorCode,Unsupported program");
53 return 0;
54 }
55
56 var = get_param(cmd, "Device");
57 if (!var ||
58 (strcasecmp(var, "AAAServer") != 0 &&
59 strcasecmp(var, "OSUServer") != 0)) {
60 send_resp(dut, conn, SIGMA_ERROR,
61 "errorCode,Unsupported device type");
62 return 0;
63 }
64 osu = strcasecmp(var, "OSUServer") == 0;
65
66 var = get_param(cmd, "Timeout");
67 if (!var) {
68 send_resp(dut, conn, SIGMA_ERROR,
69 "errorCode,Missing timeout");
70 return 0;
71 }
72 timeout = atoi(var);
73 sigma_dut_print(dut, DUT_MSG_DEBUG, "timeout: %d", timeout);
74
75 username = get_param(cmd, "UserName");
76 if (username)
77 sigma_dut_print(dut, DUT_MSG_DEBUG, "UserName: %s", username);
78 serialno = get_param(cmd, "SerialNo");
79 if (serialno)
80 sigma_dut_print(dut, DUT_MSG_DEBUG, "SerialNo: %s", serialno);
81 imsi = get_param(cmd, "imsi_val");
82 if (imsi)
83 sigma_dut_print(dut, DUT_MSG_DEBUG, "imsi_val: %s", imsi);
84 addr = get_param(cmd, "ClientMACAddr");
85 if (addr)
86 sigma_dut_print(dut, DUT_MSG_DEBUG, "ClientMACAddr: %s", addr);
87 status = get_param(cmd, "Status");
88 if (status)
89 sigma_dut_print(dut, DUT_MSG_DEBUG, "Status: %s", status);
90
91 if (osu && status && strcasecmp(status, "Remediation") == 0) {
92 /* TODO */
93 sleep(1);
94 snprintf(resp, sizeof(resp),
95 "RemediationStatus,Remediation Complete");
96 send_resp(dut, conn, SIGMA_COMPLETE, resp);
97 return 0;
98 }
99
100 return 1;
101}
102
103
104void server_register_cmds(void)
105{
106 sigma_dut_reg_cmd("server_reset_default", NULL,
107 cmd_server_reset_default);
108 sigma_dut_reg_cmd("server_request_status", NULL,
109 cmd_server_request_status);
110}