-/*
- * Routines to convert from python hashes to Samba structures
- */
-
-struct cli_state *open_pipe_creds(char *system_name, PyObject *creds,
- cli_pipe_fn *connect_fn,
- struct cli_state *cli)
-{
- struct ntuser_creds nt_creds;
-
- if (!cli) {
- cli = (struct cli_state *)malloc(sizeof(struct cli_state));
- if (!cli)
- return NULL;
- }
-
- ZERO_STRUCTP(cli);
-
- /* Extract credentials from the python dictionary and initialise
- the ntuser_creds struct from them. */
-
- ZERO_STRUCT(nt_creds);
- nt_creds.pwd.null_pwd = True;
-
- if (creds) {
- char *username, *password, *domain;
- PyObject *username_obj, *password_obj, *domain_obj;
-
- /* Check credentials passed are valid. This means the
- username, domain and password keys must exist and be
- string objects. */
-
- username_obj = PyDict_GetItemString(creds, "username");
- domain_obj = PyDict_GetItemString(creds, "domain");
- password_obj = PyDict_GetItemString(creds, "password");
-
- if (!username_obj || !domain_obj || !password_obj) {
- error:
- PyErr_SetString(spoolss_error, "invalid credentials");
- return NULL;
- }
-
- if (!PyString_Check(username_obj) ||
- !PyString_Check(domain_obj) ||
- !PyString_Check(password_obj))
- goto error;
-
- username = PyString_AsString(username_obj);
- domain = PyString_AsString(domain_obj);
- password = PyString_AsString(password_obj);
-
- if (!username || !domain || !password)
- goto error;
-
- /* Initialise nt_creds structure with passed creds */
-
- fstrcpy(nt_creds.user_name, username);
- fstrcpy(nt_creds.domain, domain);
-
- if (lp_encrypted_passwords())
- pwd_make_lm_nt_16(&nt_creds.pwd, password);
- else
- pwd_set_cleartext(&nt_creds.pwd, password);
-
- nt_creds.pwd.null_pwd = False;
- }
-
- /* Now try to connect */
-
- connect_fn(cli, system_name, &nt_creds);
-
- return cli;
-}
-
-PyObject *new_policy_hnd_object(struct cli_state *cli, TALLOC_CTX *mem_ctx,
- POLICY_HND *pol)
-{
- spoolss_policy_hnd_object *o;
-
- o = PyObject_New(spoolss_policy_hnd_object, &spoolss_policy_hnd_type);
-
- o->cli = cli;
- o->mem_ctx = mem_ctx;
- memcpy(&o->pol, pol, sizeof(POLICY_HND));
-
- return (PyObject*)o;
-}
-