mirror of
https://github.com/samba-team/samba.git
synced 2025-01-15 23:24:37 +03:00
need a domain resolving function, but get_trusted_serverlist() will do.
this is horrible.
This commit is contained in:
parent
12e2b97321
commit
9df973fe71
@ -484,6 +484,7 @@ int set_maxfiles(int requested_max);
|
||||
void reg_get_subkey(char *full_keyname, char *key_name, char *subkey_name);
|
||||
BOOL reg_split_key(const char *full_keyname, uint32 *reg_type, char *key_name);
|
||||
BOOL become_user_permanently(uid_t uid, gid_t gid);
|
||||
char *get_trusted_serverlist(const char* domain);
|
||||
|
||||
/*The following definitions come from lib/util_array.c */
|
||||
|
||||
|
@ -3228,3 +3228,37 @@ BOOL become_user_permanently(uid_t uid, gid_t gid)
|
||||
return(True);
|
||||
}
|
||||
|
||||
char *get_trusted_serverlist(const char* domain)
|
||||
{
|
||||
pstring tmp;
|
||||
static char *server_list = NULL;
|
||||
static pstring srv_list;
|
||||
char *trusted_list = lp_trusted_domains();
|
||||
|
||||
if (strequal(lp_workgroup(), domain))
|
||||
{
|
||||
DEBUG(10,("local domain server list: %s\n", server_list));
|
||||
pstrcpy(srv_list, lp_passwordserver());
|
||||
return srv_list;
|
||||
}
|
||||
|
||||
if (!next_token(&trusted_list, tmp, NULL, sizeof(tmp)))
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
do
|
||||
{
|
||||
fstring trust_dom;
|
||||
split_at_first_component(tmp, trust_dom, '=', srv_list);
|
||||
|
||||
if (strequal(domain, trust_dom))
|
||||
{
|
||||
return srv_list;
|
||||
DEBUG(10,("trusted: %s\n", server_list));
|
||||
}
|
||||
|
||||
} while (next_token(NULL, tmp, NULL, sizeof(tmp)));
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
@ -507,49 +507,25 @@ static BOOL check_domain_security(char *orig_user, char *domain,
|
||||
uint16 acct_type = 0;
|
||||
|
||||
char *server_list = NULL;
|
||||
pstring srv_list;
|
||||
char *trusted_list = lp_trusted_domains();
|
||||
|
||||
if (lp_security() == SEC_SHARE || lp_security() == SEC_SERVER)
|
||||
{
|
||||
return False;
|
||||
}
|
||||
|
||||
if (lp_security() == SEC_DOMAIN)
|
||||
if (lp_security() == SEC_DOMAIN && strequal(domain, global_myworkgroup))
|
||||
{
|
||||
fstrcpy(acct_name, global_myname);
|
||||
acct_type = SEC_CHAN_WKSTA;
|
||||
if (strequal(lp_workgroup(), domain))
|
||||
{
|
||||
DEBUG(10,("local domain server list: %s\n", server_list));
|
||||
pstrcpy(srv_list, lp_passwordserver());
|
||||
server_list = srv_list;
|
||||
}
|
||||
}
|
||||
|
||||
if (server_list == NULL)
|
||||
else
|
||||
{
|
||||
pstring tmp;
|
||||
if (next_token(&trusted_list, tmp, NULL, sizeof(tmp)))
|
||||
{
|
||||
do
|
||||
{
|
||||
fstring trust_dom;
|
||||
split_at_first_component(tmp, trust_dom, '=', srv_list);
|
||||
|
||||
if (strequal(domain, trust_dom))
|
||||
{
|
||||
DEBUG(10,("trusted domain server list: %s\n", server_list));
|
||||
fstrcpy(acct_name, global_myworkgroup);
|
||||
acct_type = SEC_CHAN_DOMAIN;
|
||||
server_list = srv_list;
|
||||
break;
|
||||
}
|
||||
|
||||
} while (next_token(NULL, tmp, NULL, sizeof(tmp)));
|
||||
}
|
||||
fstrcpy(acct_name, global_myworkgroup);
|
||||
acct_type = SEC_CHAN_DOMAIN;
|
||||
}
|
||||
|
||||
server_list = get_trusted_serverlist(domain);
|
||||
|
||||
if (server_list == NULL)
|
||||
{
|
||||
return False;
|
||||
|
Loading…
x
Reference in New Issue
Block a user