kio
ktelnetservice.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include <kapplication.h>
00025 #include <kmessagebox.h>
00026 #include <kcmdlineargs.h>
00027 #include <kdebug.h>
00028 #include <klocale.h>
00029 #include <kprocess.h>
00030 #include <ksimpleconfig.h>
00031
00032 static const KCmdLineOptions options[] =
00033 {
00034 {"+url", 0, 0},
00035 KCmdLineLastOption
00036 };
00037
00038 int main(int argc, char **argv)
00039 {
00040 KLocale::setMainCatalogue("kdelibs");
00041 KCmdLineArgs::init(argc, argv, "ktelnetservice", I18N_NOOP("telnet service"),
00042 I18N_NOOP("telnet protocol handler"), "unknown");
00043 KCmdLineArgs::addCmdLineOptions(options);
00044
00045 KApplication app;
00046
00047 KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
00048
00049 if (args->count() != 1)
00050 return 1;
00051
00052 KConfig *config = new KConfig("kdeglobals", true);
00053 config->setGroup("General");
00054 QString terminal = config->readPathEntry("TerminalApplication", "konsole");
00055
00056 KURL url(args->arg(0));
00057 QStringList cmd;
00058 if (terminal == "konsole")
00059 cmd << "--noclose";
00060
00061 cmd << "-e";
00062 if ( url.protocol() == "telnet" )
00063 cmd << "telnet";
00064 else if ( url.protocol() == "ssh" )
00065 cmd << "ssh";
00066 else if ( url.protocol() == "rlogin" )
00067 cmd << "rlogin";
00068 else {
00069 kdError() << "Invalid protocol " << url.protocol() << endl;
00070 return 2;
00071 }
00072
00073 if (!app.authorize("shell_access"))
00074 {
00075 KMessageBox::sorry(0,
00076 i18n("You do not have permission to access the %1 protocol.").arg(url.protocol()));
00077 return 3;
00078 }
00079
00080 if (!url.user().isEmpty())
00081 {
00082 cmd << "-l";
00083 cmd << url.user();
00084 }
00085
00086 QString host;
00087 if (!url.host().isEmpty())
00088 host = url.host();
00089 else if (!url.path().isEmpty())
00090 host = url.path();
00091
00092 if (host.isEmpty() || host.startsWith("-"))
00093 {
00094 kdError() << "Invalid hostname " << host << endl;
00095 return 2;
00096 }
00097
00098 cmd << host;
00099
00100 if (url.port()){
00101 if ( url.protocol() == "ssh" )
00102 cmd << "-p" << QString::number(url.port());
00103 else
00104 cmd << QString::number(url.port());
00105 }
00106
00107 app.kdeinitExec(terminal, cmd);
00108
00109 return 0;
00110 }
00111
00112