comparison plugins/auth/auth.js @ 0:1158cffe5a5e

Initial import
author David Demelier <markand@malikania.fr>
date Mon, 08 Feb 2016 16:43:14 +0100
parents
children d34c2f2381eb c234b8db1816
comparison
equal deleted inserted replaced
-1:000000000000 0:1158cffe5a5e
1 /*
2 * auth.js -- generic plugin to authenticate to services
3 *
4 * Copyright (c) 2013-2016 David Demelier <markand@malikania.fr>
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
19 /* Plugin information */
20 info = {
21 author: "David Demelier <markand@malikania.fr>",
22 license: "ISC",
23 summary: "Generic plugin to authenticate to services",
24 version: "@IRCCD_VERSION@"
25 };
26
27 /* Modules */
28 var Logger = Irccd.Logger;
29 var Plugin = Irccd.Plugin;
30 var Server = Irccd.Server;
31 var Util = Irccd.Util;
32
33 function authenticateNickserv(server, password)
34 {
35 Logger.info("authenticating to NickServ on " + server.toString());
36
37 var username = Plugin.config[server.toString() + ".username"];
38 var str = Util.format("identify #{username}#{password}", {
39 "username": username ? (username + " ") : "",
40 "password": password
41 });
42
43 server.message("NickServ", str);
44 }
45
46 function authenticateQuakenet(server, password)
47 {
48 var username = Plugin.config[server.toString() + ".username"];
49
50 if (!username) {
51 Logger.warning("missing username for quakenet backend on " + server.toString());
52 } else {
53 Logger.log("authenticating to Q on " + server.toString());
54 server.message("Q@CServe.quakenet.org", Util.format("AUTH #{username} #{password}", {
55 "username": username,
56 "password": password
57 }));
58 }
59 }
60
61 function onConnect(server)
62 {
63 var type = Plugin.config[server.toString() + ".type"];
64
65 if (type) {
66 /* Password is mandatory */
67 var password = Plugin.config[server.toString() + ".password"];
68
69 if (!password)
70 Logger.warning("missing password for " + server.toString());
71
72 switch (type) {
73 case "nickserv":
74 authenticateNickserv(server, password);
75 break;
76 case "quakenet":
77 authenticateQuakenet(server, password);
78 break;
79 default:
80 Logger.warning("unknown '" + type + "' backend");
81 break;
82 }
83 }
84 }