/* FILE $Id: tvutfunc.h 5 2005-11-17 00:49:17Z 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 */ static char cSearch[100]={""}; static char cDomainPullDown[256]={""}; static unsigned uDomain=0; static char cClientPullDown[256]={""}; static unsigned uClient=0; void tVUTEntryList(void); void ImportVUT(void); //Extern void AddVirtualEmail(unsigned uVUTExt);//tvutentriesfunc.h void ExtProcesstVUTVars(pentry entries[], int x) { register int i; for(i=0;i=8) { ProcesstVUTVars(entries,x); if(uPermLevel<10) { uServer=1; } mode=2000; tVUT(LANG_NB_CONFIRMNEW); } } else if(!strcmp(command,LANG_NB_CONFIRMNEW)) { if(uPermLevel>=8) { ProcesstVUTVars(entries,x); if(uPermLevel<10) { strcpy(cDomain,cDomainPullDown); uServer=1; } mode=2000; if(!uServer) tVUT("Must specify valid uServer"); if(!cDomain[0]) tVUT("Must select valid cDomain"); mode=0; uVUT=0; uCreatedBy=uLoginClient; if(uPermLevel==8 && uClient) uOwner=uClient; else uOwner=uLoginClient; uModBy=0;//Never modified uModDate=0; NewtVUT(0); } } else if(!strcmp(command,LANG_NB_DELETE)) { ProcesstVUTVars(entries,x); if(uOwner) GetClientOwner(uOwner,&uReseller); if( (uPermLevel>=8 && uOwner==uLoginClient) || (uPermLevel>9 && uOwner!=1) || (uPermLevel>7 && uReseller==uLoginClient) ) { mode=2001; tVUT(LANG_NB_CONFIRMDEL); } } else if(!strcmp(command,LANG_NB_CONFIRMDEL)) { ProcesstVUTVars(entries,x); if(uOwner) GetClientOwner(uOwner,&uReseller); if( (uPermLevel>=8 && uOwner==uLoginClient) || (uPermLevel>9 && uOwner!=1) || (uPermLevel>7 && uReseller==uLoginClient) ) { mode=5; DeletetVUT(); } } else if(!strcmp(command,LANG_NB_MODIFY)) { ProcesstVUTVars(entries,x); if(uOwner) GetClientOwner(uOwner,&uReseller); if( (uPermLevel>=8 && uOwner==uLoginClient) || (uPermLevel>9 && uOwner!=1) || (uPermLevel>7 && uReseller==uLoginClient) ) { mode=2002; tVUT(LANG_NB_CONFIRMMOD); } } else if(!strcmp(command,LANG_NB_CONFIRMMOD)) { ProcesstVUTVars(entries,x); if(uOwner) GetClientOwner(uOwner,&uReseller); if( (uPermLevel>=8 && uOwner==uLoginClient) || (uPermLevel>9 && uOwner!=1) || (uPermLevel>7 && uReseller==uLoginClient) ) { uModBy=uLoginClient; ModtVUT(); } } else if(!strcmp(command,"Add Virtual Email")) { ProcesstVUTVars(entries,x); if(uOwner) GetClientOwner(uOwner,&uReseller); if( (uPermLevel>=7 && uOwner==uLoginClient) || (uPermLevel>9 && uOwner!=1) || (uPermLevel>7 && uReseller==uLoginClient) ) { AddVirtualEmail(uVUT); } else { tVUT("Add Virtual Email denied"); } } else if(!strcmp(command,"Import VUT")) { ImportVUT(); tAlias("ImportVUT()"); } } }//void ExttVUTCommands(pentry entries[], int x) void ExttVUTButtons(void) { printf("\n"); printf("\n"); printf("
"); printf(""); printf(""); printf("Search Tools
\n"); printf("\n",cSearch); switch(mode) { case 2000: if(uPermLevel<10) { printf("

Select cDomain
"); tTablePullDownOwner("tDomain;cDomainPullDown", "cDomain","cDomain",uDomain); if(uPermLevel==8) { printf("

Select Owner
"); tTablePullDownOwner("tClient;cClientPullDown", "cLabel","cLabel",uClient); } } printf("
"); printf(""); printf(LANG_NBB_CONFIRMNEW); break; case 2001: printf("

"); printf(LANG_NBB_CONFIRMDEL); break; case 2002: if(uPermLevel==8) { printf("

