Skip to content

Commit

Permalink
Added alternative domain separator option to simplify working with ce…
Browse files Browse the repository at this point in the history
…rts repman-io#374 (repman-io#375)

Authored-by: Juris Malinens <[email protected]>
  • Loading branch information
jmalinens authored Jan 18, 2021
1 parent 61b6072 commit af56265
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 36 deletions.
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@ composer install

Setup database:
```
bin/console doctrine:migrations:migrate
bin/console doctrine:migrations:migrate #for postgres
bin/console doctrine:schema:create #for sqlite init as migrations are only postgres-compatible
bin/console messenger:setup-transports
```

Expand Down
6 changes: 3 additions & 3 deletions config/packages/security.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ security:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
repo:
host: '([a-z0-9_-]+)\.repo\.(.+)'
host: '([a-z0-9_-]+)\%domain_separator%repo\%domain_separator%(.+)'
anonymous: true
logout: false
stateless: true
Expand Down Expand Up @@ -60,7 +60,7 @@ security:
- { path: ^/organization/.+/package$, roles: ROLE_ORGANIZATION_ANONYMOUS_USER }
- { path: ^/organization/.+/package/.+/details$, roles: ROLE_ORGANIZATION_ANONYMOUS_USER }
- { path: ^/organization/.+(/.+)*, roles: ROLE_ORGANIZATION_MEMBER }
- { path: ^/downloads, host: '([a-z0-9_-]+)\.repo\.(.+)', roles: IS_AUTHENTICATED_ANONYMOUSLY}
- { path: ^/, host: '([a-z0-9_-]+)\.repo\.(.+)', roles: ROLE_ORGANIZATION }
- { path: ^/downloads, host: '([a-z0-9_-]+)\%domain_separator%repo\%domain_separator%(.+)', roles: IS_AUTHENTICATED_ANONYMOUSLY}
- { path: ^/, host: '([a-z0-9_-]+)\%domain_separator%repo\%domain_separator%(.+)', roles: ROLE_ORGANIZATION }
- { path: ^/api/organization/.+(/.+)*, roles: ROLE_ORGANIZATION_MEMBER }
- { path: ^/api(?!/doc), roles: ROLE_USER }
10 changes: 8 additions & 2 deletions config/routes/annotations.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,26 @@ app_logout:
proxy_repo_url:
path: ''
schemes: ['%url_scheme%']
host: 'repo.{domain}'
host: 'repo{domain_separator}{domain}'
defaults:
domain: '%domain%'
domain_separator: '%domain_separator%'
requirements:
domain: "%domain%"
domain_separator: '%domain_separator%'

organization_repo_url:
path: ''
schemes: ['%url_scheme%']
host: '{organization}.repo.{domain}'
host: '{organization}{sep1}repo{sep2}{domain}'
defaults:
domain: '%domain%'
sep1: '%domain_separator%'
sep2: '%domain_separator%'
requirements:
domain: "%domain%"
sep1: '%domain_separator%'
sep2: '%domain_separator%'

