Good Day, I'm having trouble uploading an image to a FTP server via TLS on Android 4.4 with Titanium SDK 3.4.0.GA. I'm able to connect to the server, but that's as far as i've gotten. After it connects, when I try to log into the server, I get the following message:
[INFO] : Received: 550 TLS handshake failed
What is going wrong? Here is my code:
[App.js]
var mediaFileToUpload = ''; var win = Titanium.UI.createWindow({backgroundColor:'white'}); var connectButton = Titanium.UI.createButton({ title:'Connect', top: 155, left:30, right:30, height:40 }); win.add(connectButton); var upB = Titanium.UI.createButton({ title:'upload', top: 195, left:30, right:30, height:40 }); win.add(upB); upB.addEventListener('click', function(e){ logout(); }); var controlSocket = Ti.Network.Socket.createTCP({ host:'xxx.xxx.xxx.xxx', port:'21', stripTerminator:true, mode:Titanium.Network.READ_WRITE_MODE, connected: function(e) { Ti.API.info("Connected to xxx.xxx.xxx.xxx"); tryToConnect();}, }); function tryToConnect() { Ti.API.info("Trying to connect with SSL"); Ti.Stream.pump(controlSocket, readCallback, 1024, true); Ti.Stream.write(controlSocket, Ti.createBuffer({ value: 'AUTH SSL\r\n' }), writeCallback); Ti.API.info("SSL succeeded!"); Ti.API.info("PBSZ Stuff"); // right here is where it fails. Ti.Stream.pump(controlSocket, readCallback, 1024, true); Ti.Stream.write(controlSocket, Ti.createBuffer({ value: 'PBSZ 0\r\n\r\n' }), writeCallback); Ti.API.info("Entered PBSZ"); Ti.API.info("Logging in"); Ti.Stream.pump(controlSocket, readCallback, 1024, true); Ti.Stream.write(controlSocket, Ti.createBuffer({ value: 'USER [user]\r\n' }), writeCallback); Ti.API.info("User Entered"); Ti.API.info("Password:"); Ti.Stream.pump(controlSocket, readCallback, 1024, true); Ti.Stream.write(controlSocket, Ti.createBuffer({ value: 'PASS [password]\r\n' }), writeCallback); Ti.API.info("Password Entered"); Ti.API.info("Logged in and ready to use server!"); Ti.API.info("Changing to /smcapp directory..."); Ti.Stream.pump(controlSocket, readCallback, 1024, true); Ti.Stream.write(controlSocket, Ti.createBuffer({ value: 'CWD /smcapp\r\n' }), writeCallback); Ti.API.info("Changed to /smcapp directory"); Ti.API.info("Entering Passive mode..."); Ti.Stream.pump(controlSocket, readCallback, 1024, true); Ti.Stream.write(controlSocket, Ti.createBuffer({ value: 'PASV\r\n' }), writeCallback); Ti.API.info("Entered Passive mode"); Ti.API.info("Sending File to server..."); Ti.Stream.pump(controlSocket, readCallback, 1024, true); Ti.Stream.write(controlSocket, Ti.createBuffer({ value: 'STOR ' + Ti.Filesystem.applicationDataDirectory + '/' + 'Image2.png' + '\r\n' }), writeCallback); Ti.API.info('Sent File to server.'); Ti.API.info('Checking mediaFileToUpload...'); Ti.API.info('mediaFileToUpload = ' + mediaFileToUpload); //logout(); //upload(e); } function readCallback(e) { if (e.bytesProcessed == -1) { // Error / EOF on socket. Do any cleanup here. Ti.API.error('something went wrong' + e.buffer.toString()); } try { if (e.buffer) { var received = e.buffer.toString(); Ti.API.info('Received: ' + received); } } catch (er) { } } function writeCallback(e) { Ti.API.info('Successfully wrote to socket.'); } controlSocket.addEventListener('readError', function(e) { Titanium.API.info('Socket read error: ' + e.error); }); controlSocket.addEventListener('writeError', function(e) { Titanium.API.info('Socket write error: ' + e.error); }); function logout() { try { Titanium.API.info('[CLIENT] Quitting'); Ti.Stream.pump(controlSocket, readCallback, 1024, true); Ti.Stream.write(controlSocket, Ti.createBuffer({ value: 'QUIT\r\n' }), writeCallback); Ti.API.info('221 Goodbye.'); } catch (ex) { Ti.API.error('Failed to logout. Error: ' + ex.toString()); } //connectButton.title = 'Connect'; } connectButton.addEventListener('click', function(){ //if (connectButton.title == 'Connect') { try { //Titanium.API.info('[CLIENT] Connecting to ' + controlSocket.host); //controlSocket.connect(); //connectButton.title = 'Disconnect'; //connectButton.title = 'Disconnect'; upload(); } catch (e) { Titanium.API.info('Error: ' + e.error); } //} else { //} }); function upload() { Titanium.Media.showCamera({ success:function(event){ if (event.mediaType == Ti.Media.MEDIA_TYPE_PHOTO) { var errorMessage = 'unknown [default] (or no problems!)'; var path = Ti.Filesystem.getApplicationDataDirectory(); var aFile = Ti.Filesystem.getFile(path, 'Image2.png'); mediaFileToUpload = aFile.getNativePath(); aFile.write(event.media); Ti.API.info(aFile.nativePath + " = fx.nativePath"); Ti.API.info(aFile.name + " = fx.name"); Ti.API.info('connecting to server 208.109.104.197'); controlSocket.connect(); try { } catch (exe) { errorMessage = "Failed to Log out."; } alert('failed to send file to smc national. error: ' + errorMessage); } else { alert("Please take a picture, not a video"); } }, cancel:function(event){ }, error:function(event){ alert("An Error Occured. Sorry."); }, }); }