Changeset - a9cef84324c3
[Not reviewed]
default
0 1 0
Nathan Brink (binki) - 16 years ago 2009-07-03 12:34:16
ohnobinki@ohnopublishing.net
converted distrend.c from DOS to unix, added error
1 file changed with 1 insertions and 0 deletions:
0 comments (0 inline, 0 general)
src/server/distrend.c
Show inline comments
 
@@ -36,96 +36,97 @@
 
 
#define max 100
 
// maximum number of stored jobs in memory, per job type (lux/blend). Eventually we can dump this data to disk, or atleast the remainder not in memory...
 
 
int jobnum = 0;
 
 
// Structures for storing job information
 
// OOOOOOkay so we really need a struct for frameset rather than just an array, because we should track who each frame was sent out to. Please do this, someone! :D
 
struct {
 
  char *name;
 
  char *submitter;
 
  char *email;
 
  int priority;
 
  struct frameset **frameset; // What exactly is this now? hehe
 
} blendjob[max];
 
 
struct {
 
  char *name;
 
  char *submitter;
 
  char *email;
 
  int priority;
 
  int mode; // 0 = Static Render, stop at Spp, or infinity if spp is null. Framerange is ignored || 1 = animation, stop at Spp and stay in framerange.
 
  int spp;
 
  struct frameset ** frameset;
 
} luxjob[max];
 
 
 
 
 
int main(int argc, char *argv[])
 
{
 
 
/* !!!!!!! Important notes !!!!!!!!!!!!
 
 
So, we need a common key. Maybe. Or we need to generate a key in registeruser() and get it to the client somehow.
 
If we use a common key, then we'll need different passphrases for each user, which would be kinda crazy. How can
 
we get a key generated on the server, and transferred to the client's distrend?
 
 
*/
 
 
 
// We need the conf parser code from options.c here!!!
 
char *username = "unregistered"; // get this from conf
 
 
 
 
// Checks if the conf is left at the default username
 
int registered;
 
 error: People, this is not C++
 
if(username == "unregistered") {
 
  fprintf(stderr,"\nYou have not set your username in distrend.conf!\nIf you need to register a username, run distrend -c username email@example.com\n\n");
 
  registered = 0;
 
}
 
else{
 
  fprintf(stderr,"Logging into the DistRen server...\n");
 
}
 
 
 
 
 
// Registration on server. Needs attention. (e.g., people could make tons of accounts with the key we give them...
 
// Set up distrend -c username email@example.com
 
// We must prevent multi-user-creation abuse, too.
 
void registeruser(char *username, char *email){
 
  // Logs into sandboxed user on zserver2 and registers a user. Should eventually generate a key on the server and return it to the user.
 
  // All created user accounts should be sandboxed accordingly, requiring a different skel, and the default shell to be rbash. They also
 
  // need a custom path, which can be defined in the .bash_profile of the skel. All activity of server-side configuration should be documented
 
  // to ease the creation of new distren servers, or it should be automated and made much more all-inclusive, not requiring much config.
 
  char buf[10];
 
  struct execio *testrem;
 
  char *execargv[] =
 
    {
 
  "ssh",
 
  "distren_setup@protofusion.org",
 
  "-i",
 
  "setup.rsa", // We gotta figure out how we're going to do the whole keys thing... maybe grab this key via http? But have a secret password compiled in distren to prevent fraud?
 
  "-p",
 
  "23",
 
  "sudo /usr/sbin/useradd",
 
  "-M",
 
  "-c",
 
  email,
 
  "-d",
 
  "/home/distren",
 
  "--gid",
 
  "541",
 
  username,
 
  (char *)NULL
 
  };
 
  size_t readlen;
 
  fprintf(stderr, "Opening stream:\n", execio_open(&testrem, "ssh", execargv));
 
  buf[9] = '\0'; // null-terminating the array...
 
  while(!execio_read(testrem, buf, 9, &readlen)) // What's with the readlen stuff?
 
    {
 
      if(readlen > 9) {
 
	fprintf(stderr, "!!!! Something is terribly wrong!\n");
 
      }
0 comments (0 inline, 0 general)