Logo ROOT  
Reference Guide
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Loading...
Searching...
No Matches
TestAuth.C File Reference

Detailed Description

Macro test authentication methods stand alone.

See $ROOTSYS/README/README.AUTH for additional details

Syntax:

.x TestAuth.C(<port>,"<user>")
<port> = rootd port (default 1094)
<user> = login user name for the test
(default from getpwuid)
char name[80]
Definition TGX11.cxx:110
Definition test.py:1

MAKE SURE that rootd is running

Example of successful output:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ +
+ TestAuth.C +
+ +
+ Test of authentication methods +
+ +
+ Syntax: +
+ +
+ .x TestAuth.C(<port>,"<user>") +
+ +
+ <port> = rootd port (default 1094) +
+ <user> = login user name for the test +
+ (default from getpwuid) +
+ +
+ >>> MAKE SURE that rootd is running <<< +
+ +
+ See $ROOTSYS/README/README.AUTH for additional details +
+ +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ +
+ Basic test parameters: +
+ +
+ Local User is : ganis
+ Authentication Details : pt:0 ru:1 us:ganis
+ Current directory is : /home/ganis/local/root/root/tutorials
+ TFTP string : root://localhost:1094
+ +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ +
+ Testing UsrPwd ... +
ganis@localhost password:
+ +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ +
+ Result of the tests: +
+ +
+ Method: 0 (UsrPwd): successful! (reuse: successful!) +
+ +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Definition TFTP.h:34
TPaveText * pt
int TestAuth(int port = 1094, char *user = "")
{
//
// This macro tests the authentication methods
//
gROOT->Reset();
// Getting debug flag
Int_t lDebug = gEnv->GetValue("Root.Debug",0);
// Useful flags
Bool_t HaveMeth[6] = {1,0,0,0,0,1};
Int_t TestMeth[6] = {0,0,0,0,0,0};
Int_t TestReUse[6] = {3,3,3,3,3,3};
// Some Printout
printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
printf("+ +\n");
printf("+ TestAuth.C +\n");
printf("+ +\n");
printf("+ Test of authentication methods +\n");
printf("+ +\n");
printf("+ Syntax: +\n");
printf("+ +\n");
printf("+ .x TestAuth.C(<port>,\"<user>\") +\n");
printf("+ +\n");
printf("+ <port> = rootd port (default 1094) +\n");
printf("+ <user> = login user name for the test +\n");
printf("+ (default from getpwuid) +\n");
printf("+ +\n");
printf("+ >>> MAKE SURE that rootd is running <<< +\n");
printf("+ +\n");
printf("+ See $ROOTSYS/README/README.AUTH for additional details +\n");
printf("+ +\n");
printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n");
// Useful variables
// User
TString User = user;
if (User == "") {
if (!u) {
printf("\n >>>> 'user' not defined: please enter a valid username:\n");
char utmp[256] = {0};
scanf("%s",utmp);
if (strlen(utmp)) {
User = utmp;
} else {
printf(">>>> no 'user' defined: return!\n");
return 1;
}
} else {
User = u->fUser;
}
}
// Host
TString Host = "localhost";
TString HostName = gSystem->HostName();
// File path string for TFTP
//TString TFTPPath = TString("root://localhost:")+ port ;
TString TFTPPath = TString("root://")+User+TString("@localhost:")+ port ;
// Details
TString Details = TString("pt:0 ru:1 us:") + User;
// Testing availabilities
char *p;
// Test parameter Printout
printf("\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
printf("+ +\n");
printf("+ Basic test parameters: +\n");
printf("+ +\n");
printf("+ Local User is : %s \n",User.Data());
printf("+ Authentication Details : %s \n",Details.Data());
printf("+ Current directory is : %s \n",gSystem->WorkingDirectory());
printf("+ TFTP string : %s \n",TFTPPath.Data());
printf("+ +\n");
printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
// Read local <RootAuthrc> now to avoid to be later superseded
if (lDebug > 0)
TFTP *t1 = 0;
// UsrPwd method
printf("+ +\n");
printf("+ Testing UsrPwd ... +\n");
// Check if by any chance locally there is already an THostAuth matching
// the one we want to use for testing
THostAuth *hasv1 = 0;
if (ha) {
// We need to save it to restore at the end
hasv1 = new THostAuth(*ha);
// We reset the existing one
ha->Reset();
// And update it with the info we want
ha->AddMethod(0,Details.Data());
} else {
// We create directly a new THostAuth
ha = new THostAuth(Host.Data(),User.Data(),0,Details.Data());
// And add object to list so that TAuthenticate has
// a chance to find it
}
// Print available host auth info
if (lDebug > 0)
ha->Print();
{
// First authentication attempt
t1 = new TFTP(TFTPPath.Data(),2);
if (t1->IsOpen()) {
TestMeth[0] = 1;
} else {
printf(" >>>>>>>>>>>>>>>> Test of UsrPwd authentication failed \n");
}}
// Try ReUse
if (TestMeth[0] == 1) {
TIter next(ha->Established());
while ((ai = (TSecContext *) next())) {
if (ai->GetMethod() == 0) {
Int_t OffSet = ai->GetOffSet();
TestReUse[0] = 0;
if (OffSet > -1) {
TestReUse[0] = 1;
}
}
}
}
// Delete t1
if (t1) delete t1;
// remove method from available list
ha->RemoveMethod(0);
printf("+ +\n");
printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
// Print available host auth info
if (lDebug > 0)
// Now restore initial configuration
if (hasv1) {
ha->Reset();
ha->Update(hasv1);
} else {
}
if (hasv2) {
hak->Reset();
hak->Update(hasv2);
} else {
}
// Final Printout
printf("\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
printf("+ +\n");
printf("+ Result of the tests: +\n");
printf("+ +\n");
char status[4][20] = {"failed!","successful!","not testable","not tested"};
int i = 0;
for( i=0; i<6; i++ ) {
if (HaveMeth[i] && TestMeth[i] < 2) {
if (i < 5) {
printf("+ Method: %d %8s: %11s (reuse: %11s) +\n",i,
status[TestMeth[i]],status[TestReUse[i]]);
} else
printf("+ Method: %d %8s: %11s +\n",i,
status[TestMeth[i]]);
}
}
Bool_t NotPrinted = kTRUE;
for( i=0; i<6; i++ ) {
if (HaveMeth[i] && TestMeth[i] > 1) {
if (NotPrinted) {
printf("+ +\n");
printf("+ Could not be tested: +\n");
printf("+ +\n");
NotPrinted = kFALSE;
}
printf("+ Method: %d %8s: %11s +\n",i,
status[TestMeth[i]]);
}
}
printf("+ +\n");
printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
}
bool Bool_t
Definition RtypesCore.h:63
int Int_t
Definition RtypesCore.h:45
constexpr Bool_t kFALSE
Definition RtypesCore.h:101
constexpr Bool_t kTRUE
Definition RtypesCore.h:100
R__EXTERN TEnv * gEnv
Definition TEnv.h:170
winID h TVirtualViewer3D TVirtualGLPainter p
#define gROOT
Definition TROOT.h:405
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
Definition TString.cxx:2467
R__EXTERN TSystem * gSystem
Definition TSystem.h:560
static void Show(Option_t *opt="S")
Print info about the authentication sector.
static Int_t ReadRootAuthrc()
Read authentication directives from $ROOTAUTHRC, $HOME/.rootauthrc or <Root_etc_dir>/system....
static TList * GetAuthInfo()
Static method returning the list with authentication details.
static const char * GetAuthMethod(Int_t idx)
Static method returning the method corresponding to idx.
static THostAuth * HasHostAuth(const char *host, const char *user, Option_t *opt="R")
Checks if a THostAuth with exact match for {host,user} exists in the fgAuthInfo list If opt = "P" use...
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
Definition TEnv.cxx:491
void Reset()
Remove all methods, leaving Active status and list of associted TSceContexts unchanged.
void AddMethod(Int_t level, const char *details=nullptr)
Add method to the list.
void Print(Option_t *option="") const override
Print object content.
void RemoveMethod(Int_t level)
Remove method 'meth' from the list, if there ...
TList * Established() const
Definition THostAuth.h:100
void Update(THostAuth *ha)
Update info with the one in ha Remaining methods, if any, get lower priority.
void Add(TObject *obj) override
Definition TList.h:81
TObject * Remove(TObject *obj) override
Remove object from the list.
Definition TList.cxx:822
Int_t GetMethod() const
Definition TSecContext.h:77
Int_t GetOffSet() const
Definition TSecContext.h:79
Basic string class.
Definition TString.h:139
const char * Data() const
Definition TString.h:380
virtual const char * HostName()
Return the system's host name.
Definition TSystem.cxx:306
virtual const char * WorkingDirectory()
Return working directory.
Definition TSystem.cxx:874
virtual UserGroup_t * GetUserInfo(Int_t uid)
Returns all user info in the UserGroup_t structure.
Definition TSystem.cxx:1602
TString fUser
Definition TSystem.h:141
auto * t1
Definition textangle.C:20
Author

Definition in file TestAuth.C.