Revision 9a9e5b4cf3f43c391212ffc2c292ca1ffdba8767 authored by Unknown Author on 08 May 2006, 14:01:31 UTC, committed by Unknown Author on 08 May 2006, 14:01:31 UTC
git-svn-id: http://root.cern.ch/svn/root/tags/v5-11-02@14953 27541ba8-7e3a-0410-8455-c3a389f83636
1 parent 28e762f
authclient.C
//--------------------------------------------------
#include "TPSocket.h"
//
// This macro should be run together with authserv.C to test
// authentication between two remote ROOT sessions.
// Run first the authserv.C within a ROOT session on the server
// machine, eg. "srv.machi.ne"; authserv accepts as argument
// the port wher it starts listening (default 3000).
// You can then run authclient.c in a ROOT session on the client
// machine:
// root[] .x tutorials.C("srv.machi.ne:3000")
//
// and you should get prompted for the credentials, if the case.
// To start a parallel socket of size, for example, 5, enter the
// size as second argument, ie
//
// root[] .x tutorials.C("srv.machi.ne:3000",5)
//
int authclient(const char *host = "up://localhost:3000", int sz = 0)
{
Int_t par = (sz > 1) ? 1 : 0;
// Parse protocol, if any
TString proto(TUrl(host).GetProtocol());
TString protosave = proto;
// Get rid of authentication suffix
TString asfx = proto;
if (proto.EndsWith("up") || proto.EndsWith("ug")) {
asfx.Remove(0,proto.Length()-2);
proto.Resize(proto.Length()-2);
} else if (proto.EndsWith("s") || proto.EndsWith("k") ||
proto.EndsWith("g") || proto.EndsWith("h")) {
asfx.Remove(0,proto.Length()-1);
proto.Resize(proto.Length()-1);
}
// Force parallel (even of size 1)
TString newurl = "p" + asfx;
newurl += "://";
if (strlen(TUrl(host).GetUser())) {
newurl += TUrl(host).GetUser();
newurl += "@";
}
newurl += TUrl(host).GetHost();
newurl += ":";
newurl += TUrl(host).GetPort();
cout << "authclient: starting a (parallel) authenticated socket at "
<< newurl.Data() << " (size: " << sz << ")" << endl;
TSocket *s = TSocket::CreateAuthSocket(newurl.Data(),sz);
// Print out;
if (s)
if (s->IsAuthenticated())
cout << "authclient: auth socket: OK" << endl;
else
cout << "authclient: auth socket: failed" << endl;
// Cleanup
if (s) {
// Remove this authentication from the token list to avoid
// later warnings
s->GetSecContext()->DeActivate("R");
delete s;
}
}
//--------------------------------------------------
Computing file changes ...