Skip to content

Commit

Permalink
feat: Automatically extract Posit versions
Browse files Browse the repository at this point in the history
  • Loading branch information
csgillespie committed Jun 24, 2024
1 parent 9b0478f commit 92201e1
Show file tree
Hide file tree
Showing 5 changed files with 299 additions and 100 deletions.
4 changes: 2 additions & 2 deletions R/posit_versions.R
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ get_posit_versions = function(type = c("connect", "workbench", "drivers")) {
fname = system.file("extdata", "versions", paste0(type, ".csv"),
mustWork = TRUE, package = "audit.base"
)
versions = readr::read_csv(fname, comment = "#", col_types = c("c", "D", "c"))
versions = dplyr::arrange(versions, dplyr::desc(date))
versions = readr::read_csv(fname, comment = "#", col_types = c("c", "c"))
versions = dplyr::arrange(versions, dplyr::desc(name))
return(versions)
}

Expand Down
45 changes: 45 additions & 0 deletions R/rvest.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
extract_cves = function(url) {
page = rvest::read_html(url)
sections = rvest::html_elements(page, "section")
v_tibbles = purrr::map_df(sections, extract_components)
all_v = get_all_versions(page) |>
dplyr::filter(!.data$name %in% v_tibbles$name) %>%
dplyr::bind_rows(v_tibbles) %>%
dplyr::arrange(dplyr::desc(name))
all_v
}

extract_components = function(section) {
posit_name = rvest::html_attrs(section)
posit_name = as.vector(posit_name["id"])
posit_id = stringr::str_extract(posit_name, "[0-9]{4}\\.[0-9]{1,2}\\.[0-9]{1,2}")

li = section %>%
rvest::html_elements("li") %>%
rvest::html_text2()

cves = stringr::str_extract(li, "^CVE-[0-9]{4}-[0-9]*")
cves = cves[!is.na(cves)]

if (length(cves) == 0L || is.na(posit_id)) {
NULL
} else {
tibble::tibble(name = posit_id, cve = cves)
}
}

get_all_versions = function(page) {
versions = page %>%
rvest::html_nodes('h2') %>%
rvest::html_text()
v = stringr::str_extract(versions, "202[0-9]\\.[0-9]{2}\\.[0-9]{1,2}")
tibble::tibble(name = v[!is.na(v)], cve = "")
}

