mirror of
https://github.com/samba-team/samba.git
synced 2024-12-22 13:34:15 +03:00
s3-spoolss: Make spoolss client os_major,os_minor and os_build configurable.
Similar to spoolss server options, make the client advertised OS version values configurable to allow overriding the defaults provided to the print server. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13597 Signed-off-by: Guenther Deschner <gd@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org> Reviewed-by: Andreas Schneider <asn@samba.org>
This commit is contained in:
parent
70169d4789
commit
a2aa7d6d65
@ -39,3 +39,42 @@
|
||||
<value type="default">2195</value>
|
||||
<value type="example">7601</value>
|
||||
</samba:parameter>
|
||||
|
||||
<samba:parameter name="spoolss_client: os_major"
|
||||
context="G"
|
||||
type="integer"
|
||||
xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
|
||||
<description>
|
||||
<para>Windows might require a new os version number. This option allows
|
||||
to modify the build number. The complete default version number is:
|
||||
6.1.7007 (Windows 7 and Windows Server 2008 R2).
|
||||
</para>
|
||||
</description>
|
||||
<value type="default">6</value>
|
||||
</samba:parameter>
|
||||
|
||||
<samba:parameter name="spoolss_client: os_minor"
|
||||
context="G"
|
||||
type="integer"
|
||||
xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
|
||||
<description>
|
||||
<para>Windows might require a new os version number. This option allows
|
||||
to modify the build number. The complete default version number is:
|
||||
6.1.7007 (Windows 7 and Windows Server 2008 R2).
|
||||
</para>
|
||||
</description>
|
||||
<value type="default">1</value>
|
||||
</samba:parameter>
|
||||
|
||||
<samba:parameter name="spoolss_client: os_build"
|
||||
context="G"
|
||||
type="integer"
|
||||
xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
|
||||
<description>
|
||||
<para>Windows might require a new os version number. This option allows
|
||||
to modify the build number. The complete default version number is:
|
||||
6.1.7007 (Windows 7 and Windows Server 2008 R2).
|
||||
</para>
|
||||
</description>
|
||||
<value type="default">7007</value>
|
||||
</samba:parameter>
|
||||
|
@ -28,6 +28,7 @@
|
||||
#include "rpc_client/cli_spoolss.h"
|
||||
#include "auth/gensec/gensec.h"
|
||||
#include "auth/credentials/credentials.h"
|
||||
#include "rpc_client/init_spoolss.h"
|
||||
|
||||
/**********************************************************************
|
||||
convencience wrapper around rpccli_spoolss_OpenPrinterEx
|
||||
@ -49,14 +50,12 @@ WERROR rpccli_spoolss_openprinter_ex(struct rpc_pipe_client *cli,
|
||||
|
||||
ZERO_STRUCT(devmode_ctr);
|
||||
|
||||
level1.size = 28;
|
||||
level1.client = talloc_asprintf(mem_ctx, "\\\\%s", lp_netbios_name());
|
||||
W_ERROR_HAVE_NO_MEMORY(level1.client);
|
||||
level1.user = cli_credentials_get_username(creds);
|
||||
level1.build = 1381;
|
||||
level1.major = 2;
|
||||
level1.minor = 0;
|
||||
level1.processor = 0;
|
||||
werror = spoolss_init_spoolss_UserLevel1(mem_ctx,
|
||||
cli_credentials_get_username(creds),
|
||||
&level1);
|
||||
if (!W_ERROR_IS_OK(werror)) {
|
||||
return werror;
|
||||
}
|
||||
|
||||
userlevel_ctr.level = 1;
|
||||
userlevel_ctr.user_info.level1 = &level1;
|
||||
@ -229,14 +228,12 @@ WERROR rpccli_spoolss_addprinterex(struct rpc_pipe_client *cli,
|
||||
ZERO_STRUCT(devmode_ctr);
|
||||
ZERO_STRUCT(secdesc_ctr);
|
||||
|
||||
level1.size = 28;
|
||||
level1.build = 1381;
|
||||
level1.major = 2;
|
||||
level1.minor = 0;
|
||||
level1.processor = 0;
|
||||
level1.client = talloc_asprintf(mem_ctx, "\\\\%s", lp_netbios_name());
|
||||
W_ERROR_HAVE_NO_MEMORY(level1.client);
|
||||
level1.user = cli_credentials_get_username(creds);
|
||||
result = spoolss_init_spoolss_UserLevel1(mem_ctx,
|
||||
cli_credentials_get_username(creds),
|
||||
&level1);
|
||||
if (!W_ERROR_IS_OK(result)) {
|
||||
return result;
|
||||
}
|
||||
|
||||
userlevel_ctr.level = 1;
|
||||
userlevel_ctr.user_info.level1 = &level1;
|
||||
|
@ -446,3 +446,33 @@ const char *spoolss_get_short_filesys_environment(const char *environment)
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
#define GLOBAL_SPOOLSS_CLIENT_OS_MAJOR_DEFAULT 2
|
||||
#define GLOBAL_SPOOLSS_CLIENT_OS_MINOR_DEFAULT 0
|
||||
#define GLOBAL_SPOOLSS_CLIENT_OS_BUILD_DEFAULT 1381
|
||||
|
||||
WERROR spoolss_init_spoolss_UserLevel1(TALLOC_CTX *mem_ctx,
|
||||
const char *username,
|
||||
struct spoolss_UserLevel1 *r)
|
||||
{
|
||||
ZERO_STRUCTP(r);
|
||||
|
||||
r->size = 28;
|
||||
r->client = talloc_asprintf(mem_ctx, "\\\\%s", lp_netbios_name());
|
||||
W_ERROR_HAVE_NO_MEMORY(r->client);
|
||||
r->user = talloc_strdup(mem_ctx, username);
|
||||
W_ERROR_HAVE_NO_MEMORY(r->user);
|
||||
r->processor = 0;
|
||||
|
||||
r->major = lp_parm_int(GLOBAL_SECTION_SNUM,
|
||||
"spoolss_client", "os_major",
|
||||
GLOBAL_SPOOLSS_CLIENT_OS_MAJOR_DEFAULT);
|
||||
r->minor = lp_parm_int(GLOBAL_SECTION_SNUM,
|
||||
"spoolss_client", "os_minor",
|
||||
GLOBAL_SPOOLSS_CLIENT_OS_MINOR_DEFAULT);
|
||||
r->build = lp_parm_int(GLOBAL_SECTION_SNUM,
|
||||
"spoolss_client", "os_build",
|
||||
GLOBAL_SPOOLSS_CLIENT_OS_BUILD_DEFAULT);
|
||||
|
||||
return WERR_OK;
|
||||
}
|
||||
|
@ -48,5 +48,8 @@ WERROR spoolss_create_default_devmode(TALLOC_CTX *mem_ctx,
|
||||
WERROR spoolss_create_default_secdesc(TALLOC_CTX *mem_ctx,
|
||||
struct spoolss_security_descriptor **secdesc);
|
||||
const char *spoolss_get_short_filesys_environment(const char *environment);
|
||||
WERROR spoolss_init_spoolss_UserLevel1(TALLOC_CTX *mem_ctx,
|
||||
const char *username,
|
||||
struct spoolss_UserLevel1 *r);
|
||||
|
||||
#endif /* _RPC_CLIENT_INIT_SPOOLSS_H_ */
|
||||
|
Loading…
Reference in New Issue
Block a user