Commit Graph

114 Commits

Author SHA1 Message Date
John Randolph ffe6722d87 wrap os.listdir() to decode utf-8 unicode into unicode objects
change all code locations using os.listdir() to use munkicommon.listdir()



git-svn-id: http://munki.googlecode.com/svn/trunk@941 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-11-30 16:28:45 +00:00
Greg Neagle 7ab92fa3cc Changes to simplify processing logic and allow items that are in both managed_updates and optional_installs to be removed by the user.
git-svn-id: http://munki.googlecode.com/svn/trunk@933 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-11-29 21:33:03 +00:00
Greg Neagle f790b71aea Add support for uninstall scripts embedded into pkginfo.
git-svn-id: http://munki.googlecode.com/svn/trunk@925 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-11-22 20:00:15 +00:00
Justin McWilliams e190a2e9d5 Make all munkicommon.display_* methods accept a message and optional arguments
to concatenate to the message (using Python concat ala logging.* methods); drop unicode chars.

Fix problem (line 338 of updatecheck.py) where attempting to string-concat
unicode characters before sending to munkicommon.display_debug1() causes
UnicodeDecodeError.



git-svn-id: http://munki.googlecode.com/svn/trunk@921 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-11-18 21:03:01 +00:00
Greg Neagle 01bbf73ef2 Typo fix in updatecheck.py;
munkicommon - in display_warning and display_error, make sure it is a string that is appended to report['Warnings'] or report['Errors']

git-svn-id: http://munki.googlecode.com/svn/trunk@919 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-11-18 16:38:44 +00:00
Greg Neagle 3a18a9fd9e installer.py: account for case where no valid installer item is found on a disk image
updatecheck.py: provide more feedback when pkg items are rejected due to incompatible os or architecture.

git-svn-id: http://munki.googlecode.com/svn/trunk@918 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-11-17 21:57:21 +00:00
Greg Neagle a7cc6e5457 Alter debug output when comparing OS version and architecture.
git-svn-id: http://munki.googlecode.com/svn/trunk@915 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-11-15 18:40:16 +00:00
Greg Neagle 74f5ce6d50 installer.py: consider list of installs for blocking applications only if no 'blocking_applications' key in pkginfo.
git-svn-id: http://munki.googlecode.com/svn/trunk@909 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-11-11 23:27:13 +00:00
Greg Neagle cb4cff3c1e Fix for edge case where item is in SelfServeManifest to be installed, but in another manifest for removal. Previously, item would be uninstalled, then reinstalled, then uninstalled... Now it's uninstalled and the entry in SelfServeManifest is ignored.
git-svn-id: http://munki.googlecode.com/svn/trunk@908 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-11-11 22:24:39 +00:00
John Randolph 44d2ab28ab fix typo in MSUAppDelegate
prevent curl from using non-authenticated anon DH cipher types, 
  e.g. TLS_DH_anon_WITH_AES_256_CBC_SHA

(seems that curl --ciphers HIGH selects high # bit ciphers, but
not necessarily only secure ones)



git-svn-id: http://munki.googlecode.com/svn/trunk@899 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-11-10 19:27:54 +00:00
Greg Neagle 87036833e1 Added support for blocking_applications that cause a forced_install or forced_uninstall to be skipped if any application in the list is running.
git-svn-id: http://munki.googlecode.com/svn/trunk@898 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-11-10 01:00:44 +00:00
John Randolph f4dc95a10d Add --ciphers HIGH to limit curl ssl ciphers usage
as discussed previously in 
http://code.google.com/p/munki/issues/detail?id=40



