This could save you a lot of time on a legacy project

This could save you a lot of time on a legacy project

We recently had an issue with a client of ours who has a, shall we say mature website. The site all works fine and we believed everything was fine until the day came that the client wanted to upload some new banner images to their category pages via their CMS.

The issue was, the upload form had disappeared. As we did not build the site originally, we had no idea what it was supposed to even look like, never mind fix the issue. And that's where the story begins.

The investigation began with a quick check of the browser console, where it became evident something was trying to run Flash in the browser. After some more digging it was a javascript JQuery plugin called Uploadify.

Our initial reaction was the face palm as we were aware of the following:

Since Adobe no longer supports Flash Player after 31 December2020 and blocked Flash content from running in Flash Player beginning 12 January2021, Adobe strongly recommends all users immediately uninstall Flash Player to help protect their systems.  

We informed the client of the discovery and told them we would provide some solutions shortly. We knew this was an expense that the client had not expected to come across and so wanted to keep the solution as cheap as possible, but also provide all the options.

Option 1 - Try using a Flash Emulator browser plugin

When searching the web there was only really one main flash emulator to use, and that is Ruffle. It seemed to be pretty good, however as it states, it only really supports basic flash like old flash videos, and so the upload did not run correctly. We did not bother trying any other emulators and this seemed to be the main player in town.

Option 2 - Use a Virtual machine with an old browser version installed, and install an old version of flash on the VM.

This took a while. We decided to use one of the free to download Microsoft Virtual Machines for developers to test on. We found a combination of browser and flash player that worked and provided the client with the instructions to set this up. I have provided the instructions below in case anyone else is interested.

  1. Download VirtualBox and install it (we used this version).
  2. Download Microsoft Windows 7 with IE10 (for VirtualBox) from here.
  3. Download an old version of Adobe Flash Player from here.
  4. Then we offered to run through on a conference call on how to share a folder from the host machine to the virtual machine and install the flash player, allowing them to access the website and use the shared folder to pass their images over to the Virtual Machine of Windows (note you should disable Windows updates too before doing anything else).

The problem was that this solution would only work for the member of staff who had set it up on their machine and it posed a security risk as this old insecure VM was using sensitive data to access the CMS and so could possibly be compromised. It was also quite a technical task to undertake (for a non techie person) and not practical for the client. Also this could potentially be their only solution to this until they get a new website, or simply re-write the feature.

On the positive side, this would not cost anything other than some time to set up the Virtual Machine.

Option 3 - Re-write the upload functionality

In the end the client decided to pay us to simply re-write the upload functionality to a standard HTML form to upload the new images. We were able to provide this reasonably fast and cheap as we were able to use the same endpoints the Flash uploader was relying upon and keep their code base consistent. The only benefit the Flash uploader was providing them was an upload progress bar, which they were happy to lose as the images pretty much uploaded instantly anyway.

And this is where the story ends. Hopefully someone out there will find this useful, even if they just need our VM solution for a one off task.

If you want to find out more about what we do, you can find us here (LinkedIn) or here.