Mercurial > irccd
annotate plugins/auth/auth.js @ 881:adeede06b2f3
misc: merge from stable-3
author | David Demelier <markand@malikania.fr> |
---|---|
date | Thu, 15 Aug 2019 22:38:16 +0200 |
parents | 06cc2f95f479 |
children | 5e25439fe98d |
rev | line source |
---|---|
0 | 1 /* |
2 * auth.js -- generic plugin to authenticate to services | |
3 * | |
824
06cc2f95f479
misc: happy new year!
David Demelier <markand@malikania.fr>
parents:
773
diff
changeset
|
4 * Copyright (c) 2013-2019 David Demelier <markand@malikania.fr> |
0 | 5 * |
6 * Permission to use, copy, modify, and/or distribute this software for any | |
7 * purpose with or without fee is hereby granted, provided that the above | |
8 * copyright notice and this permission notice appear in all copies. | |
9 * | |
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
17 */ | |
18 | |
152
d34c2f2381eb
Plugin auth: fix invalid usage of Irccd.log (info instead) and style
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
19 // Plugin information. |
0 | 20 info = { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
21 name: "auth", |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
22 author: "David Demelier <markand@malikania.fr>", |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
23 license: "ISC", |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
24 summary: "Generic plugin to authenticate to services", |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
25 version: "@IRCCD_VERSION@" |
0 | 26 }; |
27 | |
152
d34c2f2381eb
Plugin auth: fix invalid usage of Irccd.log (info instead) and style
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
28 // Modules. |
0 | 29 var Logger = Irccd.Logger; |
30 var Plugin = Irccd.Plugin; | |
31 var Server = Irccd.Server; | |
32 var Util = Irccd.Util; | |
33 | |
34 function authenticateNickserv(server, password) | |
35 { | |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
36 Logger.info("authenticating to NickServ on " + server.toString()); |
0 | 37 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
38 var username = Plugin.config[server.toString() + ".username"]; |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
39 var str = Util.format("identify #{username}#{password}", { |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
40 "username": username ? (username + " ") : "", |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
41 "password": password |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
42 }); |
0 | 43 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
44 server.message("NickServ", str); |
0 | 45 } |
46 | |
47 function authenticateQuakenet(server, password) | |
48 { | |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
49 var username = Plugin.config[server.toString() + ".username"]; |
0 | 50 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
51 if (!username) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
52 Logger.warning("missing username for quakenet backend on " + server.toString()); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
53 else { |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
54 Logger.info("authenticating to Q on " + server.toString()); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
55 server.message("Q@CServe.quakenet.org", Util.format("AUTH #{username} #{password}", { |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
56 "username": username, |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
57 "password": password |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
58 })); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
59 } |
0 | 60 } |
61 | |
62 function onConnect(server) | |
63 { | |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
64 var type = Plugin.config[server.toString() + ".type"]; |
0 | 65 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
66 if (type) { |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
67 // Password is mandatory. |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
68 var password = Plugin.config[server.toString() + ".password"]; |
0 | 69 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
70 if (!password) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
71 Logger.warning("missing password for " + server.toString()); |
0 | 72 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
73 switch (type) { |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
74 case "nickserv": |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
75 authenticateNickserv(server, password); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
76 break; |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
77 case "quakenet": |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
78 authenticateQuakenet(server, password); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
79 break; |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
80 default: |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
81 Logger.warning("unknown '" + type + "' backend"); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
82 break; |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
83 } |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
724
diff
changeset
|
84 } |
0 | 85 } |