Tag: Open Source
Codigo de Ejemplo para Servidor RDT
by Jose Solares on Jun.01, 2005, under Linux
char buffer[RCVBUFFER + 2];
buffer[RCVBUFFER] = 0;
char response[] = {2,6,1,0,7,1,0,2,1,6,0x81};
int message_size,i,j;
char counter = 0;
if (( message_size = recv(client_socket, buffer,
RCVBUFFER, 0)) < 0 )
err_handler ("recv() failed");
if ( message_size == 17 ) {
if ( send(client_socket, response, 11, 0) != 11 )
err_handler ("send() failed");
} else {
printf ( "- %d - \n", message_size );
err_handler ("Protocol Error");
}
printf ("Starting...\n");
for (;;) {
if (( message_size = recv(client_socket, buffer,
RCVBUFFER, 0)) < 0 )
err_handler ("recv() failed");
counter = ( buffer[0] == -128
&& message_size > 5 )? buffer[3] : counter;
i = (buffer[0] == -128)? 5 : 0;
buffer[message_size + 1] = '\0';
buffer[message_size] = '\n';
//printf ("Capturing %d bytes\n",message_size);
fprintf (stderr, "%s",&buffer[i]);
//printf ("Current Counter : %d\n",counter);
if (message_size == 1) {
if (buffer[0] == 0x50) {
char respond[] = {0x51};
if ( send (client_socket, respond, 1, 0) != 1)
err_handler("send() failed");
}
} else {
i = message_size - 1;
if (buffer[i-2] == 0x20 && buffer[i-1] == 0x0d &&
buffer[i] == 0x0a) {
char respond[] = {0x40, 0x05, 0x01, ++counter, 0x81};
if ( send (client_socket, respond, 5, 0) != 5 )
err_handler("send() failed");
}
}
/* Do Something with the Data we received */
}
Draft del Protocolo RDT
by Jose Solares on Jun.01, 2005, under Linux
Draft del Protocolo de Avaya RDT
Como es utilizado en RDTT
No encontre ninguna aplicación en linux que pudiera utilizar para un proyecto en el trabajo, por lo que armado de ethereal y RDTT en Windows hize una ingenieria reversa
Esta especificacion caracteriza a un Server de RDT ver codigo de ejemplo aca
Para iniciar una conexion el cliente de RDT nos envia un paquete de 17 bytes, para seguir recibiendo datos que el cliente nos enviara debemos responder con :
byte response[] = {2, 6, 1, 0, 7, 1, 0, 2, 1, 6, 0×81};
Luego recibimos los datos:
definimos un checksum que el cliente espera recibir de la siguiente manera :
( buffer[ 0 ] = = -128 && msize > 5 )?buffer[ 3 ]:0;
o
( buffer[ 0 ] = = 0×80 && msize > 5 )?buffer[ 3 ]:0;
dependiendo del OS que utilicemos.
buffer es char * donde recibimos la data con recv o read
msize es int donde tenemos la cantidad de bytes leidos
el checksum lo enviamos al cliente al recibir `200d0a` al final de un paquete utlizando una respuesta char[]
{0×40, 0×05, 0×01, ++checksum, 0×81};
RDT tiene algo similar al ping de IRC, periodicamente nos envia un paquete de 1 byte con 0×50, esperando que le enviemos un paquete de 1 byte con 0×51
Espero que les sirva esta información
TripleDES Encryption Using C#
by Jose Solares on Mar.24, 2005, under english
This class works in VS.NET 2003, it can be modified to use a different kind of encryption, you would need to modify the constructor to change the type of encryption you wish to use.
WaitForSound for Asterisk
by Jose Solares on Mar.24, 2005, under Asterisk, english
To use this application in asterisk you need to download it into the apps directory inside of the asterisk source, you also need to modify the Makefile in said directory so that waitforsound gets compiled as well, you might also find useful WaitForSilence, this application is included in the HEAD version of the asterisk cvs.
WaitForSound para Asterisk
by Jose Solares on Mar.08, 2005, under Asterisk
Para hacer uso de esta aplicacion en asterisk es necesario bajarla al directorio apps en el source de asterisk, tambien se debe modificar el Makefile de dicho directorio para que incluya esta aplicacion, puede ser util tambien la aplicacion WaitForSilence que esta incluida en la version HEAD del cvs de asterisk.
Encripcion TripleDES
by Jose Solares on Mar.07, 2005, under Uncategorized
Clase para Encripcion en C# utilizando TripleDES
Esta clase funciona en VS.NET 2003, se puede modificar para utilizar otro tipo de encripcion, seria de modificar el constructor para cambiar que tipo de encripcion se desea utilizar.

