Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can't use Caddy on punycode IDN domains #3017

Closed
tobiasmuehl opened this issue Feb 2, 2020 · 7 comments
Closed

Can't use Caddy on punycode IDN domains #3017

tobiasmuehl opened this issue Feb 2, 2020 · 7 comments

Comments

@tobiasmuehl
Copy link

It's possible to declare punycode domains in the Caddyfile as either UTF-8 or ASCII, however, they are never matched

@tobya
Copy link
Collaborator

tobya commented Feb 2, 2020

Thank you for the issue.

Which version of Caddy are you using?

caddy -version

@mholt
Copy link
Member

mholt commented Feb 3, 2020

Thanks for opening an issue! We'll look into this.

It's not immediately clear to me what is going on, so I'll need your help to understand it better.

Ideally, we need to be able to reproduce the bug in the most minimal way possible. This allows us to write regression tests to verify the fix is working. If we can't reproduce it, then you'll have to test our changes for us until it's fixed -- and then we can't add test cases, either.

I've attached a template below that will help make this easier and faster! It will ask for some information you've already provided; that's OK, just fill it out the best you can. 👍

I've also included some helpful tips below the template. Feel free to let me know if you have any questions!

Thank you again for your report, we look forward to resolving it!

Template

## 1. Environment

### 1a. Operating system and version

```
paste here
```


### 1b. Caddy version (run `caddy version` or paste commit SHA)

```
paste here
```


### 1c. Go version (if building Caddy from source; run `go version`)

```
paste here
```


## 2. Description

### 2a. What happens (briefly explain what is wrong)




### 2b. Why it's a bug (if it's not obvious)




### 2c. Log output

```
paste terminal output or logs here
```



### 2d. Workaround(s)




### 2e. Relevant links




## 3. Tutorial (minimal steps to reproduce the bug)




Helpful tips

  1. Environment: Please fill out your OS and Caddy versions, even if you don't think they are relevant. (They are always relevant.) If you built Caddy from source, provide the commit SHA and specify your exact Go version.

  2. Description: Describe at a high level what the bug is. What happens? Why is it a bug? Not all bugs are obvious, so convince readers that it's actually a bug.

    • 2c) Log output: Paste terminal output and/or complete logs in a code block. DO NOT REDACT INFORMATION except for credentials.
    • 2d) Workaround: What are you doing to work around the problem in the meantime? This can help others who encounter the same problem, until we implement a fix.
    • 2e) Relevant links: Please link to any related issues, pull requests, docs, and/or discussion. This can add crucial context to your report.
  3. Tutorial: What are the minimum required specific steps someone needs to take in order to experience the same bug? Your goal here is to make sure that anyone else can have the same experience with the bug as you do. You are writing a tutorial, so make sure to carry it out yourself before posting it. Please:

    • Start with an empty config. Add only the lines/parameters that are absolutely required to reproduce the bug.
    • Do not run Caddy inside containers.
    • Run Caddy manually in your terminal; do not use systemd or other init systems.
    • If making HTTP requests, avoid web browsers. Use a simpler HTTP client instead, like curl.
    • Do not redact any information from your config (except credentials). Domain names are public knowledge and often necessary for quick resolution of an issue!
    • Note that ignoring this advice may result in delays, or even in your issue being closed. 😞 Only actionable issues are kept open, and if there is not enough information or clarity to reproduce the bug, then the report is not actionable.

Example of a tutorial:

Create a config file:
{ ... }

Open terminal and run Caddy:

$ caddy ...

Make an HTTP request:

$ curl ...

Notice that the result is ___ but it should be ___.

@fu-sen
Copy link

fu-sen commented Feb 5, 2020

I'm a past domain registrar, so I'm familiar with Punycode. I immediately tried this with Caddy v2:

xn--38j2b6b6e.jp.eu.org:80 {
    respond "ok"
    encode zstd gzip
}

Just in my hand was the Punycode subdomain of EU.org: xn--38j2b6b6e.jp.eu.org = にほんご.jp.eu.org
This can expect the same result as the Punycode domain.
For quick work, I chose only HTTP.

result:
スクリーンショット 2020-02-05 11 42 03

Caddy v2 appears to output Punycode (sub) domains successfully.
I will test Caddy v1 later.

@mholt
Copy link
Member

mholt commented Feb 5, 2020

Thank you for that helpful investigation, @fu-sen ! It is good to know that v2 works at least :)

@fu-sen
Copy link

fu-sen commented Feb 5, 2020

I switched the VPS Caddy to v1 and tried it:

Caddyfile:

xn--38j2b6b6e.jp.eu.org:80

tls off
root /home/balloon/xn--38j2b6b6e.jp.eu.org
browse

xn--38j2b6b6e.jp.eu.org/index.html:

good

result:
スクリーンショット 2020-02-05 12 23 19

It's okay. The latest Caddy has no bugs with Punycode domains.
In the first place, Punycode is in ascii notation, so Caddy has no special consideration.

Perhaps this is an individual issue, so the continuation should be on the Forum:
https://caddy.community/

@mholt
Copy link
Member

mholt commented Feb 5, 2020

Great! Thanks for verifying that, @fu-sen. I will close this issue then unless it can be shown to be a bug and/or more information is provided.

@mholt mholt closed this as completed Feb 5, 2020
@fu-sen
Copy link

fu-sen commented Feb 5, 2020

Then I also tried https. result:
スクリーンショット 2020-02-05 17 03 10

Caddy works perfectly. 😁

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants