30 #define DISABLE_DEBUGLOG
45 #include <gwenhywfar/debug.h>
46 #include <gwenhywfar/dialog_be.h>
47 #include <gwenhywfar/url.h>
48 #include <gwenhywfar/syncio_socket.h>
49 #include <gwenhywfar/syncio_buffered.h>
50 #include <gwenhywfar/syncio_tls.h>
51 #include <gwenhywfar/syncio_http.h>
81 gui->progressDataTree=GWEN_ProgressData_Tree_new();
82 gui->activeDialogs=GWEN_Dialog_List_new();
91 assert(gui->refCount);
92 if ((--gui->refCount)==0) {
95 GWEN_Dialog_List_free(gui->activeDialogs);
96 GWEN_ProgressData_Tree_free(gui->progressDataTree);
125 assert(gui->refCount);
152 if (strcasecmp(gui->charSet,
"utf-8")!=0) {
155 "iconv not available, can not convert to \"%s\"",
160 ic=iconv_open(gui->charSet,
"UTF-8");
161 if (ic==((iconv_t)-1)) {
183 outbuf=(
char*)malloc(outLeft);
189 done=iconv(ic, &pInbuf, &inLeft, &pOutbuf, &outLeft);
190 if (done==(
size_t)-1) {
192 strerror(errno), errno);
220 while ((p=strchr(p,
'<'))) {
225 if (toupper(*t)==
'H') {
227 if (toupper(*t)==
'T') {
229 if (toupper(*t)==
'M') {
231 if (toupper(*t)==
'L') {
261 of=gui->messageBoxFn;
309 of=gui->progressStartFn;
310 gui->progressStartFn=f;
321 of=gui->progressAdvanceFn;
322 gui->progressAdvanceFn=f;
333 of=gui->progressSetTotalFn;
334 gui->progressSetTotalFn=f;
345 of=gui->progressLogFn;
346 gui->progressLogFn=f;
357 of=gui->progressEndFn;
358 gui->progressEndFn=f;
381 of=gui->getPasswordFn;
382 gui->getPasswordFn=f;
394 of=gui->setPasswordStatusFn;
395 gui->setPasswordStatusFn=f;
419 of=gui->waitForSocketsFn;
420 gui->waitForSocketsFn=f;
443 of=gui->execDialogFn;
455 of=gui->openDialogFn;
467 of=gui->closeDialogFn;
468 gui->closeDialogFn=f;
492 of=gui->readDialogPrefsFn;
493 gui->readDialogPrefsFn=f;
505 of=gui->writeDialogPrefsFn;
506 gui->writeDialogPrefsFn=f;
517 of=gui->getFileNameFn;
518 gui->getFileNameFn=f;
543 of=gui->keyDataFromTextOpenSslFn;
544 gui->keyDataFromTextOpenSslFn=f;
582 if (name) gui->name=strdup(name);
608 gui->charSet=strdup(s);
643 char msgbuffer[2048];
648 rv=vsnprintf(msgbuffer,
sizeof(msgbuffer), fmt, list);
649 if (rv<0 || rv>=(
int)(
sizeof(msgbuffer))) {
651 rv, (
int)(
sizeof(msgbuffer)));
677 minLen, maxLen, guiid);
755 const char *fmt, ...) {
757 char msgbuffer[2048];
762 rv=vsnprintf(msgbuffer,
sizeof(msgbuffer), fmt, list);
763 if (rv<0 || rv>=(
int)(
sizeof(msgbuffer))) {
765 rv, (
int)(
sizeof(msgbuffer)));
839 token, pin, status, guiid);
850 strcasecmp(logDomain,
"gwenhywfar")==0)
879 GWEN_SOCKET_LIST2 *writeSockets,
908 I18N(
"Waiting for Data"),
909 "Waiting for data to become available",
915 GWEN_SOCKET_LIST2_ITERATOR *sit;
922 sit=GWEN_Socket_List2_First(readSockets);
926 s=GWEN_Socket_List2Iterator_Data(sit);
931 s=GWEN_Socket_List2Iterator_Next(sit);
933 GWEN_Socket_List2Iterator_free(sit);
939 sit=GWEN_Socket_List2_First(writeSockets);
943 s=GWEN_Socket_List2Iterator_Data(sit);
948 s=GWEN_Socket_List2Iterator_Next(sit);
950 GWEN_Socket_List2Iterator_free(sit);
985 v=(int) difftime(t1, t0);
1020 const char *statusOn;
1021 const char *statusOff;
1027 const char *unknown;
1028 const char *commonName;
1029 const char *organizationName;
1030 const char *organizationalUnitName;
1031 const char *countryName;
1032 const char *localityName;
1033 const char *stateOrProvinceName;
1036 "The following certificate has been received:\n"
1038 "Organisation: %s\n"
1043 "Valid after : %s\n"
1044 "Valid until : %s\n"
1047 "Do you wish to accept this certificate?"
1051 " The following certificate has been received:"
1054 " <tr><td>Name</td><td>%s</td></tr>"
1055 " <tr><td>Organisation</td><td>%s</td></tr>"
1056 " <tr><td>Department</td><td>%s</td></tr>"
1057 " <tr><td>Country</td><td>%s</td></tr>"
1058 " <tr><td>City</td><td>%s</td></tr>"
1059 " <tr><td>State</td><td>%s</td></tr>"
1060 " <tr><td>Valid after</td><td>%s</td></tr>"
1061 " <tr><td>Valid until</td><td>%s</td></tr>"
1062 " <tr><td>Hash</td><td>%s</td></tr>"
1063 " <tr><td>Status</td><td>%s%s%s</td></tr>"
1066 " Do you wish to accept this certificate?"
1071 memset(dbuffer1, 0,
sizeof(dbuffer1));
1072 memset(dbuffer2, 0,
sizeof(dbuffer2));
1073 memset(varName, 0,
sizeof(varName));
1094 "Could not convert beforeDate to string");
1108 "Could not convert untilDate to string");
1116 statusOn=
"<font color=red>";
1117 statusOff=
"</font>";
1120 statusOn=
"<font color=green>";
1121 statusOff=
"</font>";
1124 unknown=
I18N(
"unknown");
1129 if (!organizationName)
1130 organizationName=unknown;
1132 if (!organizationalUnitName)
1133 organizationalUnitName=unknown;
1136 countryName=unknown;
1139 localityName=unknown;
1141 if (!stateOrProvinceName)
1142 stateOrProvinceName=unknown;
1146 snprintf(buffer,
sizeof(buffer)-1,
1150 organizationalUnitName,
1153 stateOrProvinceName,
1160 organizationalUnitName,
1163 stateOrProvinceName,
1174 I18N(
"Certificate Received"),
1176 I18N(
"Yes"),
I18N(
"No"), 0, guiid);
1190 unsigned char *buffer,
1191 unsigned int bufLength) {
1238 const char *patterns,
1255 const char *altName,
1274 const char *defaultProto,
1301 t=GWEN_ProgressData_Tree_GetParent(t);
1380 uint32_t progressFlags,
1389 id=++(gui->nextProgressId);
1392 progressFlags, title?title:
"(none)", (uint32_t) total, guiid);
1395 guiid=gui->lastProgressId;
1400 if (pdParent==
NULL) {
1403 title?title:
"no title",
1404 text?text:
"no text");
1412 GWEN_ProgressData_Tree_AddChild(pdParent, pd);
1414 GWEN_ProgressData_Tree_Add(gui->progressDataTree, pd);
1418 gui->lastProgressId=id;
1427 uint32_t parentPid=0;
1432 pid=gui->lastProgressId;
1452 previousPd=GWEN_ProgressData_Tree_GetParent(pd);
1458 previousPd=GWEN_ProgressData_Tree_GetParent(previousPd);
1509 else if (secondary==pd) {
1532 GWEN_ProgressData_Tree_Del(pd);
1546 pid=gui->lastProgressId;
1596 pid=gui->lastProgressId;
1645 pid=gui->lastProgressId;
1760 id=++(gui->nextDialogId);
1777 GWEN_Dialog_List_Add(dlg, gui->activeDialogs);
1788 dlg=GWEN_Dialog_List_First(gui->activeDialogs);
1792 dlg=GWEN_Dialog_List_Next(dlg);
1796 dlg=GWEN_Dialog_List_Last(gui->activeDialogs);
1805 GWEN_Dialog_List_Del(dlg);
1814 const char *defaultProto,
1822 if (!(url && *url)) {
1845 if (!(addr && *addr)) {
1851 if (strcasecmp(s,
"http")==0 ||
1852 strcasecmp(s,
"https")==0) {
1871 if (strcasecmp(s,
"https")==0) {