summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjules <jules@okfoc.us>2014-01-07 18:45:22 -0500
committerjules <jules@okfoc.us>2014-01-07 18:45:22 -0500
commitcce4f73a1637d54ab7c096815864a2c9c66fda65 (patch)
tree76c3e9964ddcb34e8c82835a13029a40681a10ea
parentb7c1ec511fc3afcf04321751fc8e0d9858b2dcd5 (diff)
xor
-rwxr-xr-xbin/upload.pl192
-rw-r--r--js/util.js1
2 files changed, 1 insertions, 192 deletions
diff --git a/bin/upload.pl b/bin/upload.pl
deleted file mode 100755
index 5927da0..0000000
--- a/bin/upload.pl
+++ /dev/null
@@ -1,192 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use CGI::Carp qw(fatalsToBrowser);
-
-use DBI;
-use Digest::MD5;
-use File::MMagic;
-use CGI;
-use File::Slurp;
-use Data::Dumper;
-use Amazon::S3;
-use Digest::SHA1;
-
-#set the temporary directory here
-my $uploaddir = '/var/www/asdf.us/tmp/';
-#maximum filesize goes here
-my $maxFileSize = 2.2 * 1024 * 1024;
-
-#aws credentials here
-my $aws_access_key_id = "AKIAIR53VPBXKJMXZIBA";
-my $aws_secret_access_key = "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";
-
-#SQL CONNECTIONS
-my $sql_username = "asdfus";
-my $sql_dbname = "asdfus";
-my $sql_passwd = "gTYgT&M6q";
-my $db_tag = "shader";
-
-my $time_now = time();
-
-
-my $IN = new CGI;
-my $resp = {};
-
-sub get_postdata{
- return $IN->param('POSTDATA');
-}
-
-#qq file is the default name for the file parameter when using qq upload. change if necessary
-sub get_filedata{
- my $file = $IN->upload('qqfile');
- if ($file){
- return read_file( $file, binmode => ':raw' ) ;
- }else{
- return
- }
-}
-
-
-sub get_filetype{
- my $filedata = shift;
- my $mm = new File::MMagic;
- my $mtype = $mm->checktype_contents($filedata);
- if ($mtype =~ m@^image/(gif|png|jpeg)@gi){
- return $1;
- }else{
- return undef;
- }
-}
-
-
-sub make_photoblaster_directory{
- return substr(Digest::SHA1->sha1_hex($time_now), 0, 2);
-}
-sub make_photoblaster_filename{
- var $filename = $IN->param("filename") || sprintf("%s_%s", "im", $time_now);
- $filename =~ s/[^-a-zA-Z0-9]/-/g;
- $filename =~ s/-+/-/g;
- $filename =~ s/\....$//;
- return $filename;
-}
-sub make_photoblaster_url{
- my $photoblaster_directory = shift;
- my $filename = shift;
- return sprintf("http://i.asdf.us/im/%s/%s", $photoblaster_directory, $filename);
-}
-sub add_to_photoblaster_db{
- my $pb_dir = shift;
- my $filename = shift;
- our $dbh = DBI->connect("DBI:mysql:$sql_dbname", $sql_username, $sql_passwd);
- unless($dbh){ return undef && print STDERR "Could not connect to database: $DBI::errstr"};
- my $execute = $dbh->do(
- "INSERT INTO im_cmd ".
- "(date, name, dir, newfile, tag)".
- "VALUES(?,?,?,?,?);",
- undef,
- $time_now,
- $IN->param("username") || "",
- $pb_dir,
- $filename,
- $db_tag
- );
- return $execute;
-}
-
-sub write_to_file{
- my $filepath = shift;
- my $filedata = shift;
- write_file( $filepath, {binmode => ':raw'}, $filedata ) or return undef;
- return 1;
-}
-
-
-sub test_gif_size{
- my $filepath = shift;
- my $check_size = -s "$filepath";
- print STDERR qq|Main filesize: $check_size Max Filesize: $maxFileSize nn|;
- return $check_size;
-}
-
-sub optimize_gif{
- my $filepath = shift;
- my $tmpname = $filepath.".tmp";
- #because system gives the unix exit code
- not system("gifsicle -O2 --colors=256 $filepath > $tmpname") or return undef;
- not system("mv -f $tmpname $filepath") or return undef;
- return 1;
-}
-
-sub upload_to_AmazonS3{
- my $keyname = shift;
- my $value = shift;
- my $s3 = Amazon::S3->new(
- { aws_access_key_id => $aws_access_key_id,
- aws_secret_access_key => $aws_secret_access_key
- }
- );
- my $bucket = $s3->bucket("i.asdf.us");
- $bucket->add_key(
- $keyname, $value,
- { content_type => 'text/plain',
- 'x-amz-meta-colour' => 'orange',
- }
- );
- return $bucket;
-}
-
-sub delete_file{
- my $filepath = shift;
- unlink($filepath);
-}
-sub error{
- my $message = shift;
- print qq|{"success":false, "error": $message }|;
- exit 1;
-}
-
-
-sub main{
- print $IN->header();
-
- my $filedata = get_postdata() || get_filedata() || read_file("/tmp/tt.gif", binmode=>":raw");
- unless($filedata){ error("NO DATA RECIEVED") };
- my $filetype = get_filetype($filedata);
- unless($filetype){ error("BAD FILE TYPE")};
-
- my $photoblaster_directory = make_photoblaster_directory();
- my $photoblaster_filename = sprintf("%s.%s", make_photoblaster_filename(), $filetype);
-
- my $filepath = $uploaddir. $photoblaster_filename;
-
- if ($filetype =~ /gif$/i){
- unless(write_to_file($filepath, $filedata)){
- error("UNABLE TO WRITE TO FILE");
- }
- unless (optimize_gif($filepath)){
- error("UNABLE TO OPTIMIZE GIF");
- }
- my $filedata = read_file($filepath, binmode=>":raw");
- }
-
- my $filesize = length($filedata);
- if ($filesize < 1) {
- error( "EMPTY FILE");
- } elsif ($filesize > $maxFileSize) {
- error("FILE TOO LARGE");
- }
-
- unless(upload_to_AmazonS3(sprintf("im/%s/%s", $photoblaster_directory, $photoblaster_filename), $filedata)){
- error("UNABLE TO UPLOAD TO AMAZONS3");
- };
- delete_file($filepath);
- my $photoblaster_url = make_photoblaster_url($photoblaster_directory, $photoblaster_filename);
- unless(add_to_photoblaster_db($photoblaster_directory, $photoblaster_filename)){
- print STDERR "problem adding value to db";
- }
- print qq|{"success":true, "url": "$photoblaster_url", "filesize" : $filesize }|;
-}
-
-main();
-
diff --git a/js/util.js b/js/util.js
index 948b3f6..b728377 100644
--- a/js/util.js
+++ b/js/util.js
@@ -42,6 +42,7 @@ function randint(n){ return rand(n)|0 }
function choice(a){ return a[randint(a.length)] }
function deg(n){ return n*180/PI }
function rad(n){ return n*PI/180 }
+function xor(a,b){ a=!!a; b=!!b; return (a||b) && !(a&&b) }
function pixel(x,y){ return 4*(mod(y,h)*w+mod(x,w)) }
function rgbpixel(d,x,y){
var p = pixel(~~x,~~y)