X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Futils%2Fctdlmigrate.c;h=2a9a2d817bcc3e0893da4231bfb81de64fe16e33;hb=c750a06a241dc2737fa68c24b340a1bd82894f74;hp=6a501761555760ead7cf8b83e61ab0fa67751802;hpb=b55730dc4ec7638231d6f56f2f53b178f1ba2c96;p=citadel.git diff --git a/citadel/utils/ctdlmigrate.c b/citadel/utils/ctdlmigrate.c index 6a5017615..2a9a2d817 100644 --- a/citadel/utils/ctdlmigrate.c +++ b/citadel/utils/ctdlmigrate.c @@ -5,7 +5,7 @@ * The scope of this program isn't wide enough to make a difference. If you don't like * it you can rewrite it. * - * Copyright (c) 2009-2012 citadel.org + * Copyright (c) 2009-2018 citadel.org * * This program is open source software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3. @@ -41,9 +41,6 @@ #include "sysdep.h" #include "config.h" #include "citadel_dirs.h" -#if HAVE_BACKTRACE -#include -#endif @@ -55,7 +52,7 @@ void getz(char *buf) { char *ptr; - ptr = fgets(buf, 32767, stdin); + ptr = fgets(buf, SIZ, stdin); if (!ptr) { buf[0] = 0; return; @@ -81,8 +78,8 @@ int main(int argc, char *argv[]) char cmd[PATH_MAX]; char buf[PATH_MAX]; char socket_path[PATH_MAX]; - char remote_user[256]; - char remote_host[256]; + char remote_user[SIZ]; + char remote_host[SIZ]; char remote_sendcommand[PATH_MAX]; FILE *sourcefp = NULL; FILE *targetfp = NULL; @@ -102,7 +99,7 @@ int main(int argc, char *argv[]) "to a new host system via a network connection, without disturbing\n" "the source system. The target may be a different CPU architecture\n" "and/or operating system. The source system should be running\n" - "Citadel %d.%02d or newer, and the target system should be running\n" + "Citadel version %d or newer, and the target system should be running\n" "either the same version or a newer version. You will also need\n" "the 'rsync' utility, and OpenSSH v4 or newer.\n" "\n" @@ -111,8 +108,7 @@ int main(int argc, char *argv[]) "\n" "Do you wish to continue? " , - EXPORT_REV_MIN / 100, - EXPORT_REV_MIN % 100 + EXPORT_REV_MIN ); if ((fgets(yesno, sizeof yesno, stdin) == NULL) || (tolower(yesno[0]) != 'y')) { @@ -137,10 +133,14 @@ int main(int argc, char *argv[]) "(example: ctdl.foo.org)\n" "--> "); getz(remote_host); + +get_remote_user: printf("\nEnter the name of a user on %s who has full access to Citadel files\n" "(usually root)\n--> ", remote_host); getz(remote_user); + if (IsEmptyStr(remote_user)) + goto get_remote_user; printf("\nEstablishing an SSH connection to the source system...\n\n"); unlink(socket_path); @@ -194,6 +194,8 @@ int main(int argc, char *argv[]) } printf("ctdlmigrate will now begin a database migration...\n"); + printf(" if the system doesn't start working, \n"); + printf(" have a look at the syslog for pending jobs needing to be terminated.\n"); snprintf(cmd, sizeof cmd, "ssh -S %s %s@%s %s -w3600 MIGR export", socket_path, remote_user, remote_host, remote_sendcommand); @@ -242,38 +244,18 @@ FAIL: if (sourcefp) pclose(sourcefp); while ((fgets(buf, sizeof buf, sourcefp)) && (strcmp(buf, "000"))) { buf[strlen(buf)-1] = 0; - if (!strncasecmp(buf, "bio|", 4)) { - snprintf(cmd, sizeof cmd, "rsync -va --rsh='ssh -S %s' %s@%s:%s/ %s/", - socket_path, remote_user, remote_host, &buf[4], ctdl_bio_dir); - } - else if (!strncasecmp(buf, "files|", 6)) { + if (!strncasecmp(buf, "files|", 6)) { snprintf(cmd, sizeof cmd, "rsync -va --rsh='ssh -S %s' %s@%s:%s/ %s/", socket_path, remote_user, remote_host, &buf[6], ctdl_file_dir); } - else if (!strncasecmp(buf, "userpics|", 9)) { - snprintf(cmd, sizeof cmd, "rsync -va --rsh='ssh -S %s' %s@%s:%s/ %s/", - socket_path, remote_user, remote_host, &buf[9], ctdl_usrpic_dir); - } else if (!strncasecmp(buf, "messages|", 9)) { snprintf(cmd, sizeof cmd, "rsync -va --rsh='ssh -S %s' %s@%s:%s/ %s/", socket_path, remote_user, remote_host, &buf[9], ctdl_message_dir); } - else if (!strncasecmp(buf, "netconfigs|", 11)) { - snprintf(cmd, sizeof cmd, "rsync -va --rsh='ssh -S %s' %s@%s:%s/ %s/", - socket_path, remote_user, remote_host, &buf[11], ctdl_netcfg_dir); - } else if (!strncasecmp(buf, "keys|", 5)) { snprintf(cmd, sizeof cmd, "rsync -va --rsh='ssh -S %s' %s@%s:%s/ %s/", socket_path, remote_user, remote_host, &buf[5], ctdl_key_dir); } - else if (!strncasecmp(buf, "images|", 7)) { - snprintf(cmd, sizeof cmd, "rsync -va --rsh='ssh -S %s' %s@%s:%s/ %s/", - socket_path, remote_user, remote_host, &buf[7], ctdl_image_dir); - } - else if (!strncasecmp(buf, "info|", 5)) { - snprintf(cmd, sizeof cmd, "rsync -va --rsh='ssh -S %s' %s@%s:%s/ %s/", - socket_path, remote_user, remote_host, &buf[5], ctdl_info_dir); - } else { strcpy(cmd, "false"); /* cheap and sleazy way to throw an error */ }