git-svn-id: http://munki.googlecode.com/svn/trunk@886 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-11-02 21:33:40 +00:00
Greg Neagle 7233ea384c Fix for downloading uninstaller items as supported for Adobe CS4 uninstalls. This was accidentally broken during the optimization of package integrity checking (so it was my fault, not Justin's!)
git-svn-id: http://munki.googlecode.com/svn/trunk@875 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-10-27 20:38:11 +00:00
Greg Neagle ab2118c3ed Additional debugging messages in updatecheck; record items that are managed_updates to avoid items disappearing from the optional_installs list if they are also in managed_updates.
git-svn-id: http://munki.googlecode.com/svn/trunk@874 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-10-26 23:45:03 +00:00
Greg Neagle 963c5c319b Fix a too-long line in updatecheck.py
git-svn-id: http://munki.googlecode.com/svn/trunk@864 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-10-26 15:35:07 +00:00
Greg Neagle d693e7ac4b For optional installs, if there is not enough disk space to install the item, do not display a warning so we don't get spurious warnings in ManagedSoftwareUpdateReport.plist
git-svn-id: http://munki.googlecode.com/svn/trunk@855 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-10-25 17:41:53 +00:00
John Randolph be912bca2f merge finalized branch /get-apps-nfs-detect into trunk
git-svn-id: http://munki.googlecode.com/svn/trunk@854 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-10-25 17:23:23 +00:00
Greg Neagle 1e4c4c74dc Clean up some vestiges of the support for aliases.
If there's a download error, make sure what gets sent to munkicommon.display_error is a string; otherwise we get an unhandled exception when writing out our report.

Add "localmanifestpath" option to updatecheck.check(). This may be used if I implement the alternate Apple Software Update mechanism, and should also be useful for a future Puppet package provider or any programmatically-generated manifest.

git-svn-id: http://munki.googlecode.com/svn/trunk@847 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-10-24 04:13:20 +00:00
Greg Neagle 27a4aafbc8 Don't record the forced_install or foreced_uninstall key if the item requires a restart or logout, or is part of a dependency relationship.
git-svn-id: http://munki.googlecode.com/svn/trunk@817 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-10-19 03:42:25 +00:00
Justin McWilliams 7f44c0c40e - s/unattended/forced/
- separate forced_installs and forced_uninstalls, so they one can be forced while the other is not.
 - move status output enabling to the only place it's necessary; --auto at login window.
 - move forced install run to top of "GUI user exists" conditional instead of two places within.  (Greg, please verify this is okay).



git-svn-id: http://munki.googlecode.com/svn/branches/unattended-installs@813 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-10-18 19:08:39 +00:00
Justin McWilliams fedb392b9b First iteration of forced/unattended/silent installs.
Notes:
 - Needs documentation about how risky this is, and how it should only be used
for simple packages that are known to be safely installed while app is running.
 - If notification is popped up, it will contain the unattended install; if
notification is not due to be popped up the unattended install will be installed
immediately.
  - Only works in --auto mode (which is what launchd execs); I will test more tomorrow with manual runs, as we may be able to do this before --installonly too.



git-svn-id: http://munki.googlecode.com/svn/branches/unattended-installs@809 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-10-18 00:25:18 +00:00
Greg Neagle efdd7628bd Changed munkicommon.getAppData() to use LaunchServices instead of Apple System Profiler. LaunchServices is faster and returns more apps than System Profiler, especially on Leopard systems. Thanks to John Randolph.
git-svn-id: http://munki.googlecode.com/svn/trunk@787 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-10-13 17:32:53 +00:00
Justin McWilliams af1df39f68 curl() fixes.
1) fix OSError because nonexistent file is attempted to be read if HTTP status=200 but response yields no download; this happens if local Cache package is *newer* than package on the server (curl receives 200 but doesn't download); instead raise HTTPError.

   2) In the event of a curl() download error, delete any existing cache files
related to the failed download (destination or tmp names). This is basically
just resetting state after any download failures that aren't resume related,
one of those failures being the temp download file doesn't exist.

   This fixes a problem where if the destination exists and the date (header:
If-Modified-Since) is newer than on the server (header: Last-Modified), the curl
binary does not ever download the older file.  In this case Munki never has a
.download temp file, so it can't overwrite the original/newer file. A susequent
Munki execution will download the older server file.



