Compare commits

...
19 Commits
Author SHA1 Message Date
renovate[bot] a1de0d20f7 Update dependency itzg/mc-monitor to v1.18.3 (#4320) 2026-10-09 14:40:09 -05:00
renovate[bot] a7583e0477 Update dependency itzg/mc-image-helper to v1.71.4 (#4321) 2026-10-09 14:39:46 -05:00
renovate[bot] 70b3f73ebc Update dependency itzg/mc-image-helper to v1.71.3 (#4319)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-08 15:52:30 -05:00
dependabot[bot] b3e6608470 build(deps): bump the patches group in /docs with 3 updates (#4318) 2026-10-07 07:17:23 -05:00
Geoff Bourne 685024a482 Allow for qualified libpcap for Ubuntu Resolute (#4316) 2026-10-06 07:39:01 -05:00
renovate[bot] 8541fa98c2 Update dependency itzg/mc-image-helper to v1.71.1 (#4315) 2026-10-06 06:49:49 -05:00
Geoff Bourne d85a019c57 build: switch to using latest eclipse-temurin:8-jre base image (#4314) 2026-10-05 15:28:50 -05:00
Geoff Bourne 5cb3f0a652 Document Modrinth option to select most "stable" version of project (#4312) 2026-10-03 17:39:44 -05:00
renovate[bot] b94d51517d Update dependency itzg/mc-image-helper to v1.71.0 (#4311) 2026-10-03 16:25:43 -05:00
Samuel McCarthy beed693663 Add TooManyRecipeViewers to forceIncludes for craftoria (#4306) 2026-10-02 07:03:28 -05:00
Harrison Black 770966bf5e Retrofit mc-image-helper extract archive (#4291) 2026-10-01 07:17:34 -05:00
Tristan 67d1453ee1 small upgrades of logging for GTNH (#4304) 2026-10-01 07:11:53 -05:00
Tristan 7ea3f76d41 Fix 3 small bugs on GTNH (#4303) 2026-09-30 16:42:13 -05:00
dependabot[bot] 47130bb030 build(deps): bump the patches group in /docs with 5 updates (#4302) 2026-09-30 07:00:27 -05:00
renovate[bot] 93f5a03995 Update dependency itzg/mc-image-helper to v1.70.2 (#4298) 2026-09-28 08:18:09 -05:00
renovate[bot] 00449564a8 Update dependency itzg/mc-image-helper to v1.70.1 (#4297) 2026-09-27 13:52:39 -05:00
renovate[bot] b0f2be88cc Update dependency itzg/mc-monitor to v1 (#4295) 2026-09-27 08:28:30 -05:00
spatterlight 685c16d6dc docs: update MASH Minecraft role link (#4296) 2026-09-27 08:16:15 -05:00
Moritz Rinow 3a682c49f4 docs: add mention of Kobblestone in related-projects (#4294) 2026-09-25 15:35:55 -05:00
14 changed files with 86 additions and 54 deletions

No files matched your search

+2 -4
View File
@@ -104,16 +104,14 @@ jobs:
mcHelperVersion: 1.51.4-java8 mcHelperVersion: 1.51.4-java8
# JAVA 8: NOTE: Unable to go past 8u312 because of Forge dependencies # JAVA 8: NOTE: Unable to go past 8u312 because of Forge dependencies
- variant: java8 - variant: java8
baseImage: eclipse-temurin:8u312-b07-jre-focal baseImage: eclipse-temurin:8-jre
platforms: linux/amd64,linux/arm/v7,linux/arm64 platforms: linux/amd64,linux/arm/v7,linux/arm64
mcVersion: 1.12.2 mcVersion: 1.12.2
# Pin version for Java 8, also be sure to set in verify-pr.yml
mcHelperVersion: 1.51.4-java8 mcHelperVersion: 1.51.4-java8
- variant: java8-jdk - variant: java8-jdk
baseImage: eclipse-temurin:8u312-b07-jdk-focal baseImage: eclipse-temurin:8-jdk
platforms: linux/amd64,linux/arm64 platforms: linux/amd64,linux/arm64
mcVersion: 1.12.2 mcVersion: 1.12.2
# Pin version for Java 8, also be sure to set in verify-pr.yml
mcHelperVersion: 1.51.4-java8 mcHelperVersion: 1.51.4-java8
env: env:
# Assume they line up, but when forked change to your Docker Hub username # Assume they line up, but when forked change to your Docker Hub username
+2 -1
View File
@@ -55,7 +55,8 @@ jobs:
knockdRepoOrg: Metalcape/knock knockdRepoOrg: Metalcape/knock
# JAVA 8: # JAVA 8:
- variant: java8 - variant: java8
baseImage: eclipse-temurin:8u312-b07-jre-focal # make sure to track the base image version in build.yml
baseImage: eclipse-temurin:8-jre
platforms: linux/amd64 platforms: linux/amd64
mcVersion: 1.12.2 mcVersion: 1.12.2
# For GLIBC_2.34 support # For GLIBC_2.34 support
+2 -2
View File
@@ -45,7 +45,7 @@ RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
--from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz --from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
# renovate: datasource=github-releases packageName=itzg/mc-monitor # renovate: datasource=github-releases packageName=itzg/mc-monitor
ARG MC_MONITOR_VERSION=0.18.1 ARG MC_MONITOR_VERSION=1.18.3
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \ RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
--var version=${MC_MONITOR_VERSION} --var app=mc-monitor --file {{.app}} \ --var version=${MC_MONITOR_VERSION} --var app=mc-monitor --file {{.app}} \
--from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz --from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
@@ -57,7 +57,7 @@ RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
--from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz --from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
# renovate: datasource=github-releases packageName=itzg/mc-image-helper versioning=loose # renovate: datasource=github-releases packageName=itzg/mc-image-helper versioning=loose
ARG MC_HELPER_VERSION=1.70.0 ARG MC_HELPER_VERSION=1.71.4
ARG MC_HELPER_BASE_URL=${GITHUB_BASEURL}/itzg/mc-image-helper/releases/download/${MC_HELPER_VERSION} ARG MC_HELPER_BASE_URL=${GITHUB_BASEURL}/itzg/mc-image-helper/releases/download/${MC_HELPER_VERSION}
# used for cache busting local copy of mc-image-helper # used for cache busting local copy of mc-image-helper
ARG MC_HELPER_REV=1 ARG MC_HELPER_REV=1
+1 -1
View File
@@ -28,7 +28,7 @@ apt-get install -y \
zstd \ zstd \
lbzip2 \ lbzip2 \
nfs-common \ nfs-common \
libpcap0.8 \ 'libpcap0.8*' \
libnuma1 \ libnuma1 \
libcap2-bin \ libcap2-bin \
jattach \ jattach \
+1 -1
View File
@@ -19,7 +19,7 @@
### Using the MASH playbook ### Using the MASH playbook
[The MASH Playbook](https://github.com/mother-of-all-self-hosting/mash-playbook) is a premade playbook with the option to deploy a [wide variety of open-source services](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/supported-services.md) to your server(s), including [docker-minecraft-server](https://github.com/XHawk87/ansible-role-minecraft), making it a good option if you want all the bells and whistles alongside your Minecraft server. [The MASH Playbook](https://github.com/mother-of-all-self-hosting/mash-playbook) is a premade playbook with the option to deploy a [wide variety of open-source services](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/supported-services.md) to your server(s), including [docker-minecraft-server](https://github.com/mother-of-all-self-hosting/ansible-role-minecraft), making it a good option if you want all the bells and whistles alongside your Minecraft server.
- Check out the [Installation Guide](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/README.md) for the MASH playbook to get started. - Check out the [Installation Guide](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/README.md) for the MASH playbook to get started.
- You can then enable [Minecraft](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/minecraft.md) in your vars.yml. - You can then enable [Minecraft](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/minecraft.md) in your vars.yml.
- Enable any supporting services that you might find useful, such as [user authentication](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/authelia.md), [remote backups](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/backup-borg.md), [email relay](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/exim-relay.md), [cron monitoring](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/healthchecks.md), [audio and video conferencing](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/jitsi.md), databases ([MariaDB](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/mariadb.md), [PostgresSQL](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/postgres.md)), [push notifications](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/ntfy.md), [uptime monitoring](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/uptime-kuma.md), [a website](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/wordpress.md), as well as installing any [extra files, folders, applications, services and running commands](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/auxiliary.md) automatically on deployment. - Enable any supporting services that you might find useful, such as [user authentication](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/authelia.md), [remote backups](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/backup-borg.md), [email relay](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/exim-relay.md), [cron monitoring](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/healthchecks.md), [audio and video conferencing](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/jitsi.md), databases ([MariaDB](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/mariadb.md), [PostgresSQL](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/postgres.md)), [push notifications](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/ntfy.md), [uptime monitoring](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/uptime-kuma.md), [a website](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/wordpress.md), as well as installing any [extra files, folders, applications, services and running commands](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/auxiliary.md) automatically on deployment.
+4
View File
@@ -33,3 +33,7 @@ An image that dockerizes [rcon-web-admin](https://github.com/rcon-web-admin/rcon
### [AutoStopper](https://github.com/Criseda/AutoStopper) ### [AutoStopper](https://github.com/Criseda/AutoStopper)
A Velocity plugin that stops idle backend servers and wakes them when players connect, with readiness-aware Docker lifecycle management. A Velocity plugin that stops idle backend servers and wakes them when players connect, with readiness-aware Docker lifecycle management.
### [Kobblestone](https://github.com/kobblestoneio/kobblestone)
A Kubernetes operator for Minecraft that supports custom resource types to manage servers, routers, backups and more.
+17 -12
View File
@@ -22,7 +22,8 @@ Where:
- **Project** is the project slug or ID, see below - **Project** is the project slug or ID, see below
- **Version** is the version ID (such as "Oa9ZDzZq") or number (such as "2.21.2"). When omitted, the latest release version will be selected. Using version ID will override Minecraft and loader compatibility checks. - **Version** is the version ID (such as "Oa9ZDzZq") or number (such as "2.21.2"). When omitted, the latest release version will be selected. Using version ID will override Minecraft and loader compatibility checks.
- **Release Type** is `release`, `beta`, or `alpha` indicating the latest version to select. - **Release Type** is `release`, `beta`, or `alpha` indicating the latest version to select. By default, the newest version that is the same or better release type is selected.
A `+` suffix can be used to indicate instead that the most "stable" version is selected.
- **Prefix** is `datapack`, `fabric`, `forge`, or `paper` - **Prefix** is `datapack`, `fabric`, `forge`, or `paper`
- The `datapack` prefix is optional when running a vanilla server - The `datapack` prefix is optional when running a vanilla server
- The `fabric`, `forge`, and `paper` prefixes allow for installing mods/plugins that differ from server's `TYPE`. Using [Sinytra Connector](https://modrinth.com/mod/connector) is an example of this, where Fabric mods can be loaded into a NeoForge server. - The `fabric`, `forge`, and `paper` prefixes allow for installing mods/plugins that differ from server's `TYPE`. Using [Sinytra Connector](https://modrinth.com/mod/connector) is an example of this, where Fabric mods can be loaded into a NeoForge server.
@@ -46,18 +47,22 @@ Where:
![Version ID](../img/modrinth-version-id.drawio.png) ![Version ID](../img/modrinth-version-id.drawio.png)
### Examples !!! tip "Most stable release type"
| Description | Example projects entry | As an example of using the `{release type}+` feature, [Concurrent Chunk Management for 1.12.11](https://modrinth.com/mod/c2me-fabric/versions?g=1.21.11) had a "release" version at "0.3.6.0.0" and then started publishing "alpha"s with "0.3.7+alpha.0.6+1.21.11". Using `c2me-fabric:alpha+` indicates that the newest "stable" is actually preferred, which is "0.3.6.0.0".
|---------------------------------|-------------------------------------------------------|
| Select latest version | `fabric-api` | ### Examples
| Select specific version | `fabric-api:bQZpGIz0`<br/>`fabric-api:0.119.2+1.21.4` |
| Select latest beta version | `fabric-api:beta` | | Description | Example projects entry |
| Latest version using project ID | `P7dR8mSH` | |---------------------------------|-------------------------------------------------------|
| Latest version of datapack | `datapack:terralith` | | Select latest version | `fabric-api` |
| Specific version of datapack | `datapack:terralith:2.5.5` | | Select specific version | `fabric-api:bQZpGIz0`<br/>`fabric-api:0.119.2+1.21.4` |
| Mod loader override | `fabric:fabric-api`<br/>`fabric:fabric-api:bQZpGIz0` | | Select latest beta version | `fabric-api:beta` |
| Projects Listing File | `@/path/to/modrinth-mods.txt` | | Latest version using project ID | `P7dR8mSH` |
| Latest version of datapack | `datapack:terralith` |
| Specific version of datapack | `datapack:terralith:2.5.5` |
| Mod loader override | `fabric:fabric-api`<br/>`fabric:fabric-api:bQZpGIz0` |
| Projects Listing File | `@/path/to/modrinth-mods.txt` |
### Notes ### Notes
+6 -6
View File
@@ -4,22 +4,22 @@ deepmerge==3.0.1
ghp-import==2.1.0 ghp-import==2.1.0
griffe==2.3.0 griffe==2.3.0
Jinja2==3.1.6 Jinja2==3.1.6
Markdown==3.10.3 Markdown==3.11
MarkupSafe==3.0.3 MarkupSafe==3.0.4
mergedeep==1.3.4 mergedeep==1.3.4
mkdocs==1.6.1 mkdocs==1.6.1
mkdocs-autorefs==1.4.4 mkdocs-autorefs==1.4.4
mkdocs-get-deps==0.2.2 mkdocs-get-deps==0.2.2
mkdocstrings==1.0.6 mkdocstrings==1.0.6
mkdocstrings-python==2.0.8 mkdocstrings-python==2.0.9
packaging==26.3 packaging==26.3
pathspec==1.1.1 pathspec==1.1.1
platformdirs==4.11.11 platformdirs==4.12.3
Pygments==2.21.0 Pygments==2.21.0
pymdown-extensions==12.0.1 pymdown-extensions==12.1
python-dateutil==2.9.0.post0 python-dateutil==2.9.0.post0
PyYAML==6.0.3 PyYAML==6.0.3
pyyaml_env_tag==1.1 pyyaml_env_tag==1.1
six==1.17.0 six==1.17.0
watchdog==6.0.0 watchdog==6.0.0
zensical==0.0.63 zensical==0.0.67
@@ -1,6 +1,6 @@
services: services:
mc: mc:
image: itzg/minecraft-server:java8-multiarch image: itzg/minecraft-server:java8
ports: ports:
- "25565:25565" - "25565:25565"
environment: environment:
+1 -1
View File
@@ -1,6 +1,6 @@
services: services:
mc: mc:
image: itzg/minecraft-server:java8-multiarch image: itzg/minecraft-server:java8
environment: environment:
EULA: true EULA: true
MODPACK_PLATFORM: AUTO_CURSEFORGE MODPACK_PLATFORM: AUTO_CURSEFORGE
+1 -1
View File
@@ -1,6 +1,6 @@
services: services:
mc: mc:
image: itzg/minecraft-server:java8-multiarch image: itzg/minecraft-server:java8
volumes: volumes:
- data:/data - data:/data
- ./modpacks:/modpacks:ro - ./modpacks:/modpacks:ro
+3
View File
@@ -185,6 +185,9 @@
"beyond-depth": { "beyond-depth": {
"forceIncludes": ["particular-reforged"] "forceIncludes": ["particular-reforged"]
}, },
"craftoria": {
"forceIncludes": ["tmrv"]
},
"create-arcane-engineering": { "create-arcane-engineering": {
"forceIncludes": ["just-enough-resources-jer"] "forceIncludes": ["just-enough-resources-jer"]
}, },
+32 -21
View File
@@ -4,9 +4,33 @@
. "$(dirname "$0")/start-utils" . "$(dirname "$0")/start-utils"
# Define setup functions # Define setup functions
function getGTNHversion(){
local gtnh_versions_json_url="https://downloads.gtnewhorizons.com/versions.json"
local json
local result
if ! json="$(curl -fsSL "$gtnh_versions_json_url")"; then
logError "Failed to download from \"$gtnh_versions_json_url\"" >&2
return 1
elif [[ -z $json ]]; then
logError "Empty response from \"$gtnh_versions_json_url\"" >&2
return 1
fi
if ! result="$(jq "$@" <<< "$json")"; then
logError "Failed to parse the versions file from \"$gtnh_versions_json_url\"" >&2
return 1
elif [[ $result == "null" ]] || [[ -z $result ]]; then
logError "No release found for GTNH_PACK_VERSION=$GTNH_PACK_VERSION. Please check if the version is valid." >&2
return 1
fi
printf '%s\n' "$result"
}
function getGTNHdownloadPath(){ function getGTNHdownloadPath(){
gtnh_download_path="" gtnh_download_path=""
local release_object="" local release_object=""
local log_version_from=""
# Select release JSON object # Select release JSON object
# latest-dev will be removed in the future, but is still supported for now. # latest-dev will be removed in the future, but is still supported for now.
@@ -14,37 +38,24 @@ function getGTNHdownloadPath(){
if [ "$GTNH_PACK_VERSION" == "latest-dev" ]; then if [ "$GTNH_PACK_VERSION" == "latest-dev" ]; then
logWarning "GTNH_PACK_VERSION=latest-dev is deprecated and will be removed in the future." logWarning "GTNH_PACK_VERSION=latest-dev is deprecated and will be removed in the future."
fi fi
if ! release_object="$( release_object=$(getGTNHversion '(.versions // .)|to_entries|map(select(.value.title == "Beta release"))|sort_by(.value.releaseDate,(.key | ascii_downcase | if test("rc") then 2 elif test("beta") then 1 else 0 end))|.[-1]') || exit 1
curl -fsSL "https://downloads.gtnewhorizons.com/versions.json" \ log_version_from="latest beta";
| jq -r '(.versions // .)|to_entries|sort_by(.value.releaseDate)|map(select(.value.title=="Beta release"))|.[-1]'
)"; then logError "Failed to retrieve release from https://downloads.gtnewhorizons.com/versions.json"
exit 1
fi
log "Selected $(jq '.key' <<< "$release_object") as latest dev version for download."
elif [ "$GTNH_PACK_VERSION" == "latest" ]; then elif [ "$GTNH_PACK_VERSION" == "latest" ]; then
if ! release_object="$( release_object=$(getGTNHversion '(.versions // .)|to_entries|sort_by(.value.releaseDate)|map(select(.value.title=="Stable release"))|.[-1]') || exit 1
curl -fsSL "https://downloads.gtnewhorizons.com/versions.json" \ log_version_from="latest";
| jq -r '(.versions // .)|to_entries|sort_by(.value.releaseDate)|map(select(.value.title=="Stable release"))|.[-1]'
)"; then logError "Failed to retrieve release from https://downloads.gtnewhorizons.com/versions.json"
exit 1
fi
log "Selected $(jq '.key' <<< "$release_object") as latest version for download."
else else
if ! release_object="$( release_object=$(getGTNHversion --arg USRIN "$GTNH_PACK_VERSION" '($USRIN | ascii_downcase) as $in|(.versions // .)|to_entries|sort_by(.value.releaseDate)|map(select((.key | ascii_downcase)==$in))|.[]') || exit 1
curl -fsSL "https://downloads.gtnewhorizons.com/versions.json" \ log_version_from="matching";
| jq -r --arg USRIN "$GTNH_PACK_VERSION" '(.versions // .)|to_entries|sort_by(.value.releaseDate)|map(select(.key==$USRIN))|.[]'
)"; then logError "Failed to retrieve release from https://downloads.gtnewhorizons.com/versions.json"
exit 1
fi
log "Selected $(jq -r '.key' <<< "$release_object") as matching version for download."
fi fi
if [[ -z $release_object ]]; then if [[ -z $release_object ]]; then
logError "No release found for GTNH_PACK_VERSION=$GTNH_PACK_VERSION. Please check if the version is valid." logError "No release found for GTNH_PACK_VERSION=$GTNH_PACK_VERSION. Please check if the version is valid."
exit 1 exit 1
else
log "Selected \"$(jq -r '.key' <<< "$release_object")\" as ${log_version_from} version for download."
fi fi
# Select compatible server files for java version # Select compatible server files for java version
+13 -3
View File
@@ -596,11 +596,21 @@ function isType() {
} }
function extract() { function extract() {
src=${1?} local src=${1?}
destDir=${2?} local destDir=${2?}
shift 2 shift 2
# remaining args are paths within the archive to extract; if none, extract everything # Remaining args are paths within the archive; if none, extract everything.
# Use modern `mc-image-helper extract archive` if it exists. Standardises extraction logic
# and checks if ZipSlips / Path Traversals exist before extraction
# Supports ZIP, TAR, TAR.GZ, TAR.BZ2, TAR.ZSTD
if mc-image-helper has-feature archive; then
mc-image-helper archive extract --overwrite -- "${src}" "${destDir}" "$@"
return $?
fi
# Older helper builds, including Java 8, use the shell extraction fallback.
local type
type=$(file -b --mime-type "${src}") type=$(file -b --mime-type "${src}")
if [[ "$type" == application/octet-stream ]]; then if [[ "$type" == application/octet-stream ]]; then
logWarning "Detected non-specific file type $type for $src" logWarning "Detected non-specific file type $type for $src"