1
0

auth_export.php 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. require_once($_SERVER['DOCUMENT_ROOT'] . "/inc/auth.php");
  3. require_once($_SERVER['DOCUMENT_ROOT'] . "/inc/languages/" . HTML_LANG . ".php");
  4. if (!defined("CONFIG")) die("Not defined");
  5. $page_url = null;
  6. if (getPOST("ExportAuth", $page_url) !== null) {
  7. header('Content-Type: text/csv; charset=utf-8');
  8. header('Content-Disposition: attachment; filename="auth_export.csv"');
  9. $out = fopen('php://output', 'w');
  10. fputcsv($out, ['login', 'ip', 'mac', 'description', 'dns name', 'last_found', 'connected'], ';');
  11. $a_selected = getPOST("a_selected", $page_url, null);
  12. if ($a_selected !== null && (int)$a_selected) {
  13. // Export selected
  14. $auth_ids = getPOST("fid", $page_url, []);
  15. $valid_ids = [];
  16. foreach ($auth_ids as $id) {
  17. $id = (int)$id;
  18. if ($id > 0) {
  19. $valid_ids[] = $id;
  20. }
  21. }
  22. if (!empty($valid_ids)) {
  23. $chunk_size = 500;
  24. foreach (array_chunk($valid_ids, $chunk_size) as $chunk) {
  25. $placeholders = str_repeat('?,', count($chunk) - 1) . '?';
  26. $sql = "SELECT ul.login, ua.ip, ua.mac, ua.description, ua.dns_name, ua.last_found, ua.id
  27. FROM user_auth ua
  28. JOIN user_list ul ON ua.user_id = ul.id
  29. WHERE ua.id IN ($placeholders)
  30. ";
  31. $records = get_records_sql($db_link, $sql, $chunk);
  32. foreach ($records as $record) {
  33. fputcsv($out, [
  34. $record['login'],
  35. $record['ip'],
  36. $record['mac'],
  37. $record['description'],
  38. $record['dns_name'],
  39. $record['last_found'],
  40. get_connection_string($db_link, $record['id'])
  41. ], ';');
  42. }
  43. }
  44. }
  45. } else {
  46. // Export all
  47. $allowed_sort_fields = [
  48. 'ua.ip_int',
  49. 'ua.mac',
  50. 'ul.login',
  51. 'ua.last_found'
  52. ];
  53. $sort_field = 'ua.ip_int';
  54. $ip_sort = getPOST("ip-sort", $page_url, '');
  55. if ($ip_sort !== '' && in_array($ip_sort, $allowed_sort_fields, true)) {
  56. $sort_field = $ip_sort;
  57. }
  58. $sql = "
  59. SELECT ul.login, ua.ip, ua.mac, ua.description, ua.dns_name, ua.last_found, ua.id
  60. FROM user_auth ua
  61. JOIN user_list ul ON ua.user_id = ul.id
  62. WHERE ua.deleted = 0
  63. ORDER BY $sort_field
  64. ";
  65. $records = get_records_sql($db_link, $sql, []);
  66. foreach ($records as $record) {
  67. fputcsv($out, [
  68. $record['login'],
  69. $record['ip'],
  70. $record['mac'],
  71. $record['description'],
  72. $record['dns_name'],
  73. $record['last_found'],
  74. get_connection_string($db_link, $record['id'])
  75. ], ';');
  76. }
  77. }
  78. fclose($out);
  79. exit;
  80. }
  81. ?>