On 9/16/22 10:22, Hildegard Meier wrote:
I dnot know what "common #line notion" should be (searching on internet matches only the squid man page)
It is a poorly worded reference to "#line" directives used by some
programming languages for documenting the original location of lines in
preprocessed files. Here are the corresponding C++ preprocessor docs,
for example: https://en.cppreference.com/w/cpp/preprocessor/line
Your template preprocessing script may (but does not have to) insert
#line directives so that Squid can attribute configuration lines to the
original configuration template rather than its processed result.
/usr/sbin/squid -k parse -f '|/usr/local/script/squid/pre_process_squid_config_file.sh'
works, but
/usr/sbin/squid -k reconfigure -f '|/usr/local/script/squid/pre_process_squid_config_file.sh'
gives the following line in /var/log/squid/cache.log
2022/09/16 16:20:55 kid1| storeDirWriteCleanLogs: Starting...
2022/09/16 16:20:55 kid1| Finished. Wrote 0 entries.
2022/09/16 16:20:55 kid1| Took 0.00 seconds ( 0.00 entries/sec).
FATAL: parseConfigFile: '|/usr/local/script/squid/pre_process_squid_config_file.sh' failed with exit code -1
> is that a bug?
I am not sure. I cannot reproduce this problem with a modern/supported
Squid version, but my test environment may be too different from yours.
If you are willing to try this with Squid v5, I can help with triaging
this further, but it may take a few iterations to get to the bottom of
this (e.g., using "bash -x" and adding some no-output command at the
very end of the script might provide more clues). Others on this mailing
list may have better ideas/suspects.
/usr/local/script/squid/pre_process_squid_config_file.sh
#!/bin/bash
readonly SQUID_CONFIG_TEMPLATE_FILE='/etc/squid/squid.conf.TEMPLATE'
case "${HOSTNAME}" in
'node1') readonly HOSTNAME_PEER='node2' ;;
'node2') readonly HOSTNAME_PEER='node1' ;;
*)
echo "invalid hostname in script ${0}. Exit"
exit 1
;;
esac
sed \
-e "s@{HOSTNAME}@${HOSTNAME}@g" \
-e "s@{HOSTNAME_PEER}@${HOSTNAME_PEER}@g" \
"${SQUID_CONFIG_TEMPLATE_FILE}"
--------------------
FWIW, the "invalid hostname" error should be reported to stderr rather
than stdout. Otherwise, the error text will be interpreted as Squid
configuration file contents, producing a somewhat confusing output:
2022/09/16 13:49:27| Processing Configuration File: |/tmp/t.sh (depth 0)
2022/09/16 13:49:27| /tmp/t.sh(1): unrecognized: 'invalid'
HTH,
Alex.
_______________________________________________
squid-users mailing list
squid-users@xxxxxxxxxxxxxxxxxxxxx
http://lists.squid-cache.org/listinfo/squid-users