|
||||
1 : #!/bin/wel¢Ò 2 : ¢Ò 3 : /* visit.wel¢Ò 4 : ¢Ò 5 : À¥ »çÀÌÆ® ¹æ¹® ±â·Ï ÇÁ·Î±×·¥(Á¶¿µÀÏ)¢Ò 6 : ¢Ò 7 : Copyright (c) 2000/01/10 by Wesoft¢Ò 8 : All Rights Reserved.¢Ò 9 : ¢Ò 10 : */¢Ò 11 : ¢Ò 12 : // ¹æ¹®ÀÚ ±â·ÏÀ» ÇÏÁö ¾ÊÀ» network ÁÖ¼Ò(IP) ÀϺκÐÀ» "" ¾È¿¡ ±â·ÏÇϽʽÿä¢Ò 13 : // IPÀÇ ÀϺκи¸ ±â·ÏÇÒ °æ¿ì¿¡´Â ²À '.'À¸·Î ³¡³ªµµ·Ï Çϼ¼¿ä¢Ò 14 : // ¿¹¸¦ µé¾î 172.168.1.0 ºÎÅÍ 172.168.1.255±îÁö´Â ¹æ¹®ÀÚ ±â·ÏÀ» ÇÏÁö ¾Ê°íÀÚ¢Ò 15 : // ÇÒ°æ¿ì¿¡´Â deny_ip1= "172.168.1.";¿Í °°Àº ÇüÅ·ΠÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.¢Ò 16 : ¢Ò 17 : deny_ip1= "192.168.1."; // ÀÚ½ÅÀÇ È¯°æ¿¡ ¾Ë¸Â°Ô ÁöÁ¤ÇØ ÁÖ¼¼¿ä¢Ò 18 : deny_ip2= "";¢Ò 19 : deny_ip3= "";¢Ò 20 : ¢Ò 21 : // º¯¼ö ÃʱⰪ ¼³Á¤ ºÎºÐ¢Ò 22 : ¢Ò 23 : host= ""; // ¿¬°áÇÒ mSQL ¼¹öÁÖ¼Ò¢Ò 24 : dbname= "visit"; // ¿¬°áÇÒ mSQL ¹æ¹®±â·Ï µ¥ÀÌÅÍ º£À̽º À̸§¢Ò 25 : stat_table= "stat"; // ¿¬°áÇÒ mSQL Åë°è µ¥ÀÌÅÍ º£À̽º À̸§¢Ò 26 : LogFile= "log/visit.log"; // log ÆÄÀÏ(LogFile=""; ·Î Çϸé log¸¦ ³²±âÁö ¾ÊÀ½)¢Ò 27 : if(tablename=="") tablename= dbname; // ¹æ¹®±â·Ï Å×À̺í À̸§¢Ò 28 : ¢Ò 29 : vip = getenv("REMOTE_ADDR");¢Ò 30 : vhost = getenv("REMOTE_HOST");¢Ò 31 : ¢Ò 32 : if(no_out!=1) next_html= "<script>location.href='/index1.html'</script>";¢Ò 33 : ¢Ò 34 : htmlquery("GET");¢Ò 35 : ¢Ò 36 : IP_addr= " (" ~ vip ~ ")";¢Ò 37 : IP_strlen= len(IP_addr);¢Ò 38 : if(IP_strlen<19) IP_addr~= strep(" ", 19 - IP_strlen);¢Ò 39 : ¢Ò 40 : logwrite=¢Ò 41 : {[¢Ò 42 : if(LogFile!="")¢Ò 43 : {¢Ò 44 : logwrite_msg= date(2) ~ "-" ~ time(1) ~ IP_addr ~ msg;¢Ò 45 : system("echo \"" ~ logwrite_msg ~ "\" >> " ~ LogFile);¢Ò 46 : }¢Ò 47 : ]}¢Ò 48 : ¢Ò 49 : deny_len1= len(lrtrim(deny_ip1));¢Ò 50 : if(deny_len1==0) vip1= vip; else vip1= left(vip, deny_len1);¢Ò 51 : ¢Ò 52 : deny_len2= len(lrtrim(deny_ip2));¢Ò 53 : if(deny_len2==0) vip2= vip; else vip2= left(vip, deny_len2);¢Ò 54 : ¢Ò 55 : deny_len3= len(lrtrim(deny_ip3));¢Ò 56 : if(deny_len3==0) vip3= vip; else vip3= left(vip, deny_len3);¢Ò 57 : ¢Ò 58 : // vip==""ÀÎ °æ¿ì´Â terminal¿¡¼ ¸í·É¾î¸¦ ÀÔ·ÂÇÏ¿© ½ÇÇàÇÒ¶§¢Ò 59 : if(vip=="" || vip1==deny_ip1 || vip2==deny_ip2 || vip3==deny_ip3)¢Ò 60 : {¢Ò 61 : print(next_html);¢Ò 62 : return;¢Ò 63 : }¢Ò 64 : ¢Ò 65 : socket= msqlConnect(host);¢Ò 66 : if(socket==MSQL_ERR)¢Ò 67 : {¢Ò 68 : print(next_html);¢Ò 69 : msg= "Connect err: host(" ~ host ~ ")";¢Ò 70 : parser(logwrite);¢Ò 71 : return;¢Ò 72 : }¢Ò 73 : ¢Ò 74 : msg= "mSQL server connected";¢Ò 75 : parser(logwrite);¢Ò 76 : ¢Ò 77 : if(msqlSelectDB(socket, dbname)==MSQL_ERR)¢Ò 78 : {¢Ò 79 : print(next_html);¢Ò 80 : msqlClose(socket);¢Ò 81 : msg= "SelectDB err: dbname(" ~ dbname ~ ")";¢Ò 82 : parser(logwrite);¢Ò 83 : return;¢Ò 84 : }¢Ò 85 : ¢Ò 86 : vdate = date(0);¢Ò 87 : vyear = left(vdate,4);¢Ò 88 : vmonth = mid(vdate,5,2);¢Ò 89 : vday = right(vdate,2);¢Ò 90 : vweek = iweek(vyear,vmonth,vday);¢Ò 91 : vtime = time(0);¢Ò 92 : vhour = left(vtime,2);¢Ò 93 : vminute = mid(vtime,3,2);¢Ò 94 : vsecond = right(vtime,2);¢Ò 95 : ¢Ò 96 : qstr= "insert into " ~ tablename¢Ò 97 : ~ "(ip, host, year, month, day, hour, minute, second, week) "¢Ò 98 : ~ "values('" ~vip ~ "','"¢Ò 99 : ~vhost ~ "','"¢Ò 100 : ~vyear ~ "','"¢Ò 101 : ~vmonth ~ "','"¢Ò 102 : ~vday ~ "','"¢Ò 103 : ~vhour ~ "','"¢Ò 104 : ~vminute ~ "','"¢Ò 105 : ~vsecond ~ "','"¢Ò 106 : ~vweek ~ "')";¢Ò 107 : ¢Ò 108 : rt= msqlQuery(socket, qstr);¢Ò 109 : if(rt==MSQL_ERR)¢Ò 110 : {¢Ò 111 : msg= "Query err: qstr(" ~ qstr ~ ")";¢Ò 112 : parser(logwrite);¢Ò 113 : }¢Ò 114 : ¢Ò 115 : //////////////////////////// Åë°è Å×ÀÌºí ´©Àû //////////////////////////¢Ò 116 : ¢Ò 117 : rt= msqlQuery(socket, "select * from " ~ stat_table);¢Ò 118 : if(rt==MSQL_ERR)¢Ò 119 : {¢Ò 120 : msg= "Query err: qstr(" ~ qstr ~ ")";¢Ò 121 : parser(logwrite);¢Ò 122 : }¢Ò 123 : result= msqlStoreResult();¢Ò 124 : fields_count= msqlNumFields(result);¢Ò 125 : rows_count= msqlNumRows(result);¢Ò 126 : if(rows_count<1)¢Ò 127 : {¢Ò 128 : msqlFreeResult(result);¢Ò 129 : msqlClose(socket);¢Ò 130 : msg= "stat table: not exist record";¢Ò 131 : parser(logwrite);¢Ò 132 : print(next_html);¢Ò 133 : return;¢Ò 134 : }¢Ò 135 : row= msqlFetchRow(result);¢Ò 136 : ¢Ò 137 : int dcnt[31], hcnt[23], wcnt[6];¢Ò 138 : di= hi= wi= 0;¢Ò 139 : for(j=0; j<fields_count; j++)¢Ò 140 : {¢Ò 141 : field= row[j];¢Ò 142 : if(j<=31) dcnt[di++]= field;¢Ò 143 : else if(j<=55) hcnt[hi++]= field;¢Ò 144 : else if(j<=62) wcnt[wi++]= field;¢Ò 145 : else if(j==63) total= field;¢Ò 146 : else if(j==64) fdate= field;¢Ò 147 : }¢Ò 148 : msqlFreeResult(result);¢Ò 149 : ¢Ò 150 : dcnt[vday]++;¢Ò 151 : hcnt[vhour]++;¢Ò 152 : wcnt[vweek]++;¢Ò 153 : total++;¢Ò 154 : ldate= vdate ~ vtime;¢Ò 155 : qstr= "insert into " ~ stat_table ~ " values(";¢Ò 156 : for(i=0; i<=31; i++) qstr~= dcnt[i] ~ ",";¢Ò 157 : for(i=0; i<=23; i++) qstr~= hcnt[i] ~ ",";¢Ò 158 : for(i=0; i<=6; i++) qstr~= wcnt[i] ~ ",";¢Ò 159 : qstr~= total ~ ",'" ~ fdate ~ "','" ~ ldate ~ "')";¢Ò 160 : ¢Ò 161 : rt= msqlQuery(socket, "delete from " ~ stat_table ~ " where d0 >= 0");¢Ò 162 : if(rt==MSQL_ERR)¢Ò 163 : {¢Ò 164 : msg= "Query err: qstr(" ~ qstr ~ ")";¢Ò 165 : parser(logwrite);¢Ò 166 : }¢Ò 167 : rt= msqlQuery(socket, qstr);¢Ò 168 : if(rt==MSQL_ERR)¢Ò 169 : {¢Ò 170 : msg= "Query err: qstr(" ~ qstr ~ ")";¢Ò 171 : parser(logwrite);¢Ò 172 : }¢Ò 173 : ¢Ò 174 : //////////////////////////// Åë°è Å×À̺í Á¾·á //////////////////////////¢Ò 175 : ¢Ò 176 : msqlClose(socket);¢Ò 177 : ¢Ò 178 : msg= "mSQL server disconnected";¢Ò 179 : parser(logwrite);¢Ò 180 : ¢Ò 181 : print(next_html);¢Ò 182 : ¢Ò 183 : //////////////////////////// ÇÁ·Î±×·¥ Á¾·á /////////////////////////////¢Ò |
||||
|