関数 | |
PyObject * | py_werror_tuple (WERROR werror) |
PyObject * | py_ntstatus_tuple (NTSTATUS ntstatus) |
void | py_samba_init (void) |
PyObject * | get_debuglevel (PyObject *self, PyObject *args) |
PyObject * | set_debuglevel (PyObject *self, PyObject *args) |
PyObject * | py_setup_logging (PyObject *self, PyObject *args, PyObject *kw) |
BOOL | py_parse_creds (PyObject *creds, char **username, char **domain, char **password, char **errstr) |
cli_state * | open_pipe_creds (char *server, PyObject *creds, int pipe_idx, char **errstr) |
BOOL | get_level_value (PyObject *dict, uint32 *level) |
変数 | |
static BOOL | initialised |
PyObject* py_werror_tuple | ( | WERROR | werror | ) |
py_common.c の 25 行で定義されています。
参照先 dos_errstr()・werror.
参照元 spoolss_addprinterdriver()・spoolss_enumports()・spoolss_enumprinterdrivers()・spoolss_enumprinters()・spoolss_getprinterdriverdir()・spoolss_hnd_addform()・spoolss_hnd_deleteform()・spoolss_hnd_deleteprinterdata()・spoolss_hnd_deleteprinterdataex()・spoolss_hnd_enddocprinter()・spoolss_hnd_endpageprinter()・spoolss_hnd_enumforms()・spoolss_hnd_enumjobs()・spoolss_hnd_enumprinterdata()・spoolss_hnd_enumprinterdataex()・spoolss_hnd_enumprinterkey()・spoolss_hnd_getform()・spoolss_hnd_getjob()・spoolss_hnd_getprinter()・spoolss_hnd_getprinterdata()・spoolss_hnd_getprinterdataex()・spoolss_hnd_getprinterdriver()・spoolss_hnd_setform()・spoolss_hnd_setjob()・spoolss_hnd_setprinter()・spoolss_hnd_setprinterdata()・spoolss_hnd_setprinterdataex()・spoolss_hnd_startdocprinter()・spoolss_hnd_startpageprinter()・spoolss_hnd_writeprinter()・spoolss_openprinter()・srvsvc_netservergetinfo().
00026 { 00027 return Py_BuildValue("[is]", W_ERROR_V(werror), 00028 dos_errstr(werror)); 00029 }
PyObject* py_ntstatus_tuple | ( | NTSTATUS | ntstatus | ) |
py_common.c の 33 行で定義されています。
参照先 nt_errstr()・ntstatus.
参照元 lsa_enum_trust_dom()・lsa_lookup_names()・lsa_lookup_sids()・lsa_open_policy()・samr_connect()・samr_create_dom_user()・samr_delete_dom_user()・samr_open_domain()・samr_set_user_info2().
00034 { 00035 return Py_BuildValue("[is]", NT_STATUS_V(ntstatus), 00036 nt_errstr(ntstatus)); 00037 }
void py_samba_init | ( | void | ) |
py_common.c の 43 行で定義されています。
参照先 dyn_CONFIGFILE・fprintf()・init_names()・initialised・load_case_tables()・load_interfaces().
参照元 initlsa()・initsamr()・initsmb()・initspoolss()・initsrvsvc()・initwinbind()・initwinreg().
00044 { 00045 if (initialised) 00046 return; 00047 00048 load_case_tables(); 00049 00050 /* Load configuration file */ 00051 00052 if (!lp_load(dyn_CONFIGFILE, True, False, False, True)) 00053 fprintf(stderr, "Can't load %s\n", dyn_CONFIGFILE); 00054 00055 /* Misc other stuff */ 00056 00057 load_interfaces(); 00058 init_names(); 00059 00060 initialised = True; 00061 }
PyObject* get_debuglevel | ( | PyObject * | self, | |
PyObject * | args | |||
) |
py_common.c の 65 行で定義されています。
参照先 debuglevel・DEBUGLEVEL.
00066 { 00067 PyObject *debuglevel; 00068 00069 if (!PyArg_ParseTuple(args, "")) 00070 return NULL; 00071 00072 debuglevel = PyInt_FromLong(DEBUGLEVEL); 00073 00074 return debuglevel; 00075 }
PyObject* set_debuglevel | ( | PyObject * | self, | |
PyObject * | args | |||
) |
py_common.c の 77 行で定義されています。
参照先 debuglevel・DEBUGLEVEL.
00078 { 00079 int debuglevel; 00080 00081 if (!PyArg_ParseTuple(args, "i", &debuglevel)) 00082 return NULL; 00083 00084 DEBUGLEVEL = debuglevel; 00085 00086 Py_INCREF(Py_None); 00087 return Py_None; 00088 }
PyObject* py_setup_logging | ( | PyObject * | self, | |
PyObject * | args, | |||
PyObject * | kw | |||
) |
py_common.c の 92 行で定義されています。
参照先 interactive・reopen_logs()・setup_logging().
00093 { 00094 BOOL interactive = False; 00095 char *logfilename = NULL; 00096 static char *kwlist[] = {"interactive", "logfilename", NULL}; 00097 00098 if (!PyArg_ParseTupleAndKeywords( 00099 args, kw, "|is", kwlist, &interactive, &logfilename)) 00100 return NULL; 00101 00102 if (interactive && logfilename) { 00103 PyErr_SetString(PyExc_RuntimeError, 00104 "can't be interactive and set log file name"); 00105 return NULL; 00106 } 00107 00108 if (interactive) 00109 setup_logging("spoolss", True); 00110 00111 if (logfilename) { 00112 lp_set_logfile(logfilename); 00113 setup_logging(logfilename, False); 00114 reopen_logs(); 00115 } 00116 00117 Py_INCREF(Py_None); 00118 return Py_None; 00119 }
BOOL py_parse_creds | ( | PyObject * | creds, | |
char ** | username, | |||
char ** | domain, | |||
char ** | password, | |||
char ** | errstr | |||
) |
py_common.c の 128 行で定義されています。
参照先 asprintf().
参照元 open_pipe_creds()・py_smb_session_setup().
00130 { 00131 /* Initialise anonymous credentials */ 00132 00133 *username = ""; 00134 *domain = ""; 00135 *password = ""; 00136 00137 if (creds && PyDict_Size(creds) > 0) { 00138 PyObject *username_obj, *password_obj, *domain_obj; 00139 PyObject *key, *value; 00140 int i; 00141 00142 /* Check for presence of required fields */ 00143 00144 username_obj = PyDict_GetItemString(creds, "username"); 00145 domain_obj = PyDict_GetItemString(creds, "domain"); 00146 password_obj = PyDict_GetItemString(creds, "password"); 00147 00148 if (!username_obj) { 00149 *errstr = SMB_STRDUP("no username field in credential"); 00150 return False; 00151 } 00152 00153 if (!domain_obj) { 00154 *errstr = SMB_STRDUP("no domain field in credential"); 00155 return False; 00156 } 00157 00158 if (!password_obj) { 00159 *errstr = SMB_STRDUP("no password field in credential"); 00160 return False; 00161 } 00162 00163 /* Check type of required fields */ 00164 00165 if (!PyString_Check(username_obj)) { 00166 *errstr = SMB_STRDUP("username field is not string type"); 00167 return False; 00168 } 00169 00170 if (!PyString_Check(domain_obj)) { 00171 *errstr = SMB_STRDUP("domain field is not string type"); 00172 return False; 00173 } 00174 00175 if (!PyString_Check(password_obj)) { 00176 *errstr = SMB_STRDUP("password field is not string type"); 00177 return False; 00178 } 00179 00180 /* Look for any extra fields */ 00181 00182 i = 0; 00183 00184 while (PyDict_Next(creds, &i, &key, &value)) { 00185 if (strcmp(PyString_AsString(key), "domain") != 0 && 00186 strcmp(PyString_AsString(key), "username") != 0 && 00187 strcmp(PyString_AsString(key), "password") != 0) { 00188 asprintf(errstr, 00189 "creds contain extra field '%s'", 00190 PyString_AsString(key)); 00191 return False; 00192 } 00193 } 00194 00195 /* Assign values */ 00196 00197 *username = PyString_AsString(username_obj); 00198 *domain = PyString_AsString(domain_obj); 00199 *password = PyString_AsString(password_obj); 00200 } 00201 00202 *errstr = NULL; 00203 00204 return True; 00205 }
struct cli_state* open_pipe_creds | ( | char * | server, | |
PyObject * | creds, | |||
int | pipe_idx, | |||
char ** | errstr | |||
) |
py_common.c の 212 行で定義されています。
参照先 asprintf()・cli・cli_full_connection()・cli_rpc_pipe_open_noauth()・cli_shutdown()・cli_state::domain・password・py_parse_creds()・result・username.
参照元 lsa_open_policy()・samr_connect()・spoolss_addprinterdriver()・spoolss_addprinterex()・spoolss_enumports()・spoolss_enumprinterdrivers()・spoolss_enumprinters()・spoolss_getprinterdriverdir()・spoolss_openprinter()・srvsvc_netservergetinfo().
00214 { 00215 char *username, *password, *domain; 00216 struct cli_state *cli; 00217 struct rpc_pipe_client *pipe_hnd; 00218 NTSTATUS result; 00219 00220 /* Extract credentials from the python dictionary */ 00221 00222 if (!py_parse_creds(creds, &username, &domain, &password, errstr)) 00223 return NULL; 00224 00225 /* Now try to connect */ 00226 00227 result = cli_full_connection( 00228 &cli, NULL, server, NULL, 0, "IPC$", "IPC", 00229 username, domain, password, 0, Undefined, NULL); 00230 00231 if (!NT_STATUS_IS_OK(result)) { 00232 *errstr = SMB_STRDUP("error connecting to IPC$ pipe"); 00233 return NULL; 00234 } 00235 00236 pipe_hnd = cli_rpc_pipe_open_noauth(cli, pipe_idx, &result); 00237 if (!pipe_hnd) { 00238 cli_shutdown(cli); 00239 asprintf(errstr, "error opening pipe index %d", pipe_idx); 00240 return NULL; 00241 } 00242 00243 *errstr = NULL; 00244 00245 return cli; 00246 }
BOOL get_level_value | ( | PyObject * | dict, | |
uint32 * | level | |||
) |
py_common.c の 251 行で定義されています。
参照元 samr_set_user_info2()・spoolss_addprinterdriver()・spoolss_hnd_addform()・spoolss_hnd_setform()・spoolss_hnd_setprinter()・spoolss_hnd_startdocprinter().
00252 { 00253 PyObject *obj; 00254 00255 if (!(obj = PyDict_GetItemString(dict, "level")) || 00256 !PyInt_Check(obj)) 00257 return False; 00258 00259 if (level) 00260 *level = PyInt_AsLong(obj); 00261 00262 return True; 00263 }
BOOL initialised [static] |
py_common.c の 41 行で定義されています。