OLD | NEW |
1 #include "stdafx.h" | 1 #include "stdafx.h" |
2 | 2 |
3 #include "../shared/AutoHandle.h" | 3 #include "../shared/AutoHandle.h" |
4 #include "../shared/Communication.h" | 4 #include "../shared/Communication.h" |
5 #include "Debug.h" | 5 #include "Debug.h" |
6 #include "Utils.h" | 6 #include "Utils.h" |
7 | 7 |
8 namespace | 8 namespace |
9 { | 9 { |
10 std::auto_ptr<AdblockPlus::FilterEngine> filterEngine; | 10 std::auto_ptr<AdblockPlus::FilterEngine> filterEngine; |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
45 << subscription->GetProperty("title")->AsString() | 45 << subscription->GetProperty("title")->AsString() |
46 << subscription->GetProperty("specialization")->AsString() | 46 << subscription->GetProperty("specialization")->AsString() |
47 << subscription->IsListed(); | 47 << subscription->IsListed(); |
48 } | 48 } |
49 } | 49 } |
50 | 50 |
51 Communication::OutputBuffer HandleRequest(Communication::InputBuffer& request) | 51 Communication::OutputBuffer HandleRequest(Communication::InputBuffer& request) |
52 { | 52 { |
53 Communication::OutputBuffer response; | 53 Communication::OutputBuffer response; |
54 | 54 |
55 std::string procedureName; | 55 Communication::ProcType procedure; |
56 request >> procedureName; | 56 request >> procedure; |
57 if (procedureName == "Matches") | 57 switch (procedure) |
58 { | 58 { |
59 std::string url; | 59 case Communication::PROC_MATCHES: |
60 std::string type; | 60 { |
61 std::string documentUrl; | 61 std::string url; |
62 request >> url >> type >> documentUrl; | 62 std::string type; |
63 response << filterEngine->Matches(url, type, documentUrl); | 63 std::string documentUrl; |
64 } | 64 request >> url >> type >> documentUrl; |
65 else if (procedureName == "GetElementHidingSelectors") | 65 response << filterEngine->Matches(url, type, documentUrl); |
66 { | 66 break; |
67 std::string domain; | 67 } |
68 request >> domain; | 68 case Communication::PROC_GET_ELEMHIDE_SELECTORS: |
69 WriteStrings(response, filterEngine->GetElementHidingSelectors(domain)); | 69 { |
70 } | 70 std::string domain; |
71 else if (procedureName == "FetchAvailableSubscriptions") | 71 request >> domain; |
72 { | 72 WriteStrings(response, filterEngine->GetElementHidingSelectors(domain)); |
73 WriteSubscriptions(response, filterEngine->FetchAvailableSubscriptions()); | 73 break; |
74 } | 74 } |
75 else if (procedureName == "GetListedSubscriptions") | 75 case Communication::PROC_AVAILABLE_SUBSCRIPTIONS: |
76 { | 76 { |
77 WriteSubscriptions(response, filterEngine->GetListedSubscriptions()); | 77 WriteSubscriptions(response, filterEngine->FetchAvailableSubscriptions()
); |
78 } | 78 break; |
79 else if (procedureName == "SetSubscription") | 79 } |
80 { | 80 case Communication::PROC_LISTED_SUBSCRIPTIONS: |
81 std::string url; | 81 { |
82 request >> url; | 82 WriteSubscriptions(response, filterEngine->GetListedSubscriptions()); |
| 83 break; |
| 84 } |
| 85 case Communication::PROC_SET_SUBSCRIPTION: |
| 86 { |
| 87 std::string url; |
| 88 request >> url; |
83 | 89 |
84 std::vector<AdblockPlus::SubscriptionPtr> subscriptions = filterEngine->Ge
tListedSubscriptions(); | 90 std::vector<AdblockPlus::SubscriptionPtr> subscriptions = filterEngine->
GetListedSubscriptions(); |
85 for (size_t i = 0, count = subscriptions.size(); i < count; i++) | 91 for (size_t i = 0, count = subscriptions.size(); i < count; i++) |
86 subscriptions[i]->RemoveFromList(); | 92 subscriptions[i]->RemoveFromList(); |
87 | 93 |
88 filterEngine->GetSubscription(url)->AddToList(); | 94 filterEngine->GetSubscription(url)->AddToList(); |
89 } | 95 break; |
90 else if (procedureName == "UpdateAllSubscriptions") | 96 } |
91 { | 97 case Communication::PROC_UPDATE_ALL_SUBSCRIPTIONS: |
92 std::vector<AdblockPlus::SubscriptionPtr> subscriptions = filterEngine->Ge
tListedSubscriptions(); | |
93 for (size_t i = 0, count = subscriptions.size(); i < count; i++) | |
94 subscriptions[i]->UpdateFilters(); | |
95 } | |
96 else if (procedureName == "GetExceptionDomains") | |
97 { | |
98 std::vector<AdblockPlus::FilterPtr> filters = filterEngine->GetListedFilte
rs(); | |
99 std::vector<std::string> domains; | |
100 for (size_t i = 0, count = filters.size(); i < count; i++) | |
101 { | 98 { |
102 AdblockPlus::FilterPtr filter = filters[i]; | 99 std::vector<AdblockPlus::SubscriptionPtr> subscriptions = filterEngine->
GetListedSubscriptions(); |
103 if (filter->GetType() == AdblockPlus::Filter::TYPE_EXCEPTION) | 100 for (size_t i = 0, count = subscriptions.size(); i < count; i++) |
| 101 subscriptions[i]->UpdateFilters(); |
| 102 break; |
| 103 } |
| 104 case Communication::PROC_GET_EXCEPTION_DOMAINS: |
| 105 { |
| 106 std::vector<AdblockPlus::FilterPtr> filters = filterEngine->GetListedFil
ters(); |
| 107 std::vector<std::string> domains; |
| 108 for (size_t i = 0, count = filters.size(); i < count; i++) |
104 { | 109 { |
105 std::string text = filter->GetProperty("text")->AsString(); | 110 AdblockPlus::FilterPtr filter = filters[i]; |
| 111 if (filter->GetType() == AdblockPlus::Filter::TYPE_EXCEPTION) |
| 112 { |
| 113 std::string text = filter->GetProperty("text")->AsString(); |
106 | 114 |
107 //@@||example.com^$document | 115 //@@||example.com^$document |
108 const char prefix[] = "@@||"; | 116 const char prefix[] = "@@||"; |
109 const char suffix[] = "^$document"; | 117 const char suffix[] = "^$document"; |
110 const int prefixLen = strlen(prefix); | 118 const int prefixLen = strlen(prefix); |
111 const int suffixLen = strlen(suffix); | 119 const int suffixLen = strlen(suffix); |
112 if (!text.compare(0, prefixLen, prefix) && | 120 if (!text.compare(0, prefixLen, prefix) && |
113 !text.compare(text.size() - suffixLen, suffixLen, suffix)) | 121 !text.compare(text.size() - suffixLen, suffixLen, suffix)) |
114 { | 122 { |
115 domains.push_back(text.substr(prefixLen, text.size() - prefixLen - s
uffixLen)); | 123 domains.push_back(text.substr(prefixLen, text.size() - prefixLen -
suffixLen)); |
| 124 } |
116 } | 125 } |
117 } | 126 } |
| 127 |
| 128 WriteStrings(response, domains); |
| 129 break; |
118 } | 130 } |
| 131 case Communication::PROC_ADD_FILTER: |
| 132 { |
| 133 std::string text; |
| 134 request >> text; |
119 | 135 |
120 WriteStrings(response, domains); | 136 filterEngine->GetFilter(text)->AddToList(); |
121 } | 137 break; |
122 else if (procedureName == "AddFilter") | 138 } |
123 { | |
124 std::string text; | |
125 request >> text; | |
126 | |
127 filterEngine->GetFilter(text)->AddToList(); | |
128 } | 139 } |
129 return response; | 140 return response; |
130 } | 141 } |
131 | 142 |
132 DWORD WINAPI ClientThread(LPVOID param) | 143 DWORD WINAPI ClientThread(LPVOID param) |
133 { | 144 { |
134 std::auto_ptr<Communication::Pipe> pipe(static_cast<Communication::Pipe*>(pa
ram)); | 145 std::auto_ptr<Communication::Pipe> pipe(static_cast<Communication::Pipe*>(pa
ram)); |
135 | 146 |
136 try | 147 try |
137 { | 148 { |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
189 } | 200 } |
190 catch (std::runtime_error e) | 201 catch (std::runtime_error e) |
191 { | 202 { |
192 DebugException(e); | 203 DebugException(e); |
193 return 1; | 204 return 1; |
194 } | 205 } |
195 } | 206 } |
196 | 207 |
197 return 0; | 208 return 0; |
198 } | 209 } |
OLD | NEW |