Changeset 740 for vendor/current/source4/ntptr
- Timestamp:
- Nov 14, 2012, 12:59:34 PM (13 years ago)
- Location:
- vendor/current/source4/ntptr
- Files:
-
- 1 added
- 1 deleted
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
vendor/current/source4/ntptr/ntptr_base.c
r414 r740 71 71 NTSTATUS ntptr_init(struct loadparm_context *lp_ctx) 72 72 { 73 extern NTSTATUS ntptr_simple_ldb_init(void); 73 #define _MODULE_PROTO(init) extern NTSTATUS init(void); 74 STATIC_ntptr_MODULES_PROTO; 74 75 init_module_fn static_init[] = { STATIC_ntptr_MODULES }; 75 76 init_module_fn *shared_init = load_samba_modules(NULL, lp_ctx, "ntptr"); -
vendor/current/source4/ntptr/simple_ldb/ntptr_simple_ldb.c
r427 r740 31 31 #include "ntptr/ntptr.h" 32 32 #include "librpc/gen_ndr/ndr_spoolss.h" 33 #include "lib/ldb/include/ldb.h"33 #include <ldb.h> 34 34 #include "auth/auth.h" 35 35 #include "dsdb/samdb/samdb.h" 36 36 #include "ldb_wrap.h" 37 37 #include "../lib/util/util_ldb.h" 38 #include "librpc/gen_ndr/dcerpc.h" 39 #include "rpc_server/dcerpc_server.h" 38 40 #include "rpc_server/common/common.h" 39 41 #include "param/param.h" … … 45 47 static struct ldb_context *sptr_db_connect(TALLOC_CTX *mem_ctx, struct tevent_context *ev_ctx, struct loadparm_context *lp_ctx) 46 48 { 47 return ldb_wrap_connect(mem_ctx, ev_ctx, lp_ctx, lp _spoolss_url(lp_ctx), system_session(mem_ctx, lp_ctx),48 NULL, 0 , NULL);49 return ldb_wrap_connect(mem_ctx, ev_ctx, lp_ctx, lpcfg_spoolss_url(lp_ctx), system_session(lp_ctx), 50 NULL, 0); 49 51 } 50 52 … … 75 77 #define SET_STRING(ldb, mod, attr, value) do { \ 76 78 if (value == NULL) return WERR_INVALID_PARAM; \ 77 if ( samdb_msg_add_string(ldb, (TALLOC_CTX *)mod, mod, attr, value) != 0) { \79 if (ldb_msg_add_string(mod, attr, value) != LDB_SUCCESS) { \ 78 80 return WERR_NOMEM; \ 79 81 } \ … … 81 83 82 84 #define SET_UINT(ldb, mod, attr, value) do { \ 83 if (samdb_msg_add_uint(ldb, (TALLOC_CTX *)mod, mod, attr, value) != 0) { \85 if (samdb_msg_add_uint(ldb, (TALLOC_CTX *)mod, mod, attr, value) != LDB_SUCCESS) { \ 84 86 return WERR_NOMEM; \ 85 87 } \ … … 130 132 enum winreg_Type *type) 131 133 { 132 struct dcerpc_server_info *server_info = lp _dcerpc_server_info(mem_ctx, server->ntptr->lp_ctx);134 struct dcerpc_server_info *server_info = lpcfg_dcerpc_server_info(mem_ctx, server->ntptr->lp_ctx); 133 135 if (strcmp("W3SvcInstalled", value_name) == 0) { 134 136 *type = REG_DWORD; … … 161 163 } else if (strcmp("DefaultSpoolDirectory", value_name) == 0) { 162 164 *type = REG_SZ; 163 r->string = talloc_strdup(mem_ctx, "C:\\PRINTERS"); 164 W_ERROR_HAVE_NO_MEMORY(r->string); 165 r->string = "C:\\PRINTERS"; 165 166 return WERR_OK; 166 167 } else if (strcmp("Architecture", value_name) == 0) { 167 168 *type = REG_SZ; 168 r->string = talloc_strdup(mem_ctx, SPOOLSS_ARCHITECTURE_NT_X86); 169 W_ERROR_HAVE_NO_MEMORY(r->string); 169 r->string = SPOOLSS_ARCHITECTURE_NT_X86; 170 170 return WERR_OK; 171 171 } else if (strcmp("DsPresent", value_name) == 0) { … … 183 183 os.extra_string = ""; 184 184 185 ndr_err = ndr_push_struct_blob(&blob, mem_ctx, lp_iconv_convenience(server->ntptr->lp_ctx),&os, (ndr_push_flags_fn_t)ndr_push_spoolss_OSVersion);185 ndr_err = ndr_push_struct_blob(&blob, mem_ctx, &os, (ndr_push_flags_fn_t)ndr_push_spoolss_OSVersion); 186 186 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { 187 187 return WERR_GENERAL_FAILURE; … … 206 206 os_ex.reserved = 0; 207 207 208 ndr_err = ndr_push_struct_blob(&blob, mem_ctx, lp_iconv_convenience(server->ntptr->lp_ctx),&os_ex, (ndr_push_flags_fn_t)ndr_push_spoolss_OSVersionEx);208 ndr_err = ndr_push_struct_blob(&blob, mem_ctx, &os_ex, (ndr_push_flags_fn_t)ndr_push_spoolss_OSVersionEx); 209 209 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { 210 210 return WERR_GENERAL_FAILURE; … … 215 215 return WERR_OK; 216 216 } else if (strcmp("DNSMachineName", value_name) == 0) { 217 if (!lp_realm(server->ntptr->lp_ctx)) return WERR_INVALID_PARAM; 217 const char *dnsdomain = lpcfg_dnsdomain(server->ntptr->lp_ctx); 218 219 if (dnsdomain == NULL) return WERR_INVALID_PARAM; 218 220 219 221 *type = REG_SZ; 220 222 r->string = talloc_asprintf(mem_ctx, "%s.%s", 221 lp_netbios_name(server->ntptr->lp_ctx),222 lp_realm(server->ntptr->lp_ctx));223 lpcfg_netbios_name(server->ntptr->lp_ctx), 224 dnsdomain); 223 225 W_ERROR_HAVE_NO_MEMORY(r->string); 224 226 return WERR_OK; … … 241 243 } 242 244 243 ndr_err = ndr_push_union_blob(&blob, mem_ctx, lp_iconv_convenience(server->ntptr->lp_ctx),245 ndr_err = ndr_push_union_blob(&blob, mem_ctx, 244 246 &data, *r->out.type, (ndr_push_flags_fn_t)ndr_push_spoolss_PrinterData); 245 247 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { … … 279 281 case 1: 280 282 for (i=0; i < count; i++) { 281 info[i].info1.flags = samdb_result_uint(msgs[i], "flags", SPOOLSS_FORM_BUILTIN);282 283 info[i].info1.form_name = samdb_result_string(msgs[i], "form-name", NULL);283 info[i].info1.flags = ldb_msg_find_attr_as_uint(msgs[i], "flags", SPOOLSS_FORM_BUILTIN); 284 285 info[i].info1.form_name = ldb_msg_find_attr_as_string(msgs[i], "form-name", NULL); 284 286 W_ERROR_HAVE_NO_MEMORY(info[i].info1.form_name); 285 287 286 info[i].info1.size.width = samdb_result_uint(msgs[i], "size-width", 0);287 info[i].info1.size.height = samdb_result_uint(msgs[i], "size-height", 0);288 289 info[i].info1.area.left = samdb_result_uint(msgs[i], "area-left", 0);290 info[i].info1.area.top = samdb_result_uint(msgs[i], "area-top", 0);291 info[i].info1.area.right = samdb_result_uint(msgs[i], "area-right", 0);292 info[i].info1.area.bottom = samdb_result_uint(msgs[i], "area-bottom", 0);288 info[i].info1.size.width = ldb_msg_find_attr_as_uint(msgs[i], "size-width", 0); 289 info[i].info1.size.height = ldb_msg_find_attr_as_uint(msgs[i], "size-height", 0); 290 291 info[i].info1.area.left = ldb_msg_find_attr_as_uint(msgs[i], "area-left", 0); 292 info[i].info1.area.top = ldb_msg_find_attr_as_uint(msgs[i], "area-top", 0); 293 info[i].info1.area.right = ldb_msg_find_attr_as_uint(msgs[i], "area-right", 0); 294 info[i].info1.area.bottom = ldb_msg_find_attr_as_uint(msgs[i], "area-bottom", 0); 293 295 } 294 296 break; … … 395 397 if (count < 0) return WERR_GENERAL_FAILURE; 396 398 397 flags = samdb_result_uint(msgs[0], "flags", SPOOLSS_FORM_BUILTIN);399 flags = ldb_msg_find_attr_as_uint(msgs[0], "flags", SPOOLSS_FORM_BUILTIN); 398 400 if (flags != SPOOLSS_FORM_USER) { 399 401 return WERR_FOOBAR; … … 422 424 } 423 425 424 ret = samdb_replace(sptr_db, mem_ctx, msg);426 ret = dsdb_replace(sptr_db, msg, 0); 425 427 if (ret != 0) { 426 428 return WERR_FOOBAR; … … 458 460 if (count < 0) return WERR_GENERAL_FAILURE; 459 461 460 flags = samdb_result_uint(msgs[0], "flags", SPOOLSS_FORM_BUILTIN);462 flags = ldb_msg_find_attr_as_uint(msgs[0], "flags", SPOOLSS_FORM_BUILTIN); 461 463 if (flags != SPOOLSS_FORM_USER) { 462 464 return WERR_FOOBAR; … … 541 543 case 1: 542 544 for (i = 0; i < count; i++) { 543 info[i].info1.flags = samdb_result_uint(msgs[i], "flags", 0);544 545 info[i].info1.name = samdb_result_string(msgs[i], "name", "");545 info[i].info1.flags = ldb_msg_find_attr_as_uint(msgs[i], "flags", 0); 546 547 info[i].info1.name = ldb_msg_find_attr_as_string(msgs[i], "name", ""); 546 548 W_ERROR_HAVE_NO_MEMORY(info[i].info1.name); 547 549 548 info[i].info1.description = samdb_result_string(msgs[i], "description", "");550 info[i].info1.description = ldb_msg_find_attr_as_string(msgs[i], "description", ""); 549 551 W_ERROR_HAVE_NO_MEMORY(info[i].info1.description); 550 552 551 info[i].info1.comment = samdb_result_string(msgs[i], "comment", NULL);553 info[i].info1.comment = ldb_msg_find_attr_as_string(msgs[i], "comment", NULL); 552 554 } 553 555 break; 554 556 case 2: 555 557 for (i = 0; i < count; i++) { 556 info[i].info2.servername = samdb_result_string(msgs[i], "servername", "");558 info[i].info2.servername = ldb_msg_find_attr_as_string(msgs[i], "servername", ""); 557 559 W_ERROR_HAVE_NO_MEMORY(info[i].info2.servername); 558 560 559 info[i].info2.printername = samdb_result_string(msgs[i], "printername", "");561 info[i].info2.printername = ldb_msg_find_attr_as_string(msgs[i], "printername", ""); 560 562 W_ERROR_HAVE_NO_MEMORY(info[i].info2.printername); 561 563 562 info[i].info2.sharename = samdb_result_string(msgs[i], "sharename", "");564 info[i].info2.sharename = ldb_msg_find_attr_as_string(msgs[i], "sharename", ""); 563 565 W_ERROR_HAVE_NO_MEMORY(info[i].info2.sharename); 564 566 565 info[i].info2.portname = samdb_result_string(msgs[i], "portname", "");567 info[i].info2.portname = ldb_msg_find_attr_as_string(msgs[i], "portname", ""); 566 568 W_ERROR_HAVE_NO_MEMORY(info[i].info2.portname); 567 569 568 info[i].info2.drivername = samdb_result_string(msgs[i], "drivername", "");570 info[i].info2.drivername = ldb_msg_find_attr_as_string(msgs[i], "drivername", ""); 569 571 W_ERROR_HAVE_NO_MEMORY(info[i].info2.drivername); 570 572 571 info[i].info2.comment = samdb_result_string(msgs[i], "comment", NULL);572 573 info[i].info2.location = samdb_result_string(msgs[i], "location", NULL);573 info[i].info2.comment = ldb_msg_find_attr_as_string(msgs[i], "comment", NULL); 574 575 info[i].info2.location = ldb_msg_find_attr_as_string(msgs[i], "location", NULL); 574 576 575 577 info[i].info2.devmode = NULL; 576 578 577 info[i].info2.sepfile = samdb_result_string(msgs[i], "sepfile", NULL);578 579 info[i].info2.printprocessor = samdb_result_string(msgs[i], "printprocessor", "");579 info[i].info2.sepfile = ldb_msg_find_attr_as_string(msgs[i], "sepfile", NULL); 580 581 info[i].info2.printprocessor = ldb_msg_find_attr_as_string(msgs[i], "printprocessor", ""); 580 582 W_ERROR_HAVE_NO_MEMORY(info[i].info2.printprocessor); 581 583 582 info[i].info2.datatype = samdb_result_string(msgs[i], "datatype", "");584 info[i].info2.datatype = ldb_msg_find_attr_as_string(msgs[i], "datatype", ""); 583 585 W_ERROR_HAVE_NO_MEMORY(info[i].info2.datatype); 584 586 585 info[i].info2.parameters = samdb_result_string(msgs[i], "parameters", NULL);587 info[i].info2.parameters = ldb_msg_find_attr_as_string(msgs[i], "parameters", NULL); 586 588 587 589 info[i].info2.secdesc = NULL; 588 590 589 info[i].info2.attributes = samdb_result_uint(msgs[i], "attributes", 0);590 info[i].info2.priority = samdb_result_uint(msgs[i], "priority", 0);591 info[i].info2.defaultpriority = samdb_result_uint(msgs[i], "defaultpriority", 0);592 info[i].info2.starttime = samdb_result_uint(msgs[i], "starttime", 0);593 info[i].info2.untiltime = samdb_result_uint(msgs[i], "untiltime", 0);594 info[i].info2.status = samdb_result_uint(msgs[i], "status", 0);595 info[i].info2.cjobs = samdb_result_uint(msgs[i], "cjobs", 0);596 info[i].info2.averageppm = samdb_result_uint(msgs[i], "averageppm", 0);591 info[i].info2.attributes = ldb_msg_find_attr_as_uint(msgs[i], "attributes", 0); 592 info[i].info2.priority = ldb_msg_find_attr_as_uint(msgs[i], "priority", 0); 593 info[i].info2.defaultpriority = ldb_msg_find_attr_as_uint(msgs[i], "defaultpriority", 0); 594 info[i].info2.starttime = ldb_msg_find_attr_as_uint(msgs[i], "starttime", 0); 595 info[i].info2.untiltime = ldb_msg_find_attr_as_uint(msgs[i], "untiltime", 0); 596 info[i].info2.status = ldb_msg_find_attr_as_uint(msgs[i], "status", 0); 597 info[i].info2.cjobs = ldb_msg_find_attr_as_uint(msgs[i], "cjobs", 0); 598 info[i].info2.averageppm = ldb_msg_find_attr_as_uint(msgs[i], "averageppm", 0); 597 599 } 598 600 break; 599 601 case 4: 600 602 for (i = 0; i < count; i++) { 601 info[i].info4.printername = samdb_result_string(msgs[i], "printername", "");603 info[i].info4.printername = ldb_msg_find_attr_as_string(msgs[i], "printername", ""); 602 604 W_ERROR_HAVE_NO_MEMORY(info[i].info2.printername); 603 605 604 info[i].info4.servername = samdb_result_string(msgs[i], "servername", "");606 info[i].info4.servername = ldb_msg_find_attr_as_string(msgs[i], "servername", ""); 605 607 W_ERROR_HAVE_NO_MEMORY(info[i].info2.servername); 606 608 607 info[i].info4.attributes = samdb_result_uint(msgs[i], "attributes", 0);609 info[i].info4.attributes = ldb_msg_find_attr_as_uint(msgs[i], "attributes", 0); 608 610 } 609 611 break; 610 612 case 5: 611 613 for (i = 0; i < count; i++) { 612 info[i].info5.printername = samdb_result_string(msgs[i], "name", "");614 info[i].info5.printername = ldb_msg_find_attr_as_string(msgs[i], "name", ""); 613 615 W_ERROR_HAVE_NO_MEMORY(info[i].info5.printername); 614 616 615 info[i].info5.portname = samdb_result_string(msgs[i], "port", "");617 info[i].info5.portname = ldb_msg_find_attr_as_string(msgs[i], "port", ""); 616 618 W_ERROR_HAVE_NO_MEMORY(info[i].info5.portname); 617 619 618 info[i].info5.attributes = samdb_result_uint(msgs[i], "attributes", 0);619 info[i].info5.device_not_selected_timeout = samdb_result_uint(msgs[i], "device_not_selected_timeout", 0);620 info[i].info5.transmission_retry_timeout = samdb_result_uint(msgs[i], "transmission_retry_timeout", 0);620 info[i].info5.attributes = ldb_msg_find_attr_as_uint(msgs[i], "attributes", 0); 621 info[i].info5.device_not_selected_timeout = ldb_msg_find_attr_as_uint(msgs[i], "device_not_selected_timeout", 0); 622 info[i].info5.transmission_retry_timeout = ldb_msg_find_attr_as_uint(msgs[i], "transmission_retry_timeout", 0); 621 623 } 622 624 break; … … 660 662 case 1: 661 663 for (i = 0; i < count; i++) { 662 info[i].info1.port_name = samdb_result_string(msgs[i], "port-name", "");664 info[i].info1.port_name = ldb_msg_find_attr_as_string(msgs[i], "port-name", ""); 663 665 W_ERROR_HAVE_NO_MEMORY(info[i].info1.port_name); 664 666 } … … 666 668 case 2: 667 669 for (i=0; i < count; i++) { 668 info[i].info2.port_name = samdb_result_string(msgs[i], "port-name", "");670 info[i].info2.port_name = ldb_msg_find_attr_as_string(msgs[i], "port-name", ""); 669 671 W_ERROR_HAVE_NO_MEMORY(info[i].info2.port_name); 670 672 671 info[i].info2.monitor_name = samdb_result_string(msgs[i], "monitor-name", "");673 info[i].info2.monitor_name = ldb_msg_find_attr_as_string(msgs[i], "monitor-name", ""); 672 674 W_ERROR_HAVE_NO_MEMORY(info[i].info2.monitor_name); 673 675 674 info[i].info2.description = samdb_result_string(msgs[i], "description", "");676 info[i].info2.description = ldb_msg_find_attr_as_string(msgs[i], "description", ""); 675 677 W_ERROR_HAVE_NO_MEMORY(info[i].info2.description); 676 678 677 info[i].info2.port_type = samdb_result_uint(msgs[i], "port-type", SPOOLSS_PORT_TYPE_WRITE);678 info[i].info2.reserved = samdb_result_uint(msgs[i], "reserved", 0);679 info[i].info2.port_type = ldb_msg_find_attr_as_uint(msgs[i], "port-type", SPOOLSS_PORT_TYPE_WRITE); 680 info[i].info2.reserved = ldb_msg_find_attr_as_uint(msgs[i], "reserved", 0); 679 681 } 680 682 break; … … 710 712 case 1: 711 713 for (i = 0; i < count; i++) { 712 info[i].info1.monitor_name = samdb_result_string(msgs[i], "monitor-name", "");714 info[i].info1.monitor_name = ldb_msg_find_attr_as_string(msgs[i], "monitor-name", ""); 713 715 W_ERROR_HAVE_NO_MEMORY(info[i].info1.monitor_name); 714 716 } … … 716 718 case 2: 717 719 for (i=0; i < count; i++) { 718 info[i].info2.monitor_name = samdb_result_string(msgs[i], "monitor-name", "");720 info[i].info2.monitor_name = ldb_msg_find_attr_as_string(msgs[i], "monitor-name", ""); 719 721 W_ERROR_HAVE_NO_MEMORY(info[i].info2.monitor_name); 720 722 721 info[i].info2.environment = samdb_result_string(msgs[i], "environment", "");723 info[i].info2.environment = ldb_msg_find_attr_as_string(msgs[i], "environment", ""); 722 724 W_ERROR_HAVE_NO_MEMORY(info[i].info2.environment); 723 725 724 info[i].info2.dll_name = samdb_result_string(msgs[i], "dll-name", "");726 info[i].info2.dll_name = ldb_msg_find_attr_as_string(msgs[i], "dll-name", ""); 725 727 W_ERROR_HAVE_NO_MEMORY(info[i].info2.dll_name); 726 728 } … … 767 769 switch (r->in.level) { 768 770 case 1: 769 info->info1.flags = samdb_result_uint(msgs[0], "flags", SPOOLSS_FORM_BUILTIN);770 771 info->info1.form_name = samdb_result_string(msgs[0], "form-name", NULL);771 info->info1.flags = ldb_msg_find_attr_as_uint(msgs[0], "flags", SPOOLSS_FORM_BUILTIN); 772 773 info->info1.form_name = ldb_msg_find_attr_as_string(msgs[0], "form-name", NULL); 772 774 W_ERROR_HAVE_NO_MEMORY(info->info1.form_name); 773 775 774 info->info1.size.width = samdb_result_uint(msgs[0], "size-width", 0);775 info->info1.size.height = samdb_result_uint(msgs[0], "size-height", 0);776 777 info->info1.area.left = samdb_result_uint(msgs[0], "area-left", 0);778 info->info1.area.top = samdb_result_uint(msgs[0], "area-top", 0);779 info->info1.area.right = samdb_result_uint(msgs[0], "area-right", 0);780 info->info1.area.bottom = samdb_result_uint(msgs[0], "area-bottom", 0);776 info->info1.size.width = ldb_msg_find_attr_as_uint(msgs[0], "size-width", 0); 777 info->info1.size.height = ldb_msg_find_attr_as_uint(msgs[0], "size-height", 0); 778 779 info->info1.area.left = ldb_msg_find_attr_as_uint(msgs[0], "area-left", 0); 780 info->info1.area.top = ldb_msg_find_attr_as_uint(msgs[0], "area-top", 0); 781 info->info1.area.right = ldb_msg_find_attr_as_uint(msgs[0], "area-right", 0); 782 info->info1.area.bottom = ldb_msg_find_attr_as_uint(msgs[0], "area-bottom", 0); 781 783 break; 782 784 default:
Note:
See TracChangeset
for help on using the changeset viewer.