Skip to content

Commit

Permalink
fix country bugs in CTFd/utils
Browse files Browse the repository at this point in the history
  • Loading branch information
wumingzhilian committed May 14, 2024
1 parent a81d535 commit 2a3d170
Show file tree
Hide file tree
Showing 2 changed files with 290 additions and 0 deletions.
289 changes: 289 additions & 0 deletions 0001-use-pycountry-to-replace-self-generated-country-list.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,289 @@
From 5625e11322adac7561f2d355146875c3ea44e945 Mon Sep 17 00:00:00 2001
From: Dongliang Mu <[email protected]>
Date: Wed, 6 Mar 2024 19:22:32 +0800
Subject: [PATCH] use pycountry to replace self-generated country list

---
CTFd/utils/countries/__init__.py | 261 +------------------------------
1 file changed, 4 insertions(+), 257 deletions(-)

diff --git a/CTFd/utils/countries/__init__.py b/CTFd/utils/countries/__init__.py
index 83420ab..4f47aec 100644
--- a/CTFd/utils/countries/__init__.py
+++ b/CTFd/utils/countries/__init__.py
@@ -1,263 +1,9 @@
# -*- coding: utf-8 -*-

from collections import OrderedDict
+from pycountry import countries

-COUNTRIES_LIST = [
- ("AF", "Afghanistan"),
- ("AX", "Åland Islands"),
- ("AL", "Albania"),
- ("DZ", "Algeria"),
- ("AS", "American Samoa"),
- ("AD", "Andorra"),
- ("AO", "Angola"),
- ("AI", "Anguilla"),
- ("AQ", "Antarctica"),
- ("AG", "Antigua & Barbuda"),
- ("AR", "Argentina"),
- ("AM", "Armenia"),
- ("AW", "Aruba"),
- ("AC", "Ascension Island"),
- ("AU", "Australia"),
- ("AT", "Austria"),
- ("AZ", "Azerbaijan"),
- ("BS", "Bahamas"),
- ("BH", "Bahrain"),
- ("BD", "Bangladesh"),
- ("BB", "Barbados"),
- ("BY", "Belarus"),
- ("BE", "Belgium"),
- ("BZ", "Belize"),
- ("BJ", "Benin"),
- ("BM", "Bermuda"),
- ("BT", "Bhutan"),
- ("BO", "Bolivia"),
- ("BA", "Bosnia & Herzegovina"),
- ("BW", "Botswana"),
- ("BR", "Brazil"),
- ("IO", "British Indian Ocean Territory"),
- ("VG", "British Virgin Islands"),
- ("BN", "Brunei"),
- ("BG", "Bulgaria"),
- ("BF", "Burkina Faso"),
- ("BI", "Burundi"),
- ("KH", "Cambodia"),
- ("CM", "Cameroon"),
- ("CA", "Canada"),
- ("IC", "Canary Islands"),
- ("CV", "Cape Verde"),
- ("BQ", "Caribbean Netherlands"),
- ("KY", "Cayman Islands"),
- ("CF", "Central African Republic"),
- ("EA", "Ceuta & Melilla"),
- ("TD", "Chad"),
- ("CL", "Chile"),
- ("CN", "China"),
- ("CX", "Christmas Island"),
- ("CC", "Cocos (Keeling) Islands"),
- ("CO", "Colombia"),
- ("KM", "Comoros"),
- ("CG", "Congo - Brazzaville"),
- ("CD", "Congo - Kinshasa"),
- ("CK", "Cook Islands"),
- ("CR", "Costa Rica"),
- ("CI", "Côte d’Ivoire"),
- ("HR", "Croatia"),
- ("CU", "Cuba"),
- ("CW", "Curaçao"),
- ("CY", "Cyprus"),
- ("CZ", "Czechia"),
- ("DK", "Denmark"),
- ("DG", "Diego Garcia"),
- ("DJ", "Djibouti"),
- ("DM", "Dominica"),
- ("DO", "Dominican Republic"),
- ("EC", "Ecuador"),
- ("EG", "Egypt"),
- ("SV", "El Salvador"),
- ("GQ", "Equatorial Guinea"),
- ("ER", "Eritrea"),
- ("EE", "Estonia"),
- ("ET", "Ethiopia"),
- ("EZ", "Eurozone"),
- ("FK", "Falkland Islands"),
- ("FO", "Faroe Islands"),
- ("FJ", "Fiji"),
- ("FI", "Finland"),
- ("FR", "France"),
- ("GF", "French Guiana"),
- ("PF", "French Polynesia"),
- ("TF", "French Southern Territories"),
- ("GA", "Gabon"),
- ("GM", "Gambia"),
- ("GE", "Georgia"),
- ("DE", "Germany"),
- ("GH", "Ghana"),
- ("GI", "Gibraltar"),
- ("GR", "Greece"),
- ("GL", "Greenland"),
- ("GD", "Grenada"),
- ("GP", "Guadeloupe"),
- ("GU", "Guam"),
- ("GT", "Guatemala"),
- ("GG", "Guernsey"),
- ("GN", "Guinea"),
- ("GW", "Guinea-Bissau"),
- ("GY", "Guyana"),
- ("HT", "Haiti"),
- ("HN", "Honduras"),
- ("HK", "Hong Kong SAR China"),
- ("HU", "Hungary"),
- ("IS", "Iceland"),
- ("IN", "India"),
- ("ID", "Indonesia"),
- ("IR", "Iran"),
- ("IQ", "Iraq"),
- ("IE", "Ireland"),
- ("IM", "Isle of Man"),
- ("IL", "Israel"),
- ("IT", "Italy"),
- ("JM", "Jamaica"),
- ("JP", "Japan"),
- ("JE", "Jersey"),
- ("JO", "Jordan"),
- ("KZ", "Kazakhstan"),
- ("KE", "Kenya"),
- ("KI", "Kiribati"),
- ("XK", "Kosovo"),
- ("KW", "Kuwait"),
- ("KG", "Kyrgyzstan"),
- ("LA", "Laos"),
- ("LV", "Latvia"),
- ("LB", "Lebanon"),
- ("LS", "Lesotho"),
- ("LR", "Liberia"),
- ("LY", "Libya"),
- ("LI", "Liechtenstein"),
- ("LT", "Lithuania"),
- ("LU", "Luxembourg"),
- ("MO", "Macau SAR China"),
- ("MK", "Macedonia"),
- ("MG", "Madagascar"),
- ("MW", "Malawi"),
- ("MY", "Malaysia"),
- ("MV", "Maldives"),
- ("ML", "Mali"),
- ("MT", "Malta"),
- ("MH", "Marshall Islands"),
- ("MQ", "Martinique"),
- ("MR", "Mauritania"),
- ("MU", "Mauritius"),
- ("YT", "Mayotte"),
- ("MX", "Mexico"),
- ("FM", "Micronesia"),
- ("MD", "Moldova"),
- ("MC", "Monaco"),
- ("MN", "Mongolia"),
- ("ME", "Montenegro"),
- ("MS", "Montserrat"),
- ("MA", "Morocco"),
- ("MZ", "Mozambique"),
- ("MM", "Myanmar (Burma)"),
- ("NA", "Namibia"),
- ("NR", "Nauru"),
- ("NP", "Nepal"),
- ("NL", "Netherlands"),
- ("NC", "New Caledonia"),
- ("NZ", "New Zealand"),
- ("NI", "Nicaragua"),
- ("NE", "Niger"),
- ("NG", "Nigeria"),
- ("NU", "Niue"),
- ("NF", "Norfolk Island"),
- ("KP", "North Korea"),
- ("MP", "Northern Mariana Islands"),
- ("NO", "Norway"),
- ("OM", "Oman"),
- ("PK", "Pakistan"),
- ("PW", "Palau"),
- ("PS", "Palestinian Territories"),
- ("PA", "Panama"),
- ("PG", "Papua New Guinea"),
- ("PY", "Paraguay"),
- ("PE", "Peru"),
- ("PH", "Philippines"),
- ("PN", "Pitcairn Islands"),
- ("PL", "Poland"),
- ("PT", "Portugal"),
- ("PR", "Puerto Rico"),
- ("QA", "Qatar"),
- ("RE", "Réunion"),
- ("RO", "Romania"),
- ("RU", "Russia"),
- ("RW", "Rwanda"),
- ("WS", "Samoa"),
- ("SM", "San Marino"),
- ("ST", "São Tomé & Príncipe"),
- ("SA", "Saudi Arabia"),
- ("SN", "Senegal"),
- ("RS", "Serbia"),
- ("SC", "Seychelles"),
- ("SL", "Sierra Leone"),
- ("SG", "Singapore"),
- ("SX", "Sint Maarten"),
- ("SK", "Slovakia"),
- ("SI", "Slovenia"),
- ("SB", "Solomon Islands"),
- ("SO", "Somalia"),
- ("ZA", "South Africa"),
- ("GS", "South Georgia & South Sandwich Islands"),
- ("KR", "South Korea"),
- ("SS", "South Sudan"),
- ("ES", "Spain"),
- ("LK", "Sri Lanka"),
- ("BL", "St. Barthélemy"),
- ("SH", "St. Helena"),
- ("KN", "St. Kitts & Nevis"),
- ("LC", "St. Lucia"),
- ("MF", "St. Martin"),
- ("PM", "St. Pierre & Miquelon"),
- ("VC", "St. Vincent & Grenadines"),
- ("SD", "Sudan"),
- ("SR", "Suriname"),
- ("SJ", "Svalbard & Jan Mayen"),
- ("SZ", "Swaziland"),
- ("SE", "Sweden"),
- ("CH", "Switzerland"),
- ("SY", "Syria"),
- ("TW", "Taiwan"),
- ("TJ", "Tajikistan"),
- ("TZ", "Tanzania"),
- ("TH", "Thailand"),
- ("TL", "Timor-Leste"),
- ("TG", "Togo"),
- ("TK", "Tokelau"),
- ("TO", "Tonga"),
- ("TT", "Trinidad & Tobago"),
- ("TA", "Tristan da Cunha"),
- ("TN", "Tunisia"),
- ("TR", "Turkey"),
- ("TM", "Turkmenistan"),
- ("TC", "Turks & Caicos Islands"),
- ("TV", "Tuvalu"),
- ("UM", "U.S. Outlying Islands"),
- ("VI", "U.S. Virgin Islands"),
- ("UG", "Uganda"),
- ("UA", "Ukraine"),
- ("AE", "United Arab Emirates"),
- ("GB", "United Kingdom"),
- ("US", "United States"),
- ("UY", "Uruguay"),
- ("UZ", "Uzbekistan"),
- ("VU", "Vanuatu"),
- ("VA", "Vatican City"),
- ("VE", "Venezuela"),
- ("VN", "Vietnam"),
- ("WF", "Wallis & Futuna"),
- ("EH", "Western Sahara"),
- ("YE", "Yemen"),
- ("ZM", "Zambia"),
- ("ZW", "Zimbabwe"),
-]
+COUNTRIES_LIST = [(one_ctr.alpha_2, one_ctr.name) for one_ctr in countries]

# Nicely titled (and translatable) country names.
COUNTRIES_DICT = OrderedDict(COUNTRIES_LIST)
@@ -272,4 +18,5 @@ def get_countries():


def lookup_country_code(country_code):
- return COUNTRIES_DICT.get(country_code)
+ one_ctr = countries.get(alpha_2=country_code)
+ return one_ctr.name
--
2.25.1

1 change: 1 addition & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ services:
- /bin/sh
- -c
- |
patch -i /opt/pwn.college/0001-use-pycountry-to-replace-self-generated-country-list.patch /opt/CTFd/CTFd/utils/countries/__init__.py
if [ "$DOJO_ENV" != "development" ]; then
./docker-entrypoint.sh;
else
Expand Down

0 comments on commit 2a3d170

Please sign in to comment.