36 TSecContext *TRootAuth::Authenticate(TSocket *s,
const char *host,
37 const char *user, Option_t *opts)
42 Int_t rproto = s->GetRemoteProtocol() % 1000;
43 if (s->GetServType() == (Int_t)TSocket::kROOTD) {
44 if (rproto > 6 && rproto < 10) {
46 s->Send(Form(
"%d", TSocket::GetClientProtocol()), kROOTD_PROTOCOL2);
48 if (s->Recv(rproto, kind) < 0) {
49 Error(
"Authenticate",
"receiving remote protocol");
52 s->SetRemoteProtocol(rproto);
56 Bool_t isPROOF = (s->GetServType() == (Int_t)TSocket::kPROOFD);
57 Bool_t isPROOFserv = (opts[0] ==
'P') ? kTRUE : kFALSE;
60 TString proto = TUrl(s->GetUrl()).GetProtocol();
63 }
else if (proto.Contains(
"sockd") || proto.Contains(
"rootd") ||
64 proto.Contains(
"proofd")) {
65 proto.ReplaceAll(
"d",1,
"",0);
67 proto += Form(
":%d",rproto);
71 new TAuthenticate(s, host, proto, user);
74 if (!auth->Authenticate()) {
76 if (auth->HasTimedOut() > 0)
78 "timeout expired for %s@%s", auth->GetUser(), host);
81 "authentication failed for %s@%s", auth->GetUser(), host);
84 s->Send(Form(
"%d %s", gSystem->GetPid(), host), kROOTD_CLEANUP);
89 ctx = auth->GetSecContext();
90 s->SetSecContext(ctx);
97 if (rc && isPROOF && rproto > 11) {
98 Bool_t client = !isPROOFserv;
99 if (TAuthenticate::ProofAuthSetup(s, client) !=0 ) {
100 Error(
"Authenticate",
"PROOF: failed to finalize setup");
111 Int_t TRootAuth::ClientVersion()
113 return TSocket::GetClientProtocol();
119 void TRootAuth::ErrorMsg(
const char *where, Int_t ecode)
121 TAuthenticate::AuthError(where, ecode);