Repository 32bit  Forum
Repository 64bit  Wiki

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.

https-dns-client

Messaggioda joe » gio set 23, 2010 9:27

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
joe
Master
Master
 
Messaggi: 1949
Iscritto il: ven apr 27, 2007 10:21
Slackware: 14.0
Kernel: 3.2.29-smp
Desktop: KDE-4.8.5

Re: https-dns-client

Messaggioda ZeroUno » gio set 23, 2010 9:50

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
ZeroUno
Staff
Staff
 
Messaggi: 4298
Iscritto il: ven giu 02, 2006 13:52
Località: Roma / Castelli
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current

Re: https-dns-client

Messaggioda joe » ven set 24, 2010 15:58

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
joe
Master
Master
 
Messaggi: 1949
Iscritto il: ven apr 27, 2007 10:21
Slackware: 14.0
Kernel: 3.2.29-smp
Desktop: KDE-4.8.5

Re: https-dns-client

Messaggioda ZeroUno » sab set 25, 2010 16:52

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
ZeroUno
Staff
Staff
 
Messaggi: 4298
Iscritto il: ven giu 02, 2006 13:52
Località: Roma / Castelli
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current

Re: https-dns-client

Messaggioda joe » sab set 25, 2010 17:11

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
joe
Master
Master
 
Messaggi: 1949
Iscritto il: ven apr 27, 2007 10:21
Slackware: 14.0
Kernel: 3.2.29-smp
Desktop: KDE-4.8.5

Re: https-dns-client

Messaggioda ZeroUno » sab set 25, 2010 18:38

Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg
Codice: Seleziona tutto
1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111
Avatar utente
ZeroUno
Staff
Staff
 
Messaggi: 4298
Iscritto il: ven giu 02, 2006 13:52
Località: Roma / Castelli
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current

Re: https-dns-client

Messaggioda joe » mer ott 06, 2010 16:28

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_msg "Starting $DESC: $NAME..."
        if start-stop-daemon --start --oknodo --quiet --exec $DAEMON -- --runasdaemon  --daemon-pid-file=$PIDFILE ; then
          log_end_msg 0
        else
          log_end_msg 1
        fi
        ;;

  stop)
        log_daemon_msg "Stopping $DESC: $NAME..."
        start-stop-daemon --stop --oknodo --pidfile $PIDFILE --exec $DAEMONINTERPRETER ;
        log_end_msg 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
Avatar utente
joe
Master
Master
 
Messaggi: 1949
Iscritto il: ven apr 27, 2007 10:21
Slackware: 14.0
Kernel: 3.2.29-smp
Desktop: KDE-4.8.5


Torna a Packages

Chi c’è in linea

Visitano il forum: Google [Bot] e 2 ospiti