]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
Add very basic cli_cm_* based connection handler to libnetapi.
authorGünther Deschner <gd@samba.org>
Thu, 10 Apr 2008 19:41:03 +0000 (21:41 +0200)
committerGünther Deschner <gd@samba.org>
Thu, 10 Apr 2008 19:41:03 +0000 (21:41 +0200)
Guenther

source/Makefile.in
source/lib/netapi/cm.c [new file with mode: 0644]

index 0fe0b5db7d4a6bbb7be095a494acb123d2e9f0e0..d89278c027c60c6cdaafd53dc45d42719bf66a0d 100644 (file)
@@ -815,6 +815,7 @@ CLIENT_OBJ = $(CLIENT_OBJ1) $(PARAM_OBJ) $(LIBSMB_OBJ) \
             $(DISPLAY_SEC_OBJ) 
 
 LIBNETAPI_OBJ1 = lib/netapi/netapi.o \
+                lib/netapi/cm.o \
                 librpc/gen_ndr/ndr_libnetapi.o \
                 lib/netapi/libnetapi.o \
                 lib/netapi/joindomain.o \
diff --git a/source/lib/netapi/cm.c b/source/lib/netapi/cm.c
new file mode 100644 (file)
index 0000000..31446ef
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ *  Unix SMB/CIFS implementation.
+ *  NetApi Support
+ *  Copyright (C) Guenther Deschner 2008
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "includes.h"
+
+#include "lib/netapi/netapi.h"
+
+/********************************************************************
+********************************************************************/
+
+WERROR libnetapi_open_ipc_connection(struct libnetapi_ctx *ctx,
+                                    const char *server_name,
+                                    struct cli_state **cli)
+{
+       struct cli_state *cli_ipc = NULL;
+
+       if (!ctx || !cli || !server_name) {
+               return WERR_INVALID_PARAM;
+       }
+
+       cli_cm_set_signing_state(Undefined);
+       cli_cm_set_use_kerberos();
+
+       if (ctx->password) {
+               cli_cm_set_password(ctx->password);
+       }
+       if (ctx->username) {
+               cli_cm_set_username(ctx->username);
+       }
+
+       if (ctx->username && ctx->username[0] &&
+           ctx->password && ctx->password[0]) {
+               cli_cm_set_fallback_after_kerberos();
+       }
+
+       cli_ipc = cli_cm_open(ctx, NULL,
+                             server_name, "IPC$",
+                             false, false);
+       if (!cli_ipc) {
+               libnetapi_set_error_string(ctx,
+                       "Failed to connect to IPC$ share on %s",
+                       server_name);
+               return WERR_CAN_NOT_COMPLETE;
+       }
+
+       *cli = cli_ipc;
+
+       return WERR_OK;
+}
+
+/********************************************************************
+********************************************************************/
+
+WERROR libnetapi_shutdown_cm(struct libnetapi_ctx *ctx)
+{
+       cli_cm_shutdown();
+
+       return WERR_OK;
+}