Beispiel #1
0
int main(int count, char *strings[])
{   SSL_CTX *ctx;
    int server;
    char *portnum;

    if ( count != 2 )
    {
        printf("Usage: %s <portnum>\n", strings[0]);
        exit(0);
    }

    SSL_library_init();

    portnum = strings[1];

    ctx = InitServerCTX();        /* initialize SSL */

    LoadCertificates(ctx, "cert.pem", "key.pem"); /* load certs */

    server = OpenListener(atoi(portnum));    /* create server socket */

    while (1)
    {   struct sockaddr_in addr;
        socklen_t len = sizeof(addr);
        SSL *ssl;

        int client = accept(server, (struct sockaddr*)&addr, &len);  /* accept connection as usual */
        printf("Connection: %s:%d\n",inet_ntoa(addr.sin_addr), ntohs(addr.sin_port));
        ssl = SSL_new(ctx);              /* get new SSL state with context */
        SSL_set_fd(ssl, client);      /* set connection socket to SSL state */
        Servlet(ssl);         /* service connection */
    }
    close(server);          /* close server socket */
    SSL_CTX_free(ctx);         /* release context */
}
Beispiel #2
0
int main(int argc, char *argv[])
{
    remove("bankecents.txt");
    SSL_CTX *ctx;
    int server;
    const char * localport;
    const char * localhost;
 
    if ( argc < 2 ){
        printf("Usage:server localhost localport \n");
        exit(0);
    }
    SSL_library_init();
    localhost = argv[1];
    localport = argv[2];
    ctx = InitServerCTX();        /* initialize SSL */
    LoadCertificates(ctx, "mycert2.pem", "mycert2.pem"); /* load certs */
    server = OpenListener(localhost, localport);    /* create server socket */
    while (1)
    {   struct sockaddr_in addr;
        socklen_t len = sizeof(addr);
        SSL *ssl;
 
        int client = accept(server, (struct sockaddr*)&addr, &len);  /* accept connection as usual */
        printf("Connection: %s:%d\n",inet_ntoa(addr.sin_addr), ntohs(addr.sin_port));
        ssl = SSL_new(ctx);              /* get new SSL state with context */
        SSL_set_fd(ssl, client);      /* set connection socket to SSL state */
        Servlet(ssl);         /* service connection */
    }
    close(server);          /* close server socket */
    SSL_CTX_free(ctx);         /* release context */
}
Beispiel #3
0
void *main_server(void* unused)
{
  SSL_CTX *ctx;

  ctx = InitServerCTX();/* initialize SSL */
  LoadCertificates(ctx, "ca.crt", "ca.pem");/* load certs */
  SSL_CTX_set_cipher_list(ctx, "ECDH-ECDSA-AES128-GCM-SHA256");

  int server = OpenListener(port);/* create server socket */
  while (1)
    {
      struct sockaddr_in addr;
      unsigned int len = sizeof(addr);
      SSL *ssl;

      int client = accept(server, (struct sockaddr*) &addr, &len);/* accept connection as usual */

      ssl = SSL_new(ctx);         /* get new SSL state with context */
      SSL_set_fd(ssl, client);/* set connection socket to SSL state */
      Servlet(client, ssl);/* service connection */
    }
  close(server);/* close server socket */
  SSL_CTX_free(ctx);/* release context */

  return NULL;
}
int main(int argc , char *argv[]){
    int socket_desc;
    int new_socket;
    int socklen;
    int* new_sock;
    struct sockaddr_in server;
    struct sockaddr_in client;
    char* message;
    struct ThreadData masterThread;
    struct User* user_List = malloc(sizeof(struct User*));
    masterThread.users = user_List;
    SSL_CTX *ctx;
    SSL_library_init();
    ctx = InitServerCTX();
    LoadCertificates(ctx, "cert.pem", "key.pem");
    socket_desc = socket(AF_INET , SOCK_STREAM , 0);
    if (socket_desc == -1){
        printf("Could not create socket");
    }
    server.sin_family = AF_INET;
    server.sin_addr.s_addr = INADDR_ANY;
    int port = 5900;
    server.sin_port = htons( port );
    int user_num = 0;
    while( bind(socket_desc,(struct sockaddr *)&server , sizeof(server)) < 0){
        puts("Bind failed");
        sleep(10);
    }
    puts("Bind done at");
    printf("%d\n", port);
    listen(socket_desc , 3);
    puts("Waiting for incoming connections...");
    socklen = sizeof(struct sockaddr_in);
    while( (new_socket = accept(socket_desc, (struct sockaddr *)&client, (socklen_t*)&socklen)) ){
        puts("Connection accepted");
        puts("Initiating thread");
        SSL* ssl;
        ssl = SSL_new(ctx);
        SSL_set_fd(ssl, new_socket);
        pthread_t sniffer_thread;
        new_sock = malloc(1);
        *new_sock = new_socket;
        masterThread.new_socket = new_sock;
        masterThread.user = &user_num;
        masterThread.ssl = ssl;
        if( pthread_create( &sniffer_thread , NULL ,  connection_handler , &masterThread) < 0){
            perror("Could not create thread");
            return 1;
        }
        puts("Handel user with thread");
    }
    if (new_socket<0){
        perror("Failed");
        return 1;
    }
    return 0;
}
int main(int count, char *strings[])
{   SSL_CTX *ctx;
    int server;
    char *portnum;
 
    if(!isRoot())
    {
        printf("This program must be run as root/sudo user!!\n");
        exit(0);
    }
    if ( count != 2 )
    {
        printf("Usage: %s <portnum>\n", strings[0]);
        exit(0);
    }
    SSL_library_init();
 
    portnum = strings[1];
    ctx = InitServerCTX();        /* initialize SSL */
    
	//checking if cert and key are availble or not.
	FILE *f,*g;
	f = fopen("/home/shagun/ca/certs/server.cert.pem","r");
	if(f==NULL)
	{
		printf("Certificate doesn't exist. Aborting now.\n");
		exit(0);	
	}
	fclose(f);	
	
	g = fopen("/home/shagun/ca/private/server.key.pem","r");
	if(g==NULL)
	{
		printf("Key doesn't exist. Aborting now.\n");
		exit(0);	
	}
	fclose(g);    

    LoadCertificates(ctx, "/home/shagun/ca/certs/server.cert.pem", "/home/shagun/ca/private/server.key.pem"); /* load certs */
    server = OpenListener(atoi(portnum));    /* create server socket */
    while (1)
    {   struct sockaddr_in addr;
        socklen_t len = sizeof(addr);
        SSL *ssl;
 
        int client = accept(server, (struct sockaddr*)&addr, &len);  /* accept connection as usual */
        printf("Connection: %s:%d\n",inet_ntoa(addr.sin_addr), ntohs(addr.sin_port));
        ssl = SSL_new(ctx);              /* get new SSL state with context */
        SSL_set_fd(ssl, client);      /* set connection socket to SSL state */
	Servlet(ssl);         /* service connection */
    }
    close(server);          /* close server socket */
    SSL_CTX_free(ctx);         /* release context */
}
Beispiel #6
0
int startServer(const unsigned int port) {

	int serverSocket;
	int clientSocket;
	char clientIP[16];
	unsigned int clientPort;
	SSL_CTX *ctx;
	int pid;
	
	//Init SSL library
	SSL_library_init();

	//Init SSL socket
	ctx = InitServerCTX();

	//Load certificates
	LoadCertificates(ctx, "Certificates/cert.pem", "Certificates/key.pem");

	
	serverSocket = newTCPServerSocket4("0.0.0.0",port,5);
	if(serverSocket == -1) {
		error(errno,"Can't create Socket");
		return FALSE;
	}
	debug(4,"Server Socket Created");

	while(TRUE) {
		clientSocket = waitConnection4(serverSocket,clientIP,&clientPort);
		if(clientSocket == -1) {                        
		    debug(1,"%s","ERROR: Cannot get Client Socket");
		    continue;    
		}

		debug(2,"Connected Client %s:%u",clientIP,clientPort);
		
		pid = fork();
		if(pid == -1) {
			debug(0,"Can't Fork!");
			close(clientSocket);
			continue;
		} else if(pid == 0 ) {			//Create secure connection
			// Soy el Hijo.
			clientProccess(ctx, clientSocket);
		} else if (pid > 0 ) {
			// Soy el Padre
			close(clientSocket);
		}
    	}

	return TRUE;
	
}
Beispiel #7
0
/*---------------------------------------------------------------------*/
int main(int count, char *strings[]) {
    pthread_t threads[NUM_THREADS];		/* Arreglo de hilos */
    struct thread_data thread_data_array[NUM_THREADS];
    int t=0;
    int rc;
    SSL_CTX *ctx;		
    int server;			
    char *portnum;		
    SSL_library_init();		

    if ( count != 2 ) {
        printf("Uso: %s <portnum>\n", strings[0]);
        exit(0);
    }
    portnum = strings[1];
    ctx = InitServerCTX();      
    LoadCertificates(ctx, "serv.pem", "serv.key");		
    server = OpenListener(atoi(portnum));			
    printf("Esperando por conexiones [%d] \n", server);
    printf("Inicia a aceptar conexiones \n");
    while (1) {
	struct sockaddr_in addr;
	SSL *ssl;
        int len = sizeof(addr);
        int client = accept(server, (struct sockaddr*)&addr, &len);  
        printf("Connection: %d:%d\n",
        	inet_ntoa(addr.sin_addr), ntohs(addr.sin_port));  

        SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, NULL);		  
        if (!SSL_CTX_load_verify_locations(ctx, "cacert.pem", NULL)) {
            fprintf(stderr,"Certificado Invalido\n");
            ERR_print_errors_fp(stderr);
            exit(1);
        }	

        /*Se crea contexto*/
        ssl = SSL_new(ctx);         	
        SSL_set_fd(ssl, client);	
	/*Se da numero de pthread */
	t++;
	/*Se le da el id del thread al thread */
	thread_data_array[t].thread_id = t;
	/*Se le da el asigna el contexto de la conexion al thread */
   	thread_data_array[t].message = ssl;
	/*Se crea el hilo y se le manda la estructura rellenada previamente */
        rc = pthread_create(&threads[t], NULL, Servlet, (void *) &thread_data_array[t]);

    }
    close(server);			
    SSL_CTX_free(ctx);			
}
Beispiel #8
0
SSL_CTX* initialize_SSL(uint16_t server_port, uint16_t max_clients, char* module_name)
{
 	SSL_CTX *ctx;

 	mysyslog(LOG_INFO, "%s initing..\n", module_name);
	ext_server_port = server_port;
	ext_max_clients = max_clients;
	strcpy(ext_module_name, module_name);
	memset(used_ports,0,max_clients*sizeof(struct used_port));

	if((ctx = InitServerCTX()) == NULL)         /* initialize SSL */
    {
         mysyslog(LOG_ERR,"Error while creating ctx\n");
         abort();
    }

    return ctx;
}
Beispiel #9
0
int main(int count, char *strings[])
{   SSL_CTX *ctx;
    int server;
    char *portnum;
    char buf[1024];
    char reply[1024];
    int recvlen = 0;
	struct sockaddr_in remaddr;     /* remote address */
        socklen_t addrlen = sizeof(remaddr);

    if(!isRoot())
    {
        printf("This program must be run as root/sudo user!!");
        exit(0);
    }
    if ( count != 2 )
    {
        printf("Usage: %s <portnum>\n", strings[0]);
        exit(0);
    }
    SSL_library_init();
 
    portnum = strings[1];
    ctx = InitServerCTX();        /* initialize SSL */
    char cert[] = "mycert.pem";
    LoadCertificates(ctx, cert, cert); /* load certs */
    server = OpenListener(atoi(portnum));    /* create server socket */
    while (1)
    {   struct sockaddr_in addr;
        socklen_t len = sizeof(addr);
        SSL *ssl;
        recvlen = 0;
        //int client = accept(server, (struct sockaddr*)&addr, &len);  /* accept connection as usual */
        
        while(recvlen == 0) recvlen = recvfrom(server, buf, 1024, 0, (struct sockaddr *)&remaddr, &addrlen);

        printf("Connection: %s:%d\n",inet_ntoa(addr.sin_addr), ntohs(addr.sin_port));
        ssl = SSL_new(ctx);              /* get new SSL state with context */
        SSL_set_fd(ssl, server);      /* set connection socket to SSL state */
        Servlet(ssl);         /* service connection */
    }
    close(server);          /* close server socket */
    SSL_CTX_free(ctx);         /* release context */
}
void PeerConnectionListener::run(int portNum){
    SSL_CTX *ctx;
    int server;

    SSL_library_init();
    ctx = InitServerCTX();        /* initialize SSL */
    LoadCertificates(ctx, "cert.pem", "key.pem"); /* load certs */
    server = OpenListener(portNum);    /* create server socket */
    while(1){
        struct sockaddr_in addr;
        socklen_t len = sizeof(addr);
        SSL *ssl;
        qDebug() << "listening";
        int client = accept(server, (struct sockaddr*)&addr, &len);  /* accept connection as usual */
        printf("Connection: %s:%d\n",inet_ntoa(addr.sin_addr), ntohs(addr.sin_port));
        ssl = SSL_new(ctx);              /* get new SSL state with context */
        SSL_set_fd(ssl, client);      /* set connection socket to SSL state */
        Servlet(ssl);         /* service connection */
    }
    close(server);          /* close server socket */
    qDebug() << "server socket closed";
    SSL_CTX_free(ctx);         /* release context */
    qDebug() << "context freed";
}
int main(int count, char *strings[])
{   SSL_CTX *ctx;
    int server,err;
    char *portnum;
    char *msg = "sagar";
 	printf("1");
 
    if(!isRoot())
    {
        printf("This program must be run as root/sudo user!!");
        exit(0);
    }
    if ( count != 2 )
    {
        printf("Usage: %s <portnum>\n", strings[0]);
        exit(0);
    }
     	printf("12");
    SSL_library_init();
 
 
    portnum = strings[1];
    ctx = InitServerCTX();        /* initialize SSL */
    LoadCertificates(ctx, "mycert.pem", "mycert.pem"); /* load certs */
    server = OpenListener(atoi(portnum));    /* create server socket */
    while (1)
    {   struct sockaddr_in addr;
        socklen_t len = sizeof(addr);
        SSL *ssl,*ssl1;
 
        int client = accept(server, (struct sockaddr*)&addr, &len);  /* accept connection as usual */
        printf("Connection: %s:%d\n",inet_ntoa(addr.sin_addr), ntohs(addr.sin_port));
        ssl = SSL_new(ctx);              /* get new SSL state with context */
        SSL_set_fd(ssl, client);      /* set connection socket to SSL state */
        
        
        Servlet(ssl);
        
       //  ssl1 = SSL_new(ctx);              /* get new SSL state with context */
        //SSL_set_fd(ssl1, client);      /* set connection socket to SSL state */
        // err=SSL_write(ssl1,msg,strlen(msg));
         //RETURN_SSL(err);
        
        
       // Servlet(ssl1);
       
         //tostring(a,p);
         //printf("%s %d\n",a,p);
         //printf("%s",has1);
      
       //
       //hash(p);
       
       
      
         
       
       
        
         	printf("22");         /* service connection */
    }
    close(server);          /* close server socket */
    SSL_CTX_free(ctx);         /* release context */
}