This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
The Restoration of jpcsp.org
#1
Hello JPCSP community,

As you might already have known, the jpcsp.org website had been abandoned for many years, at least since 2013, with the original code having been written in 2008 and not very updated ever since. Due to that, and because the original backend code was written in a very insecure way, the website has been hacked several times throughout the years, leaving the website out of the air and/or leaving malware on it. Most recently, the website had been hacked and several resources had been deleted, leaving the website as a blank page with a bunch of leftover links.

Seeing as the website had been abandoned for at least 8 years, I decided to contact the current owner of the website and got permission and access to restore it. The plan was to clean all the malware uploaded to the website, update the website's backend to modern PHP, rewrite code to be secure and fix original bugs that the website already had a decade ago, and whatever else I felt needed to be fixed while going at it, all while maintaining the same front-end, as that would require a lot of extra work, and my goal here was to restore and preserve this important piece of history before it was lost for good.

When I started, the website was in a worst shape than what I already imagined. There were several malicious scripts that had been uploaded throughout the past hacking attempts, missing/tampered database entries that were blasted with SQLis, there was no download system backend left whatsoever, among other things. Fast forward 3 days, the website was restored, up and running with actively supported backend software, with a brand new automatic download system that imports new builds from GitHub, and a new page with changelog and version release date information.

Here's a list of the main changes made to the website:
- Clean malware, thoroughly going through every directory and file;
- Remove unused/unneeded files, there were example web server files from a web server the website had been previously been hosted on, as well as a dependency folder for a framework that the website never used, among other things;
- Re-arrange code styling, the files were a mix of spaces/tabs and with no coherent code styling guidelines.
- Port website code from PHP 5.2 / 5.3 to active PHP 7.4 / 8.X, the website was running on the latest PHP 5.6, granted, with errors, but the code was originally written in the late 2000s and largely untouched.
- Restore lost resources and database entries, with the help of Web Archive. Image backgrounds for header/body/footer were missing, as well as the oldest news entry, and a few other news entries had been tampered with on the database. A mistake circa February 2009 by the developers caused the oldest news post dates to be overwritten, but I have restored them thanks to information from Web Archive.
- Achieve HTML5 / CSS3 spec compliance, the website had some errors in regards to those. Properties that were long gone from spec were being used, granted, looking at the age of the website. Validation still fails due to the usage of lightbox.js code from 2008, which I am yet to replace, as it currently works fine despite the age.
- Enable and force HTTPS, website wasn't using HTTPS, now it is.
- Remove old integrations, really old version of analytics that wasn't even working properly and Facebook Like Box, a true relic of the past.
- Update sidebar, link to the GitHub repository instead of Google Code page that doesn't exist anymore, remove duplicated link to forums, open links in new tabs by default, fix design in order for it to not overflow.
- Design fixes, padding/margin fixes here and there, replace usage of Windows specific fonts Trebuchet MS and Verdana with Open Sans, to ensure font compatibility with any device.
- HTML metadata and OpenGraph, added favicon and support for link previews.
- URL adjustements, always use lowercase on URLs, p=news instead of p=News and so on, remove .php from links, remove func parameter from the news section by rewriting the paging system, as it made no sense and just generated duplicated URLs for the same content.
- Compatibility section adjustements, there's barely any data there, but I've quickly made a few changes to it, now it displays every game by default and has an all sorting flag, instead of having to click all 27 characters to figure out what has entries on them or not. This will be left as is for now, further functional changes to use newer data may be made in the future.
- SEO enhancements, JPCSP website is now back to being the first result on Google, DuckDuckGo, Bing, and others, when searching for JPCSP.
- Rewrite downloads system, it now automatically imports data and builds from JPCSP GitHub Actions, using the Workflow and Artifact GitHub APIs. The backend data was also plugged on the existing frontend, and a few changes to the frontend were made for builds to be more descriptive. The builds are separated by 5 tables as that was how the frontend was originally made. More work can still be done here in regards to frontend while keeping the same design style.
- Update the about page, add current active developers, rewrite the first paragraph to fix grammar and consistency issues.
- Add changelogs page, with information from the JPCSP Readme as well as Web Archive data. Lists all the release dates, obtained on Git History, Web Archive from the older Google Code page, and other web sources.
- Add code quality continuous integration, PHP static analysis with PHPStan on the maximum level, 9, has been added, and it runs every time a change is pushed to the website.

That sums everything up pretty much. You can visit the JPCSP website at https://jpcsp.org and enjoy a relic from 2008, now fully restored, and able to serve you emulator builds as they release.

Thank you for keeping JPCSP alive with important research breakthroughs still happening,
AniLeo
Desktop: Ryzen 7 5800X, Radeon RX 6800 XT, 2x8G 3600MHz, Manjaro Linux
Laptop: Intel i7 6700HQ, Intel HD 530, 2x8G 2133MHz, Manjaro Linux
Old Desktop: FX-8350, R9 280X, 2x4G 1600MHz, Manjaro Linux
Reply
#2
Thank you Annie for taking the time to restore and update the jpcsp.org website to modern standards.
Reply
#3
Excellent work, Annie!
I'm glad someone experienced is taking over the maintenance of the jpcsp.org web site.
Always include a complete log file at INFO level in your reports. Thanks! How to post a log
Reply
#4
Changelog (13 Feb 2022):
- Fixed downloads page missing newer builds after build name changes from https://github.com/jpcsp/jpcsp/pull/489/
- Added links to commits on the downloads page
Desktop: Ryzen 7 5800X, Radeon RX 6800 XT, 2x8G 3600MHz, Manjaro Linux
Laptop: Intel i7 6700HQ, Intel HD 530, 2x8G 2133MHz, Manjaro Linux
Old Desktop: FX-8350, R9 280X, 2x4G 1600MHz, Manjaro Linux
Reply
#5
Hi Annie,

For some reason, the latest commit (9649bdb8) doesn't appear for any OS platform on the downloads page.
Reply
#6
Hello,
Thanks for the heads up, that's my fault.
I had pushed incomplete code - it has been fixed now.
Desktop: Ryzen 7 5800X, Radeon RX 6800 XT, 2x8G 3600MHz, Manjaro Linux
Laptop: Intel i7 6700HQ, Intel HD 530, 2x8G 2133MHz, Manjaro Linux
Old Desktop: FX-8350, R9 280X, 2x4G 1600MHz, Manjaro Linux
Reply
#7
Wow nice work Annie!
Reply
#8
thank you..
i almost forgot the website exist
Reply
#9
Changelog (13 Apr 2022):
Fixed an issue that prevented the latest build from appearing on the downloads page as run_id got bigger than s32
Desktop: Ryzen 7 5800X, Radeon RX 6800 XT, 2x8G 3600MHz, Manjaro Linux
Laptop: Intel i7 6700HQ, Intel HD 530, 2x8G 2133MHz, Manjaro Linux
Old Desktop: FX-8350, R9 280X, 2x4G 1600MHz, Manjaro Linux
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)