/* FILE $Id: taccessfunc.h 6 2005-11-24 00:02:59Z 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 */ #include #define ACCESS_SOURCE_WEBCONSOLE 1 #define ACCESS_SOURCE_POPPER 2 #define ACCESS_SOURCE_RADIUSD 3 #define ACCESS_SOURCE_NUKESPAM_MISSES 4 #define ACCESS_SOURCE_NUKESPAM_NSENT 5 #define ACCESS_SOURCE_NUKESPAM_RESERVED 6 #define ACCESS_SOURCE_DUL 7 void CheckAccess(void); static char cDomainPullDown[256]={""}; static unsigned uDomain=0; //Extern void ScheduleJob(unsigned uUser, unsigned uServer, const char *cJobName, const char *cJobData); void ExtProcesstAccessVars(pentry entries[], int x) { register int i; for(i=0;i=0 && a<255 && b>=0 && b<255 && c>=0 && c<255 ) { if(d == -1 ) sprintf(cDomainIP,"%u.%u.%u",a,b,c); else if(d>=0 && d<255) sprintf(cDomainIP,"%u.%u.%u.%u",a,b,c,d); else if(1) tAccess("cDomainIP looks like an IP but is formatted wrong."); } else { if((cp=strchr(cDomainIP,'.'))) { cp++; if(strlen(cp)<2) tAccess("cDomainIP after '.' part is too short"); } else { tAccess("cDomainIP must have '.' TLD part"); } } for(i=0;cDomainIP[i] && i<99;i++) if(isupper(cDomainIP[i])) cDomainIP[i]=tolower(cDomainIP[i]); }//void CheckAccess(void); void ExttAccessCommands(pentry entries[], int x) { if(!strcmp(function,"tAccessTools")) { if(!strcmp(command,LANG_NB_NEW)) { if(uPermLevel>=8) { ProcesstAccessVars(entries,x); if(uPermLevel<9) { uServer=1; strcpy(cRelayAttr,"RELAY"); } //Check global conditions for new record here mode=2000; tAccess(LANG_NB_CONFIRMNEW); } } else if(!strcmp(command,LANG_NB_CONFIRMNEW)) { if(uPermLevel>=8) { ProcesstAccessVars(entries,x); if(uPermLevel<9) { uServer=1; strcpy(cRelayAttr,"RELAY"); strncpy(cDomainIP,cDomainPullDown,63); cDomainIP[63]=0; } if(!uServer) tLocal("Must select valid uServer"); mode=2000; CheckAccess(); mode=0; uAccess=0; uCreatedBy=uLoginClient; uOwner=uLoginClient; uModBy=0;//Never modified uModDate=0; uExpireDate=0;//Important see mail.c clean access list uSource=ACCESS_SOURCE_WEBCONSOLE;//New via console ScheduleJob(1,uServer,"NewAccess",cDomainIP); NewtAccess(0); } } else if(!strcmp(command,LANG_NB_DELETE)) { ProcesstAccessVars(entries,x); if(uOwner) GetClientOwner(uOwner,&uReseller); if( (uPermLevel>=8 && uOwner==uLoginClient) || (uPermLevel>9 && uOwner!=1) || (uPermLevel>7 && uReseller==uLoginClient) ) { mode=2001; tAccess(LANG_NB_CONFIRMDEL); } } else if(!strcmp(command,LANG_NB_CONFIRMDEL)) { ProcesstAccessVars(entries,x); if(uOwner) GetClientOwner(uOwner,&uReseller); if( (uPermLevel>=8 && uOwner==uLoginClient) || (uPermLevel>9 && uOwner!=1) || (uPermLevel>7 && uReseller==uLoginClient) ) { mode=5; ScheduleJob(1,uServer,"DelAccess",cDomainIP); DeletetAccess(); } } else if(!strcmp(command,LANG_NB_MODIFY)) { ProcesstAccessVars(entries,x); if(uOwner) GetClientOwner(uOwner,&uReseller); if( (uPermLevel>=8 && uOwner==uLoginClient) || (uPermLevel>9 && uOwner!=1) || (uPermLevel>7 && uReseller==uLoginClient) ) { mode=2002; tAccess(LANG_NB_CONFIRMMOD); } } else if(!strcmp(command,LANG_NB_CONFIRMMOD)) { ProcesstAccessVars(entries,x); if(uOwner) GetClientOwner(uOwner,&uReseller); if( (uPermLevel>=8 && uOwner==uLoginClient) || (uPermLevel>9 && uOwner!=1) || (uPermLevel>7 && uReseller==uLoginClient) ) { MYSQL_RES *res; if(!uServer) tLocal("Must select valid uServer"); mode=2002; CheckAccess(); sprintf(query,"SELECT uAccess FROM tAccess WHERE cDomainIP='%s' AND cRelayAttr='%s' AND uServer=%u",cDomainIP,cRelayAttr,uServer); mysql_query(&mysql,query); if(mysql_errno(&mysql)) mysqlSendmail(mysql_error(&mysql)); res=mysql_store_result(&mysql); if(mysql_num_rows(res)) tAccess("Nothing changed no modification done"); mode=0; ScheduleJob(1,uServer,"ModAccess",cDomainIP); uModBy=uLoginClient; ModtAccess(); } } } }//void ExttAccessCommands(pentry entries[], int x) void ExttAccessButtons(void) { printf("\n"); printf("\n"); printf("
"); printf(""); printf(""); switch(mode) { case 2000: if(uPermLevel<10) { printf("

