OLD | NEW |
1 #include "PluginStdAfx.h" | 1 #include "PluginStdAfx.h" |
2 | 2 |
3 #include <Wbemidl.h> | 3 #include <Wbemidl.h> |
4 #include <time.h> | 4 #include <time.h> |
5 #include "PluginIniFileW.h" | 5 #include "PluginIniFileW.h" |
6 #include "PluginIniFile.h" | 6 #include "PluginIniFile.h" |
7 #include "PluginSettings.h" | 7 #include "PluginSettings.h" |
8 #include "PluginDictionary.h" | 8 #include "PluginDictionary.h" |
9 #include "PluginClient.h" | 9 #include "PluginClient.h" |
10 #include "PluginChecksum.h" | 10 #include "PluginChecksum.h" |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
201 s_criticalSectionLocal.Lock(); | 201 s_criticalSectionLocal.Lock(); |
202 { | 202 { |
203 if ((!s_instance) || (s_isLightOnly)) | 203 if ((!s_instance) || (s_isLightOnly)) |
204 { | 204 { |
205 s_instance = new CPluginSettings(); | 205 s_instance = new CPluginSettings(); |
206 #ifdef USE_CONSOLE | 206 #ifdef USE_CONSOLE |
207 CONSOLE("Fetching Available Subscription\n"); | 207 CONSOLE("Fetching Available Subscription\n"); |
208 #endif | 208 #endif |
209 try | 209 try |
210 { | 210 { |
211 CPluginSettings::GetInstance()->m_subscriptions = CPluginClient::GetInst
ance()->GetFilterEngine()->FetchAvailableSubscriptions(); | 211 CPluginSettings::GetInstance()->m_subscriptions = CPluginClient::GetInst
ance()->FetchAvailableSubscriptions(); |
212 } | 212 } |
213 catch(std::exception ex) | 213 catch(std::exception ex) |
214 { | 214 { |
215 DEBUG_GENERAL(ex.what()); | 215 DEBUG_GENERAL(ex.what()); |
216 throw ex; | 216 throw ex; |
217 } | 217 } |
218 s_isLightOnly = false; | 218 s_isLightOnly = false; |
219 } | 219 } |
220 | 220 |
221 instance = s_instance; | 221 instance = s_instance; |
(...skipping 1268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1490 } | 1490 } |
1491 | 1491 |
1492 CPluginSettingsWhitelistLock lock; | 1492 CPluginSettingsWhitelistLock lock; |
1493 if (lock.IsLocked()) | 1493 if (lock.IsLocked()) |
1494 { | 1494 { |
1495 ClearWhitelist(); | 1495 ClearWhitelist(); |
1496 | 1496 |
1497 s_criticalSectionLocal.Lock(); | 1497 s_criticalSectionLocal.Lock(); |
1498 try | 1498 try |
1499 { | 1499 { |
1500 std::vector<AdblockPlus::FilterPtr> filters = CPluginClient::GetInstance()
->GetFilterEngine()->GetListedFilters(); | 1500 std::vector<AdblockPlus::FilterPtr> filters = CPluginClient::GetInstance()
->GetListedFilters(); |
1501 for (int i = 0; i < filters.size(); i ++) | 1501 for (int i = 0; i < filters.size(); i ++) |
1502 { | 1502 { |
1503 if (filters[i]->GetType() == AdblockPlus::Filter::Type::TYPE_EXCEPTION) | 1503 if (filters[i]->GetType() == AdblockPlus::Filter::Type::TYPE_EXCEPTION) |
1504 { | 1504 { |
1505 std::string text = filters[i]->GetProperty("text")->AsString(); | 1505 std::string text = filters[i]->GetProperty("text")->AsString(); |
1506 //@@||example.com^$document | 1506 //@@||example.com^$document |
1507 size_t endPos = text.rfind("^$document"); | 1507 size_t endPos = text.rfind("^$document"); |
1508 if (endPos != std::string::npos) | 1508 if (endPos != std::string::npos) |
1509 { | 1509 { |
1510 size_t startPos = text.find("@@||") + 4; | 1510 size_t startPos = text.find("@@||") + 4; |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1549 | 1549 |
1550 std::string newDomain = CW2A(domain, CP_UTF8); | 1550 std::string newDomain = CW2A(domain, CP_UTF8); |
1551 | 1551 |
1552 //Domain already present? | 1552 //Domain already present? |
1553 if (std::find(m_whitelistedDomains.begin(), m_whitelistedDomains.end(), newD
omain) != m_whitelistedDomains.end()) | 1553 if (std::find(m_whitelistedDomains.begin(), m_whitelistedDomains.end(), newD
omain) != m_whitelistedDomains.end()) |
1554 { | 1554 { |
1555 return; | 1555 return; |
1556 } | 1556 } |
1557 s_criticalSectionLocal.Lock(); | 1557 s_criticalSectionLocal.Lock(); |
1558 { | 1558 { |
1559 AdblockPlus::FilterPtr whitelistFilter = CPluginClient::GetInstance()->Get
FilterEngine()->GetFilter(std::string("@@||").append(CW2A(domain)).append("^$doc
ument")); | 1559 AdblockPlus::FilterPtr whitelistFilter = CPluginClient::GetInstance()->Get
Filter(std::string("@@||").append(CW2A(domain)).append("^$document")); |
1560 whitelistFilter->AddToList(); | 1560 whitelistFilter->AddToList(); |
1561 } | 1561 } |
1562 s_criticalSectionLocal.Unlock(); | 1562 s_criticalSectionLocal.Unlock(); |
1563 | 1563 |
1564 } | 1564 } |
1565 | 1565 |
1566 if (isForcingUpdateOnStart) | 1566 if (isForcingUpdateOnStart) |
1567 { | 1567 { |
1568 ForceConfigurationUpdateOnStart(); | 1568 ForceConfigurationUpdateOnStart(); |
1569 } | 1569 } |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1638 void CPluginSettings::SetSubscription(BSTR url) | 1638 void CPluginSettings::SetSubscription(BSTR url) |
1639 { | 1639 { |
1640 std::string urlConverted = CT2A(url, CP_UTF8); | 1640 std::string urlConverted = CT2A(url, CP_UTF8); |
1641 SetSubscription(urlConverted); | 1641 SetSubscription(urlConverted); |
1642 } | 1642 } |
1643 | 1643 |
1644 void CPluginSettings::SetSubscription(std::string url) | 1644 void CPluginSettings::SetSubscription(std::string url) |
1645 { | 1645 { |
1646 try | 1646 try |
1647 { | 1647 { |
1648 FilterEngine* filterEngine= CPluginClient::GetInstance()->GetFilterEngine(); | 1648 std::vector<AdblockPlus::SubscriptionPtr> subscriptions = CPluginClient::Get
Instance()->GetListedSubscriptions(); |
1649 std::vector<AdblockPlus::SubscriptionPtr> subscriptions = filterEngine->GetL
istedSubscriptions(); | |
1650 if (subscriptions.size() > 0) | 1649 if (subscriptions.size() > 0) |
1651 { | 1650 { |
1652 for (int i = 0; i < subscriptions.size(); i ++) | 1651 for (int i = 0; i < subscriptions.size(); i ++) |
1653 { | 1652 { |
1654 subscriptions[i]->RemoveFromList(); | 1653 subscriptions[i]->RemoveFromList(); |
1655 } | 1654 } |
1656 } | 1655 } |
1657 AdblockPlus::SubscriptionPtr subscription = filterEngine->GetSubscription(ur
l); | 1656 AdblockPlus::SubscriptionPtr subscription = CPluginClient::GetInstance()->Ge
tSubscription(url); |
1658 subscription->AddToList(); | 1657 subscription->AddToList(); |
1659 RefreshFilterlist(); | 1658 RefreshFilterlist(); |
1660 RefreshWhitelist(); | 1659 RefreshWhitelist(); |
1661 } | 1660 } |
1662 catch(std::exception ex) | 1661 catch(std::exception ex) |
1663 { | 1662 { |
1664 DEBUG_GENERAL(ex.what()); | 1663 DEBUG_GENERAL(ex.what()); |
1665 } | 1664 } |
1666 catch(std::runtime_error ex) | 1665 catch(std::runtime_error ex) |
1667 { | 1666 { |
(...skipping 10 matching lines...) Expand all Loading... |
1678 } | 1677 } |
1679 return retTokens; | 1678 return retTokens; |
1680 } | 1679 } |
1681 | 1680 |
1682 | 1681 |
1683 void CPluginSettings::SetDefaultSubscription() | 1682 void CPluginSettings::SetDefaultSubscription() |
1684 { | 1683 { |
1685 CPluginSystem* system = CPluginSystem::GetInstance(); | 1684 CPluginSystem* system = CPluginSystem::GetInstance(); |
1686 CString lng = system->GetBrowserLanguage().Left(2); | 1685 CString lng = system->GetBrowserLanguage().Left(2); |
1687 std::string browserLanguage = CW2A(lng, CP_UTF8); | 1686 std::string browserLanguage = CW2A(lng, CP_UTF8); |
1688 FilterEngine* filterEngine = CPluginClient::GetInstance()->GetFilterEngine(); | 1687 std::vector<SubscriptionPtr> subscriptions = CPluginClient::GetInstance()->Fet
chAvailableSubscriptions(); |
1689 std::vector<SubscriptionPtr> subscriptions = filterEngine->FetchAvailableSubsc
riptions(); | |
1690 bool subscriptionSet = false; | 1688 bool subscriptionSet = false; |
1691 while (!subscriptionSet) | 1689 while (!subscriptionSet) |
1692 { | 1690 { |
1693 for (int i = 0; i < subscriptions.size(); i++) | 1691 for (int i = 0; i < subscriptions.size(); i++) |
1694 { | 1692 { |
1695 std::string prefixes = subscriptions[i]->GetProperty("prefixes")->AsString
(); | 1693 std::string prefixes = subscriptions[i]->GetProperty("prefixes")->AsString
(); |
1696 std::vector<std::string> tokens = split(prefixes, ','); | 1694 std::vector<std::string> tokens = split(prefixes, ','); |
1697 for (int j = 0; j < tokens.size(); j ++) | 1695 for (int j = 0; j < tokens.size(); j ++) |
1698 { | 1696 { |
1699 if (tokens[j] == browserLanguage) | 1697 if (tokens[j] == browserLanguage) |
1700 { | 1698 { |
1701 SetSubscription(subscriptions[i]->GetProperty("url")->AsString()); | 1699 SetSubscription(subscriptions[i]->GetProperty("url")->AsString()); |
1702 subscriptionSet = true; | 1700 subscriptionSet = true; |
1703 } | 1701 } |
1704 } | 1702 } |
1705 } | 1703 } |
1706 | 1704 |
1707 if (browserLanguage == "en") | 1705 if (browserLanguage == "en") |
1708 break; | 1706 break; |
1709 // failed to set the subscription for browser language. Try "en" | 1707 // failed to set the subscription for browser language. Try "en" |
1710 browserLanguage = "en"; | 1708 browserLanguage = "en"; |
1711 | 1709 |
1712 } | 1710 } |
1713 } | 1711 } |
1714 | 1712 |
1715 CString CPluginSettings::GetSubscription() | 1713 CString CPluginSettings::GetSubscription() |
1716 { | 1714 { |
1717 try | 1715 try |
1718 { | 1716 { |
1719 FilterEngine* filterEngine= CPluginClient::GetInstance()->GetFilterEngine(); | 1717 std::vector<AdblockPlus::SubscriptionPtr> subscriptions = CPluginClient::GetI
nstance()->GetListedSubscriptions(); |
1720 std::vector<AdblockPlus::SubscriptionPtr> subscriptions = filterEngine->GetL
istedSubscriptions(); | |
1721 | 1718 |
1722 if (subscriptions.size() == 0) | 1719 if (subscriptions.size() == 0) |
1723 { | 1720 { |
1724 SetDefaultSubscription(); | 1721 SetDefaultSubscription(); |
1725 subscriptions = filterEngine->GetListedSubscriptions(); | 1722 subscriptions = CPluginClient::GetInstance()->GetListedSubscriptions(); |
1726 } | 1723 } |
1727 for (int i = 0; i < subscriptions.size(); i ++) | 1724 for (int i = 0; i < subscriptions.size(); i ++) |
1728 { | 1725 { |
1729 return CString(CA2T(subscriptions[i]->GetProperty("url")->AsString().c_str
(), CP_UTF8)); | 1726 return CString(CA2T(subscriptions[i]->GetProperty("url")->AsString().c_str
(), CP_UTF8)); |
1730 } | 1727 } |
1731 } | 1728 } |
1732 catch(std::exception ex) | 1729 catch(std::exception ex) |
1733 { | 1730 { |
1734 DEBUG_GENERAL(ex.what()); | 1731 DEBUG_GENERAL(ex.what()); |
1735 } | 1732 } |
1736 catch(std::runtime_error ex) | 1733 catch(std::runtime_error ex) |
1737 { | 1734 { |
1738 DEBUG_GENERAL(ex.what()); | 1735 DEBUG_GENERAL(ex.what()); |
1739 } | 1736 } |
1740 return CString(L""); | 1737 return CString(L""); |
1741 } | 1738 } |
1742 | 1739 |
1743 | 1740 |
1744 void CPluginSettings::RefreshFilterlist() | 1741 void CPluginSettings::RefreshFilterlist() |
1745 { | 1742 { |
1746 try | 1743 try |
1747 { | 1744 { |
1748 FilterEngine* filterEngine= CPluginClient::GetInstance()->GetFilterEngine(); | |
1749 | |
1750 // Make sure at least the default subscription is set | 1745 // Make sure at least the default subscription is set |
1751 CPluginSettings* settings = CPluginSettings::GetInstance(); | 1746 CPluginSettings* settings = CPluginSettings::GetInstance(); |
1752 settings->GetSubscription(); | 1747 settings->GetSubscription(); |
1753 | 1748 |
1754 std::vector<AdblockPlus::SubscriptionPtr> subscriptions = filterEngine->GetL
istedSubscriptions(); | 1749 std::vector<AdblockPlus::SubscriptionPtr> subscriptions = CPluginClient::Get
Instance()->GetListedSubscriptions(); |
1755 for (int i = 0; i < subscriptions.size(); i ++) | 1750 for (int i = 0; i < subscriptions.size(); i ++) |
1756 { | 1751 { |
1757 subscriptions[i]->UpdateFilters(); | 1752 subscriptions[i]->UpdateFilters(); |
1758 } | 1753 } |
1759 } | 1754 } |
1760 catch(std::exception ex) | 1755 catch(std::exception ex) |
1761 { | 1756 { |
1762 DEBUG_GENERAL(ex.what()); | 1757 DEBUG_GENERAL(ex.what()); |
1763 } | 1758 } |
1764 catch(std::runtime_error ex) | 1759 catch(std::runtime_error ex) |
1765 { | 1760 { |
1766 DEBUG_GENERAL(ex.what()); | 1761 DEBUG_GENERAL(ex.what()); |
1767 } | 1762 } |
1768 } | 1763 } |
1769 | 1764 |
1770 #endif // SUPPORT_WHITELIST | 1765 #endif // SUPPORT_WHITELIST |
OLD | NEW |