login_github_check:
path: /auth/github/check
Expand Down
1 change: 1 addition & 0 deletions config/services.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
parameters:
package_name_pattern: '[A-Za-z0-9_.-]+/[A-Za-z0-9_./~-]+?'
organization_pattern: '[a-z0-9_-]+' # remember to change in security.yaml (access_control)
domain_separator: '.' # '-' can be used as alternative for simpler certificate handling in 1 organization self-hosted installs
uuid_pattern: '[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}'
dists_dir: '%env(resolve:PROXY_DIST_DIR)%'
repo_dir: '%env(resolve:PACKAGES_DIST_DIR)%'
Expand Down
41 changes: 21 additions & 20 deletions src/Controller/ProxyController.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,11 @@ public function __construct(ProxyRegister $register)
/**
* @Route(
* "/packages.json",
* host="repo.{domain}",
* host="repo{domain_separator}{domain}",
* name="packages",
* methods={"GET"},
* defaults={"domain"="%domain%"},
* requirements={"domain"="%domain%"}
* defaults={"domain"="%domain%","domain_separator"="%domain_separator%"},
* requirements={"domain"="%domain%","domain_separator"="%domain_separator%"}
* )
*/
public function packages(Request $request): JsonResponse
Expand Down Expand Up @@ -75,9 +75,9 @@ public function packages(Request $request): JsonResponse
/**
* @Route("/p/{package}${hash}.json",
* name="package_legacy_metadata",
* host="repo.{domain}",
* defaults={"domain"="%domain%"},
* requirements={"package"="%package_name_pattern%","domain"="%domain%"},
* host="repo{domain_separator}{domain}",
* defaults={"domain"="%domain%","domain_separator"="%domain_separator%"},
* requirements={"package"="%package_name_pattern%","domain"="%domain%","domain_separator"="%domain_separator%"},
* methods={"GET"})
*/
public function legacyMetadata(string $package, string $hash, Request $request): Response
Expand Down Expand Up @@ -106,9 +106,9 @@ public function legacyMetadata(string $package, string $hash, Request $request):
/**
* @Route("/p/{package}",
* name="package_legacy_metadata_lazy",
* host="repo.{domain}",
* defaults={"domain"="%domain%"},
* requirements={"package"="%package_name_pattern%","domain"="%domain%"},
* host="repo{domain_separator}{domain}",
* defaults={"domain"="%domain%","domain_separator"="%domain_separator%"},
* requirements={"package"="%package_name_pattern%","domain"="%domain%","domain_separator"="%domain_separator%"},
* methods={"GET"})
*/
public function legacyMetadataLazy(string $package, Request $request): Response
Expand Down Expand Up @@ -137,10 +137,11 @@ public function legacyMetadataLazy(string $package, Request $request): Response
/**
* @Route(
* "/p/provider-{version}${hash}.json",
* host="repo.{domain}",
* host="repo{domain_separator}{domain}",
* name="providers",
* methods={"GET"},
* defaults={"domain"="%domain%"}, requirements={"domain"="%domain%"}
* defaults={"domain"="%domain%","domain_separator"="%domain_separator%"},
* requirements={"domain"="%domain%","domain_separator"="%domain_separator%"}
* )
*/
public function providers(string $version, string $hash, Request $request): Response
Expand Down Expand Up @@ -169,9 +170,9 @@ public function providers(string $version, string $hash, Request $request): Resp
/**
* @Route("/p2/{package}.json",
* name="package_metadata",
* host="repo.{domain}",
* defaults={"domain"="%domain%"},
* requirements={"package"="%package_name_pattern%","domain"="%domain%"},
* host="repo{domain_separator}{domain}",
* defaults={"domain"="%domain%","domain_separator"="%domain_separator%"},
* requirements={"package"="%package_name_pattern%","domain"="%domain%","domain_separator"="%domain_separator%"},
* methods={"GET"})
*/
public function metadata(string $package, Request $request): Response
Expand Down Expand Up @@ -200,9 +201,9 @@ public function metadata(string $package, Request $request): Response
/**
* @Route("/dists/{package}/{version}/{ref}.{type}",
* name="package_dist",
* host="repo.{domain}",
* defaults={"domain"="%domain%"},
* requirements={"package"="%package_name_pattern%","ref"="[a-f0-9]*?","type"="zip|tar","domain"="%domain%"},
* host="repo{domain_separator}{domain}",
* defaults={"domain"="%domain%","domain_separator"="%domain_separator%"},
* requirements={"package"="%package_name_pattern%","ref"="[a-f0-9]*?","type"="zip|tar","domain"="%domain%","domain_separator"="%domain_separator%"},
* methods={"GET"})
*/
public function distribution(string $package, string $version, string $ref, string $type, Request $request): Response
Expand Down Expand Up @@ -231,9 +232,9 @@ public function distribution(string $package, string $version, string $ref, stri
/**
* @Route("/downloads",
* name="package_downloads",
* host="repo.{domain}",
* defaults={"domain":"%domain%"},
* requirements={"domain"="%domain%"},
* host="repo{domain_separator}{domain}",
* defaults={"domain":"%domain%","domain_separator"="%domain_separator%"},
* requirements={"domain"="%domain%","domain_separator"="%domain_separator%"},
* methods={"POST"})
*/
public function downloads(Request $request): JsonResponse
Expand Down
20 changes: 10 additions & 10 deletions src/Controller/RepoController.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public function __construct(PackageQuery $packageQuery, PackageManager $packageM
}

/**
* @Route("/packages.json", host="{organization}.repo.{domain}", name="repo_packages", methods={"GET"}, defaults={"domain":"%domain%"}, requirements={"domain"="%domain%"})
* @Route("/packages.json", host="{organization}{sep1}repo{sep2}{domain}", name="repo_packages", methods={"GET"}, defaults={"domain":"%domain%","sep1"="%domain_separator%","sep2"="%domain_separator%"}, requirements={"domain"="%domain%","sep1"="%domain_separator%","sep2"="%domain_separator%"})
* @Cache(public=false)
*/
public function packages(Request $request, Organization $organization): JsonResponse
Expand Down Expand Up @@ -70,9 +70,9 @@ public function packages(Request $request, Organization $organization): JsonResp
/**
* @Route("/dists/{package}/{version}/{ref}.{type}",
* name="repo_package_dist",
* host="{organization}.repo.{domain}",
* defaults={"domain":"%domain%"},
* requirements={"package"="%package_name_pattern%","ref"="[a-f0-9]*?","type"="zip|tar","domain"="%domain%"},
* host="{organization}{sep1}repo{sep2}{domain}",
* defaults={"domain":"%domain%","sep1"="%domain_separator%","sep2"="%domain_separator%"},
* requirements={"package"="%package_name_pattern%","ref"="[a-f0-9]*?","type"="zip|tar","domain"="%domain%","sep1"="%domain_separator%","sep2"="%domain_separator%"},
* methods={"GET"})
* @Cache(public=false)
*/
Expand All @@ -99,9 +99,9 @@ public function distribution(Organization $organization, string $package, string
/**
* @Route("/downloads",
* name="repo_package_downloads",
* host="{organization}.repo.{domain}",
* defaults={"domain":"%domain%"},
* requirements={"domain"="%domain%"},
* host="{organization}{sep1}repo{sep2}{domain}",
* defaults={"domain":"%domain%","sep1"="%domain_separator%","sep2"="%domain_separator%"},
* requirements={"domain"="%domain%","sep1"="%domain_separator%","sep2"="%domain_separator%"},
* methods={"POST"})
*/
public function downloads(Request $request, Organization $organization): JsonResponse
Expand Down Expand Up @@ -136,11 +136,11 @@ public function downloads(Request $request, Organization $organization): JsonRes

/**
* @Route("/p2/{package}.json",
* host="{organization}.repo.{domain}",
* host="{organization}{sep1}repo{sep2}{domain}",
* name="repo_package_provider_v2",
* methods={"GET"},
* defaults={"domain":"%domain%"},
* requirements={"domain"="%domain%","package"="%package_name_pattern%"})
* defaults={"domain":"%domain%","sep1"="%domain_separator%","sep2"="%domain_separator%"},
* requirements={"domain"="%domain%","package"="%package_name_pattern%","sep1"="%domain_separator%","sep2"="%domain_separator%"})
* @Cache(public=false)
*/
public function providerV2(Request $request, Organization $organization, string $package): JsonResponse
Expand Down

0 comments on commit af56265

Please sign in to comment.