<?php
function custom_twenty_three_fault_menu()
{
$items['wireless_fault_troubleshooting'] = array(
'title' => '无线网故障排查',
'page callback' => 'custom_twenty_three_fault_wireless_fault_troubleshooting',
'access arguments' => array('operation ise'),
);
$items['email_fault_troubleshooting'] = array(
'title' => "有网时邮箱故障排查",
'page callback' => 'custom_twenty_three_fault_email_fault_troubleshooting',
'access arguments' => array('operation ise'),
);
return $items;
}
function custom_twenty_three_fault_init()
{
global $wireless_troubleshooting;
global $email_troubleshooting;
if (!empty($_SESSION['wireless_troubleshooting'])) {
$wireless_troubleshooting = $_SESSION['wireless_troubleshooting'];
unset($_SESSION['wireless_troubleshooting']);
}
if (!empty($_SESSION['email_troubleshooting'])) {
$email_troubleshooting = $_SESSION['email_troubleshooting'];
unset($_SESSION['email_troubleshooting']);
}
}
function wireless_fault_troubleshooting_form()
{
global $wireless_troubleshooting;
$form['gh'] = array(
'#type' => 'textfield',
'#title' => t('工号'),
'#size' => 30,
'#default_value' => !empty($wireless_troubleshooting['gh']) ? _removeCnEnSpace($wireless_troubleshooting['gh']) : '',
);
$pwd = $_POST['pwd'];
if (empty($_POST['pwd'])) {
$pwd = !empty($wireless_troubleshooting['pwd']) ? $wireless_troubleshooting['pwd'] : '';
}
$form['pwd'] = array(
'#type' => 'password',
'#title' => t('密码'),
'#size' => 30,
'#attributes' => array('value' => $pwd),
'#description' => "<a href='javascript:void(0);' onclick='return false' class='do_view_ad_pwd'>显示</a> <span class='view_ad_pwd'></span><span class='pwd_error'></span>"
);
$form['mac'] = array(
'#type' => 'textfield',
'#title' => t('无线mac地址'),
'#size' => 30,
'#default_value' => !empty($wireless_troubleshooting['mac']) ? _removeCnEnSpace($wireless_troubleshooting['mac']) : '',
);
$form['is_pingguo'] = array(
'#type' => 'checkbox',
'#title' => t('是苹果电脑(检测jamf分组)'),
'#return_value' => 1,
'#default_value' => $wireless_troubleshooting['is_pingguo'],
);
$form['#attributes']['class'][] = 'ad_user_pwd_form';
$form['submit'] = array('#type' => 'submit', '#value' => t('排查'));
return $form;
}
//判断AD用户信息是否有异常
function _judge_ad_info($gh,$ad_info)
{
$diqu = _my_node_jses_terminal_manager_diqu();
if(empty($ad_info)){
form_set_error('','未查到此人的AD信息,此工号为: '.$gh);
return;
}
switch ($ad_info['useraccountcontrol'][0]) {
case 512:
break;
case 514://是禁用的状态
case 546://是禁用的状态
case 66050://是禁用的状态
case 66080://是禁用的状态
case 66082://是禁用的状态
$get['useraccountcontrol'] = 66048;
form_set_error('','此工号: '.$gh.' 已禁用 '.l('普通启用','query_ad_info', array('query' => array('gh'=>$gh,'diqu'=>$diqu,'useraccountcontrol'=>512),'attributes' => array('target'=>'_blank')))
.' '.l('密码永不过期启用(高阶用户)','query_ad_info', array('query' => array('gh'=>$gh,'diqu'=>$diqu,'useraccountcontrol'=>66048),'attributes' => array('target'=>'_blank')))
);
return;
break;
case 544:
case 66048:
case 262656:
break;
default;//似乎除了 512 和 66048 之外 都是 禁用的状态
break;
}
if(!empty($ad_info['lockouttime'][0])){
form_set_error('','此工号: '.$gh.' 已锁定 锁定时间为: ' . date('Y-m-d H:i:s', intval($ad_info['lockouttime'][0] / (1000 * 10000)) - 11644473600) .
' '.l('解锁','query_ad_info', array('query' => array('gh'=>$gh,'diqu'=>$diqu,'unlock'=>1),'attributes' => array('target'=>'_blank'))));
return;
}
if($ad_info['useraccountcontrol'][0] != 66048){//此时不是 密码永不过期(高阶用户)
$pwdlastset_time = intval($ad_info['pwdlastset'][0] / (1000 * 10000)) - 11644473600;
$expire_time = strtotime("+60 days", $pwdlastset_time);
$curr_time = time();
$diff_days = ceil(($expire_time - $curr_time) / (24 * 3600));
if ($diff_days >= 0) {
if ($diff_days < 2) {
$msg_string = '密码到期时间 '.date('Y-m-d H:i:s', $expire_time). ' 还有<span style="color:red;">' . $diff_days . '</span> 天过期';
drupal_set_message($msg_string,'warning');
}else{
$msg_string = '密码到期时间 '.date('Y-m-d H:i:s', $expire_time). ' 还有 ' . $diff_days . ' 天过期';
drupal_set_message($msg_string);
}
} else {
$diff_days = '<span style="color:red;">' . abs($diff_days) . '</span>';
$msg_string = '密码到期时间 '.date('Y-m-d H:i:s', $expire_time). ' 过期了 ' . $diff_days . ' 天';
form_set_error('',$msg_string);
}
}
}
function wireless_fault_troubleshooting_form_validate($form, &$form_state)
{
//下面是 对 AD 的检查
$gh = $ad_gonghao = _removeCnEnSpace($form_state['values']['gh']);
$diqu = _my_node_jses_terminal_manager_diqu();
$ad_info = _get_ad_info_from_ad($gh, array('*'), $diqu);
_judge_ad_info($gh,$ad_info);//判断用户AD信息是否有异常
$host = _get_ad_host();
$domain = _get_ad_domain();
$ad_user = $ad_gonghao . '@' . $domain;//域用户名
$password = _removeCnEnSpace($form_state['values']['pwd']);//域用户密码
if (empty($ad_gonghao) || empty($password)) {
form_set_error('', 'AD用户名或密码不能为空!');
return;
}
$conn = ldap_connect($host);
if ($conn) {
ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);//声明使用版本3
ldap_set_option($conn, LDAP_OPT_REFERRALS, 0); // Binding to ldap server
ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);
$bd = @ldap_bind($conn, $ad_user, $password);
if ($bd) {
// drupal_set_message($ad_user.' '.$password);
drupal_set_message("工号{$ad_gonghao} AD用户名密码正确!");
} else {
form_set_error('', "AD用户名或密码不对, <a href='/es_ad_modify_my_pwd?gh={$ad_gonghao}&pwd={$password}' target='_blank'>修改密码</a> ,
或刚刚在企业微信修改,未同步,请 <a href='/es_ad_modify_my_pwd?gh={$ad_gonghao}&pwd={$password}' target='_blank'>立即同步密码</a> ");
return;
}
} else {
form_set_error('', '未能连接AD服务器!');
return;
}
$memberofs = $ad_info['memberof'];
foreach ($memberofs as $key => $value) {
$value = substr($value, 3, stripos($value, ',') - 3);
if (in_array(strtoupper($value), _get_field_ad_net_level_no_other_js())) {
$ad_net_level_tag = $value;
}
};
if (empty($ad_net_level_tag)) {
form_set_error('', "{$ad_gonghao} 没有网络等级,请到 <a href='/query_ad_info?gh={$ad_gonghao}' target='_blank'>{$ad_gonghao}</a> 查看 是否有JS-NST,或JS-MST或 JS-TST 或JS-OFFICE的权限!");
return;
}
drupal_set_message("{$ad_gonghao} 的姓名为 {$ad_info['displayname'][0]},具有 {$ad_net_level_tag} 的上网权限");
//下面是 对 ise 的检查
$mac = _removeCnEnSpace($form_state['values']['mac']);//
if (empty($mac)) {
form_set_error('', '无线mac地址不能为空');
return;
}
$mac_maohao = $mac = $mac_wireless = _isMacAddressOrEmtpy($mac, ':');
if (!$mac_wireless) {
form_set_error('', '无线mac地址错误');
return;
}
$ise_result = _query_ise($mac_maohao);
if (empty($ise_result['endpointgroup'])) {
form_set_error('', "此无线mac {$mac_maohao} 未加入ise组,请 <a href='/query_modify_ise?mac={$mac_maohao}&op=查询' target='_blank'>查询并加入</a>,或者 <a href='/list_devices?field_jses_mac_wireless_value={$mac_maohao}' target='_blank'>修改设备列表</a>!");
return;
} else {
drupal_set_message("此无线mac {$mac_maohao} ,在ise组上的组为 {$ise_result['endpointgroup']}");
}
$ad_net_level = _get_field_ad_net_level_flip()[$ad_net_level_tag];
$ise_level = _ise_level_flip()[$ise_result['endpointgroup']];
if ($ad_net_level == 'js_office' && $ise_level != 'js_office') {
drupal_set_message("AD等级为 {$ad_net_level_tag},ise的网络等级为 {$ise_result['endpointgroup']} ,虽然不相等,但是不影响网络连接");
} else if ($ad_net_level == $ise_level) {
drupal_set_message("AD等级与ise的网络等级 相等");
} else if ($ad_net_level != $ise_level) {
form_set_error('', "AD等级 <span style='color:red;'>{$ad_net_level_tag}</span> 与ise的网络等级 <span style='color:red;'>{$ise_result['endpointgroup']}</span> <span style='color:red;font-weight: bold;'>不相等,影响连网</span>,请 <a href='/query_modify_ise?mac={$mac_maohao}&op=查询' target='_blank'>ise 查询并修改为 {$ad_net_level_tag} </a>,或者修改 <a href='/query_ad_info?gh={$ad_gonghao}' target='_blank'>{$ad_gonghao}</a> 的连网权限,或者 <a href='/list_devices?field_jses_mac_wireless_value={$mac_maohao}' target='_blank'>修改设备列表</a>!");
return;
}
$is_pingguo = _removeCnEnSpace($form_state['values']['is_pingguo']);
if($is_pingguo)//假如是苹果电脑
{
$token_expires = get_jamf_token();
$token_expires = json_decode($token_expires,true);
$token = $token_expires['token'];
$a_computer_info_xml_from_jamf = _get_groups_account_by_mac_from_jamf($mac,$token,'General&groups_accounts');
$xml = simplexml_load_string($a_computer_info_xml_from_jamf); //是个xml的内容
$groups_account = $xml->groups_accounts->computer_group_memberships->group;//得到的是所有组(包括静态组)的信息
$groups_account = _object_to_array($groups_account);
$groups_static_key_is_value = _get_jamf_level($groups_account);////结果类似于类似于 array('JS-MAC-Office-Group'=>'js_office') array('JS-MAC-NST-Group'=>'js_nst')
if(!empty($groups_static_key_is_value) && count($groups_static_key_is_value)>1){ //这个mac 在jamf 中有两个或两个以上的分组
$groups_static_str = implode(',',array_flip($groups_static_key_is_value));
form_set_error(
'',
"有两个jamf静态组 <span style='color:red;'>{$groups_static_str}</span>. 请到 <a href='https://jamfsrv.bbbb-admin.com:8443' target='_blank'> jamf 网站 </a> 查看, 或者 <a href='/list_devices?field_jses_mac_wireless_value={$mac_maohao}' target='_blank'>修改设备列表</a>!");
return;
}else if(empty($groups_static)){//这个mac 在jamf 中没有分组
form_set_error(
'',
"在jamf中 <span style='color:red;'>没有静态分组</span>. 请到 <a href='https://jamfsrv.bbbb-admin.com:8443/' target='_blank'> jamf 网站 </a> 查看, 或者 <a href='/list_devices?field_jses_mac_wireless_value={$mac_maohao}' target='_blank'>修改设备列表</a>!");
return;
}else {//此时这个mac 在jamf 中有且仅有一个分组
$jamf_level = current($groups_static_key_is_value);//这是 $jamf_level 在 jamf分组中的值 即 'js_office'
$jamf_level_tag = key($groups_static_key_is_value);//这里 $jamf_level_tag 取得的就是标签 JS-MAC-Office-Group 或 JS-MAC-NST-Group 等等
if ($ad_net_level == 'js_office' && $jamf_level != 'js_office') {
drupal_set_message("AD等级为 {$ad_net_level_tag},jamf的静态分组 {$ise_result['endpointgroup']} ,虽然不相等,但是不影响网络连接");
}
else if ($ad_net_level == $jamf_level) {
drupal_set_message("AD等级与jamf的静态分组 相等");
} else if ($ad_net_level != $jamf_level) {
form_set_error(
'',
"AD等级 <span style='color:red;'>{$ad_net_level_tag}</span> 与jamf的静态分组 <span style='color:red;'>{$jamf_level_tag}</span> <span style='color:red;font-weight: bold;'>不相等,影响连网</span>,请到 <a href='https://jamfsrv.bbbb-admin.com:8443/' target='_blank'> jamf 网站 </a> 查看,或者修改 <a href='/query_ad_info?gh={$ad_gonghao}' target='_blank'>{$ad_gonghao}</a> 的连网权限,或者 <a href='/list_devices?field_jses_mac_wireless_value={$mac_maohao}' target='_blank'>修改设备列表</a>!");
return;
}
}
}
//下面是对 dhcp 的检查,无须检查吧,因为即使不保留的话,也会连上网的
if($ad_net_level_tag == 'JS-OFFICE'){ //假如是office网的情况下
drupal_set_message("建议看看 <a href='/list_devices?field_jses_mac_wireless_value={$mac_maohao}' target='_blank'>嘉善设备列表</a> 是否正常 ");
}else{//假如不是office网的情况下
drupal_set_message("建议看看 <a href='/list_dhcps?field_jses_mac_value={$mac_maohao}' target='_blank'>DHCP</a> 是否保留; <a href='/list_devices?field_jses_mac_wireless_value={$mac_maohao}' target='_blank'>嘉善设备列表</a> 是否正常 ");
}
drupal_set_message("按照上面的提示操作后如果还不能连网,windows电脑可能需要<span style='color:red;'>1)ipguard看下权限组,2)使用办公小能手,3)插上有线网或ise无线网(或无线office网)激活,4)时间对不对,5)重置网卡,三种方法,6)实在不行,各种权限可以删掉(AD更新密码,ipguard拉到未分组,ise修改一下分组,再修改成原来的分组),重新增加一次,7)看dhcp有没有拉黑,8)重启</span> 电脑试试!", 'warning');
drupal_set_message("按照上面的提示操作后如果还不能连网,mac电脑可能需要<span style='color:red;'>1)jamf看下权限组,2)使用办公小能手,3)联软看下权限组,4)插上有线网或ise无线网(或无线office网)激活,5)时间对不对,6)重置网卡,7)实在不行,各种权限可以删掉(AD更新密码,ipguard拉到未分组,ise修改一下分组,再修改成原来的分组),重新增加一次,8)看dhcp有没有拉黑,9)重启</span> 电脑试试!", 'warning');
drupal_set_message("以上的操作可以解决90%以上的连网问题!");
$_SESSION['wireless_troubleshooting']['gh'] = $gh;
$_SESSION['wireless_troubleshooting']['pwd'] = $password;
$_SESSION['wireless_troubleshooting']['mac'] = $mac;
$_SESSION['wireless_troubleshooting']['is_pingguo'] = $is_pingguo;
}
function custom_twenty_three_fault_wireless_fault_troubleshooting()
{
return drupal_get_form('wireless_fault_troubleshooting_form');
}
function email_fault_troubleshooting_form()
{
global $email_troubleshooting;
$form['demo'] = array(
'#markup' => "<div style='font-size: 100%;color:#8c2e0b;background-color:#fef5f1;border: 1px solid #ed541d;padding: 5px 20px 5px 10px;margin-bottom: 10px; display: inline-block;'>请检查电脑时间,windows请试试重新配置邮箱 <a href='/sites/default/files/files/2023/07/1-u/t-16/%E6%96%B0%E7%89%88%E9%82%AE%E7%AE%B1%E9%87%8D%E6%96%B0%E5%8C%B9%E9%85%8D%E8%B4%A6%E6%88%B7.exe' target='_blank'>配置新版邮箱</a> <a href='/sites/default/files/files/2023/07/1-u/t-16/2016%E7%89%88%E9%82%AE%E7%AE%B1%E9%87%8D%E6%96%B0%E5%8C%B9%E9%85%8D%E8%B4%A6%E6%88%B7.exe' target='_blank'>配置2016版邮箱</a>!</div>",
);
$form['gh'] = array(
'#type' => 'textfield',
'#title' => t('工号'),
'#size' => 30,
'#default_value' => !empty($email_troubleshooting['gh']) ? _removeCnEnSpace($email_troubleshooting['gh']) : '',
);
$pwd = $_POST['pwd'];
if (empty($_POST['pwd'])) {
$pwd = !empty($email_troubleshooting['pwd']) ? $email_troubleshooting['pwd'] : '';
}
$form['pwd'] = array(
'#type' => 'password',
'#title' => t('密码'),
'#size' => 30,
'#attributes' => array('value' => $pwd),
'#description' => "<a href='javascript:void(0);' onclick='return false' class='do_view_ad_pwd'>显示</a> <span class='view_ad_pwd'></span><span class='pwd_error'></span>"
);
$form['ip'] = array(
'#type' => 'textfield',
'#title' => t('ip地址'),
'#size' => 30,
'#default_value' => !empty($email_troubleshooting['ip']) ? _removeCnEnSpace($email_troubleshooting['ip']) : '',
'#description' => " <a href='/get_ip' target='_blank'>查看ip地址</a>,是<span style='color:red;'>用户的电脑</span>的ip,不是运维人员的电脑ip",
);
$form['#attributes']['class'][] = 'ad_user_pwd_form';
$form['submit'] = array('#type' => 'submit', '#value' => t('排查'));
return $form;
}
function email_fault_troubleshooting_form_validate($form, &$form_state)
{
// drupal_set_message("请检查电脑时间,并且试试重新配置邮箱 <a href='/sites/default/files/files/2023/07/1-u/t-16/%E6%96%B0%E7%89%88%E9%82%AE%E7%AE%B1%E9%87%8D%E6%96%B0%E5%8C%B9%E9%85%8D%E8%B4%A6%E6%88%B7.exe' target='_blank'>配置新版邮箱</a> <a href='/sites/default/files/files/2023/07/1-u/t-16/2016%E7%89%88%E9%82%AE%E7%AE%B1%E9%87%8D%E6%96%B0%E5%8C%B9%E9%85%8D%E8%B4%A6%E6%88%B7.exe' target='_blank'>配置2016版邮箱</a>!", 'error');
//下面是 对 AD 的检查
$gh = $ad_gonghao = _removeCnEnSpace($form_state['values']['gh']);
$diqu = _my_node_jses_terminal_manager_diqu();
$ad_info = _get_ad_info_from_ad($gh, array('*'), $diqu);
_judge_ad_info($gh,$ad_info);//判断用户AD信息是否有异常
$_SESSION['email_troubleshooting']['gh'] = $gh;
$host = _get_ad_host();
$domain = _get_ad_domain();
$ad_user = $ad_gonghao . '@' . $domain;//域用户名
$password = _removeCnEnSpace($form_state['values']['pwd']);//域用户密码
$_SESSION['email_troubleshooting']['pwd'] = $password;
if (empty($ad_gonghao) || empty($password)) {
form_set_error('', 'AD用户名或密码不能为空!');
return;
}
$conn = ldap_connect($host);
if ($conn) {
ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);//声明使用版本3
ldap_set_option($conn, LDAP_OPT_REFERRALS, 0); // Binding to ldap server
ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);
$bd = @ldap_bind($conn, $ad_user, $password);
if ($bd) {
// drupal_set_message($ad_user.' '.$password);
drupal_set_message("工号{$ad_gonghao} AD用户名密码正确!");
} else {
form_set_error('', "AD用户名或密码不对, <a href='/es_ad_modify_my_pwd?gh={$ad_gonghao}&pwd={$password}' target='_blank'>修改密码</a> ,可能AD密码过期,或锁定,请到 <a href='/query_ad_info?gh={$ad_gonghao}' target='_blank'>{$ad_gonghao}</a> 查看
或刚刚在企业微信修改,未同步,请 <a href='/es_ad_modify_my_pwd?gh={$ad_gonghao}&pwd={$password}' target='_blank'>立即同步密码</a> ");
return;
}
} else {
form_set_error('', '未能连接AD服务器!');
return;
}
$memberofs = $ad_info['memberof'];
foreach ($memberofs as $key => $value) {
$value = substr($value, 3, stripos($value, ',') - 3);
if (in_array(strtoupper($value), _get_field_ad_net_level_no_other_js())) {
$ad_net_level_tag = $value;
}
};
if (empty($ad_net_level_tag)) {
form_set_error('', "{$ad_gonghao} 没有网络等级,请到 <a href='/query_ad_info?gh={$ad_gonghao}' target='_blank'>{$ad_gonghao}</a> 查看 是否有JS-NST,或JS-MST或 JS-TST 或JS-OFFICE的权限!");
return;
}
drupal_set_message("{$ad_gonghao} 的姓名为 {$ad_info['displayname'][0]},具有 {$ad_net_level_tag} 的邮箱权限");
//下面是 对 ip 的检查
$ip = _removeCnEnSpace($form_state['values']['ip']);//
$_SESSION['email_troubleshooting']['ip'] = $ip;
if (empty($ip)) {
form_set_error('', 'ip地址不能为空');
return;
}
$ip_prefix = substr($ip, 0, (strripos($ip, '.') + 1));//ip前缀,包含点
$ip_suffix = substr($ip, strrpos($ip, '.') + 1);//ip后缀,不包含点
$networks = _get_net_from_dhcp();
//下面是非特殊情况
if ('192.168.69.' != $ip_prefix && '192.168.177.' != $ip_prefix && '192.168.136.' != $ip_prefix && '10.181.80.' != $ip_prefix) {
foreach ($networks as $key => $value) {
foreach ($value as $son_key => $son_value) {
foreach ($son_value as $son_son_key => $son_son_value)
if ($son_son_value == $ip_prefix) {
$dhcp_net_level = $key;
break 3;
}
}
}
} //下面是特殊情况
else if ('192.168.69.' == $ip_prefix || '192.168.177.' == $ip_prefix || '192.168.136.' == $ip_prefix || '10.181.80.' == $ip_prefix) {
if ('192.168.69.' == $ip_prefix) {
if ($ip_suffix >= 1 && $ip_suffix <= 30) {//下面这里为了简便就写死吧
$dhcp_net_level = 'other___a1_npi_l1_69';
} else if ($ip_suffix >= 40 && $ip_suffix <= 60) {
$dhcp_net_level = 'other___a1_npi_l1_691';
} else if ($ip_suffix >= 70 && $ip_suffix <= 90) {
$dhcp_net_level = 'other___a1_js_vn_debug_692';
} else if ($ip_suffix >= 100 && $ip_suffix <= 120) {
$dhcp_net_level = 'other___a1_npi_l5_693';
}
} else if ('192.168.177.' == $ip_prefix) {
if ($ip_suffix >= 10 && $ip_suffix <= 62) {//下面这里为了简便就写死吧
$dhcp_net_level = 'other___a1_tpi_l1';
}
} else if ('192.168.136.' == $ip_prefix) {
if ($ip_suffix >= 10 && $ip_suffix <= 62) {//下面这里为了简便就写死吧
$dhcp_net_level = 'other___a2_tpi_l1';
}
} else if ('10.181.80.' == $ip_prefix) {
if ($ip_suffix >= 10 && $ip_suffix <= 62) {//下面这里为了简便就写死吧
$dhcp_net_level = 'other___b_tpi_l1';
}
}
}
empty($dhcp_net_level) && $dhcp_net_level='other network';
$ad_net_level = _get_field_ad_net_level_flip()[$ad_net_level_tag];
if ($dhcp_net_level != $ad_net_level) {
form_set_error('', "用户的网络等级 {$ad_net_level_tag} 与ip所在的网络 {$dhcp_net_level} <span style='color:red;'>不一样</span>,请OA开单,把电脑接入相同网络");
return;
} else {
drupal_set_message("用户的网络等级与ip所在的网络相同");
}
drupal_set_message("按照上面的提示操作后如果还打不开邮箱,电脑可能需要<span style='color:red;'>1)重启</span>电脑试试!", 'warning');
drupal_set_message("以上的操作可以解决90%以上的邮箱问题!");
$_SESSION['wireless_troubleshooting']['gh'] = $gh;
$_SESSION['wireless_troubleshooting']['pwd'] = $password;
$_SESSION['wireless_troubleshooting']['ip'] = $ip;
}
function custom_twenty_three_fault_email_fault_troubleshooting()
{
return drupal_get_form('email_fault_troubleshooting_form');
}