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

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

?? zone.java

?? DNS Java 是java實現的DNS
?? JAVA
字號:
// Copyright (c) 1999-2004 Brian Wellington (bwelling@xbill.org)package org.xbill.DNS;import java.io.*;import java.util.*;/** * A DNS Zone.  This encapsulates all data related to a Zone, and provides * convenient lookup methods. * * @author Brian Wellington */public class Zone {/** A primary zone */public static final int PRIMARY = 1;/** A secondary zone */public static final int SECONDARY = 2;private Map data;private int type;private Name origin;private Object originNode;private int dclass = DClass.IN;private RRset NS;private SOARecord SOA;private boolean hasWild;class ZoneIterator implements Iterator {	private Iterator zentries;	private RRset [] current;	private int count;	private boolean wantLastSOA;	ZoneIterator(boolean axfr) {		zentries = data.entrySet().iterator();		wantLastSOA = axfr;		RRset [] sets = allRRsets(originNode);		current = new RRset[sets.length];		for (int i = 0, j = 2; i < sets.length; i++) {			int type = sets[i].getType();			if (type == Type.SOA)				current[0] = sets[i];			else if (type == Type.NS)				current[1] = sets[i];			else				current[j++] = sets[i];		}	}	public boolean	hasNext() {		return (current != null || wantLastSOA);	}	public Object	next() {		if (!hasNext()) {			throw new NoSuchElementException();		}		if (current == null && wantLastSOA) {			wantLastSOA = false;			return oneRRset(originNode, Type.SOA);		}		Object set = current[count++];		if (count == current.length) {			current = null;			while (zentries.hasNext()) {				Map.Entry entry = (Map.Entry) zentries.next();				if (entry.getKey().equals(origin))					continue;				RRset [] sets = allRRsets(entry.getValue());				if (sets.length == 0)					continue;				current = sets;				count = 0;				break;			}		}		return set;	}	public void	remove() {		throw new UnsupportedOperationException();	}}private voidvalidate() throws IOException {	originNode = exactName(origin);	if (originNode == null)		throw new IOException(origin + ": no data specified");	RRset rrset = oneRRset(originNode, Type.SOA);	if (rrset == null || rrset.size() != 1)		throw new IOException(origin +				      ": exactly 1 SOA must be specified");	Iterator it = rrset.rrs();	SOA = (SOARecord) it.next();	NS = oneRRset(originNode, Type.NS);	if (NS == null)		throw new IOException(origin + ": no NS set specified");}private final voidmaybeAddRecord(Record record) throws IOException {	int rtype = record.getType();	Name name = record.getName();	if (rtype == Type.SOA && !name.equals(origin)) {		throw new IOException("SOA owner " + name +				      " does not match zone origin " +				      origin);	}	if (name.subdomain(origin))		addRecord(record);}/** * Creates a Zone from the records in the specified master file. * @param zone The name of the zone. * @param file The master file to read from. * @see Master */publicZone(Name zone, String file) throws IOException {	data = new HashMap();	type = PRIMARY;	if (zone == null)		throw new IllegalArgumentException("no zone name specified");	Master m = new Master(file, zone);	Record record;	origin = zone;	while ((record = m.nextRecord()) != null)		maybeAddRecord(record);	validate();}/** * Creates a Zone from an array of records. * @param zone The name of the zone. * @param records The records to add to the zone. * @see Master */publicZone(Name zone, Record [] records) throws IOException {	data = new HashMap();	type = PRIMARY;	if (zone == null)		throw new IllegalArgumentException("no zone name specified");	origin = zone;	for (int i = 0; i < records.length; i++)		maybeAddRecord(records[i]);	validate();}private voidfromXFR(ZoneTransferIn xfrin) throws IOException, ZoneTransferException {	data = new HashMap();	type = SECONDARY;	if (!xfrin.isAXFR())		throw new IllegalArgumentException("zones can only be " +						   "created from AXFRs");	origin = xfrin.getName();	List records = xfrin.run();	for (Iterator it = records.iterator(); it.hasNext(); ) {		Record record = (Record) it.next();		maybeAddRecord(record);	}	validate();}/** * Creates a Zone by doing the specified zone transfer. * @param xfrin The incoming zone transfer to execute. * @see ZoneTransferIn */publicZone(ZoneTransferIn xfrin) throws IOException, ZoneTransferException {	fromXFR(xfrin);}/** * Creates a Zone by performing a zone transfer to the specified host. * @see ZoneTransferIn */publicZone(Name zone, int dclass, String remote)throws IOException, ZoneTransferException{	ZoneTransferIn xfrin = ZoneTransferIn.newAXFR(zone, remote, null);	xfrin.setDClass(dclass);	fromXFR(xfrin);}/** Returns the Zone's origin */public NamegetOrigin() {	return origin;}/** Returns the Zone origin's NS records */public RRsetgetNS() {	return NS;}/** Returns the Zone's SOA record */public SOARecordgetSOA() {	return SOA;}/** Returns the Zone's class */public intgetDClass() {	return dclass;}private synchronized ObjectexactName(Name name) {	return data.get(name);}private synchronized RRset []allRRsets(Object types) {	if (types instanceof List) {		List typelist = (List) types;		return (RRset []) typelist.toArray(new RRset[typelist.size()]);	} else {		RRset set = (RRset) types;		return new RRset [] {set};	}}private synchronized RRsetoneRRset(Object types, int type) {	if (type == Type.ANY)		throw new IllegalArgumentException("oneRRset(ANY)");	if (types instanceof List) {		List list = (List) types;		for (int i = 0; i < list.size(); i++) {			RRset set = (RRset) list.get(i);			if (set.getType() == type)				return set;		}	} else {		RRset set = (RRset) types;		if (set.getType() == type)			return set;	}	return null;}private synchronized RRsetfindRRset(Name name, int type) {	Object types = exactName(name);	if (types == null)		return null;	return oneRRset(types, type);}private synchronized voidaddRRset(Name name, RRset rrset) {	if (!hasWild && name.isWild())		hasWild = true;	Object types = data.get(name);	if (types == null) {		data.put(name, rrset);		return;	}	int rtype = rrset.getType();	if (types instanceof List) {		List list = (List) types;		for (int i = 0; i < list.size(); i++) {			RRset set = (RRset) list.get(i);			if (set.getType() == rtype) {				list.set(i, rrset);				return;			}		}		list.add(rrset);	} else {		RRset set = (RRset) types;		if (set.getType() == rtype)			data.put(name, rrset);		else {			LinkedList list = new LinkedList();			list.add(set);			list.add(rrset);			data.put(name, list);		}	}}private synchronized voidremoveRRset(Name name, int type) {	Object types = data.get(name);	if (types == null) {		return;	}	if (types instanceof List) {		List list = (List) types;		for (int i = 0; i < list.size(); i++) {			RRset set = (RRset) list.get(i);			if (set.getType() == type) {				list.remove(i);				if (list.size() == 0)					data.remove(name);				return;			}		}	} else {		RRset set = (RRset) types;		if (set.getType() != type)			return;		data.remove(name);	}}private synchronized SetResponselookup(Name name, int type) {	int labels;	int olabels;	int tlabels;	RRset rrset;	Name tname;	Object types;	SetResponse sr;	if (!name.subdomain(origin))		return SetResponse.ofType(SetResponse.NXDOMAIN);	labels = name.labels();	olabels = origin.labels();	for (tlabels = olabels; tlabels <= labels; tlabels++) {		boolean isOrigin = (tlabels == olabels);		boolean isExact = (tlabels == labels);		if (isOrigin)			tname = origin;		else if (isExact)			tname = name;		else			tname = new Name(name, labels - tlabels);		types = exactName(tname);		if (types == null)			continue;		/* If this is a delegation, return that. */		if (!isOrigin) {			RRset ns = oneRRset(types, Type.NS);			if (ns != null)				return new SetResponse(SetResponse.DELEGATION,						       ns);		}		/* If this is an ANY lookup, return everything. */		if (isExact && type == Type.ANY) {			sr = new SetResponse(SetResponse.SUCCESSFUL);			RRset [] sets = allRRsets(types);			for (int i = 0; i < sets.length; i++)				sr.addRRset(sets[i]);			return sr;		}		/*		 * If this is the name, look for the actual type or a CNAME.		 * Otherwise, look for a DNAME.		 */		if (isExact) {			rrset = oneRRset(types, type);			if (rrset != null) {				sr = new SetResponse(SetResponse.SUCCESSFUL);				sr.addRRset(rrset);				return sr;			}			rrset = oneRRset(types, Type.CNAME);			if (rrset != null)				return new SetResponse(SetResponse.CNAME,						       rrset);		} else {			rrset = oneRRset(types, Type.DNAME);			if (rrset != null)				return new SetResponse(SetResponse.DNAME,						       rrset);		}		/* We found the name, but not the type. */		if (isExact)			return SetResponse.ofType(SetResponse.NXRRSET);	}	if (hasWild) {		for (int i = 0; i < labels - olabels; i++) {			tname = name.wild(i + 1);			types = exactName(tname);			if (types == null)				continue;			rrset = oneRRset(types, type);			if (rrset != null) {				sr = new SetResponse(SetResponse.SUCCESSFUL);				sr.addRRset(rrset);				return sr;			}		}	}	return SetResponse.ofType(SetResponse.NXDOMAIN);}/**      * Looks up Records in the Zone.  This follows CNAMEs and wildcards. * @param name The name to look up * @param type The type to look up * @return A SetResponse object * @see SetResponse */ public SetResponsefindRecords(Name name, int type) {	return lookup(name, type);}/** * Looks up Records in the zone, finding exact matches only. * @param name The name to look up * @param type The type to look up * @return The matching RRset * @see RRset */ public RRsetfindExactMatch(Name name, int type) {	Object types = exactName(name);	if (types == null)		return null;	return oneRRset(types, type);}/** * Adds an RRset to the Zone * @param rrset The RRset to be added * @see RRset */public voidaddRRset(RRset rrset) {	Name name = rrset.getName();	addRRset(name, rrset);}/** * Adds a Record to the Zone * @param r The record to be added * @see Record */public voidaddRecord(Record r) {	Name name = r.getName();	int rtype = r.getRRsetType();	synchronized (this) {		RRset rrset = findRRset(name, rtype);		if (rrset == null) {			rrset = new RRset(r);			addRRset(name, rrset);		} else {			rrset.addRR(r);		}	}}/** * Removes a record from the Zone * @param r The record to be removed * @see Record */public voidremoveRecord(Record r) {	Name name = r.getName();	int rtype = r.getRRsetType();	synchronized (this) {		RRset rrset = findRRset(name, rtype);		if (rrset == null)			return;		rrset.deleteRR(r);		if (rrset.size() == 0)			removeRRset(name, rtype);	}}/** * Returns an Iterator over the RRsets in the zone. */public Iteratoriterator() {	return new ZoneIterator(false);}/** * Returns an Iterator over the RRsets in the zone that can be used to * construct an AXFR response.  This is identical to {@link #iterator} except * that the SOA is returned at the end as well as the beginning. */public IteratorAXFR() {	return new ZoneIterator(true);}private voidnodeToString(StringBuffer sb, Object node) {	RRset [] sets = allRRsets(node);	for (int i = 0; i < sets.length; i++) {		RRset rrset = sets[i];		Iterator it = rrset.rrs();		while (it.hasNext())			sb.append(it.next() + "\n");		it = rrset.sigs();		while (it.hasNext())			sb.append(it.next() + "\n");	}}/** * Returns the contents of the Zone in master file format. */public StringtoMasterFile() {	Iterator zentries = data.entrySet().iterator();	StringBuffer sb = new StringBuffer();	nodeToString(sb, originNode);	while (zentries.hasNext()) {		Map.Entry entry = (Map.Entry) zentries.next();		if (!origin.equals(entry.getKey()))			nodeToString(sb, entry.getValue());	}	return sb.toString();}/** * Returns the contents of the Zone as a string (in master file format). */public StringtoString() {	return toMasterFile();}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产综合色视频| 国产无人区一区二区三区| 风流少妇一区二区| 天堂在线一区二区| 亚洲天堂中文字幕| 国产校园另类小说区| 欧美一区二区福利在线| av毛片久久久久**hd| 国产在线乱码一区二区三区| 亚洲综合偷拍欧美一区色| 国产亚洲精品aa| 欧美tk丨vk视频| 6080午夜不卡| 在线观看成人小视频| 99re视频精品| 高潮精品一区videoshd| 久久av中文字幕片| 琪琪久久久久日韩精品| 午夜精品国产更新| 一区二区三区成人| 亚洲欧美色图小说| 国产精品久久福利| 国产日韩精品一区二区三区在线| 日韩精品影音先锋| 日韩一区和二区| 欧美福利一区二区| 制服丝袜日韩国产| 91精品黄色片免费大全| 欧美日韩和欧美的一区二区| 欧美影片第一页| 在线视频国内自拍亚洲视频| 91碰在线视频| 色呦呦日韩精品| 在线一区二区观看| 欧美中文一区二区三区| 欧美日韩一区二区不卡| 欧美日韩精品二区第二页| 欧美精品v国产精品v日韩精品 | 欧美三级电影在线看| 色综合久久六月婷婷中文字幕| 成人毛片老司机大片| 99久久伊人久久99| 色av成人天堂桃色av| 欧美日韩视频专区在线播放| 欧美精品1区2区3区| 91精品福利在线一区二区三区 | 色美美综合视频| 91久久国产最好的精华液| 欧美视频在线播放| 日韩欧美一区二区视频| 精品美女一区二区三区| 久久久久久**毛片大全| 亚洲欧洲国产专区| 亚洲精品中文在线观看| 香蕉加勒比综合久久| 麻豆成人综合网| 高清不卡一区二区在线| 色综合久久中文综合久久97| 欧美日韩国产片| 精品第一国产综合精品aⅴ| 久久精品无码一区二区三区| 亚洲天堂2016| 免费高清视频精品| 丰满少妇在线播放bd日韩电影| 不卡的av电影在线观看| 欧美性大战xxxxx久久久| 精品人伦一区二区色婷婷| 中文字幕一区不卡| 天天爽夜夜爽夜夜爽精品视频| 精品亚洲porn| 色婷婷av一区二区三区软件| 日韩视频一区二区三区| 国产精品国产三级国产普通话99| 亚洲在线一区二区三区| 韩国成人福利片在线播放| 一本色道久久综合亚洲91 | **欧美大码日韩| 三级精品在线观看| 国产不卡高清在线观看视频| 色av成人天堂桃色av| ww亚洲ww在线观看国产| 一区二区三区精品| 国产精品系列在线观看| 欧美中文字幕一二三区视频| 久久久久成人黄色影片| 亚洲午夜激情av| 国产1区2区3区精品美女| 欧美区一区二区三区| 亚洲国产电影在线观看| 日韩国产精品91| 色综合天天综合给合国产| 精品福利一区二区三区免费视频| 一区二区三区 在线观看视频| 激情av综合网| 欧美三级视频在线| 国产精品国产自产拍在线| 狠狠网亚洲精品| 欧美日韩国产精品成人| 国产精品欧美一级免费| 精品在线播放免费| 欧美日韩日日骚| 日韩毛片一二三区| 国产乱子伦视频一区二区三区 | 亚洲激情综合网| 国产成人综合自拍| 91精品在线麻豆| 一区二区三区在线视频播放| 国产成人99久久亚洲综合精品| 欧美一级日韩免费不卡| 亚洲综合成人在线| 99久久99久久免费精品蜜臀| 久久久另类综合| 六月丁香婷婷色狠狠久久| 欧美日韩专区在线| 樱桃视频在线观看一区| av午夜精品一区二区三区| 国产亚洲成年网址在线观看| 精品一区二区三区在线视频| 制服丝袜中文字幕亚洲| 亚洲高清三级视频| 欧美日韩亚州综合| 午夜伊人狠狠久久| 欧美日韩一区二区在线观看| 一区二区三区欧美亚洲| 一本大道综合伊人精品热热| 亚洲视频图片小说| 91在线精品一区二区| 成人免费小视频| 91香蕉视频黄| 最好看的中文字幕久久| 91色九色蝌蚪| 一区二区理论电影在线观看| 色婷婷精品大视频在线蜜桃视频| 亚洲精品美国一| 色94色欧美sute亚洲线路一ni| 亚洲蜜臀av乱码久久精品蜜桃| av一本久道久久综合久久鬼色| 国产精品国产三级国产a | 欧美日韩日日摸| 同产精品九九九| 日韩一二在线观看| 精品无码三级在线观看视频| 精品成a人在线观看| 国产成人免费9x9x人网站视频| 国产欧美久久久精品影院| 国产成人免费在线观看| 亚洲色图一区二区三区| 在线观看日韩一区| 日韩综合在线视频| 欧美成人激情免费网| 国产美女精品一区二区三区| 中文av一区特黄| 91麻豆.com| 日韩国产高清在线| 国产网站一区二区| 色综合久久久久久久久| 天堂成人免费av电影一区| 欧美福利视频一区| 狠狠色2019综合网| 国产精品少妇自拍| 在线观看免费亚洲| 久久99热这里只有精品| 中文字幕精品一区二区三区精品| 色综合天天综合网天天狠天天| 日韩电影在线观看一区| 久久久久久9999| 在线观看国产日韩| 国产自产v一区二区三区c| 亚洲欧美日韩国产另类专区| 91麻豆精品国产91久久久资源速度| 国内精品在线播放| 亚洲三级电影全部在线观看高清| 在线成人午夜影院| 成人午夜免费视频| 日本女人一区二区三区| 日本一区二区三区国色天香| 欧美体内she精高潮| 黄色精品一二区| 亚洲第一主播视频| 国产视频亚洲色图| 777久久久精品| 成av人片一区二区| 麻豆传媒一区二区三区| 亚洲精品欧美激情| 国产亚洲一区二区三区在线观看| 欧美性色黄大片手机版| 国产一区二区福利视频| 午夜伊人狠狠久久| 亚洲伦在线观看| 久久精品人人做人人综合| 这里是久久伊人| 色综合天天狠狠| 国产精品99久久久| 热久久免费视频| 亚洲一区二区三区视频在线| 国产色一区二区| 日韩免费视频一区| 欧美日本韩国一区二区三区视频 | 亚洲男同1069视频| 日本一区二区三区电影|