Example #1
0
INT64_T chirp_thirdput(const char *subject, const char *lpath, const char *hostname, const char *rpath, time_t stoptime)
{
	INT64_T result;
	time_t start, stop;
	char hostsubject[CHIRP_PATH_MAX];

	result = chirp_reli_whoami(hostname, hostsubject, sizeof(hostsubject), stoptime);
	if(result < 0)
		return result;

	debug(D_DEBUG, "thirdput: sending %s to /chirp/%s/%s", lpath, hostname, rpath);

	start = time(0);
	result = chirp_thirdput_recursive(subject, lpath, hostname, rpath, hostsubject, stoptime);
	stop = time(0);

	if(stop == start)
		stop++;

	if(result >= 0) {
		debug(D_DEBUG, "thirdput: sent %"PRId64" bytes in %d seconds (%.1lfMB/s)", result, (int) (stop - start), result / (double) (stop - start));
	} else {
		debug(D_DEBUG, "thirdput: error: %s\n", strerror(errno));
	}

	return result;
}
Example #2
0
INT64_T chirp_multi_whoami(const char *volume, char *buf, INT64_T length, time_t stoptime)
{
	char lpath[CHIRP_PATH_MAX];
	if(!chirp_multi_lpath(volume, "/", lpath, stoptime))
		return -1;
	return chirp_reli_whoami(current_volume->host, buf, length, stoptime);
}
Example #3
0
static INT64_T do_whoami(int argc, char **argv)
{
	char name[CHIRP_LINE_MAX];
	int result;

	result = chirp_reli_whoami(current_host, name, sizeof(name), stoptime);
	if(result >= 0) {
		name[result] = 0;
		printf("%s\n", name);
	}
	return result;
}
Example #4
0
static INT64_T do_open(int argc, char **argv)
{
	do_close(0, 0);

	if(chirp_reli_whoami(argv[1], current_subject, sizeof(current_subject), stoptime) >= 0) {
		strcpy(current_host, argv[1]);
		strcpy(current_remote_dir, "/");
		if(interactive_mode)
			fprintf(stderr, "connected to %s as %s\n", current_host, current_subject);
		return 0;
	} else {
		return -1;
	}
}
Example #5
0
INT64_T chirp_global_whoami(const char *host, const char *path, char *buf, INT64_T length, time_t stoptime)
{
	if(is_multi_path(host)) {
		char mhost[CHIRP_PATH_MAX];
		char mpath[CHIRP_PATH_MAX];
		parse_multi_path(path, mhost, mpath);
		return chirp_multi_whoami(mhost, buf, length, stoptime);
	} else if(not_empty(host)) {
		return chirp_reli_whoami(host, buf, length, stoptime);
	} else {
		errno = EINVAL;
		return -1;
	}
}
Example #6
0
		"UPDATE Confuga.StorageNode"
		"	SET initialized = 1"
		"	WHERE hostport = ?1;";

	int rc;
	sqlite3 *db = C->db;
	sqlite3_stmt *stmt = NULL;
	const char *current = SQL;

	char template[CHIRP_PATH_MAX];
	time_t stoptime = STOPTIME_SHORT;
	char whoami[128];

	debug(D_CONFUGA, "initializing %s/%s", host->hostport, host->root);

	CATCHUNIX(chirp_reli_whoami(host->hostport, whoami, sizeof(whoami), stoptime));

	CATCHUNIXIGNORE(chirp_reli_mkdir_recursive(host->hostport, host->root, S_IRWXU, stoptime), EEXIST);

	CATCHUNIX(snprintf(template, sizeof(template), "%s/file", host->root));
	CATCHUNIXIGNORE(chirp_reli_mkdir(host->hostport, template, S_IRWXU, stoptime), EEXIST);
	CATCHUNIX(chirp_reli_setacl(host->hostport, template, whoami, "rwldpa", stoptime));

	CATCHUNIX(snprintf(template, sizeof(template), "%s/file/" CONFUGA_FID_PRIFMT, host->root, CONFUGA_FID_PRIARGS(empty)));
	CATCHUNIXIGNORE(chirp_reli_putfile_buffer(host->hostport, template, "", S_IRUSR, 0, stoptime), EEXIST);

	CATCHUNIX(snprintf(template, sizeof(template), "%s/open", host->root));
	CATCHUNIXIGNORE(chirp_reli_mkdir(host->hostport, template, S_IRWXU, stoptime), EEXIST);
	CATCHUNIX(chirp_reli_setacl(host->hostport, template, whoami, "rwldpa", stoptime));

	CATCHUNIX(snprintf(template, sizeof(template), "%s/tickets", host->root));