📄 ntp_setup.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 + -