コード例 #1
0
ファイル: afp_url.c プロジェクト: 007/afpfs-ng
int afp_url_validate(char * url_string, struct afp_url * valid_url)
{
	struct afp_url new_url;

	if (afp_parse_url(&new_url, url_string,0)) {
		printf("url doesn't parse\n");
		goto error;
	}

#if BROKEN

	if (new_url.protocol!=valid_url->protocol) {
		printf("protocol doesn't match, I got %d when I expected %d\n",
			new_url.protocol,valid_url->protocol);
		goto error;
	}
#endif

	if (strcmp(new_url.username, valid_url->username)!=0) {
		printf("username doesn't match, I got %s when I should have received %s\n",new_url.username, valid_url->username);
		goto error;
	}
	if (strcmp(new_url.uamname, valid_url->uamname)!=0) {
		printf("uamname doesn't match, I got %s when I should have received %s\n",new_url.uamname, valid_url->uamname);
		goto error;
	}

	if (strcmp(new_url.password, valid_url->password)!=0) {
		printf("password doesn't match, I got %s when I should have received %s\n",new_url.password, valid_url->password);
	goto error;
	}

	if (strcmp(new_url.servername, valid_url->servername)!=0) {
		printf("servername doesn't match, I got %s when I should have received %s\n",new_url.servername, valid_url->servername);
		goto error;
	}

	if (strcmp(new_url.volumename, valid_url->volumename)!=0) {
		printf("volumename doesn't match, I got %s when I should have received %s\n",new_url.volumename, valid_url->volumename);
		goto error;
	}
	return 0;
error:
	return -1;
}
コード例 #2
0
ファイル: cmdline_afp.c プロジェクト: hiplayer/afpfs-ng
int com_connect(char * arg)
{
	struct afp_url tmpurl;
	if (!arg)
		arg = "";

	if (server) {
		printf("You're already connected to a server\n");
		goto error;
	}

	afp_default_url(&tmpurl);

	/* First, try to parse the URL */
	
	if (afp_parse_url(&tmpurl,arg,0)!=0) {
		/* Okay, this isn't a real URL */
		printf("Could not parse url, let me see if this is a server name...\n");
		if (gethostbyname(arg)) 
			memcpy(&url.servername,arg,AFP_SERVER_NAME_LEN);
		else {
			printf("Cannot understand server name or url %s\n",arg);
			return -1;
		}
	} else {
		url=tmpurl;

	}
	cmdline_getpass();


	if (server_subconnect()) {
		printf("Could not connect\n");
		goto error;
	};

	connect_volume(url.volumename);

	return 0;
error:
	return -1;

}
コード例 #3
0
ファイル: client.c プロジェクト: 007/afpfs-ng
static int handle_mount_afp(int argc, char * argv[])
{
	struct afp_server_mount_request * req = (void *) outgoing_buffer+1;
	unsigned int uam_mask=default_uams_mask();
	char * urlstring, * mountpoint;
	char * volpass = NULL;
	int readonly=0;

	if (argc<2) {
		mount_afp_usage();
		return -1;
	}
	if (strncmp(argv[1],"-o",2)==0) {
		char * p = argv[2], *q;
		char command[256];
		struct passwd * passwd;
		struct group * group;
		
		do {
			memset(command,0,256);
			
			if ((q=strchr(p,','))) 
				strncpy(command,p,(q-p));
			else 
				strcpy(command,p);

			if (strncmp(command,"volpass="******"user="******"Unknown user %s\n",p);
					return -1;
				}
				uid=passwd->pw_uid;
				if (geteuid()!=uid)
					changeuid=1;
			} else if (strncmp(command,"group=",6)==0) {
				p=command+6;
				if ((group=getgrnam(p))==NULL) {
					printf("Unknown group %s\n",p);
					return -1;
				}
				gid=group->gr_gid;
				changegid=1;
			} else if (strcmp(command,"rw")==0) {
				/* Don't do anything */
			} else if (strcmp(command,"ro")==0) {
				readonly=1;
			} else {
				printf("Unknown option %s, skipping\n",command);
			}
		

			if (q) p=q+1;
			else p=NULL;

		} while (p);

		urlstring=argv[3];
		mountpoint=argv[4];
	} else {
		urlstring=argv[1];
		mountpoint=argv[2];
	}


	outgoing_len=sizeof(struct afp_server_mount_request)+1;
	memset(outgoing_buffer,0,outgoing_len);

	afp_default_url(&req->url);

	req->changeuid=changeuid;

	req->volume_options|=DEFAULT_MOUNT_FLAGS;
	if (readonly) req->volume_options |= VOLUME_EXTRA_FLAGS_READONLY;
	req->uam_mask=uam_mask;

	outgoing_buffer[0]=AFP_SERVER_COMMAND_MOUNT;
	req->map=AFP_MAPPING_UNKNOWN;
	snprintf(req->mountpoint,255,"%s",mountpoint);
	if (afp_parse_url(&req->url,urlstring,0) !=0) 
	{
		printf("Could not parse URL\n");
		return -1;
	}
	if (strcmp(req->url.password,"-")==0) {
		char *p = getpass("AFP Password: "******"%s",p);
	}

	if (volpass && (strcmp(volpass,"-")==0)) {
		volpass  = getpass("Password for volume: ");
	}
	if (volpass)
		snprintf(req->url.volpassword,9,"%s",volpass);

        return 0;
}