Changeset - d851e72d74a8
[Not reviewed]
default
0 1 0
Nathan Brink (binki) - 16 years ago 2009-07-28 22:05:43
ohnobinki@ohnopublishing.net
fixed some of normaldotcom's pointer misconceptions
1 file changed with 43 insertions and 21 deletions:
0 comments (0 inline, 0 general)
src/server/slavefuncs.c
Show inline comments
 
@@ -21,9 +21,12 @@
 
  * Registration on server. Needs attention. Prevent account spamming.
 
  * distrenslave -c username email@example.com
 
 */
 
#include "blendjob.h"
 

	
 
#include <stdio.h>
 
#include <string.h>
 
#include <unistd.h>
 
#include <stdlib.h> /*< malloc(), free() */
 

	
 
int ssh_keygen(){
 
	fprintf(stderr, "We're generating your SSH key. Please be patient.\n");
 
@@ -91,33 +94,52 @@ int register_user(char *username, char *
 
}
 

	
 

	
 
int login_user(char *username){
 
	// TODO: Why does this segfault???
 
  fprintf(stderr, "Logging you in...");
 
  char *userhost = strcpy(userhost, username);
 
  char *userkey = strcpy(userkey, username);
 
int login_user(char *username)
 
{
 
  char *userhost;
 
  char *userkey;
 
  char buf[10];
 
  struct execio *testrem;
 
  char *execargv[] =
 
    {
 
      "ssh",
 
      
 
      "-i",
 
      (char *)NULL, // Key created from registeruser()
 
      "-p",
 
      "23",
 
      (char *)NULL,// username and hostname
 
      "echo",
 
      "hello", // This should eventually open a non-terminating connection to the server for communication,
 
      
 
      (char *)NULL
 
    };
 
  size_t readlen;
 

	
 
  /*< @TODO remove being tied to protofusion.org for no reason  */
 
  userhost = malloc(strlen(username) + strlen("@protofusion.org") + 1);
 
  if(!userhost)
 
    return 43;
 
  
 
  strcpy(userhost, username);
 
  strcat(userhost, "@protofusion.org"); // Throws @protofusion.org after the username
 

	
 
  userkey = malloc(strlen(username) + strlen(".rsa") + 1);
 
  if(!userkey)
 
    {
 
      free(userhost);
 
      return 44;
 
    }
 
  
 
  strcpy(userkey, username);
 
  strcat(userkey,".rsa");
 
  fprintf(stderr, "i'm here");
 
  
 
  
 
  fprintf(stderr, "Logging you in to %s using key %s\n", userhost, userkey);
 
  if(fopen(userkey, "r") == NULL){
 
	  fprintf(stderr,"Your key, %s, has not been found! Re-register or somehow regenerate your key! We need a way to regenerate keys coded in, but we don't have the facilities yet!",userkey);
 
	  return 0;
 
  }
 
  char buf[10];
 
  struct execio *testrem;
 
  char *execargv[] =
 
    {
 
  "ssh",
 
  userhost, // username and hostname
 
  "-i",
 
  userkey, // Key created from registeruser()
 
  "-p",
 
  "23",
 
  "echo",
 
  "hello", // This should eventually open a non-terminating connection to the server for communication
 
  (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?
0 comments (0 inline, 0 general)