/* FILE $Id: tvutentriesfunc.h 4 2005-11-16 23:48:32Z ggw $ (tAuthorize.cPasswd template set member) PURPOSE AUTHOR Template and mysqlRAD2 author: (c) 2001,2002 Gary Wallis. GPL License applies, see www.fsf.org for details TODO Allow special error messages for tVUTEntries.cTargetEmail (see www.sendmail.org) */ void tVUTEntriesNavList(void); void AddVirtualEmail(unsigned uVUTExt); void ImportVUTEntries(void); void AddVUTEntries(unsigned uVUT,const char *cVirtualEmail,const char *cTargetEmail); //Extern void ScheduleJob(unsigned uUser, unsigned uServer, const char *cJobName, const char *cJobData); char *cImportVUTEntries=NULL; void ExtProcesstVUTEntriesVars(pentry entries[], int x) { register int i; for(i=0;i=7) { mode=2000; tVUTEntries(LANG_NB_CONFIRMNEW); } }//void AddVirtualEmail(unsigned uVUTExt) void CheckVUTEntries(void) { char cDomain[100]; char *cp; char *cp2; if(strchr(cVirtualEmail,'@')) tVUTEntries("cVirtualEmail must not have domain"); if(!cVirtualEmail[0]) tVUTEntries("Must specify cVirtualEmail"); if(!cTargetEmail[0]) tVUTEntries("Must specify cTargetEmail"); if(strchr(cTargetEmail,',')) tVUTEntries("cTargetEmail must not have ','"); if(!(cp=strchr(cTargetEmail,'@'))) { MYSQL_RES *res; unsigned uServer=0; //Allow special error:nouser lines for DEFAULT only if(!strcmp(cVirtualEmail,"DEFAULT") && !strncmp(cTargetEmail,"error:nouser",12)) return; sscanf(ForeignKey("tVUT","uServer",uVUT),"%u",&uServer); //Check tAliases sprintf(query,"SELECT uAlias FROM tAlias WHERE cUser='%s' AND uServer=%u",cTargetEmail,uServer); mysql_query(&mysql,query); if(mysql_errno(&mysql)) mysqlSendmail(mysql_error(&mysql)); res=mysql_store_result(&mysql); if(!mysql_num_rows(res)) { //Check tUser sprintf(query,"SELECT uUser FROM tUser WHERE cLogin='%s' AND uServer=%u",cTargetEmail,uServer); mysql_query(&mysql,query); if(mysql_errno(&mysql)) mysqlSendmail(mysql_error(&mysql)); res=mysql_store_result(&mysql); if(!mysql_num_rows(res)) tVUTEntries("Local cTargetEmail not in tAlias or tUser."); } } else { if(strlen(cTargetEmail)<6) tVUTEntries("cTargetEmail is too short to be a valid email"); cp++; if(*cp==0) tVUTEntries("cTargetEmail must not end with @"); if(!(cp2=strchr(cp,'.'))) tVUTEntries("cTargetEmail must have a '.' after the '@'"); if(strlen(cp)<4) tVUTEntries("cTargetEmail after '@' part is too short"); cp2++; if(*cp2==0) tVUTEntries("cTargetEmail must not end with ."); if(strlen(cp2)<2) tVUTEntries("cTargetEmail after '@' and '.' part is too short"); } if((cp=strchr(cTargetEmail,'@'))) { strncpy(cDomain,ForeignKey("tVUT","cDomain",uVUT),99); cDomain[99]=0; if(!strcasecmp(cp+1,cDomain)) tVUTEntries("cTargetEmail domain must not be tVUT.cDomain"); } else { MYSQL_RES *res; char query[256]; sprintf(query,"SELECT uUser from tUser WHERE cLogin='%s'",cTargetEmail); mysql_query(&mysql,query); if(mysql_errno(&mysql)) mysqlSendmail(mysql_error(&mysql)); res=mysql_store_result(&mysql); if(!mysql_num_rows(res)) { sprintf(query,"SELECT uAlias from tAlias WHERE cUser='%s'",cTargetEmail); mysql_query(&mysql,query); if(mysql_errno(&mysql)) mysqlSendmail(mysql_error(&mysql)); res=mysql_store_result(&mysql); if(!mysql_num_rows(res)) { mysql_free_result(res); tVUTEntries("Unexpected error: Missing '@' in cTargetEmail. Or cTargetEmail not in tUser or tAlias"); } } mysql_free_result(res); } }//void CheckVUTEntries(void) void ExttVUTEntriesCommands(pentry entries[], int x) { if(!strcmp(function,"tVUTEntriesTools")) { unsigned uServer; if(!strcmp(command,LANG_NB_NEW)) { if(uPermLevel>=7) { ProcesstVUTEntriesVars(entries,x); if(!uVUT) tVUTEntries("Must use a valid uVUT. Hint: Start at tVUT"); mode=2000; tVUTEntries(LANG_NB_CONFIRMNEW); } } else if(!strcmp(command,LANG_NB_CONFIRMNEW)) { if(uPermLevel>=7) { ProcesstVUTEntriesVars(entries,x); if(!uVUT) tVUTEntries("Must use a valid uVUT. Hint: Start at tVUT"); mode=2000; CheckVUTEntries(); mode=0; uVUTEntries=0; uCreatedBy=uLoginClient; uOwner=uLoginClient; uModBy=0;//Never modified uModDate=0; sscanf(ForeignKey("tVUT","uServer",uVUT),"%u",&uServer); ScheduleJob(1,uServer,"NewVUTEntry",cVirtualEmail); NewtVUTEntries(0); } } else if(!strcmp(command,LANG_NB_DELETE)) { ProcesstVUTEntriesVars(entries,x); if(uOwner) GetClientOwner(uOwner,&uReseller); if( (uPermLevel>=7 && uOwner==uLoginClient) || (uPermLevel>9 && uOwner!=1) || (uPermLevel>7 && uReseller==uLoginClient) ) { mode=2001; tVUTEntries(LANG_NB_CONFIRMDEL); } } else if(!strcmp(command,LANG_NB_CONFIRMDEL)) { ProcesstVUTEntriesVars(entries,x); if(uOwner) GetClientOwner(uOwner,&uReseller); if( (uPermLevel>=7 && uOwner==uLoginClient) || (uPermLevel>9 && uOwner!=1) || (uPermLevel>7 && uReseller==uLoginClient) ) { mode=5; sscanf(ForeignKey("tVUT","uServer",uVUT),"%u",&uServer); ScheduleJob(1,uServer,"DeleteVUTEntry",cVirtualEmail); DeletetVUTEntries(); } } else if(!strcmp(command,LANG_NB_MODIFY)) { ProcesstVUTEntriesVars(entries,x); if(uOwner) GetClientOwner(uOwner,&uReseller); if( (uPermLevel>=7 && uOwner==uLoginClient) || (uPermLevel>9 && uOwner!=1) || (uPermLevel>7 && uReseller==uLoginClient) ) { mode=2002; tVUTEntries(LANG_NB_CONFIRMMOD); } } else if(!strcmp(command,LANG_NB_CONFIRMMOD)) { ProcesstVUTEntriesVars(entries,x); if(uOwner) GetClientOwner(uOwner,&uReseller); if( (uPermLevel>=7 && uOwner==uLoginClient) || (uPermLevel>9 && uOwner!=1) || (uPermLevel>7 && uReseller==uLoginClient) ) { MYSQL_RES *res; mode=2002; CheckVUTEntries(); sprintf(query,"SELECT uVUTEntries FROM tVUTEntries WHERE cVirtualEmail='%s' AND cTargetEmail='%s' AND uVUT=%u",cVirtualEmail,cTargetEmail,uVUT); mysql_query(&mysql,query); if(mysql_errno(&mysql)) mysqlSendmail(mysql_error(&mysql)); res=mysql_store_result(&mysql); if(mysql_num_rows(res)) tVUTEntries("Nothing changed no modification done"); mysql_free_result(res); mode=0; uModBy=uLoginClient; sscanf(ForeignKey("tVUT","uServer",uVUT),"%u",&uServer); ScheduleJob(1,uServer,"ModVUTEntry",cVirtualEmail); ModtVUTEntries(); } } else if(!strcmp(command,"ImportVUTEntries")) { ProcesstVUTEntriesVars(entries,x); if(uOwner) GetClientOwner(uOwner,&uReseller); if( uPermLevel>=10 ) { char cDomain[100]; Header_ism3("",0); printf("
"); printf(""); printf("\n"); printf(""); printf("
"); printf("\n"); printf("\n",uVUT); sprintf(cDomain,"%.99s",ForeignKey("tVUT","cDomain",uVUT)); printf("Enter properly formatted tVUTEntries data for cDomain=%s",cDomain); printf("

