0 ORDER BY id");
foreach ($first_auth as $row) {
if (!empty($row['mac'])) { add_auth_rule($db_link, $row['mac'], 2, $id); }
}
header("Location: " . $_SERVER["REQUEST_URI"]);
exit;
}
if (isset($_POST["delMacRule"])) {
run_sql($db_link, "DELETE FROM auth_rules WHERE user_id=" . $id . " AND type=2");
LOG_INFO($db_link, "All autorules removed for id: $id login: " . $user_info["login"] . " by mac");
header("Location: " . $_SERVER["REQUEST_URI"]);
exit;
}
if (isset($_POST["addIPRule"])) {
unset($new);
$first_auth = get_records_sql($db_link, "SELECT ip FROM user_auth WHERE user_id=" . $id . " AND deleted=0 AND LENGTH(ip)>0 ORDER BY id");
foreach ($first_auth as $row) {
if (!empty($row['ip'])) { add_auth_rule($db_link, $row['ip'], 1, $id); }
}
header("Location: " . $_SERVER["REQUEST_URI"]);
exit;
}
if (isset($_POST["delIPRule"])) {
run_sql($db_link, "DELETE FROM auth_rules WHERE user_id=" . $id . " AND type=1");
LOG_INFO($db_link, "Removed all auto rules for id: $id login: " . $user_info["login"] . " by ip");
header("Location: " . $_SERVER["REQUEST_URI"]);
exit;
}
if (isset($_POST["showDevice"])) {
$device = get_record_sql($db_link, "SELECT * FROM devices WHERE user_id=" . $id);
$auth = get_record_sql($db_link, "SELECT * FROM user_auth WHERE user_id=" . $id);
if (empty($device) and !empty($auth)) {
$new['user_id'] = $id;
$new['device_name'] = $user_info['login'];
$new['device_type'] = 5;
$new['ip'] = $auth['ip'];
$new['ip_int'] = $auth['ip_int'];
$new['community'] = get_const('snmp_default_community');
$new['snmp_version'] = get_const('snmp_default_version');
$new['login'] = get_option($db_link, 28);
$new['password'] = get_option($db_link, 29);
//default ssh
$new['protocol'] = 0;
$new['control_port'] = get_option($db_link, 30);
$new_id = insert_record($db_link, "devices", $new);
unset($_POST);
if (!empty($new_id)) {
LOG_INFO($db_link, "Created device with id: $new_id for auth_id: $id");
header("Location: /admin/devices/editdevice.php?id={$new_id}");
exit;
} else {
header("Location: " . $_SERVER["REQUEST_URI"]);
exit;
}
}
header("Location: /admin/devices/editdevice.php?id=" . $device['id']);
exit;
}
if (isset($_POST["addauth"])) {
$fip = normalizeIpAddress(substr(trim($_POST["newip"]), 0, 18));
$fdescription = NULL;
$fmac = trim($_POST["newmac"]);
if (!empty($fmac)) {
if (!checkValidMac($fmac)) {
$fdescription = $fmac;
$fmac=NULL;
} else {
$fmac = mac_dotted($fmac);
}
}
if (!empty($fip)) {
$ip_aton = ip2long($fip);
$f_dhcp = 1;
//search mac
if (!empty($fmac) and !empty($fip)) {
$mac_exists = find_mac_in_subnet($db_link, $fip, $fmac);
if (!empty($mac_exists) and $mac_exists['count'] >= 1 and !in_array($id, $mac_exists['users_id'])) {
$dup_sql = "SELECT * FROM user_list WHERE id=" . $mac_exists['users_id']['0'];
$dup_info = get_record_sql($db_link, $dup_sql);
$msg_error = "Mac already exists at another user in this subnet! Skip creating $fip [$fmac].
Old user id: " . $dup_info['id'] . " login: " . $dup_info['login'];
$_SESSION[$page_url]['msg'] = $msg_error;
LOG_ERROR($db_link, $msg_error);
header("Location: " . $_SERVER["REQUEST_URI"]);
exit;
}
//disable dhcp for secondary ip
if (empty($mac_exists)) {
$f_dhcp = 1;
} else {
if (in_array($id, $mac_exists['users_id'])) {
$f_dhcp = 0;
}
}
}
//search ip
$dup_ip_record = get_record_sql($db_link, "SELECT * FROM user_auth WHERE ip_int=$ip_aton AND user_id<>" . $id . " AND deleted=0");
if (!empty($dup_ip_record)) {
$dup_info = get_record_sql($db_link, "SELECT * FROM user_list WHERE id=" . $dup_ip_record['user_id']);
$msg_error = "$fip already exists. Skip creating $fip [$fmac].
Old user id: " . $dup_info['id'] . " login: " . $dup_info['login'];
$_SESSION[$page_url]['msg'] = $msg_error;
LOG_ERROR($db_link, $msg_error);
header("Location: " . $_SERVER["REQUEST_URI"]);
exit;
}
$fid = new_auth($db_link, $fip, $fmac, $id);
if (!empty($fid)) {
$new['dhcp'] = $f_dhcp;
$new['created_by'] = 'manual';
if (!empty($fdescription)) { $new['description'] = $fdescription; }
update_record($db_link, "user_auth", "id=" . $fid, $new);
LOG_WARNING($db_link, "Add ip for login: " . $user_info["login"] . ": ip => $fip, mac => $fmac", $fid);
header("Location: /admin/users/editauth.php?id=" . $fid);
exit;
}
header("Location: " . $_SERVER["REQUEST_URI"]);
exit;
} else {
$msg_error = "IP-address fromat eror!";
$_SESSION[$page_url]['msg'] = $msg_error;
}
header("Location: " . $_SERVER["REQUEST_URI"]);
exit;
}
if (isset($_POST["removeauth"])) {
$auth_id = $_POST["f_auth_id"];
foreach ($auth_id as $key => $val) {
if ($val) { delete_user_auth($db_link, $val); }
}
header("Location: " . $_SERVER["REQUEST_URI"]);
exit;
}
if (isset($_POST["new_user"])) {
$auth_id = $_POST["f_auth_id"];
$save_traf = get_option($db_link, 23) * 1;
foreach ($auth_id as $key => $val) {
if ($val) {
$auth_info = get_record_sql($db_link, "SELECT * FROM user_auth WHERE id=$val");
$ou_id = $user_info["ou_id"];
$login = NULL;
if (!empty($auth_info["dns_name"])) {
$login = $auth_info["dns_name"];
}
if (empty($login) and !empty($auth_info["description"])) {
$login = transliterate($auth_info["description"]);
}
if (empty($login) and !empty($auth_info["dhcp_hostname"])) {
$login = $auth_info["dhcp_hostname"];
}
if (empty($login) and !empty($auth_info["mac"])) {
$login = $auth_info["mac"];
}
if (empty($login)) {
$login = $auth_info["ip"];
}
$new_user = get_record_sql($db_link, "SELECT * FROM user_list WHERE LCase(login)=LCase('$login') and deleted=0");
if (!empty($new_user)) {
// move auth
$auth["user_id"] = $new_user["id"];
$auth["ou_id"] = $new_user["ou_id"];
$auth["save_traf"] = $save_traf;
$auth = apply_auth_rule($db_link, $auth, $l_id);
update_record($db_link, "user_auth", "id='" . $val . "'", $auth);
LOG_WARNING($db_link, "ip from id: $val moved to another user user_id: " . $new_user["id"], $val);
} else {
$new["login"] = $login;
$new["ou_id"] = $ou_id;
if (!empty($auth_info["description"])) { $new["fio"] = $auth_info["description"]; }
if (!isset($new["fio"]) and !empty($auth_info["dns_name"])) { $new["fio"] = $auth_info["dns_name"]; }
if (!isset($new["fio"]) and !empty($auth_info["dhcp_hostname"])) { $new["fio"] = $auth_info["dhcp_hostname"]; }
$new["enabled"] = $auth_info["enabled"];
$l_id = insert_record($db_link, "user_list", $new);
$auth["user_id"] = $l_id;
$auth["save_traf"] = $save_traf;
update_record($db_link, "user_auth", "id='" . $val . "'", $auth);
LOG_WARNING($db_link, "Create user from ip: login => $login. ip-record auth_id: $val moved to this user.", $val);
}
}
}
header("Location: " . $_SERVER["REQUEST_URI"]);
exit;
}
unset($_POST);
require_once($_SERVER["DOCUMENT_ROOT"] . "/inc/header.php");
?>