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

📄 ntp_setup.c

📁 使用C语言的cgi程序
💻 C
字号:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include "PRO_file.h"
#include "PRO_GetStr.h"
#include "PRO_GetInt.h"
#include "PRO_SetStr.h"
#include "PRO_SetMultiItemStr.h"
#include "ntp_setup.h"
//#include "wan.h"
#include "h_const.h"
//#include "system.h"


char ntp_sec[] = "System";
NTP_CONF ntp_conf;

int ReadNTPConf(NTP_CONF *pConf)
{

	char key[32];
//	char ip[16];
	FILE *fh;

	if(!pConf)
	    return NTP_ReadConfErr;

    fh=fopen(SYSCONF,"rt");

	if(!fh)
	    return NTP_ReadConfErr;
	rewind(fh);

	sprintf(key,"ntp_enable");
	PRO_GetInt(ntp_sec,key,(int *)&(pConf->ntp_enable),fh);
	
	sprintf(key,"server_select");
	PRO_GetInt(ntp_sec,key,(int *)&(pConf->server_select),fh);
	
	sprintf(key,"ntp_server_ip");
	PRO_GetStr(ntp_sec,key,pConf->ntp_server_ip,MAX_NTP_SERVER_IP_LEN,fh);

	sprintf(key,"ntp_server_domain");
	PRO_GetStr(ntp_sec,key,pConf->ntp_server_domain,MAX_NTP_SERVER_DOMAIN_LEN,fh);

//	sprintf(key,"ntp_server");
//	PRO_GetStr(ntp_sec,key,ip,16,fh);
//	extract_ip(ip,(unsigned char *)&(pConf->NTPIPAddr));

	sprintf(key,"time_zone"); 
	PRO_GetInt(ntp_sec,key,(int *)&(pConf->ntp_timezone),fh);

	fclose(fh);

	return NTP_OK;
}

int SaveNTPConf(NTP_CONF *pConf)
{
	char ntpenb[5],timezone[5],serverselect[5];
	multi_items	all_items[5];
	int ret,j=0;

	sprintf(all_items[j].key,"ntp_enable");
	sprintf(ntpenb,"%d",pConf->ntp_enable);
	all_items[j].value=ntpenb;
	j++;

	sprintf(all_items[j].key,"server_select");
	sprintf(serverselect,"%d",pConf->server_select);
	all_items[j].value=serverselect;
	j++;

	sprintf(all_items[j].key,"ntp_server_ip");
	all_items[j].value=pConf->ntp_server_ip;
	j++;
	
	sprintf(all_items[j].key,"ntp_server_domain");
	all_items[j].value=pConf->ntp_server_domain;
	j++;
	
//	sprintf(all_items[NTP_ITEM_SERVER].key,"ntp_server");
//	sprintf(ip,"%u.%u.%u.%u",
//			*((unsigned char*)&pConf->NTPIPAddr),*((unsigned char*)&pConf->NTPIPAddr+1),
//			*((unsigned char*)&pConf->NTPIPAddr+2),*((unsigned char*)&pConf->NTPIPAddr+3) );
//	all_items[NTP_ITEM_SERVER].value=ip;

	sprintf(all_items[j].key,"time_zone");
	sprintf(timezone,"%d",pConf->ntp_timezone);
	all_items[j].value=timezone;
	j++;

	ret=PRO_SetMultiItemStr(ntp_sec,all_items,j, SYSCONF);
	if(ret){
		return NTP_SaveConfErr;
	}
	return NTP_OK;
}

