Source Code (Use browser search to find items of interest.)
Class Index
kioslave'MyCallback (./kdebase/kioslave/smb/smb.cc:32)
class MyCallback : public SmbAnswerCallback
{
protected:
SmbProtocol *proto;
// we keep this info so that no password
// is asked to user when accessing subdirs
char *user, *pass, *service;
QString message;
bool havePass;
bool haveServicePass;
public:
MyCallback(SmbProtocol *p) : proto(p),
user(0), pass(0), service(0),
havePass(false), haveServicePass(false) {}
~MyCallback() {
if (user) {delete user; user = 0;}
if (pass) {delete pass; pass = 0;}
if (service) {delete service; service = 0;}
}
char *getAnswer(int type, const char *optmessage) {
bool res = true;
QString myUser, myPass;
switch (type) {
case ANSWER_USER_NAME:
message = "Login for host ";
message += optmessage;
myUser = user?user:"";
myPass = "";
res = proto->openPassDlg(message, myUser, myPass);
kDebugInfo( 7106, "CallBack: res=%s", res?debugString("true"):debugString("false"));
if (!res) {
if (user) {delete user; user = 0;}
if (pass) {delete pass; pass = 0;}
havePass=false;
} else {
if (user) delete user;
user=new char[myUser.local8Bit().length()+1];
strcpy(user,myUser.local8Bit().data());
if (pass) delete pass;
pass=new char[myPass.local8Bit().length()+1];
strcpy(pass,myPass.local8Bit().data());
kDebugInfo( 7106, "CallBack: user=%s, pass=%s", debugString(user), debugString(pass));
havePass=true;
}
return user;
case ANSWER_USER_PASSWORD:
if (havePass) return pass;
message = "Password for user ";
message += optmessage;
myUser = optmessage;
myPass = "";
res = proto->openPassDlg(message, myUser, myPass);
kDebugInfo( 7106, "CallBack: res=%s", res?debugString("true"):debugString("false"));
if (!res) {
if (user) {delete user; user = 0;}
if (pass) {delete pass; pass = 0;}
havePass=false;
} else {
if (user) delete user;
user=new char[myUser.local8Bit().length()+1];
strcpy(user,myUser.local8Bit().data());
if (pass) delete pass;
pass=new char[myPass.local8Bit().length()+1];
strcpy(pass,myPass.local8Bit().data());
kDebugInfo( 7106, "CallBack: user=%s, pass=%s", debugString(user), debugString(pass));
havePass=true;
}
return pass;
case ANSWER_SERVICE_PASSWORD:
if (haveServicePass && !strcmp(service, optmessage))
return pass; // we have it already
message = "Password for service ";
message += optmessage;
message += " (user ignored)";
myUser = user?user:"";
myPass = "";
res = proto->openPassDlg(message, myUser, myPass);
kDebugInfo( 7106, "CallBack: res=%s", res?debugString("true"):debugString("false"));
kDebugInfo( 7106, "CallBack: user=%s, pass=%s", debugString(user), debugString(pass));
if (!res) {
if (service) {delete service; service = 0;}
if (pass) {delete pass; pass = 0;}
haveServicePass=false;
} else {
if (service) delete service;
service=new char[strlen(optmessage)+1];
strcpy(service,optmessage);
if (pass) delete pass;
pass=new char[myPass.local8Bit().length()+1];
strcpy(pass,myPass.local8Bit().data());
kDebugInfo( 7106, "CallBack: service=%s, pass=%s", debugString(service), debugString(pass));
haveServicePass=true;
}
return pass;
}
return 0; //???
}
};
kioslave'MyCallback::getAnswer() (./kdebase/kioslave/smb/smb.cc:52)
char *getAnswer(int type, const char *optmessage) {
bool res = true;
QString myUser, myPass;
switch (type) {
case ANSWER_USER_NAME:
message = "Login for host ";
message += optmessage;
myUser = user?user:"";
myPass = "";
res = proto->openPassDlg(message, myUser, myPass);
kDebugInfo( 7106, "CallBack: res=%s", res?debugString("true"):debugString("false"));
if (!res) {
if (user) {delete user; user = 0;}
if (pass) {delete pass; pass = 0;}
havePass=false;
} else {
if (user) delete user;
user=new char[myUser.local8Bit().length()+1];
strcpy(user,myUser.local8Bit().data());
if (pass) delete pass;
pass=new char[myPass.local8Bit().length()+1];
strcpy(pass,myPass.local8Bit().data());
kDebugInfo( 7106, "CallBack: user=%s, pass=%s", debugString(user), debugString(pass));
havePass=true;
}
return user;
case ANSWER_USER_PASSWORD:
if (havePass) return pass;
message = "Password for user ";
message += optmessage;
myUser = optmessage;
myPass = "";
res = proto->openPassDlg(message, myUser, myPass);
kDebugInfo( 7106, "CallBack: res=%s", res?debugString("true"):debugString("false"));
if (!res) {
if (user) {delete user; user = 0;}
if (pass) {delete pass; pass = 0;}
havePass=false;
} else {
if (user) delete user;
user=new char[myUser.local8Bit().length()+1];
strcpy(user,myUser.local8Bit().data());
if (pass) delete pass;
pass=new char[myPass.local8Bit().length()+1];
strcpy(pass,myPass.local8Bit().data());
kDebugInfo( 7106, "CallBack: user=%s, pass=%s", debugString(user), debugString(pass));
havePass=true;
}
return pass;
case ANSWER_SERVICE_PASSWORD:
if (haveServicePass && !strcmp(service, optmessage))
return pass; // we have it already
message = "Password for service ";
message += optmessage;
message += " (user ignored)";
myUser = user?user:"";
myPass = "";
res = proto->openPassDlg(message, myUser, myPass);
kDebugInfo( 7106, "CallBack: res=%s", res?debugString("true"):debugString("false"));
kDebugInfo( 7106, "CallBack: user=%s, pass=%s", debugString(user), debugString(pass));
if (!res) {
if (service) {delete service; service = 0;}
if (pass) {delete pass; pass = 0;}
haveServicePass=false;
} else {
if (service) delete service;
service=new char[strlen(optmessage)+1];
strcpy(service,optmessage);
if (pass) delete pass;
pass=new char[myPass.local8Bit().length()+1];
strcpy(pass,myPass.local8Bit().data());
kDebugInfo( 7106, "CallBack: service=%s, pass=%s", debugString(service), debugString(pass));
haveServicePass=true;
}
return pass;
}
return 0; //???
}
};