[samsung-security] Generify samsung-mobile method (#439)
- Make section and inclusions/exclusions configurable, - Remove Galaxy Tabs from samsung-mobile data (following https://github.com/endoflife-date/endoflife.date/pull/7513), - Initialize Galaxy Tabs dataset (following https://github.com/endoflife-date/endoflife.date/pull/7513).
This commit is contained in:
305
releases/samsung-galaxy-tab.json
Normal file
305
releases/samsung-galaxy-tab.json
Normal file
@@ -0,0 +1,305 @@
|
||||
{
|
||||
"releases": {
|
||||
"galaxy-tab-s9-ultra": {
|
||||
"name": "galaxy-tab-s9-ultra",
|
||||
"eol": "2028-08-11"
|
||||
},
|
||||
"galaxy-tab-s9-fe+": {
|
||||
"name": "galaxy-tab-s9-fe+",
|
||||
"eol": "2028-10-04"
|
||||
},
|
||||
"galaxy-tab-s9-fe": {
|
||||
"name": "galaxy-tab-s9-fe",
|
||||
"eol": "2028-10-04"
|
||||
},
|
||||
"galaxy-tab-s9+": {
|
||||
"name": "galaxy-tab-s9+",
|
||||
"eol": "2028-08-11"
|
||||
},
|
||||
"galaxy-tab-s9": {
|
||||
"name": "galaxy-tab-s9",
|
||||
"eol": "2028-08-11"
|
||||
},
|
||||
"galaxy-tab-s8-ultra": {
|
||||
"name": "galaxy-tab-s8-ultra",
|
||||
"eol": "2027-04-30"
|
||||
},
|
||||
"galaxy-tab-s8+": {
|
||||
"name": "galaxy-tab-s8+",
|
||||
"eol": "2027-04-14"
|
||||
},
|
||||
"galaxy-tab-s8": {
|
||||
"name": "galaxy-tab-s8",
|
||||
"eol": "2027-03-22"
|
||||
},
|
||||
"galaxy-tab-s7-fe": {
|
||||
"name": "galaxy-tab-s7-fe",
|
||||
"eol": false
|
||||
},
|
||||
"galaxy-tab-s7+": {
|
||||
"name": "galaxy-tab-s7+",
|
||||
"eol": "2024-08-05"
|
||||
},
|
||||
"galaxy-tab-s7": {
|
||||
"name": "galaxy-tab-s7",
|
||||
"eol": "2024-08-05"
|
||||
},
|
||||
"galaxy-tab-s6-lite-2024": {
|
||||
"name": "galaxy-tab-s6-lite-2024",
|
||||
"eol": false
|
||||
},
|
||||
"galaxy-tab-s6-lite-2020": {
|
||||
"name": "galaxy-tab-s6-lite-2020",
|
||||
"eol": "2024-03-26"
|
||||
},
|
||||
"galaxy-tab-s6-lite": {
|
||||
"name": "galaxy-tab-s6-lite",
|
||||
"eol": false
|
||||
},
|
||||
"galaxy-tab-s6-5g": {
|
||||
"name": "galaxy-tab-s6-5g",
|
||||
"eol": "2024-01-30"
|
||||
},
|
||||
"galaxy-tab-s6": {
|
||||
"name": "galaxy-tab-s6",
|
||||
"eol": "2023-07-31"
|
||||
},
|
||||
"galaxy-tab-s5e": {
|
||||
"name": "galaxy-tab-s5e",
|
||||
"eol": "2023-04-01"
|
||||
},
|
||||
"galaxy-tab-s4-10.5": {
|
||||
"name": "galaxy-tab-s4-10.5",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-s3-9.7": {
|
||||
"name": "galaxy-tab-s3-9.7",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-s2-9.7": {
|
||||
"name": "galaxy-tab-s2-9.7",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-s2-8.0": {
|
||||
"name": "galaxy-tab-s2-8.0",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-s10-ultra": {
|
||||
"name": "galaxy-tab-s10-ultra",
|
||||
"eol": "2031-10-03"
|
||||
},
|
||||
"galaxy-tab-s10-fe+": {
|
||||
"name": "galaxy-tab-s10-fe+",
|
||||
"eol": "2032-04-03"
|
||||
},
|
||||
"galaxy-tab-s10-fe": {
|
||||
"name": "galaxy-tab-s10-fe",
|
||||
"eol": "2032-04-03"
|
||||
},
|
||||
"galaxy-tab-s10+": {
|
||||
"name": "galaxy-tab-s10+",
|
||||
"eol": "2031-10-03"
|
||||
},
|
||||
"galaxy-tab-s-8.4-lte": {
|
||||
"name": "galaxy-tab-s-8.4-lte",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-s-8.4": {
|
||||
"name": "galaxy-tab-s-8.4",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-s-10.5-lte": {
|
||||
"name": "galaxy-tab-s-10.5-lte",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-s-10.5": {
|
||||
"name": "galaxy-tab-s-10.5",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-pro-12.2-lte": {
|
||||
"name": "galaxy-tab-pro-12.2-lte",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-pro-12.2-3g": {
|
||||
"name": "galaxy-tab-pro-12.2-3g",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-pro-12.2": {
|
||||
"name": "galaxy-tab-pro-12.2",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-j": {
|
||||
"name": "galaxy-tab-j",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-e-9.6": {
|
||||
"name": "galaxy-tab-e-9.6",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-e-8.0": {
|
||||
"name": "galaxy-tab-e-8.0",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-advanced2": {
|
||||
"name": "galaxy-tab-advanced2",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-active5": {
|
||||
"name": "galaxy-tab-active5",
|
||||
"eol": "2029-01-23"
|
||||
},
|
||||
"galaxy-tab-active4-pro": {
|
||||
"name": "galaxy-tab-active4-pro",
|
||||
"eol": "2027-08-31"
|
||||
},
|
||||
"galaxy-tab-active3": {
|
||||
"name": "galaxy-tab-active3",
|
||||
"eol": "2024-09-28"
|
||||
},
|
||||
"galaxy-tab-active2": {
|
||||
"name": "galaxy-tab-active2",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-active-pro": {
|
||||
"name": "galaxy-tab-active-pro",
|
||||
"eol": "2023-10-01"
|
||||
},
|
||||
"galaxy-tab-active-lte": {
|
||||
"name": "galaxy-tab-active-lte",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-active": {
|
||||
"name": "galaxy-tab-active",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-a9+": {
|
||||
"name": "galaxy-tab-a9+",
|
||||
"eol": "2027-10-23"
|
||||
},
|
||||
"galaxy-tab-a9": {
|
||||
"name": "galaxy-tab-a9",
|
||||
"eol": "2027-10-23"
|
||||
},
|
||||
"galaxy-tab-a8": {
|
||||
"name": "galaxy-tab-a8",
|
||||
"eol": false
|
||||
},
|
||||
"galaxy-tab-a7-lite": {
|
||||
"name": "galaxy-tab-a7-lite",
|
||||
"eol": false
|
||||
},
|
||||
"galaxy-tab-a7-10.4-2022": {
|
||||
"name": "galaxy-tab-a7-10.4-2022",
|
||||
"eol": false
|
||||
},
|
||||
"galaxy-tab-a7-10.4-2020": {
|
||||
"name": "galaxy-tab-a7-10.4-2020",
|
||||
"eol": "2024-08-10"
|
||||
},
|
||||
"galaxy-tab-a-9.7-and-s-pen": {
|
||||
"name": "galaxy-tab-a-9.7-and-s-pen",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-a-9.7": {
|
||||
"name": "galaxy-tab-a-9.7",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-a-8.4-2020": {
|
||||
"name": "galaxy-tab-a-8.4-2020",
|
||||
"eol": "2024-03-25"
|
||||
},
|
||||
"galaxy-tab-a-8.0-with-s-pen-2019": {
|
||||
"name": "galaxy-tab-a-8.0-with-s-pen-2019",
|
||||
"eol": "2023-04-01"
|
||||
},
|
||||
"galaxy-tab-a-8.0-and-s-pen-2015": {
|
||||
"name": "galaxy-tab-a-8.0-and-s-pen-2015",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-a-8.0-2019": {
|
||||
"name": "galaxy-tab-a-8.0-2019",
|
||||
"eol": "2023-07-01"
|
||||
},
|
||||
"galaxy-tab-a-8.0-2018": {
|
||||
"name": "galaxy-tab-a-8.0-2018",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-a-8.0-2017": {
|
||||
"name": "galaxy-tab-a-8.0-2017",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-a-8.0-2015": {
|
||||
"name": "galaxy-tab-a-8.0-2015",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-a-7.0-2016": {
|
||||
"name": "galaxy-tab-a-7.0-2016",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-a-10.5-2018": {
|
||||
"name": "galaxy-tab-a-10.5-2018",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-a-10.1-2019": {
|
||||
"name": "galaxy-tab-a-10.1-2019",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-a-10.1-2016": {
|
||||
"name": "galaxy-tab-a-10.1-2016",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-4-8.0-lte": {
|
||||
"name": "galaxy-tab-4-8.0-lte",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-4-8.0-3g": {
|
||||
"name": "galaxy-tab-4-8.0-3g",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-4-8.0": {
|
||||
"name": "galaxy-tab-4-8.0",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-4-7.0-lte": {
|
||||
"name": "galaxy-tab-4-7.0-lte",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-4-7.0-3g": {
|
||||
"name": "galaxy-tab-4-7.0-3g",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-4-7.0": {
|
||||
"name": "galaxy-tab-4-7.0",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-4-10.1-lte": {
|
||||
"name": "galaxy-tab-4-10.1-lte",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-4-10.1-3g": {
|
||||
"name": "galaxy-tab-4-10.1-3g",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-4-10.1": {
|
||||
"name": "galaxy-tab-4-10.1",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-3-v": {
|
||||
"name": "galaxy-tab-3-v",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-3-lite-7.0-ve": {
|
||||
"name": "galaxy-tab-3-lite-7.0-ve",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-3-lite-7.0-3g": {
|
||||
"name": "galaxy-tab-3-lite-7.0-3g",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-3-lite-7.0": {
|
||||
"name": "galaxy-tab-3-lite-7.0",
|
||||
"eol": true
|
||||
}
|
||||
},
|
||||
"versions": {}
|
||||
}
|
||||
@@ -247,328 +247,6 @@
|
||||
"name": "galaxy-v",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-s9-ultra": {
|
||||
"name": "galaxy-tab-s9-ultra",
|
||||
"eol": "2028-10-16",
|
||||
"releaseLabel": "Galaxy Tab S9 Ultra"
|
||||
},
|
||||
"galaxy-tab-s9-fe+": {
|
||||
"name": "galaxy-tab-s9-fe+",
|
||||
"eol": "2028-10-16",
|
||||
"releaseLabel": "Galaxy Tab S9 FE+"
|
||||
},
|
||||
"galaxy-tab-s9-fe": {
|
||||
"name": "galaxy-tab-s9-fe",
|
||||
"eol": false,
|
||||
"releaseLabel": "Galaxy Tab S9 FE"
|
||||
},
|
||||
"galaxy-tab-s9+": {
|
||||
"name": "galaxy-tab-s9+",
|
||||
"eol": "2028-10-16",
|
||||
"releaseLabel": "Galaxy Tab S9+"
|
||||
},
|
||||
"galaxy-tab-s9": {
|
||||
"name": "galaxy-tab-s9",
|
||||
"eol": "2028-10-16",
|
||||
"releaseLabel": "Galaxy Tab S9"
|
||||
},
|
||||
"galaxy-tab-s8-ultra": {
|
||||
"name": "galaxy-tab-s8-ultra",
|
||||
"eol": "2027-04-30",
|
||||
"releaseLabel": "Galaxy Tab S8 Ultra"
|
||||
},
|
||||
"galaxy-tab-s8+": {
|
||||
"name": "galaxy-tab-s8+",
|
||||
"eol": "2027-04-14",
|
||||
"releaseLabel": "Galaxy Tab S8+"
|
||||
},
|
||||
"galaxy-tab-s8": {
|
||||
"name": "galaxy-tab-s8",
|
||||
"eol": "2027-03-22",
|
||||
"releaseLabel": "Galaxy Tab S8"
|
||||
},
|
||||
"galaxy-tab-s7-fe": {
|
||||
"name": "galaxy-tab-s7-fe",
|
||||
"eol": false,
|
||||
"releaseLabel": "Galaxy Tab S7 FE"
|
||||
},
|
||||
"galaxy-tab-s7+": {
|
||||
"name": "galaxy-tab-s7+",
|
||||
"eol": "2024-08-05"
|
||||
},
|
||||
"galaxy-tab-s7": {
|
||||
"name": "galaxy-tab-s7",
|
||||
"eol": "2024-08-21"
|
||||
},
|
||||
"galaxy-tab-s6-lite-2024": {
|
||||
"name": "galaxy-tab-s6-lite-2024",
|
||||
"releaseLabel": "Galaxy Tab S6 Lite (2024)",
|
||||
"eol": false
|
||||
},
|
||||
"galaxy-tab-s6-lite-2020": {
|
||||
"name": "galaxy-tab-s6-lite-2020",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-s6-lite": {
|
||||
"name": "galaxy-tab-s6-lite",
|
||||
"eol": false,
|
||||
"releaseLabel": "Galaxy Tab S6 Lite"
|
||||
},
|
||||
"galaxy-tab-s6-5g": {
|
||||
"name": "galaxy-tab-s6-5g",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-s6": {
|
||||
"name": "galaxy-tab-s6",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-s5e": {
|
||||
"name": "galaxy-tab-s5e",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-s4-10.5": {
|
||||
"name": "galaxy-tab-s4-10.5",
|
||||
"eol": "2022-06-01"
|
||||
},
|
||||
"galaxy-tab-s3-9.7": {
|
||||
"name": "galaxy-tab-s3-9.7",
|
||||
"eol": "2019-04-01"
|
||||
},
|
||||
"galaxy-tab-s2-9.7": {
|
||||
"name": "galaxy-tab-s2-9.7",
|
||||
"eol": "2019-07-01"
|
||||
},
|
||||
"galaxy-tab-s2-8.0": {
|
||||
"name": "galaxy-tab-s2-8.0",
|
||||
"eol": "2019-07-01"
|
||||
},
|
||||
"galaxy-tab-s10-ultra": {
|
||||
"name": "galaxy-tab-s10-ultra",
|
||||
"releaseLabel": "Galaxy Tab S10 Ultra",
|
||||
"eol": false
|
||||
},
|
||||
"galaxy-tab-s10-fe+": {
|
||||
"name": "galaxy-tab-s10-fe+",
|
||||
"releaseLabel": "Galaxy Tab S10 FE+",
|
||||
"eol": false
|
||||
},
|
||||
"galaxy-tab-s10-fe": {
|
||||
"name": "galaxy-tab-s10-fe",
|
||||
"releaseLabel": "Galaxy Tab S10 FE",
|
||||
"eol": false
|
||||
},
|
||||
"galaxy-tab-s10+": {
|
||||
"name": "galaxy-tab-s10+",
|
||||
"releaseLabel": "Galaxy Tab S10+",
|
||||
"eol": false
|
||||
},
|
||||
"galaxy-tab-s-8.4-lte": {
|
||||
"name": "galaxy-tab-s-8.4-lte",
|
||||
"eol": "2016-12-01"
|
||||
},
|
||||
"galaxy-tab-s-8.4": {
|
||||
"name": "galaxy-tab-s-8.4",
|
||||
"eol": "2017-08-01"
|
||||
},
|
||||
"galaxy-tab-s-10.5-lte": {
|
||||
"name": "galaxy-tab-s-10.5-lte",
|
||||
"eol": "2016-12-01"
|
||||
},
|
||||
"galaxy-tab-s-10.5": {
|
||||
"name": "galaxy-tab-s-10.5",
|
||||
"eol": "2017-08-01"
|
||||
},
|
||||
"galaxy-tab-pro-12.2-lte": {
|
||||
"name": "galaxy-tab-pro-12.2-lte",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-pro-12.2-3g": {
|
||||
"name": "galaxy-tab-pro-12.2-3g",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-pro-12.2": {
|
||||
"name": "galaxy-tab-pro-12.2",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-j": {
|
||||
"name": "galaxy-tab-j",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-e-9.6": {
|
||||
"name": "galaxy-tab-e-9.6",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-e-8.0": {
|
||||
"name": "galaxy-tab-e-8.0",
|
||||
"eol": "2020-11-10"
|
||||
},
|
||||
"galaxy-tab-advanced2": {
|
||||
"name": "galaxy-tab-advanced2",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-active5": {
|
||||
"name": "galaxy-tab-active5",
|
||||
"releaseLabel": "Galaxy Tab Active5",
|
||||
"eol": false
|
||||
},
|
||||
"galaxy-tab-active4-pro": {
|
||||
"name": "galaxy-tab-active4-pro",
|
||||
"eol": false,
|
||||
"releaseLabel": "Galaxy Tab Active4 Pro"
|
||||
},
|
||||
"galaxy-tab-active3": {
|
||||
"name": "galaxy-tab-active3",
|
||||
"eol": false,
|
||||
"releaseLabel": "Galaxy Tab Active3"
|
||||
},
|
||||
"galaxy-tab-active2": {
|
||||
"name": "galaxy-tab-active2",
|
||||
"eol": "2021-11-17"
|
||||
},
|
||||
"galaxy-tab-active-pro": {
|
||||
"name": "galaxy-tab-active-pro",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-active-lte": {
|
||||
"name": "galaxy-tab-active-lte",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-active": {
|
||||
"name": "galaxy-tab-active",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-a9+": {
|
||||
"name": "galaxy-tab-a9+",
|
||||
"releaseLabel": "Galaxy Tab A9+",
|
||||
"eol": false
|
||||
},
|
||||
"galaxy-tab-a9": {
|
||||
"name": "galaxy-tab-a9",
|
||||
"releaseLabel": "Galaxy Tab A9",
|
||||
"eol": false
|
||||
},
|
||||
"galaxy-tab-a8": {
|
||||
"name": "galaxy-tab-a8",
|
||||
"eol": "2026-01-17",
|
||||
"releaseLabel": "Galaxy Tab A8"
|
||||
},
|
||||
"galaxy-tab-a7-lite": {
|
||||
"name": "galaxy-tab-a7-lite",
|
||||
"eol": "2025-05-27",
|
||||
"releaseLabel": "Galaxy Tab A7 Lite"
|
||||
},
|
||||
"galaxy-tab-a7-10.4-2022": {
|
||||
"name": "galaxy-tab-a7-10.4-2022",
|
||||
"eol": "2026-11-21"
|
||||
},
|
||||
"galaxy-tab-a7-10.4-2020": {
|
||||
"name": "galaxy-tab-a7-10.4-2020",
|
||||
"eol": "2024-09-11"
|
||||
},
|
||||
"galaxy-tab-a-9.7-and-s-pen": {
|
||||
"name": "galaxy-tab-a-9.7-and-s-pen",
|
||||
"eol": "2017-08-01"
|
||||
},
|
||||
"galaxy-tab-a-9.7": {
|
||||
"name": "galaxy-tab-a-9.7",
|
||||
"eol": "2017-08-01"
|
||||
},
|
||||
"galaxy-tab-a-8.4-2020": {
|
||||
"name": "galaxy-tab-a-8.4-2020",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-a-8.0-with-s-pen-2019": {
|
||||
"name": "galaxy-tab-a-8.0-with-s-pen-2019",
|
||||
"eol": "2021-11-17"
|
||||
},
|
||||
"galaxy-tab-a-8.0-and-s-pen-2015": {
|
||||
"name": "galaxy-tab-a-8.0-and-s-pen-2015",
|
||||
"eol": "2017-08-01"
|
||||
},
|
||||
"galaxy-tab-a-8.0-2019": {
|
||||
"name": "galaxy-tab-a-8.0-2019",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-a-8.0-2018": {
|
||||
"name": "galaxy-tab-a-8.0-2018",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-a-8.0-2017": {
|
||||
"name": "galaxy-tab-a-8.0-2017",
|
||||
"eol": "2021-11-17"
|
||||
},
|
||||
"galaxy-tab-a-8.0-2015": {
|
||||
"name": "galaxy-tab-a-8.0-2015",
|
||||
"eol": "2017-08-01"
|
||||
},
|
||||
"galaxy-tab-a-7.0-2016": {
|
||||
"name": "galaxy-tab-a-7.0-2016",
|
||||
"eol": "2016-12-30"
|
||||
},
|
||||
"galaxy-tab-a-10.5-2018": {
|
||||
"name": "galaxy-tab-a-10.5-2018",
|
||||
"eol": "2022-06-01"
|
||||
},
|
||||
"galaxy-tab-a-10.1-2019": {
|
||||
"name": "galaxy-tab-a-10.1-2019",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-a-10.1-2016": {
|
||||
"name": "galaxy-tab-a-10.1-2016",
|
||||
"eol": "2020-04-01"
|
||||
},
|
||||
"galaxy-tab-4-8.0-lte": {
|
||||
"name": "galaxy-tab-4-8.0-lte",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-4-8.0-3g": {
|
||||
"name": "galaxy-tab-4-8.0-3g",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-4-8.0": {
|
||||
"name": "galaxy-tab-4-8.0",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-4-7.0-lte": {
|
||||
"name": "galaxy-tab-4-7.0-lte",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-4-7.0-3g": {
|
||||
"name": "galaxy-tab-4-7.0-3g",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-4-7.0": {
|
||||
"name": "galaxy-tab-4-7.0",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-4-10.1-lte": {
|
||||
"name": "galaxy-tab-4-10.1-lte",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-4-10.1-3g": {
|
||||
"name": "galaxy-tab-4-10.1-3g",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-4-10.1": {
|
||||
"name": "galaxy-tab-4-10.1",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-3-v": {
|
||||
"name": "galaxy-tab-3-v",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-3-lite-7.0-ve": {
|
||||
"name": "galaxy-tab-3-lite-7.0-ve",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-3-lite-7.0-3g": {
|
||||
"name": "galaxy-tab-3-lite-7.0-3g",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-tab-3-lite-7.0": {
|
||||
"name": "galaxy-tab-3-lite-7.0",
|
||||
"eol": true
|
||||
},
|
||||
"galaxy-star-trios-s5283": {
|
||||
"name": "galaxy-star-trios-s5283",
|
||||
"eol": true
|
||||
|
||||
@@ -47,6 +47,9 @@ class AutoConfig:
|
||||
|
||||
return None
|
||||
|
||||
def is_excluded(self, version: str) -> bool:
|
||||
return self.first_match(version) is None
|
||||
|
||||
def render(self, match: re.Match) -> str:
|
||||
return self.version_template.render(**match.groupdict())
|
||||
|
||||
|
||||
@@ -1,87 +0,0 @@
|
||||
import logging
|
||||
import re
|
||||
from datetime import date, datetime, time, timezone
|
||||
|
||||
from bs4 import BeautifulSoup
|
||||
from common import dates, endoflife, http, releasedata
|
||||
|
||||
"""Detect new models and aggregate EOL data for Samsung Mobile devices.
|
||||
|
||||
This script works cumulatively: when a model is not listed anymore on https://security.samsungmobile.com/workScope.smsb
|
||||
it retains the date and use it as the model's EOL date.
|
||||
"""
|
||||
|
||||
TITLES_BY_UPDATE_CADENCE = {
|
||||
"monthly": "Current Models for Monthly Security Updates",
|
||||
"quarterly": "Current Models for Quarterly Security Updates",
|
||||
"biannual": "Current Models for Biannual Security Updates",
|
||||
}
|
||||
|
||||
EXCLUDED_MODELS = {
|
||||
"galaxy-tab-a7-10.4-2022": "still available according to https://www.gsmarena.com/samsung_galaxy_tab_a7_10_4_(2022)-11988.php",
|
||||
"galaxy-watch5-pro": "will be tracked in a dedicated product",
|
||||
"galaxy-watch5": "will be tracked in a dedicated product",
|
||||
"galaxy-watch4-classic": "will be tracked in a dedicated product",
|
||||
"galaxy-watch4": "will be tracked in a dedicated product",
|
||||
"galaxy-m13-india": "still available according to https://www.gsmarena.com/samsung_galaxy_m13_(india)-11654.php",
|
||||
"galaxy-a13-sm-a137": "still available according to https://www.gsmarena.com/samsung_galaxy_a13_(sm_a137)-11665.php",
|
||||
"galaxy-a-quantum2": "still available according to https://www.gsmarena.com/samsung_galaxy_quantum_2-10850.php",
|
||||
}
|
||||
|
||||
with releasedata.ProductData("samsung-mobile") as product_data:
|
||||
today = dates.today()
|
||||
|
||||
frontmatter = endoflife.ProductFrontmatter(product_data.name)
|
||||
frontmatter_release_names = frontmatter.get_release_names()
|
||||
|
||||
# Copy EOL dates from frontmatter to product data
|
||||
for frontmatter_release in frontmatter.get_releases():
|
||||
eol = frontmatter_release.get("eol")
|
||||
eol = datetime.combine(eol, time.min, tzinfo=timezone.utc) if isinstance(eol, date) else eol
|
||||
|
||||
release = product_data.get_release(frontmatter_release.get("releaseCycle"))
|
||||
release.set_eol(eol)
|
||||
|
||||
response = http.fetch_url("https://security.samsungmobile.com/workScope.smsb")
|
||||
soup = BeautifulSoup(response.text, features="html5lib")
|
||||
for update_cadence, title in TITLES_BY_UPDATE_CADENCE.items():
|
||||
models_list = soup.find(string=lambda text, search=title: search in text if text else False).find_next("ul")
|
||||
|
||||
for item in models_list.find_all("li"):
|
||||
models = item.text.replace("Enterprise Models:", "")
|
||||
logging.info(f"Found {models} for {update_cadence} security updates")
|
||||
|
||||
for model in re.split(r',\s*', models):
|
||||
name = endoflife.to_identifier(model)
|
||||
|
||||
release = product_data.get_release(name)
|
||||
release.set_label(model.strip())
|
||||
|
||||
if name in frontmatter_release_names:
|
||||
frontmatter_release_names.remove(name)
|
||||
current_eol = release.get_eol()
|
||||
if current_eol is True or (isinstance(current_eol, datetime) and current_eol <= today):
|
||||
logging.info(f"Known model {name} is incorrectly marked as EOL, updating eol")
|
||||
release.set_eol(False)
|
||||
else:
|
||||
logging.debug(f"Known model {name} is not EOL, keeping eol as {current_eol}")
|
||||
|
||||
else:
|
||||
logging.debug(f"Found new model {name}")
|
||||
release.set_eol(False)
|
||||
|
||||
# the remaining models in frontmatter_release_names are not listed anymore on the Samsung page => they are EOL
|
||||
for eol_model_name in frontmatter_release_names:
|
||||
release = product_data.get_release(eol_model_name)
|
||||
current_eol = release.get_eol()
|
||||
if eol_model_name in EXCLUDED_MODELS:
|
||||
logging.debug(f"Skipping model {eol_model_name}: {EXCLUDED_MODELS[eol_model_name]}")
|
||||
elif current_eol is False:
|
||||
logging.info(f"Model {eol_model_name} is not EOL, setting eol")
|
||||
release.set_eol(today)
|
||||
elif isinstance(current_eol, datetime):
|
||||
if current_eol > today:
|
||||
logging.info(f"Model {eol_model_name} is not marked as EOL, setting eol as {today}")
|
||||
release.set_eol(today)
|
||||
else:
|
||||
logging.debug(f"Model {eol_model_name} is already EOL, keeping eol as {current_eol}")
|
||||
80
src/samsung-security.py
Normal file
80
src/samsung-security.py
Normal file
@@ -0,0 +1,80 @@
|
||||
import logging
|
||||
import re
|
||||
import sys
|
||||
from datetime import date, datetime, time, timezone
|
||||
|
||||
from bs4 import BeautifulSoup
|
||||
from common import dates, endoflife, http, releasedata
|
||||
|
||||
"""Detect new models and aggregate EOL data for Samsung Mobile devices.
|
||||
|
||||
This script works cumulatively: when a model is not listed anymore on https://security.samsungmobile.com/workScope.smsb
|
||||
it retains the date and use it as the model's EOL date.
|
||||
"""
|
||||
|
||||
TODAY = dates.today()
|
||||
|
||||
p_filter = sys.argv[1] if len(sys.argv) > 1 else None
|
||||
m_filter = sys.argv[2] if len(sys.argv) > 2 else None
|
||||
for config in endoflife.list_configs(p_filter, 'samsung-security', m_filter):
|
||||
with releasedata.ProductData(config.product) as product_data:
|
||||
frontmatter = endoflife.ProductFrontmatter(product_data.name)
|
||||
frontmatter_release_names = frontmatter.get_release_names()
|
||||
|
||||
# Copy EOL dates from frontmatter to product data
|
||||
for frontmatter_release in frontmatter.get_releases():
|
||||
eol = frontmatter_release.get("eol")
|
||||
eol = datetime.combine(eol, time.min, tzinfo=timezone.utc) if isinstance(eol, date) else eol
|
||||
|
||||
release = product_data.get_release(frontmatter_release.get("releaseCycle"))
|
||||
release.set_eol(eol)
|
||||
|
||||
|
||||
response = http.fetch_url(config.url)
|
||||
soup = BeautifulSoup(response.text, features="html5lib")
|
||||
|
||||
sections = config.data.get("sections", {})
|
||||
for update_cadence, title in sections.items():
|
||||
models_list = soup.find(string=lambda text, search=title: search in text if text else False).find_next("ul")
|
||||
|
||||
for item in models_list.find_all("li"):
|
||||
models = item.text.replace("Enterprise Models:", "")
|
||||
logging.info(f"Found {models} for {update_cadence} security updates")
|
||||
|
||||
for model in re.split(r',\s*', models):
|
||||
name = endoflife.to_identifier(model)
|
||||
if config.is_excluded(name):
|
||||
logging.debug(f"Ignoring model '{name}', excluded by configuration")
|
||||
continue
|
||||
|
||||
release = product_data.get_release(name)
|
||||
release.set_label(model.strip())
|
||||
|
||||
if name in frontmatter_release_names:
|
||||
frontmatter_release_names.remove(name)
|
||||
current_eol = release.get_eol()
|
||||
if current_eol is True or (isinstance(current_eol, datetime) and current_eol <= TODAY):
|
||||
logging.info(f"Known model {name} is incorrectly marked as EOL, updating eol")
|
||||
release.set_eol(False)
|
||||
else:
|
||||
logging.debug(f"Known model {name} is not EOL, keeping eol as {current_eol}")
|
||||
|
||||
else:
|
||||
logging.debug(f"Found new model {name}")
|
||||
release.set_eol(False)
|
||||
|
||||
# the remaining models in frontmatter_release_names are not listed anymore on the Samsung page => they are EOL
|
||||
for eol_model_name in frontmatter_release_names:
|
||||
release = product_data.get_release(eol_model_name)
|
||||
current_eol = release.get_eol()
|
||||
if config.is_excluded(eol_model_name):
|
||||
logging.debug(f"Skipping model {eol_model_name}, excluded by configuration")
|
||||
elif current_eol is False:
|
||||
logging.info(f"Model {eol_model_name} is not EOL, setting eol")
|
||||
release.set_eol(TODAY)
|
||||
elif isinstance(current_eol, datetime):
|
||||
if current_eol > TODAY:
|
||||
logging.info(f"Model {eol_model_name} is not marked as EOL, setting eol as {TODAY}")
|
||||
release.set_eol(TODAY)
|
||||
else:
|
||||
logging.debug(f"Model {eol_model_name} is already EOL, keeping eol as {current_eol}")
|
||||
Reference in New Issue
Block a user