diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/map/irc.c | 55 | ||||
-rw-r--r-- | src/map/irc.h | 14 | ||||
-rw-r--r-- | src/map/map.c | 1 |
3 files changed, 64 insertions, 6 deletions
diff --git a/src/map/irc.c b/src/map/irc.c index 79c5bd640..8a4d3b2e0 100644 --- a/src/map/irc.c +++ b/src/map/irc.c @@ -15,6 +15,7 @@ typedef int socklen_t; #include <netdb.h>
#include <arpa/inet.h>
#include <ctype.h>
+#include <stdlib.h>
#ifndef SIOCGIFCONF
#include <sys/sockio.h> // SIOCGIFCONF on Solaris, maybe others? [Shinomori]
@@ -54,7 +55,7 @@ char irc_channel[32]=""; char irc_trade_channel[32]="";
unsigned char irc_ip_str[128]="";
-unsigned long irc_ip=6667;
+unsigned long irc_ip=0;
unsigned short irc_port = 6667;
int irc_fd=0;
@@ -241,6 +242,8 @@ void irc_parse_sub(int fd, char *incoming_string) irc_send(send_string);
sprintf(send_string, "JOIN %s", irc_channel);
irc_send(send_string);
+ sprintf(send_string,"NAMES %s",irc_channel);
+ irc_send(send_string);
irc_si->state = 2;
}
else if(!strcmp(command,"433")){
@@ -460,3 +463,53 @@ int irc_rmnames() { return 0;
}
+
+int irc_read_conf(char *file) {
+ FILE *fp=NULL;
+ char w1[256];
+ char w2[256];
+ char path[256];
+ char row[1024];
+
+ memset(w1,'\0',256);
+ memset(w2,'\0',256);
+ memset(path,'\0',256);
+ memset(row,'\0',256);
+
+ sprintf(path,"conf/%s",file);
+
+ if(!(fp=fopen(path,"r"))) {
+ ShowError("Cannot find file: %s\n",path);
+ return 0;
+ }
+
+ while(fgets(row,1023,fp)!=NULL) {
+ if(row[0]=='/'&&row[1]=='/')
+ continue;
+ sscanf(row,"%[^:]: %255[^\r\n]",w1,w2);
+ if(strcmpi(w1,"use_irc")==0) {
+ if(strcmpi(w2,"on")==0)
+ use_irc=1;
+ else
+ use_irc=0;
+ }
+ else if(strcmpi(w1,"irc_server")==0)
+ strcpy(irc_ip_str,w2);
+ else if(strcmpi(w1,"irc_port")==0)
+ irc_port=atoi(w2);
+ else if(strcmpi(w1,"irc_channel")==0)
+ strcpy(irc_channel,w2);
+ else if(strcmpi(w1,"irc_trade_channel")==0)
+ strcpy(irc_trade_channel,w2);
+ else if(strcmpi(w1,"irc_nick")==0)
+ strcpy(irc_nick,w2);
+ else if(strcmpi(w1,"irc_pass")==0) {
+ if(strcmpi(w2,"0")!=0)
+ strcpy(irc_password,w2);
+ }
+ }
+
+ ShowInfo("IRC Config read successfully\n");
+
+ return 1;
+}
diff --git a/src/map/irc.h b/src/map/irc.h index 669f26c03..5c321605b 100644 --- a/src/map/irc.h +++ b/src/map/irc.h @@ -1,5 +1,8 @@ #include "map.h"
+// IRC .conf file [Zido]
+#define IRC_CONF "irc_athena.conf"
+
// IRC Access levels [Zido]
#define ACCESS_OWNER 5
#define ACCESS_SOP 4
@@ -44,8 +47,9 @@ struct channel_data { }user[MAX_CHANNEL_USERS];
};
-int parse_names_packet(char *str);
-int parse_names(char *str);
-int set_access(char *nick,int level);
-int get_access(char *nick);
-int irc_rmnames(void);
+int parse_names_packet(char *str); // [Zido]
+int parse_names(char *str); // [Zido]
+int set_access(char *nick,int level); // [Zido]
+int get_access(char *nick); // [Zido]
+int irc_rmnames(void); // [Zido]
+int irc_read_conf(char *file); // [Zido]
diff --git a/src/map/map.c b/src/map/map.c index 87cc16577..b580ce07e 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -3812,6 +3812,7 @@ int do_init(int argc, char *argv[]) { }
map_config_read(MAP_CONF_NAME);
+ irc_read_conf(IRC_CONF); // [Zido]
chrif_checkdefaultlogin();
if ((naddr_ == 0) && (map_ip_set_ == 0 || char_ip_set_ == 0)) {
|