File manager - Edit - /var/www/payraty/helpdesk/public/storage/chrony.zip
Back
PK ! �wu"� � chrony-helpernu ȯ�� #!/bin/bash # This script configures running chronyd to use NTP servers obtained from # DHCP and _ntp._udp DNS SRV records. Files with servers from DHCP are managed # externally (e.g. by a dhclient script). Files with servers from DNS SRV # records are updated here using the dig utility. The script can also list # and set static sources in the chronyd configuration file. # # Modified for Debian by Vincent Blut <vincent.debian@free.fr>. chronyc=/usr/bin/chronyc chrony_conf=/etc/chrony/chrony.conf chrony_service=chrony.service helper_dir=/run/chrony-helper added_servers_file=$helper_dir/added_servers dhclient_servers_files="/var/lib/dhcp/chrony.servers.*" dnssrv_servers_files="$helper_dir/dnssrv@*" dnssrv_timer_prefix=chrony-dnssrv@ chrony_command() { $chronyc -n -m "$1" } is_running() { chrony_command "tracking" &> /dev/null } get_servers_files() { echo "$dhclient_servers_files" echo "$dnssrv_servers_files" } is_update_needed() { for file in $(get_servers_files) $added_servers_file; do [ -e "$file" ] && return 0 done return 1 } update_daemon() { local all_servers_with_args all_servers added_servers if ! is_running; then rm -f $added_servers_file return 0 fi all_servers_with_args=$(cat $(get_servers_files) 2> /dev/null) all_servers=$( echo "$all_servers_with_args" | while read -r server serverargs; do echo "$server" done | sort -u) added_servers=$( ( cat $added_servers_file 2> /dev/null echo "$all_servers_with_args" | while read -r server serverargs; do [ -z "$server" ] && continue chrony_command "add server $server $serverargs" &> /dev/null && echo "$server" done) | sort -u) comm -23 <(echo -n "$added_servers") <(echo -n "$all_servers") | while read -r server; do chrony_command "delete $server" &> /dev/null done added_servers=$(comm -12 <(echo -n "$added_servers") <(echo -n "$all_servers")) if [ -n "$added_servers" ]; then echo "$added_servers" > $added_servers_file else rm -f $added_servers_file fi } get_dnssrv_servers() { local name=$1 output if ! command -v dig &> /dev/null; then echo "Missing dig (DNS lookup utility)" >&2 return 1 fi output=$(dig "$name" srv +short +ndots=2 +search 2> /dev/null) || return 0 echo "$output" | while read -r _ _ port target; do server=${target%.} [ -z "$server" ] && continue echo "$server port $port iburst" done } check_dnssrv_name() { local name=$1 if [ -z "$name" ]; then echo "No DNS SRV name specified" >&2 return 1 fi if [ "${name:0:9}" != _ntp._udp ]; then echo "DNS SRV name $name doesn't start with _ntp._udp" >&2 return 1 fi } update_dnssrv_servers() { local name=$1 local srv_file=$helper_dir/dnssrv@$name servers check_dnssrv_name "$name" || return 1 servers=$(get_dnssrv_servers "$name") if [ -n "$servers" ]; then echo "$servers" > "$srv_file" else rm -f "$srv_file" fi } set_dnssrv_timer() { local state=$1 name=$2 local srv_file=$helper_dir/dnssrv@$name servers local timer timer=$dnssrv_timer_prefix$(systemd-escape "$name").timer || return 1 check_dnssrv_name "$name" || return 1 if [ "$state" = enable ]; then systemctl enable "$timer" systemctl start "$timer" elif [ "$state" = disable ]; then systemctl stop "$timer" systemctl disable "$timer" rm -f "$srv_file" fi } list_dnssrv_timers() { systemctl --all --full -t timer list-units | grep "^$dnssrv_timer_prefix" | \ sed "s|^$dnssrv_timer_prefix\(.*\)\.timer.*|\1|" | while read -r name; do systemd-escape --unescape "$name" done } prepare_helper_dir() { mkdir -p $helper_dir exec 100> $helper_dir/lock if ! flock -w 20 100; then echo "Failed to lock $helper_dir" >&2 return 1 fi } is_source_line() { local pattern="^[ \t]*(server|pool|peer|refclock)[ \t]+[^ \t]+" [[ "$1" =~ $pattern ]] } list_static_sources() { while read -r line; do if is_source_line "$line"; then echo "$line" fi done < $chrony_conf } set_static_sources() { local new_config tmp_conf new_config=$( sources=$( while read -r line; do is_source_line "$line" && echo "$line" done) while read -r line; do if ! is_source_line "$line"; then echo "$line" continue fi tmp_sources=$( local removed=0 echo "$sources" | while read -r line2; do if [ "$removed" -ne 0 ] || [ "$line" != "$line2" ]; then echo "$line2" else removed=1 fi done) [ "$sources" == "$tmp_sources" ] && continue sources=$tmp_sources echo "$line" done < $chrony_conf echo "$sources" ) tmp_conf=${chrony_conf}.tmp cp -a $chrony_conf $tmp_conf && echo "$new_config" > $tmp_conf && mv $tmp_conf $chrony_conf || return 1 systemctl try-restart $chrony_service } print_help() { echo "Usage: $0 COMMAND" echo echo "Commands:" echo " update-daemon" echo " update-dnssrv-servers NAME" echo " enable-dnssrv NAME" echo " disable-dnssrv NAME" echo " list-dnssrv" echo " list-static-sources" echo " set-static-sources < sources.list" echo " is-running" echo " command CHRONYC-COMMAND" } case "$1" in update-daemon|add-dhclient-servers|remove-dhclient-servers) is_update_needed || exit 0 prepare_helper_dir && update_daemon ;; update-dnssrv-servers) prepare_helper_dir && update_dnssrv_servers "$2" && update_daemon ;; enable-dnssrv) set_dnssrv_timer enable "$2" ;; disable-dnssrv) set_dnssrv_timer disable "$2" && prepare_helper_dir && update_daemon ;; list-dnssrv) list_dnssrv_timers ;; list-static-sources) list_static_sources ;; set-static-sources) set_static_sources ;; is-running) is_running ;; command|forced-command) chrony_command "$2" ;; *) print_help exit 2 esac exit $? PK ! nȚM�/ �/ NEWS.gznu �[��� � �}ks�F��w� �"6���=,O�o�Lr,�E�˦<����@��0�@$ۿ����z ��hyI�P���ɓ����!ʊ��TuVѫ��ޏ[���wQ,�"1+S4��8����wi��z]VM4/������<6��1���([���>+Q�)�eUY7�(��x��Y���"�*S�y�?E�<�ʲ�R����4��:��H��0�8 O$*�͢k��W�~w1�]�;��,�z��"�4j���E{�aJ�]6�Ί�T���M���DM���2�&y�r�C��uWm�dk�u�gXP�~�������i�`�$)WkZ��`��В�M��Q<+�f��21\Z���{?����GC�-{�nn��2<d�2z�j<˚�����D��/O���}ԛ���C��.Jʪ2I�od���w���C���d�4��)=�v���LU�<���ںa�כ�1+Z�2���Ӕi5�l�<oWe����Yң�˅��$^mJ3H�Ѵ��*���L� �����]���4�H��h��.��%S~�UL3#E I����hY�wX�"�D��T�S54LB2ᤶl�Č� -{1�m[�i*ZNzpp/��]��^�h�L�J��)��~�{� �8�d�d�wf#�o�9'�z�k���ѣuY�^4�\ER��6��4�ϳU����Y�6���}��-צ��_��ȹa�%��2iFs y��Ӽ�SX�������:����T�E�`�H���/:�]�ʋ@#D96��i��ߐ~qor~(�g�Z��Q�M �/� ��jE�=��tߺ,��h�.a}�.�ӿ[zT��V���\o ޗn*Jؒ$oɄ��=�7.���4zKVd �ź�Is�8I�Z,E4��UT>ltծ�{��g��c�4=�6��zr��U��ϫ�i�f�b�S����=x�-ٖ�� �A=�+X��Ǔӷ�����7#�!z@��#�d��v"�e$�m*�/�$�mL�X����*����'�LV��=,����f4U���U����kZ:�;v�E%��S}���C���,!���+S�N/y�0�*���=��sZ'��@�γ��TX:^�)�P���a�Iݚ��|zvm��C`�����"Z����Z �5�-��ޱ�XW�aY¡w,1��jU�y���`�����H�e1f������Əu�Z����,��Er���V�?z����a��2�EX�q[� _oh�qC����1�X�0�����И�n�1�˂���2���ᨾ��x���1�,�9�F6�v����+��74���0����� /`�ؐ��l|�X��{{/ؤ�D\ފ�#L��?3��).}㽀��:��ؘ�WZ�z����u[���̦����BI6҃��w�9C��J�G+팃�"�����,�"�Y�Zt��81D釨�q^�,�$��[�s|wH�K��ґ�N�C��/q(�0���"����e�߰N28�Ǵ6 ]�抾��� ��8�/������I����2�ZO�j�ֵ���y{V!����Ҫ1t[ҺQ�S҅{{7fUb��$8= �o� �����չ:���sv~��c�/9A�������p���iy�*E�M9Β�q'w�^�k�N�g�mjk�Lt����w'2��^2�VN^X�����T���̰�l?�Lk���}��r�z0L �p �'v�Ȗ��4"|�X��J��R��ٯ������ɫ�o� ��Oc6H���`���]�?��p��&��}�v�!���h�Vk���R��a�d77�q�k1E8;�j����`��q&�xɋ��!Єi�/���6R�.�"T�5�%,��E��y�ʢ��ƧU��F��S0����%[����4��,�s+z�O�P~(.}).%'��j�<Յ�,�l�h�\�̫o�]����hmL���VYa1 �@���.�k�A!�z�d�� �`}~�v1@i��s�D�;�����-�Ė�� ]��1�����Ό��= �0�s`, U`��c��蜜?�Q���$l%�7y���A�D�icׄ��n� MFΓ������zb@��g���p���jf+ԑ:ag��DkP;�xߙH ���՝����b�%veh"We��7����p��eD kW S�Q��⦁3c��'�@��G�'�;�9M�������>=��BQ��`�����ģ�'sXV6�&�X �d&��X�o�,$5�,�6����x��Q��� �J�l���d��+p�M��"���ɪ �#VW���-0/�����u#�$�M��i0���'4^b�(�6k��fU\٠+T���Kd5� �UH������AK+���]L�J�N�뫁Im'�7zu���6p�~4 � ��#?�.���u��(�.���ƞ���l��K(� a�f`B3�Mh(X2R'p� Gq5�����:�}�% �����+�(fiZ�d�d ��D!\��n�Ү�{���)\Nb����2�?�/��W;be�'t�8XaB��5��;��:vZ���= �]V^�ظ��.��2:��L3 ��t]� ���66R��J3� 5�ec����s2N�]fE8� �\�LI�m���A�^�˻��L�.��d?`Y�|�F'�}�3��}w9�|{�����<Q��6��;���,����'� ���J6N/��`0�s!��0���6�D�����]��>�u���/�TيL,�#�M������|�����[#nvYr�ج�u��}��!2}�v�I٢`Z�tG� 2}31�x��q�����R�կ��H��Bd))�.\�_=nA٧@h�� �,Mۓ:{K��%�Ok2�7��H���fT� ���>7XS�5Y� S�6~���T�ppd�V� 5?X�s� ��!�)�-j�6���B��sj��4!��T0�Ӥ �[@L����m�m��@�G�A�^���V[9��R7�� �P}�+8�c��V�d�/�3]�O%��.�`��[��T"8G�Y�H�B��#Zʍ��{�[�I& }$� �X�W�4ͱ4�������Pa����,a�h�F�}9���֗oo�>V�CH��t���XI�ҡL��l��A t��8�ӿ]�Q�qw��募b���W��K ��u`��|z�.� �9�������-�H���:�;���_M��m>�8�W�x���d��D�&��+X= q��T��� �~�A�XS�#8��d}���؉��V�փ�%>~����LRP[�����r&~�q�=zʟZ��m��'1O�O"��NΈ���B!��¶�^ 鹐��l~F�y���n�j:r�7B���ð(ւ+܆],�%x�D�o� r�0�Ⱥ$cx��t3Q/��@?U�r���f�ܤM?�#�2�*B=!�d̉�Џ|Y�i/�RY���'4��<CT\�� sK��$)+$v����EO�T�چפ0Lh�'>e� �R���4F�b�˶��t[v�t�j'����$)$t�:2���bR���nMX,:�P�pսpж��꧘y��J\�y���~�[(�5]�q�I��(���^�� �v�?@3�+d�f�M��i_�C�hI{�,���$R����۷����`V�C���e�H^A���M'\6��1���0M�Վ4���^��K�%"@J��9Ä� v :$�.�f�1 t��ytD�������0�M-&���z��u��� : zDb���T*鄥>�3�-���\Fe�q6�U�(6�}\̦ �@���O�����/���_�(%FM�h���w�Pi�mX;Q?�؉��.b�M�ܤ�,_�H1e���cl|œw���մ���B����ª8 �x��</c�x�E/��f�-���i�LZ�����&[�K���F�������p�e�܈���j? ��]�I�i��Х��!��9��E5����[��6HQj!{���HI-ġ�|4y�$pd]PƎYF�Rp^�*�㩷u��74�Nj�/?]~<�2������"J�e��q�2R~P;?+�. ,"�D5�CڔO�c�1L�;K��.���9�_��f\���2F�N�� (lv$��ql�`x�(wƬ�߄�E�H����Q|���j|�T1�/�yt��¥۞o��W��n�y \�j����6ߙZ���tx��HB_�F<a�,wق�2<�Q�}_�����'��`}!�,���N<�Y�B>�Ŷʷm@N����F+o�VYs�!���u�r�����P���S�[.(�9���5A�@�n���_,��@�E����au�hR*�<�R��w��0�PD�dTmua�Ubg��M�,c�3��5�P�\���ĺ� �ѯ�E�� 9�O��+�[��Xn�2�w#�����-�/�����]= | ��t�A�\�'