9

In an apache config file how can i concatenate two strings?

For example:

"hello" + "world"
// "helloworld"

Why?

One might want to do this to handle large Headers such as a Content-Security-Policy below is an example of my CSP. You can see it is nicely formatted for maintainability but when being sent in the Headers it has unwanted whitespace.

Header set Content-Security-Policy "\
;default-src\
    'self'\
;child-src\
    'self'\
;connect-src\
    'self'\
;font-src\
    'self'\
    https://*.gstatic.com\
;form-action\
    'self';\
;frame-ancestors\
    'self'\
;frame-src\
    'self'\
;img-src\
    'self'\
    https://www.google.com/s2/favicons\
    https://www.google-analytics.com\
    https://*.gstatic.com\
    https://*.googleapis.com\
;object-src\
    'none'\
;script-src\
    'self'\
    'unsafe-eval'\
    https://www.google-analytics.com\
    https://*.googleapis.com\
;style-src\
    'self'\
    'unsafe-inline'\
    https://*.googleapis.com\
;\
"
Blowsie
  • 40,239
  • 15
  • 88
  • 108

5 Answers5

3

I think you can declare variable like this : https://stackoverflow.com/a/15731921/6663198
Then, you can easily concatenate your variables

Flyzzx
  • 458
  • 5
  • 13
  • Thanks for your answer, however it doesn't really directly concatenate strings. I've updated my question to give some context. – Blowsie Aug 08 '18 at 07:36
0
OIDCScope "profile email openid offline_access"
OIDCRemoteUserClaim  sub

<Location "/app2">
    AuthType openid-connect
    Require valid-user
    ProxyPass   "http://192.168.10.237/myapp"
    ProxyPassReverse  "http://192.168.10.237/myapp"

    RewriteEngine On
    RewriteRule .* - [E=PROXY_USER:%{LA-U:REMOTE_USER}] 
    RequestHeader set REMOTE_USER  %{PROXY_USER}e
</Location>

</VirtualHost>
Nic3500
  • 8,144
  • 10
  • 29
  • 40
Nitish
  • 21
  • 2
0

My best guess is to use either setenv or define directives to declare and define values and then simply refer it using ${VAR} syntax as noted here.

In principle, the below should work.

$httpd -DTestCaseOne

...

<IfDefine TestCaseOne>
  Define dir_name_one media
  Define dir_name_two images
</IfDefine>

...

Include "/etc/httpd/sites/${dir_name_one}-${dir_name_two}/env.conf"

The server version for above references is - Apache 2.4

Ravindra HV
  • 2,558
  • 1
  • 17
  • 26
0

You can try like this:

set $text = 'text';  
set $additional "${text}additional";
bitsobits
  • 104
  • 11
  • Thanks for your answer, however it doesn't really directly concatenate strings. I've updated my question to give some context. – Blowsie Aug 08 '18 at 07:36
0

So far the best I managed is to post-edit* the Header

Note the extra space before the \ new-line char

Header set Content-Security-Policy "\
;default-src \
    'self' \
;child-src \
    'self' \
;connect-src \
    'self' \
"

# Remove unwanted whitespaces
Header edit* Content-Security-Policy "\s\s\s\s" ""

not 100% great, a bit expensive and could back-fire a bit, but well this is a way to do it

Julien
  • 1,765
  • 20
  • 26