mirror of
https://github.com/DeBrosOfficial/network.git
synced 2025-12-12 22:38: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"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"strconv"
|
||||
"strings"
|
||||
@ -436,10 +437,43 @@ func installAnon() {
|
||||
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
|
||||
// Pipe "yes" repeatedly to automatically accept terms prompt
|
||||
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))
|
||||
cmd.Stdin = os.Stdin // Allow interactive prompts if needed
|
||||
// Use yes command to pipe multiple "yes" responses 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.Stderr = os.Stderr
|
||||
|
||||
|
||||
@ -225,12 +225,46 @@ install_anon() {
|
||||
|
||||
# Preseed terms acceptance to avoid interactive prompt
|
||||
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 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..."
|
||||
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"
|
||||
return 1
|
||||
fi
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user