"); printf("
"); Footer_ism3(); } } else if(!strcmp(command,"Confirm ImportVUTEntries")) { ProcesstVUTEntriesVars(entries,x); if(uOwner) GetClientOwner(uOwner,&uReseller); if( uPermLevel>=10 ) { ImportVUTEntries(); } } } }//void ExttVUTEntriesCommands(pentry entries[], int x) void ExttVUTEntriesButtons(void) { printf("\n"); printf("\n"); printf("
"); printf(""); printf(""); switch(mode) { case 2000: printf("Enter required data
"); printf(""); printf(LANG_NBB_CONFIRMNEW); printf("
\n"); break; case 2001: printf(""); printf(LANG_NBB_CONFIRMDEL); printf("
\n"); break; case 2002: printf("Review record data
"); printf(""); printf(LANG_NBB_CONFIRMMOD); printf("
\n"); if(uPermLevel>=10) printf("
\n"); break; } printf(""); printf("

tVUTEntriesNavList
\n"); tVUTEntriesNavList(); printf("

\n"); }//void ExttVUTEntriesButtons(void) void ExttVUTEntriesAuxTable(void) { }//void ExttVUTEntriesAuxTable(void) void ExttVUTEntriesGetHook(entry gentries[], int x) { register int i; for(i=0;i=9) sprintf(query,"SELECT %s FROM tVUTEntries ORDER BY\ uVUTEntries", VAR_LIST_tVUTEntries); else sprintf(query,"SELECT %s FROM tVUTEntries WHERE uOwner=%u ORDER BY\ uVUTEntries", VAR_LIST_tVUTEntries,uLoginClient); }//void ExttVUTEntriesSelect(void) void ExttVUTEntriesSelectRow(void) { if(uPermLevel<10) sprintf(query,"SELECT %s FROM tVUTEntries,tClient \ WHERE tVUTEntries.uOwner=tClient.uClient\ AND (tClient.uOwner=%u OR tClient.uClient=%u)\ AND tVUTEntries.uVUTEntries=%u", VAR_LIST_tVUTEntries, uLoginClient,uLoginClient,uVUTEntries); else sprintf(query,"SELECT %s FROM tVUTEntries WHERE uVUTEntries=%u", VAR_LIST_tVUTEntries,uVUTEntries); }//void ExttVUTEntriesSelectRow(void) void ExttVUTEntriesListSelect(void) { char cCat[512]; if(uPermLevel<10) sprintf(query,"SELECT %s FROM tVUTEntries,tClient \ WHERE tVUTEntries.uOwner=tClient.uClient \ AND (tClient.uOwner=%u OR tClient.uClient=%u)", VAR_LIST_tVUTEntries, uLoginClient, uLoginClient); else sprintf(query,"SELECT %s FROM tVUTEntries", VAR_LIST_tVUTEntries); //Changes here must be reflected below in ExttVUTEntriesListFilter() if(!strcmp(filter,"uVUTEntries")) { sscanf(command,"%u",&uVUTEntries); if(uPermLevel<10) strcat(query," AND "); else strcat(query," WHERE "); sprintf(cCat,"tVUTEntries.uVUTEntries=%u \ ORDER BY uVUTEntries", uVUTEntries); strcat(query,cCat); } else if(1) { //None NO FILTER strcpy(filter,"None"); strcat(query," ORDER BY uVUTEntries"); } }//void ExttVUTEntriesListSelect(void) void ExttVUTEntriesListFilter(void) { //Filter printf("Select "); printf(""); }//void ExttVUTEntriesListFilter(void) void ExttVUTEntriesNavBar(void) { if(uOwner) GetClientOwner(uOwner,&uReseller); printf(LANG_NBB_SKIPFIRST); printf(LANG_NBB_SKIPBACK); printf(LANG_NBB_SEARCH); if(uPermLevel>=7) printf(LANG_NBB_NEW); if( (uPermLevel>=7 && uOwner==uLoginClient) || (uPermLevel>9 && uOwner!=1) || (uPermLevel>7 && uReseller==uLoginClient) ) printf(LANG_NBB_MODIFY); if( (uPermLevel>=7 && uOwner==uLoginClient) || (uPermLevel>9 && uOwner!=1) || (uPermLevel>7 && uReseller==uLoginClient) ) printf(LANG_NBB_DELETE); printf(LANG_NBB_LIST); printf(LANG_NBB_SKIPNEXT); printf(LANG_NBB_SKIPLAST); }//void ExttVUTEntriesNavBar(void) void tVUTEntriesNavList(void) { MYSQL_RES *res; MYSQL_ROW field; if(uPermLevel<10) sprintf(query,"SELECT tVUTEntries.uVUTEntries,tVUT.cDomain,\ tVUTEntries.cVirtualEmail,tVUTEntries.cTargetEmail\ FROM tVUTEntries,tClient,tVUT\ WHERE tVUTEntries.uOwner=tClient.uClient\ AND tVUTEntries.uVUT=tVUT.uVUT\ AND tVUTEntries.uVUT=%u\ AND (tClient.uOwner=%u OR tClient.uClient=%u)", uVUT,uLoginClient,uLoginClient); else sprintf(query,"SELECT tVUTEntries.uVUTEntries,tVUTEntries.cVirtualEmail,tVUT.cDomain,tVUTEntries.cTargetEmail FROM tVUTEntries,tVUT WHERE tVUTEntries.uVUT=tVUT.uVUT AND tVUT.uVUT=%u",uVUT); mysql_query(&mysql,query); if(mysql_errno(&mysql)) { printf("%s",mysql_error(&mysql)); return; } res=mysql_store_result(&mysql); while((field=mysql_fetch_row(res))) { printf("%s@%s:%s
\n",field[0],field[1],field[2],field[3]); } mysql_free_result(res); }//void tVUTEntriesNavList(void) void ImportVUTEntries(void) { register int i=0,j=0; char cLine[256]; char cVirtualEmail[100]; char cTargetEmail[100]; char cDomain[100]; char *cp=NULL; Header_ism3("",0); printf(""); printf("",cImportVUTEntries); printf(""); printf("
%s
");
	sprintf(cDomain,"%.99s",ForeignKey("tVUT","cDomain",uVUT));
	printf("tVUT.cDomain(%u):%s\n",uVUT,cDomain);
	while(cImportVUTEntries[i])
	{
		if(cImportVUTEntries[i]==13)
		{

			cImportVUTEntries[i]=0;
			sprintf(cLine,"%.255s",cImportVUTEntries+j);
			cImportVUTEntries[i]=13;
			j=i+2;
			i++;

			cp=NULL;
			if((cp=strchr(cLine,':')))
			{
				*cp=0;
				sprintf(cVirtualEmail,"%.99s",cLine);
				sprintf(cTargetEmail,"%.99s",cp+1);
				printf("%s:%s\n",cVirtualEmail,cTargetEmail);
				AddVUTEntries(uVUT,cVirtualEmail,cTargetEmail);
			}

		}
		i++;
	}
	cp=NULL;
	if((cp=strchr(cLine,':')))
	{
		*cp=0;
		sprintf(cVirtualEmail,"%.99s",cLine);
		sprintf(cTargetEmail,"%.99s",cp+1);
		printf("%s:%s\n",cVirtualEmail,cTargetEmail);
		AddVUTEntries(uVUT,cVirtualEmail,cTargetEmail);
	}
	printf("
"); Footer_ism3(); }//void ImportVUTEntries(void) void AddVUTEntries(unsigned uVUT,const char *cVirtualEmail,const char *cTargetEmail) { MYSQL_RES *res; MYSQL_ROW field; time_t luClock; char *cp=NULL; //Fast chop if((cp=strchr(cVirtualEmail,'@'))) *cp=0; time(&luClock); unsigned uVUTEntries=0; sprintf(query,"SELECT cVirtualEmail,uVUTEntries FROM tVUTEntries WHERE cVirtualEmail='%s' AND uVUT=%u", cVirtualEmail,uVUT); mysql_query(&mysql,query); if(mysql_errno(&mysql)) printf("%s\n",mysql_error(&mysql)); res=mysql_store_result(&mysql); if((field=mysql_fetch_row(res))) { sscanf(field[1],"%u",&uVUTEntries); sprintf(query,"UPDATE tVUTEntries SET cTargetEmail='%s',uModBy=%u,uModDate=%lu WHERE uVUTEntries=%u", cTargetEmail,uLoginClient,luClock,uVUTEntries); mysql_query(&mysql,query); if(mysql_errno(&mysql)) printf("%s\n",mysql_error(&mysql)); } else { sprintf(query,"INSERT INTO tVUTEntries SET cVirtualEmail='%s',cTargetEmail='%s',uCreatedBy=%u,\ uCreatedDate=%lu,uVUT=%u,uOwner=%u", cVirtualEmail,cTargetEmail,uLoginClient,luClock,uVUT,uLoginClient); mysql_query(&mysql,query); if(mysql_errno(&mysql)) printf("%s\n",mysql_error(&mysql)); } }//void AddVUTEntries(unsigned uVUT,const char *cVirtualEmail,const char *cTargetEmail) //sedall patch1 //sedall patch2