mirror of
https://gitea.psi.ch/ELOG/elog.git
synced 2026-09-10 18:23:28 +00:00
Started to implement synchronize after clone
SVN revision: 953
This commit is contained in:
parent
1b74e83acb
commit
c9b232d71f
358
src/elogd.c
358
src/elogd.c
@ -6,6 +6,9 @@
|
|||||||
Contents: Web server program for Electronic Logbook ELOG
|
Contents: Web server program for Electronic Logbook ELOG
|
||||||
|
|
||||||
$Log$
|
$Log$
|
||||||
|
Revision 1.379 2004/07/12 20:36:48 midas
|
||||||
|
Started to implement synchronize after clone
|
||||||
|
|
||||||
Revision 1.378 2004/07/12 13:52:49 midas
|
Revision 1.378 2004/07/12 13:52:49 midas
|
||||||
Fixed problem with options list containing several quotation marks
|
Fixed problem with options list containing several quotation marks
|
||||||
|
|
||||||
@ -2885,12 +2888,12 @@ int el_build_index(LOGBOOK * lbs, BOOL rebuild)
|
|||||||
|
|
||||||
/*------------------------------------------------------------------*/
|
/*------------------------------------------------------------------*/
|
||||||
|
|
||||||
int el_index_logbooks(BOOL reinit)
|
int el_index_logbooks()
|
||||||
{
|
{
|
||||||
char str[256], data_dir[256], logbook[256], cwd[256], *p;
|
char str[256], data_dir[256], logbook[256], cwd[256], *p;
|
||||||
int i, j, n, status;
|
int i, j, n, status;
|
||||||
|
|
||||||
if (reinit) {
|
if (lb_list) {
|
||||||
for (i = 0; lb_list[i].name[0]; i++) {
|
for (i = 0; lb_list[i].name[0]; i++) {
|
||||||
if (lb_list[i].el_index != NULL) {
|
if (lb_list[i].el_index != NULL) {
|
||||||
free(lb_list[i].el_index);
|
free(lb_list[i].el_index);
|
||||||
@ -8320,7 +8323,7 @@ int delete_logbook(LOGBOOK *lbs, char *error)
|
|||||||
|
|
||||||
/* force re-read of config file */
|
/* force re-read of config file */
|
||||||
check_config_file(TRUE);
|
check_config_file(TRUE);
|
||||||
el_index_logbooks(TRUE);
|
el_index_logbooks();
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -8415,7 +8418,7 @@ int rename_logbook(LOGBOOK *lbs, char *new_name)
|
|||||||
|
|
||||||
/* force re-read of config file */
|
/* force re-read of config file */
|
||||||
check_config_file(TRUE);
|
check_config_file(TRUE);
|
||||||
el_index_logbooks(TRUE);
|
el_index_logbooks();
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -8517,7 +8520,7 @@ int create_logbook(LOGBOOK *oldlbs, char *logbook, char *templ)
|
|||||||
|
|
||||||
/* force re-read of config file */
|
/* force re-read of config file */
|
||||||
check_config_file(TRUE);
|
check_config_file(TRUE);
|
||||||
el_index_logbooks(TRUE);
|
el_index_logbooks();
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -10926,6 +10929,126 @@ void receive_config(LOGBOOK * lbs, char *server, char *error_str)
|
|||||||
|
|
||||||
/*------------------------------------------------------------------*/
|
/*------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
int adjust_config(char *url)
|
||||||
|
{
|
||||||
|
int fh, i, length;
|
||||||
|
char *buf, *buf2, *p1, *p2;
|
||||||
|
char str[256];
|
||||||
|
|
||||||
|
fh = open(config_file, O_RDWR | O_BINARY, 644);
|
||||||
|
if (fh < 0) {
|
||||||
|
sprintf(str, loc("Cannot open file <b>%s</b>"), config_file);
|
||||||
|
strcat(str, ": ");
|
||||||
|
strcat(str, strerror(errno));
|
||||||
|
puts(str);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* read previous contents */
|
||||||
|
length = lseek(fh, 0, SEEK_END);
|
||||||
|
lseek(fh, 0, SEEK_SET);
|
||||||
|
buf = malloc(length + 1000);
|
||||||
|
assert(buf);
|
||||||
|
read(fh, buf, length);
|
||||||
|
buf[length] = 0;
|
||||||
|
|
||||||
|
/* add mirror server */
|
||||||
|
p1 = strstr(buf, "Mirror server =");
|
||||||
|
if (p1 != NULL) {
|
||||||
|
p2 = strchr(p1, '\n');
|
||||||
|
if (p2 && *(p2 - 1) == '\r')
|
||||||
|
p2--;
|
||||||
|
} else {
|
||||||
|
p1 = strstr(buf, "[global]");
|
||||||
|
if (p1 == NULL) {
|
||||||
|
puts("Cannot find [global] section in config file.");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
p1 = strchr(p1, '\n');
|
||||||
|
while (*p1 == '\n' || *p1 == '\r')
|
||||||
|
p1++;
|
||||||
|
|
||||||
|
p2 = p1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* save tail */
|
||||||
|
buf2 = NULL;
|
||||||
|
if (p2) {
|
||||||
|
buf2 = malloc(strlen(p2) + 1);
|
||||||
|
assert(buf2);
|
||||||
|
strlcpy(buf2, p2, strlen(p2) + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
sprintf(p1, "Mirror server = %s\r\n", url);
|
||||||
|
strlcat(p1, buf2, length + 1000);
|
||||||
|
free(buf2);
|
||||||
|
|
||||||
|
/* outcomment "URL = xxx" */
|
||||||
|
p1 = strstr(buf, "URL =");
|
||||||
|
if (p1 != NULL) {
|
||||||
|
|
||||||
|
/* save tail */
|
||||||
|
buf2 = malloc(strlen(p1) + 1);
|
||||||
|
assert(buf2);
|
||||||
|
strlcpy(buf2, p1, strlen(p1) + 1);
|
||||||
|
|
||||||
|
/* add comment */
|
||||||
|
sprintf(p1, "; Following line has been outcommented after cloning\r\n");
|
||||||
|
strlcat(p1, "; ", length + 1000);
|
||||||
|
strlcat(p1, buf2, length + 1000);
|
||||||
|
free(buf2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* outcomment "Mirror config = xxx" */
|
||||||
|
p1 = strstr(buf, "Mirror config =");
|
||||||
|
if (p1 != NULL) {
|
||||||
|
|
||||||
|
/* save tail */
|
||||||
|
buf2 = malloc(strlen(p1) + 1);
|
||||||
|
assert(buf2);
|
||||||
|
strlcpy(buf2, p1, strlen(p1) + 1);
|
||||||
|
|
||||||
|
/* add comment */
|
||||||
|
sprintf(p1, "; Following line has been outcommented after cloning\r\n");
|
||||||
|
strlcat(p1, "; ", length + 1000);
|
||||||
|
strlcat(p1, buf2, length + 1000);
|
||||||
|
free(buf2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef OS_UNIX
|
||||||
|
|
||||||
|
/* under unix, convert CRLF to CR */
|
||||||
|
remove_crlf(buf);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
lseek(fh, 0, SEEK_SET);
|
||||||
|
i = write(fh, buf, strlen(buf));
|
||||||
|
if (i < (int) strlen(buf)) {
|
||||||
|
sprintf(str, loc("Cannot write to <b>%s</b>"), config_file);
|
||||||
|
strcat(str, ": ");
|
||||||
|
strcat(str, strerror(errno));
|
||||||
|
puts(str);
|
||||||
|
close(fh);
|
||||||
|
free(buf);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
chsize(fh, TELL(fh));
|
||||||
|
#else
|
||||||
|
ftruncate(fh, TELL(fh));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
close(fh);
|
||||||
|
free(buf);
|
||||||
|
|
||||||
|
puts("Option \"URL = xxx\" has been outcommented from config file.");
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------*/
|
||||||
|
|
||||||
int save_md5(LOGBOOK * lbs, char *server, MD5_INDEX * md5_index, int n)
|
int save_md5(LOGBOOK * lbs, char *server, MD5_INDEX * md5_index, int n)
|
||||||
{
|
{
|
||||||
char str[256], url[256], file_name[256];
|
char str[256], url[256], file_name[256];
|
||||||
@ -11040,7 +11163,21 @@ BOOL equal_md5(unsigned char m1[16], unsigned char m2[16])
|
|||||||
|
|
||||||
/*------------------------------------------------------------------*/
|
/*------------------------------------------------------------------*/
|
||||||
|
|
||||||
void synchronize_logbook(LOGBOOK * lbs, BOOL bcron)
|
#define SYNC_HTML 1
|
||||||
|
#define SYNC_CRON 2
|
||||||
|
#define SYNC_CLONE 3
|
||||||
|
|
||||||
|
mprint(LOGBOOK *lbs, int mode, char *str)
|
||||||
|
{
|
||||||
|
if (mode == SYNC_HTML)
|
||||||
|
rsprintf("%s\n", str);
|
||||||
|
else if (mode == SYNC_CRON)
|
||||||
|
logf(lbs, str);
|
||||||
|
else
|
||||||
|
puts(str);
|
||||||
|
}
|
||||||
|
|
||||||
|
void synchronize_logbook(LOGBOOK * lbs, int mode)
|
||||||
{
|
{
|
||||||
int index, i, j, i_msg, i_remote, i_cache, n_remote, n_cache, nserver,
|
int index, i, j, i_msg, i_remote, i_cache, n_remote, n_cache, nserver,
|
||||||
remote_id, exist_remote, exist_cache, message_id, max_id;
|
remote_id, exist_remote, exist_cache, message_id, max_id;
|
||||||
@ -11059,7 +11196,7 @@ void synchronize_logbook(LOGBOOK * lbs, BOOL bcron)
|
|||||||
|
|
||||||
for (index = 0; index < nserver; index++) {
|
for (index = 0; index < nserver; index++) {
|
||||||
|
|
||||||
if (!bcron) {
|
if (mode == SYNC_HTML) {
|
||||||
rsprintf("<table width=\"100%%\" cellpadding=1 cellspacing=0");
|
rsprintf("<table width=\"100%%\" cellpadding=1 cellspacing=0");
|
||||||
|
|
||||||
if (getcfg_topgroup())
|
if (getcfg_topgroup())
|
||||||
@ -11081,15 +11218,12 @@ void synchronize_logbook(LOGBOOK * lbs, BOOL bcron)
|
|||||||
n_remote = retrieve_remote_md5(lbs, list[index], &md5_remote, error_str);
|
n_remote = retrieve_remote_md5(lbs, list[index], &md5_remote, error_str);
|
||||||
if (n_remote <= 0) {
|
if (n_remote <= 0) {
|
||||||
|
|
||||||
if (bcron)
|
mprint(lbs, mode, error_str);
|
||||||
logf(lbs, error_str);
|
|
||||||
else
|
|
||||||
rsprintf("%s\n", error_str);
|
|
||||||
|
|
||||||
if (md5_remote)
|
if (md5_remote)
|
||||||
free(md5_remote);
|
free(md5_remote);
|
||||||
|
|
||||||
if (!bcron)
|
if (mode == SYNC_HTML)
|
||||||
rsprintf("</pre>\n");
|
rsprintf("</pre>\n");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -11102,12 +11236,9 @@ void synchronize_logbook(LOGBOOK * lbs, BOOL bcron)
|
|||||||
if (getcfg(lbs->name, "Mirror config", str) && atoi(str) == 1 && md5_cache) {
|
if (getcfg(lbs->name, "Mirror config", str) && atoi(str) == 1 && md5_cache) {
|
||||||
|
|
||||||
load_config_section(lbs->name, &buffer, error_str);
|
load_config_section(lbs->name, &buffer, error_str);
|
||||||
if (error_str[0]) {
|
if (error_str[0])
|
||||||
if (bcron)
|
mprint(lbs, mode, error_str);
|
||||||
logf(lbs, "Error loading configuration file: %s", error_str);
|
else {
|
||||||
else
|
|
||||||
rsprintf("Error loading configuration file: %s\n", error_str);
|
|
||||||
} else {
|
|
||||||
remove_crlf(buffer);
|
remove_crlf(buffer);
|
||||||
MD5_checksum(buffer, strlen(buffer), digest);
|
MD5_checksum(buffer, strlen(buffer), digest);
|
||||||
}
|
}
|
||||||
@ -11138,15 +11269,10 @@ void synchronize_logbook(LOGBOOK * lbs, BOOL bcron)
|
|||||||
if (!getcfg(lbs->name, "Mirror simulate", str) || atoi(str) == 0)
|
if (!getcfg(lbs->name, "Mirror simulate", str) || atoi(str) == 0)
|
||||||
submit_config(lbs, list[index], buffer, error_str);
|
submit_config(lbs, list[index], buffer, error_str);
|
||||||
|
|
||||||
if (error_str[0]) {
|
if (error_str[0])
|
||||||
if (bcron)
|
mprint(lbs, mode, error_str);
|
||||||
logf(lbs, "Error sending config file: %s", error_str);
|
else
|
||||||
else
|
mprint(lbs, mode, "Local config submitted");
|
||||||
rsprintf("Error sending config file: %s\n", error_str);
|
|
||||||
} else {
|
|
||||||
if (!bcron)
|
|
||||||
rsprintf("Local config submitted\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
md5_cache[0].message_id = -1;
|
md5_cache[0].message_id = -1;
|
||||||
|
|
||||||
@ -11161,15 +11287,11 @@ void synchronize_logbook(LOGBOOK * lbs, BOOL bcron)
|
|||||||
if (!getcfg(lbs->name, "Mirror simulate", str) || atoi(str) == 0)
|
if (!getcfg(lbs->name, "Mirror simulate", str) || atoi(str) == 0)
|
||||||
receive_config(lbs, list[index], error_str);
|
receive_config(lbs, list[index], error_str);
|
||||||
|
|
||||||
if (error_str[0]) {
|
if (error_str[0])
|
||||||
if (bcron)
|
mprint(lbs, mode, error_str);
|
||||||
logf(lbs, "Error receiving config file: %s\n", error_str);
|
else
|
||||||
else
|
mprint(lbs, mode, "Remote config received");
|
||||||
rsprintf("Error receiving config file: %s\n", error_str);
|
|
||||||
} else {
|
|
||||||
if (!bcron)
|
|
||||||
rsprintf("Remote config received\n");
|
|
||||||
}
|
|
||||||
md5_cache[0].message_id = -1;
|
md5_cache[0].message_id = -1;
|
||||||
|
|
||||||
} else
|
} else
|
||||||
@ -11181,12 +11303,12 @@ void synchronize_logbook(LOGBOOK * lbs, BOOL bcron)
|
|||||||
if (_logging_level > 1)
|
if (_logging_level > 1)
|
||||||
logf(lbs, "MIRROR config conflict");
|
logf(lbs, "MIRROR config conflict");
|
||||||
|
|
||||||
if (!bcron) {
|
sprintf(str, "%s. ",
|
||||||
rsprintf("%s.\n",
|
loc("Configuration has been changed locally and remotely"));
|
||||||
loc("Configuration has been changed locally and remotely"));
|
strcat(str, loc("Please merge manually to resolve conflict"));
|
||||||
rsprintf(loc("Please merge manually to resolve conflict"));
|
strcat(str, ".");
|
||||||
rsprintf(".\n");
|
|
||||||
}
|
mprint(lbs, mode, str);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
/* configs are identical */
|
/* configs are identical */
|
||||||
@ -11196,9 +11318,8 @@ void synchronize_logbook(LOGBOOK * lbs, BOOL bcron)
|
|||||||
|
|
||||||
sprintf(str, loc("Logbook \"%s\" does not exist on remote server"),
|
sprintf(str, loc("Logbook \"%s\" does not exist on remote server"),
|
||||||
lbs->name);
|
lbs->name);
|
||||||
if (bcron)
|
|
||||||
logf(lbs, str);
|
mprint(lbs, mode, str);
|
||||||
rsprintf("%s\n", str);
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -11246,13 +11367,11 @@ void synchronize_logbook(LOGBOOK * lbs, BOOL bcron)
|
|||||||
|
|
||||||
/* not that submit_message() may have changed attr_list !!! */
|
/* not that submit_message() may have changed attr_list !!! */
|
||||||
|
|
||||||
if (error_str[0]) {
|
if (error_str[0])
|
||||||
if (bcron)
|
sprintf(str, "%s: %s", loc("Error sending local message"), error_str);
|
||||||
logf(lbs, "Error sending local message: %s", error_str);
|
else
|
||||||
else
|
sprintf(str, "ID%d:\t%s", message_id, loc("Local entry submitted"));
|
||||||
rsprintf("%s: %s\n", loc("Error sending local message"), error_str);
|
mprint(lbs, mode, str);
|
||||||
} else if (!bcron)
|
|
||||||
rsprintf("ID%d:\t%s\n", message_id, loc("Local entry submitted"));
|
|
||||||
|
|
||||||
md5_cache[i_cache].message_id = -1;
|
md5_cache[i_cache].message_id = -1;
|
||||||
|
|
||||||
@ -11271,11 +11390,9 @@ void synchronize_logbook(LOGBOOK * lbs, BOOL bcron)
|
|||||||
all_identical = FALSE;
|
all_identical = FALSE;
|
||||||
|
|
||||||
if (error_str[0]) {
|
if (error_str[0]) {
|
||||||
if (bcron)
|
sprintf(str, "%s: %s", loc("Error receiving message"), error_str);
|
||||||
logf(lbs, "Error receiving message: %s", error_str);
|
mprint(lbs, mode, str);
|
||||||
else
|
} else if (mode == SYNC_HTML) {
|
||||||
rsprintf("%s: %s\n", loc("Error receiving message"), error_str);
|
|
||||||
} else if (!bcron) {
|
|
||||||
|
|
||||||
if (getcfg_topgroup())
|
if (getcfg_topgroup())
|
||||||
rsprintf("<a href=\"../%s/%d\">ID%d:</a>\t", lbs->name_enc,
|
rsprintf("<a href=\"../%s/%d\">ID%d:</a>\t", lbs->name_enc,
|
||||||
@ -11314,13 +11431,12 @@ void synchronize_logbook(LOGBOOK * lbs, BOOL bcron)
|
|||||||
|
|
||||||
all_identical = FALSE;
|
all_identical = FALSE;
|
||||||
|
|
||||||
if (!bcron) {
|
sprintf(str, "ID%d:\t%s. ", message_id,
|
||||||
rsprintf("ID%d:\t%s.\n\t", message_id,
|
loc("Entry has been changed locally and remotely"));
|
||||||
loc("Entry has been changed locally and remotely"));
|
sprintf(str+strlen(str), loc("Please delete %s or %s entry to resolve conflict"),
|
||||||
rsprintf(loc("Please delete %s or %s entry to resolve conflict"),
|
loc_ref, rem_ref);
|
||||||
loc_ref, rem_ref);
|
strcat(str, ".");
|
||||||
rsprintf(".\n");
|
mprint(lbs, mode, str);
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
@ -11345,13 +11461,11 @@ void synchronize_logbook(LOGBOOK * lbs, BOOL bcron)
|
|||||||
|
|
||||||
/* not that submit_message() may have changed attr_list !!! */
|
/* not that submit_message() may have changed attr_list !!! */
|
||||||
|
|
||||||
if (error_str[0]) {
|
if (error_str[0])
|
||||||
if (bcron)
|
sprintf(str, "%s: %s", loc("Error sending local message"), error_str);
|
||||||
logf(lbs, "Error sending local message: %s", error_str);
|
else
|
||||||
else
|
sprintf(str, "ID%d:\t%s", message_id, loc("Local entry submitted"));
|
||||||
rsprintf("%s: %s\n", loc("Error sending local message"), error_str);
|
mprint(lbs, mode, str);
|
||||||
} else if (!bcron)
|
|
||||||
rsprintf("ID%d:\t%s\n", message_id, loc("Local entry submitted"));
|
|
||||||
|
|
||||||
md5_cache[i_cache].message_id = -1;
|
md5_cache[i_cache].message_id = -1;
|
||||||
|
|
||||||
@ -11367,8 +11481,8 @@ void synchronize_logbook(LOGBOOK * lbs, BOOL bcron)
|
|||||||
el_delete_message(lbs, message_id, TRUE, NULL, TRUE, TRUE);
|
el_delete_message(lbs, message_id, TRUE, NULL, TRUE, TRUE);
|
||||||
all_identical = FALSE;
|
all_identical = FALSE;
|
||||||
|
|
||||||
if (!bcron)
|
sprintf(str, "ID%d:\t%s", message_id, loc("Entry deleted locally"));
|
||||||
rsprintf("ID%d:\t%s\n", message_id, loc("Entry deleted locally"));
|
mprint(lbs, mode, str);
|
||||||
|
|
||||||
/* message got deleted from local message list, so redo current index */
|
/* message got deleted from local message list, so redo current index */
|
||||||
i_msg--;
|
i_msg--;
|
||||||
@ -11391,19 +11505,16 @@ void synchronize_logbook(LOGBOOK * lbs, BOOL bcron)
|
|||||||
all_identical = FALSE;
|
all_identical = FALSE;
|
||||||
|
|
||||||
if (remote_id != message_id) {
|
if (remote_id != message_id) {
|
||||||
if (bcron)
|
sprintf(str, "Error: Submitting entry #%d resulted in remote entry #%d\n",
|
||||||
logf(lbs, "Error: Submitting entry #%d resulted in remote entry #%d\n",
|
|
||||||
message_id, remote_id);
|
message_id, remote_id);
|
||||||
|
mprint(lbs, mode, str);
|
||||||
|
} else {
|
||||||
|
if (error_str[0])
|
||||||
|
sprintf(str, "%s: %s", loc("Error sending local entry"), error_str);
|
||||||
else
|
else
|
||||||
rsprintf("Error: Submitting entry #%d resulted in remote entry #%d\n",
|
sprintf(str, "ID%d:\t%s", message_id, loc("Local entry submitted"));
|
||||||
message_id, remote_id);
|
mprint(lbs, mode, str);
|
||||||
} else if (error_str[0]) {
|
}
|
||||||
if (bcron)
|
|
||||||
logf(lbs, "%s: %s", loc("Error sending local entry"), error_str);
|
|
||||||
else
|
|
||||||
rsprintf("%s: %s\n", loc("Error sending local entry"), error_str);
|
|
||||||
} else if (!bcron)
|
|
||||||
rsprintf("ID%d:\t%s\n", message_id, loc("Local entry submitted"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if message does not exist in cache but remotely,
|
/* if message does not exist in cache but remotely,
|
||||||
@ -11431,10 +11542,9 @@ void synchronize_logbook(LOGBOOK * lbs, BOOL bcron)
|
|||||||
el_move_message(lbs, message_id, max_id + 1);
|
el_move_message(lbs, message_id, max_id + 1);
|
||||||
all_identical = FALSE;
|
all_identical = FALSE;
|
||||||
|
|
||||||
if (!bcron) {
|
sprintf(str, "ID%d:\t", message_id);
|
||||||
sprintf(str, loc("Changed local entry ID to %d"), max_id + 1);
|
sprintf(str+strlen(str), loc("Changed local entry ID to %d"), max_id + 1);
|
||||||
rsprintf("ID%d:\t%s\n", message_id, str);
|
mprint(lbs, mode, str);
|
||||||
}
|
|
||||||
|
|
||||||
/* current message has been changed, so start over */
|
/* current message has been changed, so start over */
|
||||||
i_msg--;
|
i_msg--;
|
||||||
@ -11471,11 +11581,9 @@ void synchronize_logbook(LOGBOOK * lbs, BOOL bcron)
|
|||||||
all_identical = FALSE;
|
all_identical = FALSE;
|
||||||
|
|
||||||
if (error_str[0]) {
|
if (error_str[0]) {
|
||||||
if (bcron)
|
sprintf(str, "Error receiving message: %s", error_str);
|
||||||
logf(lbs, "Error receiving message: %s", error_str);
|
mprint(lbs, mode, str);
|
||||||
else
|
} else if (mode == SYNC_HTML) {
|
||||||
rsprintf("Error receiving message: %s\n", error_str);
|
|
||||||
} else if (!bcron) {
|
|
||||||
|
|
||||||
if (getcfg_topgroup())
|
if (getcfg_topgroup())
|
||||||
rsprintf("<a href=\"../%s/%d\">ID%d:</a>\t", lbs->name_enc,
|
rsprintf("<a href=\"../%s/%d\">ID%d:</a>\t", lbs->name_enc,
|
||||||
@ -11498,11 +11606,9 @@ void synchronize_logbook(LOGBOOK * lbs, BOOL bcron)
|
|||||||
all_identical = FALSE;
|
all_identical = FALSE;
|
||||||
|
|
||||||
if (error_str[0]) {
|
if (error_str[0]) {
|
||||||
if (bcron)
|
sprintf(str, "Error receiving message: %s", error_str);
|
||||||
logf(lbs, "Error receiving message: %s", error_str);
|
mprint(lbs, mode, str);
|
||||||
else
|
} else if (mode == SYNC_HTML) {
|
||||||
rsprintf("Error receiving message: %s\n", error_str);
|
|
||||||
} else if (!bcron) {
|
|
||||||
|
|
||||||
if (getcfg_topgroup())
|
if (getcfg_topgroup())
|
||||||
rsprintf("<a href=\"../%s/%d\">ID%d:</a>\t", lbs->name_enc,
|
rsprintf("<a href=\"../%s/%d\">ID%d:</a>\t", lbs->name_enc,
|
||||||
@ -11529,17 +11635,15 @@ void synchronize_logbook(LOGBOOK * lbs, BOOL bcron)
|
|||||||
retrieve_url(url, &buffer, NULL);
|
retrieve_url(url, &buffer, NULL);
|
||||||
|
|
||||||
if (strstr(buffer, "Location: ")) {
|
if (strstr(buffer, "Location: ")) {
|
||||||
if (!bcron)
|
if (mode == SYNC_HTML)
|
||||||
rsprintf("ID%d:\t%s\n", message_id,
|
rsprintf("ID%d:\t%s\n", message_id,
|
||||||
loc("Entry deleted remotely"));
|
loc("Entry deleted remotely"));
|
||||||
} else {
|
} else {
|
||||||
if (bcron)
|
|
||||||
logf(lbs, "%s", loc("Error deleting remote entry"));
|
if (mode == SYNC_HTML && isparam("debug"))
|
||||||
else {
|
rsputs(buffer);
|
||||||
if (isparam("debug"))
|
|
||||||
rsputs(buffer);
|
mprint(lbs, mode, loc("Error deleting remote entry"));
|
||||||
rsprintf("%s\n", loc("Error deleting remote entry"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
free(buffer);
|
free(buffer);
|
||||||
@ -11587,26 +11691,25 @@ void synchronize_logbook(LOGBOOK * lbs, BOOL bcron)
|
|||||||
if (md5_cache)
|
if (md5_cache)
|
||||||
free(md5_cache);
|
free(md5_cache);
|
||||||
|
|
||||||
if (!bcron && all_identical)
|
if (mode == SYNC_HTML && all_identical)
|
||||||
rsprintf(loc("All entries identical"));
|
rsprintf(loc("All entries identical"));
|
||||||
|
|
||||||
if (!bcron)
|
if (mode == SYNC_HTML)
|
||||||
rsprintf("</pre>\n");
|
rsprintf("</pre>\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
flush_return_buffer();
|
flush_return_buffer();
|
||||||
keep_alive = 0;
|
keep_alive = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*------------------------------------------------------------------*/
|
/*------------------------------------------------------------------*/
|
||||||
|
|
||||||
void synchronize(LOGBOOK * lbs, BOOL bcron)
|
void synchronize(LOGBOOK * lbs, int mode)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
char str[256], pwd[256];
|
char str[256], pwd[256];
|
||||||
|
|
||||||
if (!bcron) {
|
if (mode == SYNC_HTML) {
|
||||||
show_html_header(NULL, FALSE, loc("Synchronization"), TRUE);
|
show_html_header(NULL, FALSE, loc("Synchronization"), TRUE);
|
||||||
rsprintf("<body>\n");
|
rsprintf("<body>\n");
|
||||||
}
|
}
|
||||||
@ -11621,7 +11724,7 @@ void synchronize(LOGBOOK * lbs, BOOL bcron)
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* if called by cron, set user name and password */
|
/* if called by cron, set user name and password */
|
||||||
if (bcron && getcfg(lb_list[i].name, "mirror user", str)) {
|
if (mode == SYNC_CRON && getcfg(lb_list[i].name, "mirror user", str)) {
|
||||||
if (get_user_line(lb_list[i].name, str, pwd, NULL, NULL, NULL) ==
|
if (get_user_line(lb_list[i].name, str, pwd, NULL, NULL, NULL) ==
|
||||||
EL_SUCCESS) {
|
EL_SUCCESS) {
|
||||||
setparam("unm", str);
|
setparam("unm", str);
|
||||||
@ -11629,12 +11732,12 @@ void synchronize(LOGBOOK * lbs, BOOL bcron)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
synchronize_logbook(&lb_list[i], bcron);
|
synchronize_logbook(&lb_list[i], mode);
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
synchronize_logbook(lbs, bcron);
|
synchronize_logbook(lbs, mode);
|
||||||
|
|
||||||
if (!bcron) {
|
if (mode == SYNC_HTML) {
|
||||||
rsprintf("<table width=\"100%%\" cellpadding=1 cellspacing=0");
|
rsprintf("<table width=\"100%%\" cellpadding=1 cellspacing=0");
|
||||||
rsprintf("<tr><td class=\"seltitle\"><a href=\".\">%s</a></td></tr>\n",
|
rsprintf("<tr><td class=\"seltitle\"><a href=\".\">%s</a></td></tr>\n",
|
||||||
loc("Back"));
|
loc("Back"));
|
||||||
@ -17184,7 +17287,7 @@ void interprete(char *lbook, char *path)
|
|||||||
if (is_logbook(str)) {
|
if (is_logbook(str)) {
|
||||||
/* redo index if logbooks in cfg file do not match lb_list */
|
/* redo index if logbooks in cfg file do not match lb_list */
|
||||||
if (!strieq(str, lb_list[j++].name)) {
|
if (!strieq(str, lb_list[j++].name)) {
|
||||||
el_index_logbooks(TRUE);
|
el_index_logbooks();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -17192,7 +17295,7 @@ void interprete(char *lbook, char *path)
|
|||||||
|
|
||||||
/* check for deleted logbook */
|
/* check for deleted logbook */
|
||||||
if (lb_list[j].name[0] != 0)
|
if (lb_list[j].name[0] != 0)
|
||||||
el_index_logbooks(TRUE);
|
el_index_logbooks();
|
||||||
|
|
||||||
/*---- direct commands (registration etc) ----*/
|
/*---- direct commands (registration etc) ----*/
|
||||||
|
|
||||||
@ -17275,7 +17378,7 @@ void interprete(char *lbook, char *path)
|
|||||||
|
|
||||||
/* check for global synchronization */
|
/* check for global synchronization */
|
||||||
if (strieq(command, "Synchronize")) {
|
if (strieq(command, "Synchronize")) {
|
||||||
synchronize(NULL, FALSE);
|
synchronize(NULL, SYNC_HTML);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -17878,7 +17981,7 @@ void interprete(char *lbook, char *path)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (strieq(command, loc("Synchronize"))) {
|
if (strieq(command, loc("Synchronize"))) {
|
||||||
synchronize(lbs, FALSE);
|
synchronize(lbs, SYNC_HTML);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -18233,7 +18336,7 @@ void check_cron()
|
|||||||
|
|
||||||
/* synchronize all logbooks */
|
/* synchronize all logbooks */
|
||||||
setcfg_topgroup("");
|
setcfg_topgroup("");
|
||||||
synchronize(NULL, TRUE);
|
synchronize(NULL, SYNC_CRON);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -18420,7 +18523,7 @@ void server_loop(int tcp_port, int daemon)
|
|||||||
/* load initial configuration */
|
/* load initial configuration */
|
||||||
check_config();
|
check_config();
|
||||||
/* build logbook indices */
|
/* build logbook indices */
|
||||||
if (el_index_logbooks(FALSE) != EL_SUCCESS)
|
if (el_index_logbooks() != EL_SUCCESS)
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
/* listen for connection */
|
/* listen for connection */
|
||||||
status = listen(lsock, SOMAXCONN);
|
status = listen(lsock, SOMAXCONN);
|
||||||
@ -19119,7 +19222,7 @@ void server_loop(int tcp_port, int daemon)
|
|||||||
if (_hup) {
|
if (_hup) {
|
||||||
/* reload configuration */
|
/* reload configuration */
|
||||||
check_config();
|
check_config();
|
||||||
el_index_logbooks(TRUE);
|
el_index_logbooks();
|
||||||
_hup = FALSE;
|
_hup = FALSE;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -19633,6 +19736,17 @@ int main(int argc, char *argv[])
|
|||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
} else {
|
} else {
|
||||||
printf("Remote configuration successfully received.\n");
|
printf("Remote configuration successfully received.\n");
|
||||||
|
|
||||||
|
/* adjust config file */
|
||||||
|
adjust_config(clone_url);
|
||||||
|
|
||||||
|
/* force re-read of config file */
|
||||||
|
check_config_file(TRUE);
|
||||||
|
el_index_logbooks();
|
||||||
|
|
||||||
|
/* synchronize all logbooks */
|
||||||
|
synchronize(NULL, SYNC_CLONE);
|
||||||
|
|
||||||
exit(EXIT_SUCCESS);
|
exit(EXIT_SUCCESS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user