summaryrefslogtreecommitdiff
path: root/services/samba/ldb.esp
diff options
context:
space:
mode:
Diffstat (limited to 'services/samba/ldb.esp')
-rw-r--r--services/samba/ldb.esp675
1 files changed, 0 insertions, 675 deletions
diff --git a/services/samba/ldb.esp b/services/samba/ldb.esp
deleted file mode 100644
index f69abde388..0000000000
--- a/services/samba/ldb.esp
+++ /dev/null
@@ -1,675 +0,0 @@
-<%
-/*
- * Copyright:
- * (C) 2006 by Derrell Lipman
- * All rights reserved
- *
- * License:
- * LGPL 2.1: http://creativecommons.org/licenses/LGPL/2.1/
- */
-
-/*
- * JSON-RPC mappings to the ldb ejs functions
- */
-
-/* We'll be saving resources in the session */
-jsonrpc_include("resources.esp");
-
-
-/**
- * Local function to determine if the requested database is one which we allow
- * access to.
- *
- * @param dbRequested
- * Name of the database which is being requested to be opened
- *
- * @return
- * true if access is allowed; false otherwise.
- */
-function accessAllowed(dbRequested)
-{
- /* Databases allowed to connect to */
- dbAllowed = new Array();
- dbAllowed[dbAllowed.length] = "sam.ldb";
-
- for (var i = 0; i < dbAllowed.length; i++)
- {
- if (dbRequested == dbAllowed[i])
- {
- return true;
- }
- }
-
- return false;
-}
-
-
-/**
- * Connect to a database
- *
- * @param params[0]
- * Database name
- *
- * @param params[1..n]
- * Option (e.g. "modules:modlist")
- *
- * @param error
- * An object of class JsonRpcError.
- *
- * @return
- * Success: The resource id to be used for future access to the database
- * Failure: error event
- *
- * @note
- * Credentials or session_info may be set up first.
- */
-function _connect(params, error)
-{
- if (params.length < 1)
- {
- error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
- "usage: <db_name> [<option> ...]");
- return error;
- }
-
- /* First, see if this database was already opened */
- var resourceId = session.resources.find("ldb:" + params[0], error);
- if (resourceId != undefined)
- {
- /* It was. Give 'em the resource id */
- return resourceId;
- }
-
- /* Ensure that the database name is one that is allowed to be opened */
- if (! accessAllowed(params[0]))
- {
- error.setError(-1, "Invalid or disallowed database name");
- return error;
- }
-
- /* Get access to loadparm functions */
- var lp = loadparm_init();
-
- /* Determine the private directory */
- var private_dir = lp.get("private dir");
-
- /* Database was not previously opened. Connect to it. */
- ldb = ldb_init();
- ldb.session_info = session.authinfo.session_info;
- ldb.credentials = session.authinfo.credentials;
- var ret = ldb.connect(private_dir + "/" + params[0]);
- if (ret && ldb.db)
- {
- return session.resources.set(ldb, "ldb:" + params[0], error);
- }
- else
- {
- error.setError(-1, "ldb.connect failed");
- return error;
- }
-}
-jsonrpc.method.connect = _connect;
-
-
-/**
- * Close a database
- *
- * @param params[0]
- * The resource id of the open database, previously returned by connect()
- *
- * @param error
- * An object of class JsonRpcError.
- *
- * @return
- * Success: True
- * Failure: Will only fail with invalid parameters, and throws an error
- */
-function _close(params, error)
-{
- if (params.length != 1)
- {
- error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
- "usage: <resource_id>");
- return error;
- }
-
- ldb = session.resources.get(params[0], error);
- if (ldb["__type"] == "_JsonRpcError")
- {
- return ldb;
- }
-
- var ret = ldb.close();
-
- /* If close succeeded, release the stored resource */
- if (ret)
- {
- session.resources.release(params[0], error);
- }
-
- return ret;
-}
-jsonrpc.method.close = _close;
-
-
-/**
- * Begin a transaction
- *
- * @param params[0]
- * The resource id of the open database, previously returned by connect()
- *
- * @param error
- * An object of class JsonRpcError.
- *
- * @return
- * Success: True
- * Failure: False
- */
-function _transaction_start(params, error)
-{
- if (params.length != 1)
- {
- error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
- "usage: <resource_id>");
- return error;
- }
-
- ldb = session.resources.get(params[0], error);
- if (ldb["__type"] == "_JsonRpcError")
- {
- return ldb;
- }
-
- return ldb.transaction_start();
-}
-jsonrpc.method.transaction_start = _transaction_start;
-
-
-/**
- * Cancel a transaction
- *
- * @param params[0]
- * The resource id of the open database, previously returned by connect()
- *
- * @param error
- * An object of class JsonRpcError.
- *
- * @return
- * Success: True
- * Failure: False
- */
-function _transaction_cancel(params, error)
-{
- if (params.length != 1)
- {
- error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
- "usage: <resource_id>");
- return error;
- }
-
- ldb = session.resources.get(params[0], error);
- if (ldb["__type"] == "_JsonRpcError")
- {
- return ldb;
- }
-
- return ldb.transaction_cancel();
-}
-jsonrpc.method.transaction_cancel = _transaction_cancel;
-
-
-/**
- * Commit a transaction
- *
- * @param params[0]
- * The resource id of the open database, previously returned by connect()
- *
- * @param error
- * An object of class JsonRpcError.
- *
- * @return
- * Success: True
- * Failure: False
- */
-function _transaction_commit(params, error)
-{
- if (params.length != 1)
- {
- error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
- "usage: <resource_id>");
- return error;
- }
-
- ldb = session.resources.get(params[0], error);
- if (ldb["__type"] == "_JsonRpcError")
- {
- return ldb;
- }
-
- return ldb.transaction_commit();
-}
-jsonrpc.method.transaction_commit = _transaction_commit;
-
-
-/**
- * Issue a Search request
- *
- * @param params[0]
- * The resource id of the open database, previously returned by connect()
- *
- * @param params[1]
- * Search expression
- *
- * @param params[2]
- * Base DN
- *
- * @param params[3]
- * Scope: "default", "base", "one" or "subtree"
- *
- * @param params[4]
- * Attributes: an array object
- *
- * @param error
- * An object of class JsonRpcError.
- *
- * @return
- * Success: found object
- * Failure: `undefined`
- *
- * @note
- * If params[4] is missing, assume no attributes
- * If params[3..4] are missing, also assume "default" scope
- * If params[2..4] are missing, also assume null base DN
- */
-function _search(params, error)
-{
- if (params.length < 2 || params.length > 5)
- {
- error.setOrigin(jsonrpc.Constant.ErrorOrigin.Server);
- error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
- "usage: " +
- "<resource_id> <expr> [<baseDN> [<scope> [<attrs>]]]");
- return error;
- }
-
- ldb = session.resources.get(params[0], error);
- if (ldb["__type"] == "_JsonRpcError")
- {
- return ldb;
- }
-
- /* Retrieve parameters */
- var expr = params[1];
- var baseDN = params[2];
- var scope = params[3];
- var attrs = params[4];
-
- /* Fill in optional parameters */
- if (params.length < 3) baseDN = null;
- if (params.length < 4) scope = "one";
- if (params.length < 5) attrs = null;
-
- /* Determine scope value */
- if (scope == "base")
- {
- scope = ldb.SCOPE_BASE;
- }
- else if (scope == "one")
- {
- scope = ldb.SCOPE_ONE;
- }
- else if (scope == "subtree")
- {
- scope = ldb.SCOPE_SUBTREE;
- }
- else if (scope == "default")
- {
- scope = ldb.SCOPE_DEFAULT;
- }
- else
- {
- error.setOrigin(jsonrpc.Constant.ErrorOrigin.Server);
- error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
- "invalid scope: " + scope);
- return error;
- }
-
- var res = ldb.search(expr, baseDN, scope, attrs);
-
- if (res.error != 0) {
- error.setError(res.error, res.errstr);
- return error;
- }
-
- return res.msgs;
-}
-jsonrpc.method.search = _search;
-
-
-/**
- * Add data to the database
- *
- * @param params[0]
- * The resource id of the open database, previously returned by connect()
- *
- * @param params[1]
- * An LDIF string representing the data to be added
- *
- * @param error
- * An object of class JsonRpcError.
- *
- * @return
- * Success: True
- * Failure: False
- */
-function _add(params, error)
-{
- if (params.length != 2)
- {
- error.setOrigin(jsonrpc.Constant.ErrorOrigin.Server);
- error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
- "usage: <resource_id> <ldif>");
- return error;
- }
-
- ldb = session.resources.get(params[0], error);
- if (ldb["__type"] == "_JsonRpcError")
- {
- return ldb;
- }
-
- var res = ldb.add(params[1]);
- if (res.error != 0) {
- error.setError(res.error, res.errstr);
- return error;
- }
-
- return true;
-}
-jsonrpc.method.add = _add;
-
-
-/**
- * Modify data in the database
- *
- * @param params[0]
- * The resource id of the open database, previously returned by connect()
- *
- * @param params[1]
- * An LDIF string representing the data to be modified
- *
- * @param error
- * An object of class JsonRpcError.
- *
- * @return
- * Success: True
- * Failure: False
- */
-function _modify(params, error)
-{
- if (params.length != 2)
- {
- error.setOrigin(jsonrpc.Constant.ErrorOrigin.Server);
- error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
- "usage: <resource_id> <ldif>");
- return error;
- }
-
- ldb = session.resources.get(params[0], error);
- if (ldb["__type"] == "_JsonRpcError")
- {
- return ldb;
- }
-
- var res = ldb.modify(params[1]);
- if (res.error != 0) {
- error.setError(res.error, res.errstr);
- return error;
- }
-
- return true;
-}
-jsonrpc.method.modify = _modify;
-
-
-/**
- * Delete data from the database
- *
- * @param params[0]
- * The resource id of the open database, previously returned by connect()
- *
- * @param params[1]
- * The DN to be located and deleted
- *
- * @param error
- * An object of class JsonRpcError.
- *
- * @return
- * Success: True
- * Failure: False
- */
-function _del(params, error)
-{
- if (params.length != 2)
- {
- error.setOrigin(jsonrpc.Constant.ErrorOrigin.Server);
- error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
- "usage: <resource_id> <dn>");
- return error;
- }
-
- ldb = session.resources.get(params[0], error);
- if (ldb["__type"] == "_JsonRpcError")
- {
- return ldb;
- }
-
- var res = ldb.del(params[1]);
- if (res.error != 0) {
- error.setError(res.error, res.errstr);
- return error;
- }
-
- return true;
-}
-jsonrpc.method.del = _del;
-
-
-/**
- * Rename data in the database
- *
- * @param params[0]
- * The resource id of the open database, previously returned by connect()
- *
- * @param params[1]
- * The DN to be renamed
- *
- * @param params[2]
- * The new name for the DN being renamed
- *
- * @param error
- * An object of class JsonRpcError.
- *
- * @return
- * Success: True
- * Failure: False
- */
-function _rename(params, error)
-{
- if (params.length != 3)
- {
- error.setOrigin(jsonrpc.Constant.ErrorOrigin.Server);
- error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
- "usage: <resource_id> <old_dn> <new_dn>");
- return error;
- }
-
- ldb = session.resources.get(params[0], error);
- if (ldb["__type"] == "_JsonRpcError")
- {
- return ldb;
- }
-
- var res = ldb.rename(params[1], params[2]);
- if (res.error != 0) {
- error.setError(res.error, res.errstr);
- return error;
- }
-
- return true;
-}
-jsonrpc.method.rename = _rename;
-
-
-/**
- * Base64-encode a string
- *
- * @param params[0]
- * The resource id of the open database, previously returned by connect()
- *
- * @param params[1]
- * The string to be base64 encoded
- *
- * @param error
- * An object of class JsonRpcError.
- *
- * @return
- * Success: encoded string
- * Failure: `undefined`
- */
-function _base64encode(params, error)
-{
- if (params.length != 2)
- {
- error.setOrigin(jsonrpc.Constant.ErrorOrigin.Server);
- error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
- "usage: <resource_id> <string_to_be_encoded>");
- return error;
- }
-
- ldb = session.resources.get(params[0], error);
- if (ldb["__type"] == "_JsonRpcError")
- {
- return ldb;
- }
-
- return ldb.base64encode(params[1]);
-}
-jsonrpc.method.base64encode = _base64encode;
-
-
-/**
- * Base64-decode a string
- *
- * @param params[0]
- * The resource id of the open database, previously returned by connect()
- *
- * @param params[1]
- * The string to be base64 decoded
- *
- * @param error
- * An object of class JsonRpcError.
- *
- * @return
- * Success: decoded string
- * Failure: `undefined`
- */
-function _base64decode(params, error)
-{
- if (params.length != 2)
- {
- error.setOrigin(jsonrpc.Constant.ErrorOrigin.Server);
- error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
- "usage: <resource_id> <string_to_be_decoded>");
- return error;
- }
-
- ldb = session.resources.get(params[0], error);
- if (ldb["__type"] == "_JsonRpcError")
- {
- return ldb;
- }
-
- return ldb.base64decode(params[1]);
-}
-jsonrpc.method.base64decode = _base64decode;
-
-
-/**
- * escape a DN
- *
- * @param params[0]
- * The resource id of the open database, previously returned by connect()
- *
- * @param params[1]
- * The DN to be escaped
- *
- * @param error
- * An object of class JsonRpcError.
- *
- * @return
- * Success: escaped string
- * Failure: undefined
- */
-function _base64decode(params, error)
-{
- if (params.length != 2)
- {
- error.setOrigin(jsonrpc.Constant.ErrorOrigin.Server);
- error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
- "usage: <resource_id> <string_to_be_decoded>");
- return error;
- }
-
- ldb = session.resources.get(params[0], error);
- if (ldb["__type"] == "_JsonRpcError")
- {
- return ldb;
- }
-
- return ldb.base64decode(params[1]);
-}
-jsonrpc.method.base64decode = _base64decode;
-
-
-/**
- * Retrieve a description of the most recent error
- *
- * @param params[0]
- * The resource id of the open database, previously returned by connect()
- *
- * @param error
- * An object of class JsonRpcError.
- *
- * @return
- * The most recent error string for the ldb specified by the resource id
- */
-function _errstring(params, error)
-{
- if (params.length != 1)
- {
- error.setOrigin(jsonrpc.Constant.ErrorOrigin.Server);
- error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
- "usage: <resource_id>");
- return error;
- }
-
- ldb = session.resources.get(params[0], error);
- if (ldb["__type"] == "_JsonRpcError")
- {
- return ldb;
- }
-
- return ldb.errstring();
-}
-jsonrpc.method.errstring = _errstring;
-
-
-
-
-/*
- * Local Variables:
- * mode: c
- * End:
- */
-%>