git-svn-id: http://munki.googlecode.com/svn/trunk@783 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-10-07 21:29:24 +00:00
Greg Neagle 1dab884671 Replace separate instances of getAppData() in adobeutils.py and updatecheck.py with a single implementation in munkicommon.
git-svn-id: http://munki.googlecode.com/svn/trunk@781 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-10-07 18:07:50 +00:00
Greg Neagle 29d4c264b1 Added some additional status and debug messages for package integrity testing and managed_updates.
git-svn-id: http://munki.googlecode.com/svn/trunk@780 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-10-07 17:16:21 +00:00
Greg Neagle e2698bb44f Move verifySoftwarePackageIntegrity check inside of download_installeritem().
getHTTPfileIfChangedAtomically now returns a boolean indicating if the item was downloaded (True) or just returned from the local cache (False). This way, we only do the expensive SHA-256 checksum comparison on the initial download.

getHTTPfileIfChangedAtomically now raises exceptions if it runs into trouble, as does download_installeritem().

git-svn-id: http://munki.googlecode.com/svn/trunk@764 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-09-27 22:53:52 +00:00
Justin McWilliams fc3ff13fb6 Moving 'AdditionalHttpHeaders' ManagedInstalls.plist string to munkicommon const for cleaner reuse in preflight/postflight.
git-svn-id: http://munki.googlecode.com/svn/trunk@753 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-09-13 22:47:02 +00:00
Greg Neagle 231e309ae4 filesystemItemExists() now returns 0 if the item doesn't exist, 1 if it exists and the checksum matches (or there is no checksum provided), or -1 if the item exists but the checksum does not match. This should make someVersionInstalled() work better with pkginfo that relies on files in the installs key.
processManifestForOptionalInstalls(), processManifestForManagedUpdates(), processManifestForInstalls(), and processManifestForRemovals(), which ll shared a very similar structure, have been refactored and replaced with processManifestForKey().

Various pylint cleanups: marking unused variables, global variable names are now all CAPS, added some docstrings, 

Removed all remaining references to aliases. (support for aliases was removed a long time ago, but some references still remained in the code)

Removed support for "modifies" dependency type, which was deprecated months ago.

git-svn-id: http://munki.googlecode.com/svn/trunk@748 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-09-13 17:03:39 +00:00
Greg Neagle 4491ae9b03 Initial support for managed_updates in manifests. Items listed in managed_updates will have updates downloaded and applied if any prior version is installed (subject to munki using pkginfo information to determine if an item is installed).
git-svn-id: http://munki.googlecode.com/svn/trunk@747 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-09-10 19:23:13 +00:00
Justin McWilliams b36b32672b munkicommon.py & updatecheck.py: Use single quotes for all non-doctstring strings.
git-svn-id: http://munki.googlecode.com/svn/trunk@745 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-09-10 03:29:47 +00:00
Justin McWilliams 184d5368c2 Clean some lint on updatecheck: reorder imports, replace single-quote docstrings with double, etc
git-svn-id: http://munki.googlecode.com/svn/trunk@744 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-09-10 02:01:15 +00:00
Justin McWilliams 5873a12d26 Allow for additional headers sent with curl() HTTP requests to be set in ManagedInstalls.plist
git-svn-id: http://munki.googlecode.com/svn/trunk@740 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-09-10 00:15:45 +00:00
Greg Neagle 6b864f85f9 PackageVerificationMode now defaults to "hash". Current munki infrastructures with no package hashes will continue to work as before PackageVerificationMode was added; admins can add hashes to packages and they will be used.
git-svn-id: http://munki.googlecode.com/svn/trunk@716 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-09-02 23:11:19 +00:00
Justin McWilliams 8aa56bd9f9 Merging pkg-hash-verification branch to trunk, adding package SHA-256 hash verification. Deleting branch.
git-svn-id: http://munki.googlecode.com/svn/trunk@714 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-09-02 17:50:54 +00:00
Justin McWilliams 957b0df766 Changing hash verification warnings a bit per Greg's request.
git-svn-id: http://munki.googlecode.com/svn/branches/pkg-hash-verification@710 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-09-02 16:43:02 +00:00
Greg Neagle 2d0ce0ecca Changes for optional installs
git-svn-id: http://munki.googlecode.com/svn/trunk@702 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-09-01 16:57:51 +00:00
Justin McWilliams bf8cb1b7eb Package SHA-256 Hash verification
git-svn-id: http://munki.googlecode.com/svn/branches/pkg-hash-verification@699 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-08-31 15:15:47 +00:00
Greg Neagle 88df333959 Replaced code that removed already-removed-items from the SelfServeManifest's managed_uninstalls list with a Python list comphrension.
git-svn-id: http://munki.googlecode.com/svn/trunk@697 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-08-27 18:08:56 +00:00
Greg Neagle 8fad18788c Remove item from SelfServeManifest's managed_uninstalls list if it is not currently installed; this fixes an issue where after using Munki to remove an optional install item, the same item is manually installed. Previously, munki would attempt to remove it again because it retained the item in the managed_uninstalls list in the SelfServeManifest.
git-svn-id: http://munki.googlecode.com/svn/trunk@696 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-08-27 17:55:03 +00:00
Greg Neagle 915679291f Move getmd5hash to munkicommon.
git-svn-id: http://munki.googlecode.com/svn/trunk@654 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-08-04 22:49:05 +00:00
Greg Neagle 7c6102dd5d pylint-inspired cleanup.
Add support for copy_local key in pkginfo/installinfo so adobeutils can work around AdobePatchInstaller issues.

