aboutsummaryrefslogtreecommitdiff
path: root/net/krdc-kde4
diff options
context:
space:
mode:
authorTobias C. Berner <tcberner@FreeBSD.org>2018-02-22 19:03:17 +0000
committerTobias C. Berner <tcberner@FreeBSD.org>2018-02-22 19:03:17 +0000
commita4a7daf069cba3ae4b90d832aa9df7624b4626a3 (patch)
tree3aad51132f546ad79059b32784badc3f6a42c8ff /net/krdc-kde4
parent7ff2d6435675b95623ce40a15abfc2c3f3ef4a74 (diff)
downloadports-a4a7daf069cba3ae4b90d832aa9df7624b4626a3.tar.gz
ports-a4a7daf069cba3ae4b90d832aa9df7624b4626a3.zip
Notes
Diffstat (limited to 'net/krdc-kde4')
-rw-r--r--net/krdc-kde4/Makefile23
-rw-r--r--net/krdc-kde4/distinfo2
-rw-r--r--net/krdc-kde4/files/patch-git8436cc62317
-rw-r--r--net/krdc-kde4/pkg-descr5
-rw-r--r--net/krdc-kde4/pkg-plist45
5 files changed, 392 insertions, 0 deletions
diff --git a/net/krdc-kde4/Makefile b/net/krdc-kde4/Makefile
new file mode 100644
index 000000000000..f3ef0f6507e0
--- /dev/null
+++ b/net/krdc-kde4/Makefile
@@ -0,0 +1,23 @@
+# $FreeBSD$
+
+PORTNAME= krdc
+PORTVERSION= ${KDE4_VERSION}
+PORTREVISION= 6
+CATEGORIES= net kde kde-kde4
+
+MAINTAINER= kde@FreeBSD.org
+COMMENT= RDP and VNC client for KDE
+
+LIB_DEPENDS= libvncserver.so:net/libvncserver \
+ libtelepathy-qt4.so:net-im/telepathy-qt4
+
+USES= cmake:outsource kde:4 tar:xz
+USE_KDE= kdelibs automoc4
+USE_QT4= moc_build qmake_build rcc_build uic_build
+USE_LDCONFIG= yes
+
+OPTIONS_DEFINE= FREERDP
+FREERDP_DESC= Remote Desktop support via FreeRDP
+FREERDP_RUN_DEPENDS= xfreerdp:net/freerdp
+
+.include <bsd.port.mk>
diff --git a/net/krdc-kde4/distinfo b/net/krdc-kde4/distinfo
new file mode 100644
index 000000000000..63df5b10eff4
--- /dev/null
+++ b/net/krdc-kde4/distinfo
@@ -0,0 +1,2 @@
+SHA256 (KDE/4.14.3/krdc-4.14.3.tar.xz) = 86dbd710db5f64f59d9879e1630e13821f10a779c8cb194eb6b627f8d03fe61e
+SIZE (KDE/4.14.3/krdc-4.14.3.tar.xz) = 398048
diff --git a/net/krdc-kde4/files/patch-git8436cc62 b/net/krdc-kde4/files/patch-git8436cc62
new file mode 100644
index 000000000000..d568be962d4a
--- /dev/null
+++ b/net/krdc-kde4/files/patch-git8436cc62
@@ -0,0 +1,317 @@
+--- rdp/rdpview.cpp
++++ rdp/rdpview.cpp
+@@ -146,102 +146,205 @@ bool RdpView::start()
+ }
+ }
+
++ // Check the version of FreeRDP so we can use pre-1.1 switches if needed
++ QProcess *xfreeRDPVersionCheck = new QProcess(this);
++ xfreeRDPVersionCheck->start("xfreerdp", QStringList("--version"));
++ xfreeRDPVersionCheck->waitForFinished();
++ QString versionOutput = xfreeRDPVersionCheck->readAllStandardOutput();
++ xfreeRDPVersionCheck->deleteLater();
++
+ m_process = new QProcess(m_container);
+
+ QStringList arguments;
+
+- int width, height;
+- if (m_hostPreferences->width() > 0) {
+- width = m_hostPreferences->width();
+- height = m_hostPreferences->height();
+- } else {
+- width = this->parentWidget()->size().width();
+- height = this->parentWidget()->size().height();
+- }
+- arguments << "-g" << QString::number(width) + 'x' + QString::number(height);
+-
+- arguments << "-k" << keymapToXfreerdp(m_hostPreferences->keyboardLayout());
++ if (versionOutput.contains(QLatin1String(" 1.0"))) {
++ kDebug(5012) << "Use FreeRDP 1.0 compatible arguments";
+
+- if (!m_url.userName().isEmpty()) {
+- // if username contains a domain, it needs to be set with another parameter
+- if (m_url.userName().contains('\\')) {
+- const QStringList splittedName = m_url.userName().split('\\');
+- arguments << "-d" << splittedName.at(0);
+- arguments << "-u" << splittedName.at(1);
++ int width, height;
++ if (m_hostPreferences->width() > 0) {
++ width = m_hostPreferences->width();
++ height = m_hostPreferences->height();
+ } else {
+- arguments << "-u" << m_url.userName();
++ width = this->parentWidget()->size().width();
++ height = this->parentWidget()->size().height();
+ }
++ arguments << "-g" << QString::number(width) + 'x' + QString::number(height);
++
++ arguments << "-k" << keymapToXfreerdp(m_hostPreferences->keyboardLayout());
++
++ if (!m_url.userName().isEmpty()) {
++ // if username contains a domain, it needs to be set with another parameter
++ if (m_url.userName().contains('\\')) {
++ const QStringList splittedName = m_url.userName().split('\\');
++ arguments << "-d" << splittedName.at(0);
++ arguments << "-u" << splittedName.at(1);
++ } else {
++ arguments << "-u" << m_url.userName();
++ }
++ } else {
++ arguments << "-u" << "";
++ }
++
++ arguments << "-D"; // request the window has no decorations
++ arguments << "-X" << QString::number(m_container->winId());
++ arguments << "-a" << QString::number((m_hostPreferences->colorDepth() + 1) * 8);
++
++ switch (m_hostPreferences->sound()) {
++ case 1:
++ arguments << "-o";
++ break;
++ case 0:
++ arguments << "--plugin" << "rdpsnd";
++ break;
++ case 2:
++ default:
++ break;
++ }
++
++ if (!m_hostPreferences->shareMedia().isEmpty()) {
++ QStringList shareMedia;
++ shareMedia << "--plugin" << "rdpdr" << "--data" << "disk:media:" + m_hostPreferences->shareMedia() << "--";
++ arguments += shareMedia;
++ }
++
++ QString performance;
++ switch (m_hostPreferences->performance()) {
++ case 0:
++ performance = 'm';
++ break;
++ case 1:
++ performance = 'b';
++ break;
++ case 2:
++ performance = 'l';
++ break;
++ default:
++ break;
++ }
++
++ arguments << "-x" << performance;
++
++ if (m_hostPreferences->console()) {
++ arguments << "-0";
++ }
++
++ if (m_hostPreferences->remoteFX()) {
++ arguments << "--rfx";
++ }
++
++ if (!m_hostPreferences->extraOptions().isEmpty()) {
++ const QStringList additionalArguments = KShell::splitArgs(m_hostPreferences->extraOptions());
++ arguments += additionalArguments;
++ }
++
++ // krdc has no support for certificate management yet; it would not be possbile to connect to any host:
++ // "The host key for example.com has changed" ...
++ // "Add correct host key in ~/.freerdp/known_hosts to get rid of this message."
++ arguments << "--ignore-certificate";
++
++ // clipboard sharing is activated in KRDC; user can disable it at runtime
++ arguments << "--plugin" << "cliprdr";
++
++ arguments << "-t" << QString::number(m_port);
++ arguments << m_host;
++
++ kDebug(5012) << "Starting xfreerdp with arguments: " << arguments.join(" ");
++
++ arguments.removeLast(); // host must be last, remove and re-add it after the password
++ if (!m_url.password().isNull())
++ arguments << "-p" << m_url.password();
++ arguments << m_host;
++
+ } else {
+- arguments << "-u" << "";
+- }
++ kDebug(5012) << "Use FreeRDP 1.1+ compatible arguments";
+
+- if (!m_url.password().isNull())
+- arguments << "-p" << m_url.password();
+-
+- arguments << "-D"; // request the window has no decorations
+- arguments << "-X" << QString::number(m_container->winId());
+- arguments << "-a" << QString::number((m_hostPreferences->colorDepth() + 1) * 8);
+-
+- switch (m_hostPreferences->sound()) {
+- case 1:
+- arguments << "-o";
+- break;
+- case 0:
+- arguments << "--plugin" << "rdpsnd";
+- break;
+- case 2:
+- default:
+- break;
+- }
++ int width, height;
++ if (m_hostPreferences->width() > 0) {
++ width = m_hostPreferences->width();
++ height = m_hostPreferences->height();
++ } else {
++ width = this->parentWidget()->size().width();
++ height = this->parentWidget()->size().height();
++ }
++ arguments << "-decorations";
++ arguments << "/w:" + QString::number(width);
++ arguments << "/h:" + QString::number(height);
++
++ arguments << "/kbd:" + keymapToXfreerdp(m_hostPreferences->keyboardLayout());
++
++ if (!m_url.userName().isEmpty()) {
++ // if username contains a domain, it needs to be set with another parameter
++ if (m_url.userName().contains('\\')) {
++ const QStringList splittedName = m_url.userName().split('\\');
++ arguments << "/d:" + splittedName.at(0);
++ arguments << "/u:" + splittedName.at(1);
++ } else {
++ arguments << "/u:" + m_url.userName();
++ }
++ } else {
++ arguments << "/u:";
++ }
+
+- if (!m_hostPreferences->shareMedia().isEmpty()) {
+- QStringList shareMedia;
+- shareMedia << "--plugin" << "rdpdr" << "--data" << "disk:media:" + m_hostPreferences->shareMedia() << "--";
+- arguments += shareMedia;
+- }
++ arguments << "/parent-window:" + QString::number(m_container->winId());
++ arguments << "/bpp:" + QString::number((m_hostPreferences->colorDepth() + 1) * 8);
++ arguments << "/audio-mode:" + QString::number(m_hostPreferences->sound());
+
+- QString performance;
+- switch (m_hostPreferences->performance()) {
+- case 0:
+- performance = 'm';
+- break;
+- case 1:
+- performance = 'b';
+- break;
+- case 2:
+- performance = 'l';
+- break;
+- default:
+- break;
+- }
++ if (!m_hostPreferences->shareMedia().isEmpty()) {
++ QStringList shareMedia;
++ shareMedia << "/drive:media," + m_hostPreferences->shareMedia();
++ arguments += shareMedia;
++ }
+
+- arguments << "-x" << performance;
++ QString performance;
++ switch (m_hostPreferences->performance()) {
++ case 0:
++ performance = "modem";
++ break;
++ case 1:
++ performance = "broadband";
++ break;
++ case 2:
++ performance = "lan";
++ break;
++ default:
++ break;
++ }
+
+- if (m_hostPreferences->console()) {
+- arguments << "-0";
+- }
++ arguments << "/network:" + performance;
+
+- if (m_hostPreferences->remoteFX()) {
+- arguments << "--rfx";
+- }
++ if (m_hostPreferences->console()) {
++ arguments << "/admin";
++ }
+
+- if (!m_hostPreferences->extraOptions().isEmpty()) {
+- const QStringList additionalArguments = KShell::splitArgs(m_hostPreferences->extraOptions());
+- arguments += additionalArguments;
+- }
++ if (m_hostPreferences->remoteFX()) {
++ arguments << "/rfx";
++ }
++
++ if (!m_hostPreferences->extraOptions().isEmpty()) {
++ const QStringList additionalArguments = KShell::splitArgs(m_hostPreferences->extraOptions());
++ arguments += additionalArguments;
++ }
++
++ // krdc has no support for certificate management yet; it would not be possbile to connect to any host:
++ // "The host key for example.com has changed" ...
++ // "Add correct host key in ~/.freerdp/known_hosts to get rid of this message."
++ arguments << "/cert-ignore";
++
++ // clipboard sharing is activated in KRDC; user can disable it at runtime
++ arguments << "+clipboard";
+
+- // krdc has no support for certificate management yet; it would not be possbile to connect to any host:
+- // "The host key for example.com has changed" ...
+- // "Add correct host key in ~/.freerdp/known_hosts to get rid of this message."
+- arguments << "--ignore-certificate";
++ arguments << "/port:" + QString::number(m_port);
++ arguments << "/v:" + m_host;
+
+- // clipboard sharing is activated in KRDC; user can disable it at runtime
+- arguments << "--plugin" << "cliprdr";
++ kDebug(5012) << "Starting xfreerdp with arguments: " << arguments.join(" ");
+
+- arguments << "-t" << QString::number(m_port);
+- arguments << m_host;
++ //avoid printing the password in debug
++ if (!m_url.password().isNull()) {
++ arguments << "/p:" + m_url.password();
++ }
++ kDebug(5012) << "Starting xfreerdp with arguments: " << arguments.join(" ");
+
+- kDebug(5012) << "Starting xfreerdp with arguments:" << arguments;
++ }
+
+ setStatus(Connecting);
+
+@@ -302,7 +405,7 @@ void RdpView::connectionError()
+
+ void RdpView::processError(QProcess::ProcessError error)
+ {
+- kDebug(5012) << "processError:" << error;
++ kDebug(5012) << error;
+ if (m_quitFlag) // do not try to show error messages while quitting (prevent crashes)
+ return;
+
+@@ -319,11 +422,11 @@ void RdpView::processError(QProcess::ProcessError error)
+ void RdpView::receivedStandardError()
+ {
+ const QString output(m_process->readAllStandardError());
+- kDebug(5012) << "receivedStandardError:" << output;
++ kDebug(5012) << output;
+ QString line;
+ int i = 0;
+ while (!(line = output.section('\n', i, i)).isEmpty()) {
+-
++
+ // the following error is issued by freerdp because of a bug in freerdp 1.0.1 and below;
+ // see: https://github.com/FreeRDP/FreeRDP/pull/576
+ //"X Error of failed request: BadWindow (invalid Window parameter)
+@@ -345,7 +448,7 @@ void RdpView::receivedStandardError()
+ void RdpView::receivedStandardOutput()
+ {
+ const QString output(m_process->readAllStandardOutput());
+- kDebug(5012) << "receivedStandardOutput:" << output;
++ kDebug(5012) << output;
+ QString line;
+ int i = 0;
+ while (!(line = output.section('\n', i, i)).isEmpty()) {
diff --git a/net/krdc-kde4/pkg-descr b/net/krdc-kde4/pkg-descr
new file mode 100644
index 000000000000..360d78fcf4c1
--- /dev/null
+++ b/net/krdc-kde4/pkg-descr
@@ -0,0 +1,5 @@
+KRDC is a client application that allows you to view or even control
+the desktop session on another machine that is running a compatible
+server. VNC and RDP is supported.
+
+WWW: http://kde.org/applications/internet/krdc/
diff --git a/net/krdc-kde4/pkg-plist b/net/krdc-kde4/pkg-plist
new file mode 100644
index 000000000000..9a06ab48eadf
--- /dev/null
+++ b/net/krdc-kde4/pkg-plist
@@ -0,0 +1,45 @@
+bin/krdc
+bin/krdc_rfb_approver
+include/kde4/krdc/hostpreferences.h
+include/kde4/krdc/remoteview.h
+include/kde4/krdc/remoteviewfactory.h
+lib/kde4/kcm_krdc_rdpplugin.so
+lib/kde4/kcm_krdc_vncplugin.so
+lib/kde4/krdc_rdpplugin.so
+lib/kde4/krdc_testplugin.so
+lib/kde4/krdc_vncplugin.so
+lib/libkrdccore.so
+lib/libkrdccore.so.4
+lib/libkrdccore.so.%%KDE4_GENERIC_LIB_VERSION%%
+share/applications/kde4/krdc.desktop
+share/apps/krdc/krdcui.rc
+share/apps/krdc/pics/pointcursor.png
+share/apps/krdc/pics/pointcursormask.png
+share/apps/krdc_rfb_approver/krdc_rfb_approver.notifyrc
+share/config.kcfg/krdc.kcfg
+share/dbus-1/services/org.freedesktop.Telepathy.Client.krdc_rfb_approver.service
+share/dbus-1/services/org.freedesktop.Telepathy.Client.krdc_rfb_handler.service
+share/doc/HTML/en/krdc/address_input.png
+share/doc/HTML/en/krdc/bookmarks_menu.png
+share/doc/HTML/en/krdc/common
+share/doc/HTML/en/krdc/general_preferences.png
+share/doc/HTML/en/krdc/index.cache.bz2
+share/doc/HTML/en/krdc/index.docbook
+share/doc/HTML/en/krdc/krdc_mainwindow.png
+share/doc/HTML/en/krdc/password_entry.png
+share/doc/HTML/en/krdc/rdp_preferences.png
+share/doc/HTML/en/krdc/view-fullscreen.png
+share/doc/HTML/en/krdc/view-restore.png
+share/doc/HTML/en/krdc/vnc_host_configuration.png
+share/doc/HTML/en/krdc/vnc_preferences.png
+share/kde4/services/ServiceMenus/smb2rdc.desktop
+share/kde4/services/krdc_rdp.desktop
+share/kde4/services/krdc_rdp_config.desktop
+share/kde4/services/krdc_test.desktop
+share/kde4/services/krdc_vnc.desktop
+share/kde4/services/krdc_vnc_config.desktop
+share/kde4/services/rdp.protocol
+share/kde4/services/vnc.protocol
+share/kde4/servicetypes/krdc_plugin.desktop
+share/telepathy/clients/krdc_rfb_approver.client
+share/telepathy/clients/krdc_rfb_handler.client