Version Description
Download this release
Release Info
Developer | michelem |
Plugin | WassUp Real Time Analytics |
Version | 1.8.2 |
Comparing to | |
See all releases |
Code changes from version 1.8.1 to 1.8.2
- badhosts-intl.txt +0 -5
- badhosts.txt +15 -163
- css/wassup.css +47 -56
- img/chart_add.png +0 -0
- img/chart_delete.png +0 -0
- img/cross.png +0 -0
- img/cross2.png +0 -0
- img/database_table.png +0 -0
- img/database_table2.png +0 -0
- img/error_add.png +0 -0
- img/error_delete.png +0 -0
- language/index.php +4 -0
- readme.txt +36 -26
- wassup.php +217 -283
badhosts-intl.txt
CHANGED
@@ -310,9 +310,4 @@ wholegrew\.cn
|
|
310 |
withpoem\.cn
|
311 |
wonderdrug\.ws
|
312 |
x67fr22v\.ph
|
313 |
-
xcelentbio\.us
|
314 |
-
xcelwonder\.us
|
315 |
xer\.com\.au
|
316 |
-
yapped2284pills\.us
|
317 |
-
ycxzvbsdds\.us
|
318 |
-
zarf1antipodean\.us
|
310 |
withpoem\.cn
|
311 |
wonderdrug\.ws
|
312 |
x67fr22v\.ph
|
|
|
|
|
313 |
xer\.com\.au
|
|
|
|
|
|
badhosts.txt
CHANGED
@@ -192,6 +192,7 @@ betterfuturetoday\.com
|
|
192 |
betterhealth\.biz
|
193 |
betterservice\.info
|
194 |
beud\.com
|
|
|
195 |
bhex\.com
|
196 |
bibles\.com
|
197 |
big2bigger\.com
|
@@ -382,7 +383,7 @@ corporatequote\.com
|
|
382 |
coresat\.com
|
383 |
cr3am\.com
|
384 |
cr3at3\.com
|
385 |
-
cream\-?pies
|
386 |
creamy\-facials\.com
|
387 |
crescentarian\.net
|
388 |
credit\-4me\.com
|
@@ -410,7 +411,7 @@ datashaping\.com
|
|
410 |
date\-?jump\.com
|
411 |
datesaturday\.com
|
412 |
dating\-s\.net
|
413 |
-
dating\-?christian
|
414 |
dating\.blogs\.com
|
415 |
datinggoldengirls.com
|
416 |
datingoffers\.com
|
@@ -447,7 +448,7 @@ discountherbals\.com
|
|
447 |
discountloan\.info
|
448 |
discountrx4u\.info
|
449 |
discoverdownloads\.com
|
450 |
-
discrete\-?encounters
|
451 |
dishtvforpc\.com
|
452 |
dkdns\.com
|
453 |
dna\.info
|
@@ -572,8 +573,8 @@ finance\-4all\.com
|
|
572 |
financeadvise\.com
|
573 |
financialfirms\.net
|
574 |
findawoman\.net
|
575 |
-
finder\-?adult
|
576 |
-
finder\-?friend
|
577 |
findfunhere\.com
|
578 |
findtheoneonthissite\.com
|
579 |
findwebhostingnow\.com
|
@@ -597,14 +598,14 @@ fortherest\.info
|
|
597 |
fossilized\.net
|
598 |
foxmediasolutions\.com
|
599 |
freakycheats\.com
|
600 |
-
free\-?sms
|
601 |
freeautobot\.com
|
602 |
freekin\.info
|
603 |
freeride\.com
|
604 |
freetest\.info
|
605 |
freshperiod\.com
|
606 |
-
friend\-?adult
|
607 |
-
friend\-?finder
|
608 |
fsck\.com
|
609 |
ftgoal\.com
|
610 |
ftke\.com
|
@@ -617,8 +618,8 @@ gala\.net
|
|
617 |
gallanted\.com
|
618 |
garyshawkey\.com
|
619 |
gasep\.com
|
620 |
-
gay\-?chat
|
621 |
-
gay\-?teen
|
622 |
gb\.com
|
623 |
gdries\.com
|
624 |
genaholincorporated\.com
|
@@ -651,7 +652,7 @@ glassjaws\.com
|
|
651 |
globaleducationeurope\.net
|
652 |
globaltrustsavings\.com
|
653 |
gmgmedical\.com
|
654 |
-
gmi\-autoimports
|
655 |
go\.com
|
656 |
go\-medz\.com
|
657 |
go\-refi\.com
|
@@ -732,7 +733,7 @@ herbon\.info
|
|
732 |
herhelp\.com
|
733 |
herpills\.com
|
734 |
hgee1\.info
|
735 |
-
hgh
|
736 |
hidor\.com
|
737 |
himailer\.com
|
738 |
himsearch\.com
|
@@ -848,7 +849,7 @@ jamielynntressy\.com
|
|
848 |
jeffersondarcy\.com
|
849 |
jenniferyoungtart\.com
|
850 |
jettisonit\.com
|
851 |
-
jewish-?singles
|
852 |
jhex\.com
|
853 |
ji2\.net
|
854 |
jinhai\.info
|
@@ -1647,202 +1648,53 @@ wuniv\.com
|
|
1647 |
wv8\.net
|
1648 |
wwmeds\.com
|
1649 |
x\-forms\.net
|
1650 |
-
xadulthosting\.com
|
1651 |
xanaz\.net
|
1652 |
xanex\.org
|
1653 |
xans\.net
|
1654 |
xantz\.com
|
1655 |
-
xbvbaar\.net
|
1656 |
xcce\.com
|
1657 |
xciconsulting\.com
|
1658 |
-
xedffrr\.com
|
1659 |
xftp\.net
|
1660 |
-
xgremlin\.com
|
1661 |
-
xhjwien\.info
|
1662 |
xiagra\.net
|
1663 |
-
ximportmeds\.net
|
1664 |
-
xinternetstore\.com
|
1665 |
-
xlkifge\.com
|
1666 |
-
xmaad\.com
|
1667 |
-
xmasdeal\.info
|
1668 |
-
xmasdownloadnetwork\.com
|
1669 |
-
xmaslowrate\.com
|
1670 |
-
xmasrefinance\.com
|
1671 |
xmassavings\.com
|
1672 |
-
xmastimerates\.com
|
1673 |
xmr3\.com
|
1674 |
-
xnsidh4h\.info
|
1675 |
xnue\.biz
|
1676 |
-
|
1677 |
-
xognei\.com
|
1678 |
-
xopy\.com
|
1679 |
xoware\.com
|
1680 |
xpays\.com
|
1681 |
-
xpoem\.info
|
1682 |
-
xpojga\.com
|
1683 |
-
xpsoftsell\.biz
|
1684 |
xsalez\.org
|
1685 |
-
xseason\.biz
|
1686 |
xstore\.biz
|
1687 |
xtrameg\.com
|
1688 |
-
xtreemteeming\.com
|
1689 |
-
xtremebikebabes\.com
|
1690 |
xtst\.com
|
1691 |
-
xumcejc\.com
|
1692 |
-
xvxxdatwers\.info
|
1693 |
-
xx\-powo\.com
|
1694 |
-
xxdksq\.com
|
1695 |
-
xxdksq\.net
|
1696 |
xxxdate\.com
|
1697 |
-
xxxlargepenis\.net
|
1698 |
-
xxxmeds\.info
|
1699 |
-
xxxteenzoo\.com
|
1700 |
-
xxxxstore\.com
|
1701 |
-
y\-2\-m\.com
|
1702 |
-
y\-mrg\.net
|
1703 |
-
y\-mrt\.com
|
1704 |
-
y3ss1r\.com
|
1705 |
y73\.net
|
1706 |
yaadig\.com
|
1707 |
-
yahoohut\.com
|
1708 |
-
yahoosostore\.com
|
1709 |
yahoososupersite\.com
|
1710 |
yahoosotime\.com
|
1711 |
-
yawps440pinn\.com
|
1712 |
yayshop\.com
|
1713 |
yellfore\.com
|
1714 |
-
yellowcasefile\.com
|
1715 |
yellowrate\.com
|
1716 |
yelpp\.biz
|
1717 |
yelucie\.com
|
1718 |
-
yes03284\.com
|
1719 |
-
yes2shipz\.com
|
1720 |
-
yesmort\.net
|
1721 |
yf4\.net
|
1722 |
-
yfoedbx\.com
|
1723 |
-
ymha1773drygs\.com
|
1724 |
-
ynmort\.net
|
1725 |
-
ynotmyrxworld\.com
|
1726 |
-
ynotsavem0re\.com
|
1727 |
yo6\.net
|
1728 |
-
yomaoem\.net
|
1729 |
-
yomoi\.com
|
1730 |
-
yorhere2savez\.com
|
1731 |
-
yosofts\.info
|
1732 |
-
youarehealthy\.info
|
1733 |
-
youaretaking\.com
|
1734 |
-
youfoundidealsolution\.com
|
1735 |
-
youheynow\.info
|
1736 |
-
youkostylaya\.com
|
1737 |
-
youlikeviagra\.info
|
1738 |
-
youngfreespirits\.com
|
1739 |
-
youngtallitemss\.com
|
1740 |
your\-financial\.com
|
1741 |
-
your\-home\-loan\.net
|
1742 |
-
your\-mort\-gages\.com
|
1743 |
-
your\-mort\.com
|
1744 |
-
your\-re\-finance\.com
|
1745 |
-
your\-refi\.com
|
1746 |
-
your\-value\-loan\.com
|
1747 |
-
yourbestmeds\.info
|
1748 |
-
yourbestrxplace\.com
|
1749 |
yourbignight\.com
|
1750 |
-
yourbollnas\.info
|
1751 |
yourcasinobiz\.com
|
1752 |
-
yourchanceathome\.net
|
1753 |
yourcheap\-rx\.com
|
1754 |
-
yourdoctor\.biz
|
1755 |
-
youreasyloans\.net
|
1756 |
-
youreasymeds\.com
|
1757 |
-
youreasymeds\.net
|
1758 |
-
yourfitnessonline\.com
|
1759 |
-
yourhealthmatters\-now\.com
|
1760 |
yourhostingaccount\.com
|
1761 |
-
yourloanz\.com
|
1762 |
yourmeds\.info
|
1763 |
-
yourmembersdirectory\.com
|
1764 |
yourmort\.com
|
1765 |
yourname\.com
|
1766 |
yourowndoctor\.info
|
1767 |
-
yourowngaming\.net
|
1768 |
-
yourownmeds\.info
|
1769 |
-
yourpills4me\.com
|
1770 |
-
yourpillsusa\.com
|
1771 |
-
yourpils24\.info
|
1772 |
yourpsychic\.net
|
1773 |
-
yourrate\.net
|
1774 |
-
yourscinedesign\.com
|
1775 |
-
yourstuffabsolute\.com
|
1776 |
-
yourstuffcentral\.com
|
1777 |
-
yourstuffforme\.com
|
1778 |
-
yourstuffforus\.com
|
1779 |
-
yourstuffsupply\.com
|
1780 |
-
yoursunlightzone\.info
|
1781 |
-
yourtabl\.info
|
1782 |
yourtablet\.info
|
1783 |
-
yourthings2004\.com
|
1784 |
-
yourthings4us\.com
|
1785 |
-
yourthingslive\.com
|
1786 |
-
yourthingsplace\.com
|
1787 |
-
yourthingssoltuion\.com
|
1788 |
-
youthemans\.com
|
1789 |
-
youweretiredi\.com
|
1790 |
-
youyouhey\.info
|
1791 |
-
ypaym0re1z1\.com
|
1792 |
ypx132\.com
|
1793 |
-
ypypgroupy\.com
|
1794 |
-
yrme33\.com
|
1795 |
-
yrt009il\.com
|
1796 |
-
yuiiooiutr\.com
|
1797 |
-
yuiuku\.info
|
1798 |
-
yunkgbcd\.com
|
1799 |
-
yunoz\.biz
|
1800 |
-
yuomnad\.com
|
1801 |
-
yupnamethisnow\.com
|
1802 |
-
yurgag\.com
|
1803 |
-
yuritemple\.net
|
1804 |
-
yuyumant\.com
|
1805 |
yx\-colorweaving\.com
|
1806 |
-
zablen\.com
|
1807 |
-
zainetsell\.com
|
1808 |
-
zaliam\.com
|
1809 |
-
zap\-internet\.com
|
1810 |
zapbook\.info
|
1811 |
-
zaphomeloans\.com
|
1812 |
-
zarinahsports\.com
|
1813 |
-
zazxex\.info
|
1814 |
-
zazxox\.info
|
1815 |
-
zazxpx\.info
|
1816 |
-
zazxtx\.info
|
1817 |
-
zbestantid0te\.com
|
1818 |
-
zbgadjdf\.info
|
1819 |
-
zebalx\.com
|
1820 |
-
zersurf\.com
|
1821 |
-
zfeedbx\.com
|
1822 |
-
ziagra\.net
|
1823 |
-
zick\.biz
|
1824 |
-
zigzagging\.net
|
1825 |
-
zinkuq\.com
|
1826 |
-
ziuyt\.info
|
1827 |
-
zloanz\.info
|
1828 |
-
zndrz\.com
|
1829 |
-
zockkfosa\.com
|
1830 |
-
zoeyhasafever\.com
|
1831 |
zolotko\.info
|
1832 |
-
zoobrandsour\.com
|
1833 |
-
zoodnights\.com
|
1834 |
zoomgirls\.net
|
1835 |
-
zoomwatches\.info
|
1836 |
zoophilelinks\.net
|
1837 |
-
zooumbrela\.info
|
1838 |
-
zoozits\.com
|
1839 |
zowk\.com
|
1840 |
-
zpromeds\.biz
|
1841 |
-
zpromeds\.info
|
1842 |
-
zrwkd\.com
|
1843 |
ztcash\.com
|
1844 |
-
zuodalu\.com
|
1845 |
-
zuperone\.info
|
1846 |
-
zuvvka\.com
|
1847 |
zwallet\.com
|
1848 |
-
zxcvbdf\.com
|
192 |
betterhealth\.biz
|
193 |
betterservice\.info
|
194 |
beud\.com
|
195 |
+
red\.bezeqint\.net
|
196 |
bhex\.com
|
197 |
bibles\.com
|
198 |
big2bigger\.com
|
383 |
coresat\.com
|
384 |
cr3am\.com
|
385 |
cr3at3\.com
|
386 |
+
cream\-?pies.*
|
387 |
creamy\-facials\.com
|
388 |
crescentarian\.net
|
389 |
credit\-4me\.com
|
411 |
date\-?jump\.com
|
412 |
datesaturday\.com
|
413 |
dating\-s\.net
|
414 |
+
dating\-?christian.*
|
415 |
dating\.blogs\.com
|
416 |
datinggoldengirls.com
|
417 |
datingoffers\.com
|
448 |
discountloan\.info
|
449 |
discountrx4u\.info
|
450 |
discoverdownloads\.com
|
451 |
+
discrete\-?encounters.*
|
452 |
dishtvforpc\.com
|
453 |
dkdns\.com
|
454 |
dna\.info
|
573 |
financeadvise\.com
|
574 |
financialfirms\.net
|
575 |
findawoman\.net
|
576 |
+
finder\-?adult.*
|
577 |
+
finder\-?friend.*
|
578 |
findfunhere\.com
|
579 |
findtheoneonthissite\.com
|
580 |
findwebhostingnow\.com
|
598 |
fossilized\.net
|
599 |
foxmediasolutions\.com
|
600 |
freakycheats\.com
|
601 |
+
free\-?sms.*
|
602 |
freeautobot\.com
|
603 |
freekin\.info
|
604 |
freeride\.com
|
605 |
freetest\.info
|
606 |
freshperiod\.com
|
607 |
+
friend\-?adult.*
|
608 |
+
friend\-?finder.*
|
609 |
fsck\.com
|
610 |
ftgoal\.com
|
611 |
ftke\.com
|
618 |
gallanted\.com
|
619 |
garyshawkey\.com
|
620 |
gasep\.com
|
621 |
+
gay\-?chat.*
|
622 |
+
gay\-?teen.*
|
623 |
gb\.com
|
624 |
gdries\.com
|
625 |
genaholincorporated\.com
|
652 |
globaleducationeurope\.net
|
653 |
globaltrustsavings\.com
|
654 |
gmgmedical\.com
|
655 |
+
gmi\-autoimports.*\.com
|
656 |
go\.com
|
657 |
go\-medz\.com
|
658 |
go\-refi\.com
|
733 |
herhelp\.com
|
734 |
herpills\.com
|
735 |
hgee1\.info
|
736 |
+
hgh\-.*
|
737 |
hidor\.com
|
738 |
himailer\.com
|
739 |
himsearch\.com
|
849 |
jeffersondarcy\.com
|
850 |
jenniferyoungtart\.com
|
851 |
jettisonit\.com
|
852 |
+
jewish-?singles.*
|
853 |
jhex\.com
|
854 |
ji2\.net
|
855 |
jinhai\.info
|
1648 |
wv8\.net
|
1649 |
wwmeds\.com
|
1650 |
x\-forms\.net
|
|
|
1651 |
xanaz\.net
|
1652 |
xanex\.org
|
1653 |
xans\.net
|
1654 |
xantz\.com
|
|
|
1655 |
xcce\.com
|
1656 |
xciconsulting\.com
|
|
|
1657 |
xftp\.net
|
|
|
|
|
1658 |
xiagra\.net
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1659 |
xmassavings\.com
|
|
|
1660 |
xmr3\.com
|
|
|
1661 |
xnue\.biz
|
1662 |
+
xognei.com
|
|
|
|
|
1663 |
xoware\.com
|
1664 |
xpays\.com
|
|
|
|
|
|
|
1665 |
xsalez\.org
|
|
|
1666 |
xstore\.biz
|
1667 |
xtrameg\.com
|
|
|
|
|
1668 |
xtst\.com
|
|
|
|
|
|
|
|
|
|
|
1669 |
xxxdate\.com
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1670 |
y73\.net
|
1671 |
yaadig\.com
|
|
|
|
|
1672 |
yahoososupersite\.com
|
1673 |
yahoosotime\.com
|
|
|
1674 |
yayshop\.com
|
1675 |
yellfore\.com
|
|
|
1676 |
yellowrate\.com
|
1677 |
yelpp\.biz
|
1678 |
yelucie\.com
|
|
|
|
|
|
|
1679 |
yf4\.net
|
|
|
|
|
|
|
|
|
|
|
1680 |
yo6\.net
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1681 |
your\-financial\.com
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1682 |
yourbignight\.com
|
|
|
1683 |
yourcasinobiz\.com
|
|
|
1684 |
yourcheap\-rx\.com
|
|
|
|
|
|
|
|
|
|
|
|
|
1685 |
yourhostingaccount\.com
|
|
|
1686 |
yourmeds\.info
|
|
|
1687 |
yourmort\.com
|
1688 |
yourname\.com
|
1689 |
yourowndoctor\.info
|
|
|
|
|
|
|
|
|
|
|
1690 |
yourpsychic\.net
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1691 |
yourtablet\.info
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1692 |
ypx132\.com
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1693 |
yx\-colorweaving\.com
|
|
|
|
|
|
|
|
|
1694 |
zapbook\.info
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1695 |
zolotko\.info
|
|
|
|
|
1696 |
zoomgirls\.net
|
|
|
1697 |
zoophilelinks\.net
|
|
|
|
|
1698 |
zowk\.com
|
|
|
|
|
|
|
1699 |
ztcash\.com
|
|
|
|
|
|
|
1700 |
zwallet\.com
|
|
css/wassup.css
CHANGED
@@ -37,10 +37,6 @@
|
|
37 |
#wassup-wrap a:hover { color: #d11; }
|
38 |
.wassup-icon {}
|
39 |
.wassup-content { min-height:225px; }
|
40 |
-
#wpbody-content {
|
41 |
-
padding-top: 3px;
|
42 |
-
margin-bottom: -5px;
|
43 |
-
}
|
44 |
/*
|
45 |
* for wassup admin top menu styles in Wordpress 2.7+ */
|
46 |
.wassup-menu-link {
|
@@ -62,8 +58,8 @@
|
|
62 |
border-bottom: 0px none;
|
63 |
background: url("images/link2.png") no-repeat 0 0;
|
64 |
}
|
|
|
65 |
#contextual-help-link {
|
66 |
-
border: 1px solid #d6d6d6;
|
67 |
-moz-border-radius-topleft: 3px;
|
68 |
-moz-border-radius-topright: 3px;
|
69 |
-webkit-border-top-left-radius: 3px;
|
@@ -71,8 +67,12 @@
|
|
71 |
border-top-left-radius: 3px;
|
72 |
border-top-right-radius: 3px;
|
73 |
border-bottom: 0px none;
|
|
|
74 |
background: url("images/link2.png") no-repeat 0 0 !important;
|
75 |
}
|
|
|
|
|
|
|
76 |
#wassup-menu {
|
77 |
display: inline;
|
78 |
position: relative;
|
@@ -128,18 +128,17 @@
|
|
128 |
padding-left: 15px;
|
129 |
}
|
130 |
div.main-tabs {
|
131 |
-
/* width: 97%; */
|
132 |
margin: 10px auto 3px auto;
|
133 |
padding: 2px 1px 1px;
|
134 |
-
border: 1px solid #efebef;
|
135 |
-
border-radius: 3px;
|
136 |
-
-webkit-border-radius: 3px;
|
137 |
-
-moz-border-radius: 3px;
|
138 |
-
background-color: #dedade;
|
139 |
color: #445;
|
140 |
-
|
141 |
-
|
142 |
-
-
|
|
|
|
|
|
|
|
|
|
|
143 |
}
|
144 |
.main-tabs a, .main-tabs a:link {
|
145 |
color: #00b;
|
@@ -212,17 +211,12 @@ div.main-tabs {
|
|
212 |
a.toggle-allcrono { width: 140px !important; }
|
213 |
a.toggle-allcrono:hover, a.toggle-all:hover { background-color: #676767 !important; } */
|
214 |
.sum-rec, .sum {
|
215 |
-
/* margin: 0 0 5px 0; */
|
216 |
margin: 0 0 2px;
|
217 |
-
padding: 1px 0 0 !important;
|
|
|
218 |
background-color: #f4f6f6;
|
219 |
border: 1px solid #c7c7cc; /* 89a; */
|
220 |
border-bottom: 3px solid #347;
|
221 |
-
/* border-right: 1px solid #dedade; #789; */
|
222 |
-
/* border-left: 1px solid #dedade; #789; */
|
223 |
-
/* box-shadow: 0 0 2px rgba(80, 100, 100, 0.3);
|
224 |
-
-moz-box-shadow:0 0 2px rgba(80, 100, 100, 0.3);
|
225 |
-
-webkit-box-shadow:0 0 2px rgba(80, 100, 100, 0.3); */
|
226 |
}
|
227 |
.sum-nav, .sum-nav-mark, .sum-spy {
|
228 |
position: relative;
|
@@ -231,6 +225,7 @@ div.main-tabs {
|
|
231 |
min-height: 50px;
|
232 |
margin: 0 !important;
|
233 |
padding: 22px 0 0;
|
|
|
234 |
border-top: 1px solid #fffcff;
|
235 |
border-bottom: 1px solid #ddd;
|
236 |
background: url("images/list-bg.png") repeat-x;
|
@@ -286,24 +281,30 @@ div.sum-spy {
|
|
286 |
clear:right;
|
287 |
margin: 0 0 0 165px;
|
288 |
padding: 0;
|
289 |
-
font-size: 14px;
|
290 |
line-height: 1.3em;
|
291 |
}
|
292 |
.sum-det-spy span {
|
293 |
margin: 0;
|
294 |
padding: 0;
|
295 |
}
|
296 |
-
.det1 {
|
297 |
-
|
298 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
299 |
.det1 a { font-weight: bold; border-bottom: 1px solid !important; }
|
300 |
.det2 a, .det2 a:link, .sum-det span.det2 a {
|
301 |
-
color: #
|
302 |
}
|
303 |
.det2 a:hover, .sum-det span.det2 a:hover {
|
304 |
-
color: #
|
305 |
}
|
306 |
-
.det2 strong { color: #
|
307 |
.agent strong { font-weight: bold; }
|
308 |
.sum-box {
|
309 |
float: left;
|
@@ -364,7 +365,7 @@ div.sum-spy {
|
|
364 |
line-height: 1.1em;
|
365 |
}
|
366 |
#toptenchart a { color: #464646; }
|
367 |
-
#toptenchart a:hover { color: #
|
368 |
ul.charts {
|
369 |
list-style-type: none;
|
370 |
margin: 0;
|
@@ -393,43 +394,43 @@ li.chartsT {
|
|
393 |
margin: 0 auto !important;
|
394 |
clear:both;
|
395 |
border-bottom: 0 none;
|
|
|
|
|
396 |
}
|
397 |
-
.detail-data a, .detail-data a:link { color: #
|
398 |
.detail-data a:hover { color: #c64 !important; }
|
399 |
.detail-data ul {
|
400 |
list-style-type: none;
|
401 |
width: 100%;
|
402 |
margin: 0;
|
403 |
padding: 3px 0 4px 0;
|
|
|
404 |
border-top: 1px solid #ddd;
|
405 |
border-bottom: 1px solid #bbb;
|
406 |
}
|
407 |
ul.searcheng {
|
408 |
-
background-color: #adf;
|
409 |
-
border-color: #
|
410 |
}
|
411 |
.searchimage {
|
412 |
-
background-color: #
|
413 |
-
border-color: #
|
414 |
}
|
415 |
li.searcheng {
|
416 |
list-style-type: none;
|
417 |
width: 100%;
|
418 |
padding: 0 4px 0 4px;
|
419 |
display: inline;
|
420 |
-
font-size: 11px;
|
421 |
-
color: #667;
|
422 |
border-right: 1px dotted #8e8e8e;
|
423 |
}
|
424 |
ul.useragent {
|
425 |
padding: 4px 0 2px 0;
|
426 |
-
background-color: #
|
427 |
border-bottom: 1px #ccc solid;
|
428 |
}
|
429 |
li.useragent {
|
430 |
list-style-type: none;
|
431 |
color: #f5f5f5;
|
432 |
-
font-size: 11px;
|
433 |
width: 100%;
|
434 |
padding: 0 6px 0 0;
|
435 |
text-align: center;
|
@@ -444,7 +445,6 @@ li.spam {
|
|
444 |
width: 100%;
|
445 |
padding: 0 6px 0 0;
|
446 |
color: #eff;
|
447 |
-
font-size: 11px;
|
448 |
}
|
449 |
ul.spider {
|
450 |
background-color: #cc9980;
|
@@ -454,14 +454,16 @@ ul.spider li {
|
|
454 |
list-style-type: none;
|
455 |
display: inline;
|
456 |
width: 100%;
|
457 |
-
font-size: 11px;
|
458 |
}
|
459 |
li.spider { padding: 0 6px 0 0; color: #f5f5f5; }
|
460 |
li.spider a, li.spider a:link { color: #f5f5f5 !important; }
|
461 |
li.spider a:hover { color: #fda !important; }
|
|
|
|
|
|
|
|
|
462 |
li.feed {
|
463 |
padding: 0 4px 0 4px;
|
464 |
-
color: #667;
|
465 |
border-right: 1px dotted #8e8e8e;
|
466 |
}
|
467 |
ul.agent { border-color: #ddd; }
|
@@ -469,8 +471,6 @@ li.agent {
|
|
469 |
list-style-type: none;
|
470 |
display: inline; width: 100%;
|
471 |
padding: 0 4px 0 4px;
|
472 |
-
color: #667;
|
473 |
-
font-size: 11px;
|
474 |
border-right: 1px dotted #8e8e8e;
|
475 |
}
|
476 |
ul.users {
|
@@ -490,8 +490,6 @@ li.users {
|
|
490 |
display: inline;
|
491 |
width: 100%;
|
492 |
padding: 0 4px 0 4px;
|
493 |
-
color: #667;
|
494 |
-
font-size: 11px;
|
495 |
border-right: 1px dotted #8e8e8e;
|
496 |
}
|
497 |
ul.url {
|
@@ -508,8 +506,6 @@ li.url {
|
|
508 |
width: 100%;
|
509 |
margin: 0;
|
510 |
padding: 0;
|
511 |
-
color: #667;
|
512 |
-
font-size: 11px;
|
513 |
line-height: 2em;
|
514 |
background-image: url("images/list-bg2.png");
|
515 |
border-bottom: 1px #ddd solid;
|
@@ -519,8 +515,6 @@ li.urlodd {
|
|
519 |
width: 100%;
|
520 |
margin: 0;
|
521 |
padding: 4px 0 6px 0;
|
522 |
-
color: #667;
|
523 |
-
font-size: 11px;
|
524 |
background-image: url("images/list-bg3.png");
|
525 |
border-bottom: 1px #ddd solid;
|
526 |
}
|
@@ -558,13 +552,10 @@ li.urlodd {
|
|
558 |
margin: 5px auto !important;
|
559 |
padding: 1px 1px 2px !important;
|
560 |
background-color: #dedade;
|
561 |
-
box-shadow: 0 0 5px rgba(44,44,104, 0.9);
|
562 |
-
-moz-box-shadow: 0 0 5px rgba(
|
563 |
-
-webkit-box-shadow: 0 0 5px rgba(
|
564 |
-
border: 1px solid #efebef;
|
565 |
-
border-radius: 3px;
|
566 |
-
-webkit-border-radius: 3px;
|
567 |
-
-moz-border-radius: 3px;
|
568 |
}
|
569 |
#spyContainer { clear: both; padding: 5px 5px 0 0; }
|
570 |
#settings {
|
37 |
#wassup-wrap a:hover { color: #d11; }
|
38 |
.wassup-icon {}
|
39 |
.wassup-content { min-height:225px; }
|
|
|
|
|
|
|
|
|
40 |
/*
|
41 |
* for wassup admin top menu styles in Wordpress 2.7+ */
|
42 |
.wassup-menu-link {
|
58 |
border-bottom: 0px none;
|
59 |
background: url("images/link2.png") no-repeat 0 0;
|
60 |
}
|
61 |
+
/* Wordpress css adjustments */
|
62 |
#contextual-help-link {
|
|
|
63 |
-moz-border-radius-topleft: 3px;
|
64 |
-moz-border-radius-topright: 3px;
|
65 |
-webkit-border-top-left-radius: 3px;
|
67 |
border-top-left-radius: 3px;
|
68 |
border-top-right-radius: 3px;
|
69 |
border-bottom: 0px none;
|
70 |
+
border: 1px solid #d6d6d6;
|
71 |
background: url("images/link2.png") no-repeat 0 0 !important;
|
72 |
}
|
73 |
+
#wpbody-content { margin-bottom: -5px; padding-top: 3px; }
|
74 |
+
#ozh_menu_wrap { margin-top: -3px !important; } /* for ozh drop-down menu */
|
75 |
+
|
76 |
#wassup-menu {
|
77 |
display: inline;
|
78 |
position: relative;
|
128 |
padding-left: 15px;
|
129 |
}
|
130 |
div.main-tabs {
|
|
|
131 |
margin: 10px auto 3px auto;
|
132 |
padding: 2px 1px 1px;
|
|
|
|
|
|
|
|
|
|
|
133 |
color: #445;
|
134 |
+
background-color: #dedade;
|
135 |
+
box-shadow: 0 0 5px rgba(24, 24, 64, 0.9); /* 0 0 2px rgba(108,108,168, 0.8); */
|
136 |
+
-moz-box-shadow: 0 0 5px rgba(24, 24, 64, 0.9);
|
137 |
+
-webkit-box-shadow: 0 0 5px rgba(24, 24, 64, 0.9);
|
138 |
+
border: 1px solid #c9d9e9; /* #a5a5bb; #efebef; */
|
139 |
+
/* border-radius: 3px;
|
140 |
+
-webkit-border-radius: 3px;
|
141 |
+
-moz-border-radius: 3px; */
|
142 |
}
|
143 |
.main-tabs a, .main-tabs a:link {
|
144 |
color: #00b;
|
211 |
a.toggle-allcrono { width: 140px !important; }
|
212 |
a.toggle-allcrono:hover, a.toggle-all:hover { background-color: #676767 !important; } */
|
213 |
.sum-rec, .sum {
|
|
|
214 |
margin: 0 0 2px;
|
215 |
+
padding: 1px 0 0 !important;
|
216 |
+
font-size: 11px;
|
217 |
background-color: #f4f6f6;
|
218 |
border: 1px solid #c7c7cc; /* 89a; */
|
219 |
border-bottom: 3px solid #347;
|
|
|
|
|
|
|
|
|
|
|
220 |
}
|
221 |
.sum-nav, .sum-nav-mark, .sum-spy {
|
222 |
position: relative;
|
225 |
min-height: 50px;
|
226 |
margin: 0 !important;
|
227 |
padding: 22px 0 0;
|
228 |
+
font-size: 11px;
|
229 |
border-top: 1px solid #fffcff;
|
230 |
border-bottom: 1px solid #ddd;
|
231 |
background: url("images/list-bg.png") repeat-x;
|
281 |
clear:right;
|
282 |
margin: 0 0 0 165px;
|
283 |
padding: 0;
|
|
|
284 |
line-height: 1.3em;
|
285 |
}
|
286 |
.sum-det-spy span {
|
287 |
margin: 0;
|
288 |
padding: 0;
|
289 |
}
|
290 |
+
.det1 {
|
291 |
+
line-height: 1.5em;
|
292 |
+
display: block;
|
293 |
+
font-size: 14px;
|
294 |
+
}
|
295 |
+
.det2 {
|
296 |
+
line-height: 1.5em;
|
297 |
+
display: block;
|
298 |
+
}
|
299 |
+
.det3 { padding-left: 20px; }
|
300 |
.det1 a { font-weight: bold; border-bottom: 1px solid !important; }
|
301 |
.det2 a, .det2 a:link, .sum-det span.det2 a {
|
302 |
+
color: #349 !important; /*#00008c #00284a */
|
303 |
}
|
304 |
.det2 a:hover, .sum-det span.det2 a:hover {
|
305 |
+
color: #d54d22 !important;
|
306 |
}
|
307 |
+
.det2 strong { color: #001616; font-weight: normal; }
|
308 |
.agent strong { font-weight: bold; }
|
309 |
.sum-box {
|
310 |
float: left;
|
365 |
line-height: 1.1em;
|
366 |
}
|
367 |
#toptenchart a { color: #464646; }
|
368 |
+
#toptenchart a:hover { color: #d54d22; }
|
369 |
ul.charts {
|
370 |
list-style-type: none;
|
371 |
margin: 0;
|
394 |
margin: 0 auto !important;
|
395 |
clear:both;
|
396 |
border-bottom: 0 none;
|
397 |
+
color: #445;
|
398 |
+
font-size: 11px;
|
399 |
}
|
400 |
+
.detail-data a, .detail-data a:link { color: #349 !important; }
|
401 |
.detail-data a:hover { color: #c64 !important; }
|
402 |
.detail-data ul {
|
403 |
list-style-type: none;
|
404 |
width: 100%;
|
405 |
margin: 0;
|
406 |
padding: 3px 0 4px 0;
|
407 |
+
font-size: 11px;
|
408 |
border-top: 1px solid #ddd;
|
409 |
border-bottom: 1px solid #bbb;
|
410 |
}
|
411 |
ul.searcheng {
|
412 |
+
background-color: #abdbff; /* #adf; */
|
413 |
+
border-color: #9cd;
|
414 |
}
|
415 |
.searchimage {
|
416 |
+
background-color: #abbbff !important;
|
417 |
+
border-color: #9b9bff !important;
|
418 |
}
|
419 |
li.searcheng {
|
420 |
list-style-type: none;
|
421 |
width: 100%;
|
422 |
padding: 0 4px 0 4px;
|
423 |
display: inline;
|
|
|
|
|
424 |
border-right: 1px dotted #8e8e8e;
|
425 |
}
|
426 |
ul.useragent {
|
427 |
padding: 4px 0 2px 0;
|
428 |
+
background-color: #67a;
|
429 |
border-bottom: 1px #ccc solid;
|
430 |
}
|
431 |
li.useragent {
|
432 |
list-style-type: none;
|
433 |
color: #f5f5f5;
|
|
|
434 |
width: 100%;
|
435 |
padding: 0 6px 0 0;
|
436 |
text-align: center;
|
445 |
width: 100%;
|
446 |
padding: 0 6px 0 0;
|
447 |
color: #eff;
|
|
|
448 |
}
|
449 |
ul.spider {
|
450 |
background-color: #cc9980;
|
454 |
list-style-type: none;
|
455 |
display: inline;
|
456 |
width: 100%;
|
|
|
457 |
}
|
458 |
li.spider { padding: 0 6px 0 0; color: #f5f5f5; }
|
459 |
li.spider a, li.spider a:link { color: #f5f5f5 !important; }
|
460 |
li.spider a:hover { color: #fda !important; }
|
461 |
+
ul.feed {
|
462 |
+
background-color: #edc !important;
|
463 |
+
border-color: #dcb !important;
|
464 |
+
}
|
465 |
li.feed {
|
466 |
padding: 0 4px 0 4px;
|
|
|
467 |
border-right: 1px dotted #8e8e8e;
|
468 |
}
|
469 |
ul.agent { border-color: #ddd; }
|
471 |
list-style-type: none;
|
472 |
display: inline; width: 100%;
|
473 |
padding: 0 4px 0 4px;
|
|
|
|
|
474 |
border-right: 1px dotted #8e8e8e;
|
475 |
}
|
476 |
ul.users {
|
490 |
display: inline;
|
491 |
width: 100%;
|
492 |
padding: 0 4px 0 4px;
|
|
|
|
|
493 |
border-right: 1px dotted #8e8e8e;
|
494 |
}
|
495 |
ul.url {
|
506 |
width: 100%;
|
507 |
margin: 0;
|
508 |
padding: 0;
|
|
|
|
|
509 |
line-height: 2em;
|
510 |
background-image: url("images/list-bg2.png");
|
511 |
border-bottom: 1px #ddd solid;
|
515 |
width: 100%;
|
516 |
margin: 0;
|
517 |
padding: 4px 0 6px 0;
|
|
|
|
|
518 |
background-image: url("images/list-bg3.png");
|
519 |
border-bottom: 1px #ddd solid;
|
520 |
}
|
552 |
margin: 5px auto !important;
|
553 |
padding: 1px 1px 2px !important;
|
554 |
background-color: #dedade;
|
555 |
+
box-shadow: 0 0 5px rgba(24, 24, 64, 0.9); /* 0 0 5px rgba(44,44,104, 0.9); */
|
556 |
+
-moz-box-shadow: 0 0 5px rgba(24, 24, 64, 0.9);
|
557 |
+
-webkit-box-shadow: 0 0 5px rgba(24, 24, 64, 0.9);
|
558 |
+
border: 1px solid #c9d9e9; /* #efebef; */
|
|
|
|
|
|
|
559 |
}
|
560 |
#spyContainer { clear: both; padding: 5px 5px 0 0; }
|
561 |
#settings {
|
img/chart_add.png
CHANGED
Binary file
|
img/chart_delete.png
CHANGED
Binary file
|
img/cross.png
CHANGED
Binary file
|
img/cross2.png
CHANGED
Binary file
|
img/database_table.png
CHANGED
Binary file
|
img/database_table2.png
CHANGED
Binary file
|
img/error_add.png
CHANGED
Binary file
|
img/error_delete.png
CHANGED
Binary file
|
language/index.php
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
header('Status: 403 Forbidden');
|
3 |
+
header('HTTP/1.1 403 Forbidden');
|
4 |
+
?>
|
readme.txt
CHANGED
@@ -3,8 +3,8 @@ Contributors: michelem, helened
|
|
3 |
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=michele%40befree%2eit&item_name=WassUp&no_shipping=0&no_note=1&tax=0¤cy_code=EUR&lc=IT&bn=PP%2dDonationsBF&charset=UTF%2d8
|
4 |
Tags: tracker, tracking, statistics, analyze, web, realtime, stats, ajax, visitors, visits, online users, details, seo, admin, spy, visitors, widgets, widget, sidebar, monitor, stalker, detector, webmaster, tool, geolocation, chart, google!charts, spammers, exploits, injection, security, useragent, browser, spider, detection, pageviews
|
5 |
Requires at least: 2.2
|
6 |
-
Tested up to: 3.
|
7 |
-
Stable tag: 1.8.
|
8 |
|
9 |
Analyze your visitors traffic with real-time statistics, a lot of chronological information, charts, a sidebar widget.
|
10 |
|
@@ -67,21 +67,21 @@ For people with database space problem, WassUp has a few options to manage the d
|
|
67 |
* Domains to exclude from referrers
|
68 |
* Email alert for table growth
|
69 |
|
70 |
-
|
71 |
|
72 |
== Frequently Asked Questions ==
|
73 |
|
74 |
= How do I add WassUp's chart to my admin dashboard? =
|
75 |
-
Go to Wassup >>
|
76 |
|
77 |
= My Wordpress theme is not widget ready. Is it possible to add WassUp Widget to my site? =
|
78 |
Yes. Simply insert the template tag, "wassup_sidebar()", into your theme's "sidebar.php" file.
|
79 |
|
80 |
= How do I exclude a visitor from being recorded? =
|
81 |
-
Go to Wassup >>
|
82 |
|
83 |
= How do I stop (temporarily) WassUp from recording new visits on my site? =
|
84 |
-
Go to Wassup >>
|
85 |
|
86 |
= Can Wassup record visits on a web site that is not Wordpress? =
|
87 |
No. Wassup is a Wordpress-only plugin and requires at least Wordpress 2.2 to work.
|
@@ -110,18 +110,17 @@ You can find more screenshots at [http://www.wpwp.org](http://www.wpwp.org)
|
|
110 |
== Installation ==
|
111 |
|
112 |
= Installation: =
|
113 |
-
|
114 |
1. Download the plugin, WassUp (Real-Time Visitors Tracking), to your local computer
|
115 |
1. Unpack this plugin's zip or gz file with your preferred unzip/untar program or use the command line: `tar xzvf wassup.tar.gz` (linux)
|
116 |
1. Upload the entire "wassup" directory to your `wp-content/plugins` directory on your host server
|
117 |
1. Navigate to your site's Wordpress admin >> Plugins page
|
118 |
1. Activate WassUp plugin
|
119 |
|
120 |
-
OR
|
121 |
-
|
122 |
-
= Upgrading: =
|
123 |
|
124 |
-
|
|
|
125 |
1. Deactivate WassUp plugin in Wordpress admin >> Plugins page
|
126 |
1. Delete "wassup" directory from `wp-content/plugins/` on your host server
|
127 |
1. Download and unzip the new "WassUp" file to your local computer
|
@@ -129,33 +128,44 @@ OR you can install it using Wordpress automatic install by going to Plugins >> A
|
|
129 |
1. Navigate to your site's Wordpress admin >> Plugins page
|
130 |
1. Activate WassUp plugin
|
131 |
|
132 |
-
OR
|
|
|
133 |
|
134 |
-
IMPORTANT:
|
|
|
135 |
|
136 |
= Usage: =
|
137 |
-
|
138 |
-
When you activate this plugin (as described in "Installation"), it works "as is". You don't have anything to do. Wait for visitors to hit your site and start seeing details (click the dashboard and go to WassUp page)
|
139 |
|
140 |
IMPORTANT: WassUp is incompatible with page-based caching plugins such as "WP Super-Cache".
|
141 |
|
142 |
== Changelog ==
|
143 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
144 |
= 1.8.1 =
|
145 |
-
= Urgent bugfix and code
|
146 |
-
* fixed `set_time_limit` warning
|
147 |
-
*
|
148 |
-
*
|
149 |
-
* added important new upgrade information to `readme.txt` Installation instructions.
|
150 |
-
* added a time period to "top ten" report heading.
|
151 |
-
* minor style changes in wassup css.
|
152 |
|
153 |
= 1.8 =
|
154 |
= Important compatibility, feature and performance improvement upgrade =
|
155 |
* new table, "wassup_meta", for data caching and extended tracking.
|
156 |
* new web service, [freegeoip.net](http://freegeoip.net), for IP Geolocation. Thanks to [@AlexandreFiori](http://twitter.com/alexandrefiori) for giving us access to his API.
|
157 |
-
*
|
158 |
-
*
|
159 |
* improved security and performance.
|
160 |
* improved compatibility with Wordpress 3.0-3.0.1 and security plugins.
|
161 |
NOTE: Before installing "Wordpress Firewall", existing Wassup users must wait 2 full days after completing the upgrade to 1.8 for the old 'wassup_screen_res' cookie to expire in returning visitor's browsers.
|
@@ -178,8 +188,8 @@ IMPORTANT: WassUp is incompatible with page-based caching plugins such as "WP Su
|
|
178 |
...
|
179 |
== Upgrade Notice ==
|
180 |
|
181 |
-
= 1.8.
|
182 |
-
* Urgent bug fix
|
183 |
|
184 |
== Infos ==
|
185 |
|
3 |
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=michele%40befree%2eit&item_name=WassUp&no_shipping=0&no_note=1&tax=0¤cy_code=EUR&lc=IT&bn=PP%2dDonationsBF&charset=UTF%2d8
|
4 |
Tags: tracker, tracking, statistics, analyze, web, realtime, stats, ajax, visitors, visits, online users, details, seo, admin, spy, visitors, widgets, widget, sidebar, monitor, stalker, detector, webmaster, tool, geolocation, chart, google!charts, spammers, exploits, injection, security, useragent, browser, spider, detection, pageviews
|
5 |
Requires at least: 2.2
|
6 |
+
Tested up to: 3.2.1
|
7 |
+
Stable tag: 1.8.2
|
8 |
|
9 |
Analyze your visitors traffic with real-time statistics, a lot of chronological information, charts, a sidebar widget.
|
10 |
|
67 |
* Domains to exclude from referrers
|
68 |
* Email alert for table growth
|
69 |
|
70 |
+
IMPORTANT: WassUp is incompatible with page-based caching plugins such as "WP Super-Cache".
|
71 |
|
72 |
== Frequently Asked Questions ==
|
73 |
|
74 |
= How do I add WassUp's chart to my admin dashboard? =
|
75 |
+
Go to Wassup >> Options submenu, select [General Setup] tab and check "Display small chart in dashboard", then click [Save Settings] button.
|
76 |
|
77 |
= My Wordpress theme is not widget ready. Is it possible to add WassUp Widget to my site? =
|
78 |
Yes. Simply insert the template tag, "wassup_sidebar()", into your theme's "sidebar.php" file.
|
79 |
|
80 |
= How do I exclude a visitor from being recorded? =
|
81 |
+
Go to Wassup >> Options, select [Statistics Recording] tab and enter the IP address or username to be excluded in the appropriate text area.
|
82 |
|
83 |
= How do I stop (temporarily) WassUp from recording new visits on my site? =
|
84 |
+
Go to Wassup >> Options, select [Statistics Recording] tab and uncheck "Enable/disable recording", then click [Save Settings] button.
|
85 |
|
86 |
= Can Wassup record visits on a web site that is not Wordpress? =
|
87 |
No. Wassup is a Wordpress-only plugin and requires at least Wordpress 2.2 to work.
|
110 |
== Installation ==
|
111 |
|
112 |
= Installation: =
|
|
|
113 |
1. Download the plugin, WassUp (Real-Time Visitors Tracking), to your local computer
|
114 |
1. Unpack this plugin's zip or gz file with your preferred unzip/untar program or use the command line: `tar xzvf wassup.tar.gz` (linux)
|
115 |
1. Upload the entire "wassup" directory to your `wp-content/plugins` directory on your host server
|
116 |
1. Navigate to your site's Wordpress admin >> Plugins page
|
117 |
1. Activate WassUp plugin
|
118 |
|
119 |
+
OR
|
120 |
+
You can install the plugin using Wordpress automatic install by navigating to Plugins >> Add New >> and type "WassUp" plugin name
|
|
|
121 |
|
122 |
+
= Upgrading (with caution**): =
|
123 |
+
1. Check your current visitors count. If your site is busy, stop! Do the upgrade later when your site is less busy.
|
124 |
1. Deactivate WassUp plugin in Wordpress admin >> Plugins page
|
125 |
1. Delete "wassup" directory from `wp-content/plugins/` on your host server
|
126 |
1. Download and unzip the new "WassUp" file to your local computer
|
128 |
1. Navigate to your site's Wordpress admin >> Plugins page
|
129 |
1. Activate WassUp plugin
|
130 |
|
131 |
+
OR
|
132 |
+
You can upgrade the plugin using Wordpress automatic upgrade in Wordpress Admin >> Plugins page.
|
133 |
|
134 |
+
IMPORTANT: **Upgrade with caution.
|
135 |
+
To safely upgrade WassUp when your site is busy, you should temporarily stop WassUp recording of new visitors manually (uncheck `Enable/disable recording` in WassUp >> Wassup-Options >> [Statistics Recording] Tab), then do the automatic upgrade, and afterwards, re-enable WassUp recording manually.
|
136 |
|
137 |
= Usage: =
|
138 |
+
* When you activate this plugin (as described in "Installation"), it works "as is". You don't have anything to do. Wait for visitors to hit your site and start seeing details (click the dashboard and go to WassUp page)
|
|
|
139 |
|
140 |
IMPORTANT: WassUp is incompatible with page-based caching plugins such as "WP Super-Cache".
|
141 |
|
142 |
== Changelog ==
|
143 |
|
144 |
+
= 1.8.2 =
|
145 |
+
= Urgent bugfix, compatibility and feature improvement upgrade =
|
146 |
+
* fixed regex bug that caused a `preg.match` compilation warning error to display in some configurations.
|
147 |
+
* fixed a typo in `wassup_install` function and updated code to suppress warning errors when 1st table install attempt fails.
|
148 |
+
* added a javascript cookie to footer function for better screen resolution tracking in IE.
|
149 |
+
* added 'Google Web Preview' snapshot bot to list of known spiders.
|
150 |
+
* added code to detect faked referrer strings.
|
151 |
+
* added new referrer spammers and removed obsolete domains from spammer lists.
|
152 |
+
* added validity check to refresh timer to limit user input range to between 0 and 180 minutes (3 hours). An input value of 0 disables the timer.
|
153 |
+
* improved search engine/search phrase detection.
|
154 |
+
* improved namespace compatibility with other plugins.
|
155 |
+
* miscellaneous minor code and style changes.
|
156 |
+
|
157 |
= 1.8.1 =
|
158 |
+
= Urgent bugfix and code improvement upgrade =
|
159 |
+
* fixed bug that caused `set_time_limit` and other warning errors to display to visitors.
|
160 |
+
* improved upgrade instructions in `readme.txt`.
|
161 |
+
* miscellaneous minor code changes.
|
|
|
|
|
|
|
162 |
|
163 |
= 1.8 =
|
164 |
= Important compatibility, feature and performance improvement upgrade =
|
165 |
* new table, "wassup_meta", for data caching and extended tracking.
|
166 |
* new web service, [freegeoip.net](http://freegeoip.net), for IP Geolocation. Thanks to [@AlexandreFiori](http://twitter.com/alexandrefiori) for giving us access to his API.
|
167 |
+
* new admin interface style.
|
168 |
+
* improved browser, OS, and search engine detection.
|
169 |
* improved security and performance.
|
170 |
* improved compatibility with Wordpress 3.0-3.0.1 and security plugins.
|
171 |
NOTE: Before installing "Wordpress Firewall", existing Wassup users must wait 2 full days after completing the upgrade to 1.8 for the old 'wassup_screen_res' cookie to expire in returning visitor's browsers.
|
188 |
...
|
189 |
== Upgrade Notice ==
|
190 |
|
191 |
+
= 1.8.2 =
|
192 |
+
* Urgent bug fix and feature improvement upgrade. Required for WassUp 1.8+ users. Read plugin install instructions for important upgrade information.
|
193 |
|
194 |
== Infos ==
|
195 |
|
wassup.php
CHANGED
@@ -2,8 +2,8 @@
|
|
2 |
/*
|
3 |
Plugin Name: WassUp
|
4 |
Plugin URI: http://www.wpwp.org
|
5 |
-
Description:
|
6 |
-
Version: 1.8.
|
7 |
Author: Michele Marcucci, Helene Duncker
|
8 |
Author URI: http://www.michelem.org/
|
9 |
Disclaimer: Use at your own risk. No warranty expressed or implied is provided.
|
@@ -23,7 +23,7 @@ if (!defined('ABSPATH')) {
|
|
23 |
}
|
24 |
//wassup globals & constants
|
25 |
global $wp_version, $current_user, $user_level, $wassup_options;
|
26 |
-
$wassupversion="1.8.
|
27 |
$wassup_cookie_value="";
|
28 |
$debug_mode=false; //turn on debugging (global)...Use cautiously! Will display errors from all plugins, not just WassUp
|
29 |
define('WASSUPDIR', dirname(__FILE__)); //new constant in v1.8
|
@@ -32,9 +32,6 @@ require_once(WASSUPDIR.'/lib/wassup.class.php');
|
|
32 |
require_once(WASSUPDIR.'/lib/main.php');
|
33 |
include_once(WASSUPDIR.'/lib/uadetector.class.php');
|
34 |
|
35 |
-
//$wpurl = get_bloginfo('wpurl'); //no longer global (name conflict)
|
36 |
-
//$blogurl = get_bloginfo('home'); //no longer global (name conflict)
|
37 |
-
|
38 |
//WassUp works only in WP2.2 or higher
|
39 |
if (version_compare($wp_version, '2.2', '<')) {
|
40 |
if (function_exists('deactivate_plugins')) {
|
@@ -68,8 +65,7 @@ function wassup_install() {
|
|
68 |
|
69 |
//#Add/update wassup settings in Wordpress options table
|
70 |
$wassup_options = new wassupOptions; //#settings initialized here
|
71 |
-
$
|
72 |
-
$table_meta_name = $table_name."_meta";
|
73 |
|
74 |
//# wassup should not be active during install
|
75 |
$wassup_options->wassup_active = 0;
|
@@ -96,9 +92,9 @@ function wassup_install() {
|
|
96 |
}
|
97 |
}
|
98 |
if (empty($wassup_options->wassup_table)) {
|
99 |
-
$wassup_options->wassup_table = $
|
100 |
}
|
101 |
-
//
|
102 |
//...wassup_cache automatically disabled for pre-1.8 wassup users
|
103 |
if (!empty($wassup_options->wassup_version) && version_compare($wassup_options->wassup_version,'1.8','<')) {
|
104 |
$wassup_options->wassup_cache = 0; //disabled
|
@@ -113,23 +109,27 @@ function wassup_install() {
|
|
113 |
echo "file: ".WASSUPDIR.'/lib/upgrade.php does not exist!';
|
114 |
exit (1);
|
115 |
}
|
116 |
-
$success = wassup_tableInstaller();
|
117 |
//double-check that main table was installed
|
118 |
-
|
119 |
-
|
|
|
120 |
if (!empty($wassup_options->wassup_version)) { //upgrade only
|
121 |
$wassup_options->wassup_dbengine = $wassup_options->getMySQLsetting('engine');
|
122 |
}
|
123 |
-
//
|
124 |
-
|
125 |
-
|
|
|
|
|
|
|
126 |
}
|
127 |
|
128 |
-
//
|
129 |
-
//New in v1.8: show warning when 'WP_CACHE' constant is set
|
130 |
if (wassup_compatCheck("WP_CACHE") == true) {
|
131 |
-
$wassup_options->wassup_alert_message = '<strong style="color:#c00;padding:5px;">'.__("WassUp
|
132 |
}
|
|
|
133 |
|
134 |
//#Since v1.7: put current version# in options after update
|
135 |
$wassup_options->wassup_version = $wassupversion;
|
@@ -142,7 +142,7 @@ function wassup_install() {
|
|
142 |
|
143 |
} else {
|
144 |
//main table not created - exit with error
|
145 |
-
|
146 |
if (function_exists('deactivate_plugins')) {
|
147 |
deactivate_plugins(__FILE__);
|
148 |
}
|
@@ -179,14 +179,14 @@ function wassup_uninstall() {
|
|
179 |
remove_action('wp_dashboard_setup', 'wassup_add_dashboard_widgets');
|
180 |
}
|
181 |
//purge wassup tables- WARNING: this is a permanent erase!!
|
182 |
-
$
|
183 |
-
$table_tmp_name = $
|
184 |
-
$table_meta_name = $
|
185 |
-
//$wpdb->query("DROP TABLE IF EXISTS $
|
186 |
//$wpdb->query("DROP TABLE IF EXISTS $table_tmp_name"); //incorrectly causes an activation error in Wordpress
|
187 |
mysql_query("DROP TABLE IF EXISTS $table_meta_name");
|
188 |
mysql_query("DROP TABLE IF EXISTS $table_tmp_name");
|
189 |
-
mysql_query("DROP TABLE IF EXISTS $
|
190 |
|
191 |
delete_option('wassup_settings');
|
192 |
}
|
@@ -194,7 +194,6 @@ function wassup_uninstall() {
|
|
194 |
|
195 |
/**
|
196 |
* Output javascript in page head for wassup tracking
|
197 |
-
* New in 1.8: renamed from 'wassup_meta_info' to 'wassup_head'
|
198 |
* @param string (optional);
|
199 |
* @return none;
|
200 |
*/
|
@@ -325,7 +324,7 @@ function wassup_init() {
|
|
325 |
} // end function wassup_init
|
326 |
|
327 |
//### Wassup Admin functions
|
328 |
-
//
|
329 |
// admin functions to admin pages only
|
330 |
if (is_admin()) {
|
331 |
|
@@ -363,19 +362,35 @@ function add_wassup_css() {
|
|
363 |
echo "\n".'<script type="text/javascript">var tb_pathToImage = "'.WASSUPURL.'/js/thickbox/loadingAnimation.gif";</script>';
|
364 |
echo "\n".'<link rel="stylesheet" href="'.WASSUPURL.'/js/thickbox/thickbox.css'.'" type="text/css" />';
|
365 |
|
366 |
-
if ($_GET['page'] != "wassup-options" AND $_GET['page'] != "wassup-spia") {
|
|
|
367 |
<script type='text/javascript'>
|
368 |
//<![CDATA[
|
369 |
-
var selftimerID = 0;
|
370 |
function selfRefresh(){
|
371 |
location.href='?<?php print $_SERVER['QUERY_STRING']; ?>';
|
372 |
}
|
373 |
-
selftimerID = setTimeout('selfRefresh()', <?php print ($wassup_options->wassup_refresh * 60000)+2000; ?>);
|
374 |
//]]>
|
375 |
</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
376 |
|
|
|
|
|
|
|
377 |
<script type='text/javascript'>
|
378 |
//<![CDATA[
|
|
|
379 |
var _countDowncontainer="0";
|
380 |
var _currentSeconds=0;
|
381 |
var paused = " *<?php _e('paused','wassup'); ?>* ";
|
@@ -406,17 +421,19 @@ function add_wassup_css() {
|
|
406 |
function AddZero(num) {
|
407 |
return ((num >= "0")&&(num < 10))?"0"+num:num+"";
|
408 |
}
|
|
|
409 |
//]]>
|
410 |
</script>
|
411 |
<script type="text/javascript">
|
412 |
//<![CDATA[
|
413 |
window.onload=WindowLoad;
|
414 |
function WindowLoad(event) {
|
415 |
-
ActivateCountDown("CountDownPanel", <?php print ($
|
416 |
}
|
417 |
//]]>
|
418 |
</script>
|
419 |
-
|
|
|
420 |
<script type="text/javascript">
|
421 |
//<![CDATA[
|
422 |
jQuery(document).ready(function($){
|
@@ -509,7 +526,9 @@ jQuery(document).ready(function($){
|
|
509 |
$("a.toggle-allcrono").html("<a href='#' class='toggle-allcrono boxed'><?php _e("Collapse Chronology", "wassup") ?></a>");
|
510 |
return false;
|
511 |
});
|
512 |
-
|
|
|
|
|
513 |
$("#CountDownPanel").click(function(){ //Pause|Resume countdown
|
514 |
var timeleft = _currentSeconds*1000;
|
515 |
if (tickerID != 0) {
|
@@ -524,6 +543,8 @@ jQuery(document).ready(function($){
|
|
524 |
$(this).css('color','#555');
|
525 |
}
|
526 |
});
|
|
|
|
|
527 |
}); //end jQuery(document).ready
|
528 |
//]]>
|
529 |
</script>
|
@@ -627,11 +648,11 @@ function wassup_add_pages() {
|
|
627 |
add_submenu_page(WASSUPFOLDER, __('Visitor Details', 'wassup'), __('Visitor Details', 'wassup'), $userlevel, WASSUPFOLDER); //<-- WASSUPFOLDER needed here for directory names that include a version number...
|
628 |
add_submenu_page(WASSUPFOLDER, __('Spy Visitors', 'wassup'), __('SPY Visitors', 'wassup'), $userlevel, 'wassup-spia', 'WassUp');
|
629 |
add_submenu_page(WASSUPFOLDER, __('Current Visitors Online', 'wassup'), __('Current Visitors Online', 'wassup'), $userlevel, 'wassup-online', 'WassUp');
|
630 |
-
//
|
631 |
add_submenu_page(WASSUPFOLDER, __('Options', 'wassup'), __('Options', 'wassup'), 8, 'wassup-options', 'WassUp');
|
632 |
|
633 |
-
//
|
634 |
-
//
|
635 |
if (version_compare($wp_version, '2.5', '>=')) {
|
636 |
if (version_compare($wp_version, '2.7', '>=')) {
|
637 |
add_submenu_page('index.php', __('WassUp Stats'), __('WassUp Stats'), $userlevel, 'wassup-stats', 'WassUp');
|
@@ -681,8 +702,8 @@ function WassUp() {
|
|
681 |
//for generating page link urls....
|
682 |
$wpurl = get_bloginfo('wpurl');
|
683 |
$blogurl = get_bloginfo('home');
|
684 |
-
$
|
685 |
-
$table_tmp_name = $
|
686 |
|
687 |
//"action_param" are preassigned "GET" parameters used for "action.php" external/ajax calls like "top ten"
|
688 |
$action_param='&whash='.$wassup_options->whash;
|
@@ -716,9 +737,9 @@ function WassUp() {
|
|
716 |
} elseif ($_POST['delete_filter_manual'] =="spam"){
|
717 |
$delete_condition .= " AND spam>0";
|
718 |
}
|
719 |
-
$wpdb->query("DELETE FROM $
|
720 |
$affected_recs = $wpdb->rows_affected + 0;
|
721 |
-
//$wpdb->query("OPTIMIZE TABLE $
|
722 |
}
|
723 |
if ($affected_recs > 0) {
|
724 |
$admin_message = $affected_recs." ".__("records deleted successfully","wassup")."." ;
|
@@ -742,7 +763,7 @@ function WassUp() {
|
|
742 |
} elseif ($_POST['delete_filter'] =="spam"){
|
743 |
$delete_condition .= " AND spam>0";
|
744 |
}
|
745 |
-
$wpdb->query("DELETE FROM $
|
746 |
$affected_recs = $wpdb->rows_affected + 0;
|
747 |
if ($affected_recs > 0) {
|
748 |
$admin_message = $affected_recs." ".__("records deleted successfully","wassup")."." ;
|
@@ -755,7 +776,7 @@ function WassUp() {
|
|
755 |
} //end if numeric
|
756 |
} //end if delete_auto
|
757 |
if (!empty($_POST['wassup_empty'])) {
|
758 |
-
$wpdb->query("DELETE FROM $
|
759 |
if ($affected_recs > 0) {
|
760 |
$affected_recs = $wpdb->rows_affected + 0;
|
761 |
$admin_message = $affected_recs." ".__("records deleted successfully","wassup")."." ;
|
@@ -764,7 +785,7 @@ function WassUp() {
|
|
764 |
}
|
765 |
//TODO: "Optimize" operation locks table so it must finish in background to prevent browser close/timeout from interrupting the release of the lock, making it permanent.
|
766 |
//if ($affected_recs > 1000) {
|
767 |
-
// $wpdb->query("OPTIMIZE TABLE $
|
768 |
//}
|
769 |
$wassup_options->saveSettings();
|
770 |
}
|
@@ -801,8 +822,12 @@ function WassUp() {
|
|
801 |
$wassup_options->delete_filter = $_POST['delete_filter'];
|
802 |
}
|
803 |
$wassup_options->wassup_screen_res = $_POST['wassup_screen_res'];
|
804 |
-
|
805 |
-
$
|
|
|
|
|
|
|
|
|
806 |
$wassup_options->wassup_dashboard_chart = $_POST['wassup_dashboard_chart'];
|
807 |
$wassup_options->wassup_geoip_map = $_POST['wassup_geoip_map'];
|
808 |
if (!empty($_POST['wassup_googlemaps_key'])) { //don't clear geoip key
|
@@ -917,7 +942,7 @@ function WassUp() {
|
|
917 |
echo "\n"; ?>
|
918 |
<ul id="wassup-menu">
|
919 |
<li class="wassup-menu-link <?php echo $class_opt; ?>"><?php
|
920 |
-
//
|
921 |
if ($user_level >= 8) {
|
922 |
echo '<a href="'.admin_url("admin.php?page=wassup-options").'">'.__('Options','wassup').'</a>';
|
923 |
} else {
|
@@ -1117,7 +1142,7 @@ function WassUp() {
|
|
1117 |
//display last few hits here. rest will be added by spia.js
|
1118 |
$to_date = current_time('timestamp');
|
1119 |
$from_date = ($to_date - 12*(60*60)); //display last 10 visits in 12 hours...
|
1120 |
-
wassup_spiaView($from_date,0,$spytype,$
|
1121 |
<p style="height:2px;clear:both;"></p>
|
1122 |
</div><!-- /spyContainer -->
|
1123 |
<br />
|
@@ -1236,13 +1261,13 @@ function WassUp() {
|
|
1236 |
// DELETE EVERY RECORD MARKED BY IP
|
1237 |
//# Delete limited to selected date range only. -Helene D. 3/4/08.
|
1238 |
if (!empty($_GET['deleteMARKED']) && $wassup_options->wmark == "1" && !empty($_GET['dip'])) {
|
1239 |
-
$del_count = $wpdb->get_var("SELECT COUNT(ip) as deleted FROM $
|
1240 |
if (method_exists($wpdb,'prepare')) {
|
1241 |
-
$wpdb->query($wpdb->prepare("DELETE FROM $
|
1242 |
} else {
|
1243 |
-
$wpdb->query("DELETE FROM $
|
1244 |
}
|
1245 |
-
$rec_count = $wpdb->get_var("SELECT COUNT(ip) as deleted FROM $
|
1246 |
$rec_deleted = ($del_count - $rec_count)." ".__('records deleted','wassup');
|
1247 |
$wassup_options->showMessage($rec_deleted);
|
1248 |
//echo '<p><strong>'.$rec_deleted.' '.__('records deleted','wassup').'</strong></p>';
|
@@ -1255,7 +1280,7 @@ function WassUp() {
|
|
1255 |
echo "<!--heartbeat-->\n";
|
1256 |
|
1257 |
// Instantiate class to count items
|
1258 |
-
$Tot = New MainItems($
|
1259 |
$Tot->whereis = $whereis;
|
1260 |
$Tot->Limit = $limit;
|
1261 |
$Tot->WpUrl = $wpurl;
|
@@ -1384,7 +1409,8 @@ function WassUp() {
|
|
1384 |
<td align="left" width="28">
|
1385 |
<a href="#" onclick='selfRefresh()'><img src="<?php echo WASSUPURL; ?>/img/reload.png" id="refresh" alt="refresh screen" title="Refresh screen" /></a></td>
|
1386 |
<td class="legend" align="left"><?php
|
1387 |
-
echo __('Auto refresh in','wassup').' <span id="CountDownPanel"
|
|
|
1388 |
// Marked items - Refresh
|
1389 |
if ($wassup_options->wmark == 1) {
|
1390 |
echo ' <a href="?'.attribute_escape($URLQuery.'&search='.$wassup_options->wip).'" title="'.__('Filter by marked IP','wassup').'"> '.__('Show marked items','wassup').' (<strong>'.$markedtot.'</strong> '.__("total").')</a> ';
|
@@ -1419,16 +1445,16 @@ function WassUp() {
|
|
1419 |
<div class="search-ip" <?php if (empty($search)) echo 'style="display: none;"'; ?>>
|
1420 |
<form action="" method="get">
|
1421 |
<input type="hidden" name="page" value="<?php echo WASSUPFOLDER; ?>" /><?php
|
1422 |
-
$
|
1423 |
-
|
1424 |
-
|
1425 |
-
foreach ($
|
1426 |
-
$
|
1427 |
-
if (!empty($
|
1428 |
-
<input type="hidden" name="<?php echo $
|
1429 |
}
|
1430 |
}
|
1431 |
-
} ?>
|
1432 |
<input type="text" size="25" name="search" value="<?php if ($search != "") print attribute_escape($search); ?>" /><input type="submit" name="submit-search" value="search" />
|
1433 |
</form>
|
1434 |
</div> <!-- /search-ip -->
|
@@ -1466,7 +1492,7 @@ function WassUp() {
|
|
1466 |
}
|
1467 |
if ($rk->hostname != "") $hostname = $rk->hostname;
|
1468 |
else $hostname = "unknown";
|
1469 |
-
//$numurl = $wpdb->get_var("SELECT COUNT(DISTINCT id) as numurl FROM $
|
1470 |
$numurl = (int) $rk->page_hits;
|
1471 |
echo "\n";
|
1472 |
?>
|
@@ -1628,7 +1654,7 @@ function WassUp() {
|
|
1628 |
// Referer is a Spider or Bot
|
1629 |
if ($rk->spider != "") {
|
1630 |
if ($rk->feed != "") { ?>
|
1631 |
-
<ul class="spider
|
1632 |
<li class="feed"><span class="indent-li-agent"><?php _e('FEEDREADER','wassup'); ?>: <strong><a href="#" class="toggleagent" id="<?php echo $rk->id; ?>"><?php print $rk->spider; ?></a></strong></span></li>
|
1633 |
<?php if (is_numeric($rk->feed)) { ?>
|
1634 |
<li class="feed"><span class="indent-li-agent"><?php _e('SUBSCRIBER(S)','wassup'); ?>: <strong><?php print (int)$rk->feed; ?></strong></span></li>
|
@@ -1684,9 +1710,9 @@ function WassUp() {
|
|
1684 |
<ul class="url"><?php
|
1685 |
if ($numurl > 1) {
|
1686 |
//Important Note: list of urls visited is affected by browsers like Safari 4 which hits a page from both the user window and from it's "top sites" page, creating multiple duplicate records with distinct id's...
|
1687 |
-
//$qryCD = $wpdb->get_results("SELECT `timestamp`, urlrequested FROM $
|
1688 |
-
$qryCD = $wpdb->get_results("SELECT DISTINCT `timestamp`, urlrequested, agent FROM $
|
1689 |
-
//$qryCD = $wpdb->get_results("SELECT `id`, `timestamp`, urlrequested FROM $
|
1690 |
$i=1;
|
1691 |
$char_len = round($max_char_len*.92,0);
|
1692 |
foreach ($qryCD as $cd) {
|
@@ -1769,152 +1795,9 @@ function WassUp() {
|
|
1769 |
<?php
|
1770 |
} //end function Wassup
|
1771 |
|
1772 |
-
//
|
1773 |
-
//
|
1774 |
-
//
|
1775 |
-
//
|
1776 |
-
// $wassup_table = (!empty($wassup_options->wassup_table))? $wassup_options->wassup_table: $wpdb->prefix . "wassup";
|
1777 |
-
//
|
1778 |
-
// if (empty($table_name)) {
|
1779 |
-
// $table_name = $wassup_table;
|
1780 |
-
// }
|
1781 |
-
// $table_tmp_name = $wassup_table."_tmp";
|
1782 |
-
//
|
1783 |
-
// //...Set default character set and collation (on new table)
|
1784 |
-
// $charset_collate = '';
|
1785 |
-
// //#don't do charset/collation when < MySQL 4.1 or when DB_CHARSET is undefined
|
1786 |
-
// //Note: it is possible that table default charset !== WP database charset on preexisting MySQL database and tables (from WP2.3 or less) because old charsets persist after upgrades
|
1787 |
-
// if ($withcharset && version_compare(mysql_get_server_info(),'4.1.0','>') && defined('DB_CHARSET') && !empty($wpdb->charset)) {
|
1788 |
-
// $charset_collate = 'DEFAULT CHARACTER SET '.$wpdb->charset;
|
1789 |
-
// //add collate only when charset is specified
|
1790 |
-
// if (!empty($wpdb->collate)) {
|
1791 |
-
// $charset_collate .= ' COLLATE '.$wpdb->collate;
|
1792 |
-
// }
|
1793 |
-
// }
|
1794 |
-
//
|
1795 |
-
// //wassup table structure
|
1796 |
-
// $sql_createtable = "CREATE TABLE `$table_name` (
|
1797 |
-
// `id` mediumint(11) NOT NULL auto_increment,
|
1798 |
-
// `wassup_id` varchar(60) NOT NULL,
|
1799 |
-
// `timestamp` varchar(20) NOT NULL,
|
1800 |
-
// `ip` varchar(50) default NULL,
|
1801 |
-
// `hostname` varchar(150) default NULL,
|
1802 |
-
// `urlrequested` text,
|
1803 |
-
// `agent` varchar(255) default NULL,
|
1804 |
-
// `referrer` text,
|
1805 |
-
// `search` varchar(255) default NULL,
|
1806 |
-
// `searchpage` int(11) unsigned default '0',
|
1807 |
-
// `os` varchar(15) default NULL,
|
1808 |
-
// `browser` varchar(50) default NULL,
|
1809 |
-
// `language` varchar(5) default NULL,
|
1810 |
-
// `screen_res` varchar(15) default NULL,
|
1811 |
-
// `searchengine` varchar(25) default NULL,
|
1812 |
-
// `spider` varchar(50) default NULL,
|
1813 |
-
// `feed` varchar(50) default NULL,
|
1814 |
-
// `username` varchar(50) default NULL,
|
1815 |
-
// `comment_author` varchar(50) default NULL,
|
1816 |
-
// `spam` varchar(5) default '0',
|
1817 |
-
// `url_wpid` varchar(50) default NULL,
|
1818 |
-
// UNIQUE KEY `id` (`id`),
|
1819 |
-
// KEY `idx_wassup` (`wassup_id`(32),`timestamp`),
|
1820 |
-
// INDEX (`os`),
|
1821 |
-
// INDEX (`browser`),
|
1822 |
-
// INDEX `timestamp` (`timestamp`)) {$charset_collate};";
|
1823 |
-
// //...Include a first record if new table (not temp table)
|
1824 |
-
// $sql_firstrecord = '';
|
1825 |
-
// if ($table_name != $table_tmp_name && $wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) {
|
1826 |
-
// if (!class_exists('UADetector'))
|
1827 |
-
// include_once (dirname(__FILE__) . '/lib/uadetector.class.php');
|
1828 |
-
// $ua = new UADetector;
|
1829 |
-
// if (empty($current_user->user_login)) get_currentuserinfo();
|
1830 |
-
// $logged_user = (!empty($current_user->user_login)? $current_user->user_login: "");
|
1831 |
-
// $sql_firstrecord = sprintf("INSERT INTO $table_name (`wassup_id`, `timestamp`, `ip`, `hostname`, `urlrequested`, `agent`, `referrer`, `search`, `searchpage`, `os`, `browser`, `language`, `screen_res`, `searchengine`, `spider`, `feed`, `username`, `comment_author`, `spam`) VALUES ('%032s','%s','%s','%s','%s','%s','%s','','','%s','%s','','','','','','%s','','0')",
|
1832 |
-
// 1, time()+(get_option(gmt_offset)*3600),
|
1833 |
-
// '127.0.0.1', 'localhost',
|
1834 |
-
// '[404] '.__('Welcome to WassUP','wassup'),
|
1835 |
-
// $ua->agent . ' WassUp/'.$wassupversion.' (http://www.wpwp.org)',
|
1836 |
-
// 'http://www.wpwp.org', $ua->os,
|
1837 |
-
// trim($ua->name .' '. $ua->majorVersion($ua->version)),
|
1838 |
-
// $logged_user);
|
1839 |
-
// }
|
1840 |
-
//
|
1841 |
-
// if (!function_exists('dbDelta')) {
|
1842 |
-
// if (file_exists(ABSPATH . 'wp-admin/includes/upgrade.php')) {
|
1843 |
-
// require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
|
1844 |
-
// } else { //deprecated since 2.5
|
1845 |
-
// require_once( ABSPATH.'wp-admin/upgrade-functions.php');
|
1846 |
-
// }
|
1847 |
-
// }
|
1848 |
-
// //...create/upgrade wassup table
|
1849 |
-
// if (!empty($sql_firstrecord)) {
|
1850 |
-
// $result = dbDelta(array($sql_createtable,$sql_firstrecord));
|
1851 |
-
// } else {
|
1852 |
-
// $result = dbDelta($sql_createtable);
|
1853 |
-
// }
|
1854 |
-
//
|
1855 |
-
// //...return 'true' if table created successfully, false otherwise
|
1856 |
-
// $retvalue=true;
|
1857 |
-
// if ($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) {
|
1858 |
-
//
|
1859 |
-
// $retvalue=false;
|
1860 |
-
// } else {
|
1861 |
-
// if ($table_name != $table_tmp_name && version_compare(mysql_get_server_info(),'4.1.0','>')) {
|
1862 |
-
// //'CREATE TABLE LIKE' syntax not supported in MySQL 4.1 or less
|
1863 |
-
// $upgrade = dbDelta("CREATE TABLE $table_tmp_name LIKE {$table_name}");
|
1864 |
-
// }
|
1865 |
-
// }
|
1866 |
-
// return $retvalue;
|
1867 |
-
//} //end function wCreateTable
|
1868 |
-
|
1869 |
-
//function wUpdateTable() { -- moved to "lib/upgrade.php"
|
1870 |
-
// global $wpdb, $wassup_options, $wassupversion;
|
1871 |
-
//
|
1872 |
-
// $table_name = (!empty($wassup_options->wassup_table))? $wassup_options->wassup_table: $wpdb->prefix . "wassup";
|
1873 |
-
// $table_tmp_name = $table_name."_tmp";
|
1874 |
-
// // Drop and re-create all indices except 'id'
|
1875 |
-
// //# get list of all wassup indices
|
1876 |
-
// $qryresult = mysql_query("SHOW INDEX FROM {$table_name}");
|
1877 |
-
// if ($qryresult) {
|
1878 |
-
// $row_count = mysql_num_rows($qryresult);
|
1879 |
-
// } else {
|
1880 |
-
// $row_count = 0;
|
1881 |
-
// }
|
1882 |
-
// //# get the names of all indices
|
1883 |
-
// $idx_names = array();
|
1884 |
-
// $prev_key = ""; //names listed multiples times per columns in key
|
1885 |
-
// if ($row_count > 1) {
|
1886 |
-
// while ($row = mysql_fetch_array($qryresult,MYSQL_ASSOC)) {
|
1887 |
-
// if ($row["Column_name"] != "id" && $row["Key_name"] != $prev_key) {
|
1888 |
-
// $idx_names[] = $row["Key_name"];
|
1889 |
-
// }
|
1890 |
-
// $prev_key = $row["Key_name"];
|
1891 |
-
// } //end while
|
1892 |
-
// } //end if row_count
|
1893 |
-
// mysql_free_result($qryresult);
|
1894 |
-
// //# drop all the indices in $idx_names and drop temp table...
|
1895 |
-
// //drop indices
|
1896 |
-
// foreach ($idx_names AS $idx_drop) {
|
1897 |
-
// mysql_query("DROP INDEX $idx_drop ON {$table_name}");
|
1898 |
-
// }
|
1899 |
-
//
|
1900 |
-
// //...could take a long time, so run in background if window times out
|
1901 |
-
// ignore_user_abort(1);
|
1902 |
-
// mysql_query("DROP TABLE IF EXISTS $table_tmp_name");
|
1903 |
-
//
|
1904 |
-
// //call 'wCreateTable' to update table structure and rebuild indices using wordpress' 'dbdelta' function...
|
1905 |
-
// if (wCreateTable($table_name,false)) {
|
1906 |
-
// if ($wpdb->get_var("SHOW TABLES LIKE '$table_tmp_name'") != $table_tmp_name) {
|
1907 |
-
// wCreateTable($table_tmp_name);
|
1908 |
-
// }
|
1909 |
-
// return true;
|
1910 |
-
// } elseif ($wpdb->get_var("SHOW TABLES LIKE '$table_name'") == $table_name) {
|
1911 |
-
// //table upgrade warning error
|
1912 |
-
// return true;
|
1913 |
-
// } else {
|
1914 |
-
// //table upgrade fatal error
|
1915 |
-
// return false;
|
1916 |
-
// }
|
1917 |
-
//} //end function wUpdateTable
|
1918 |
} //end if is_admin
|
1919 |
|
1920 |
//### Wassup Tracking functions
|
@@ -2148,6 +2031,7 @@ function wassupAppend() {
|
|
2148 |
}
|
2149 |
} else {
|
2150 |
//do only fatal error reporting
|
|
|
2151 |
$errlvl = @error_reporting();
|
2152 |
if (!empty($errlvl)) {
|
2153 |
@error_reporting(E_ERROR);
|
@@ -2156,9 +2040,9 @@ function wassupAppend() {
|
|
2156 |
|
2157 |
$wpurl = get_bloginfo('wpurl');
|
2158 |
$blogurl = get_option('home');
|
2159 |
-
$
|
2160 |
-
$table_tmp_name = $
|
2161 |
-
$table_cache = $
|
2162 |
$wassup_rec = "";
|
2163 |
$wassup_dbtask=array(); //for scheduled db operations
|
2164 |
|
@@ -2361,12 +2245,12 @@ function wassupAppend() {
|
|
2361 |
// and get previous settings to prevent redundant checks on same
|
2362 |
// visitor. Dup==same wassup_id, same URL, and timestamp <180 secs
|
2363 |
$dup_urlrequest=0;
|
2364 |
-
$
|
2365 |
$spamresult=0;
|
2366 |
$wpdb->query("SET wait_timeout = 7"); //don't wait for slow responses
|
2367 |
$recent = $wpdb->get_results("SELECT wassup_id, urlrequested, spam, screen_res, `timestamp`, browser, spider, os, feed, `language`, `agent`, `referrer` FROM ".$table_tmp_name." WHERE wassup_id='".$wassup_id."' AND `timestamp` >".($timestamp-180)." ORDER BY `timestamp` DESC");
|
2368 |
if (!empty($recent)) {
|
2369 |
-
$
|
2370 |
//check 1st record only
|
2371 |
//record is dup if same url (with 'wscr' removed) and same user-agent
|
2372 |
if ($recent[0]->urlrequested == $urlRequested || $recent[0]->urlrequested == remove_query_arg('wscr',$urlRequested) || $recent[0]->urlrequested == "[404] $urlRequested") {
|
@@ -2384,7 +2268,7 @@ function wassupAppend() {
|
|
2384 |
//check for screen resolution and update, if not previously recorded
|
2385 |
//...queue the update because of "delayed insert"
|
2386 |
if (empty($recent[0]->screen_res) && !empty($screen_res)) {
|
2387 |
-
$wassup_dbtask[] = "UPDATE $
|
2388 |
}
|
2389 |
|
2390 |
//get previously recorded settings for this visitor to
|
@@ -2411,26 +2295,26 @@ function wassupAppend() {
|
|
2411 |
}
|
2412 |
// Detect disguised spiders and harvesters by checking for
|
2413 |
// excessive pageviews (threshold: 8+ views in < 16 secs)
|
2414 |
-
if ($
|
2415 |
$visitstart = $recent[7]->timestamp;
|
2416 |
if (($timestamp - $recent[7]->timestamp) < 16) {
|
2417 |
$is_spider=true;
|
2418 |
$pagetest[]="$urlRequested";
|
2419 |
//a spider is unlikely to hit same page 2+ times
|
2420 |
-
foreach ($recent AS $
|
2421 |
-
if (stristr($
|
2422 |
$is_spider = true;
|
2423 |
break;
|
2424 |
-
} elseif (in_array($
|
2425 |
$is_spider = false;
|
2426 |
break;
|
2427 |
} else {
|
2428 |
-
$pagetest[] = $
|
2429 |
}
|
2430 |
}
|
2431 |
if ($is_spider) {
|
2432 |
$spider = __("Unknown Spider","wassup");
|
2433 |
-
$wassup_dbtask[] = "UPDATE $
|
2434 |
}
|
2435 |
}
|
2436 |
}
|
@@ -2469,7 +2353,7 @@ function wassupAppend() {
|
|
2469 |
}
|
2470 |
//retroactively update record for hack attempt
|
2471 |
if ($spam == "3" && $spamresult == "0" && !empty($recent)) {
|
2472 |
-
$wassup_dbtask[] = "UPDATE $
|
2473 |
}
|
2474 |
|
2475 |
//# Exclude duplicates and avoid redundant checks on multi-page visits
|
@@ -2591,8 +2475,13 @@ function wassupAppend() {
|
|
2591 |
if ($spamComment->isRefSpam($referrer)>0) {
|
2592 |
$spam = 2;
|
2593 |
//check referer against a list of known spammers
|
2594 |
-
}
|
2595 |
-
$
|
|
|
|
|
|
|
|
|
|
|
2596 |
}
|
2597 |
}
|
2598 |
}
|
@@ -2610,7 +2499,7 @@ function wassupAppend() {
|
|
2610 |
if ($spammerIP > 0) { //is previous comment spam
|
2611 |
$spam = 1;
|
2612 |
}
|
2613 |
-
//
|
2614 |
if ($spam== 0 && $wassup_options->wassup_spam==1 && stristr($urlRequested,"comment")!== FALSE && stristr($referrer,"#comment")!==FALSE && (stristr($browser,"opera")!==FALSE || preg_match('/^(AOL|Netscape|IE)\s[1-6]$/',$browser)>0)) {
|
2615 |
$spam=1;
|
2616 |
}
|
@@ -2647,7 +2536,7 @@ function wassupAppend() {
|
|
2647 |
//retroactively update visitor's hits as spam, in case late detection
|
2648 |
if (!empty($recent) && !empty($spam) && $spamresult==0) {
|
2649 |
//queue the update...
|
2650 |
-
$wassup_dbtask[]="UPDATE $
|
2651 |
}
|
2652 |
|
2653 |
} //end if spam == 0
|
@@ -2743,7 +2632,7 @@ function wassupAppend() {
|
|
2743 |
'url_wpid'=>$post_ID);
|
2744 |
|
2745 |
// Insert the record into the db
|
2746 |
-
insert_into_wp($
|
2747 |
// Insert the record into the wassup_tmp table too
|
2748 |
insert_into_wp($table_tmp_name, $wassup_rec);
|
2749 |
// Delete records older then 3 minutes
|
@@ -2774,7 +2663,7 @@ function wassupAppend() {
|
|
2774 |
if ($wassup_options->wassup_remind_flag == 1) {
|
2775 |
// check database size ~every 5 minutes to keep wassup fast...
|
2776 |
if ( (time())%299 == 0 ) {
|
2777 |
-
$table_status = $wpdb->get_results("SHOW TABLE STATUS LIKE '$
|
2778 |
foreach ($table_status as $fstatus) {
|
2779 |
$data_lenght = $fstatus->Data_length;
|
2780 |
}
|
@@ -2812,8 +2701,8 @@ function wassupAppend() {
|
|
2812 |
}
|
2813 |
}
|
2814 |
//#check before doing delete as it locks the table...
|
2815 |
-
if ((int)$wpdb->get_var("SELECT COUNT(id) FROM $
|
2816 |
-
$wassup_dbtask[] = "DELETE FROM $
|
2817 |
}
|
2818 |
}
|
2819 |
}
|
@@ -2827,7 +2716,7 @@ function wassupAppend() {
|
|
2827 |
if ($timestamp > ($wassup_options->wassup_optimize+24*3600) && count($wassup_dbtask)==0) {
|
2828 |
$wassup_options->wassup_optimize = current_time('timestamp');
|
2829 |
$wassup_options->saveSettings();
|
2830 |
-
$wassup_dbtask[] = "OPTIMIZE TABLE $
|
2831 |
}
|
2832 |
}
|
2833 |
|
@@ -3061,6 +2950,8 @@ function wGetSE($referrer = null){
|
|
3061 |
$lines = array(
|
3062 |
"Google Images|images.google.|prev|start|hl||", //obsolete
|
3063 |
"Google Images|/imgres?imgurl=|prev|start|hl||",
|
|
|
|
|
3064 |
"Google|www.google.|q|cd|hl||",
|
3065 |
"Google|www.google.|as_q|start|hl||", //advanced query
|
3066 |
"Yahoo Images|images.search.yahoo.com|p||||",
|
@@ -3214,12 +3105,12 @@ function wGetSE($referrer = null){
|
|
3214 |
$searchengine = $nome;
|
3215 |
} //end if preg_match
|
3216 |
} //end foreach
|
3217 |
-
//search engine or key is not in list, so check for
|
3218 |
if (empty($search_phrase) && !empty($referrer)) {
|
3219 |
//unset($nome,$domain,$key,$page,$lang);
|
3220 |
|
3221 |
//Check for general search phrases
|
3222 |
-
if (preg_match("#^https?://([^/]+).*[&?](q|
|
3223 |
if (empty($searchengine)) {
|
3224 |
$searchengine = trim(strtolower($pcs[1]));
|
3225 |
}
|
@@ -3230,8 +3121,8 @@ function wGetSE($referrer = null){
|
|
3230 |
}
|
3231 |
|
3232 |
//Check separately for queries that use nonstandard search variable
|
3233 |
-
//
|
3234 |
-
} elseif(preg_match("#^https?://([^/]+).*(?:results|search|query).*[&?](aq|as|p|su|kw|k|qo|qp|qs|string)=([^&]+)#i",$referrer,$pcs) > 0) {
|
3235 |
if (empty($searchengine)) {
|
3236 |
$searchengine = trim(strtolower($pcs[1]));
|
3237 |
}
|
@@ -3241,7 +3132,7 @@ function wGetSE($referrer = null){
|
|
3241 |
|
3242 |
//do a separate check for page number, if not found above
|
3243 |
if (!empty($search_phrase)) {
|
3244 |
-
if (empty($searchpage) && preg_match("#[&\?](start|startpage|b|cd|first|stq|pi|page)[=/](\d+)#i",$referrer,$pcs)>0) {
|
3245 |
$searchpage = $pcs[2];
|
3246 |
}
|
3247 |
}
|
@@ -3420,7 +3311,7 @@ function wGetSpider($agent="",$hostname="", $browser=""){
|
|
3420 |
//Note: spaces are removed from UA string for the bot comparison
|
3421 |
$crawler = trim($crawler);
|
3422 |
if (empty($crawler)) {
|
3423 |
-
$
|
3424 |
$key = null;
|
3425 |
// array format: "Spider Name|UserAgent keywords (no spaces)| Spider type (R=robot, B=Browser/downloader, F=feedreader, H=hacker, L=Link checker, M=siteMap generator, S=Spammer/email harvester, V=CSS/Html validator)
|
3426 |
$lines = array("Googlebot|Googlebot/|R|",
|
@@ -3485,6 +3376,7 @@ function wGetSpider($agent="",$hostname="", $browser=""){
|
|
3485 |
"Google Images|Googlebot-Image|R|",
|
3486 |
"Google AdSense|Mediapartners-Google|R|",
|
3487 |
"Google Desktop|GoogleDesktop|F|",
|
|
|
3488 |
"GreatNews|GreatNews|F|",
|
3489 |
"Gregarius|Gregarius/|F|",
|
3490 |
"Gromit|Gromit/||",
|
@@ -3703,7 +3595,7 @@ function wGetSpider($agent="",$hostname="", $browser=""){
|
|
3703 |
foreach($lines as $line_num => $spider) {
|
3704 |
list($nome,$key,$crawlertype)=explode("|",$spider);
|
3705 |
if ($key != "") {
|
3706 |
-
if(strstr($
|
3707 |
continue;
|
3708 |
} else {
|
3709 |
$crawler = trim($nome);
|
@@ -3761,7 +3653,7 @@ function wGetSpider($agent="",$hostname="", $browser=""){
|
|
3761 |
|
3762 |
//#get the visitor locale/language
|
3763 |
function wGetLocale($language="",$hostname="",$referrer="") {
|
3764 |
-
global $wpdb, $wassup_options;
|
3765 |
$clocale="";
|
3766 |
$country="";
|
3767 |
$language = trim(strtolower($language));
|
@@ -3845,28 +3737,47 @@ function wGetLocale($language="",$hostname="",$referrer="") {
|
|
3845 |
|
3846 |
/**
|
3847 |
* Check referrer host (or visitor hostname) against a list of known
|
3848 |
-
* referrer spammers and return "true" if match
|
3849 |
* @param string (2)
|
3850 |
* @return boolean
|
3851 |
*/
|
3852 |
function wGetSpamRef($referrer,$hostname="") {
|
|
|
3853 |
$referrer=attribute_escape(strip_tags(str_replace(" ","",html_entity_decode($referrer))));
|
|
|
|
|
3854 |
$referrer_host = "";
|
3855 |
$referrer_path = "";
|
|
|
3856 |
if (empty($referrer) && !empty($hostname)) {
|
3857 |
$referrer_host = $hostname;
|
3858 |
$hostname="";
|
3859 |
-
}
|
3860 |
-
$
|
3861 |
-
|
3862 |
-
|
3863 |
-
|
3864 |
-
|
3865 |
-
|
3866 |
-
|
3867 |
-
|
3868 |
-
|
3869 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3870 |
//compare against a list of recent referer spammers
|
3871 |
$lines = array( '123666123\.com',
|
3872 |
'209\.29\.25\.180',
|
@@ -3883,33 +3794,44 @@ function wGetSpamRef($referrer,$hostname="") {
|
|
3883 |
'blueberryvitamin\.com',
|
3884 |
'bumphero\.com',
|
3885 |
'canadapharm\.atwebpages\.com',
|
|
|
|
|
3886 |
'celebritydietdoctor\.com',
|
3887 |
'celebrity\-?diets\.(com|org|net|info|biz)',
|
|
|
3888 |
'clients\.your\-server\.de',
|
3889 |
'couplesresortsonline\.com',
|
3890 |
-
'
|
3891 |
'dreamworksdentalcenter\.com',
|
|
|
3892 |
'\.ewebesales\.net',
|
3893 |
'exactinsurance\.info',
|
3894 |
'find1friend\.com',
|
3895 |
'freefarmvillesecrets\.info',
|
3896 |
'frenchforbeginnerssite\.com',
|
3897 |
'gameskillinggames\.net',
|
|
|
3898 |
'gskstudio\.com',
|
3899 |
'h\-13\d\-\d{3}\.cssgroup\.lv',
|
3900 |
'hearcam\.org',
|
3901 |
'highheelsale\.com',
|
3902 |
'homebasedaffiliatemarketingbusiness\.com',
|
|
|
3903 |
'howgrowtall\.(com|info)',
|
3904 |
'insurancebinder\.info',
|
3905 |
'internetserviceteam\.com',
|
3906 |
'intl\-alliance\.com',
|
3907 |
'it\.n\-able\.com',
|
3908 |
'justanimal\.com',
|
|
|
3909 |
'lactoseintolerancesymptoms\.net',
|
|
|
|
|
3910 |
'lockyourpicz\.com',
|
3911 |
'luia\.ru',
|
|
|
3912 |
'myhealthcare\.com',
|
|
|
3913 |
'odcadide\.iinaa\.net',
|
3914 |
'oma\-chat\-live\.de',
|
3915 |
'onlinemarketpromo\.com',
|
@@ -3921,11 +3843,13 @@ function wGetSpamRef($referrer,$hostname="") {
|
|
3921 |
'pinkyxxx\.org',
|
3922 |
'play\-mp3\.com',
|
3923 |
'poker\-review\.tk',
|
|
|
3924 |
'21[89]\-124\-182\-64\.cust\.propagation\.net',
|
3925 |
'prosperent\-adsense\-alternative\.blogspot\.com',
|
3926 |
'ragedownloads\.info',
|
3927 |
'red\-black\.ru',
|
3928 |
-
'*
|
|
|
3929 |
'seoindiawizard\.com',
|
3930 |
'sexcam\-girls\.at',
|
3931 |
'singlesvacationspackages\.com',
|
@@ -3937,6 +3861,8 @@ function wGetSpamRef($referrer,$hostname="") {
|
|
3937 |
'thik\-chik\.com',
|
3938 |
'thisweekendsmovies\.com',
|
3939 |
'unassigned\.psychz\.net',
|
|
|
|
|
3940 |
'vitamin\-d\-deficiency\-symptoms\.com',
|
3941 |
'vpn\-privacy\.org',
|
3942 |
'watchstock\.com',
|
@@ -3951,11 +3877,11 @@ function wGetSpamRef($referrer,$hostname="") {
|
|
3951 |
);
|
3952 |
foreach($lines as $spammer) {
|
3953 |
if (!empty($spammer)) {
|
3954 |
-
if(preg_match("
|
3955 |
// found it!
|
3956 |
$badhost=true;
|
3957 |
break 1;
|
3958 |
-
} elseif(!empty($hostname) && preg_match(
|
3959 |
$badhost=true;
|
3960 |
break 1;
|
3961 |
}
|
@@ -3965,7 +3891,7 @@ function wGetSpamRef($referrer,$hostname="") {
|
|
3965 |
//# is spam and mark as such...
|
3966 |
if (!$badhost) {
|
3967 |
$lines = array( "allegra", "ambien", "ativan", "blackjack",
|
3968 |
-
"bukakke", "casino","cialis", "celebrex",
|
3969 |
"cumdripping", "cumeating", "cumfilled",
|
3970 |
"cumpussy", "cumsucking", "cumswapping",
|
3971 |
"diazepam", "diflucan", "drippingcum", "eatingcum",
|
@@ -3978,8 +3904,8 @@ function wGetSpamRef($referrer,$hostname="") {
|
|
3978 |
"proscar", "pussycum", "sildenafil", "snowballing",
|
3979 |
"suckingcum", "swappingcum", "swingers",
|
3980 |
"tadalafil", "tigerspice", "tramadol", "ultram-",
|
3981 |
-
"valium", "valtrex", "viagra", "vicodin",
|
3982 |
-
"xanax", "xenical", "xxx-",
|
3983 |
"zoloft", "zovirax", "zanax"
|
3984 |
);
|
3985 |
foreach ($lines as $badreferrer) {
|
@@ -3999,11 +3925,11 @@ function wGetSpamRef($referrer,$hostname="") {
|
|
3999 |
$lines = file($badhostfile,FILE_IGNORE_NEW_LINES);
|
4000 |
foreach($lines as $spammer) {
|
4001 |
if (!empty($spammer)) {
|
4002 |
-
if (preg_match("
|
4003 |
// found it!
|
4004 |
$badhost=true;
|
4005 |
break 1;
|
4006 |
-
} elseif(!empty($hostname) && preg_match("
|
4007 |
$badhost=true;
|
4008 |
break 1;
|
4009 |
}
|
@@ -4037,20 +3963,20 @@ function export_wassup() {
|
|
4037 |
global $wpdb, $wassup_options;
|
4038 |
|
4039 |
if (empty($wassup_options->wassup_table)) {
|
4040 |
-
$
|
4041 |
} else {
|
4042 |
-
$
|
4043 |
}
|
4044 |
$filename = 'wassup.' . gmdate('Y-m-d') . '.sql';
|
4045 |
|
4046 |
//# check for records before exporting...
|
4047 |
-
$numrecords = $wpdb->get_var("SELECT COUNT(wassup_id) FROM $
|
4048 |
if ( $numrecords > 0 ) {
|
4049 |
if ($numrecords > 10000) {
|
4050 |
//...could take a long time, so run in background in case browser times out
|
4051 |
ignore_user_abort(1);
|
4052 |
}
|
4053 |
-
$exportdata=backup_table("$
|
4054 |
|
4055 |
if ($exportdata) {
|
4056 |
//TODO: use compressed file transfer when zlib available...
|
@@ -4060,7 +3986,7 @@ function export_wassup() {
|
|
4060 |
header('Content-Type: text/plain charset=' . get_option('blog_charset'), true);
|
4061 |
|
4062 |
// Function is below
|
4063 |
-
//backup_table($
|
4064 |
echo $exportdata;
|
4065 |
|
4066 |
die(); //sends output and flushes buffer
|
@@ -4206,10 +4132,21 @@ function microtime_float() { //replicates microtime(true) from PHP5
|
|
4206 |
}
|
4207 |
}
|
4208 |
|
4209 |
-
// hook function to put a timestamp in page footer
|
4210 |
function wassup_foot() {
|
4211 |
global $wassup_options, $wassupversion, $debug_mode;
|
4212 |
if ($wassup_options->wassup_active == "1") {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4213 |
//Output a comment with a current timestamp to verify that page is not cached (i.e. visit is being recorded).
|
4214 |
echo "<!--\n<p class=\"small\"> WassUp $wassupversion ".__("timestamp","wassup").": ".date('Y-m-d h:i:sA T')." (".gmdate('h:iA',time()+(get_option('gmt_offset')*3600)).")<br />\n";
|
4215 |
echo __("If above timestamp is not current time, this page is cached","wassup").".</p> -->\n";
|
@@ -4217,7 +4154,7 @@ function wassup_foot() {
|
|
4217 |
}
|
4218 |
|
4219 |
/**
|
4220 |
-
*
|
4221 |
* -Helene D. 2010-04-27
|
4222 |
* @param array
|
4223 |
* @return none
|
@@ -4248,7 +4185,7 @@ function wassup_scheduled_dbtask($dbtask) {
|
|
4248 |
|
4249 |
// Security functions
|
4250 |
/**
|
4251 |
-
*
|
4252 |
* @param none
|
4253 |
* @return boolean
|
4254 |
* @author Helene D.
|
@@ -4284,8 +4221,8 @@ function wassup_widget($wargs) {
|
|
4284 |
$wassup_settings = get_option('wassup_settings');
|
4285 |
$wpurl = get_bloginfo('wpurl');
|
4286 |
$blogurl = get_bloginfo('home');
|
4287 |
-
$
|
4288 |
-
$table_tmp_name = $
|
4289 |
if ($wassup_settings['wassup_widget_title'] != "") $title = $wassup_settings['wassup_widget_title']; else $title = "Visitors Online";
|
4290 |
if ($wassup_settings['wassup_widget_ulclass'] != "") $ulclass = $wassup_settings['wassup_widget_ulclass']; else $ulclass = "links";
|
4291 |
if ($wassup_settings['wassup_widget_chars'] != "") $chars = $wassup_settings['wassup_widget_chars']; else $chars = "18";
|
@@ -4536,8 +4473,8 @@ function wassup_sidebar($before_widget='', $after_widget='', $before_title='', $
|
|
4536 |
$wpurl = get_bloginfo('wpurl');
|
4537 |
$blogurl = get_bloginfo('home');
|
4538 |
$wassup_settings = get_option('wassup_settings');
|
4539 |
-
$
|
4540 |
-
$table_tmp_name = $
|
4541 |
if ($wtitle != "") $title = $wtitle; else $title = "Visitors Online";
|
4542 |
if ($wulclass != "") $ulclass = $wulclass; else $ulclass = "links";
|
4543 |
if ($wchars != "") $chars = $wchars; else $chars = "18";
|
@@ -4545,9 +4482,6 @@ function wassup_sidebar($before_widget='', $after_widget='', $before_title='', $
|
|
4545 |
if ($wreflimit != "") $reflimit = $wreflimit; else $reflimit = "5";
|
4546 |
if ($wtopbrlimit != "") $topbrlimit = $wtopbrlimit; else $topbrlimit = "5";
|
4547 |
if ($wtoposlimit != "") $toposlimit = $wtoposlimit; else $toposlimit = "5";
|
4548 |
-
//$table_name = $wpdb->prefix . "wassup";
|
4549 |
-
//$table_tmp_name = $wpdb->prefix . "wassup_tmp";
|
4550 |
-
//$wassup_settings = get_option('wassup_settings');
|
4551 |
$to_date = current_time('timestamp');
|
4552 |
$from_date = strtotime('-3 minutes', $to_date);
|
4553 |
|
@@ -4645,11 +4579,11 @@ function wassup_sidebar($before_widget='', $after_widget='', $before_title='', $
|
|
4645 |
// function to print out a chart's preview in the dashboard for WP < 2.7 //moved
|
4646 |
function wassupDashChart() {
|
4647 |
global $wpdb, $wassup_options;
|
4648 |
-
$
|
4649 |
if ($wassup_options->wassup_dashboard_chart == 1) {
|
4650 |
$chart_type = ($wassup_options->wassup_chart_type >0)? $wassup_options->wassup_chart_type: "2";
|
4651 |
$to_date = current_time("timestamp");
|
4652 |
-
$Chart = New MainItems($
|
4653 |
$chart_url = $Chart->TheChart(1, "400", "125", "", $chart_type, "bg,s,efebef|c,lg,90,edffff,0,efebef,0.8", "dashboard"); ?>
|
4654 |
<h3>WassUp <?php _e('Stats','wassup'); ?> <cite><a href="admin.php?page=<?php echo WASSUPFOLDER; ?>"><?php _e('More','wassup'); ?> »</a></cite></h3>
|
4655 |
<div id="placeholder" align="left">
|
@@ -4662,12 +4596,12 @@ function wassupDashChart() {
|
|
4662 |
function wassup_dashboard_widget_function() {
|
4663 |
global $wpdb, $wassup_options, $user_level;
|
4664 |
|
4665 |
-
$
|
4666 |
-
$table_tmp_name = $
|
4667 |
$to_date = current_time("timestamp");
|
4668 |
$chart_type = ($wassup_options->wassup_chart_type >0)? $wassup_options->wassup_chart_type: "2";
|
4669 |
$res = ((int)$wassup_options->wassup_screen_res-160)/2;
|
4670 |
-
$Chart = New MainItems($
|
4671 |
$chart_url = $Chart->TheChart(1, $res, "180", "", $chart_type, "bg,s,efebef|c,lg,90,edffff,0,eae9e9,0.8", "dashboard");
|
4672 |
$max_char_len= 40;
|
4673 |
$wpurl = get_bloginfo('wpurl');
|
2 |
/*
|
3 |
Plugin Name: WassUp
|
4 |
Plugin URI: http://www.wpwp.org
|
5 |
+
Description: Analyze your visitors traffic with real-time stats, charts, and a lot of chronological information. Includes a sidebar widget of current online visitors and other statistics and an admin dashboard widget with chart. For Wordpress 2.2 or higher. Caution: don't upgrade when your site is busy!
|
6 |
+
Version: 1.8.2
|
7 |
Author: Michele Marcucci, Helene Duncker
|
8 |
Author URI: http://www.michelem.org/
|
9 |
Disclaimer: Use at your own risk. No warranty expressed or implied is provided.
|
23 |
}
|
24 |
//wassup globals & constants
|
25 |
global $wp_version, $current_user, $user_level, $wassup_options;
|
26 |
+
$wassupversion="1.8.2";
|
27 |
$wassup_cookie_value="";
|
28 |
$debug_mode=false; //turn on debugging (global)...Use cautiously! Will display errors from all plugins, not just WassUp
|
29 |
define('WASSUPDIR', dirname(__FILE__)); //new constant in v1.8
|
32 |
require_once(WASSUPDIR.'/lib/main.php');
|
33 |
include_once(WASSUPDIR.'/lib/uadetector.class.php');
|
34 |
|
|
|
|
|
|
|
35 |
//WassUp works only in WP2.2 or higher
|
36 |
if (version_compare($wp_version, '2.2', '<')) {
|
37 |
if (function_exists('deactivate_plugins')) {
|
65 |
|
66 |
//#Add/update wassup settings in Wordpress options table
|
67 |
$wassup_options = new wassupOptions; //#settings initialized here
|
68 |
+
$wassup_table = (!empty($wassup_options->wassup_table))? $wassup_options->wassup_table : $wpdb->prefix . "wassup";
|
|
|
69 |
|
70 |
//# wassup should not be active during install
|
71 |
$wassup_options->wassup_active = 0;
|
92 |
}
|
93 |
}
|
94 |
if (empty($wassup_options->wassup_table)) {
|
95 |
+
$wassup_options->wassup_table = $wassup_table;
|
96 |
}
|
97 |
+
//wassup_cache for caching of charts and geoip data
|
98 |
//...wassup_cache automatically disabled for pre-1.8 wassup users
|
99 |
if (!empty($wassup_options->wassup_version) && version_compare($wassup_options->wassup_version,'1.8','<')) {
|
100 |
$wassup_options->wassup_cache = 0; //disabled
|
109 |
echo "file: ".WASSUPDIR.'/lib/upgrade.php does not exist!';
|
110 |
exit (1);
|
111 |
}
|
112 |
+
$success = @wassup_tableInstaller();
|
113 |
//double-check that main table was installed
|
114 |
+
$wassup_table = (!empty($wassup_options->wassup_table))? $wassup_options->wassup_table : $wpdb->prefix . "wassup";
|
115 |
+
if ($wpdb->get_var("SHOW TABLES LIKE '$wassup_table'") == $wassup_table){
|
116 |
+
//Reset 'dbengine' MySQL setting with each upgrade...because host server settings can change
|
117 |
if (!empty($wassup_options->wassup_version)) { //upgrade only
|
118 |
$wassup_options->wassup_dbengine = $wassup_options->getMySQLsetting('engine');
|
119 |
}
|
120 |
+
//turn off wassup_cache if meta table does not exist
|
121 |
+
$wassup_meta_table = $wassup_table . "_meta";
|
122 |
+
if ($wassup_options->wassup_cache == 1) {
|
123 |
+
if ($wpdb->get_var("SHOW TABLES LIKE '$wassup_meta_table'") != $wassup_meta_table) {
|
124 |
+
$wassup_options->wassup_cache = 0;
|
125 |
+
}
|
126 |
}
|
127 |
|
128 |
+
//show warning when 'WP_CACHE' constant is set
|
|
|
129 |
if (wassup_compatCheck("WP_CACHE") == true) {
|
130 |
+
$wassup_options->wassup_alert_message = '<strong style="color:#c00;padding:5px;">'.__("Page caching affect WassUp's ability to generate accurate statistics. If your cache plugin does whole page caching, WassUp won't run properly. Please deactivate that plugin and remove \"WP_CACHE\" from \"wp_config.php\".","wassup").'</strong>';
|
131 |
}
|
132 |
+
//TODO: Show warning when 'wp_footer()' does not exist in active theme template (non-cache setups only)
|
133 |
|
134 |
//#Since v1.7: put current version# in options after update
|
135 |
$wassup_options->wassup_version = $wassupversion;
|
142 |
|
143 |
} else {
|
144 |
//main table not created - exit with error
|
145 |
+
delete_option('wassup_settings');
|
146 |
if (function_exists('deactivate_plugins')) {
|
147 |
deactivate_plugins(__FILE__);
|
148 |
}
|
179 |
remove_action('wp_dashboard_setup', 'wassup_add_dashboard_widgets');
|
180 |
}
|
181 |
//purge wassup tables- WARNING: this is a permanent erase!!
|
182 |
+
$wassup_table = (empty($wassup_settings['wassup_table'])?$wpdb->prefix.'wassup': $wassup_settings['wassup_table']);
|
183 |
+
$table_tmp_name = $wassup_table."_tmp";
|
184 |
+
$table_meta_name = $wassup_table."_meta";
|
185 |
+
//$wpdb->query("DROP TABLE IF EXISTS $wassup_table"); //incorrectly causes an activation error in Wordpress
|
186 |
//$wpdb->query("DROP TABLE IF EXISTS $table_tmp_name"); //incorrectly causes an activation error in Wordpress
|
187 |
mysql_query("DROP TABLE IF EXISTS $table_meta_name");
|
188 |
mysql_query("DROP TABLE IF EXISTS $table_tmp_name");
|
189 |
+
mysql_query("DROP TABLE IF EXISTS $wassup_table");
|
190 |
|
191 |
delete_option('wassup_settings');
|
192 |
}
|
194 |
|
195 |
/**
|
196 |
* Output javascript in page head for wassup tracking
|
|
|
197 |
* @param string (optional);
|
198 |
* @return none;
|
199 |
*/
|
324 |
} // end function wassup_init
|
325 |
|
326 |
//### Wassup Admin functions
|
327 |
+
//For improved WassUp performance, restrict admin hooks and
|
328 |
// admin functions to admin pages only
|
329 |
if (is_admin()) {
|
330 |
|
362 |
echo "\n".'<script type="text/javascript">var tb_pathToImage = "'.WASSUPURL.'/js/thickbox/loadingAnimation.gif";</script>';
|
363 |
echo "\n".'<link rel="stylesheet" href="'.WASSUPURL.'/js/thickbox/thickbox.css'.'" type="text/css" />';
|
364 |
|
365 |
+
if ($_GET['page'] != "wassup-options" AND $_GET['page'] != "wassup-spia") {
|
366 |
+
?>
|
367 |
<script type='text/javascript'>
|
368 |
//<![CDATA[
|
369 |
+
// var selftimerID = 0;
|
370 |
function selfRefresh(){
|
371 |
location.href='?<?php print $_SERVER['QUERY_STRING']; ?>';
|
372 |
}
|
373 |
+
// selftimerID = setTimeout('selfRefresh()', <?php print ($wassup_options->wassup_refresh * 60000)+2000; ?>);
|
374 |
//]]>
|
375 |
</script>
|
376 |
+
<?php //New in 1.8.2: restrict refresh to range 0-180 minutes (3 hrs)
|
377 |
+
$wrefresh = 0;
|
378 |
+
if (!is_numeric($wassup_options->wassup_refresh) || $wassup_options->wassup_refresh < 0 || $wassup_options->wassup_refresh > 180) {
|
379 |
+
$wrefresh = 3; //3 minutes default;
|
380 |
+
} else {
|
381 |
+
$wrefresh = (int) $wassup_options->wassup_refresh;
|
382 |
+
}
|
383 |
+
//always refresh wassup-online page every 1-3 mins
|
384 |
+
if ($_GET['page'] == "wassup-online" && ($wrefresh > 3 || $wrefresh < 1)) {
|
385 |
+
$wrefresh = 3;
|
386 |
+
}
|
387 |
|
388 |
+
//don't add refresh timer javascript if refresh==0
|
389 |
+
if ($wrefresh > 0) {
|
390 |
+
echo "\n"; ?>
|
391 |
<script type='text/javascript'>
|
392 |
//<![CDATA[
|
393 |
+
var selftimerID = 0;
|
394 |
var _countDowncontainer="0";
|
395 |
var _currentSeconds=0;
|
396 |
var paused = " *<?php _e('paused','wassup'); ?>* ";
|
421 |
function AddZero(num) {
|
422 |
return ((num >= "0")&&(num < 10))?"0"+num:num+"";
|
423 |
}
|
424 |
+
selftimerID = setTimeout('selfRefresh()', <?php print ($wrefresh * 60000)+2000; ?>);
|
425 |
//]]>
|
426 |
</script>
|
427 |
<script type="text/javascript">
|
428 |
//<![CDATA[
|
429 |
window.onload=WindowLoad;
|
430 |
function WindowLoad(event) {
|
431 |
+
ActivateCountDown("CountDownPanel", <?php print ($wrefresh * 60); ?>);
|
432 |
}
|
433 |
//]]>
|
434 |
</script>
|
435 |
+
<?php } //end if $wrefresh > 0
|
436 |
+
?>
|
437 |
<script type="text/javascript">
|
438 |
//<![CDATA[
|
439 |
jQuery(document).ready(function($){
|
526 |
$("a.toggle-allcrono").html("<a href='#' class='toggle-allcrono boxed'><?php _e("Collapse Chronology", "wassup") ?></a>");
|
527 |
return false;
|
528 |
});
|
529 |
+
<?php
|
530 |
+
//don't add refresh timer click function if refresh==0
|
531 |
+
if ($wrefresh > 0) { ?>
|
532 |
$("#CountDownPanel").click(function(){ //Pause|Resume countdown
|
533 |
var timeleft = _currentSeconds*1000;
|
534 |
if (tickerID != 0) {
|
543 |
$(this).css('color','#555');
|
544 |
}
|
545 |
});
|
546 |
+
<?php } //end if $wrefresh > 0 (2nd)
|
547 |
+
?>
|
548 |
}); //end jQuery(document).ready
|
549 |
//]]>
|
550 |
</script>
|
648 |
add_submenu_page(WASSUPFOLDER, __('Visitor Details', 'wassup'), __('Visitor Details', 'wassup'), $userlevel, WASSUPFOLDER); //<-- WASSUPFOLDER needed here for directory names that include a version number...
|
649 |
add_submenu_page(WASSUPFOLDER, __('Spy Visitors', 'wassup'), __('SPY Visitors', 'wassup'), $userlevel, 'wassup-spia', 'WassUp');
|
650 |
add_submenu_page(WASSUPFOLDER, __('Current Visitors Online', 'wassup'), __('Current Visitors Online', 'wassup'), $userlevel, 'wassup-online', 'WassUp');
|
651 |
+
//only admins can change WassUp options, so userlevel is always 8
|
652 |
add_submenu_page(WASSUPFOLDER, __('Options', 'wassup'), __('Options', 'wassup'), 8, 'wassup-options', 'WassUp');
|
653 |
|
654 |
+
//add Wassup Stats submenu on WP2.7+ dashboard menu
|
655 |
+
//add "settings" to action links on "plugins" page
|
656 |
if (version_compare($wp_version, '2.5', '>=')) {
|
657 |
if (version_compare($wp_version, '2.7', '>=')) {
|
658 |
add_submenu_page('index.php', __('WassUp Stats'), __('WassUp Stats'), $userlevel, 'wassup-stats', 'WassUp');
|
702 |
//for generating page link urls....
|
703 |
$wpurl = get_bloginfo('wpurl');
|
704 |
$blogurl = get_bloginfo('home');
|
705 |
+
$wassup_table = (!empty($wassup_options->wassup_table)? $wassup_options->wassup_table: $wpdb->prefix . "wassup");
|
706 |
+
$table_tmp_name = $wassup_table."_tmp";
|
707 |
|
708 |
//"action_param" are preassigned "GET" parameters used for "action.php" external/ajax calls like "top ten"
|
709 |
$action_param='&whash='.$wassup_options->whash;
|
737 |
} elseif ($_POST['delete_filter_manual'] =="spam"){
|
738 |
$delete_condition .= " AND spam>0";
|
739 |
}
|
740 |
+
$wpdb->query("DELETE FROM $wassup_table WHERE $delete_condition");
|
741 |
$affected_recs = $wpdb->rows_affected + 0;
|
742 |
+
//$wpdb->query("OPTIMIZE TABLE $wassup_table"); //table already optimized daily
|
743 |
}
|
744 |
if ($affected_recs > 0) {
|
745 |
$admin_message = $affected_recs." ".__("records deleted successfully","wassup")."." ;
|
763 |
} elseif ($_POST['delete_filter'] =="spam"){
|
764 |
$delete_condition .= " AND spam>0";
|
765 |
}
|
766 |
+
$wpdb->query("DELETE FROM $wassup_table WHERE $delete_condition");
|
767 |
$affected_recs = $wpdb->rows_affected + 0;
|
768 |
if ($affected_recs > 0) {
|
769 |
$admin_message = $affected_recs." ".__("records deleted successfully","wassup")."." ;
|
776 |
} //end if numeric
|
777 |
} //end if delete_auto
|
778 |
if (!empty($_POST['wassup_empty'])) {
|
779 |
+
$wpdb->query("DELETE FROM $wassup_table");
|
780 |
if ($affected_recs > 0) {
|
781 |
$affected_recs = $wpdb->rows_affected + 0;
|
782 |
$admin_message = $affected_recs." ".__("records deleted successfully","wassup")."." ;
|
785 |
}
|
786 |
//TODO: "Optimize" operation locks table so it must finish in background to prevent browser close/timeout from interrupting the release of the lock, making it permanent.
|
787 |
//if ($affected_recs > 1000) {
|
788 |
+
// $wpdb->query("OPTIMIZE TABLE $wassup_table");
|
789 |
//}
|
790 |
$wassup_options->saveSettings();
|
791 |
}
|
822 |
$wassup_options->delete_filter = $_POST['delete_filter'];
|
823 |
}
|
824 |
$wassup_options->wassup_screen_res = $_POST['wassup_screen_res'];
|
825 |
+
//validate wassup_refresh option input
|
826 |
+
if (is_numeric($_POST['wassup_refresh']) && $_POST['wassup_refresh']>=0 && $_POST['wassup_refresh']<=180) {
|
827 |
+
$wassup_options->wassup_refresh = (int)$_POST['wassup_refresh'];
|
828 |
+
}
|
829 |
+
|
830 |
+
$wassup_options->wassup_userlevel = (int)$_POST['wassup_userlevel'];
|
831 |
$wassup_options->wassup_dashboard_chart = $_POST['wassup_dashboard_chart'];
|
832 |
$wassup_options->wassup_geoip_map = $_POST['wassup_geoip_map'];
|
833 |
if (!empty($_POST['wassup_googlemaps_key'])) { //don't clear geoip key
|
942 |
echo "\n"; ?>
|
943 |
<ul id="wassup-menu">
|
944 |
<li class="wassup-menu-link <?php echo $class_opt; ?>"><?php
|
945 |
+
//only administrators can view "wassup-options"
|
946 |
if ($user_level >= 8) {
|
947 |
echo '<a href="'.admin_url("admin.php?page=wassup-options").'">'.__('Options','wassup').'</a>';
|
948 |
} else {
|
1142 |
//display last few hits here. rest will be added by spia.js
|
1143 |
$to_date = current_time('timestamp');
|
1144 |
$from_date = ($to_date - 12*(60*60)); //display last 10 visits in 12 hours...
|
1145 |
+
wassup_spiaView($from_date,0,$spytype,$wassup_table); ?>
|
1146 |
<p style="height:2px;clear:both;"></p>
|
1147 |
</div><!-- /spyContainer -->
|
1148 |
<br />
|
1261 |
// DELETE EVERY RECORD MARKED BY IP
|
1262 |
//# Delete limited to selected date range only. -Helene D. 3/4/08.
|
1263 |
if (!empty($_GET['deleteMARKED']) && $wassup_options->wmark == "1" && !empty($_GET['dip'])) {
|
1264 |
+
$del_count = $wpdb->get_var("SELECT COUNT(ip) as deleted FROM $wassup_table WHERE ip='".attribute_escape($_GET['dip'])."' AND `timestamp` BETWEEN $from_date AND $to_date");
|
1265 |
if (method_exists($wpdb,'prepare')) {
|
1266 |
+
$wpdb->query($wpdb->prepare("DELETE FROM $wassup_table WHERE ip='%s' AND `timestamp` BETWEEN %s AND %s", $_GET['dip'], $from_date, $to_date));
|
1267 |
} else {
|
1268 |
+
$wpdb->query("DELETE FROM $wassup_table WHERE ip='".attribute_escape($_GET['dip'])."' AND `timestamp` BETWEEN $from_date AND $to_date");
|
1269 |
}
|
1270 |
+
$rec_count = $wpdb->get_var("SELECT COUNT(ip) as deleted FROM $wassup_table WHERE ip='".attribute_escape($_GET['dip'])."' AND `timestamp` BETWEEN $from_date AND $to_date"); //double-check deletions
|
1271 |
$rec_deleted = ($del_count - $rec_count)." ".__('records deleted','wassup');
|
1272 |
$wassup_options->showMessage($rec_deleted);
|
1273 |
//echo '<p><strong>'.$rec_deleted.' '.__('records deleted','wassup').'</strong></p>';
|
1280 |
echo "<!--heartbeat-->\n";
|
1281 |
|
1282 |
// Instantiate class to count items
|
1283 |
+
$Tot = New MainItems($wassup_table,$from_date,$to_date,$whereis,$limit);
|
1284 |
$Tot->whereis = $whereis;
|
1285 |
$Tot->Limit = $limit;
|
1286 |
$Tot->WpUrl = $wpurl;
|
1409 |
<td align="left" width="28">
|
1410 |
<a href="#" onclick='selfRefresh()'><img src="<?php echo WASSUPURL; ?>/img/reload.png" id="refresh" alt="refresh screen" title="Refresh screen" /></a></td>
|
1411 |
<td class="legend" align="left"><?php
|
1412 |
+
echo __('Auto refresh in','wassup').' <span id="CountDownPanel">00</span> '.__('seconds','wassup');
|
1413 |
+
echo '<br/>';
|
1414 |
// Marked items - Refresh
|
1415 |
if ($wassup_options->wmark == 1) {
|
1416 |
echo ' <a href="?'.attribute_escape($URLQuery.'&search='.$wassup_options->wip).'" title="'.__('Filter by marked IP','wassup').'"> '.__('Show marked items','wassup').' (<strong>'.$markedtot.'</strong> '.__("total").')</a> ';
|
1445 |
<div class="search-ip" <?php if (empty($search)) echo 'style="display: none;"'; ?>>
|
1446 |
<form action="" method="get">
|
1447 |
<input type="hidden" name="page" value="<?php echo WASSUPFOLDER; ?>" /><?php
|
1448 |
+
if (!empty($stickyFilters)) {
|
1449 |
+
$wfilterargs=wGetQueryPairs($stickyFilters);
|
1450 |
+
if (!empty($wfilterargs)) {
|
1451 |
+
foreach ($w_filterargs AS $wfilter) {
|
1452 |
+
$wfilterval=explode('=',$wfilter);
|
1453 |
+
if (!empty($wfilterval[0]) && $wfilterval[0]!= 'type') { ?>
|
1454 |
+
<input type="hidden" name="<?php echo $wfilterval[0].'" value="'.$wfilterval[1]; ?>" /><?php
|
1455 |
}
|
1456 |
}
|
1457 |
+
} } ?>
|
1458 |
<input type="text" size="25" name="search" value="<?php if ($search != "") print attribute_escape($search); ?>" /><input type="submit" name="submit-search" value="search" />
|
1459 |
</form>
|
1460 |
</div> <!-- /search-ip -->
|
1492 |
}
|
1493 |
if ($rk->hostname != "") $hostname = $rk->hostname;
|
1494 |
else $hostname = "unknown";
|
1495 |
+
//$numurl = $wpdb->get_var("SELECT COUNT(DISTINCT id) as numurl FROM $wassup_table WHERE wassup_id='".$rk->wassup_id."'");
|
1496 |
$numurl = (int) $rk->page_hits;
|
1497 |
echo "\n";
|
1498 |
?>
|
1654 |
// Referer is a Spider or Bot
|
1655 |
if ($rk->spider != "") {
|
1656 |
if ($rk->feed != "") { ?>
|
1657 |
+
<ul class="spider feed">
|
1658 |
<li class="feed"><span class="indent-li-agent"><?php _e('FEEDREADER','wassup'); ?>: <strong><a href="#" class="toggleagent" id="<?php echo $rk->id; ?>"><?php print $rk->spider; ?></a></strong></span></li>
|
1659 |
<?php if (is_numeric($rk->feed)) { ?>
|
1660 |
<li class="feed"><span class="indent-li-agent"><?php _e('SUBSCRIBER(S)','wassup'); ?>: <strong><?php print (int)$rk->feed; ?></strong></span></li>
|
1710 |
<ul class="url"><?php
|
1711 |
if ($numurl > 1) {
|
1712 |
//Important Note: list of urls visited is affected by browsers like Safari 4 which hits a page from both the user window and from it's "top sites" page, creating multiple duplicate records with distinct id's...
|
1713 |
+
//$qryCD = $wpdb->get_results("SELECT `timestamp`, urlrequested FROM $wassup_table WHERE wassup_id='".$rk->wassup_id."' ORDER BY `timestamp`"); //duplicates possible
|
1714 |
+
$qryCD = $wpdb->get_results("SELECT DISTINCT `timestamp`, urlrequested, agent FROM $wassup_table WHERE wassup_id='".$rk->wassup_id."' ORDER BY `timestamp`"); //no duplication, unless agent is differnt
|
1715 |
+
//$qryCD = $wpdb->get_results("SELECT `id`, `timestamp`, urlrequested FROM $wassup_table WHERE wassup_id='".$rk->wassup_id."' ORDER BY `id`"); //id is sequential, so sort order == visit order...UPDATE: may not be in visit order because 'insert delayed' could make `id` out of sync with `timestamp`
|
1716 |
$i=1;
|
1717 |
$char_len = round($max_char_len*.92,0);
|
1718 |
foreach ($qryCD as $cd) {
|
1795 |
<?php
|
1796 |
} //end function Wassup
|
1797 |
|
1798 |
+
//Since v.1.8: createTable/upgradeTable functions were moved to
|
1799 |
+
// 'upgrade.php' module where they are loaded only when needed to keep
|
1800 |
+
// WassUp fast
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1801 |
} //end if is_admin
|
1802 |
|
1803 |
//### Wassup Tracking functions
|
2031 |
}
|
2032 |
} else {
|
2033 |
//do only fatal error reporting
|
2034 |
+
// note: this won't work if PHP in safe mode
|
2035 |
$errlvl = @error_reporting();
|
2036 |
if (!empty($errlvl)) {
|
2037 |
@error_reporting(E_ERROR);
|
2040 |
|
2041 |
$wpurl = get_bloginfo('wpurl');
|
2042 |
$blogurl = get_option('home');
|
2043 |
+
$wassup_table = (!empty($wassup_options->wassup_table)?$wassup_options->wassup_table:$wpdb->prefix."wassup");
|
2044 |
+
$table_tmp_name = $wassup_table . "_tmp";
|
2045 |
+
$table_cache = $wassup_table."_meta";
|
2046 |
$wassup_rec = "";
|
2047 |
$wassup_dbtask=array(); //for scheduled db operations
|
2048 |
|
2245 |
// and get previous settings to prevent redundant checks on same
|
2246 |
// visitor. Dup==same wassup_id, same URL, and timestamp <180 secs
|
2247 |
$dup_urlrequest=0;
|
2248 |
+
$w_pageviews=0;
|
2249 |
$spamresult=0;
|
2250 |
$wpdb->query("SET wait_timeout = 7"); //don't wait for slow responses
|
2251 |
$recent = $wpdb->get_results("SELECT wassup_id, urlrequested, spam, screen_res, `timestamp`, browser, spider, os, feed, `language`, `agent`, `referrer` FROM ".$table_tmp_name." WHERE wassup_id='".$wassup_id."' AND `timestamp` >".($timestamp-180)." ORDER BY `timestamp` DESC");
|
2252 |
if (!empty($recent)) {
|
2253 |
+
$w_pageviews=count($recent);
|
2254 |
//check 1st record only
|
2255 |
//record is dup if same url (with 'wscr' removed) and same user-agent
|
2256 |
if ($recent[0]->urlrequested == $urlRequested || $recent[0]->urlrequested == remove_query_arg('wscr',$urlRequested) || $recent[0]->urlrequested == "[404] $urlRequested") {
|
2268 |
//check for screen resolution and update, if not previously recorded
|
2269 |
//...queue the update because of "delayed insert"
|
2270 |
if (empty($recent[0]->screen_res) && !empty($screen_res)) {
|
2271 |
+
$wassup_dbtask[] = "UPDATE $wassup_table SET `screen_res`='$screen_res' WHERE `wassup_id`='$wassup_id' AND `screen_res`='' ";
|
2272 |
}
|
2273 |
|
2274 |
//get previously recorded settings for this visitor to
|
2295 |
}
|
2296 |
// Detect disguised spiders and harvesters by checking for
|
2297 |
// excessive pageviews (threshold: 8+ views in < 16 secs)
|
2298 |
+
if ($w_pageviews >7 && empty($spider)) {
|
2299 |
$visitstart = $recent[7]->timestamp;
|
2300 |
if (($timestamp - $recent[7]->timestamp) < 16) {
|
2301 |
$is_spider=true;
|
2302 |
$pagetest[]="$urlRequested";
|
2303 |
//a spider is unlikely to hit same page 2+ times
|
2304 |
+
foreach ($recent AS $w_pgview) {
|
2305 |
+
if (stristr($w_pgview->urlrequested,"robots.txt")!==false) {
|
2306 |
$is_spider = true;
|
2307 |
break;
|
2308 |
+
} elseif (in_array($w_pgview->urlrequested,$pagetest)) {
|
2309 |
$is_spider = false;
|
2310 |
break;
|
2311 |
} else {
|
2312 |
+
$pagetest[] = $w_pgview->urlrequested;
|
2313 |
}
|
2314 |
}
|
2315 |
if ($is_spider) {
|
2316 |
$spider = __("Unknown Spider","wassup");
|
2317 |
+
$wassup_dbtask[] = "UPDATE $wassup_table SET `spider`='$spider' WHERE `wassup_id`='$wassup_id' AND `spider`=''";
|
2318 |
}
|
2319 |
}
|
2320 |
}
|
2353 |
}
|
2354 |
//retroactively update record for hack attempt
|
2355 |
if ($spam == "3" && $spamresult == "0" && !empty($recent)) {
|
2356 |
+
$wassup_dbtask[] = "UPDATE $wassup_table SET `spam`='3' WHERE `wassup_id`='$wassup_id' AND `spam`='0' ";
|
2357 |
}
|
2358 |
|
2359 |
//# Exclude duplicates and avoid redundant checks on multi-page visits
|
2475 |
if ($spamComment->isRefSpam($referrer)>0) {
|
2476 |
$spam = 2;
|
2477 |
//check referer against a list of known spammers
|
2478 |
+
} else {
|
2479 |
+
if ($debug_mode) {
|
2480 |
+
$isspam = wGetSpamRef($referrer,$hostname);
|
2481 |
+
} else {
|
2482 |
+
$isspam = @wGetSpamRef($referrer,$hostname);
|
2483 |
+
}
|
2484 |
+
if ($isspam) $spam = 2;
|
2485 |
}
|
2486 |
}
|
2487 |
}
|
2499 |
if ($spammerIP > 0) { //is previous comment spam
|
2500 |
$spam = 1;
|
2501 |
}
|
2502 |
+
//set as spam if both URL and referrer are "comment" and browser is obsolete or Opera
|
2503 |
if ($spam== 0 && $wassup_options->wassup_spam==1 && stristr($urlRequested,"comment")!== FALSE && stristr($referrer,"#comment")!==FALSE && (stristr($browser,"opera")!==FALSE || preg_match('/^(AOL|Netscape|IE)\s[1-6]$/',$browser)>0)) {
|
2504 |
$spam=1;
|
2505 |
}
|
2536 |
//retroactively update visitor's hits as spam, in case late detection
|
2537 |
if (!empty($recent) && !empty($spam) && $spamresult==0) {
|
2538 |
//queue the update...
|
2539 |
+
$wassup_dbtask[]="UPDATE $wassup_table SET `spam`='".$spam."' WHERE `wassup_id`='".$wassup_id."' AND `spam`='0' ";
|
2540 |
}
|
2541 |
|
2542 |
} //end if spam == 0
|
2632 |
'url_wpid'=>$post_ID);
|
2633 |
|
2634 |
// Insert the record into the db
|
2635 |
+
insert_into_wp($wassup_table, $wassup_rec);
|
2636 |
// Insert the record into the wassup_tmp table too
|
2637 |
insert_into_wp($table_tmp_name, $wassup_rec);
|
2638 |
// Delete records older then 3 minutes
|
2663 |
if ($wassup_options->wassup_remind_flag == 1) {
|
2664 |
// check database size ~every 5 minutes to keep wassup fast...
|
2665 |
if ( (time())%299 == 0 ) {
|
2666 |
+
$table_status = $wpdb->get_results("SHOW TABLE STATUS LIKE '$wassup_table'");
|
2667 |
foreach ($table_status as $fstatus) {
|
2668 |
$data_lenght = $fstatus->Data_length;
|
2669 |
}
|
2701 |
}
|
2702 |
}
|
2703 |
//#check before doing delete as it locks the table...
|
2704 |
+
if ((int)$wpdb->get_var("SELECT COUNT(id) FROM $wassup_table WHERE $delete_condition") > 0) {
|
2705 |
+
$wassup_dbtask[] = "DELETE FROM $wassup_table WHERE $delete_condition";
|
2706 |
}
|
2707 |
}
|
2708 |
}
|
2716 |
if ($timestamp > ($wassup_options->wassup_optimize+24*3600) && count($wassup_dbtask)==0) {
|
2717 |
$wassup_options->wassup_optimize = current_time('timestamp');
|
2718 |
$wassup_options->saveSettings();
|
2719 |
+
$wassup_dbtask[] = "OPTIMIZE TABLE $wassup_table ";
|
2720 |
}
|
2721 |
}
|
2722 |
|
2950 |
$lines = array(
|
2951 |
"Google Images|images.google.|prev|start|hl||", //obsolete
|
2952 |
"Google Images|/imgres?imgurl=|prev|start|hl||",
|
2953 |
+
"Google Images|.google.com/images?|q|cd|hl||",
|
2954 |
+
"Google Mobile|google.com/m/|q|cd|hl||",
|
2955 |
"Google|www.google.|q|cd|hl||",
|
2956 |
"Google|www.google.|as_q|start|hl||", //advanced query
|
2957 |
"Yahoo Images|images.search.yahoo.com|p||||",
|
3105 |
$searchengine = $nome;
|
3106 |
} //end if preg_match
|
3107 |
} //end foreach
|
3108 |
+
//search engine or key is not in list, so check for search phrase instead
|
3109 |
if (empty($search_phrase) && !empty($referrer)) {
|
3110 |
//unset($nome,$domain,$key,$page,$lang);
|
3111 |
|
3112 |
//Check for general search phrases
|
3113 |
+
if (preg_match("#^https?://([^/]+).*[&?](q|search|searchfor|as_q|as_epq|query|keywords?|term|text|encquery)=([^&]+)#i",$referrer,$pcs) > 0) {
|
3114 |
if (empty($searchengine)) {
|
3115 |
$searchengine = trim(strtolower($pcs[1]));
|
3116 |
}
|
3121 |
}
|
3122 |
|
3123 |
//Check separately for queries that use nonstandard search variable
|
3124 |
+
// to avoid retrieving values like "p=parameter" when "q=query" exists
|
3125 |
+
} elseif(preg_match("#^https?://([^/]+).*(?:results|search|query).*[&?](aq|as|p|su|s|kw|k|qo|qp|qs|string)=([^&]+)#i",$referrer,$pcs) > 0) {
|
3126 |
if (empty($searchengine)) {
|
3127 |
$searchengine = trim(strtolower($pcs[1]));
|
3128 |
}
|
3132 |
|
3133 |
//do a separate check for page number, if not found above
|
3134 |
if (!empty($search_phrase)) {
|
3135 |
+
if (empty($searchpage) && preg_match("#[&\?](start|startpage|b|cd|first|stq|p|pi|page)[=/](\d+)#i",$referrer,$pcs)>0) {
|
3136 |
$searchpage = $pcs[2];
|
3137 |
}
|
3138 |
}
|
3311 |
//Note: spaces are removed from UA string for the bot comparison
|
3312 |
$crawler = trim($crawler);
|
3313 |
if (empty($crawler)) {
|
3314 |
+
$uagent=str_replace(" ","",$ua);
|
3315 |
$key = null;
|
3316 |
// array format: "Spider Name|UserAgent keywords (no spaces)| Spider type (R=robot, B=Browser/downloader, F=feedreader, H=hacker, L=Link checker, M=siteMap generator, S=Spammer/email harvester, V=CSS/Html validator)
|
3317 |
$lines = array("Googlebot|Googlebot/|R|",
|
3376 |
"Google Images|Googlebot-Image|R|",
|
3377 |
"Google AdSense|Mediapartners-Google|R|",
|
3378 |
"Google Desktop|GoogleDesktop|F|",
|
3379 |
+
"Google Web Preview|GoogleWebPreview|R|",
|
3380 |
"GreatNews|GreatNews|F|",
|
3381 |
"Gregarius|Gregarius/|F|",
|
3382 |
"Gromit|Gromit/||",
|
3595 |
foreach($lines as $line_num => $spider) {
|
3596 |
list($nome,$key,$crawlertype)=explode("|",$spider);
|
3597 |
if ($key != "") {
|
3598 |
+
if(strstr($uagent,$key)===FALSE) {
|
3599 |
continue;
|
3600 |
} else {
|
3601 |
$crawler = trim($nome);
|
3653 |
|
3654 |
//#get the visitor locale/language
|
3655 |
function wGetLocale($language="",$hostname="",$referrer="") {
|
3656 |
+
global $wpdb, $wassup_options, $debug_mode;
|
3657 |
$clocale="";
|
3658 |
$country="";
|
3659 |
$language = trim(strtolower($language));
|
3737 |
|
3738 |
/**
|
3739 |
* Check referrer host (or visitor hostname) against a list of known
|
3740 |
+
* referrer spammers and return "true" if match or if faked
|
3741 |
* @param string (2)
|
3742 |
* @return boolean
|
3743 |
*/
|
3744 |
function wGetSpamRef($referrer,$hostname="") {
|
3745 |
+
global $debug_mode;
|
3746 |
$referrer=attribute_escape(strip_tags(str_replace(" ","",html_entity_decode($referrer))));
|
3747 |
+
$badhost=false;
|
3748 |
+
//$key = null;
|
3749 |
$referrer_host = "";
|
3750 |
$referrer_path = "";
|
3751 |
+
|
3752 |
if (empty($referrer) && !empty($hostname)) {
|
3753 |
$referrer_host = $hostname;
|
3754 |
$hostname="";
|
3755 |
+
} elseif (!empty($referrer)) {
|
3756 |
+
$rurl = parse_url(strtolower($referrer));
|
3757 |
+
if (isset($rurl['host'])) {
|
3758 |
+
$referrer_host = $rurl['host'];
|
3759 |
+
//$referrer_path = $rurl['path'];
|
3760 |
+
$thissite = parse_url(get_option('home'));
|
3761 |
+
if (isset($thissite['host']) && $referrer_host == $thissite['host']) {
|
3762 |
+
$referrer_host = "";
|
3763 |
+
}
|
3764 |
+
} else { //faked referrer string
|
3765 |
+
$badhost=true;
|
3766 |
+
}
|
3767 |
+
//#a shortened URL is likely FAKED referrer string!
|
3768 |
+
if (!$badhost && !empty($referrer_host)) {
|
3769 |
+
$url_shorteners = array('bit.ly', 'cli.gs',
|
3770 |
+
'goo.gl', 'is.gd',
|
3771 |
+
'shorturl.com', 'snurl.com',
|
3772 |
+
'tinyurl.com','tr.im');
|
3773 |
+
if(in_array($referrer_host,$url_shorteners)) {
|
3774 |
+
$badhost=true;
|
3775 |
+
}
|
3776 |
+
}
|
3777 |
+
} //end elseif
|
3778 |
+
if (empty($referrer_host) || $badhost) return $badhost;
|
3779 |
+
|
3780 |
+
if ($debug_mode) echo "\$referrer_host = $referrer_host.\n";
|
3781 |
//compare against a list of recent referer spammers
|
3782 |
$lines = array( '123666123\.com',
|
3783 |
'209\.29\.25\.180',
|
3794 |
'blueberryvitamin\.com',
|
3795 |
'bumphero\.com',
|
3796 |
'canadapharm\.atwebpages\.com',
|
3797 |
+
'candy\.com',
|
3798 |
+
'carartexpert\.com',
|
3799 |
'celebritydietdoctor\.com',
|
3800 |
'celebrity\-?diets\.(com|org|net|info|biz)',
|
3801 |
+
'chocolate\.com',
|
3802 |
'clients\.your\-server\.de',
|
3803 |
'couplesresortsonline\.com',
|
3804 |
+
'.*dietplan\.com',
|
3805 |
'dreamworksdentalcenter\.com',
|
3806 |
+
'duunot\.eu',
|
3807 |
'\.ewebesales\.net',
|
3808 |
'exactinsurance\.info',
|
3809 |
'find1friend\.com',
|
3810 |
'freefarmvillesecrets\.info',
|
3811 |
'frenchforbeginnerssite\.com',
|
3812 |
'gameskillinggames\.net',
|
3813 |
+
'globalringtones\.net',
|
3814 |
'gskstudio\.com',
|
3815 |
'h\-13\d\-\d{3}\.cssgroup\.lv',
|
3816 |
'hearcam\.org',
|
3817 |
'highheelsale\.com',
|
3818 |
'homebasedaffiliatemarketingbusiness\.com',
|
3819 |
+
'hosting37\d{2}\.com/',
|
3820 |
'howgrowtall\.(com|info)',
|
3821 |
'insurancebinder\.info',
|
3822 |
'internetserviceteam\.com',
|
3823 |
'intl\-alliance\.com',
|
3824 |
'it\.n\-able\.com',
|
3825 |
'justanimal\.com',
|
3826 |
+
'koreanracinggirls\.com',
|
3827 |
'lactoseintolerancesymptoms\.net',
|
3828 |
+
'liquiddiet[a-z\-]*\.com',
|
3829 |
+
'locksmith[a-z\-]+\.org',
|
3830 |
'lockyourpicz\.com',
|
3831 |
'luia\.ru',
|
3832 |
+
'mydirtyhobbycom\.de',
|
3833 |
'myhealthcare\.com',
|
3834 |
+
'nextcars\.net',
|
3835 |
'odcadide\.iinaa\.net',
|
3836 |
'oma\-chat\-live\.de',
|
3837 |
'onlinemarketpromo\.com',
|
3843 |
'pinkyxxx\.org',
|
3844 |
'play\-mp3\.com',
|
3845 |
'poker\-review\.tk',
|
3846 |
+
'pornobesto\.ru',
|
3847 |
'21[89]\-124\-182\-64\.cust\.propagation\.net',
|
3848 |
'prosperent\-adsense\-alternative\.blogspot\.com',
|
3849 |
'ragedownloads\.info',
|
3850 |
'red\-black\.ru',
|
3851 |
+
'[a-z\-]*ringtone\.net',
|
3852 |
+
'rufights\.com',
|
3853 |
'seoindiawizard\.com',
|
3854 |
'sexcam\-girls\.at',
|
3855 |
'singlesvacationspackages\.com',
|
3861 |
'thik\-chik\.com',
|
3862 |
'thisweekendsmovies\.com',
|
3863 |
'unassigned\.psychz\.net',
|
3864 |
+
'ultrabait\.biz',
|
3865 |
+
'[a-z\-\.]+vigra\-buy\.info',
|
3866 |
'vitamin\-d\-deficiency\-symptoms\.com',
|
3867 |
'vpn\-privacy\.org',
|
3868 |
'watchstock\.com',
|
3877 |
);
|
3878 |
foreach($lines as $spammer) {
|
3879 |
if (!empty($spammer)) {
|
3880 |
+
if(preg_match("#^{$spammer}\$#",$referrer_host)>0) {
|
3881 |
// found it!
|
3882 |
$badhost=true;
|
3883 |
break 1;
|
3884 |
+
} elseif(!empty($hostname) && preg_match('#(^|\.){$spammer}\$#i',$hostname)>0) {
|
3885 |
$badhost=true;
|
3886 |
break 1;
|
3887 |
}
|
3891 |
//# is spam and mark as such...
|
3892 |
if (!$badhost) {
|
3893 |
$lines = array( "allegra", "ambien", "ativan", "blackjack",
|
3894 |
+
"bukakke", "casino","cialis","ciallis", "celebrex",
|
3895 |
"cumdripping", "cumeating", "cumfilled",
|
3896 |
"cumpussy", "cumsucking", "cumswapping",
|
3897 |
"diazepam", "diflucan", "drippingcum", "eatingcum",
|
3904 |
"proscar", "pussycum", "sildenafil", "snowballing",
|
3905 |
"suckingcum", "swappingcum", "swingers",
|
3906 |
"tadalafil", "tigerspice", "tramadol", "ultram-",
|
3907 |
+
"valium", "valtrex", "viagra", "viagara","vicodin",
|
3908 |
+
"xanax", "xenical", "xxx-",
|
3909 |
"zoloft", "zovirax", "zanax"
|
3910 |
);
|
3911 |
foreach ($lines as $badreferrer) {
|
3925 |
$lines = file($badhostfile,FILE_IGNORE_NEW_LINES);
|
3926 |
foreach($lines as $spammer) {
|
3927 |
if (!empty($spammer)) {
|
3928 |
+
if (preg_match("#(^|\.){$spammer}\$#",$referrer_host)>0) {
|
3929 |
// found it!
|
3930 |
$badhost=true;
|
3931 |
break 1;
|
3932 |
+
} elseif(!empty($hostname) && preg_match("#(^|\.){$spammer}\$#i",$hostname)>0) {
|
3933 |
$badhost=true;
|
3934 |
break 1;
|
3935 |
}
|
3963 |
global $wpdb, $wassup_options;
|
3964 |
|
3965 |
if (empty($wassup_options->wassup_table)) {
|
3966 |
+
$wassup_table = $wpdb->prefix . "wassup";
|
3967 |
} else {
|
3968 |
+
$wassup_table = $wassup_options->wassup_table;
|
3969 |
}
|
3970 |
$filename = 'wassup.' . gmdate('Y-m-d') . '.sql';
|
3971 |
|
3972 |
//# check for records before exporting...
|
3973 |
+
$numrecords = $wpdb->get_var("SELECT COUNT(wassup_id) FROM $wassup_table");
|
3974 |
if ( $numrecords > 0 ) {
|
3975 |
if ($numrecords > 10000) {
|
3976 |
//...could take a long time, so run in background in case browser times out
|
3977 |
ignore_user_abort(1);
|
3978 |
}
|
3979 |
+
$exportdata=backup_table("$wassup_table");
|
3980 |
|
3981 |
if ($exportdata) {
|
3982 |
//TODO: use compressed file transfer when zlib available...
|
3986 |
header('Content-Type: text/plain charset=' . get_option('blog_charset'), true);
|
3987 |
|
3988 |
// Function is below
|
3989 |
+
//backup_table($wassup_table);
|
3990 |
echo $exportdata;
|
3991 |
|
3992 |
die(); //sends output and flushes buffer
|
4132 |
}
|
4133 |
}
|
4134 |
|
4135 |
+
// hook function to put a timestamp in page footer for page caching test
|
4136 |
function wassup_foot() {
|
4137 |
global $wassup_options, $wassupversion, $debug_mode;
|
4138 |
if ($wassup_options->wassup_active == "1") {
|
4139 |
+
//New in 1.8.2: separate screen resolution cookie for IE
|
4140 |
+
if (!isset($_COOKIE['wassup_screen_res'])) {
|
4141 |
+
echo "\n"; ?>
|
4142 |
+
<!--[if IE]>
|
4143 |
+
<script language=javascript>
|
4144 |
+
var sheight = screen.height;
|
4145 |
+
var swidth = screen.width;
|
4146 |
+
document.cookie = "wassup_screen_res=" + swidth + " x " + sheight + "; path=/; domain=" + document.domain;
|
4147 |
+
</script>
|
4148 |
+
<![endif]--><?php
|
4149 |
+
}
|
4150 |
//Output a comment with a current timestamp to verify that page is not cached (i.e. visit is being recorded).
|
4151 |
echo "<!--\n<p class=\"small\"> WassUp $wassupversion ".__("timestamp","wassup").": ".date('Y-m-d h:i:sA T')." (".gmdate('h:iA',time()+(get_option('gmt_offset')*3600)).")<br />\n";
|
4152 |
echo __("If above timestamp is not current time, this page is cached","wassup").".</p> -->\n";
|
4154 |
}
|
4155 |
|
4156 |
/**
|
4157 |
+
* Perform db operations on wassup tables
|
4158 |
* -Helene D. 2010-04-27
|
4159 |
* @param array
|
4160 |
* @return none
|
4185 |
|
4186 |
// Security functions
|
4187 |
/**
|
4188 |
+
* Check for obvious signs of script injection and hack attempts -Helene D. 2010-02-01
|
4189 |
* @param none
|
4190 |
* @return boolean
|
4191 |
* @author Helene D.
|
4221 |
$wassup_settings = get_option('wassup_settings');
|
4222 |
$wpurl = get_bloginfo('wpurl');
|
4223 |
$blogurl = get_bloginfo('home');
|
4224 |
+
$wassup_table = $wassup_settings['wassup_table'];
|
4225 |
+
$table_tmp_name = $wassup_table . "_tmp";
|
4226 |
if ($wassup_settings['wassup_widget_title'] != "") $title = $wassup_settings['wassup_widget_title']; else $title = "Visitors Online";
|
4227 |
if ($wassup_settings['wassup_widget_ulclass'] != "") $ulclass = $wassup_settings['wassup_widget_ulclass']; else $ulclass = "links";
|
4228 |
if ($wassup_settings['wassup_widget_chars'] != "") $chars = $wassup_settings['wassup_widget_chars']; else $chars = "18";
|
4473 |
$wpurl = get_bloginfo('wpurl');
|
4474 |
$blogurl = get_bloginfo('home');
|
4475 |
$wassup_settings = get_option('wassup_settings');
|
4476 |
+
$wassup_table = $wassup_settings['wassup_table'];
|
4477 |
+
$table_tmp_name = $wassup_table . "_tmp";
|
4478 |
if ($wtitle != "") $title = $wtitle; else $title = "Visitors Online";
|
4479 |
if ($wulclass != "") $ulclass = $wulclass; else $ulclass = "links";
|
4480 |
if ($wchars != "") $chars = $wchars; else $chars = "18";
|
4482 |
if ($wreflimit != "") $reflimit = $wreflimit; else $reflimit = "5";
|
4483 |
if ($wtopbrlimit != "") $topbrlimit = $wtopbrlimit; else $topbrlimit = "5";
|
4484 |
if ($wtoposlimit != "") $toposlimit = $wtoposlimit; else $toposlimit = "5";
|
|
|
|
|
|
|
4485 |
$to_date = current_time('timestamp');
|
4486 |
$from_date = strtotime('-3 minutes', $to_date);
|
4487 |
|
4579 |
// function to print out a chart's preview in the dashboard for WP < 2.7 //moved
|
4580 |
function wassupDashChart() {
|
4581 |
global $wpdb, $wassup_options;
|
4582 |
+
$wassup_table = $wassup_options->wassup_table;
|
4583 |
if ($wassup_options->wassup_dashboard_chart == 1) {
|
4584 |
$chart_type = ($wassup_options->wassup_chart_type >0)? $wassup_options->wassup_chart_type: "2";
|
4585 |
$to_date = current_time("timestamp");
|
4586 |
+
$Chart = New MainItems($wassup_table,"",$to_date);
|
4587 |
$chart_url = $Chart->TheChart(1, "400", "125", "", $chart_type, "bg,s,efebef|c,lg,90,edffff,0,efebef,0.8", "dashboard"); ?>
|
4588 |
<h3>WassUp <?php _e('Stats','wassup'); ?> <cite><a href="admin.php?page=<?php echo WASSUPFOLDER; ?>"><?php _e('More','wassup'); ?> »</a></cite></h3>
|
4589 |
<div id="placeholder" align="left">
|
4596 |
function wassup_dashboard_widget_function() {
|
4597 |
global $wpdb, $wassup_options, $user_level;
|
4598 |
|
4599 |
+
$wassup_table = $wassup_options->wassup_table;
|
4600 |
+
$table_tmp_name = $wassup_table."_tmp";
|
4601 |
$to_date = current_time("timestamp");
|
4602 |
$chart_type = ($wassup_options->wassup_chart_type >0)? $wassup_options->wassup_chart_type: "2";
|
4603 |
$res = ((int)$wassup_options->wassup_screen_res-160)/2;
|
4604 |
+
$Chart = New MainItems($wassup_table,"",$to_date);
|
4605 |
$chart_url = $Chart->TheChart(1, $res, "180", "", $chart_type, "bg,s,efebef|c,lg,90,edffff,0,eae9e9,0.8", "dashboard");
|
4606 |
$max_char_len= 40;
|
4607 |
$wpurl = get_bloginfo('wpurl');
|