diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 0854e9fa..d614f69e 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -2,53 +2,40 @@ name: Bug report about: Create a report to help us improve title: Client goes crazy when I mash the keyboard -labels: bug +labels: bug, triage assignees: '' --- ### Operating Systems ### -# README & DELETE # - ---BEGIN HELP--- +Remember: Delete the help text (between `---BEGIN HELP---` and `---END HELP---`). +Technical support: https://symless.com/contact/customer-support?help-option=GitHub + For example: -Server: exampleOS 10.13 -Client: Foobar XP +Server: niceOS 10.42 +Client: Awesome XP SP13 -Note: Please use this issue tracker only for raising bugs. - -- Feature requests: https://symless.com/forums/forum/18-feature-ideas/ -- Technical support: https://symless.com/contact/customer-support?help-option=GitHub - -It's very important that you distinguish which operating system is the client and which -is the server. The server is the computer that the mouse and keyboard are shared from. - -Remember: Delete the `# README & DELETE #` sections (including `---BEGIN HELP---` and -`---END HELP---`). +Please distinguish which operating system is the client and which is the server. The server is the computer that the mouse and keyboard are shared from. ---END HELP--- ### Synergy Version ### -# README & DELETE # - ---BEGIN HELP--- If you're not using the latest version of Synergy, please update first: https://symless.com/synergy/downloads -Please don't rely on Linux package manager versioning, they sometimes get it wrong. -If using the command line, you can use the `--version` arg to get your installed -Synergy version, like so: +Please don't rely on Linux package manager versioning, they often get it wrong. If using the command line, you can use the `--version` arg to get your installed Synergy version, like so: Synergy 1: `synergys --version` Synergy 2: `synergy-core --server --version` -If you're using the Synergy 1 config app (main Synergy app) then go to the Help -menu, and click About. In Synergy 2 Beta, the version is displayed at all times. +If you're using the Synergy 1 config app (main Synergy app) then go to the Help menu, and click About. In Synergy 2 Beta, the version is displayed at all times. ---END HELP--- @@ -56,8 +43,7 @@ menu, and click About. In Synergy 2 Beta, the version is displayed at all times. ---BEGIN HELP--- -This is the most important part. Try to remember exactly what exact steps caused -the bug. Please make sure the steps are numbered and concise, like so: +This is the most important part. Try to remember exactly what exact steps caused the bug. Please make sure the steps are numbered and concise, like so: 1. Do a little dance 2. Make a little love @@ -76,14 +62,12 @@ Before submitting, try to reproduce the bug based on the steps you provided. ---BEGIN HELP--- -Please do not paste entire logs here, it looks really silly. Instead, upload your logs, -and share the URLs to the uploaded logs. Here's how you that: +Please do not paste entire logs here, it looks really silly. Instead, upload your logs, and share the URLs to the uploaded logs. Here's how you that: Synergy 1: https://symless.com/help/s1-troubleshooting/s1-sending-logs Synergy 2: https://symless.com/help/s2-troubleshooting/s2-sending-logs -Make sure you say which log is for which computer, and also which computer is the -client and which one is the server. This helps to avoid any confusion. +Make sure you say which log is for which computer, and also which computer is the client and which one is the server. This helps to avoid any confusion. ---END HELP--- @@ -93,7 +77,7 @@ client and which one is the server. This helps to avoid any confusion. ---BEGIN HELP--- -* Attach screenshots +* Attach any screenshots * What maybe causing it? * Are there any workarounds? * What other apps are you running? diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index a2c2daad..1cec5fd6 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -2,7 +2,7 @@ name: Feature request about: Suggest an idea for this project title: Make beep sound when moving from client to server -labels: enhancement +labels: enhancement, triage assignees: '' --- diff --git a/ChangeLog b/ChangeLog index ba2df69c..046140c4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,28 @@ +v1.10.3-stable +============== + +Bug fixes: +- #6546 Filtered out self assigned ip addresses from being displayed +- #6541 Fixed connected info text to include without TLS encryption +- #6527 Config app renders incorrectly on high DPI screens +- #6526 New TLS/SSL socket handled when no socket +- #6525 Race condition on disconnecting TLS/SSL socket +- #6521 Access violation in TLS/SSL socket close +- #6409 Server freezes when clipboard contains an image +- #3705 Hotkeys not working on Mac server + +Enhancements: +- #6535 Version URL and added stage check to version check +- #6529 Cleaner redistributable use in Windows installer +- #6528 More verbose message for Linux display errors +- #6524 Minimize config app to system tray +- #6523 Restore auto hide on startup for config app +- #6522 Double click Windows tray icon to show and hide +- #6520 Support for 32-bit Linux for legacy users +- #6519 Support for Ubuntu 14.04 LTS for legacy users +- #6390 Support for OpenSSL 1.1.1 for better security + + v1.10.2-stable ============== diff --git a/README.md b/README.md index 18ead340..fd3f4d81 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,10 @@ This is the open source core component of Synergy, a keyboard and mouse sharing tool. +**[We're hiring!](https://careers.symless.com/)** *Join the Synergy Team (Node.js, React, C++)* + +**News:** [We Are Putting UX First](https://symless.com/blog/putting-ux-first) (Symless Blog) + ## Recommended Things most people will need. @@ -11,6 +15,7 @@ Things most people will need. * [Help Guides](https://symless.com/synergy-help) - Self-help guides and information for when you don't want to talk to people. * [Join us on Slack](http://bitly.com/synergy-slack) - Talk to other Synergy users in real time using instant messaging. * [Symless Forums](https://symless.com/forums/forum/11-synergy/) - Discuss Synergy issues on the Symless Forums. +* [Symless Blog](https://symless.com/blog/) - Find out what's happening with Synergy development. ## Advanced Users diff --git a/cmake/Version.cmake b/cmake/Version.cmake index a5093a0b..e4c0e35f 100644 --- a/cmake/Version.cmake +++ b/cmake/Version.cmake @@ -5,8 +5,8 @@ cmake_minimum_required (VERSION 3.4) # set (SYNERGY_VERSION_MAJOR 1) -set (SYNERGY_VERSION_MINOR 10) -set (SYNERGY_VERSION_PATCH 3) +set (SYNERGY_VERSION_MINOR 11) +set (SYNERGY_VERSION_PATCH 0) set (SYNERGY_VERSION_STAGE "snapshot") # diff --git a/src/gui/src/AboutDialog.cpp b/src/gui/src/AboutDialog.cpp index e86e707c..da6c6ba2 100644 --- a/src/gui/src/AboutDialog.cpp +++ b/src/gui/src/AboutDialog.cpp @@ -29,7 +29,6 @@ AboutDialog::AboutDialog(QWidget* parent, const QString& synergyApp) : m_versionChecker.setApp(synergyApp); QString version = m_versionChecker.getVersion(); - version = version + '-' + SYNERGY_VERSION_STAGE; #ifdef SYNERGY_REVISION version += '-'; version += SYNERGY_REVISION; diff --git a/src/gui/src/MainWindow.cpp b/src/gui/src/MainWindow.cpp index 5fdcc142..499ca99b 100644 --- a/src/gui/src/MainWindow.cpp +++ b/src/gui/src/MainWindow.cpp @@ -975,7 +975,7 @@ void MainWindow::setSynergyState(qSynergyState state) setStatus(tr("Synergy is connected (with %1)").arg(m_SecureSocketVersion)); } else { - setStatus(tr("Synergy is running (without %1)").arg(m_SecureSocketVersion)); + setStatus(tr("Synergy is running (without TLS encryption)").arg(m_SecureSocketVersion)); } break; } @@ -1034,8 +1034,10 @@ QString MainWindow::getIPAddresses() hinted = true; format = "%1, "; } - - result += format.arg(address); + //Prevent self assigned IPs being displayed + if (!address.startsWith("169.254")) { + result += format.arg(address); + } } } diff --git a/src/gui/src/VersionChecker.cpp b/src/gui/src/VersionChecker.cpp index 214f2ec5..f46968d1 100644 --- a/src/gui/src/VersionChecker.cpp +++ b/src/gui/src/VersionChecker.cpp @@ -24,8 +24,11 @@ #include #include -#define VERSION_REGEX "(\\d+\\.\\d+\\.\\d+)" -#define VERSION_URL "http://symless.com/version/" +#define VERSION_REGEX "(\\d+\\.\\d+\\.\\d+-[a-z1-9]*)" +#define VERSION_REGEX_SECTIONED "(\\d+)\\.(\\d+)\\.(\\d+)-([a-z1-9]*)" +#define VERSION_SEGMENT_COUNT 4 +#define VERSION_URL "http://version.symless.com/synergy" + VersionChecker::VersionChecker() { @@ -58,31 +61,64 @@ void VersionChecker::replyFinished(QNetworkReply* reply) } } +int VersionChecker::getStageVersion(QString stage) +{ + const int valueStable = INT_MAX; //Stable will always be considered the highest value + const int valueRC = 2; + const int valueSnapshot = 1; + const int valueOther = 0; + + //Stable should always be considered highest, followed by rc[0-9] then snapshots with everything else at the end + //HACK There is probably a much better way of doing this + if (stage == "stable") + { + return valueStable; + } + else if (stage.startsWith("rc") || stage.startsWith("RC")) + { + QRegExp rx("\\d*", Qt::CaseInsensitive); + if (rx.indexIn(stage) != -1) + { + //Return the RC value plus the RC version as in int + return valueRC + rx.cap(1).toInt(); + } + } + else if (stage == "snapshot") + { + return valueSnapshot; + } + + return valueOther; +} + int VersionChecker::compareVersions(const QString& left, const QString& right) { if (left.compare(right) == 0) return 0; // versions are same. - QStringList leftSplit = left.split(QRegExp("\\.")); - if (leftSplit.size() != 3) + QStringList leftSplit = left.split(QRegExp("[\\.-]")); + if (leftSplit.size() != VERSION_SEGMENT_COUNT) return 1; // assume right wins. - QStringList rightSplit = right.split(QRegExp("\\.")); - if (rightSplit.size() != 3) + QStringList rightSplit = right.split(QRegExp("[\\.-]")); + if (rightSplit.size() != VERSION_SEGMENT_COUNT) return -1; // assume left wins. - int leftMajor = leftSplit.at(0).toInt(); - int leftMinor = leftSplit.at(1).toInt(); - int leftRev = leftSplit.at(2).toInt(); + const int leftMajor = leftSplit.at(0).toInt(); + const int leftMinor = leftSplit.at(1).toInt(); + const int leftRev = leftSplit.at(2).toInt(); + const int leftStage = getStageVersion(leftSplit.at(3)); - int rightMajor = rightSplit.at(0).toInt(); - int rightMinor = rightSplit.at(1).toInt(); - int rightRev = rightSplit.at(2).toInt(); + const int rightMajor = rightSplit.at(0).toInt(); + const int rightMinor = rightSplit.at(1).toInt(); + const int rightRev = rightSplit.at(2).toInt(); + const int rightStage = getStageVersion(rightSplit.at(3)); - bool rightWins = - (rightMajor > leftMajor) || + const bool rightWins = + ( rightMajor > leftMajor) || ((rightMajor >= leftMajor) && (rightMinor > leftMinor)) || - ((rightMajor >= leftMajor) && (rightMinor >= leftMinor) && (rightRev > leftRev)); + ((rightMajor >= leftMajor) && (rightMinor >= leftMinor) && (rightRev > leftRev)) || + ((rightMajor >= leftMajor) && (rightMinor >= leftMinor) && (rightRev >= leftRev) && (rightStage > leftStage)); return rightWins ? 1 : -1; } @@ -95,7 +131,7 @@ QString VersionChecker::getVersion() process.setReadChannel(QProcess::StandardOutput); if (process.waitForStarted() && process.waitForFinished()) { - QRegExp rx(VERSION_REGEX); + QRegExp rx(VERSION_REGEX,Qt::CaseInsensitive); QString text = process.readLine(); if (rx.indexIn(text) != -1) { diff --git a/src/gui/src/VersionChecker.h b/src/gui/src/VersionChecker.h index 9f49cc37..2048d3d8 100644 --- a/src/gui/src/VersionChecker.h +++ b/src/gui/src/VersionChecker.h @@ -1,6 +1,6 @@ /* * synergy -- mouse and keyboard sharing utility - * Copyright (C) 2012-2016 Symless Ltd. + * Copyright (C) 2012-2019 Symless Ltd. * Copyright (C) 2012 Nick Bolton * * This package is free software; you can redistribute it and/or @@ -41,4 +41,11 @@ signals: private: QNetworkAccessManager* m_manager; QString m_app; + + /** + * \brief Converts a string stage to a integer value + * \param stage The string containing the stage version + * \return An integer representation of the stage, the higher the number the more recent the version + */ + int getStageVersion(QString stage); }; diff --git a/src/lib/common/Version.cpp b/src/lib/common/Version.cpp index d6449067..442c05b8 100644 --- a/src/lib/common/Version.cpp +++ b/src/lib/common/Version.cpp @@ -19,10 +19,10 @@ #include "common/Version.h" const char* kApplication = "Synergy"; -const char* kCopyright = "Copyright (C) 2012-2016 Symless Ltd.\n" +const char* kCopyright = "Copyright (C) 2012-2019 Symless Ltd.\n" "Copyright (C) 2008-2014 Nick Bolton\n" "Copyright (C) 2002-2014 Chris Schoeneman"; const char* kContact = "Email: engineering@symless.com"; const char* kWebsite = "https://symless.com/"; -const char* kVersion = SYNERGY_VERSION; +const char* kVersion = SYNERGY_VERSION_STRING; const char* kAppVersion = "Synergy " SYNERGY_VERSION;