Skip to content

Commit 98edce4

Browse files
author
Matthew Fisher
committed
fix(controller): disallow uppercase app URLs
Since Deis app names become URLs directly, they must match a regex like [-a-z0-9]+, as we test for at https://github.com/deis/deis/blob/master/controller/api/tests/test_app.py#L100. But the regexes for apps in controller/api/urls.py use [-_\w], which does some nice locale adjustments but allows uppercase chars and underscores. This changes the regex to match the serializer's regex. We can incrementally add more locale characters as things require changing. fixes #936
1 parent 53fbba2 commit 98edce4

1 file changed

Lines changed: 18 additions & 18 deletions

File tree

controller/api/urls.py

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -251,46 +251,46 @@
251251
url(r'^clusters/?',
252252
views.ClusterViewSet.as_view({'get': 'list', 'post': 'create'})),
253253
# application release components
254-
url(r'^apps/(?P<id>[-_\w]+)/config/?',
254+
url(r'^apps/(?P<id>[-a-z0-9]+)/config/?',
255255
views.AppConfigViewSet.as_view({'get': 'retrieve', 'post': 'create'})),
256-
url(r'^apps/(?P<id>[-_\w]+)/builds/(?P<uuid>[-_\w]+)/?',
256+
url(r'^apps/(?P<id>[-a-z0-9]+)/builds/(?P<uuid>[-_\w]+)/?',
257257
views.AppBuildViewSet.as_view({'get': 'retrieve'})),
258-
url(r'^apps/(?P<id>[-_\w]+)/builds/?',
258+
url(r'^apps/(?P<id>[-a-z0-9]+)/builds/?',
259259
views.AppBuildViewSet.as_view({'get': 'list', 'post': 'create'})),
260-
url(r'^apps/(?P<id>[-_\w]+)/releases/v(?P<version>[0-9]+)/?',
260+
url(r'^apps/(?P<id>[-a-z0-9]+)/releases/v(?P<version>[0-9]+)/?',
261261
views.AppReleaseViewSet.as_view({'get': 'retrieve'})),
262-
url(r'^apps/(?P<id>[-_\w]+)/releases/rollback/?',
262+
url(r'^apps/(?P<id>[-a-z0-9]+)/releases/rollback/?',
263263
views.AppReleaseViewSet.as_view({'post': 'rollback'})),
264-
url(r'^apps/(?P<id>[-_\w]+)/releases/?',
264+
url(r'^apps/(?P<id>[-a-z0-9]+)/releases/?',
265265
views.AppReleaseViewSet.as_view({'get': 'list'})),
266266
# application infrastructure
267-
url(r'^apps/(?P<id>[-_\w]+)/containers/(?P<type>[-_\w]+)/(?P<num>[-_\w]+)/?',
267+
url(r'^apps/(?P<id>[-a-z0-9]+)/containers/(?P<type>[-_\w]+)/(?P<num>[-_\w]+)/?',
268268
views.AppContainerViewSet.as_view({'get': 'retrieve'})),
269-
url(r'^apps/(?P<id>[-_\w]+)/containers/(?P<type>[-_\w.]+)/?',
269+
url(r'^apps/(?P<id>[-a-z0-9]+)/containers/(?P<type>[-_\w.]+)/?',
270270
views.AppContainerViewSet.as_view({'get': 'list'})),
271-
url(r'^apps/(?P<id>[-_\w]+)/containers/?',
271+
url(r'^apps/(?P<id>[-a-z0-9]+)/containers/?',
272272
views.AppContainerViewSet.as_view({'get': 'list'})),
273273
# application domains
274-
url(r'^apps/(?P<id>[-_\w]+)/domains/(?P<domain>[-\._\w]+)/?',
274+
url(r'^apps/(?P<id>[-a-z0-9]+)/domains/(?P<domain>[-\._\w]+)/?',
275275
views.DomainViewSet.as_view({'delete': 'destroy'})),
276-
url(r'^apps/(?P<id>[-_\w]+)/domains/?',
276+
url(r'^apps/(?P<id>[-a-z0-9]+)/domains/?',
277277
views.DomainViewSet.as_view({'post': 'create', 'get': 'list'})),
278278
# application actions
279-
url(r'^apps/(?P<id>[-_\w]+)/scale/?',
279+
url(r'^apps/(?P<id>[-a-z0-9]+)/scale/?',
280280
views.AppViewSet.as_view({'post': 'scale'})),
281-
url(r'^apps/(?P<id>[-_\w]+)/logs/?',
281+
url(r'^apps/(?P<id>[-a-z0-9]+)/logs/?',
282282
views.AppViewSet.as_view({'post': 'logs'})),
283-
url(r'^apps/(?P<id>[-_\w]+)/run/?',
283+
url(r'^apps/(?P<id>[-a-z0-9]+)/run/?',
284284
views.AppViewSet.as_view({'post': 'run'})),
285-
url(r'^apps/(?P<id>[-_\w]+)/calculate/?',
285+
url(r'^apps/(?P<id>[-a-z0-9]+)/calculate/?',
286286
views.AppViewSet.as_view({'post': 'calculate'})),
287287
# apps sharing
288-
url(r'^apps/(?P<id>[-_\w]+)/perms/(?P<username>[-_\w]+)/?',
288+
url(r'^apps/(?P<id>[-a-z0-9]+)/perms/(?P<username>[-_\w]+)/?',
289289
views.AppPermsViewSet.as_view({'delete': 'destroy'})),
290-
url(r'^apps/(?P<id>[-_\w]+)/perms/?',
290+
url(r'^apps/(?P<id>[-a-z0-9]+)/perms/?',
291291
views.AppPermsViewSet.as_view({'get': 'list', 'post': 'create'})),
292292
# apps base endpoint
293-
url(r'^apps/(?P<id>[-_\w]+)/?',
293+
url(r'^apps/(?P<id>[-a-z0-9]+)/?',
294294
views.AppViewSet.as_view({'get': 'retrieve', 'delete': 'destroy'})),
295295
url(r'^apps/?',
296296
views.AppViewSet.as_view({'get': 'list', 'post': 'create'})),

0 commit comments

Comments
 (0)