| /* |
| * Sigma Control API DUT (server) |
| * Copyright (c) 2014, Qualcomm Atheros, Inc. |
| * All Rights Reserved. |
| * Licensed under the Clear BSD license. See README for more details. |
| */ |
| |
| #include "sigma_dut.h" |
| |
| |
| static int cmd_server_reset_default(struct sigma_dut *dut, |
| struct sigma_conn *conn, |
| struct sigma_cmd *cmd) |
| { |
| const char *var; |
| |
| var = get_param(cmd, "Program"); |
| if (var == NULL || strcasecmp(var, "HS2-R2") != 0) { |
| send_resp(dut, conn, SIGMA_ERROR, |
| "errorCode,Unsupported program"); |
| return 0; |
| } |
| |
| var = get_param(cmd, "UserName"); |
| if (var) { |
| sigma_dut_print(dut, DUT_MSG_DEBUG, "Reset user %s", var); |
| /* TODO */ |
| } |
| |
| var = get_param(cmd, "SerialNo"); |
| if (var) { |
| sigma_dut_print(dut, DUT_MSG_DEBUG, "Reset serial number %s", |
| var); |
| /* TODO */ |
| } |
| |
| return 1; |
| } |
| |
| |
| static int cmd_server_request_status(struct sigma_dut *dut, |
| struct sigma_conn *conn, |
| struct sigma_cmd *cmd) |
| { |
| const char *var, *username, *serialno, *imsi, *addr, *status; |
| int osu, timeout; |
| char resp[500]; |
| |
| var = get_param(cmd, "Program"); |
| if (var == NULL || strcasecmp(var, "HS2-R2") != 0) { |
| send_resp(dut, conn, SIGMA_ERROR, |
| "errorCode,Unsupported program"); |
| return 0; |
| } |
| |
| var = get_param(cmd, "Device"); |
| if (!var || |
| (strcasecmp(var, "AAAServer") != 0 && |
| strcasecmp(var, "OSUServer") != 0)) { |
| send_resp(dut, conn, SIGMA_ERROR, |
| "errorCode,Unsupported device type"); |
| return 0; |
| } |
| osu = strcasecmp(var, "OSUServer") == 0; |
| |
| var = get_param(cmd, "Timeout"); |
| if (!var) { |
| send_resp(dut, conn, SIGMA_ERROR, |
| "errorCode,Missing timeout"); |
| return 0; |
| } |
| timeout = atoi(var); |
| sigma_dut_print(dut, DUT_MSG_DEBUG, "timeout: %d", timeout); |
| |
| username = get_param(cmd, "UserName"); |
| if (username) |
| sigma_dut_print(dut, DUT_MSG_DEBUG, "UserName: %s", username); |
| serialno = get_param(cmd, "SerialNo"); |
| if (serialno) |
| sigma_dut_print(dut, DUT_MSG_DEBUG, "SerialNo: %s", serialno); |
| imsi = get_param(cmd, "imsi_val"); |
| if (imsi) |
| sigma_dut_print(dut, DUT_MSG_DEBUG, "imsi_val: %s", imsi); |
| addr = get_param(cmd, "ClientMACAddr"); |
| if (addr) |
| sigma_dut_print(dut, DUT_MSG_DEBUG, "ClientMACAddr: %s", addr); |
| status = get_param(cmd, "Status"); |
| if (status) |
| sigma_dut_print(dut, DUT_MSG_DEBUG, "Status: %s", status); |
| |
| if (osu && status && strcasecmp(status, "Remediation") == 0) { |
| /* TODO */ |
| sleep(1); |
| snprintf(resp, sizeof(resp), |
| "RemediationStatus,Remediation Complete"); |
| send_resp(dut, conn, SIGMA_COMPLETE, resp); |
| return 0; |
| } |
| |
| return 1; |
| } |
| |
| |
| void server_register_cmds(void) |
| { |
| sigma_dut_reg_cmd("server_reset_default", NULL, |
| cmd_server_reset_default); |
| sigma_dut_reg_cmd("server_request_status", NULL, |
| cmd_server_request_status); |
| } |