Change Owner
"); tTablePullDownOwner("tClient;cClientPullDown", "cLabel","cLabel",uClient); } printf("
"); printf(""); printf(LANG_NBB_CONFIRMMOD); if(uPermLevel>10) printf("
"); printf("\n"); break; default: if(uServer && cDomain[0] && uVUT) { printf(""); printf("

"); } } tVUTEntryList(); printf("

\n"); }//void ExttVUTButtons(void) void ExttVUTAuxTable(void) { }//void ExttVUTAuxTable(void) void ExttVUTGetHook(entry gentries[], int x) { register int i; for(i=0;i=10) { if(cSearch[0]) sprintf(query,"SELECT %s FROM tVUT WHERE cDomain LIKE '%s%%' ORDER BY uVUT",VAR_LIST_tVUT,cSearch); else sprintf(query,"SELECT %s FROM tVUT ORDER BY uVUT",VAR_LIST_tVUT); } else { if(cSearch[0]) sprintf(query,"SELECT %s FROM tVUT,tClient WHERE tVUT.uOwner=tClient.uClient AND (tClient.uOwner=%u OR tClient.uClient=%u) AND cDomain LIKE '%s%%'", VAR_LIST_tVUT,uLoginClient,uLoginClient,cSearch); else sprintf(query,"SELECT %s FROM tVUT,tClient WHERE tVUT.uOwner=tClient.uClient AND (tClient.uOwner=%u OR tClient.uClient=%u)", VAR_LIST_tVUT, uLoginClient, uLoginClient); } }//void ExttVUTSelect(void) void ExttVUTSelectRow(void) { if(uPermLevel<10) sprintf(query,"SELECT %s FROM tVUT,tClient \ WHERE tVUT.uOwner=tClient.uClient\ AND (tClient.uOwner=%u OR tClient.uClient=%u)\ AND tVUT.uVUT=%u", VAR_LIST_tVUT, uLoginClient,uLoginClient,uVUT); else sprintf(query,"SELECT %s FROM tVUT WHERE uVUT=%u", VAR_LIST_tVUT,uVUT); }//void ExttVUTSelectRow(void) void ExttVUTListSelect(void) { char cCat[512]; if(uPermLevel<10) sprintf(query,"SELECT %s FROM tVUT,tClient \ WHERE tVUT.uOwner=tClient.uClient \ AND (tClient.uOwner=%u OR tClient.uClient=%u)", VAR_LIST_tVUT, uLoginClient, uLoginClient); else sprintf(query,"SELECT %s FROM tVUT", VAR_LIST_tVUT); //Changes here must be reflected below in ExttVUTListFilter() if(!strcmp(filter,"uVUT")) { sscanf(command,"%u",&uVUT); if(uPermLevel<10) strcat(query," AND "); else strcat(query," WHERE "); sprintf(cCat,"tVUT.uVUT=%u \ ORDER BY uVUT", uVUT); strcat(query,cCat); } else if(1) { //None NO FILTER strcpy(filter,"None"); strcat(query," ORDER BY uVUT"); } }//void ExttVUTListSelect(void) void ExttVUTListFilter(void) { //Filter printf("Select "); printf(""); }//void ExttVUTListFilter(void) void ExttVUTNavBar(void) { if(uOwner) GetClientOwner(uOwner,&uReseller); printf(LANG_NBB_SKIPFIRST); printf(LANG_NBB_SKIPBACK); printf(LANG_NBB_SEARCH); if(uPermLevel>=8) printf(LANG_NBB_NEW); //printf(LANG_NBB_NEWREV); if( (uPermLevel>=8 && uOwner==uLoginClient) || (uPermLevel>9 && uOwner!=1) || (uPermLevel>7 && uReseller==uLoginClient) ) printf(LANG_NBB_MODIFY); if( (uPermLevel>=8 && 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 ExttVUTNavBar(void) void tVUTEntryList(void) { MYSQL_RES *res; MYSQL_ROW field; sprintf(query,"SELECT uVUTEntries,cVirtualEmail,cTargetEmail FROM tVUTEntries WHERE uVUT=%u",uVUT); mysql_query(&mysql,query); if(mysql_errno(&mysql)) { printf("%s",mysql_error(&mysql)); return; } res=mysql_store_result(&mysql); if(mysql_num_rows(res)) { printf(""); printf("

