blob: 59844cda39895b8fed71013b5f67841dbfcaf45d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
<%
/*
* Copyright:
* (C) 2006 by Derrell Lipman
* All rights reserved
*
* License:
* LGPL 2.1: http://creativecommons.org/licenses/LGPL/2.1/
*/
/*
* JSON-RPC mappings to system facilities
*/
/* We'll be accessing session resources */
jsonrpc_include("resources.esp");
/**
* Authenticate and log in
*
* @param params[0]
* User name
*
* @param params[1]
* Password
*
* @param params[2]
* Domain
*
* @param error
* An object of class JsonRpcError.
*
* @return
* Success: "Logged in"
* Failure: error event, origin=Server, code=LoginFailed
*/
function _login(params, error)
{
var ret;
var creds = credentials_init();
creds.set_username(params[0]);
creds.set_password(params[1]);
creds.set_domain(params[2]);
creds.set_workstation(request['REMOTE_HOST']);
auth = userAuth(creds, request['REMOTE_SOCKET_ADDRESS']);
if (auth == undefined)
{
error.setOrigin(jsonrpc.Constant.ErrorOrigin.Server);
error.setError(jsonrpc.Constant.ServerError.LoginFailed,
"Invalid login.");
ret = error;
}
else if (auth.result)
{
session.AUTHENTICATED = true;
session.authinfo = new Object();
session.authinfo.username = auth.username;
session.authinfo.domain = auth.domain;
session.authinfo.credentials = creds;
session.authinfo.session_info = auth.session_info;
ret = "Logged in";
}
else if (auth.report == undefined)
{
error.setOrigin(jsonrpc.Constant.ErrorOrigin.Server);
error.setError(jsonrpc.Constant.ServerError.LoginFailed,
"Login failed.");
ret = error;
}
else
{
error.setOrigin(jsonrpc.Constant.ErrorOrigin.Server);
error.setError(jsonrpc.Constant.ServerError.LoginFailed,
"Login failed: " + auth.report);
ret = error;
}
return ret;
}
jsonrpc.method.login = _login;
/**
* Retrieve the list of open resources (for debugging)
*
* @return "Logged out"
*/
function _logout(params, error)
{
session.AUTHENTICATED = false;
return "Logged out";
}
jsonrpc.method.logout = _logout;
/**
* Retrieve the list of open resources (for debugging)
*/
function _get_open_resources(params, error)
{
return session.resources.getList(error);
}
jsonrpc.method.get_open_resources = _get_open_resources;
/*
* Local Variables:
* mode: c
* End:
*/
%>
|