Enhancements
Hi,
Thanks for this awesome project. I was thinking of theses improvements :
- Multi user capability (white/blacklist by user + exceptions)
- General stats about the objects blocked while browsing
I'll contribute soon, since I dont know golang :)
Yes, these are all great enhancements. I have quite a few in mind as well. It's probably worth taking a step back and coming up with some milestones and general project vision. I might start a wiki soon and let people help drive where we should go with this.
In the meantime, I'm cleaning up the longpolling code as a separate library (https://github.com/jcuga/golongpoll) which has already been beneficial since I've fixed a few bugs and now proxyblock has only proxyblock-specific code.
The enhancements you've brought up highlight two different use cases for proxyblock. Originally it was slapped together for personal use, with no concept of users and restricted features. But there's no reason why the tool can't be made to serve as a organization's proxy, with an admin fine tuning it and users browsing the internet without any injected page controls, and when they hit a forbidden page, they could click to request admin to make an exception.
I really like the idea of proxyblock taking on a larger role. Then once the tool reaches a solid set of features, we could publish lists of common ad domains, malware sources, or other lists of unwanted content, and the proxy could pull down updated lists regularly. Or better yet, we could even pull down third party lists of domains! If proxyblock ever achieves these sort of features, I think it would be a big hit.
I think right now I need to do some general cleanup and improvements to get the project in a state where other people can start to make contributions more easily. Once that's done, the high-level enhancements in my mind would be:
- Support for optional HTTPS proxying/Man-in-the-Middle. If users could bypass the proxy's rules by switching to HTTPS, then this tool isn't super useful! But some people may not like the idea of man-in-the-middle, so make it configurable.
- Some thread safety issues
- Unit tests! From splicing out the longpolling code into its own library and unit testing it, I've realized how many bugs there were and I'm glad are now fixed.
- Instead of adding manual blacklist exceptions by exact URL, support tweaking whitelist/blacklist via regular expressions.
- Persisting manual blacklist exceptions across runs (currently forgets when you stop proxyblock). In general, having a local database file (sqlite?) Once a database is introduced, the whitelist.txt and blacklist.txt files could go away and just rely on the database.
- Concept of users (admin versus regular, only admin gets the page controls, users can't make exceptions, but they can click a link on the block page to request an admin update the blacklist)
- Admin console to see usage stats, pretty dashboard-y goodness.
- UI improvments for page controls: sortable tables, less clicks to add blacklist exceptions, can take advantage of jquery based UI components that already exist instead of doing from scratch.
- Once we're fare enough along, profiling and performance.