ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/contrib/m_mkpasswd.c
Revision: 76
Committed: Tue Oct 4 19:38:49 2005 UTC (20 years, 10 months ago) by adx
Content type: text/x-csrc
File size: 3678 byte(s)
Log Message:
- fixed contrib #includes

File Contents

# User Rev Content
1 adx 30 /*
2     * m_mkpasswd.c: Encrypts a password online, DES or MD5.
3     *
4     * Copyright 2002 W. Campbell and the ircd-hybrid development team
5     * Based on mkpasswd.c, originally by Nelson Minar (minar@reed.edu)
6     *
7     * You can use this code in any way as long as these names remain.
8     *
9 knight 31 * $Id$
10 adx 30 */
11    
12     #include "handlers.h"
13     #include "ircd.h"
14     #include "numeric.h"
15     #include "s_conf.h"
16     #include "s_serv.h"
17     #include "send.h"
18     #include "modules.h"
19    
20     static void m_mkpasswd(struct Client *, struct Client *, int, char *[]);
21     static void mo_mkpasswd(struct Client *, struct Client *, int, char *[]);
22     static char *des(void);
23     static char *md5(void);
24    
25     static const char saltChars[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./";
26    
27     struct Message mkpasswd_msgtab = {
28     "MKPASSWD", 0, 0, 1, 2, MFLG_SLOW, 0,
29     {m_unregistered, m_mkpasswd, m_ignore, m_ignore, mo_mkpasswd, m_ignore}
30     };
31    
32     #ifndef STATIC_MODULES
33     void
34     _modinit(void)
35     {
36     mod_add_cmd(&mkpasswd_msgtab);
37     }
38    
39     void
40     _moddeinit(void)
41     {
42     mod_del_cmd(&mkpasswd_msgtab);
43     }
44    
45 knight 31 const char *_version = "$Revision$";
46 adx 30 #endif
47    
48     static void
49     m_mkpasswd(struct Client *client_p, struct Client *source_p,
50     int parc, char *parv[])
51     {
52     static time_t last_used = 0;
53    
54     if (parc < 1)
55     {
56     sendto_one(source_p, form_str(ERR_NEEDMOREPARAMS),
57     me.name, source_p->name, "MKPASSWD");
58     return;
59     }
60    
61     if ((last_used + ConfigFileEntry.pace_wait) > CurrentTime)
62     {
63     sendto_one(source_p, form_str(RPL_LOAD2HI),
64     me.name, source_p->name);
65     return;
66     }
67    
68     last_used = CurrentTime;
69    
70     if (parv[2] == NULL)
71     sendto_one(source_p, ":%s NOTICE %s :DES Encryption for [%s]: %s",
72     me.name, source_p->name, parv[1], crypt(parv[1],
73     des()));
74     else if (!irccmp(parv[2], "DES"))
75     sendto_one(source_p, ":%s NOTICE %s :DES Encryption for [%s]: %s",
76     me.name, source_p->name, parv[1], crypt(parv[1],
77     des()));
78     else if (!irccmp(parv[2], "MD5"))
79     sendto_one(source_p, ":%s NOTICE %s :MD5 Encryption for [%s]: %s",
80     me.name, source_p->name, parv[1], crypt(parv[1],
81     md5()));
82     else
83     sendto_one(source_p, ":%s NOTICE %s :Syntax: MKPASSWD pass [DES|MD5]",
84     me.name, source_p->name);
85     }
86    
87     /*
88     ** mo_mkpasswd
89     ** parv[0] = sender prefix
90     ** parv[1] = parameter
91     */
92     static void
93     mo_mkpasswd(struct Client *client_p, struct Client *source_p,
94     int parc, char *parv[])
95     {
96     if (parc < 1)
97     {
98     sendto_one(source_p, form_str(ERR_NEEDMOREPARAMS),
99     me.name, source_p->name, "MKPASSWD");
100     return;
101     }
102    
103     if (parv[2] == NULL)
104     sendto_one(source_p, ":%s NOTICE %s :DES Encryption for [%s]: %s",
105     me.name, source_p->name, parv[1], crypt(parv[1],
106     des()));
107     else if (!irccmp(parv[2], "DES"))
108     sendto_one(source_p, ":%s NOTICE %s :DES Encryption for [%s]: %s",
109     me.name, source_p->name, parv[1], crypt(parv[1],
110     des()));
111     else if (!irccmp(parv[2], "MD5"))
112     sendto_one(source_p, ":%s NOTICE %s :MD5 Encryption for [%s]: %s",
113     me.name, source_p->name, parv[1], crypt(parv[1],
114     md5()));
115     else
116     sendto_one(source_p, ":%s NOTICE %s :Syntax: MKPASSWD pass [DES|MD5]",
117     me.name, source_p->name);
118     }
119    
120     static char *
121     des(void)
122     {
123     static char salt[3];
124    
125     salt[0] = saltChars[rand() % 64];
126     salt[1] = saltChars[rand() % 64];
127     salt[2] = '\0';
128    
129     return salt;
130     }
131    
132     static char *
133     md5(void)
134     {
135     static char salt[13];
136     int i;
137    
138     salt[0] = '$';
139     salt[1] = '1';
140     salt[2] = '$';
141    
142     for (i = 3; i < 11; i++)
143     salt[i] = saltChars[rand() % 64];
144    
145     salt[11] = '$';
146     salt[12] = '\0';
147    
148     return salt;
149     }

Properties

Name Value
svn:eol-style native
svn:keywords Id Revision