diff --git a/plist b/plist index d1fd7a28a..92247ac77 100644 --- a/plist +++ b/plist @@ -717,6 +717,7 @@ /usr/local/opnsense/scripts/firmware/connection.sh /usr/local/opnsense/scripts/firmware/health.sh /usr/local/opnsense/scripts/firmware/install.sh +/usr/local/opnsense/scripts/firmware/latest.php /usr/local/opnsense/scripts/firmware/launcher.sh /usr/local/opnsense/scripts/firmware/license.sh /usr/local/opnsense/scripts/firmware/lock.sh diff --git a/src/opnsense/scripts/firmware/latest.php b/src/opnsense/scripts/firmware/latest.php new file mode 100755 index 000000000..03e485568 --- /dev/null +++ b/src/opnsense/scripts/firmware/latest.php @@ -0,0 +1,46 @@ +#!/usr/local/bin/php + + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +$changelogfile = '/usr/local/opnsense/changelog/index.json'; + +list ($series, $version) = explode(' ', trim(shell_exec('opnsense-version -Vv'))); + +$ret = json_decode(@file_get_contents($changelogfile), true); +if ($ret != null) { + foreach ($ret as $entry) { + if ($entry['series'] == $series) { + if (version_compare($entry['version'], $version, '>')) { + $version = $entry['version']; + } + } + } +} + +# emit the latest stable version or the current version if unknown +echo $version . PHP_EOL;