= Use-case UC1 Prototype Implementation – Испраќање и обработка на податоци = '''Актер кој го иницира:''' * Клиентска апликација (Agent / Collector) '''Други актери:''' * Администратор '''Опис''' Клиентската апликација периодично собира системски информации од компјутерот и ги испраќа до серверот преку POST барање. Серверот го валидира X-Env-Token, го пронаоѓа или креира компјутерот и ги зачувува сите примени информации во базата. == Сценарио == === Чекор 1 === '''Корисник''' Клиентската апликација испраќа POST барање кон серверот со X-Env-Token и собраните податоци. [[Image(UC1_step1.png,700px)]] '''Систем''' Го проверува токенот и го пронаоѓа Environment-от. '''SQL''' {{{ SELECT env_name, tenant_id FROM env_tokens WHERE token = ? AND (expires_at IS NULL OR expires_at > datetime('now')) LIMIT 1; }}} === Чекор 2 Системот проверува дали компјутерот веќе постои. '''SQL''' {{{ SELECT id FROM computers WHERE tenant_id = ? AND name = ? LIMIT 1; }}} === Чекор 3 Доколку компјутерот веќе постои, се ажурираат неговите информации. '''SQL''' {{{ UPDATE computers SET user=?, ip=?, os=?, last_seen=?, sysmon_available=?, env_name=? WHERE id=? AND tenant_id=?; }}} Доколку компјутерот не постои, се додава нов запис. '''SQL''' {{{ INSERT INTO computers ( tenant_id, env_name, name, user, ip, os, first_seen, last_seen, sysmon_available ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ? ); }}} === Чекор 4 Системот ги зачувува моменталните перформанси. '''SQL''' {{{ INSERT INTO computer_history ( computer_id, cpu_usage, ram_usage, disk_usage, network_sent_mb, network_recv_mb, timestamp ) VALUES ( ?, ?, ?, ?, ?, ?, ? ); }}} === Чекор 5 Системот ги освежува тековните процеси. Најпрво ги брише старите. '''SQL''' {{{ DELETE FROM computer_processes_current WHERE computer_id=?; }}} Потоа ги внесува новите. '''SQL''' {{{ INSERT INTO computer_processes_current ( computer_id, pid, name, cpu_percent, memory_mb, username, cmdline, timestamp ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? ); }}} === Чекор 6 Доколку е овозможено чување на историја, процесите се зачувуваат и во history. '''SQL''' {{{ INSERT INTO computer_processes_history ( computer_id, pid, name, cpu_percent, memory_mb, username, cmdline, timestamp ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? ); }}} === Чекор 7 Системот ги зачувува Sysmon настаните. '''SQL''' {{{ INSERT INTO sysmon_events ( computer_id, event_id, event_type, message, timestamp, details ) VALUES ( ?, ?, ?, ?, ?, ? ); }}} === Чекор 8 Системот ги зачувува мрежните конекции. '''SQL''' {{{ INSERT INTO network_connections ( computer_id, pid, local_address, remote_address, status, process_name, timestamp ) VALUES ( ?, ?, ?, ?, ?, ?, ? ); }}} === Чекор 9 Системот успешно ја обработува испратената информација и враќа успешен одговор. [[Image(UC1_step11.png,700px)]]