@@ -650,7 +650,7 @@ main_backup(int argc, char **argv)
return failure(500, errno, "Failed chdir('/')");
execl("/sbin/sysupgrade", "/sbin/sysupgrade",
- "--create-backup", "-", NULL);
+ "-k", "--create-backup", "-", NULL);
return -1;
@@ -658,15 +658,31 @@ main_backup(int argc, char **argv)
close(fds[1]);
now = time(NULL);
- strftime(datestr, sizeof(datestr) - 1, "%Y-%m-%d", localtime(&now));
+ strftime(datestr, sizeof(datestr) - 1, "%Y-%m-%d_%H%M", localtime(&now));
if (gethostname(hostname, sizeof(hostname) - 1))
sprintf(hostname, "OpenWrt");
+ else {
+ for (int i=0; i<(int)strlen(hostname); i++)
+ if (hostname[i] == '.') {
+ hostname[i] = '\0';
+ break;
+ }
+ }
+
+ char version[32] = "UNKNOWN";
+ FILE *fp;
+ if ((fp = fopen("/etc/openwrt_version", "r")) != NULL) {
+ if (fgets(version, sizeof(version), fp) == version)
+ if (version[strlen(version)-1] == '\n' )
+ version[strlen(version)-1] = '\0';
+ fclose(fp);
+ }
printf("Status: 200 OK\r\n");
printf("Content-Type: application/x-targz\r\n");
printf("Content-Disposition: attachment; "
- "filename=\"backup-%s-%s.tar.gz\"\r\n\r\n", hostname, datestr);
+ "filename=\"backup_%s_%s_%s.tgz\"\r\n\r\n", hostname, version, datestr);
fflush(stdout);