package main

import (
	"log"
	"sshd-tool/cmd/file-monitor/logic"
)

// import (
// 	"fmt"
// 	"log"
// 	"os"
// 	"sshd-tool/cmd/file-monitor/logic"
// 	"time"

// 	"github.com/elastic/go-libaudit/v2"
// 	"github.com/elastic/go-libaudit/v2/aucoalesce"
// 	"github.com/elastic/go-libaudit/v2/auparse"
// )

// type EventHandler struct{}

// func (h *EventHandler) ReassemblyComplete(msgs []*auparse.AuditMessage) {
// 	event, err := aucoalesce.CoalesceMessages(msgs)
// 	if err != nil {
// 		fmt.Printf("coalesce messages error: %v", err)
// 	}
// 	logic.EventChan <- event
// }

// func (h *EventHandler) EventsLost(count int) {
// 	fmt.Fprintf(os.Stderr, "=== event lost: %d \n", count)
// }

// func main() {
// 	cli, err := libaudit.NewMulticastAuditClient(nil)
// 	if err != nil {
// 		log.Fatalf("failed to create audit client: %v", err)
// 	}
// 	defer cli.Close()

// 	handler := &EventHandler{}
// 	rea, err := libaudit.NewReassembler(1024, time.Second*60, handler)
// 	if err != nil {
// 		log.Printf("%v", err)
// 		return
// 	}
// 	defer rea.Close()

// 	go func() {
// 		ticker := time.NewTicker(time.Second * 15)
// 		defer ticker.Stop()
// 		for range ticker.C {
// 			if rea.Maintain() != nil {
// 				break
// 			}
// 		}
// 	}()

// 	go logic.FiltMsg()

// 	for {
// 		rawMsg, err := cli.Receive(false)
// 		if err != nil {
// 			break
// 		}
// 		_ = rea.Push(rawMsg.Type, rawMsg.Data)
// 	}

// 	close(logic.EventChan)
// }

func main() {
	err := logic.CheckExec()
	if err != nil {
		log.Fatal(err)
	}

	
	logic.StartSftpMonitor()
}
