aboutsummaryrefslogtreecommitdiff
path: root/tst/net.c
diff options
context:
space:
mode:
authorbeber <beber>2006-01-12 02:53:35 +0000
committerbeber <beber>2006-01-12 02:53:35 +0000
commitae70eb8b8f4e47a062422144bdb1549d03d5e149 (patch)
tree99506d85ab568bb844f0d9257175bc69cdd9862a /tst/net.c
parentcomment and unused code (diff)
downloadespik-ae70eb8b8f4e47a062422144bdb1549d03d5e149.tar.xz
Missing files for git-import
Diffstat (limited to 'tst/net.c')
-rw-r--r--tst/net.c263
1 files changed, 263 insertions, 0 deletions
diff --git a/tst/net.c b/tst/net.c
new file mode 100644
index 0000000..eec6788
--- /dev/null
+++ b/tst/net.c
@@ -0,0 +1,263 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <unistd.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include <sys/select.h>
+#include <sys/time.h>
+
+#include <errno.h>
+
+#include <string.h>
+#include <strings.h>
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <netdb.h>
+
+#include <Ecore_Config.h>
+
+#define NB_MAX 10
+#define ___NICK "ddero"
+
+#define _EOF "\r\n"
+
+typedef struct
+{
+ char *host;
+ int port;
+
+} t_servinfo;
+
+char *
+format_send(char *msg)
+{
+ char *tosend;
+
+ /*unsigned int i; */
+
+ tosend = malloc((strlen(msg) + 2) * sizeof(char));
+ if (tosend == NULL)
+ {
+ fprintf(stderr, "Memory fault\n");
+ exit(-2);
+ }
+
+ strcpy(tosend, msg);
+ strcat(tosend, _EOF);
+
+ /*
+ for (i = 0 ; i < strlen(msg) + 2 ; i++)
+ {
+ fprintf (stderr, "[%d] %X %c\n", i, tosend[i], tosend[i]);
+ }
+ */
+ return (tosend);
+}
+
+unsigned short
+sendmsg_len(char *msg)
+{
+ return (strlen(msg) + 2);
+}
+
+void
+sendtoserv(int fd, char *msg)
+{
+ printf("send: %s\n", msg);
+ if ((send(fd, format_send(msg), sendmsg_len(msg), 0)) == -1)
+ {
+ perror("send");
+ exit(-3);
+ }
+}
+
+/*char* dir_from_path (char* path)
+{
+ char* dir;
+ unsigned int i;
+
+ for ( i = strlen (path) -1 ; i != 0 ; i-- )
+ {
+ if ( path[i] == '/')
+ break;
+ }
+
+ dir = strndup (path, i);
+ dir [i] = '\0';
+
+ printf ("dir: %s\n", dir);
+
+ return (dir);
+}*/
+
+void
+loadconfig(t_servinfo * s_info)
+{
+ if (ecore_config_init("ebic") != ECORE_CONFIG_ERR_SUCC)
+ {
+ printf("Cannot init Ecore_Config");
+ exit(-1);
+ }
+
+ ecore_config_string_default("/config/server/host", "beber.melee");
+ ecore_config_int_default("/config/server/port", 6667);
+
+ ecore_config_load();
+
+ s_info->host = ecore_config_string_get("/config/server/host");
+ s_info->port = ecore_config_int_get("/config/server/port");
+
+ ecore_config_shutdown();
+ ecore_config_save();
+
+ printf("sinfo->host : %s\n", s_info->host);
+ printf("sinfo->port : %d\n", s_info->port);
+}
+
+int
+get_max(int *tab)
+{
+ int i, max;
+
+ max = -1;
+
+ for (i = 0; tab[i]; i++)
+ {
+ if (tab[i] > max)
+ max = tab[i];
+ }
+
+ return (max);
+}
+
+int
+main(int argc, char **argv)
+{
+ int sock;
+ struct sockaddr_in dest_host;
+ struct hostent *hostent;
+
+ struct timeval wait_time;
+
+ int count;
+ int std;
+ char buff[NB_MAX];
+ char *tmp;
+
+ int r_sel;
+
+ fd_set fds_r;
+ fd_set fds_w;
+
+ int i = 0;
+
+ t_servinfo serveur;
+
+ loadconfig(&serveur);
+
+ if (argc < 3)
+ {
+ fprintf(stderr, "Loading from conf ...\n");
+ }
+ else
+ {
+ printf("connecting to %s:%s\n", argv[1], argv[2]);
+ }
+
+/* serveur.host = argv[1];
+ serveur.port = atoi (argv[2]); */
+
+ printf("host: %s\n", serveur.host);
+ printf("port: %d\n", serveur.port);
+
+ printf("gethostbyname (%s)\n", serveur.host);
+ if ((hostent = gethostbyname(serveur.host)) == NULL)
+ {
+ fprintf(stderr, "%s could not be found\n", serveur.host);
+ exit(-1);
+ }
+
+ memset(&dest_host, 0, sizeof(struct sockaddr_in));
+
+ dest_host.sin_family = AF_INET;
+ dest_host.sin_addr.s_addr = ((struct in_addr *)hostent->h_addr)->s_addr;
+ dest_host.sin_port = htons((short)serveur.port);
+
+ printf("socket\n");
+ if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1)
+ {
+ perror("socket");
+ exit(-1);
+ }
+
+ printf("connect\n");
+ if ((connect(sock, (struct sockaddr *)&dest_host, sizeof(dest_host))) == -1)
+ {
+ perror("connect");
+ exit(-1);
+ }
+
+ std = open("/dev/input", O_RDONLY);
+ perror("open");
+
+ printf("%d\n", std);
+
+ FD_ZERO(&fds_r);
+ FD_ZERO(&fds_w);
+ FD_SET(std, &fds_r);
+ FD_SET(sock, &fds_r);
+ FD_SET(std, &fds_w);
+ FD_SET(sock, &fds_w);
+
+// wait_time.tv_sec = 1000000 / 1000000;*/ /* Nb sec */
+// wait_time.tv_usec = 1000000 % 1000000; /* Nb µsec */
+
+ do
+ {
+ memset(buff, 0, NB_MAX - 1);
+
+ r_sel = select(FD_SETSIZE, &fds_r, &fds_w, NULL, 0);
+
+ if (FD_ISSET(std, &fds_r))
+ printf("fds_r: clavier\n");
+ if (FD_ISSET(sock, &fds_r))
+ printf("fds_r: reseau\n");
+ if (FD_ISSET(std, &fds_w))
+ printf("fds_w: clavier\n");
+ if (FD_ISSET(sock, &fds_w))
+ printf("fds_w: reseau\n");
+
+ count = recv(sock, buff, NB_MAX - 1, 0);
+ printf("%d: %s", i, buff);
+ if (i == 1)
+ sendtoserv(sock, "NICK " ___NICK);
+ if (i == 2)
+ sendtoserv(sock, "USER beber beber guybrush.melee :Ronnie Reagan");
+ if (i == 3)
+ sendtoserv(sock, "OPER beber beber");
+ if (i == 3)
+ sendtoserv(sock, "JOIN #opers");
+
+ if (i > 45)
+ {
+ tmp =
+ malloc(sizeof(char) * (strlen(buff) + strlen("PRIVMSG #opers :")));
+ sprintf(tmp, "%s %s", "PRIVMSG #opers :", buff);
+ sendtoserv(sock, tmp);
+ free(tmp);
+ }
+
+ //sleep (1);
+ i++;
+ }
+ while (count != 0);
+
+ close(sock);
+
+ return (0);
+}