| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- package main
- import (
- "flag"
- "fmt"
- "io/fs"
- "log"
- "os"
- "runtime"
- "strings"
- "time"
- )
- // findPath Find the path in which the log files are stored.
- func findPath() (logPath string) {
- var err error
- var homedir string
- var Path string
- var Paths []string
- var PathsLinux []string
- var PathsMac []string
- var PathsWindows []string
- // Determine the homedir of the user.
- homedir, err = os.UserHomeDir()
- if err != nil {
- log.Fatal(err)
- }
- // Define Paths to check out
- PathsLinux = append(PathsLinux, "/Documents/EVE/logs/")
- PathsLinux = append(PathsLinux, "/.local/share/Steam/steamapps/compatdata/8500/pfx/drive_c/users/steamuser/My Documents/EVE/logs/Chatlogs/")
- PathsMac = append(PathsMac, "/Documents/EVE/logs/")
- PathsMac = append(PathsMac, "/Library/Application Support/EVE Online/p_drive/User/My Documents/EVE/")
- PathsWindows = append(PathsWindows, "C:\\Users\\YourUserName\\Documents\\EVE\\logs")
- PathsWindows = append(PathsWindows, "MyDocuments -> EVE -> Logs")
- switch runtime.GOOS {
- case "linux":
- Paths = PathsLinux
- case "darwin":
- Paths = PathsMac
- case "windows":
- Paths = PathsWindows
- }
- for _, Path = range Paths {
- if _, err := os.Stat(homedir + Path); !os.IsNotExist(err) {
- logPath = homedir + Path
- }
- }
- return
- }
- // OrchestrateIntelMonitoring routine to periodically check the logpath for the intel channels.
- func OrchestrateIntelMonitoring(logPath string, intelChannel string) {
- // Declare variables
- var files []fs.FileInfo
- var lastName string
- var tempName string
- // Enter a for-loop that periodically checks.
- for {
- files = fetchFileListing(logPath)
- tempName = findLatestLog(logPath, intelChannel, files)
- if !strings.EqualFold(lastName, tempName) {
- lastName = tempName
- fmt.Println("Found a new LogFile! Its " + lastName)
- }
- // Sleep a minute before we check again.
- time.Sleep(time.Second * 60)
- }
- }
- // fetchFileListing As it says on the tin.
- func fetchFileListing(logPath string) (files []fs.FileInfo) {
- // Declare Variables
- var err error
- var folder *os.File
- // Open the folder we need to open.
- folder, err = os.Open(logPath)
- if err != nil {
- log.Fatal(err)
- }
- // Read the files UwU
- files, err = folder.Readdir(-1)
- folder.Close()
- if err != nil {
- log.Fatal(err)
- }
- // Off you go! \o/
- return
- }
- // findLatestLog Find the last log-file based on the Internet
- func findLatestLog(logPath string, intelChannel string, files []fs.FileInfo) (lastName string) {
- // Declare Variables
- var lastTime time.Time
- var tempTime time.Time
- for _, file := range files {
- file, err := os.Stat(logPath + file.Name())
- if err != nil {
- log.Fatal(err)
- }
- if strings.EqualFold(intelChannel, file.Name()[:len(intelChannel)]) {
- tempTime = file.ModTime()
- if tempTime.After(lastTime) {
- lastTime = tempTime
- lastName = logPath + file.Name()
- }
- }
- }
- // And there you are (or not)
- return
- }
- // main Something Importang. Dunno
- func main() {
- // Declare variables
- var logPath string
- var IntelChannelsSplit []string
- var IntelChannel string
- // Handle Parameters
- var intelChannels = flag.String("i", "Etherium Intel,Bean-Intel", "A commaseparated list of intel channels.")
- flag.Parse()
- // Split the CSV string into different parts
- IntelChannelsSplit = strings.Split(*intelChannels, ",")
- // Get the path we need to
- logPath = findPath()
- for _, IntelChannel = range IntelChannelsSplit {
- IntelChannel = strings.ReplaceAll(IntelChannel, " ", "_")
- go OrchestrateIntelMonitoring(logPath, IntelChannel)
- }
- for {
- time.Sleep(time.Second * 3600)
- fmt.Println("Hi. This is your hourly reminder that this program is still runnig and hasn't crashed!")
- }
- }
|