// vim: smarttab tabstop=8 shiftwidth=2 expandtab
/********************************************************/
/* */
-/* Handle all remote IP creditbilty level */
+/* Handle all remote IP credibility level */
/* By scanning database for new entry within */
/* database tables remotes and try to establish */
/* remote server "credibility" according remote IP.*/
srv->credit=0;
srv->lastscan=time((time_t *)0);
if (dnsblk!=(BLKTYP **)0) {
+ int delta;
+ char *bank;
+
+ delta=0;
+ bank=(char *)0;
while (*dnsblk!=(BLKTYP *)0) {
char *report;
char *listed;
listed=dns_is_blacklisted(*dnsblk,reversip);
(void) snprintf(cst,sizeof(cst),"IP[%02d]: %s\t",num,rmtip);
if (listed!=(char *)0) {
+ delta+=(*dnsblk)->delta;
(void) rou_asprintf(&report,"%s%s",cst,listed);
- srv->credit+=(*dnsblk)->delta;
if (srv->listing==(char *)0)
srv->listing=strdup(listed);
}
listed=rou_freestr(listed);
dnsblk++;
}
- (void) log_fprintlog(scanref->logptr,true,"IP[%02d]: %s\tRVS='%s'\tCurrent "
- "credit='%3d'",
- num,rmtip,
- srv->reverse,srv->credit);
+ srv->credit+=delta;
+ bank=eml_showcredit(rmtip,srv->reverse,delta,srv->credit);
+ (void) log_fprintlog(scanref->logptr,true,"IP[%02d]: %s",num,bank);
(void) log_fprintlog(scanref->logptr,false,"");
+ bank=rou_freestr(bank);
}
break;
case 4 : //updating record
}
break;
case 2 : //Updating remote server data
- srv->credit+=contact->credit;
- srv->update=time((time_t *)0);
- if (sql_mngremote(contact->sqlptr,sql_update,contact->peerip,&srv)==false) {
- (void) rou_alert(0,"%s Unable to UPDATE remote [%s] data (Bug!?)",
- OPEP,contact->peerip);
+ if (srv!=(SRVTYP *)0) { //Always
+ char *bank;
+
+ srv->credit+=contact->credit;
+ srv->update=time((time_t *)0);
+ if (sql_mngremote(contact->sqlptr,sql_update,contact->peerip,&srv)==false) {
+ (void) rou_alert(0,"%s Unable to UPDATE remote [%s] data (Bug!?)",
+ OPEP,contact->peerip);
+ }
+ bank=eml_showcredit(contact->peerip,contact->peername,
+ contact->credit,srv->credit);
+ (void) log_fprintlog(contact->logptr,true,"(%s)",bank);
+ bank=rou_freestr(bank);
+ srv=sql_freesrv(srv);
}
- srv=sql_freesrv(srv);
break;
case 3 : //properly closing remote contact
(void) rou_alert(0,"Contact from peer <%s> to port <%s> terminated",
SRVTYP *srv;
int total;
- cmt="(Contact terminated, credit='%3d/%3d' condition=<%s>)";
+ cmt="(Contact terminated, condition=<%s>)";
total=0;
if (sql_mngremote(contact->sqlptr,sql_select,contact->peerip,&srv)==true) {
total=srv->credit;
(void) log_fprintlog(contact->logptr,true,cmt,contact->credit,total,
contact->termend);
(void) sql_newconnect(contact->sqlptr,contact->peerip,-1);
+ cmt="(Contact terminated, credit='%3d/%3d' condition=<%s>)";
contact=eml_dropcontact(contact);
}
break;
#undef CNT
#undef OPEP
}
+/*
+^L
+*/
+/********************************************************/
+/* */
+/* Procedure to format a string with remote server */
+/* credit report. */
+/* */
+/********************************************************/
+PUBLIC char *eml_showcredit(char *rmtip,char *reverse,int delta,int credit)
+
+{
+static const char *cmt="%s\tRVS='%s'\tdelta='%3d' -> new credit='%3d'";
+
+char *fmt;
+
+fmt=(char *)0;
+(void) rou_asprintf(&fmt,cmt,rmtip,reverse,delta,credit);
+return fmt;
+}
//procedure to create an attachement for email data part.
extern int eml_attache(FILE *qout,char *toaddfile,char **explain,int nbrlines);
+//Procedure to format a remote server credit report
+extern char *eml_showcredit(char *rmtip,char *reverse,int delta,int credit);
+
#endif