[Add] Adding IRC network handling.
This commit is contained in:
		
							parent
							
								
									adba9189df
								
							
						
					
					
						commit
						94dbf32103
					
				@ -1,4 +1,4 @@
 | 
				
			|||||||
SRC = config.c plugin.c
 | 
					SRC = config.c plugin.c network.c
 | 
				
			||||||
CFLAGS += -fPIC -shared -Wl,-soname,config.so -O3
 | 
					CFLAGS += -fPIC -shared -Wl,-soname,config.so -O3
 | 
				
			||||||
LDFLAGS += -ldl
 | 
					LDFLAGS += -ldl
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,9 +1,20 @@
 | 
				
			|||||||
#include "config.h"
 | 
					#include "config.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void configProcess(const char* command, const char* arg1, const char* arg2) {
 | 
					void configProcess(const char* command, const char* arg1, const char* arg2) {
 | 
				
			||||||
    if(strcmp(command, "plugin") == 0) {
 | 
					    char network[64];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    *network = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(strcmp(command, "}") == 0)
 | 
				
			||||||
 | 
					        *network = 0;
 | 
				
			||||||
 | 
					    else if(strlen(network) != 0) {
 | 
				
			||||||
 | 
					        /* TODO: Add network setup params. */
 | 
				
			||||||
 | 
					    } else if(strcmp(command, "plugin") == 0) {
 | 
				
			||||||
        if(strcmp(arg1, "scan") == 0)
 | 
					        if(strcmp(arg1, "scan") == 0)
 | 
				
			||||||
            pluginCrawl(arg2);
 | 
					            pluginCrawl(arg2);
 | 
				
			||||||
 | 
					    } else if(strcmp(command, "network") == 0) {
 | 
				
			||||||
 | 
					        strncpy(network, arg1, 64);
 | 
				
			||||||
 | 
					        networkAdd(arg1);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
@ -13,6 +24,8 @@ int configRead(const char* path) {
 | 
				
			|||||||
    FILE* fp;
 | 
					    FILE* fp;
 | 
				
			||||||
    char command[64], arg1[128], arg2[128], buff[512];
 | 
					    char command[64], arg1[128], arg2[128], buff[512];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    networkInit();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if((fp = fopen(path, "r")) == NULL) {
 | 
					    if((fp = fopen(path, "r")) == NULL) {
 | 
				
			||||||
        fprintf(stderr, "[CONFIG] Unable to open configuration file %s. We're screwed\n", path);
 | 
					        fprintf(stderr, "[CONFIG] Unable to open configuration file %s. We're screwed\n", path);
 | 
				
			||||||
        return -1;
 | 
					        return -1;
 | 
				
			||||||
 | 
				
			|||||||
@ -9,9 +9,11 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "api.h"
 | 
					#include "api.h"
 | 
				
			||||||
#include "plugin.h"
 | 
					#include "plugin.h"
 | 
				
			||||||
 | 
					#include "network.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
    PLUGIN plugin;
 | 
					    PLUGIN plugin;
 | 
				
			||||||
 | 
					    struct NETWORK_ENTRY* network;
 | 
				
			||||||
} CONFIG;
 | 
					} CONFIG;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CONFIG* config;
 | 
					CONFIG* config;
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										27
									
								
								base/config/network.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								base/config/network.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,27 @@
 | 
				
			|||||||
 | 
					#include "config.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void networkAdd(const char* name) {
 | 
				
			||||||
 | 
					    struct NETWORK_ENTRY* network;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if((network = malloc(sizeof(struct NETWORK_ENTRY))) == NULL)
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    strncpy(network->name, name, 64);
 | 
				
			||||||
 | 
					    *network->host = *network->layer = 0;
 | 
				
			||||||
 | 
					    network->port = 6667;
 | 
				
			||||||
 | 
					    strncpy(network->nick, "C-3PO", 64);
 | 
				
			||||||
 | 
					    network->network_handle = NULL;
 | 
				
			||||||
 | 
					    network->next = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    network->next = config->network;
 | 
				
			||||||
 | 
					    config->network = network;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fprintf(stderr, "Debug: Added network %s\n", name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void networkInit() {
 | 
				
			||||||
 | 
					    config->network = NULL;
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										24
									
								
								base/config/network.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								base/config/network.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					#pragma once
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct NETWORK_CHANNEL {
 | 
				
			||||||
 | 
					    char                    name[128];
 | 
				
			||||||
 | 
					    char                    key[128];
 | 
				
			||||||
 | 
					    int                     last_sent;
 | 
				
			||||||
 | 
					    int                     cap;
 | 
				
			||||||
 | 
					    struct NETWORK_CHANNEL* next;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct NETWORK_ENTRY {
 | 
				
			||||||
 | 
					    char  name[64];
 | 
				
			||||||
 | 
					    char  host[128];
 | 
				
			||||||
 | 
					    int   port;
 | 
				
			||||||
 | 
					    char  nick[64];
 | 
				
			||||||
 | 
					    char  layer[64];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void*                   network_handle;
 | 
				
			||||||
 | 
					    struct NETWORK_CHANNEL* channel;
 | 
				
			||||||
 | 
					    struct NETWORK_ENTRY*   next;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void networkAdd(const char* name);
 | 
				
			||||||
 | 
					void networkInit();
 | 
				
			||||||
@ -2,6 +2,7 @@ plugin scan base
 | 
				
			|||||||
plugin scan extra
 | 
					plugin scan extra
 | 
				
			||||||
 | 
					
 | 
				
			||||||
network Libera {
 | 
					network Libera {
 | 
				
			||||||
 | 
					        layer  plain
 | 
				
			||||||
        server irc.libera.chat
 | 
					        server irc.libera.chat
 | 
				
			||||||
        port   6667
 | 
					        port   6667
 | 
				
			||||||
        nick   C-3PO
 | 
					        nick   C-3PO
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user