I like this approach. I assume munki will hash the zip to check for changes much like it does with dmgs.
Works for me.
Nate
put the banners in a sub-folder and have MSC iterate thru the contents...
Just one manifest (plist) in a fixed location that describes where the assets can be found. Assets could be pulled from another server (maybe its easier for some folks to point the banners to some CMS site where they can change the banner)-ArjenOn 27 Mar 2014, at 19:51, Bart Reardon <bart.r...@gmail.com> wrote:If you want to avoid a zip then the only way I can see is with a manifest of some sort.Currently there are three things I would want to modify:the banner and what they link tothe sidebar links and what they link tothe footer links and what they link toyou could have all these in a single xml or plist in sections. MSC would then know how manny banners there are, how many links etc avoiding a zip and avoiding the potential for an admin to mess up the current templates (if that was the thinking). Also makes testing/changing things a whole lot easier.
So, my thought would be to have another subfolder in the munki repo for holding the assets
So we can't iterate through a directory's contents; we must know (or be able to discover) all the needed URLs.
-Greg
Or this. This is good.
Which is good? First option? Second option? Both?Or this. This is good.
Hybrid alien love child?
> If changing some files, then editing a complex manifest without error is "a whole lot easier" than changing some files in a (possibly version controlled) directory and zipping it up.Depends on what the contents of the html files will be but I find having defined key value pairs much easier to deal with than an unstructured html.
With key value pairs your data is there and its format is strict and you let MSC deal with the formatting, plus you don't have to parse the html first and remove unwanted tags etc.
That's the messy bit I was referring to.I'm not aware of your intentions with how the sidebar and footer html is going to be though so it's hard to comment.
I feel though that munki is already complex plists that we're all used to dealing with so why not continue with that.
Which is good? First option? Second option? Both?Or this. This is good.The 2nd.
> ??? You are going to have to author the html anyway. The banner stuff, the sidebar, the footer will all be html.exactly. It's going to be up to the admins to write the html.I can write html and follow rules though based on what's expected but I know people that can't (no-one on this list I'm sure).
I just see it as removing potential future pain when someone copies and pastes something they exported to html from Word and wonders why it look odd in MSC.
Maybe that's and edge case though and all munki admins are good admins.
From what I see the design of MSC needs to be strict. You know what links on the side and in the footer need to look like.
What you don't know is what they say or link to, so only give people access to change what they say and link to....i.e. key value pairs.
Along those lines, but fewer keys to support in client manifest:<key>client_web_assets</key><dict><key>base_href</key><key>web_asset_manifest</key><string>assets.plist</string></dict>Editing client manifest every time we want to swap out an image WOULD be suboptimal and needlessly complex.
But we could point to a file we can edit in a central location and have in our repo’s SCM. And this allows people to manage the banner/web bits outside of munki if they want something more powerful but without having to add that support inside munki itself.FWIW I don’t see the plist file itself as very complex. It’s just another page. And you can validate it with plutil.
I'm assuming these are all being displayed in a NSWebViews, (not sure what else it would be if you're rendering html in them), so are there any tricks that anyone knows of to grab an offline cache of the contents of an NSWebView so it can be rendered when the server isn't available?
If so, this seems like the simplest and most flexible option to me; no manifests,
no zip archives to create, just client-side cache management. Just three files to initially request by MSC; banner.html, sidebar.html, and footer.html
> are there any tricks that anyone knows of to grab an offline cache of the contents of an NSWebView so it can be rendered when the server isn't available?I'd presume it would be done the way it currently is where HTML content would sit in ~/Library/Caches/com.googlecode.munki.ManagedSoftwareCenter/html/ and MSC renders it from there.
I wasn't clear - I realize it's all stored client-side now, but the problem we're trying to figure out is _what_ should be gathered and cached by MSC on the client. My thought with this was to leave this to the WebView.
It already knows how to do caching of the page and its associated assets, but how much control does the 'not-employed-by-apple' programmer have over that? The only additional requirement this would impose on admins is the need to specify a full url to images/scripts/css instead of relative paths.That's precisely what is and will be happening. The resources are all local. All the HTML is local _now_. Look in ~/Library/Caches/com.googlecode.munki.ManagedSoftwareCenter/htmlIf so, this seems like the simplest and most flexible option to me; no manifests,How, then, do we serve different content to different clients?What about the (variable number of) banner images? They must also be downloaded and cached. And no, I don't want to parse the html in banner.html, sidebar.html, and footer.html to see what other resources I might need to cache.no zip archives to create, just client-side cache management. Just three files to initially request by MSC; banner.html, sidebar.html, and footer.html
Still not getting the extreme aversion to simply zipping up a directory. Presto: a web archive.What am I missing?
I prefer coke but pepsi is fine as well
So it sounds like people want something I had not considered: a way to customize MSC.app per client: one client might see one set of banners, have one sidebar, and one footer; another client would have a different set of banner images (and URLs), a different sidebar, and a different footer.The obvious way to handle this is a new key and value set in the client manifest.We could avoid the need to use a zip file (though I don't really see the big deal), but it increases the complexity of the values in the client manifest.IE:<key>client_web_assets</key><string>myorg_assets.zip</string>
--
You received this message because you are subscribed to the Google Groups "munki-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to munki-dev+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "munki-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to munki-dev+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "munki-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to munki-dev+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "munki-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to munki-dev+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "munki-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to munki-dev+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "munki-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to munki-dev+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "munki-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to munki-dev+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
On 27 mrt. 2014, at 23:37, Gregory Neagle <gregn...@mac.com> wrote:So it sounds like people want something I had not considered: a way to customize MSC.app per client: one client might see one set of banners, have one sidebar, and one footer; another client would have a different set of banner images (and URLs), a different sidebar, and a different footer.The obvious way to handle this is a new key and value set in the client manifest.We could avoid the need to use a zip file (though I don't really see the big deal), but it increases the complexity of the values in the client manifest.IE:<key>client_web_assets</key><string>myorg_assets.zip</string>Putting everything in a zip just moves the complexity to the zip file. (You still need a way to define which urls link to which banners)
I would propose something like<key>client_web_assets</key><dict><key>zip_archive</key><string>my_assets.zip</string></dict>That way we/I could add things to the dict in the future.There’s one more thing: it would be nice if the url parser
can detect full urls as well so we could host the web_assets on another server than the munki server.I can see people in the communication department to be in charge of the webassets, so something like this could work:<key>client_web_assets</key><dict><key>zip_archive</key></dict>
<key>client_web_assets</key><string>myorg_assets.zip</string>Putting everything in a zip just moves the complexity to the zip file. (You still need a way to define which urls link to which banners)No, that's in the showcase/banner HTML. Did you see the html I posted earlier?
On 28 mrt. 2014, at 14:08, Gregory Neagle <gregn...@mac.com> wrote:<key>client_web_assets</key><string>myorg_assets.zip</string>Putting everything in a zip just moves the complexity to the zip file. (You still need a way to define which urls link to which banners)No, that's in the showcase/banner HTML. Did you see the html I posted earlier?I did see that, but I was unsure if you would create that on-the-fly based on the snippet you sent. The answer is no apparently.
but if there’s just 3 html files and some images in the zip, I’m fine with that.It’s easy to host the images somewhere else and point to them in the html:<div class="showcase ${hide_showcase}"><div class="stage" onClick='stageClicked();'><img href="http://www.android.com" alt="Branding" src="http://img580.imageshack.us/img580/3214/cnabanner00.png" /></div></div>
-Arjen
Here's the main problem I have with the zip idea.
Let's say each site already has their own zip and I decide to add one banner. This means I have to create around 12 new archives.
If I want to add a banner to just a few, I again have to create a new archive per-site. With zips, I'm probably going to have to document what banners are in what zip and make sure I keep the archives intact. If you add more admins/sites into this equation, I can see this feature being a mess.
If we have them in a pkginfo/manifest, we can iterate and manipulate what the client sees quickly. I do see some issues if we use manifest though (banners referenced in two manifests, etc), but I still think it is a better approach. Testing is always going to be easy, but maintaining these zips sounds like a logistical nightmare.
All of this aside - this isn't a must have feature. I'm perfectly content with how MSC looks right now and I'd rather we focus on other things. Let's keep it simple for now and change it later.
On Mar 28, 2014, at 6:49 AM, Erik <eriknico...@gmail.com> wrote:Here's the main problem I have with the zip idea.
Let's say each site already has their own zip and I decide to add one banner. This means I have to create around 12 new archives.Yes. How long could that possibly take? zipping a directory of a few html files and some images should be very fast.If I want to add a banner to just a few, I again have to create a new archive per-site. With zips, I'm probably going to have to document what banners are in what zip and make sure I keep the archives intact. If you add more admins/sites into this equation, I can see this feature being a mess.Keep each "sites" set of customization files in a git repo. Don't manage the zip archives; manage the files. Create the zip archives as needed and upload them to the server. That could even be done in a git post-commit hook if you really wanted to automate things.
If we have them in a pkginfo/manifest, we can iterate and manipulate what the client sees quickly. I do see some issues if we use manifest though (banners referenced in two manifests, etc), but I still think it is a better approach. Testing is always going to be easy, but maintaining these zips sounds like a logistical nightmare.No more so that maintaining a bunch of stuff in manifest files. Now you get to maintain all the customization files still, but instead of a simple zip operation (which can be automated), you _also_ get to edit one or more manifest files (which could also be automated, but this is significantly more difficult).I still see it as adding unneeded complexity for no good reason.And since I'm the one doing the coding, you have to convince me to add additional complexity. So far, no-one has.
All of this aside - this isn't a must have feature. I'm perfectly content with how MSC looks right now and I'd rather we focus on other things. Let's keep it simple for now and change it later.Or you all admit I was right all along... :-)
Here's the main problem I have with the zip idea.
Let's say each site already has their own zip and I decide to add one banner. This means I have to create around 12 new archives. If I want to add a banner to just a few, I again have to create a new archive per-site. With zips, I'm probably going to have to document what banners are in what zip and make sure I keep the archives intact. If you add more admins/sites into this equation, I can see this feature being a mess.
I'm back to muddy the waters again. I might be in the minority here, but I actually like web development. As such, I keep thinking about how the App Store's web content is fairly dynamic and how this implementation doesn't really allow that kind of behavior...not to mention, adding that behavior in a cached client-side environment would be rough. So, what if we scratched most of what we've talked about (keeping the zip notion in mind, which I'll address in a bit).Why don't we just add a few keys to the client-side ManagedInstalls that tell MSC where to start? Like, mscBannerURL, mscSidebarURL, and mscFooterURL. Why do this? Well, let's say I don't want MSC to cache anything, instead opting to serve pages from my web server dynamically. When MSC makes the request, it could pass along the ClientIdentifier as an argument, so I can decide what content to show in the server-side logic. I'm sure there are other GET params that could be passed to make things even more interesting, but I'll keep it simple for now.
So what about people who don't want to host this content and want to use the zip archive method we've been talking about? When managedsoftwareupdate runs, it might do something like this:- are the msc* keys present in ManagedInstalls?- no? - load the default content originally bundled with MSC- yes?- does the url end with a .zip extension?- yes? - download and decompress the zip if needed, and tell MSC where to find the files- no? - tell MSC to grab the files from the hosted URL instead.
If MSC is using NSURL, I don't think it will care if it's told to load items from the local disk (file://) or web (http://|https://). MSC could be 'told' where to load the files via its own cfprefs domain, which managedsoftwareupdate would write to when needed.This _seems_ like it's very simple in terms of coding,
it provides a ton of flexibility in terms of content delivery, and provides more flexibility in where the content should be hosted.Let the shooting begin - aim, fire
I'm not seeing the problem either. The zip file has my vote.
Still not getting the extreme aversion to simply zipping up a directory. Presto: a web archive.What am I missing?
-Greg
On Mar 27, 2014, at 4:40 PM, Joe Wollard <joe.w...@gmail.com> wrote:
Well then...never mind :)Too bad OS X doesn't come with wget or you could obtain the same behavior in managedsoftwareupdate, and curl is of no help with crawling and archiving without being wrapped in additional scripts. :-/
On Thu, Mar 27, 2014 at 7:37 PM, Gregory Neagle <gregn...@mac.com> wrote:
On Mar 27, 2014, at 4:35 PM, Joe Wollard <joe.w...@gmail.com> wrote:I wasn't clear - I realize it's all stored client-side now, but the problem we're trying to figure out is _what_ should be gathered and cached by MSC on the client. My thought with this was to leave this to the WebView.Too late.mangedsoftwareupdate needs to download all the content _before_ MSC.app runs. MSC.app downloads nothing. Ever.
It already knows how to do caching of the page and its associated assets, but how much control does the 'not-employed-by-apple' programmer have over that? The only additional requirement this would impose on admins is the need to specify a full url to images/scripts/css instead of relative paths.That's precisely what is and will be happening. The resources are all local. All the HTML is local _now_. Look in ~/Library/Caches/com.googlecode.munki.ManagedSoftwareCenter/htmlIf so, this seems like the simplest and most flexible option to me; no manifests,How, then, do we serve different content to different clients?What about the (variable number of) banner images? They must also be downloaded and cached. And no, I don't want to parse the html in banner.html, sidebar.html, and footer.html to see what other resources I might need to cache.no zip archives to create, just client-side cache management. Just three files to initially request by MSC; banner.html, sidebar.html, and footer.html
--
You received this message because you are subscribed to the Google Groups "munki-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to munki-dev+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "munki-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to munki-dev+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--Joe Wollard
--
You received this message because you are subscribed to the Google Groups "munki-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to munki-dev+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
On Mar 28, 2014 11:42 AM, "Joe Wollard" <joe.w...@gmail.com> wrote:
>
> I'm back to muddy the waters again. I might be in the minority here, but I actually like web development. As such, I keep thinking about how the App Store's web content is fairly dynamic and how this implementation doesn't really allow that kind of behavior...not to mention, adding that behavior in a cached client-side environment would be rough. So, what if we scratched most of what we've talked about (keeping the zip notion in mind, which I'll address in a bit).
Would it not be possible for people who want live, "dynamic" content in msc to just use frames in the html content in the zip file? I think it should be up to the web developer to find a way if he/she wants something more complex.
-Josh
--
You received this message because you are subscribed to the Google Groups "munki-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to munki-dev+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
<a href="...
will open a web page inside the MSC application. This I am finding really handy and will use if for our internal user documentation, which will obviously only work when online (I'm thinking of including an initial static page with some JS that detects online status then enables external to MSC links etc etc...hurrah for flexibility). The issue I found with testing is if a web page contains a download MSC craps out when you click the download link. For example, some of our online documentation is in downloadable word format (don't ask) but clicking on the link does nothing for the user.
This is what's recorded in the log:
2014-03-31 17:05:31.929 Managed Software Center[53371:303] Provisional load error: Error Domain=WebKitErrorDomain Code=102 "Frame load interrupted" UserInfo=0x618000660ec0 {NSErrorFailingURLStringKey=http://foo.com/Content/Mac-SetupAppleMail.docx, NSLocalizedDescription=Frame load interrupted, NSErrorFailingURLKey=http://foo.com/Content/Mac-SetupAppleMail.docx}
<a target="_blank" href="...
Will open the link in the default browser where this isn't an issue obviously.
I guess where I'm going with this is, is there a way to open a web page inside MSC where clicking on a file link initiates a download? I can work around whatever is or isn't possible and incorporate it into planned links in the sidebar (and banner and footer) but may be worth keeping in mind.
Bart
I guess where I'm going with this is, is there a way to open a web page inside MSC where clicking on a file link initiates a download? I can work around whatever is or isn't possible and incorporate it into planned links in the sidebar (and banner and footer) but may be worth keeping in mind.
Any final decision on implementing customization of MSC? I personally just want to change the sidebar links to point to our internal help desk.
David
On Thursday, March 27, 2014 11:44:20 AM UTC-4, gregn...@mac.com wrote:NOTE: this post is about Munki 2, which is in-development code for the next major release of Munki. It is not production ready. Do not deploy on your fleet unless you like pain and suffering.
The new Managed Software Center application for Munki 2 will support some customization. Specifically, you will be able to specify custom banner images, custom sidebar content, and a custom footer.
I think these should be downloaded from the Munki repo, so that admins can easily highlight new things without having to install anything on local machines.
My current thought is that the admin will create a set of html (or html-like) files in a directory, then zip this directory and upload it to the repo with a specific name.
The Munki client will check a predefined URL to download this file and expand the contents into a directory that MSC.app will use for the custom contents.
Does anyone see an issue with this approach?
-Greg
David
On Jun 3, 2016, at 8:19 AM, Daniel Warren <dwa...@natickps.org> wrote:I understand that MSC.app will never be a fully functional browser. With that being said are their any plans for it to support PHP e.g. will munki report php ever be accessible within the app?
You received this message because you are subscribed to the Google Groups "munki-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to munki-dev+...@googlegroups.com.
To post to this group, send email to munk...@googlegroups.com.
On Jun 3, 2016, at 8:19 AM, Daniel Warren <dwa...@natickps.org> wrote:
I understand that MSC.app will never be a fully functional browser. With that being said are their any plans for it to support PHP
You received this message because you are subscribed to the Google Groups "munki-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to munki-dev+...@googlegroups.com.