📄 createdir.c
字号:
#include <linux/module.h>
#include <linux/config.h>
#include <linux/init.h>
#include <linux/netdevice.h> /* for dev_base */
#include <linux/fs.h>
#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/file.h>
#include <linux/dnotify.h>
#include <linux/if_ether.h>
#include <linux/ip.h>
#include <linux/tcp.h>
#include <linux/udp.h>
#include <linux/time.h>
#include <linux/vmalloc.h>
#include <asm/semaphore.h>
#include <asm/unistd.h>
#include "createDir.h"
#include "DomainIPHash.h"
#include "list.h"
#include "Rule.h"
#include "RuleIp.h"
#include "protocol.h"
#include "function.h"
const char Days[ 12 ] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
void CreateDirByTime( struct timeval* dir_time );
void localtime( time_t time, long timezone, struct tm *tm_time );
extern GVAR gVar;
int CreateDir( void *arg )
{
int i;
struct timeval current_time;
PTHREAD_CONTROL pControl = (PTHREAD_CONTROL)arg;
//创建前20分钟目录
do_gettimeofday( ¤t_time );
current_time.tv_sec += 60;
for( i = 0; i < 2; i ++ )
{
CreateDirByTime( ¤t_time );
current_time.tv_sec -= 60;
}
//每一分钟创建一个目录
daemonize( "create_dir" );
allow_signal( SIGTERM );
while( !signal_pending( current ) )
{
set_current_state( TASK_INTERRUPTIBLE );
schedule_timeout( 20 * 3000 );
do_gettimeofday( ¤t_time );
current_time.tv_sec += 60;
CreateDirByTime( ¤t_time);
}
complete_and_exit( &(pControl->thread_exited), 1 );
return 0;
}
void CreateDirByTime( struct timeval* dir_time )
{
char dir[ _MAX_DIR_LENGTH ];
struct tm local;
int i;
memset( dir, 0, _MAX_DIR_LENGTH );
localtime( dir_time->tv_sec, 3600 * 8, &local );
for( i = 0; i < gVar.Smtppop3PathNumber; i ++ )
{
sprintf( dir, "%s%d%02d%02d", gVar.Smtppop3Path[ i ], local.tm_year,
local.tm_mon, local.tm_mday );
mkdir( dir , 0755 );
//create YYYYMMDD\hh
sprintf( dir, "%s%d%02d%02d/%02d", gVar.Smtppop3Path[ i ], local.tm_year,
local.tm_mon, local.tm_mday, local.tm_hour );
mkdir( dir , 0755 );
//create YYYYMMDD\hh\mm
sprintf( dir, "%s%d%02d%02d/%02d/%02d", gVar.Smtppop3Path[ i ], local.tm_year,
local.tm_mon, local.tm_mday, local.tm_hour, local.tm_min );
mkdir( dir , 0755 );
}
/*
for( i = 0; i < gVar.WebMailPathNumber; i ++ )
{
//create WEB_MAIL_SEND_CON YYYYMMDD
sprintf( dir, "%s%s/%d%02d%02d", gVar.WebMailPath[i], WEB_MAIL_SEND_CON,
local.tm_year, local.tm_mon, local.tm_mday );
mkdir( dir , 0755 );
//create YYYYMMDD\hh
sprintf( dir, "%s%s/%d%02d%02d/%02d", gVar.WebMailPath[i], WEB_MAIL_SEND_CON,
local.tm_year, local.tm_mon, local.tm_mday, local.tm_hour );
mkdir( dir , 0755 );
//create YYYYMMDD\hh\mm
sprintf( dir, "%s%s/%d%02d%02d/%02d/%02d", gVar.WebMailPath[i], WEB_MAIL_SEND_CON,
local.tm_year, local.tm_mon, local.tm_mday, local.tm_hour, local.tm_min );
mkdir( dir , 0755 );
//create WEB_MAIL_RECEIVE_CON YYYYMMDD
sprintf( dir, "%s%s/%d%02d%02d", gVar.WebMailPath[i], WEB_MAIL_RECEIVE_CON,
local.tm_year, local.tm_mon, local.tm_mday );
mkdir( dir , 0755 );
//create YYYYMMDD\hh
sprintf( dir, "%s%s/%d%02d%02d/%02d", gVar.WebMailPath[i], WEB_MAIL_RECEIVE_CON,
local.tm_year, local.tm_mon, local.tm_mday, local.tm_hour );
mkdir( dir , 0755 );
//create YYYYMMDD\hh\mm
sprintf( dir, "%s%s/%d%02d%02d/%02d/%02d", gVar.WebMailPath[i],WEB_MAIL_RECEIVE_CON,
local.tm_year, local.tm_mon, local.tm_mday, local.tm_hour, local.tm_min );
mkdir( dir , 0755 );
//create WEB_MAIL_ATTACH YYYYMMDD
sprintf( dir, "%s%s/%d%02d%02d", gVar.WebMailPath[ i ], WEB_MAIL_ATTACH,
local.tm_year,local.tm_mon, local.tm_mday);
mkdir( dir , 0755 );
//create YYYYMMDD\hh
sprintf( dir, "%s%s/%d%02d%02d/%02d", gVar.WebMailPath[i], WEB_MAIL_ATTACH,
local.tm_year, local.tm_mon, local.tm_mday, local.tm_hour);
mkdir( dir , 0755 );
//create YYYYMMDD\hh\mm
sprintf( dir, "%s%s/%d%02d%02d/%02d/%02d", gVar.WebMailPath[ i ], WEB_MAIL_ATTACH,
local.tm_year, local.tm_mon, local.tm_mday, local.tm_hour, local.tm_min );
mkdir( dir , 0755 );
//create WEB_MAIL_ADDLIST YYYYMMDD
sprintf( dir, "%s%s/%d%02d%02d", gVar.WebMailPath[i], WEB_MAIL_ADD_LIST,
local.tm_year, local.tm_mon, local.tm_mday );
mkdir( dir , 0755 );
//create YYYYMMDD\hh
sprintf( dir, "%s%s/%d%02d%02d/%02d", gVar.WebMailPath[i], WEB_MAIL_ADD_LIST,
local.tm_year, local.tm_mon, local.tm_mday, local.tm_hour );
mkdir( dir , 0755 );
//create YYYYMMDD\hh\mm
sprintf( dir, "%s%s/%d%02d%02d/%02d/%02d", gVar.WebMailPath[ i ], WEB_MAIL_ADD_LIST,
local.tm_year, local.tm_mon, local.tm_mday, local.tm_hour, local.tm_min );
mkdir( dir , 0755 );
//create WEB_MAIL_ADDLIST YYYYMMDD
sprintf( dir, "%s%s/%d%02d%02d", gVar.WebMailPath[i], BBS_SEND,
local.tm_year, local.tm_mon, local.tm_mday );
mkdir( dir , 0755 );
//create YYYYMMDD\hh
sprintf( dir, "%s%s/%d%02d%02d/%02d", gVar.WebMailPath[i], BBS_SEND,
local.tm_year, local.tm_mon, local.tm_mday, local.tm_hour );
mkdir( dir , 0755 );
//create YYYYMMDD\hh\mm
sprintf( dir, "%s%s/%d%02d%02d/%02d/%02d", gVar.WebMailPath[i], BBS_SEND,
local.tm_year, local.tm_mon, local.tm_mday, local.tm_hour, local.tm_min );
mkdir( dir , 0755 );
//create WEB_MAIL_ADDLIST YYYYMMDD
sprintf( dir, "%s%s/%d%02d%02d", gVar.WebMailPath[i], BBS_RECEIVE,
local.tm_year, local.tm_mon, local.tm_mday );
mkdir( dir , 0755 );
//create YYYYMMDD\hh
sprintf( dir, "%s%s/%d%02d%02d/%02d", gVar.WebMailPath[i], BBS_RECEIVE,
local.tm_year, local.tm_mon, local.tm_mday, local.tm_hour );
mkdir( dir , 0755 );
//create YYYYMMDD\hh\mm
sprintf( dir, "%s%s/%d%02d%02d/%02d/%02d", gVar.WebMailPath[i], BBS_RECEIVE,
local.tm_year, local.tm_mon, local.tm_mday, local.tm_hour, local.tm_min );
mkdir( dir , 0755 );
//create WEB_POST YYYYMMDD
sprintf( dir, "%s%s/%d%02d%02d", gVar.WebMailPath[i], WEB_POST,
local.tm_year, local.tm_mon, local.tm_mday );
mkdir( dir , 0755 );
//create YYYYMMDD\hh
sprintf( dir, "%s%s/%d%02d%02d/%02d", gVar.WebMailPath[i], WEB_POST,
local.tm_year, local.tm_mon, local.tm_mday, local.tm_hour );
mkdir( dir , 0755 );
}
for( i = 0; i < gVar.MsnPathNumber; i ++ )
{
//create MSN YYYYMMDD
sprintf( dir, "%s%d%02d%02d", gVar.MsnPath[i], local.tm_year,local.tm_mon, local.tm_mday);
mkdir( dir , 0755 );
//create YYYYMMDD\hh
sprintf( dir, "%s%d%02d%02d/%02d", gVar.MsnPath[i], local.tm_year,
local.tm_mon, local.tm_mday, local.tm_hour );
mkdir( dir , 0755 );
//create YYYYMMDD\hh\mm
sprintf( dir, "%s%d%02d%02d/%02d/%02d", gVar.MsnPath[i], local.tm_year,
local.tm_mon, local.tm_mday, local.tm_hour, local.tm_min );
mkdir( dir , 0755 );
}
for( i = 0; i < gVar.FtpPathNumber; i ++ )
{
//create IM LOG YYYYMMDD
sprintf( dir, "%s%d%02d%02d", gVar.FtpPath[i], local.tm_year, local.tm_mon, local.tm_mday );
mkdir( dir , 0755 );
}
for( i = 0; i < gVar.TelnetPathNumber; i ++ )
{
//create IM LOG YYYYMMDD
sprintf( dir, "%s%d%02d%02d", gVar.TelnetPath[i], local.tm_year,local.tm_mon, local.tm_mday);
mkdir( dir , 0755 );
}
for( i = 0; i < gVar.HttpUrlPathNumber; i ++ )
{
//create IM LOG YYYYMMDD
sprintf( dir, "%s%d%02d%02d", gVar.HttpUrlPath[i], local.tm_year,local.tm_mon, local.tm_mday);
mkdir( dir , 0755 );
}
for( i = 0; i < gVar.IcqPathNumber; i ++ )
{
//create MSN YYYYMMDD
sprintf( dir, "%s%d%02d%02d", gVar.IcqPath[i], local.tm_year,local.tm_mon, local.tm_mday);
mkdir( dir , 0755 );
//create YYYYMMDD\hh
sprintf( dir, "%s%d%02d%02d/%02d", gVar.IcqPath[i],local.tm_year,local.tm_mon, local.tm_mday,local.tm_hour);
mkdir( dir , 0755 );
//create YYYYMMDD\hh\mm
sprintf( dir, "%s%d%02d%02d/%02d/%02d", gVar.IcqPath[i],local.tm_year,local.tm_mon, local.tm_mday,local.tm_hour,local.tm_min);
mkdir( dir , 0755 );
}
for( i = 0; i < gVar.YahooPathNumber; i ++ )
{
//create MSN YYYYMMDD
sprintf( dir, "%s%d%02d%02d", gVar.YahooPath[i], local.tm_year,local.tm_mon, local.tm_mday);
mkdir( dir , 0755 );
//create YYYYMMDD\hh
sprintf( dir, "%s%d%02d%02d/%02d", gVar.YahooPath[i],local.tm_year,local.tm_mon, local.tm_mday,local.tm_hour);
mkdir( dir , 0755 );
//create YYYYMMDD\hh\mm
sprintf( dir, "%s%d%02d%02d/%02d/%02d", gVar.YahooPath[i],local.tm_year,local.tm_mon, local.tm_mday,local.tm_hour,local.tm_min);
mkdir( dir , 0755 );
}*/
return;
}
void localtime( time_t time, long timezone, struct tm *tm_time )
{
unsigned int n32_Pass4year;
int n32_hpery;
//计算时差
time = time + timezone;
if( time < 0 )
time = 0;
//取秒时间
tm_time->tm_sec = (int)( time % 60 );
time /= 60;
//取分钟时间
tm_time->tm_min = (int)( time % 60 );
time /= 60;
//取过去多少个四年,每四年有 1461 * 24 小时
n32_Pass4year = ( (unsigned int)time / (1461L * 24L) );
//计算年份
tm_time->tm_year = ( n32_Pass4year << 2 );// + 70;
//四年中剩下的小时数
time %= 1461L * 24L;
//校正闰年影响的年份,计算一年中剩下的小时数
for( ; ; )
{
//一年的小时数
n32_hpery = 365 * 24;
//判断闰年
if( ( tm_time->tm_year & 3 ) == 0 )
{
//是闰年,一年则多24小时,即一天
n32_hpery += 24;
}
if( time < n32_hpery )
{
break;
}
tm_time->tm_year++;
time -= n32_hpery;
}
//小时数
tm_time->tm_hour = (int)( time % 24 );
//一年中剩下的天数
time /= 24;
//假定为闰年
time++;
//校正润年的误差,计算月份,日期
if( ( tm_time->tm_year & 3 ) == 0 )
{
if( time > 60 )
{
time--;
}
else
{
if( time == 60 )
{
tm_time->tm_mon = 1;
tm_time->tm_mday = 29;
return ;
}
}
}
//计算月日
for( tm_time->tm_mon = 1; Days[ tm_time->tm_mon ] < time; tm_time->tm_mon ++ )
{
time -= Days[ tm_time->tm_mon - 1 ];
}
//习惯问题,其实未满24小时,但是习惯上多加一天
tm_time->tm_mday = (int)(time) + 1;
if( tm_time->tm_mday > Days[ tm_time->tm_mon - 1 ] )
{
tm_time->tm_mday = 1;
tm_time->tm_mon ++;
}
tm_time->tm_year += 1970;
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -