https-dns-client

Postate qui se avete consigli per migliorare i pacchetti disponibili in questo sito o se avete problemi con installazione, funzionamento o altro.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il nome del pacchetto.
2) Specificare se discussione/suggerimento o richiesta d'aiuto.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3788
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

https-dns-client

Messaggio da joe »

Sto cercando di paccettizzarmi "alla buona" questo programma:
https://www.awxcnx.de/download/https-dns-client.tar.gz

Vi metto anche il sito da cui l'ho pescato, è in tedesco ma pazienza:
https://www.privacyfoundation.de/wiki/HTTPS-DNS

In pratica è un client per ottenere la risoluzione dei nomi in modo alternativo via protocollo sicuro.
Funziona praticamente così:
viene messo in locale un demone in ascolto sulla porta 1053, poi viene impostato bind con l'opzione forwarders che punta al "localhost:1053".
Questo demone "httpsdns-daemon" altro non fa prendere le richieste di bind convertirle in https e girarle ad un server remoto su cui gira https-dns-server che prende la richiesta la converte in udp penso e la gira ad un normale server dns.
Sulla parte server non sono sicurissimo che funzioni così, ad ogni modo non ci interessa molto, ed in ongi caso per chi mastica il tedesco probabilmente è spiegato nella pagina soprariportata.

Fortunatamente il README presente nel pacchetto è abbastanza chiaro e in inglese.
L'installazione dovrebbe avvenire con uno script bash, install.sh che va semplicemente a copiare tutta la roba nelle varie dir /usr/local/...
Io preferisco farmi un pacchetto per slackware, pertanto ho messo mano alla creazione di uno slackbuild.... francamente senza stare aderente alle convenzioni di forma descritte nelle linee guida di slacky... diciamo che sarebbe ad uso personale.
Il probelma è che ho un dubbio.

Lo script install.sh vorrebbe creare un utente apposta per far girare il demone. E va bene, vediamo l'ultimo pezzo dello script:

Codice: Seleziona tutto

# Create the daemon user
uid=`getent passwd httpsdns-daemon | cut -d ":" -f 3`

# if there is the uid the account is there and we can do
# the sanit(ar)y checks otherwise we can safely create it.

if [ "$uid" ]; then

    if [ $uid -ge 100 ] && [ $uid -le 999 ]; then
        echo "httpsdns-daemon uid check: ok"
    else
        echo "ERROR: httpsdns-daemon account has a non-system uid!"
        echo "correct this problem"
        exit 1
    fi

else
        echo "Create a system UID httpsdns-daemon."
    adduser --quiet --system --disabled-password --home /var/lib/jondo --no-create-home --shell /bin/bash --group httpsdns-daemon
fi

# Create the log directory
if [ -d /var/log/httpsdns ] ; then
        echo "Log dir found."
        chown -R httpsdns-daemon:adm /var/log/httpsdns
        chmod -R 0750 /var/log/httpsdns
else
        echo "Create a log dir /var/log/httpsdns"
        mkdir -m 0750 /var/log/httpsdns
        chown -R httpsdns-daemon:adm /var/log/httpsdns
fi
Ho provato anche a far girare lo script, Il problema è che fallisce all'atto della creazione dell'utente.
A parte questo vorrei chiedere anche dove sarebbe meglio mettere questo pezzo, non sono pratico di doinstall,ma forse va messo lì.
Altra cosa a questo programma sembra mancare una "VERSION", e mi ha un po' messo in crisi con la dicitura convenzionale dei pacchetti slackware....

Vi sarei grato se poteste darmi una mano.
A me interessava capire più che altro, visto che non ci dovrebbe essere niente di difficile, ovvero non c'è da compilare nulla di che. Ciò nonn toglie che se voi aveste voglia di paccettizzarlo o anche solo postare uno slackbuild completo, è benvenuto.
Anche perchè il progetto in se mi sembra interessante... non sarebbe male avere i pacchetti del client e del server sul repo di slacky.

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: https-dns-client

