r21896: - Enable creating default NetContext when no explicit credentials are
authorRafal Szczesniak <mimir@samba.org>
Tue, 20 Mar 2007 22:44:22 +0000 (22:44 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:49:37 +0000 (14:49 -0500)
  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

services/samba/ejsnet.esp

index 7ab0e02912968baaad0d3ecde61e104dca95703f..15b6b9b907b7c6e644bf087ea2025b8236e4487a 100644 (file)
@@ -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 (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;
+    }
   
-  if (creds.password == undefined ||
-      typeof(creds.username) != "string")
+    credentials = credentials_init();
+    credentials.set_domain(credParams.domain);
+    credentials.set_username(credParams.username);
+    credentials.set_password(credParams.password);
+
+    resName = "netCtx[" + credParams.domain + "/" + credParams.username + "]";
+  }
+
+  /* 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);
-  
-  var netCtx = NetContext(credentials);
 
-  return session.resources.set(netCtx, "netCtx", error);
+  /* no, create the new context and assign it a resource id */
+  var netCtx = NetContext(credentials);
+  resId = session.resources.set(netCtx, resName, error);
+  return resId;
 }
 jsonrpc.method.NetContext = _NetContext;