captainGeech42 / ransomwatch

Ransomware leak site monitoring
MIT License
307 stars 61 forks source link

Web Interface #2

Open captainGeech42 opened 3 years ago

captainGeech42 commented 3 years ago

This would require significantly re-architecting this, and maybe belongs in a separate project, but a web interface to see the current list of victims and stats for the different sites would be nice.

biligonzales commented 3 years ago

Hello @captainGeech42

A bit related to this topic, but not entirely: I have started the implementation of an API to asynchronously expose the database entries (so that it completes the current notifications synchronous part of the project).

It currently only provides a very mere rss interface supported by fastapi running inside a dedicated Docker container, but I could add json or xml stuff if anyone is interested (this part could definitely help the build of a web interface for instance).

So far I don't know how to integrate this into the current project. It's not easy as for instance one of my main problem is that I don't want my API docker to be destroyed when the main container is done with scrapping. But I'm not sure that providing it in a new project is the way to go too.

What do you think?

captainGeech42 commented 3 years ago

When I originally made this issue, I was thinking there would be a few major components:

For your project, the easiest approach I think is to build out your API and take in the SQLite database via a volume and run them separately, and keep them as two distinct projects. Even if that new model I outlined above gets implemented, I think it is also separate projects with a shared data layer/library, for proper modularity. Not sure, haven't put a ton of thought into it (just wanted to get it on paper so I wouldn't forget).

I think a formal v2 rearchitecture for this project is on the horizon when I can chunk out a solid week to build it, as I think building out the aforementioned model has value, but idk when I'll have time (my project time right now is very minimal and I've got a couple other things that I'm currently trying to get out the door). I'm also moderately interested in re-implementing this in Golang, but not sure yet.