int time_zone_adjust(void)
{
	char timezone[30];
	char cmd[100];
	
	memset(timezone,0,30);
	memset(cmd,0,100);

	if(ntp_conf.ntp_enable)
	{
		system("killall ntpclient");

		if(ntp_conf.server_select)
		{
			sprintf(cmd, "/sbin/ntpclient -h %s -s -c 0 2>/src/ntp", ntp_conf.ntp_server_domain);
			system(cmd);
		}
		else
		{
			sprintf(cmd, "/sbin/ntpclient -h %s -s -c 0 2>/src/ntp", ntp_conf.ntp_server_ip);
			system(cmd);
		}
	}
	else
	{
		system("killall ntpclient");
	}

	switch(ntp_conf.ntp_timezone)
	{
		case 0 :
				strcpy(timezone, "Pacific/Kwajalein");
				break;
		case 1 :
				strcpy(timezone, "Pacific/Midway");
				break;
		case 2 :
				strcpy(timezone, "US/Hawaii");
				break;
		case 3 :
				strcpy(timezone, "US/Alaska");
				break;
		case 4 :
				strcpy(timezone, "US/Pacific");
				break;
		case 5 :
				strcpy(timezone, "US/Arizona");	
				break;
		case 6 :
				strcpy(timezone, "US/Mountain");
				break;
		case 7 :
				strcpy(timezone, "US/Central");
				break;
		case 8 :
				strcpy(timezone, "America/Mexico_City");
				break;
		case 9 :
				strcpy(timezone, "Canada/Saskatchewan");
				break;
		case 10 :
				strcpy(timezone, "America/Bogota");
				break;
		case 11 :
				strcpy(timezone, "US/Eastern");
				break;
		case 12 :
				strcpy(timezone, "America/Indiana");
				break;
		case 13 :
				strcpy(timezone, "Canada/Atlantic");
				break;
		case 14 :
				strcpy(timezone, "US/Pacific");
				break;
	//	case 15 :
	//			break;
		case 15 :
				strcpy(timezone, "Canada/newfoundland");
				break;
	//	case 17 :
	//			break;
		case 16 :
				strcpy(timezone, "America/Buenos_Aires");
				break;
	//	case 19 :

	//			break;
				
		case 17 :
				strcpy(timezone, "Atlanfic/Azores");
				break;
		case 18 :
				strcpy(timezone, "Africa/Casablanca");
				break;
		case 19 :
				strcpy(timezone, "Europe/Dublin");
				break;
		case 20 :
				strcpy(timezone, "Europe/London");
				break;
		case 21 :
				strcpy(timezone, "Europe/Berlin");
				break;
		case 22 :
				strcpy(timezone, "Europe/Stockholm");	
				break;
		case 23 :
				strcpy(timezone, "Europe/Budapest");
				break;
		case 24 :
				strcpy(timezone, "Europe/Madrid");
				break;
		case 25 :
				strcpy(timezone, "Europe/Vilnius");
				break;
		case 26 :
				strcpy(timezone, "Europe/Zagreb");
				break;
		case 27 :
				strcpy(timezone, "Europe/Athens");
				break;
		case 28 :
				strcpy(timezone, "Europe/Bucharest");
				break;
		case 29 :
				strcpy(timezone, "Africa/Cairo");
				break;
		case 30 :
				strcpy(timezone, "Africa/Harare");
				break;
		case 31 :
				strcpy(timezone, "Europe/Riga");
				break;
	//	case 32 :
	//			break;
		case 32 :
				strcpy(timezone, "Asia/Kuwait");
				break;
		case 33 :
				strcpy(timezone, "Europe/Moscow");
				break;
		case 34 :
				strcpy(timezone, "Asia/Tehran");
				break;
		case 35 :
				strcpy(timezone, "Canada/Muscat");
				break;
		case 36 :
				strcpy(timezone, "Asia/Kabul");
				break;
		case 37 :
				strcpy(timezone, "Asia/Karach");
				break;
		case 38 :
				strcpy(timezone, "Asia/Dhaka");
				break;
		case 39 :
				strcpy(timezone, "Asia/Bangkok");
				break;
		case 40 :
				strcpy(timezone, "Asia/Shanghai");
				break;
		case 41 :
				strcpy(timezone, "Asia/Hong Kong");	
				break;
		case 42 :
				strcpy(timezone, "Asia/Tokyo");
				break;
		case 43 :
				strcpy(timezone, "Australia/Brisbane");
				break;
		case 44 :
				strcpy(timezone, "Australia/Sydney");
				break;
		case 45 :
				strcpy(timezone, "Pacific/Guam");
				break;
		case 46 :
				strcpy(timezone, "Australia/Hobart");
				break;
		case 47 :
				strcpy(timezone, "Asia/Magadan");
				break;
		case 48 :
				strcpy(timezone, "Pacific/Fiji");
				break;
		case 49 :
				strcpy(timezone, "Pacific/Auckland");
				break;
		default : ;
	}		
		sprintf(cmd, "cp /usr/share/zoneinfo/%s /etc/localtime -f &>/src/tz", timezone);
		system(cmd);
	return 0;
}

⌨️ 快捷键说明

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