Skip to content
/ argus Public

ARGUS is a Lightweight file/folder watcher for file system operations. Seamlessly integrate on any operating system and monitor file system changes allowing connected clients stay updated on changes within the watched files and directories in real time. Leverages Go's concurrency and fsnotify for cross-platform support.

License

Notifications You must be signed in to change notification settings

Khelechy/argus

Repository files navigation

A.R.G.U.S

ARGUS is a versatile and lightweight file/folder watcher designed for seamless integration into any environment. It provides real-time notification events for file and folder operations, allowing connected clients to stay updated on changes within the watched directories. Leveraging the power of Go's concurrency and the cross-platform support of fsnotify, ARGUS ensures robust performance across various operating systems.

Available Client Libraries

Dependencies

  • golang +v1.19
  • fsnotify

Features

  • Real-time Notification: Receive instant notifications for file and folder operations, including creations, deletions, modifications, change modes(chmod) and renames.

  • TCP/IP Communication: Connect to ARGUS via TCP/IP to receive notifications, enabling seamless integration with a wide range of applications and services.

  • Multiple Clients: ARGUS supports multiple connected listening clients with no limit.

  • Authentication Support: Ensure secure communication by authenticating clients connecting to ARGUS, providing an additional layer of protection for sensitive data.

  • Multiple File/Folder Watching: Watch multiple files and folders concurrently, allowing users to monitor various locations simultaneously.

  • Recursive Folder Watching: Enable recursive watching to track changes within nested directories, providing comprehensive coverage of file system activity.

  • Wildcard extensions: Watch files in a folder that matches a particular extension, recursively or not, "C:/Users/PFY-102.PFY-102/source/repos/Mine/argus/testfolder/*.json".

  • Cross-platform Compatibility: Utilize ARGUS across different operating systems, thanks to its dependency on fsnotify, which offers consistent performance and behavior regardless of the platform.

  • Flexible Configuration: Includes a default config.json file in the root of the project for configurations samples and authentication credentials, (Leave username and password empty if you dont need auth).

Argus

What's New:

Fixed major authentication bypass bug

Support for wildcard extension, allows you to watch files in a folder that matches a particular file extenion, with support for recursive watching (Subdirectories).

Add sample path in the format "C:/Users/PFY-102.PFY-102/source/repos/Mine/argus/testfolder/*.json" to your config, please note the *.json, other examples are; *.yaml, *.log etc.

Getting Started:

To clone and build ARGUS, follow these simple steps:

Clone repo to your local directory with the command

git clone https://github.com/khelechy/argus.git

Build an executable with the command

cd argus
go build

Run argus executable with the command

./argus

Note: If you are in the current working directory of argus cloned project you don't need to pass a config file as flag. But if you are not, you need to pass a config file path as a command line argument.

./argus -config=/path/to/config.json

Sample config file

{
    "server": {
        "host": "localhost",
        "port": "1337",
        "username": "testuser",
        "password": "testpassword"
    },
    "watch": [
        {
            "path": "C:/Users/PFY-102.PFY-102/source/repos/Mine/argus/testfolder2",
            "watchRecursively": true
        },
        {
            "path": "C:/Users/PFY-102.PFY-102/source/repos/Mine/argus/testfolder",
            "watchRecursively": false
        },
        {
            "path": "C:/Users/PFY-102.PFY-102/source/repos/Mine/argus/testfolder/*.json",
            "watchRecursively": false
        },
        {
            "path": "C:/Users/PFY-102.PFY-102/source/repos/Mine/argus/file.txt",
            "watchRecursively": false
        }
    ]
}

Contribution

Feel like something is missing? Fork the repo and send a PR.

Encountered a bug? Fork the repo and send a PR.

Alternatively, open an issue and we'll get to it as soon as we can.

Building Target Language Libraries

To contribute to building the ARGUS client libraries and conforming with the underlying standards and procedures please read the contributing docs

About

ARGUS is a Lightweight file/folder watcher for file system operations. Seamlessly integrate on any operating system and monitor file system changes allowing connected clients stay updated on changes within the watched files and directories in real time. Leverages Go's concurrency and fsnotify for cross-platform support.

Resources

License

Stars

Watchers

Forks

Packages

No packages published