Commit Graph

1042 Commits

Author SHA1 Message Date
Ife Lawal
08ff0f2ed6 Show length error when Configs provided are too long (#1920)
* Show an error when a config is too long
2021-06-26 00:04:36 -04:00
Chris Frohoff
dd05f57b6a Limit total number of teams (#1867)
* Adds support for a total teams limit
2021-06-25 23:00:40 -04:00
Kevin Chung
df27d0e7a9 Flip value and initial for dynamic challenges to better support ctfcli (#1921)
* Makes the initial value for a dynamic challenge provided by the `initial` argument instead of the `value` argument. This makes it easier to support ctfcli. Refer to https://github.com/CTFd/ctfcli/issues/13. 
* Closes #1875
2021-06-18 19:13:55 -04:00
Kevin Chung
614f086540 Allow Page editor to write HTML directly (#1915)
* Works on #1493 
* Adds a new column for Pages to specify format
* Separate out `build_html` into `build_html` and `build_markdown`
* Add config variables into pages: `ctf_name`, `ctf_description`, `ctf_start`, `ctf_end`, `ctf_freeze`
  * The time variables are represented as ISO8601 timestamps
2021-06-17 10:33:01 -04:00
Kevin Chung
b875738b13 Show the team's score & place when viewing a team member (#1918)
* Closes #1881 
* Show the team's score & place when viewing a team member
2021-06-17 01:36:55 -04:00
Kevin Chung
1063521394 Bump all the JS dependencies from dependabot (#1919)
* Bump ssri from 6.0.1 to 6.0.2 (#1870)

Bumps [ssri](https://github.com/npm/ssri) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/npm/ssri/releases)
- [Changelog](https://github.com/npm/ssri/blob/v6.0.2/CHANGELOG.md)
- [Commits](https://github.com/npm/ssri/compare/v6.0.1...v6.0.2)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Kevin Chung <kchung@ctfd.io>

* Bump lodash from 4.17.20 to 4.17.21 (#1884)

Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump hosted-git-info from 2.8.8 to 2.8.9 (#1885)

Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9.
- [Release notes](https://github.com/npm/hosted-git-info/releases)
- [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md)
- [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump codemirror from 5.42.2 to 5.58.2 (#1886)

Bumps [codemirror](https://github.com/codemirror/CodeMirror) from 5.42.2 to 5.58.2.
- [Release notes](https://github.com/codemirror/CodeMirror/releases)
- [Changelog](https://github.com/codemirror/CodeMirror/blob/master/CHANGELOG.md)
- [Commits](https://github.com/codemirror/CodeMirror/compare/5.42.2...5.58.2)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump browserslist from 4.14.3 to 4.16.6 (#1894)

Bumps [browserslist](https://github.com/browserslist/browserslist) from 4.14.3 to 4.16.6.
- [Release notes](https://github.com/browserslist/browserslist/releases)
- [Changelog](https://github.com/browserslist/browserslist/blob/main/CHANGELOG.md)
- [Commits](https://github.com/browserslist/browserslist/compare/4.14.3...4.16.6)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump postcss from 7.0.34 to 7.0.36 (#1917)

Bumps [postcss](https://github.com/postcss/postcss) from 7.0.34 to 7.0.36.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/7.0.34...7.0.36)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Run yarn build

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-06-17 00:48:00 -04:00
Connor Nelson
1dafc62fda Sort challenges by id (#1914)
* Sort challenges by ID as well as value in `/api/v1/challenges` to better standardize API output
2021-06-16 11:54:31 -04:00
Kevin Chung
241f5e49fa Show a team member's individual score in the admin panel (#1912)
* Show a team member's individual score in the admin panel
2021-06-15 15:21:46 -04:00
Kevin Chung
021e151946 Switch python-geoacumen to python-geoacumen-city (#1911)
* Closes #1872 
* IP Addresses in the Admin Panel will now show the city of the IP address as well as the country
2021-06-11 17:30:27 -04:00
dependabot[bot]
ef6a5f8d64 Bump pydantic from 1.5.1 to 1.6.2 (#1890)
* Bump pydantic from 1.5.1 to 1.6.2

Bumps [pydantic](https://github.com/samuelcolvin/pydantic) from 1.5.1 to 1.6.2.
- [Release notes](https://github.com/samuelcolvin/pydantic/releases)
- [Changelog](https://github.com/samuelcolvin/pydantic/blob/master/HISTORY.md)
- [Commits](https://github.com/samuelcolvin/pydantic/compare/v1.5.1...v1.6.2)

Signed-off-by: dependabot[bot] <support@github.com>

* Update requirements.txt

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Kevin Chung <kchung@ctfd.io>
Co-authored-by: Kevin Chung <kchung@nyu.edu>
2021-06-11 15:37:10 -04:00
Kevin Chung
2f3409d887 Add fix for MLC configs in config.ini (#1909) 2021-06-11 14:57:19 -04:00
Kevin Chung
3cb67a97ec Bump pybluemonday version to 0.0.6 and allow HTML comments in sanitized output (#1908)
* Bump pybluemonday version to 0.0.6 
* Allow HTML comments in sanitized output
* Closes #1906
2021-06-11 10:21:03 -04:00
Ife Lawal
c31916057f Confirmed REST API does delete directories in s3 bucket. The local filesystem didn't though and that was updated. Closes #1758 (#1876)
- Deleting uploads under the Filesystem upload provider will now delete the parent folder as well as the target file
- Closes #1758
2021-06-06 23:21:38 -04:00
Kevin Chung
1195454258 Handle edge case where users have a null password (#1902)
* Handle an edge case where users try to login but were logged in through an authentication provider
2021-06-01 12:46:54 -04:00
Kevin Chung
20460c861d Widen the challenge creation form to make it easier to show longer challenge types (#1901) 2021-06-01 08:58:23 -04:00
Kevin Chung
bdc58ef911 Beta challenge sorting interface (#1900)
* Add a beta way to sort challenges in the core theme through `window.BETA_sortChallenges()`
2021-05-30 17:47:25 -04:00
Mike Merrill
8646f2384c Update geoip.py (#1896)
Added error handling in case `IP_ADDR_LOOKUP.get(addr)` fails.
2021-05-28 11:03:56 -04:00
Ife Lawal
f00e69d619 Ctftime test context #928 (#1866)
Works on #928
2021-04-26 14:31:19 -04:00
Ife Lawal
03e546e9f0 Pydantic documentation Fixes #1829 (#1871)
- Improved the `sqlalchemy_to_pydantic` function to accept additional schema fields on top of the SQLAlchemy model fields
- Added the solves and solved_by_me fields to the Swagger documentation (Closes #1829)
2021-04-26 14:00:04 -04:00
Kevin Chung
21af356642 Bump pybluemonday version (#1869)
* Bump version of pybluemonday
2021-04-20 12:54:31 -04:00
Frank
345706d762 ping database with python instead of mysql client (#1862)
* Replaces `mysqladmin ping` with a custom script
* Closes #725
2021-04-17 21:29:15 -04:00
Frank
5976830957 use different directories for different tests (#1864) 2021-04-12 17:33:46 -04:00
Kevin Chung
87711d7241 Put up a fix for challenges whose requirements were deleted (#1861)
* Works on #1860 
* Don't consider deleted challenges when evaluating challenge prereqs
2021-04-06 16:17:18 -04:00
Kevin Chung
26dbbbeacc Ignore node_modules in any subdirectory for Docker (#1857)
- Make `node_modules` in `.dockerignore` recursive to not add any `node_modules` folders into the build context
2021-04-01 15:46:11 -04:00
Ben Woo
3edb4c343b Fix wrong date for v3.3.0 changelog. (#1856)
It's 2021 now, time flies haha
2021-04-01 15:25:55 -04:00
Kevin Chung
d23f59dbd5 Fix issue where admins couldn't see some challenges in the add requirements interface (#1853)
- Fix an issue where admins couldn't see challenges which had requirements in the add requirements interface
2021-03-27 19:59:10 -04:00
Kevin Chung
a33a31b1f8 Update CHANGELOG and add release date (#1852)
# 3.3.0 / 2020-03-26

**General**

- Don't require a team for viewing challenges if Challenge visibility is set to public
- Add a `THEME_FALLBACK` config to help develop themes. See **Themes** section for details.

**API**

- Implement a faster `/api/v1/scoreboard` endpoint in Teams Mode
- Add the `solves` item to both `/api/v1/challenges` and `/api/v1/challenges/[challenge_id]` to more easily determine how many solves a challenge has
- Add the `solved_by_me` item to both `/api/v1/challenges` and `/api/v1/challenges/[challenge_id]` to more easily determine if the current account has solved the challenge
- Prevent admins from deleting themselves through `DELETE /api/v1/users/[user_id]`
- Add length checking to some sensitive fields in the Pages and Challenges schemas
- Fix issue where `PATCH /api/v1/users[user_id]` returned a list instead of a dict
- Fix exception that occured on demoting admins through `PATCH /api/v1/users[user_id]`
- Add `team_id` to `GET /api/v1/users` to determine if a user is already in a team
- Provide a more useful error message when using an expired token

**Themes**

- Add a `THEME_FALLBACK` config to help develop themes.
  - `THEME_FALLBACK` will configure CTFd to try to find missing theme files in the default built-in `core` theme.
  - This makes it easier to develop themes or use incomplete themes.
- Allow for one theme to reference and inherit from another theme through approaches like `{% extends "core/page.html" %}`
- Allow for the automatic date rendering format to be overridden by specifying a `data-time-format` attribute.
- Add styling for the `<blockquote>` element.
- Change `users/private.html`, `users/public.html` to show awards before a user gets a solve
- Change `teams/private.html`, `teams/public.html` to show awards before a team gets a solve
- Change `colorHash` function to use HSL color values to avoid generating too light/dark colors
- Fix an issue where hidden users couldn't see their graphing data on their private user page (`/user`)
- Fix scoreboard table identifier to switch between User/Team depending on configured user mode
- Switch the challenges page in core to use the new API information in `/api/v1/challenges` to mark solves and display solve counts
- Switch to using Bootstrap's scss in `core/main.scss` to allow using Bootstrap variables
- Consolidate Jinja error handlers into a single function and better handle issues where error templates can't be found

**Plugins**

- Set plugin migration version after successful migrations
- Fix issue where Page URLs injected into the navbar were relative instead of absolute

**Admin Panel**

- Add User standings as well as Teams standings to the admin scoreboard when in Teams Mode
- Add a UI for adding members to a team from the team's admin page
- Add ability for admins to disable public team creation
- Link directly to users who submitted something in the submissions page if the CTF is in Teams Mode
- Fix Challenge Requirements interface in Admin Panel to not allow empty/null requirements to be added
- Fixed an issue where config times (start, end, freeze times) could not be removed
- Fix an exception that occurred when demoting an Admin user
- Adds a temporary hack for re-enabling Javascript snippets in Flag editor templates. (See #1779)

**Deployment**

- Fix boolean configs from the `config.ini` optional section
- Install `python3-dev` instead of `python-dev` in apt
- Require `pybluemonday` as pip dependency
- Remove `lxml` and `html5lib` from pip dependencies
- Bump `Jinja2` to 2.11.3
- Bump `pip-tools` to 5.4.0

**Miscellaneous**

- Rewrite the HTML santiziation feature (controlled by `HTML_SANITIZATION`) to use the `pybluemonday` library instead of `lxml`/`html5lib`
  - Note that this feature is still in beta
- Cache Docker builds more by copying and installing Python dependencies before copying CTFd
- Change the default emails slightly and rework confirmation email page to make some recommendations clearer
- Use `examplectf.com` as testing/development domain instead of `ctfd.io`
- Fix issue where user's name and email would not appear in logs properly
- Add more linting by also linting with `flake8-comprehensions` and `flake8-bugbear`
- Add `.pyc` files and `__pycache__` to `.dockerignore`
2021-03-27 02:08:20 -04:00
Kevin Chung
88c53f3510 Make expired token error message more useful (#1851)
* Make expired token error message more useful
2021-03-25 11:59:59 -04:00
Kevin Chung
ca2ab13f0d Add files and to (#1850)
- Add `.pyc` files and `__pycache__` to `.dockerignore`
2021-03-25 04:01:28 -04:00
Kevin Chung
c63c93b30a Fix user profiles not showing awards before an account gets a solve (#1848)
- Change users/private.html, users/public.html to show awards before a user gets a solve
- Change teams/private.html, teams/public.html to show awards before a team gets a solve
2021-03-24 21:14:11 -04:00
dependabot[bot]
cd9ff1ec32 Bump jinja2 from 2.11.2 to 2.11.3 (#1838)
* Bump jinja2 from 2.11.2 to 2.11.3

Bumps [jinja2](https://github.com/pallets/jinja) from 2.11.2 to 2.11.3.
- [Release notes](https://github.com/pallets/jinja/releases)
- [Changelog](https://github.com/pallets/jinja/blob/master/CHANGES.rst)
- [Commits](https://github.com/pallets/jinja/compare/2.11.2...2.11.3)

Signed-off-by: dependabot[bot] <support@github.com>

* Run pip-compile our way

* Add newline

* Update CHANGELOG

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Kevin Chung <kchung@nyu.edu>
Co-authored-by: Kevin Chung <kchung@ctfd.io>
2021-03-24 15:42:28 -04:00
Kevin Chung
7fa9f2f56e fix: Ensure hidden users see their own solves (#1840) (#1846)
* Closes #1839

Co-authored-by: maybe-sybr <58414429+maybe-sybr@users.noreply.github.com>
2021-03-24 13:24:28 -04:00
Kevin Chung
d0c92073c3 Fix for hidden users seeing their graphing data (#1845)
* Fix an issue where hidden users couldn't see their graphing data on their private user page (i.e. `/user`)
2021-03-23 00:38:55 -04:00
Kevin Chung
0fdb038c6c Use new properties in /api/v1/challenges (#1844)
- Switch the challenges page in core to use the new API information in `/api/v1/challenges` to mark solves and display solve counts
- Closes #1811
2021-03-22 20:32:37 -04:00
Kevin Chung
b07ba13a12 Change colorHash function to use HSL values (#1843)
* Change `colorHash` function to use HSL values to avoid too dark/light colors
* Closes #1842
2021-03-22 19:51:18 -04:00
Kevin Chung
a045114251 Use pybluemonday instead of lxml for html sanitization (#1837)
* Use `pybluemonday` instead of `lxml` for html sanitization
* Fix boolean optional configs in `config.py`
* Closes #1835
2021-03-19 01:29:49 -04:00
Kevin Chung
8de9819bd4 3.3.0 (#1833)
# 3.3.0 / UNRELEASED

**General**

- Don't require a team for viewing challenges if Challenge visibility is set to public
- Add a `THEME_FALLBACK` config to help develop themes. See **Themes** section for details.

**API**

- Implement a faster `/api/v1/scoreboard` endpoint in Teams Mode
- Add the `solves` item to both `/api/v1/challenges` and `/api/v1/challenges/[challenge_id]` to more easily determine how many solves a challenge has
- Add the `solved_by_me` item to both `/api/v1/challenges` and `/api/v1/challenges/[challenge_id]` to more easily determine if the current account has solved the challenge
- Prevent admins from deleting themselves through `DELETE /api/v1/users/[user_id]`
- Add length checking to some sensitive fields in the Pages and Challenges schemas
- Fix issue where `PATCH /api/v1/users[user_id]` returned a list instead of a dict
- Fix exception that occured on demoting admins through `PATCH /api/v1/users[user_id]`
- Add `team_id` to `GET /api/v1/users` to determine if a user is already in a team

**Themes**

- Add a `THEME_FALLBACK` config to help develop themes.
  - `THEME_FALLBACK` will configure CTFd to try to find missing theme files in the default built-in `core` theme.
  - This makes it easier to develop themes or use incomplete themes.
- Allow for one theme to reference and inherit from another theme through approaches like `{% extends "core/page.html" %}`
- Allow for the automatic date rendering format to be overridden by specifying a `data-time-format` attribute.
- Add styling for the `<blockquote>` element.
- Fix scoreboard table identifier to switch between User/Team depending on configured user mode
- Switch to using Bootstrap's scss in `core/main.scss` to allow using Bootstrap variables
- Consolidate Jinja error handlers into a single function and better handle issues where error templates can't be found

**Plugins**

- Set plugin migration version after successful migrations
- Fix issue where Page URLs injected into the navbar were relative instead of absolute

**Admin Panel**

- Add User standings as well as Teams standings to the admin scoreboard when in Teams Mode
- Add a UI for adding members to a team from the team's admin page
- Add ability for admins to disable public team creation
- Link directly to users who submitted something in the submissions page if the CTF is in Teams Mode
- Fix Challenge Requirements interface in Admin Panel to not allow empty/null requirements to be added
- Fixed an issue where config times (start, end, freeze times) could not be removed
- Fix an exception that occurred when demoting an Admin user
- Adds a temporary hack for re-enabling Javascript snippets in Flag editor templates. (See #1779)

**Deployment**

- Install `python3-dev` instead of `python-dev` in apt
- Bump lxml to 4.6.2
- Bump pip-compile to 5.4.0

**Miscellaneous**

- Cache Docker builds more by copying and installing Python dependencies before copying CTFd
- Change the default emails slightly and rework confirmation email page to make some recommendations clearer
- Use `examplectf.com` as testing/development domain instead of `ctfd.io`
- Fixes issue where user's name and email would not appear in logs properly
- Add more linting by also linting with `flake8-comprehensions` and `flake8-bugbear`
2021-03-18 18:08:46 -04:00
Kevin Chung
8a70d9527f Relax team requirement when challenges are publicly visible (#1832)
* Don't require a team for viewing challenges if Challenge visibility is set to public
* Closes #1831
2021-03-18 02:35:03 -04:00
Kevin Chung
e5dbd62a66 Fix frontend UI where empty/null requirements could be added (#1824)
* Fix Challenge Requirements interface in Admin Panel to not allow empty/null requirements to be added
* Closes #1809
2021-03-16 19:03:55 -04:00
Kevin Chung
b74b91774c Set plugin migration version after a successful migration (#1827)
* Set plugin migration version after successful migrations
* Closes #1763
2021-03-16 18:48:18 -04:00
Kevin Chung
f8552b8403 Add styling for blockquotes. Switch to using Bootstrap's scss for main.scss. (#1826)
* Add styling for blockquotes. Closes #1814 
* Switch to using Bootstrap's scss in main.scss to allow using Bootstrap variables
2021-03-16 16:31:54 -04:00
Kevin Chung
a3dbecdd18 Link directly to users from the submissions page in teams mode (#1823)
* Links directly to users who submitted something in the submissions page if the CTF is in teams mode. 
* Closes #1813
2021-03-16 15:32:38 -04:00
Kevin Chung
1e0b196189 Fix some template issues reported by curlylint (#1822)
* Fixes some issues reported by [curlylint](https://github.com/thibaudcolas/curlylint).
2021-03-16 12:46:16 -04:00
dependabot[bot]
6b05c03968 Bump elliptic from 6.5.3 to 6.5.4 (#1818)
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.3 to 6.5.4.
- [Release notes](https://github.com/indutny/elliptic/releases)
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.3...v6.5.4)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-03-11 00:56:02 -05:00
Alper Berber
4125e7c00c Fixed registration and confirmation logs (#1734)
* Fixes issue where user's name and email would not appear in logs properly
* Closes #1706
2021-03-06 15:56:12 -05:00
Kevin Chung
843546bfa8 Switch default testing/development domain name to examplectf.com (#1807)
* Use `examplectf.com` as testing/development domain instead of `ctfd.io`
2021-02-20 15:11:22 -05:00
Kevin Chung
5611c47487 1002 improve email content (#1804)
* Change the default emails slightly and rework confirmation email page to make some recommendations clearer
* Works a little more on #1002
2021-02-18 16:09:10 -05:00
Kevin Chung
a09e2201ee Fix default team_creation representation value in the config page (#1803)
* Fix default team_creation representation value in the config page
2021-02-16 13:21:32 -05:00
Kevin Chung
5c9b3e7070 Add team creation disable configuration (#1802)
* Add ability for admins to disable public team creation
* Closes #1364
2021-02-12 18:26:03 -05:00
Kevin Chung
abdc366bb7 Fix scoreboard identifier to switch between User/Team depending on mode (#1800)
* Fix scoreboard table identifier to switch between User/Team depending on mode
* Closes #1777
2021-02-11 01:11:50 -05:00