Messaggio da ZeroUno »

francamente senza stare aderente alle convenzioni di forma descritte nelle linee guida di slacky
Le linee guida non sono per fare un pacchetto slacky-compliant, ma per prendere qualche spunto.


Dalle linee guida:
http://www.slacky.eu/wikislack/index.ph ... ori#utenti
utenti
Se abbiamo qualche pacchetto che richiede di essere avviato come altro utente (p.e. squid) dovremo provvedere a creare l'utente e, se serve, anche il gruppo. Prima dovremo controllare però che già non esista. Ovviamente dovremo utilizzare useradd e groupadd che vanno a modificare l'/etc/passwd e l'/etc/group; si rende quindi necessario il lancio in chroot per evitare che si creino le utenze sul sistema sbagliato

Codice: Seleziona tutto

if ! grep -q "^nomegruppo:" etc/group; then
  chroot . groupadd mygroup &>/dev/null
fi
if ! grep -q "^nomeutente:" etc/passwd; then
  chroot . useradd -d /var/lib/nomeprogramma -s /bin/false -c "Utente programma" -g nomegruppo nomeutente &>/dev/null
fi
e poi settare i permessi adeguati, permessi che abbiamo tolto dallo slackbuild con chown root.root
chown -R nomeutente.nomegruppo var/lib/nomeprogramma

utenti e id
Talvolta si potrebbe volere un determinato uid e gid per utenti e gruppi; uno useradd secco genera un id solitamente alto, che potrebbe confondersi con le utenze classiche mentre i servizi hanno spesso e volentieri id bassi. Vedi il corrente /etc/passwd. Nel modo seguente è possibile 'tentare' di scegliere un determinato id e, se fallisce, allora ripiegare su un id normale.

Codice: Seleziona tutto

if ! grep -q "^apache:" etc/group; then
  if ! grep -q ":80:" etc/group; then
    chroot . groupadd -g 80 apache &>/dev/null
  else
    chroot . groupadd apache &>/dev/null
  fi
fi

if ! grep -q "^apache:" etc/passwd; then
  if ! grep -q ":80:" etc/passwd; then
    chroot . useradd -u 80 -d /var/www -s /bin/false -c "Apache User" -g apache apache &>/dev/null
  else
    chroot . useradd -d /var/www -s /bin/false -c "Apache User" -g apache apache &>/dev/null
  fi
fi
chown apache.apache var/www/htdocs
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3788
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: https-dns-client

Messaggio da joe »

ciao e grazie per aver riportato parte del wiki, a quanto pare non avevo bene letto/capito tutto.
A parte qualche problema di comprensione circa il chroot, che comunque per ora prendo per buono, volevo chiedere una precisazione su questo ultimo punto ovvero l'uid da scegliere.
Come si vede dal pezzo di script install.sh che ho postato, lì si usa adduser (perl script) anzichè useradd. Con quel tool mettendo l'opzione "--system" dovrebbe creare un utente "di sistema" ovvero un utente particolare associato per esempio ad un demone come nel caso di httpsdns-daemon.

Ok, nel caso della descrizione del doinst.sh del wiki, vedo che invece si fa un tentativo con un numero secco e se fallisce si da un valore classico.
Probabilmente questo è dovuto al fatto che il fatto della scelta del numero basso è più una convenzione che non una necessità stringente.
Tuttavia non sarebbe più efficente e razionale scegliere un range di valori bassi, tipo come nell'install.sh dove si verificano i valori compresi tra [ $uid -ge 100 ] && [ $uid -le 999 ] e nel caso che non esista grupp e utent eche si vuole creare, andare a prendere il numero libero più basso?
Spero d'essemi spiegato. Se non fosse così dite che ripeto.

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: https-dns-client

Messaggio da ZeroUno »

diciamo che in linea di massima l'install.sh è un uno scriptino che deve fare due cosette, non un programma.
Già è tanto metterci la scelta di un id.

