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

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

?? soa.c

?? 此dns服務器是在mydns基礎上改寫
?? C
字號:
/**************************************************************************************************	$Id: soa.c,v 1.65 2005/12/18 19:16:41 bboy Exp $	Copyright (C) 2002-2005  Don Moore <bboy@bboy.net>	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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA**************************************************************************************************/#include "mydns.h"char mydns_soa_table_name[PATH_MAX] = MYDNS_SOA_TABLE;char *mydns_soa_where_clause = NULL;/* Optional columns */int mydns_soa_use_active = 0;int mydns_soa_use_xfer = 0;int mydns_soa_use_update_acl = 0;/* Make this nonzero to enable debugging within this source file */#define	DEBUG_LIB_SOA	1/**************************************************************************************************	MYDNS_SOA_COUNT	Returns the number of zones in the soa table.**************************************************************************************************/longmydns_soa_count(SQL *sqlConn){	return sql_count(sqlConn, "SELECT COUNT(*) FROM %s", mydns_soa_table_name);}/*--- mydns_soa_count() -------------------------------------------------------------------------*//**************************************************************************************************	MYDNS_SET_SOA_TABLE_NAME**************************************************************************************************/voidmydns_set_soa_table_name(char *name){	if (!name)		strncpy(mydns_soa_table_name, MYDNS_SOA_TABLE, sizeof(mydns_soa_table_name)-1);	else		strncpy(mydns_soa_table_name, name, sizeof(mydns_soa_table_name)-1);}/*--- mydns_set_soa_table_name() ----------------------------------------------------------------*//**************************************************************************************************	MYDNS_SET_SOA_WHERE_CLAUSE**************************************************************************************************/voidmydns_set_soa_where_clause(char *where){	if (where && strlen(where))	{		if (!(mydns_soa_where_clause = strdup(where)))			Errx("out of memory");	}}/*--- mydns_set_soa_where_clause() --------------------------------------------------------------*//**************************************************************************************************	MYDNS_SOA_PARSE**************************************************************************************************/#if !PROFILINGinline#endifMYDNS_SOA *mydns_soa_parse(SQL_ROW row){	MYDNS_SOA *rv;	int len;	if ((rv = (MYDNS_SOA *)malloc(sizeof(MYDNS_SOA))))	{		rv->next = NULL;		rv->id = atou(row[0]);		strncpy(rv->origin, row[1], sizeof(rv->origin)-1);		strncpy(rv->ns, row[2], sizeof(rv->ns)-1);		if (!rv->ns[0])			snprintf(rv->ns, sizeof(rv->ns), "ns.%s", rv->origin);		strncpy(rv->mbox, row[3], sizeof(rv->mbox)-1);		if (!rv->mbox[0])			snprintf(rv->mbox, sizeof(rv->mbox), "hostmaster.%s", rv->origin);		rv->serial = atou(row[4]);		rv->refresh = atou(row[5]);		rv->retry = atou(row[6]);		rv->expire = atou(row[7]);		rv->minimum = atou(row[8]);		rv->ttl = atou(row[9]);		/* If 'ns' or 'mbox' don't end in a dot, append the origin */		len = strlen(rv->ns);		if (rv->ns[len-1] != '.')		{			strncat(rv->ns, ".", sizeof(rv->ns) - len - 1);			strncat(rv->ns, rv->origin, sizeof(rv->ns) - len - 2);		}		len = strlen(rv->mbox);		if (rv->mbox[len-1] != '.')		{			strncat(rv->mbox, ".", sizeof(rv->mbox) - len - 1);			strncat(rv->mbox, rv->origin, sizeof(rv->mbox) - len - 2);		}		/* Make sure TTL for SOA is at least the minimum */		if (rv->ttl < rv->minimum)			rv->ttl = rv->minimum;	}	return (rv);}/*--- mydns_soa_parse() -------------------------------------------------------------------------*//**************************************************************************************************	MYDNS_SOA_DUP	Create a duplicate copy of the record.	Make and return a copy of a MYDNS_SOA record.  If 'recurse' is specified, copies all records	in the list.**************************************************************************************************/MYDNS_SOA *mydns_soa_dup(MYDNS_SOA *start, int recurse){	register MYDNS_SOA *first = NULL, *last = NULL, *soa, *s, *tmp;	for (s = start; s; s = tmp)	{		tmp = s->next;		if (!(soa = (MYDNS_SOA *)calloc(1, sizeof(MYDNS_SOA))))			Err(_("out of memory"));		soa->id = s->id;		strncpy(soa->origin, s->origin, sizeof(soa->origin)-1);		strncpy(soa->ns, s->ns, sizeof(soa->ns)-1);		strncpy(soa->mbox, s->mbox, sizeof(soa->mbox)-1);		soa->serial = s->serial;		soa->refresh = s->refresh;		soa->retry = s->retry;		soa->expire = s->expire;		soa->minimum = s->minimum;		soa->ttl = s->ttl;		soa->next = NULL;		if (recurse)		{			if (!first) first = soa;			if (last) last->next = soa;			last = soa;		}		else			return (soa);	}	return (first);}/*--- mydns_soa_dup() ---------------------------------------------------------------------------*//**************************************************************************************************	MYDNS_SOA_SIZE**************************************************************************************************/#if !PROFILINGinline#endifsize_tmydns_soa_size(MYDNS_SOA *first){	register MYDNS_SOA *p;	register size_t size = 0;	for (p = first; p; p = p->next)		size += sizeof(MYDNS_SOA);	return (size);}/*--- mydns_soa_size() --------------------------------------------------------------------------*//**************************************************************************************************	_MYDNS_SOA_FREE	Frees the pointed-to structure.	Don't call this function directly, call the macro.**************************************************************************************************/#if !PROFILINGinline#endifvoid_mydns_soa_free(MYDNS_SOA *first){	register MYDNS_SOA *p, *tmp;	for (p = first; p; p = tmp)	{		tmp = p->next;		Free(p);	}}/*--- mydns_soa_free() --------------------------------------------------------------------------*//**************************************************************************************************	MYDNS_SOA_LOAD	Returns 0 on success or nonzero if an error occurred.**************************************************************************************************/intmydns_soa_load(SQL *sqlConn, MYDNS_SOA **rptr, char *origin, int telecom_operator){	MYDNS_SOA		*first = NULL, *last = NULL;	size_t			querylen;	char				query[DNS_QUERYBUFSIZ];	SQL_RES			*res;	SQL_ROW			row;	register char	*c;#ifdef DN_COLUMN_NAMES	int				originlen = strlen(origin);#endif	if (rptr) *rptr = NULL;	/* Verify args */	if (!sqlConn || !origin || !rptr)	{		errno = EINVAL;		return (-1);	}	/* We're not escaping 'origin', so check it for illegal type chars */	for (c = origin; *c; c++)		if (SQL_BADCHAR(*c))			return (0);#ifdef DN_COLUMN_NAMES	if (origin[originlen - 1] == '.')		origin[originlen - 1] = '\0';							/* Remove dot from origin for DN */	else		originlen = 0;#endif	/* Construct query */	if (mydns_soa_where_clause)		querylen = snprintf(query, sizeof(query),			"SELECT "MYDNS_SOA_FIELDS"%s FROM %s WHERE origin='%s' AND %s AND telecom_operator=%d",			(mydns_soa_use_active ? ",active" : ""),			mydns_soa_table_name, origin, mydns_soa_where_clause,telecom_operator);	else	{		querylen = snprintf(query, sizeof(query),			"SELECT "MYDNS_SOA_FIELDS"%s FROM %s WHERE origin='%s' AND telecom_operator=%d",			(mydns_soa_use_active ? ",active" : ""),			mydns_soa_table_name, origin,telecom_operator);		//querylen = snprintf(query, sizeof(query),		//	"SELECT "MYDNS_SOA_FIELDS" FROM soa WHERE id=3");	}#ifdef DN_COLUMN_NAMES	if (originlen)		origin[originlen - 1] = '.';							/* Readd dot to origin for DN */#endif	/* Submit query */	if (!(res = sql_query(sqlConn, query, querylen)))		return (-1);#if DEBUG_ENABLED && DEBUG_LIB_SOA	{		int numresults = sql_num_rows(res);		Debug("SOA query: %d row%s: %s", numresults, S(numresults), query);	}#endif	/* Add results to list */	while ((row = sql_getrow(res)))	{		MYDNS_SOA *new;		if (mydns_soa_use_active && row[MYDNS_SOA_NUMFIELDS] && !GETBOOL(row[MYDNS_SOA_NUMFIELDS]))			continue;		if (!(new = mydns_soa_parse(row)))		{			sql_free(res);			return (-1);		}		if (!first) first = new;		if (last) last->next = new;		else last = new;	}	*rptr = first;	sql_free(res);	return (0);}/*--- mydns_soa_load() --------------------------------------------------------------------------*//* vi:set ts=3: */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕制服丝袜一区二区三区| 国产一区二区三区国产| 日韩精品自拍偷拍| 欧美日韩小视频| 欧美优质美女网站| 在线观看一区二区视频| 91激情五月电影| 色噜噜久久综合| 欧美体内she精视频| 色婷婷av一区| 欧美日韩免费一区二区三区| 欧美丝袜丝nylons| 欧美日韩国产123区| 欧美乱妇一区二区三区不卡视频| 欧美在线视频不卡| 欧美三级视频在线观看| 666欧美在线视频| 欧美一区二区女人| 欧美精品一区二区在线观看| 国产婷婷精品av在线| 欧美国产成人在线| 亚洲图片激情小说| 亚洲国产sm捆绑调教视频| 天堂蜜桃一区二区三区| 久久99精品国产.久久久久久| 精品亚洲国内自在自线福利| 国产精品1区2区| 99国产精品视频免费观看| 91国内精品野花午夜精品 | 在线免费观看日本一区| 欧美三级三级三级爽爽爽| 日韩欧美一卡二卡| 国产精品毛片高清在线完整版| 亚洲色图清纯唯美| 日本视频中文字幕一区二区三区| 国产一区二区三区四区在线观看| 成人黄色a**站在线观看| 欧美日韩亚洲综合一区| 国产欧美日韩一区二区三区在线观看| 中文字幕av一区二区三区免费看| 一区二区三区四区在线免费观看| 天天色天天操综合| 成人一区二区视频| 在线亚洲精品福利网址导航| 精品久久国产字幕高潮| 亚洲欧美日韩国产成人精品影院| 日韩成人伦理电影在线观看| eeuss影院一区二区三区| 5月丁香婷婷综合| 粉嫩在线一区二区三区视频| 欧美a级理论片| 不卡欧美aaaaa| 欧美日韩电影在线播放| 久久免费国产精品| 日韩高清不卡在线| 99re热视频精品| 精品国产一区二区三区忘忧草 | 欧美mv日韩mv| 亚洲午夜在线电影| 成人手机在线视频| 精品国产乱码久久久久久牛牛| 亚洲美女一区二区三区| 欧美成人a∨高清免费观看| 亚洲欧美日韩在线| 国产乱码一区二区三区| 欧美日韩国产a| 五月婷婷久久丁香| 不卡的av网站| 国产亚洲欧美激情| 国产精品一区二区在线播放| 欧美一区二区大片| 免费日韩伦理电影| 欧美一区二区三区在线观看视频| 亚洲一区二区三区国产| 91影院在线观看| 国产精品久久久久久久久免费相片| 激情都市一区二区| 日韩欧美一区二区三区在线| 日韩一区精品视频| 日韩一区二区三区免费观看| 三级亚洲高清视频| 欧美日本在线播放| 日韩国产精品久久久| 欧美日韩午夜在线视频| 五月激情综合网| 欧美日韩大陆一区二区| 婷婷亚洲久悠悠色悠在线播放| 欧洲精品一区二区| 丝袜美腿亚洲色图| 日韩一级黄色大片| 久久99久国产精品黄毛片色诱| 日韩欧美电影在线| 国产成人亚洲精品狼色在线| 中文字幕免费一区| 一本色道久久综合亚洲aⅴ蜜桃 | 亚洲欧洲av另类| 91视频免费观看| 亚洲一区二区三区四区五区黄| 欧美性大战xxxxx久久久| 亚洲国产精品一区二区www在线| 欧美精品乱码久久久久久| 日本怡春院一区二区| 久久中文娱乐网| 波多野结衣在线aⅴ中文字幕不卡| 国产精品传媒入口麻豆| 在线观看一区日韩| 国内精品伊人久久久久av影院| 国产人伦精品一区二区| 99久久久国产精品| 三级不卡在线观看| 国产亚洲人成网站| 欧美日韩一区二区三区在线| 久久精品国产澳门| 中文字幕视频一区二区三区久| 欧美色图激情小说| 国产在线播放一区二区三区| 国产精品欧美一区喷水| 欧美日韩国产色站一区二区三区| 青草av.久久免费一区| 国产精品卡一卡二| 欧美一级久久久| 色综合久久综合网欧美综合网 | 久久影院午夜论| 91无套直看片红桃| 九九精品视频在线看| 亚洲女同ⅹxx女同tv| 欧美精品一区二区三区蜜桃| 91久久人澡人人添人人爽欧美| 久久爱www久久做| 一区二区三区高清在线| 国产视频亚洲色图| 欧美一区二区三区视频在线观看 | 中文字幕久久午夜不卡| 欧美日韩一区二区三区四区五区| 成熟亚洲日本毛茸茸凸凹| 日韩专区一卡二卡| 亚洲资源在线观看| 国产精品电影院| 欧美国产欧美综合| 精品福利视频一区二区三区| 成人免费视频免费观看| 亚洲三级久久久| 欧美不卡一二三| 欧美日韩视频在线观看一区二区三区| 国产成人午夜电影网| 久久精品噜噜噜成人88aⅴ| 亚洲综合一二区| 亚洲天堂a在线| 国产日韩高清在线| 欧美变态凌虐bdsm| 日韩一区二区三区视频| 欧美一区二区精美| 欧美一区二区三区在| 欧美精品在线视频| 欧洲精品一区二区| 欧美午夜片在线看| 欧美在线一二三四区| 欧美性生活一区| 欧美吻胸吃奶大尺度电影| 一本色道亚洲精品aⅴ| 91蝌蚪国产九色| 日本乱码高清不卡字幕| 91社区在线播放| 日本不卡中文字幕| 国产二区国产一区在线观看| 男男成人高潮片免费网站| 欧美一区二区在线视频| 精品成a人在线观看| 亚洲精品欧美激情| 亚洲一区中文在线| 成人午夜电影小说| 亚洲视频一二区| 欧美bbbbb| 日本丰满少妇一区二区三区| 精品福利在线导航| 亚洲成av人片在线观看无码| 成人精品免费看| 欧美电视剧在线观看完整版| 亚洲欧美另类小说| 国产成人丝袜美腿| 日韩欧美视频一区| 亚洲成a人v欧美综合天堂| 播五月开心婷婷综合| 久久九九久久九九| a亚洲天堂av| 一区二区三区高清| 国产精品996| 日韩一区二区在线看| 亚洲精品菠萝久久久久久久| 成人国产在线观看| 26uuu久久天堂性欧美| 青青青伊人色综合久久| 欧美亚洲愉拍一区二区| 亚洲视频香蕉人妖| 99re热这里只有精品免费视频| 国产日韩欧美a| 国产大陆亚洲精品国产| 精品免费国产一区二区三区四区| 午夜精品久久久久久久蜜桃app| 色综合色狠狠天天综合色|