This repository has been archived by the owner. It is now read-only.
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also .

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also .
Choose a Base Repository
brahma-dev/synergy-stable-builds
symless/synergy-core
Albicorp/synergy
AwesomeDoesIt/synergy
Bakalchuk/synergy
BogdanLivadariu/synergy
BorisChiou/synergy
Charcol/synergy
Coolred/synergy
Craigk109/synergy
DALDEI/synergy
DavidST44/synergy
DiegoSousa/synergy
DonnaWuDongxia/synergy
Dracophoenix1/synergy
Flare183/synergy
HerrGrumps/synergy
HomeTheaterOperatingSystem/synergy-core
Independent-Scientist/synergy
JaapSuter/synergy
JimDu/synergy
Joiningss/synergy
JoshMcCullough/synergy
KentVu/synergy
Lesthat/synergy
LiangChen0322/synergy
MarceColl/synergy
Mebus/synergy
MikeKnieriem/synergy
Nihil7354/synergy
OrangeUtan/synergy-stable-builds
ProjectLeaf/synergy
RaccoonTeam/synergy
RafalXXL/synergy
SeniorCoder1025/synergy
Sevea/synergy-1
SheaReinke/synergy
Toasterfist/synergy
UIKit0/synergy
Werror/synergy
Wkryst/synergy
XelaRellum/synergy
ahwagner/synergy
aladagli/synergy
alancapc/synergy
alex-deng/synergy
alexzzp/synergy
amitkr/synergy
andyesi/synergy
anthraxx/synergyunfuck
artisdom/synergy
artiya4u/synergy
astamatix/synergy
austin-laney/synergy
axela74/synergy
ballifatih/synergy
barisi/synergy
beedz/synergy
blnk2007/synergy
caramis/synergy
carballude/synergy
cardonator/synergy
carlosfvp/synergy
carstenlaengerer/synergy
cchwann/synergy
changdongsheng/synergy
chaomengnan/synergy
chedlin/synergy
chengguangnan/synergy
cjliu20152/synergy
clonkymonk/synergy
cribe78/synergy
dannon/synergy
darongE/synergy
davidchanff/synergy
dcrum/synergy
debauchee/barrier
deliangyang/synergy
dguerri/synergy
dijkstraj/synergy
divegeek/synergy
dpereira/synergy
dpolivy/synergy
duboisp/synergy
eaglecomp01/synergy
edwardsp/synergy
elitvinenko/synergy
fashioncj/synergy
fatdollar/synergy
fc205/synergy
feng-ye/synergy
fenggao86/synergy
fernandodeperto/synergy
frank-emrich/synergy
frankmanzhu/synergy
fuckobama/synergy
funixfu/synergy
fuzhuo/synergy
galkinvv/synergy
ghostreiter/synergy
gitscrubz/synergy
gtorressfdc/synergy
guangyue/synergy
hanks42/synergy
hanoseok/synergy
hcxiong/synergy
heathschweitzer/synergy
helkanen/synergy
hifi-dd/synergy
hoaluvn/synergy
hyei/synergy
iamcxa/synergy
ichengde/synergy
inche-ali/synergy
itchanges/synergy
iurnah/synergy
jcoming/synergy
jpmcmu/synergy
jpwhiting/synergy
julian-amaya/synergy
kaixinsoft/synergy
karolw/synergy
kash4kev/synergy
kellyhuberty/synergy
kissfu/synergy
kmrbrierley/synergy
ko7m/synergy
liuhuimin/synergy
lookat119/synergy
lukeqsun/synergy
makaanneo/synergy-1
margaritis/synergy
mcamiano/synergy
mcanthony/synergy
md11235/synergy
meowfaceman/synergy
midnite8177/synergy
moben/synergy
moodboom/synergy
museroom/synergy
neilmayhew/synergy
neuroradiology/synergy
nmadhok/synergy
noital/synergy
nyetwurk/synergy
ommokazza/synergy
onlymee/synergy
pdecat/synergy
peteo/synergy-stable-builds
phackss/synergy
piboye/synergy
ptg001/synergy
qbektrix/synergy
rajserc/synergy
ralluri/synergy
rmagnuson/synergy
saburahu/synergy
saiksy/synergy
sami1971/synergy
sarvex/synergy
scorpblog/synergy
sebpardo/synergy
serenemoon/synergy
shanesims/synergy
sharkpp/synergy
shaunliz/synergy
shawnanastasio/synergy
sl1pm4t/synergy
smittex/synergy
solokacher/synergy
songei/synergy-core
spurin/synergy
stelonix/synergy
stipid/synergy
terry2010/synergy
the-wes/synergy
thesoftwarejedi/synergy
timmui/synergy
tpraturi/synergy
utwodownson/synergy
vaginessa/synergy
whereyougo/synergy
willleslie/synergy
wjcsharp/synergy
wolrah/synergy
xiaoping378/synergy
xiyuanHou/synergy
xuerik/synergy
yajun0601/synergy
yangchengwork/synergy
yarec/synergy
ylluminate/synergy
yucheng82/synergy
yulin0629/synergy
yupi2/synergy
yyppaag/synergy
zbrode/synergy
zdndanny/synergy
zengyijie/synergy
zhanglongqi/synergy
Nothing to show
...
Choose a Head Repository
brahma-dev/synergy-stable-builds
symless/synergy-core
Albicorp/synergy
AwesomeDoesIt/synergy
Bakalchuk/synergy
BogdanLivadariu/synergy
BorisChiou/synergy
Charcol/synergy
Coolred/synergy
Craigk109/synergy
DALDEI/synergy
DavidST44/synergy
DiegoSousa/synergy
DonnaWuDongxia/synergy
Dracophoenix1/synergy
Flare183/synergy
HerrGrumps/synergy
HomeTheaterOperatingSystem/synergy-core
Independent-Scientist/synergy
JaapSuter/synergy
JimDu/synergy
Joiningss/synergy
JoshMcCullough/synergy
KentVu/synergy
Lesthat/synergy
LiangChen0322/synergy
MarceColl/synergy
Mebus/synergy
MikeKnieriem/synergy
Nihil7354/synergy
OrangeUtan/synergy-stable-builds
ProjectLeaf/synergy
RaccoonTeam/synergy
RafalXXL/synergy
SeniorCoder1025/synergy
Sevea/synergy-1
SheaReinke/synergy
Toasterfist/synergy
UIKit0/synergy
Werror/synergy
Wkryst/synergy
XelaRellum/synergy
ahwagner/synergy
aladagli/synergy
alancapc/synergy
alex-deng/synergy
alexzzp/synergy
amitkr/synergy
andyesi/synergy
anthraxx/synergyunfuck
artisdom/synergy
artiya4u/synergy
astamatix/synergy
austin-laney/synergy
axela74/synergy
ballifatih/synergy
barisi/synergy
beedz/synergy
blnk2007/synergy
caramis/synergy
carballude/synergy
cardonator/synergy
carlosfvp/synergy
carstenlaengerer/synergy
cchwann/synergy
changdongsheng/synergy
chaomengnan/synergy
chedlin/synergy
chengguangnan/synergy
cjliu20152/synergy
clonkymonk/synergy
cribe78/synergy
dannon/synergy
darongE/synergy
davidchanff/synergy
dcrum/synergy
debauchee/barrier
deliangyang/synergy
dguerri/synergy
dijkstraj/synergy
divegeek/synergy
dpereira/synergy
dpolivy/synergy
duboisp/synergy
eaglecomp01/synergy
edwardsp/synergy
elitvinenko/synergy
fashioncj/synergy
fatdollar/synergy
fc205/synergy
feng-ye/synergy
fenggao86/synergy
fernandodeperto/synergy
frank-emrich/synergy
frankmanzhu/synergy
fuckobama/synergy
funixfu/synergy
fuzhuo/synergy
galkinvv/synergy
ghostreiter/synergy
gitscrubz/synergy
gtorressfdc/synergy
guangyue/synergy
hanks42/synergy
hanoseok/synergy
hcxiong/synergy
heathschweitzer/synergy
helkanen/synergy
hifi-dd/synergy
hoaluvn/synergy
hyei/synergy
iamcxa/synergy
ichengde/synergy
inche-ali/synergy
itchanges/synergy
iurnah/synergy
jcoming/synergy
jpmcmu/synergy
jpwhiting/synergy
julian-amaya/synergy
kaixinsoft/synergy
karolw/synergy
kash4kev/synergy
kellyhuberty/synergy
kissfu/synergy
kmrbrierley/synergy
ko7m/synergy
liuhuimin/synergy
lookat119/synergy
lukeqsun/synergy
makaanneo/synergy-1
margaritis/synergy
mcamiano/synergy
mcanthony/synergy
md11235/synergy
meowfaceman/synergy
midnite8177/synergy
moben/synergy
moodboom/synergy
museroom/synergy
neilmayhew/synergy
neuroradiology/synergy
nmadhok/synergy
noital/synergy
nyetwurk/synergy
ommokazza/synergy
onlymee/synergy
pdecat/synergy
peteo/synergy-stable-builds
phackss/synergy
piboye/synergy
ptg001/synergy
qbektrix/synergy
rajserc/synergy
ralluri/synergy
rmagnuson/synergy
saburahu/synergy
saiksy/synergy
sami1971/synergy
sarvex/synergy
scorpblog/synergy
sebpardo/synergy
serenemoon/synergy
shanesims/synergy
sharkpp/synergy
shaunliz/synergy
shawnanastasio/synergy
sl1pm4t/synergy
smittex/synergy
solokacher/synergy
songei/synergy-core
spurin/synergy
stelonix/synergy
stipid/synergy
terry2010/synergy
the-wes/synergy
thesoftwarejedi/synergy
timmui/synergy
tpraturi/synergy
utwodownson/synergy
vaginessa/synergy
whereyougo/synergy
willleslie/synergy
wjcsharp/synergy
wolrah/synergy
xiaoping378/synergy
xiyuanHou/synergy
xuerik/synergy
yajun0601/synergy
yangchengwork/synergy
yarec/synergy
ylluminate/synergy
yucheng82/synergy
yulin0629/synergy
yupi2/synergy
yyppaag/synergy
zbrode/synergy
zdndanny/synergy
zengyijie/synergy
zhanglongqi/synergy
Nothing to show
Choose a head branch
  • 2 commits
  • 20 files changed
  • 0 commit comments
  • 1 contributor
