⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 conf.c

📁 此dns服务器是在mydns基础上改写
💻 C
字号:
/**************************************************************************************************	$Id: conf.c,v 1.8 2005/04/20 17:22:25 bboy Exp $	conf.c: Create daemontools service directory for MyDNS.	Copyright (C) 2002-2005  Don Moore <bboy@bboy.net>	Program by David Phillips <david@acz.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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA**************************************************************************************************/#include "util.h"#include <pwd.h>/**************************************************************************************************	USAGE	Display program usage information.**************************************************************************************************/static voidusage(int status){	fprintf(stderr, _("Usage: %s logacct /mydns\n"), progname);	fprintf(stderr, _("Create daemontools service directory for MyDNS.\n"));	exit(status);}/*--- usage() -----------------------------------------------------------------------------------*//**************************************************************************************************	MAIN**************************************************************************************************/intmain(int argc, char **argv){	const char *loguser;	const char *dir;	struct passwd *pw;	const char *fn;	int fd;	FILE *fp;	setlocale(LC_ALL, "");										/* Internationalization */	bindtextdomain(PACKAGE, LOCALEDIR);	textdomain(PACKAGE);	progname = "mydns-conf";	err_file = stdout;	error_init(argv[0], LOG_USER);                     /* Init output routines */	if (argc != 3)		usage(EXIT_FAILURE);	loguser = argv[1];	dir = argv[2];	if (dir[0] != '/')		usage(EXIT_FAILURE);	pw = getpwnam(loguser);	if (!pw)		Errx("unknown account %s", loguser);	/* Create main directory */	umask(022);	if (mkdir(dir, 0700) == -1)		Err("unable to create %s", dir);	if (chmod(dir, 03755) == -1)		Err("unable to set mode of %s", dir);	if (chdir(dir) == -1)		Err("unable to switch to %s", dir);	/* Create run script */	fn = "run";	fp = fopen(fn, "w");	if (!fp)		Err("unable to create %s/%s", dir, fn);	fprintf(fp, "#!/bin/sh\n");	fprintf(fp, "exec 2>&1\n");	fprintf(fp, "exec %s/mydns -v\n", SBINDIR);	fflush(fp);	if (ferror(fp))		Err("unable to create %s/%s", dir, fn);	fclose(fp);	if (chmod(fn, 0755) == -1)		Err("unable to set mode of %s/%s", dir, fn);	/* Create log directory */	fn = "log";	if (mkdir(fn, 0700) == -1)		Err("unable to create %s/%s", dir, fn);	if (chmod(fn, 02755) == -1)		Err("unable to set mode of %s/%s", dir, fn);	/* Create log/main directory */	fn = "log/main";	if (mkdir(fn, 0700) == -1)		Err("unable to create %s/%s", dir, fn);	if (chown(fn, pw->pw_uid, pw->pw_gid) == -1)		Err("unable to set ownership of %s/%s", dir, fn);	if (chmod(fn, 02755) == -1)		Err("unable to set mode of %s/%s", dir, fn);	/* Create log status file */	fn = "log/status";	fd = open(fn, O_WRONLY | O_NDELAY | O_TRUNC | O_CREAT, 0644);	if (fd == -1)		Err("unable to create %s/%s", dir, fn);	close(fd);	if (chown(fn, pw->pw_uid, pw->pw_gid) == -1)		Err("unable to set ownership of %s/%s", dir, fn);	if (chmod(fn, 0644) == -1)		Err("unable to set mode of %s/%s", dir, fn);	/* Create log run script */	fn = "log/run";	fp = fopen(fn, "w");	if (!fp)		Err("unable to create %s/%s", dir, fn);	fprintf(fp, "#!/bin/sh\n");	fprintf(fp, "exec setuidgid %s multilog \\\n", loguser);	fprintf(fp, "  ./main \\\n");	fprintf(fp, "  '-*' '+* up *' =status\n");	fflush(fp);	if (ferror(fp))		Err("unable to create %s/%s", dir, fn);	fclose(fp);	if (chmod(fn, 0755) == -1)		Err("unable to set mode of %s/%s", dir, fn);	return (0);}/*--- main() ------------------------------------------------------------------------------------*//* vi:set ts=3: *//* NEED_PO */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -