diff --git a/.drone.yml b/.drone.yml index 39577b26..9810026f 100644 --- a/.drone.yml +++ b/.drone.yml @@ -25,6 +25,7 @@ steps: - go get -v -d srs.epita.fr/fic-server/repochecker/epita - go get -v -d srs.epita.fr/fic-server/repochecker/file-inspector - go get -v -d srs.epita.fr/fic-server/repochecker/grammalecte + - go get -v -d srs.epita.fr/fic-server/repochecker/pcap-inspector - go get -v -d srs.epita.fr/fic-server/repochecker/videos - go get -v -d srs.epita.fr/fic-server/qa - mkdir deploy @@ -55,6 +56,7 @@ steps: - go vet -v -buildvcs=false srs.epita.fr/fic-server/repochecker/epita - go vet -v -buildvcs=false srs.epita.fr/fic-server/repochecker/file-inspector - go vet -v -buildvcs=false srs.epita.fr/fic-server/repochecker/grammalecte + - go vet -v -buildvcs=false srs.epita.fr/fic-server/repochecker/pcap-inspector - go vet -v -buildvcs=false srs.epita.fr/fic-server/repochecker/videos - go vet -v -buildvcs=false srs.epita.fr/fic-server/qa - go vet -v -buildvcs=false srs.epita.fr/fic-server/settings @@ -114,6 +116,7 @@ steps: - go build -buildvcs=false -buildmode=plugin -v -o deploy/repochecker-epita-rules-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH}.so srs.epita.fr/fic-server/repochecker/epita - go build -buildvcs=false -buildmode=plugin -v -o deploy/repochecker-file-inspector-rules-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH}.so srs.epita.fr/fic-server/repochecker/file-inspector - go build -buildvcs=false -buildmode=plugin -v -o deploy/repochecker-grammalecte-rules-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH}.so srs.epita.fr/fic-server/repochecker/grammalecte + - go build -buildvcs=false -buildmode=plugin -v -o deploy/repochecker-pcap-inspector-rules-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH}.so srs.epita.fr/fic-server/repochecker/pcap-inspector - go build -buildvcs=false -buildmode=plugin -v -o deploy/repochecker-videos-rules-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH}.so srs.epita.fr/fic-server/repochecker/videos - grep "const version" repochecker/update.go | sed -r 's/^.*=\s*(\S.*)$/\1/' > deploy/repochecker.version environment: diff --git a/Dockerfile-repochecker b/Dockerfile-repochecker index 35fe9465..cb92d688 100644 --- a/Dockerfile-repochecker +++ b/Dockerfile-repochecker @@ -17,6 +17,7 @@ RUN go get -d -v ./repochecker && \ go build -v -buildmode=plugin -o repochecker/epita-rules.so ./repochecker/epita && \ go build -v -buildmode=plugin -o repochecker/file-inspector.so ./repochecker/file-inspector && \ go build -v -buildmode=plugin -o repochecker/grammalecte-rules.so ./repochecker/grammalecte && \ + go build -v -buildmode=plugin -o repochecker/pcap-inspector.so ./repochecker/pcap-inspector && \ go build -v -buildmode=plugin -o repochecker/videos-rules.so ./repochecker/videos @@ -28,7 +29,7 @@ RUN mkdir /srv/grammalecte && cd /srv/grammalecte && unzip /srv/grammalecte.zip FROM alpine:3.16 -ENTRYPOINT ["/usr/bin/repochecker", "--rules-plugins=/usr/lib/epita-rules.so", "--rules-plugins=/usr/lib/file-inspector.so", "--rules-plugins=/usr/lib/grammalecte-rules.so", "--rules-plugins=/usr/lib/videos-rules.so"] +ENTRYPOINT ["/usr/bin/repochecker", "--rules-plugins=/usr/lib/epita-rules.so", "--rules-plugins=/usr/lib/file-inspector.so", "--rules-plugins=/usr/lib/grammalecte-rules.so", "--rules-plugins=/usr/lib/pcap-inspector.so", "--rules-plugins=/usr/lib/videos-rules.so"] RUN apk add --no-cache git python3 ffmpeg @@ -37,4 +38,5 @@ COPY --from=gobuild /go/src/srs.epita.fr/fic-server/repochecker/repochecker /usr COPY --from=gobuild /go/src/srs.epita.fr/fic-server/repochecker/epita-rules.so /usr/lib/epita-rules.so COPY --from=gobuild /go/src/srs.epita.fr/fic-server/repochecker/file-inspector.so /usr/lib/file-inspector.so COPY --from=gobuild /go/src/srs.epita.fr/fic-server/repochecker/grammalecte-rules.so /usr/lib/grammalecte-rules.so +COPY --from=gobuild /go/src/srs.epita.fr/fic-server/repochecker/pcap-inspector.so /usr/lib/pcap-inspector.so COPY --from=gobuild /go/src/srs.epita.fr/fic-server/repochecker/videos-rules.so /usr/lib/videos-rules.so diff --git a/repochecker/pcap-inspector/README.md b/repochecker/pcap-inspector/README.md index 02d200b8..7a1c1217 100644 --- a/repochecker/pcap-inspector/README.md +++ b/repochecker/pcap-inspector/README.md @@ -1,12 +1,12 @@ -# IP-INSPECTOR +# PCAP-INSPECTOR Inspects pcap and pcapng files for packets with ip src and ip dst using private IPs -Set VERBOSE_PCAP_CHECK environment variable to enable verbose mode +Set `VERBOSE_PCAP_CHECK` environment variable to enable verbose mode ## Build library -go build -o ip-inspector -buildmode=plugin main.go files.go +go build -o pcap-inspector -buildmode=plugin . ## Requirement @@ -15,4 +15,4 @@ github.com/google/gopacket ## TODO Custom rules on packet filtering -Handle log files \ No newline at end of file +Handle log files diff --git a/repochecker/pcap-inspector/files.go b/repochecker/pcap-inspector/files.go index 9378b86f..954de31b 100644 --- a/repochecker/pcap-inspector/files.go +++ b/repochecker/pcap-inspector/files.go @@ -31,9 +31,7 @@ type PcapNgReader struct { *pcapgo.NgReader } -// // Impl interface for reading pcap and pcapng data -// func (pcapReader *PcapReader) ReadPacketData() (data []byte, ci gopacket.CaptureInfo, err error) { return pcapReader.Reader.ReadPacketData() } @@ -42,12 +40,9 @@ func (pcapNGReader *PcapNgReader) ReadPacketData() (data []byte, ci gopacket.Cap return pcapNGReader.NgReader.ReadPacketData() } -// // Iterate thought each packet to find potentialy unwanted packets // TODO: Allow custom rules to specify what is a unwanted packet -// func CheckPcap(pcapReader PcapPacketDataReader, pcapName string) (errs []error) { - warningFlows := make(map[gopacket.Flow]([]time.Time)) // @@ -63,7 +58,7 @@ func CheckPcap(pcapReader PcapPacketDataReader, pcapName string) (errs []error) if packetNetworkLayer == nil { continue } - + flow := packetNetworkLayer.NetworkFlow() ENDPOINT_SELECTION: @@ -117,7 +112,7 @@ func CheckTextFile(fd *os.File) (errs []error) { func InspectFileForIPAddr(file *fic.EFile, exceptions *sync.CheckExceptions) (errs []error) { i, ok := sync.GlobalImporter.(sync.LocalImporter) if !ok { - log.Printf("Unable to load `ip-inspector.so` as the current Importer is not a LocalImporter (%T).", sync.GlobalImporter) + log.Printf("Unable to load `pcap-inspector.so` as the current Importer is not a LocalImporter (%T).", sync.GlobalImporter) return } diff --git a/repochecker/pcap-inspector/main.go b/repochecker/pcap-inspector/main.go index fdd47121..93e9f6f8 100644 --- a/repochecker/pcap-inspector/main.go +++ b/repochecker/pcap-inspector/main.go @@ -4,10 +4,6 @@ import ( "srs.epita.fr/fic-server/admin/sync" ) -var hooks *sync.CheckHooks - func RegisterChecksHooks(h *sync.CheckHooks) { - hooks = h - h.RegisterFileHook(InspectFileForIPAddr) }