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

📄 disczk.c

📁 国际标准协议的
💻 C
字号:
#include	<stdio.h>
#include	<stdlib.h>
#include	<string.h>
#include	<strings.h>
#include	<fcntl.h>
#include	<unistd.h>
#include	<shadow.h>

#include	"account.h"
#include	"acc_file.h"
#include	"acc_shm.h"

typedef struct account_pw {
	char	cid[10];	/* Card ID */
	char	passwd[16];	/* Card Password */
	char	type;		/* Card type */
	char	status;		/* Card Active Status */
	long	first_date;	/* First login time */
	long	last_date;	/* Last login time */
	char	account_id[12];	/* Bank account id */
	long	left_fee;	/* Left available fee */
} ACCOUNT_PW;


main(int argc,char **argv)
{
	ACCOUNT_PW	user_czk;
	stru_user	user_xf;
	
	FILE	*fp_czk;
	FILE	*fp_xf;
	
	int	id,i;
	
	
	FILE	*fp;
	
	char	buf[1000];
	int	j;
	char	*ptr;
	struct spwd	sha;
	struct spwd	*shaptr;
	long	expire_date;
	
	char	*filename;
	
	
	
	printf("显示指定储值卡[%s]用户信息\n\n",*(argv+1));
	for(i=1;i<=8;i++)
	{
		
		if(i==1)
		{
			filename="account_1.pw";
			if((fp_czk=fopen("/usr/radius/raddb/account_1.pw","rb"))==NULL)
			{
				printf("Cannot open account_1.pw\n");
				exit(1);
			}
		}
		
		if(i==2)
		{
			filename="account_2.pw";
			if((fp_czk=fopen("/usr/radius/raddb/account_2.pw","rb"))==NULL)
			{
				printf("Cannot open account_2.pw\n");

				exit(1);
			}
		}

		if(i==3)
		{
			filename="account_3.pw";			
			if((fp_czk=fopen("/usr/radius/raddb/account_3.pw","rb"))==NULL)
			{
				printf("Cannot open account_3.pw\n");

				exit(1);
			}
		}

		if(i==4)
		{
			filename="account_4.pw";
			if((fp_czk=fopen("/usr/radius/raddb/account_4.pw","rb"))==NULL)
			{
				printf("Cannot open account_4.pw\n");

				exit(1);
			}
		}

		if(i==5)
		{
			filename="account_5.pw";
			if((fp_czk=fopen("/usr/radius/raddb/account_5.pw","rb"))==NULL)
			{
				printf("Cannot open account_5.pw\n");

				exit(1);
			}
		}
		
		if(i==6)
		{
			filename="account_6.pw";
			if((fp_czk=fopen("/usr/radius/raddb/account_6.pw","rb"))==NULL)
			{
				printf("Cannot open account_6.pw\n");

				exit(1);
			}
		}

		if(i==7)
		{
			filename="account_8.pw";
			if((fp_czk=fopen("/usr/radius/raddb/account_8.pw","rb"))==NULL)
			{
				printf("Cannot open account_8.pw\n");

				exit(1);
			}
		}

		if(i==8)
		{
			filename="account_9.pw";
			if((fp_czk=fopen("/usr/radius/raddb/account_9.pw","rb"))==NULL)
			{
				printf("Cannot open account_9.pw\n");

				exit(1);
			}
		}

		while(!feof(fp_czk))
		{
			if(fread(&user_czk,sizeof(ACCOUNT_PW),1,fp_czk)!=1)
			{
				printf("在文件%s中没有找到指定帐号的信息!\n",filename);
				break;
			}
			
			if(strcmp(user_czk.cid,*(argv+1))==0)
			{
				printf("\n\n在文件%s中找到该用户信息如下:\n",filename);
				printf("Card ID is %s\n",user_czk.cid);
				printf("Card Password is %s\n",user_czk.passwd);
				printf("Card type is %c\n",user_czk.type);
				printf("Card Active Status is %c\n",user_czk.status);
				printf("First login time is %d\n",user_czk.first_date);
				printf("Last login time is %d\n",user_czk.last_date);
				printf("Bank account id is %s\n",user_czk.account_id);
				printf("Left available fee is %ld\n",user_czk.left_fee);
				printf("********************************************************\n");
				break;
			}
		
		}
	
	}
	
	

/*	printf("转换原有UNIX用户\n");
	
	if((fp=fopen("/etc/shadow","r"))==NULL)
	{
		printf("Cannot open shadow file.\n");
		exit(1);
	}
	
	j=0;
	while(!feof(fp))
	{
		if(fgets(buf,1000,fp)==NULL)
		{
			printf("Read shadow file error!\n");
			break;
		}
		
		ptr=strchr(buf,':');
		*ptr=0;
		shaptr=getspnam(buf);
		
		
		if(shaptr==NULL)
		{
			printf("没权限读SHADOW文件!!\n");
			exit(-1);
		}
		
		printf("用户名:%s\n",shaptr->sp_namp);
		printf("密码:%s\n",shaptr->sp_pwdp);
		printf("过期日:%d\n",shaptr->sp_expire);
		printf("***************\n");

		j++;
		
		if(shaptr->sp_expire==-1)
		{
			expire_date=time(NULL)+10*365*24*60*60;
		}
		else
		{
			expire_date=(shaptr->sp_expire)*24*60*60;
		}
		
		
		strcpy(user_xf.Uname,shaptr->sp_namp);
		strcpy(user_xf.Passwd,shaptr->sp_pwdp);
		user_xf.Uid=id;
		user_xf.Gid=129;
		user_xf.Ulevel=0;
		user_xf.Cid=1;
		user_xf.Status=0;
		user_xf.Type=0;
		user_xf.CostType=2;
		strcpy(user_xf.Reserve,"unix_usr");
		user_xf.PeriodTm=0xFFFFFFFF;
		user_xf.Wday=0xFF;
		user_xf.AccvalidTm=time(NULL);
		user_xf.AccexpTm=expire_date;
		user_xf.Last_time=time(NULL);
		user_xf.CashAmt=(expire_date-time(NULL))*10;
		user_xf.PointAmt=0;
		user_xf.Credit=0;
		user_xf.Auth=0;
		user_xf.PerLimit=user_xf.CashAmt;
		user_xf.DayLimit=user_xf.CashAmt;
		user_xf.Amount=0;
		user_xf.ListPtr=-1;
		user_xf.UertPtr=-1;
		
		if(fwrite(&user_xf,sizeof(stru_user),1,fp_xf)!=1)
		{
			printf("Write user.dat error!\n");
			exit(-1);
		}
				
		id++;			
	}
	

	fclose(fp_xf);
	printf("转换了原有UNIX用户总数为:%d\n",j);
	
	
	printf("总用户数(储值卡用户及原有UNIX用户):%d\n",id);
	
*/

	
	printf("结束!\n");
	exit(0);
}

⌨️ 快捷键说明

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