ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/ermyth/modules/nickserv/status.C
Revision: 1.6
Committed: Thu Aug 30 19:56:23 2007 UTC (19 years, 1 month ago) by pippijn
Content type: text/plain
Branch: MAIN
Changes since 1.5: +4 -4 lines
Log Message:
- put faultcodes into their own namespace
- removed old files
- limited header garbage in atheme.h
- macros to inline bools for connection_t::is_*
- put some connection_t functions into the connection_t class

File Contents

# User Rev Content
1 pippijn 1.1 /*
2 pippijn 1.4 * Copyright © 2005 William Pitcock, et al.
3 pippijn 1.2 * Rights to this code are as documented in doc/pod/license.pod.
4 pippijn 1.1 *
5 pippijn 1.4 * This file contains code for the ChanServ STATUS function.
6 pippijn 1.1 *
7 pippijn 1.6 * $Id: status.C,v 1.5 2007-08-28 22:18:31 pippijn Exp $
8 pippijn 1.1 */
9    
10     #include "atheme.h"
11 pippijn 1.4 #include <ermyth/module.h>
12 pippijn 1.1 #include <account/mynick.h>
13     #include <account/myuser.h>
14    
15 pippijn 1.6 static char const rcsid[] = "$Id: status.C,v 1.5 2007-08-28 22:18:31 pippijn Exp $";
16 pippijn 1.1
17 pippijn 1.4 REGISTER_MODULE ("nickserv/status", false, "The Ermyth Team <http://ermyth.schmorp.de>");
18 pippijn 1.1
19     static void ns_cmd_acc (sourceinfo_t *si, int parc, char *parv[]);
20     static void ns_cmd_status (sourceinfo_t *si, int parc, char *parv[]);
21    
22 pippijn 1.4 command_t const ns_status = { "STATUS", N_("Displays session information."), AC_NONE, 0, ns_cmd_status };
23     command_t const ns_acc = { "ACC", N_("Displays parsable session information"), AC_NONE, 2, ns_cmd_acc };
24 pippijn 1.1
25 pippijn 1.4 E cmdvec ns_cmdtree;
26     E helpvec ns_helptree;
27 pippijn 1.1
28 pippijn 1.4 bool
29     _modinit (module *m)
30 pippijn 1.1 {
31     ns_cmdtree << ns_acc;
32     help_addentry (ns_helptree, "ACC", "help/nickserv/acc", NULL);
33     ns_cmdtree << ns_status;
34     help_addentry (ns_helptree, "STATUS", "help/nickserv/status", NULL);
35 pippijn 1.4
36     return true;
37 pippijn 1.1 }
38    
39     void
40     _moddeinit ()
41     {
42     ns_cmdtree >> ns_acc;
43     help_delentry (ns_helptree, "ACC");
44     ns_cmdtree >> ns_status;
45     help_delentry (ns_helptree, "STATUS");
46     }
47    
48     static void
49     ns_cmd_acc (sourceinfo_t *si, int parc, char *parv[])
50     {
51 pippijn 1.4 char const *targuser = parv[0];
52 pippijn 1.1 char *targaccount = parv[1];
53     user_t *u;
54     myuser_t *mu;
55     mynick_t *mn;
56    
57     if (!targuser)
58     {
59     u = si->su;
60     targuser = u != NULL ? u->nick : "?";
61     }
62     else
63     u = user_find_named (targuser);
64    
65     if (!u)
66     {
67 pippijn 1.6 command_fail (si, fault::nosuch_target, _("%s%s%s ACC 0 (offline)"), targuser, parc >= 2 ? " -> " : "", parc >= 2 ? targaccount : "");
68 pippijn 1.1 return;
69     }
70    
71     if (!targaccount)
72     targaccount = u->nick;
73     if (!strcmp (targaccount, "*"))
74     mu = u->myuser;
75     else
76 pippijn 1.5 mu = myuser_t::find_ext (targaccount);
77 pippijn 1.1
78     if (!mu)
79     {
80 pippijn 1.6 command_fail (si, fault::nosuch_target, _("%s%s%s ACC 0 (not registered)"), u->nick, parc >= 2 ? " -> " : "", parc >= 2 ? targaccount : "");
81 pippijn 1.1 return;
82     }
83    
84     if (u->myuser == mu)
85     command_success_nodata (si, "%s%s%s ACC 3", u->nick, parc >= 2 ? " -> " : "", parc >= 2 ? mu->name : "");
86 pippijn 1.5 else if ((mn = mynick_find (u->nick)) != NULL && mn->owner == mu && mu->access_verify (u))
87 pippijn 1.1 command_success_nodata (si, "%s%s%s ACC 2", u->nick, parc >= 2 ? " -> " : "", parc >= 2 ? mu->name : "");
88     else
89     command_success_nodata (si, "%s%s%s ACC 1", u->nick, parc >= 2 ? " -> " : "", parc >= 2 ? mu->name : "");
90     }
91    
92     static void
93     ns_cmd_status (sourceinfo_t *si, int parc, char *parv[])
94     {
95     logcommand (si, CMDLOG_GET, "STATUS");
96    
97     if (!si->smu)
98     command_success_nodata (si, _("You are not logged in."));
99     else
100     {
101     command_success_nodata (si, _("You are logged in as \2%s\2."), si->smu->name);
102    
103     if (is_soper (si->smu))
104     {
105     soper_t *soper = si->smu->soper;
106    
107     command_success_nodata (si, _("You are a services operator of class %s."), soper->operclass ? soper->operclass->name : soper->classname);
108     }
109     }
110    
111     if (si->su != NULL)
112     {
113     mynick_t *mn;
114    
115     mn = mynick_find (si->su->nick);
116 pippijn 1.5 if (mn != NULL && mn->owner != si->smu && mn->owner->access_verify (si->su))
117 pippijn 1.1 command_success_nodata (si, _("You are recognized as \2%s\2."), mn->owner->name);
118     }
119    
120     if (si->su != NULL && is_admin (si->su))
121     command_success_nodata (si, _("You are a server administrator."));
122    
123     if (si->su != NULL && is_ircop (si->su))
124     command_success_nodata (si, _("You are an IRC operator."));
125     }
126    
127     /* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs
128     * vim:ts=8
129     * vim:sw=8
130     * vim:noexpandtab
131     */