View
@@ -16,8 +16,8 @@
# Version number for Synergy
set(VERSION_MAJOR 1)
-set(VERSION_MINOR 6)
-set(VERSION_REV 3)
+set(VERSION_MINOR 7)
+set(VERSION_REV 0)
set(VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REV}")
cmake_minimum_required(VERSION 2.6)
View
@@ -14,7 +14,8 @@ FORMS += res/MainWindowBase.ui \
res/HotkeyDialogBase.ui \
res/SettingsDialogBase.ui \
res/SetupWizardBase.ui \
- res/AddClientDialogBase.ui
+ res/AddClientDialogBase.ui \
+ res/LoginWindowBase.ui
SOURCES += src/main.cpp \
src/MainWindow.cpp \
src/AboutDialog.cpp \
@@ -50,7 +51,9 @@ SOURCES += src/main.cpp \
src/ZeroconfService.cpp \
src/DataDownloader.cpp \
src/AddClientDialog.cpp \
- src/CommandProcess.cpp
+ src/CommandProcess.cpp \
+ src/LoginWindow.cpp \
+ src/LoginAuth.cpp
HEADERS += src/MainWindow.h \
src/AboutDialog.h \
src/ServerConfig.h \
@@ -86,7 +89,10 @@ HEADERS += src/MainWindow.h \
src/ZeroconfService.h \
src/DataDownloader.h \
src/AddClientDialog.h \
- src/CommandProcess.h
+ src/CommandProcess.h \
+ src/LoginWindow.h \
+ src/LoginAuth.h \
+ src/LoginResult.h
RESOURCES += res/Synergy.qrc
RC_FILE = res/win/Synergy.rc
macx {
View
@@ -0,0 +1,22 @@
+#ifndef LOGINWINDOW_H
+#define LOGINWINDOW_H
+
+#include <QMainWindow>
+
+#include "ui_LoginWindowBase.h"
+
+class LoginWindow : public QMainWindow, public Ui::LoginWindowBase
+{
+ Q_OBJECT
+public:
+ LoginWindow(QWidget *parent = 0);
+ ~LoginWindow();
+
+protected:
+ void changeEvent(QEvent *e);
+
+private:
+ Ui::LoginWindow *ui;
+};
+
+#endif // LOGINWINDOW_H
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>LoginWindow</class>
+ <widget class="QMainWindow" name="LoginWindow">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>200</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Synergy</string>
+ </property>
+ <widget class="QWidget" name="centralwidget">
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <property name="leftMargin">
+ <number>10</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string/>
+ </property>
+ <property name="pixmap">
+ <pixmap resource="Synergy.qrc">:/res/image/about.png</pixmap>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QFormLayout" name="formLayout">
+ <property name="leftMargin">
+ <number>20</number>
+ </property>
+ <property name="rightMargin">
+ <number>20</number>
+ </property>
+ <item row="0" column="0">
+ <widget class="QLabel" name="m_pLabelEmail">
+ <property name="text">
+ <string>Email:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QLineEdit" name="m_pLineEditEmail">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="m_pLabelPassword">
+ <property name="text">
+ <string>Password:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QLineEdit" name="m_pLineEditPassword">
+ <property name="inputMethodHints">
+ <set>Qt::ImhHiddenText</set>
+ </property>
+ <property name="echoMode">
+ <enum>QLineEdit::Password</enum>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <property name="leftMargin">
+ <number>20</number>
+ </property>
+ <property name="rightMargin">
+ <number>20</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="m_pLabelRegister">
+ <property name="text">
+ <string>&lt;a href=&quot;http://synergy-project.org/&quot;&gt;Register&lt;/a&gt;</string>
+ </property>
+ <property name="openExternalLinks">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="m_pPushButtonLogin">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Maximum" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Login</string>
+ </property>
+ <property name="shortcut">
+ <string>Return</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="m_pPushButtonCancel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Maximum" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Cancel</string>
+ </property>
+ <property name="shortcut">
+ <string>Esc</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QMenuBar" name="menubar">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>21</height>
+ </rect>
+ </property>
+ </widget>
+ <widget class="QStatusBar" name="statusbar"/>
+ </widget>
+ <resources>
+ <include location="Synergy.qrc"/>
+ </resources>
+ <connections/>
+</ui>
@@ -127,6 +127,9 @@ void AppConfig::loadSettings()
m_AutoConfig = settings().value("autoConfig", true).toBool();
m_ElevateMode = settings().value("elevateMode", false).toBool();
m_AutoConfigPrompted = settings().value("autoConfigPrompted", false).toBool();
+ m_UserEmail = settings().value("userEmail", "").toString();
+ m_UserToken = settings().value("userToken", "").toString();
+ m_UserType = settings().value("userType", 0).toInt();
}
void AppConfig::saveSettings()
@@ -145,6 +148,9 @@ void AppConfig::saveSettings()
settings().setValue("autoConfig", m_AutoConfig);
settings().setValue("elevateMode", m_ElevateMode);
settings().setValue("autoConfigPrompted", m_AutoConfigPrompted);
+ settings().setValue("userEmail", m_UserEmail);
+ settings().setValue("userToken", m_UserToken);
+ settings().setValue("userType", m_UserType);
}
void AppConfig::setCryptoPass(const QString &s)
View
@@ -47,6 +47,7 @@ class AppConfig
friend class SettingsDialog;
friend class MainWindow;
friend class SetupWizard;
+ friend class LoginWindow;
public:
AppConfig(QSettings* settings);
@@ -72,6 +73,9 @@ class AppConfig
void setAutoConfig(bool autoConfig);
bool autoConfigPrompted() { return m_AutoConfigPrompted; }
void setAutoConfigPrompted(bool prompted);
+ const QString& userEmail() const { return m_UserEmail; }
+ const QString& userToken() const { return m_UserToken; }
+ const int userType() const { return m_UserType; }
QString synergysName() const { return m_SynergysName; }
QString synergycName() const { return m_SynergycName; }
@@ -95,7 +99,9 @@ class AppConfig
void setLanguage(const QString language) { m_Language = language; }
void setStartedBefore(bool b) { m_StartedBefore = b; }
void setElevateMode(bool b) { m_ElevateMode = b; }
-
+ void setUserEmail(const QString& e) { m_UserEmail = e; }
+ void setUserToken(const QString& t) { m_UserToken = t; }
+ void setUserType(int t) { m_UserType = t; }
void loadSettings();
void saveSettings();
@@ -118,6 +124,9 @@ class AppConfig
bool m_AutoConfig;
bool m_ElevateMode;
bool m_AutoConfigPrompted;
+ QString m_UserEmail;
+ QString m_UserToken;
+ int m_UserType;
static const char m_SynergysName[];
static const char m_SynergycName[];
View
@@ -0,0 +1,98 @@
+#include "LoginAuth.h"
+
+#include "LoginWindow.h"
+#include "AppConfig.h"
+#include "QUtility.h"
+#include "LoginResult.h"
+
+#include <QProcess>
+#include <QCoreApplication>
+#include <QCryptographicHash>
+#include <stdexcept>
+
+void LoginAuth::checkUserType()
+{
+ int result = doCheckUserType();
+ m_pLoginWindow->setLoginResult(result);
+ emit finished();
+}
+
+int LoginAuth::doCheckUserType()
+{
+ QString responseJson;
+
+ try
+ {
+ responseJson = request(m_Email, m_Password);
+ }
+ catch (std::exception& e)
+ {
+ m_pLoginWindow->setError(e.what());
+ return ExceptionError;
+ }
+
+ QRegExp resultRegex(".*\"result\".*:.*(true|false).*");
+ if (resultRegex.exactMatch(responseJson)) {
+ QString boolString = resultRegex.cap(1);
+ if (boolString == "true") {
+ return Home;
+ }
+ else if (boolString == "false") {
+ return InvalidEmailPassword;
+ }
+ }
+ else {
+ QRegExp errorRegex(".*\"error\".*:.*\"(.+)\".*");
+ if (errorRegex.exactMatch(responseJson)) {
+
+ // replace "\n" with real new lines.
+ QString error = errorRegex.cap(1).replace("\\n", "\n");
+ m_pLoginWindow->setError(error);
+ return Error;
+ }
+ }
+
+ m_pLoginWindow->setError(responseJson);
+ return ServerResponseError;
+}
+
+QString LoginAuth::request(const QString& email, const QString& password)
+{
+ QString program(QCoreApplication::applicationDirPath() + "/syntool");
+ QStringList args("--login-auth");
+
+ QProcess process;
+ process.setReadChannel(QProcess::StandardOutput);
+ process.start(program, args);
+ bool success = process.waitForStarted();
+
+ QString out, error;
+ if (success)
+ {
+ // hash password in case it contains interesting chars.
+ QString credentials(email + ":" + hash(password) + "\n");
+ process.write(credentials.toStdString().c_str());
+
+ if (process.waitForFinished()) {
+ out = process.readAllStandardOutput();
+ error = process.readAllStandardError();
+ }
+ }
+
+ out = out.trimmed();
+ error = error.trimmed();
+
+ if (out.isEmpty() ||
+ !error.isEmpty() ||
+ !success ||
+ process.exitCode() != 0)
+ {
+ throw std::runtime_error(
+ QString("Code: %1\nError: %2")
+ .arg(process.exitCode())
+ .arg(error.isEmpty() ? "Unknown" : error)
+ .toStdString());
+ }
+
+ return out;
+}
Oops, something went wrong.

No commit comments for this range