Logo ROOT  
Reference Guide
 
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.