reSIProcate/repro  9694
userAdmin.cxx
Go to the documentation of this file.
00001 
00002 #include <cassert>
00003 #include <iostream>
00004 
00005 #include "repro/UserDb.hxx"
00006 #include "repro/WebAdmin.hxx"
00007 #include "rutil/Data.hxx"
00008 #include "rutil/Logger.hxx"
00009 
00010 using namespace resip;
00011 using namespace repro;
00012 using namespace std;
00013 
00014 #define RESIPROCATE_SUBSYSTEM Subsystem::REPRO
00015 
00016 
00017 void 
00018 add( char* pUsername, char* pRealm, char* pPasswd )
00019 {
00020    UserDb db;  
00021 
00022    Data fullName = Data::Empty;
00023    Data email = Data::Empty;
00024    
00025    db.addUser( Data(pUsername), 
00026                Data(pRealm), 
00027                Data(pRealm), 
00028                Data(pPasswd),
00029                fullName, 
00030                email );
00031 }
00032 
00033 
00034 void
00035 remove( char* pAor )
00036 { 
00037    UserDb db;
00038    
00039    db.removeUser( Data(pAor) );
00040 }
00041 
00042 
00043 void
00044 web(int port)
00045 {
00046    assert(0);
00047 #if 0
00048    UserDb db;
00049    
00050    WebAdmin webAdmin( db, port );
00051    
00052    while (1)
00053    {
00054       FdSet fdset; 
00055      
00056       webAdmin.buildFdSet(fdset);
00057       fdset.selectMilliSeconds( 10*1000 );
00058 
00059       webAdmin.process(fdset);
00060    }
00061 #endif
00062 }
00063 
00064 
00065 void
00066 list()
00067 {
00068    UserDb db; 
00069    
00070    Data key = db.getFirstKey();
00071    while ( !key.empty() )
00072    {
00073       Data hash = db.getUserAuthInfo(key);
00074       
00075       clog << "Key: " << key << endl;
00076       clog << "  passwordHash = " << hash << endl;
00077       
00078       key = db.getNextKey();
00079    } 
00080 }
00081 
00082 
00083 void 
00084 usage()
00085 {
00086    clog << "Command line options are" << endl
00087         << "  -list" << endl
00088         << "  -add user realm password" << endl
00089         << "  -remove aor" << endl
00090         << "  -web" << endl;
00091 }
00092 
00093 
00094 int 
00095 main(int argc, char* argv[])
00096 {
00097    Log::initialize(Log::Cerr, Log::Err, argv[0]);
00098    Log::setLevel(Log::Info);
00099 
00100    for ( int i=1; i<argc; i++ )
00101    {
00102       if ( !strcmp(argv[i],"-list" ) )
00103       {
00104          list();
00105       }
00106       if ( !strcmp(argv[i],"-web" ) )
00107       {
00108          int port=5080;
00109          web(port);
00110       }
00111       else if (!strcmp(argv[i],"-add"))
00112       {
00113          i++;
00114          assert( i<argc );
00115          char* username = argv[i];
00116 
00117          i++;
00118          assert( i<argc );
00119          char* realm = argv[i];
00120 
00121          i++;
00122          assert( i<argc );
00123          char* passwd = argv[i];
00124 
00125          add( username, realm, passwd );
00126       }  
00127       else if (!strcmp(argv[i],"-remove"))
00128       {
00129          i++;
00130          assert( i<argc );
00131          char* aor = argv[i];
00132          remove( aor );
00133       }  
00134       else
00135       {
00136          usage();
00137          exit(1);
00138       }
00139    }
00140 
00141    return 0;
00142 }