git-svn-id: http://munki.googlecode.com/svn/trunk@629 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-07-30 00:04:17 +00:00
Greg Neagle 4f7de426a0 Assign maxversion before using it in a comparison.
Fix typo: 'cadir' should be 'capath'

git-svn-id: http://munki.googlecode.com/svn/trunk@620 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-07-29 14:26:26 +00:00
Greg Neagle 7b03fdf353 Eliminate variables named "version" in a few places as they were conflicting with distutils.version...
git-svn-id: http://munki.googlecode.com/svn/trunk@615 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-07-29 05:18:01 +00:00
Greg Neagle 7df737f77c in getInstalledPackages, make sure we aren't storing empty version numbers; store "0.0.0.0.0" instead. (distutils.version.LooseVersion throws an exception when given an empty string.)
git-svn-id: http://munki.googlecode.com/svn/trunk@611 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-07-28 15:55:02 +00:00
Greg Neagle f020f400f1 Cache the paths to downloaded manifests so that we only request them once per managedsoftwareupdate session.
git-svn-id: http://munki.googlecode.com/svn/trunk@609 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-07-27 18:59:49 +00:00
Greg Neagle 83ed22f3af installer.py: new copyFromDMG method that copies an arbitrary list of items from a mounted DMG to specified locations.
New removeCopiedItems method that removes the same list of items from the startup disk.


updatecheck.py: support for new copy_from_dmg and remove_copied_items methods.

makepkginfo: support for making pkginfo with new copy_from_dmg method,

git-svn-id: http://munki.googlecode.com/svn/trunk@603 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-07-26 23:26:25 +00:00
Greg Neagle 5bc923e512 Speed up install check by processing all installed packages at once, instead of one at a time. This leverages getInstalledPackages(), which we earlier sped up for processing managed_uninstalls.
git-svn-id: http://munki.googlecode.com/svn/trunk@598 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-07-22 22:00:51 +00:00
Greg Neagle db3f6bc41d updatecheck.py -- New approach to importing installed packages - big speedup when processing managed_uninstalls.
New support for optional software installs. 

git-svn-id: http://munki.googlecode.com/svn/trunk@591 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-07-21 03:10:00 +00:00
Greg Neagle fa860b71ef More Adobe CS5 support.
git-svn-id: http://munki.googlecode.com/svn/trunk@552 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-06-21 17:42:30 +00:00
Greg Neagle 3e4e371d68 More changes to better support the really old package format used by the CiscoVPN and Citrix ICA Client packages. Bleh.
git-svn-id: http://munki.googlecode.com/svn/trunk@546 a4e17f2e-e282-11dd-95e1-755cbddbdd66
2010-06-03 18:28:38 +00:00