[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
 | 
			
		||||
LDFLAGS += -ldl
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,20 @@
 | 
			
		||||
#include "config.h"
 | 
			
		||||
 | 
			
		||||
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)
 | 
			
		||||
            pluginCrawl(arg2);
 | 
			
		||||
    } else if(strcmp(command, "network") == 0) {
 | 
			
		||||
        strncpy(network, arg1, 64);
 | 
			
		||||
        networkAdd(arg1);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return;
 | 
			
		||||
@ -13,6 +24,8 @@ int configRead(const char* path) {
 | 
			
		||||
    FILE* fp;
 | 
			
		||||
    char command[64], arg1[128], arg2[128], buff[512];
 | 
			
		||||
 | 
			
		||||
    networkInit();
 | 
			
		||||
 | 
			
		||||
    if((fp = fopen(path, "r")) == NULL) {
 | 
			
		||||
        fprintf(stderr, "[CONFIG] Unable to open configuration file %s. We're screwed\n", path);
 | 
			
		||||
        return -1;
 | 
			
		||||
 | 
			
		||||
@ -9,9 +9,11 @@
 | 
			
		||||
 | 
			
		||||
#include "api.h"
 | 
			
		||||
#include "plugin.h"
 | 
			
		||||
#include "network.h"
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
    PLUGIN plugin;
 | 
			
		||||
    struct NETWORK_ENTRY* network;
 | 
			
		||||
} 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
 | 
			
		||||
 | 
			
		||||
network Libera {
 | 
			
		||||
        layer  plain
 | 
			
		||||
        server irc.libera.chat
 | 
			
		||||
        port   6667
 | 
			
		||||
        nick   C-3PO
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user