1/* 2 Python wrappers for DCERPC/SMB client routines. 3 4 Copyright (C) Tim Potter, 2002 5 6 This program is free software; you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 2 of the License, or 9 (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with this program; if not, write to the Free Software 18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 19*/ 20 21#include "python/py_samr.h" 22#include "python/py_conv.h" 23 24/* 25 * Convert between SAM_USER_INFO_10 and Python 26 */ 27 28struct pyconv py_SAM_USER_INFO_10[] = { 29 { "acb_info", PY_UINT32, offsetof(SAM_USER_INFO_10, acb_info) }, 30 { NULL } 31}; 32 33BOOL py_from_SAM_USER_INFO_10(PyObject **dict, SAM_USER_INFO_10 *info) 34{ 35 *dict = from_struct(info, py_SAM_USER_INFO_10); 36 PyDict_SetItemString(*dict, "level", PyInt_FromLong(0x10)); 37 return True; 38} 39 40BOOL py_to_SAM_USER_INFO_10(SAM_USER_INFO_10 *info, PyObject *dict) 41{ 42 PyObject *obj, *dict_copy = PyDict_Copy(dict); 43 BOOL result = False; 44 45 if (!(obj = PyDict_GetItemString(dict_copy, "level")) || 46 !PyInt_Check(obj)) 47 goto done; 48 49 PyDict_DelItemString(dict_copy, "level"); 50 51 if (!to_struct(info, dict_copy, py_SAM_USER_INFO_10)) 52 goto done; 53 54 result = True; 55 56done: 57 Py_DECREF(dict_copy); 58 return result; 59} 60 61/* 62 * Convert between SAM_USER_INFO_21 and Python 63 */ 64 65struct pyconv py_SAM_USER_INFO_21[] = { 66 { NULL } 67}; 68 69BOOL py_from_SAM_USER_INFO_21(PyObject **dict, SAM_USER_INFO_21 *info) 70{ 71 *dict = from_struct(info, py_SAM_USER_INFO_21); 72 PyDict_SetItemString(*dict, "level", PyInt_FromLong(21)); 73 return True; 74} 75 76BOOL py_to_SAM_USER_INFO_21(SAM_USER_INFO_21 *info, PyObject *dict) 77{ 78 PyObject *obj, *dict_copy = PyDict_Copy(dict); 79 BOOL result = False; 80 81 if (!(obj = PyDict_GetItemString(dict_copy, "level")) || 82 !PyInt_Check(obj)) 83 goto done; 84 85 PyDict_DelItemString(dict_copy, "level"); 86 87 if (!to_struct(info, dict_copy, py_SAM_USER_INFO_21)) 88 goto done; 89 90 result = True; 91 92done: 93 Py_DECREF(dict_copy); 94 return result; 95} 96 97/* 98 * Convert between acct_info and Python 99 */ 100 101BOOL py_from_acct_info(PyObject **array, struct acct_info *info, int num_accts) 102{ 103 int i; 104 105 *array = PyList_New(num_accts); 106 107 for (i = 0; i < num_accts; i++) { 108 PyObject *obj; 109 110 obj = PyDict_New(); 111 112 PyDict_SetItemString( 113 obj, "name", PyString_FromString(info[i].acct_name)); 114 115 PyDict_SetItemString( 116 obj, "description", 117 PyString_FromString(info[i].acct_desc)); 118 119 PyDict_SetItemString(obj, "rid", PyInt_FromLong(info[i].rid)); 120 121 PyList_SetItem(*array, i, obj); 122 } 123 124 return True; 125} 126 127BOOL py_to_acct_info(PRINTER_INFO_3 *info, PyObject *dict, 128 TALLOC_CTX *mem_ctx) 129{ 130 return False; 131} 132