Skip to content
Snippets Groups Projects
Commit 72e25ddf authored by rswindell's avatar rswindell
Browse files

Add Tracker1's request: if the dir user/#### (0-padded 4 digit decimal user

number) exists, delete it when deleting a user account so that the directory
may be used for 3rd party user data with any (unique) filename.
parent a1eda4f8
No related branches found
No related tags found
No related merge requests found
...@@ -69,7 +69,7 @@ uint DLLCALL matchuser(scfg_t* cfg, const char *name, BOOL sysop_alias) ...@@ -69,7 +69,7 @@ uint DLLCALL matchuser(scfg_t* cfg, const char *name, BOOL sysop_alias)
(!stricmp(name,"SYSOP") || !stricmp(name,"POSTMASTER") || !stricmp(name,cfg->sys_id))) (!stricmp(name,"SYSOP") || !stricmp(name,"POSTMASTER") || !stricmp(name,cfg->sys_id)))
return(1); return(1);
sprintf(str,"%suser/name.dat",cfg->data_dir); SAFEPRINTF(str,"%suser/name.dat",cfg->data_dir);
if((file=nopen(str,O_RDONLY))==-1) if((file=nopen(str,O_RDONLY))==-1)
return(0); return(0);
length=(long)filelength(file); length=(long)filelength(file);
...@@ -135,7 +135,7 @@ uint DLLCALL total_users(scfg_t* cfg) ...@@ -135,7 +135,7 @@ uint DLLCALL total_users(scfg_t* cfg)
if(!VALID_CFG(cfg)) if(!VALID_CFG(cfg))
return(0); return(0);
sprintf(str,"%suser/user.dat", cfg->data_dir); SAFEPRINTF(str,"%suser/user.dat", cfg->data_dir);
if((file=nopen(str,O_RDONLY|O_DENYNONE))==-1) if((file=nopen(str,O_RDONLY|O_DENYNONE))==-1)
return(0); return(0);
length=(long)filelength(file); length=(long)filelength(file);
...@@ -164,7 +164,7 @@ uint DLLCALL lastuser(scfg_t* cfg) ...@@ -164,7 +164,7 @@ uint DLLCALL lastuser(scfg_t* cfg)
if(!VALID_CFG(cfg)) if(!VALID_CFG(cfg))
return(0); return(0);
sprintf(str,"%suser/user.dat", cfg->data_dir); SAFEPRINTF(str,"%suser/user.dat", cfg->data_dir);
if((length=(long)flength(str))>0) if((length=(long)flength(str))>0)
return((uint)(length/U_LEN)); return((uint)(length/U_LEN));
return(0); return(0);
...@@ -182,7 +182,7 @@ BOOL DLLCALL del_lastuser(scfg_t* cfg) ...@@ -182,7 +182,7 @@ BOOL DLLCALL del_lastuser(scfg_t* cfg)
if(!VALID_CFG(cfg)) if(!VALID_CFG(cfg))
return(FALSE); return(FALSE);
sprintf(str,"%suser/user.dat", cfg->data_dir); SAFEPRINTF(str,"%suser/user.dat", cfg->data_dir);
if((file=nopen(str,O_RDWR|O_DENYNONE))==-1) if((file=nopen(str,O_RDWR|O_DENYNONE))==-1)
return(FALSE); return(FALSE);
length=(long)filelength(file); length=(long)filelength(file);
...@@ -215,7 +215,7 @@ int DLLCALL getuserdat(scfg_t* cfg, user_t *user) ...@@ -215,7 +215,7 @@ int DLLCALL getuserdat(scfg_t* cfg, user_t *user)
if(!VALID_CFG(cfg) || user_number<1) if(!VALID_CFG(cfg) || user_number<1)
return(-1); return(-1);
sprintf(userdat,"%suser/user.dat",cfg->data_dir); SAFEPRINTF(userdat,"%suser/user.dat",cfg->data_dir);
if((file=nopen(userdat,O_RDONLY|O_DENYNONE))==-1) if((file=nopen(userdat,O_RDONLY|O_DENYNONE))==-1)
return(errno); return(errno);
...@@ -502,7 +502,7 @@ int DLLCALL putuserdat(scfg_t* cfg, user_t* user) ...@@ -502,7 +502,7 @@ int DLLCALL putuserdat(scfg_t* cfg, user_t* user)
putrec(userdat,U_UNUSED,U_LEN-(U_UNUSED)-2,crlf); putrec(userdat,U_UNUSED,U_LEN-(U_UNUSED)-2,crlf);
putrec(userdat,U_UNUSED+(U_LEN-(U_UNUSED)-2),2,crlf); putrec(userdat,U_UNUSED+(U_LEN-(U_UNUSED)-2),2,crlf);
sprintf(str,"%suser/user.dat", cfg->data_dir); SAFEPRINTF(str,"%suser/user.dat", cfg->data_dir);
if((file=nopen(str,O_RDWR|O_CREAT|O_DENYNONE))==-1) { if((file=nopen(str,O_RDWR|O_CREAT|O_DENYNONE))==-1) {
return(errno); return(errno);
} }
...@@ -556,7 +556,7 @@ char* DLLCALL username(scfg_t* cfg, int usernumber, char *name) ...@@ -556,7 +556,7 @@ char* DLLCALL username(scfg_t* cfg, int usernumber, char *name)
name[0]=0; name[0]=0;
return(name); return(name);
} }
sprintf(str,"%suser/name.dat",cfg->data_dir); SAFEPRINTF(str,"%suser/name.dat",cfg->data_dir);
if(flength(str)<1L) { if(flength(str)<1L) {
name[0]=0; name[0]=0;
return(name); return(name);
...@@ -595,7 +595,7 @@ int DLLCALL putusername(scfg_t* cfg, int number, char *name) ...@@ -595,7 +595,7 @@ int DLLCALL putusername(scfg_t* cfg, int number, char *name)
if(!VALID_CFG(cfg) || name==NULL || number<1) if(!VALID_CFG(cfg) || name==NULL || number<1)
return(-1); return(-1);
sprintf(str,"%suser/name.dat", cfg->data_dir); SAFEPRINTF(str,"%suser/name.dat", cfg->data_dir);
if((file=nopen(str,O_RDWR|O_CREAT))==-1) if((file=nopen(str,O_RDWR|O_CREAT))==-1)
return(errno); return(errno);
length=(long)filelength(file); length=(long)filelength(file);
...@@ -610,7 +610,7 @@ int DLLCALL putusername(scfg_t* cfg, int number, char *name) ...@@ -610,7 +610,7 @@ int DLLCALL putusername(scfg_t* cfg, int number, char *name)
return(-3); return(-3);
} }
if(length<(((long)number-1)*(LEN_ALIAS+2))) { if(length<(((long)number-1)*(LEN_ALIAS+2))) {
sprintf(str,"%*s",LEN_ALIAS,nulstr); SAFEPRINTF2(str,"%*s",LEN_ALIAS,nulstr);
memset(str,ETX,LEN_ALIAS); memset(str,ETX,LEN_ALIAS);
strcat(str,crlf); strcat(str,crlf);
lseek(file,0L,SEEK_END); lseek(file,0L,SEEK_END);
...@@ -687,7 +687,7 @@ int DLLCALL getnodedat(scfg_t* cfg, uint number, node_t *node, int* fdp) ...@@ -687,7 +687,7 @@ int DLLCALL getnodedat(scfg_t* cfg, uint number, node_t *node, int* fdp)
return(-1); return(-1);
memset(node,0,sizeof(node_t)); memset(node,0,sizeof(node_t));
sprintf(str,"%snode.dab",cfg->ctrl_dir); SAFEPRINTF(str,"%snode.dab",cfg->ctrl_dir);
if((file=nopen(str,O_RDWR|O_DENYNONE))==-1) if((file=nopen(str,O_RDWR|O_DENYNONE))==-1)
return(errno); return(errno);
...@@ -850,21 +850,21 @@ char* DLLCALL nodestatus(scfg_t* cfg, node_t* node, char* buf, size_t buflen) ...@@ -850,21 +850,21 @@ char* DLLCALL nodestatus(scfg_t* cfg, node_t* node, char* buf, size_t buflen)
strcpy(str,"Networking"); strcpy(str,"Networking");
break; break;
case NODE_LOGON: case NODE_LOGON:
sprintf(str,"At logon prompt %s" SAFEPRINTF(str,"At logon prompt %s"
,node_connection_desc(node->connection, tmp)); ,node_connection_desc(node->connection, tmp));
break; break;
case NODE_EVENT_WAITING: case NODE_EVENT_WAITING:
strcpy(str,"Waiting for all nodes to become inactive"); strcpy(str,"Waiting for all nodes to become inactive");
break; break;
case NODE_EVENT_LIMBO: case NODE_EVENT_LIMBO:
sprintf(str,"Waiting for node %d to finish external event" SAFEPRINTF(str,"Waiting for node %d to finish external event"
,node->aux); ,node->aux);
break; break;
case NODE_EVENT_RUNNING: case NODE_EVENT_RUNNING:
strcpy(str,"Running external event"); strcpy(str,"Running external event");
break; break;
case NODE_NEWUSER: case NODE_NEWUSER:
sprintf(str,"New user applying for access %s" SAFEPRINTF(str,"New user applying for access %s"
,node_connection_desc(node->connection, tmp)); ,node_connection_desc(node->connection, tmp));
break; break;
case NODE_QUIET: case NODE_QUIET:
...@@ -1058,7 +1058,7 @@ uint DLLCALL userdatdupe(scfg_t* cfg, uint usernumber, uint offset, uint datlen ...@@ -1058,7 +1058,7 @@ uint DLLCALL userdatdupe(scfg_t* cfg, uint usernumber, uint offset, uint datlen
return(0); return(0);
truncsp(dat); truncsp(dat);
sprintf(str,"%suser/user.dat", cfg->data_dir); SAFEPRINTF(str,"%suser/user.dat", cfg->data_dir);
if((file=nopen(str,O_RDONLY|O_DENYNONE))==-1) if((file=nopen(str,O_RDONLY|O_DENYNONE))==-1)
return(0); return(0);
length=(long)filelength(file); length=(long)filelength(file);
...@@ -1118,7 +1118,7 @@ int DLLCALL putsmsg(scfg_t* cfg, int usernumber, char *strin) ...@@ -1118,7 +1118,7 @@ int DLLCALL putsmsg(scfg_t* cfg, int usernumber, char *strin)
if(*strin==0) if(*strin==0)
return(0); return(0);
sprintf(str,"%smsgs/%4.4u.msg",cfg->data_dir,usernumber); SAFEPRINTF2(str,"%smsgs/%4.4u.msg",cfg->data_dir,usernumber);
if((file=nopen(str,O_WRONLY|O_CREAT|O_APPEND))==-1) { if((file=nopen(str,O_WRONLY|O_CREAT|O_APPEND))==-1) {
return(errno); return(errno);
} }
...@@ -1166,7 +1166,7 @@ char* DLLCALL getsmsg(scfg_t* cfg, int usernumber) ...@@ -1166,7 +1166,7 @@ char* DLLCALL getsmsg(scfg_t* cfg, int usernumber)
} }
} }
sprintf(str,"%smsgs/%4.4u.msg",cfg->data_dir,usernumber); SAFEPRINTF2(str,"%smsgs/%4.4u.msg",cfg->data_dir,usernumber);
if(flength(str)<1L) if(flength(str)<1L)
return(NULL); return(NULL);
if((file=nopen(str,O_RDWR))==-1) if((file=nopen(str,O_RDWR))==-1)
...@@ -1203,7 +1203,7 @@ char* DLLCALL getnmsg(scfg_t* cfg, int node_num) ...@@ -1203,7 +1203,7 @@ char* DLLCALL getnmsg(scfg_t* cfg, int node_num)
node.misc&=~NODE_NMSG; /* clear the NMSG flag */ node.misc&=~NODE_NMSG; /* clear the NMSG flag */
putnodedat(cfg,node_num,&node,file); putnodedat(cfg,node_num,&node,file);
sprintf(str,"%smsgs/n%3.3u.msg",cfg->data_dir,node_num); SAFEPRINTF2(str,"%smsgs/n%3.3u.msg",cfg->data_dir,node_num);
if(flength(str)<1L) if(flength(str)<1L)
return(NULL); return(NULL);
if((file=nopen(str,O_RDWR))==-1) if((file=nopen(str,O_RDWR))==-1)
...@@ -1244,7 +1244,7 @@ int DLLCALL putnmsg(scfg_t* cfg, int num, char *strin) ...@@ -1244,7 +1244,7 @@ int DLLCALL putnmsg(scfg_t* cfg, int num, char *strin)
if(*strin==0) if(*strin==0)
return(0); return(0);
sprintf(str,"%smsgs/n%3.3u.msg",cfg->data_dir,num); SAFEPRINTF2(str,"%smsgs/n%3.3u.msg",cfg->data_dir,num);
if((file=nopen(str,O_WRONLY|O_CREAT))==-1) if((file=nopen(str,O_WRONLY|O_CREAT))==-1)
return(errno); return(errno);
lseek(file,0L,SEEK_END); /* Instead of opening with O_APPEND */ lseek(file,0L,SEEK_END); /* Instead of opening with O_APPEND */
...@@ -1854,7 +1854,7 @@ int DLLCALL getuserrec(scfg_t* cfg, int usernumber,int start, int length, char * ...@@ -1854,7 +1854,7 @@ int DLLCALL getuserrec(scfg_t* cfg, int usernumber,int start, int length, char *
if(!VALID_CFG(cfg) || usernumber<1 || str==NULL) if(!VALID_CFG(cfg) || usernumber<1 || str==NULL)
return(-1); return(-1);
sprintf(path,"%suser/user.dat",cfg->data_dir); SAFEPRINTF(path,"%suser/user.dat",cfg->data_dir);
if((file=nopen(path,O_RDONLY|O_DENYNONE))==-1) if((file=nopen(path,O_RDONLY|O_DENYNONE))==-1)
return(errno); return(errno);
if(usernumber<1 if(usernumber<1
...@@ -1908,7 +1908,7 @@ int DLLCALL putuserrec(scfg_t* cfg, int usernumber,int start, uint length, const ...@@ -1908,7 +1908,7 @@ int DLLCALL putuserrec(scfg_t* cfg, int usernumber,int start, uint length, const
if(!VALID_CFG(cfg) || usernumber<1 || str==NULL) if(!VALID_CFG(cfg) || usernumber<1 || str==NULL)
return(-1); return(-1);
sprintf(str2,"%suser/user.dat",cfg->data_dir); SAFEPRINTF(str2,"%suser/user.dat",cfg->data_dir);
if((file=nopen(str2,O_RDWR|O_DENYNONE))==-1) if((file=nopen(str2,O_RDWR|O_DENYNONE))==-1)
return(errno); return(errno);
...@@ -1960,7 +1960,7 @@ ulong DLLCALL adjustuserrec(scfg_t* cfg, int usernumber, int start, int length, ...@@ -1960,7 +1960,7 @@ ulong DLLCALL adjustuserrec(scfg_t* cfg, int usernumber, int start, int length,
if(!VALID_CFG(cfg) || usernumber<1) if(!VALID_CFG(cfg) || usernumber<1)
return(0); return(0);
sprintf(path,"%suser/user.dat",cfg->data_dir); SAFEPRINTF(path,"%suser/user.dat",cfg->data_dir);
if((file=nopen(path,O_RDWR|O_DENYNONE))==-1) if((file=nopen(path,O_RDWR|O_DENYNONE))==-1)
return(0); return(0);
...@@ -2223,7 +2223,7 @@ char* DLLCALL alias(scfg_t* cfg, const char* name, char* buf) ...@@ -2223,7 +2223,7 @@ char* DLLCALL alias(scfg_t* cfg, const char* name, char* buf)
p=(char*)name; p=(char*)name;
sprintf(fname,"%salias.cfg",cfg->ctrl_dir); SAFEPRINTF(fname,"%salias.cfg",cfg->ctrl_dir);
if((fp=fopen(fname,"r"))==NULL) if((fp=fopen(fname,"r"))==NULL)
return((char*)name); return((char*)name);
...@@ -2289,7 +2289,7 @@ int DLLCALL newuserdat(scfg_t* cfg, user_t* user) ...@@ -2289,7 +2289,7 @@ int DLLCALL newuserdat(scfg_t* cfg, user_t* user)
if(!VALID_CFG(cfg) || user==NULL) if(!VALID_CFG(cfg) || user==NULL)
return(-1); return(-1);
sprintf(str,"%suser/name.dat",cfg->data_dir); SAFEPRINTF(str,"%suser/name.dat",cfg->data_dir);
if(fexist(str)) { if(fexist(str)) {
if((stream=fnopen(&file,str,O_RDONLY))==NULL) { if((stream=fnopen(&file,str,O_RDONLY))==NULL) {
return(errno); return(errno);
...@@ -2333,24 +2333,27 @@ int DLLCALL newuserdat(scfg_t* cfg, user_t* user) ...@@ -2333,24 +2333,27 @@ int DLLCALL newuserdat(scfg_t* cfg, user_t* user)
if((err=putuserdat(cfg,user))!=0) if((err=putuserdat(cfg,user))!=0)
return(err); return(err);
sprintf(str,"%sfile/%04u.in",cfg->data_dir,user->number); /* delete any files */ SAFEPRINTF2(str,"%sfile/%04u.in",cfg->data_dir,user->number); /* delete any files */
delfiles(str,ALLFILES); /* waiting for user */ delfiles(str,ALLFILES); /* waiting for user */
rmdir(str); rmdir(str);
sprintf(tmp,"%04u.*",user->number); SAFEPRINTF(tmp,"%04u.*",user->number);
sprintf(str,"%sfile",cfg->data_dir); SAFEPRINTF(str,"%sfile",cfg->data_dir);
delfiles(str,tmp); delfiles(str,tmp);
sprintf(str,"%suser",cfg->data_dir); SAFEPRINTF(str,"%suser",cfg->data_dir);
delfiles(str,tmp); delfiles(str,tmp);
SAFEPRINTF2(str,"%suser/%04u",cfg->data_dir,user->number);
delfiles(str,ALLFILES);
rmdir(str);
sprintf(str,"%suser/ptrs/%04u.ixb",cfg->data_dir,user->number); /* msg ptrs */ SAFEPRINTF2(str,"%suser/ptrs/%04u.ixb",cfg->data_dir,user->number); /* msg ptrs */
remove(str); remove(str);
sprintf(str,"%smsgs/%04u.msg",cfg->data_dir,user->number); /* delete short msg */ SAFEPRINTF2(str,"%smsgs/%04u.msg",cfg->data_dir,user->number); /* delete short msg */
remove(str); remove(str);
/* Update daily statistics database (for system and node) */ /* Update daily statistics database (for system and node) */
for(i=0;i<2;i++) { for(i=0;i<2;i++) {
sprintf(str,"%sdsts.dab",i ? cfg->ctrl_dir : cfg->node_dir); SAFEPRINTF(str,"%sdsts.dab",i ? cfg->ctrl_dir : cfg->node_dir);
if((file=nopen(str,O_RDWR))==-1) if((file=nopen(str,O_RDWR))==-1)
continue; continue;
memset(&stats,0,sizeof(stats)); memset(&stats,0,sizeof(stats));
...@@ -2572,7 +2575,7 @@ BOOL DLLCALL filter_ip(scfg_t* cfg, char* prot, char* reason, char* host ...@@ -2572,7 +2575,7 @@ BOOL DLLCALL filter_ip(scfg_t* cfg, char* prot, char* reason, char* host
if(ip_addr==NULL) if(ip_addr==NULL)
return(FALSE); return(FALSE);
sprintf(ip_can,"%sip.can",cfg->text_dir); SAFEPRINTF(ip_can,"%sip.can",cfg->text_dir);
if(fname==NULL) if(fname==NULL)
fname=ip_can; fname=ip_can;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment