Changeset - 7041fc952a3d
[Not reviewed]
default
0 3 0
ethanzonca - 16 years ago 2009-10-10 16:35:07

Added rendering engine update checker prototype, some edits to slave rendering and transfer code
3 files changed with 48 insertions and 3 deletions:
0 comments (0 inline, 0 general)
src/server/slave.c
Show inline comments
 
@@ -63,15 +63,16 @@ for(counter=0; counter<argc; counter++){
 
		if(!strchr(email, '@'))
 
		{
 
			fprintf(stderr, "I want to see an '@' in your email address!\n%s may be good enough for you, but I need more!\n", email);
 
			return 235;
 
		}
 
		if( register_user(username, email) == 1){
 
			// register_user generates a key, too */
 
			fprintf(stderr,"Registration successfull. You may now invoke distrenslave with no arguments.\n");
 
			return 0;
 
		  // register_user generates a key, too */
 
                  curlpost(SYSCONFDIR "/distren.id_rsa","http://protofusion.org/distren/keys");
 
		  fprintf(stderr,"Registration successful. You may now invoke distrenslave with no arguments.\n");
 
		  return 0;
 
		}
 
		else{
 
			fprintf(stderr,"Please try again! :D\n");
 
			return 0;
 
		}
 
	}
 
@@ -89,12 +90,13 @@ cfg_opt_t myopts[] = {
 
struct options_common *commonopts;
 

	
 
username = NULL;
 
options_init(argc,argv,&my_cfg, myopts, "slave", &commonopts);
 
/* End option getter */
 

	
 
software_updatecheck(); // Should be run every day-ish, if the slave is constantly running.
 

	
 
/* Notifies the user if there is no username in the conf file */
 
	if(username == NULL || strcmp(username, "!username") == 0 ){
 
	  fprintf(stderr, "\nYou didn't register!\nPlease register or edit your config. (see -h)\nIf this error persists, check distrenslave.conf to ensure all items are filled.\n");
 
	}
 
	else if( username != NULL || strcmp(username,"!username") != 0 ){
src/server/slavefuncs.c
Show inline comments
 
@@ -36,12 +36,13 @@
 
#include <unistd.h>
 
#include <stdlib.h>
 
#include <sys/stat.h>
 
#include <fcntl.h>
 

	
 

	
 

	
 
/**
 
 utility function for XPath-ish stuff:
 
 */
 
xmlNodePtr xml_quickxpath(xmlXPathContextPtr xpathctxt, xmlChar *path)
 
{
 
  xmlNodePtr toreturn;
 
@@ -59,12 +60,53 @@ xmlNodePtr xml_quickxpath(xmlXPathContex
 

	
 
  xmlXPathFreeObject(xmlxpathobjptr);
 

	
 
  return toreturn;
 
}
 

	
 
/** Ensures that rendering engines on the computer are up-to-date */
 
int software_updatecheck(){
 
  curlget("http://protofusion.org/srv/version.info", SYSCONFDIR "/serverEngineVersion.info");
 
  struct stat buffer;
 
  char serverVersion[5]; // Version numbers are nice and short
 
  char localVersion[5]; // Version numbers are nice and short
 

	
 

	
 
  // Read server version
 
  {
 
    FILE * serverVersionFile;
 
    serverVersionFile = fopen(SYSCONFDIR "/serverEngineVersion.info","r");
 
    fscanf(serverVersionFile, "%s",serverVersion);
 
    fclose(serverVersionFile);
 
  }
 

	
 
  // Read local version
 
  {
 
    FILE * localVersionFile;
 
    localVersionFile = fopen(SYSCONFDIR "/engines/blender/version.info","r");
 
    fscanf(localVersionFile, "%s",localVersion);
 
    fclose(localVersionFile);
 
  }
 

	
 

	
 
  // If a rendering engine was never downloaded
 
  if( stat(SYSCONFDIR "/engines/blender", &buffer) == -1){
 
    fprintf(stderr,"You don't have the blender engine. Preparing to download...");
 
    curlget("http://protofusion.org/distren/srv/blender-lin32-dist.tgz", SYSCONFDIR "/engines/blender.tgz"); // Add calls for operating system info
 
    // untar(SYSCONFDIR "/engines/blender.tgz");
 
  }
 

	
 
  // If a rendering engine is out-of-date
 
  else if( serverVersion != localVersion){
 
    fprintf(stderr,"You don't have the latest blender engine. Preparing to download...");
 
    curlget("http://protofusion.org/distren/srv/blender-lin32-dist.tgz", SYSCONFDIR "/engines/blender.tgz"); // Add calls for operating system info
 
    // untar(SYSCONFDIR "/engines/blender.tgz");
 
  }
 

	
 
  return 0;
 
}
 

	
 
/** Stub for deleting job data from the disk. @TODO: unstubify me! */
 
int delete_jobdata(int jobnum, char *datadir)
 
{
 
  char *jobpath;
 
  _distren_asprintf(&jobpath, "%s/%d", datadir, jobnum);
src/server/slavefuncs.h
Show inline comments
 
@@ -23,12 +23,13 @@
 
#include "distrenjob.h"
 

	
 
#include <libxml/xpath.h>
 
#include <stdio.h>
 

	
 
xmlNodePtr xml_quickxpath(xmlXPathContextPtr xpathctxt, xmlChar *path);
 
int software_updatecheck();
 
void tell_the_server(int stuff);
 
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 ssh_keygen();
0 comments (0 inline, 0 general)