From 6d58ccb46c9bd71a6f04494f58556328a3689d50 Mon Sep 17 00:00:00 2001 From: Alexander Zhirov Date: Wed, 3 Aug 2022 11:22:23 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE:=20=D0=B2=D0=B5=D0=B4=D0=B5=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=B8=D1=81=D1=82=D0=BE=D1=80=D0=B8=D0=B8=20=D0=BF=D0=BE=D0=B4?= =?UTF-8?q?=D0=BA=D0=BB=D1=8E=D1=87=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db.c | 37 +++++++++++++++++++++++++++++++++++++ db.h | 1 + freerdp.db | Bin 81920 -> 81920 bytes gui.c | 13 ++++++++----- 4 files changed, 46 insertions(+), 5 deletions(-) diff --git a/db.c b/db.c index d6d1aa1..0ea5ddc 100644 --- a/db.c +++ b/db.c @@ -9,6 +9,7 @@ //#include #include #include +#include #include "db.h" #include "node_settings.h" @@ -561,3 +562,39 @@ int dbSaveMonitors(char *name) return result; } + +int dbInsertHistory(char *login, char *host) +{ + int result = 0; + + if (!(login && strlen(login)) || !(host && strlen(host))) + return -1; + + sqlite3 *db = dbGetBase(getPathDB(NULL)); + + if (!db) + { + return -2; + } + + sqlite3_stmt *res; + char *sql = "INSERT INTO `history` (`login`, `host`, `time`) VALUES (?, ?, ?)"; + if (sqlite3_prepare_v2(db, sql, -1, &res, 0) == SQLITE_OK) + { + sqlite3_bind_text(res, 1, login, -1, 0); + sqlite3_bind_text(res, 2, host, -1, 0); + sqlite3_bind_int(res, 3, (unsigned)time(NULL)); + } + + if (sqlite3_step(res) == SQLITE_DONE) + { + sqlite3_finalize(res); + sqlite3_close(db); + return 0; + } + + sqlite3_finalize(res); + sqlite3_close(db); + + return result; +} diff --git a/db.h b/db.h index 89c7e1c..6b528ca 100644 --- a/db.h +++ b/db.h @@ -52,5 +52,6 @@ bool dbWriteParameter(Parameter name, bool set); bool dbWriteValue(Value name, bool set); bool dbSetUserNameCurrent(char *current); int dbAddServer(char *ip, char *dns); +int dbInsertHistory(char *login, char *host); #endif /* DB_H_ */ diff --git a/freerdp.db b/freerdp.db index 1b31d0021ef46c5473389c7dce5698118ecbc530..7c0f79884dbde4df79af00ebee951f21e47a1501 100644 GIT binary patch delta 612 zcmZo@U~On%oggik&%nSS0>m&7I8n!#C!ayjdm=CIMFwHE9TT&aS=e^4M{hP1xWqa+ zg)PLmQNfj6Tw0p3NxUR6DJL}}v$!O`s1iyEIS08qhPWz(I6C>bDkwokCm&!}RnN&! z&&*Te3~`MJ(c$7$%E&J+LGVg4b5kL_$&S2A99){ZZfxR?(vvsvOA0_Nh&O~9CbGGU zy@Eqak3opHl7;^s|6%@R{GI%X{7(F`eBbzP^6lZ9%v;G9#b?I*oA(ayPTuL84HevY zCl|^3GIC5lAe&>#m(SP8zyb2H5-%Hrq9F&Ter|qVCeRnfRsoJdj=ruTu0ip>{(hbz z{z1X2JZuc|mYkFQkT{VIMj{`cs?0MutP OaiIZ7JrjcfL^A;O&5%w2 delta 675 zcmY*WO=uHQ5T3Vhf8K_?oop?%(QLMD2qDtOYy@dQ@rNSyPz>l%EP)mkqYJ@{sw$HCi@qi^G#J zB$pKYf*be{?_w3tpkwV>AFP*FD3>hXnw5X$C;39&kG!$7GORmu%nV;SHI@3Mg43f$ zR_frEMOaOb8540G#yvAUk#@o`z0X9r;-;90p1A*9#-qn4FC>(>d{%kw4j;*z)hl)X zs$W~UR6W2nfV_x4`uU1ba2v3R+mU_hGiFS#!ic#zQWnE=dD{&I@KM(-?&3EUomU)5!M#rF`i@{4MpNpP|*kchWF6N4YD|ocN{~5 zY*u*1f>&&TzW&_RHOS?JS1uL2W7F+_rf)6QZ(O@str20$>n?;s@1z8g#`{QxQn^QR zfT|g@BRSF0EcMF882+R=w*dF?2X5gWS$dBLTUHIDb?Z8HQd^l2oD1>XPOx1J*6h`{ zYFx#2p#8qVU0f&PBfM<$92*#4AAF(NM1p5oziT7G2R)a%<`~5x0un5OY;WT~xiXO& diff --git a/gui.c b/gui.c index 4c2356a..4ad1325 100644 --- a/gui.c +++ b/gui.c @@ -27,13 +27,15 @@ static int guiExit(Ihandle *self) static int guiConnect(Ihandle *self) { - char *result = getHostIP(IupGetAttribute(IupGetDialogChild(self, "SERVER"), "VALUE")); + char *host = IupGetAttribute(IupGetDialogChild(self, "SERVER"), "VALUE"); + char *login = IupGetAttribute(IupGetDialogChild(self, "USER"), "LINEVALUE"); + char *result = getHostIP(host); if (!result) return IUP_DEFAULT; setParameterValue(PARAMETER_SERVER, VALUE_SERVER, result); - setParameterValue(PARAMETER_USERNAME, VALUE_USERNAME, IupGetAttribute(IupGetDialogChild(self, "USER"), "LINEVALUE")); + setParameterValue(PARAMETER_USERNAME, VALUE_USERNAME, login); setParameterValue(PARAMETER_PASSWORD, VALUE_PASSWORD, IupGetAttribute(IupGetDialogChild(self, "PASSWORD"), "LINEVALUE")); Arguments args; @@ -45,11 +47,12 @@ static int guiConnect(Ihandle *self) // if (free_rdp_connect(args.argc, args.argv) != XF_EXIT_DNS_NAME_NOT_FOUND) // { - if (!dbAddServer(result, IupGetAttribute(IupGetDialogChild(self, "SERVER"), "VALUE"))) + dbInsertHistory(login, host); + if (!dbAddServer(result, host)) { - IupSetAttribute(IupGetDialogChild(self, "SERVER"), "APPENDITEM", IupGetAttribute(IupGetDialogChild(self, "SERVER"), "VALUE")); + IupSetAttribute(IupGetDialogChild(self, "SERVER"), "APPENDITEM", host); } - dbSetUserNameCurrent(IupGetAttribute(IupGetDialogChild(self, "USER"), "LINEVALUE")); + dbSetUserNameCurrent(login); // } freeArguments(&args);