2727import requests
2828from bs4 import BeautifulSoup
2929from packageurl import PackageURL
30- from univers .versions import MavenVersion
30+ from univers .versions import SemverVersion
3131from univers .version_specifier import VersionSpecifier
3232
3333from vulnerabilities .data_source import Advisory
@@ -53,6 +53,12 @@ class ApacheHTTPDDataSource(DataSource):
5353 def set_api (self ):
5454 self .version_api = GitHubTagsAPI ()
5555 asyncio .run (self .version_api .load_api (["apache/httpd" ]))
56+ self .version_api .cache ["apache/httpd" ] = set (
57+ filter (
58+ lambda version : version .value not in ignore_tags ,
59+ self .version_api .cache ["apache/httpd" ],
60+ )
61+ )
5662
5763 def updated_advisories (self ):
5864 links = fetch_links (self .base_url )
@@ -106,7 +112,7 @@ def to_advisory(self, data):
106112 [
107113 PackageURL (type = "apache" , name = "httpd" , version = version )
108114 for version in self .version_api .get ("apache/httpd" ).valid_versions
109- if MavenVersion (version ) in version_range
115+ if SemverVersion (version ) in version_range
110116 ]
111117 )
112118
@@ -115,7 +121,7 @@ def to_advisory(self, data):
115121 [
116122 PackageURL (type = "apache" , name = "httpd" , version = version )
117123 for version in self .version_api .get ("apache/httpd" ).valid_versions
118- if MavenVersion (version ) in version_range
124+ if SemverVersion (version ) in version_range
119125 ]
120126 )
121127
@@ -135,13 +141,13 @@ def to_version_ranges(self, versions_data):
135141 if range_expression == "<" :
136142 fixed_version_ranges .append (
137143 VersionSpecifier .from_scheme_version_spec_string (
138- "maven " , ">={}" .format (version_value )
144+ "semver " , ">={}" .format (version_value )
139145 )
140146 )
141147 elif range_expression == "=" or range_expression == "?=" :
142148 affected_version_ranges .append (
143149 VersionSpecifier .from_scheme_version_spec_string (
144- "maven " , "{}" .format (version_value )
150+ "semver " , "{}" .format (version_value )
145151 )
146152 )
147153
@@ -158,3 +164,67 @@ def fetch_links(url):
158164 continue
159165 links .append (urllib .parse .urljoin (url , link ))
160166 return links
167+
168+
169+ ignore_tags = {
170+ "AGB_BEFORE_AAA_CHANGES" ,
171+ "APACHE_1_2b1" ,
172+ "APACHE_1_2b10" ,
173+ "APACHE_1_2b11" ,
174+ "APACHE_1_2b2" ,
175+ "APACHE_1_2b3" ,
176+ "APACHE_1_2b4" ,
177+ "APACHE_1_2b5" ,
178+ "APACHE_1_2b6" ,
179+ "APACHE_1_2b7" ,
180+ "APACHE_1_2b8" ,
181+ "APACHE_1_2b9" ,
182+ "APACHE_1_3_PRE_NT" ,
183+ "APACHE_1_3a1" ,
184+ "APACHE_1_3b1" ,
185+ "APACHE_1_3b2" ,
186+ "APACHE_1_3b3" ,
187+ "APACHE_1_3b5" ,
188+ "APACHE_1_3b6" ,
189+ "APACHE_1_3b7" ,
190+ "APACHE_2_0_2001_02_09" ,
191+ "APACHE_2_0_52_WROWE_RC1" ,
192+ "APACHE_2_0_ALPHA" ,
193+ "APACHE_2_0_ALPHA_2" ,
194+ "APACHE_2_0_ALPHA_3" ,
195+ "APACHE_2_0_ALPHA_4" ,
196+ "APACHE_2_0_ALPHA_5" ,
197+ "APACHE_2_0_ALPHA_6" ,
198+ "APACHE_2_0_ALPHA_7" ,
199+ "APACHE_2_0_ALPHA_8" ,
200+ "APACHE_2_0_ALPHA_9" ,
201+ "APACHE_2_0_BETA_CANDIDATE_1" ,
202+ "APACHE_BIG_SYMBOL_RENAME_POST" ,
203+ "APACHE_BIG_SYMBOL_RENAME_PRE" ,
204+ "CHANGES" ,
205+ "HTTPD_LDAP_1_0_0" ,
206+ "INITIAL" ,
207+ "MOD_SSL_2_8_3" ,
208+ "PCRE_3_9" ,
209+ "POST_APR_SPLIT" ,
210+ "PRE_APR_CHANGES" ,
211+ "STRIKER_2_0_51_RC1" ,
212+ "STRIKER_2_0_51_RC2" ,
213+ "STRIKER_2_1_0_RC1" ,
214+ "WROWE_2_0_43_PRE1" ,
215+ "apache-1_3-merge-1-post" ,
216+ "apache-1_3-merge-1-pre" ,
217+ "apache-1_3-merge-2-post" ,
218+ "apache-1_3-merge-2-pre" ,
219+ "apache-apr-merge-3" ,
220+ "apache-doc-split-01" ,
221+ "dg_last_1_2_doc_merge" ,
222+ "djg-apache-nspr-07" ,
223+ "djg_nspr_split" ,
224+ "moving_to_httpd_module" ,
225+ "mpm-3" ,
226+ "mpm-merge-1" ,
227+ "mpm-merge-2" ,
228+ "post_ajp_proxy" ,
229+ "pre_ajp_proxy" ,
230+ }
0 commit comments