void process_logon_packet(struct packet_struct *p, char *buf,int len, const char *mailslot) { struct dgram_packet *dgram = &p->packet.dgram; pstring my_name; fstring reply_name; pstring outbuf; int code; uint16 token = 0; uint32 ntversion = 0; uint16 lmnttoken = 0; uint16 lm20token = 0; uint32 domainsidsize; BOOL short_request = False; char *getdc; char *uniuser; /* Unicode user name. */ pstring ascuser; char *unicomp; /* Unicode computer name. */ memset(outbuf, 0, sizeof(outbuf)); if (!lp_domain_logons()) { DEBUG(5,("process_logon_packet: Logon packet received from IP %s and domain \ logons are not enabled.\n", inet_ntoa(p->ip) )); return; }
void set_server_role(void) { server_role = ROLE_STANDALONE; switch (lp_security()) { case SEC_SHARE: if (lp_domain_logons()) DEBUG(0, ("Server's Role (logon server) conflicts with share-level security\n")); break; case SEC_SERVER: if (lp_domain_logons()) DEBUG(0, ("Server's Role (logon server) conflicts with server-level security\n")); /* this used to be considered ROLE_DOMAIN_MEMBER but that's just wrong */ server_role = ROLE_STANDALONE; break; case SEC_DOMAIN: if (lp_domain_logons()) { DEBUG(1, ("Server's Role (logon server) NOT ADVISED with domain-level security\n")); server_role = ROLE_DOMAIN_BDC; break; } server_role = ROLE_DOMAIN_MEMBER; break; case SEC_ADS: if (lp_domain_logons()) { server_role = ROLE_DOMAIN_PDC; break; } server_role = ROLE_DOMAIN_MEMBER; break; case SEC_USER: if (lp_domain_logons()) { if (lp_domain_master_true_or_auto()) /* auto or yes */ server_role = ROLE_DOMAIN_PDC; else server_role = ROLE_DOMAIN_BDC; } break; default: DEBUG(0, ("Server's Role undefined due to unknown security mode\n")); break; } DEBUG(10, ("set_server_role: role = %s\n", server_role_str(server_role))); }
static void init_sid_name_map (void) { int i = 0; if (sid_name_map_initialized) return; generate_wellknown_sids(); if ((lp_security() == SEC_USER) && lp_domain_logons()) { sid_name_map[i].sid = get_global_sam_sid(); /* This is not lp_workgroup() for good reason: it must stay around longer than the lp_*() strings do */ sid_name_map[i].name = strdup(lp_workgroup()); sid_name_map[i].known_users = NULL; i++; sid_name_map[i].sid = get_global_sam_sid(); sid_name_map[i].name = strdup(global_myname()); sid_name_map[i].known_users = NULL; i++; } else { sid_name_map[i].sid = get_global_sam_sid(); sid_name_map[i].name = strdup(global_myname()); sid_name_map[i].known_users = NULL; i++; } sid_name_map[i].sid = &global_sid_Builtin; sid_name_map[i].name = "BUILTIN"; sid_name_map[i].known_users = &builtin_groups[0]; i++; sid_name_map[i].sid = &global_sid_World_Domain; sid_name_map[i].name = ""; sid_name_map[i].known_users = &everyone_users[0]; i++; sid_name_map[i].sid = &global_sid_Creator_Owner_Domain; sid_name_map[i].name = ""; sid_name_map[i].known_users = &creator_owner_users[0]; i++; sid_name_map[i].sid = &global_sid_NT_Authority; sid_name_map[i].name = "NT Authority"; sid_name_map[i].known_users = &nt_authority_users[0]; i++; /* End of array. */ sid_name_map[i].sid = NULL; sid_name_map[i].name = NULL; sid_name_map[i].known_users = NULL; sid_name_map_initialized = True; return; }
/************************************************************************** quick init function *************************************************************************/ static void init_sid_name_map (void) { int i = 0; if (sid_name_map_initialized) return; if ((lp_security() == SEC_USER) && lp_domain_logons()) { sid_name_map[i].sid = &global_sam_sid; sid_name_map[i].name = global_myworkgroup; sid_name_map[i].known_users = NULL; i++; sid_name_map[i].sid = &global_sam_sid; sid_name_map[i].name = global_myname; sid_name_map[i].known_users = NULL; i++; } else { sid_name_map[i].sid = &global_sam_sid; sid_name_map[i].name = global_myname; sid_name_map[i].known_users = NULL; i++; } sid_name_map[i].sid = &global_sid_Builtin; sid_name_map[i].name = "BUILTIN"; sid_name_map[i].known_users = &builtin_groups[0]; i++; sid_name_map[i].sid = &global_sid_World_Domain; sid_name_map[i].name = ""; sid_name_map[i].known_users = &everyone_users[0]; i++; sid_name_map[i].sid = &global_sid_Creator_Owner_Domain; sid_name_map[i].name = ""; sid_name_map[i].known_users = &creator_owner_users[0]; i++; sid_name_map[i].sid = &global_sid_NT_Authority; sid_name_map[i].name = "NT Authority"; sid_name_map[i].known_users = &nt_authority_users[0]; i++; /* end of array */ sid_name_map[i].sid = NULL; sid_name_map[i].name = NULL; sid_name_map[i].known_users = NULL; sid_name_map_initialized = True; return; }