-
Notifications
You must be signed in to change notification settings - Fork 0
/
euskalirc.c
210 lines (171 loc) · 7.19 KB
/
euskalirc.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
/* Servicio EuskalIRC, botshispanobdd
*
* (C) 2009 donostiarra [email protected] http://euskalirc.wordpress.com
*
* Este programa es software libre. Puede redistribuirlo y/o modificarlo
* bajo los términos de la Licencia Pública General de GNU según es publicada
* por la Free Software Foundation.
*/
#include "services.h"
#include "pseudo.h"
/* Main EuskalServ routine. */
void do_euskal(User *u) /*la colocamos en extern.h y asi la llamamos desde oper*/
{
char *cmd, *nick;
cmd = strtok(NULL, " ");
nick = strtok(NULL, " ");
NickInfo *ni;
/*char adm[BUFSIZE];*/
if ((!cmd) || ((!stricmp(cmd, "ACEPTA") == 0) && (!stricmp(cmd, "RECHAZA") == 0) && (!stricmp(cmd, "ATENDIDO") == 0)&& (!stricmp(cmd, "DESATIENDE") == 0))) {
notice_lang(s_OperServ, u, EUSKALIRC_HELP_DUDA);
return;
}
if (!nick) {
notice_lang(s_OperServ, u, EUSKALIRC_FALTA_NICK,s_OperServ);
return;
} else if (!(ni = findnick(nick))) {
notice_lang(s_OperServ, u, NICK_X_NOT_REGISTERED, nick);
return;
} else if (!(ni->status & NI_ON_BDD)) {
notice_lang(s_OperServ, u, NICK_MUST_BE_ON_BDD);
return;
}
ni = findnick(nick);
if ((stricmp(cmd, "ACEPTA") == 0) && (ni->in_ayu & AYU_PROCESO)) {
if (!is_services_oper(u)) {
notice_lang(s_OperServ, u, PERMISSION_DENIED);
return;
} else if (ni && (ni->status & NS_IDENTIFIED)) {
privmsg(s_EuskalIRCServ, nick, "El OPERador/a 5%s se pondrá en contacto contigo en breve.Por favor, abandone el canal una vez atendido. Gracias.",u->nick);
canalopers( s_EuskalIRCServ,"12OPER 4%s 3ACEPTA DUDA de 2%s",u->nick,nick);
ni->in_ayu &= ~AYU_PROCESO;
ni->in_ayu |= AYU_ACEPTA ;
return;
}
else {
privmsg(s_OperServ,u->nick, "El Nick 5%s No esta ONLINE.",ni->nick);
return;
}
}
else if ((stricmp(cmd, "RECHAZA") == 0) && (ni->in_ayu & AYU_PROCESO)) {
if (!is_services_oper(u)) {
notice_lang(s_OperServ, u, PERMISSION_DENIED);
return;
} else if (ni && (ni->status & NS_IDENTIFIED)) {
privmsg(s_EuskalIRCServ, nick , "En este momento no hay ningún OPERador/a disponible.Inténtelo más tarde",u->nick);
canalopers( s_EuskalIRCServ,"12OPER 4%s 5RECHAZA DUDA de 2%s",u->nick,nick);
ni->in_ayu &= ~AYU_PROCESO;
ni->in_ayu |= AYU_RECHAZA ;
send_cmd(s_EuskalIRCServ, "MODE #%s -v %s", CanalAyuda, ni->nick);
return;
}
else {
privmsg(s_EuskalIRCServ,u->nick, "El Nick 5%s No esta ONLINE.",ni->nick);
return; }
}
else if ((stricmp(cmd, "ATENDIDO") == 0) && (ni->in_ayu & AYU_ACEPTA)) {
if (!is_services_oper(u)) {
notice_lang(s_OperServ, u, PERMISSION_DENIED);
return;
} else if (ni && (ni->status & NS_IDENTIFIED)) {
privmsg(s_EuskalIRCServ, nick , "Por favor.Recuerde abandonar el canal,una vez que haya sido atendido/a.Si aún no se le resolvió el problema planteado, o deseara realizar otra consulta,deberá igualmente salir previamente del canal (2#%s) y volver a entrar, para asignarle nuevamente otro representante de servicios. Gracias.",CanalAyuda);
canalopers( s_EuskalIRCServ,"12OPER 4%s 5ATIENDE DUDA de 2%s",u->nick,nick);
ni->in_ayu &= ~AYU_ACEPTA;
ni->in_ayu |= AYU_ATENDIDO;
send_cmd(s_EuskalIRCServ, "MODE #%s -v %s", CanalAyuda, ni->nick);
return;
}
else {
privmsg(s_EuskalIRCServ,u->nick, "El Nick 5%s No esta ONLINE.",ni->nick);
return; }
}
else if ((stricmp(cmd, "DESATIENDE") == 0) && (ni->in_ayu & AYU_ACEPTA)) {
if (!is_services_oper(u)) {
notice_lang(s_OperServ, u, PERMISSION_DENIED);
return;
} else if (ni && (ni->status & NS_IDENTIFIED)) {
privmsg(s_EuskalIRCServ, nick , "OPER 4%s deja de estar disponible.En breve te informaré del nick del OPERador/a que te va a ayudar. Por favor, no abandones el canal mientras eres atendido/a",u->nick);
canalopers( s_EuskalIRCServ,"12OPER 4%s 5DESATIENDE DUDA de 2%s",u->nick,nick);
ni->in_ayu &= ~AYU_ACEPTA;
ni->in_ayu |= AYU_PROCESO ;
return;
}
else {
privmsg(s_EuskalIRCServ,u->nick, "El Nick 5%s No esta ONLINE.",ni->nick);
return; }
}
if ((stricmp(cmd, "ACEPTA") == 0) && !(ni->in_ayu & AYU_PROCESO)) {
privmsg(s_OperServ,u->nick, " 2El Nick 12%s 2Ni Solicita ni Precisa Asistencia!.5 ACEPTACION3 ilógica!",ni->nick);
return;
}
else if ((stricmp(cmd, "RECHAZA") == 0) && !(ni->in_ayu & AYU_PROCESO)) {
privmsg(s_OperServ,u->nick, " 2El Nick 12%s 2Ni Solicita ni Precisa Asistencia!.5 RECHAZO3 ilógico!",ni->nick);
return;
}
else if ((stricmp(cmd, "ATENDIDO") == 0) && !(ni->in_ayu & AYU_ACEPTA)) {
privmsg(s_OperServ,u->nick, " 2El Nick 12%s 2No estaba siendo atendido!.5 Finalización del soporte3 ilógico!",ni->nick);
return;
}
else if ((stricmp(cmd, "DESATIENDE") == 0) && !(ni->in_ayu & AYU_ACEPTA)) {
privmsg(s_OperServ,u->nick, " 2El Nick 12%s 2No estaba siendo atendido!.5 Abandono del soporte3 ilógico!",ni->nick);
return;
}
}
void euskalserv(const char *source, char *buf)
{
/*int num;*/
NickInfo *ni;
/*char *cmd;*/
/*char *s;*/
User *u = finduser(source);
ni = findnick(source);
char ayu[BUFSIZE];
snprintf(ayu, sizeof(ayu), "#%s", CanalAyuda);
if (!u) {
logeo("%s: user record for %s not found", s_EuskalIRCServ, source);
notice(s_EuskalIRCServ, source,
getstring((NickInfo *)NULL, USER_RECORD_NOT_FOUND));
return;
}
/*log("yiha %s: %s: %s", s_EuskalIRCServ, source, buf);*/
if ((ni = u->real_ni)) {
if (ni->in_ayu & AYU_ENTRA) {
canalopers( s_EuskalIRCServ,"5CONSULTA! 12%s : 2%s", source,buf);
send_cmd(s_EuskalIRCServ, "MODE #%s +v %s", CanalAyuda, ni->nick);
privmsg(s_EuskalIRCServ, ni->nick , "Gracias, en breve te informaré del nick del OPERador/a que te va a ayudar. Por favor, no abandones el canal mientras eres atendido/a");
ni->in_ayu &= ~AYU_ENTRA;
ni->in_ayu |= AYU_PROCESO ;
}
}
}
void euskalirc_canal(const char *source,const char *chan, char *buf)
{
char opr[BUFSIZE];
char ayu[BUFSIZE];
snprintf(opr, sizeof(opr), "#%s", CanalOpers);
snprintf(ayu, sizeof(ayu), "#%s", CanalAyuda);
if (!strcmp(chan, opr)) return;
if (!strcmp(chan, ayu)) {
privmsg(s_EuskalIRCServ, opr , "Ey! %s me dijo en el canal %s 4%s !!", source,ayu,buf);
return;
}
}
void mandar_mensaje(const char *source)
{
NickInfo *ni;
User *u = finduser(source);
ni = findnick(source);
char ayu[BUFSIZE];
snprintf(ayu, sizeof(ayu), "#%s", CanalAyuda);
if ((ni = u->real_ni) && !(is_services_oper(u))) {
ni->in_ayu = 0;
ni->in_ayu |= AYU_ENTRA;
canalopers( s_EuskalIRCServ,"4%s Entra para solicitar soporte",source);
send_helperchan_users(source);
}
else if (!is_services_oper(u)) {
notice_lang(s_EuskalIRCServ, u, EUSKALIRC_MENSAJE_NOREG,source,s_HelpServ,s_NickServ);
return;
}
send_helpers_aviso(source);
}