Considera che quando io mi vado a compilare un programma che richiede la creazione di un utente, mi vedo il passwd per trovare un id basso libero.
Considerando che il passwd di base è identico per tutti gli utenti slackware, la probabilità che quell'id scelto sia già occupato è molto bassa, quindi dovresti trovarlo libero. Sarà occupato solo se hai installato altri programmi che richiedevano proprio un id con quell'utente. In questo raro caso amen, mi accontento di un id alto.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3788
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: https-dns-client

Messaggio da joe »

Ok, altro dubbio da 4 soldi. Il software in questione non sembra etichettato con alcun numero di versione, il chè mi manda un po' in crisi con lo slackbuild... Come ci si regola di norma in questi casi?

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: https-dns-client

Messaggio da ZeroUno »

Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3788
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: https-dns-client

Messaggio da joe »

Mi rifaccio vivo dopo un po'... ovviamente con un'altra "domandona" ;)
Il pacchetto dei sorgenti contiene uno script di init compatibile con debian/*buntu.
or Debian/Ubuntu, the subdir init.d contains a sample rc-init-script.
You may copy it to /etc/init.d/httpsdnsd and run update-rc.d, to
start the httpsdnsd at boot time.
Andando a vedere (è un po' lungo ma penso che il tag "code" faccia il suo dovere:

Codice: Seleziona tutto

!/bin/sh
#
# Start/Stop the httpsdns daemon

### BEGIN INIT INFO
# Provides: httpsdns
# Required-Start: $network
# Required-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Small DNS proxy, that tunnel DNS queries through HTTPS
### END INIT INFO


set -e

PATH=/sbin:/bin:/usr/sbin:/usr/bin

if [ -e /lib/lsb/init-functions ] ; then
  . /lib/lsb/init-functions
fi

DESC="HTTPS-DNS Daemon"
NAME="httpsdnsd"
DAEMON="/usr/sbin/httpsdnsd"
DAEMONINTERPRETER="/usr/bin/perl"
PIDFILE=/var/run/httpsdnsd.pid

case $1 in
  start)
        log_daemon_messaggio "Starting $DESC: $NAME..."
        if start-stop-daemon --start --oknodo --quiet --exec $DAEMON -- --runasdaemon  --daemon-pid-file=$PIDFILE ; then
          log_end_messaggio 0
        else
          log_end_messaggio 1
        fi
        ;;

  stop)
        log_daemon_messaggio "Stopping $DESC: $NAME..."
        start-stop-daemon --stop --oknodo --pidfile $PIDFILE --exec $DAEMONINTERPRETER ;
        log_end_messaggio 0
        if [ -e $PIDFILE ] ; then
                rm $PIDFILE
        fi
        ;;

  reload|force-reload|restart)
        $0 stop
        sleep 2
        $0 start
        ;;

  *)
        echo "Usage: $0 (start|stop|reload|force-reload|restart)" >&2
        exit 1
        ;;
esac
Poniamo il caso (sinceramente non sò se questo lo sia) in cui a me pacchettizztore sembri opportuno modificare lo script sopra adattandolo ai canoni slackware e dotare il pacchetto di uno script in più che si occupi appunto dell'init a la slackware way.
Quali sono i passi da compiere?
Intendo, si fa una patch a quel file oppure se ne include uno ex novo semplicemente prendendo spunto? e come lo si include eventualmente nello slackbuild/doinst?
Cioè, immagino che come sul repo avremo una ipotetica dir "src" (nel mio caso uso ~/build/src/$NAME-$VERSION) che conterrà:
1- Slackbuild
2- slack-desc
3- doinst.sh

Ora, per la slackware uno script di init non è compreso nei "sorgenti" del software https-dns.
Volendolo creare in qualche modo, come fare (patch di quello incluso o exnovo)?
Ed eventaulmente dove/come includere il tutto, si mette nell dir src la patch/initscriptexnovo?
oppure ci sono altre strade preferibili?
Spero la domanda sia sensata... grazie in anticipo

Rispondi