Search squid archive

Re: Howto make Squid config dependent on hostname?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux Audio Users]     [Samba]     [Big List of Linux Books]     [Linux USB]     [Yosemite News]

  Powered by Linux