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 37 insertions and 15 deletions:
0 comments (0 inline, 0 general)
src/server/slavefuncs.c
Show inline comments
 
@@ -18,15 +18,18 @@
 
*/
 

	
 
 /*
 
  * 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");
 
	char *command = "ssh-keygenn"; // append .exe if win32?
 
	char *path_to_command = "/usr/bin/ssh-keygenn";
 
	int ret;
 
@@ -88,39 +91,58 @@ int register_user(char *username, char *
 

	
 
  /* TODO: Scan distrenslave.conf for !username and !key and replace them with "keyname" and the "username" */
 
  return 1;
 
}
 

	
 

	
 
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);
 
  strcat(userhost, "@protofusion.org"); // Throws @protofusion.org after the username
 
  strcat(userkey,".rsa");
 
  fprintf(stderr, "i'm here");
 
  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;
 
  }
 
int login_user(char *username)
 
{
 
  char *userhost;
 
  char *userkey;
 
  char buf[10];
 
  struct execio *testrem;
 
  char *execargv[] =
 
    {
 
  "ssh",
 
  userhost, // username and hostname
 
      
 
  "-i",
 
  userkey, // Key created from registeruser()
 
      (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
 
      "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, "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;
 
  }
 
  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)