summaryrefslogtreecommitdiff
path: root/services/samba/system.esp
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:
 */
%>