Просмотр исходного кода

bugfix: When creating a user from netflow, the dynamic group parameters were ignored.

Roman Dmitriev 2 месяцев назад
Родитель
Сommit
0128a0c9c4
1 измененных файлов с 17 добавлено и 8 удалено
  1. 17 8
      scripts/eyelib/common.pm

+ 17 - 8
scripts/eyelib/common.pm

@@ -1522,16 +1522,12 @@ sub new_auth {
 
     return 0 unless $new_user_id;
 
-    my $send_alert = isNotifyCreate(get_notify_subnet($db, $ip));
-
-    # Получаем данные пользователя БЕЗОПАСНО
-    my $user_record = get_record_sql($db,
-        "SELECT * FROM user_list WHERE id = ?",
-        $new_user_id
-    );
+    # --- Дополняем данными из user_list и OU ---
+    my $user_record = get_record_sql($db, "SELECT * FROM user_list WHERE id = ?", $new_user_id);
     return 0 unless $user_record;
 
     my $timestamp = GetNowTime();
+
     my $new_record = {
         ip_int           => $ip_aton,
         ip               => $ip,
@@ -1543,8 +1539,21 @@ sub new_auth {
         filter_group_id  => $user_record->{filter_group_id},
         queue_id         => $user_record->{queue_id},
         enabled          => $user_record->{enabled} // 0,
+        description      => $user_record->{description} // '',
     };
-    $new_record->{description} = $user_record->{description} if $user_record->{description};
+
+    my $ou_info = get_record_sql($db, "SELECT * FROM ou WHERE id = ?", $user_record->{ou_id});
+    return 0 unless $ou_info;
+
+    if ($ou_info && $ou_info->{dynamic}) {
+        my $life_duration = $ou_info->{life_duration} // 24;
+        my $hours   = int($life_duration);
+        my $minutes = ($life_duration - $hours) * 60;
+        my $now = DateTime->now(time_zone => 'local');
+        my $end_life = $now->clone->add(hours => $hours, minutes => $minutes);
+        $new_record->{dynamic}   = 1;
+        $new_record->{end_life}  = $end_life->strftime('%Y-%m-%d %H:%M:%S');
+        }
 
     my $cur_auth_id = insert_record($db, 'user_auth', $new_record);