os_info.c

Go to the documentation of this file.
00001 /* os_info.c - Adds oper information lines to nicks/channels
00002  *
00003  * (C) 2003-2007 Anope Team
00004  * Contact us at info@anope.org
00005  *
00006  * Based on the original module by Rob <rob@anope.org>
00007  * Included in the Anope module pack since Anope 1.7.9
00008  * Anope Coder: DrStein <drstein@anope.org>
00009  *
00010  * Please read COPYING and README for further details.
00011  *
00012  * Send bug reports to the Anope Coder instead of the module
00013  * author, because any changes since the inclusion into anope
00014  * are not supported by the original author.
00015  *
00016  */
00017 /*************************************************************************/
00018 
00019 #include "module.h"
00020 
00021 #define AUTHOR "Rob"
00022 #define VERSION "$Id: os_info.c 1267 2007-08-26 18:43:43Z drstein $"
00023 
00024 /* Default database name */
00025 #define DEFAULT_DB_NAME "os_info.db"
00026 
00027 /* Multi-language stuff */
00028 #define LANG_NUM_STRINGS   10
00029 
00030 #define OINFO_SYNTAX        0
00031 #define OINFO_ADD_SUCCESS   1
00032 #define OINFO_DEL_SUCCESS   2
00033 #define OCINFO_SYNTAX       3
00034 #define OCINFO_ADD_SUCCESS  4
00035 #define OCINFO_DEL_SUCCESS  5
00036 #define OINFO_HELP          6
00037 #define OCINFO_HELP         7
00038 #define OINFO_HELP_CMD      8
00039 #define OCINFO_HELP_CMD     9
00040 
00041 /*************************************************************************/
00042 
00043 char *OSInfoDBName = NULL;
00044 
00045 int myAddNickInfo(User * u);
00046 int myAddChanInfo(User * u);
00047 int myNickInfo(User * u);
00048 int myChanInfo(User * u);
00049 
00050 int mNickHelp(User * u);
00051 int mChanHelp(User * u);
00052 void mMainChanHelp(User * u);
00053 void mMainNickHelp(User * u);
00054 void m_AddLanguages(void);
00055 
00056 int mLoadData(void);
00057 int mSaveData(int argc, char **argv);
00058 int mBackupData(int argc, char **argv);
00059 int mLoadConfig();
00060 int mEventReload(int argc, char **argv);
00061 
00062 /*************************************************************************/
00063 
00070 int AnopeInit(int argc, char **argv)
00071 {
00072     Command *c;
00073     EvtHook *hook = NULL;
00074 
00075     int status = 0;
00076 
00077     moduleAddAuthor(AUTHOR);
00078     moduleAddVersion(VERSION);
00079     moduleSetType(SUPPORTED);
00080 
00081     alog("os_info: Loading configuration directives...");
00082     if (mLoadConfig()) {
00083         return MOD_STOP;
00084     }
00085 
00086     c = createCommand("oInfo", myAddNickInfo, is_oper, -1, -1, -1, -1, -1);
00087     moduleAddHelp(c, mNickHelp);
00088     status += moduleAddCommand(NICKSERV, c, MOD_HEAD);
00089 
00090     c = createCommand("Info", myNickInfo, NULL, -1, -1, -1, -1, -1);
00091     status += moduleAddCommand(NICKSERV, c, MOD_TAIL);
00092 
00093     c = createCommand("oInfo", myAddChanInfo, is_oper, -1, -1, -1, -1, -1);
00094     moduleAddHelp(c, mChanHelp);
00095     status += moduleAddCommand(CHANSERV, c, MOD_HEAD);
00096 
00097     c = createCommand("Info", myChanInfo, NULL, -1, -1, -1, -1, -1);
00098     status += moduleAddCommand(CHANSERV, c, MOD_TAIL);
00099 
00100     hook = createEventHook(EVENT_DB_SAVING, mSaveData);
00101     status += moduleAddEventHook(hook);
00102 
00103     hook = createEventHook(EVENT_DB_BACKUP, mBackupData);
00104     status += moduleAddEventHook(hook);
00105 
00106     hook = createEventHook(EVENT_RELOAD, mEventReload);
00107     status += moduleAddEventHook(hook);
00108 
00109     if (status != MOD_ERR_OK) {
00110             alog("os_info: ERROR when trying to create module commands. Unloading...");
00111         return MOD_STOP;
00112     }
00113 
00114     moduleSetNickHelp(mMainNickHelp);
00115     moduleSetChanHelp(mMainChanHelp);
00116 
00117     mLoadData();
00118     m_AddLanguages();
00119 
00120     return MOD_CONT;
00121 }
00122 
00126 void AnopeFini(void)
00127 {
00128     char *av[1];
00129 
00130     av[0] = sstrdup(EVENT_START);
00131     mSaveData(1, av);
00132     free(av[0]);
00133 
00134     if (OSInfoDBName)
00135         free(OSInfoDBName);
00136 }
00137 
00138 /*************************************************************************/
00139 
00150 int myAddNickInfo(User * u)
00151 {
00152     char *text = NULL;
00153     char *cmd = NULL;
00154     char *nick = NULL;
00155     char *info = NULL;
00156     NickAlias *na = NULL;
00157 
00158     /* Get the last buffer anope recived */
00159     text = moduleGetLastBuffer();
00160     if (text) {
00161         cmd = myStrGetToken(text, ' ', 0);
00162         nick = myStrGetToken(text, ' ', 1);
00163         info = myStrGetTokenRemainder(text, ' ', 2);
00164         if (cmd && nick) {
00165             if (strcasecmp(cmd, "ADD") == 0) {
00166                 /* Syntax error, again! */
00167                 if (info) {
00168                     /* ok we've found the user */
00169                     if ((na = findnick(nick))) {
00170                         /* Add the module data to the user */
00171                         moduleAddData(&na->nc->moduleData, "info", info);
00172                         moduleNoticeLang(s_NickServ, u,
00173                                          OINFO_ADD_SUCCESS, nick);
00174                         /* NickCore not found! */
00175                     } else {
00176                         notice_lang(s_NickServ, u, NICK_X_NOT_REGISTERED,
00177                                     nick);
00178                     }
00179                     free(info);
00180                 }
00181             } else if (strcasecmp(cmd, "DEL") == 0) {
00182                 /* ok we've found the user */
00183                 if ((na = findnick(nick))) {
00184                     moduleDelData(&na->nc->moduleData, "info");
00185                     moduleNoticeLang(s_NickServ, u,
00186                                      OINFO_DEL_SUCCESS, nick);
00187                     /* NickCore not found! */
00188                 } else {
00189                     notice_lang(s_NickServ, u, NICK_X_NOT_REGISTERED,
00190                                 nick);
00191                 }
00192                 /* another syntax error! */
00193             } else {
00194                 moduleNoticeLang(s_NickServ, u, OINFO_SYNTAX);
00195             }
00196             free(cmd);
00197             free(nick);
00198             /* Syntax error */
00199         } else if (cmd) {
00200             moduleNoticeLang(s_NickServ, u, OINFO_SYNTAX);
00201             free(cmd);
00202             /* Syntax error */
00203         } else {
00204             moduleNoticeLang(s_NickServ, u, OINFO_SYNTAX);
00205         }
00206     }
00207     return MOD_CONT;
00208 }
00209 
00220 int myAddChanInfo(User * u)
00221 {
00222     char *text = NULL;
00223     char *cmd = NULL;
00224     char *chan = NULL;
00225     char *info = NULL;
00226     ChannelInfo *ci = NULL;
00227 
00228     /* Get the last buffer anope recived */
00229     text = moduleGetLastBuffer();
00230     if (text) {
00231         cmd = myStrGetToken(text, ' ', 0);
00232         chan = myStrGetToken(text, ' ', 1);
00233         info = myStrGetTokenRemainder(text, ' ', 2);
00234         if (cmd && chan) {
00235             if (strcasecmp(cmd, "ADD") == 0) {
00236                 if (info) {
00237                     if ((ci = cs_findchan(chan))) {
00238                         /* Add the module data to the channel */
00239                         moduleAddData(&ci->moduleData, "info", info);
00240                         moduleNoticeLang(s_ChanServ, u,
00241                                          OCINFO_ADD_SUCCESS, chan);
00242                         /* ChanInfo */
00243                     } else {
00244                         notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED,
00245                                     chan);
00246                     }
00247                     free(info);
00248                 }
00249             } else if (strcasecmp(cmd, "DEL") == 0) {
00250                 if ((ci = cs_findchan(chan))) {
00251                     /* Del the module data from the channel */
00252                     moduleDelData(&ci->moduleData, "info");
00253                     moduleNoticeLang(s_ChanServ, u,
00254                                      OCINFO_DEL_SUCCESS, chan);
00255                     /* ChanInfo */
00256                 } else {
00257                     notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED,
00258                                 chan);
00259                 }
00260                 /* another syntax error! */
00261             } else {
00262                 moduleNoticeLang(s_ChanServ, u, OCINFO_SYNTAX);
00263             }
00264             free(cmd);
00265             free(chan);
00266             /* Syntax error */
00267         } else if (cmd) {
00268             moduleNoticeLang(s_ChanServ, u, OCINFO_SYNTAX);
00269             free(cmd);
00270             /* Syntax error */
00271         } else {
00272             moduleNoticeLang(s_ChanServ, u, OCINFO_SYNTAX);
00273         }
00274     }
00275     return MOD_CONT;
00276 }
00277 
00278 /*************************************************************************/
00279 
00285 int myNickInfo(User * u)
00286 {
00287     char *text = NULL;
00288     char *nick = NULL;
00289     char *info = NULL;
00290     NickAlias *na = NULL;
00291 
00292     /* Only show our goodies to opers */
00293     if (is_oper(u)) {
00294         /* Get the last buffer anope recived */
00295         text = moduleGetLastBuffer();
00296         if (text) {
00297             nick = myStrGetToken(text, ' ', 0);
00298             if (nick) {
00299                 /* ok we've found the user */
00300                 if ((na = findnick(nick))) {
00301                     /* If we have any info on this user */
00302                     if ((info = moduleGetData(&na->nc->moduleData, "info"))) {
00303                         notice_user(s_NickServ, u, "         OperInfo: %s", info);
00304                         free(info);
00305                     }
00306                     /* NickCore not found! */
00307                 } else {
00308                     /* we dont care! */
00309                 }
00310                 free(nick);
00311             }
00312         }
00313     }
00314     return MOD_CONT;
00315 }
00316 
00322 int myChanInfo(User * u)
00323 {
00324     char *text = NULL;
00325     char *chan = NULL;
00326     char *info = NULL;
00327     ChannelInfo *ci = NULL;
00328 
00329     /* Only show our goodies to opers */
00330     if (is_oper(u)) {
00331         /* Get the last buffer anope recived */
00332         text = moduleGetLastBuffer();
00333         if (text) {
00334             chan = myStrGetToken(text, ' ', 0);
00335             if (chan) {
00336                 if ((ci = cs_findchan(chan))) {
00337                     /* If we have any info on this channel */
00338                     if ((info = moduleGetData(&ci->moduleData, "info"))) {
00339                         notice_user(s_ChanServ, u, "       OperInfo: %s", info);
00340                         free(info);
00341                     }
00342                 }
00343                 free(chan);
00344             }
00345         }
00346     }
00347     return MOD_CONT;
00348 }
00349 
00350 /*************************************************************************/
00351 
00356 int mLoadData(void)
00357 {
00358     int ret = 0;
00359     FILE *in;
00360 
00361     char *type = NULL;
00362     char *name = NULL;
00363     char *info = NULL;
00364     int len = 0;
00365 
00366     ChannelInfo *ci = NULL;
00367     NickAlias *na = NULL;
00368 
00369     /* will _never_ be this big thanks to the 512 limit of a message */
00370     char buffer[2000];
00371     if ((in = fopen(OSInfoDBName, "r")) == NULL) {
00372         alog("os_info: WARNING: can not open the database file! (it might not exist, this is not fatal)");
00373         ret = 1;
00374     } else {
00375         while (fgets(buffer, 1500, in)) {
00376             type = myStrGetToken(buffer, ' ', 0);
00377             name = myStrGetToken(buffer, ' ', 1);
00378             info = myStrGetTokenRemainder(buffer, ' ', 2);
00379             if (type) {
00380                 if (name) {
00381                     if (info) {
00382                         len = strlen(info);
00383                         /* Take the \n from the end of the line */
00384                         info[len - 1] = '\0';
00385                         if (stricmp(type, "C") == 0) {
00386                             if ((ci = cs_findchan(name))) {
00387                                 moduleAddData(&ci->moduleData, "info",
00388                                               info);
00389                             }
00390                         } else if (stricmp(type, "N") == 0) {
00391                             if ((na = findnick(name))) {
00392                                 moduleAddData(&na->nc->moduleData, "info",
00393                                               info);
00394                             }
00395                         }
00396                         free(info);
00397                     }
00398                     free(name);
00399                 }
00400                 free(type);
00401             }
00402         }
00403     }
00404     return ret;
00405 }
00406 
00414 int mSaveData(int argc, char **argv)
00415 {
00416     ChannelInfo *ci = NULL;
00417     NickCore *nc = NULL;
00418     int i = 0;
00419     int ret = 0;
00420     FILE *out;
00421     char *info = NULL;
00422 
00423     if (argc >= 1) {
00424         if (!stricmp(argv[0], EVENT_START)) {
00425             if ((out = fopen(OSInfoDBName, "w")) == NULL) {
00426                 alog("os_info: ERROR: can not open the database file!");
00427                 anope_cmd_global(s_OperServ,
00428                                  "os_info: ERROR: can not open the database file!");
00429                 ret = 1;
00430             } else {
00431                 for (i = 0; i < 1024; i++) {
00432                     for (nc = nclists[i]; nc; nc = nc->next) {
00433                         /* If we have any info on this user */
00434                         if ((info = moduleGetData(&nc->moduleData, "info"))) {
00435                             fprintf(out, "N %s %s\n", nc->display, info);
00436                             free(info);
00437                         }
00438                     }
00439                 }
00440 
00441 
00442                 for (i = 0; i < 256; i++) {
00443                     for (ci = chanlists[i]; ci; ci = ci->next) {
00444                         /* If we have any info on this channel */
00445                         if ((info = moduleGetData(&ci->moduleData, "info"))) {
00446                             fprintf(out, "C %s %s\n", ci->name, info);
00447                             free(info);
00448                         }
00449                     }
00450                 }
00451                 fclose(out);
00452             }
00453         } else {
00454             ret = 0;
00455         }
00456     }
00457 
00458     return ret;
00459 }
00460 
00465 int mBackupData(int argc, char **argv)
00466 {
00467     ModuleDatabaseBackup(OSInfoDBName);
00468     
00469     return MOD_CONT;
00470 }
00471 
00476 int mLoadConfig(void)
00477 {
00478     char *tmp = NULL;
00479 
00480     Directive directivas[] = {
00481         {"OSInfoDBName", {{PARAM_STRING, PARAM_RELOAD, &tmp}}},
00482     };
00483 
00484     Directive *d = &directivas[0];
00485     moduleGetConfigDirective(d);
00486 
00487     if (OSInfoDBName)
00488         free(OSInfoDBName);
00489 
00490     if (tmp) {
00491         OSInfoDBName = tmp;
00492     } else {
00493         OSInfoDBName = sstrdup(DEFAULT_DB_NAME);
00494         alog("os_info: OSInfoDBName is not defined in Services configuration file, using default %s", OSInfoDBName);
00495     }
00496 
00497     alog("os_info: Directive OSInfoDBName loaded (%s)...", OSInfoDBName);
00498 
00499     return 0;
00500 }
00501 
00506 int mEventReload(int argc, char **argv)
00507 {
00508     int ret = 0;
00509     if (argc >= 1) {
00510         if (!stricmp(argv[0], EVENT_START)) {
00511             alog("os_info: Reloading configuration directives...");
00512             ret = mLoadConfig();
00513         } else {
00514             /* Nothing for now */
00515         }
00516     }
00517 
00518     if (ret)
00519         alog("os_info.c: ERROR: An error has occured while reloading the configuration file");
00520 
00521     return MOD_CONT;
00522 }
00523 
00524 /*************************************************************************/
00525 
00529 void m_AddLanguages(void)
00530 {
00531     char *langtable_en_us[] = {
00532         /* OINFO_SYNTAX */
00533         "Syntax: OINFO [ADD|DEL] nick <info>",
00534         /* OINFO_ADD_SUCCESS */
00535         "OperInfo line has been added to nick %s",
00536         /* OINFO_DEL_SUCCESS */
00537         "OperInfo line has been removed from nick %s",
00538         /* OCINFO_SYNTAX */
00539         "Syntax: OINFO [ADD|DEL] chan <info>",
00540         /* OCINFO_ADD_SUCCESS */
00541         "OperInfo line has been added to channel %s",
00542         /* OCINFO_DEL_SUCCESS */
00543         "OperInfo line has been removed from channel %s",
00544         /* OINFO_HELP */
00545         "Syntax: OINFO [ADD|DEL] nick <info>\n"
00546             "Add or Delete Oper information for the given nick\n"
00547             "This will show up when any oper /ns info nick's the user.\n"
00548             "and can be used for 'tagging' users etc....",
00549         /* OCINFO_HELP */
00550         "Syntax: OINFO [ADD|DEL] chan <info>\n"
00551             "Add or Delete Oper information for the given channel\n"
00552             "This will show up when any oper /cs info's the channel.\n"
00553             "and can be used for 'tagging' channels etc....",
00554         /* OINFO_HELP_CMD */
00555         "    OINFO      Add / Del an OperInfo line to a nick",
00556         /* OCINFO_HELP_CMD */
00557         "    OINFO      Add / Del an OperInfo line to a channel"
00558     };
00559 
00560     char *langtable_es[] = {
00561         /* OINFO_SYNTAX */
00562         "Sintaxis: OINFO [ADD|DEL] nick <info>",
00563         /* OINFO_ADD_SUCCESS */
00564         "Una linea OperInfo ha sido agregada al nick %s",
00565         /* OINFO_DEL_SUCCESS */
00566         "La linea OperInfo ha sido removida del nick %s",
00567         /* OCINFO_SYNTAX */
00568         "Sintaxis: OINFO [ADD|DEL] chan <info>",
00569         /* OCINFO_ADD_SUCCESS */
00570         "Linea OperInfo ha sido agregada al canal %s",
00571         /* OCINFO_DEL_SUCCESS */
00572         "La linea OperInfo ha sido removida del canal %s",
00573         /* OINFO_HELP */
00574         "Sintaxis: OINFO [ADD|DEL] nick <info>\n"
00575             "Agrega o elimina informacion para Operadores al nick dado\n"
00576             "Esto se mostrara cuando cualquier operador haga /ns info nick\n"
00577             "y puede ser usado para 'marcado' de usuarios, etc....",
00578         /* OCINFO_HELP */
00579         "Sintaxis: OINFO [ADD|DEL] chan <info>\n"
00580             "Agrega o elimina informacion para Operadores al canal dado\n"
00581             "Esto se mostrara cuando cualquier operador haga /cs info canal\n"
00582             "y puede ser usado para 'marcado' de canales, etc....",
00583         /* OINFO_HELP_CMD */
00584         "    OINFO         Agrega / Elimina una linea OperInfo al nick",
00585         /* OCINFO_HELP_CMD */
00586         "    OINFO         Agrega / Elimina una linea OperInfo al canal"
00587     };
00588 
00589     char *langtable_nl[] = {
00590         /* OINFO_SYNTAX */
00591         "Gebruik: OINFO [ADD|DEL] nick <info>",
00592         /* OINFO_ADD_SUCCESS */
00593         "OperInfo regel is toegevoegd aan nick %s",
00594         /* OINFO_DEL_SUCCESS */
00595         "OperInfo regel is weggehaald van nick %s",
00596         /* OCINFO_SYNTAX */
00597         "Gebruik: OINFO [ADD|DEL] kanaal <info>",
00598         /* OCINFO_ADD_SUCCESS */
00599         "OperInfo regel is toegevoegd aan kanaal %s",
00600         /* OCINFO_DEL_SUCCESS */
00601         "OperInfo regel is weggehaald van kanaal %s",
00602         /* OINFO_HELP */
00603         "Gebruik: OINFO [ADD|DEL] nick <info>\n"
00604             "Voeg een Oper informatie regel toe aan de gegeven nick, of\n"
00605             "verwijder deze. Deze regel zal worden weergegeven wanneer\n"
00606             "een oper /ns info nick doet voor deze gebruiker, en kan worden\n"
00607             "gebruikt om een gebruiker te 'markeren' etc...",
00608         /* OCINFO_HELP */
00609         "Gebruik: OINFO [ADD|DEL] kanaal <info>\n"
00610             "Voeg een Oper informatie regel toe aan de gegeven kanaal, of\n"
00611             "verwijder deze. Deze regel zal worden weergegeven wanneer\n"
00612             "een oper /cs info kanaal doet voor dit kanaal, en kan worden\n"
00613             "gebruikt om een kanaal te 'markeren' etc...",
00614         /* OINFO_HELP_CMD */
00615         "    OINFO         Voeg een OperInfo regel toe aan een nick of verwijder deze",
00616         /* OCINFO_HELP_CMD */
00617         "    OINFO         Voeg een OperInfo regel toe aan een kanaal of verwijder deze"
00618     };
00619 
00620     char *langtable_de[] = {
00621         /* OINFO_SYNTAX */
00622         "Syntax: OINFO [ADD|DEL] Nickname <Information>",
00623         /* OINFO_ADD_SUCCESS */
00624         "Eine OperInfo Linie wurde zu den Nicknamen %s hinzugefügt",
00625         /* OINFO_DEL_SUCCESS */
00626         "Die OperInfo Linie wurde von den Nicknamen %s enfernt",
00627         /* OCINFO_SYNTAX */
00628         "Syntax: OINFO [ADD|DEL] Channel <Information>",
00629         /* OCINFO_ADD_SUCCESS */
00630         "Eine OperInfo Linie wurde zu den Channel %s hinzugefügt",
00631         /* OCINFO_DEL_SUCCESS */
00632         "Die OperInfo Linie wurde von den Channel %s enfernt",
00633         /* OINFO_HELP */
00634         "Syntax: OINFO [ADD|DEL] Nickname <Information>\n"
00635             "Addiert oder löscht eine OperInfo Linie zu den angegebenen\n"
00636             "Nicknamen.Sie wird angezeigt wenn ein Oper mit /ns info sich\n"
00637             "über den Nicknamen informiert.",
00638         /* OCINFO_HELP */
00639         "Syntax: OINFO [ADD|DEL] chan <info>\n"
00640             "Addiert oder löscht eine OperInfo Linie zu den angegebenen\n"
00641             "Channel.Sie wird angezeigt wenn ein Oper mit /cs info sich\n"
00642             "über den Channel informiert.",
00643         /* OINFO_HELP_CMD */
00644         "    OINFO         Addiert / Löscht eine OperInfo Linie zu / von einen Nicknamen",
00645         /* OCINFO_HELP_CMD */
00646         "    OINFO         Addiert / Löscht eine OperInfo Linie zu / von einen Channel"
00647     };
00648 
00649     char *langtable_pt[] = {
00650         /* OINFO_SYNTAX */
00651         "Sintaxe: OINFO [ADD|DEL] nick <informação>",
00652         /* OINFO_ADD_SUCCESS */
00653         "A linha OperInfo foi adicionada ao nick %s",
00654         /* OINFO_DEL_SUCCESS */
00655         "A linha OperInfo foi removida do nick %s",
00656         /* OCINFO_SYNTAX */
00657         "Sintaxe: OINFO [ADD|DEL] canal <informação>",
00658         /* OCINFO_ADD_SUCCESS */
00659         "A linha OperInfo foi adicionada ao canal %s",
00660         /* OCINFO_DEL_SUCCESS */
00661         "A linha OperInfo foi removida do canal %s",
00662         /* OINFO_HELP */
00663         "Sintaxe: OINFO [ADD|DEL] nick <informação>\n"
00664             "Adiciona ou apaga informação para Operadores ao nick fornecido\n"
00665             "Isto será mostrado quando qualquer Operador usar /ns info nick\n"
00666             "e pode ser usado para 'etiquetar' usuários etc...",
00667         /* OCINFO_HELP */
00668         "Sintaxe: OINFO [ADD|DEL] canal <informação>\n"
00669             "Adiciona ou apaga informação para Operadores ao canal fornecido\n"
00670             "Isto será mostrado quando qualquer Operador usar /cs info canal\n"
00671             "e pode ser usado para 'etiquetar' canais etc...",
00672         /* OINFO_HELP_CMD */
00673         "    OINFO      Adiciona ou Apaga a linha OperInfo para um nick",
00674         /* OCINFO_HELP_CMD */
00675         "    OINFO      Adiciona ou Apaga a linha OperInfo para um canal"
00676     };
00677 
00678     char *langtable_it[] = {
00679         /* OINFO_SYNTAX */
00680         "Sintassi: OINFO [ADD|DEL] nick <info>",
00681         /* OINFO_ADD_SUCCESS */
00682         "Linea OperInfo aggiunta al nick %s",
00683         /* OINFO_DEL_SUCCESS */
00684         "Linea OperInfo rimossa dal nick %s",
00685         /* OCINFO_SYNTAX */
00686         "Sintassi: OINFO [ADD|DEL] chan <info>",
00687         /* OCINFO_ADD_SUCCESS */
00688         "Linea OperInfo aggiunta al canale %s",
00689         /* OCINFO_DEL_SUCCESS */
00690         "Linea OperInfo rimossa dal canale %s",
00691         /* OINFO_HELP */
00692         "Sintassi: OINFO [ADD|DEL] nick <info>\n"
00693             "Aggiunge o rimuove informazioni Oper per il nick specificato\n"
00694             "Queste vengono mostrate quando un oper esegue il comando /ns info <nick>\n"
00695             "e possono essere utilizzate per 'marchiare' gli utenti ecc...",
00696         /* OCINFO_HELP */
00697         "Sintassi: OINFO [ADD|DEL] chan <info>\n"
00698             "Aggiunge o rimuove informazioni Oper per il canale specificato\n"
00699             "Queste vengono mostrate quando un oper esegue il comando /cs info <canale>\n"
00700             "e possono essere utilizzate per 'marchiare' i canali ecc...",
00701         /* OINFO_HELP_CMD */
00702         "    OINFO         Aggiunge/Rimuove una linea OperInfo ad/da un nick",
00703         /* OCINFO_HELP_CMD */
00704         "    OINFO         Aggiunge/Rimuove una linea OperInfo ad/da un canale"
00705     };
00706 
00707     moduleInsertLanguage(LANG_EN_US, LANG_NUM_STRINGS, langtable_en_us);
00708     moduleInsertLanguage(LANG_ES, LANG_NUM_STRINGS, langtable_es);
00709     moduleInsertLanguage(LANG_NL, LANG_NUM_STRINGS, langtable_nl);
00710     moduleInsertLanguage(LANG_DE, LANG_NUM_STRINGS, langtable_de);
00711     moduleInsertLanguage(LANG_PT, LANG_NUM_STRINGS, langtable_pt);
00712     moduleInsertLanguage(LANG_IT, LANG_NUM_STRINGS, langtable_it);
00713 }
00714 
00715 /*************************************************************************/
00716 
00717 int mNickHelp(User * u)
00718 {
00719     if (is_oper(u)) {
00720         moduleNoticeLang(s_NickServ, u, OINFO_HELP);
00721     } else {
00722         notice_lang(s_NickServ, u, NO_HELP_AVAILABLE, "OINFO");
00723     }
00724     return MOD_CONT;
00725 }
00726 
00727 int mChanHelp(User * u)
00728 {
00729     if (is_oper(u)) {
00730         moduleNoticeLang(s_ChanServ, u, OCINFO_HELP);
00731     } else {
00732         notice_lang(s_ChanServ, u, NO_HELP_AVAILABLE, "OINFO");
00733     }
00734     return MOD_CONT;
00735 }
00736 
00737 /* This help will be added to the main NickServ list */
00738 void mMainNickHelp(User * u)
00739 {
00740     if (is_oper(u)) {
00741         moduleNoticeLang(s_NickServ, u, OINFO_HELP_CMD);
00742     }
00743 }
00744 
00745 /* This help will be added to the main NickServ list */
00746 void mMainChanHelp(User * u)
00747 {
00748     if (is_oper(u)) {
00749         moduleNoticeLang(s_ChanServ, u, OCINFO_HELP_CMD);
00750     }
00751 }
00752 
00753 /*************************************************************************/
00754 
00755 /* EOF */

Generated on Sun Dec 30 09:26:50 2007 for Anope by  doxygen 1.5.1-20070107