/** function guifi_mac_validate($mac,&$form_state) * * */ function guifi_mac_validate($mac, &$form_state) { if ($form_state['clicked_button']['#value'] == t('Reset')) { return; } $m2 = $mac; unset($m2['#post']); guifi_log(GUIFILOG_TRACE, 'guifi_mac_validate', $m2['#parents']); guifi_log(GUIFILOG_TRACE, 'guifi_mac_validate', $form_state); // if empty, if (empty($mac['#value'])) { $pmac = null; // ...and have parents, take parent mac if (in_array($mac['#parents'][0], array('vlans', 'aggregations'))) { $macs = guifi_get_currentDeviceMacs($mac['#post']); $related = $mac['#post'][$mac['#parents'][0]][$mac['#parents'][1]]['related_interfaces']; guifi_log(GUIFILOG_TRACE, 'guifi_mac_validate MACS', $macs); guifi_log(GUIFILOG_TRACE, 'guifi_mac_validate RELATED', $related); if (is_array($related)) { $pmac = $macs[$related[0]]; } else { $pmac = $macs[$related]; } } // ... or ineterface mac, calculate from base device mac if ($mac['#parents'][0] == 'interfaces') { $iId = $mac['#post']['interfaces'][$mac['#parents'][1]]; guifi_log(GUIFILOG_TRACE, 'guifi_mac_validate interface MAC', $iId); $pmac = _guifi_mac_sum($mac['#post']['mac'], $iId['etherdev_counter']); } // if mac set, set value in form if (!is_null($pmac)) { $mac['#value'] = $pmac; form_set_value(array('#parents' => $mac['#parents']), $pmac, $form_state); $form_state['rebuild'] = TRUE; guifi_log(GUIFILOG_TRACE, 'guifi_mac_validate (null NEW MAC)', $pmac); } // if still empty, nothing to validate return; } $pmac = _guifi_validate_mac($mac['#value']); if ($pmac == FALSE) { form_error($mac, t('Error in MAC address (%mac), use 99:99:99:99:99:99 format.', array('%mac' => $mac['#value'])), 'error'); } else { if ($pmac != $mac['#value']) { form_set_value(array('#parents' => $mac['#parents']), $pmac, $form_state); $form_state['rebuild'] = TRUE; } } return $mac; }
/** * * @param GuifiAPI $gapi GuifiAPI object * * @param mixed[] $parameters * * @return */ function _guifi_api_radio_check_parameters($gapi, $parameters) { extract($parameters); if (!empty($mac)) { if (!_guifi_validate_mac($mac)) { $gapi->addError(403, "mac: {$mac}"); return FALSE; } } if (isset($antenna_angle)) { $antenna_angles = array(0, 6, 60, 90, 120, 360); if (!in_array($anntena_angle, $antenna_angles)) { $gapi->addError(403, "antenna_angle: {$antenna_angle}"); return FALSE; } } if (isset($antenna_gain)) { if (is_numeric($antenna_gain)) { $antenna_gain = (int) $antenna_gain; } $antenna_gains = array(2, 8, 12, 14, 18, 21, 24, 'more'); if (!in_array($antenna_gain, $antenna_gains)) { $gapi->addError(403, "antenna_gain: {$antenna_gain}"); return FALSE; } } if (isset($antenna_azimuth)) { $antenna_azimuth = (int) $antenna_azimuth; if (!is_numeric($antenna_azimuth) || $antenna_azimuth > 360 || $antenna_azimuth < 0) { $gapi->addError(403, "antenna_azimuth: {$antenna_azimuth}"); return FALSE; } } if (isset($antenna_mode)) { $antenna_modes = array('Main', 'Aux'); if (!in_array($antenna_mode, $antenna_modes)) { $gapi->addError(403, "antenna_mode: {$antenna_mode}"); return FALSE; } } switch ($mode) { case 'ap': if (isset($clients_accepted)) { $clients_accepted_modes = array('Yes', 'No'); if (!in_array($clients_accepted, $clients_accepted_modes)) { $gapi->addError(403, "clients_accepted: {$clients_accepted}"); return FALSE; } } // Pending to revise, for mesh // Pending to revise, for mesh case 'ad-hoc': if (isset($protocol)) { if (!guifi_validate_types('protocol', $protocol)) { $gapi->addError(403, "protocol is not supported: {$protocol}"); return FALSE; } } if (isset($channel)) { if (!guifi_validate_types('channel', $channel, $protocol)) { $gapi->addError(403, "channel is not supported: {$channel}"); return FALSE; } } break; } if (isset($graph_server)) { $server = db_fetch_object(db_query("SELECT id FROM {guifi_services} WHERE id = '%d' AND service_type = 'SNPgraphs'", $graph_server)); if (!$server->id) { $gapi->addError(403, "graph_server: {$graph_server}"); return FALSE; } } return TRUE; }