Select cDomain
"); tTablePullDownOwner("tDomain;cDomainPullDown", "cDomain","cDomain",uDomain); } printf("
"); printf(""); printf(LANG_NBB_CONFIRMNEW); printf("
\n"); break; case 2001: printf(""); printf(LANG_NBB_CONFIRMDEL); printf("
Remember that virtual mail may depend on this entry!
\n"); break; case 2002: printf("Review record data
"); printf(""); printf(LANG_NBB_CONFIRMMOD); printf("
\n"); break; } printf("

\n"); }//void ExttAccessButtons(void) void ExttAccessAuxTable(void) { }//void ExttAccessAuxTable(void) void ExttAccessGetHook(entry gentries[], int x) { register int i; for(i=0;i=9) sprintf(query,"SELECT %s FROM tAccess ORDER BY\ uAccess", VAR_LIST_tAccess); else sprintf(query,"SELECT %s FROM tAccess WHERE uOwner=%u ORDER BY\ uAccess", VAR_LIST_tAccess,uLoginClient); }//void ExttAccessSelect(void) void ExttAccessSelectRow(void) { if(uPermLevel<10) sprintf(query,"SELECT %s FROM tAccess,tClient \ WHERE tAccess.uOwner=tClient.uClient\ AND (tClient.uOwner=%u OR tClient.uClient=%u)\ AND tAccess.uAccess=%u", VAR_LIST_tAccess, uLoginClient,uLoginClient,uAccess); else sprintf(query,"SELECT %s FROM tAccess WHERE uAccess=%u", VAR_LIST_tAccess,uAccess); }//void ExttAccessSelectRow(void) void ExttAccessListSelect(void) { char cCat[512]; unsigned uNumber=0; if(uPermLevel<10) sprintf(query,"SELECT %s FROM tAccess,tClient \ WHERE tAccess.uOwner=tClient.uClient \ AND (tClient.uOwner=%u OR tClient.uClient=%u)", VAR_LIST_tAccess, uLoginClient, uLoginClient); else sprintf(query,"SELECT %s FROM tAccess", VAR_LIST_tAccess); //Changes here must be reflected below in ExttAccessListFilter() if(!strcmp(filter,"cDomainIP")) { if(uPermLevel<10) strcat(query," AND "); else strcat(query," WHERE "); sprintf(cCat,"tAccess.cDomainIP LIKE '%s' ORDER BY cDomainIP",command); strcat(query,cCat); } else if(!strcmp(filter,"cRelayAttr")) { if(uPermLevel<10) strcat(query," AND "); else strcat(query," WHERE "); sprintf(cCat,"tAccess.cRelayAttr LIKE '%s' ORDER BY cRelayAttr",command); strcat(query,cCat); } else if(!strcmp(filter,"uSource")) { sscanf(command,"%u",&uNumber); if(uPermLevel<10) strcat(query," AND "); else strcat(query," WHERE "); sprintf(cCat,"tAccess.uSource=%u",uNumber); strcat(query,cCat); } else if(!strcmp(filter,"uServer")) { sscanf(command,"%u",&uNumber); if(uPermLevel<10) strcat(query," AND "); else strcat(query," WHERE "); sprintf(cCat,"tAccess.uServer=%u",uNumber); strcat(query,cCat); } else if(1) { //None NO FILTER strcpy(filter,"None"); strcat(query," ORDER BY uAccess"); } }//void ExttAccessListSelect(void) void ExttAccessListFilter(void) { //Filter printf("Select "); printf(""); }//void ExttAccessListFilter(void) void ExttAccessNavBar(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); 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 ExttAccessNavBar(void) //sedall patch1 //sedall patch2