mirror of
https://github.com/DeBrosOfficial/network.git
synced 2025-12-15 01:28:50 +00:00
feat: streamline Anon installation with automated terms acceptance
- Implemented pre-acceptance of Anon terms in both the setup and installation scripts to eliminate interactive prompts. - Enhanced the installation process by creating necessary directories and files to ensure terms are accepted before installation. - Updated the installation command to use a non-interactive frontend, improving reliability during package installation.
This commit is contained in:
parent
472b7c10bb
commit
8538e2eb3f
@ -5,6 +5,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
@ -436,10 +437,43 @@ func installAnon() {
|
|||||||
os.Remove(repoPath)
|
os.Remove(repoPath)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Preseed debconf before installation
|
||||||
|
fmt.Printf(" Pre-accepting Anon terms and conditions...\n")
|
||||||
|
preseedCmd := exec.Command("sh", "-c", `echo "anon anon/terms boolean true" | debconf-set-selections`)
|
||||||
|
preseedCmd.Run() // Ignore errors, preseed might not be critical
|
||||||
|
|
||||||
|
// Create anonrc directory and file with AgreeToTerms before installation
|
||||||
|
// This ensures terms are accepted even if the post-install script checks the file
|
||||||
|
anonrcDir := "/etc/anon"
|
||||||
|
anonrcPath := "/etc/anon/anonrc"
|
||||||
|
if err := os.MkdirAll(anonrcDir, 0755); err == nil {
|
||||||
|
if _, err := os.Stat(anonrcPath); os.IsNotExist(err) {
|
||||||
|
// Create file with AgreeToTerms already set
|
||||||
|
os.WriteFile(anonrcPath, []byte("AgreeToTerms 1\n"), 0644)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create terms-agreement files in multiple possible locations
|
||||||
|
// Anon might check for these files to verify terms acceptance
|
||||||
|
termsLocations := []string{
|
||||||
|
"/var/lib/anon/terms-agreement",
|
||||||
|
"/usr/share/anon/terms-agreement",
|
||||||
|
"/usr/share/keyrings/anon/terms-agreement",
|
||||||
|
"/usr/share/keyrings/anyone-terms-agreed",
|
||||||
|
}
|
||||||
|
for _, loc := range termsLocations {
|
||||||
|
dir := filepath.Dir(loc)
|
||||||
|
if err := os.MkdirAll(dir, 0755); err == nil {
|
||||||
|
os.WriteFile(loc, []byte("agreed\n"), 0644)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Use the official installation script from GitHub
|
// Use the official installation script from GitHub
|
||||||
|
// Pipe "yes" repeatedly to automatically accept terms prompt
|
||||||
installScriptURL := "https://raw.githubusercontent.com/anyone-protocol/anon-install/refs/heads/main/install.sh"
|
installScriptURL := "https://raw.githubusercontent.com/anyone-protocol/anon-install/refs/heads/main/install.sh"
|
||||||
cmd := exec.Command("sh", "-c", fmt.Sprintf("curl -fsSL %s | bash", installScriptURL))
|
// Use yes command to pipe multiple "yes" responses if needed
|
||||||
cmd.Stdin = os.Stdin // Allow interactive prompts if needed
|
cmd := exec.Command("sh", "-c", fmt.Sprintf("curl -fsSL %s | (yes yes | bash)", installScriptURL))
|
||||||
|
cmd.Env = append(os.Environ(), "DEBIAN_FRONTEND=noninteractive")
|
||||||
cmd.Stdout = os.Stdout
|
cmd.Stdout = os.Stdout
|
||||||
cmd.Stderr = os.Stderr
|
cmd.Stderr = os.Stderr
|
||||||
|
|
||||||
|
|||||||
@ -225,12 +225,46 @@ install_anon() {
|
|||||||
|
|
||||||
# Preseed terms acceptance to avoid interactive prompt
|
# Preseed terms acceptance to avoid interactive prompt
|
||||||
log "Pre-accepting Anon terms and conditions..."
|
log "Pre-accepting Anon terms and conditions..."
|
||||||
|
# Try multiple debconf question formats
|
||||||
echo "anon anon/terms boolean true" | sudo debconf-set-selections
|
echo "anon anon/terms boolean true" | sudo debconf-set-selections
|
||||||
|
echo "anon anon/terms seen true" | sudo debconf-set-selections
|
||||||
|
# Also try with select/string format
|
||||||
|
echo "anon anon/terms select true" | sudo debconf-set-selections || true
|
||||||
|
|
||||||
# Update and install
|
# Query debconf to verify the question exists and set it properly
|
||||||
|
# Some packages use different question formats
|
||||||
|
sudo debconf-get-selections | grep -i anon || true
|
||||||
|
|
||||||
|
# Create anonrc directory and file with AgreeToTerms before installation
|
||||||
|
# This ensures terms are accepted even if the post-install script checks the file
|
||||||
|
sudo mkdir -p /etc/anon
|
||||||
|
if [ ! -f /etc/anon/anonrc ]; then
|
||||||
|
echo "AgreeToTerms 1" | sudo tee /etc/anon/anonrc >/dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Also create a terms-agreement file if Anon checks for it
|
||||||
|
# Check multiple possible locations where Anon might look for terms acceptance
|
||||||
|
sudo mkdir -p /var/lib/anon
|
||||||
|
echo "agreed" | sudo tee /var/lib/anon/terms-agreement >/dev/null 2>&1 || true
|
||||||
|
sudo mkdir -p /usr/share/anon
|
||||||
|
echo "agreed" | sudo tee /usr/share/anon/terms-agreement >/dev/null 2>&1 || true
|
||||||
|
# Also create near the GPG keyring directory (as the user suggested)
|
||||||
|
sudo mkdir -p /usr/share/keyrings/anon
|
||||||
|
echo "agreed" | sudo tee /usr/share/keyrings/anon/terms-agreement >/dev/null 2>&1 || true
|
||||||
|
# Create in the keyring directory itself as a marker file
|
||||||
|
echo "agreed" | sudo tee /usr/share/keyrings/anyone-terms-agreed >/dev/null 2>&1 || true
|
||||||
|
|
||||||
|
# Update and install with non-interactive frontend
|
||||||
log "Installing Anon package..."
|
log "Installing Anon package..."
|
||||||
sudo apt update -qq
|
sudo apt update -qq
|
||||||
if ! sudo apt install -y anon; then
|
|
||||||
|
# Use DEBIAN_FRONTEND=noninteractive and set debconf values directly via apt-get options
|
||||||
|
# This is more reliable than just debconf-set-selections
|
||||||
|
if ! sudo DEBIAN_FRONTEND=noninteractive \
|
||||||
|
apt-get install -y \
|
||||||
|
-o Dpkg::Options::="--force-confdef" \
|
||||||
|
-o Dpkg::Options::="--force-confold" \
|
||||||
|
anon; then
|
||||||
warning "Anon installation failed"
|
warning "Anon installation failed"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user