mirror of
https://github.com/samba-team/samba.git
synced 2025-01-11 05:18:09 +03:00
r21896: - Enable creating default NetContext when no explicit credentials are
passed. In such case use what's been provided on swat session logon. - Create a proper NetContext object only once and add it to the resources for later use. rafal
This commit is contained in:
parent
e44b6df138
commit
106779fcf3
@ -11,53 +11,67 @@ jsonrpc_include("resources.esp");
|
||||
|
||||
function _NetContext(params, error)
|
||||
{
|
||||
var credParams, credentials;
|
||||
var resName;
|
||||
|
||||
if (params.length < 1)
|
||||
{
|
||||
error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
|
||||
"too few parameters(usage: [ <credentials ])");
|
||||
return error;
|
||||
/* create default NetContext based on already provided credentials */
|
||||
credentials = session.authinfo.credentials;
|
||||
resName = "netCtx";
|
||||
}
|
||||
|
||||
var creds = params[0];
|
||||
if (creds == undefined)
|
||||
else
|
||||
{
|
||||
error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
|
||||
"credentials parameter is undefined");
|
||||
return error;
|
||||
/* create user specified credentials object */
|
||||
credParams = params[0];
|
||||
if (typeof(credParams) != "object")
|
||||
{
|
||||
error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
|
||||
"credentials parameter is expected to be an object");
|
||||
return error;
|
||||
}
|
||||
|
||||
if (typeof(credParams.domain) != "string")
|
||||
{
|
||||
error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
|
||||
"a valid string is expected in credentials.domain");
|
||||
return error;
|
||||
}
|
||||
|
||||
if (typeof(credParams.username) != "string")
|
||||
{
|
||||
error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
|
||||
"a valid string is expected in credentials.username");
|
||||
return error;
|
||||
}
|
||||
|
||||
if (typeof(credParams.username) != "string")
|
||||
{
|
||||
error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
|
||||
"a valid string is expected in credentials.password");
|
||||
return error;
|
||||
}
|
||||
|
||||
credentials = credentials_init();
|
||||
credentials.set_domain(credParams.domain);
|
||||
credentials.set_username(credParams.username);
|
||||
credentials.set_password(credParams.password);
|
||||
|
||||
resName = "netCtx[" + credParams.domain + "/" + credParams.username + "]";
|
||||
}
|
||||
|
||||
if (creds.domain == undefined ||
|
||||
typeof(creds.domain) != "string")
|
||||
/* was this NetContext created yet ? */
|
||||
var resId = session.resources.find(key, error);
|
||||
if (resId != undefined)
|
||||
{
|
||||
error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
|
||||
"a valid string is expected in credentials.domain");
|
||||
return error;
|
||||
/* yes, return its resource id */
|
||||
return resId;
|
||||
}
|
||||
|
||||
if (creds.username == undefined ||
|
||||
typeof(creds.username) != "string")
|
||||
{
|
||||
error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
|
||||
"a valid string is expected in credentials.username");
|
||||
return error;
|
||||
}
|
||||
|
||||
if (creds.password == undefined ||
|
||||
typeof(creds.username) != "string")
|
||||
{
|
||||
error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
|
||||
"a valid string is expected in credentials.password");
|
||||
return error;
|
||||
}
|
||||
|
||||
var credentials = credentials_init();
|
||||
credentials.set_domain(creds.domain);
|
||||
credentials.set_username(creds.username);
|
||||
credentials.set_password(creds.password);
|
||||
|
||||
/* no, create the new context and assign it a resource id */
|
||||
var netCtx = NetContext(credentials);
|
||||
|
||||
return session.resources.set(netCtx, "netCtx", error);
|
||||
resId = session.resources.set(netCtx, resName, error);
|
||||
return resId;
|
||||
}
|
||||
jsonrpc.method.NetContext = _NetContext;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user