# HG changeset patch # User normaldotcom # Date 2010-02-23 23:18:22 # Node ID eb2893bc7a0a5bc1d89e1772dff3cae8a8aace15 # Parent e7953e5dac1eb3fc64936822c8a62c2dd1218430 Added updates for nicer job output uploading diff --git a/src/server/slave.c b/src/server/slave.c --- a/src/server/slave.c +++ b/src/server/slave.c @@ -112,7 +112,7 @@ int main(int argc, char *argv[]) // Variables needed for main loop int jobnum = 0; int framenum = 0; - + int slavekey = atoi(username); // @TODO: Make this more friendly char *urltoTar; /* Full URL to the server-side location of job#.tgz */ char *pathtoTar; /* Full path to the location of the job#.tgz */ @@ -183,7 +183,7 @@ int main(int argc, char *argv[]) /* Post-execution */ fprintf(stderr, "Finished frame %d in job %d, uploading...\n", framenum, jobnum); - uploadOutput(pathtoOutput, urltoOutput); // @TODO: Handle return value + uploadOutput(pathtoOutput, urltoOutput, jobnum, framenum, slavekey); // @TODO: Handle return value free(urltoOutput); free(pathtoOutput); diff --git a/src/server/slavefuncs.c b/src/server/slavefuncs.c --- a/src/server/slavefuncs.c +++ b/src/server/slavefuncs.c @@ -170,7 +170,7 @@ int curlget(char *url, char *out){ } /** Posts a file to a url with cUrl */ -int curlpost(char *filename, char *url){ +int curlpost(char *filename, char *url, int jobnum, int framenum, int slavekey){ char *targetname = "uploadedfile"; // Name of the target in the php file on the server (Don't change me unless you have different PHP code) CURL *curl; CURLcode res; @@ -181,6 +181,21 @@ int curlpost(char *filename, char *url){ curl_global_init(CURL_GLOBAL_ALL); + /* jobnum field... */ + curl_formadd(&formpost, + &lastptr, + CURLFORM_COPYNAME, "jobnum", + CURLFORM_COPYCONTENTS, jobnum, CURLFORM_END); + /* framenum field... */ + curl_formadd(&formpost, + &lastptr, + CURLFORM_COPYNAME, "framenum", + CURLFORM_COPYCONTENTS, framenum, CURLFORM_END); + /* slavekey field... */ + curl_formadd(&formpost, + &lastptr, + CURLFORM_COPYNAME, "slavekey", + CURLFORM_COPYCONTENTS, slavekey, CURLFORM_END); /* upload field... */ curl_formadd(&formpost, &lastptr, @@ -368,8 +383,8 @@ int downloadTar(char *url, char *destina } -int uploadOutput(char *pathtoOutput, char *urltoOutput){ - if( !curlpost(pathtoOutput, urltoOutput)) // Uploads output +int uploadOutput(char *pathtoOutput, char *urltoOutput, int jobnum, int framenum, int slavekey){ + if( !curlpost(pathtoOutput, urltoOutput, jobnum, framenum, slavekey)) // Uploads output { fprintf(stderr,"Upload successful, removing old output...\n"); remove(pathtoOutput); // Delete the file after its uploaded @@ -379,7 +394,7 @@ int uploadOutput(char *pathtoOutput, cha { fprintf(stderr,"Upload failed. Check your network connection. Retrying upload...\n"); int tries=1; - while(tries<=10 && curlpost(pathtoOutput, urltoOutput)) + while(tries<=10 && curlpost(pathtoOutput, urltoOutput, jobnum, framenum, slavekey)) { fprintf(stderr, "Upload failed. Trying again in 10 seconds... (attempt %d of 10)\n", tries); tries++; @@ -484,6 +499,8 @@ void slaveTest(){ int command; int test = 1; int jobnum = 0; + int framenum = 0; + int slavekey = 0; fprintf(stderr,"Hello!\n"); char tmpString1[100] = ""; char tmpString2[100] = ""; @@ -503,9 +520,15 @@ void slaveTest(){ switch(command) { case 1: - fprintf(stderr,"Path to file to upload: "); + fprintf(stderr,"Path to output file to upload: "); scanf("%99s", tmpString1); - uploadOutput(tmpString1, uploadURL); + fprintf(stderr,"Framenum that is being uploaded: "); + scanf("%d", &framenum); + fprintf(stderr,"Jobnum that frame belongs to: "); + scanf("%d", &jobnum); + fprintf(stderr,"Slavekey that rendered this output: "); + scanf("%d", &slavekey); + uploadOutput(tmpString1, uploadURL, jobnum, framenum, slavekey); break; case 2: fprintf(stderr,"Remotio not implemented yet!\n"); diff --git a/src/server/slavefuncs.h b/src/server/slavefuncs.h --- a/src/server/slavefuncs.h +++ b/src/server/slavefuncs.h @@ -36,7 +36,7 @@ int software_updatecheck(); int delete_jobdata(int jobnum, char *datadir); size_t curl_writetodisk(void *ptr, size_t size, size_t nmemb, FILE *stream); int curlget(char *url, char *out); -int curlpost(char *filename, char *url); +int curlpost(char *filename, char *url, int jobnum, int framenum, int slavekey); int ssh_keygen(); int register_user(char *username, char *email); int login_user(char *username); @@ -47,7 +47,7 @@ void xmlcleanup(); int distren_mkdir_recurse(char *dirname); int job_build_path(char *filename, unsigned int jobnum); int downloadTar(char *url, char *destinationPath); -int uploadOutput(char *pathtoOutput, char *urltoOutput); +int uploadOutput(char *pathtoOutput, char *urltoOutput, int jobnum, int framenum, int slavekey); int unpackJob(char *pathtoTar, int jobnum); void prepareJobPaths(int jobnum,char *datadir, char **urltoTar,char **pathtoTar,char **pathtoJobfile,char **urltoOutput,char **pathtoXml); int checkUsername(char *username);