Skip to content

Releases: DtxdF/AppJail

v2.8.0

28 Sep 12:54

Choose a tag to compare

Changes between 2.7.1 and 2.8.0

  • Added: support for unprivileged users in the main script (Now an unprivileged user can run appjail without running appjail-user and this is the recommended way.).
  • Fixed: template_isvar() as it incorrectly detects a parameter as a variable.
  • Fixed: test_param() as it returns false when a character is a space.
  • Fixed: typo update -y -> update in PKG.
  • Fixed: instruction order that does not require a specific order.
  • Fixed: execution of the OPTION instruction when there are no options.

Full Changelog: v2.7.1...v2.8.0

v2.7.1

21 Aug 10:54

Choose a tag to compare

Changes between 2.7.0 and 2.7.1

  • Hotfix: Load rc config before checking values (When the user defines a custom rc value in their rc.conf file, it is not honored for some operations, instead the default values are used, which is not the intention in this case.).

Full Changelog: v2.7.0...v2.7.1

v2.7.0

20 Aug 10:38

Choose a tag to compare

Changes between 2.6.0 and 2.7.0

  • Fixed: <defunct> process in appjail-dns (When sending a SIGTERM signal to appjail-dns, there will be one process left, that process is the sleep(1) command, which results in a minute or a little more waiting for this process to finish. To fix this, when sending a SIGTERM signal to appjail-dns, a SIGTERM signal is sent to the sleep(1) command.).
  • Fixed: exit status of the start stage (The start stage may return a non-zero exit status indicating an error or whatever it means and the start command will return 0 which in almost all situations is not the intent.).
  • Fixed: pkg all (Add a missing shift command to fix pkg all as its arguments were passed to pkg(8).).
  • Added: special keyword <random> to virtualnet:interface.
  • Added: special keyword <name> to virtualnet:interface.
  • Create the mount point when using the -p parameter in fstab set.
  • Fixed: incorrect data type in fstab:dump and fstab:pass.
  • Incremented: priority after running OPTION.
  • Make empty some global variables when running makejail.
  • Added: -V parameter in makejail.
  • Improved: DNS support.
  • Added: input file when showing the importing message.
  • Moved: message when importing after creating the empty jail.
  • Fixed: typos in Build Arguments.
  • Removed: obsolete documentation for Build Arguments (The example shown in Build Arguments is no longer correct as the official Makejail for Python has been changed.).
  • Added: IMAGE_ENTRYPOINT option
  • Fixed: share/appjail/lib/replace:lib_replace: escape [&#]
  • Adapted: EXEC to use global makejails
  • Added: GLOBAL instruction

Full Changelog: v2.6.0...v2.7.0

v2.6.0

03 Jul 14:56

Choose a tag to compare

Changes between 2.5.2 and 2.6.0

  • Added: force, recursive and force+recursive flags to overwrite the jail in appjail quick.
  • Added: -g parameter to appjail logs remove to enable shell glob patterns.
  • Added: --clean parameter in PKG.
  • Added: Images to Features.
  • Added: warning for when removing installed images and Makejails in README.
  • Added: option for update all installed Makejails.
  • Added: more information to update Makejails manually.
  • Improved: killing processes in appjail healthcheck and appjail startup (Simply killing a process is not technically correct because the process after a while may be another process created by another process and not by AppJail, so errors may occur. To fix this, only processes created by AppJail will be killed, this is done by comparing the parent pid with the parent pid of the process we want to kill.).
  • Fixed: overwriting the main log file (the main log file is overwritten every time any appjail's rc script is called, to avoid this, the log file is created only when it does not exist).
  • Added: NETWORKING keyword to appjail rc script (to ensure basic network services are running, including general network configuration NETWORKING has been added to REQUIRE).
  • Added: escape command substitution beginning with dollar sign.
  • Added: escape common characters in EXEC.
  • Removed: slash character from escape list in OPTION.
  • Added: escape slash character in some commands (escaping the slash character in some commands is necessary because it has a special meaning for the tokenizer).
  • Fixed: typo ${optarg} -> ${arg} in EXEC.
  • Added: FROM instruction.
  • Added: appjail image command.
  • Removed: new line in lib_strlen (the number of bytes in the lib_strlen's argument is incorrect as the new line is counted).
  • Added: portable option in the import+root installation method.
  • Added: conflicts for installation methods in appjail quick.
  • Fixed: typo ${fetch_args} -> ${fetch_cmd} in appjail makejail.
  • Added: portable option in the export+root installation method.
  • Fixed: typos when displaying errors after creating a directory / dataset.
  • Fixed: typo appjail-user logs -> appjail logs in Logs.
  • Added: support for appjail network in appjail quick.
  • Added: auto-create command in appjail network.
  • Added: --before-include and --after-include parameters in EXEC.
  • Added: -a and -B parameters in appjail makejail (useful for Makejail builders since parameters can be included in the Makejail file after or before the Makejail's builder is included.).
  • Created: sponsorship.
  • Documented: missing -a and -v parameters in appjail fetch destroy.
  • Documented: missing healthcheckers subtype log.
  • Added: appjail logs remove all command.
  • Added: support for appjail logs to remove a bunch of logs.
  • Obsolete: appjail config.

Full Changelog: v2.5.2...v2.6.0

v2.5.2

05 Jun 21:04

Choose a tag to compare

Changes between 2.5.1 and 2.5.2

  • Fixed: invalid lib_check_ipv4addr function name when using the address option in quick:virtualnet.
  • Fixed: missing empty variables in *_set_[expose:proto|virtualnet:interface_desc] (after calling a function and defining a variable, the variable is not emptied for the next call, the value is reused when the parameter is not called again, resulting in an incorrect configuration).
  • Added: template check before use it in quick.
  • Added: check for when the jail is gone in healthcheck.
  • Added: -Q parameter in libexec/appjail-config/tok.
  • Fixed: load of a kernel module at startup (at startup lib_check_kernmod does not correctly detect whether a kernel module is loaded or not, so kldload -n is used to load a kernel module if it is not already loaded).
  • Added: missing check for when a template does not exist in quick.
  • Fixed: race condition when creating the bridges at startup.
  • Added: removing of a Carriege Feed character when a Makejail is included (although the format requires Line-Feed to be the new line it is worthwhile for some users to remove Carriege Feed when a Makejail is included). Fixes #4
  • Fixed: CMD usage (usage shows that cmd is optional when it is not).
  • Fixed: CMD with missing arguments.
  • Fixed: incorrect token count in CMD.
  • Fixed: incorrect variable name appjail_logfile -> appjail_natnet_logfile in etc/rc.d/appjail-natnet.
  • Fixed: race condition in expose & nat.
  • Changed: apt-get to apt in jail & pkg.
  • Added: "Support" section in README.
  • Added: support for line-continuation in Makejails.
  • Improved: CMD parsing (CMD has been improved when parsing the shell command by not doing difficult and error-prone things that can result in unexpected behavior. CMD now passes host variables to the jail using env(1) which is a bit slow but more reliable than simply passing the variable carelessly. In addition, CMD can execute virtually any shell command without manually escaping harmful characters).
  • Added: --make-arg-env parameter in VAR.
  • Removed: parsing the variable as a shell command in VAR (shell-like parsing allows a friendlier syntax when passing build-args from the command-line, but does not allow many characters such as ", so the ugly version is preferred).

Full Changelog: v2.5.1...v2.5.2

v2.5.1

30 May 19:35

Choose a tag to compare

Changes between 2.5.0 and 2.5.1

  • Fixed: incorrect directory permissions in Makefile (when installing AppJail using a non-root user, a Permission denied error may occur, especially when using DESTDIR).
  • Changed: ${.ALLSRC} to ${TARGETS} to correctly strip them in libexec/appjail-config/Makefile:strip).

Full Changelog: v2.5.0...v2.5.1

v2.5.0

30 May 16:48

Choose a tag to compare

Changes between 2.4.0 and 2.5.0

  • Added: healthcheckers (monitor jails and their services).
  • Added: logo & slogan (Thanks to AXCESS for his advice).
  • Changed: creation of the data directory on startup (functions that create directories in DATADIR on startup may overlap when ENABLE_ZFS=1, leaving garbage).
  • Changed: use a hash as name instead of the directory name in Makejails (to allow uniqueness between different sites but with the same directory name, a hash is used instead of the repository name. In addition, this allows a repository to not overwrite another repository unless its origin is the same).
  • Added: commands to list, delete and update Makejails.
  • Fixed: environment variables in Makejails (when environment variables containing harmful characters such as quotes are passed, this is not correctly escaped when su(1) logs into another user because the shell may be other than sh(1)).
  • Fixed: --huser & --juser in CMD and RUN (parameter's values are passed in the wrong order to the underlying appjail cmd jexec command).
  • Removed: unused cache library (it was used in previous versions and is no longer required).
  • Added: --maintain-env parameter in RUN (some applications work fine even if the environment does not match the current user, so --maintain-env is used to use -m in su(1). This is very useful since su(1) does not work if the user does not have an existing home directory and a shell when emulating a full login).
  • Fixed: RUN when using --noclean and --maintain-env for LinuxJails (when passing --noclean and --maintain-env, LinuxJails will use the value of the SHELL environment variable as its shell when executing su(1), failing because csh(1) is the default shell and does not exist on such systems).
  • Added: update repositories after creating a linux+debootstrap jail (to avoid manually updating the repositories after creating the jail, the user can save some time by updating them at creation time).
  • Added: support for linux+debootstrap package manager in appjail pkg.
  • Added: instructions to install AppJail (both sysutils/appjail & sysutils/appjail-devel) using the package manager (thanks to @alonsobsd for the sysutils/appjail-devel port).
  • Added: "Maintenance of cloned Makejails" section in README.
  • Added: "Makejails and the command-line" section in README.
  • Fixed: incorrect path generation in share/appjail/scripts/ascii2oct.sh (since -v parameter is missing, od(1) will attempt to replace duplicate values with * instead of simply generatinf the correct octal code).
  • Added: appjail-config & tok (a new program has been written entirely in C for better performance than the slower sh(1) version, appjail config. This program also has an intuitive command-line interface better error messages such as syntax errors, and contributors (aka developers) can learn it much easier than sed(1)/grep(1) commands and complex regular expressions used by the sh(1) variant. tok is the tokenizer that uses some appjail-config modules to parse some expressions in Makejails operations and some internally in AppJail).
  • Changed: uninstall programs in cleanall instead of the clean target in Makefile (the cleanall target has been added to delete the resulting program instead of using the clean target that is normally used to delete object files. The clean target has not been removed even if the Makefile does not generate object files, as it is maintained for consistency).
  • Deprecated: appjail config (in favor of the new tool, appjail-config, which is technically superior, appjail config should no longer be used).
  • Added: support for optional arguments in ARG.
  • Added: macaddr option in appjail quick.
  • Added: support for trusted users.
  • Added: "Comparing AppJail" section.
  • Added: --remove parameter in PKG.
  • Added: --autoremove parameter in PKG.
  • Added: --update parameter in PKG.
  • Added: --upgrade parameter in PKG.
  • Added: AUTO_GIT_UPDATE option in the configuration file.
  • Fixed: incorrect detection of mounted points (a problem can arise when a jail has a name like hello and another jail with a name like hello-builder. The problem is when a mounted point is detected in the hello jail but share/appjail/lib/mount:lib_mountpoint_mounted will show mount points in hello-builder which is incorrect).
  • Added: --jail parameter in COPY.
  • Added: EXEC instruction in Makejails.
  • Added: DESTROY instruction in Makejails.
  • Added: "DNS" section in README.
  • Added: --glob, --glob-left & --glob-right parameters in COPY.
  • Fixed: static values for TAR_COMPRESS_ARGS & TAR_DECOMPRESS_ARGS.
  • Added: missing check for when limits cause an error in appjail quick.
  • Added: status command.

Full Changelog: v2.4.0...v2.5.0

v2.4.0

09 Mar 17:33

Choose a tag to compare

Changes between 2.3.1 and 2.4.0

  • Remove precompiled binaries: Utilities must be compiled on the user's machine and not distributed as precompiled binaries.
  • Change share/appjail/util to libexec/appjail: To respect hier(7), the utilities directory has been changed to
    libexec/appjail.
  • Add .gitignore to ignore binaries.
  • appjail network: Fix fixed path to the network utility.
  • MAKEFILE: Add clean and utils-clean targets.
  • UTILITIES: Change printf(3) to errx(3).
  • appjail version: Bump version to 2.4.0.

Full Changelog: v2.3.1...v2.4.0

v2.3.1

09 Mar 13:13

Choose a tag to compare

Changes between 2.3.0 and 2.3.1

  • MAKEFILE: Remove unnecessary creation of the data directory.
  • appjail version: Bump version to 2.3.1

Full Changelog: v2.3.0...v2.3.1

v2.3.0

04 Mar 17:00

Choose a tag to compare

Changes between 2.2.0 and 2.3.0

  • MAKEJAIL: Add user-defined stage feature:
    • The user-defined stage is a very useful feature. It simplifies the design of a Makejail that includes many Makejails, so the stage used in one does not overlap the other unless they are the same.
  • Add network fix [all|addr|dup] commands:
    • Commands to simplify the resolution of some problems such as duplicate IP addresses or IP addresses in invalid ranges.
  • appjail jail:
    • Fix clone+release to pass its arguments correctly: When the function responsible for creating the jail from a cloned release is called, the arguments provided by the -I parameter are not passed, but the snapshot name is incorrectly using the first argument (-a), so the snapshot is called -a and the user argument is ignored.
    • Fix clone+release when using with a linux+debootstrap jail: When using the clone+release installation method no post-installation is executed, so a jail is created with nothing.
  • appjail quick:
    • Add new installation methods to create new instances of a jail: To take advantage of appjail quick, the following installation methods have been implemented: clone+jail, clone+release, tiny+import, copy, import+jail, import+root, zfs+import+jail and zfs+import+root. This is very useful for creating instances of a jail but with different options.
    • Force the reservation of an IP address when using virtualnets: This is important for installation methods that have duplicate or incorrect information, such as a copy, a clone or import, so that the IP address problem has no effect.
  • appjail makejail:
    • Add -o parameter: To pass options to appjail quick from the command-line when using appjail makejail so that there is not need to create a separate Makejail file to simply pass some options.
    • Add missing command to force the execution of OPTION.
  • rc scripts:
    • Remove unnecessary title line.
  • README:
    • Add command to create private bridge: Since dnsmasq requires an IP address, the private bridge must be created first.
    • Fix typos.
    • Add suggestion to put the kernel modules in loader.conf(5).
  • appjail version:
    • Bump version to 2.3.0

Full Changelog: v2.2.0...v2.3.0