update_posit_versions = function() {
readr::write_csv(extract_cves("https://docs.posit.co/connect/news/"),
file = "inst/extdata/versions/connect.csv")

readr::write_csv(extract_cves("https://docs.posit.co/ide/news/"),
file = "inst/extdata/versions/workbench.csv")
}
296 changes: 218 additions & 78 deletions inst/extdata/versions/connect.csv
Original file line number Diff line number Diff line change
@@ -1,78 +1,218 @@
#https://docs.posit.co/connect/news/
version,date,cve
2024.05.0,2024-05-31,CVE-2024-24787
2024.05.0,2024-05-31,CVE-2024-24788
2024.04.1,2024-05-07,
2024.04.0,2024-04-29,CVE-2023-39320
2024.04.0,2024-04-29,CVE-2023-39320
2024.04.0,2024-04-29,CVE-2023-39319
2024.04.0,2024-04-29,CVE-2023-39321
2024.04.0,2024-04-29,CVE-2023-45288
2024.04.0,2024-04-29,CVE-2023-45857
2024.04.0,2024-04-29,CVE-2024-31207
2024.03.0,2024-03-28,
2024.02.0,2024-02-27,CVE-2023-7104
2024.01.0,2024-01-25,CVE-2023-48795
2024.01.0,2024-01-25,CVE-2023-45683
2023.12.0,2023-12-18,CVE-2023-45283
2023.12.0,2023-12-18,CVE-2023-45284
2023.12.0,2023-12-18,CVE-2023-39326
2023.12.0,2023-12-18,CVE-2023-45285
2023.10.0,2023-10-31,CVE-2023-39323
2023.10.0,2023-10-31,CVE-2023-39325
2023.10.0,2023-10-31,CVE-2023-44487
2023.09.0,2023-09-23,CVE-2023-29409
2023.09.0,2023-09-23,CVE-2023-39318
2023.09.0,2023-09-23,CVE-2023-39319
2023.09.0,2023-09-23,CVE-2023-39320
2023.09.0,2023-09-23,CVE-2023-39321
2023.09.0,2023-09-23,CVE-2023-39322
2023.09.0,2023-09-23,CVE-2023-26117
2023.09.0,2023-09-23,CVE-2023-26116
2023.09.0,2023-09-23,CVE-2023-26118
2023.07.0,2023-07-27,CVE-2023-29406
2023.06.0,2023-06-26,CVE-2023-29401
2023.06.0,2023-06-26,CVE-2023-29402
2023.06.0,2023-06-26,CVE-2023-29403
2023.06.0,2023-06-26,CVE-2023-29404
2023.06.0,2023-06-26,CVE-2023-29405
2023.05.0,2023-05-10,CVE-2023-24537
2023.05.0,2023-05-10,CVE-2023-24538
2023.05.0,2023-05-10,CVE-2023-24534
2023.05.0,2023-05-10,CVE-2023-24536
2023.05.0,2023-05-10,CVE-2023-28119
2023.05.0,2023-05-10,CVE-2022-41912
2023.05.0,2023-05-10,CVE-2023-24539
2023.05.0,2023-05-10,CVE-2023-24540
2023.05.0,2023-05-10,CVE-2023-29400
2023.05.0,2023-05-10,CVE-2023-26125
2023.03.0,2023-03-13,CVE-2022-41722
2023.03.0,2023-03-13,CVE-2022-41725
2023.03.0,2023-03-13,CVE-2022-41724
2023.03.0,2023-03-13,CVE-2022-41723
2023.03.0,2023-03-13,CVE-2023-24532
2023.01.0,2023-01-25,CVE-2022-35737
2022.12.0,2022-12-10,CVE-2022-0536
2022.12.0,2022-12-10,CVE-2022-41720
2022.12.0,2022-12-10,CVE-2022-41717
2022.11.0,2022-11-16,CVE-2022-25844
2022.11.0,2022-11-16,CVE-2022-25869
2022.11.0,2022-11-16,CVE-2022-41716
2022.10.0,2022-10-26,CVE-2022-2879
2022.10.0,2022-10-26,CVE-2022-2879
2022.10.0,2022-10-26,CVE-2022-41715
2022.10.0,2022-10-26,CVE-2022-32149
2022.09.0,2022-09-13,CVE-2022-28948
2022.09.0,2022-09-13,CVE-2022-28948
2022.09.0,2022-09-13,CVE-2022-32190
2022.08.1,2022-08-25,
2022.08.0,2022-08-17,CVE-2022-32189
2022.07.0,2022-07-21,CVE-2022-1705
2022.07.0,2022-07-21,CVE-2022-32148
2022.07.0,2022-07-21,CVE-2022-30631
2022.07.0,2022-07-21,CVE-2022-30633
2022.07.0,2022-07-21,CVE-2022-28131
2022.07.0,2022-07-21,CVE-2022-30635
2022.07.0,2022-07-21,CVE-2022-30632
2022.07.0,2022-07-21,CVE-2022-30630
2022.07.0,2022-07-21,CVE-2022-1962
name,cve
2024.05.0,CVE-2024-24787
2024.05.0,CVE-2024-24788
2024.05.0,CVE-2024-24787
2024.05.0,CVE-2024-24788
2024.04.1,
2024.04.0,CVE-2023-39320
2024.04.0,CVE-2023-39320
2024.04.0,CVE-2023-39319
2024.04.0,CVE-2023-39321
2024.04.0,CVE-2023-45288
2024.04.0,CVE-2023-45857
2024.04.0,CVE-2024-31207
2024.04.0,CVE-2023-39320
2024.04.0,CVE-2023-39320
2024.04.0,CVE-2023-39319
2024.04.0,CVE-2023-39321
2024.04.0,CVE-2023-45288
2024.04.0,CVE-2023-45857
2024.04.0,CVE-2024-31207
2024.03.0,
2024.02.0,CVE-2023-7104
2024.02.0,CVE-2023-7104
2024.01.0,CVE-2023-48795
2024.01.0,CVE-2023-45683
2024.01.0,CVE-2023-48795
2024.01.0,CVE-2023-45683
2023.12.0,CVE-2023-45283
2023.12.0,CVE-2023-45284
2023.12.0,CVE-2023-39326
2023.12.0,CVE-2023-45285
2023.12.0,CVE-2023-45283
2023.12.0,CVE-2023-45284
2023.12.0,CVE-2023-39326
2023.12.0,CVE-2023-45285
2023.10.0,CVE-2023-39323
2023.10.0,CVE-2023-39325
2023.10.0,CVE-2023-44487
2023.10.0,CVE-2023-39323
2023.10.0,CVE-2023-39325
2023.10.0,CVE-2023-44487
2023.09.0,CVE-2023-29409
2023.09.0,CVE-2023-39318
2023.09.0,CVE-2023-39319
2023.09.0,CVE-2023-39320
2023.09.0,CVE-2023-39321
2023.09.0,CVE-2023-39322
2023.09.0,CVE-2023-26117
2023.09.0,CVE-2023-26116
2023.09.0,CVE-2023-26118
2023.09.0,CVE-2023-29409
2023.09.0,CVE-2023-39318
2023.09.0,CVE-2023-39319
2023.09.0,CVE-2023-39320
2023.09.0,CVE-2023-39321
2023.09.0,CVE-2023-39322
2023.09.0,CVE-2023-26117
2023.09.0,CVE-2023-26116
2023.09.0,CVE-2023-26118
2023.07.0,CVE-2023-29406
2023.07.0,CVE-2023-29406
2023.06.0,CVE-2023-29401
2023.06.0,CVE-2023-29402
2023.06.0,CVE-2023-29403
2023.06.0,CVE-2023-29404
2023.06.0,CVE-2023-29405
2023.06.0,CVE-2023-29401
2023.06.0,CVE-2023-29402
2023.06.0,CVE-2023-29403
2023.06.0,CVE-2023-29404
2023.06.0,CVE-2023-29405
2023.05.0,CVE-2023-24537
2023.05.0,CVE-2023-24538
2023.05.0,CVE-2023-24534
2023.05.0,CVE-2023-24536
2023.05.0,CVE-2023-28119
2023.05.0,CVE-2022-41912
2023.05.0,CVE-2023-24539
2023.05.0,CVE-2023-24540
2023.05.0,CVE-2023-29400
2023.05.0,CVE-2023-26125
2023.05.0,CVE-2022-38131
2023.05.0,CVE-2023-24537
2023.05.0,CVE-2023-24538
2023.05.0,CVE-2023-24534
2023.05.0,CVE-2023-24536
2023.05.0,CVE-2023-28119
2023.05.0,CVE-2022-41912
2023.05.0,CVE-2023-24539
2023.05.0,CVE-2023-24540
2023.05.0,CVE-2023-29400
2023.05.0,CVE-2023-26125
2023.05.0,CVE-2022-38131
2023.03.0,CVE-2022-41722
2023.03.0,CVE-2022-41725
2023.03.0,CVE-2022-41724
2023.03.0,CVE-2022-41723
2023.03.0,CVE-2023-24532
2023.03.0,CVE-2022-41722
2023.03.0,CVE-2022-41725
2023.03.0,CVE-2022-41724
2023.03.0,CVE-2022-41723
2023.03.0,CVE-2023-24532
2023.01.1,
2023.01.0,
2022.12.0,CVE-2022-0536
2022.12.0,CVE-2022-41720
2022.12.0,CVE-2022-41717
2022.12.0,CVE-2022-0536
2022.12.0,CVE-2022-41720
2022.12.0,CVE-2022-41717
2022.11.0,CVE-2022-25844
2022.11.0,CVE-2022-25869
2022.11.0,CVE-2022-41716
2022.11.0,CVE-2022-25844
2022.11.0,CVE-2022-25869
2022.11.0,CVE-2022-41716
2022.10.0,CVE-2022-2879
2022.10.0,CVE-2022-2880
2022.10.0,CVE-2022-41715
2022.10.0,CVE-2022-32149
2022.10.0,CVE-2022-2879
2022.10.0,CVE-2022-2880
2022.10.0,CVE-2022-41715
2022.10.0,CVE-2022-32149
2022.09.0,CVE-2022-28948
2022.09.0,CVE-2022-27664
2022.09.0,CVE-2022-32190
2022.09.0,CVE-2022-28948
2022.09.0,CVE-2022-27664
2022.09.0,CVE-2022-32190
2022.08.1,
2022.08.0,CVE-2022-32189
2022.08.0,CVE-2022-32189
2022.07.0,CVE-2022-1705
2022.07.0,CVE-2022-32148
2022.07.0,CVE-2022-30631
2022.07.0,CVE-2022-30633
2022.07.0,CVE-2022-28131
2022.07.0,CVE-2022-30635
2022.07.0,CVE-2022-30632
2022.07.0,CVE-2022-30630
2022.07.0,CVE-2022-1962
2022.07.0,CVE-2022-1705
2022.07.0,CVE-2022-32148
2022.07.0,CVE-2022-30631
2022.07.0,CVE-2022-30633
2022.07.0,CVE-2022-28131
2022.07.0,CVE-2022-30635
2022.07.0,CVE-2022-30632
2022.07.0,CVE-2022-30630
2022.07.0,CVE-2022-1962
2022.06.2,
2022.06.0,CVE-2022-30634
2022.06.0,CVE-2022-30629
2022.06.0,CVE-2022-30580
2022.06.0,CVE-2022-29804
2022.06.0,CVE-2022-30634
2022.06.0,CVE-2022-30629
2022.06.0,CVE-2022-30580
2022.06.0,CVE-2022-29804
2022.05.1,
2022.05.0,CVE-2022-21698
2022.05.0,CVE-2020-28483
2022.05.0,CVE-2022-29526
2022.05.0,CVE-2022-21698
2022.05.0,CVE-2020-28483
2022.05.0,CVE-2022-29526
2022.04.3,
2022.04.2,
2022.04.1,
2022.04.0,CVE-2022-24675
2022.04.0,CVE-2022-28327
2022.04.0,CVE-2022-27536
2022.04.0,CVE-2022-24675
2022.04.0,CVE-2022-28327
2022.04.0,CVE-2022-27536
2022.03.3,
2022.03.2,
2022.03.1,
2022.03.0,CVE-2022-24921
2022.03.0,CVE-2022-27191
2022.03.0,CVE-2022-24921
2022.03.0,CVE-2022-27191
2022.02.4,
2022.02.3,
2022.02.2,
2022.02.0,CVE-2020-7676
2022.02.0,CVE-2019-10768
2022.02.0,CVE-2022-23806
2022.02.0,CVE-2022-23772
2022.02.0,CVE-2022-23773
2022.02.0,CVE-2020-7676
2022.02.0,CVE-2019-10768
2022.02.0,CVE-2022-23806
2022.02.0,CVE-2022-23772
2022.02.0,CVE-2022-23773
2021.12.1,
2021.12.0,CVE-2021-43565
2021.12.0,CVE-2021-44716
2021.12.0,CVE-2021-44717
2021.12.0,CVE-2021-43565
2021.12.0,CVE-2021-44716
2021.12.0,CVE-2021-44717
2021.11.1,
2021.11.0,CVE-2021-41772
2021.11.0,CVE-2021-41771
2021.11.0,CVE-2021-41772
2021.11.0,CVE-2021-41771
2021.10.0,CVE-2021-38297
2021.10.0,CVE-2021-39293
2021.10.0,CVE-2021-38297
2021.10.0,CVE-2021-39293
2021.09.0,
2021.08.2,
2021.08.1,CVE-2021-3664
2021.08.1,CVE-2021-27515
2021.08.0,CVE-2021-36221
12 changes: 6 additions & 6 deletions inst/extdata/versions/drivers.csv
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# https://docs.posit.co/pro-drivers/documentation/
version,date,cve
2024.03.0,2024-03-01,
2023.12.1,2023-11-03,
2023.05.0,2023-05-01,
2022.11.0,2022-11-01,
2021.10.0,2021-10-01,
version,cve
2024.03.0,
2023.12.1,
2023.05.0,
2022.11.0,
2021.10.0,

Loading

0 comments on commit 92201e1

Please sign in to comment.