From 039069b3fd10e2ea614c385c6b432b235e1c226b Mon Sep 17 00:00:00 2001 From: Derrell Lipman Date: Sun, 15 Oct 2006 21:09:42 +0000 Subject: [PATCH] r19295: ldbbrowse: the search tab is now doing something vaguely reasonable. --- services/request.esp | 8 +- services/resources.esp | 51 +++++--- services/samba/ldb.esp | 99 ++++++--------- swat/apps/samba/utils/ldbbrowse.html | 183 +++++++++++++++++++++------ 4 files changed, 218 insertions(+), 123 deletions(-) diff --git a/services/request.esp b/services/request.esp index 982f39fcaae..970ea6b4fb7 100644 --- a/services/request.esp +++ b/services/request.esp @@ -118,7 +118,7 @@ jsonrpc.Constant.ErrorCode.MethodNotFound = 4; * This error is also used to indicate an illegal parameter value, in server * scripts. */ -jsonrpc.Constant.ErrorCode.PaameterMismatch = 5; +jsonrpc.Constant.ErrorCode.ParameterMismatch = 5; /** * Error code, value 6: Permission Denied @@ -337,7 +337,7 @@ var nameFirstLetter = if (strspn(jsonInput.method, nameChars) != strlen(jsonInput.method)) { /* There's some illegal character in the service name */ - error.setError(JsonRpcError.MethodNotFound, + error.setError(jsonrpc.Constant.ErrorCode.MethodNotFound, "Illegal character found in method name."); error.Send(); return; @@ -364,7 +364,7 @@ if (strspn(substr(jsonInput.method, 0, 1), nameFirstLetter) != 1) if (strspn(jsonInput.service, "." + nameChars) != strlen(jsonInput.service)) { /* There's some illegal character in the service name */ - error.setError(JsonRpcError.IllegalService, + error.setError(jsonrpc.Constant.ErrorCode.IllegalService, "Illegal character found in service name."); error.Send(); return; @@ -379,7 +379,7 @@ if (strspn(jsonInput.service, "." + nameChars) != strlen(jsonInput.service)) */ if (typeof(strstr(jsonInput.service, "..")) != "pointer") { - error.setError(JsonRpcError.IllegalService, + error.setError(jsonrpc.Constant.ErrorCode.IllegalService, "Illegal use of two consecutive dots in service name"); error.Send(); return; diff --git a/services/resources.esp b/services/resources.esp index d4a77f79072..d491ed5701c 100644 --- a/services/resources.esp +++ b/services/resources.esp @@ -28,15 +28,6 @@ function _resourcesCreate() /* We'll maintain our own count of the number of open resources */ o.resourceList.count = 0; - /* - * Resource types - */ - o.Type = new Object(); - o.Type.ldb = 1; /* database handle */ - o.Type.tid = 2; /* tree id */ - o.Type.fid = 3; /* file id */ - /* etc., etc., etc. */ - /* * Set a new saved resource. @@ -48,7 +39,7 @@ function _resourcesCreate() { /* Yup. */ error.setOrigin(jsonrpc.Constant.ErrorOrigin.Server); - error.setError(JsonRpcError_ResourceError, + error.setError(jsonrpc.Constant.ErrorCode.ResourceError, "Session limit on resources (" + RESOURCE_LIMIT + ") exceeded."); @@ -81,7 +72,7 @@ function _resourcesCreate() /* * Get a previously-saved resource */ - function _get(resourceId, type, error) + function _get(resourceId, error) { /* Does the specified resource id exist? */ if (! this.resourceList[resourceId]) @@ -96,21 +87,39 @@ function _resourcesCreate() /* Retrieve the resource */ var r = this.resourceList[resourceId]; - /* Is the specified resource the correct type? */ - if (r.type != type) - { - /* Nope. */ - error.setOrigin(jsonrpc.Constant.ErrorOrigin.Server); - error.setError(jsonrpc.Constant.ErrorCode.ResourceError, - "Incorrect type for specified resource id."); - return error; - } - /* Give 'em what they came for! */ return r.resource; } o.get = _get; + /* + * Find a previously-saved resource + */ + function _find(type, error) + { + /* Does the specified resource id exist? */ + for (var resourceId in this.resourceList) + { + /* Retrieve the resource */ + var r = this.resourceList[resourceId]; + + /* Ignore "id" and "count" integer fields */ + if (typeof(r) == "object") + { + /* Is the specified resource the correct type? */ + if (r.type == type) + { + /* Yup, this is the one they want. */ + return resourceId; + } + } + } + + /* It wasn't found. */ + return undefined; + } + o.find = _find; + /* * Release a previously-saved resource, allowing it to be freed */ diff --git a/services/samba/ldb.esp b/services/samba/ldb.esp index 2eff5ba57d0..d886d1a5665 100644 --- a/services/samba/ldb.esp +++ b/services/samba/ldb.esp @@ -39,18 +39,25 @@ function _connect(params, error) { if (params.length < 1) { - error.setError(JsonRpcError_ParameterMismatch, + error.setError(jsonrpc.Constant.ErrorCode.ParameterMismatch, "usage: [