亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? net_rpc_printer.c

?? samba-3.0.22.tar.gz 編譯smb服務器的源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
/*    Samba Unix/Linux SMB client library    Distributed SMB/CIFS Server Management Utility    Copyright (C) 2004 Guenther Deschner (gd@samba.org)   This program is free software; you can redistribute it and/or modify   it under the terms of the GNU General Public License as published by   the Free Software Foundation; either version 2 of the License, or   (at your option) any later version.      This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.      You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */ #include "includes.h"#include "utils/net.h"struct table_node {	const char *long_archi;	const char *short_archi;	int version;};/* support itanium as well */static const struct table_node archi_table[]= {	{"Windows 4.0",          "WIN40",	0 },	{"Windows NT x86",       "W32X86",	2 },	{"Windows NT x86",       "W32X86",	3 },	{"Windows NT R4000",     "W32MIPS",	2 },	{"Windows NT Alpha_AXP", "W32ALPHA",	2 },	{"Windows NT PowerPC",   "W32PPC",	2 },	{"Windows IA64",         "IA64",	3 },	{"Windows x64",          "x64",		3 },	{NULL,                   "",		-1 }};/** * The display-functions for Security-Descriptors were taken from rpcclient *  * They reside here for debugging purpose and should  * possibly be removed later on * **//**************************************************************************** Convert a security permissions into a string.****************************************************************************/char *get_sec_mask_str(uint32 type){	static fstring typestr="";	typestr[0] = 0;	if (type & GENERIC_ALL_ACCESS)		fstrcat(typestr, "Generic all access ");	if (type & GENERIC_EXECUTE_ACCESS)		fstrcat(typestr, "Generic execute access ");	if (type & GENERIC_WRITE_ACCESS)		fstrcat(typestr, "Generic write access ");	if (type & GENERIC_READ_ACCESS)		fstrcat(typestr, "Generic read access ");	if (type & MAXIMUM_ALLOWED_ACCESS)		fstrcat(typestr, "MAXIMUM_ALLOWED_ACCESS ");	if (type & SYSTEM_SECURITY_ACCESS)		fstrcat(typestr, "SYSTEM_SECURITY_ACCESS ");	if (type & SYNCHRONIZE_ACCESS)		fstrcat(typestr, "SYNCHRONIZE_ACCESS ");	if (type & WRITE_OWNER_ACCESS)		fstrcat(typestr, "WRITE_OWNER_ACCESS ");	if (type & WRITE_DAC_ACCESS)		fstrcat(typestr, "WRITE_DAC_ACCESS ");	if (type & READ_CONTROL_ACCESS)		fstrcat(typestr, "READ_CONTROL_ACCESS ");	if (type & DELETE_ACCESS)		fstrcat(typestr, "DELETE_ACCESS ");	printf("\t\tSpecific bits: 0x%lx\n", (unsigned long)type&SPECIFIC_RIGHTS_MASK);	return typestr;}/**************************************************************************** Display sec_ace structure. ****************************************************************************/void display_sec_ace(SEC_ACE *ace){	fstring sid_str;	printf("\tACE\n\t\ttype: ");	switch (ace->type) {		case SEC_ACE_TYPE_ACCESS_ALLOWED:			printf("ACCESS ALLOWED");			break;		case SEC_ACE_TYPE_ACCESS_DENIED:			printf("ACCESS DENIED");			break;		case SEC_ACE_TYPE_SYSTEM_AUDIT:			printf("SYSTEM AUDIT");			break;		case SEC_ACE_TYPE_SYSTEM_ALARM:			printf("SYSTEM ALARM");			break;		default:			printf("????");			break;	}	printf(" (%d) flags: %d\n", ace->type, ace->flags);	printf("\t\tPermissions: 0x%x: %s\n", ace->info.mask, get_sec_mask_str(ace->info.mask));	sid_to_string(sid_str, &ace->trustee);	printf("\t\tSID: %s\n\n", sid_str);}/**************************************************************************** Display sec_acl structure. ****************************************************************************/void display_sec_acl(SEC_ACL *sec_acl){	int i;	printf("\tACL\tNum ACEs:\t%d\trevision:\t%x\n",			 sec_acl->num_aces, sec_acl->revision); 	printf("\t---\n");	if (sec_acl->size != 0 && sec_acl->num_aces != 0)		for (i = 0; i < sec_acl->num_aces; i++)			display_sec_ace(&sec_acl->ace[i]);				}/**************************************************************************** Display sec_desc structure. ****************************************************************************/void display_sec_desc(SEC_DESC *sec){	fstring sid_str;	if (sec == NULL)		return;	if (sec->sacl) {		printf("SACL\n");		display_sec_acl(sec->sacl);	}	if (sec->dacl) {		printf("DACL\n");		display_sec_acl(sec->dacl);	}	if (sec->owner_sid) {		sid_to_string(sid_str, sec->owner_sid);		printf("\tOwner SID:\t%s\n", sid_str);	}	if (sec->grp_sid) {		sid_to_string(sid_str, sec->grp_sid);		printf("\tParent SID:\t%s\n", sid_str);	}}/** * This display-printdriver-functions was borrowed from rpcclient/cmd_spoolss.c. * It is here for debugging purpose and should be removed later on. **//**************************************************************************** Printer info level 3 display function.****************************************************************************/static void display_print_driver_3(DRIVER_INFO_3 *i1){	fstring name = "";	fstring architecture = "";	fstring driverpath = "";	fstring datafile = "";	fstring configfile = "";	fstring helpfile = "";	fstring dependentfiles = "";	fstring monitorname = "";	fstring defaultdatatype = "";		int length=0;	BOOL valid = True;		if (i1 == NULL)		return;	rpcstr_pull(name, i1->name.buffer, sizeof(name), -1, STR_TERMINATE);	rpcstr_pull(architecture, i1->architecture.buffer, sizeof(architecture), -1, STR_TERMINATE);	rpcstr_pull(driverpath, i1->driverpath.buffer, sizeof(driverpath), -1, STR_TERMINATE);	rpcstr_pull(datafile, i1->datafile.buffer, sizeof(datafile), -1, STR_TERMINATE);	rpcstr_pull(configfile, i1->configfile.buffer, sizeof(configfile), -1, STR_TERMINATE);	rpcstr_pull(helpfile, i1->helpfile.buffer, sizeof(helpfile), -1, STR_TERMINATE);	rpcstr_pull(monitorname, i1->monitorname.buffer, sizeof(monitorname), -1, STR_TERMINATE);	rpcstr_pull(defaultdatatype, i1->defaultdatatype.buffer, sizeof(defaultdatatype), -1, STR_TERMINATE);	d_printf ("Printer Driver Info 3:\n");	d_printf ("\tVersion: [%x]\n", i1->version);	d_printf ("\tDriver Name: [%s]\n",name);	d_printf ("\tArchitecture: [%s]\n", architecture);	d_printf ("\tDriver Path: [%s]\n", driverpath);	d_printf ("\tDatafile: [%s]\n", datafile);	d_printf ("\tConfigfile: [%s]\n", configfile);	d_printf ("\tHelpfile: [%s]\n\n", helpfile);	while (valid) {		rpcstr_pull(dependentfiles, i1->dependentfiles+length, sizeof(dependentfiles), -1, STR_TERMINATE);				length+=strlen(dependentfiles)+1;				if (strlen(dependentfiles) > 0) {			d_printf ("\tDependentfiles: [%s]\n", dependentfiles);		} else {			valid = False;		}	}		printf ("\n");	d_printf ("\tMonitorname: [%s]\n", monitorname);	d_printf ("\tDefaultdatatype: [%s]\n\n", defaultdatatype);	return;	}static void display_reg_value(const char *subkey, REGISTRY_VALUE value){	pstring text;	switch(value.type) {	case REG_DWORD:		d_printf("\t[%s:%s]: REG_DWORD: 0x%08x\n", subkey, value.valuename, 		       *((uint32 *) value.data_p));		break;	case REG_SZ:		rpcstr_pull(text, value.data_p, sizeof(text), value.size,			    STR_TERMINATE);		d_printf("\t[%s:%s]: REG_SZ: %s\n", subkey, value.valuename, text);		break;	case REG_BINARY: 		d_printf("\t[%s:%s]: REG_BINARY: unknown length value not displayed\n", 			 subkey, value.valuename);		break;	case REG_MULTI_SZ: {		uint16 *curstr = (uint16 *) value.data_p;		uint8 *start = value.data_p;		d_printf("\t[%s:%s]: REG_MULTI_SZ:\n", subkey, value.valuename);		while ((*curstr != 0) && 		       ((uint8 *) curstr < start + value.size)) {			rpcstr_pull(text, curstr, sizeof(text), -1, 				    STR_TERMINATE);			d_printf("%s\n", text);			curstr += strlen(text) + 1;		}	}	break;	default:		d_printf("\t%s: unknown type %d\n", value.valuename, value.type);	}	}/** * Copies ACLs, DOS-attributes and timestamps from one  * file or directory from one connected share to another connected share  * * @param mem_ctx		A talloc-context * @param cli_share_src		A connected cli_state  * @param cli_share_dst		A connected cli_state  * @param src_file		The source file-name * @param dst_file		The destination file-name * @param copy_acls		Whether to copy acls * @param copy_attrs		Whether to copy DOS attributes * @param copy_timestamps	Whether to preserve timestamps * @param is_file		Whether this file is a file or a dir * * @return Normal NTSTATUS return. **/ NTSTATUS net_copy_fileattr(TALLOC_CTX *mem_ctx,		  struct cli_state *cli_share_src,		  struct cli_state *cli_share_dst, 		  const char *src_name, const char *dst_name,		  BOOL copy_acls, BOOL copy_attrs,		  BOOL copy_timestamps, BOOL is_file){	NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;	int fnum_src = 0;	int fnum_dst = 0;	SEC_DESC *sd = NULL;	uint16 attr;	time_t f_atime, f_ctime, f_mtime;	if (!copy_timestamps && !copy_acls && !copy_attrs)		return NT_STATUS_OK;	/* open file/dir on the originating server */	DEBUGADD(3,("opening %s %s on originating server\n", 		is_file?"file":"dir", src_name));	fnum_src = cli_nt_create(cli_share_src, src_name, READ_CONTROL_ACCESS);	if (fnum_src == -1) {		DEBUGADD(0,("cannot open %s %s on originating server %s\n", 			is_file?"file":"dir", src_name, cli_errstr(cli_share_src)));		nt_status = cli_nt_error(cli_share_src);		goto out;	}	if (copy_acls) {		/* get the security descriptor */		sd = cli_query_secdesc(cli_share_src, fnum_src, mem_ctx);		if (!sd) {			DEBUG(0,("failed to get security descriptor: %s\n",				cli_errstr(cli_share_src)));			nt_status = cli_nt_error(cli_share_src);			goto out;		}		if (opt_verbose && DEBUGLEVEL >= 3)			display_sec_desc(sd);	}	if (copy_attrs || copy_timestamps) {		/* get file attributes */		if (!cli_getattrE(cli_share_src, fnum_src, &attr, NULL, 				 &f_ctime, &f_atime, &f_mtime)) {			DEBUG(0,("failed to get file-attrs: %s\n", 				cli_errstr(cli_share_src)));			nt_status = cli_nt_error(cli_share_src);			goto out;		}	}	/* open the file/dir on the destination server */ 	fnum_dst = cli_nt_create(cli_share_dst, dst_name, WRITE_DAC_ACCESS | WRITE_OWNER_ACCESS);	if (fnum_dst == -1) {		DEBUG(0,("failed to open %s on the destination server: %s: %s\n",			is_file?"file":"dir", dst_name, cli_errstr(cli_share_dst)));		nt_status = cli_nt_error(cli_share_dst);		goto out;	}	if (copy_timestamps) {		/* set timestamps */		if (!cli_setattrE(cli_share_dst, fnum_dst, f_ctime, f_atime, f_mtime)) {			DEBUG(0,("failed to set file-attrs (timestamps): %s\n",				cli_errstr(cli_share_dst)));			nt_status = cli_nt_error(cli_share_dst);			goto out;		}	}	if (copy_acls) {		/* set acls */		if (!cli_set_secdesc(cli_share_dst, fnum_dst, sd)) {			DEBUG(0,("could not set secdesc on %s: %s\n",				dst_name, cli_errstr(cli_share_dst)));			nt_status = cli_nt_error(cli_share_dst);			goto out;		}	}	if (copy_attrs) {		/* set attrs */		if (!cli_setatr(cli_share_dst, dst_name, attr, 0)) {			DEBUG(0,("failed to set file-attrs: %s\n",				cli_errstr(cli_share_dst)));			nt_status = cli_nt_error(cli_share_dst);			goto out;		}	}	/* closing files */	if (!cli_close(cli_share_src, fnum_src)) {		d_fprintf(stderr, "could not close %s on originating server: %s\n", 			is_file?"file":"dir", cli_errstr(cli_share_src));		nt_status = cli_nt_error(cli_share_src);		goto out;	}	if (!cli_close(cli_share_dst, fnum_dst)) {		d_fprintf(stderr, "could not close %s on destination server: %s\n", 			is_file?"file":"dir", cli_errstr(cli_share_dst));		nt_status = cli_nt_error(cli_share_dst);		goto out;	}	nt_status = NT_STATUS_OK;out:	/* cleaning up */	if (fnum_src)		cli_close(cli_share_src, fnum_src);	if (fnum_dst)		cli_close(cli_share_dst, fnum_dst);	return nt_status;}/** * Copy a file or directory from a connected share to another connected share  * * @param mem_ctx		A talloc-context * @param cli_share_src		A connected cli_state  * @param cli_share_dst		A connected cli_state  * @param src_file		The source file-name * @param dst_file		The destination file-name * @param copy_acls		Whether to copy acls * @param copy_attrs		Whether to copy DOS attributes * @param copy_timestamps	Whether to preserve timestamps * @param is_file		Whether this file is a file or a dir * * @return Normal NTSTATUS return. **/ NTSTATUS net_copy_file(TALLOC_CTX *mem_ctx,		       struct cli_state *cli_share_src,		       struct cli_state *cli_share_dst, 		       const char *src_name, const char *dst_name,		       BOOL copy_acls, BOOL copy_attrs,		       BOOL copy_timestamps, BOOL is_file){	NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;	int fnum_src = 0;	int fnum_dst = 0;	static int io_bufsize = 64512;	int read_size = io_bufsize;	char *data = NULL;	off_t start = 0;	off_t nread = 0;	if (!src_name || !dst_name)		goto out;	if (cli_share_src == NULL || cli_share_dst == NULL)		goto out; 			/* open on the originating server */	DEBUGADD(3,("opening %s %s on originating server\n", 		is_file ? "file":"dir", src_name));	if (is_file)		fnum_src = cli_open(cli_share_src, src_name, O_RDONLY, DENY_NONE);	else		fnum_src = cli_nt_create(cli_share_src, src_name, READ_CONTROL_ACCESS);	if (fnum_src == -1) {		DEBUGADD(0,("cannot open %s %s on originating server %s\n",			is_file ? "file":"dir",			src_name, cli_errstr(cli_share_src)));		nt_status = cli_nt_error(cli_share_src);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区伦理| 成人高清视频在线观看| 91美女福利视频| 中文字幕国产精品一区二区| 日本sm残虐另类| 日韩欧美国产系列| 麻豆免费精品视频| 日韩一区二区三区免费观看| 日本特黄久久久高潮| 日韩一区二区三区在线视频| 亚洲成人高清在线| 欧美一区二区三区四区高清 | 99精品久久免费看蜜臀剧情介绍| 久久久三级国产网站| 国产·精品毛片| 在线这里只有精品| 亚洲一区二区三区视频在线播放| 99精品视频中文字幕| 天堂蜜桃一区二区三区| 欧美精品一区二区三区四区| 国产综合成人久久大片91| 精品日产卡一卡二卡麻豆| 国产成人在线色| 亚洲欧美偷拍另类a∨色屁股| 欧美色偷偷大香| 国产精品自产自拍| 亚洲一区二区三区在线看| 欧美精品一二三| 国产91精品露脸国语对白| 一区二区不卡在线视频 午夜欧美不卡在| 精品视频免费在线| 成人午夜av在线| 日本中文一区二区三区| 精品av综合导航| 日本国产一区二区| 国产在线播放一区二区三区| 亚洲一区日韩精品中文字幕| 久久美女高清视频| 51久久夜色精品国产麻豆| 成人污污视频在线观看| 男女视频一区二区| 亚洲成a人v欧美综合天堂下载| 国产欧美日韩视频一区二区| 欧美一区二区三区四区高清| 在线欧美小视频| 日本道在线观看一区二区| 成人激情av网| 成人激情图片网| 蜜臀国产一区二区三区在线播放| 国产精品国产精品国产专区不片| 欧美撒尿777hd撒尿| 94色蜜桃网一区二区三区| 成人精品鲁一区一区二区| 久久99最新地址| 寂寞少妇一区二区三区| 日韩av一区二区在线影视| 亚洲不卡一区二区三区| 一区二区三区.www| 亚洲成人综合网站| 亚洲高清在线视频| 久久精品国产亚洲5555| 国产成人8x视频一区二区| 粉嫩aⅴ一区二区三区四区五区 | 欧美一区国产二区| 欧美日韩精品一区二区三区| 欧美性大战久久| 久久夜色精品国产欧美乱极品| 精品久久久网站| 最新成人av在线| 视频一区欧美日韩| 国产成人啪午夜精品网站男同| 国产一区二区三区综合| 91丨porny丨户外露出| 欧美日韩成人综合天天影院| 欧美色精品天天在线观看视频| 老司机精品视频导航| 国产精品中文字幕日韩精品| av综合在线播放| 日韩欧美久久久| www国产成人免费观看视频 深夜成人网| 国产亚洲一区二区在线观看| 亚洲一二三四久久| 福利一区福利二区| 69久久99精品久久久久婷婷| 中文字幕一区日韩精品欧美| 麻豆91在线看| 欧美日韩在线一区二区| 国产精品午夜在线| 久久爱www久久做| 欧美精品在线一区二区三区| 亚洲视频每日更新| 国产精品夜夜爽| 久久色中文字幕| 国内精品久久久久影院薰衣草 | 日韩av电影天堂| 91国内精品野花午夜精品| 久久久久9999亚洲精品| 久久疯狂做爰流白浆xx| 欧美一级一区二区| 亚洲不卡一区二区三区| 在线看一区二区| 一区二区日韩电影| 91在线观看美女| 日韩理论片一区二区| www.爱久久.com| 亚洲一区二区三区四区在线| 97久久超碰精品国产| 一区二区三区在线视频免费观看| 99久久综合狠狠综合久久| 亚洲欧美偷拍另类a∨色屁股| 色成人在线视频| 日韩国产一二三区| 欧美三级电影网| 亚洲猫色日本管| 在线一区二区三区四区| 亚洲成av人片在线观看无码| 欧美裸体bbwbbwbbw| 国产美女视频一区| 亚洲视频精选在线| 在线综合+亚洲+欧美中文字幕| 日本视频在线一区| 欧美韩日一区二区三区| jizzjizzjizz欧美| 水蜜桃久久夜色精品一区的特点| 久久伊99综合婷婷久久伊| 99久久婷婷国产综合精品电影| 亚洲图片自拍偷拍| 久久久亚洲欧洲日产国码αv| 99re这里只有精品首页| 麻豆freexxxx性91精品| 亚洲免费三区一区二区| 精品国产一区二区三区四区四| 99精品久久免费看蜜臀剧情介绍| 日韩黄色免费电影| 亚洲欧洲日产国码二区| 久久久久久免费毛片精品| 欧美综合视频在线观看| 成人h精品动漫一区二区三区| 美腿丝袜一区二区三区| 亚洲乱码国产乱码精品精的特点| 久久亚洲综合av| 欧美一区二区三区在线观看| 色菇凉天天综合网| av电影天堂一区二区在线观看| 免费在线观看不卡| 男女视频一区二区| 午夜av区久久| 天堂资源在线中文精品| 亚洲一区在线视频观看| 国产日产欧美一区| 久久亚洲精精品中文字幕早川悠里| 欧美高清性hdvideosex| 欧美日本国产一区| 7799精品视频| 日韩午夜在线影院| 亚洲精品一区在线观看| 久久精品亚洲一区二区三区浴池| 久久久高清一区二区三区| 久久久久青草大香线综合精品| 在线观看亚洲a| 欧美日韩视频在线第一区| 欧美精品亚洲二区| 日韩女优制服丝袜电影| 久久久91精品国产一区二区精品| 国产欧美日韩综合| 一区二区三区精品在线观看| 日韩精品成人一区二区在线| 欧美区一区二区三区| 五月婷婷激情综合| 老司机一区二区| 成人动漫中文字幕| 欧美日韩成人一区| 欧美tickle裸体挠脚心vk| 亚洲成人第一页| 欧美色图片你懂的| 亚洲一卡二卡三卡四卡五卡| av在线不卡电影| 最新国产の精品合集bt伙计| 国产ts人妖一区二区| 久久精品一区蜜桃臀影院| 国产一区二区h| 国产网站一区二区三区| 国产原创一区二区三区| 亚洲国产成人在线| 成人国产精品视频| 一区二区三区四区在线| 日本电影亚洲天堂一区| 丝袜a∨在线一区二区三区不卡| 欧美精品在欧美一区二区少妇| 日韩影院在线观看| 欧美精品一区二| 不卡影院免费观看| 亚洲自拍偷拍九九九| 日韩美女一区二区三区四区| 国产91露脸合集magnet| 一区二区高清免费观看影视大全| 日韩欧美国产三级电影视频| 成人午夜电影小说| 五月天一区二区三区| 国产欧美日韩麻豆91|