My very first website
As the Dutch would say, 'met gepaste trots', I proudly present my very first self-made website: sec.joostagterhoek.nl! And because a picture is worth a thousand words...
So, what are we looking at here? As you can read in previous posts (like this one), over the last three years in my (limited) offtime, I've been learning how to program. After some cursory investigations into what to learn first, for the last few months I have decided to stick with my first language,🐍 Python 🐍.
And the screenshots above show what I learned so far: a self-hosted and deployed Flask web application that can look up URLs, domains, email addresses and IP addresses and return relevant security information.
What I learned so far
- Using imported modules like
python-whois
,checkdmarc
,validators
and of courseflask
- Retrieve and shape JSON-results from APIs of VirusTotal and AbuseIPDB
- JavaScript to make each table result foldable for more detailed information
- Basic CSS for a centered site with a SPA-like feel
- Use
sessions
to build a history state and clearing it - Structuring project as a Python wheel and installing it on my YunoHost-server
- Installing and running
gunicorn
as a web server gateway interface (WSGI) to serve my website - Configuring gunicorn and nginx for proxied HTTPS connections
What works
- URL, domain name and email address lookup
- Multiple lookups, separated by expected delimiters (commas, semicolons, spaces, etc.)
- Displaying lookup results in a table with foldable rows for more detailed information
- Displaying a table of previous lookups
- Deleting the history of previous lookups
What needs work
- IP address lookups (something with building the lookup object)
- Error handling (return custom error pages, logging and relaying error logs to me)
- Distinct lookups in history (deduplicate previous lookups if the results are the same, VirusTotal score f.e.)
Next steps
- Advance from simple HTML and CSS templates using Jinja to a ReactJS-frontend and FLask-backend (API)
- Offer various forms of exports (.csv, Markdown table, etc.)
- Add a note functionality to jot down notes relating to the lookup results
And I guess that's it! This project will continue to keep me busy I think. I especially want the React frontend to work before focusing on other projects more. I have a lot of ideas, but I know I work best and feel most comfortable with my progress if I stick to it.
See you next time!