Guest User

/etc/cron.daily/slack

a guest
Dec 14th, 2017
390
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 14.61 KB | None | 0 0
  1. #!/bin/sh
  2. #
  3. # Copyright (c) 2015 Slack Technologies. Original version from Google Chrome,
  4. # license is below.
  5. #
  6. # Copyright (c) 2009 The Chromium Authors. All rights reserved.
  7. # Use of this source code is governed by a BSD-style license that can be
  8. # found in the LICENSE file.
  9. #
  10. # It creates the repository configuration file for package updates, and it
  11. # monitors that config to see if it has been disabled by the overly aggressive
  12. # distro upgrade process (e.g.  intrepid -> jaunty). When this situation is
  13. # detected, the respository will be re-enabled. If the respository is disabled
  14. # for any other reason, this won't re-enable it.
  15. #
  16. # This functionality can be controlled by creating the $DEFAULTS_FILE and
  17. # setting "repo_add_once" and/or "repo_reenable_on_distupgrade" to "true" or
  18. # "false" as desired. An empty $DEFAULTS_FILE is the same as setting both values
  19. # to "false".
  20.  
  21. # System-wide package configuration.
  22. DEFAULTS_FILE="/etc/default/slack"
  23.  
  24. APT_GET="`which apt-get 2> /dev/null`"
  25. APT_CONFIG="`which apt-config 2> /dev/null`"
  26.  
  27. SOURCES_PREAMBLE="### THIS FILE IS AUTOMATICALLY CONFIGURED ###
  28. # You may comment out this entry, but any other modifications may be lost.\n"
  29.  
  30. # sources.list setting for updates.
  31. REPOCONFIG="deb https://packagecloud.io/slacktechnologies/slack/debian/ jessie main"
  32.  
  33. # Parse apt configuration and return requested variable value.
  34. apt_config_val() {
  35.   APTVAR="$1"
  36.   if [ -x "$APT_CONFIG" ]; then
  37.     "$APT_CONFIG" dump | sed -e "/^$APTVAR /"'!d' -e "s/^$APTVAR \"\(.*\)\".*/\1/"
  38.   fi
  39. }
  40.  
  41. # Install the repository signing key (see also:
  42. # https://www.google.com/linuxrepositories/)
  43. install_key() {
  44.   APT_KEY="`which apt-key 2> /dev/null`"
  45.   if [ -x "$APT_KEY" ]; then
  46.     "$APT_KEY" add - >/dev/null 2>&1 <<KEYDATA
  47. -----BEGIN PGP PUBLIC KEY BLOCK-----
  48. Version: GnuPG v1.4.2.2 (GNU/Linux)
  49.  
  50. mQINBFLUbogBEADceEoxBDoE6QM5xV/13qiELbFIkQgy/eEi3UesXmJblFdU7wcD
  51. LOW3NuOIx/dgbZljeMEerj6N1cR7r7X5sVoFVEZiK4RLkC3Cpdns0d90ud2f3VyK
  52. K7PXRBstdLm3JlW9OWZoe4VSADSMGWm1mIhT601qLKKAuWJoBIhnKY/RhA/RBXt7
  53. z22g4ta9bT67PlliTo1a8y6DhUA7gd+5TsVHaxDRrzc3mKObdyS5LOT/gf8Ti2tY
  54. BY5MBbQ8NUGExls4dXKlieePhKutFbde7sq3n5sdp1Ndoran1u0LsWnaSDx11R3x
  55. iYfXJ6xGukAc6pYlUD1yYjU4oRGhD2fPyuewqhHNUVwqupTBQtEGULrtdwK04kgI
  56. H93ssGRsLqUKe88uZeeBczVuupv8ZLd1YcQ29AfJHe6nsevsgjF+eajYlzsvC8BN
  57. q3nOvvedcuI6BW4WWFjraH06GNTyMAZi0HibTg65guZXpLcpPW9hTzXMoUrZz8Mv
  58. J9yUBcFPKuFOLDpRP6uaIbxJsYqiituoltl0vgS/vJcpIVVRwSaqPHa6S63dmKm2
  59. 6gq18v4l05mVcInPn+ciHtcSlZgQkCsRTSvfUrK+7nzyWtNQMGKstAZ7AHCoA8Pb
  60. c3i7wyOtnTgfPFHVpHg3JHsPXKk9/71YogtoNFoETMFeKL1K+O+GMQddYQARAQAB
  61. tDdwYWNrYWdlY2xvdWQgb3BzIChwcm9kdWN0aW9uIGtleSkgPG9wc0BwYWNrYWdl
  62. Y2xvdWQuaW8+iQI+BBMBAgAoBQJS1G6IAhsvBQkJZgGABgsJCAcDAgYVCAIJCgsE
  63. FgIDAQIeAQIXgAAKCRDC5zQk1ZCXq13KD/wNzAi6rEzRyx6NH61Hc19s2QAgcU1p
  64. 1mX1Tw0fU7CThx1nr8JrG63465c9dzUpVzNTYvMsUSBJwbb1phahCMNGbJpZRQ5b
  65. vW/i3azmk/EHKL7wgMV8wu1atu6crrxGoDEfWUa4aIwbxZGkoxDZKZeKaLxz2ZCh
  66. uKzjvkGUk4PUoOxxPn9XeFmJQ68ys4Z0CgIGfx2i64apqfsjVEdWEEBLoxHFIPy7
  67. FgFafRL0bgsquwPkb5q/dihIzJEZ2EMOGwXuUaKI/UAhgRIUGizuW7ECEjX4FG92
  68. 8RsizHBjYL5Gl7DMt1KcPFe/YU/AdWEirs9pLQUr9eyGZN7HYJ03Aiy8R5aMBoeY
  69. sfxjifkbWCpbN+SEATaB8YY6Zy2LK/5TiUYNUYb/VHP//ZEv0+uPgkoro6gWVkvG
  70. DdXqH2d9svwfrQKfGSEQYXlLytZKvQSDLAqclSANs/y5HDjUxgtWKdsL3xNPCmff
  71. jpyiqS4pvoTiUwS4FwBsIR2sBDToIEHDvTNk1imeSmxCUgDxFzWkmB70FBmwz7zs
  72. 9FzuoegrAxXonVit0+f3CxquN7tS0mHaWrZfhHxEIt65edkIz1wETOch3LIg6RaF
  73. wsXgrZCNTB/zjKGAFEzxOSBkjhyJCY2g74QNObKgTSeGNFqG0ZBHe2/JQ33UxrDt
  74. peKvCYTbjuWlyrkCDQRS1G6IARAArtNBXq+CNU9DR2YCi759fLR9F62Ec/QLWY3c
  75. /D26OqjTgjxAzGKbu1aLzphP8tq1GDCbWQ2BMMZI+L0Ed502u6kC0fzvbppRRXrV
  76. axBrwxY9XhnzvkXXzwNwnBalkrJ5Yk0lN8ocwCuUJohms7V14nEDyHgAB8yqCEWz
  77. Qm/SIZw35N/insTXshcdiUGeyufo85SFhCUqZ1x1TkSC/FyDG+BCwArfj8Qwdab3
  78. UlUEkF6czTjwWIO+5vYuR8bsCGYKCSrGRh5nxw0tuGXWXWFlBMSZP6mFcCDRQDGc
  79. KOuGTjiWzLJcgsEcBoIX4WpHJYgl6ovex7HkfQsWPYL5V1FIHMlw34ALx4aQDH0d
  80. PJpC+FxynrfTfsIzPnmm2huXPGGYul/TmOp00CsJEcKOjqcrYOgraYkCGVXbd4ri
  81. 6Pf7wJNiJ8V1iKTzQIrNpqGDk306Fww1VsYBLOnrSxNPYOOu1s8c8c9N5qbEbOCt
  82. QdFf5pfuqsr5nJ0G4mhjQ/eLtDA4E7GPrdtUoceOkYKcQFt/yqnL1Sj9Ojeht3EN
  83. PyVSgE8NiWxNIEM0YxPyJEPQawejT66JUnTjzLfGaDUxHfseRcyMMTbTrZ0fLJSR
  84. aIH1AubPxhiYy+IcWOVMyLiUwjBBpKMStej2XILEpIJXP6Pn96KjMcB1grd0J2vM
  85. w2Kg3E8AEQEAAYkERAQYAQIADwUCUtRuiAIbLgUJCWYBgAIpCRDC5zQk1ZCXq8Fd
  86. IAQZAQIABgUCUtRuiAAKCRA3u+4/etlbPwI5D/4idr7VHQpou6c/YLnK1lmz3hEi
  87. kdxUxjC4ymOyeODsGRlaxXfjvjOCdocMzuCY3C+ZfNFKOTtVY4fV5Pd82MuY1H8l
  88. nuzqLxT6UwpIwo+yEv6xSK0mqm2FhT0JSQ7E7MnoHqsU0aikHegyEucGIFzew6BJ
  89. UD2xBu/qmVP/YEPUzhW4g8uD+oRMxdAHXqvtThvFySY/rakLQRMRVwYdTFHrvu3z
  90. HP+6hpZt25llJb3DiO+dTsv+ptLmlUr5JXLSSw2DfLxQa0kD5PGWpFPVJcxraS2p
  91. NDK9KTi2nr1ZqDxeKjDBT6zZOs9+4JQ9fepn1S26AmHWHhyzvpjKxVm4sOilKysi
  92. 84CYluNrlEnidNf9wQa3NlLmtvxXQfm1py5tlwL5rE+ek1fwleaKXRcNNmm+T+vD
  93. dIw+JcHy8a53nK1JEfBqEuY6IqEPKDke0wDIsDLSwI1OgtQoe7Cm1PBujfJu4rYQ
  94. E+wwgWILTAgIy8WZXAloTcwVMtgfSsgHia++LqKfLDZ3JuwpaUAHAtguPy0QddvF
  95. I4R7eFDVwHT0sS3AsG0HAOCY/1FRe8cAw/+9Vp0oDtOvBWAXycnCbdQeHvwh2+Uj
  96. 2u2f7K3CDMoevcBl4L5fkFkYTkmixCDy5nst1VM5nINueUIkUAJJbOGpd6yFdif7
  97. mQR0JWcPLudb+fwusJ4UEACYWhPa8Gxa7eYopRsydlcdEzwpmo6E+V8GIdLFRFFp
  98. KHQEzbSW5coxzU6oOiPbTurCZorIMHTA9cpAZoMUGKaSt19UKIMvSqtcDayhgf4c
  99. Z2ay1z0fdJ2PuLeNnWeiGyfq78q6wqSaJq/h6JdAiwXplFd3gqJZTrFZz7A6Q6Pd
  100. 7B+9PZ/DUdEO3JeZlHJDfRmfU2XPoyPUoq79+whP5Tl3WwHUv7Fg357kRSdzKv9D
  101. bgmhqRHlgVeKn9pwN4cpVBN+idzwPefQksSKH4lBDvVr/9j+V9mmrOx7QmQ5LCc/
  102. 1on+L0dqo6suoajADhKy+lDQbzs2mVb4CLpPKncDup/9iJbjiR17DDFMwgyCoy5O
  103. HJICQ5lckNNgkHTS6Xiogkt28YfK4P3S0GaZgIrhKQ7AmO3O+hB12Zr+olpeyhGB
  104. OpBD80URntdEcenvfnXBY/BsuAVbTGXiBzrlBEyQxg656jUeqAdXg+nzCvP0yJlB
  105. UOjEcwyhK/U2nw9nGyaR3u0a9r24LgijGpdGabIeJm6O9vuuqFHHGI72pWUEs355
  106. lt8q1pAoJUv8NehQmlaR0h5wcwhEtwM6fiSIUTnuJnyHT053GjsUD7ef5fY1KEFm
  107. aZeW04kRtFDOPinz0faE8hvsxzsVgkKye1c2vkXKdOXvA3x+pZzlTHtcgMOhjKQA
  108. sA==
  109. =H60S
  110. -----END PGP PUBLIC KEY BLOCK-----
  111. KEYDATA
  112.   fi
  113. }
  114.  
  115. # NB: The original key we used above is the public PackageCloud
  116. # key which we are now moving away from and moving to a key that
  117. # Slack uses solely for Slack packages. However, in order to not
  118. # break updates for people, we need to ship an update where we
  119. # include both keys. In a future update, we'll remove the
  120. # PackageCloud key.
  121. install_new_key() {
  122.   APT_KEY="`which apt-key 2> /dev/null`"
  123.   if [ -x "$APT_KEY" ]; then
  124.     "$APT_KEY" add - >/dev/null 2>&1 <<KEYDATA
  125. -----BEGIN PGP PUBLIC KEY BLOCK-----
  126. Version: GnuPG v1.4.11 (GNU/Linux)
  127.  
  128. mQINBFbGA48BEAC2S2NI8thjLDFCqjjWweQ2M6KF4+9+r4XFejsImspzDHm3+LhM
  129. g6iAOeAI2aJ3pYThDAzKMOpUlGdyXsTjuP/IerrwVXMFg2JgFXre3skCdi4zDEmS
  130. Xo/JyAQbQ8lVFvQ4fep+i0Z757MtTfaYlaU/dg1+8Ldnif7/0gEg3YsFXRAg5YXO
  131. CK23AqcaZxr6gOkKcvlumecorV/oGzSCthIRdpYTmEOAvVOPn8xitnunjeErZR3+
  132. BtVI3sfuTnEdqlu9lH9dLDgmEPihBTuHP0fLQ5vbJ2mgQQ8IalVf4U7aJFD5CH8s
  133. XngxPHye8/Ww1EBVBxjtNogVM5tYg2Wxb5ESPmJ6k96BCzIIDNiEkZbPUHJfG5YR
  134. rLdhz4gKSE3oUdRwA/fpt8bhDf1dQQcRoT98qLiGnJwAEx+a5cIHJDnKhwI0TLCO
  135. IXMfphMb/iWO6JSpMo1ydeIULviBj3xn6QYXTeTiRapGHGN8kSpaomxSTcCTJ7b2
  136. 5ykQliuPtody3nEpsHb3tTcw/HLqeki6mRZUF2uX54xyEaFCDJo++uX7JMsjIbOb
  137. X31J0r4fCGym6luHT9Z5xgYmPSOPamNdOWB2I6Ks/IyRt3v8RGbia9/NhOA5O7Af
  138. pVkRQomibaxXx7o6vQ8wsdm5lzm/LsQHaQaCz/XNNMmD/IesFmth0iavMwARAQAB
  139. tHRodHRwczovL3BhY2thZ2VjbG91ZC5pby9zbGFja3RlY2hub2xvZ2llcy9zbGFj
  140. ayAoaHR0cHM6Ly9wYWNrYWdlY2xvdWQuaW8vZG9jcyNncGdfc2lnbmluZykgPHN1
  141. cHBvcnRAcGFja2FnZWNsb3VkLmlvPokCOAQTAQIAIgUCVsYDjwIbLwYLCQgHAwIG
  142. FQgCCQoLBBYCAwECHgECF4AACgkQ2TjsDQOGUb2ryRAAhBoBt5zbI46RVvthxH/E
  143. XAvvm+kiwgAYE0oRgzAp3t1m3T2U7YFTABc4wFAWe9Vsa8OE8bkfBuLcd+JzI7Ci
  144. qBcQw0XLstQcCj303jSx+MzwMEU02PcCXJ7w0ph3TY+GbuCxoti1F7blFFqwv4vf
  145. wtV5SoDiVERiQBl7c91FF54g8fT8cWtoBrSH7+uyl1xZj+NrjLH26pQndNPGHpm+
  146. NoAD/9aTNKoc7DhLsfY/flToT4KfE/+XByIufBPJJNLXhCdey0EP4XhFfFvQCHid
  147. F5ub+ID1waM4Qkj9ydpBE1C7SpopFLvA6p012oqj0hCM6nFivhoVkN63lcycpOoE
  148. lrk2X5f7HhLAuw44yPY0j/VTir0VUxgQm/5aysz/P1+sC2SjCc8K2jDzCMvTlo5B
  149. 2Ko4BLNEDMRD18Yn4AWoNK54FwXlDE5Z+3jWbYnwZQMxMZWyqazfdVxOp3Ka1Lfz
  150. hRbp4hUF4qKFLp1R3jkvtR2rRLhtZ7IYR3V1JzsU37VnOUkJcJ/3WYqiSnfCttYV
  151. 3DxtS3hKD/JG2rA8+y6VigTF8hs71bCXIIr99GnzQknkw0QSVPSULaMRGyKvei2k
  152. 9FG3n83Ikd+7P2rEwi9N6pu2+ydvcZshp4OGxgEbgeM/P9JBkKK0GYFpb1jePdfX
  153. WYPX5CWO9FtLeK6Neyk4HYu5Ag0EVsYDjwEQAMZwcsgHxLQ6lcgZ+hb/TZZkIhDs
  154. 4AG72Stvvb7m6lSgtUcbvR9RWmrBviUBBRKxorq7Ifke4KlmMorrCtwwDLPVA4H/
  155. rF04yhMmRcA7RJDO8Sj1N8z0pPfRjcH39paP+BvcPRt345gZc+hILc9cMn+2ih6g
  156. 1g6C8VEx0YvCuIEMFG5KuNYlXbGRNHBYdN3XzEa5v4w1s0DRE9STjy3pf8BUSWXg
  157. lRG9DCLJ6uCEPER2YuYKPMxAuNy5lKNPFZ1tQvxBkk2w90Js+7yi98CxzLlSdRjr
  158. tJNVkjgqzOABb2ZnAjZUoMzKeibJvZ3gI8CD0Aoj4RXnygRJV5AEYWeLq8B0R/Mz
  159. UgxBsLkHiU85+Na5jgciqtRdDdAywf6nGCbmvWmLiHs+RQHZn8lRZINWywGpyUiu
  160. ifgcN1rc+QmA6OY84GstwAYvPvXTvwr3PJOJDqy0qpO7gQjSNN3Srk6BWPx2N99r
  161. u1WVhW78wf3CentPuJo3Vd6GFvwbNnUBnoQ6HR9JW9etnuBwhhq+bb/hcGjMJFAF
  162. 7Zy38uAn1r2QaycPeVUuBsvVtsknEB2yygIPmcfwLAf2Ir0eFOIbrUpwHJJQ6tW1
  163. P/+c3GV1wUWAYpMu+F18Y2O7BdCTFG4Rs31zvAj81oGejNkUrha/m7fpUbG31rH4
  164. xipCqu6ibMH0+ZbHABEBAAGJBD4EGAECAAkFAlbGA48CGy4CKQkQ2TjsDQOGUb3B
  165. XSAEGQECAAYFAlbGA48ACgkQxqvc9k25oLI6MA//bLgtn13m9pbxayYg4T67UYDj
  166. lFEgwAeI54rJ+6jEowztkajD6GMgUr1pxvjmGK7JE9XuLJucE/3bpJYTJJE0fb8T
  167. KUprbXA1uux4SE3MiFo/Xe+3wJqmvADnwm1MueKK2IsZUyfMPP+JlhQ3YwMqpmS2
  168. aBvBuLfiyRu+wBWravBC+xAZJXUg9rgbzUxa5qhGLutZuGvIPgRqD/VXZgD6OwH3
  169. s2x3Yc+QPsZT2FcQD+Y6kxFEIph2jPTFtwlsmYZqJo14nVXP6gElTc3t5UeZdfTM
  170. Q/k+8tryAcu3iG8mhAsSa4gM8pvFjtafwZMTi+61BHQBFIElddto1CKV88DrAvvF
  171. 0OBuW41kHxHxwx8hxaE1gguof9zWwFOD/uR4ogdbG5/4PyzN/mLw2/WSNDhmSCOy
  172. zdSAkGKl1rVpoW4Hpwv1L9pYTOryoBxKC4gPMhTqr2jXC6Dvte6Vf4YQoIwmg6RG
  173. if06E5cdQVv2cB6wMiZDmXEz/1CBJL9gudAVTNROSOnytkKvmn0PPELhjOmOvICk
  174. gCZTv9k852y330VEi8vHI67i047TRt+8FzksTBJV/Qrpqgl+x5Z6gXZ8+jZdZ8Ce
  175. 1EeSIZymaCxBsv9tNiZ9RBEFriE1HSvsHYF0ScWw+l9LqjTCnj3qU8gfvF9i+e7z
  176. iYffc2GXNiCJDcqpo8VCwg/7Bffs8y0XJCDZLXU8m4e4C+Vn6wwWHKnVWcCL1k2o
  177. UmZOX2uzGzPFXnG8FyjAB8Aul+ldjO8tn2MjkC/wdvEhl8KKfbHf6+LTezsX86fH
  178. bN/noG03IUf4BZYD78lwhsNG8ylP1MEJH6//QVlSQkC4Ju9MfKrbICRjxtaJaG1s
  179. nIeKWZKXCjGI8ZZIM7mXi+a7KzCGv/Xz71TPHGXPDGNX+0HX8Kjor0TXLcUIkVqy
  180. 6C+x0b3TuS31g16+0f/ry20Qez4HelMC5yTC0EdB0r9XrXglhlJ5HfPtj3mo1x2J
  181. YaeDulPChbDQcH7xLnEFY6GfquO6HA/Nden3Rr2py/MKpYfituptC7U4TGf4LPzr
  182. WpS005fIGUiYh+gjMdFGmQ/0NlyrIHQmVzNHFITvxSr+NVxY2pG1nG5dbFqyStcI
  183. N/t3NXMoAcEcbiivikn6mcysFoij0DEzzZejB1Lp28OJp77JMgxdJ2EGu9YHzF44
  184. QeiB1fahvCoWo+CSJhrYN4/52DoeiYE7Ko1kefDxH5BUpxbxtXcCr30UZYIzSzy6
  185. XzCC9Nb4ncvMui8hpcnyEGrze6YY3M6lSWfgn8g/D6DsaeyTvvsk3Hvagwx+v+nH
  186. m3ntWbHywcepKAid9ZBsHGh8G6Y90jzvSBs0Uw4R7MoKp1Rr0QvPDy1FqPZZDAPy
  187. lIs=
  188. =ZPAR
  189. -----END PGP PUBLIC KEY BLOCK-----
  190. KEYDATA
  191.   fi
  192. }
  193.  
  194. # Set variables for the locations of the apt sources lists.
  195. find_apt_sources() {
  196.   APTDIR=$(apt_config_val Dir)
  197.   APTETC=$(apt_config_val 'Dir::Etc')
  198.   APT_SOURCES="$APTDIR/$APTETC/$(apt_config_val 'Dir::Etc::sourcelist')"
  199.   APT_SOURCESDIR="$APTDIR/$APTETC/$(apt_config_val 'Dir::Etc::sourceparts')"
  200. }
  201.  
  202. # Update the Google repository if it's not set correctly.
  203. # Note: this doesn't necessarily enable the repository, it just makes sure the
  204. # correct settings are available in the sources list.
  205. # Returns:
  206. # 0 - no update necessary
  207. # 2 - error
  208. update_bad_sources() {
  209.   if [ ! "$REPOCONFIG" ]; then
  210.     return 0
  211.   fi
  212.  
  213.   find_apt_sources
  214.  
  215.   SOURCELIST="$APT_SOURCESDIR/slack.list"
  216.   # Don't do anything if the file isn't there, since that probably means the
  217.   # user disabled it.
  218.   if [ ! -r "$SOURCELIST" ]; then
  219.     return 0
  220.   fi
  221.  
  222.   # Basic check for active configurations (non-blank, non-comment lines).
  223.   ACTIVECONFIGS=$(grep -v "^[[:space:]]*\(#.*\)\?$" "$SOURCELIST" 2>/dev/null)
  224.  
  225.   # Check if the correct repository configuration is in there.
  226.   REPOMATCH=$(grep "^[[:space:]#]*\b$REPOCONFIG\b" "$SOURCELIST" \
  227.     2>/dev/null)
  228.  
  229.   # Check if the correct repository is disabled.
  230.   MATCH_DISABLED=$(echo "$REPOMATCH" | grep "^[[:space:]]*#" 2>/dev/null)
  231.  
  232.   # Now figure out if we need to fix things.
  233.   BADCONFIG=1
  234.   if [ "$REPOMATCH" ]; then
  235.     # If it's there and active, that's ideal, so nothing to do.
  236.     if [ ! "$MATCH_DISABLED" ]; then
  237.       BADCONFIG=0
  238.     else
  239.       # If it's not active, but neither is anything else, that's fine too.
  240.       if [ ! "$ACTIVECONFIGS" ]; then
  241.         BADCONFIG=0
  242.       fi
  243.     fi
  244.   fi
  245.  
  246.   if [ $BADCONFIG -eq 0 ]; then
  247.     return 0
  248.   fi
  249.  
  250.   # At this point, either the correct configuration is completely missing, or
  251.   # the wrong configuration is active. In that case, just abandon the mess and
  252.   # recreate the file with the correct configuration. If there were no active
  253.   # configurations before, create the new configuration disabled.
  254.   DISABLE=""
  255.   if [ ! "$ACTIVECONFIGS" ]; then
  256.     DISABLE="#"
  257.   fi
  258.   printf "$SOURCES_PREAMBLE" > "$SOURCELIST"
  259.   printf "$DISABLE$REPOCONFIG\n" >> "$SOURCELIST"
  260.   if [ $? -eq 0 ]; then
  261.     return 0
  262.   fi
  263.   return 2
  264. }
  265.  
  266. # Add the Google repository to the apt sources.
  267. # Returns:
  268. # 0 - sources list was created
  269. # 2 - error
  270. create_sources_lists() {
  271.   if [ ! "$REPOCONFIG" ]; then
  272.     return 0
  273.   fi
  274.  
  275.   find_apt_sources
  276.  
  277.   SOURCELIST="$APT_SOURCESDIR/slack.list"
  278.   if [ -d "$APT_SOURCESDIR" ]; then
  279.     printf "$SOURCES_PREAMBLE" > "$SOURCELIST"
  280.     printf "$REPOCONFIG\n" >> "$SOURCELIST"
  281.     if [ $? -eq 0 ]; then
  282.       return 0
  283.     fi
  284.   fi
  285.   return 2
  286. }
  287.  
  288. # Remove our custom sources list file.
  289. # Returns:
  290. # 0 - successfully removed, or not configured
  291. # !0 - failed to remove
  292. clean_sources_lists() {
  293.   if [ ! "$REPOCONFIG" ]; then
  294.     return 0
  295.   fi
  296.  
  297.   find_apt_sources
  298.  
  299.   rm -f "$APT_SOURCESDIR/slack.list"
  300. }
  301.  
  302. # Detect if the repo config was disabled by distro upgrade and enable if
  303. # necessary.
  304. handle_distro_upgrade() {
  305.   if [ ! "$REPOCONFIG" ]; then
  306.     return 0
  307.   fi
  308.  
  309.   find_apt_sources
  310.   SOURCELIST="$APT_SOURCESDIR/slack.list"
  311.   if [ -r "$SOURCELIST" ]; then
  312.     REPOLINE=$(grep -E "^[[:space:]]*#[[:space:]]*$REPOCONFIG[[:space:]]*# disabled on upgrade to .*" "$SOURCELIST")
  313.     if [ $? -eq 0 ]; then
  314.       sed -i -e "s,^[[:space:]]*#[[:space:]]*\($REPOCONFIG\)[[:space:]]*# disabled on upgrade to .*,\1," \
  315.         "$SOURCELIST"
  316.       LOGGER=$(which logger 2> /dev/null)
  317.       if [ "$LOGGER" ]; then
  318.         "$LOGGER" -t "$0" "Reverted repository modification: $REPOLINE."
  319.       fi
  320.     fi
  321.   fi
  322. }
  323.  
  324. DEFAULT_ARCH="amd64"
  325.  
  326. get_lib_dir() {
  327.   if [ "$DEFAULT_ARCH" = "i386" ]; then
  328.     LIBDIR=lib/i386-linux-gnu
  329.   elif [ "$DEFAULT_ARCH" = "amd64" ]; then
  330.     LIBDIR=lib/x86_64-linux-gnu
  331.   else
  332.     echo Unknown CPU Architecture: "$DEFAULT_ARCH"
  333.     exit 1
  334.   fi
  335. }
  336.  
  337. ## MAIN ##
  338. DEFAULTS_FILE="/etc/default/slack"
  339. if [ -r "$DEFAULTS_FILE" ]; then
  340.   . "$DEFAULTS_FILE"
  341. else
  342.   repo_add_once="true"
  343.   repo_reenable_on_distupgrade="true"
  344.   echo "repo_add_once=\"true\"\nrepo_reenable_on_distupgrade=\"true\"\n" > "$DEFAULTS_FILE"
  345. fi
  346.  
  347. if [ "$repo_add_once" = "true" ]; then
  348.   install_key
  349.   install_new_key
  350.   create_sources_lists
  351.   RES=$?
  352.   # Sources creation succeeded, so stop trying.
  353.   if [ $RES -ne 2 ]; then
  354.     sed -i -e 's/[[:space:]]*repo_add_once=.*/repo_add_once="false"/' "$DEFAULTS_FILE"
  355.   fi
  356. else
  357.   update_bad_sources
  358. fi
  359.  
  360. if [ "$repo_reenable_on_distupgrade" = "true" ]; then
  361.   handle_distro_upgrade
  362.   install_new_key
  363. fi
Advertisement
Add Comment
Please, Sign In to add comment