int main(int argc, char **argv) { KLocale::setMainCatalogue("kdelibs"); KCmdLineArgs::init(argc, argv, "ktelnetservice", I18N_NOOP("telnet service"), I18N_NOOP("telnet protocol handler"), "unknown"); KCmdLineArgs::addCmdLineOptions(options); KApplication app; KCmdLineArgs *args = KCmdLineArgs::parsedArgs(); if (args->count() != 1) return 1; KConfig *config = new KConfig("kdeglobals", true); config->setGroup("General"); QString terminal = config->readPathEntry("TerminalApplication", "konsole"); KURL url(args->arg(0)); QStringList cmd; if (terminal == "konsole") cmd << "--noclose"; cmd << "-e"; if ( url.protocol() == "telnet" ) cmd << "telnet"; else if ( url.protocol() == "ssh" ) cmd << "ssh"; else if ( url.protocol() == "rlogin" ) cmd << "rlogin"; else { kdError() << "Invalid protocol " << url.protocol() << endl; return 2; } if (!app.authorize("shell_access")) { KMessageBox::sorry(0, i18n("You do not have permission to access the %1 protocol.").arg(url.protocol())); return 3; } if (!url.user().isEmpty()) { cmd << "-l"; cmd << url.user(); } QString host; if (!url.host().isEmpty()) host = url.host(); // telnet://host else if (!url.path().isEmpty()) host = url.path(); // telnet:host if (host.isEmpty() || host.startsWith("-")) { kdError() << "Invalid hostname " << host << endl; return 2; } cmd << host; if (url.port()){ if ( url.protocol() == "ssh" ) cmd << "-p" << QString::number(url.port()); else cmd << QString::number(url.port()); } app.kdeinitExec(terminal, cmd); return 0; }