The Samba-Bugzilla – Attachment 8453 Details for
Bug 9378
publish of printer is not possible "Object class violation"
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
3.6-test fix part 2
0002-BUG-9378-Add-extra-attributes-for-AD-printer-publish.patch (text/plain), 3.75 KB, created by
David Disseldorp
on 2013-01-21 11:08:52 UTC
(
hide
)
Description:
3.6-test fix part 2
Filename:
MIME Type:
Creator:
David Disseldorp
Created:
2013-01-21 11:08:52 UTC
Size:
3.75 KB
patch
obsolete
>From 28b1d3b031eab6023b7c53075bc4f8a683486773 Mon Sep 17 00:00:00 2001 >From: David Disseldorp <ddiss@samba.org> >Date: Thu, 17 Jan 2013 13:21:25 +0100 >Subject: [PATCH 2/2] BUG 9378: Add extra attributes for AD printer > publishing. > >Currently attempting to publish a printer in AD fails with "Object class >violation", due to a number of missing attributes in the LDAP request. >--- > source3/printing/nt_printing_ads.c | 86 +++++++++++++++++++++++++++++++++++- > 1 file changed, 85 insertions(+), 1 deletion(-) > >diff --git a/source3/printing/nt_printing_ads.c b/source3/printing/nt_printing_ads.c >index 694b2ef..5a0cd24 100644 >--- a/source3/printing/nt_printing_ads.c >+++ b/source3/printing/nt_printing_ads.c >@@ -87,6 +87,86 @@ done: > talloc_free(tmp_ctx); > } > >+static WERROR nt_printer_info_to_mods(TALLOC_CTX *ctx, >+ struct spoolss_PrinterInfo2 *info2, >+ ADS_MODLIST *mods) >+{ >+ char *info_str; >+ >+ ads_mod_str(ctx, mods, SPOOL_REG_PRINTERNAME, info2->sharename); >+ ads_mod_str(ctx, mods, SPOOL_REG_SHORTSERVERNAME, global_myname()); >+ ads_mod_str(ctx, mods, SPOOL_REG_SERVERNAME, get_mydnsfullname()); >+ >+ info_str = talloc_asprintf(ctx, "\\\\%s\\%s", >+ get_mydnsfullname(), info2->sharename); >+ if (info_str == NULL) { >+ return WERR_NOMEM; >+ } >+ ads_mod_str(ctx, mods, SPOOL_REG_UNCNAME, info_str); >+ >+ info_str = talloc_asprintf(ctx, "%d", 4); >+ if (info_str == NULL) { >+ return WERR_NOMEM; >+ } >+ ads_mod_str(ctx, mods, SPOOL_REG_VERSIONNUMBER, info_str); >+ >+ /* empty strings in the mods list result in an attrubute error */ >+ if (strlen(info2->drivername) != 0) >+ ads_mod_str(ctx, mods, SPOOL_REG_DRIVERNAME, info2->drivername); >+ if (strlen(info2->location) != 0) >+ ads_mod_str(ctx, mods, SPOOL_REG_LOCATION, info2->location); >+ if (strlen(info2->comment) != 0) >+ ads_mod_str(ctx, mods, SPOOL_REG_DESCRIPTION, info2->comment); >+ if (strlen(info2->portname) != 0) >+ ads_mod_str(ctx, mods, SPOOL_REG_PORTNAME, info2->portname); >+ if (strlen(info2->sepfile) != 0) >+ ads_mod_str(ctx, mods, SPOOL_REG_PRINTSEPARATORFILE, info2->sepfile); >+ >+ info_str = talloc_asprintf(ctx, "%u", info2->starttime); >+ if (info_str == NULL) { >+ return WERR_NOMEM; >+ } >+ ads_mod_str(ctx, mods, SPOOL_REG_PRINTSTARTTIME, info_str); >+ >+ info_str = talloc_asprintf(ctx, "%u", info2->untiltime); >+ if (info_str == NULL) { >+ return WERR_NOMEM; >+ } >+ ads_mod_str(ctx, mods, SPOOL_REG_PRINTENDTIME, info_str); >+ >+ info_str = talloc_asprintf(ctx, "%u", info2->priority); >+ if (info_str == NULL) { >+ return WERR_NOMEM; >+ } >+ ads_mod_str(ctx, mods, SPOOL_REG_PRIORITY, info_str); >+ >+ if (info2->attributes & PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS) { >+ ads_mod_str(ctx, mods, SPOOL_REG_PRINTKEEPPRINTEDJOBS, "TRUE"); >+ } else { >+ ads_mod_str(ctx, mods, SPOOL_REG_PRINTKEEPPRINTEDJOBS, "FALSE"); >+ } >+ >+ switch (info2->attributes & 0x3) { >+ case 0: >+ ads_mod_str(ctx, mods, SPOOL_REG_PRINTSPOOLING, >+ SPOOL_REGVAL_PRINTWHILESPOOLING); >+ break; >+ case 1: >+ ads_mod_str(ctx, mods, SPOOL_REG_PRINTSPOOLING, >+ SPOOL_REGVAL_PRINTAFTERSPOOLED); >+ break; >+ case 2: >+ ads_mod_str(ctx, mods, SPOOL_REG_PRINTSPOOLING, >+ SPOOL_REGVAL_PRINTDIRECT); >+ break; >+ default: >+ DEBUG(3, ("unsupported printer attributes %x\n", >+ info2->attributes)); >+ } >+ >+ return WERR_OK; >+} >+ > static WERROR nt_printer_publish_ads(struct messaging_context *msg_ctx, > ADS_STRUCT *ads, > struct spoolss_PrinterInfo2 *pinfo2) >@@ -171,7 +251,11 @@ static WERROR nt_printer_publish_ads(struct messaging_context *msg_ctx, > return WERR_NOMEM; > } > >- ads_mod_str(ctx, &mods, SPOOL_REG_PRINTERNAME, printer); >+ win_rc = nt_printer_info_to_mods(ctx, pinfo2, &mods); >+ if (!W_ERROR_IS_OK(win_rc)) { >+ TALLOC_FREE(ctx); >+ return win_rc; >+ } > > /* publish it */ > ads_rc = ads_mod_printer_entry(ads, prt_dn, ctx, &mods); >-- >1.7.10.4 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 9378
:
8179
|
8184
|
8185
|
8452
|
8453
|
8454
|
8456
|
8457