mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
pysmb: Extend py_smb_new to allow use_ntlmv2 and use_spnego to be set by callers
Signed-off-by: Andrew Bartlett <abartlet@samba.org>
This commit is contained in:
parent
60e45a2d25
commit
6fcb61b791
@ -59,12 +59,13 @@ static void dos_format(char *s)
|
|||||||
* Connect to SMB share using smb_full_connection
|
* Connect to SMB share using smb_full_connection
|
||||||
*/
|
*/
|
||||||
static NTSTATUS do_smb_connect(TALLOC_CTX *mem_ctx, struct smb_private_data *spdata,
|
static NTSTATUS do_smb_connect(TALLOC_CTX *mem_ctx, struct smb_private_data *spdata,
|
||||||
const char *hostname, const char *service, struct smbcli_tree **tree)
|
const char *hostname, const char *service,
|
||||||
|
struct smbcli_options *options,
|
||||||
|
struct smbcli_session_options *session_options,
|
||||||
|
struct smbcli_tree **tree)
|
||||||
{
|
{
|
||||||
struct smbcli_state *smb_state;
|
struct smbcli_state *smb_state;
|
||||||
NTSTATUS status;
|
NTSTATUS status;
|
||||||
struct smbcli_options options;
|
|
||||||
struct smbcli_session_options session_options;
|
|
||||||
|
|
||||||
*tree = NULL;
|
*tree = NULL;
|
||||||
|
|
||||||
@ -72,9 +73,6 @@ static NTSTATUS do_smb_connect(TALLOC_CTX *mem_ctx, struct smb_private_data *spd
|
|||||||
|
|
||||||
smb_state = smbcli_state_init(mem_ctx);
|
smb_state = smbcli_state_init(mem_ctx);
|
||||||
|
|
||||||
lpcfg_smbcli_options(spdata->lp_ctx, &options);
|
|
||||||
lpcfg_smbcli_session_options(spdata->lp_ctx, &session_options);
|
|
||||||
|
|
||||||
status = smbcli_full_connection(mem_ctx, &smb_state, hostname,
|
status = smbcli_full_connection(mem_ctx, &smb_state, hostname,
|
||||||
lpcfg_smb_ports(spdata->lp_ctx),
|
lpcfg_smb_ports(spdata->lp_ctx),
|
||||||
service,
|
service,
|
||||||
@ -83,8 +81,8 @@ static NTSTATUS do_smb_connect(TALLOC_CTX *mem_ctx, struct smb_private_data *spd
|
|||||||
spdata->creds,
|
spdata->creds,
|
||||||
lpcfg_resolve_context(spdata->lp_ctx),
|
lpcfg_resolve_context(spdata->lp_ctx),
|
||||||
spdata->ev_ctx,
|
spdata->ev_ctx,
|
||||||
&options,
|
options,
|
||||||
&session_options,
|
session_options,
|
||||||
lpcfg_gensec_settings(mem_ctx, spdata->lp_ctx));
|
lpcfg_gensec_settings(mem_ctx, spdata->lp_ctx));
|
||||||
|
|
||||||
if (NT_STATUS_IS_OK(status)) {
|
if (NT_STATUS_IS_OK(status)) {
|
||||||
@ -570,17 +568,23 @@ static PyObject *py_smb_new(PyTypeObject *type, PyObject *args, PyObject *kwargs
|
|||||||
{
|
{
|
||||||
PyObject *py_creds = Py_None;
|
PyObject *py_creds = Py_None;
|
||||||
PyObject *py_lp = Py_None;
|
PyObject *py_lp = Py_None;
|
||||||
const char *kwnames[] = { "hostname", "service", "creds", "lp", NULL };
|
const char *kwnames[] = { "hostname", "service", "creds", "lp",
|
||||||
|
"ntlmv2_auth", "use_spnego", NULL };
|
||||||
const char *hostname = NULL;
|
const char *hostname = NULL;
|
||||||
const char *service = NULL;
|
const char *service = NULL;
|
||||||
PyObject *smb;
|
PyObject *smb;
|
||||||
struct smb_private_data *spdata;
|
struct smb_private_data *spdata;
|
||||||
NTSTATUS status;
|
NTSTATUS status;
|
||||||
TALLOC_CTX *frame = NULL;
|
TALLOC_CTX *frame = NULL;
|
||||||
|
struct smbcli_options options;
|
||||||
|
struct smbcli_session_options session_options;
|
||||||
|
uint8_t ntlmv2_auth = 0xFF;
|
||||||
|
uint8_t use_spnego = 0xFF;
|
||||||
|
|
||||||
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "zz|OO",
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "zz|OObb",
|
||||||
discard_const_p(char *, kwnames),
|
discard_const_p(char *, kwnames),
|
||||||
&hostname, &service, &py_creds, &py_lp)) {
|
&hostname, &service, &py_creds, &py_lp,
|
||||||
|
&ntlmv2_auth, &use_spnego)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -606,7 +610,20 @@ static PyObject *py_smb_new(PyTypeObject *type, PyObject *args, PyObject *kwargs
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
status = do_smb_connect(spdata, spdata, hostname, service, &spdata->tree);
|
lpcfg_smbcli_options(spdata->lp_ctx, &options);
|
||||||
|
lpcfg_smbcli_session_options(spdata->lp_ctx, &session_options);
|
||||||
|
|
||||||
|
if (ntlmv2_auth != 0xFF) {
|
||||||
|
session_options.ntlmv2_auth = ntlmv2_auth;
|
||||||
|
}
|
||||||
|
if (use_spnego != 0xFF) {
|
||||||
|
options.use_spnego = use_spnego;
|
||||||
|
}
|
||||||
|
|
||||||
|
status = do_smb_connect(spdata, spdata, hostname, service,
|
||||||
|
&options,
|
||||||
|
&session_options,
|
||||||
|
&spdata->tree);
|
||||||
PyErr_NTSTATUS_IS_ERR_RAISE(status);
|
PyErr_NTSTATUS_IS_ERR_RAISE(status);
|
||||||
if (spdata->tree == NULL) {
|
if (spdata->tree == NULL) {
|
||||||
TALLOC_FREE(frame);
|
TALLOC_FREE(frame);
|
||||||
|
Loading…
Reference in New Issue
Block a user