SHT30 온습도 모니터링 시스템 전체 소스(서버 PHP, STM32 펌웨어, SQL, 테스트). 전체 코드리뷰에서 도출된 보안 하드닝 10건 반영: - 요청 서명 HMAC-SHA256 전환(펌웨어 sig.c/서버 config.php/호스트 패리티 동시) - 재전송 방어 + 기본 API_KEY fail-closed + 디바이스 문자열 정제(api/sensor_data.php) - 오프라인 SMS 중복 발송 경합 제거(cron_heartbeat.php, 원자적 선점) - CSV 수식 주입 방지(monthly_report.php), 감사로그 회전 락(retention_cleanup.php) - 브루트포스 카운터 원자화(login.php), 예시 TOTP 비밀키 무효화, 마이그레이션 멱등화 _backup/(하드코딩 실 비밀값 포함)·config.local.php·런타임 상태는 .gitignore 제외.
29 lines
1.2 KiB
C
29 lines
1.2 KiB
C
/* =============================================================================
|
|
* timesync.h - SNTP 시간 동기 + RTC (RPi OS NTP 대응)
|
|
*
|
|
* TLS 인증서 유효기간 검증과 보고 본문의 timestamp 필드에 정확한 Unix 시간이
|
|
* 필요하다. SNTP 는 UDP 라 TLS 가 필요 없으므로 TLS 연결보다 먼저 수행한다.
|
|
* 구현(timesync.c): LwIP apps/sntp 로 시간 획득 후 RTC 에 반영.
|
|
* ===========================================================================*/
|
|
#ifndef TIMESYNC_H
|
|
#define TIMESYNC_H
|
|
|
|
#include <stdint.h>
|
|
|
|
/* SNTP 클라이언트 시작 (네트워크 업 이후 호출). */
|
|
void timesync_init(void);
|
|
|
|
/* 최초 시간 동기 완료까지 대기. 0 성공, 음수 타임아웃. */
|
|
int timesync_wait(uint32_t timeout_ms);
|
|
|
|
/* 시간이 한 번이라도 동기화되었으면 1. */
|
|
int timesync_is_set(void);
|
|
|
|
/* 현재 Unix epoch(초). 미동기 시 0. */
|
|
uint32_t timesync_now(void);
|
|
|
|
/* SNTP 수신 콜백(내부용): lwipopts.h 의 SNTP_SET_SYSTEM_TIME 에서 호출되어
|
|
* 획득한 Unix 시간을 RTC 에 반영하고 "동기됨" 플래그를 세운다. */
|
|
void timesync_apply_epoch(uint32_t unix_seconds);
|
|
|
|
#endif /* TIMESYNC_H */
|