Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DEVON apps: standardize livecheck URLs #185628

Merged
merged 8 commits into from
Sep 19, 2024

Conversation

EricFromCanada
Copy link
Member

@EricFromCanada EricFromCanada commented Sep 17, 2024

Important: Do not tick a checkbox if you haven’t performed its action. Honesty is indispensable for a smooth review process.

In the following questions <cask> is the token of the cask you're submitting.

After making any changes to a cask, existing or new, verify:


@samford samford added the livecheck Issues or PRs related to livecheck label Sep 17, 2024
Copy link
Member

@samford samford left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we're looking to align these DEVON cask checks, there may be something to be said for standardizing on not including the leading app directory name in the regex (e.g., /easyfind). The regex is already anchored to the app filename (e.g., EasyFind.app.zip), so including the leading app directory name isn't necessary to get a correct match and doesn't appear to provide any particular benefit.

krehel
krehel previously approved these changes Sep 17, 2024
@EricFromCanada EricFromCanada changed the title easyfind: improve livecheck URL DEVON apps: improve livecheck URL Sep 18, 2024
@EricFromCanada EricFromCanada changed the title DEVON apps: improve livecheck URL DEVON apps: standardize livecheck URLs Sep 18, 2024
Copy link
Member

@samford samford left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Digging into this some more, some of these freeware apps have an in-app updater that checks a plist URL (e.g., EasyFind checks https://www.devontechnologies.com/Updates.plist?product=EasyFind&version=5.0.2, which redirects to https://api.devontechnologies.com/1/apps/updates.plist.php?product=EasyFind&version=5.0.2). The file contains version information for various DEVON apps:

<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE plist PUBLIC '-//Apple//DTD PLIST 1.0//EN' 'http://www.apple.com/DTDs/PropertyList-1.0.dtd'>
<plist version='1.0'>
<dict>
<key>DEVONagent</key><string>2.3.1</string>
<key>DEVONagentExpress</key><string>3.11.8</string>
<key>DEVONagent Lite</key><string>3.11.8</string>
<key>DEVONagentPro</key><string>3.11.8</string>
<key>DEVONagentPersonal</key><string>3.11.8</string>
<key>DEVONagentPro_Japanese</key><string>3.11.8</string>
<key>DEVONagentPersonal_Japanese</key><string>3.11.8</string>
<key>DEVONnotePersonal</key><string>1.9.16</string>
<key>DEVONnotePersonal2</key><string>2.10.1</string>
<key>DEVONsphereExpress</key><string>1.9.7</string>
<key>DEVONthink3</key><string>3.9.7</string>
<key>DEVONthinkStandard3</key><string>3.9.7</string>
<key>DEVONthinkPersonal</key><string>1.9.16</string>
<key>DEVONthinkPersonal2</key><string>3.0</string>
<key>DEVONthinkPro2</key><string>3.0</string>
<key>DEVONthinkPro</key><string>1.9.16</string>
<key>DEVONthinkPro2_Japanese</key><string>2.11.3</string>
<key>DEVONthinkPro3</key><string>3.9.7</string>
<key>DEVONthinkPro Office2</key><string>3.0</string>
<key>DEVONthinkPro Office</key><string>1.9.16</string>
<key>DEVONthinkServer3</key><string>3.9.7</string>
<key>EasyFind</key><string>5.0.2</string>
<key>Legacy Products</key><string>3.0</string>
<key>Neo Network Utility</key><string>1.1.1</string>
<key>PhotoStickies</key><string>6.0.1</string>
<key>ThumbsUp</key><string>4.5.3</string>
<key>XMenu</key><string>1.9.11</string>
<key>Download</key>
<string>https://www.devontechnologies.com/redirect.php?id=download</string>
<key>SNs</key>
<array>
  <string>5a4B-2d34-0F16e4B-69BB018d1</string>
  <string>ffd8-88a7-488cbd8-222B21a39</string>
  <string>x69F-gF1i-164439F-966F-g363</string>
  <string>415a-3625-21755a-13a8bcbe4</string>
  <string>ab1b-dc64-d49f1b-2aa81ce7c</string>
  <string>7633-83b5-3a0933-26478d7ee</string>
</array>
</dict>
</plist>

I tested it out and the casks in this PR can use this approach, so if that makes sense to you I can push commits to check that instead (i.e., usually we prefer to align with the in-app updater when possible).

Edit: Commits can now be found on this branch.

@EricFromCanada
Copy link
Member Author

@samford Sounds good. Do teach me your sleuthing methods someday.

@p-linnane
Copy link
Member

@samford Sounds good. Do teach me your sleuthing methods someday.

I can't speak for @samford, but @krehel turned me on to Proxyman which is great for finding this kind of stuff.

@samford
Copy link
Member

samford commented Sep 19, 2024

Do teach me your sleuthing methods someday.

Like Patrick mentioned, Proxyman makes it really easy to capture requests from apps.

Basically:

  1. Open Proxyman and click the start button near the top left to start capturing. [It should automatically update your proxy settings but, if not, you may have to dig into System Settings to set the HTTP/HTTPS proxy setting manually for the connection you're using.]
  2. Open the app you want to check and watch for any automated requests. If none appear, find the app's "Check for Updates" functionality and click on that.
  3. If the requests are over a secure connection, you can click to highlight the request in Proxyman and then click on either the "Enable only this domain" or "Enable all domains from [App Name]" buttons. [You may be prompted to install Proxyman's CA certificate, which is necessary to intercept SSL requests. If you're not totally comfortable with it, you can always install it, run the requests, and then remove it each time.]
  4. Once SSL proxying is enabled for the requests you're interested in, do whatever you did before to trigger the update requests. This time you should see the full URL with query string parameters, request headers/body/etc. [After you're done, you can go into Tools > SSL Proxying List to remove any entries you don't want/need anymore.]
  5. Click the pause button to stop capturing requests. [It should revert the proxy settings or you'll have to disable them yourself in System Settings again.]

Usually that's enough to figure out a check that you can use in a livecheck block if there's an in-app updater. [Every once in a while you'll come across an app where the requests don't show in Proxyman and Bevan has a workaround for that. If you search on Slack for "Proxyman" it should come up.]

@p-linnane p-linnane merged commit 9f8d649 into Homebrew:master Sep 19, 2024
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
automerge-skip livecheck Issues or PRs related to livecheck
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants