My customer is using a very outdated ecommerce management system on my hosting service. For that product, no support is being provided anymore by the vendor.
Brief explanation: the shop website, that claims to run under LAMP stack, is built by an old Visual Basic Windows application running on MS Access. The user constructs the shop, defines the HTML template, adds products and categories, etc.
Then the VB exe builds the PHP pages (one for each template page) and the SQL script to run on MySQL. It also uploads everything via FTP and runs the installation/upgrade script on its own.
Browsing the website, many products' descriptions are cut before the
euro sign. For example, what was supposed to be "Product price €1000" becomes "Product price"
- MySQL contains a cutted description until the € sign, so it's not PHP fault
- The Access databases contain full description with € sign, so it's not fault of the webmaster writing bad description or eDisplay cutting them
- The SQL that will run once the site gets uploaded, stored on my local machine before upload, contains the € sign
- The same script, after being FTPed by eDisplay and opened with nano from SSH, shows the € sign messed up like this:
- vsftpd log reports (obfuscated for privacy)
Sat Dec 15 11:16:57 2012 22 xxx.xxx.128.13 1112727 /srv/www/domains/xxxxxx.it/htdocs/db.sql b _ i r xxxxxxx ftp 0 * cwhich seems to be a binary transfer (and also a huge security vulnerability because you can download the whole database from unauthenticated HTTP)
- The eDisplay internal FTP client provides no option for ascii/binary transfer modes
- [Add] Trying to manually upload the SQL file via SFTP shows messing up euro
- [Add2] Trying to manually upload using Xftp client with explicit ASCII mode doesn't fix too
It looks like the file gets uploaded as binary. Perhaps on the customer's previous host it all worked fine because that was a Windows host.
It's an Azure virtual machine running openSUSE 12.2 with both
Without asking the customer to manually upload files using FileZilla or replacing
€, because he refuses, what can I do on server side to prevent vsftpd to screw up euro sign?