mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
Some of the updates from ctrlsoft's 'Various' patch:
- convert net to popt
- convert status to popt
- adapt examples/pdb/ to multiple passdb system
- add dynamic debug class example to examples/pdb/
and some reformatting to better match the samba coding style.
Andrew Bartlett
(This used to be commit 2498bc69d4
)
This commit is contained in:
parent
f5adb79093
commit
98d5699d28
@ -17,11 +17,15 @@
|
||||
* Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#include "includes.h"
|
||||
|
||||
static BOOL testsam_setsampwent(struct pdb_context *context, BOOL update)
|
||||
#include "includes.h"
|
||||
static int testsam_debug_level = DBGC_ALL;
|
||||
#undef DBGC_CLASS
|
||||
#define DBGC_CLASS testsam_debug_level
|
||||
|
||||
static BOOL testsam_setsampwent(struct pdb_methods *methods, BOOL update)
|
||||
{
|
||||
DEBUG(0, ("testsam_setsampwent called\n"));
|
||||
DEBUG(10, ("testsam_setsampwent called\n"));
|
||||
return True;
|
||||
}
|
||||
|
||||
@ -29,18 +33,18 @@ static BOOL testsam_setsampwent(struct pdb_context *context, BOOL update)
|
||||
End enumeration of the passwd list.
|
||||
****************************************************************/
|
||||
|
||||
static void testsam_endsampwent(struct pdb_context *context)
|
||||
static void testsam_endsampwent(struct pdb_methods *methods)
|
||||
{
|
||||
DEBUG(0, ("testsam_endsampwent called\n"));
|
||||
DEBUG(10, ("testsam_endsampwent called\n"));
|
||||
}
|
||||
|
||||
/*****************************************************************
|
||||
Get one SAM_ACCOUNT from the list (next in line)
|
||||
*****************************************************************/
|
||||
|
||||
static BOOL testsam_getsampwent(struct pdb_context *context, SAM_ACCOUNT *user)
|
||||
static BOOL testsam_getsampwent(struct pdb_methods *methods, SAM_ACCOUNT *user)
|
||||
{
|
||||
DEBUG(0, ("testsam_getsampwent called\n"));
|
||||
DEBUG(10, ("testsam_getsampwent called\n"));
|
||||
return False;
|
||||
}
|
||||
|
||||
@ -48,9 +52,9 @@ static BOOL testsam_getsampwent(struct pdb_context *context, SAM_ACCOUNT *user)
|
||||
Lookup a name in the SAM database
|
||||
******************************************************************/
|
||||
|
||||
static BOOL testsam_getsampwnam (struct pdb_context *context, SAM_ACCOUNT *user, const char *sname)
|
||||
static BOOL testsam_getsampwnam (struct pdb_methods *methods, SAM_ACCOUNT *user, const char *sname)
|
||||
{
|
||||
DEBUG(0, ("testsam_getsampwnam called\n"));
|
||||
DEBUG(10, ("testsam_getsampwnam called\n"));
|
||||
return False;
|
||||
}
|
||||
|
||||
@ -58,9 +62,9 @@ static BOOL testsam_getsampwnam (struct pdb_context *context, SAM_ACCOUNT *user,
|
||||
Search by rid
|
||||
**************************************************************************/
|
||||
|
||||
static BOOL testsam_getsampwrid (struct pdb_context *context, SAM_ACCOUNT *user, uint32 rid)
|
||||
static BOOL testsam_getsampwrid (struct pdb_methods *methods, SAM_ACCOUNT *user, uint32 rid)
|
||||
{
|
||||
DEBUG(0, ("testsam_getsampwrid called\n"));
|
||||
DEBUG(10, ("testsam_getsampwrid called\n"));
|
||||
return False;
|
||||
}
|
||||
|
||||
@ -68,9 +72,9 @@ static BOOL testsam_getsampwrid (struct pdb_context *context, SAM_ACCOUNT *user,
|
||||
Delete a SAM_ACCOUNT
|
||||
****************************************************************************/
|
||||
|
||||
static BOOL testsam_delete_sam_account(struct pdb_context *context, const SAM_ACCOUNT *sam_pass)
|
||||
static BOOL testsam_delete_sam_account(struct pdb_methods *methods, const SAM_ACCOUNT *sam_pass)
|
||||
{
|
||||
DEBUG(0, ("testsam_delete_sam_account called\n"));
|
||||
DEBUG(10, ("testsam_delete_sam_account called\n"));
|
||||
return False;
|
||||
}
|
||||
|
||||
@ -78,9 +82,9 @@ static BOOL testsam_delete_sam_account(struct pdb_context *context, const SAM_AC
|
||||
Modifies an existing SAM_ACCOUNT
|
||||
****************************************************************************/
|
||||
|
||||
static BOOL testsam_update_sam_account (struct pdb_context *context, const SAM_ACCOUNT *newpwd)
|
||||
static BOOL testsam_update_sam_account (struct pdb_methods *methods, const SAM_ACCOUNT *newpwd)
|
||||
{
|
||||
DEBUG(0, ("testsam_update_sam_account called\n"));
|
||||
DEBUG(10, ("testsam_update_sam_account called\n"));
|
||||
return False;
|
||||
}
|
||||
|
||||
@ -88,9 +92,9 @@ static BOOL testsam_update_sam_account (struct pdb_context *context, const SAM_A
|
||||
Adds an existing SAM_ACCOUNT
|
||||
****************************************************************************/
|
||||
|
||||
static BOOL testsam_add_sam_account (struct pdb_context *context, const SAM_ACCOUNT *newpwd)
|
||||
static BOOL testsam_add_sam_account (struct pdb_methods *methods, const SAM_ACCOUNT *newpwd)
|
||||
{
|
||||
DEBUG(0, ("testsam_add_sam_account called\n"));
|
||||
DEBUG(10, ("testsam_add_sam_account called\n"));
|
||||
return False;
|
||||
}
|
||||
|
||||
@ -112,10 +116,16 @@ NTSTATUS pdb_init(PDB_CONTEXT *pdb_context, PDB_METHODS **pdb_method, const char
|
||||
(*pdb_method)->add_sam_account = testsam_add_sam_account;
|
||||
(*pdb_method)->update_sam_account = testsam_update_sam_account;
|
||||
(*pdb_method)->delete_sam_account = testsam_delete_sam_account;
|
||||
|
||||
testsam_debug_level = debug_add_class("testsam");
|
||||
if (testsam_debug_level == -1) {
|
||||
testsam_debug_level = DBGC_ALL;
|
||||
DEBUG(0, ("testsam: Couldn't register custom debugging class!\n"));
|
||||
} else DEBUG(0, ("testsam: Debug class number of 'testsam': %d\n", testsam_debug_level));
|
||||
|
||||
DEBUG(0, ("Initializing testsam\n"));
|
||||
if (location)
|
||||
DEBUG(0, ("Location: %s\n", location));
|
||||
DEBUG(10, ("Location: %s\n", location));
|
||||
|
||||
return NT_STATUS_OK;
|
||||
}
|
||||
|
@ -66,7 +66,7 @@ static void context_endsampwent(struct pdb_context *context)
|
||||
return;
|
||||
}
|
||||
|
||||
if(context->pwent_methods && context->pwent_methods->endsampwent)
|
||||
if (context->pwent_methods && context->pwent_methods->endsampwent)
|
||||
context->pwent_methods->endsampwent(context->pwent_methods);
|
||||
|
||||
/* So we won't get strange data when calling getsampwent now */
|
||||
@ -80,18 +80,19 @@ static BOOL context_getsampwent(struct pdb_context *context, SAM_ACCOUNT *user)
|
||||
return False;
|
||||
}
|
||||
/* Loop until we find something useful */
|
||||
while((!context->pwent_methods->getsampwent) ||
|
||||
while ((!context->pwent_methods->getsampwent) ||
|
||||
context->pwent_methods->getsampwent(context->pwent_methods, user) == False){
|
||||
|
||||
if(context->pwent_methods->endsampwent)
|
||||
if (context->pwent_methods->endsampwent)
|
||||
context->pwent_methods->endsampwent(context->pwent_methods);
|
||||
|
||||
context->pwent_methods = context->pwent_methods->next;
|
||||
|
||||
/* All methods are checked now. There are no more entries */
|
||||
if(context->pwent_methods == NULL)return False;
|
||||
if (context->pwent_methods == NULL)
|
||||
return False;
|
||||
|
||||
if(!context->pwent_methods->setsampwent){
|
||||
if (!context->pwent_methods->setsampwent){
|
||||
DEBUG(5, ("invalid context->pwent_methods->setsampwent\n"));
|
||||
return False;
|
||||
}
|
||||
@ -110,8 +111,8 @@ static BOOL context_getsampwnam(struct pdb_context *context, SAM_ACCOUNT *sam_ac
|
||||
return False;
|
||||
}
|
||||
curmethods = context->pdb_methods;
|
||||
while(curmethods){
|
||||
if(curmethods->getsampwnam && curmethods->getsampwnam(curmethods, sam_acct, username) == True){
|
||||
while (curmethods){
|
||||
if (curmethods->getsampwnam && curmethods->getsampwnam(curmethods, sam_acct, username) == True){
|
||||
sam_acct->methods = curmethods;
|
||||
return True;
|
||||
}
|
||||
@ -131,8 +132,8 @@ static BOOL context_getsampwrid(struct pdb_context *context, SAM_ACCOUNT *sam_ac
|
||||
|
||||
curmethods = context->pdb_methods;
|
||||
|
||||
while(curmethods){
|
||||
if(curmethods->getsampwrid && curmethods->getsampwrid(curmethods, sam_acct, rid) == True){
|
||||
while (curmethods){
|
||||
if (curmethods->getsampwrid && curmethods->getsampwrid(curmethods, sam_acct, rid) == True){
|
||||
sam_acct->methods = curmethods;
|
||||
return True;
|
||||
}
|
||||
@ -163,12 +164,12 @@ static BOOL context_update_sam_account(struct pdb_context *context, SAM_ACCOUNT
|
||||
return False;
|
||||
}
|
||||
|
||||
if(!sam_acct || !sam_acct->methods){
|
||||
if (!sam_acct || !sam_acct->methods){
|
||||
DEBUG(0, ("invalid sam_acct specified\n"));
|
||||
return False;
|
||||
}
|
||||
|
||||
if(!sam_acct->methods->update_sam_account){
|
||||
if (!sam_acct->methods->update_sam_account){
|
||||
DEBUG(0, ("invalid sam_acct->methods\n"));
|
||||
return False;
|
||||
}
|
||||
@ -186,12 +187,12 @@ static BOOL context_delete_sam_account(struct pdb_context *context, SAM_ACCOUNT
|
||||
return False;
|
||||
}
|
||||
|
||||
if(!sam_acct->methods){
|
||||
if (!sam_acct->methods){
|
||||
pdb_selected = context->pdb_methods;
|
||||
/* There's no passdb backend specified for this account.
|
||||
* Try to delete it in every passdb available */
|
||||
while(pdb_selected){
|
||||
if(pdb_selected->delete_sam_account && pdb_selected->delete_sam_account(pdb_selected, sam_acct)){
|
||||
while (pdb_selected){
|
||||
if (pdb_selected->delete_sam_account && pdb_selected->delete_sam_account(pdb_selected, sam_acct)){
|
||||
return True;
|
||||
}
|
||||
pdb_selected = pdb_selected->next;
|
||||
@ -199,7 +200,7 @@ static BOOL context_delete_sam_account(struct pdb_context *context, SAM_ACCOUNT
|
||||
return False;
|
||||
}
|
||||
|
||||
if(!sam_acct->methods->delete_sam_account){
|
||||
if (!sam_acct->methods->delete_sam_account){
|
||||
DEBUG(0,("invalid sam_acct->methods->delete_sam_account\n"));
|
||||
return False;
|
||||
}
|
||||
@ -211,8 +212,8 @@ static void free_pdb_context(struct pdb_context **context)
|
||||
{
|
||||
struct pdb_methods *pdb_selected = (*context)->pdb_methods;
|
||||
|
||||
while(pdb_selected){
|
||||
if(pdb_selected->free_private_data)
|
||||
while (pdb_selected){
|
||||
if (pdb_selected->free_private_data)
|
||||
pdb_selected->free_private_data(pdb_selected->private_data);
|
||||
pdb_selected = pdb_selected->next;
|
||||
}
|
||||
|
@ -77,6 +77,7 @@ BOOL opt_have_ip = False;
|
||||
struct in_addr opt_dest_ip;
|
||||
|
||||
extern pstring global_myname;
|
||||
extern BOOL AllowDebugChange;
|
||||
|
||||
/*
|
||||
run a function from a function table. If not found then
|
||||
@ -356,7 +357,7 @@ static struct functable net_func[] = {
|
||||
const char ** argv_new;
|
||||
poptContext pc;
|
||||
static char *servicesf = dyn_CONFIGFILE;
|
||||
static int debuglevel = 0;
|
||||
static char *debuglevel = NULL;
|
||||
|
||||
struct poptOption long_options[] = {
|
||||
{"help", 'h', POPT_ARG_NONE, 0, 'h'},
|
||||
@ -367,8 +368,8 @@ static struct functable net_func[] = {
|
||||
{"port", 'p', POPT_ARG_INT, &opt_port},
|
||||
{"myname", 'n', POPT_ARG_STRING, &opt_requester_name},
|
||||
{"conf", 's', POPT_ARG_STRING, &servicesf},
|
||||
{"debug", 'd', POPT_ARG_INT, &debuglevel},
|
||||
{"debuglevel", 'd', POPT_ARG_INT, &debuglevel},
|
||||
{"debug", 'd', POPT_ARG_STRING, &debuglevel},
|
||||
{"debuglevel", 'd', POPT_ARG_STRING, &debuglevel},
|
||||
{"server", 'S', POPT_ARG_STRING, &opt_host},
|
||||
{"comment", 'C', POPT_ARG_STRING, &opt_comment},
|
||||
{"maxusers", 'M', POPT_ARG_INT, &opt_maxusers},
|
||||
@ -416,9 +417,12 @@ static struct functable net_func[] = {
|
||||
}
|
||||
}
|
||||
|
||||
lp_load(servicesf,True,False,False);
|
||||
if (debuglevel) {
|
||||
debug_parse_levels(debuglevel);
|
||||
AllowDebugChange = False;
|
||||
}
|
||||
|
||||
DEBUGLEVEL = debuglevel;
|
||||
lp_load(servicesf,True,False,False);
|
||||
|
||||
argv_new = (const char **)poptGetArgs(pc);
|
||||
|
||||
|
@ -34,24 +34,24 @@ int export_database (struct pdb_context *in, char *db){
|
||||
struct pdb_context *context;
|
||||
SAM_ACCOUNT *user = NULL;
|
||||
|
||||
if(!NT_STATUS_IS_OK(make_pdb_context_name(&context, db))){
|
||||
if (!NT_STATUS_IS_OK(make_pdb_context_name(&context, db))){
|
||||
fprintf(stderr, "Can't initialize %s.\n", db);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(!in->pdb_setsampwent(in, 0)){
|
||||
if (!in->pdb_setsampwent(in, 0)){
|
||||
fprintf(stderr, "Can't sampwent!\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(!NT_STATUS_IS_OK(pdb_init_sam(&user))){
|
||||
if (!NT_STATUS_IS_OK(pdb_init_sam(&user))){
|
||||
fprintf(stderr, "Can't initialize new SAM_ACCOUNT!\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
while(in->pdb_getsampwent(in,user)){
|
||||
while (in->pdb_getsampwent(in,user)){
|
||||
context->pdb_add_sam_account(context,user);
|
||||
if(!NT_STATUS_IS_OK(pdb_reset_sam(user))){
|
||||
if (!NT_STATUS_IS_OK(pdb_reset_sam(user))){
|
||||
fprintf(stderr, "Can't reset SAM_ACCOUNT!\n");
|
||||
return 1;
|
||||
}
|
||||
@ -411,7 +411,7 @@ int main (int argc, char **argv)
|
||||
static char *logon_script = NULL;
|
||||
static char *profile_path = NULL;
|
||||
static char *config_file = dyn_CONFIGFILE;
|
||||
static int new_debuglevel = -1;
|
||||
static char *new_debuglevel = NULL;
|
||||
|
||||
struct pdb_context *in;
|
||||
poptContext pc;
|
||||
@ -431,22 +431,21 @@ int main (int argc, char **argv)
|
||||
{"delete", 'x',POPT_ARG_VAL,&delete_user,1,"delete user",NULL},
|
||||
{"import", 'i',POPT_ARG_STRING,&backend_in,0,"use different passdb backend",NULL},
|
||||
{"export", 'e',POPT_ARG_STRING,&backend_out,0,"export user accounts to backend", NULL},
|
||||
{"debuglevel",'D', POPT_ARG_INT, &new_debuglevel,0,"set debuglevel",NULL},
|
||||
{"debuglevel",'D', POPT_ARG_STRING, &new_debuglevel,0,"set debuglevel",NULL},
|
||||
{"configfile",'c',POPT_ARG_STRING, &config_file,0,"use different configuration file",NULL},
|
||||
{0,0,0,0}
|
||||
};
|
||||
|
||||
DEBUGLEVEL = 1;
|
||||
setup_logging("pdbedit", True);
|
||||
AllowDebugChange = False;
|
||||
|
||||
pc = poptGetContext(NULL, argc, (const char **) argv, long_options,
|
||||
POPT_CONTEXT_KEEP_FIRST);
|
||||
|
||||
while((opt = poptGetNextOpt(pc)) != -1);
|
||||
|
||||
if (new_debuglevel != -1) {
|
||||
DEBUGLEVEL = new_debuglevel;
|
||||
if (new_debuglevel){
|
||||
debug_parse_levels(new_debuglevel);
|
||||
AllowDebugChange = False;
|
||||
}
|
||||
|
||||
if (!lp_load(config_file,True,False,False)) {
|
||||
@ -455,6 +454,7 @@ int main (int argc, char **argv)
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
if (!backend_in) {
|
||||
backend_in = lp_passdb_backend();
|
||||
}
|
||||
@ -467,7 +467,7 @@ int main (int argc, char **argv)
|
||||
}
|
||||
|
||||
|
||||
if(!NT_STATUS_IS_OK(make_pdb_context_name(&in, backend_in))){
|
||||
if (!NT_STATUS_IS_OK(make_pdb_context_name(&in, backend_in))){
|
||||
fprintf(stderr, "Can't initialize %s.\n", backend_in);
|
||||
return 1;
|
||||
}
|
||||
|
@ -546,7 +546,7 @@ static int traverse_sessionid(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf, vo
|
||||
{
|
||||
int c;
|
||||
static int profile_only = 0;
|
||||
static int new_debuglevel = -1;
|
||||
static char *new_debuglevel = NULL;
|
||||
TDB_CONTEXT *tdb;
|
||||
poptContext pc;
|
||||
struct poptOption long_options[] = {
|
||||
@ -559,7 +559,7 @@ static int traverse_sessionid(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf, vo
|
||||
{"brief", 'b', POPT_ARG_NONE, &brief},
|
||||
{"profile", 'P', POPT_ARG_NONE, &profile_only},
|
||||
{"byterange", 'B', POPT_ARG_NONE, &show_brl},
|
||||
{"debug", 'd', POPT_ARG_INT, &new_debuglevel},
|
||||
{"debug", 'd', POPT_ARG_STRING, &new_debuglevel},
|
||||
{ 0, 0, 0, 0}
|
||||
};
|
||||
|
||||
@ -597,8 +597,8 @@ static int traverse_sessionid(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf, vo
|
||||
return (-1);
|
||||
}
|
||||
|
||||
if (new_debuglevel != -1) {
|
||||
DEBUGLEVEL = new_debuglevel;
|
||||
if (new_debuglevel) {
|
||||
debug_parse_levels(new_debuglevel);
|
||||
}
|
||||
|
||||
if (verbose) {
|
||||
|
Loading…
Reference in New Issue
Block a user