diff --git a/.eslintignore b/.eslintignore
index c70df40ba..094cc2757 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -7,7 +7,7 @@ web/js/videojs.zoomrotate.js
web/js/fontfaceobserver.standalone.js
web/skins/classic/js/bootstrap-4.5.0.js
web/skins/classic/js/bootstrap.bundle.min.js
-web/skins/classic/js/bootstrap-table-1.22.3
+web/skins/classic/js/bootstrap-table-1.23.5
web/skins/classic/js/chosen
web/skins/classic/js/dateTimePicker
web/skins/classic/js/jquery-*.js
@@ -16,7 +16,6 @@ web/skins/classic/js/jquery.js
web/skins/classic/js/moment.js
web/skins/classic/js/video.js
web/skins/classic/assets
-web/tools/mootools
web/js/janus.js
web/js/ajaxQueue.js
web/js/hls.js
diff --git a/.gitignore b/.gitignore
index a856b1d5f..ee6ac35e7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -199,10 +199,6 @@ web/cmake_install.cmake
web/events/
web/images/
web/includes/config.php
-web/tools/mootools/CMakeFiles/
-web/tools/mootools/cmake_install.cmake
-web/tools/mootools/mootools-core.js
-web/tools/mootools/mootools-more.js
web/undef.log
zm.conf
zmconfgen.pl
diff --git a/.readthedocs.yaml b/.readthedocs.yaml
index 50510f84d..b476f4f36 100644
--- a/.readthedocs.yaml
+++ b/.readthedocs.yaml
@@ -7,6 +7,7 @@ build:
sphinx:
fail_on_warning: true
+ configuration: docs/conf.py
python:
install:
diff --git a/.well-known/funding-manifest-urls b/.well-known/funding-manifest-urls
new file mode 100644
index 000000000..50f929574
--- /dev/null
+++ b/.well-known/funding-manifest-urls
@@ -0,0 +1 @@
+https://zoneminder.com/funding.json
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 907a0afa0..4d0cf4bef 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -445,7 +445,7 @@ if(NOT ZM_NO_MQTT)
find_package(MOSQUITTO)
if(MOSQUITTO_FOUND)
include_directories(${MOSQUITTO_INCLUDE_DIRS})
- list(APPEND ZM_BIN_LIBS "${MOSQUITTO_LIBRARIES}")
+ list(APPEND ZM_BIN_LIBS "${MOSQUITTO_LIBRARY}")
set(optlibsfound "${optlibsfound} Mosquitto")
else()
set(optlibsnotfound "${optlibsnotfound} Mosquitto")
@@ -454,7 +454,7 @@ if(NOT ZM_NO_MQTT)
find_package(MOSQUITTOPP)
if(MOSQUITTOPP_FOUND)
include_directories(${MOSQUITTOPP_INCLUDE_DIRS})
- list(APPEND ZM_BIN_LIBS "${MOSQUITTOPP_LIBRARIES}")
+ list(APPEND ZM_BIN_LIBS "${MOSQUITTOPP_LIBRARY}")
set(optlibsfound "${optlibsfound} Mosquittopp")
else()
set(optlibsnotfound "${optlibsnotfound} Mosquittopp")
diff --git a/cmake/Modules/Pod2Man.cmake b/cmake/Modules/Pod2Man.cmake
index f1c0e400a..6728b673f 100644
--- a/cmake/Modules/Pod2Man.cmake
+++ b/cmake/Modules/Pod2Man.cmake
@@ -47,7 +47,7 @@ MACRO(POD2MAN PODFILE MANFILE SECTION MANPAGE_DEST_PREFIX)
ADD_CUSTOM_COMMAND(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${MANFILE}.${SECTION}.gz
- COMMAND ${GZIP} --best -c ${CMAKE_CURRENT_BINARY_DIR}/${MANFILE}.${SECTION} > ${CMAKE_CURRENT_BINARY_DIR}/${MANFILE}.${SECTION}.gz
+ COMMAND ${GZIP} -n --best -c ${CMAKE_CURRENT_BINARY_DIR}/${MANFILE}.${SECTION} > ${CMAKE_CURRENT_BINARY_DIR}/${MANFILE}.${SECTION}.gz
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${MANFILE}.${SECTION}
)
diff --git a/db/zm_update-1.37.27.sql b/db/zm_update-1.37.27.sql
index 6993e36f4..cb1cb049b 100644
--- a/db/zm_update-1.37.27.sql
+++ b/db/zm_update-1.37.27.sql
@@ -112,13 +112,34 @@ SET @s = (SELECT IF(
PREPARE stmt FROM @s;
EXECUTE stmt;
-REPLACE INTO Monitors_Permissions (UserId,Permission, MonitorId)
+SET @s = (SELECT IF(
+ (SELECT COUNT(*)
+ FROM INFORMATION_SCHEMA.STATISTICS
+ WHERE table_name = 'Users'
+ AND table_schema = DATABASE()
+ AND column_name = 'MonitorIds'
+ ) > 0,
+"REPLACE INTO Monitors_Permissions (UserId,Permission, MonitorId)
SELECT Id, 'Edit', SUBSTRING_INDEX(SUBSTRING_INDEX(Users.MonitorIds, ',', n.n), ',', -1) value FROM Users CROSS JOIN (
- SELECT a.N + b.N * 10 + 1 n FROM (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b ORDER BY n ) n WHERE Users.Monitors='Edit' and Users.MonitorIds != '' AND n.n <= 1 + (LENGTH(Users.MonitorIds) - LENGTH(REPLACE(Users.MonitorIds, ',', ''))) ORDER BY value;
+ SELECT a.N + b.N * 10 + 1 n FROM (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b ORDER BY n ) n WHERE Users.Monitors='Edit' and Users.MonitorIds != '' AND n.n <= 1 + (LENGTH(Users.MonitorIds) - LENGTH(REPLACE(Users.MonitorIds, ',', ''))) ORDER BY value",
+ "SELECT 'No MonitorIds in Users'"
+ ));
+PREPARE stmt FROM @s;
+EXECUTE stmt;
-REPLACE INTO Monitors_Permissions (UserId,Permission, MonitorId)
+SET @s = (SELECT IF(
+ (SELECT COUNT(*)
+ FROM INFORMATION_SCHEMA.STATISTICS
+ WHERE table_name = 'Users'
+ AND table_schema = DATABASE()
+ AND column_name = 'MonitorIds'
+ ) > 0,
+"REPLACE INTO Monitors_Permissions (UserId,Permission, MonitorId)
SELECT Id, 'View', SUBSTRING_INDEX(SUBSTRING_INDEX(Users.MonitorIds, ',', n.n), ',', -1) value FROM Users CROSS JOIN (
- SELECT a.N + b.N * 10 + 1 n FROM (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b ORDER BY n ) n WHERE Users.Monitors!='Edit' and Users.MonitorIds != '' AND n.n <= 1 + (LENGTH(Users.MonitorIds) - LENGTH(REPLACE(Users.MonitorIds, ',', ''))) ORDER BY value;
-
+ SELECT a.N + b.N * 10 + 1 n FROM (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b ORDER BY n ) n WHERE Users.Monitors!='Edit' and Users.MonitorIds != '' AND n.n <= 1 + (LENGTH(Users.MonitorIds) - LENGTH(REPLACE(Users.MonitorIds, ',', ''))) ORDER BY value",
+ "SELECT 'No MonitorIds in Users'"
+ ));
+PREPARE stmt FROM @s;
+EXECUTE stmt;
DELETE FROM Monitors_Permissions WHERE MonitorID NOT IN (SELECT Id FROM Monitors);
ALTER TABLE Monitors_Permissions ADD CONSTRAINT Monitors_Permissions_ibfk_1 FOREIGN KEY (`MonitorId`) REFERENCES `Monitors` (`Id`) ON DELETE CASCADE;
diff --git a/dep/jwt-cpp/.clang-format b/dep/jwt-cpp/.clang-format
new file mode 100644
index 000000000..2a60a0a3c
--- /dev/null
+++ b/dep/jwt-cpp/.clang-format
@@ -0,0 +1,22 @@
+BasedOnStyle: LLVM
+BreakBeforeBraces: Attach
+
+ColumnLimit: 120 # Match GitHub UI
+
+UseTab: Always
+TabWidth: 4
+IndentWidth: 4
+AccessModifierOffset: -4
+ContinuationIndentWidth: 4
+NamespaceIndentation: All
+IndentCaseLabels: false
+
+PointerAlignment: Left
+AlwaysBreakTemplateDeclarations: Yes
+SpaceAfterTemplateKeyword: false
+AllowShortCaseLabelsOnASingleLine: true
+AllowShortIfStatementsOnASingleLine: WithoutElse
+AllowShortBlocksOnASingleLine: Always
+
+FixNamespaceComments: true
+ReflowComments: false
diff --git a/dep/jwt-cpp/.clang-tidy b/dep/jwt-cpp/.clang-tidy
new file mode 100644
index 000000000..e35b6151d
--- /dev/null
+++ b/dep/jwt-cpp/.clang-tidy
@@ -0,0 +1,41 @@
+Checks: '-*,
+ bugprone-*,
+ cert-*,
+ clang-analyzer-*,
+ clang-diagnostic-*,
+ -clang-diagnostic-c++17-extensions,
+ google-*,
+ -google-runtime-references,
+ -google-readability-braces-around-statements,
+ hicpp-*,
+ -hicpp-braces-around-statements,
+ -hicpp-signed-bitwise,
+ misc-*,
+ -misc-non-private-member-variables-in-classes,
+ llvm-*,
+ modernize-*,
+ -modernize-use-trailing-return-type,
+ performance-*,
+ portability-*,
+ readability-*,
+ -readability-magic-numbers,
+ -readability-braces-around-statements,
+ -readability-uppercase-literal-suffix'
+
+CheckOptions:
+ - key: readability-identifier-naming.TypedefCase
+ value: lower_case
+ - key: readability-identifier-naming.StructCase
+ value: lower_case
+ - key: readability-identifier-naming.ClassCase
+ value: lower_case
+ - key: readability-identifier-naming.VariableCase
+ value: lower_case
+ - key: readability-identifier-naming.ParameterCase
+ value: lower_case
+ - key: readability-identifier-naming.FunctionCase
+ value: lower_case
+ - key: readability-identifier-naming.NamespaceCase
+ value: lower_case
+ - key: readability-identifier-naming.GlobalConstantCase
+ value: lower_case
\ No newline at end of file
diff --git a/dep/jwt-cpp/.cmake-format b/dep/jwt-cpp/.cmake-format
new file mode 100644
index 000000000..e2a32f9be
--- /dev/null
+++ b/dep/jwt-cpp/.cmake-format
@@ -0,0 +1,208 @@
+# ----------------------------------
+# Options affecting listfile parsing
+# ----------------------------------
+with section("parse"):
+
+ # Specify structure for custom cmake functions
+ additional_commands = { 'foo': { 'flags': ['BAR', 'BAZ'],
+ 'kwargs': {'DEPENDS': '*', 'HEADERS': '*', 'SOURCES': '*'}}}
+
+# -----------------------------
+# Options effecting formatting.
+# -----------------------------
+with section("format"):
+
+ # How wide to allow formatted cmake files
+ line_width = 120
+
+ # How many spaces to tab for indent
+ tab_size = 2
+
+ # If an argument group contains more than this many sub-groups (parg or kwarg
+ # groups) then force it to a vertical layout.
+ max_subgroups_hwrap = 12
+
+ # If a positional argument group contains more than this many arguments, then
+ # force it to a vertical layout.
+ max_pargs_hwrap = 24
+
+ # If true, separate flow control names from their parentheses with a space
+ separate_ctrl_name_with_space = False
+
+ # If true, separate function names from parentheses with a space
+ separate_fn_name_with_space = False
+
+ # If a statement is wrapped to more than one line, than dangle the closing
+ # parenthesis on its own line.
+ dangle_parens = False
+
+ # If the trailing parenthesis must be 'dangled' on its on line, then align it
+ # to this reference: `prefix`: the start of the statement, `prefix-indent`:
+ # the start of the statement, plus one indentation level, `child`: align to
+ # the column of the arguments
+ dangle_align = 'prefix'
+
+ # If the statement spelling length (including space and parenthesis) is
+ # smaller than this amount, then force reject nested layouts.
+ min_prefix_chars = 4
+
+ # If the statement spelling length (including space and parenthesis) is larger
+ # than the tab width by more than this amount, then force reject un-nested
+ # layouts.
+ max_prefix_chars = 10
+
+ # If a candidate layout is wrapped horizontally but it exceeds this many
+ # lines, then reject the layout.
+ max_lines_hwrap = 12
+
+ # What style line endings to use in the output.
+ line_ending = 'unix'
+
+ # Format command names consistently as 'lower' or 'upper' case
+ command_case = 'lower'
+
+ # Format keywords consistently as 'lower' or 'upper' case
+ keyword_case = 'upper'
+
+ # A list of command names which should always be wrapped
+ always_wrap = []
+
+ # If true, the argument lists which are known to be sortable will be sorted
+ # lexicographicall
+ enable_sort = True
+
+ # If true, the parsers may infer whether or not an argument list is sortable
+ # (without annotation).
+ autosort = False
+
+ # By default, if cmake-format cannot successfully fit everything into the
+ # desired linewidth it will apply the last, most agressive attempt that it
+ # made. If this flag is True, however, cmake-format will print error, exit
+ # with non-zero status code, and write-out nothing
+ require_valid_layout = False
+
+ # A dictionary mapping layout nodes to a list of wrap decisions. See the
+ # documentation for more information.
+ layout_passes = {}
+
+# ------------------------------------------------
+# Options affecting comment reflow and formatting.
+# ------------------------------------------------
+with section("markup"):
+
+ # What character to use for bulleted lists
+ bullet_char = '*'
+
+ # What character to use as punctuation after numerals in an enumerated list
+ enum_char = '.'
+
+ # If comment markup is enabled, don't reflow the first comment block in each
+ # listfile. Use this to preserve formatting of your copyright/license
+ # statements.
+ first_comment_is_literal = False
+
+ # If comment markup is enabled, don't reflow any comment block which matches
+ # this (regex) pattern. Default is `None` (disabled).
+ literal_comment_pattern = None
+
+ # Regular expression to match preformat fences in comments
+ # default=r'^\s*([`~]{3}[`~]*)(.*)$'
+ fence_pattern = '^\\s*([`~]{3}[`~]*)(.*)$'
+
+ # Regular expression to match rulers in comments
+ # default=r'^\s*[^\w\s]{3}.*[^\w\s]{3}$'
+ ruler_pattern = '^\\s*[^\\w\\s]{3}.*[^\\w\\s]{3}$'
+
+ # If a comment line matches starts with this pattern then it is explicitly a
+ # trailing comment for the preceeding argument. Default is '#<'
+ explicit_trailing_pattern = '#<'
+
+ # If a comment line starts with at least this many consecutive hash
+ # characters, then don't lstrip() them off. This allows for lazy hash rulers
+ # where the first hash char is not separated by space
+ hashruler_min_length = 10
+
+ # If true, then insert a space between the first hash char and remaining hash
+ # chars in a hash ruler, and normalize its length to fill the column
+ canonicalize_hashrulers = True
+
+ # enable comment markup parsing and reflow
+ enable_markup = True
+
+# ----------------------------
+# Options affecting the linter
+# ----------------------------
+with section("lint"):
+
+ # a list of lint codes to disable
+ disabled_codes = []
+
+ # regular expression pattern describing valid function names
+ function_pattern = '[0-9a-z_]+'
+
+ # regular expression pattern describing valid macro names
+ macro_pattern = '[0-9A-Z_]+'
+
+ # regular expression pattern describing valid names for variables with global
+ # scope
+ global_var_pattern = '[0-9A-Z][0-9A-Z_]+'
+
+ # regular expression pattern describing valid names for variables with global
+ # scope (but internal semantic)
+ internal_var_pattern = '_[0-9A-Z][0-9A-Z_]+'
+
+ # regular expression pattern describing valid names for variables with local
+ # scope
+ local_var_pattern = '[0-9a-z_]+'
+
+ # regular expression pattern describing valid names for privatedirectory
+ # variables
+ private_var_pattern = '_[0-9a-z_]+'
+
+ # regular expression pattern describing valid names for publicdirectory
+ # variables
+ public_var_pattern = '[0-9A-Z][0-9A-Z_]+'
+
+ # regular expression pattern describing valid names for keywords used in
+ # functions or macros
+ keyword_pattern = '[0-9A-Z_]+'
+
+ # In the heuristic for C0201, how many conditionals to match within a loop in
+ # before considering the loop a parser.
+ max_conditionals_custom_parser = 2
+
+ # Require at least this many newlines between statements
+ min_statement_spacing = 1
+
+ # Require no more than this many newlines between statements
+ max_statement_spacing = 1
+ max_returns = 6
+ max_branches = 12
+ max_arguments = 5
+ max_localvars = 15
+ max_statements = 50
+
+# -------------------------------
+# Options effecting file encoding
+# -------------------------------
+with section("encode"):
+
+ # If true, emit the unicode byte-order mark (BOM) at the start of the file
+ emit_byteorder_mark = False
+
+ # Specify the encoding of the input file. Defaults to utf-8
+ input_encoding = 'utf-8'
+
+ # Specify the encoding of the output file. Defaults to utf-8. Note that cmake
+ # only claims to support utf-8 so be careful when using anything else
+ output_encoding = 'utf-8'
+
+# -------------------------------------
+# Miscellaneous configurations options.
+# -------------------------------------
+with section("misc"):
+
+ # A dictionary containing any per-command configuration overrides. Currently
+ # only `command_case` is supported.
+ per_command = {}
+
diff --git a/dep/jwt-cpp/.editorconfig b/dep/jwt-cpp/.editorconfig
new file mode 100644
index 000000000..33af44c9b
--- /dev/null
+++ b/dep/jwt-cpp/.editorconfig
@@ -0,0 +1,17 @@
+root = true
+
+[!*.{h,cpp}]
+indent_style = space
+indent_size = 2
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+
+[*.{h,cpp}]
+indent_style = tab
+trim_trailing_whitespace = true
+insert_final_newline = true
+
+[*.md]
+trim_trailing_whitespace = false
diff --git a/dep/jwt-cpp/.gitattributes b/dep/jwt-cpp/.gitattributes
new file mode 100644
index 000000000..bdb0cabc8
--- /dev/null
+++ b/dep/jwt-cpp/.gitattributes
@@ -0,0 +1,17 @@
+# Auto detect text files and perform LF normalization
+* text=auto
+
+# Custom for Visual Studio
+*.cs diff=csharp
+
+# Standard to msysgit
+*.doc diff=astextplain
+*.DOC diff=astextplain
+*.docx diff=astextplain
+*.DOCX diff=astextplain
+*.dot diff=astextplain
+*.DOT diff=astextplain
+*.pdf diff=astextplain
+*.PDF diff=astextplain
+*.rtf diff=astextplain
+*.RTF diff=astextplain
diff --git a/dep/jwt-cpp/.github/FUNDING.yml b/dep/jwt-cpp/.github/FUNDING.yml
new file mode 100644
index 000000000..72a554044
--- /dev/null
+++ b/dep/jwt-cpp/.github/FUNDING.yml
@@ -0,0 +1,2 @@
+github: [Thalhammer,prince-chrismc]
+patreon: Thalhammer
diff --git a/dep/jwt-cpp/.github/ISSUE_TEMPLATE/bug-report.yml b/dep/jwt-cpp/.github/ISSUE_TEMPLATE/bug-report.yml
new file mode 100644
index 000000000..3bd2cbfff
--- /dev/null
+++ b/dep/jwt-cpp/.github/ISSUE_TEMPLATE/bug-report.yml
@@ -0,0 +1,83 @@
+name: Bug Report 🐛
+description: File a bug report
+
+labels: ["bug"]
+body:
+ - type: markdown
+ attributes:
+ value: |
+ Thanks for taking the time to fill out this bug report!
+ validations:
+ required: false
+ - type: textarea
+ id: what-happened
+ attributes:
+ label: What happened?
+ description: Also tell us, what did you expect to happen? Feel free to include some screenshots
+ placeholder: Tell us what you see!
+ value: "A bug happened!"
+ validations:
+ required: true
+ - type: textarea
+ id: reproduce
+ attributes:
+ label: How To Reproduce?
+ description: Please provide a small snippet to reproduce the issue
+ placeholder: Some C++ code or Shell code to recreate th problem
+ value: |
+ ```c++
+ #include "jwt-cpp/jwt.h"
+ int main() {
+ return 0;
+ }
+ ```
+ - type: dropdown
+ id: version
+ attributes:
+ label: Version
+ description: What version of our software are you running?
+ options:
+ - 0.7.0
+ - 0.6.0
+ - 0.5.2
+ - Older (please let us know if the "What happened" box)
+ validations:
+ required: true
+ - type: dropdown
+ id: operating-system
+ attributes:
+ label: What OS are you seeing the problem on?
+ multiple: true
+ options:
+ - Windows
+ - Linux
+ - MacOS
+ - Other (please let us know if the "What happened" box)
+ validations:
+ required: true
+ - type: dropdown
+ id: compiler
+ attributes:
+ label: What compiler are you seeing the problem on?
+ multiple: true
+ options:
+ - GCC
+ - Clang
+ - MSVC
+ - Other (please let us know if the "What happened" box)
+ validations:
+ required: true
+ - type: textarea
+ id: logs
+ attributes:
+ label: Relevant log output
+ description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
+ render: shell
+ - type: checkboxes
+ id: terms
+ attributes:
+ label: Code of Conduct
+ description: By submitting this issue, you agree to follow our [Code of Conduct](https://example.com)
+ options:
+ - label: I agree to follow this project's Code of Conduct
+ required: true
diff --git a/dep/jwt-cpp/.github/ISSUE_TEMPLATE/feature-request.yml b/dep/jwt-cpp/.github/ISSUE_TEMPLATE/feature-request.yml
new file mode 100644
index 000000000..1912553f5
--- /dev/null
+++ b/dep/jwt-cpp/.github/ISSUE_TEMPLATE/feature-request.yml
@@ -0,0 +1,20 @@
+name: Feature Request 🧪
+description: Have a great idea? Find something is missing?
+labels: ["enhancement"]
+body:
+ - type: markdown
+ attributes:
+ value: |
+ We'd love to hear your idea(s)!
+ - type: input
+ id: question
+ attributes:
+ label: "What would you like to see added?"
+ validations:
+ required: true
+ - type: textarea
+ id: context
+ attributes:
+ label: Additional Context
+ validations:
+ required: true
diff --git a/dep/jwt-cpp/.github/ISSUE_TEMPLATE/support-question.yml b/dep/jwt-cpp/.github/ISSUE_TEMPLATE/support-question.yml
new file mode 100644
index 000000000..13912c03a
--- /dev/null
+++ b/dep/jwt-cpp/.github/ISSUE_TEMPLATE/support-question.yml
@@ -0,0 +1,20 @@
+name: Support Question 🤹
+description: Have some questions? We can offer help.
+labels: ["question"]
+body:
+ - type: markdown
+ attributes:
+ value: |
+ Don't hesitate to ask any question you might have!
+ - type: input
+ id: question
+ attributes:
+ label: "What's your question?"
+ validations:
+ required: true
+ - type: textarea
+ id: context
+ attributes:
+ label: Additional Context
+ validations:
+ required: true
diff --git a/dep/jwt-cpp/.github/actions/badge/action.yml b/dep/jwt-cpp/.github/actions/badge/action.yml
new file mode 100644
index 000000000..acac73360
--- /dev/null
+++ b/dep/jwt-cpp/.github/actions/badge/action.yml
@@ -0,0 +1,31 @@
+name: Regular badging sequence
+description: Publishes a badge based on the job status
+inputs:
+ category:
+ description: The subfolder where to group the badges
+ required: true
+ label:
+ description: The label to you in the badge (this should be unique for each badge in a category)
+ required: true
+ github_token:
+ description: The token to use to publish the changes
+ required: false
+ default: ${{ github.token }}
+runs:
+ using: composite
+ steps:
+ - if: job.status == 'success'
+ uses: ./.github/actions/badge/write
+ with:
+ category: ${{ inputs.category }}
+ label: ${{ inputs.label }}
+ - if: job.status == 'failure'
+ uses: ./.github/actions/badge/write
+ with:
+ category: ${{ inputs.category }}
+ label: ${{ inputs.label }}
+ message: Failing
+ color: red
+ - uses: ./.github/actions/badge/publish
+ with:
+ github_token: ${{ inputs.github_token }}
diff --git a/dep/jwt-cpp/.github/actions/badge/write/action.yml b/dep/jwt-cpp/.github/actions/badge/write/action.yml
new file mode 100644
index 000000000..1e0384c8c
--- /dev/null
+++ b/dep/jwt-cpp/.github/actions/badge/write/action.yml
@@ -0,0 +1,24 @@
+name: Make a Badge
+description: Creates a JSON file for use with Sheilds.io. The default is a "brightgreen" "Passing" badge
+inputs:
+ category:
+ description: The subfolder where to group the badges
+ required: true
+ label:
+ description: The label to you in the badge (this should be unqie for each badge in a category)
+ required: true
+ message:
+ description: The message you wish to have in the badge
+ required: false
+ default: "Passing"
+ color:
+ description: The color you wish the badge to be
+ required: false
+ default: "brightgreen"
+runs:
+ using: composite
+ steps:
+ - run: |
+ mkdir -p badges/${{ inputs.category }}/${{ inputs.label }}
+ echo '{ "schemaVersion": 1, "label": "${{ inputs.label }}", "message": "${{ inputs.message }}", "color": "${{ inputs.color }}" }' > badges/${{ inputs.category }}/${{ inputs.label }}/shields.json
+ shell: bash
diff --git a/dep/jwt-cpp/.github/actions/install/boost-json/action.yml b/dep/jwt-cpp/.github/actions/install/boost-json/action.yml
new file mode 100644
index 000000000..28504f9fc
--- /dev/null
+++ b/dep/jwt-cpp/.github/actions/install/boost-json/action.yml
@@ -0,0 +1,17 @@
+name: Install Boost.JSON
+description: Install Boost.JSON for building test application
+inputs:
+ version:
+ description: The desired Boost.JSON version to install
+ required: false
+ default: "1.78.0"
+runs:
+ using: composite
+ steps:
+ - run: |
+ cd /tmp
+ wget https://github.com/boostorg/json/archive/boost-${{ inputs.version }}.tar.gz
+ tar -zxf /tmp/boost-${{ inputs.version }}.tar.gz
+ cd json-boost-${{ inputs.version }}
+ sudo cp -vR include/boost /usr/local/include
+ shell: bash
diff --git a/dep/jwt-cpp/.github/actions/install/cmake/action.yml b/dep/jwt-cpp/.github/actions/install/cmake/action.yml
new file mode 100644
index 000000000..8627f7ee4
--- /dev/null
+++ b/dep/jwt-cpp/.github/actions/install/cmake/action.yml
@@ -0,0 +1,39 @@
+name: Install CMake
+description: Download, Build and Cache CMake
+inputs:
+ version:
+ description: The desired CMake version to install
+ required: true
+ url:
+ description: "The corresponding URL to download the source code from"
+ required: true
+runs:
+ using: composite
+ steps:
+ - name: Cache CMake
+ id: cache-cmake
+ uses: actions/cache@v3
+ with:
+ path: cmake-${{ inputs.version }}
+ key: ${{ runner.name }}-${{ runner.os }}-${{ runner.arch }}-cmake-${{ inputs.version }}
+ - name: Build cmake
+ if: steps.cache-cmake.outputs.cache-hit != 'true'
+ run: |
+ wget ${{ inputs.url }}
+ tar -zxf cmake-${{ inputs.version }}.tar.gz
+ cd cmake-${{ inputs.version }}
+ ./bootstrap
+ make -j $(nproc)
+ shell: bash
+ - name: Install cmake
+ run: |
+ cd cmake-${{ inputs.version }}
+ # Depending if we run in on a GitHub Actions or from within a Docker image we have different permissions
+ if [[ $EUID > 0 ]]; then
+ # If we are not root then we need to sudo
+ sudo make install
+ else
+ # Default docker image does not have users setup so we are only root and can not sudo
+ make install
+ fi
+ shell: bash
diff --git a/dep/jwt-cpp/.github/actions/install/danielaparker-jsoncons/action.yml b/dep/jwt-cpp/.github/actions/install/danielaparker-jsoncons/action.yml
new file mode 100644
index 000000000..729d2d3a8
--- /dev/null
+++ b/dep/jwt-cpp/.github/actions/install/danielaparker-jsoncons/action.yml
@@ -0,0 +1,18 @@
+name: Install jsoncons
+description: Install jsoncons for building test application
+inputs:
+ version:
+ description: The desired jsoncons version to install
+ required: false
+ default: "0.168.7"
+runs:
+ using: composite
+ steps:
+ - run: |
+ cd /tmp
+ wget https://github.com/danielaparker/jsoncons/archive/v${{ inputs.version }}.tar.gz
+ tar -zxf /tmp/v${{ inputs.version }}.tar.gz
+ cd jsoncons-${{ inputs.version }}
+ cmake .
+ sudo cmake --install .
+ shell: bash
diff --git a/dep/jwt-cpp/.github/actions/install/gtest/action.yml b/dep/jwt-cpp/.github/actions/install/gtest/action.yml
new file mode 100644
index 000000000..11a6c5f34
--- /dev/null
+++ b/dep/jwt-cpp/.github/actions/install/gtest/action.yml
@@ -0,0 +1,15 @@
+name: Install GTest
+description: Install and setup GTest for linking and building test application
+runs:
+ using: composite
+ steps:
+ - run: sudo apt-get install libgtest-dev lcov
+ shell: bash
+ - run: (cd /usr/src/gtest && sudo `which cmake` .)
+ shell: bash
+ - run: sudo make -j $(nproc) -C /usr/src/gtest
+ shell: bash
+ - run: sudo ln -s /usr/src/gtest/libgtest.a /usr/lib/libgtest.a
+ shell: bash
+ - run: sudo ln -s /usr/src/gtest/libgtest_main.a /usr/lib/libgtest_main.a
+ shell: bash
diff --git a/dep/jwt-cpp/.github/actions/install/kazuho-picojson/action.yml b/dep/jwt-cpp/.github/actions/install/kazuho-picojson/action.yml
new file mode 100644
index 000000000..caf887512
--- /dev/null
+++ b/dep/jwt-cpp/.github/actions/install/kazuho-picojson/action.yml
@@ -0,0 +1,17 @@
+name: Install PicoJSON
+description: Install PicoJSON for building test application
+inputs:
+ version:
+ description: The desired PicoJSON version to install
+ required: false
+ default: "v1.3.0"
+runs:
+ using: composite
+ steps:
+ - run: |
+ cd /tmp
+ wget https://github.com/kazuho/picojson/archive/${{ inputs.version }}.tar.gz
+ tar -zxf /tmp/${{ inputs.version }}.tar.gz
+ cd picojson-${{ inputs.version }}
+ sudo cp -v picojson.h /usr/local/include/picojson
+ shell: bash
diff --git a/dep/jwt-cpp/.github/actions/install/libressl/action.yml b/dep/jwt-cpp/.github/actions/install/libressl/action.yml
new file mode 100644
index 000000000..709ad7010
--- /dev/null
+++ b/dep/jwt-cpp/.github/actions/install/libressl/action.yml
@@ -0,0 +1,19 @@
+name: Install LibreSSL
+description: Install and setup LibreSSL for linking and building test application
+inputs:
+ version:
+ description: The desired LibreSSL version to install
+ required: false
+ default: "3.3.0"
+runs:
+ using: composite
+ steps:
+ - run: |
+ wget https://raw.githubusercontent.com/libressl-portable/portable/v${{ inputs.version }}/FindLibreSSL.cmake -P cmake/
+ cd /tmp
+ wget https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-${{ inputs.version }}.tar.gz
+ tar -zvxf /tmp/libressl-${{ inputs.version }}.tar.gz
+ cd libressl-${{ inputs.version }}
+ ./configure
+ sudo make -j $(nproc) install
+ shell: bash
diff --git a/dep/jwt-cpp/.github/actions/install/nlohmann-json/action.yml b/dep/jwt-cpp/.github/actions/install/nlohmann-json/action.yml
new file mode 100644
index 000000000..7300aea3e
--- /dev/null
+++ b/dep/jwt-cpp/.github/actions/install/nlohmann-json/action.yml
@@ -0,0 +1,18 @@
+name: Install nlohmann-json
+description: Install nlohmann-json for building test application
+inputs:
+ version:
+ description: The desired nlohmann-json version to install
+ required: false
+ default: "3.11.2"
+runs:
+ using: composite
+ steps:
+ - run: |
+ cd /tmp
+ wget https://github.com/nlohmann/json/archive/v${{ inputs.version }}.tar.gz
+ tar -zxf /tmp/v${{ inputs.version }}.tar.gz
+ cd json-${{ inputs.version }}
+ cmake .
+ sudo cmake --install .
+ shell: bash
diff --git a/dep/jwt-cpp/.github/actions/install/openssl/action.yml b/dep/jwt-cpp/.github/actions/install/openssl/action.yml
new file mode 100644
index 000000000..7b161b660
--- /dev/null
+++ b/dep/jwt-cpp/.github/actions/install/openssl/action.yml
@@ -0,0 +1,19 @@
+name: Install OpenSSL
+description: Install and setup OpenSSL for linking and building test application
+inputs:
+ version:
+ description: The desired OpenSSL version to install
+ required: false
+ default: "openssl-3.0.0"
+runs:
+ using: composite
+ steps:
+ - run: |
+ cd /tmp
+ wget https://github.com/openssl/openssl/archive/refs/tags/${{ inputs.version }}.tar.gz
+ tar -zxf /tmp/${{ inputs.version }}.tar.gz
+ cd openssl-${{ inputs.version }}
+ ./config --prefix=/tmp --libdir=lib
+ make -j $(nproc)
+ sudo make -j $(nproc) install_sw
+ shell: bash
diff --git a/dep/jwt-cpp/.github/actions/install/wolfssl/action.yml b/dep/jwt-cpp/.github/actions/install/wolfssl/action.yml
new file mode 100644
index 000000000..bced14743
--- /dev/null
+++ b/dep/jwt-cpp/.github/actions/install/wolfssl/action.yml
@@ -0,0 +1,22 @@
+name: Install wolfSSL
+description: Install and setup wolfSSL for linking and building test application
+inputs:
+ version:
+ description: The desired stable wolfSSL version to install
+ required: false
+ default: "v4.8.1-stable"
+runs:
+ using: composite
+ steps:
+ - run: |
+ cd /tmp
+ wget -O wolfssl.tar.gz https://github.com/wolfSSL/wolfssl/archive/${{ inputs.version }}.tar.gz
+ tar -zxf /tmp/wolfssl.tar.gz
+ cd wolfssl-*
+ autoreconf -fiv
+ ./configure --enable-opensslall --enable-opensslextra --disable-examples --disable-crypttests --enable-harden --enable-all --enable-all-crypto
+ make
+ sudo make install
+ shell: bash
+ - run: sudo rm -rf /usr/include/openssl
+ shell: bash
diff --git a/dep/jwt-cpp/.github/actions/process-linting-results/action.yml b/dep/jwt-cpp/.github/actions/process-linting-results/action.yml
new file mode 100644
index 000000000..7b0749d00
--- /dev/null
+++ b/dep/jwt-cpp/.github/actions/process-linting-results/action.yml
@@ -0,0 +1,26 @@
+name: Process Linting Results
+description: Add a comment to a pull request with when `git diff` present and save the changes as an artifact so they can be applied manually
+inputs:
+ linter_name:
+ description: The name of the tool to credit in the comment
+ required: true
+runs:
+ using: "composite"
+ steps:
+ - run: git add --update
+ shell: bash
+ - id: stage
+ #continue-on-error: true
+ uses: Thalhammer/patch-generator-action@v2
+
+ # Unfortunately the previous action reports a failure so nothing else can run
+ # partially a limitation on composite actions since `continue-on-error` is not
+ # yet supported
+ - if: steps.stage.outputs.result == 'dirty'
+ uses: actions-ecosystem/action-create-comment@v1
+ with:
+ github_token: ${{ github.token }}
+ body: |
+ Hello, @${{ github.actor }}! `${{ inputs.linter_name }}` had some concerns :scream:
+ - run: exit $(git status -uno -s | wc -l)
+ shell: bash
diff --git a/dep/jwt-cpp/.github/actions/render/defaults/action.yml b/dep/jwt-cpp/.github/actions/render/defaults/action.yml
new file mode 100644
index 000000000..af28f7930
--- /dev/null
+++ b/dep/jwt-cpp/.github/actions/render/defaults/action.yml
@@ -0,0 +1,52 @@
+name: "Render `defaults.h` Template"
+description: "Generate the `defaults.h` header file for a JSON library"
+inputs:
+ traits_name:
+ description: "Name of the traits structure to be used. Typically in the format `author_repository` or equivilant"
+ required: true
+ library_name:
+ description: "Name of the JSON library."
+ required: true
+ library_url:
+ description: "URL to the JSON library."
+ required: true
+ disable_default_traits:
+ description: "Set the macro to disable the default traits"
+ required: false
+ default: "true"
+runs:
+ using: composite
+ steps:
+ - uses: actions/setup-node@v3
+ with:
+ node-version: 14
+ - run: npm install mustache
+ shell: bash
+ - uses: actions/github-script@v6
+ env:
+ TRAITS_NAME: ${{ inputs.traits_name }}
+ LIBRARY_NAME: ${{ inputs.library_name }}
+ LIBRARY_URL: ${{ inputs.library_url }}
+ DISABLE_DEFAULT_TRAITS: ${{ inputs.disable_default_traits }}
+ with:
+ script: |
+ const mustache = require('mustache')
+ const path = require('path')
+ const fs = require('fs')
+
+ const { TRAITS_NAME, LIBRARY_NAME, LIBRARY_URL, DISABLE_DEFAULT_TRAITS } = process.env
+ console.log(`Rendering ${TRAITS_NAME}!`)
+
+ const disableDefault = DISABLE_DEFAULT_TRAITS === 'true'
+
+ const template = fs.readFileSync(path.join('include', 'jwt-cpp', 'traits', 'defaults.h.mustache'), 'utf8')
+ const content = mustache.render(template, {
+ traits_name: TRAITS_NAME,
+ traits_name_upper: TRAITS_NAME.toUpperCase(),
+ library_name: LIBRARY_NAME,
+ library_url: LIBRARY_URL,
+ disable_default_traits: disableDefault,
+ })
+ const outputDir = path.join('include', 'jwt-cpp', 'traits', TRAITS_NAME.replace('_', '-'))
+ fs.mkdirSync(outputDir, { recursive: true })
+ fs.writeFileSync(path.join(outputDir, 'defaults.h'), content)
diff --git a/dep/jwt-cpp/.github/actions/render/tests/action.yml b/dep/jwt-cpp/.github/actions/render/tests/action.yml
new file mode 100644
index 000000000..7f798627c
--- /dev/null
+++ b/dep/jwt-cpp/.github/actions/render/tests/action.yml
@@ -0,0 +1,39 @@
+name: "Render `TraitsTests.cpp` Template"
+description: "Generate the `TraitsTests.cpp` header file for a JSON library"
+inputs:
+ traits_name:
+ description: "Name of the traits structure to be used. Typically in the format `author_repository` or equivilant"
+ required: true
+ test_suite_name:
+ description: "Name of the JSON library."
+ required: true
+runs:
+ using: composite
+ steps:
+ - uses: actions/setup-node@v3
+ with:
+ node-version: 14
+ - run: npm install mustache
+ shell: bash
+ - uses: actions/github-script@v6
+ env:
+ TRAITS_NAME: ${{ inputs.traits_name }}
+ SUITE_NAME: ${{ inputs.test_suite_name }}
+ with:
+ script: |
+ const mustache = require('mustache')
+ const path = require('path')
+ const fs = require('fs')
+
+ const { TRAITS_NAME, SUITE_NAME } = process.env
+ console.log(`Rendering ${TRAITS_NAME}!`)
+
+ const template = fs.readFileSync(path.join('tests', 'traits', 'TraitsTest.cpp.mustache'), 'utf8')
+ const content = mustache.render(template, {
+ traits_name: TRAITS_NAME,
+ traits_dir: TRAITS_NAME.replace('_', '-'),
+ test_suite_name: SUITE_NAME,
+ })
+ const outputDir = path.join('tests', 'traits')
+ fs.mkdirSync(outputDir, { recursive: true })
+ fs.writeFileSync(path.join(outputDir, `${SUITE_NAME}.cpp`), content)
diff --git a/dep/jwt-cpp/.github/logo.svg b/dep/jwt-cpp/.github/logo.svg
new file mode 100644
index 000000000..63017cb09
--- /dev/null
+++ b/dep/jwt-cpp/.github/logo.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/dep/jwt-cpp/.github/overrides.css b/dep/jwt-cpp/.github/overrides.css
new file mode 100644
index 000000000..42d2421ff
--- /dev/null
+++ b/dep/jwt-cpp/.github/overrides.css
@@ -0,0 +1,19 @@
+@media (prefers-color-scheme: dark) {
+ table.markdownTable, table.fieldtable {
+ width: auto;
+ }
+
+ html:not(.light-mode) {
+ /* define dark-mode variable overrides here if you DON'T use doxygen-awesome-darkmode-toggle.js */
+ }
+
+ html:not(.light-mode) div.contents table img {
+ filter: none;
+ }
+
+ html:not(.light-mode) div.qindex,
+ html:not(.light-mode) div.navtab {
+ background-color: var(--side-nav-background);
+ border: 1px solid var(--separator-color);
+ }
+}
diff --git a/dep/jwt-cpp/.github/security.md b/dep/jwt-cpp/.github/security.md
new file mode 100644
index 000000000..768000138
--- /dev/null
+++ b/dep/jwt-cpp/.github/security.md
@@ -0,0 +1,21 @@
+# Reporting Security Issues
+
+If you believe you have found a security vulnerability in JWT-CPP, we encourage you to let us know right away.
+We will investigate all legitimate reports and do our best to quickly fix the problem.
+
+Please refer to the section below for our responsible disclosure policy:
+
+## Disclosure Policy
+
+Please contact one or more of the maintainers using the email advertised on our GitHub profiles:
+
+- [@Thalhammer](https://github.com/Thalhammer)
+- [@prince-chrismc](https://github.com/prince-chrismc)
+
+Please provide as many details as possible about version, platform, and workflow as possible.
+Having steps and reproducible code is better and is always greatly appreciated.
+
+## Supported Version
+
+Typically, fixes will be immediately released as a new patch release. However, older affected versions may receive
+a new patch upon request.
diff --git a/dep/jwt-cpp/.github/workflows/cmake.yml b/dep/jwt-cpp/.github/workflows/cmake.yml
new file mode 100644
index 000000000..b7b53ed5a
--- /dev/null
+++ b/dep/jwt-cpp/.github/workflows/cmake.yml
@@ -0,0 +1,233 @@
+name: CMake CI
+
+on:
+ push:
+ branches: [master]
+ pull_request:
+ branches: [master]
+ paths:
+ - "CMakeLists.txt"
+ - "cmake/**"
+ - "include/jwt-cpp/**"
+ - "tests/cmake/**"
+ - ".github/actions/**"
+ - ".github/workflows/cmake.yml"
+
+jobs:
+ default-linux:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: lukka/get-cmake@latest
+
+ - name: setup
+ run: |
+ mkdir build
+ cd build
+ cmake .. -DJWT_BUILD_EXAMPLES=OFF
+ sudo make install
+
+ - name: test
+ run: |
+ cd tests/cmake
+ cmake . -DTEST:STRING="defaults-enabled" -DCMAKE_FIND_DEBUG_MODE=1
+ cmake --build .
+
+ default-linux-with-examples:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: lukka/get-cmake@latest
+
+ - name: setup
+ run: |
+ mkdir build
+ cd build
+ cmake ..
+ sudo cmake --install .
+
+ - name: test
+ run: |
+ cd tests/cmake
+ cmake . -DTEST:STRING="defaults-enabled"
+ cmake --build .
+
+ default-win:
+ runs-on: windows-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: lukka/get-cmake@latest
+ - run: choco install openssl
+
+ - name: setup
+ run: |
+ cmake -E make_directory build
+ cd build
+ cmake .. -DJWT_BUILD_EXAMPLES=OFF
+ cmake --install .
+
+ - name: test
+ run: |
+ cd tests/cmake
+ cmake . -DTEST:STRING="defaults-enabled" -DCMAKE_FIND_DEBUG_MODE=1
+ cmake --build .
+
+ min-req:
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v3
+ - uses: ./.github/actions/install/cmake
+ with:
+ version: "3.14.7"
+ url: "https://cmake.org/files/v3.14/cmake-3.14.7.tar.gz"
+ - uses: ./.github/actions/install/gtest
+
+ - name: setup
+ run: |
+ mkdir build
+ cd build
+ cmake .. -DJWT_BUILD_EXAMPLES=ON -DJWT_BUILD_TESTS=ON
+ sudo make install
+
+ - name: test
+ run: |
+ cd tests/cmake
+ cmake . -DTEST:STRING="defaults-enabled"
+ cmake --build .
+
+ custom-install-linux:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: lukka/get-cmake@latest
+
+ - name: setup
+ run: |
+ mkdir build
+ cd build
+ cmake .. -DCMAKE_INSTALL_PREFIX:STRING="/opt/jwt-cpp" -DJWT_BUILD_EXAMPLES=OFF
+ make install
+
+ - name: test
+ run: |
+ cd tests/cmake
+ cmake . -DCMAKE_PREFIX_PATH="/opt/jwt-cpp" -DTEST:STRING="defaults-enabled" -DCMAKE_FIND_DEBUG_MODE=1
+ cmake --build .
+
+ custom-install-win:
+ runs-on: windows-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: lukka/get-cmake@latest
+ - run: choco install openssl
+
+ - name: setup
+ run: |
+ cmake -E make_directory build
+ cd build
+ cmake .. -DCMAKE_INSTALL_PREFIX:STRING="C:/jwt-cpp" -DJWT_BUILD_EXAMPLES=OFF
+ cmake --install .
+
+ - name: test
+ run: |
+ cd tests/cmake
+ cmake . -DCMAKE_PREFIX_PATH="C:/jwt-cpp" -DTEST:STRING="defaults-enabled" -DCMAKE_FIND_DEBUG_MODE=1
+ cmake --build .
+
+ no-pico:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: lukka/get-cmake@latest
+
+ - name: setup
+ run: |
+ mkdir build
+ cd build
+ cmake .. -DJWT_DISABLE_PICOJSON=ON -DJWT_BUILD_EXAMPLES=OFF
+ sudo make install
+
+ - name: test
+ run: |
+ cd tests/cmake
+ cmake . -DCMAKE_PREFIX_PATH=/usr/local/cmake -DTEST:STRING="picojson-is-disabled"
+ cmake --build .
+
+ no-base64:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: lukka/get-cmake@latest
+
+ - name: setup
+ run: |
+ mkdir build
+ cd build
+ cmake .. -DJWT_DISABLE_BASE64=ON -DJWT_BUILD_EXAMPLES=OFF
+ sudo make install
+
+ - name: test
+ run: |
+ cd tests/cmake
+ cmake . -DCMAKE_PREFIX_PATH=/usr/local/cmake -DTEST:STRING="base64-is-disabled"
+ cmake --build .
+
+ with-libressl:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: lukka/get-cmake@latest
+ - uses: ./.github/actions/install/libressl
+
+ - name: setup
+ run: |
+ mkdir build
+ cd build
+ cmake .. -DJWT_SSL_LIBRARY:STRING="LibreSSL" -DJWT_BUILD_EXAMPLES=OFF
+ sudo make install
+
+ - name: test
+ run: |
+ cd tests/cmake
+ cmake . -DCMAKE_PREFIX_PATH=/usr/local/cmake -DCMAKE_MODULE_PATH=../../cmake -DTEST:STRING="libressl-is-used"
+ cmake --build .
+
+ with-wolfssl:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: lukka/get-cmake@latest
+ - uses: ./.github/actions/install/wolfssl
+ with:
+ version: ab3bbf11e9d39b52e24bf42bbc6babc16d4a669b
+
+ - name: setup
+ run: |
+ mkdir build
+ cd build
+ cmake .. -DJWT_SSL_LIBRARY:STRING="wolfSSL" -DJWT_BUILD_EXAMPLES=OFF
+ sudo make install
+
+ - name: test
+ run: |
+ cd tests/cmake
+ cmake . -DTEST:STRING="wolfssl-is-used"
+ cmake --build .
+
+ with-hunter:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: lukka/get-cmake@latest
+
+ - name: setup
+ run: |
+ mkdir build
+ cd build
+ cmake .. -DJWT_BUILD_TESTS=ON -DJWT_BUILD_EXAMPLES=ON -DJWT_ENABLE_COVERAGE=OFF -DHUNTER_ENABLED=ON
+ make
+
+ - name: test
+ run: |
+ cd build
+ ./tests/jwt-cpp-test
diff --git a/dep/jwt-cpp/.github/workflows/cross-platform.yml b/dep/jwt-cpp/.github/workflows/cross-platform.yml
new file mode 100644
index 000000000..5a1211ea8
--- /dev/null
+++ b/dep/jwt-cpp/.github/workflows/cross-platform.yml
@@ -0,0 +1,54 @@
+name: Cross-Platform CI
+
+on:
+ push:
+ branches: [master]
+ pull_request:
+ branches: [master]
+jobs:
+ build:
+ runs-on: ${{ matrix.os }}
+ strategy:
+ matrix:
+ os: [macos-latest, windows-latest, ubuntu-latest]
+
+ steps:
+ - if: matrix.os == 'windows-latest'
+ run: choco install openssl
+
+ - if: matrix.os == 'macos-latest'
+ run: sudo cp /usr/local/opt/openssl@1.1/lib/pkgconfig/*.pc /usr/local/lib/pkgconfig/
+
+ - uses: actions/checkout@v3
+ - run: cmake -E make_directory ${{ github.workspace }}/build
+
+ - name: configure
+ shell: bash # access regardless of the host operating system
+ working-directory: ${{ github.workspace }}/build
+ run: cmake $GITHUB_WORKSPACE -DJWT_BUILD_EXAMPLES=ON
+
+ - name: build
+ working-directory: ${{ github.workspace }}/build
+ shell: bash
+ run: cmake --build .
+
+ - if: matrix.os != 'windows-latest'
+ name: test
+ working-directory: ${{ github.workspace }}/build
+ shell: bash
+ run: |
+ ./example/rsa-create
+ ./example/rsa-verify
+
+ - if: matrix.os == 'windows-latest'
+ name: test
+ working-directory: ${{ github.workspace }}/build
+ run: |
+ example\Debug\rsa-create.exe
+ example\Debug\rsa-verify.exe
+
+ - if: github.event_name == 'push' && always()
+ uses: ./.github/actions/badge
+ with:
+ category: cross-platform
+ label: ${{ matrix.os }}
diff --git a/dep/jwt-cpp/.github/workflows/documentation.yml b/dep/jwt-cpp/.github/workflows/documentation.yml
new file mode 100644
index 000000000..da6844100
--- /dev/null
+++ b/dep/jwt-cpp/.github/workflows/documentation.yml
@@ -0,0 +1,21 @@
+name: Documentation CI
+
+on:
+ push:
+ branches: [master]
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - run: sudo apt install graphviz
+ - run: wget https://raw.githubusercontent.com/jothepro/doxygen-awesome-css/v1.6.1/doxygen-awesome.css
+ - run: wget https://raw.githubusercontent.com/jothepro/doxygen-awesome-css/v1.6.1/doxygen-awesome-sidebar-only.css
+ - uses: mattnotmitt/doxygen-action@v1
+ - name: deploy
+ uses: peaceiris/actions-gh-pages@v3
+ with:
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ publish_dir: ./doxy/html
+ force_orphan: true
diff --git a/dep/jwt-cpp/.github/workflows/jwt.yml b/dep/jwt-cpp/.github/workflows/jwt.yml
new file mode 100644
index 000000000..04ab7070d
--- /dev/null
+++ b/dep/jwt-cpp/.github/workflows/jwt.yml
@@ -0,0 +1,104 @@
+name: JWT CI
+
+on:
+ push:
+ branches: [master]
+ pull_request:
+ branches: [master]
+
+jobs:
+ coverage:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: lukka/get-cmake@latest
+ - uses: ./.github/actions/install/gtest
+ - uses: ./.github/actions/install/danielaparker-jsoncons
+ - uses: ./.github/actions/install/boost-json
+
+ - name: configure
+ run: |
+ mkdir build
+ cd build
+ cmake .. -DJWT_BUILD_EXAMPLES=OFF -DJWT_BUILD_TESTS=ON -DJWT_ENABLE_COVERAGE=ON -DCMAKE_BUILD_TYPE=Debug
+
+ - name: run
+ working-directory: build
+ run: make jwt-cpp-test coverage
+
+ - uses: coverallsapp/github-action@1.1.3
+ with:
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+ path-to-lcov: build/coverage.info
+
+ fuzzing:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: lukka/get-cmake@latest
+ - uses: ./.github/actions/install/gtest
+
+ - name: configure
+ run: |
+ mkdir build
+ cd build
+ cmake .. -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DJWT_ENABLE_FUZZING=ON
+
+ - name: run
+ working-directory: build
+ run: |
+ make jwt-cpp-fuzz-BaseEncodeFuzz jwt-cpp-fuzz-BaseDecodeFuzz jwt-cpp-fuzz-TokenDecodeFuzz
+ ./tests/fuzz/jwt-cpp-fuzz-BaseEncodeFuzz -runs=100000
+ ./tests/fuzz/jwt-cpp-fuzz-BaseDecodeFuzz -runs=100000 ../tests/fuzz/decode-corpus
+ ./tests/fuzz/jwt-cpp-fuzz-TokenDecodeFuzz -runs=100000 ../tests/fuzz/token-corpus
+
+ asan: ## Based on https://gist.github.com/jlblancoc/44be9d4d466f0a973b1f3808a8e56782
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v3
+ - uses: lukka/get-cmake@latest
+ - uses: ./.github/actions/install/gtest
+
+ - name: configure
+ run: |
+ mkdir build
+ cd build
+ cmake .. -DJWT_BUILD_TESTS=ON -DCMAKE_CXX_FLAGS="-fsanitize=address -fsanitize=leak -g" \
+ -DCMAKE_C_FLAGS="-fsanitize=address -fsanitize=leak -g" \
+ -DCMAKE_EXE_LINKER_FLAGS="-fsanitize=address -fsanitize=leak" \
+ -DCMAKE_MODULE_LINKER_FLAGS="-fsanitize=address -fsanitize=leak"
+
+ - name: run
+ working-directory: build
+ run: |
+ make
+ export ASAN_OPTIONS=check_initialization_order=true:detect_stack_use_after_return=true:fast_unwind_on_malloc=0
+ ./example/rsa-create
+ ./example/rsa-verify
+ ./tests/jwt-cpp-test
+
+ ubsan:
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v3
+ - uses: lukka/get-cmake@latest
+ - uses: ./.github/actions/install/gtest
+
+ - name: configure
+ run: |
+ mkdir build
+ cd build
+ cmake .. -DJWT_BUILD_TESTS=ON -DCMAKE_CXX_STANDARD=20 \
+ -DCMAKE_CXX_FLAGS="-fsanitize=undefined -fsanitize=return -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fno-sanitize-recover=all -g" \
+ -DCMAKE_C_FLAGS="-fsanitize=undefined -fsanitize=return -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fno-sanitize-recover=all -g" \
+ -DCMAKE_EXE_LINKER_FLAGS="-fsanitize=undefined -fsanitize=return -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fno-sanitize-recover=all" \
+ -DCMAKE_MODULE_LINKER_FLAGS="-fsanitize=undefined -fsanitize=return -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fno-sanitize-recover=all"
+
+ - name: run
+ working-directory: build
+ run: |
+ make
+ export UBSAN_OPTIONS=print_stacktrace=1
+ ./example/rsa-create
+ ./example/rsa-verify
+ ./tests/jwt-cpp-test
diff --git a/dep/jwt-cpp/.github/workflows/lint.yml b/dep/jwt-cpp/.github/workflows/lint.yml
new file mode 100644
index 000000000..bff4a71e1
--- /dev/null
+++ b/dep/jwt-cpp/.github/workflows/lint.yml
@@ -0,0 +1,123 @@
+name: Lint CI
+
+on:
+ push:
+ branches: [master]
+ pull_request:
+ branches: [master]
+
+jobs:
+ clang-format:
+ runs-on: ubuntu-22.04
+ strategy:
+ fail-fast: false
+ matrix:
+ files:
+ - "include/jwt-cpp/*.h"
+ - "include/jwt-cpp/traits/**/*.h"
+ - "tests/*.cpp"
+ - "tests/**/*.cpp"
+ - "example/*.cpp"
+ - "example/**/*.cpp"
+ steps:
+ - run: |
+ sudo apt-get install clang-format-14
+ shopt -s globstar
+ - uses: actions/checkout@v3
+ - run: clang-format-14 -i ${{ matrix.files }}
+ - uses: ./.github/actions/process-linting-results
+ with:
+ linter_name: clang-format
+
+ cmake-format:
+ runs-on: ubuntu-20.04
+ strategy:
+ fail-fast: false
+ matrix:
+ files: ["**/CMakeLists.txt", "cmake/code-coverage.cmake"]
+ steps:
+ - uses: actions/setup-python@v2
+ with:
+ python-version: "3.x"
+ - run: pip install cmakelang
+ - run: shopt -s globstar
+ - uses: actions/checkout@v3
+ - run: cmake-format -i ${{ matrix.files }}
+ - uses: ./.github/actions/process-linting-results
+ with:
+ linter_name: cmake-format
+
+ clang-tidy:
+ runs-on: ubuntu-20.04
+ steps:
+ - run: sudo apt-get install clang-tidy
+ - uses: lukka/get-cmake@latest
+ - uses: actions/checkout@v3
+ - name: configure
+ run: |
+ mkdir build
+ cd build
+ cmake .. -DCMAKE_CXX_CLANG_TIDY="clang-tidy;-fix"
+ - name: run
+ working-directory: build
+ run: make
+ - uses: ./.github/actions/process-linting-results
+ with:
+ linter_name: clang-tidy
+
+ render-defaults:
+ runs-on: ubuntu-20.04
+ strategy:
+ fail-fast: false
+ matrix:
+ traits:
+ - { name: "boost_json", library: "Boost.JSON", url: "https://github.com/boostorg/json", disable_pico: true }
+ - { name: "danielaparker_jsoncons", library: "jsoncons", url: "https://github.com/danielaparker/jsoncons", disable_pico: true }
+ - { name: "kazuho_picojson", library: "picojson", url: "https://github.com/kazuho/picojson", disable_pico: false }
+ - { name: "nlohmann_json", library: "JSON for Modern C++", url: "https://github.com/nlohmann/json", disable_pico: true }
+ name: render-defaults (${{ matrix.traits.name }})
+ steps:
+ - uses: actions/checkout@v3
+ - uses: ./.github/actions/render/defaults
+ with:
+ traits_name: ${{ matrix.traits.name }}
+ library_name: ${{ matrix.traits.library }}
+ library_url: ${{ matrix.traits.url }}
+ disable_default_traits: ${{ matrix.traits.disable_pico }}
+ - run: git add include/jwt-cpp/traits/*
+ - uses: ./.github/actions/process-linting-results
+ with:
+ linter_name: render-defaults
+
+ render-tests:
+ runs-on: ubuntu-20.04
+ strategy:
+ fail-fast: false
+ matrix:
+ traits:
+ # - { name: "boost_json", suite: "BoostJsonTest" } # Currently needs work arounds for API limitations
+ - { name: "danielaparker_jsoncons", suite: "JsonconsTest" }
+ # - { name: "kazuho_picojson", suite: "PicoJsonTest" } # Currently the default everything tests against this!
+ - { name: "nlohmann_json", suite: "NlohmannTest" }
+ name: render-tests (${{ matrix.traits.name }})
+ steps:
+ - uses: actions/checkout@v3
+ - run: shopt -s globstar
+ - uses: ./.github/actions/render/tests
+ with:
+ traits_name: ${{ matrix.traits.name }}
+ test_suite_name: ${{ matrix.traits.suite }}
+ - run: clang-format -i tests/**/*.cpp
+ - run: git add tests/traits/*
+ - uses: ./.github/actions/process-linting-results
+ with:
+ linter_name: render-tests
+
+ line-ending:
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v3
+ - run: git add --renormalize .
+ - uses: ./.github/actions/process-linting-results
+ with:
+ linter_name: line-ending
diff --git a/dep/jwt-cpp/.github/workflows/nuget.yml b/dep/jwt-cpp/.github/workflows/nuget.yml
new file mode 100644
index 000000000..03d57762c
--- /dev/null
+++ b/dep/jwt-cpp/.github/workflows/nuget.yml
@@ -0,0 +1,27 @@
+name: Nuget CD
+
+on:
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+ # https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#release
+ release:
+ types: [published]
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - name: Setup NuGet
+ uses: NuGet/setup-nuget@v1
+ with:
+ nuget-api-key: ${{ secrets.nuget_api_key }}
+
+ - name: Create NuGet pkg
+ working-directory: ./nuget
+ run: nuget pack jwt-cpp.nuspec
+
+ - name: Publish NuGet pkg
+ working-directory: ./nuget
+ run: nuget push *.nupkg -Source 'https://api.nuget.org/v3/index.json'
+
diff --git a/dep/jwt-cpp/.github/workflows/ssl.yml b/dep/jwt-cpp/.github/workflows/ssl.yml
new file mode 100644
index 000000000..fd9115d0c
--- /dev/null
+++ b/dep/jwt-cpp/.github/workflows/ssl.yml
@@ -0,0 +1,110 @@
+name: SSL Compatibility CI
+
+on:
+ push:
+ branches: [master]
+ pull_request:
+ branches: [master]
+
+jobs:
+ openssl:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ openssl:
+ - { tag: "openssl-3.0.5", name: "3.0.5" }
+ - { tag: "OpenSSL_1_1_1q", name: "1.1.1q" }
+ - { tag: "OpenSSL_1_1_0i", name: "1.1.0i" } # Do not bump, there's a broken in the autoconfig script and it's not maintained
+ - { tag: "OpenSSL_1_0_2u", name: "1.0.2u" }
+ - { tag: "OpenSSL_1_0_1u", name: "1.0.1u" }
+ name: OpenSSL ${{ matrix.openssl.name }}
+ steps:
+ - uses: actions/checkout@v3
+ - uses: lukka/get-cmake@latest
+ - uses: ./.github/actions/install/gtest
+ - uses: ./.github/actions/install/openssl
+ with:
+ version: ${{ matrix.openssl.tag }}
+
+ - name: configure
+ run: cmake . -DJWT_BUILD_TESTS=ON -DOPENSSL_ROOT_DIR=/tmp
+ - run: make
+ - name: test
+ run: ./tests/jwt-cpp-test
+
+ - if: github.event_name == 'push' && always()
+ uses: ./.github/actions/badge
+ with:
+ category: openssl
+ label: ${{ matrix.openssl.name }}
+
+ openssl-no-deprecated:
+ runs-on: ubuntu-latest
+ name: OpenSSL 3.0 No Deprecated
+ steps:
+ - uses: actions/checkout@v3
+ - uses: lukka/get-cmake@latest
+ - uses: ./.github/actions/install/gtest
+ - uses: ./.github/actions/install/openssl
+ with:
+ version: "openssl-3.0.5"
+
+ - name: configure
+ run: cmake . -DJWT_BUILD_TESTS=ON -DOPENSSL_ROOT_DIR=/tmp -DCMAKE_CXX_FLAGS="-DOPENSSL_NO_DEPRECATED=1" -DCMAKE_C_FLAGS="-DOPENSSL_NO_DEPRECATED=1"
+ - run: make
+
+ libressl:
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ libressl: ["3.5.3", "3.4.3", "3.3.6"]
+ name: LibreSSL ${{ matrix.libressl }}
+ steps:
+ - uses: actions/checkout@v3
+ - uses: lukka/get-cmake@latest
+ - uses: ./.github/actions/install/gtest
+ - uses: ./.github/actions/install/libressl
+ with:
+ version: ${{ matrix.libressl }}
+
+ - name: configure
+ run: cmake . -DJWT_BUILD_TESTS=ON -DJWT_SSL_LIBRARY:STRING=LibreSSL
+ - run: make
+ - name: test
+ run: ./tests/jwt-cpp-test
+
+ - if: github.event_name == 'push' && always()
+ uses: ./.github/actions/badge
+ with:
+ category: libressl
+ label: ${{ matrix.libressl }}
+
+ wolfssl:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ wolfssl:
+ - { ref: "v5.1.1-stable", name: "5.1.1"}
+ - { ref: "v5.2.0-stable", name: "5.2.0" }
+ - { ref: "v5.3.0-stable", name: "5.3.0"}
+ name: wolfSSL ${{ matrix.wolfssl.name }}
+ steps:
+ - uses: actions/checkout@v3
+ - uses: lukka/get-cmake@latest
+ - uses: ./.github/actions/install/gtest
+ - uses: ./.github/actions/install/wolfssl
+ with:
+ version: ${{ matrix.wolfssl.ref }}
+
+ - name: configure
+ run: cmake . -DJWT_BUILD_TESTS=ON -DJWT_SSL_LIBRARY:STRING=wolfSSL
+ - run: make
+ - name: test
+ run: ./tests/jwt-cpp-test
+
+ - if: github.event_name == 'push' && always()
+ uses: ./.github/actions/badge
+ with:
+ category: wolfssl
+ label: ${{ matrix.wolfssl.name }}
diff --git a/dep/jwt-cpp/.github/workflows/targets.yml b/dep/jwt-cpp/.github/workflows/targets.yml
new file mode 100644
index 000000000..b30e2a81a
--- /dev/null
+++ b/dep/jwt-cpp/.github/workflows/targets.yml
@@ -0,0 +1,75 @@
+name: Specific Targets CI
+
+on:
+ push:
+ branches: [master]
+ pull_request:
+ branches: [master]
+ paths:
+ - "CMakeLists.txt"
+ - "cmake/**"
+ - "include/jwt-cpp/**"
+ - "tests/cmake/**"
+ - ".github/actions/**"
+ - ".github/workflows/targets.yml"
+
+jobs:
+ gcc-4-8:
+ name: GCC 4.8
+ runs-on: ubuntu-latest
+ container:
+ image: ubuntu:bionic-20230530 # 18.04
+ env:
+ CC: /usr/bin/gcc-4.8
+ CXX: /usr/bin/g++-4.8
+ steps:
+ - run: |
+ apt-get update
+ apt-get install -y g++-4.8 wget make libssl-dev
+ - uses: actions/checkout@v3
+ - uses: ./.github/actions/install/cmake
+ with:
+ version: "3.26.3"
+ url: "https://cmake.org/files/v3.26/cmake-3.26.3.tar.gz"
+
+ - name: setup
+ run: |
+ mkdir build
+ cd build
+ cmake ..
+ cmake --install .
+ - name: test
+ working-directory: tests/cmake
+ run: |
+ CC=gcc-4.8 CXX=g++-4.8 cmake . -DTEST:STRING="defaults-enabled"
+ cmake --build .
+
+ gcc-12:
+ runs-on: ubuntu-latest
+ container:
+ image: ubuntu:jammy-20231004 # 22.04
+ env:
+ CC: /usr/bin/gcc-12
+ CXX: /usr/bin/g++-12
+ steps:
+ - run: |
+ apt-get update
+ apt-get install -y g++-12 wget make libssl-dev
+ - uses: actions/checkout@v3
+ - uses: ./.github/actions/install/cmake
+ with:
+ version: "3.26.3"
+ url: "https://cmake.org/files/v3.26/cmake-3.26.3.tar.gz"
+
+ - name: setup
+ run: |
+ mkdir build
+ cd build
+ cmake ..
+ cmake --install .
+
+ - name: test
+ working-directory: tests/cmake
+ run: |
+ CC=gcc-12 CXX=g++-12 cmake . -DCMAKE_CXX_STANDARD=20 -DTEST:STRING="defaults-enabled"
+ cmake --build .
diff --git a/dep/jwt-cpp/.github/workflows/traits.yml b/dep/jwt-cpp/.github/workflows/traits.yml
new file mode 100644
index 000000000..a86568f47
--- /dev/null
+++ b/dep/jwt-cpp/.github/workflows/traits.yml
@@ -0,0 +1,79 @@
+name: Traits CI
+
+on:
+ push:
+ branches: [master]
+ pull_request:
+ branches: [master]
+
+jobs:
+ traits:
+ name: Traits (${{ matrix.target.name }})
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ target:
+ - { name: "danielaparker-jsoncons", tag: "0.168.7", version: "v0.168.7" }
+ - { name: "boost-json", tag: "1.78.0", version: "v1.80.0" }
+ - { name: "nlohmann-json", tag: "3.11.2", version: "v3.11.2" }
+ - { name: "kazuho-picojson", tag: "111c9be5188f7350c2eac9ddaedd8cca3d7bf394", version: "111c9be" }
+ steps:
+ - uses: actions/checkout@v3
+ - uses: lukka/get-cmake@latest
+ - name: setup
+ run: |
+ mkdir build
+ cd build
+ cmake .. -DJWT_BUILD_EXAMPLES=OFF
+ sudo cmake --install .
+
+ # Install the JSON library
+ - if: matrix.target.name == 'danielaparker-jsoncons'
+ uses: ./.github/actions/install/danielaparker-jsoncons
+ with:
+ version: ${{matrix.target.tag}}
+
+ - if: matrix.target.name == 'boost-json'
+ uses: ./.github/actions/install/boost-json
+ with:
+ version: ${{matrix.target.tag}}
+
+ - if: matrix.target.name == 'nlohmann-json'
+ uses: ./.github/actions/install/nlohmann-json
+ with:
+ version: ${{matrix.target.tag}}
+
+ - if: matrix.target.name == 'kazuho-picojson'
+ run: rm -rf include/picojson
+ - if: matrix.target.name == 'kazuho-picojson'
+ uses: ./.github/actions/install/kazuho-picojson
+ with:
+ version: ${{matrix.target.tag}}
+
+ - name: test
+ working-directory: example/traits
+ run: |
+ cmake . -DCMAKE_FIND_DEBUG_MODE=1
+ cmake --build . --target ${{ matrix.target.name }}
+ ./${{ matrix.target.name }}
+
+ - name: badge success
+ if: github.event_name == 'push' && success()
+ uses: ./.github/actions/badge/write
+ with:
+ category: traits
+ label: ${{ matrix.target.name }}
+ message: ${{ matrix.target.version }}
+ color: lightblue # turquoise
+ - name: badge failure
+ if: github.event_name == 'push' && !success()
+ uses: ./.github/actions/badge/write
+ with:
+ category: traits
+ label: ${{ matrix.target.name }}
+ message: ${{ matrix.target.version }}
+ color: orange
+ - if: github.event_name == 'push' && always()
+ uses: ./.github/actions/badge/publish
+ with:
+ github_token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/dep/jwt-cpp/.gitignore b/dep/jwt-cpp/.gitignore
new file mode 100644
index 000000000..751d5958c
--- /dev/null
+++ b/dep/jwt-cpp/.gitignore
@@ -0,0 +1,317 @@
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+
+# User-specific files
+*.suo
+*.user
+*.userosscache
+*.sln.docstates
+
+# User-specific files (MonoDevelop/Xamarin Studio)
+*.userprefs
+
+# Build results
+[Dd]ebug/
+[Dd]ebugPublic/
+[Rr]elease/
+[Rr]eleases/
+x64/
+x86/
+bld/
+[Bb]in/
+[Oo]bj/
+[Ll]og/
+
+# Visual Studio 2015 cache/options directory
+.vs/
+# Uncomment if you have tasks that create the project's static files in wwwroot
+#wwwroot/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+# NUNIT
+*.VisualState.xml
+TestResult.xml
+
+# Build Results of an ATL Project
+[Dd]ebugPS/
+[Rr]eleasePS/
+dlldata.c
+
+# DNX
+project.lock.json
+artifacts/
+
+*_i.c
+*_p.c
+*_i.h
+*.ilk
+*.meta
+*.obj
+*.pch
+*.pdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.tmp_proj
+*.log
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.svclog
+*.scc
+
+# Chutzpah Test files
+_Chutzpah*
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opendb
+*.opensdf
+*.sdf
+*.cachefile
+*.VC.db
+*.VC.VC.opendb
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+*.sap
+
+# TFS 2012 Local Workspace
+$tf/
+
+# Guidance Automation Toolkit
+*.gpState
+
+# ReSharper is a .NET coding add-in
+_ReSharper*/
+*.[Rr]e[Ss]harper
+*.DotSettings.user
+
+# JustCode is a .NET coding add-in
+.JustCode
+
+# TeamCity is a build add-in
+_TeamCity*
+
+# DotCover is a Code Coverage Tool
+*.dotCover
+
+# NCrunch
+_NCrunch_*
+.*crunch*.local.xml
+nCrunchTemp_*
+
+# MightyMoose
+*.mm.*
+AutoTest.Net/
+
+# Web workbench (sass)
+.sass-cache/
+
+# Installshield output folder
+[Ee]xpress/
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish/
+
+# Publish Web Output
+*.[Pp]ublish.xml
+*.azurePubxml
+# TODO: Comment the next line if you want to checkin your web deploy settings
+# but database connection strings (with potential passwords) will be unencrypted
+*.pubxml
+*.publishproj
+
+# Microsoft Azure Web App publish settings. Comment the next line if you want to
+# checkin your Azure Web App publish settings, but sensitive information contained
+# in these scripts will be unencrypted
+PublishScripts/
+
+# NuGet Packages
+*.nupkg
+# The packages folder can be ignored because of Package Restore
+**/packages/*
+# except build/, which is used as an MSBuild target.
+!**/packages/build/
+# Uncomment if necessary however generally it will be regenerated when needed
+#!**/packages/repositories.config
+# NuGet v3's project.json files produces more ignoreable files
+*.nuget.props
+*.nuget.targets
+
+# Microsoft Azure Build Output
+csx/
+*.build.csdef
+
+# Microsoft Azure Emulator
+ecf/
+rcf/
+
+# Windows Store app package directories and files
+AppPackages/
+BundleArtifacts/
+Package.StoreAssociation.xml
+_pkginfo.txt
+
+# Visual Studio cache files
+# files ending in .cache can be ignored
+*.[Cc]ache
+# but keep track of directories ending in .cache
+!*.[Cc]ache/
+
+# Others
+ClientBin/
+~$*
+*~
+*.dbmdl
+*.dbproj.schemaview
+*.pfx
+*.publishsettings
+node_modules/
+orleans.codegen.cs
+
+# Since there are multiple workflows, uncomment next line to ignore bower_components
+# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
+#bower_components/
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file
+# to a newer Visual Studio version. Backup files are not needed,
+# because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+UpgradeLog*.htm
+
+# SQL Server files
+*.mdf
+*.ldf
+
+# Business Intelligence projects
+*.rdl.data
+*.bim.layout
+*.bim_*.settings
+
+# Microsoft Fakes
+FakesAssemblies/
+
+# GhostDoc plugin setting file
+*.GhostDoc.xml
+
+# Node.js Tools for Visual Studio
+.ntvs_analysis.dat
+
+# Visual Studio 6 build log
+*.plg
+
+# Visual Studio 6 workspace options file
+*.opt
+
+# Visual Studio LightSwitch build output
+**/*.HTMLClient/GeneratedArtifacts
+**/*.DesktopClient/GeneratedArtifacts
+**/*.DesktopClient/ModelManifest.xml
+**/*.Server/GeneratedArtifacts
+**/*.Server/ModelManifest.xml
+_Pvt_Extensions
+
+# Paket dependency manager
+.paket/paket.exe
+paket-files/
+
+# FAKE - F# Make
+.fake/
+
+# JetBrains Rider
+.idea/
+*.sln.iml
+
+# =========================
+# Operating System Files
+# =========================
+
+# OSX
+# =========================
+
+.DS_Store
+.AppleDouble
+.LSOverride
+
+# Thumbnails
+._*
+
+# Files that might appear in the root of a volume
+.DocumentRevisions-V100
+.fseventsd
+.Spotlight-V100
+.TemporaryItems
+.Trashes
+.VolumeIcon.icns
+
+# Directories potentially created on remote AFP share
+.AppleDB
+.AppleDesktop
+Network Trash Folder
+Temporary Items
+.apdisk
+
+# Windows
+# =========================
+
+# Windows image file caches
+Thumbs.db
+ehthumbs.db
+
+# Folder config file
+Desktop.ini
+
+# Recycle Bin used on file shares
+$RECYCLE.BIN/
+
+# Windows Installer files
+*.cab
+*.msi
+*.msm
+*.msp
+
+# Windows shortcuts
+*.lnk
+
+# Linux files
+test
+*.o
+*.o.d
+.vscode
+# ClangD cache files
+.cache
+
+doxy/
+doxygen-awesome*.css
+
+build/*
+package-lock.json
diff --git a/dep/jwt-cpp/CMakeLists.txt b/dep/jwt-cpp/CMakeLists.txt
index 62fbf647d..5318cb435 100644
--- a/dep/jwt-cpp/CMakeLists.txt
+++ b/dep/jwt-cpp/CMakeLists.txt
@@ -131,7 +131,7 @@ endif()
configure_package_config_file(
${CMAKE_CURRENT_LIST_DIR}/cmake/jwt-cpp-config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/jwt-cpp-config.cmake
INSTALL_DESTINATION ${JWT_CMAKE_FILES_INSTALL_DIR} PATH_VARS JWT_EXTERNAL_PICOJSON JWT_SSL_LIBRARY)
-write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/jwt-cpp-config-version.cmake VERSION 0.6.0
+write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/jwt-cpp-config-version.cmake VERSION 0.7.0
COMPATIBILITY ExactVersion)
install(TARGETS jwt-cpp EXPORT jwt-cpp-targets PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
diff --git a/dep/jwt-cpp/docs/faqs.md b/dep/jwt-cpp/docs/faqs.md
index 48b107fd7..b096f03c6 100644
--- a/dep/jwt-cpp/docs/faqs.md
+++ b/dep/jwt-cpp/docs/faqs.md
@@ -4,7 +4,7 @@
### The generated JWT token can be decoded, is this correct and secure?
-This is the expected behaviour. While the integrity of tokens is ensured by the generated/verified hash,
+This is the expected behavior. While the integrity of tokens is ensured by the generated/verified hash,
the contents of the token are only **encoded and not encrypted**. This means you can be sure the token
has not been modified by an unauthorized party, but you should not store confidential information in it.
Anyone with access to the token can read all the claims you put into it. They can however not modify
@@ -26,7 +26,7 @@ Here are a few links for your convenience:
### Can this library encrypt/decrypt claims?
No it does not, see [#115](https://github.com/Thalhammer/jwt-cpp/issues/115) for more details.
-More importantly you probably dont want to be using JWTs for anything sensitive. Read [this](https://stackoverflow.com/a/43497242/8480874)
+More importantly you probably don't want to be using JWTs for anything sensitive. Read [this](https://stackoverflow.com/a/43497242/8480874)
for more.
### Why are my tokens immediately expired?
@@ -53,8 +53,8 @@ That should result in the token being rejected. For more details checkout [#194]
This was brought up in [#212](https://github.com/Thalhammer/jwt-cpp/issues/212#issuecomment-1054344192) and
[#101](https://github.com/Thalhammer/jwt-cpp/issues/101) as it's an excellent question.
-It simply was not required to handle the required keys in JWTs for signing or verification. All the the mandatory keys are numeric,
-string or array types which required type definitions and access.
+It simply was not required to handle the required keys in JWTs for signing or verification. All the the mandatory keys
+are numeric, string or array types which required type definitions and access.
The alternative is to use the `to_json()` method and use the libraries own APIs to pick the data type you need.
@@ -63,13 +63,16 @@ The alternative is to use the `to_json()` method and use the libraries own APIs
### Missing \_HMAC and \_EVP_sha256 symbols on Mac
There seems to exists a problem with the included openssl library of MacOS. Make sure you link to one provided by brew.
-See [here](https://github.com/Thalhammer/jwt-cpp/issues/6) for more details.
+See [#6](https://github.com/Thalhammer/jwt-cpp/issues/6) for more details.
### Building on windows fails with syntax errors
-The header ``, which is often included in windowsprojects, defines macros for MIN and MAX which screw up std::numeric_limits.
-See [here](https://github.com/Thalhammer/jwt-cpp/issues/5) for more details. To fix this do one of the following things:
+The header ``, which is often included in Windows projects, defines macros for MIN and MAX which conflicts
+with `std::numeric_limits`. See [#5](https://github.com/Thalhammer/jwt-cpp/issues/5) for more details or
+[this StackOverflow thread](https://stackoverflow.com/questions/13416418/define-nominmax-using-stdmin-max).
-* define NOMINMAX, which suppresses this behaviour
-* include this library before you include windows.h
+To fix this do one of the following things:
+
+* define `NOMINMAX`, which suppresses this behavior
+* include this library before you `#include `
* place `#undef max` and `#undef min` before you include this library
diff --git a/dep/jwt-cpp/docs/signing.md b/dep/jwt-cpp/docs/signing.md
new file mode 100644
index 000000000..a6ec5d2ff
--- /dev/null
+++ b/dep/jwt-cpp/docs/signing.md
@@ -0,0 +1,34 @@
+# Signing Tokens
+
+## Custom Signature Algorithms
+
+The libraries design is open so you can implement your own algorithms, see [existing examples](https://github.com/Thalhammer/jwt-cpp/blob/73f23419235661e89a304ba5ab09d6714fb8dd94/include/jwt-cpp/jwt.h#L874) for ideas.
+
+```cpp
+struct your_algorithm{
+ std::string sign(const std::string& /*unused*/, std::error_code& ec) const {
+ ec.clear();
+ // CALL YOUR METHOD HERE
+ return {};
+ }
+ void verify(const std::string& /*unused*/, const std::string& signature, std::error_code& ec) const {
+ ec.clear();
+ if (!signature.empty()) { ec = error::signature_verification_error::invalid_signature; }
+
+ // CALL YOUR METHOD HERE
+ }
+ std::string name() const { return "your_algorithm"; }
+};
+```
+
+Then everything else is the same, just pass in your implementation such as:
+
+
+```cpp
+auto token = jwt::create()
+ .set_id("custom-algo-example")
+ .set_issued_at(std::chrono::system_clock::now())
+ .set_expires_at(std::chrono::system_clock::now() + std::chrono::seconds{36000})
+ .set_payload_claim("sample", jwt::claim(std::string{"test"}))
+ .sign(your_algorithm{/* what ever you want */});
+```
diff --git a/dep/jwt-cpp/include/jwt-cpp/base.h b/dep/jwt-cpp/include/jwt-cpp/base.h
index 8e6fc311a..fd3ee281b 100644
--- a/dep/jwt-cpp/include/jwt-cpp/base.h
+++ b/dep/jwt-cpp/include/jwt-cpp/base.h
@@ -39,7 +39,7 @@ namespace jwt {
return data;
}
static const std::string& fill() {
- static std::string fill{"="};
+ static const std::string fill{"="};
return fill;
}
};
@@ -62,7 +62,7 @@ namespace jwt {
return data;
}
static const std::string& fill() {
- static std::string fill{"%3d"};
+ static const std::string fill{"%3d"};
return fill;
}
};
@@ -82,8 +82,8 @@ namespace jwt {
'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '_'}};
return data;
}
- static const std::initializer_list& fill() {
- static std::initializer_list fill{"%3D", "%3d"};
+ static const std::vector& fill() {
+ static const std::vector fill{"%3D", "%3d"};
return fill;
}
};
diff --git a/dep/jwt-cpp/include/nlohmann/json.hpp b/dep/jwt-cpp/include/nlohmann/json.hpp
deleted file mode 100644
index a70aaf8cb..000000000
--- a/dep/jwt-cpp/include/nlohmann/json.hpp
+++ /dev/null
@@ -1,25447 +0,0 @@
-/*
- __ _____ _____ _____
- __| | __| | | | JSON for Modern C++
-| | |__ | | | | | | version 3.9.1
-|_____|_____|_____|_|___| https://github.com/nlohmann/json
-
-Licensed under the MIT License .
-SPDX-License-Identifier: MIT
-Copyright (c) 2013-2019 Niels Lohmann .
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-#ifndef INCLUDE_NLOHMANN_JSON_HPP_
-#define INCLUDE_NLOHMANN_JSON_HPP_
-
-#define NLOHMANN_JSON_VERSION_MAJOR 3
-#define NLOHMANN_JSON_VERSION_MINOR 9
-#define NLOHMANN_JSON_VERSION_PATCH 1
-
-#include // all_of, find, for_each
-#include // nullptr_t, ptrdiff_t, size_t
-#include // hash, less
-#include // initializer_list
-#include // istream, ostream
-#include // random_access_iterator_tag
-#include // unique_ptr
-#include // accumulate
-#include // string, stoi, to_string
-#include // declval, forward, move, pair, swap
-#include // vector
-
-// #include
-
-
-#include
-
-// #include
-
-
-#include // transform
-#include // array
-#include // forward_list
-#include // inserter, front_inserter, end
-#include