server/repochecker/grammalecte/main.go

125 lines
2.7 KiB
Go

package main
import (
"log"
"os"
"os/exec"
"strings"
"time"
"srs.epita.fr/fic-server/admin/sync"
)
const GRAMMALECTE_LOCAL_URL = "http://127.0.0.1:8080"
var ALLOWED_WORDS = []string{
"forensic",
"phishing",
"Phishing",
"keylogger",
"Keylogger",
"flag",
"ANSSI",
"DDOS",
"Peer-to-Peer",
"XSS",
"Moodle",
"APK",
"PCAP",
"sha256",
"sha512",
"spear-phishing",
"lags",
"latéraliser",
"root",
"overflow",
"SSH",
"ARP",
"TCP",
"UDP",
"ICMP",
"TLS",
"SSL",
"mimikatz",
"OpenSSL",
"RDP",
"AES",
"RSA",
"LFSR",
"Wireshark",
"reverse",
}
var CommonOpts = GrammalecteOptions{
Typographie: true,
SignesTypographiques: true,
ApostropheTypographiques: true,
EcritureEpicene: true,
EspaceSurnumeraires: true,
Majuscules: true,
Virgules: true,
PonctuationFinale: true,
TraitsDUnionEtSoudures: true,
Nombres: true,
NormesFrancaises: true,
LigaturesTypographiques: true,
ApostropheManquate: true,
Chimie: true,
NomsEtAdjectifs: true,
FauxAmis: true,
Locutions: true,
Accords: true,
Verbes: true,
Conjugaisons: true,
Infinitif: true,
Imperatif: true,
Interrogatif: true,
ParticipesPasses: true,
Style: true,
Populaire: true,
Pleonasme: true,
ElisionEuphonie: true,
AdvNegation: true,
RepetitionParag: true,
RepetitionPhrase: true,
Divers: true,
MotsComposes: true,
Dates: true,
IdRule: true,
}
func runGrammalecteServer() error {
path := "grammalecte-server.py"
if _, err := os.Stat(path); os.IsNotExist(err) {
path = "/srv/grammalecte/grammalecte-server.py"
}
cmd := exec.Command("python3", path)
if err := cmd.Start(); err != nil {
return err
}
log.Println("Waiting for grammalecte server to be ready...")
time.Sleep(2000 * time.Millisecond)
return nil
}
func isRecognizedLanguage(lang string) bool {
// Grammalecte can only check french texts
return lang == "" || strings.HasPrefix(lang, "fr")
}
func RegisterChecksHooks(h *sync.CheckHooks) {
if err := runGrammalecteServer(); err != nil {
log.Fatal("Unable to start grammalecte-server:", err)
} else {
h.RegisterFlagKeyHook(GrammalecteCheckKeyFlag)
h.RegisterFlagChoiceHook(GrammalecteCheckFlagChoice)
h.RegisterHintHook(GrammalecteCheckHint)
h.RegisterMDTextHook(GrammalecteCheckMDText)
h.RegisterCustomHook("CheckGrammar", GrammalecteCheckGrammar)
}
}