Author: mimir Date: 2007-03-20 22:44:22 +0000 (Tue, 20 Mar 2007) New Revision: 21896
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=21896 Log: - 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 Modified: branches/SAMBA_4_0/services/samba/ejsnet.esp Changeset: Modified: branches/SAMBA_4_0/services/samba/ejsnet.esp =================================================================== --- branches/SAMBA_4_0/services/samba/ejsnet.esp 2007-03-20 22:25:14 UTC (rev 21895) +++ branches/SAMBA_4_0/services/samba/ejsnet.esp 2007-03-20 22:44:22 UTC (rev 21896) @@ -11,53 +11,67 @@ 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 (creds.domain == undefined || - typeof(creds.domain) != "string") - { - error.setError(jsonrpc.Constant.ServerError.ParameterMismatch, - "a valid string is expected in credentials.domain"); - return error; - } + if (typeof(credParams.domain) != "string") + { + error.setError(jsonrpc.Constant.ServerError.ParameterMismatch, + "a valid string is expected in credentials.domain"); + return error; + } - 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 (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.password == undefined || - typeof(creds.username) != "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.password"); - return error; + /* yes, return its resource id */ + return resId; } - - 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;