tVUTEntriesList
\n"); while((field=mysql_fetch_row(res))) { printf("%s@%s:%s
\n",field[0],field[1],cDomain,field[2]); } } mysql_free_result(res); }//void tVUTEntryList(void) void ImportVUT(void) { FILE *fp; char *cp,*cp2; time_t clock; if(!(fp=fopen("/etc/virtusertable","r"))) tVUT("Could not open /etc/virtusertable"); Header_ism3("ImportVUT",0); printf("

\n");
	time(&clock);
	while(fgets(query,1024,fp)!=NULL)
	{
		if(query[0]=='#') continue;

		if((cp=strchr(query,' ')))
		{
			char qstr[1024];
			char cRhs[256];
			char cRhsFixed[256];
			char cVirtualEmail[100];
			register int i,j;
			unsigned uLeading=0;

			*cp=0;
			sprintf(cRhs,"%.255s",cp+1);
			cRhs[strlen(cRhs)-1]=0;
			for(i=0,j=0;cRhs[i];i++)
			{
				if(uLeading || ( cRhs[i]!='\t' && cRhs[i]!=' '))
				{
					cRhsFixed[j]=cRhs[i];
					j++;
					uLeading++;
				}
			}
			cRhsFixed[j]=0;
		
			cDomain[0]=0;	
			if((cp2=strchr(query,'@')))
			{
				*cp2=0;
				sprintf(cDomain,"%.99s",cp2+1);
			}

			if(!query[0])
				strcpy(cVirtualEmail,"DEFAULT");
			else
				sprintf(cVirtualEmail,"%.99s",query);

			printf("%s: %s (%s)\n",cVirtualEmail,cRhsFixed,cDomain);

		if(cDomain[0])
		{
			uVUT=0;

sprintf(qstr,"INSERT INTO tAccess SET cDomainIP='%s',cRelayAttr='RELAY',uServer=1,uOwner=%u,uCreatedBy=%u,uCreatedDate=%lu",cDomain,uLoginClient,uLoginClient,(long unsigned)clock);
			mysql_query(&mysql,qstr);
			if(mysql_errno(&mysql))
                		printf("%s\n",
							mysql_error(&mysql));

sprintf(qstr,"INSERT INTO tLocal SET cDomain='%s',uServer=1,uOwner=%u,uCreatedBy=%u,uCreatedDate=%lu",cDomain,uLoginClient,uLoginClient,(long unsigned)clock);
			mysql_query(&mysql,qstr);
			if(mysql_errno(&mysql))
                		printf("%s\n",
							mysql_error(&mysql));

sprintf(qstr,"INSERT INTO tDomain SET cDomain='%s',uOwner=%u,uCreatedBy=%u,uCreatedDate=%lu",cDomain,uLoginClient,uLoginClient,(long unsigned)clock);
			mysql_query(&mysql,qstr);
			if(mysql_errno(&mysql))
                		printf("%s\n",
							mysql_error(&mysql));

sprintf(qstr,"INSERT INTO tVUT SET cDomain='%s',uServer=1,uOwner=%u,uCreatedBy=%u,uCreatedDate=%lu",cDomain,uLoginClient,uLoginClient,(long unsigned)clock);
			mysql_query(&mysql,qstr);
			if(mysql_errno(&mysql))
                		printf("%s\n",
							mysql_error(&mysql));
			else
				uVUT=mysql_insert_id(&mysql);

			if(!uVUT)
			{
				MYSQL_RES *res;
				MYSQL_ROW field;

sprintf(qstr,"SELECT uVUT FROM tVUT WHERE cDomain='%s' AND uServer=1",cDomain);
				mysql_query(&mysql,qstr);
				if(mysql_errno(&mysql))
				{
                			printf("%s\n",
								mysql_error(&mysql));
					Footer_ism3();
				}

        			res=mysql_store_result(&mysql);
				if((field=mysql_fetch_row(res)))
					sscanf(field[0],"%u",&uVUT);
        			mysql_free_result(res);
			}

sprintf(qstr,"INSERT INTO tVUTEntries SET cVirtualEmail='%s',cTargetEmail='%s',uVUT=%u,uOwner=%u,uCreatedBy=%u,uCreatedDate=%lu",cVirtualEmail,cRhsFixed,uVUT,uLoginClient,uLoginClient,(long unsigned)clock);
			mysql_query(&mysql,qstr);
			if(mysql_errno(&mysql))
                		printf("%s\n",
						mysql_error(&mysql));

		}

		}
	}
	printf("
\n"); Footer_ism3(); }//void ImportVUT(void) //sedall patch1 //sedall patch2