Deploying to gh-pages from @ msfjarvis/adnix-rs@2c4d1b2c18 🚀
This commit is contained in:
commit
309ff559f9
|
@ -0,0 +1,314 @@
|
|||
# Licensed under the MIT license
|
||||
# <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
|
||||
The installer for adnix 0.4.10
|
||||
|
||||
.DESCRIPTION
|
||||
|
||||
This script detects what platform you're on and fetches an appropriate archive from
|
||||
https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10
|
||||
then unpacks the binaries and installs them to $env:CARGO_HOME\bin ($HOME\.cargo\bin)
|
||||
|
||||
It will then add that dir to PATH by editing your Environment.Path registry key
|
||||
|
||||
.PARAMETER ArtifactDownloadUrl
|
||||
The URL of the directory where artifacts can be fetched from
|
||||
|
||||
.PARAMETER NoModifyPath
|
||||
Don't add the install directory to PATH
|
||||
|
||||
.PARAMETER Help
|
||||
Print help
|
||||
|
||||
#>
|
||||
|
||||
param (
|
||||
[Parameter(HelpMessage = "The URL of the directory where artifacts can be fetched from")]
|
||||
[string]$ArtifactDownloadUrl = 'https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10',
|
||||
[Parameter(HelpMessage = "Don't add the install directory to PATH")]
|
||||
[switch]$NoModifyPath,
|
||||
[Parameter(HelpMessage = "Print Help")]
|
||||
[switch]$Help
|
||||
)
|
||||
|
||||
$app_name = 'adnix'
|
||||
$app_version = '0.4.10'
|
||||
|
||||
$receipt = @"
|
||||
{"binaries":["CARGO_DIST_BINS"],"install_prefix":"AXO_CARGO_HOME","provider":{"source":"cargo-dist","version":"0.11.1"},"source":{"app_name":"adnix","name":"adnix-rs","owner":"msfjarvis","release_type":"github"},"version":"0.4.10"}
|
||||
"@
|
||||
$receipt_home = "${env:LOCALAPPDATA}\adnix"
|
||||
|
||||
function Install-Binary($install_args) {
|
||||
if ($Help) {
|
||||
Get-Help $PSCommandPath -Detailed
|
||||
Exit
|
||||
}
|
||||
|
||||
Initialize-Environment
|
||||
|
||||
# Platform info injected by cargo-dist
|
||||
$platforms = @{
|
||||
"x86_64-pc-windows-msvc" = @{
|
||||
"artifact_name" = "adnix-x86_64-pc-windows-msvc.zip"
|
||||
"bins" = "adnix.exe"
|
||||
"zip_ext" = ".zip"
|
||||
}
|
||||
}
|
||||
|
||||
$fetched = Download "$ArtifactDownloadUrl" $platforms
|
||||
# FIXME: add a flag that lets the user not do this step
|
||||
Invoke-Installer $fetched "$install_args"
|
||||
}
|
||||
|
||||
function Get-TargetTriple() {
|
||||
try {
|
||||
# NOTE: this might return X64 on ARM64 Windows, which is OK since emulation is available.
|
||||
# It works correctly starting in PowerShell Core 7.3 and Windows PowerShell in Win 11 22H2.
|
||||
# Ideally this would just be
|
||||
# [System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture
|
||||
# but that gets a type from the wrong assembly on Windows PowerShell (i.e. not Core)
|
||||
$a = [System.Reflection.Assembly]::LoadWithPartialName("System.Runtime.InteropServices.RuntimeInformation")
|
||||
$t = $a.GetType("System.Runtime.InteropServices.RuntimeInformation")
|
||||
$p = $t.GetProperty("OSArchitecture")
|
||||
# Possible OSArchitecture Values: https://learn.microsoft.com/dotnet/api/system.runtime.interopservices.architecture
|
||||
# Rust supported platforms: https://doc.rust-lang.org/stable/rustc/platform-support.html
|
||||
switch ($p.GetValue($null).ToString())
|
||||
{
|
||||
"X86" { return "i686-pc-windows-msvc" }
|
||||
"X64" { return "x86_64-pc-windows-msvc" }
|
||||
"Arm" { return "thumbv7a-pc-windows-msvc" }
|
||||
"Arm64" { return "aarch64-pc-windows-msvc" }
|
||||
}
|
||||
} catch {
|
||||
# The above was added in .NET 4.7.1, so Windows PowerShell in versions of Windows
|
||||
# prior to Windows 10 v1709 may not have this API.
|
||||
Write-Verbose "Get-TargetTriple: Exception when trying to determine OS architecture."
|
||||
Write-Verbose $_
|
||||
}
|
||||
|
||||
# This is available in .NET 4.0. We already checked for PS 5, which requires .NET 4.5.
|
||||
Write-Verbose("Get-TargetTriple: falling back to Is64BitOperatingSystem.")
|
||||
if ([System.Environment]::Is64BitOperatingSystem) {
|
||||
return "x86_64-pc-windows-msvc"
|
||||
} else {
|
||||
return "i686-pc-windows-msvc"
|
||||
}
|
||||
}
|
||||
|
||||
function Download($download_url, $platforms) {
|
||||
$arch = Get-TargetTriple
|
||||
|
||||
if (-not $platforms.ContainsKey($arch)) {
|
||||
# X64 is well-supported, including in emulation on ARM64
|
||||
Write-Verbose "$arch is not available, falling back to X64"
|
||||
$arch = "x86_64-pc-windows-msvc"
|
||||
}
|
||||
|
||||
if (-not $platforms.ContainsKey($arch)) {
|
||||
# should not be possible, as currently we always produce X64 binaries.
|
||||
$platforms_json = ConvertTo-Json $platforms
|
||||
throw "ERROR: could not find binaries for this platform. Last platform tried: $arch platform info: $platforms_json"
|
||||
}
|
||||
|
||||
# Lookup what we expect this platform to look like
|
||||
$info = $platforms[$arch]
|
||||
$zip_ext = $info["zip_ext"]
|
||||
$bin_names = $info["bins"]
|
||||
$artifact_name = $info["artifact_name"]
|
||||
|
||||
# Make a new temp dir to unpack things to
|
||||
$tmp = New-Temp-Dir
|
||||
$dir_path = "$tmp\$app_name$zip_ext"
|
||||
|
||||
# Download and unpack!
|
||||
$url = "$download_url/$artifact_name"
|
||||
Write-Information "Downloading $app_name $app_version ($arch)"
|
||||
Write-Verbose " from $url"
|
||||
Write-Verbose " to $dir_path"
|
||||
$wc = New-Object Net.Webclient
|
||||
$wc.downloadFile($url, $dir_path)
|
||||
|
||||
Write-Verbose "Unpacking to $tmp"
|
||||
|
||||
# Select the tool to unpack the files with.
|
||||
#
|
||||
# As of windows 10(?), powershell comes with tar preinstalled, but in practice
|
||||
# it only seems to support .tar.gz, and not xz/zstd. Still, we should try to
|
||||
# forward all tars to it in case the user has a machine that can handle it!
|
||||
switch -Wildcard ($zip_ext) {
|
||||
".zip" {
|
||||
Expand-Archive -Path $dir_path -DestinationPath "$tmp";
|
||||
Break
|
||||
}
|
||||
".tar.*" {
|
||||
tar xf $dir_path --strip-components 1 -C "$tmp";
|
||||
Break
|
||||
}
|
||||
Default {
|
||||
throw "ERROR: unknown archive format $zip_ext"
|
||||
}
|
||||
}
|
||||
|
||||
# Let the next step know what to copy
|
||||
$bin_paths = @()
|
||||
foreach ($bin_name in $bin_names) {
|
||||
Write-Verbose " Unpacked $bin_name"
|
||||
$bin_paths += "$tmp\$bin_name"
|
||||
}
|
||||
return $bin_paths
|
||||
}
|
||||
|
||||
function Invoke-Installer($bin_paths) {
|
||||
|
||||
# first try CARGO_HOME, then fallback to HOME
|
||||
# (for whatever reason $HOME is not a normal env var and doesn't need the $env: prefix)
|
||||
$root = if (($base_dir = $env:CARGO_HOME)) {
|
||||
$base_dir
|
||||
} elseif (($base_dir = $HOME)) {
|
||||
Join-Path $base_dir ".cargo"
|
||||
} else {
|
||||
throw "ERROR: could not find your HOME dir or CARGO_HOME to install binaries to"
|
||||
}
|
||||
|
||||
$dest_dir = Join-Path $root "bin"
|
||||
|
||||
# The replace call here ensures proper escaping is inlined into the receipt
|
||||
$receipt = $receipt.Replace('AXO_CARGO_HOME', $dest_dir.replace("\", "\\"))
|
||||
|
||||
$dest_dir = New-Item -Force -ItemType Directory -Path $dest_dir
|
||||
Write-Information "Installing to $dest_dir"
|
||||
# Just copy the binaries from the temp location to the install dir
|
||||
foreach ($bin_path in $bin_paths) {
|
||||
$installed_file = Split-Path -Path "$bin_path" -Leaf
|
||||
Copy-Item "$bin_path" -Destination "$dest_dir"
|
||||
Remove-Item "$bin_path" -Recurse -Force
|
||||
Write-Information " $installed_file"
|
||||
}
|
||||
|
||||
# Replaces the placeholder binary entry with the actual list of binaries
|
||||
$arch = Get-TargetTriple
|
||||
$info = $platforms[$arch]
|
||||
$formatted_bins = ($info["bins"] | ForEach-Object { '"' + $_ + '"' }) -join ","
|
||||
$receipt = $receipt.Replace('"CARGO_DIST_BINS"', $formatted_bins)
|
||||
|
||||
# Write the install receipt
|
||||
$null = New-Item -Path $receipt_home -ItemType "directory" -ErrorAction SilentlyContinue
|
||||
Out-File -FilePath $receipt_home/adnix-receipt.json -InputObject $receipt -Encoding utf8
|
||||
|
||||
Write-Information "Everything's installed!"
|
||||
if (-not $NoModifyPath) {
|
||||
if (Add-Path $dest_dir) {
|
||||
Write-Information ""
|
||||
Write-Information "$dest_dir was added to your PATH, you may need to restart your shell for that to take effect."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Try to add the given path to PATH via the registry
|
||||
#
|
||||
# Returns true if the registry was modified, otherwise returns false
|
||||
# (indicating it was already on PATH)
|
||||
function Add-Path($OrigPathToAdd) {
|
||||
$RegistryPath = "HKCU:\Environment"
|
||||
$PropertyName = "Path"
|
||||
$PathToAdd = $OrigPathToAdd
|
||||
|
||||
$Item = if (Test-Path $RegistryPath) {
|
||||
# If the registry key exists, get it
|
||||
Get-Item -Path $RegistryPath
|
||||
} else {
|
||||
# If the registry key doesn't exist, create it
|
||||
Write-Verbose "Creating $RegistryPath"
|
||||
New-Item -Path $RegistryPath -Force
|
||||
}
|
||||
|
||||
$OldPath = ""
|
||||
try {
|
||||
# Try to get the old PATH value. If that fails, assume we're making it from scratch.
|
||||
# Otherwise assume there's already paths in here and use a ; separator
|
||||
$OldPath = $Item | Get-ItemPropertyValue -Name $PropertyName
|
||||
$PathToAdd = "$PathToAdd;"
|
||||
} catch {
|
||||
# We'll be creating the PATH from scratch
|
||||
Write-Verbose "Adding $PropertyName Property to $RegistryPath"
|
||||
}
|
||||
|
||||
# Check if the path is already there
|
||||
#
|
||||
# We don't want to incorrectly match "C:\blah\" to "C:\blah\blah\", so we include the semicolon
|
||||
# delimiters when searching, ensuring exact matches. To avoid corner cases we add semicolons to
|
||||
# both sides of the input, allowing us to pretend we're always in the middle of a list.
|
||||
if (";$OldPath;" -like "*;$OrigPathToAdd;*") {
|
||||
# Already on path, nothing to do
|
||||
Write-Verbose "install dir already on PATH, all done!"
|
||||
return $false
|
||||
} else {
|
||||
# Actually update PATH
|
||||
Write-Verbose "Adding $OrigPathToAdd to your PATH"
|
||||
$NewPath = $PathToAdd + $OldPath
|
||||
# We use -Force here to make the value already existing not be an error
|
||||
$Item | New-ItemProperty -Name $PropertyName -Value $NewPath -PropertyType String -Force | Out-Null
|
||||
return $true
|
||||
}
|
||||
}
|
||||
|
||||
function Initialize-Environment() {
|
||||
If (($PSVersionTable.PSVersion.Major) -lt 5) {
|
||||
throw @"
|
||||
Error: PowerShell 5 or later is required to install $app_name.
|
||||
Upgrade PowerShell:
|
||||
|
||||
https://docs.microsoft.com/en-us/powershell/scripting/setup/installing-windows-powershell
|
||||
|
||||
"@
|
||||
}
|
||||
|
||||
# show notification to change execution policy:
|
||||
$allowedExecutionPolicy = @('Unrestricted', 'RemoteSigned', 'ByPass')
|
||||
If ((Get-ExecutionPolicy).ToString() -notin $allowedExecutionPolicy) {
|
||||
throw @"
|
||||
Error: PowerShell requires an execution policy in [$($allowedExecutionPolicy -join ", ")] to run $app_name. For example, to set the execution policy to 'RemoteSigned' please run:
|
||||
|
||||
Set-ExecutionPolicy RemoteSigned -scope CurrentUser
|
||||
|
||||
"@
|
||||
}
|
||||
|
||||
# GitHub requires TLS 1.2
|
||||
If ([System.Enum]::GetNames([System.Net.SecurityProtocolType]) -notcontains 'Tls12') {
|
||||
throw @"
|
||||
Error: Installing $app_name requires at least .NET Framework 4.5
|
||||
Please download and install it first:
|
||||
|
||||
https://www.microsoft.com/net/download
|
||||
|
||||
"@
|
||||
}
|
||||
}
|
||||
|
||||
function New-Temp-Dir() {
|
||||
[CmdletBinding(SupportsShouldProcess)]
|
||||
param()
|
||||
$parent = [System.IO.Path]::GetTempPath()
|
||||
[string] $name = [System.Guid]::NewGuid()
|
||||
New-Item -ItemType Directory -Path (Join-Path $parent $name)
|
||||
}
|
||||
|
||||
# PSScriptAnalyzer doesn't like how we use our params as globals, this calms it
|
||||
$Null = $ArtifactDownloadUrl, $NoModifyPath, $Help
|
||||
# Make Write-Information statements be visible
|
||||
$InformationPreference = "Continue"
|
||||
|
||||
# The default interactive handler
|
||||
try {
|
||||
Install-Binary "$Args"
|
||||
} catch {
|
||||
Write-Information $_
|
||||
exit 1
|
||||
}
|
|
@ -0,0 +1,809 @@
|
|||
#!/bin/sh
|
||||
# shellcheck shell=dash
|
||||
#
|
||||
# Licensed under the MIT license
|
||||
# <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
if [ "$KSH_VERSION" = 'Version JM 93t+ 2010-03-05' ]; then
|
||||
# The version of ksh93 that ships with many illumos systems does not
|
||||
# support the "local" extension. Print a message rather than fail in
|
||||
# subtle ways later on:
|
||||
echo 'this installer does not work with this ksh93 version; please try bash!' >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
set -u
|
||||
|
||||
APP_NAME="adnix"
|
||||
APP_VERSION="0.4.10"
|
||||
ARTIFACT_DOWNLOAD_URL="${INSTALLER_DOWNLOAD_URL:-https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10}"
|
||||
PRINT_VERBOSE=${INSTALLER_PRINT_VERBOSE:-0}
|
||||
PRINT_QUIET=${INSTALLER_PRINT_QUIET:-0}
|
||||
NO_MODIFY_PATH=${INSTALLER_NO_MODIFY_PATH:-0}
|
||||
read -r RECEIPT <<EORECEIPT
|
||||
{"binaries":["CARGO_DIST_BINS"],"install_prefix":"AXO_CARGO_HOME","provider":{"source":"cargo-dist","version":"0.11.1"},"source":{"app_name":"adnix","name":"adnix-rs","owner":"msfjarvis","release_type":"github"},"version":"0.4.10"}
|
||||
EORECEIPT
|
||||
# Are we happy with this same path on Linux and Mac?
|
||||
RECEIPT_HOME="${HOME}/.config/adnix"
|
||||
|
||||
# glibc provided by our Ubuntu 20.04 runners;
|
||||
# in the future, we should actually record which glibc was on the runner,
|
||||
# and inject that into the script.
|
||||
BUILDER_GLIBC_MAJOR="2"
|
||||
BUILDER_GLIBC_SERIES="31"
|
||||
|
||||
usage() {
|
||||
# print help (this cat/EOF stuff is a "heredoc" string)
|
||||
cat <<EOF
|
||||
adnix-installer.sh
|
||||
|
||||
The installer for adnix 0.4.10
|
||||
|
||||
This script detects what platform you're on and fetches an appropriate archive from
|
||||
https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10
|
||||
then unpacks the binaries and installs them to \$CARGO_HOME/bin (\$HOME/.cargo/bin)
|
||||
|
||||
It will then add that dir to PATH by adding the appropriate line to your shell profiles.
|
||||
|
||||
USAGE:
|
||||
adnix-installer.sh [OPTIONS]
|
||||
|
||||
OPTIONS:
|
||||
-v, --verbose
|
||||
Enable verbose output
|
||||
|
||||
-q, --quiet
|
||||
Disable progress output
|
||||
|
||||
--no-modify-path
|
||||
Don't configure the PATH environment variable
|
||||
|
||||
-h, --help
|
||||
Print help information
|
||||
EOF
|
||||
}
|
||||
|
||||
download_binary_and_run_installer() {
|
||||
downloader --check
|
||||
need_cmd uname
|
||||
need_cmd mktemp
|
||||
need_cmd chmod
|
||||
need_cmd mkdir
|
||||
need_cmd rm
|
||||
need_cmd tar
|
||||
need_cmd which
|
||||
need_cmd grep
|
||||
need_cmd cat
|
||||
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
--help)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
--quiet)
|
||||
PRINT_QUIET=1
|
||||
;;
|
||||
--verbose)
|
||||
PRINT_VERBOSE=1
|
||||
;;
|
||||
--no-modify-path)
|
||||
NO_MODIFY_PATH=1
|
||||
;;
|
||||
*)
|
||||
OPTIND=1
|
||||
if [ "${arg%%--*}" = "" ]; then
|
||||
err "unknown option $arg"
|
||||
fi
|
||||
while getopts :hvq sub_arg "$arg"; do
|
||||
case "$sub_arg" in
|
||||
h)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
v)
|
||||
# user wants to skip the prompt --
|
||||
# we don't need /dev/tty
|
||||
PRINT_VERBOSE=1
|
||||
;;
|
||||
q)
|
||||
# user wants to skip the prompt --
|
||||
# we don't need /dev/tty
|
||||
PRINT_QUIET=1
|
||||
;;
|
||||
*)
|
||||
err "unknown option -$OPTARG"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
get_architecture || return 1
|
||||
local _arch="$RETVAL"
|
||||
assert_nz "$_arch" "arch"
|
||||
|
||||
local _bins
|
||||
local _zip_ext
|
||||
local _artifact_name
|
||||
|
||||
# Lookup what to download/unpack based on platform
|
||||
case "$_arch" in
|
||||
"aarch64-apple-darwin")
|
||||
_artifact_name="adnix-aarch64-apple-darwin.tar.xz"
|
||||
_zip_ext=".tar.xz"
|
||||
_bins="adnix"
|
||||
_bins_js_array='"adnix"'
|
||||
;;
|
||||
"x86_64-apple-darwin")
|
||||
_artifact_name="adnix-x86_64-apple-darwin.tar.xz"
|
||||
_zip_ext=".tar.xz"
|
||||
_bins="adnix"
|
||||
_bins_js_array='"adnix"'
|
||||
;;
|
||||
"x86_64-unknown-linux-gnu")
|
||||
_artifact_name="adnix-x86_64-unknown-linux-gnu.tar.xz"
|
||||
_zip_ext=".tar.xz"
|
||||
_bins="adnix"
|
||||
_bins_js_array='"adnix"'
|
||||
;;
|
||||
"x86_64-unknown-linux-musl-dynamic")
|
||||
_artifact_name="adnix-x86_64-unknown-linux-musl.tar.xz"
|
||||
_zip_ext=".tar.xz"
|
||||
_bins="adnix"
|
||||
_bins_js_array='"adnix"'
|
||||
;;
|
||||
"x86_64-unknown-linux-musl-static")
|
||||
_artifact_name="adnix-x86_64-unknown-linux-musl.tar.xz"
|
||||
_zip_ext=".tar.xz"
|
||||
_bins="adnix"
|
||||
_bins_js_array='"adnix"'
|
||||
;;
|
||||
*)
|
||||
err "there isn't a package for $_arch"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Replace the placeholder binaries with the calculated array from above
|
||||
RECEIPT="$(echo "$RECEIPT" | sed s/'"CARGO_DIST_BINS"'/"$_bins_js_array"/)"
|
||||
|
||||
# download the archive
|
||||
local _url="$ARTIFACT_DOWNLOAD_URL/$_artifact_name"
|
||||
local _dir
|
||||
if ! _dir="$(ensure mktemp -d)"; then
|
||||
# Because the previous command ran in a subshell, we must manually
|
||||
# propagate exit status.
|
||||
exit 1
|
||||
fi
|
||||
local _file="$_dir/input$_zip_ext"
|
||||
|
||||
say "downloading $APP_NAME $APP_VERSION ${_arch}" 1>&2
|
||||
say_verbose " from $_url" 1>&2
|
||||
say_verbose " to $_file" 1>&2
|
||||
|
||||
ensure mkdir -p "$_dir"
|
||||
|
||||
if ! downloader "$_url" "$_file"; then
|
||||
say "failed to download $_url"
|
||||
say "this may be a standard network error, but it may also indicate"
|
||||
say "that $APP_NAME's release process is not working. When in doubt"
|
||||
say "please feel free to open an issue!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# unpack the archive
|
||||
case "$_zip_ext" in
|
||||
".zip")
|
||||
ensure unzip -q "$_file" -d "$_dir"
|
||||
;;
|
||||
|
||||
".tar."*)
|
||||
ensure tar xf "$_file" --strip-components 1 -C "$_dir"
|
||||
;;
|
||||
*)
|
||||
err "unknown archive format: $_zip_ext"
|
||||
;;
|
||||
esac
|
||||
|
||||
install "$_dir" "$_bins" "$@"
|
||||
local _retval=$?
|
||||
if [ "$_retval" != 0 ]; then
|
||||
return "$_retval"
|
||||
fi
|
||||
|
||||
ignore rm -rf "$_dir"
|
||||
|
||||
# Install the install receipt
|
||||
mkdir -p "$RECEIPT_HOME" || {
|
||||
err "unable to create receipt directory at $RECEIPT_HOME"
|
||||
}
|
||||
echo "$RECEIPT" > "$RECEIPT_HOME/$APP_NAME-receipt.json"
|
||||
# shellcheck disable=SC2320
|
||||
local _retval=$?
|
||||
|
||||
return "$_retval"
|
||||
}
|
||||
|
||||
# See discussion of late-bound vs early-bound for why we use single-quotes with env vars
|
||||
# shellcheck disable=SC2016
|
||||
install() {
|
||||
# This code needs to both compute certain paths for itself to write to, and
|
||||
# also write them to shell/rc files so that they can look them up to e.g.
|
||||
# add them to PATH. This requires an active distinction between paths
|
||||
# and expressions that can compute them.
|
||||
#
|
||||
# The distinction lies in when we want env-vars to be evaluated. For instance
|
||||
# if we determine that we want to install to $HOME/.myapp, which do we add
|
||||
# to e.g. $HOME/.profile:
|
||||
#
|
||||
# * early-bound: export PATH="/home/myuser/.myapp:$PATH"
|
||||
# * late-bound: export PATH="$HOME/.myapp:$PATH"
|
||||
#
|
||||
# In this case most people would prefer the late-bound version, but in other
|
||||
# cases the early-bound version might be a better idea. In particular when using
|
||||
# other env-vars than $HOME, they are more likely to be only set temporarily
|
||||
# for the duration of this install script, so it's more advisable to erase their
|
||||
# existence with early-bounding.
|
||||
#
|
||||
# This distinction is handled by "double-quotes" (early) vs 'single-quotes' (late).
|
||||
#
|
||||
# This script has a few different variants, the most complex one being the
|
||||
# CARGO_HOME version which attempts to install things to Cargo's bin dir,
|
||||
# potentially setting up a minimal version if the user hasn't ever installed Cargo.
|
||||
#
|
||||
# In this case we need to:
|
||||
#
|
||||
# * Install to $HOME/.cargo/bin/
|
||||
# * Create a shell script at $HOME/.cargo/env that:
|
||||
# * Checks if $HOME/.cargo/bin/ is on PATH
|
||||
# * and if not prepends it to PATH
|
||||
# * Edits $HOME/.profile to run $HOME/.cargo/env (if the line doesn't exist)
|
||||
#
|
||||
# To do this we need these 4 values:
|
||||
|
||||
# The actual path we're going to install to
|
||||
local _install_dir
|
||||
# Path to the an shell script that adds install_dir to PATH
|
||||
local _env_script_path
|
||||
# Potentially-late-bound version of install_dir to write env_script
|
||||
local _install_dir_expr
|
||||
# Potentially-late-bound version of env_script_path to write to rcfiles like $HOME/.profile
|
||||
local _env_script_path_expr
|
||||
|
||||
|
||||
# first try CARGO_HOME, then fallback to HOME
|
||||
if [ -n "${CARGO_HOME:-}" ]; then
|
||||
_install_home="$CARGO_HOME"
|
||||
_install_dir="$CARGO_HOME/bin"
|
||||
_env_script_path="$CARGO_HOME/env"
|
||||
# If CARGO_HOME was set but it ended up being the default $HOME-based path,
|
||||
# then keep things late-bound. Otherwise bake the value for safety.
|
||||
# This is what rustup does, and accurately reproducing it is useful.
|
||||
if [ -n "${HOME:-}" ]; then
|
||||
if [ "$HOME/.cargo/bin" = "$_install_dir" ]; then
|
||||
_install_dir_expr='$HOME/.cargo/bin'
|
||||
_env_script_path_expr='$HOME/.cargo/env'
|
||||
else
|
||||
_install_dir_expr="$_install_dir"
|
||||
_env_script_path_expr="$_env_script_path"
|
||||
fi
|
||||
else
|
||||
_install_dir_expr="$_install_dir"
|
||||
_env_script_path_expr="$_env_script_path"
|
||||
fi
|
||||
elif [ -n "${HOME:-}" ]; then
|
||||
_install_home="$HOME/.cargo"
|
||||
_install_dir="$HOME/.cargo/bin"
|
||||
_env_script_path="$HOME/.cargo/env"
|
||||
_install_dir_expr='$HOME/.cargo/bin'
|
||||
_env_script_path_expr='$HOME/.cargo/env'
|
||||
else
|
||||
err "could not find your CARGO_HOME or HOME dir to install binaries to"
|
||||
fi
|
||||
# Replace the temporary cargo home with the calculated one
|
||||
RECEIPT=$(echo "$RECEIPT" | sed "s,AXO_CARGO_HOME,$_install_dir,")
|
||||
|
||||
say "installing to $_install_dir"
|
||||
ensure mkdir -p "$_install_dir"
|
||||
|
||||
# copy all the binaries to the install dir
|
||||
local _src_dir="$1"
|
||||
local _bins="$2"
|
||||
for _bin_name in $_bins; do
|
||||
local _bin="$_src_dir/$_bin_name"
|
||||
ensure cp "$_bin" "$_install_dir"
|
||||
# unzip seems to need this chmod
|
||||
ensure chmod +x "$_install_dir/$_bin_name"
|
||||
say " $_bin_name"
|
||||
done
|
||||
|
||||
say "everything's installed!"
|
||||
|
||||
if [ "0" = "$NO_MODIFY_PATH" ]; then
|
||||
add_install_dir_to_path "$_install_dir_expr" "$_env_script_path" "$_env_script_path_expr" ".profile"
|
||||
exit1=$?
|
||||
add_install_dir_to_path "$_install_dir_expr" "$_env_script_path" "$_env_script_path_expr" ".bash_profile .bash_login .bashrc"
|
||||
exit2=$?
|
||||
add_install_dir_to_path "$_install_dir_expr" "$_env_script_path" "$_env_script_path_expr" ".zshrc .zshenv"
|
||||
exit3=$?
|
||||
|
||||
if [ "${exit1:-0}" = 1 ] || [ "${exit2:-0}" = 1 ] || [ "${exit3:-0}" = 1 ]; then
|
||||
say ""
|
||||
say "To add $_install_dir_expr to your PATH, either restart your shell or run:"
|
||||
say ""
|
||||
say " source $_env_script_path_expr"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
print_home_for_script() {
|
||||
local script="$1"
|
||||
|
||||
local _home
|
||||
case "$script" in
|
||||
# zsh has a special ZDOTDIR directory, which if set
|
||||
# should be considered instead of $HOME
|
||||
.zsh*)
|
||||
if [ -n "${ZDOTDIR:-}" ]; then
|
||||
_home="$ZDOTDIR"
|
||||
else
|
||||
_home="$HOME"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
_home="$HOME"
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "$_home"
|
||||
}
|
||||
|
||||
add_install_dir_to_path() {
|
||||
# Edit rcfiles ($HOME/.profile) to add install_dir to $PATH
|
||||
#
|
||||
# We do this slightly indirectly by creating an "env" shell script which checks if install_dir
|
||||
# is on $PATH already, and prepends it if not. The actual line we then add to rcfiles
|
||||
# is to just source that script. This allows us to blast it into lots of different rcfiles and
|
||||
# have it run multiple times without causing problems. It's also specifically compatible
|
||||
# with the system rustup uses, so that we don't conflict with it.
|
||||
local _install_dir_expr="$1"
|
||||
local _env_script_path="$2"
|
||||
local _env_script_path_expr="$3"
|
||||
local _rcfiles="$4"
|
||||
|
||||
if [ -n "${HOME:-}" ]; then
|
||||
local _target
|
||||
local _home
|
||||
|
||||
# Find the first file in the array that exists and choose
|
||||
# that as our target to write to
|
||||
for _rcfile_relative in $_rcfiles; do
|
||||
_home="$(print_home_for_script "$_rcfile_relative")"
|
||||
local _rcfile="$_home/$_rcfile_relative"
|
||||
|
||||
if [ -f "$_rcfile" ]; then
|
||||
_target="$_rcfile"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# If we didn't find anything, pick the first entry in the
|
||||
# list as the default to create and write to
|
||||
if [ -z "${_target:-}" ]; then
|
||||
local _rcfile_relative
|
||||
_rcfile_relative="$(echo "$_rcfiles" | awk '{ print $1 }')"
|
||||
_home="$(print_home_for_script "$_rcfile_relative")"
|
||||
_target="$_home/$_rcfile_relative"
|
||||
fi
|
||||
|
||||
# `source x` is an alias for `. x`, and the latter is more portable/actually-posix.
|
||||
# This apparently comes up a lot on freebsd. It's easy enough to always add
|
||||
# the more robust line to rcfiles, but when telling the user to apply the change
|
||||
# to their current shell ". x" is pretty easy to misread/miscopy, so we use the
|
||||
# prettier "source x" line there. Hopefully people with Weird Shells are aware
|
||||
# this is a thing and know to tweak it (or just restart their shell).
|
||||
local _robust_line=". \"$_env_script_path_expr\""
|
||||
local _pretty_line="source \"$_env_script_path_expr\""
|
||||
|
||||
# Add the env script if it doesn't already exist
|
||||
if [ ! -f "$_env_script_path" ]; then
|
||||
say_verbose "creating $_env_script_path"
|
||||
write_env_script "$_install_dir_expr" "$_env_script_path"
|
||||
else
|
||||
say_verbose "$_env_script_path already exists"
|
||||
fi
|
||||
|
||||
# Check if the line is already in the rcfile
|
||||
# grep: 0 if matched, 1 if no match, and 2 if an error occurred
|
||||
#
|
||||
# Ideally we could use quiet grep (-q), but that makes "match" and "error"
|
||||
# have the same behaviour, when we want "no match" and "error" to be the same
|
||||
# (on error we want to create the file, which >> conveniently does)
|
||||
#
|
||||
# We search for both kinds of line here just to do the right thing in more cases.
|
||||
if ! grep -F "$_robust_line" "$_target" > /dev/null 2>/dev/null && \
|
||||
! grep -F "$_pretty_line" "$_target" > /dev/null 2>/dev/null
|
||||
then
|
||||
# If the script now exists, add the line to source it to the rcfile
|
||||
# (This will also create the rcfile if it doesn't exist)
|
||||
if [ -f "$_env_script_path" ]; then
|
||||
say_verbose "adding $_robust_line to $_target"
|
||||
ensure echo "$_robust_line" >> "$_target"
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
say_verbose "$_install_dir already on PATH"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
write_env_script() {
|
||||
# write this env script to the given path (this cat/EOF stuff is a "heredoc" string)
|
||||
local _install_dir_expr="$1"
|
||||
local _env_script_path="$2"
|
||||
ensure cat <<EOF > "$_env_script_path"
|
||||
#!/bin/sh
|
||||
# add binaries to PATH if they aren't added yet
|
||||
# affix colons on either side of \$PATH to simplify matching
|
||||
case ":\${PATH}:" in
|
||||
*:"$_install_dir_expr":*)
|
||||
;;
|
||||
*)
|
||||
# Prepending path in case a system-installed binary needs to be overridden
|
||||
export PATH="$_install_dir_expr:\$PATH"
|
||||
;;
|
||||
esac
|
||||
EOF
|
||||
}
|
||||
|
||||
check_proc() {
|
||||
# Check for /proc by looking for the /proc/self/exe link
|
||||
# This is only run on Linux
|
||||
if ! test -L /proc/self/exe ; then
|
||||
err "fatal: Unable to find /proc/self/exe. Is /proc mounted? Installation cannot proceed without /proc."
|
||||
fi
|
||||
}
|
||||
|
||||
get_bitness() {
|
||||
need_cmd head
|
||||
# Architecture detection without dependencies beyond coreutils.
|
||||
# ELF files start out "\x7fELF", and the following byte is
|
||||
# 0x01 for 32-bit and
|
||||
# 0x02 for 64-bit.
|
||||
# The printf builtin on some shells like dash only supports octal
|
||||
# escape sequences, so we use those.
|
||||
local _current_exe_head
|
||||
_current_exe_head=$(head -c 5 /proc/self/exe )
|
||||
if [ "$_current_exe_head" = "$(printf '\177ELF\001')" ]; then
|
||||
echo 32
|
||||
elif [ "$_current_exe_head" = "$(printf '\177ELF\002')" ]; then
|
||||
echo 64
|
||||
else
|
||||
err "unknown platform bitness"
|
||||
fi
|
||||
}
|
||||
|
||||
is_host_amd64_elf() {
|
||||
need_cmd head
|
||||
need_cmd tail
|
||||
# ELF e_machine detection without dependencies beyond coreutils.
|
||||
# Two-byte field at offset 0x12 indicates the CPU,
|
||||
# but we're interested in it being 0x3E to indicate amd64, or not that.
|
||||
local _current_exe_machine
|
||||
_current_exe_machine=$(head -c 19 /proc/self/exe | tail -c 1)
|
||||
[ "$_current_exe_machine" = "$(printf '\076')" ]
|
||||
}
|
||||
|
||||
get_endianness() {
|
||||
local cputype=$1
|
||||
local suffix_eb=$2
|
||||
local suffix_el=$3
|
||||
|
||||
# detect endianness without od/hexdump, like get_bitness() does.
|
||||
need_cmd head
|
||||
need_cmd tail
|
||||
|
||||
local _current_exe_endianness
|
||||
_current_exe_endianness="$(head -c 6 /proc/self/exe | tail -c 1)"
|
||||
if [ "$_current_exe_endianness" = "$(printf '\001')" ]; then
|
||||
echo "${cputype}${suffix_el}"
|
||||
elif [ "$_current_exe_endianness" = "$(printf '\002')" ]; then
|
||||
echo "${cputype}${suffix_eb}"
|
||||
else
|
||||
err "unknown platform endianness"
|
||||
fi
|
||||
}
|
||||
|
||||
get_architecture() {
|
||||
local _ostype
|
||||
local _cputype
|
||||
_ostype="$(uname -s)"
|
||||
_cputype="$(uname -m)"
|
||||
local _clibtype="gnu"
|
||||
local _local_glibc
|
||||
|
||||
if [ "$_ostype" = Linux ]; then
|
||||
if [ "$(uname -o)" = Android ]; then
|
||||
_ostype=Android
|
||||
fi
|
||||
if ldd --version 2>&1 | grep -q 'musl'; then
|
||||
_clibtype="musl-dynamic"
|
||||
# glibc, but is it a compatible glibc?
|
||||
else
|
||||
# Parsing version out from line 1 like:
|
||||
# ldd (Ubuntu GLIBC 2.35-0ubuntu3.1) 2.35
|
||||
_local_glibc="$(ldd --version | awk -F' ' '{ if (FNR<=1) print $NF }')"
|
||||
|
||||
if [ "$(echo "${_local_glibc}" | awk -F. '{ print $1 }')" = $BUILDER_GLIBC_MAJOR ] && [ "$(echo "${_local_glibc}" | awk -F. '{ print $2 }')" -ge $BUILDER_GLIBC_SERIES ]; then
|
||||
_clibtype="gnu"
|
||||
else
|
||||
say "System glibc version (\`${_local_glibc}') is too old; using musl" >&2
|
||||
_clibtype="musl-static"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$_ostype" = Darwin ] && [ "$_cputype" = i386 ]; then
|
||||
# Darwin `uname -m` lies
|
||||
if sysctl hw.optional.x86_64 | grep -q ': 1'; then
|
||||
_cputype=x86_64
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$_ostype" = SunOS ]; then
|
||||
# Both Solaris and illumos presently announce as "SunOS" in "uname -s"
|
||||
# so use "uname -o" to disambiguate. We use the full path to the
|
||||
# system uname in case the user has coreutils uname first in PATH,
|
||||
# which has historically sometimes printed the wrong value here.
|
||||
if [ "$(/usr/bin/uname -o)" = illumos ]; then
|
||||
_ostype=illumos
|
||||
fi
|
||||
|
||||
# illumos systems have multi-arch userlands, and "uname -m" reports the
|
||||
# machine hardware name; e.g., "i86pc" on both 32- and 64-bit x86
|
||||
# systems. Check for the native (widest) instruction set on the
|
||||
# running kernel:
|
||||
if [ "$_cputype" = i86pc ]; then
|
||||
_cputype="$(isainfo -n)"
|
||||
fi
|
||||
fi
|
||||
|
||||
case "$_ostype" in
|
||||
|
||||
Android)
|
||||
_ostype=linux-android
|
||||
;;
|
||||
|
||||
Linux)
|
||||
check_proc
|
||||
_ostype=unknown-linux-$_clibtype
|
||||
_bitness=$(get_bitness)
|
||||
;;
|
||||
|
||||
FreeBSD)
|
||||
_ostype=unknown-freebsd
|
||||
;;
|
||||
|
||||
NetBSD)
|
||||
_ostype=unknown-netbsd
|
||||
;;
|
||||
|
||||
DragonFly)
|
||||
_ostype=unknown-dragonfly
|
||||
;;
|
||||
|
||||
Darwin)
|
||||
_ostype=apple-darwin
|
||||
;;
|
||||
|
||||
illumos)
|
||||
_ostype=unknown-illumos
|
||||
;;
|
||||
|
||||
MINGW* | MSYS* | CYGWIN* | Windows_NT)
|
||||
_ostype=pc-windows-gnu
|
||||
;;
|
||||
|
||||
*)
|
||||
err "unrecognized OS type: $_ostype"
|
||||
;;
|
||||
|
||||
esac
|
||||
|
||||
case "$_cputype" in
|
||||
|
||||
i386 | i486 | i686 | i786 | x86)
|
||||
_cputype=i686
|
||||
;;
|
||||
|
||||
xscale | arm)
|
||||
_cputype=arm
|
||||
if [ "$_ostype" = "linux-android" ]; then
|
||||
_ostype=linux-androideabi
|
||||
fi
|
||||
;;
|
||||
|
||||
armv6l)
|
||||
_cputype=arm
|
||||
if [ "$_ostype" = "linux-android" ]; then
|
||||
_ostype=linux-androideabi
|
||||
else
|
||||
_ostype="${_ostype}eabihf"
|
||||
fi
|
||||
;;
|
||||
|
||||
armv7l | armv8l)
|
||||
_cputype=armv7
|
||||
if [ "$_ostype" = "linux-android" ]; then
|
||||
_ostype=linux-androideabi
|
||||
else
|
||||
_ostype="${_ostype}eabihf"
|
||||
fi
|
||||
;;
|
||||
|
||||
aarch64 | arm64)
|
||||
_cputype=aarch64
|
||||
;;
|
||||
|
||||
x86_64 | x86-64 | x64 | amd64)
|
||||
_cputype=x86_64
|
||||
;;
|
||||
|
||||
mips)
|
||||
_cputype=$(get_endianness mips '' el)
|
||||
;;
|
||||
|
||||
mips64)
|
||||
if [ "$_bitness" -eq 64 ]; then
|
||||
# only n64 ABI is supported for now
|
||||
_ostype="${_ostype}abi64"
|
||||
_cputype=$(get_endianness mips64 '' el)
|
||||
fi
|
||||
;;
|
||||
|
||||
ppc)
|
||||
_cputype=powerpc
|
||||
;;
|
||||
|
||||
ppc64)
|
||||
_cputype=powerpc64
|
||||
;;
|
||||
|
||||
ppc64le)
|
||||
_cputype=powerpc64le
|
||||
;;
|
||||
|
||||
s390x)
|
||||
_cputype=s390x
|
||||
;;
|
||||
riscv64)
|
||||
_cputype=riscv64gc
|
||||
;;
|
||||
loongarch64)
|
||||
_cputype=loongarch64
|
||||
;;
|
||||
*)
|
||||
err "unknown CPU type: $_cputype"
|
||||
|
||||
esac
|
||||
|
||||
# Detect 64-bit linux with 32-bit userland
|
||||
if [ "${_ostype}" = unknown-linux-gnu ] && [ "${_bitness}" -eq 32 ]; then
|
||||
case $_cputype in
|
||||
x86_64)
|
||||
# 32-bit executable for amd64 = x32
|
||||
if is_host_amd64_elf; then {
|
||||
err "x32 linux unsupported"
|
||||
}; else
|
||||
_cputype=i686
|
||||
fi
|
||||
;;
|
||||
mips64)
|
||||
_cputype=$(get_endianness mips '' el)
|
||||
;;
|
||||
powerpc64)
|
||||
_cputype=powerpc
|
||||
;;
|
||||
aarch64)
|
||||
_cputype=armv7
|
||||
if [ "$_ostype" = "linux-android" ]; then
|
||||
_ostype=linux-androideabi
|
||||
else
|
||||
_ostype="${_ostype}eabihf"
|
||||
fi
|
||||
;;
|
||||
riscv64gc)
|
||||
err "riscv64 with 32-bit userland unsupported"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# treat armv7 systems without neon as plain arm
|
||||
if [ "$_ostype" = "unknown-linux-gnueabihf" ] && [ "$_cputype" = armv7 ]; then
|
||||
if ensure grep '^Features' /proc/cpuinfo | grep -q -v neon; then
|
||||
# At least one processor does not have NEON.
|
||||
_cputype=arm
|
||||
fi
|
||||
fi
|
||||
|
||||
_arch="${_cputype}-${_ostype}"
|
||||
|
||||
RETVAL="$_arch"
|
||||
}
|
||||
|
||||
say() {
|
||||
if [ "0" = "$PRINT_QUIET" ]; then
|
||||
echo "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
say_verbose() {
|
||||
if [ "1" = "$PRINT_VERBOSE" ]; then
|
||||
echo "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
err() {
|
||||
if [ "0" = "$PRINT_QUIET" ]; then
|
||||
local red
|
||||
local reset
|
||||
red=$(tput setaf 1 2>/dev/null || echo '')
|
||||
reset=$(tput sgr0 2>/dev/null || echo '')
|
||||
say "${red}ERROR${reset}: $1" >&2
|
||||
fi
|
||||
exit 1
|
||||
}
|
||||
|
||||
need_cmd() {
|
||||
if ! check_cmd "$1"
|
||||
then err "need '$1' (command not found)"
|
||||
fi
|
||||
}
|
||||
|
||||
check_cmd() {
|
||||
command -v "$1" > /dev/null 2>&1
|
||||
return $?
|
||||
}
|
||||
|
||||
assert_nz() {
|
||||
if [ -z "$1" ]; then err "assert_nz $2"; fi
|
||||
}
|
||||
|
||||
# Run a command that should never fail. If the command fails execution
|
||||
# will immediately terminate with an error showing the failing
|
||||
# command.
|
||||
ensure() {
|
||||
if ! "$@"; then err "command failed: $*"; fi
|
||||
}
|
||||
|
||||
# This is just for indicating that commands' results are being
|
||||
# intentionally ignored. Usually, because it's being executed
|
||||
# as part of error handling.
|
||||
ignore() {
|
||||
"$@"
|
||||
}
|
||||
|
||||
# This wraps curl or wget. Try curl first, if not installed,
|
||||
# use wget instead.
|
||||
downloader() {
|
||||
if check_cmd curl
|
||||
then _dld=curl
|
||||
elif check_cmd wget
|
||||
then _dld=wget
|
||||
else _dld='curl or wget' # to be used in error message of need_cmd
|
||||
fi
|
||||
|
||||
if [ "$1" = --check ]
|
||||
then need_cmd "$_dld"
|
||||
elif [ "$_dld" = curl ]
|
||||
then curl -sSfL "$1" -o "$2"
|
||||
elif [ "$_dld" = wget ]
|
||||
then wget "$1" -O "$2"
|
||||
else err "Unknown downloader" # should not reach here
|
||||
fi
|
||||
}
|
||||
|
||||
download_binary_and_run_installer "$@" || exit 1
|
|
@ -0,0 +1,245 @@
|
|||
/* Code modified from the blender website
|
||||
* https://www.blender.org/wp-content/themes/bthree/assets/js/get_os.js?x82196
|
||||
*/
|
||||
|
||||
let options = {
|
||||
windows64: "x86_64-pc-windows",
|
||||
windows32: "i686-pc-windows",
|
||||
windowsArm: "aarch64-pc-windows",
|
||||
|
||||
mac64: "x86_64-apple",
|
||||
mac32: "i686-apple",
|
||||
macSilicon: "aarch64-apple",
|
||||
|
||||
linux64: "x86_64-unknown-linux",
|
||||
linux32: "i686-unknown-linux",
|
||||
linuxArm: "aarch64-unknown-linux",
|
||||
|
||||
// ios: "ios",
|
||||
// android: "linux-android",
|
||||
// freebsd: "freebsd",
|
||||
};
|
||||
|
||||
function isAppleSilicon() {
|
||||
try {
|
||||
var glcontext = document.createElement("canvas").getContext("webgl");
|
||||
var debugrenderer = glcontext
|
||||
? glcontext.getExtension("WEBGL_debug_renderer_info")
|
||||
: null;
|
||||
var renderername =
|
||||
(debugrenderer &&
|
||||
glcontext.getParameter(debugrenderer.UNMASKED_RENDERER_WEBGL)) ||
|
||||
"";
|
||||
if (renderername.match(/Apple M/) || renderername.match(/Apple GPU/)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
function getOS() {
|
||||
var OS = options.windows64.default;
|
||||
var userAgent = navigator.userAgent;
|
||||
var platform = navigator.platform;
|
||||
|
||||
if (navigator.appVersion.includes("Win")) {
|
||||
if (
|
||||
!userAgent.includes("Windows NT 5.0") &&
|
||||
!userAgent.includes("Windows NT 5.1") &&
|
||||
(userAgent.indexOf("Win64") > -1 ||
|
||||
platform == "Win64" ||
|
||||
userAgent.indexOf("x86_64") > -1 ||
|
||||
userAgent.indexOf("x86_64") > -1 ||
|
||||
userAgent.indexOf("amd64") > -1 ||
|
||||
userAgent.indexOf("AMD64") > -1 ||
|
||||
userAgent.indexOf("WOW64") > -1)
|
||||
) {
|
||||
OS = options.windows64;
|
||||
} else {
|
||||
if (
|
||||
window.external &&
|
||||
window.external.getHostEnvironmentValue &&
|
||||
window.external
|
||||
.getHostEnvironmentValue("os-architecture")
|
||||
.includes("ARM64")
|
||||
) {
|
||||
OS = options.windowsArm;
|
||||
} else {
|
||||
try {
|
||||
var canvas = document.createElement("canvas");
|
||||
var gl = canvas.getContext("webgl");
|
||||
|
||||
var debugInfo = gl.getExtension("WEBGL_debug_renderer_info");
|
||||
var renderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);
|
||||
if (renderer.includes("Qualcomm")) OS = options.windowsArm;
|
||||
} catch (e) {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//MacOS, MacOS X, macOS
|
||||
if (navigator.appVersion.includes("Mac")) {
|
||||
if (
|
||||
navigator.userAgent.includes("OS X 10.5") ||
|
||||
navigator.userAgent.includes("OS X 10.6")
|
||||
) {
|
||||
OS = options.mac32;
|
||||
} else {
|
||||
OS = options.mac64;
|
||||
|
||||
const isSilicon = isAppleSilicon();
|
||||
if (isSilicon) {
|
||||
OS = options.macSilicon;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// linux
|
||||
if (platform.includes("Linux")) {
|
||||
OS = options.linux64;
|
||||
// FIXME: Can we find out whether linux 32-bit or ARM are used?
|
||||
}
|
||||
|
||||
// if (
|
||||
// userAgent.includes("iPad") ||
|
||||
// userAgent.includes("iPhone") ||
|
||||
// userAgent.includes("iPod")
|
||||
// ) {
|
||||
// OS = options.ios;
|
||||
// }
|
||||
// if (platform.toLocaleLowerCase().includes("freebsd")) {
|
||||
// OS = options.freebsd;
|
||||
// }
|
||||
|
||||
return OS;
|
||||
}
|
||||
|
||||
let os = getOS();
|
||||
window.os = os;
|
||||
|
||||
// Unhide and hydrate selector with events
|
||||
const archSelect = document.querySelector(".arch-select");
|
||||
if (archSelect) {
|
||||
archSelect.classList.remove("hidden");
|
||||
const selector = document.querySelector("#install-arch-select");
|
||||
if (selector) {
|
||||
selector.addEventListener("change", onArchChange);
|
||||
}
|
||||
}
|
||||
|
||||
// Hydrate tab buttons with events
|
||||
Array.from(document.querySelectorAll(".install-tab[data-id]")).forEach((tab) => {
|
||||
tab.addEventListener("click", onTabClick);
|
||||
});
|
||||
|
||||
function onArchChange(evt) {
|
||||
// Get target
|
||||
const target = evt.currentTarget.value;
|
||||
// Find corresponding installer lists
|
||||
const newContentEl = document.querySelector(`.arch[data-arch=${target}]`);
|
||||
const oldContentEl = document.querySelector(`.arch[data-arch]:not(.hidden)`);
|
||||
// Hide old content element (if applicable)
|
||||
if (oldContentEl) {
|
||||
oldContentEl.classList.add("hidden");
|
||||
}
|
||||
// Show new content element
|
||||
newContentEl.classList.remove("hidden");
|
||||
// Show the first tab's content if nothing was selected before
|
||||
if (newContentEl.querySelectorAll(".install-tab.selected").length === 0) {
|
||||
const firstContentChild = newContentEl.querySelector(".install-content:first-of-type");
|
||||
const firstTabChild = newContentEl.querySelector(".install-tab:first-of-type");
|
||||
firstContentChild.classList.remove("hidden");
|
||||
if (firstTabChild) {
|
||||
firstTabChild.classList.add("selected");
|
||||
}
|
||||
}
|
||||
// Hide "no OS detected" message
|
||||
const noDetectEl = document.querySelector(".no-autodetect");
|
||||
noDetectEl.classList.add("hidden");
|
||||
// Hide Mac hint
|
||||
document.querySelector(".mac-switch").classList.add("hidden");
|
||||
}
|
||||
|
||||
function onTabClick(evt) {
|
||||
// Get target and ID
|
||||
const {triple, id} = evt.currentTarget.dataset;
|
||||
if (triple) {
|
||||
// Find corresponding content elements
|
||||
const newContentEl = document.querySelector(`.install-content[data-id="${String(id)}"][data-triple=${triple}]`);
|
||||
const oldContentEl = document.querySelector(`.install-content[data-triple=${triple}][data-id]:not(.hidden)`);
|
||||
// Find old tab to unselect
|
||||
const oldTabEl = document.querySelector(`.install-tab[data-triple=${triple}].selected`);
|
||||
// Hide old content element
|
||||
if (oldContentEl && oldTabEl) {
|
||||
oldContentEl.classList.add("hidden");
|
||||
oldTabEl.classList.remove("selected");
|
||||
}
|
||||
|
||||
// Unhide new content element
|
||||
newContentEl.classList.remove("hidden");
|
||||
// Select new tab element
|
||||
evt.currentTarget.classList.add("selected");
|
||||
}
|
||||
}
|
||||
|
||||
const allPlatforms = Array.from(document.querySelectorAll(`.arch[data-arch]`));
|
||||
let hit = allPlatforms.find(
|
||||
(a) => {
|
||||
// Show Intel Mac downloads if no M1 Mac downloads are available
|
||||
if (
|
||||
a.attributes["data-arch"].value.includes(options.mac64) &&
|
||||
os.includes(options.macSilicon) &&
|
||||
!allPlatforms.find(p => p.attributes["data-arch"].value.includes(options.macSilicon))) {
|
||||
// Unhide hint
|
||||
document.querySelector(".mac-switch").classList.remove("hidden");
|
||||
return true;
|
||||
}
|
||||
return a.attributes["data-arch"].value.includes(os);
|
||||
}
|
||||
);
|
||||
|
||||
if (hit) {
|
||||
hit.classList.remove("hidden");
|
||||
const selectEl = document.querySelector("#install-arch-select");
|
||||
selectEl.value = hit.dataset.arch;
|
||||
const firstContentChild = hit.querySelector(".install-content:first-of-type");
|
||||
const firstTabChild = hit.querySelector(".install-tab:first-of-type");
|
||||
firstContentChild.classList.remove("hidden");
|
||||
if (firstTabChild) {
|
||||
firstTabChild.classList.add("selected");
|
||||
}
|
||||
} else {
|
||||
const noDetectEl = document.querySelector(".no-autodetect");
|
||||
if (noDetectEl) {
|
||||
const noDetectElDetails = document.querySelector(".no-autodetect-details");
|
||||
if (noDetectElDetails) {
|
||||
noDetectElDetails.innerHTML = `We detected you're on ${os} but there don't seem to be installers for that. `
|
||||
}
|
||||
noDetectEl.classList.remove("hidden");
|
||||
}
|
||||
}
|
||||
|
||||
let copyButtons = Array.from(document.querySelectorAll("[data-copy]"));
|
||||
if (copyButtons.length) {
|
||||
copyButtons.forEach(function (element) {
|
||||
element.addEventListener("click", () => {
|
||||
navigator.clipboard.writeText(element.attributes["data-copy"].value);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// Toggle for pre releases
|
||||
const checkbox = document.getElementById("show-prereleases");
|
||||
|
||||
if (checkbox) {
|
||||
checkbox.addEventListener("click", () => {
|
||||
const all = document.getElementsByClassName("pre-release");
|
||||
|
||||
if (all) {
|
||||
for (var item of all) {
|
||||
item.classList.toggle("hidden");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,346 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" id="oranda" class="dark">
|
||||
<head>
|
||||
<title>adnix-rs</title>
|
||||
|
||||
<meta property="og:url" content="https://github.com/msfjarvis/adnix-rs" />
|
||||
|
||||
|
||||
<link rel="icon" href="/adnix-rs/favicon.ico" />
|
||||
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<meta name="description" content="Rust binary to generate DNSMasq and Unbound configurations from UNIX host files" />
|
||||
<meta property="og:description" content="Rust binary to generate DNSMasq and Unbound configurations from UNIX host files" />
|
||||
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:title" content="adnix-rs" />
|
||||
|
||||
|
||||
|
||||
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
|
||||
<link rel="stylesheet" href="/adnix-rs/oranda-v0.6.1.css" />
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="page-body">
|
||||
|
||||
<div class="repo_banner">
|
||||
<a href="https://github.com/msfjarvis/adnix-rs">
|
||||
<div class="github-icon" aria-hidden="true"></div>
|
||||
Check out our GitHub!
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<main>
|
||||
<header>
|
||||
|
||||
<h1 class="title">adnix-rs</h1>
|
||||
|
||||
<nav class="nav">
|
||||
<ul>
|
||||
<li><a href="/adnix-rs/">Home</a></li>
|
||||
|
||||
|
||||
|
||||
|
||||
<li><a href="/adnix-rs/artifacts/">Install</a></li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
|
||||
|
||||
<div>
|
||||
<div class="package-managers-downloads">
|
||||
|
||||
|
||||
|
||||
<div>
|
||||
<h3>binstall</h3>
|
||||
<div class="install-code-wrapper">
|
||||
<pre style="background-color:#263238;">
|
||||
<span style="color:#82aaff;">cargo binstall adnix</span></pre>
|
||||
|
||||
<button class="button copy-clipboard-button primary" data-copy="cargo binstall adnix">
|
||||
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
|
||||
</button>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div>
|
||||
<h3>cargo</h3>
|
||||
<div class="install-code-wrapper">
|
||||
<pre style="background-color:#263238;">
|
||||
<span style="color:#82aaff;">cargo install adnix</span><span style="color:#89ddff;"> --</span><span style="color:#f78c6c;">locked</span><span style="color:#89ddff;"> --</span><span style="color:#f78c6c;">profile</span><span style="color:#89ddff;">=</span><span style="color:#82aaff;">dist</span></pre>
|
||||
|
||||
<button class="button copy-clipboard-button primary" data-copy="cargo install adnix --locked --profile=dist">
|
||||
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
|
||||
</button>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div>
|
||||
<h3>homebrew</h3>
|
||||
<div class="install-code-wrapper">
|
||||
<pre style="background-color:#263238;">
|
||||
<span style="color:#82aaff;">brew install msfjarvis/homebrew-tap/adnix</span></pre>
|
||||
|
||||
<button class="button copy-clipboard-button primary" data-copy="brew install msfjarvis/homebrew-tap/adnix">
|
||||
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
|
||||
</button>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div>
|
||||
<h3>nix flake</h3>
|
||||
<div class="install-code-wrapper">
|
||||
<pre style="background-color:#263238;">
|
||||
<span style="color:#82aaff;">nix profile install github:msfjarvis/adnix-rs</span></pre>
|
||||
|
||||
<button class="button copy-clipboard-button primary" data-copy="nix profile install github:msfjarvis/adnix-rs">
|
||||
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
|
||||
</button>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div>
|
||||
<h3>powershell</h3>
|
||||
<div class="install-code-wrapper">
|
||||
<pre style="background-color:#263238;">
|
||||
<span style="color:#82aaff;">irm https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-installer.ps1 </span><span style="color:#89ddff;">| </span><span style="color:#82aaff;">iex</span></pre>
|
||||
|
||||
<button class="button copy-clipboard-button primary" data-copy="irm https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-installer.ps1 | iex">
|
||||
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
|
||||
</button>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a class="button primary" href="/adnix-rs/adnix-installer.ps1.txt">Source</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div>
|
||||
<h3>shell</h3>
|
||||
<div class="install-code-wrapper">
|
||||
<pre style="background-color:#263238;">
|
||||
<span style="color:#82aaff;">curl</span><span style="color:#89ddff;"> --</span><span style="color:#f78c6c;">proto </span><span style="color:#89ddff;">'</span><span style="color:#c3e88d;">=https</span><span style="color:#89ddff;">' --</span><span style="color:#f78c6c;">tlsv1</span><span style="color:#82aaff;">.2</span><span style="color:#89ddff;"> -</span><span style="color:#f78c6c;">LsSf</span><span style="color:#82aaff;"> https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-installer.sh </span><span style="color:#89ddff;">| </span><span style="color:#82aaff;">sh</span></pre>
|
||||
|
||||
<button class="button copy-clipboard-button primary" data-copy="curl --proto '=https' --tlsv1.2 -LsSf https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-installer.sh | sh">
|
||||
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
|
||||
</button>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a class="button primary" href="/adnix-rs/adnix-installer.sh.txt">Source</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div>
|
||||
<h3>Downloads</h3>
|
||||
<table class="artifacts-table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>File</th>
|
||||
<th>Platform</th>
|
||||
|
||||
<th>Checksum</th>
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
<td><a href="https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-aarch64-apple-darwin.tar.xz">adnix-aarch64-apple-darwin.tar.xz</a></td>
|
||||
<td>
|
||||
|
||||
|
||||
macOS Apple Silicon
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
<td><a href="https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-aarch64-apple-darwin.tar.xz.sha256">checksum</a></td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
<td><a href="https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-x86_64-apple-darwin.tar.xz">adnix-x86_64-apple-darwin.tar.xz</a></td>
|
||||
<td>
|
||||
|
||||
|
||||
macOS Intel
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
<td><a href="https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-x86_64-apple-darwin.tar.xz.sha256">checksum</a></td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
<td><a href="https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-x86_64-pc-windows-msvc.msi">adnix-x86_64-pc-windows-msvc.msi</a></td>
|
||||
<td>
|
||||
|
||||
|
||||
Windows x64
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
<td><a href="https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-x86_64-pc-windows-msvc.msi.sha256">checksum</a></td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
<td><a href="https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-x86_64-pc-windows-msvc.zip">adnix-x86_64-pc-windows-msvc.zip</a></td>
|
||||
<td>
|
||||
|
||||
|
||||
Windows x64
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
<td><a href="https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-x86_64-pc-windows-msvc.zip.sha256">checksum</a></td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
<td><a href="https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-x86_64-unknown-linux-gnu.tar.xz">adnix-x86_64-unknown-linux-gnu.tar.xz</a></td>
|
||||
<td>
|
||||
|
||||
|
||||
Linux x64
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
<td><a href="https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-x86_64-unknown-linux-gnu.tar.xz.sha256">checksum</a></td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
<td><a href="https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-x86_64-unknown-linux-musl.tar.xz">adnix-x86_64-unknown-linux-musl.tar.xz</a></td>
|
||||
<td>
|
||||
|
||||
|
||||
musl Linux x64
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
<td><a href="https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-x86_64-unknown-linux-musl.tar.xz.sha256">checksum</a></td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
|
||||
<a href="https://github.com/msfjarvis/adnix-rs"><div class="github-icon" aria-hidden="true"></div></a>
|
||||
|
||||
<span>
|
||||
adnix-rs, MIT/Apache-2.0
|
||||
</span>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script src="/adnix-rs/artifacts.js"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
|
@ -0,0 +1,926 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" id="oranda" class="dark">
|
||||
<head>
|
||||
<title>adnix-rs</title>
|
||||
|
||||
<meta property="og:url" content="https://github.com/msfjarvis/adnix-rs" />
|
||||
|
||||
|
||||
<link rel="icon" href="/adnix-rs/favicon.ico" />
|
||||
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<meta name="description" content="Rust binary to generate DNSMasq and Unbound configurations from UNIX host files" />
|
||||
<meta property="og:description" content="Rust binary to generate DNSMasq and Unbound configurations from UNIX host files" />
|
||||
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:title" content="adnix-rs" />
|
||||
|
||||
|
||||
|
||||
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
|
||||
<link rel="stylesheet" href="/adnix-rs/oranda-v0.6.1.css" />
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="page-body">
|
||||
|
||||
<div class="repo_banner">
|
||||
<a href="https://github.com/msfjarvis/adnix-rs">
|
||||
<div class="github-icon" aria-hidden="true"></div>
|
||||
Check out our GitHub!
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<main>
|
||||
<header>
|
||||
|
||||
<h1 class="title">adnix-rs</h1>
|
||||
|
||||
<nav class="nav">
|
||||
<ul>
|
||||
<li><a href="/adnix-rs/">Home</a></li>
|
||||
|
||||
|
||||
|
||||
|
||||
<li><a href="/adnix-rs/artifacts/">Install</a></li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="artifacts" data-tag="v0.4.10">
|
||||
<div class="artifact-header target">
|
||||
<h4>Install v0.4.10</h4>
|
||||
|
||||
<div><small class="published-date">Published on Apr 10 2024 at 20:47 UTC</small></div>
|
||||
|
||||
|
||||
<ul class="arches">
|
||||
|
||||
<li class="arch hidden" data-arch="aarch64-apple-darwin">
|
||||
|
||||
<ul class="tabs">
|
||||
|
||||
|
||||
|
||||
<li class="install-tab" data-id="11" data-triple="aarch64-apple-darwin">
|
||||
shell
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="install-tab" data-id="8" data-triple="aarch64-apple-darwin">
|
||||
cargo
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="install-tab" data-id="0" data-triple="aarch64-apple-darwin">
|
||||
homebrew
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="install-tab" data-id="7" data-triple="aarch64-apple-darwin">
|
||||
nix flake
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="install-tab" data-id="1" data-triple="aarch64-apple-darwin">
|
||||
tarball
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<ul class="contents">
|
||||
|
||||
|
||||
<li data-id="11" data-triple="aarch64-apple-darwin" class="install-content">
|
||||
|
||||
|
||||
<div class="install-code-wrapper">
|
||||
<pre style="background-color:#263238;">
|
||||
<span style="color:#82aaff;">curl</span><span style="color:#89ddff;"> --</span><span style="color:#f78c6c;">proto </span><span style="color:#89ddff;">'</span><span style="color:#c3e88d;">=https</span><span style="color:#89ddff;">' --</span><span style="color:#f78c6c;">tlsv1</span><span style="color:#82aaff;">.2</span><span style="color:#89ddff;"> -</span><span style="color:#f78c6c;">LsSf</span><span style="color:#82aaff;"> https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-installer.sh </span><span style="color:#89ddff;">| </span><span style="color:#82aaff;">sh</span></pre>
|
||||
|
||||
<button class="button copy-clipboard-button primary" data-copy="curl --proto '=https' --tlsv1.2 -LsSf https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-installer.sh | sh">
|
||||
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
|
||||
</button>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a class="button primary" href="/adnix-rs/adnix-installer.sh.txt">Source</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li data-id="8" data-triple="aarch64-apple-darwin" class="install-content hidden">
|
||||
|
||||
|
||||
<div class="install-code-wrapper">
|
||||
<pre style="background-color:#263238;">
|
||||
<span style="color:#82aaff;">cargo install adnix</span><span style="color:#89ddff;"> --</span><span style="color:#f78c6c;">locked</span><span style="color:#89ddff;"> --</span><span style="color:#f78c6c;">profile</span><span style="color:#89ddff;">=</span><span style="color:#82aaff;">dist</span></pre>
|
||||
|
||||
<button class="button copy-clipboard-button primary" data-copy="cargo install adnix --locked --profile=dist">
|
||||
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
|
||||
</button>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li data-id="0" data-triple="aarch64-apple-darwin" class="install-content hidden">
|
||||
|
||||
|
||||
<div class="install-code-wrapper">
|
||||
<pre style="background-color:#263238;">
|
||||
<span style="color:#82aaff;">brew install msfjarvis/homebrew-tap/adnix</span></pre>
|
||||
|
||||
<button class="button copy-clipboard-button primary" data-copy="brew install msfjarvis/homebrew-tap/adnix">
|
||||
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
|
||||
</button>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li data-id="7" data-triple="aarch64-apple-darwin" class="install-content hidden">
|
||||
|
||||
|
||||
<div class="install-code-wrapper">
|
||||
<pre style="background-color:#263238;">
|
||||
<span style="color:#82aaff;">nix profile install github:msfjarvis/adnix-rs</span></pre>
|
||||
|
||||
<button class="button copy-clipboard-button primary" data-copy="nix profile install github:msfjarvis/adnix-rs">
|
||||
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
|
||||
</button>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li data-id="1" data-triple="aarch64-apple-darwin" class="install-content hidden">
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="download-wrapper">
|
||||
<a href="https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-aarch64-apple-darwin.tar.xz">
|
||||
<button class="button primary">
|
||||
<span>Download</span>
|
||||
<span class="button-subtitle">adnix-aarch64-apple-darwin.tar.xz</span>
|
||||
</button>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="arch hidden" data-arch="x86_64-apple-darwin">
|
||||
|
||||
<ul class="tabs">
|
||||
|
||||
|
||||
|
||||
<li class="install-tab" data-id="11" data-triple="x86_64-apple-darwin">
|
||||
shell
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="install-tab" data-id="8" data-triple="x86_64-apple-darwin">
|
||||
cargo
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="install-tab" data-id="0" data-triple="x86_64-apple-darwin">
|
||||
homebrew
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="install-tab" data-id="7" data-triple="x86_64-apple-darwin">
|
||||
nix flake
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="install-tab" data-id="2" data-triple="x86_64-apple-darwin">
|
||||
tarball
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<ul class="contents">
|
||||
|
||||
|
||||
<li data-id="11" data-triple="x86_64-apple-darwin" class="install-content">
|
||||
|
||||
|
||||
<div class="install-code-wrapper">
|
||||
<pre style="background-color:#263238;">
|
||||
<span style="color:#82aaff;">curl</span><span style="color:#89ddff;"> --</span><span style="color:#f78c6c;">proto </span><span style="color:#89ddff;">'</span><span style="color:#c3e88d;">=https</span><span style="color:#89ddff;">' --</span><span style="color:#f78c6c;">tlsv1</span><span style="color:#82aaff;">.2</span><span style="color:#89ddff;"> -</span><span style="color:#f78c6c;">LsSf</span><span style="color:#82aaff;"> https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-installer.sh </span><span style="color:#89ddff;">| </span><span style="color:#82aaff;">sh</span></pre>
|
||||
|
||||
<button class="button copy-clipboard-button primary" data-copy="curl --proto '=https' --tlsv1.2 -LsSf https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-installer.sh | sh">
|
||||
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
|
||||
</button>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a class="button primary" href="/adnix-rs/adnix-installer.sh.txt">Source</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li data-id="8" data-triple="x86_64-apple-darwin" class="install-content hidden">
|
||||
|
||||
|
||||
<div class="install-code-wrapper">
|
||||
<pre style="background-color:#263238;">
|
||||
<span style="color:#82aaff;">cargo install adnix</span><span style="color:#89ddff;"> --</span><span style="color:#f78c6c;">locked</span><span style="color:#89ddff;"> --</span><span style="color:#f78c6c;">profile</span><span style="color:#89ddff;">=</span><span style="color:#82aaff;">dist</span></pre>
|
||||
|
||||
<button class="button copy-clipboard-button primary" data-copy="cargo install adnix --locked --profile=dist">
|
||||
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
|
||||
</button>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li data-id="0" data-triple="x86_64-apple-darwin" class="install-content hidden">
|
||||
|
||||
|
||||
<div class="install-code-wrapper">
|
||||
<pre style="background-color:#263238;">
|
||||
<span style="color:#82aaff;">brew install msfjarvis/homebrew-tap/adnix</span></pre>
|
||||
|
||||
<button class="button copy-clipboard-button primary" data-copy="brew install msfjarvis/homebrew-tap/adnix">
|
||||
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
|
||||
</button>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li data-id="7" data-triple="x86_64-apple-darwin" class="install-content hidden">
|
||||
|
||||
|
||||
<div class="install-code-wrapper">
|
||||
<pre style="background-color:#263238;">
|
||||
<span style="color:#82aaff;">nix profile install github:msfjarvis/adnix-rs</span></pre>
|
||||
|
||||
<button class="button copy-clipboard-button primary" data-copy="nix profile install github:msfjarvis/adnix-rs">
|
||||
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
|
||||
</button>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li data-id="2" data-triple="x86_64-apple-darwin" class="install-content hidden">
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="download-wrapper">
|
||||
<a href="https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-x86_64-apple-darwin.tar.xz">
|
||||
<button class="button primary">
|
||||
<span>Download</span>
|
||||
<span class="button-subtitle">adnix-x86_64-apple-darwin.tar.xz</span>
|
||||
</button>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="arch hidden" data-arch="x86_64-pc-windows-msvc">
|
||||
|
||||
<ul class="tabs">
|
||||
|
||||
|
||||
|
||||
<li class="install-tab" data-id="10" data-triple="x86_64-pc-windows-msvc">
|
||||
powershell
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="install-tab" data-id="8" data-triple="x86_64-pc-windows-msvc">
|
||||
cargo
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="install-tab" data-id="4" data-triple="x86_64-pc-windows-msvc">
|
||||
msi
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="install-tab" data-id="7" data-triple="x86_64-pc-windows-msvc">
|
||||
nix flake
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="install-tab" data-id="3" data-triple="x86_64-pc-windows-msvc">
|
||||
zip
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<ul class="contents">
|
||||
|
||||
|
||||
<li data-id="10" data-triple="x86_64-pc-windows-msvc" class="install-content">
|
||||
|
||||
|
||||
<div class="install-code-wrapper">
|
||||
<pre style="background-color:#263238;">
|
||||
<span style="color:#82aaff;">irm https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-installer.ps1 </span><span style="color:#89ddff;">| </span><span style="color:#82aaff;">iex</span></pre>
|
||||
|
||||
<button class="button copy-clipboard-button primary" data-copy="irm https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-installer.ps1 | iex">
|
||||
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
|
||||
</button>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a class="button primary" href="/adnix-rs/adnix-installer.ps1.txt">Source</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li data-id="8" data-triple="x86_64-pc-windows-msvc" class="install-content hidden">
|
||||
|
||||
|
||||
<div class="install-code-wrapper">
|
||||
<pre style="background-color:#263238;">
|
||||
<span style="color:#82aaff;">cargo install adnix</span><span style="color:#89ddff;"> --</span><span style="color:#f78c6c;">locked</span><span style="color:#89ddff;"> --</span><span style="color:#f78c6c;">profile</span><span style="color:#89ddff;">=</span><span style="color:#82aaff;">dist</span></pre>
|
||||
|
||||
<button class="button copy-clipboard-button primary" data-copy="cargo install adnix --locked --profile=dist">
|
||||
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
|
||||
</button>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li data-id="4" data-triple="x86_64-pc-windows-msvc" class="install-content hidden">
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="download-wrapper">
|
||||
<a href="https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-x86_64-pc-windows-msvc.msi">
|
||||
<button class="button primary">
|
||||
<span>Download</span>
|
||||
<span class="button-subtitle">adnix-x86_64-pc-windows-msvc.msi</span>
|
||||
</button>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li data-id="7" data-triple="x86_64-pc-windows-msvc" class="install-content hidden">
|
||||
|
||||
|
||||
<div class="install-code-wrapper">
|
||||
<pre style="background-color:#263238;">
|
||||
<span style="color:#82aaff;">nix profile install github:msfjarvis/adnix-rs</span></pre>
|
||||
|
||||
<button class="button copy-clipboard-button primary" data-copy="nix profile install github:msfjarvis/adnix-rs">
|
||||
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
|
||||
</button>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li data-id="3" data-triple="x86_64-pc-windows-msvc" class="install-content hidden">
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="download-wrapper">
|
||||
<a href="https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-x86_64-pc-windows-msvc.zip">
|
||||
<button class="button primary">
|
||||
<span>Download</span>
|
||||
<span class="button-subtitle">adnix-x86_64-pc-windows-msvc.zip</span>
|
||||
</button>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="arch hidden" data-arch="x86_64-unknown-linux-gnu">
|
||||
|
||||
<ul class="tabs">
|
||||
|
||||
|
||||
|
||||
<li class="install-tab" data-id="11" data-triple="x86_64-unknown-linux-gnu">
|
||||
shell
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="install-tab" data-id="8" data-triple="x86_64-unknown-linux-gnu">
|
||||
cargo
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="install-tab" data-id="0" data-triple="x86_64-unknown-linux-gnu">
|
||||
homebrew
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="install-tab" data-id="7" data-triple="x86_64-unknown-linux-gnu">
|
||||
nix flake
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="install-tab" data-id="5" data-triple="x86_64-unknown-linux-gnu">
|
||||
tarball
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<ul class="contents">
|
||||
|
||||
|
||||
<li data-id="11" data-triple="x86_64-unknown-linux-gnu" class="install-content">
|
||||
|
||||
|
||||
<div class="install-code-wrapper">
|
||||
<pre style="background-color:#263238;">
|
||||
<span style="color:#82aaff;">curl</span><span style="color:#89ddff;"> --</span><span style="color:#f78c6c;">proto </span><span style="color:#89ddff;">'</span><span style="color:#c3e88d;">=https</span><span style="color:#89ddff;">' --</span><span style="color:#f78c6c;">tlsv1</span><span style="color:#82aaff;">.2</span><span style="color:#89ddff;"> -</span><span style="color:#f78c6c;">LsSf</span><span style="color:#82aaff;"> https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-installer.sh </span><span style="color:#89ddff;">| </span><span style="color:#82aaff;">sh</span></pre>
|
||||
|
||||
<button class="button copy-clipboard-button primary" data-copy="curl --proto '=https' --tlsv1.2 -LsSf https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-installer.sh | sh">
|
||||
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
|
||||
</button>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a class="button primary" href="/adnix-rs/adnix-installer.sh.txt">Source</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li data-id="8" data-triple="x86_64-unknown-linux-gnu" class="install-content hidden">
|
||||
|
||||
|
||||
<div class="install-code-wrapper">
|
||||
<pre style="background-color:#263238;">
|
||||
<span style="color:#82aaff;">cargo install adnix</span><span style="color:#89ddff;"> --</span><span style="color:#f78c6c;">locked</span><span style="color:#89ddff;"> --</span><span style="color:#f78c6c;">profile</span><span style="color:#89ddff;">=</span><span style="color:#82aaff;">dist</span></pre>
|
||||
|
||||
<button class="button copy-clipboard-button primary" data-copy="cargo install adnix --locked --profile=dist">
|
||||
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
|
||||
</button>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li data-id="0" data-triple="x86_64-unknown-linux-gnu" class="install-content hidden">
|
||||
|
||||
|
||||
<div class="install-code-wrapper">
|
||||
<pre style="background-color:#263238;">
|
||||
<span style="color:#82aaff;">brew install msfjarvis/homebrew-tap/adnix</span></pre>
|
||||
|
||||
<button class="button copy-clipboard-button primary" data-copy="brew install msfjarvis/homebrew-tap/adnix">
|
||||
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
|
||||
</button>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li data-id="7" data-triple="x86_64-unknown-linux-gnu" class="install-content hidden">
|
||||
|
||||
|
||||
<div class="install-code-wrapper">
|
||||
<pre style="background-color:#263238;">
|
||||
<span style="color:#82aaff;">nix profile install github:msfjarvis/adnix-rs</span></pre>
|
||||
|
||||
<button class="button copy-clipboard-button primary" data-copy="nix profile install github:msfjarvis/adnix-rs">
|
||||
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
|
||||
</button>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li data-id="5" data-triple="x86_64-unknown-linux-gnu" class="install-content hidden">
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="download-wrapper">
|
||||
<a href="https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-x86_64-unknown-linux-gnu.tar.xz">
|
||||
<button class="button primary">
|
||||
<span>Download</span>
|
||||
<span class="button-subtitle">adnix-x86_64-unknown-linux-gnu.tar.xz</span>
|
||||
</button>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="arch hidden" data-arch="x86_64-unknown-linux-musl">
|
||||
|
||||
<ul class="tabs">
|
||||
|
||||
|
||||
|
||||
<li class="install-tab" data-id="11" data-triple="x86_64-unknown-linux-musl">
|
||||
shell
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="install-tab" data-id="8" data-triple="x86_64-unknown-linux-musl">
|
||||
cargo
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="install-tab" data-id="0" data-triple="x86_64-unknown-linux-musl">
|
||||
homebrew
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="install-tab" data-id="7" data-triple="x86_64-unknown-linux-musl">
|
||||
nix flake
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="install-tab" data-id="6" data-triple="x86_64-unknown-linux-musl">
|
||||
tarball
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<ul class="contents">
|
||||
|
||||
|
||||
<li data-id="11" data-triple="x86_64-unknown-linux-musl" class="install-content">
|
||||
|
||||
|
||||
<div class="install-code-wrapper">
|
||||
<pre style="background-color:#263238;">
|
||||
<span style="color:#82aaff;">curl</span><span style="color:#89ddff;"> --</span><span style="color:#f78c6c;">proto </span><span style="color:#89ddff;">'</span><span style="color:#c3e88d;">=https</span><span style="color:#89ddff;">' --</span><span style="color:#f78c6c;">tlsv1</span><span style="color:#82aaff;">.2</span><span style="color:#89ddff;"> -</span><span style="color:#f78c6c;">LsSf</span><span style="color:#82aaff;"> https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-installer.sh </span><span style="color:#89ddff;">| </span><span style="color:#82aaff;">sh</span></pre>
|
||||
|
||||
<button class="button copy-clipboard-button primary" data-copy="curl --proto '=https' --tlsv1.2 -LsSf https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-installer.sh | sh">
|
||||
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
|
||||
</button>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a class="button primary" href="/adnix-rs/adnix-installer.sh.txt">Source</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li data-id="8" data-triple="x86_64-unknown-linux-musl" class="install-content hidden">
|
||||
|
||||
|
||||
<div class="install-code-wrapper">
|
||||
<pre style="background-color:#263238;">
|
||||
<span style="color:#82aaff;">cargo install adnix</span><span style="color:#89ddff;"> --</span><span style="color:#f78c6c;">locked</span><span style="color:#89ddff;"> --</span><span style="color:#f78c6c;">profile</span><span style="color:#89ddff;">=</span><span style="color:#82aaff;">dist</span></pre>
|
||||
|
||||
<button class="button copy-clipboard-button primary" data-copy="cargo install adnix --locked --profile=dist">
|
||||
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
|
||||
</button>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li data-id="0" data-triple="x86_64-unknown-linux-musl" class="install-content hidden">
|
||||
|
||||
|
||||
<div class="install-code-wrapper">
|
||||
<pre style="background-color:#263238;">
|
||||
<span style="color:#82aaff;">brew install msfjarvis/homebrew-tap/adnix</span></pre>
|
||||
|
||||
<button class="button copy-clipboard-button primary" data-copy="brew install msfjarvis/homebrew-tap/adnix">
|
||||
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
|
||||
</button>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li data-id="7" data-triple="x86_64-unknown-linux-musl" class="install-content hidden">
|
||||
|
||||
|
||||
<div class="install-code-wrapper">
|
||||
<pre style="background-color:#263238;">
|
||||
<span style="color:#82aaff;">nix profile install github:msfjarvis/adnix-rs</span></pre>
|
||||
|
||||
<button class="button copy-clipboard-button primary" data-copy="nix profile install github:msfjarvis/adnix-rs">
|
||||
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
|
||||
</button>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li data-id="6" data-triple="x86_64-unknown-linux-musl" class="install-content hidden">
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="download-wrapper">
|
||||
<a href="https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.10/adnix-x86_64-unknown-linux-musl.tar.xz">
|
||||
<button class="button primary">
|
||||
<span>Download</span>
|
||||
<span class="button-subtitle">adnix-x86_64-unknown-linux-musl.tar.xz</span>
|
||||
</button>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="no-autodetect hidden">
|
||||
<span class="no-autodetect-details">We weren't able to detect your OS.</span>
|
||||
</div>
|
||||
<noscript>
|
||||
<a href="/adnix-rs/artifacts/">View all installation options</a>
|
||||
</noscript>
|
||||
|
||||
<div class="mac-switch hidden">This project doesn't offer Apple Silicon downloads, but you can run Intel macOS binaries via Rosetta 2.</div>
|
||||
|
||||
|
||||
|
||||
<div class="bottom-options ">
|
||||
<a href="/adnix-rs/artifacts/" class="backup-download primary">View all installation options</a>
|
||||
|
||||
<div class="arch-select hidden">
|
||||
<select id="install-arch-select">
|
||||
<option disabled="true" selected="true" value=""></option>
|
||||
|
||||
<option value="x86_64-unknown-linux-gnu">Linux x64</option>
|
||||
|
||||
<option value="aarch64-apple-darwin">macOS Apple Silicon</option>
|
||||
|
||||
<option value="x86_64-apple-darwin">macOS Intel</option>
|
||||
|
||||
<option value="x86_64-unknown-linux-musl">musl Linux x64</option>
|
||||
|
||||
<option value="x86_64-pc-windows-msvc">Windows x64</option>
|
||||
|
||||
</select>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a href="/adnix-rs/artifacts/" class="button mobile-download primary">View all installation options</a>
|
||||
|
||||
|
||||
<h1>adnix-rs <a href="https://crates.io/crates/adnix" rel="noopener noreferrer"><img src="https://img.shields.io/crates/v/adnix.svg" alt="Version info"></a> <a href="http://unmaintained.tech/" rel="noopener noreferrer"><img src="http://unmaintained.tech/badge.svg" alt="No Maintenance Intended"></a> <a href="https://garnix.io" rel="noopener noreferrer"><img src="https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fgarnix.io%2Fapi%2Fbadges%2Fmsfjarvis%2Fadnix-rs%3Fbranch%3Dmain" alt="Built with Garnix"></a></h1>
|
||||
<p>Rust reimplementation of <a href="https://github.com/sniner/adnix" rel="noopener noreferrer">sniner/adnix</a> for educational purposes.</p>
|
||||
<h2>Installation</h2>
|
||||
<p>adnix is available on <a href="https://crates.io/crates/adnix" rel="noopener noreferrer">crates.io</a> and you can install it through cargo.</p>
|
||||
<pre style="background-color:#263238;"><span style="color:#82aaff;">cargo install adnix
|
||||
</span></pre>
|
||||
|
||||
<h2>Usage</h2>
|
||||
<pre style="background-color:#263238;"><span style="color:#82aaff;">USAGE:
|
||||
</span><span style="color:#eeffff;"> </span><span style="color:#82aaff;">adnix </span><span style="font-style:italic;color:#c792ea;">[</span><span style="color:#82aaff;">OPTIONS</span><span style="font-style:italic;color:#c792ea;">]
|
||||
</span><span style="color:#eeffff;">
|
||||
</span><span style="color:#82aaff;">FLAGS:
|
||||
</span><span style="color:#eeffff;"> </span><span style="color:#82aaff;">-h,</span><span style="color:#89ddff;"> --</span><span style="color:#f78c6c;">help</span><span style="color:#82aaff;"> Prints help information
|
||||
</span><span style="color:#eeffff;"> </span><span style="color:#82aaff;">-V,</span><span style="color:#89ddff;"> --</span><span style="color:#f78c6c;">version</span><span style="color:#82aaff;"> Prints version information
|
||||
</span><span style="color:#eeffff;">
|
||||
</span><span style="color:#82aaff;">OPTIONS:
|
||||
</span><span style="color:#eeffff;"> </span><span style="color:#82aaff;">-f,</span><span style="color:#89ddff;"> --</span><span style="color:#f78c6c;">formatter </span><span style="color:#89ddff;"><</span><span style="color:#82aaff;">STRING</span><span style="color:#89ddff;">></span><span style="color:#82aaff;"> Formatter </span><span style="font-style:italic;color:#c792ea;">[</span><span style="color:#82aaff;">default: dnsmasq</span><span style="font-style:italic;color:#c792ea;">] [</span><span style="color:#82aaff;">possible values: dnsmasq, dnsmasq</span><span style="color:#89ddff;">-</span><span style="color:#82aaff;">server, unbound</span><span style="font-style:italic;color:#c792ea;">]
|
||||
</span><span style="color:#eeffff;"> </span><span style="color:#82aaff;">--address </span><span style="color:#89ddff;"><</span><span style="color:#82aaff;">ADDRESS</span><span style="color:#89ddff;">></span><span style="color:#82aaff;"> IPv4 address </span><span style="font-style:italic;color:#c792ea;">[</span><span style="color:#82aaff;">default: 127</span><span style="color:#89ddff;">.</span><span style="color:#82aaff;">0</span><span style="color:#89ddff;">.</span><span style="color:#82aaff;">0.1</span><span style="font-style:italic;color:#c792ea;">]
|
||||
</span><span style="color:#eeffff;"> </span><span style="color:#82aaff;">--v6address </span><span style="color:#89ddff;"><</span><span style="color:#82aaff;">ADDRESS</span><span style="color:#89ddff;">></span><span style="color:#82aaff;"> IPv6 address </span><span style="font-style:italic;color:#c792ea;">[</span><span style="color:#82aaff;">default: ::1</span><span style="font-style:italic;color:#c792ea;">]
|
||||
</span><span style="color:#eeffff;"> </span><span style="color:#82aaff;">-o,</span><span style="color:#89ddff;"> --</span><span style="color:#f78c6c;">output </span><span style="color:#89ddff;"><</span><span style="color:#82aaff;">OUTPUT</span><span style="color:#89ddff;">></span><span style="color:#82aaff;"> Output file
|
||||
</span><span style="color:#eeffff;"> </span><span style="color:#82aaff;">-s,</span><span style="color:#89ddff;"> --</span><span style="color:#f78c6c;">sources_file </span><span style="color:#89ddff;"><</span><span style="color:#82aaff;">STRING</span><span style="color:#89ddff;">></span><span style="color:#82aaff;"> File to read </span><span style="color:#89ddff;">"</span><span style="color:#c3e88d;">name|source url</span><span style="color:#89ddff;">"</span><span style="color:#82aaff;"> mappings from
|
||||
</span></pre>
|
||||
|
||||
<p>Sample sources file for use with adnix.</p>
|
||||
<pre style="background-color:#263238;"><span style="color:#eeffff;">Yoyo|http://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext
|
||||
</span><span style="color:#eeffff;">Malware Domain List|http://www.malwaredomainlist.com/hostslist/hosts.txt
|
||||
</span></pre>
|
||||
|
||||
|
||||
|
||||
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
|
||||
<a href="https://github.com/msfjarvis/adnix-rs"><div class="github-icon" aria-hidden="true"></div></a>
|
||||
|
||||
<span>
|
||||
adnix-rs, MIT/Apache-2.0
|
||||
</span>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script src="/adnix-rs/artifacts.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue