refactor(docs): automatically publish docs from CI
This commit is contained in:
parent
5c1066ece3
commit
1b6219151c
|
@ -0,0 +1,88 @@
|
|||
# Workflow to build your docs with oranda (and mdbook)
|
||||
# and deploy them to Github Pages
|
||||
name: Web
|
||||
|
||||
# We're going to push to the gh-pages branch, so we need that permission
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
# What situations do we want to build docs in?
|
||||
# All of these work independently and can be removed / commented out
|
||||
# if you don't want oranda/mdbook running in that situation
|
||||
on:
|
||||
# Check that a PR didn't break docs!
|
||||
#
|
||||
# Note that the "Deploy to Github Pages" step won't run in this mode,
|
||||
# so this won't have any side-effects. But it will tell you if a PR
|
||||
# completely broke oranda/mdbook. Sadly we don't provide previews (yet)!
|
||||
pull_request:
|
||||
|
||||
# Whenever something gets pushed to main, update the docs!
|
||||
# This is great for getting docs changes live without cutting a full release.
|
||||
#
|
||||
# Note that if you're using cargo-dist, this will "race" the Release workflow
|
||||
# that actually builds the Github Release that oranda tries to read (and
|
||||
# this will almost certainly complete first). As a result you will publish
|
||||
# docs for the latest commit but the oranda landing page won't know about
|
||||
# the latest release. The workflow_run trigger below will properly wait for
|
||||
# cargo-dist, and so this half-published state will only last for ~10 minutes.
|
||||
#
|
||||
# If you only want docs to update with releases, disable this, or change it to
|
||||
# a "release" branch. You can, of course, also manually trigger a workflow run
|
||||
# when you want the docs to update.
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
# Whenever a workflow called "Release" completes, update the docs!
|
||||
#
|
||||
# If you're using cargo-dist, this is recommended, as it will ensure that
|
||||
# oranda always sees the latest release right when it's available. Note
|
||||
# however that Github's UI is wonky when you use workflow_run, and won't
|
||||
# show this workflow as part of any commit. You have to go to the "actions"
|
||||
# tab for your repo to see this one running (the gh-pages deploy will also
|
||||
# only show up there).
|
||||
workflow_run:
|
||||
workflows: [ "Release" ]
|
||||
types:
|
||||
- completed
|
||||
|
||||
# Alright, let's do it!
|
||||
jobs:
|
||||
web:
|
||||
name: Build and deploy site and docs
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
# Setup
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: dtolnay/rust-toolchain@stable
|
||||
- uses: swatinem/rust-cache@v2
|
||||
|
||||
# If you use any mdbook plugins, here's the place to install them!
|
||||
|
||||
# Install and run oranda (and mdbook)
|
||||
# This will write all output to ./public/ (including copying mdbook's output to there)
|
||||
- name: Install and run oranda
|
||||
run: |
|
||||
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/axodotdev/oranda/releases/download/v0.5.0/oranda-installer.sh | sh
|
||||
oranda build
|
||||
|
||||
# Deploy to our gh-pages branch (creating it if it doesn't exist)
|
||||
# the "public" dir that oranda made above will become the root dir
|
||||
# of this branch.
|
||||
#
|
||||
# Note that once the gh-pages branch exists, you must
|
||||
# go into repo's settings > pages and set "deploy from branch: gh-pages"
|
||||
# the other defaults work fine.
|
||||
- name: Deploy to Github Pages
|
||||
uses: JamesIves/github-pages-deploy-action@v4.4.1
|
||||
# ONLY if we're on main (so no PRs or feature branches allowed!)
|
||||
if: ${{ github.ref == 'refs/heads/main' }}
|
||||
with:
|
||||
branch: gh-pages
|
||||
# Gotta tell the action where to find oranda's output
|
||||
folder: public
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
single-commit: true
|
|
@ -130,3 +130,6 @@ fabric.properties
|
|||
.idea/**/markdown-navigator/
|
||||
|
||||
# End of https://www.gitignore.io/api/clion
|
||||
|
||||
# Generated by `oranda generate ci`
|
||||
public/
|
||||
|
|
|
@ -30,7 +30,7 @@ OPTIONS:
|
|||
|
||||
Sample sources file for use with adnix.
|
||||
|
||||
```plaintext
|
||||
```
|
||||
Yoyo|http://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext
|
||||
Malware Domain List|http://www.malwaredomainlist.com/hostslist/hosts.txt
|
||||
```
|
||||
|
|
|
@ -1,193 +0,0 @@
|
|||
# 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.
|
||||
|
||||
# This is just a little script that can be downloaded from the internet to
|
||||
# install an app. It downloads the tarball from artifact_download_url,
|
||||
# and extracts it to ~/.cargo/bin/
|
||||
#
|
||||
# In the future this script will gain extra features, but for now it's
|
||||
# intentionally very simplistic to avoid shipping broken things.
|
||||
|
||||
param (
|
||||
[Parameter(HelpMessage = 'The name of the App')]
|
||||
[string]$app_name = 'adnix',
|
||||
[Parameter(HelpMessage = 'The version of the App')]
|
||||
[string]$app_version = '0.4.6',
|
||||
[Parameter(HelpMessage = 'The URL of the directory where artifacts can be fetched from')]
|
||||
[string]$artifact_download_url = 'https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.6'
|
||||
)
|
||||
|
||||
function Install-Binary($install_args) {
|
||||
$old_erroractionpreference = $ErrorActionPreference
|
||||
$ErrorActionPreference = 'stop'
|
||||
|
||||
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 "$artifact_download_url" $platforms
|
||||
# FIXME: add a flag that lets the user not do this step
|
||||
Invoke-Installer $fetched "$install_args"
|
||||
|
||||
$ErrorActionPreference = $old_erroractionpreference
|
||||
}
|
||||
|
||||
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) {
|
||||
# FIXME: make this something we lookup based on the current machine
|
||||
$arch = Get-TargetTriple
|
||||
|
||||
if (-not $platforms.ContainsKey($arch)) {
|
||||
# X64 is well-supported, including in emulation on ARM64
|
||||
Write-Verbose "$arch is not availablem 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"
|
||||
"Downloading $app_name $app_version $arch" | Out-Host
|
||||
" from $url" | Out-Host
|
||||
" to $dir_path" | Out-Host
|
||||
$wc = New-Object Net.Webclient
|
||||
$wc.downloadFile($url, $dir_path)
|
||||
|
||||
"Unpacking to $tmp" | Out-Host
|
||||
|
||||
# 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) {
|
||||
" Unpacked $bin_name" | Out-Host
|
||||
$bin_paths += "$tmp\$bin_name"
|
||||
}
|
||||
return $bin_paths
|
||||
}
|
||||
|
||||
function Invoke-Installer($bin_paths) {
|
||||
# FIXME: respect $CARGO_HOME if set
|
||||
# FIXME: add a flag that lets the user pick this dir
|
||||
# FIXME: try to detect other "nice" dirs on the user's PATH?
|
||||
# FIXME: detect if the selected install dir exists or is on PATH?
|
||||
$dest_dir = New-Item -Force -ItemType Directory -Path (Join-Path $HOME ".cargo\bin")
|
||||
|
||||
"Installing to $dest_dir" | Out-Host
|
||||
# Just copy the binaries from the temp location to the install dir
|
||||
foreach ($bin_path in $bin_paths) {
|
||||
Copy-Item "$bin_path" -Destination "$dest_dir"
|
||||
Remove-Item "$bin_path" -Recurse -Force
|
||||
}
|
||||
|
||||
"Everything's installed!" | Out-Host
|
||||
}
|
||||
|
||||
function Initialize-Environment() {
|
||||
If (($PSVersionTable.PSVersion.Major) -lt 5) {
|
||||
Write-Error "PowerShell 5 or later is required to install $app_name."
|
||||
Write-Error "Upgrade PowerShell: https://docs.microsoft.com/en-us/powershell/scripting/setup/installing-windows-powershell"
|
||||
break
|
||||
}
|
||||
|
||||
# show notification to change execution policy:
|
||||
$allowedExecutionPolicy = @('Unrestricted', 'RemoteSigned', 'ByPass')
|
||||
If ((Get-ExecutionPolicy).ToString() -notin $allowedExecutionPolicy) {
|
||||
Write-Error "PowerShell requires an execution policy in [$($allowedExecutionPolicy -join ", ")] to run $app_name."
|
||||
Write-Error "For example, to set the execution policy to 'RemoteSigned' please run :"
|
||||
Write-Error "'Set-ExecutionPolicy RemoteSigned -scope CurrentUser'"
|
||||
break
|
||||
}
|
||||
|
||||
# GitHub requires TLS 1.2
|
||||
If ([System.Enum]::GetNames([System.Net.SecurityProtocolType]) -notcontains 'Tls12') {
|
||||
Write-Error "Installing $app_name requires at least .NET Framework 4.5"
|
||||
Write-Error "Please download and install it first:"
|
||||
Write-Error "https://www.microsoft.com/net/download"
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
Install-Binary "$Args"
|
|
@ -1,280 +0,0 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# 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.
|
||||
|
||||
# This is just a little script that can be downloaded from the internet to
|
||||
# install $APP_NAME. It downloads the tarball from ARTIFACT_DOWNLOAD_URL,
|
||||
# and extracts it to ~/.cargo/bin/
|
||||
#
|
||||
# In the future this script will gain extra features, but for now it's
|
||||
# intentionally very simplistic to avoid shipping broken things.
|
||||
|
||||
set -u
|
||||
|
||||
# FIXME: patch in the repo's URL for suggesting filling an issue
|
||||
# REPO="{{REPO_URL}}"
|
||||
APP_NAME="adnix"
|
||||
APP_VERSION="0.4.6"
|
||||
ARTIFACT_DOWNLOAD_URL="https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.6"
|
||||
|
||||
download_binary_and_run_installer() {
|
||||
downloader --check
|
||||
need_cmd mktemp
|
||||
need_cmd chmod
|
||||
need_cmd mkdir
|
||||
need_cmd rm
|
||||
need_cmd rmdir
|
||||
need_cmd tar
|
||||
need_cmd which
|
||||
need_cmd dirname
|
||||
need_cmd awk
|
||||
need_cmd cut
|
||||
|
||||
|
||||
get_architecture || return 1
|
||||
local _arch="$RETVAL"
|
||||
assert_nz "$_arch" "arch"
|
||||
|
||||
local _bins=""
|
||||
local _zip_ext=""
|
||||
local _artifact_name=""
|
||||
|
||||
# This """lookup table""" is generated by cargo-dist
|
||||
# and populates the above locals with the right values
|
||||
case "$_arch" in
|
||||
"aarch64-apple-darwin")
|
||||
_artifact_name="adnix-aarch64-apple-darwin.tar.xz"
|
||||
_zip_ext=".tar.xz"
|
||||
_bins="adnix"
|
||||
;;
|
||||
"x86_64-apple-darwin")
|
||||
_artifact_name="adnix-x86_64-apple-darwin.tar.xz"
|
||||
_zip_ext=".tar.xz"
|
||||
_bins="adnix"
|
||||
;;
|
||||
"x86_64-unknown-linux-gnu")
|
||||
_artifact_name="adnix-x86_64-unknown-linux-gnu.tar.xz"
|
||||
_zip_ext=".tar.xz"
|
||||
_bins="adnix"
|
||||
;;
|
||||
*)
|
||||
err "there isn't a package for $_arch"
|
||||
;;
|
||||
esac
|
||||
|
||||
# download the zip
|
||||
local _url="$ARTIFACT_DOWNLOAD_URL/$_artifact_name"
|
||||
local _dir="$(mktemp -d 2>/dev/null || ensure mktemp -d -t $APP_NAME)"
|
||||
local _file="$_dir/input$_zip_ext"
|
||||
|
||||
say "downloading $APP_NAME $APP_VERSION ${_arch}" 1>&2
|
||||
say " from $_url" 1>&2
|
||||
say " to $_file" 1>&2
|
||||
|
||||
ensure mkdir -p "$_dir"
|
||||
downloader "$_url" "$_file"
|
||||
if [ $? != 0 ]; 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!"
|
||||
# say "$REPO/issues/new/choose"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# unpack the archive
|
||||
say "unpacking to $_dir" 1>&2
|
||||
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
|
||||
|
||||
for _bin_name in $_bins; do
|
||||
say " unpacked $_bin_name"
|
||||
done
|
||||
|
||||
install "$_dir" "$_bins" "$@"
|
||||
local _retval=$?
|
||||
|
||||
ignore rm -rf "$_dir"
|
||||
|
||||
return "$_retval"
|
||||
}
|
||||
|
||||
install() {
|
||||
# FIXME: prefer $CARGO_HOME over $HOME/.cargo/ if available
|
||||
# FIXME: let the user choose the dir to install to
|
||||
local _install_dir="$HOME/.cargo/bin/"
|
||||
say "installing to $_install_dir"
|
||||
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"
|
||||
cp "$_bin" "$_install_dir"
|
||||
# unzip seems to need this chmod
|
||||
chmod +x "$_install_dir/$_bin_name"
|
||||
done
|
||||
|
||||
say "everything's installed!"
|
||||
}
|
||||
|
||||
get_architecture() {
|
||||
local _ostype="$(uname -s)"
|
||||
local _cputype="$(uname -m)"
|
||||
|
||||
if [ "$_ostype" = Darwin -a "$_cputype" = i386 ]; then
|
||||
# Darwin `uname -s` lies
|
||||
if sysctl hw.optional.x86_64 | grep -q ': 1'; then
|
||||
local _cputype=x86_64
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$_ostype" = Darwin -a "$_cputype" = arm64 ]; then
|
||||
# Darwin `uname -s` doesn't seem to lie on Big Sur
|
||||
# but the cputype we want is called aarch64, not arm64 (they are equivalent)
|
||||
local _cputype=aarch64
|
||||
fi
|
||||
|
||||
case "$_ostype" in
|
||||
Linux)
|
||||
if has_required_glibc; then
|
||||
local _ostype=unknown-linux-gnu
|
||||
else
|
||||
local _ostype=unknown-linux-musl
|
||||
say "Downloading musl binary."
|
||||
fi
|
||||
;;
|
||||
|
||||
Darwin)
|
||||
local _ostype=apple-darwin
|
||||
;;
|
||||
|
||||
MINGW* | MSYS* | CYGWIN*)
|
||||
local _ostype=pc-windows-msvc
|
||||
;;
|
||||
|
||||
*)
|
||||
err "no precompiled binaries available for OS: $_ostype"
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$_cputype" in
|
||||
# these are the only two acceptable values for cputype
|
||||
x86_64 | aarch64 )
|
||||
;;
|
||||
*)
|
||||
err "no precompiled binaries available for CPU architecture: $_cputype"
|
||||
|
||||
esac
|
||||
|
||||
local _arch="$_cputype-$_ostype"
|
||||
|
||||
RETVAL="$_arch"
|
||||
}
|
||||
|
||||
say() {
|
||||
local green=`tput setaf 2 2>/dev/null || echo ''`
|
||||
local reset=`tput sgr0 2>/dev/null || echo ''`
|
||||
echo "$1"
|
||||
}
|
||||
|
||||
err() {
|
||||
local red=`tput setaf 1 2>/dev/null || echo ''`
|
||||
local reset=`tput sgr0 2>/dev/null || echo ''`
|
||||
say "${red}ERROR${reset}: $1" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
has_required_glibc() {
|
||||
local _ldd_version="$(ldd --version 2>&1 | head -n1)"
|
||||
# glibc version string is inconsistent across distributions
|
||||
# instead check if the string does not contain musl (case insensitive)
|
||||
if echo "${_ldd_version}" | grep -iv musl >/dev/null; then
|
||||
local _glibc_version=$(echo "${_ldd_version}" | awk 'NR==1 { print $NF }')
|
||||
local _glibc_major_version=$(echo "${_glibc_version}" | cut -d. -f1)
|
||||
local _glibc_min_version=$(echo "${_glibc_version}" | cut -d. -f2)
|
||||
local _min_major_version=2
|
||||
local _min_minor_version=17
|
||||
if [ "${_glibc_major_version}" -gt "${_min_major_version}" ] \
|
||||
|| { [ "${_glibc_major_version}" -eq "${_min_major_version}" ] \
|
||||
&& [ "${_glibc_min_version}" -ge "${_min_minor_version}" ]; }; then
|
||||
return 0
|
||||
else
|
||||
say "This operating system needs glibc >= ${_min_major_version}.${_min_minor_version}, but only has ${_libc_version} installed."
|
||||
fi
|
||||
else
|
||||
say "This operating system does not support dynamic linking to glibc."
|
||||
fi
|
||||
|
||||
return 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 $?
|
||||
}
|
||||
|
||||
need_ok() {
|
||||
if [ $? != 0 ]; then err "$1"; fi
|
||||
}
|
||||
|
||||
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() {
|
||||
"$@"
|
||||
need_ok "command failed: $*"
|
||||
}
|
||||
|
||||
# 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
|
|
@ -1,245 +0,0 @@
|
|||
/* 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");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
|
@ -1,212 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" id="oranda" class="dark">
|
||||
<head>
|
||||
<title>adnix</title>
|
||||
|
||||
<meta property="og:url" content="https://github.com/msfjarvis/adnix-rs" />
|
||||
|
||||
|
||||
<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" />
|
||||
|
||||
|
||||
|
||||
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
|
||||
<link rel="stylesheet" href="/adnix-rs/oranda-v0.2.0.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</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>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.6/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.6/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.6/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.6/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>
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
<td><a href="https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.6/adnix-aarch64-apple-darwin.tar.xz">adnix-aarch64-apple-darwin.tar.xz</a></td>
|
||||
<td>
|
||||
|
||||
|
||||
macOS Apple Silicon
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
<td><a href="https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.6/adnix-x86_64-apple-darwin.tar.xz">adnix-x86_64-apple-darwin.tar.xz</a></td>
|
||||
<td>
|
||||
|
||||
|
||||
macOS Intel
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
<td><a href="https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.6/adnix-x86_64-pc-windows-msvc.zip">adnix-x86_64-pc-windows-msvc.zip</a></td>
|
||||
<td>
|
||||
|
||||
|
||||
Windows x64
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
<td><a href="https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.6/adnix-x86_64-unknown-linux-gnu.tar.xz">adnix-x86_64-unknown-linux-gnu.tar.xz</a></td>
|
||||
<td>
|
||||
|
||||
|
||||
Linux x64
|
||||
|
||||
|
||||
</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, MIT
|
||||
</span>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script src="/adnix-rs/artifacts.js"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
431
docs/index.html
431
docs/index.html
|
@ -1,431 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" id="oranda" class="dark">
|
||||
<head>
|
||||
<title>adnix</title>
|
||||
|
||||
<meta property="og:url" content="https://github.com/msfjarvis/adnix-rs" />
|
||||
|
||||
|
||||
<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" />
|
||||
|
||||
|
||||
|
||||
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
|
||||
<link rel="stylesheet" href="/adnix-rs/oranda-v0.2.0.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</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.6">
|
||||
<div class="artifact-header target">
|
||||
<h4>Install v0.4.6</h4>
|
||||
|
||||
<div><small class="published-date">Published on Jul 24 2023 at 09:01 UTC</small></div>
|
||||
|
||||
|
||||
<ul class="arches">
|
||||
|
||||
<li class="arch hidden" data-arch="aarch64-apple-darwin">
|
||||
|
||||
<ul class="tabs">
|
||||
|
||||
|
||||
|
||||
<li class="install-tab" data-id="0" data-triple="aarch64-apple-darwin">
|
||||
shell
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="install-tab" data-id="2" data-triple="aarch64-apple-darwin">
|
||||
tarball
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<ul class="contents">
|
||||
|
||||
|
||||
<li data-id="0" 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.6/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.6/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="2" 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.6/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="0" data-triple="x86_64-apple-darwin">
|
||||
shell
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="install-tab" data-id="3" data-triple="x86_64-apple-darwin">
|
||||
tarball
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<ul class="contents">
|
||||
|
||||
|
||||
<li data-id="0" 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.6/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.6/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="3" 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.6/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="1" data-triple="x86_64-pc-windows-msvc">
|
||||
powershell
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="install-tab" data-id="4" data-triple="x86_64-pc-windows-msvc">
|
||||
zip
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<ul class="contents">
|
||||
|
||||
|
||||
<li data-id="1" 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.6/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.6/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="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.6/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="0" data-triple="x86_64-unknown-linux-gnu">
|
||||
shell
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="install-tab" data-id="5" data-triple="x86_64-unknown-linux-gnu">
|
||||
tarball
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<ul class="contents">
|
||||
|
||||
|
||||
<li data-id="0" 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.6/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.6/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="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.6/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>
|
||||
|
||||
</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="aarch64-apple-darwin">macOS Apple Silicon</option>
|
||||
|
||||
<option value="x86_64-apple-darwin">macOS Intel</option>
|
||||
|
||||
<option value="x86_64-pc-windows-msvc">Windows x64</option>
|
||||
|
||||
<option value="x86_64-unknown-linux-gnu">Linux 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/static/v1?label=Built%20with&message=Garnix&color=blue&style=flat&logo=nixos&link=https://garnix.io&labelColor=111212" 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, MIT
|
||||
</span>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script src="/adnix-rs/artifacts.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
File diff suppressed because one or more lines are too long
14
oranda.json
14
oranda.json
|
@ -1,13 +1,19 @@
|
|||
{
|
||||
"build": {
|
||||
"path_prefix": "adnix-rs",
|
||||
"dist_dir": "./docs"
|
||||
"path_prefix": "adnix-rs"
|
||||
},
|
||||
"components": {
|
||||
"changelog": false,
|
||||
"artifacts": {
|
||||
"cargo_dist": true,
|
||||
"auto": true,
|
||||
"package_managers": {
|
||||
"nix flakes": "nix profile install github:msfjarvis/adnix"
|
||||
"preferred": {
|
||||
"nix flake": "nix profile install github:msfjarvis/adnix-rs",
|
||||
"cargo": "cargo install adnix --locked --profile=dist"
|
||||
},
|
||||
"additional": {
|
||||
"binstall": "cargo binstall adnix"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue