• Augusto Roman's avatar
    caddyfile: Fix multi-file snippets and import literals. (#2205) · 053373a3
    Augusto Roman authored
    * Fix a few import problems: snippets and import literals.
    
    Two problems are fixed by this code simplification:
    1. Snippets defined in one import file are strangely not available in
       another.
    2. If an imported file had a directive with an argument "import", then
       the rest of the tokens on the line would be converted to absolute
       filepaths.
    
    An example of #2 would be the following directive in an imported file:
        basicauth / import secret
    
    In this case, the password would actually be an absolute path to the
    file 'secret' (whether or not it exists) in the directory of the imported
    Caddyfile.
    
    The problem was the blind token processing to fix import paths in the
    imported tokens without considering the context of the 'import' token.
    
    My first inclination was to just add more context (detect 'import' tokens
    at the beginning of lines and check the value tokens against defined
    snippets), however I eventually realized that we already do all of this
    in the parser, so the code was redundant. Instead we just use the current
    token's File property when importing. This works fine with imported tokens
    since they already have the absolute path to the imported file!
    
    Fixes #2204
    
    * renamed file2 -> fileName
    
    * Fix copy/pasted comment in test.
    
    * Change gzip example to basicauth example.
    
    This makes it more clear how the import side effect is detrimental.
    053373a3
parse.go 12.9 KB