#import <sys/socket.h>
#import <arpa/inet.h>
#include <netdb.h>
+#include <stdlib.h>
@interface AppController (Private)
-
- (void)setStatus:(NSString *)msg isError:(BOOL)error;
- (void)readChannel:(LIBSSH2_CHANNEL *)channel;
- (void)uploadAndPrint:(id)sender;
+- (NSString *)getUploadSafeName:(NSString *)name;
@end
FILE *localFile;
struct stat fileInfo;
+ const char *fileName = [[self getUploadSafeName:[dragRegion filePath]] UTF8String];
[self setStatus:@"Connecting to acs.bu.edu" isError:NO];
struct sockaddr_in sin;
goto shutdown;
}
- LIBSSH2_CHANNEL *channel = libssh2_scp_send(ssh, "~/__bu_print_drop__.pdf", 0755, (unsigned long)fileInfo.st_size);
+ LIBSSH2_CHANNEL *channel = libssh2_scp_send(ssh, fileName, 0755, (unsigned long)fileInfo.st_size);
if (!channel)
{
[self setStatus:@"Unable to open upload SCP session" isError:YES];
// read the banner
[self readChannel:channel];
- // f!cking ACS messages --> skip some more
+ // ACS outage messages --> skip some more
char *delay = "q\r\n\0";
libssh2_channel_write(channel, delay, sizeof(char) * strlen(delay));
[self readChannel:channel];
char *cmd;
#ifndef BLU_DEBUG
NSString *printer = [[printersController selection] valueForKey:@"unixName"];
- cmd = (char *)[[NSString stringWithFormat:@"lpr -m -P%@ __bu_print_drop__.pdf\r\n\0", printer] UTF8String];
+ cmd = (char *)[[NSString stringWithFormat:@"lpr -m -P%@ %s\r\n\0", printer, fileName] UTF8String];
#else
- cmd = "touch abc.def\r\n\0";
+ cmd = "touch __PRINT__\r\n\0";
#endif
libssh2_channel_write(channel, cmd, sizeof(char) * strlen(cmd));
[self readChannel:channel];
// remove our temp file
- cmd = "rm -f __bu_print_drop__.pdf\r\n\0";
+ cmd = (char *)[[NSString stringWithFormat:@"rm -f %s\r\n\0", fileName] UTF8String];
libssh2_channel_write(channel, cmd, sizeof(char) * strlen(cmd));
[self readChannel:channel];
[pool release];
}
+/**
+ * Returns an NSString that is safe for uploding onto the server
+ */
+- (NSString *)getUploadSafeName:(NSString *)name
+{
+ NSMutableString *n = [NSMutableString stringWithString:name];
+ [n replaceOccurrencesOfString:@" " withString:@"" options:NSBackwardsSearch range:NSMakeRange(0, [name length])];
+ name = (NSString *)n;
+ name = [name lastPathComponent];
+ name = [name stringByDeletingPathExtension];
+ if ([name length] > 20)
+ name = [name substringToIndex:20];
+
+ srandomdev();
+ return [NSString stringWithFormat:@"~/%@.%d.pdf", name, random()];
+}
+
@end