2016-08-23 22:37:17 +00:00
|
|
|
!define PRODUCT_NAME "Salt Minion"
|
2022-10-18 16:57:41 -06:00
|
|
|
!define PRODUCT_PUBLISHER "SaltStack, Inc"
|
2022-10-19 17:07:48 -06:00
|
|
|
!define PRODUCT_WEB_SITE "http://saltproject.io"
|
2016-08-08 23:23:04 +00:00
|
|
|
!define PRODUCT_CALL_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\salt-call.exe"
|
|
|
|
!define PRODUCT_CP_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\salt-cp.exe"
|
|
|
|
!define PRODUCT_KEY_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\salt-key.exe"
|
|
|
|
!define PRODUCT_MASTER_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\salt-master.exe"
|
|
|
|
!define PRODUCT_MINION_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\salt-minion.exe"
|
|
|
|
!define PRODUCT_RUN_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\salt-run.exe"
|
2013-01-04 08:49:05 -07:00
|
|
|
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
|
|
|
|
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
|
Merge 3003.3 into master (#60924)
* Merge 3002.6 bugfix changes (#59822)
* Pass `CI_RUN` as an environment variable to the test run.
This allows us to know if we're running the test suite under a CI
environment or not and adapt/adjust if needed
* Migrate `unit.setup` to PyTest
* Backport ae36b15 just for test_install.py
* Only skip tests on CI runs
* Always store git sha in _version.py during installation
* Fix PEP440 compliance.
The wheel metadata version 1.2 states that the package version MUST be
PEP440 compliant.
This means that instead of `3002.2-511-g033c53eccb`, the salt version
string should look like `3002.2+511.g033c53eccb`, a post release of
`3002.2` ahead by 511 commits with the git sha `033c53eccb`
* Fix and migrate `tests/unit/test_version.py` to PyTest
* Skip test if `easy_install` is not available
* We also need to be PEP440 compliant when there's no git history
* Allow extra_filerefs as sanitized kwargs for SSH client
* Fix regression on cmd.run when passing tuples as cmd
Co-authored-by: Alexander Graul <agraul@suse.com>
* Add unit tests to ensure cmd.run accepts tuples
* Add unit test to check for extra_filerefs on SSH opts
* Add changelog file
* Fix comment for test case
* Fix unit test to avoid failing on Windows
* Skip failing test on windows
* Fix test to work on Windows
* Add all ssh kwargs to sanitize_kwargs method
* Run pre-commit
* Fix pylint
* Fix cmdmod loglevel and module_names tests
* Fix pre-commit
* Skip ssh tests if binary does not exist
* Use setup_loader for cmdmod test
* Prevent argument injection in restartcheck
* Add changelog for restartcheck fix
* docs_3002.6
* Add back tests removed in merge
Co-authored-by: Pedro Algarvio <pedro@algarvio.me>
Co-authored-by: Megan Wilhite <megan.wilhite@gmail.com>
Co-authored-by: Bryce Larson <brycel@vmware.com>
Co-authored-by: Pablo Suárez Hernández <psuarezhernandez@suse.com>
Co-authored-by: Alexander Graul <agraul@suse.com>
Co-authored-by: Frode Gundersen <fgundersen@saltstack.com>
* Remove glance state module in favor of glance_image
* update wording in changelog
* bump deprecation warning to Silicon.
* Updating warnutil version to Phosphorous.
* Update salt/modules/keystone.py
Co-authored-by: Megan Wilhite <megan.wilhite@gmail.com>
* Check $HOMEBREW_PREFIX when linking against libcrypto
When loading `libcrypto`, Salt checks for a Homebrew installation of `openssl`
at Homebrew's default prefix of `/usr/local`. However, on Apple Silicon Macs,
Homebrew's default installation prefix is `/opt/homebrew`. On all platforms,
the prefix is configurable. If Salt doesn't find one of those `libcrypto`s,
it will fall back on the un-versioned `/usr/lib/libcrypto.dylib`, which will
cause the following crash:
Application Specific Information:
/usr/lib/libcrypto.dylib
abort() called
Invalid dylib load. Clients should not load the unversioned libcrypto dylib as it does not have a stable ABI.
This commit checks $HOMEBREW_PREFIX instead of hard-coding `/usr/local`.
* Add test case
* Add changelog for 59808
* Add changelog entry
* Make _find_libcrypto fail on Big Sur if it can't find a library
Right now, if `_find_libcrypto` can't find any externally-managed versions of
libcrypto, it will fall back on the pre-Catalina un-versioned system libcrypto.
This does not exist on Big Sur and it would be better to raise an exception
here rather than crashing later when trying to open it.
* Update _find_libcrypto tests
This commit simplifies the unit tests for _find_libcrypto by mocking out the
host's filesystem and testing the common libcrypto installations (brew, ports,
etc.) on Big Sur. It simplifies the tests for falling back on system versions
of libcrypto on previous versions of macOS.
* Fix description of test_find_libcrypto_with_system_before_catalina
* Patch sys.platform for test_rsax931 tests
* modules/match: add missing "minion_id" in Pillar example
The documented Pillar example for `match.filter_by` lacks the `minion_id` parameter. Without it, the assignment won't work as expected.
- fix documentation
- add tests:
- to prove the misbehavior of the documented example
- to prove the proper behaviour when supplying `minion_id`
- to ensure some misbehaviour observed with compound matchers doesn't occur
* Fix for issue #59773
- When instantiating the loader grab values of grains and pillars if
they are NamedLoaderContext instances.
- The loader uses a copy of opts.
- Impliment deepcopy on NamedLoaderContext instances.
* Add changelog for #59773
* _get_initial_pillar function returns pillar
* Fix linter issues
* Clean up test
* Bump deprecation release for neutron
* Uncomment Sulfur release name
* Removing the _ext_nodes deprecation warning and alias.
* Adding changelog.
* Renaming changelog file.
* Update 59804.removed
* Initial pass at fips_mode config option
* Fix pre-commit
* Fix tests and add changelog
* update docs 3003
* update docs 3003 - newline
* Fix warts in changelog
* update releasenotes 3003
* add ubuntu-2004-amd64 m2crypto pycryptodome and tcp tests
* add distro_arch
* changing the cloud platforms file missed in 1a9b7be0e2f300d87924731dc5816fd1000cd22b
* Update __utils__ calls to import utils in azure
* Add changelog for 59744
* Fix azure unit tests and move to pytest
* Use contextvars from site-packages for thin
If a contextvars package exists one of the site-packages locations use
it for the generated thin tarball. This overrides python's builtin
contextvars and allows salt-ssh to work with python <=3.6 even when the
master's python is >3.6 (Fixes #59942)
* Add regression test for #59942
* Add changelog for #59942
* Update filemap to include test_py_versions
* Fix broken thin tests
* Always install the `contextvars` backport, even on Py3.7+
Without this change, salt-ssh cannot target systems with Python <= 3.6
* Use salt-factories to handle the container. Don't override default roster
* Fix thin tests on windows
* No need to use warn log level here
* Fix getsitepackages for old virtualenv versions
* Add explicit pyobjc reqs
* Add back the passthrough stuff
* Remove a line so pre-commit will run
* Bugfix release docs
* Bugfix release docs
* Removing pip-compile log files
* Bump requirements to address a few security issues
* Address traceback on macOS
```
Traceback (most recent call last):
File "setup.py", line 1448, in <module>
setup(distclass=SaltDistribution)
File "/Users/jenkins/setup-tests/.venv/lib/python3.7/site-packages/setuptools/__init__.py", line 153, in setup
return distutils.core.setup(**attrs)
File "/opt/salt/lib/python3.7/distutils/core.py", line 108, in setup
_setup_distribution = dist = klass(attrs)
File "setup.py", line 1068, in __init__
self.update_metadata()
File "setup.py", line 1074, in update_metadata
attrvalue = getattr(self, attrname, None)
File "setup.py", line 1182, in _property_install_requires
install_requires += _parse_requirements_file(reqfile)
File "setup.py", line 270, in _parse_requirements_file
platform.python_version(), _parse_op(op), _parse_ver(ver)
File "setup.py", line 247, in _check_ver
return getattr(operator, "__{}__".format(op))(pyver, wanted)
File "/opt/salt/lib/python3.7/distutils/version.py", line 46, in __eq__
c = self._cmp(other)
File "/opt/salt/lib/python3.7/distutils/version.py", line 337, in _cmp
if self.version < other.version:
TypeError: '<' not supported between instances of 'str' and 'int'
```
* Replace `saltstack.com` with `saltproject.io` on URLs being tested
* Add back support to load old entrypoints by iterating instead of type checking
Fixes #59961
* Fix issue #59975
* Fix pillar serialization for jinja #60083
* Fix test
* Add changelog for #60083
* Update changelog and release for 3003.1
* Remove the changelog source refs
* Add connect to IPCMessageSubscriber's async_methods
Fixes #60049 by making sure an IPCMessageSubscriber that is wrapped by
SyncWrapper has a connect method that runs the coroutine rather than
returns a fugure.
* Add changelog for #60049
* Update 60049.fixed
* Fix coroutine spelling error
Co-authored-by: Wayne Werner <waynejwerner@gmail.com>
* IPC on windows cannot use socket paths
Fixes #60298
* Update Jinja2 and lxml due to security related bugfix releases
Jinja2
------
CVE-2020-28493
moderate severity
Vulnerable versions: < 2.11.3
Patched version: 2.11.3
This affects the package jinja2 from 0.0.0 and before 2.11.3. The ReDOS vulnerability of the regex is mainly due to the sub-pattern [a-zA-Z0-9.-]+.[a-zA-Z0-9.-]+ This issue can be mitigated by Markdown to format user content instead of the urlize filter, or by implementing request timeouts and limiting process memory.
lxml
----
CVE-2021-28957
moderate severity
Vulnerable versions: < 4.6.3
Patched version: 4.6.3
An XSS vulnerability was discovered in the python lxml clean module versions before 4.6.3. When disabling the safe_attrs_only and forms arguments, the Cleaner class does not remove the formaction attribute allowing for JS to bypass the sanitizer. A remote attacker could exploit this flaw to run arbitrary JS code on users who interact with incorrectly sanitized HTML. This issue is patched in lxml 4.6.3.
* fix github actions jobs on branch until bullseye comes out
* Upgrade to `six==1.16.0` to avoid problems on CI runs
```
13:59:02 nox > Session invoke-pre-commit was successful.
13:59:02 nox > Running session invoke-pre-commit
13:59:02 nox > pip install --progress-bar=off -r requirements/static/ci/py3.7/invoke.txt
13:59:02 Collecting blessings==1.7
13:59:02 Using cached blessings-1.7-py3-none-any.whl (18 kB)
13:59:02 Collecting invoke==1.4.1
13:59:02 Using cached invoke-1.4.1-py3-none-any.whl (210 kB)
13:59:02 Collecting pyyaml==5.3.1
13:59:02 Using cached PyYAML-5.3.1.tar.gz (269 kB)
13:59:02 Collecting six==1.15.0
13:59:02 Using cached six-1.15.0-py2.py3-none-any.whl (10 kB)
13:59:02 Building wheels for collected packages: pyyaml
13:59:02 Building wheel for pyyaml (setup.py) ... - \ | / - \ | done
13:59:02 Created wheel for pyyaml: filename=PyYAML-5.3.1-cp37-cp37m-linux_x86_64.whl size=546391 sha256=e42e1d66cc32087f4d33ceb81268c86b59f1a97029b19459f91b8d6ad1430167
13:59:02 Stored in directory: /var/jenkins/.cache/pip/wheels/5e/03/1e/e1e954795d6f35dfc7b637fe2277bff021303bd9570ecea653
13:59:02 Successfully built pyyaml
13:59:02 Installing collected packages: six, pyyaml, invoke, blessings
13:59:02 Attempting uninstall: six
13:59:02 Found existing installation: six 1.16.0
13:59:02 Uninstalling six-1.16.0:
13:59:02 ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: '/var/jenkins/.cache/pre-commit/repomw8oee1s/py_env-python3/lib/python3.7/site-packages/__pycache__/six.cpython-37.pyc'
13:59:02
13:59:02 nox > Command pip install --progress-bar=off -r requirements/static/ci/py3.7/invoke.txt failed with exit code 1
13:59:02 nox > Session invoke-pre-commit failed.
```
* add changelog for https://github.com/saltstack/salt/issues/59982
* Regression test for #56273
* Fix race condition in batch. #56273
* Add changelog for #56273
* Update salt/client/__init__.py
Co-authored-by: Pedro Algarvio <pedro@algarvio.me>
* Update doc for salt/client
* Update changelog/56273.fixed
Thoreau said, "Simplify, Simplify"
* Update docs
* Update docs
* Update CHANGELOG.md
* Update 3003.1.rst
* Ignore configuration for 'enable_fqdns_grains' for AIX, Solaris and Juniper
* Added changelog
* Let Mac OS Mojave run for 8 hours to avoid timeout
* Remove FreeBSD-12.2
* Use Popen for VT
* Still allow shell True
* Drop shlex split
* Add crypto re-init
* Fix pre-commit
* Do not call close in isalive
* Skip tests not valid on windows
* Cleanup things that are not really needed
* We do not support irix
* Fix pre-commit
* Remove commented out lines
* Add changelog for #60504
* Fix pre-commit issues
* pyupgrade does not remove six imports
* Fix OSErrors in some test cases
* Remove un-needed args processing
* Make state_running test more reliable
* Removing tmpfs from Fedora 33.
* Address leaks in fileserver caused by git backends
At this time we do not have the ability to fix the upstream memory leaks
in the gitfs backend providers. Work around their limitations by
periodically restarting the file server update proccess. This will at
least partially address #50313
* Remove un-used import
* Fix warts caused by black version
* Add changelog
* We don't need two changelogs
* Also pin the ``pip`` upgrade to be ``<21.2``
* Update the external ipaddress to the latest 3.9.5 version which has some security fixes. Updating the compat.p to use the vendored version if the python version is below 3.9.5 and only run the test_ipaddress.py tests if below 3.9.5.
* Adding changelog
* Requested changes.
* Add shh_timeout to ssh_kwargs
* move to with blocks
* one with block
* reight crypto
* add back test file
* add changelog
* change log file number
* add m2crypt support
* only check m2crpto
* Delete 60571.fixed
* add back log
* add newline
* add newline for log file
* Work around https://github.com/pypa/pip/pull/9450
See https://github.com/pypa/pip/issues/10212
* Drop six and Py2
* [3003.2] Add server alive (#60573)
* add server alive
* rename log
* change default alive time
* add requested changes
* format string
* reformat string again
* run pre
* customize
* space
* remove EOF dead space
* fix pre-commit
* run pre
Co-authored-by: Megan Wilhite <megan.wilhite@gmail.com>
* Changelog for 3003.2
* Man pages update for 3003.2
* Allow CVE entries in `changelog/`
* Add security type for towncrier changelog
* Add security type for changelog entries pre-commit check
* Pin to ``pip>=20.2.4,<21.2``
Refs https://github.com/pypa/pip/pull/9450
* Drop six and Py2
* Fix bug introduced in https://github.com/saltstack/salt/pull/59648
Fixes #60046
* Add changelog
* Fix doc builds
* fix release notes about dropping ubuntu 16.04
* update file client
* add changelog file
* update changelog
* Check permissions of minion config directory
* Fix some wording in the messagebox and in comments
* Add changelog
* Fix extension for changelog
* Add missing commas. It also worked, but now is better
* docs_3003.3
* fixing version numbers in man pages.
* removing newlines.
* removing newlines.
* Fixing release notes.
* Fix changelog file for 3003.2 release
* Fix test_state test using loader.context
* Re-add test_context test
* Allow Local System account, add timestamp
* swaping the git-source for vsphere-automation-sdk-python
* Remove destroy, handled in context manager
Co-authored-by: Daniel Wozniak <dwozniak@saltstack.com>
Co-authored-by: Pedro Algarvio <pedro@algarvio.me>
Co-authored-by: Bryce Larson <brycel@vmware.com>
Co-authored-by: Pablo Suárez Hernández <psuarezhernandez@suse.com>
Co-authored-by: Alexander Graul <agraul@suse.com>
Co-authored-by: Frode Gundersen <fgundersen@saltstack.com>
Co-authored-by: Gareth J. Greenaway <gareth@saltstack.com>
Co-authored-by: Gareth J. Greenaway <gareth@wiked.org>
Co-authored-by: Hoa-Long Tam <hoalong@apple.com>
Co-authored-by: krionbsd <krion@freebsd.org>
Co-authored-by: Elias Probst <e.probst@ssc-services.de>
Co-authored-by: Daniel A. Wozniak <dwozniak@vmware.com>
Co-authored-by: Frode Gundersen <frogunder@gmail.com>
Co-authored-by: twangboy <slee@saltstack.com>
Co-authored-by: twangboy <leesh@vmware.com>
Co-authored-by: ScriptAutomate <derek@icanteven.io>
Co-authored-by: Wayne Werner <waynejwerner@gmail.com>
Co-authored-by: David Murphy < dmurphy@saltstack.com>
Co-authored-by: Joe Eacott <jeacott@vmware.com>
Co-authored-by: cmcmarrow <charles.mcmarrow.4@gmail.com>
Co-authored-by: Twangboy <shane.d.lee@gmail.com>
2021-09-22 20:42:38 -04:00
|
|
|
!define /date TIME_STAMP "%Y-%m-%d-%H-%M-%S"
|
2013-01-04 08:49:05 -07:00
|
|
|
|
2021-06-25 16:08:16 -06:00
|
|
|
# Request admin rights
|
|
|
|
RequestExecutionLevel admin
|
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
# Import Libraries
|
2021-06-25 16:08:16 -06:00
|
|
|
!include "FileFunc.nsh"
|
|
|
|
!include "LogicLib.nsh"
|
|
|
|
!include "MoveFileFolder.nsh"
|
2015-10-27 15:43:22 -06:00
|
|
|
!include "MUI2.nsh"
|
2013-01-04 08:49:05 -07:00
|
|
|
!include "nsDialogs.nsh"
|
2015-03-28 00:14:01 +00:00
|
|
|
!include "StrFunc.nsh"
|
2016-08-08 23:23:04 +00:00
|
|
|
!include "WinMessages.nsh"
|
2017-01-24 11:56:11 -07:00
|
|
|
!include "WinVer.nsh"
|
2021-06-25 16:08:16 -06:00
|
|
|
!include "x64.nsh"
|
2015-03-28 00:14:01 +00:00
|
|
|
${StrLoc}
|
|
|
|
${StrStrAdv}
|
2013-01-04 08:49:05 -07:00
|
|
|
|
2021-06-25 16:08:16 -06:00
|
|
|
# Required by MoveFileFolder.nsh
|
|
|
|
!insertmacro Locate
|
|
|
|
|
2022-12-05 11:01:03 -07:00
|
|
|
# Get salt version from CLI argument /DSaltVersion
|
2015-04-16 22:43:51 +00:00
|
|
|
!ifdef SaltVersion
|
2016-08-08 23:23:04 +00:00
|
|
|
!define PRODUCT_VERSION "${SaltVersion}"
|
2015-04-16 22:43:51 +00:00
|
|
|
!else
|
2016-08-08 23:23:04 +00:00
|
|
|
!define PRODUCT_VERSION "Undefined Version"
|
2015-04-16 22:43:51 +00:00
|
|
|
!endif
|
|
|
|
|
2022-12-05 11:01:03 -07:00
|
|
|
# Get architecture from CLI argument /DPythonArchitecture
|
|
|
|
# Should be x64, AMD64, or x86
|
2022-10-18 16:57:41 -06:00
|
|
|
!ifdef PythonArchitecture
|
|
|
|
!define PYTHON_ARCHITECTURE "${PythonArchitecture}"
|
2020-05-08 13:36:11 -06:00
|
|
|
!else
|
2022-12-05 11:01:03 -07:00
|
|
|
# Default
|
2022-10-18 16:57:41 -06:00
|
|
|
!define PYTHON_ARCHITECTURE "x64"
|
2020-05-08 13:36:11 -06:00
|
|
|
!endif
|
|
|
|
|
2023-01-31 18:43:41 -07:00
|
|
|
# Get Estimated Size from CLI argument /DEstimatedSize
|
|
|
|
!ifdef PythonArchitecture
|
|
|
|
!define ESTIMATED_SIZE "${EstimatedSize}"
|
|
|
|
!else
|
|
|
|
# Default
|
|
|
|
!define ESTIMATED_SIZE 0
|
|
|
|
!endif
|
2022-12-05 11:01:03 -07:00
|
|
|
|
|
|
|
# x64 and AMD64 are AMD64, all others are x86
|
2022-10-18 16:57:41 -06:00
|
|
|
!if "${PYTHON_ARCHITECTURE}" == "x64"
|
2016-08-08 23:23:04 +00:00
|
|
|
!define CPUARCH "AMD64"
|
2022-12-05 11:01:03 -07:00
|
|
|
!else if "${PYTHON_ARCHITECTURE}" == "AMD64"
|
|
|
|
!define CPUARCH "AMD64"
|
2015-03-20 13:48:08 -06:00
|
|
|
!else
|
2016-08-08 23:23:04 +00:00
|
|
|
!define CPUARCH "x86"
|
2015-03-20 13:48:08 -06:00
|
|
|
!endif
|
2014-03-22 17:14:22 +04:00
|
|
|
|
2022-10-19 17:07:48 -06:00
|
|
|
!define BUILD_TYPE "Python 3"
|
|
|
|
!define OUTFILE "Salt-Minion-${PRODUCT_VERSION}-Py3-${CPUARCH}-Setup.exe"
|
2022-10-18 16:57:41 -06:00
|
|
|
|
2017-09-12 12:49:20 -06:00
|
|
|
# Part of the Trim function for Strings
|
2016-08-08 23:23:04 +00:00
|
|
|
!define Trim "!insertmacro Trim"
|
|
|
|
!macro Trim ResultVar String
|
|
|
|
Push "${String}"
|
|
|
|
Call Trim
|
2021-09-24 15:55:24 -06:00
|
|
|
Pop "${ResultVar}"
|
2016-08-08 23:23:04 +00:00
|
|
|
!macroend
|
|
|
|
|
2017-09-20 15:38:54 -06:00
|
|
|
# Part of the Explode function for Strings
|
|
|
|
!define Explode "!insertmacro Explode"
|
|
|
|
!macro Explode Length Separator String
|
2021-09-24 15:55:24 -06:00
|
|
|
Push "${Separator}"
|
|
|
|
Push "${String}"
|
|
|
|
Call Explode
|
|
|
|
Pop "${Length}"
|
|
|
|
!macroend
|
|
|
|
|
|
|
|
# Part of the StrContains function for Strings
|
|
|
|
!define StrContains "!insertmacro StrContains"
|
|
|
|
!macro StrContains OUT NEEDLE HAYSTACK
|
|
|
|
Push "${HAYSTACK}"
|
|
|
|
Push "${NEEDLE}"
|
|
|
|
Call StrContains
|
|
|
|
Pop "${OUT}"
|
2017-09-20 15:38:54 -06:00
|
|
|
!macroend
|
|
|
|
|
2013-01-04 08:49:05 -07:00
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
###############################################################################
|
|
|
|
# Configure Pages, Ordering, and Configuration
|
|
|
|
###############################################################################
|
2013-01-04 08:49:05 -07:00
|
|
|
!define MUI_ABORTWARNING
|
|
|
|
!define MUI_ICON "salt.ico"
|
|
|
|
!define MUI_UNICON "salt.ico"
|
2015-06-09 09:34:41 -06:00
|
|
|
!define MUI_WELCOMEFINISHPAGE_BITMAP "panel.bmp"
|
2019-01-31 15:53:31 -07:00
|
|
|
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "panel.bmp"
|
|
|
|
|
2019-02-13 01:12:52 -07:00
|
|
|
|
2017-09-12 12:49:20 -06:00
|
|
|
# Welcome page
|
2013-01-04 08:49:05 -07:00
|
|
|
!insertmacro MUI_PAGE_WELCOME
|
2016-08-08 23:23:04 +00:00
|
|
|
|
2017-09-12 12:49:20 -06:00
|
|
|
# License page
|
2013-01-04 08:49:05 -07:00
|
|
|
!insertmacro MUI_PAGE_LICENSE "LICENSE.txt"
|
2016-08-08 23:23:04 +00:00
|
|
|
|
2021-06-08 10:32:12 -06:00
|
|
|
# Install location page
|
|
|
|
!define MUI_PAGE_CUSTOMFUNCTION_SHOW pageCheckExistingInstall
|
|
|
|
!insertmacro MUI_PAGE_DIRECTORY
|
|
|
|
|
2017-09-12 12:49:20 -06:00
|
|
|
# Configure Minion page
|
2016-08-04 23:39:29 +00:00
|
|
|
Page custom pageMinionConfig pageMinionConfig_Leave
|
2016-08-08 23:23:04 +00:00
|
|
|
|
2017-09-12 12:49:20 -06:00
|
|
|
# Instfiles page
|
2013-01-04 08:49:05 -07:00
|
|
|
!insertmacro MUI_PAGE_INSTFILES
|
2015-05-12 18:04:42 +00:00
|
|
|
|
2017-09-12 12:49:20 -06:00
|
|
|
# Finish page (Customized)
|
2016-08-08 23:23:04 +00:00
|
|
|
!define MUI_PAGE_CUSTOMFUNCTION_SHOW pageFinish_Show
|
|
|
|
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE pageFinish_Leave
|
2013-01-04 08:49:05 -07:00
|
|
|
!insertmacro MUI_PAGE_FINISH
|
|
|
|
|
2017-09-12 12:49:20 -06:00
|
|
|
# Uninstaller pages
|
2013-01-04 08:49:05 -07:00
|
|
|
!insertmacro MUI_UNPAGE_INSTFILES
|
|
|
|
|
2017-09-12 12:49:20 -06:00
|
|
|
# Language files
|
2013-01-04 08:49:05 -07:00
|
|
|
!insertmacro MUI_LANGUAGE "English"
|
|
|
|
|
2015-03-28 00:14:01 +00:00
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
###############################################################################
|
|
|
|
# Custom Dialog Box Variables
|
|
|
|
###############################################################################
|
|
|
|
Var Dialog
|
|
|
|
Var Label
|
2021-06-25 16:08:16 -06:00
|
|
|
Var MinionStart_ChkBox
|
|
|
|
Var MinionStartDelayed_ChkBox
|
|
|
|
Var MasterHost_Cfg
|
|
|
|
Var MasterHost_TxtBox
|
2016-08-08 23:23:04 +00:00
|
|
|
Var MasterHost
|
2021-06-25 16:08:16 -06:00
|
|
|
Var MinionName_Cfg
|
|
|
|
Var MinionName_TxtBox
|
2016-08-08 23:23:04 +00:00
|
|
|
Var MinionName
|
2017-09-20 15:38:54 -06:00
|
|
|
Var ExistingConfigFound
|
2021-06-25 16:08:16 -06:00
|
|
|
Var ConfigType_DropList
|
2017-12-19 10:28:52 -07:00
|
|
|
Var ConfigType
|
2021-06-25 16:08:16 -06:00
|
|
|
Var CustomConfig_TxtBox
|
|
|
|
Var CustomConfig_Btn
|
2017-12-19 10:28:52 -07:00
|
|
|
Var CustomConfig
|
2021-06-25 16:08:16 -06:00
|
|
|
Var CustomConfigWarning_Lbl
|
|
|
|
Var ExistingConfigWarning_Lbl
|
|
|
|
Var DefaultConfigWarning_Lbl
|
|
|
|
Var MoveExistingConfig_ChkBox
|
|
|
|
Var MoveExistingConfig
|
2016-08-08 23:23:04 +00:00
|
|
|
Var StartMinion
|
2016-10-04 14:18:42 -06:00
|
|
|
Var StartMinionDelayed
|
2017-03-10 21:52:38 +00:00
|
|
|
Var DeleteInstallDir
|
2021-06-08 10:32:12 -06:00
|
|
|
Var DeleteRootDir
|
2017-12-19 10:28:52 -07:00
|
|
|
Var ConfigWriteMinion
|
|
|
|
Var ConfigWriteMaster
|
2021-06-08 10:32:12 -06:00
|
|
|
# For new method installation
|
2021-09-24 11:19:06 -06:00
|
|
|
Var RegInstDir
|
2021-09-24 15:55:24 -06:00
|
|
|
Var RegRootDir
|
2021-06-08 10:32:12 -06:00
|
|
|
Var RootDir
|
|
|
|
Var SysDrive
|
|
|
|
Var ExistingInstallation
|
|
|
|
Var CustomLocation
|
|
|
|
|
|
|
|
|
|
|
|
###############################################################################
|
|
|
|
# Directory Picker Dialog Box
|
|
|
|
###############################################################################
|
|
|
|
Function pageCheckExistingInstall
|
|
|
|
# If this is an Existing Installation we want to disable the directory
|
|
|
|
# picker functionality
|
|
|
|
# https://nsis-dev.github.io/NSIS-Forums/html/t-166727.html
|
|
|
|
# Use the winspy tool (https://sourceforge.net/projects/winspyex/) to get
|
|
|
|
# the Control ID for the items you want to disable
|
|
|
|
# The Control ID is in the Details tab
|
|
|
|
# It is a Hex value that needs to be converted to an integer
|
|
|
|
${If} $ExistingInstallation == 1
|
|
|
|
# 32770 is Class name used by all NSIS dialog boxes
|
|
|
|
FindWindow $R0 "#32770" "" $HWNDPARENT
|
|
|
|
# 1019 is the Destination Folder text field (0x3FB)
|
|
|
|
GetDlgItem $R1 $R0 1019
|
|
|
|
EnableWindow $R1 0
|
|
|
|
# 1001 is the Browse button (0x3E9)
|
|
|
|
GetDlgItem $R1 $R0 1001
|
|
|
|
EnableWindow $R1 0
|
|
|
|
# Disabling the Location Picker causes the buttons to behave incorrectly
|
|
|
|
# Esc and Enter don't work. Nor can you use Alt+N and Alt+B. Setting
|
|
|
|
# the focus to the Next button seems to fix this
|
|
|
|
# Set focus on Next button (0x1)
|
2022-10-18 16:57:41 -06:00
|
|
|
# Next=1, cancel=2, back=3
|
2021-06-08 10:32:12 -06:00
|
|
|
GetDlgItem $R1 $HWNDPARENT 1
|
|
|
|
SendMessage $HWNDPARENT ${WM_NEXTDLGCTL} $R1 1
|
|
|
|
${EndIf}
|
|
|
|
FunctionEnd
|
2013-01-04 08:49:05 -07:00
|
|
|
|
2015-07-08 22:23:45 +00:00
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
###############################################################################
|
|
|
|
# Minion Settings Dialog Box
|
|
|
|
###############################################################################
|
|
|
|
Function pageMinionConfig
|
2015-10-27 15:43:22 -06:00
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
# Set Page Title and Description
|
|
|
|
!insertmacro MUI_HEADER_TEXT "Minion Settings" "Set the Minion Master and ID"
|
|
|
|
nsDialogs::Create 1018
|
|
|
|
Pop $Dialog
|
2015-10-27 15:43:22 -06:00
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
${If} $Dialog == error
|
|
|
|
Abort
|
2015-10-27 15:43:22 -06:00
|
|
|
${EndIf}
|
|
|
|
|
2017-09-20 15:38:54 -06:00
|
|
|
# Master IP or Hostname Dialog Control
|
2021-06-25 16:08:16 -06:00
|
|
|
${NSD_CreateLabel} 0 0 100% 9u "&Master IP or Hostname:"
|
2016-08-08 23:23:04 +00:00
|
|
|
Pop $Label
|
2015-10-27 15:43:22 -06:00
|
|
|
|
2021-06-25 16:08:16 -06:00
|
|
|
${NSD_CreateText} 0 10u 100% 12u $MasterHost
|
|
|
|
Pop $MasterHost_TxtBox
|
2015-10-27 15:43:22 -06:00
|
|
|
|
2017-09-20 15:38:54 -06:00
|
|
|
# Minion ID Dialog Control
|
2021-06-25 16:08:16 -06:00
|
|
|
${NSD_CreateLabel} 0 30u 100% 9u "Minion &Name:"
|
2016-08-08 23:23:04 +00:00
|
|
|
Pop $Label
|
2015-10-27 15:43:22 -06:00
|
|
|
|
2021-06-25 16:08:16 -06:00
|
|
|
${NSD_CreateText} 0 40u 100% 12u $MinionName
|
|
|
|
Pop $MinionName_TxtBox
|
2016-08-08 23:23:04 +00:00
|
|
|
|
2017-12-19 10:28:52 -07:00
|
|
|
# Config Drop List
|
2021-06-25 16:08:16 -06:00
|
|
|
${NSD_CreateDropList} 0 60u 25% 36u ""
|
|
|
|
Pop $ConfigType_DropList
|
|
|
|
${NSD_CB_AddString} $ConfigType_DropList "Default Config"
|
|
|
|
${NSD_CB_AddString} $ConfigType_DropList "Custom Config"
|
|
|
|
${NSD_OnChange} $ConfigType_DropList pageMinionConfig_OnChange
|
2017-09-20 15:38:54 -06:00
|
|
|
|
|
|
|
# Add Existing Config Warning Label
|
2022-10-18 16:57:41 -06:00
|
|
|
${NSD_CreateLabel} 0 75u 100% 50u \
|
|
|
|
"The values above are taken from an existing configuration found in \
|
|
|
|
`$RootDir\conf\minion`.$\n\
|
2021-06-08 10:32:12 -06:00
|
|
|
$\n\
|
2017-09-20 15:38:54 -06:00
|
|
|
Clicking `Install` will leave the existing config unchanged."
|
2021-06-25 16:08:16 -06:00
|
|
|
Pop $ExistingConfigWarning_Lbl
|
2017-09-20 15:38:54 -06:00
|
|
|
CreateFont $0 "Arial" 10 500 /ITALIC
|
2021-06-25 16:08:16 -06:00
|
|
|
SendMessage $ExistingConfigWarning_Lbl ${WM_SETFONT} $0 1
|
|
|
|
SetCtlColors $ExistingConfigWarning_Lbl 0xBB0000 transparent
|
|
|
|
|
|
|
|
# Add Checkbox to move root_dir
|
|
|
|
${NSD_CreateCheckBox} 0 125u 100% 10u \
|
2022-10-18 16:57:41 -06:00
|
|
|
"Move &existing root directory (C:\salt) to %ProgramData%\Salt."
|
2021-06-25 16:08:16 -06:00
|
|
|
Pop $MoveExistingConfig_ChkBox
|
|
|
|
CreateFont $0 "Arial" 10 500
|
|
|
|
SendMessage $MoveExistingConfig_ChkBox ${WM_SETFONT} $0 1
|
|
|
|
${If} $MoveExistingConfig == 1
|
|
|
|
${NSD_Check} $MoveExistingConfig_ChkBox
|
|
|
|
${EndIf}
|
2017-09-20 15:38:54 -06:00
|
|
|
|
|
|
|
# Add Default Config Warning Label
|
2021-06-25 16:08:16 -06:00
|
|
|
${NSD_CreateLabel} 0 75u 100% 60u "Clicking `Install` will backup the \
|
2022-10-18 16:57:41 -06:00
|
|
|
existing minion config file and minion.d directories. The values \
|
2021-06-25 16:08:16 -06:00
|
|
|
above will be used in the new default config.$\n\
|
2022-10-18 16:57:41 -06:00
|
|
|
$\n\
|
|
|
|
NOTE: If Master IP is set to `salt` and Minion Name is set to \
|
|
|
|
`hostname` no changes will be made."
|
2021-06-25 16:08:16 -06:00
|
|
|
Pop $DefaultConfigWarning_Lbl
|
2017-09-20 15:38:54 -06:00
|
|
|
CreateFont $0 "Arial" 10 500 /ITALIC
|
2021-06-25 16:08:16 -06:00
|
|
|
SendMessage $DefaultConfigWarning_Lbl ${WM_SETFONT} $0 1
|
|
|
|
SetCtlColors $DefaultConfigWarning_Lbl 0xBB0000 transparent
|
2017-09-20 15:38:54 -06:00
|
|
|
|
2017-12-19 10:28:52 -07:00
|
|
|
# Add Custom Config File Selector and Warning Label
|
2021-06-25 16:08:16 -06:00
|
|
|
${NSD_CreateText} 26% 60u 64% 12u $CustomConfig
|
|
|
|
Pop $CustomConfig_TxtBox
|
|
|
|
${NSD_CreateButton} 91% 60u 9% 12u "..."
|
|
|
|
Pop $CustomConfig_Btn
|
|
|
|
${NSD_OnClick} $CustomConfig_Btn pageCustomConfigBtn_OnClick
|
2017-12-19 10:28:52 -07:00
|
|
|
|
2017-09-20 15:38:54 -06:00
|
|
|
${If} $ExistingConfigFound == 0
|
2022-10-18 16:57:41 -06:00
|
|
|
${NSD_CreateLabel} 0 75u 100% 60u \
|
|
|
|
"Values entered above will be used in the custom config.$\n\
|
2021-06-25 16:08:16 -06:00
|
|
|
$\n\
|
2017-12-19 10:28:52 -07:00
|
|
|
NOTE: If Master IP is set to `salt` and Minion Name is set to \
|
|
|
|
`hostname` no changes will be made."
|
|
|
|
${Else}
|
2022-10-18 16:57:41 -06:00
|
|
|
${NSD_CreateLabel} 0 75u 100% 60u \
|
|
|
|
"Clicking `Install` will backup the the existing minion config \
|
|
|
|
file and minion.d directories. The values above will be used in \
|
|
|
|
the custom config.$\n\
|
2021-06-25 16:08:16 -06:00
|
|
|
$\n\
|
2017-12-19 10:28:52 -07:00
|
|
|
NOTE: If Master IP is set to `salt` and Minion Name is set to \
|
|
|
|
`hostname` no changes will be made."
|
|
|
|
${Endif}
|
2021-06-25 16:08:16 -06:00
|
|
|
Pop $CustomConfigWarning_Lbl
|
2017-12-19 10:28:52 -07:00
|
|
|
CreateFont $0 "Arial" 10 500 /ITALIC
|
2021-06-25 16:08:16 -06:00
|
|
|
SendMessage $CustomConfigWarning_Lbl ${WM_SETFONT} $0 1
|
|
|
|
SetCtlColors $CustomConfigWarning_Lbl 0xBB0000 transparent
|
2017-12-19 10:28:52 -07:00
|
|
|
|
|
|
|
# If existing config found, add the Existing Config option to the Drop List
|
|
|
|
# If not, hide the Default Warning
|
|
|
|
${If} $ExistingConfigFound == 1
|
2021-06-25 16:08:16 -06:00
|
|
|
${NSD_CB_AddString} $ConfigType_DropList "Existing Config"
|
2017-12-19 10:28:52 -07:00
|
|
|
${Else}
|
2021-06-25 16:08:16 -06:00
|
|
|
ShowWindow $DefaultConfigWarning_Lbl ${SW_HIDE}
|
2017-09-20 15:38:54 -06:00
|
|
|
${Endif}
|
|
|
|
|
2021-06-25 16:08:16 -06:00
|
|
|
${NSD_CB_SelectString} $ConfigType_DropList $ConfigType
|
|
|
|
${NSD_SetText} $CustomConfig_TxtBox $CustomConfig
|
2017-09-20 15:38:54 -06:00
|
|
|
|
2017-12-19 10:28:52 -07:00
|
|
|
Call pageMinionConfig_OnChange
|
2017-09-20 15:38:54 -06:00
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
nsDialogs::Show
|
|
|
|
|
|
|
|
FunctionEnd
|
|
|
|
|
|
|
|
|
2017-12-19 10:28:52 -07:00
|
|
|
Function pageMinionConfig_OnChange
|
2017-09-20 15:38:54 -06:00
|
|
|
|
|
|
|
# You have to pop the top handle to keep the stack clean
|
|
|
|
Pop $R0
|
|
|
|
|
|
|
|
# Assign the current checkbox state to the variable
|
2021-06-25 16:08:16 -06:00
|
|
|
${NSD_GetText} $ConfigType_DropList $ConfigType
|
2017-12-19 10:28:52 -07:00
|
|
|
|
|
|
|
# Update Dialog
|
2021-06-25 16:08:16 -06:00
|
|
|
${Switch} $ConfigType
|
2017-12-19 10:28:52 -07:00
|
|
|
${Case} "Existing Config"
|
|
|
|
# Enable Master/Minion and set values
|
2021-06-25 16:08:16 -06:00
|
|
|
EnableWindow $MasterHost_TxtBox 0
|
|
|
|
EnableWindow $MinionName_TxtBox 0
|
|
|
|
${NSD_SetText} $MasterHost_TxtBox $MasterHost_Cfg
|
|
|
|
${NSD_SetText} $MinionName_TxtBox $MinionName_Cfg
|
2017-12-19 10:28:52 -07:00
|
|
|
# Hide Custom File Picker
|
2021-06-25 16:08:16 -06:00
|
|
|
ShowWindow $CustomConfig_TxtBox ${SW_HIDE}
|
|
|
|
ShowWindow $CustomConfig_Btn ${SW_HIDE}
|
2017-12-19 10:28:52 -07:00
|
|
|
# Hide Warnings
|
2021-06-25 16:08:16 -06:00
|
|
|
ShowWindow $DefaultConfigWarning_Lbl ${SW_HIDE}
|
|
|
|
ShowWindow $CustomConfigWarning_Lbl ${SW_HIDE}
|
2017-12-19 10:28:52 -07:00
|
|
|
# Show Existing Warning
|
2021-06-25 16:08:16 -06:00
|
|
|
ShowWindow $ExistingConfigWarning_Lbl ${SW_SHOW}
|
|
|
|
${If} $RootDir == "C:\salt"
|
|
|
|
ShowWindow $MoveExistingConfig_ChkBox ${SW_SHOW}
|
|
|
|
${Else}
|
|
|
|
ShowWindow $MoveExistingConfig_ChkBox ${SW_HIDE}
|
|
|
|
${EndIf}
|
2017-12-19 10:28:52 -07:00
|
|
|
${Break}
|
|
|
|
${Case} "Custom Config"
|
|
|
|
# Enable Master/Minion and set values
|
2021-06-25 16:08:16 -06:00
|
|
|
EnableWindow $MasterHost_TxtBox 1
|
|
|
|
EnableWindow $MinionName_TxtBox 1
|
|
|
|
${NSD_SetText} $MasterHost_TxtBox $MasterHost
|
|
|
|
${NSD_SetText} $MinionName_TxtBox $MinionName
|
2017-12-19 10:28:52 -07:00
|
|
|
# Show Custom File Picker
|
2021-06-25 16:08:16 -06:00
|
|
|
ShowWindow $CustomConfig_TxtBox ${SW_SHOW}
|
|
|
|
ShowWindow $CustomConfig_Btn ${SW_SHOW}
|
2017-12-19 10:28:52 -07:00
|
|
|
# Hide Warnings
|
2021-06-25 16:08:16 -06:00
|
|
|
ShowWindow $DefaultConfigWarning_Lbl ${SW_HIDE}
|
|
|
|
ShowWindow $ExistingConfigWarning_Lbl ${SW_HIDE}
|
|
|
|
ShowWindow $MoveExistingConfig_ChkBox ${SW_HIDE}
|
2017-12-19 10:28:52 -07:00
|
|
|
# Show Custom Warning
|
2021-06-25 16:08:16 -06:00
|
|
|
ShowWindow $CustomConfigWarning_Lbl ${SW_SHOW}
|
2017-12-19 10:28:52 -07:00
|
|
|
${Break}
|
|
|
|
${Case} "Default Config"
|
|
|
|
# Enable Master/Minion and set values
|
2021-06-25 16:08:16 -06:00
|
|
|
EnableWindow $MasterHost_TxtBox 1
|
|
|
|
EnableWindow $MinionName_TxtBox 1
|
|
|
|
${NSD_SetText} $MasterHost_TxtBox $MasterHost
|
|
|
|
${NSD_SetText} $MinionName_TxtBox $MinionName
|
2017-12-19 10:28:52 -07:00
|
|
|
# Hide Custom File Picker
|
2021-06-25 16:08:16 -06:00
|
|
|
ShowWindow $CustomConfig_TxtBox ${SW_HIDE}
|
|
|
|
ShowWindow $CustomConfig_Btn ${SW_HIDE}
|
2017-12-19 10:28:52 -07:00
|
|
|
# Hide Warnings
|
2021-06-25 16:08:16 -06:00
|
|
|
ShowWindow $ExistingConfigWarning_Lbl ${SW_HIDE}
|
|
|
|
ShowWindow $MoveExistingConfig_ChkBox ${SW_HIDE}
|
|
|
|
ShowWindow $CustomConfigWarning_Lbl ${SW_HIDE}
|
2017-12-19 10:28:52 -07:00
|
|
|
# Show Default Warning, if there is an existing config
|
|
|
|
${If} $ExistingConfigFound == 1
|
2021-06-25 16:08:16 -06:00
|
|
|
ShowWindow $DefaultConfigWarning_Lbl ${SW_SHOW}
|
2017-12-19 10:28:52 -07:00
|
|
|
${Endif}
|
|
|
|
${Break}
|
|
|
|
${EndSwitch}
|
|
|
|
|
|
|
|
FunctionEnd
|
|
|
|
|
2017-12-20 19:14:47 -07:00
|
|
|
# File Picker Definitions
|
|
|
|
!define OFN_FILEMUSTEXIST 0x00001000
|
|
|
|
!define OFN_DONTADDTOREC 0x02000000
|
|
|
|
!define OPENFILENAME_SIZE_VERSION_400 76
|
|
|
|
!define OPENFILENAME 'i,i,i,i,i,i,i,i,i,i,i,i,i,i,&i2,&i2,i,i,i,i'
|
2017-12-19 10:28:52 -07:00
|
|
|
Function pageCustomConfigBtn_OnClick
|
|
|
|
|
|
|
|
Pop $0
|
|
|
|
System::Call '*(&t${NSIS_MAX_STRLEN})i.s' # Allocate OPENFILENAME.lpstrFile buffer
|
|
|
|
System::Call '*(${OPENFILENAME})i.r0' # Allocate OPENFILENAME struct
|
|
|
|
System::Call '*$0(${OPENFILENAME})(${OPENFILENAME_SIZE_VERSION_400}, \
|
|
|
|
$hwndparent, , , , , , sr1, ${NSIS_MAX_STRLEN} , , , , \
|
|
|
|
t"Select Custom Config File", \
|
|
|
|
${OFN_FILEMUSTEXIST} | ${OFN_DONTADDTOREC})'
|
|
|
|
|
|
|
|
# Populate file name field
|
2021-06-25 16:08:16 -06:00
|
|
|
${NSD_GetText} $CustomConfig_TxtBox $2
|
2017-12-19 10:28:52 -07:00
|
|
|
System::Call "*$1(&t${NSIS_MAX_STRLEN}r2)" ; Set lpstrFile to the old path (if any)
|
|
|
|
|
|
|
|
# Open the dialog
|
|
|
|
System::Call 'COMDLG32::GetOpenFileName(ir0)i.r2'
|
|
|
|
|
|
|
|
# Get file name field
|
|
|
|
${If} $2 <> 0
|
|
|
|
System::Call "*$1(&t${NSIS_MAX_STRLEN}.r2)"
|
2021-06-25 16:08:16 -06:00
|
|
|
${NSD_SetText} $CustomConfig_TxtBox $2
|
2017-09-20 15:38:54 -06:00
|
|
|
${EndIf}
|
|
|
|
|
2017-12-19 10:28:52 -07:00
|
|
|
# Free resources
|
|
|
|
System::Free $1
|
|
|
|
System::Free $0
|
|
|
|
|
2017-09-20 15:38:54 -06:00
|
|
|
FunctionEnd
|
|
|
|
|
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
Function pageMinionConfig_Leave
|
|
|
|
|
2017-12-19 10:28:52 -07:00
|
|
|
# Save the State
|
2021-06-25 16:08:16 -06:00
|
|
|
${NSD_GetText} $MasterHost_TxtBox $MasterHost
|
|
|
|
${NSD_GetText} $MinionName_TxtBox $MinionName
|
|
|
|
${NSD_GetText} $ConfigType_DropList $ConfigType
|
|
|
|
${NSD_GetText} $CustomConfig_TxtBox $CustomConfig
|
|
|
|
${NSD_GetState} $MoveExistingConfig_ChkBox $MoveExistingConfig
|
2017-12-19 10:28:52 -07:00
|
|
|
|
|
|
|
# Abort if config file not found
|
2021-06-25 16:08:16 -06:00
|
|
|
${If} $ConfigType == "Custom Config"
|
2022-10-18 16:57:41 -06:00
|
|
|
IfFileExists "$CustomConfig" done 0
|
|
|
|
MessageBox MB_OK|MB_ICONEXCLAMATION \
|
|
|
|
"File not found: $CustomConfig" \
|
|
|
|
/SD IDOK
|
2017-12-19 10:28:52 -07:00
|
|
|
Abort
|
|
|
|
${EndIf}
|
2017-09-20 15:38:54 -06:00
|
|
|
|
2021-06-25 16:08:16 -06:00
|
|
|
${If} $MoveExistingConfig == 1
|
|
|
|
|
2022-10-18 16:57:41 -06:00
|
|
|
# This makes the $APPDATA variable point to the ProgramData folder
|
|
|
|
# instead of the current user's roaming AppData folder
|
2021-09-24 11:19:06 -06:00
|
|
|
SetShellVarContext all
|
|
|
|
|
2021-06-25 16:08:16 -06:00
|
|
|
# Get directory status
|
2022-10-18 16:57:41 -06:00
|
|
|
# We don't want to overwrite data in the new location, so it needs to
|
|
|
|
# either be empty or not found. Otherwise, warn and abort
|
2021-06-25 16:08:16 -06:00
|
|
|
${DirState} "$APPDATA\Salt Project\Salt" $R0 # 0=Empty, 1=full, -1=Not Found
|
2022-10-18 16:57:41 -06:00
|
|
|
StrCmp $R0 "1" 0 done # Move files if directory empty or missing
|
2021-06-25 16:08:16 -06:00
|
|
|
MessageBox MB_OKCANCEL \
|
|
|
|
"The $APPDATA\Salt Project\Salt directory is not empty.$\n\
|
|
|
|
These files will need to be moved manually." \
|
|
|
|
/SD IDOK IDCANCEL cancel
|
2022-10-18 16:57:41 -06:00
|
|
|
# OK: We're continuing without moving existing config
|
2021-06-25 16:08:16 -06:00
|
|
|
StrCpy $MoveExistingConfig 0
|
2022-10-18 16:57:41 -06:00
|
|
|
Goto done
|
2021-06-25 16:08:16 -06:00
|
|
|
|
|
|
|
cancel:
|
2022-10-18 16:57:41 -06:00
|
|
|
# Cancel: We're unchecking the checkbox and returning the user to
|
|
|
|
# the dialog box
|
|
|
|
# Abort just returns the user back to the dialog box
|
2021-06-25 16:08:16 -06:00
|
|
|
${NSD_UNCHECK} $MoveExistingConfig_ChkBox
|
|
|
|
Abort
|
|
|
|
|
|
|
|
${EndIf}
|
|
|
|
|
2022-10-18 16:57:41 -06:00
|
|
|
done:
|
2016-08-08 23:23:04 +00:00
|
|
|
|
|
|
|
FunctionEnd
|
|
|
|
|
|
|
|
|
|
|
|
###############################################################################
|
|
|
|
# Custom Finish Page
|
|
|
|
###############################################################################
|
|
|
|
Function pageFinish_Show
|
|
|
|
|
2016-08-09 00:06:23 +00:00
|
|
|
# Imports so the checkboxes will show up
|
2016-08-08 23:23:04 +00:00
|
|
|
!define SWP_NOSIZE 0x0001
|
|
|
|
!define SWP_NOMOVE 0x0002
|
|
|
|
!define HWND_TOP 0x0000
|
|
|
|
|
2016-08-09 00:06:23 +00:00
|
|
|
# Create Start Minion Checkbox
|
2016-08-08 23:23:04 +00:00
|
|
|
${NSD_CreateCheckbox} 120u 90u 100% 12u "&Start salt-minion"
|
2021-06-25 16:08:16 -06:00
|
|
|
Pop $MinionStart_ChkBox
|
|
|
|
SetCtlColors $MinionStart_ChkBox "" "ffffff"
|
2016-08-09 00:06:23 +00:00
|
|
|
# This command required to bring the checkbox to the front
|
2021-06-25 16:08:16 -06:00
|
|
|
System::Call "User32::SetWindowPos(i, i, i, i, i, i, i) b ($MinionStart_ChkBox, ${HWND_TOP}, 0, 0, 0, 0, ${SWP_NOSIZE}|${SWP_NOMOVE})"
|
2016-08-08 23:23:04 +00:00
|
|
|
|
2016-10-04 16:14:13 -06:00
|
|
|
# Create Start Minion Delayed ComboBox
|
2017-03-31 15:12:41 -06:00
|
|
|
${NSD_CreateCheckbox} 130u 102u 100% 12u "&Delayed Start"
|
2021-06-25 16:08:16 -06:00
|
|
|
Pop $MinionStartDelayed_ChkBox
|
|
|
|
SetCtlColors $MinionStartDelayed_ChkBox "" "ffffff"
|
2016-10-04 14:18:42 -06:00
|
|
|
# This command required to bring the checkbox to the front
|
2021-06-25 16:08:16 -06:00
|
|
|
System::Call "User32::SetWindowPos(i, i, i, i, i, i, i) b ($MinionStartDelayed_ChkBox, ${HWND_TOP}, 0, 0, 0, 0, ${SWP_NOSIZE}|${SWP_NOMOVE})"
|
2016-10-04 14:18:42 -06:00
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
# Load current settings for Minion
|
2016-08-23 22:37:17 +00:00
|
|
|
${If} $StartMinion == 1
|
2021-06-25 16:08:16 -06:00
|
|
|
${NSD_Check} $MinionStart_ChkBox
|
2015-10-27 15:43:22 -06:00
|
|
|
${EndIf}
|
|
|
|
|
2016-10-04 14:18:42 -06:00
|
|
|
# Load current settings for Minion Delayed
|
|
|
|
${If} $StartMinionDelayed == 1
|
2021-06-25 16:08:16 -06:00
|
|
|
${NSD_Check} $MinionStartDelayed_ChkBox
|
2016-10-04 14:18:42 -06:00
|
|
|
${EndIf}
|
|
|
|
|
2015-10-27 15:43:22 -06:00
|
|
|
FunctionEnd
|
|
|
|
|
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
Function pageFinish_Leave
|
2013-01-04 08:49:05 -07:00
|
|
|
|
2016-08-09 00:06:23 +00:00
|
|
|
# Assign the current checkbox states
|
2021-06-25 16:08:16 -06:00
|
|
|
${NSD_GetState} $MinionStart_ChkBox $StartMinion
|
|
|
|
${NSD_GetState} $MinionStartDelayed_ChkBox $StartMinionDelayed
|
2013-01-04 08:49:05 -07:00
|
|
|
|
|
|
|
FunctionEnd
|
|
|
|
|
2015-07-08 22:23:45 +00:00
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
###############################################################################
|
|
|
|
# Installation Settings
|
|
|
|
###############################################################################
|
2022-10-18 16:57:41 -06:00
|
|
|
Name "${PRODUCT_NAME} ${PRODUCT_VERSION} (${BUILD_TYPE})"
|
2017-09-20 15:38:54 -06:00
|
|
|
OutFile "${OutFile}"
|
2021-06-08 10:32:12 -06:00
|
|
|
InstallDir "C:\Program Files\Salt Project\Salt"
|
2013-01-04 08:49:05 -07:00
|
|
|
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
|
|
|
|
ShowInstDetails show
|
|
|
|
ShowUnInstDetails show
|
|
|
|
|
|
|
|
Section "MainSection" SEC01
|
|
|
|
|
2022-10-18 16:57:41 -06:00
|
|
|
${If} $MoveExistingConfig == 1
|
|
|
|
# This makes the $APPDATA variable point to the ProgramData folder
|
|
|
|
# instead of the current user's roaming AppData folder
|
|
|
|
SetShellVarContext all
|
|
|
|
|
|
|
|
detailPrint "Moving existing config to $APPDATA\Salt Project\Salt"
|
|
|
|
# Make sure the target directory exists
|
|
|
|
nsExec::Exec "md $APPDATA\Salt Project\Salt"
|
|
|
|
# Take ownership of the C:\salt directory
|
|
|
|
detailPrint "Taking ownership: $RootDir"
|
|
|
|
nsExec::Exec "takeown /F $RootDir /R"
|
|
|
|
# Move the C:\salt directory to the new location
|
|
|
|
StrCpy $switch_overwrite 0
|
|
|
|
detailPrint "Moving $RootDir to $APPDATA"
|
|
|
|
IfFileExists "$RootDir\conf" 0 +2
|
|
|
|
!insertmacro MoveFolder "$RootDir\conf" "$APPDATA\Salt Project\Salt\conf" "*.*"
|
|
|
|
IfFileExists "$RootDir\srv" 0 +2
|
|
|
|
!insertmacro MoveFolder "$RootDir\srv" "$APPDATA\Salt Project\Salt\srv" "*.*"
|
|
|
|
IfFileExists "$RootDir\var" 0 +2
|
|
|
|
!insertmacro MoveFolder "$RootDir\var" "$APPDATA\Salt Project\Salt\var" "*.*"
|
|
|
|
# Make RootDir the new location
|
|
|
|
StrCpy $RootDir "$APPDATA\Salt Project\Salt"
|
|
|
|
${EndIf}
|
|
|
|
|
|
|
|
${If} $ConfigType != "Existing Config"
|
|
|
|
Call BackupExistingConfig
|
|
|
|
${EndIf}
|
|
|
|
|
|
|
|
|
|
|
|
# Install files to the Installation Directory
|
2016-08-08 23:23:04 +00:00
|
|
|
SetOutPath "$INSTDIR\"
|
|
|
|
SetOverwrite off
|
2022-12-22 18:18:28 -07:00
|
|
|
File /r "..\..\buildenv\"
|
2022-10-18 16:57:41 -06:00
|
|
|
|
|
|
|
# Set up Root Directory
|
2021-07-01 17:02:00 -06:00
|
|
|
CreateDirectory "$RootDir\conf\pki\minion"
|
|
|
|
CreateDirectory "$RootDir\conf\minion.d"
|
|
|
|
CreateDirectory "$RootDir\var\cache\salt\minion\extmods\grains"
|
|
|
|
CreateDirectory "$RootDir\var\cache\salt\minion\proc"
|
2021-10-28 09:43:49 +00:00
|
|
|
CreateDirectory "$RootDir\var\log\salt"
|
2021-07-01 17:02:00 -06:00
|
|
|
CreateDirectory "$RootDir\var\run"
|
2021-06-08 10:32:12 -06:00
|
|
|
nsExec::Exec 'icacls $RootDir /inheritance:r /grant:r "*S-1-5-32-544":(OI)(CI)F /grant:r "*S-1-5-18":(OI)(CI)F'
|
2013-01-04 08:49:05 -07:00
|
|
|
|
|
|
|
SectionEnd
|
|
|
|
|
2015-07-08 22:23:45 +00:00
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
Function .onInit
|
2022-10-18 16:57:41 -06:00
|
|
|
# This function gets executed before any other. This is where we will
|
|
|
|
# detect existing installations and config to be used by the installer
|
|
|
|
|
|
|
|
# Make sure we do not allow 32-bit Salt on 64-bit systems
|
|
|
|
# This is the system the installer is running on
|
|
|
|
${If} ${RunningX64}
|
|
|
|
# This is the Python architecture the installer was built with
|
|
|
|
${If} ${CPUARCH} == "x86"
|
|
|
|
MessageBox MB_OK|MB_ICONEXCLAMATION \
|
|
|
|
"Detected 64-bit Operating system.$\n$\n\
|
|
|
|
Please install the 64-bit version of Salt on this operating system." \
|
|
|
|
/SD IDOK
|
|
|
|
Abort
|
|
|
|
${EndIf}
|
|
|
|
${Else}
|
|
|
|
# This is the Python architecture the installer was built with
|
|
|
|
${If} ${CPUARCH} == "AMD64"
|
|
|
|
MessageBox MB_OK|MB_ICONEXCLAMATION \
|
|
|
|
"Detected 32-bit Operating system.$\n$\n\
|
|
|
|
Please install the 32-bit version of Salt on this operating system." \
|
|
|
|
/SD IDOK
|
|
|
|
Abort
|
|
|
|
${EndIf}
|
|
|
|
${EndIf}
|
2013-01-04 08:49:05 -07:00
|
|
|
|
2021-06-08 10:32:12 -06:00
|
|
|
Call parseInstallerCommandLineSwitches
|
2015-10-27 15:43:22 -06:00
|
|
|
|
2020-05-04 14:24:45 +02:00
|
|
|
# Uninstall msi-installed salt
|
2021-06-25 16:08:16 -06:00
|
|
|
# Source: https://nsis-dev.github.io/NSIS-Forums/html/t-303468.html
|
2022-10-18 16:57:41 -06:00
|
|
|
# TODO: Add a message box here confirming the uninstall of the MSI
|
|
|
|
!define upgradecode {FC6FB3A2-65DE-41A9-AD91-D10A402BD641} # Salt upgrade code
|
2020-05-04 14:24:45 +02:00
|
|
|
StrCpy $0 0
|
|
|
|
loop:
|
|
|
|
System::Call 'MSI::MsiEnumRelatedProducts(t "${upgradecode}",i0,i r0,t.r1)i.r2'
|
|
|
|
${If} $2 = 0
|
2022-10-18 16:57:41 -06:00
|
|
|
# Now $1 contains the product code
|
2020-05-04 14:24:45 +02:00
|
|
|
DetailPrint product:$1
|
|
|
|
push $R0
|
|
|
|
StrCpy $R0 $1
|
|
|
|
Call UninstallMSI
|
|
|
|
pop $R0
|
|
|
|
IntOp $0 $0 + 1
|
|
|
|
goto loop
|
|
|
|
${Endif}
|
|
|
|
|
2022-10-18 16:57:41 -06:00
|
|
|
# If a custom config is passed on the CLI, verify its existence before
|
|
|
|
# continuing so we don't uninstall an existing installation and then fail
|
|
|
|
# NOTE: This handles custom config for silent installations where the
|
|
|
|
# NOTE: custom config is passed on the CLI. The GUI has its own checking
|
|
|
|
# NOTE: when the user selects a custom config.
|
2021-06-25 16:08:16 -06:00
|
|
|
${If} $ConfigType == "Custom Config"
|
2022-10-18 16:57:41 -06:00
|
|
|
IfFileExists "$CustomConfig" checkExistingInstallation 0
|
2017-12-19 10:28:52 -07:00
|
|
|
Abort
|
|
|
|
${EndIf}
|
|
|
|
|
2022-10-18 16:57:41 -06:00
|
|
|
checkExistingInstallation:
|
2020-05-21 21:05:56 -06:00
|
|
|
# Check for existing installation
|
2022-10-18 16:57:41 -06:00
|
|
|
|
|
|
|
# The NSIS installer is a 32bit application and will use the WOW6432Node
|
|
|
|
# in the registry by default. We need to look in the 64 bit location on
|
|
|
|
# 64 bit systems
|
|
|
|
${If} ${RunningX64}
|
|
|
|
# https://nsis.sourceforge.io/Docs/Chapter4.html#setregview
|
|
|
|
SetRegView 64 # View the 64 bit portion of the registry
|
|
|
|
${EndIf}
|
|
|
|
|
2020-05-21 21:05:56 -06:00
|
|
|
ReadRegStr $R0 HKLM \
|
|
|
|
"Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" \
|
|
|
|
"UninstallString"
|
2021-06-25 16:08:16 -06:00
|
|
|
|
2022-10-18 16:57:41 -06:00
|
|
|
# Puts the nullsoft installer back to its default
|
|
|
|
SetRegView 32 # Set it back to the 32 bit portion of the registry
|
2021-06-25 16:08:16 -06:00
|
|
|
|
2022-10-18 16:57:41 -06:00
|
|
|
# If not found, look in 32 bit
|
|
|
|
${If} $R0 == ""
|
|
|
|
ReadRegStr $R0 HKLM \
|
|
|
|
"Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" \
|
|
|
|
"UninstallString"
|
|
|
|
${EndIf}
|
2015-10-27 15:43:22 -06:00
|
|
|
|
2022-10-18 16:57:41 -06:00
|
|
|
# If it's empty it's not installed
|
|
|
|
StrCmp $R0 "" skipUninstall
|
2021-06-25 16:08:16 -06:00
|
|
|
|
|
|
|
# Set InstDir to the parent directory so that we can uninstall it
|
|
|
|
${GetParent} $R0 $INSTDIR
|
|
|
|
|
2017-09-12 12:49:20 -06:00
|
|
|
# Found existing installation, prompt to uninstall
|
2021-06-08 10:32:12 -06:00
|
|
|
MessageBox MB_OKCANCEL|MB_USERICON \
|
2022-10-18 16:57:41 -06:00
|
|
|
"${PRODUCT_NAME} is already installed.$\n$\n\
|
2016-08-23 22:37:17 +00:00
|
|
|
Click `OK` to remove the existing installation." \
|
|
|
|
/SD IDOK IDOK uninst
|
|
|
|
Abort
|
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
uninst:
|
2017-03-10 21:52:38 +00:00
|
|
|
|
2017-09-12 12:49:20 -06:00
|
|
|
# Get current Silent status
|
2017-03-10 21:52:38 +00:00
|
|
|
StrCpy $R0 0
|
|
|
|
${If} ${Silent}
|
|
|
|
StrCpy $R0 1
|
2016-08-08 23:23:04 +00:00
|
|
|
${EndIf}
|
|
|
|
|
2017-09-12 12:49:20 -06:00
|
|
|
# Turn on Silent mode
|
2017-03-10 21:52:38 +00:00
|
|
|
SetSilent silent
|
|
|
|
|
2021-06-08 10:32:12 -06:00
|
|
|
# Don't remove all directories when upgrading (old method)
|
2017-03-10 21:52:38 +00:00
|
|
|
StrCpy $DeleteInstallDir 0
|
|
|
|
|
2021-06-08 10:32:12 -06:00
|
|
|
# Don't remove RootDir when upgrading (new method)
|
|
|
|
StrCpy $DeleteRootDir 0
|
|
|
|
|
2017-09-12 12:49:20 -06:00
|
|
|
# Uninstall silently
|
2017-03-10 21:52:38 +00:00
|
|
|
Call uninstallSalt
|
|
|
|
|
2017-09-12 12:49:20 -06:00
|
|
|
# Set it back to Normal mode, if that's what it was before
|
2017-03-10 21:52:38 +00:00
|
|
|
${If} $R0 == 0
|
|
|
|
SetSilent normal
|
|
|
|
${EndIf}
|
2016-08-09 18:58:58 +00:00
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
skipUninstall:
|
2013-01-04 08:49:05 -07:00
|
|
|
|
2021-06-08 10:32:12 -06:00
|
|
|
Call getExistingInstallation
|
|
|
|
|
2017-12-19 10:28:52 -07:00
|
|
|
Call getExistingMinionConfig
|
|
|
|
|
|
|
|
${If} $ExistingConfigFound == 0
|
2021-06-25 16:08:16 -06:00
|
|
|
${AndIf} $ConfigType == "Existing Config"
|
|
|
|
StrCpy $ConfigType "Default Config"
|
2017-12-19 10:28:52 -07:00
|
|
|
${EndIf}
|
2017-09-20 15:38:54 -06:00
|
|
|
|
|
|
|
FunctionEnd
|
|
|
|
|
2021-06-08 10:32:12 -06:00
|
|
|
|
2017-12-19 10:28:52 -07:00
|
|
|
Function BackupExistingConfig
|
|
|
|
|
|
|
|
${If} $ExistingConfigFound == 1 # If existing config found
|
2021-06-25 16:08:16 -06:00
|
|
|
${AndIfNot} $ConfigType == "Existing Config" # If not using Existing Config
|
2017-12-19 10:28:52 -07:00
|
|
|
|
|
|
|
# Backup the minion config
|
2021-06-08 10:32:12 -06:00
|
|
|
Rename "$RootDir\conf\minion" "$RootDir\conf\minion-${TIME_STAMP}.bak"
|
|
|
|
IfFileExists "$RootDir\conf\minion.d" 0 +2
|
|
|
|
Rename "$RootDir\conf\minion.d" "$RootDir\conf\minion.d-${TIME_STAMP}.bak"
|
2017-12-19 10:28:52 -07:00
|
|
|
|
|
|
|
${EndIf}
|
|
|
|
|
2022-10-18 16:57:41 -06:00
|
|
|
# By this point there should be no existing config. It was either backed up
|
|
|
|
# or wasn't there to begin with
|
2021-06-25 16:08:16 -06:00
|
|
|
${If} $ConfigType == "Custom Config" # If we're using Custom Config
|
|
|
|
${AndIfNot} $CustomConfig == "" # If a custom config is passed
|
2017-12-19 10:28:52 -07:00
|
|
|
|
|
|
|
# Check for a file name
|
|
|
|
# Named file should be in the same directory as the installer
|
2021-06-08 10:32:12 -06:00
|
|
|
CreateDirectory "$RootDir\conf"
|
2021-06-25 16:08:16 -06:00
|
|
|
IfFileExists "$EXEDIR\$CustomConfig" 0 checkFullPath
|
|
|
|
CopyFiles /SILENT /FILESONLY "$EXEDIR\$CustomConfig" "$RootDir\conf\minion"
|
2017-12-19 10:28:52 -07:00
|
|
|
goto finished
|
|
|
|
|
|
|
|
# Maybe it was a full path to a file
|
|
|
|
checkFullPath:
|
2021-06-25 16:08:16 -06:00
|
|
|
IfFileExists "$CustomConfig" 0 finished
|
|
|
|
CopyFiles /SILENT /FILESONLY "$CustomConfig" "$RootDir\conf\minion"
|
2017-12-19 10:28:52 -07:00
|
|
|
|
|
|
|
finished:
|
2017-09-20 15:38:54 -06:00
|
|
|
|
|
|
|
${EndIf}
|
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
FunctionEnd
|
2015-07-08 22:23:45 +00:00
|
|
|
|
2015-10-27 15:43:22 -06:00
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
Section -Post
|
2015-10-27 15:43:22 -06:00
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
WriteUninstaller "$INSTDIR\uninst.exe"
|
2015-10-27 15:43:22 -06:00
|
|
|
|
2022-10-18 16:57:41 -06:00
|
|
|
# The NSIS installer is a 32bit application and will use the WOW6432Node in
|
|
|
|
# the registry by default. We need to look in the 64 bit location on 64 bit
|
|
|
|
# systems
|
|
|
|
${If} ${RunningX64}
|
|
|
|
# https://nsis.sourceforge.io/Docs/Chapter4.html#setregview
|
|
|
|
SetRegView 64 # View 64 bit portion of the registry
|
|
|
|
${EndIf}
|
|
|
|
|
2021-06-08 10:32:12 -06:00
|
|
|
# Write Uninstall Registry Entries
|
2016-08-23 22:37:17 +00:00
|
|
|
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
|
|
|
|
"DisplayName" "$(^Name)"
|
|
|
|
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
|
|
|
|
"UninstallString" "$INSTDIR\uninst.exe"
|
|
|
|
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
|
|
|
|
"DisplayIcon" "$INSTDIR\salt.ico"
|
|
|
|
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
|
|
|
|
"DisplayVersion" "${PRODUCT_VERSION}"
|
|
|
|
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
|
|
|
|
"URLInfoAbout" "${PRODUCT_WEB_SITE}"
|
|
|
|
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
|
|
|
|
"Publisher" "${PRODUCT_PUBLISHER}"
|
|
|
|
WriteRegStr HKLM "SYSTEM\CurrentControlSet\services\salt-minion" \
|
|
|
|
"DependOnService" "nsi"
|
|
|
|
|
2023-01-31 18:43:41 -07:00
|
|
|
# If ESTIMATED_SIZE is not set, calculated it
|
|
|
|
${If} ${ESTIMATED_SIZE} == 0
|
|
|
|
${GetSize} "$INSTDIR" "/S=OK" $0 $1 $2
|
|
|
|
${Else}
|
|
|
|
StrCpy $0 ${ESTIMATED_SIZE}
|
|
|
|
${Endif}
|
2016-08-24 18:11:49 +00:00
|
|
|
IntFmt $0 "0x%08X" $0
|
|
|
|
WriteRegDWORD ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
|
|
|
|
"EstimatedSize" "$0"
|
2016-08-23 22:37:17 +00:00
|
|
|
|
2021-06-08 10:32:12 -06:00
|
|
|
# Write Commandline Registry Entries
|
2022-12-05 11:01:03 -07:00
|
|
|
WriteRegStr HKLM "${PRODUCT_CALL_REGKEY}" "" "$INSTDIR\salt-call.exe"
|
|
|
|
WriteRegStr HKLM "${PRODUCT_CALL_REGKEY}" "Path" "$INSTDIR\"
|
|
|
|
WriteRegStr HKLM "${PRODUCT_MINION_REGKEY}" "" "$INSTDIR\salt-minion.exe"
|
|
|
|
WriteRegStr HKLM "${PRODUCT_MINION_REGKEY}" "Path" "$INSTDIR\"
|
2016-08-23 22:37:17 +00:00
|
|
|
|
2021-06-08 10:32:12 -06:00
|
|
|
# Write Salt Configuration Registry Entries
|
2021-09-24 11:19:06 -06:00
|
|
|
# We want to write EXPAND_SZ string types to allow us to use environment
|
|
|
|
# variables. It's OK to use EXPAND_SZ even if you don't use an environment
|
|
|
|
# variable so we'll just do that whether it's new location or old.
|
|
|
|
|
2021-09-24 15:55:24 -06:00
|
|
|
# Check for Program Files
|
2021-09-24 11:19:06 -06:00
|
|
|
# Set the current setting for INSTDIR... we'll only change it if it contains
|
|
|
|
# Program Files
|
|
|
|
StrCpy $RegInstDir $INSTDIR
|
|
|
|
|
2022-10-18 16:57:41 -06:00
|
|
|
# Program Files
|
|
|
|
# We want to use the environment variables instead of the hardcoded path
|
2021-09-24 11:19:06 -06:00
|
|
|
${StrContains} $0 "Program Files" $INSTDIR
|
2021-09-24 15:55:24 -06:00
|
|
|
StrCmp $0 "" +2 # If it's empty, skip the next line
|
2021-09-24 11:19:06 -06:00
|
|
|
StrCpy $RegInstDir "%ProgramFiles%\Salt Project\Salt"
|
|
|
|
|
2021-09-24 15:55:24 -06:00
|
|
|
# Check for ProgramData
|
2021-09-24 11:19:06 -06:00
|
|
|
# Set the current setting for RootDir. we'll only change it if it contains
|
|
|
|
# ProgramData
|
|
|
|
StrCpy $RegRootDir $RootDir
|
|
|
|
|
2022-10-18 16:57:41 -06:00
|
|
|
# We want to use the environment variables instead of the hardcoded path
|
|
|
|
${StrContains} $0 "ProgramData" $RootDir
|
2021-09-24 15:55:24 -06:00
|
|
|
StrCmp $0 "" +2 # If it's empty, skip the next line
|
2021-09-24 11:19:06 -06:00
|
|
|
StrCpy $RegRootDir "%ProgramData%\Salt Project\Salt"
|
|
|
|
|
2021-09-24 15:55:24 -06:00
|
|
|
WriteRegExpandStr HKLM "SOFTWARE\Salt Project\Salt" "install_dir" "$RegInstDir"
|
|
|
|
WriteRegExpandStr HKLM "SOFTWARE\Salt Project\Salt" "root_dir" "$RegRootDir"
|
2021-09-24 11:19:06 -06:00
|
|
|
|
|
|
|
# Puts the nullsoft installer back to its default
|
2021-06-25 16:08:16 -06:00
|
|
|
SetRegView 32 # Set it back to the 32 bit portion of the registry
|
2021-06-08 10:32:12 -06:00
|
|
|
|
2017-09-12 12:49:20 -06:00
|
|
|
# Register the Salt-Minion Service
|
2022-12-05 11:01:03 -07:00
|
|
|
nsExec::Exec `$INSTDIR\ssm.exe install salt-minion "$INSTDIR\salt-minion.exe" -c """$RootDir\conf""" -l quiet`
|
|
|
|
nsExec::Exec "$INSTDIR\ssm.exe set salt-minion Description Salt Minion from saltstack.com"
|
|
|
|
nsExec::Exec "$INSTDIR\ssm.exe set salt-minion Start SERVICE_AUTO_START"
|
|
|
|
nsExec::Exec "$INSTDIR\ssm.exe set salt-minion AppStopMethodConsole 24000"
|
|
|
|
nsExec::Exec "$INSTDIR\ssm.exe set salt-minion AppStopMethodWindow 2000"
|
|
|
|
nsExec::Exec "$INSTDIR\ssm.exe set salt-minion AppRestartDelay 60000"
|
2015-10-27 15:43:22 -06:00
|
|
|
|
2021-07-01 17:35:59 -06:00
|
|
|
# There is a default minion config laid down in the $INSTDIR directory
|
|
|
|
${Switch} $ConfigType
|
|
|
|
${Case} "Existing Config"
|
2022-10-18 16:57:41 -06:00
|
|
|
# If this is an Existing Config, we don't do anything
|
2021-07-01 17:35:59 -06:00
|
|
|
${Break}
|
|
|
|
${Case} "Custom Config"
|
2022-10-18 16:57:41 -06:00
|
|
|
# If this is a Custom Config, update the custom config
|
2021-07-01 17:35:59 -06:00
|
|
|
Call updateMinionConfig
|
|
|
|
${Break}
|
|
|
|
${Case} "Default Config"
|
2022-10-18 16:57:41 -06:00
|
|
|
# If this is the Default Config, we move it and update it
|
2021-07-01 17:35:59 -06:00
|
|
|
StrCpy $switch_overwrite 1
|
2021-09-24 11:19:06 -06:00
|
|
|
|
2022-10-18 16:57:41 -06:00
|
|
|
!insertmacro MoveFolder "$INSTDIR\configs" "$RootDir\conf" "*.*"
|
2021-07-01 17:35:59 -06:00
|
|
|
Call updateMinionConfig
|
|
|
|
${Break}
|
|
|
|
${EndSwitch}
|
2015-07-08 22:23:45 +00:00
|
|
|
|
2022-10-18 16:57:41 -06:00
|
|
|
# Delete the configs directory that came with the installer
|
|
|
|
RMDir /r "$INSTDIR\configs"
|
|
|
|
|
2020-06-17 11:45:09 +05:00
|
|
|
# Add $INSTDIR in the Path
|
|
|
|
EnVar::SetHKLM
|
|
|
|
EnVar::AddValue Path "$INSTDIR"
|
2016-08-09 18:58:58 +00:00
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
SectionEnd
|
2013-01-04 08:49:05 -07:00
|
|
|
|
2015-07-08 22:23:45 +00:00
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
Function .onInstSuccess
|
2013-01-04 08:49:05 -07:00
|
|
|
|
2017-09-12 12:49:20 -06:00
|
|
|
# If StartMinionDelayed is 1, then set the service to start delayed
|
2016-10-04 14:18:42 -06:00
|
|
|
${If} $StartMinionDelayed == 1
|
2022-12-05 11:01:03 -07:00
|
|
|
nsExec::Exec "$INSTDIR\ssm.exe set salt-minion Start SERVICE_DELAYED_AUTO_START"
|
2016-10-04 14:18:42 -06:00
|
|
|
${EndIf}
|
|
|
|
|
2017-09-12 12:49:20 -06:00
|
|
|
# If start-minion is 1, then start the service
|
2016-08-08 23:23:04 +00:00
|
|
|
${If} $StartMinion == 1
|
2016-08-09 00:06:23 +00:00
|
|
|
nsExec::Exec 'net start salt-minion'
|
2016-08-08 23:23:04 +00:00
|
|
|
${EndIf}
|
2015-07-08 22:23:45 +00:00
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
FunctionEnd
|
2015-03-28 00:14:01 +00:00
|
|
|
|
2015-10-27 15:43:22 -06:00
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
Function un.onInit
|
2017-03-10 21:52:38 +00:00
|
|
|
|
2021-06-08 10:32:12 -06:00
|
|
|
Call un.parseUninstallerCommandLineSwitches
|
2017-03-10 21:52:38 +00:00
|
|
|
|
2021-06-08 10:32:12 -06:00
|
|
|
MessageBox MB_USERICON|MB_YESNO|MB_DEFBUTTON1 \
|
2022-10-18 16:57:41 -06:00
|
|
|
"Are you sure you want to completely remove $(^Name) and all of its \
|
|
|
|
components?" \
|
2016-08-23 22:37:17 +00:00
|
|
|
/SD IDYES IDYES +2
|
2016-08-08 23:23:04 +00:00
|
|
|
Abort
|
2017-03-10 21:52:38 +00:00
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
FunctionEnd
|
2015-10-27 15:43:22 -06:00
|
|
|
|
2015-03-31 17:26:46 -06:00
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
Section Uninstall
|
2016-08-09 18:58:58 +00:00
|
|
|
|
2017-03-10 21:52:38 +00:00
|
|
|
Call un.uninstallSalt
|
|
|
|
|
2020-06-17 11:45:09 +05:00
|
|
|
# Remove $INSTDIR from the Path
|
|
|
|
EnVar::SetHKLM
|
|
|
|
EnVar::DeleteValue Path "$INSTDIR"
|
2017-03-10 21:52:38 +00:00
|
|
|
|
|
|
|
SectionEnd
|
|
|
|
|
|
|
|
|
|
|
|
!macro uninstallSalt un
|
|
|
|
Function ${un}uninstallSalt
|
|
|
|
|
2021-07-21 17:14:44 -06:00
|
|
|
# WARNING: Any changes made here need to be reflected in the MSI uninstaller
|
2017-09-12 12:49:20 -06:00
|
|
|
# Make sure we're in the right directory
|
2022-12-05 11:01:03 -07:00
|
|
|
${If} $INSTDIR == "c:\salt\Scripts"
|
2017-03-10 21:52:38 +00:00
|
|
|
StrCpy $INSTDIR "C:\salt"
|
|
|
|
${EndIf}
|
2021-06-08 10:32:12 -06:00
|
|
|
# $ProgramFiles is different depending on the CPU Architecture
|
2022-10-18 16:57:41 -06:00
|
|
|
# https://nsis.sourceforge.io/Reference/$PROGRAMFILES
|
2021-06-08 10:32:12 -06:00
|
|
|
# x86 : C:\Program Files
|
|
|
|
# x64 : C:\Program Files (x86)
|
2022-12-05 11:01:03 -07:00
|
|
|
${If} $INSTDIR == "$ProgramFiles\Salt Project\Salt\Scripts"
|
2021-06-08 10:32:12 -06:00
|
|
|
StrCpy $INSTDIR "$ProgramFiles\Salt Project\Salt"
|
|
|
|
${EndIf}
|
|
|
|
# $ProgramFiles64 is the C:\Program Files directory
|
2022-12-05 11:01:03 -07:00
|
|
|
${If} $INSTDIR == "$ProgramFiles64\Salt Project\Salt\Scripts"
|
2021-06-08 10:32:12 -06:00
|
|
|
StrCpy $INSTDIR "$ProgramFiles64\Salt Project\Salt"
|
|
|
|
${EndIf}
|
|
|
|
|
2017-09-12 12:49:20 -06:00
|
|
|
# Stop and Remove salt-minion service
|
2022-10-18 16:57:41 -06:00
|
|
|
nsExec::Exec "net stop salt-minion"
|
|
|
|
nsExec::Exec "sc delete salt-minion"
|
2015-03-28 00:14:01 +00:00
|
|
|
|
2017-09-12 12:49:20 -06:00
|
|
|
# Stop and remove the salt-master service
|
2022-10-18 16:57:41 -06:00
|
|
|
nsExec::Exec "net stop salt-master"
|
|
|
|
nsExec::Exec "sc delete salt-master"
|
|
|
|
|
|
|
|
# We need to make sure the service is stopped and removed before deleting
|
|
|
|
# any files
|
|
|
|
StrCpy $0 1 # Tries
|
|
|
|
StrCpy $1 1 # Service Present
|
|
|
|
loop:
|
|
|
|
detailPrint "Verifying salt-minion deletion: try $0"
|
|
|
|
nsExec::ExecToStack 'net start | FIND /C /I "salt-minion"'
|
|
|
|
pop $2 # First on the stack is the return code
|
|
|
|
pop $1 # Next on the stack is standard out (service present)
|
|
|
|
${If} $1 == 1
|
|
|
|
${If} $0 < 5
|
|
|
|
IntOp $0 $0 + 1
|
|
|
|
Sleep 1000
|
|
|
|
goto loop
|
|
|
|
${Else}
|
|
|
|
MessageBox MB_OK|MB_ICONEXCLAMATION \
|
|
|
|
"Failed to remove salt-minion service" \
|
|
|
|
/SD IDOK
|
|
|
|
Abort
|
|
|
|
${EndIf}
|
|
|
|
${EndIf}
|
2017-03-10 21:52:38 +00:00
|
|
|
|
2017-09-12 12:49:20 -06:00
|
|
|
# Remove files
|
2023-08-23 14:14:57 -06:00
|
|
|
Delete "$INSTDIR\multi-minion*"
|
2015-10-27 15:43:22 -06:00
|
|
|
Delete "$INSTDIR\salt*"
|
2023-08-23 14:14:57 -06:00
|
|
|
Delete "$INSTDIR\ssm.exe"
|
|
|
|
Delete "$INSTDIR\uninst.exe"
|
2017-01-13 12:42:39 -07:00
|
|
|
Delete "$INSTDIR\vcredist.exe"
|
2022-12-05 11:01:03 -07:00
|
|
|
RMDir /r "$INSTDIR\DLLs"
|
|
|
|
RMDir /r "$INSTDIR\Include"
|
|
|
|
RMDir /r "$INSTDIR\Lib"
|
|
|
|
RMDir /r "$INSTDIR\libs"
|
|
|
|
RMDir /r "$INSTDIR\Scripts"
|
2015-03-28 00:14:01 +00:00
|
|
|
|
2022-10-18 16:57:41 -06:00
|
|
|
# Remove everything in the 64 bit registry
|
|
|
|
|
|
|
|
# The NSIS installer is a 32bit application and will use the WOW6432Node in
|
|
|
|
# the registry by default. We need to look in the 64 bit location on 64 bit
|
|
|
|
# systems
|
|
|
|
${If} ${RunningX64}
|
|
|
|
# https://nsis.sourceforge.io/Docs/Chapter4.html#setregview
|
|
|
|
SetRegView 64 # View the 64 bit portion of the registry
|
|
|
|
|
|
|
|
# Get Root Directory from the Registry (64 bit)
|
|
|
|
ReadRegStr $RootDir HKLM "SOFTWARE\Salt Project\Salt" "root_dir"
|
|
|
|
|
|
|
|
# Remove Registry entries
|
|
|
|
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
|
|
|
|
|
|
|
|
# Remove Command Line Registry entries
|
|
|
|
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_CALL_REGKEY}"
|
|
|
|
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_CP_REGKEY}"
|
|
|
|
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_KEY_REGKEY}"
|
|
|
|
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_MASTER_REGKEY}"
|
|
|
|
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_MINION_REGKEY}"
|
|
|
|
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_RUN_REGKEY}"
|
|
|
|
DeleteRegKey HKLM "SOFTWARE\Salt Project"
|
|
|
|
${EndIf}
|
|
|
|
|
|
|
|
# Remove everything in the 32 bit registry
|
|
|
|
SetRegView 32 # Set it to 32 bit
|
|
|
|
|
|
|
|
${If} $RootDir == ""
|
|
|
|
# Get Root Directory from the Registry (32 bit)
|
|
|
|
ReadRegStr $RootDir HKLM "SOFTWARE\Salt Project\Salt" "root_dir"
|
|
|
|
${EndIf}
|
|
|
|
|
2017-09-12 12:49:20 -06:00
|
|
|
# Remove Registry entries
|
2017-03-10 21:52:38 +00:00
|
|
|
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
|
2021-06-08 10:32:12 -06:00
|
|
|
|
|
|
|
# Remove Command Line Registry entries
|
2017-03-10 21:52:38 +00:00
|
|
|
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_CALL_REGKEY}"
|
|
|
|
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_CP_REGKEY}"
|
|
|
|
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_KEY_REGKEY}"
|
|
|
|
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_MASTER_REGKEY}"
|
|
|
|
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_MINION_REGKEY}"
|
|
|
|
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_RUN_REGKEY}"
|
2021-06-08 10:32:12 -06:00
|
|
|
DeleteRegKey HKLM "SOFTWARE\Salt Project"
|
|
|
|
|
2021-07-01 16:37:12 -06:00
|
|
|
# SystemDrive is not a built in NSIS constant, so we need to get it from
|
|
|
|
# the environment variables
|
|
|
|
ReadEnvStr $0 "SystemDrive" # Get the SystemDrive env var
|
|
|
|
StrCpy $SysDrive "$0\"
|
|
|
|
|
2017-09-12 12:49:20 -06:00
|
|
|
# Automatically close when finished
|
2017-03-10 21:52:38 +00:00
|
|
|
SetAutoClose true
|
|
|
|
|
2021-06-08 10:32:12 -06:00
|
|
|
# Old Method Installation
|
|
|
|
${If} $INSTDIR == "C:\salt"
|
|
|
|
|
|
|
|
# Prompt to remove the Installation Directory. This is because that
|
|
|
|
# directory is also the root_dir which includes the config and pki
|
|
|
|
# directories
|
|
|
|
${IfNot} $DeleteInstallDir == 1
|
|
|
|
MessageBox MB_YESNO|MB_DEFBUTTON2|MB_USERICON \
|
|
|
|
"Would you like to completely remove $INSTDIR and all of its contents?" \
|
|
|
|
/SD IDNO IDNO finished
|
|
|
|
${EndIf}
|
|
|
|
|
2021-07-01 16:37:12 -06:00
|
|
|
SetOutPath "$SysDrive" # Can't remove CWD
|
|
|
|
RMDir /r "$INSTDIR"
|
2021-06-08 10:32:12 -06:00
|
|
|
|
|
|
|
${Else}
|
|
|
|
|
2023-08-23 14:14:57 -06:00
|
|
|
# Prompt for the removal of the Installation Directory which contains
|
|
|
|
# the extras directory and the Root Directory which contains the config
|
|
|
|
# and pki directories. These directories will not be removed during
|
|
|
|
# an upgrade.
|
|
|
|
${IfNot} $DeleteRootDir == 1
|
|
|
|
MessageBox MB_YESNO|MB_DEFBUTTON2|MB_USERICON \
|
|
|
|
"Would you like to completely remove the entire Salt \
|
|
|
|
Installation? This includes the following:$\n\
|
|
|
|
- Extra Pip Packages ($INSTDIR\extras-3.##)$\n\
|
|
|
|
- Minion Config ($RootDir\conf)$\n\
|
|
|
|
- Minion PKIs ($RootDir\conf\pki)"\
|
|
|
|
/SD IDNO IDNO finished
|
|
|
|
${EndIf}
|
|
|
|
|
2021-06-08 10:32:12 -06:00
|
|
|
# New Method Installation
|
|
|
|
# This makes the $APPDATA variable point to the ProgramData folder instead
|
|
|
|
# of the current user's roaming AppData folder
|
|
|
|
SetShellVarContext all
|
|
|
|
|
|
|
|
# We can always remove the Installation Directory on New Method Installs
|
|
|
|
# because it only contains binary data
|
|
|
|
|
|
|
|
# Remove INSTDIR
|
|
|
|
# Make sure you're not removing important system directory such as
|
|
|
|
# Program Files, C:\Windows, or C:
|
|
|
|
${If} $INSTDIR != $ProgramFiles
|
|
|
|
${AndIf} $INSTDIR != $ProgramFiles64
|
|
|
|
${AndIf} $INSTDIR != $SysDrive
|
|
|
|
${AndIf} $INSTDIR != $WinDir
|
2021-07-01 16:37:12 -06:00
|
|
|
SetOutPath "$SysDrive" # Can't remove CWD
|
2021-06-08 10:32:12 -06:00
|
|
|
RMDir /r $INSTDIR
|
|
|
|
${EndIf}
|
|
|
|
|
|
|
|
# Remove INSTDIR (The parent)
|
|
|
|
# For example, though salt is installed in ProgramFiles\Salt Project\Salt
|
|
|
|
# We want to remove ProgramFiles\Salt Project
|
|
|
|
# Only delete Salt Project directory if it's in Program Files
|
|
|
|
# Otherwise, we can't guess where the user may have installed salt
|
|
|
|
${GetParent} $INSTDIR $0 # Get parent directory (Salt Project)
|
2023-08-23 14:14:57 -06:00
|
|
|
${If} $0 == "$ProgramFiles\Salt Project" # Make sure it's ProgramFiles
|
|
|
|
${OrIf} $0 == "$ProgramFiles64\Salt Project" # Make sure it's Program Files (x86)
|
2021-07-01 16:37:12 -06:00
|
|
|
SetOutPath "$SysDrive" # Can't remove CWD
|
2021-06-08 10:32:12 -06:00
|
|
|
RMDir /r $0
|
|
|
|
${EndIf}
|
|
|
|
|
2022-10-18 16:57:41 -06:00
|
|
|
# If RootDir is still empty, use C:\salt
|
|
|
|
${If} $RootDir == ""
|
|
|
|
StrCpy $RootDir "C:\salt"
|
|
|
|
${EndIf}
|
|
|
|
|
|
|
|
# Expand any environment variables
|
|
|
|
ExpandEnvStrings $RootDir $RootDir
|
|
|
|
|
2021-06-08 10:32:12 -06:00
|
|
|
# Remove the Salt Project directory in ProgramData
|
|
|
|
# The Salt Project directory will only ever be in ProgramData
|
|
|
|
# It is not user selectable
|
|
|
|
${GetParent} $RootDir $0 # Get parent directory
|
|
|
|
${If} $0 == "$APPDATA\Salt Project" # Make sure it's not ProgramData
|
2021-07-01 16:37:12 -06:00
|
|
|
SetOutPath "$SysDrive" # Can't remove CWD
|
2021-06-08 10:32:12 -06:00
|
|
|
RMDir /r $0
|
|
|
|
${EndIf}
|
2017-03-10 21:52:38 +00:00
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
${EndIf}
|
|
|
|
|
2017-03-10 21:52:38 +00:00
|
|
|
finished:
|
2016-08-08 23:23:04 +00:00
|
|
|
|
2017-03-10 21:52:38 +00:00
|
|
|
FunctionEnd
|
|
|
|
!macroend
|
2016-08-09 18:58:58 +00:00
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
|
2017-03-10 21:52:38 +00:00
|
|
|
!insertmacro uninstallSalt ""
|
|
|
|
!insertmacro uninstallSalt "un."
|
2016-08-08 23:23:04 +00:00
|
|
|
|
2015-03-28 00:14:01 +00:00
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
Function un.onUninstSuccess
|
|
|
|
HideWindow
|
2021-06-08 10:32:12 -06:00
|
|
|
MessageBox MB_OK|MB_USERICON \
|
2016-10-04 14:18:42 -06:00
|
|
|
"$(^Name) was successfully removed from your computer." \
|
|
|
|
/SD IDOK
|
2015-03-28 00:14:01 +00:00
|
|
|
FunctionEnd
|
|
|
|
|
2015-07-08 22:23:45 +00:00
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
###############################################################################
|
|
|
|
# Helper Functions
|
|
|
|
###############################################################################
|
|
|
|
|
2017-09-20 15:38:54 -06:00
|
|
|
#------------------------------------------------------------------------------
|
|
|
|
# Trim Function
|
|
|
|
# - Trim whitespace from the beginning and end of a string
|
|
|
|
# - Trims spaces, \r, \n, \t
|
|
|
|
#
|
|
|
|
# Usage:
|
2017-09-21 14:11:21 -06:00
|
|
|
# Push " some string " ; String to Trim
|
2017-09-20 15:38:54 -06:00
|
|
|
# Call Trim
|
2017-09-21 14:11:21 -06:00
|
|
|
# Pop $0 ; Trimmed String: "some string"
|
|
|
|
#
|
|
|
|
# or
|
|
|
|
#
|
|
|
|
# ${Trim} $0 $1 ; Trimmed String, String to Trim
|
2017-09-20 15:38:54 -06:00
|
|
|
#------------------------------------------------------------------------------
|
2015-03-28 00:14:01 +00:00
|
|
|
Function Trim
|
|
|
|
|
2017-09-12 12:49:20 -06:00
|
|
|
Exch $R1 # Original string
|
2015-03-28 00:14:01 +00:00
|
|
|
Push $R2
|
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
Loop:
|
|
|
|
StrCpy $R2 "$R1" 1
|
|
|
|
StrCmp "$R2" " " TrimLeft
|
|
|
|
StrCmp "$R2" "$\r" TrimLeft
|
|
|
|
StrCmp "$R2" "$\n" TrimLeft
|
|
|
|
StrCmp "$R2" "$\t" TrimLeft
|
|
|
|
GoTo Loop2
|
|
|
|
TrimLeft:
|
|
|
|
StrCpy $R1 "$R1" "" 1
|
|
|
|
Goto Loop
|
|
|
|
|
|
|
|
Loop2:
|
|
|
|
StrCpy $R2 "$R1" 1 -1
|
|
|
|
StrCmp "$R2" " " TrimRight
|
|
|
|
StrCmp "$R2" "$\r" TrimRight
|
|
|
|
StrCmp "$R2" "$\n" TrimRight
|
|
|
|
StrCmp "$R2" "$\t" TrimRight
|
|
|
|
GoTo Done
|
|
|
|
TrimRight:
|
|
|
|
StrCpy $R1 "$R1" -1
|
|
|
|
Goto Loop2
|
|
|
|
|
|
|
|
Done:
|
|
|
|
Pop $R2
|
|
|
|
Exch $R1
|
2015-03-25 13:43:26 -06:00
|
|
|
|
2013-01-04 08:49:05 -07:00
|
|
|
FunctionEnd
|
|
|
|
|
2015-07-08 22:23:45 +00:00
|
|
|
|
2017-09-21 14:11:21 -06:00
|
|
|
#------------------------------------------------------------------------------
|
|
|
|
# Explode Function
|
|
|
|
# - Splits a string based off the passed separator
|
|
|
|
# - Each item in the string is pushed to the stack
|
|
|
|
# - The last item pushed to the stack is the length of the array
|
|
|
|
#
|
|
|
|
# Usage:
|
|
|
|
# Push "," ; Separator
|
|
|
|
# Push "string,to,separate" ; String to explode
|
|
|
|
# Call Explode
|
|
|
|
# Pop $0 ; Number of items in the array
|
|
|
|
#
|
|
|
|
# or
|
|
|
|
#
|
|
|
|
# ${Explode} $0 $1 $2 ; Length, Separator, String
|
|
|
|
#------------------------------------------------------------------------------
|
2017-09-20 15:38:54 -06:00
|
|
|
Function Explode
|
|
|
|
# Initialize variables
|
|
|
|
Var /GLOBAL explString
|
|
|
|
Var /GLOBAL explSeparator
|
|
|
|
Var /GLOBAL explStrLen
|
|
|
|
Var /GLOBAL explSepLen
|
|
|
|
Var /GLOBAL explOffset
|
|
|
|
Var /GLOBAL explTmp
|
|
|
|
Var /GLOBAL explTmp2
|
|
|
|
Var /GLOBAL explTmp3
|
|
|
|
Var /GLOBAL explArrCount
|
|
|
|
|
|
|
|
# Get input from user
|
|
|
|
Pop $explString
|
|
|
|
Pop $explSeparator
|
|
|
|
|
|
|
|
# Calculates initial values
|
|
|
|
StrLen $explStrLen $explString
|
|
|
|
StrLen $explSepLen $explSeparator
|
|
|
|
StrCpy $explArrCount 1
|
|
|
|
|
|
|
|
${If} $explStrLen <= 1 # If we got a single character
|
|
|
|
${OrIf} $explSepLen > $explStrLen # or separator is larger than the string,
|
|
|
|
Push $explString # then we return initial string with no change
|
|
|
|
Push 1 # and set array's length to 1
|
|
|
|
Return
|
|
|
|
${EndIf}
|
|
|
|
|
|
|
|
# Set offset to the last symbol of the string
|
|
|
|
StrCpy $explOffset $explStrLen
|
|
|
|
IntOp $explOffset $explOffset - 1
|
|
|
|
|
|
|
|
# Clear temp string to exclude the possibility of appearance of occasional data
|
|
|
|
StrCpy $explTmp ""
|
|
|
|
StrCpy $explTmp2 ""
|
|
|
|
StrCpy $explTmp3 ""
|
|
|
|
|
|
|
|
# Loop until the offset becomes negative
|
|
|
|
${Do}
|
|
|
|
# If offset becomes negative, it is time to leave the function
|
|
|
|
${IfThen} $explOffset == -1 ${|} ${ExitDo} ${|}
|
|
|
|
|
|
|
|
# Remove everything before and after the searched part ("TempStr")
|
|
|
|
StrCpy $explTmp $explString $explSepLen $explOffset
|
|
|
|
|
|
|
|
${If} $explTmp == $explSeparator
|
|
|
|
# Calculating offset to start copy from
|
|
|
|
IntOp $explTmp2 $explOffset + $explSepLen # Offset equals to the current offset plus length of separator
|
|
|
|
StrCpy $explTmp3 $explString "" $explTmp2
|
|
|
|
|
|
|
|
Push $explTmp3 # Throwing array item to the stack
|
|
|
|
IntOp $explArrCount $explArrCount + 1 # Increasing array's counter
|
|
|
|
|
|
|
|
StrCpy $explString $explString $explOffset 0 # Cutting all characters beginning with the separator entry
|
|
|
|
StrLen $explStrLen $explString
|
|
|
|
${EndIf}
|
|
|
|
|
|
|
|
${If} $explOffset = 0 # If the beginning of the line met and there is no separator,
|
|
|
|
# copying the rest of the string
|
|
|
|
${If} $explSeparator == "" # Fix for the empty separator
|
|
|
|
IntOp $explArrCount $explArrCount - 1
|
|
|
|
${Else}
|
|
|
|
Push $explString
|
|
|
|
${EndIf}
|
|
|
|
${EndIf}
|
|
|
|
|
|
|
|
IntOp $explOffset $explOffset - 1
|
|
|
|
${Loop}
|
|
|
|
|
|
|
|
Push $explArrCount
|
|
|
|
FunctionEnd
|
|
|
|
|
|
|
|
|
2021-09-24 15:55:24 -06:00
|
|
|
#------------------------------------------------------------------------------
|
|
|
|
# StrContains
|
|
|
|
#
|
|
|
|
# This function does a case sensitive searches for an occurrence of a substring in a string.
|
|
|
|
# It returns the substring if it is found.
|
|
|
|
# Otherwise it returns null("").
|
|
|
|
# Written by kenglish_hi
|
|
|
|
# Adapted from StrReplace written by dandaman32
|
|
|
|
#------------------------------------------------------------------------------
|
|
|
|
Function StrContains
|
|
|
|
|
|
|
|
# Initialize variables
|
|
|
|
Var /GLOBAL STR_HAYSTACK
|
|
|
|
Var /GLOBAL STR_NEEDLE
|
|
|
|
Var /GLOBAL STR_CONTAINS_VAR_1
|
|
|
|
Var /GLOBAL STR_CONTAINS_VAR_2
|
|
|
|
Var /GLOBAL STR_CONTAINS_VAR_3
|
|
|
|
Var /GLOBAL STR_CONTAINS_VAR_4
|
|
|
|
Var /GLOBAL STR_RETURN_VAR
|
|
|
|
|
|
|
|
Exch $STR_NEEDLE
|
|
|
|
Exch 1
|
|
|
|
Exch $STR_HAYSTACK
|
|
|
|
# Uncomment to debug
|
|
|
|
#MessageBox MB_OK 'STR_NEEDLE = $STR_NEEDLE STR_HAYSTACK = $STR_HAYSTACK '
|
|
|
|
StrCpy $STR_RETURN_VAR ""
|
|
|
|
StrCpy $STR_CONTAINS_VAR_1 -1
|
|
|
|
StrLen $STR_CONTAINS_VAR_2 $STR_NEEDLE
|
|
|
|
StrLen $STR_CONTAINS_VAR_4 $STR_HAYSTACK
|
|
|
|
|
|
|
|
loop:
|
|
|
|
IntOp $STR_CONTAINS_VAR_1 $STR_CONTAINS_VAR_1 + 1
|
|
|
|
StrCpy $STR_CONTAINS_VAR_3 $STR_HAYSTACK $STR_CONTAINS_VAR_2 $STR_CONTAINS_VAR_1
|
|
|
|
StrCmp $STR_CONTAINS_VAR_3 $STR_NEEDLE found
|
|
|
|
StrCmp $STR_CONTAINS_VAR_1 $STR_CONTAINS_VAR_4 done
|
|
|
|
Goto loop
|
|
|
|
|
|
|
|
found:
|
|
|
|
StrCpy $STR_RETURN_VAR $STR_NEEDLE
|
|
|
|
Goto done
|
|
|
|
|
|
|
|
done:
|
|
|
|
Pop $STR_NEEDLE # Prevent "invalid opcode" errors and keep the stack clean
|
|
|
|
Exch $STR_RETURN_VAR
|
|
|
|
FunctionEnd
|
|
|
|
|
|
|
|
|
2020-05-04 14:24:45 +02:00
|
|
|
#------------------------------------------------------------------------------
|
|
|
|
# UninstallMSI Function
|
|
|
|
# - Uninstalls MSI by product code
|
|
|
|
#
|
|
|
|
# Usage:
|
|
|
|
# Push product code
|
|
|
|
# Call UninstallMSI
|
|
|
|
#
|
|
|
|
# Source:
|
|
|
|
# https://nsis.sourceforge.io/Uninstalling_a_previous_MSI_(Windows_installer_package)
|
|
|
|
#------------------------------------------------------------------------------
|
|
|
|
Function UninstallMSI
|
|
|
|
; $R0 === product code
|
2021-06-08 10:32:12 -06:00
|
|
|
MessageBox MB_OKCANCEL|MB_ICONINFORMATION \
|
2020-05-04 14:24:45 +02:00
|
|
|
"${PRODUCT_NAME} is already installed via MSI.$\n$\n\
|
|
|
|
Click `OK` to remove the existing installation." \
|
|
|
|
/SD IDOK IDOK UninstallMSI
|
|
|
|
Abort
|
|
|
|
|
|
|
|
UninstallMSI:
|
2020-05-05 22:13:40 +02:00
|
|
|
ExecWait '"msiexec.exe" /x $R0 /qb /quiet /norestart'
|
2020-05-04 14:24:45 +02:00
|
|
|
|
|
|
|
FunctionEnd
|
|
|
|
|
2016-08-09 16:49:28 +00:00
|
|
|
|
|
|
|
###############################################################################
|
|
|
|
# Specialty Functions
|
|
|
|
###############################################################################
|
2022-10-18 16:57:41 -06:00
|
|
|
|
|
|
|
Function getExistingInstallation
|
|
|
|
# Try to detect an existing installation. There are three possible scenarios
|
|
|
|
# 1. Existing New Method Installation
|
|
|
|
# 2. Existing Old Method Installation
|
|
|
|
# 3. New Installation
|
|
|
|
# The results of this function will determine if the user is allowed to set
|
|
|
|
# the install location in the GUI. If there is an existing installation
|
|
|
|
# present, the location picker will be grayed out
|
|
|
|
# This function also sets the RootDir and INSTDIR variables used by the
|
|
|
|
# installer.
|
|
|
|
|
|
|
|
# Reset ExistingInstallation
|
|
|
|
StrCpy $ExistingInstallation 0
|
|
|
|
|
|
|
|
# Get ProgramFiles
|
|
|
|
# Use RunningX64 here to get the Architecture for the system running the
|
|
|
|
# installer.
|
|
|
|
# There are 3 scenarios here:
|
|
|
|
${If} ${RunningX64}
|
|
|
|
StrCpy $INSTDIR "$ProgramFiles64\Salt Project\Salt"
|
|
|
|
${Else}
|
|
|
|
# 32 bit Salt on 32 bit system (C:\Program Files)
|
|
|
|
StrCpy $INSTDIR "$ProgramFiles\Salt Project\Salt"
|
|
|
|
${EndIf}
|
|
|
|
|
|
|
|
# This makes the $APPDATA variable point to the ProgramData folder instead
|
|
|
|
# of the current user's roaming AppData folder
|
|
|
|
SetShellVarContext all
|
|
|
|
|
|
|
|
# Set default location of for salt config
|
|
|
|
StrCpy $RootDir "$APPDATA\Salt Project\Salt"
|
|
|
|
|
|
|
|
# The NSIS installer is a 32bit application and will use the WOW6432Node in
|
|
|
|
# the registry by default. We need to look in the 64 bit location on 64 bit
|
|
|
|
# systems
|
|
|
|
${If} ${RunningX64}
|
|
|
|
# https://nsis.sourceforge.io/Docs/Chapter4.html#setregview
|
|
|
|
SetRegView 64 # View the 64 bit portion of the registry
|
|
|
|
${EndIf}
|
|
|
|
|
|
|
|
# Check for existing new method installation from registry
|
|
|
|
# Look for `install_dir` in HKLM\SOFTWARE\Salt Project\Salt
|
|
|
|
ReadRegStr $R0 HKLM "SOFTWARE\Salt Project\Salt" "install_dir"
|
|
|
|
StrCmp $R0 "" checkOldInstallation
|
|
|
|
StrCpy $ExistingInstallation 1
|
|
|
|
|
|
|
|
# Set INSTDIR to the location in the registry
|
|
|
|
StrCpy $INSTDIR $R0
|
|
|
|
# Expand any environment variables it contains
|
|
|
|
ExpandEnvStrings $INSTDIR $INSTDIR
|
|
|
|
|
|
|
|
# Set RootDir, if defined
|
|
|
|
ReadRegStr $R0 HKLM "SOFTWARE\Salt Project\Salt" "root_dir"
|
|
|
|
StrCmp $R0 "" finished
|
|
|
|
StrCpy $RootDir $R0
|
|
|
|
# Expand any environment variables it contains
|
|
|
|
ExpandEnvStrings $RootDir $RootDir
|
|
|
|
Goto finished
|
|
|
|
|
|
|
|
# Check for existing old method installation
|
|
|
|
# Look for `python.exe` in C:\salt\bin
|
|
|
|
checkOldInstallation:
|
|
|
|
IfFileExists "C:\salt\bin\python.exe" 0 newInstallation
|
|
|
|
StrCpy $ExistingInstallation 1
|
|
|
|
StrCpy $INSTDIR "C:\salt"
|
|
|
|
StrCpy $RootDir "C:\salt"
|
|
|
|
Goto finished
|
|
|
|
|
|
|
|
# This is a new installation
|
|
|
|
# Check if custom location was passed via command line
|
|
|
|
newInstallation:
|
|
|
|
${IfNot} $CustomLocation == ""
|
|
|
|
StrCpy $INSTDIR $CustomLocation
|
|
|
|
${EndIf}
|
|
|
|
|
|
|
|
finished:
|
|
|
|
SetRegView 32 # View the 32 bit portion of the registry
|
|
|
|
|
|
|
|
FunctionEnd
|
|
|
|
|
|
|
|
|
2017-12-19 10:28:52 -07:00
|
|
|
Function getExistingMinionConfig
|
2016-08-08 23:23:04 +00:00
|
|
|
|
2017-09-20 15:38:54 -06:00
|
|
|
# Set Config Found Default Value
|
|
|
|
StrCpy $ExistingConfigFound 0
|
|
|
|
|
2021-06-08 10:32:12 -06:00
|
|
|
# Find config, should be in $RootDir\conf\minion
|
|
|
|
# Root dir is usually ProgramData\Salt Project\Salt\conf though it may be
|
|
|
|
# C:\salt\conf if Salt was installed the old way
|
2022-10-18 16:57:41 -06:00
|
|
|
|
2021-09-24 15:55:24 -06:00
|
|
|
IfFileExists "$RootDir\conf\minion" check_owner
|
2021-06-25 16:08:16 -06:00
|
|
|
IfFileExists "C:\salt\conf\minion" old_location confNotFound
|
|
|
|
|
|
|
|
old_location:
|
|
|
|
StrCpy $RootDir "C:\salt"
|
2016-08-08 23:23:04 +00:00
|
|
|
|
Merge 3003.3 into master (#60924)
* Merge 3002.6 bugfix changes (#59822)
* Pass `CI_RUN` as an environment variable to the test run.
This allows us to know if we're running the test suite under a CI
environment or not and adapt/adjust if needed
* Migrate `unit.setup` to PyTest
* Backport ae36b15 just for test_install.py
* Only skip tests on CI runs
* Always store git sha in _version.py during installation
* Fix PEP440 compliance.
The wheel metadata version 1.2 states that the package version MUST be
PEP440 compliant.
This means that instead of `3002.2-511-g033c53eccb`, the salt version
string should look like `3002.2+511.g033c53eccb`, a post release of
`3002.2` ahead by 511 commits with the git sha `033c53eccb`
* Fix and migrate `tests/unit/test_version.py` to PyTest
* Skip test if `easy_install` is not available
* We also need to be PEP440 compliant when there's no git history
* Allow extra_filerefs as sanitized kwargs for SSH client
* Fix regression on cmd.run when passing tuples as cmd
Co-authored-by: Alexander Graul <agraul@suse.com>
* Add unit tests to ensure cmd.run accepts tuples
* Add unit test to check for extra_filerefs on SSH opts
* Add changelog file
* Fix comment for test case
* Fix unit test to avoid failing on Windows
* Skip failing test on windows
* Fix test to work on Windows
* Add all ssh kwargs to sanitize_kwargs method
* Run pre-commit
* Fix pylint
* Fix cmdmod loglevel and module_names tests
* Fix pre-commit
* Skip ssh tests if binary does not exist
* Use setup_loader for cmdmod test
* Prevent argument injection in restartcheck
* Add changelog for restartcheck fix
* docs_3002.6
* Add back tests removed in merge
Co-authored-by: Pedro Algarvio <pedro@algarvio.me>
Co-authored-by: Megan Wilhite <megan.wilhite@gmail.com>
Co-authored-by: Bryce Larson <brycel@vmware.com>
Co-authored-by: Pablo Suárez Hernández <psuarezhernandez@suse.com>
Co-authored-by: Alexander Graul <agraul@suse.com>
Co-authored-by: Frode Gundersen <fgundersen@saltstack.com>
* Remove glance state module in favor of glance_image
* update wording in changelog
* bump deprecation warning to Silicon.
* Updating warnutil version to Phosphorous.
* Update salt/modules/keystone.py
Co-authored-by: Megan Wilhite <megan.wilhite@gmail.com>
* Check $HOMEBREW_PREFIX when linking against libcrypto
When loading `libcrypto`, Salt checks for a Homebrew installation of `openssl`
at Homebrew's default prefix of `/usr/local`. However, on Apple Silicon Macs,
Homebrew's default installation prefix is `/opt/homebrew`. On all platforms,
the prefix is configurable. If Salt doesn't find one of those `libcrypto`s,
it will fall back on the un-versioned `/usr/lib/libcrypto.dylib`, which will
cause the following crash:
Application Specific Information:
/usr/lib/libcrypto.dylib
abort() called
Invalid dylib load. Clients should not load the unversioned libcrypto dylib as it does not have a stable ABI.
This commit checks $HOMEBREW_PREFIX instead of hard-coding `/usr/local`.
* Add test case
* Add changelog for 59808
* Add changelog entry
* Make _find_libcrypto fail on Big Sur if it can't find a library
Right now, if `_find_libcrypto` can't find any externally-managed versions of
libcrypto, it will fall back on the pre-Catalina un-versioned system libcrypto.
This does not exist on Big Sur and it would be better to raise an exception
here rather than crashing later when trying to open it.
* Update _find_libcrypto tests
This commit simplifies the unit tests for _find_libcrypto by mocking out the
host's filesystem and testing the common libcrypto installations (brew, ports,
etc.) on Big Sur. It simplifies the tests for falling back on system versions
of libcrypto on previous versions of macOS.
* Fix description of test_find_libcrypto_with_system_before_catalina
* Patch sys.platform for test_rsax931 tests
* modules/match: add missing "minion_id" in Pillar example
The documented Pillar example for `match.filter_by` lacks the `minion_id` parameter. Without it, the assignment won't work as expected.
- fix documentation
- add tests:
- to prove the misbehavior of the documented example
- to prove the proper behaviour when supplying `minion_id`
- to ensure some misbehaviour observed with compound matchers doesn't occur
* Fix for issue #59773
- When instantiating the loader grab values of grains and pillars if
they are NamedLoaderContext instances.
- The loader uses a copy of opts.
- Impliment deepcopy on NamedLoaderContext instances.
* Add changelog for #59773
* _get_initial_pillar function returns pillar
* Fix linter issues
* Clean up test
* Bump deprecation release for neutron
* Uncomment Sulfur release name
* Removing the _ext_nodes deprecation warning and alias.
* Adding changelog.
* Renaming changelog file.
* Update 59804.removed
* Initial pass at fips_mode config option
* Fix pre-commit
* Fix tests and add changelog
* update docs 3003
* update docs 3003 - newline
* Fix warts in changelog
* update releasenotes 3003
* add ubuntu-2004-amd64 m2crypto pycryptodome and tcp tests
* add distro_arch
* changing the cloud platforms file missed in 1a9b7be0e2f300d87924731dc5816fd1000cd22b
* Update __utils__ calls to import utils in azure
* Add changelog for 59744
* Fix azure unit tests and move to pytest
* Use contextvars from site-packages for thin
If a contextvars package exists one of the site-packages locations use
it for the generated thin tarball. This overrides python's builtin
contextvars and allows salt-ssh to work with python <=3.6 even when the
master's python is >3.6 (Fixes #59942)
* Add regression test for #59942
* Add changelog for #59942
* Update filemap to include test_py_versions
* Fix broken thin tests
* Always install the `contextvars` backport, even on Py3.7+
Without this change, salt-ssh cannot target systems with Python <= 3.6
* Use salt-factories to handle the container. Don't override default roster
* Fix thin tests on windows
* No need to use warn log level here
* Fix getsitepackages for old virtualenv versions
* Add explicit pyobjc reqs
* Add back the passthrough stuff
* Remove a line so pre-commit will run
* Bugfix release docs
* Bugfix release docs
* Removing pip-compile log files
* Bump requirements to address a few security issues
* Address traceback on macOS
```
Traceback (most recent call last):
File "setup.py", line 1448, in <module>
setup(distclass=SaltDistribution)
File "/Users/jenkins/setup-tests/.venv/lib/python3.7/site-packages/setuptools/__init__.py", line 153, in setup
return distutils.core.setup(**attrs)
File "/opt/salt/lib/python3.7/distutils/core.py", line 108, in setup
_setup_distribution = dist = klass(attrs)
File "setup.py", line 1068, in __init__
self.update_metadata()
File "setup.py", line 1074, in update_metadata
attrvalue = getattr(self, attrname, None)
File "setup.py", line 1182, in _property_install_requires
install_requires += _parse_requirements_file(reqfile)
File "setup.py", line 270, in _parse_requirements_file
platform.python_version(), _parse_op(op), _parse_ver(ver)
File "setup.py", line 247, in _check_ver
return getattr(operator, "__{}__".format(op))(pyver, wanted)
File "/opt/salt/lib/python3.7/distutils/version.py", line 46, in __eq__
c = self._cmp(other)
File "/opt/salt/lib/python3.7/distutils/version.py", line 337, in _cmp
if self.version < other.version:
TypeError: '<' not supported between instances of 'str' and 'int'
```
* Replace `saltstack.com` with `saltproject.io` on URLs being tested
* Add back support to load old entrypoints by iterating instead of type checking
Fixes #59961
* Fix issue #59975
* Fix pillar serialization for jinja #60083
* Fix test
* Add changelog for #60083
* Update changelog and release for 3003.1
* Remove the changelog source refs
* Add connect to IPCMessageSubscriber's async_methods
Fixes #60049 by making sure an IPCMessageSubscriber that is wrapped by
SyncWrapper has a connect method that runs the coroutine rather than
returns a fugure.
* Add changelog for #60049
* Update 60049.fixed
* Fix coroutine spelling error
Co-authored-by: Wayne Werner <waynejwerner@gmail.com>
* IPC on windows cannot use socket paths
Fixes #60298
* Update Jinja2 and lxml due to security related bugfix releases
Jinja2
------
CVE-2020-28493
moderate severity
Vulnerable versions: < 2.11.3
Patched version: 2.11.3
This affects the package jinja2 from 0.0.0 and before 2.11.3. The ReDOS vulnerability of the regex is mainly due to the sub-pattern [a-zA-Z0-9.-]+.[a-zA-Z0-9.-]+ This issue can be mitigated by Markdown to format user content instead of the urlize filter, or by implementing request timeouts and limiting process memory.
lxml
----
CVE-2021-28957
moderate severity
Vulnerable versions: < 4.6.3
Patched version: 4.6.3
An XSS vulnerability was discovered in the python lxml clean module versions before 4.6.3. When disabling the safe_attrs_only and forms arguments, the Cleaner class does not remove the formaction attribute allowing for JS to bypass the sanitizer. A remote attacker could exploit this flaw to run arbitrary JS code on users who interact with incorrectly sanitized HTML. This issue is patched in lxml 4.6.3.
* fix github actions jobs on branch until bullseye comes out
* Upgrade to `six==1.16.0` to avoid problems on CI runs
```
13:59:02 nox > Session invoke-pre-commit was successful.
13:59:02 nox > Running session invoke-pre-commit
13:59:02 nox > pip install --progress-bar=off -r requirements/static/ci/py3.7/invoke.txt
13:59:02 Collecting blessings==1.7
13:59:02 Using cached blessings-1.7-py3-none-any.whl (18 kB)
13:59:02 Collecting invoke==1.4.1
13:59:02 Using cached invoke-1.4.1-py3-none-any.whl (210 kB)
13:59:02 Collecting pyyaml==5.3.1
13:59:02 Using cached PyYAML-5.3.1.tar.gz (269 kB)
13:59:02 Collecting six==1.15.0
13:59:02 Using cached six-1.15.0-py2.py3-none-any.whl (10 kB)
13:59:02 Building wheels for collected packages: pyyaml
13:59:02 Building wheel for pyyaml (setup.py) ... - \ | / - \ | done
13:59:02 Created wheel for pyyaml: filename=PyYAML-5.3.1-cp37-cp37m-linux_x86_64.whl size=546391 sha256=e42e1d66cc32087f4d33ceb81268c86b59f1a97029b19459f91b8d6ad1430167
13:59:02 Stored in directory: /var/jenkins/.cache/pip/wheels/5e/03/1e/e1e954795d6f35dfc7b637fe2277bff021303bd9570ecea653
13:59:02 Successfully built pyyaml
13:59:02 Installing collected packages: six, pyyaml, invoke, blessings
13:59:02 Attempting uninstall: six
13:59:02 Found existing installation: six 1.16.0
13:59:02 Uninstalling six-1.16.0:
13:59:02 ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: '/var/jenkins/.cache/pre-commit/repomw8oee1s/py_env-python3/lib/python3.7/site-packages/__pycache__/six.cpython-37.pyc'
13:59:02
13:59:02 nox > Command pip install --progress-bar=off -r requirements/static/ci/py3.7/invoke.txt failed with exit code 1
13:59:02 nox > Session invoke-pre-commit failed.
```
* add changelog for https://github.com/saltstack/salt/issues/59982
* Regression test for #56273
* Fix race condition in batch. #56273
* Add changelog for #56273
* Update salt/client/__init__.py
Co-authored-by: Pedro Algarvio <pedro@algarvio.me>
* Update doc for salt/client
* Update changelog/56273.fixed
Thoreau said, "Simplify, Simplify"
* Update docs
* Update docs
* Update CHANGELOG.md
* Update 3003.1.rst
* Ignore configuration for 'enable_fqdns_grains' for AIX, Solaris and Juniper
* Added changelog
* Let Mac OS Mojave run for 8 hours to avoid timeout
* Remove FreeBSD-12.2
* Use Popen for VT
* Still allow shell True
* Drop shlex split
* Add crypto re-init
* Fix pre-commit
* Do not call close in isalive
* Skip tests not valid on windows
* Cleanup things that are not really needed
* We do not support irix
* Fix pre-commit
* Remove commented out lines
* Add changelog for #60504
* Fix pre-commit issues
* pyupgrade does not remove six imports
* Fix OSErrors in some test cases
* Remove un-needed args processing
* Make state_running test more reliable
* Removing tmpfs from Fedora 33.
* Address leaks in fileserver caused by git backends
At this time we do not have the ability to fix the upstream memory leaks
in the gitfs backend providers. Work around their limitations by
periodically restarting the file server update proccess. This will at
least partially address #50313
* Remove un-used import
* Fix warts caused by black version
* Add changelog
* We don't need two changelogs
* Also pin the ``pip`` upgrade to be ``<21.2``
* Update the external ipaddress to the latest 3.9.5 version which has some security fixes. Updating the compat.p to use the vendored version if the python version is below 3.9.5 and only run the test_ipaddress.py tests if below 3.9.5.
* Adding changelog
* Requested changes.
* Add shh_timeout to ssh_kwargs
* move to with blocks
* one with block
* reight crypto
* add back test file
* add changelog
* change log file number
* add m2crypt support
* only check m2crpto
* Delete 60571.fixed
* add back log
* add newline
* add newline for log file
* Work around https://github.com/pypa/pip/pull/9450
See https://github.com/pypa/pip/issues/10212
* Drop six and Py2
* [3003.2] Add server alive (#60573)
* add server alive
* rename log
* change default alive time
* add requested changes
* format string
* reformat string again
* run pre
* customize
* space
* remove EOF dead space
* fix pre-commit
* run pre
Co-authored-by: Megan Wilhite <megan.wilhite@gmail.com>
* Changelog for 3003.2
* Man pages update for 3003.2
* Allow CVE entries in `changelog/`
* Add security type for towncrier changelog
* Add security type for changelog entries pre-commit check
* Pin to ``pip>=20.2.4,<21.2``
Refs https://github.com/pypa/pip/pull/9450
* Drop six and Py2
* Fix bug introduced in https://github.com/saltstack/salt/pull/59648
Fixes #60046
* Add changelog
* Fix doc builds
* fix release notes about dropping ubuntu 16.04
* update file client
* add changelog file
* update changelog
* Check permissions of minion config directory
* Fix some wording in the messagebox and in comments
* Add changelog
* Fix extension for changelog
* Add missing commas. It also worked, but now is better
* docs_3003.3
* fixing version numbers in man pages.
* removing newlines.
* removing newlines.
* Fixing release notes.
* Fix changelog file for 3003.2 release
* Fix test_state test using loader.context
* Re-add test_context test
* Allow Local System account, add timestamp
* swaping the git-source for vsphere-automation-sdk-python
* Remove destroy, handled in context manager
Co-authored-by: Daniel Wozniak <dwozniak@saltstack.com>
Co-authored-by: Pedro Algarvio <pedro@algarvio.me>
Co-authored-by: Bryce Larson <brycel@vmware.com>
Co-authored-by: Pablo Suárez Hernández <psuarezhernandez@suse.com>
Co-authored-by: Alexander Graul <agraul@suse.com>
Co-authored-by: Frode Gundersen <fgundersen@saltstack.com>
Co-authored-by: Gareth J. Greenaway <gareth@saltstack.com>
Co-authored-by: Gareth J. Greenaway <gareth@wiked.org>
Co-authored-by: Hoa-Long Tam <hoalong@apple.com>
Co-authored-by: krionbsd <krion@freebsd.org>
Co-authored-by: Elias Probst <e.probst@ssc-services.de>
Co-authored-by: Daniel A. Wozniak <dwozniak@vmware.com>
Co-authored-by: Frode Gundersen <frogunder@gmail.com>
Co-authored-by: twangboy <slee@saltstack.com>
Co-authored-by: twangboy <leesh@vmware.com>
Co-authored-by: ScriptAutomate <derek@icanteven.io>
Co-authored-by: Wayne Werner <waynejwerner@gmail.com>
Co-authored-by: David Murphy < dmurphy@saltstack.com>
Co-authored-by: Joe Eacott <jeacott@vmware.com>
Co-authored-by: cmcmarrow <charles.mcmarrow.4@gmail.com>
Co-authored-by: Twangboy <shane.d.lee@gmail.com>
2021-09-22 20:42:38 -04:00
|
|
|
check_owner:
|
|
|
|
# We need to verify the owner of the config directory (C:\salt\conf) to
|
|
|
|
# ensure the config has not been modified by an unknown user. The
|
|
|
|
# permissions and ownership of the directories is determined by the
|
|
|
|
# installer used to install Salt. The NullSoft installer requests Admin
|
|
|
|
# privileges so all directories are created with the Administrators
|
|
|
|
# Group (S-1-5-32-544) as the owner. The MSI installer, however, runs in
|
|
|
|
# the context of the Windows Installer service (msiserver), therefore
|
|
|
|
# all directories are created with the Local System account (S-1-5-18)
|
|
|
|
# as the owner.
|
|
|
|
#
|
|
|
|
# When Salt is launched it sets the root_dir (C:\salt) permissions as
|
|
|
|
# follows:
|
|
|
|
# - Owner: Administrators
|
|
|
|
# - Allow Perms:
|
|
|
|
# - Owner: Full Control
|
|
|
|
# - System: Full Control
|
|
|
|
# - Administrators: Full Control
|
|
|
|
#
|
|
|
|
# The conf_dir (C:\salt\conf) inherits Allow/Deny permissions from the
|
|
|
|
# parent, but NOT Ownership. The owner will be the Administrators Group
|
|
|
|
# if it was installed via NullSoft or the Local System account if it was
|
|
|
|
# installed via the MSI. Therefore valid owners for the conf_dir are
|
|
|
|
# both the Administrators group and the Local System account.
|
|
|
|
#
|
|
|
|
# An unprivileged account cannot change the owner of a directory by
|
|
|
|
# default. So, if the owner of the conf_dir is either the Administrators
|
|
|
|
# group or the Local System account, then we will trust it. Otherwise,
|
|
|
|
# we will display an option to abort the installation or to backup the
|
|
|
|
# untrusted config directory and continue with the default config. If
|
|
|
|
# running the install with the silent option (/S) it will backup the
|
|
|
|
# untrusted config directory and continue with the default config.
|
|
|
|
|
2021-06-08 10:32:12 -06:00
|
|
|
AccessControl::GetFileOwner /SID "$RootDir\conf"
|
Merge 3003.3 into master (#60924)
* Merge 3002.6 bugfix changes (#59822)
* Pass `CI_RUN` as an environment variable to the test run.
This allows us to know if we're running the test suite under a CI
environment or not and adapt/adjust if needed
* Migrate `unit.setup` to PyTest
* Backport ae36b15 just for test_install.py
* Only skip tests on CI runs
* Always store git sha in _version.py during installation
* Fix PEP440 compliance.
The wheel metadata version 1.2 states that the package version MUST be
PEP440 compliant.
This means that instead of `3002.2-511-g033c53eccb`, the salt version
string should look like `3002.2+511.g033c53eccb`, a post release of
`3002.2` ahead by 511 commits with the git sha `033c53eccb`
* Fix and migrate `tests/unit/test_version.py` to PyTest
* Skip test if `easy_install` is not available
* We also need to be PEP440 compliant when there's no git history
* Allow extra_filerefs as sanitized kwargs for SSH client
* Fix regression on cmd.run when passing tuples as cmd
Co-authored-by: Alexander Graul <agraul@suse.com>
* Add unit tests to ensure cmd.run accepts tuples
* Add unit test to check for extra_filerefs on SSH opts
* Add changelog file
* Fix comment for test case
* Fix unit test to avoid failing on Windows
* Skip failing test on windows
* Fix test to work on Windows
* Add all ssh kwargs to sanitize_kwargs method
* Run pre-commit
* Fix pylint
* Fix cmdmod loglevel and module_names tests
* Fix pre-commit
* Skip ssh tests if binary does not exist
* Use setup_loader for cmdmod test
* Prevent argument injection in restartcheck
* Add changelog for restartcheck fix
* docs_3002.6
* Add back tests removed in merge
Co-authored-by: Pedro Algarvio <pedro@algarvio.me>
Co-authored-by: Megan Wilhite <megan.wilhite@gmail.com>
Co-authored-by: Bryce Larson <brycel@vmware.com>
Co-authored-by: Pablo Suárez Hernández <psuarezhernandez@suse.com>
Co-authored-by: Alexander Graul <agraul@suse.com>
Co-authored-by: Frode Gundersen <fgundersen@saltstack.com>
* Remove glance state module in favor of glance_image
* update wording in changelog
* bump deprecation warning to Silicon.
* Updating warnutil version to Phosphorous.
* Update salt/modules/keystone.py
Co-authored-by: Megan Wilhite <megan.wilhite@gmail.com>
* Check $HOMEBREW_PREFIX when linking against libcrypto
When loading `libcrypto`, Salt checks for a Homebrew installation of `openssl`
at Homebrew's default prefix of `/usr/local`. However, on Apple Silicon Macs,
Homebrew's default installation prefix is `/opt/homebrew`. On all platforms,
the prefix is configurable. If Salt doesn't find one of those `libcrypto`s,
it will fall back on the un-versioned `/usr/lib/libcrypto.dylib`, which will
cause the following crash:
Application Specific Information:
/usr/lib/libcrypto.dylib
abort() called
Invalid dylib load. Clients should not load the unversioned libcrypto dylib as it does not have a stable ABI.
This commit checks $HOMEBREW_PREFIX instead of hard-coding `/usr/local`.
* Add test case
* Add changelog for 59808
* Add changelog entry
* Make _find_libcrypto fail on Big Sur if it can't find a library
Right now, if `_find_libcrypto` can't find any externally-managed versions of
libcrypto, it will fall back on the pre-Catalina un-versioned system libcrypto.
This does not exist on Big Sur and it would be better to raise an exception
here rather than crashing later when trying to open it.
* Update _find_libcrypto tests
This commit simplifies the unit tests for _find_libcrypto by mocking out the
host's filesystem and testing the common libcrypto installations (brew, ports,
etc.) on Big Sur. It simplifies the tests for falling back on system versions
of libcrypto on previous versions of macOS.
* Fix description of test_find_libcrypto_with_system_before_catalina
* Patch sys.platform for test_rsax931 tests
* modules/match: add missing "minion_id" in Pillar example
The documented Pillar example for `match.filter_by` lacks the `minion_id` parameter. Without it, the assignment won't work as expected.
- fix documentation
- add tests:
- to prove the misbehavior of the documented example
- to prove the proper behaviour when supplying `minion_id`
- to ensure some misbehaviour observed with compound matchers doesn't occur
* Fix for issue #59773
- When instantiating the loader grab values of grains and pillars if
they are NamedLoaderContext instances.
- The loader uses a copy of opts.
- Impliment deepcopy on NamedLoaderContext instances.
* Add changelog for #59773
* _get_initial_pillar function returns pillar
* Fix linter issues
* Clean up test
* Bump deprecation release for neutron
* Uncomment Sulfur release name
* Removing the _ext_nodes deprecation warning and alias.
* Adding changelog.
* Renaming changelog file.
* Update 59804.removed
* Initial pass at fips_mode config option
* Fix pre-commit
* Fix tests and add changelog
* update docs 3003
* update docs 3003 - newline
* Fix warts in changelog
* update releasenotes 3003
* add ubuntu-2004-amd64 m2crypto pycryptodome and tcp tests
* add distro_arch
* changing the cloud platforms file missed in 1a9b7be0e2f300d87924731dc5816fd1000cd22b
* Update __utils__ calls to import utils in azure
* Add changelog for 59744
* Fix azure unit tests and move to pytest
* Use contextvars from site-packages for thin
If a contextvars package exists one of the site-packages locations use
it for the generated thin tarball. This overrides python's builtin
contextvars and allows salt-ssh to work with python <=3.6 even when the
master's python is >3.6 (Fixes #59942)
* Add regression test for #59942
* Add changelog for #59942
* Update filemap to include test_py_versions
* Fix broken thin tests
* Always install the `contextvars` backport, even on Py3.7+
Without this change, salt-ssh cannot target systems with Python <= 3.6
* Use salt-factories to handle the container. Don't override default roster
* Fix thin tests on windows
* No need to use warn log level here
* Fix getsitepackages for old virtualenv versions
* Add explicit pyobjc reqs
* Add back the passthrough stuff
* Remove a line so pre-commit will run
* Bugfix release docs
* Bugfix release docs
* Removing pip-compile log files
* Bump requirements to address a few security issues
* Address traceback on macOS
```
Traceback (most recent call last):
File "setup.py", line 1448, in <module>
setup(distclass=SaltDistribution)
File "/Users/jenkins/setup-tests/.venv/lib/python3.7/site-packages/setuptools/__init__.py", line 153, in setup
return distutils.core.setup(**attrs)
File "/opt/salt/lib/python3.7/distutils/core.py", line 108, in setup
_setup_distribution = dist = klass(attrs)
File "setup.py", line 1068, in __init__
self.update_metadata()
File "setup.py", line 1074, in update_metadata
attrvalue = getattr(self, attrname, None)
File "setup.py", line 1182, in _property_install_requires
install_requires += _parse_requirements_file(reqfile)
File "setup.py", line 270, in _parse_requirements_file
platform.python_version(), _parse_op(op), _parse_ver(ver)
File "setup.py", line 247, in _check_ver
return getattr(operator, "__{}__".format(op))(pyver, wanted)
File "/opt/salt/lib/python3.7/distutils/version.py", line 46, in __eq__
c = self._cmp(other)
File "/opt/salt/lib/python3.7/distutils/version.py", line 337, in _cmp
if self.version < other.version:
TypeError: '<' not supported between instances of 'str' and 'int'
```
* Replace `saltstack.com` with `saltproject.io` on URLs being tested
* Add back support to load old entrypoints by iterating instead of type checking
Fixes #59961
* Fix issue #59975
* Fix pillar serialization for jinja #60083
* Fix test
* Add changelog for #60083
* Update changelog and release for 3003.1
* Remove the changelog source refs
* Add connect to IPCMessageSubscriber's async_methods
Fixes #60049 by making sure an IPCMessageSubscriber that is wrapped by
SyncWrapper has a connect method that runs the coroutine rather than
returns a fugure.
* Add changelog for #60049
* Update 60049.fixed
* Fix coroutine spelling error
Co-authored-by: Wayne Werner <waynejwerner@gmail.com>
* IPC on windows cannot use socket paths
Fixes #60298
* Update Jinja2 and lxml due to security related bugfix releases
Jinja2
------
CVE-2020-28493
moderate severity
Vulnerable versions: < 2.11.3
Patched version: 2.11.3
This affects the package jinja2 from 0.0.0 and before 2.11.3. The ReDOS vulnerability of the regex is mainly due to the sub-pattern [a-zA-Z0-9.-]+.[a-zA-Z0-9.-]+ This issue can be mitigated by Markdown to format user content instead of the urlize filter, or by implementing request timeouts and limiting process memory.
lxml
----
CVE-2021-28957
moderate severity
Vulnerable versions: < 4.6.3
Patched version: 4.6.3
An XSS vulnerability was discovered in the python lxml clean module versions before 4.6.3. When disabling the safe_attrs_only and forms arguments, the Cleaner class does not remove the formaction attribute allowing for JS to bypass the sanitizer. A remote attacker could exploit this flaw to run arbitrary JS code on users who interact with incorrectly sanitized HTML. This issue is patched in lxml 4.6.3.
* fix github actions jobs on branch until bullseye comes out
* Upgrade to `six==1.16.0` to avoid problems on CI runs
```
13:59:02 nox > Session invoke-pre-commit was successful.
13:59:02 nox > Running session invoke-pre-commit
13:59:02 nox > pip install --progress-bar=off -r requirements/static/ci/py3.7/invoke.txt
13:59:02 Collecting blessings==1.7
13:59:02 Using cached blessings-1.7-py3-none-any.whl (18 kB)
13:59:02 Collecting invoke==1.4.1
13:59:02 Using cached invoke-1.4.1-py3-none-any.whl (210 kB)
13:59:02 Collecting pyyaml==5.3.1
13:59:02 Using cached PyYAML-5.3.1.tar.gz (269 kB)
13:59:02 Collecting six==1.15.0
13:59:02 Using cached six-1.15.0-py2.py3-none-any.whl (10 kB)
13:59:02 Building wheels for collected packages: pyyaml
13:59:02 Building wheel for pyyaml (setup.py) ... - \ | / - \ | done
13:59:02 Created wheel for pyyaml: filename=PyYAML-5.3.1-cp37-cp37m-linux_x86_64.whl size=546391 sha256=e42e1d66cc32087f4d33ceb81268c86b59f1a97029b19459f91b8d6ad1430167
13:59:02 Stored in directory: /var/jenkins/.cache/pip/wheels/5e/03/1e/e1e954795d6f35dfc7b637fe2277bff021303bd9570ecea653
13:59:02 Successfully built pyyaml
13:59:02 Installing collected packages: six, pyyaml, invoke, blessings
13:59:02 Attempting uninstall: six
13:59:02 Found existing installation: six 1.16.0
13:59:02 Uninstalling six-1.16.0:
13:59:02 ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: '/var/jenkins/.cache/pre-commit/repomw8oee1s/py_env-python3/lib/python3.7/site-packages/__pycache__/six.cpython-37.pyc'
13:59:02
13:59:02 nox > Command pip install --progress-bar=off -r requirements/static/ci/py3.7/invoke.txt failed with exit code 1
13:59:02 nox > Session invoke-pre-commit failed.
```
* add changelog for https://github.com/saltstack/salt/issues/59982
* Regression test for #56273
* Fix race condition in batch. #56273
* Add changelog for #56273
* Update salt/client/__init__.py
Co-authored-by: Pedro Algarvio <pedro@algarvio.me>
* Update doc for salt/client
* Update changelog/56273.fixed
Thoreau said, "Simplify, Simplify"
* Update docs
* Update docs
* Update CHANGELOG.md
* Update 3003.1.rst
* Ignore configuration for 'enable_fqdns_grains' for AIX, Solaris and Juniper
* Added changelog
* Let Mac OS Mojave run for 8 hours to avoid timeout
* Remove FreeBSD-12.2
* Use Popen for VT
* Still allow shell True
* Drop shlex split
* Add crypto re-init
* Fix pre-commit
* Do not call close in isalive
* Skip tests not valid on windows
* Cleanup things that are not really needed
* We do not support irix
* Fix pre-commit
* Remove commented out lines
* Add changelog for #60504
* Fix pre-commit issues
* pyupgrade does not remove six imports
* Fix OSErrors in some test cases
* Remove un-needed args processing
* Make state_running test more reliable
* Removing tmpfs from Fedora 33.
* Address leaks in fileserver caused by git backends
At this time we do not have the ability to fix the upstream memory leaks
in the gitfs backend providers. Work around their limitations by
periodically restarting the file server update proccess. This will at
least partially address #50313
* Remove un-used import
* Fix warts caused by black version
* Add changelog
* We don't need two changelogs
* Also pin the ``pip`` upgrade to be ``<21.2``
* Update the external ipaddress to the latest 3.9.5 version which has some security fixes. Updating the compat.p to use the vendored version if the python version is below 3.9.5 and only run the test_ipaddress.py tests if below 3.9.5.
* Adding changelog
* Requested changes.
* Add shh_timeout to ssh_kwargs
* move to with blocks
* one with block
* reight crypto
* add back test file
* add changelog
* change log file number
* add m2crypt support
* only check m2crpto
* Delete 60571.fixed
* add back log
* add newline
* add newline for log file
* Work around https://github.com/pypa/pip/pull/9450
See https://github.com/pypa/pip/issues/10212
* Drop six and Py2
* [3003.2] Add server alive (#60573)
* add server alive
* rename log
* change default alive time
* add requested changes
* format string
* reformat string again
* run pre
* customize
* space
* remove EOF dead space
* fix pre-commit
* run pre
Co-authored-by: Megan Wilhite <megan.wilhite@gmail.com>
* Changelog for 3003.2
* Man pages update for 3003.2
* Allow CVE entries in `changelog/`
* Add security type for towncrier changelog
* Add security type for changelog entries pre-commit check
* Pin to ``pip>=20.2.4,<21.2``
Refs https://github.com/pypa/pip/pull/9450
* Drop six and Py2
* Fix bug introduced in https://github.com/saltstack/salt/pull/59648
Fixes #60046
* Add changelog
* Fix doc builds
* fix release notes about dropping ubuntu 16.04
* update file client
* add changelog file
* update changelog
* Check permissions of minion config directory
* Fix some wording in the messagebox and in comments
* Add changelog
* Fix extension for changelog
* Add missing commas. It also worked, but now is better
* docs_3003.3
* fixing version numbers in man pages.
* removing newlines.
* removing newlines.
* Fixing release notes.
* Fix changelog file for 3003.2 release
* Fix test_state test using loader.context
* Re-add test_context test
* Allow Local System account, add timestamp
* swaping the git-source for vsphere-automation-sdk-python
* Remove destroy, handled in context manager
Co-authored-by: Daniel Wozniak <dwozniak@saltstack.com>
Co-authored-by: Pedro Algarvio <pedro@algarvio.me>
Co-authored-by: Bryce Larson <brycel@vmware.com>
Co-authored-by: Pablo Suárez Hernández <psuarezhernandez@suse.com>
Co-authored-by: Alexander Graul <agraul@suse.com>
Co-authored-by: Frode Gundersen <fgundersen@saltstack.com>
Co-authored-by: Gareth J. Greenaway <gareth@saltstack.com>
Co-authored-by: Gareth J. Greenaway <gareth@wiked.org>
Co-authored-by: Hoa-Long Tam <hoalong@apple.com>
Co-authored-by: krionbsd <krion@freebsd.org>
Co-authored-by: Elias Probst <e.probst@ssc-services.de>
Co-authored-by: Daniel A. Wozniak <dwozniak@vmware.com>
Co-authored-by: Frode Gundersen <frogunder@gmail.com>
Co-authored-by: twangboy <slee@saltstack.com>
Co-authored-by: twangboy <leesh@vmware.com>
Co-authored-by: ScriptAutomate <derek@icanteven.io>
Co-authored-by: Wayne Werner <waynejwerner@gmail.com>
Co-authored-by: David Murphy < dmurphy@saltstack.com>
Co-authored-by: Joe Eacott <jeacott@vmware.com>
Co-authored-by: cmcmarrow <charles.mcmarrow.4@gmail.com>
Co-authored-by: Twangboy <shane.d.lee@gmail.com>
2021-09-22 20:42:38 -04:00
|
|
|
Pop $0
|
|
|
|
|
|
|
|
# Check for valid SIDs
|
|
|
|
StrCmp $0 "S-1-5-32-544" correct_owner # Administrators Group (NullSoft)
|
|
|
|
StrCmp $0 "S-1-5-18" correct_owner # Local System (MSI)
|
2022-10-18 16:57:41 -06:00
|
|
|
MessageBox MB_YESNO \
|
|
|
|
"Insecure config found at $RootDir\conf. If you continue, the \
|
|
|
|
config directory will be renamed to $RootDir\conf.insecure \
|
|
|
|
and the default config will be used. Continue?" \
|
|
|
|
/SD IDYES IDYES insecure_config
|
Merge 3003.3 into master (#60924)
* Merge 3002.6 bugfix changes (#59822)
* Pass `CI_RUN` as an environment variable to the test run.
This allows us to know if we're running the test suite under a CI
environment or not and adapt/adjust if needed
* Migrate `unit.setup` to PyTest
* Backport ae36b15 just for test_install.py
* Only skip tests on CI runs
* Always store git sha in _version.py during installation
* Fix PEP440 compliance.
The wheel metadata version 1.2 states that the package version MUST be
PEP440 compliant.
This means that instead of `3002.2-511-g033c53eccb`, the salt version
string should look like `3002.2+511.g033c53eccb`, a post release of
`3002.2` ahead by 511 commits with the git sha `033c53eccb`
* Fix and migrate `tests/unit/test_version.py` to PyTest
* Skip test if `easy_install` is not available
* We also need to be PEP440 compliant when there's no git history
* Allow extra_filerefs as sanitized kwargs for SSH client
* Fix regression on cmd.run when passing tuples as cmd
Co-authored-by: Alexander Graul <agraul@suse.com>
* Add unit tests to ensure cmd.run accepts tuples
* Add unit test to check for extra_filerefs on SSH opts
* Add changelog file
* Fix comment for test case
* Fix unit test to avoid failing on Windows
* Skip failing test on windows
* Fix test to work on Windows
* Add all ssh kwargs to sanitize_kwargs method
* Run pre-commit
* Fix pylint
* Fix cmdmod loglevel and module_names tests
* Fix pre-commit
* Skip ssh tests if binary does not exist
* Use setup_loader for cmdmod test
* Prevent argument injection in restartcheck
* Add changelog for restartcheck fix
* docs_3002.6
* Add back tests removed in merge
Co-authored-by: Pedro Algarvio <pedro@algarvio.me>
Co-authored-by: Megan Wilhite <megan.wilhite@gmail.com>
Co-authored-by: Bryce Larson <brycel@vmware.com>
Co-authored-by: Pablo Suárez Hernández <psuarezhernandez@suse.com>
Co-authored-by: Alexander Graul <agraul@suse.com>
Co-authored-by: Frode Gundersen <fgundersen@saltstack.com>
* Remove glance state module in favor of glance_image
* update wording in changelog
* bump deprecation warning to Silicon.
* Updating warnutil version to Phosphorous.
* Update salt/modules/keystone.py
Co-authored-by: Megan Wilhite <megan.wilhite@gmail.com>
* Check $HOMEBREW_PREFIX when linking against libcrypto
When loading `libcrypto`, Salt checks for a Homebrew installation of `openssl`
at Homebrew's default prefix of `/usr/local`. However, on Apple Silicon Macs,
Homebrew's default installation prefix is `/opt/homebrew`. On all platforms,
the prefix is configurable. If Salt doesn't find one of those `libcrypto`s,
it will fall back on the un-versioned `/usr/lib/libcrypto.dylib`, which will
cause the following crash:
Application Specific Information:
/usr/lib/libcrypto.dylib
abort() called
Invalid dylib load. Clients should not load the unversioned libcrypto dylib as it does not have a stable ABI.
This commit checks $HOMEBREW_PREFIX instead of hard-coding `/usr/local`.
* Add test case
* Add changelog for 59808
* Add changelog entry
* Make _find_libcrypto fail on Big Sur if it can't find a library
Right now, if `_find_libcrypto` can't find any externally-managed versions of
libcrypto, it will fall back on the pre-Catalina un-versioned system libcrypto.
This does not exist on Big Sur and it would be better to raise an exception
here rather than crashing later when trying to open it.
* Update _find_libcrypto tests
This commit simplifies the unit tests for _find_libcrypto by mocking out the
host's filesystem and testing the common libcrypto installations (brew, ports,
etc.) on Big Sur. It simplifies the tests for falling back on system versions
of libcrypto on previous versions of macOS.
* Fix description of test_find_libcrypto_with_system_before_catalina
* Patch sys.platform for test_rsax931 tests
* modules/match: add missing "minion_id" in Pillar example
The documented Pillar example for `match.filter_by` lacks the `minion_id` parameter. Without it, the assignment won't work as expected.
- fix documentation
- add tests:
- to prove the misbehavior of the documented example
- to prove the proper behaviour when supplying `minion_id`
- to ensure some misbehaviour observed with compound matchers doesn't occur
* Fix for issue #59773
- When instantiating the loader grab values of grains and pillars if
they are NamedLoaderContext instances.
- The loader uses a copy of opts.
- Impliment deepcopy on NamedLoaderContext instances.
* Add changelog for #59773
* _get_initial_pillar function returns pillar
* Fix linter issues
* Clean up test
* Bump deprecation release for neutron
* Uncomment Sulfur release name
* Removing the _ext_nodes deprecation warning and alias.
* Adding changelog.
* Renaming changelog file.
* Update 59804.removed
* Initial pass at fips_mode config option
* Fix pre-commit
* Fix tests and add changelog
* update docs 3003
* update docs 3003 - newline
* Fix warts in changelog
* update releasenotes 3003
* add ubuntu-2004-amd64 m2crypto pycryptodome and tcp tests
* add distro_arch
* changing the cloud platforms file missed in 1a9b7be0e2f300d87924731dc5816fd1000cd22b
* Update __utils__ calls to import utils in azure
* Add changelog for 59744
* Fix azure unit tests and move to pytest
* Use contextvars from site-packages for thin
If a contextvars package exists one of the site-packages locations use
it for the generated thin tarball. This overrides python's builtin
contextvars and allows salt-ssh to work with python <=3.6 even when the
master's python is >3.6 (Fixes #59942)
* Add regression test for #59942
* Add changelog for #59942
* Update filemap to include test_py_versions
* Fix broken thin tests
* Always install the `contextvars` backport, even on Py3.7+
Without this change, salt-ssh cannot target systems with Python <= 3.6
* Use salt-factories to handle the container. Don't override default roster
* Fix thin tests on windows
* No need to use warn log level here
* Fix getsitepackages for old virtualenv versions
* Add explicit pyobjc reqs
* Add back the passthrough stuff
* Remove a line so pre-commit will run
* Bugfix release docs
* Bugfix release docs
* Removing pip-compile log files
* Bump requirements to address a few security issues
* Address traceback on macOS
```
Traceback (most recent call last):
File "setup.py", line 1448, in <module>
setup(distclass=SaltDistribution)
File "/Users/jenkins/setup-tests/.venv/lib/python3.7/site-packages/setuptools/__init__.py", line 153, in setup
return distutils.core.setup(**attrs)
File "/opt/salt/lib/python3.7/distutils/core.py", line 108, in setup
_setup_distribution = dist = klass(attrs)
File "setup.py", line 1068, in __init__
self.update_metadata()
File "setup.py", line 1074, in update_metadata
attrvalue = getattr(self, attrname, None)
File "setup.py", line 1182, in _property_install_requires
install_requires += _parse_requirements_file(reqfile)
File "setup.py", line 270, in _parse_requirements_file
platform.python_version(), _parse_op(op), _parse_ver(ver)
File "setup.py", line 247, in _check_ver
return getattr(operator, "__{}__".format(op))(pyver, wanted)
File "/opt/salt/lib/python3.7/distutils/version.py", line 46, in __eq__
c = self._cmp(other)
File "/opt/salt/lib/python3.7/distutils/version.py", line 337, in _cmp
if self.version < other.version:
TypeError: '<' not supported between instances of 'str' and 'int'
```
* Replace `saltstack.com` with `saltproject.io` on URLs being tested
* Add back support to load old entrypoints by iterating instead of type checking
Fixes #59961
* Fix issue #59975
* Fix pillar serialization for jinja #60083
* Fix test
* Add changelog for #60083
* Update changelog and release for 3003.1
* Remove the changelog source refs
* Add connect to IPCMessageSubscriber's async_methods
Fixes #60049 by making sure an IPCMessageSubscriber that is wrapped by
SyncWrapper has a connect method that runs the coroutine rather than
returns a fugure.
* Add changelog for #60049
* Update 60049.fixed
* Fix coroutine spelling error
Co-authored-by: Wayne Werner <waynejwerner@gmail.com>
* IPC on windows cannot use socket paths
Fixes #60298
* Update Jinja2 and lxml due to security related bugfix releases
Jinja2
------
CVE-2020-28493
moderate severity
Vulnerable versions: < 2.11.3
Patched version: 2.11.3
This affects the package jinja2 from 0.0.0 and before 2.11.3. The ReDOS vulnerability of the regex is mainly due to the sub-pattern [a-zA-Z0-9.-]+.[a-zA-Z0-9.-]+ This issue can be mitigated by Markdown to format user content instead of the urlize filter, or by implementing request timeouts and limiting process memory.
lxml
----
CVE-2021-28957
moderate severity
Vulnerable versions: < 4.6.3
Patched version: 4.6.3
An XSS vulnerability was discovered in the python lxml clean module versions before 4.6.3. When disabling the safe_attrs_only and forms arguments, the Cleaner class does not remove the formaction attribute allowing for JS to bypass the sanitizer. A remote attacker could exploit this flaw to run arbitrary JS code on users who interact with incorrectly sanitized HTML. This issue is patched in lxml 4.6.3.
* fix github actions jobs on branch until bullseye comes out
* Upgrade to `six==1.16.0` to avoid problems on CI runs
```
13:59:02 nox > Session invoke-pre-commit was successful.
13:59:02 nox > Running session invoke-pre-commit
13:59:02 nox > pip install --progress-bar=off -r requirements/static/ci/py3.7/invoke.txt
13:59:02 Collecting blessings==1.7
13:59:02 Using cached blessings-1.7-py3-none-any.whl (18 kB)
13:59:02 Collecting invoke==1.4.1
13:59:02 Using cached invoke-1.4.1-py3-none-any.whl (210 kB)
13:59:02 Collecting pyyaml==5.3.1
13:59:02 Using cached PyYAML-5.3.1.tar.gz (269 kB)
13:59:02 Collecting six==1.15.0
13:59:02 Using cached six-1.15.0-py2.py3-none-any.whl (10 kB)
13:59:02 Building wheels for collected packages: pyyaml
13:59:02 Building wheel for pyyaml (setup.py) ... - \ | / - \ | done
13:59:02 Created wheel for pyyaml: filename=PyYAML-5.3.1-cp37-cp37m-linux_x86_64.whl size=546391 sha256=e42e1d66cc32087f4d33ceb81268c86b59f1a97029b19459f91b8d6ad1430167
13:59:02 Stored in directory: /var/jenkins/.cache/pip/wheels/5e/03/1e/e1e954795d6f35dfc7b637fe2277bff021303bd9570ecea653
13:59:02 Successfully built pyyaml
13:59:02 Installing collected packages: six, pyyaml, invoke, blessings
13:59:02 Attempting uninstall: six
13:59:02 Found existing installation: six 1.16.0
13:59:02 Uninstalling six-1.16.0:
13:59:02 ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: '/var/jenkins/.cache/pre-commit/repomw8oee1s/py_env-python3/lib/python3.7/site-packages/__pycache__/six.cpython-37.pyc'
13:59:02
13:59:02 nox > Command pip install --progress-bar=off -r requirements/static/ci/py3.7/invoke.txt failed with exit code 1
13:59:02 nox > Session invoke-pre-commit failed.
```
* add changelog for https://github.com/saltstack/salt/issues/59982
* Regression test for #56273
* Fix race condition in batch. #56273
* Add changelog for #56273
* Update salt/client/__init__.py
Co-authored-by: Pedro Algarvio <pedro@algarvio.me>
* Update doc for salt/client
* Update changelog/56273.fixed
Thoreau said, "Simplify, Simplify"
* Update docs
* Update docs
* Update CHANGELOG.md
* Update 3003.1.rst
* Ignore configuration for 'enable_fqdns_grains' for AIX, Solaris and Juniper
* Added changelog
* Let Mac OS Mojave run for 8 hours to avoid timeout
* Remove FreeBSD-12.2
* Use Popen for VT
* Still allow shell True
* Drop shlex split
* Add crypto re-init
* Fix pre-commit
* Do not call close in isalive
* Skip tests not valid on windows
* Cleanup things that are not really needed
* We do not support irix
* Fix pre-commit
* Remove commented out lines
* Add changelog for #60504
* Fix pre-commit issues
* pyupgrade does not remove six imports
* Fix OSErrors in some test cases
* Remove un-needed args processing
* Make state_running test more reliable
* Removing tmpfs from Fedora 33.
* Address leaks in fileserver caused by git backends
At this time we do not have the ability to fix the upstream memory leaks
in the gitfs backend providers. Work around their limitations by
periodically restarting the file server update proccess. This will at
least partially address #50313
* Remove un-used import
* Fix warts caused by black version
* Add changelog
* We don't need two changelogs
* Also pin the ``pip`` upgrade to be ``<21.2``
* Update the external ipaddress to the latest 3.9.5 version which has some security fixes. Updating the compat.p to use the vendored version if the python version is below 3.9.5 and only run the test_ipaddress.py tests if below 3.9.5.
* Adding changelog
* Requested changes.
* Add shh_timeout to ssh_kwargs
* move to with blocks
* one with block
* reight crypto
* add back test file
* add changelog
* change log file number
* add m2crypt support
* only check m2crpto
* Delete 60571.fixed
* add back log
* add newline
* add newline for log file
* Work around https://github.com/pypa/pip/pull/9450
See https://github.com/pypa/pip/issues/10212
* Drop six and Py2
* [3003.2] Add server alive (#60573)
* add server alive
* rename log
* change default alive time
* add requested changes
* format string
* reformat string again
* run pre
* customize
* space
* remove EOF dead space
* fix pre-commit
* run pre
Co-authored-by: Megan Wilhite <megan.wilhite@gmail.com>
* Changelog for 3003.2
* Man pages update for 3003.2
* Allow CVE entries in `changelog/`
* Add security type for towncrier changelog
* Add security type for changelog entries pre-commit check
* Pin to ``pip>=20.2.4,<21.2``
Refs https://github.com/pypa/pip/pull/9450
* Drop six and Py2
* Fix bug introduced in https://github.com/saltstack/salt/pull/59648
Fixes #60046
* Add changelog
* Fix doc builds
* fix release notes about dropping ubuntu 16.04
* update file client
* add changelog file
* update changelog
* Check permissions of minion config directory
* Fix some wording in the messagebox and in comments
* Add changelog
* Fix extension for changelog
* Add missing commas. It also worked, but now is better
* docs_3003.3
* fixing version numbers in man pages.
* removing newlines.
* removing newlines.
* Fixing release notes.
* Fix changelog file for 3003.2 release
* Fix test_state test using loader.context
* Re-add test_context test
* Allow Local System account, add timestamp
* swaping the git-source for vsphere-automation-sdk-python
* Remove destroy, handled in context manager
Co-authored-by: Daniel Wozniak <dwozniak@saltstack.com>
Co-authored-by: Pedro Algarvio <pedro@algarvio.me>
Co-authored-by: Bryce Larson <brycel@vmware.com>
Co-authored-by: Pablo Suárez Hernández <psuarezhernandez@suse.com>
Co-authored-by: Alexander Graul <agraul@suse.com>
Co-authored-by: Frode Gundersen <fgundersen@saltstack.com>
Co-authored-by: Gareth J. Greenaway <gareth@saltstack.com>
Co-authored-by: Gareth J. Greenaway <gareth@wiked.org>
Co-authored-by: Hoa-Long Tam <hoalong@apple.com>
Co-authored-by: krionbsd <krion@freebsd.org>
Co-authored-by: Elias Probst <e.probst@ssc-services.de>
Co-authored-by: Daniel A. Wozniak <dwozniak@vmware.com>
Co-authored-by: Frode Gundersen <frogunder@gmail.com>
Co-authored-by: twangboy <slee@saltstack.com>
Co-authored-by: twangboy <leesh@vmware.com>
Co-authored-by: ScriptAutomate <derek@icanteven.io>
Co-authored-by: Wayne Werner <waynejwerner@gmail.com>
Co-authored-by: David Murphy < dmurphy@saltstack.com>
Co-authored-by: Joe Eacott <jeacott@vmware.com>
Co-authored-by: cmcmarrow <charles.mcmarrow.4@gmail.com>
Co-authored-by: Twangboy <shane.d.lee@gmail.com>
2021-09-22 20:42:38 -04:00
|
|
|
Abort
|
|
|
|
|
|
|
|
insecure_config:
|
|
|
|
# Backing up insecure config
|
2021-06-08 10:32:12 -06:00
|
|
|
Rename "$RootDir\conf" "$RootDir\conf.insecure-${TIME_STAMP}"
|
|
|
|
Goto confNotFound
|
Merge 3003.3 into master (#60924)
* Merge 3002.6 bugfix changes (#59822)
* Pass `CI_RUN` as an environment variable to the test run.
This allows us to know if we're running the test suite under a CI
environment or not and adapt/adjust if needed
* Migrate `unit.setup` to PyTest
* Backport ae36b15 just for test_install.py
* Only skip tests on CI runs
* Always store git sha in _version.py during installation
* Fix PEP440 compliance.
The wheel metadata version 1.2 states that the package version MUST be
PEP440 compliant.
This means that instead of `3002.2-511-g033c53eccb`, the salt version
string should look like `3002.2+511.g033c53eccb`, a post release of
`3002.2` ahead by 511 commits with the git sha `033c53eccb`
* Fix and migrate `tests/unit/test_version.py` to PyTest
* Skip test if `easy_install` is not available
* We also need to be PEP440 compliant when there's no git history
* Allow extra_filerefs as sanitized kwargs for SSH client
* Fix regression on cmd.run when passing tuples as cmd
Co-authored-by: Alexander Graul <agraul@suse.com>
* Add unit tests to ensure cmd.run accepts tuples
* Add unit test to check for extra_filerefs on SSH opts
* Add changelog file
* Fix comment for test case
* Fix unit test to avoid failing on Windows
* Skip failing test on windows
* Fix test to work on Windows
* Add all ssh kwargs to sanitize_kwargs method
* Run pre-commit
* Fix pylint
* Fix cmdmod loglevel and module_names tests
* Fix pre-commit
* Skip ssh tests if binary does not exist
* Use setup_loader for cmdmod test
* Prevent argument injection in restartcheck
* Add changelog for restartcheck fix
* docs_3002.6
* Add back tests removed in merge
Co-authored-by: Pedro Algarvio <pedro@algarvio.me>
Co-authored-by: Megan Wilhite <megan.wilhite@gmail.com>
Co-authored-by: Bryce Larson <brycel@vmware.com>
Co-authored-by: Pablo Suárez Hernández <psuarezhernandez@suse.com>
Co-authored-by: Alexander Graul <agraul@suse.com>
Co-authored-by: Frode Gundersen <fgundersen@saltstack.com>
* Remove glance state module in favor of glance_image
* update wording in changelog
* bump deprecation warning to Silicon.
* Updating warnutil version to Phosphorous.
* Update salt/modules/keystone.py
Co-authored-by: Megan Wilhite <megan.wilhite@gmail.com>
* Check $HOMEBREW_PREFIX when linking against libcrypto
When loading `libcrypto`, Salt checks for a Homebrew installation of `openssl`
at Homebrew's default prefix of `/usr/local`. However, on Apple Silicon Macs,
Homebrew's default installation prefix is `/opt/homebrew`. On all platforms,
the prefix is configurable. If Salt doesn't find one of those `libcrypto`s,
it will fall back on the un-versioned `/usr/lib/libcrypto.dylib`, which will
cause the following crash:
Application Specific Information:
/usr/lib/libcrypto.dylib
abort() called
Invalid dylib load. Clients should not load the unversioned libcrypto dylib as it does not have a stable ABI.
This commit checks $HOMEBREW_PREFIX instead of hard-coding `/usr/local`.
* Add test case
* Add changelog for 59808
* Add changelog entry
* Make _find_libcrypto fail on Big Sur if it can't find a library
Right now, if `_find_libcrypto` can't find any externally-managed versions of
libcrypto, it will fall back on the pre-Catalina un-versioned system libcrypto.
This does not exist on Big Sur and it would be better to raise an exception
here rather than crashing later when trying to open it.
* Update _find_libcrypto tests
This commit simplifies the unit tests for _find_libcrypto by mocking out the
host's filesystem and testing the common libcrypto installations (brew, ports,
etc.) on Big Sur. It simplifies the tests for falling back on system versions
of libcrypto on previous versions of macOS.
* Fix description of test_find_libcrypto_with_system_before_catalina
* Patch sys.platform for test_rsax931 tests
* modules/match: add missing "minion_id" in Pillar example
The documented Pillar example for `match.filter_by` lacks the `minion_id` parameter. Without it, the assignment won't work as expected.
- fix documentation
- add tests:
- to prove the misbehavior of the documented example
- to prove the proper behaviour when supplying `minion_id`
- to ensure some misbehaviour observed with compound matchers doesn't occur
* Fix for issue #59773
- When instantiating the loader grab values of grains and pillars if
they are NamedLoaderContext instances.
- The loader uses a copy of opts.
- Impliment deepcopy on NamedLoaderContext instances.
* Add changelog for #59773
* _get_initial_pillar function returns pillar
* Fix linter issues
* Clean up test
* Bump deprecation release for neutron
* Uncomment Sulfur release name
* Removing the _ext_nodes deprecation warning and alias.
* Adding changelog.
* Renaming changelog file.
* Update 59804.removed
* Initial pass at fips_mode config option
* Fix pre-commit
* Fix tests and add changelog
* update docs 3003
* update docs 3003 - newline
* Fix warts in changelog
* update releasenotes 3003
* add ubuntu-2004-amd64 m2crypto pycryptodome and tcp tests
* add distro_arch
* changing the cloud platforms file missed in 1a9b7be0e2f300d87924731dc5816fd1000cd22b
* Update __utils__ calls to import utils in azure
* Add changelog for 59744
* Fix azure unit tests and move to pytest
* Use contextvars from site-packages for thin
If a contextvars package exists one of the site-packages locations use
it for the generated thin tarball. This overrides python's builtin
contextvars and allows salt-ssh to work with python <=3.6 even when the
master's python is >3.6 (Fixes #59942)
* Add regression test for #59942
* Add changelog for #59942
* Update filemap to include test_py_versions
* Fix broken thin tests
* Always install the `contextvars` backport, even on Py3.7+
Without this change, salt-ssh cannot target systems with Python <= 3.6
* Use salt-factories to handle the container. Don't override default roster
* Fix thin tests on windows
* No need to use warn log level here
* Fix getsitepackages for old virtualenv versions
* Add explicit pyobjc reqs
* Add back the passthrough stuff
* Remove a line so pre-commit will run
* Bugfix release docs
* Bugfix release docs
* Removing pip-compile log files
* Bump requirements to address a few security issues
* Address traceback on macOS
```
Traceback (most recent call last):
File "setup.py", line 1448, in <module>
setup(distclass=SaltDistribution)
File "/Users/jenkins/setup-tests/.venv/lib/python3.7/site-packages/setuptools/__init__.py", line 153, in setup
return distutils.core.setup(**attrs)
File "/opt/salt/lib/python3.7/distutils/core.py", line 108, in setup
_setup_distribution = dist = klass(attrs)
File "setup.py", line 1068, in __init__
self.update_metadata()
File "setup.py", line 1074, in update_metadata
attrvalue = getattr(self, attrname, None)
File "setup.py", line 1182, in _property_install_requires
install_requires += _parse_requirements_file(reqfile)
File "setup.py", line 270, in _parse_requirements_file
platform.python_version(), _parse_op(op), _parse_ver(ver)
File "setup.py", line 247, in _check_ver
return getattr(operator, "__{}__".format(op))(pyver, wanted)
File "/opt/salt/lib/python3.7/distutils/version.py", line 46, in __eq__
c = self._cmp(other)
File "/opt/salt/lib/python3.7/distutils/version.py", line 337, in _cmp
if self.version < other.version:
TypeError: '<' not supported between instances of 'str' and 'int'
```
* Replace `saltstack.com` with `saltproject.io` on URLs being tested
* Add back support to load old entrypoints by iterating instead of type checking
Fixes #59961
* Fix issue #59975
* Fix pillar serialization for jinja #60083
* Fix test
* Add changelog for #60083
* Update changelog and release for 3003.1
* Remove the changelog source refs
* Add connect to IPCMessageSubscriber's async_methods
Fixes #60049 by making sure an IPCMessageSubscriber that is wrapped by
SyncWrapper has a connect method that runs the coroutine rather than
returns a fugure.
* Add changelog for #60049
* Update 60049.fixed
* Fix coroutine spelling error
Co-authored-by: Wayne Werner <waynejwerner@gmail.com>
* IPC on windows cannot use socket paths
Fixes #60298
* Update Jinja2 and lxml due to security related bugfix releases
Jinja2
------
CVE-2020-28493
moderate severity
Vulnerable versions: < 2.11.3
Patched version: 2.11.3
This affects the package jinja2 from 0.0.0 and before 2.11.3. The ReDOS vulnerability of the regex is mainly due to the sub-pattern [a-zA-Z0-9.-]+.[a-zA-Z0-9.-]+ This issue can be mitigated by Markdown to format user content instead of the urlize filter, or by implementing request timeouts and limiting process memory.
lxml
----
CVE-2021-28957
moderate severity
Vulnerable versions: < 4.6.3
Patched version: 4.6.3
An XSS vulnerability was discovered in the python lxml clean module versions before 4.6.3. When disabling the safe_attrs_only and forms arguments, the Cleaner class does not remove the formaction attribute allowing for JS to bypass the sanitizer. A remote attacker could exploit this flaw to run arbitrary JS code on users who interact with incorrectly sanitized HTML. This issue is patched in lxml 4.6.3.
* fix github actions jobs on branch until bullseye comes out
* Upgrade to `six==1.16.0` to avoid problems on CI runs
```
13:59:02 nox > Session invoke-pre-commit was successful.
13:59:02 nox > Running session invoke-pre-commit
13:59:02 nox > pip install --progress-bar=off -r requirements/static/ci/py3.7/invoke.txt
13:59:02 Collecting blessings==1.7
13:59:02 Using cached blessings-1.7-py3-none-any.whl (18 kB)
13:59:02 Collecting invoke==1.4.1
13:59:02 Using cached invoke-1.4.1-py3-none-any.whl (210 kB)
13:59:02 Collecting pyyaml==5.3.1
13:59:02 Using cached PyYAML-5.3.1.tar.gz (269 kB)
13:59:02 Collecting six==1.15.0
13:59:02 Using cached six-1.15.0-py2.py3-none-any.whl (10 kB)
13:59:02 Building wheels for collected packages: pyyaml
13:59:02 Building wheel for pyyaml (setup.py) ... - \ | / - \ | done
13:59:02 Created wheel for pyyaml: filename=PyYAML-5.3.1-cp37-cp37m-linux_x86_64.whl size=546391 sha256=e42e1d66cc32087f4d33ceb81268c86b59f1a97029b19459f91b8d6ad1430167
13:59:02 Stored in directory: /var/jenkins/.cache/pip/wheels/5e/03/1e/e1e954795d6f35dfc7b637fe2277bff021303bd9570ecea653
13:59:02 Successfully built pyyaml
13:59:02 Installing collected packages: six, pyyaml, invoke, blessings
13:59:02 Attempting uninstall: six
13:59:02 Found existing installation: six 1.16.0
13:59:02 Uninstalling six-1.16.0:
13:59:02 ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: '/var/jenkins/.cache/pre-commit/repomw8oee1s/py_env-python3/lib/python3.7/site-packages/__pycache__/six.cpython-37.pyc'
13:59:02
13:59:02 nox > Command pip install --progress-bar=off -r requirements/static/ci/py3.7/invoke.txt failed with exit code 1
13:59:02 nox > Session invoke-pre-commit failed.
```
* add changelog for https://github.com/saltstack/salt/issues/59982
* Regression test for #56273
* Fix race condition in batch. #56273
* Add changelog for #56273
* Update salt/client/__init__.py
Co-authored-by: Pedro Algarvio <pedro@algarvio.me>
* Update doc for salt/client
* Update changelog/56273.fixed
Thoreau said, "Simplify, Simplify"
* Update docs
* Update docs
* Update CHANGELOG.md
* Update 3003.1.rst
* Ignore configuration for 'enable_fqdns_grains' for AIX, Solaris and Juniper
* Added changelog
* Let Mac OS Mojave run for 8 hours to avoid timeout
* Remove FreeBSD-12.2
* Use Popen for VT
* Still allow shell True
* Drop shlex split
* Add crypto re-init
* Fix pre-commit
* Do not call close in isalive
* Skip tests not valid on windows
* Cleanup things that are not really needed
* We do not support irix
* Fix pre-commit
* Remove commented out lines
* Add changelog for #60504
* Fix pre-commit issues
* pyupgrade does not remove six imports
* Fix OSErrors in some test cases
* Remove un-needed args processing
* Make state_running test more reliable
* Removing tmpfs from Fedora 33.
* Address leaks in fileserver caused by git backends
At this time we do not have the ability to fix the upstream memory leaks
in the gitfs backend providers. Work around their limitations by
periodically restarting the file server update proccess. This will at
least partially address #50313
* Remove un-used import
* Fix warts caused by black version
* Add changelog
* We don't need two changelogs
* Also pin the ``pip`` upgrade to be ``<21.2``
* Update the external ipaddress to the latest 3.9.5 version which has some security fixes. Updating the compat.p to use the vendored version if the python version is below 3.9.5 and only run the test_ipaddress.py tests if below 3.9.5.
* Adding changelog
* Requested changes.
* Add shh_timeout to ssh_kwargs
* move to with blocks
* one with block
* reight crypto
* add back test file
* add changelog
* change log file number
* add m2crypt support
* only check m2crpto
* Delete 60571.fixed
* add back log
* add newline
* add newline for log file
* Work around https://github.com/pypa/pip/pull/9450
See https://github.com/pypa/pip/issues/10212
* Drop six and Py2
* [3003.2] Add server alive (#60573)
* add server alive
* rename log
* change default alive time
* add requested changes
* format string
* reformat string again
* run pre
* customize
* space
* remove EOF dead space
* fix pre-commit
* run pre
Co-authored-by: Megan Wilhite <megan.wilhite@gmail.com>
* Changelog for 3003.2
* Man pages update for 3003.2
* Allow CVE entries in `changelog/`
* Add security type for towncrier changelog
* Add security type for changelog entries pre-commit check
* Pin to ``pip>=20.2.4,<21.2``
Refs https://github.com/pypa/pip/pull/9450
* Drop six and Py2
* Fix bug introduced in https://github.com/saltstack/salt/pull/59648
Fixes #60046
* Add changelog
* Fix doc builds
* fix release notes about dropping ubuntu 16.04
* update file client
* add changelog file
* update changelog
* Check permissions of minion config directory
* Fix some wording in the messagebox and in comments
* Add changelog
* Fix extension for changelog
* Add missing commas. It also worked, but now is better
* docs_3003.3
* fixing version numbers in man pages.
* removing newlines.
* removing newlines.
* Fixing release notes.
* Fix changelog file for 3003.2 release
* Fix test_state test using loader.context
* Re-add test_context test
* Allow Local System account, add timestamp
* swaping the git-source for vsphere-automation-sdk-python
* Remove destroy, handled in context manager
Co-authored-by: Daniel Wozniak <dwozniak@saltstack.com>
Co-authored-by: Pedro Algarvio <pedro@algarvio.me>
Co-authored-by: Bryce Larson <brycel@vmware.com>
Co-authored-by: Pablo Suárez Hernández <psuarezhernandez@suse.com>
Co-authored-by: Alexander Graul <agraul@suse.com>
Co-authored-by: Frode Gundersen <fgundersen@saltstack.com>
Co-authored-by: Gareth J. Greenaway <gareth@saltstack.com>
Co-authored-by: Gareth J. Greenaway <gareth@wiked.org>
Co-authored-by: Hoa-Long Tam <hoalong@apple.com>
Co-authored-by: krionbsd <krion@freebsd.org>
Co-authored-by: Elias Probst <e.probst@ssc-services.de>
Co-authored-by: Daniel A. Wozniak <dwozniak@vmware.com>
Co-authored-by: Frode Gundersen <frogunder@gmail.com>
Co-authored-by: twangboy <slee@saltstack.com>
Co-authored-by: twangboy <leesh@vmware.com>
Co-authored-by: ScriptAutomate <derek@icanteven.io>
Co-authored-by: Wayne Werner <waynejwerner@gmail.com>
Co-authored-by: David Murphy < dmurphy@saltstack.com>
Co-authored-by: Joe Eacott <jeacott@vmware.com>
Co-authored-by: cmcmarrow <charles.mcmarrow.4@gmail.com>
Co-authored-by: Twangboy <shane.d.lee@gmail.com>
2021-09-22 20:42:38 -04:00
|
|
|
|
|
|
|
correct_owner:
|
|
|
|
StrCpy $ExistingConfigFound 1
|
2021-06-08 10:32:12 -06:00
|
|
|
FileOpen $0 "$RootDir\conf\minion" r
|
2016-08-08 23:23:04 +00:00
|
|
|
|
|
|
|
confLoop:
|
2017-12-19 10:28:52 -07:00
|
|
|
ClearErrors # clear Errors
|
|
|
|
FileRead $0 $1 # read the next line
|
|
|
|
IfErrors EndOfFile # error is probably EOF
|
|
|
|
${StrLoc} $2 $1 "master:" ">" # find `master:` starting at the beginning
|
|
|
|
${If} $2 == 0 # if it found it in the first position, then it is defined
|
|
|
|
${StrStrAdv} $2 $1 "master: " ">" ">" "0" "0" "0" # read everything after `master: `
|
|
|
|
${Trim} $2 $2 # trim white space
|
|
|
|
${If} $2 == "" # if it's empty, it's probably a list of masters
|
2017-09-20 15:38:54 -06:00
|
|
|
masterLoop:
|
2017-12-19 10:28:52 -07:00
|
|
|
ClearErrors # clear Errors
|
|
|
|
FileRead $0 $1 # read the next line
|
|
|
|
IfErrors EndOfFile # error is probably EOF
|
|
|
|
${StrStrAdv} $2 $1 "- " ">" ">" "0" "0" "0" # read everything after `- `
|
|
|
|
${Trim} $2 $2 # trim white space
|
|
|
|
${IfNot} $2 == "" # if the line is not empty, we found something
|
2021-06-25 16:08:16 -06:00
|
|
|
${If} $MasterHost_Cfg == "" # if the config setting is empty
|
|
|
|
StrCpy $MasterHost_Cfg $2 # make the first item the new entry
|
2017-09-20 15:38:54 -06:00
|
|
|
${Else}
|
2021-06-25 16:08:16 -06:00
|
|
|
StrCpy $MasterHost_Cfg "$MasterHost_Cfg,$2" # Append the new master, comma separated
|
2017-09-20 15:38:54 -06:00
|
|
|
${EndIf}
|
2017-12-19 10:28:52 -07:00
|
|
|
Goto masterLoop # check the next one
|
2017-09-20 15:38:54 -06:00
|
|
|
${EndIf}
|
|
|
|
${Else}
|
2021-06-25 16:08:16 -06:00
|
|
|
StrCpy $MasterHost_Cfg $2 # a single master entry
|
2016-08-08 23:23:04 +00:00
|
|
|
${EndIf}
|
2017-09-20 15:38:54 -06:00
|
|
|
${EndIf}
|
2016-08-08 23:23:04 +00:00
|
|
|
|
|
|
|
${StrLoc} $2 $1 "id:" ">"
|
|
|
|
${If} $2 == 0
|
|
|
|
${StrStrAdv} $2 $1 "id: " ">" ">" "0" "0" "0"
|
|
|
|
${Trim} $2 $2
|
2021-06-25 16:08:16 -06:00
|
|
|
StrCpy $MinionName_Cfg $2
|
2016-08-08 23:23:04 +00:00
|
|
|
${EndIf}
|
|
|
|
|
|
|
|
Goto confLoop
|
|
|
|
|
|
|
|
EndOfFile:
|
|
|
|
FileClose $0
|
|
|
|
|
2021-06-08 10:32:12 -06:00
|
|
|
confNotFound:
|
2016-08-08 23:23:04 +00:00
|
|
|
|
2017-09-20 15:38:54 -06:00
|
|
|
# Set Default Config Values if not found
|
2021-06-25 16:08:16 -06:00
|
|
|
${If} $MasterHost_Cfg == ""
|
|
|
|
StrCpy $MasterHost_Cfg "salt"
|
2017-09-20 15:38:54 -06:00
|
|
|
${EndIf}
|
2021-06-25 16:08:16 -06:00
|
|
|
${If} $MinionName_Cfg == ""
|
|
|
|
StrCpy $MinionName_Cfg "hostname"
|
2017-09-20 15:38:54 -06:00
|
|
|
${EndIf}
|
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
FunctionEnd
|
|
|
|
|
|
|
|
|
2017-12-19 10:28:52 -07:00
|
|
|
Var cfg_line
|
|
|
|
Var chk_line
|
|
|
|
Var lst_check
|
2016-08-08 23:23:04 +00:00
|
|
|
Function updateMinionConfig
|
|
|
|
|
|
|
|
ClearErrors
|
2021-06-08 10:32:12 -06:00
|
|
|
FileOpen $0 "$RootDir\conf\minion" "r" # open target file for reading
|
2017-12-19 10:28:52 -07:00
|
|
|
GetTempFileName $R0 # get new temp file name
|
|
|
|
FileOpen $1 $R0 "w" # open temp file for writing
|
|
|
|
|
|
|
|
StrCpy $ConfigWriteMaster 1 # write the master config value
|
|
|
|
StrCpy $ConfigWriteMinion 1 # write the minion config value
|
|
|
|
|
|
|
|
loop: # loop through each line
|
|
|
|
FileRead $0 $cfg_line # read line from target file
|
|
|
|
IfErrors done # end if errors are encountered (end of line)
|
|
|
|
|
|
|
|
loop_after_read:
|
|
|
|
StrCpy $lst_check 0 # list check not performed
|
|
|
|
|
2021-06-25 16:08:16 -06:00
|
|
|
${If} $MasterHost == "" # if master is empty
|
|
|
|
${OrIf} $MasterHost == "salt" # or if master is 'salt'
|
2017-12-19 10:28:52 -07:00
|
|
|
StrCpy $ConfigWriteMaster 0 # no need to write master config
|
|
|
|
${EndIf} # close if statement
|
2021-06-25 16:08:16 -06:00
|
|
|
${If} $MinionName == "" # if minion is empty
|
|
|
|
${OrIf} $MinionName == "hostname" # and if minion is not 'hostname'
|
2017-12-19 10:28:52 -07:00
|
|
|
StrCpy $ConfigWriteMinion 0 # no need to write minion config
|
|
|
|
${EndIf} # close if statement
|
|
|
|
|
|
|
|
${If} $ConfigWriteMaster == 1 # if we need to write master config
|
|
|
|
|
|
|
|
${StrLoc} $3 $cfg_line "master:" ">" # where is 'master:' in this line
|
|
|
|
${If} $3 == 0 # is it in the first...
|
|
|
|
${OrIf} $3 == 1 # or second position (account for comments)
|
|
|
|
|
2021-10-12 13:41:16 -06:00
|
|
|
${Explode} $9 "," $MasterHost # Split the hostname on commas, $9 is the number of items found
|
2017-12-19 10:28:52 -07:00
|
|
|
${If} $9 == 1 # 1 means only a single master was passed
|
2021-06-25 16:08:16 -06:00
|
|
|
StrCpy $cfg_line "master: $MasterHost$\r$\n" # write the master
|
2017-12-19 10:28:52 -07:00
|
|
|
${Else} # make a multi-master entry
|
|
|
|
StrCpy $cfg_line "master:" # make the first line "master:"
|
|
|
|
|
|
|
|
loop_explode: # start a loop to go through the list in the config
|
|
|
|
pop $8 # pop the next item off the stack
|
|
|
|
${Trim} $8 $8 # trim any whitespace
|
|
|
|
StrCpy $cfg_line "$cfg_line$\r$\n - $8" # add it to the master variable ($2)
|
|
|
|
IntOp $9 $9 - 1 # decrement the list count
|
|
|
|
${If} $9 >= 1 # if it's not 0
|
|
|
|
Goto loop_explode # do it again
|
|
|
|
${EndIf} # close if statement
|
|
|
|
StrCpy $cfg_line "$cfg_line$\r$\n" # Make sure there's a new line at the end
|
|
|
|
|
|
|
|
# Remove remaining items in list
|
|
|
|
${While} $lst_check == 0 # while list item found
|
|
|
|
FileRead $0 $chk_line # read line from target file
|
|
|
|
IfErrors done # end if errors are encountered (end of line)
|
|
|
|
${StrLoc} $3 $chk_line " - " ">" # where is 'master:' in this line
|
|
|
|
${If} $3 == "" # is it in the first...
|
|
|
|
StrCpy $lst_check 1 # list check performed and finished
|
|
|
|
${EndIf}
|
|
|
|
${EndWhile}
|
|
|
|
|
|
|
|
${EndIf} # close if statement
|
|
|
|
|
|
|
|
StrCpy $ConfigWriteMaster 0 # master value written to config
|
|
|
|
|
|
|
|
${EndIf} # close if statement
|
|
|
|
${EndIf} # close if statement
|
|
|
|
|
|
|
|
${If} $ConfigWriteMinion == 1 # if we need to write minion config
|
|
|
|
${StrLoc} $3 $cfg_line "id:" ">" # where is 'id:' in this line
|
|
|
|
${If} $3 == 0 # is it in the first...
|
|
|
|
${OrIf} $3 == 1 # or the second position (account for comments)
|
2021-06-25 16:08:16 -06:00
|
|
|
StrCpy $cfg_line "id: $MinionName$\r$\n" # write the minion config setting
|
2017-12-19 10:28:52 -07:00
|
|
|
StrCpy $ConfigWriteMinion 0 # minion value written to config
|
|
|
|
${EndIf} # close if statement
|
|
|
|
${EndIf} # close if statement
|
|
|
|
|
|
|
|
FileWrite $1 $cfg_line # write changed or unchanged line to temp file
|
|
|
|
|
|
|
|
${If} $lst_check == 1 # master not written to the config
|
|
|
|
StrCpy $cfg_line $chk_line
|
|
|
|
Goto loop_after_read # A loop was performed, skip the next read
|
|
|
|
${EndIf} # close if statement
|
|
|
|
|
|
|
|
Goto loop # check the next line in the config file
|
2016-08-08 23:23:04 +00:00
|
|
|
|
|
|
|
done:
|
2017-12-19 10:28:52 -07:00
|
|
|
ClearErrors
|
|
|
|
# Does master config still need to be written
|
|
|
|
${If} $ConfigWriteMaster == 1 # master not written to the config
|
|
|
|
|
2021-10-12 13:41:16 -06:00
|
|
|
${Explode} $9 "," $MasterHost # split the hostname on commas, $9 is the number of items found
|
2017-12-19 10:28:52 -07:00
|
|
|
${If} $9 == 1 # 1 means only a single master was passed
|
2021-06-25 16:08:16 -06:00
|
|
|
StrCpy $cfg_line "master: $MasterHost" # write the master
|
2017-12-19 10:28:52 -07:00
|
|
|
${Else} # make a multi-master entry
|
|
|
|
StrCpy $cfg_line "master:" # make the first line "master:"
|
|
|
|
|
|
|
|
loop_explode_2: # start a loop to go through the list in the config
|
|
|
|
pop $8 # pop the next item off the stack
|
|
|
|
${Trim} $8 $8 # trim any whitespace
|
|
|
|
StrCpy $cfg_line "$cfg_line$\r$\n - $8" # add it to the master variable ($2)
|
|
|
|
IntOp $9 $9 - 1 # decrement the list count
|
|
|
|
${If} $9 >= 1 # if it's not 0
|
|
|
|
Goto loop_explode_2 # do it again
|
|
|
|
${EndIf} # close if statement
|
|
|
|
${EndIf} # close if statement
|
|
|
|
FileWrite $1 $cfg_line # write changed or unchanged line to temp file
|
|
|
|
|
|
|
|
${EndIf} # close if statement
|
|
|
|
|
|
|
|
${If} $ConfigWriteMinion == 1 # minion ID not written to the config
|
2021-06-25 16:08:16 -06:00
|
|
|
StrCpy $cfg_line "$\r$\nid: $MinionName" # write the minion config setting
|
2017-12-19 10:28:52 -07:00
|
|
|
FileWrite $1 $cfg_line # write changed or unchanged line to temp file
|
|
|
|
${EndIf} # close if statement
|
|
|
|
|
|
|
|
FileClose $0 # close target file
|
|
|
|
FileClose $1 # close temp file
|
2021-06-08 10:32:12 -06:00
|
|
|
Delete "$RootDir\conf\minion" # delete target file
|
|
|
|
CopyFiles /SILENT $R0 "$RootDir\conf\minion" # copy temp file to target file
|
2017-12-19 10:28:52 -07:00
|
|
|
Delete $R0 # delete temp file
|
2016-08-08 23:23:04 +00:00
|
|
|
|
|
|
|
FunctionEnd
|
|
|
|
|
|
|
|
|
2021-06-08 10:32:12 -06:00
|
|
|
Function un.parseUninstallerCommandLineSwitches
|
|
|
|
|
|
|
|
# Load the parameters
|
|
|
|
${GetParameters} $R0
|
|
|
|
|
|
|
|
# Display Help
|
|
|
|
ClearErrors
|
|
|
|
${GetOptions} $R0 "/?" $R1
|
|
|
|
IfErrors display_un_help_not_found
|
|
|
|
|
2022-10-18 16:57:41 -06:00
|
|
|
# Using a message box here
|
|
|
|
# I couldn't get the console output to work with the uninstaller
|
|
|
|
MessageBox MB_OK \
|
|
|
|
"Help for Salt Minion Uninstallation\
|
|
|
|
$\n\
|
|
|
|
$\n==============================================\
|
|
|
|
$\n\
|
|
|
|
$\n/delete-install-dir$\tDelete the installation directory that contains the\
|
|
|
|
$\n$\t$\tconfig and pki directories. Default is to not delete\
|
|
|
|
$\n$\t$\tthe installation directory\
|
|
|
|
$\n\
|
|
|
|
$\n$\t$\tThis applies to old method installations where\
|
|
|
|
$\n$\t$\tthe root directory and the installation directory\
|
|
|
|
$\n$\t$\tare the same (C:\salt)\
|
|
|
|
$\n\
|
|
|
|
$\n/delete-root-dir$\tDelete the root directory that contains the config\
|
2023-08-23 14:14:57 -06:00
|
|
|
$\n$\t$\tand pki directories. Also removes the installation directory\
|
|
|
|
$\n$\t$\tincluding the extras directory. Default is to not delete\
|
2022-10-18 16:57:41 -06:00
|
|
|
$\n\
|
|
|
|
$\n$\t$\tThis applies to new method installations where the\
|
|
|
|
$\n$\t$\troot directory is in ProgramData and the installation\
|
|
|
|
$\n$\t$\tdirectory is user defined, usually Program Files\
|
|
|
|
$\n\
|
|
|
|
$\n/S$\t$\tUninstall Salt silently\
|
|
|
|
$\n\
|
|
|
|
$\n/?$\t$\tDisplay this help screen\
|
|
|
|
$\n\
|
|
|
|
$\n--------------------------------------------------------------------------------------------\
|
|
|
|
$\n\
|
|
|
|
$\nExamples:\
|
|
|
|
$\n\
|
|
|
|
$\n$\tuninst.exe /S\
|
|
|
|
$\n\
|
|
|
|
$\n$\tuninst.exe /S /delete-root-dir\
|
|
|
|
$\n\
|
|
|
|
$\n=============================================="
|
2021-06-08 10:32:12 -06:00
|
|
|
|
2022-10-18 16:57:41 -06:00
|
|
|
Abort
|
2021-06-08 10:32:12 -06:00
|
|
|
|
|
|
|
display_un_help_not_found:
|
|
|
|
|
|
|
|
# Load the parameters
|
|
|
|
${GetParameters} $R0
|
|
|
|
|
|
|
|
# Uninstaller: Remove Installation Directory
|
|
|
|
ClearErrors
|
|
|
|
${GetOptions} $R0 "/delete-install-dir" $R1
|
|
|
|
IfErrors delete_install_dir_not_found
|
2022-10-18 16:57:41 -06:00
|
|
|
StrCpy $DeleteInstallDir 1
|
2021-06-08 10:32:12 -06:00
|
|
|
delete_install_dir_not_found:
|
|
|
|
|
|
|
|
# Uninstaller: Remove Root Directory
|
|
|
|
ClearErrors
|
|
|
|
${GetOptions} $R0 "/delete-root-dir" $R1
|
|
|
|
IfErrors delete_root_dir_not_found
|
2022-10-18 16:57:41 -06:00
|
|
|
StrCpy $DeleteRootDir 1
|
2021-06-08 10:32:12 -06:00
|
|
|
delete_root_dir_not_found:
|
|
|
|
|
|
|
|
FunctionEnd
|
|
|
|
|
|
|
|
|
|
|
|
Function parseInstallerCommandLineSwitches
|
2016-08-08 23:23:04 +00:00
|
|
|
|
2017-09-12 12:49:20 -06:00
|
|
|
# Load the parameters
|
2016-08-08 23:23:04 +00:00
|
|
|
${GetParameters} $R0
|
|
|
|
|
2017-09-20 15:38:54 -06:00
|
|
|
# Display Help
|
|
|
|
ClearErrors
|
|
|
|
${GetOptions} $R0 "/?" $R1
|
|
|
|
IfErrors display_help_not_found
|
|
|
|
|
2022-10-18 16:57:41 -06:00
|
|
|
System::Call 'kernel32::GetStdHandle(i -11)i.r0'
|
|
|
|
System::Call 'kernel32::AttachConsole(i -1)i.r1'
|
|
|
|
${If} $0 = 0
|
|
|
|
${OrIf} $1 = 0
|
|
|
|
System::Call 'kernel32::AllocConsole()'
|
2017-09-20 15:38:54 -06:00
|
|
|
System::Call 'kernel32::GetStdHandle(i -11)i.r0'
|
2022-10-18 16:57:41 -06:00
|
|
|
${EndIf}
|
|
|
|
FileWrite $0 "$\n"
|
|
|
|
FileWrite $0 "$\n"
|
|
|
|
FileWrite $0 "Help for Salt Minion installation$\n"
|
|
|
|
FileWrite $0 "===============================================================================$\n"
|
|
|
|
FileWrite $0 "$\n"
|
|
|
|
FileWrite $0 "/minion-name=$\t$\tA string value to set the minion name. Default value is$\n"
|
|
|
|
FileWrite $0 "$\t$\t$\t'hostname'. Setting the minion name causes the installer$\n"
|
|
|
|
FileWrite $0 "$\t$\t$\tto use the default config or a custom config if defined$\n"
|
|
|
|
FileWrite $0 "$\n"
|
|
|
|
FileWrite $0 "/master=$\t$\tA string value to set the IP address or hostname of the$\n"
|
|
|
|
FileWrite $0 "$\t$\t$\tmaster. Default value is 'salt'. You may pass a single$\n"
|
|
|
|
FileWrite $0 "$\t$\t$\tmaster or a comma-separated list of masters. Setting$\n"
|
|
|
|
FileWrite $0 "$\t$\t$\tthe master will cause the installer to use the default$\n"
|
|
|
|
FileWrite $0 "$\t$\t$\tconfig or a custom config if defined$\n"
|
|
|
|
FileWrite $0 "$\n"
|
|
|
|
FileWrite $0 "/start-minion=$\t$\t1 will start the minion service, 0 will not.$\n"
|
|
|
|
FileWrite $0 "$\t$\t$\tDefault is 1$\n"
|
|
|
|
FileWrite $0 "$\n"
|
|
|
|
FileWrite $0 "/start-minion-delayed$\tSet the minion start type to 'Automatic (Delayed Start)'$\n"
|
|
|
|
FileWrite $0 "$\n"
|
|
|
|
FileWrite $0 "/default-config$\t$\tOverwrite the existing config if present with the$\n"
|
|
|
|
FileWrite $0 "$\t$\t$\tdefault config for salt. Default is to use the existing$\n"
|
|
|
|
FileWrite $0 "$\t$\t$\tconfig if present. If /master and/or /minion-name is$\n"
|
|
|
|
FileWrite $0 "$\t$\t$\tpassed, those values will be used to update the new$\n"
|
|
|
|
FileWrite $0 "$\t$\t$\tdefault config$\n"
|
|
|
|
FileWrite $0 "$\n"
|
|
|
|
FileWrite $0 "$\t$\t$\tAny existing config will be backed up by appending$\n"
|
|
|
|
FileWrite $0 "$\t$\t$\ta timestamp and a .bak extension. That includes$\n"
|
|
|
|
FileWrite $0 "$\t$\t$\tthe minion file and the minion.d directory$\n"
|
|
|
|
FileWrite $0 "$\n"
|
|
|
|
FileWrite $0 "/custom-config=$\t$\tA string value specifying the name of a custom config$\n"
|
|
|
|
FileWrite $0 "$\t$\t$\tfile in the same path as the installer or the full path$\n"
|
|
|
|
FileWrite $0 "$\t$\t$\tto a custom config file. If /master and/or /minion-name$\n"
|
|
|
|
FileWrite $0 "$\t$\t$\tis passed, those values will be used to update the new$\n"
|
|
|
|
FileWrite $0 "$\t$\t$\tcustom config$\n"
|
|
|
|
FileWrite $0 "$\n"
|
|
|
|
FileWrite $0 "$\t$\t$\tAny existing config will be backed up by appending$\n"
|
|
|
|
FileWrite $0 "$\t$\t$\ta timestamp and a .bak extension. That includes$\n"
|
|
|
|
FileWrite $0 "$\t$\t$\tthe minion file and the minion.d directory$\n"
|
|
|
|
FileWrite $0 "$\n"
|
|
|
|
FileWrite $0 "/install-dir=$\t$\tSpecify the installation location for the Salt binaries.$\n"
|
|
|
|
FileWrite $0 "$\t$\t$\tThis will be ignored for existing installations.$\n"
|
|
|
|
FileWrite $0 "$\n"
|
|
|
|
FileWrite $0 "/move-config$\t$\tIf config is found at C:\salt it will be moved to %ProgramData%$\n"
|
|
|
|
FileWrite $0 "$\n"
|
|
|
|
FileWrite $0 "/S$\t$\t$\tInstall Salt silently$\n"
|
|
|
|
FileWrite $0 "$\n"
|
|
|
|
FileWrite $0 "/?$\t$\t$\tDisplay this help screen$\n"
|
|
|
|
FileWrite $0 "$\n"
|
|
|
|
FileWrite $0 "-------------------------------------------------------------------------------$\n"
|
|
|
|
FileWrite $0 "$\n"
|
|
|
|
FileWrite $0 "Examples:$\n"
|
|
|
|
FileWrite $0 "$\n"
|
|
|
|
FileWrite $0 " $EXEFILE /S$\n"
|
|
|
|
FileWrite $0 "$\n"
|
|
|
|
FileWrite $0 " $EXEFILE /S /minion-name=myminion /master=master.mydomain.com /start-minion-delayed$\n"
|
|
|
|
FileWrite $0 "$\n"
|
|
|
|
FileWrite $0 " $EXEFILE /S /minion-name=myminion /master=master.mydomain.com /install-dir=$\"C:\Software\salt$\"$\n"
|
|
|
|
FileWrite $0 "$\n"
|
|
|
|
FileWrite $0 "===============================================================================$\n"
|
|
|
|
FileWrite $0 "$\n"
|
|
|
|
System::Free $0
|
|
|
|
System::Free $1
|
|
|
|
System::Call 'kernel32::FreeConsole()'
|
|
|
|
|
|
|
|
# Give the user back the prompt
|
|
|
|
!define VK_RETURN 0x0D ; Enter Key
|
|
|
|
!define KEYEVENTF_EXTENDEDKEY 0x0001
|
|
|
|
!define KEYEVENTF_KEYUP 0x0002
|
|
|
|
System::Call "user32::keybd_event(i${VK_RETURN}, i0x45, i${KEYEVENTF_EXTENDEDKEY}|0, i0)"
|
|
|
|
System::Call "user32::keybd_event(i${VK_RETURN}, i0x45, i${KEYEVENTF_EXTENDEDKEY}|${KEYEVENTF_KEYUP}, i0)"
|
|
|
|
Abort
|
2017-12-19 10:28:52 -07:00
|
|
|
|
2017-09-20 15:38:54 -06:00
|
|
|
display_help_not_found:
|
|
|
|
|
|
|
|
# Set default value for Use Existing Config
|
2021-06-25 16:08:16 -06:00
|
|
|
StrCpy $ConfigType "Existing Config"
|
2017-09-20 15:38:54 -06:00
|
|
|
|
2017-09-12 12:49:20 -06:00
|
|
|
# Check for start-minion switches
|
|
|
|
# /start-service is to be deprecated, so we must check for both
|
2016-08-08 23:23:04 +00:00
|
|
|
${GetOptions} $R0 "/start-service=" $R1
|
|
|
|
${GetOptions} $R0 "/start-minion=" $R2
|
|
|
|
|
|
|
|
# Service: Start Salt Minion
|
|
|
|
${IfNot} $R2 == ""
|
2017-09-12 12:49:20 -06:00
|
|
|
# If start-minion was passed something, then set it
|
2016-08-08 23:23:04 +00:00
|
|
|
StrCpy $StartMinion $R2
|
|
|
|
${ElseIfNot} $R1 == ""
|
2017-09-12 12:49:20 -06:00
|
|
|
# If start-service was passed something, then set StartMinion to that
|
2016-08-08 23:23:04 +00:00
|
|
|
StrCpy $StartMinion $R1
|
2022-10-18 16:57:41 -06:00
|
|
|
MessageBox MB_OK|MB_ICONINFORMATION \
|
|
|
|
"`/start-service` is being deprecated. Please use `/start-minion` \
|
|
|
|
instead." /SD IDOK
|
2016-08-08 23:23:04 +00:00
|
|
|
${Else}
|
2017-09-12 12:49:20 -06:00
|
|
|
# Otherwise default to 1
|
2016-08-08 23:23:04 +00:00
|
|
|
StrCpy $StartMinion 1
|
|
|
|
${EndIf}
|
|
|
|
|
2017-03-31 15:12:41 -06:00
|
|
|
# Service: Minion Startup Type Delayed
|
2017-09-12 12:49:20 -06:00
|
|
|
ClearErrors
|
2016-10-04 14:18:42 -06:00
|
|
|
${GetOptions} $R0 "/start-minion-delayed" $R1
|
|
|
|
IfErrors start_minion_delayed_not_found
|
2022-10-18 16:57:41 -06:00
|
|
|
StrCpy $StartMinionDelayed 1
|
2016-10-04 14:18:42 -06:00
|
|
|
start_minion_delayed_not_found:
|
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
# Minion Config: Master IP/Name
|
2017-09-20 15:38:54 -06:00
|
|
|
# If setting master, we don't want to use existing config
|
2016-08-08 23:23:04 +00:00
|
|
|
${GetOptions} $R0 "/master=" $R1
|
|
|
|
${IfNot} $R1 == ""
|
2021-06-25 16:08:16 -06:00
|
|
|
StrCpy $MasterHost $R1
|
|
|
|
StrCpy $ConfigType "Default Config"
|
|
|
|
${ElseIf} $MasterHost == ""
|
|
|
|
StrCpy $MasterHost "salt"
|
2016-08-08 23:23:04 +00:00
|
|
|
${EndIf}
|
|
|
|
|
|
|
|
# Minion Config: Minion ID
|
2017-09-20 15:38:54 -06:00
|
|
|
# If setting minion id, we don't want to use existing config
|
2016-08-08 23:23:04 +00:00
|
|
|
${GetOptions} $R0 "/minion-name=" $R1
|
|
|
|
${IfNot} $R1 == ""
|
2021-06-25 16:08:16 -06:00
|
|
|
StrCpy $MinionName $R1
|
|
|
|
StrCpy $ConfigType "Default Config"
|
|
|
|
${ElseIf} $MinionName == ""
|
|
|
|
StrCpy $MinionName "hostname"
|
2016-08-08 23:23:04 +00:00
|
|
|
${EndIf}
|
|
|
|
|
2017-12-19 10:28:52 -07:00
|
|
|
# Use Default Config
|
2021-06-08 10:32:12 -06:00
|
|
|
ClearErrors
|
2017-12-19 10:28:52 -07:00
|
|
|
${GetOptions} $R0 "/default-config" $R1
|
|
|
|
IfErrors default_config_not_found
|
2022-10-18 16:57:41 -06:00
|
|
|
StrCpy $ConfigType "Default Config"
|
2017-12-19 10:28:52 -07:00
|
|
|
default_config_not_found:
|
|
|
|
|
|
|
|
# Use Custom Config
|
|
|
|
# Set default value for Use Custom Config
|
2021-06-25 16:08:16 -06:00
|
|
|
StrCpy $CustomConfig ""
|
2017-12-19 10:28:52 -07:00
|
|
|
# Existing config will get a `.bak` extension
|
|
|
|
${GetOptions} $R0 "/custom-config=" $R1
|
2017-09-20 15:38:54 -06:00
|
|
|
${IfNot} $R1 == ""
|
2021-06-08 10:32:12 -06:00
|
|
|
# A Custom Config was passed, set it
|
2021-06-25 16:08:16 -06:00
|
|
|
StrCpy $CustomConfig $R1
|
|
|
|
StrCpy $ConfigType "Custom Config"
|
2017-09-20 15:38:54 -06:00
|
|
|
${EndIf}
|
|
|
|
|
2021-06-08 10:32:12 -06:00
|
|
|
# Set Install Location
|
|
|
|
ClearErrors
|
2021-08-31 12:26:19 -06:00
|
|
|
${GetOptions} $R0 "/install-dir=" $R1
|
2021-06-08 10:32:12 -06:00
|
|
|
${IfNot} $R1 == ""
|
|
|
|
# A Custom Location was passed, set it
|
|
|
|
StrCpy $CustomLocation $R1
|
|
|
|
${EndIf}
|
|
|
|
|
2021-06-25 16:08:16 -06:00
|
|
|
# Set Move Config Option
|
|
|
|
ClearErrors
|
|
|
|
${GetOptions} $R0 "/move-config" $R1
|
|
|
|
IfErrors move_config_not_found
|
2022-10-18 16:57:41 -06:00
|
|
|
StrCpy $MoveExistingConfig 1
|
2021-06-25 16:08:16 -06:00
|
|
|
move_config_not_found:
|
|
|
|
|
2016-08-08 23:23:04 +00:00
|
|
|
FunctionEnd
|