#!%TCLSH%


#
# Script pour prsenter la page d'ajout d'une machine/alias
#
# Appel par : index.htgt ou script liste ou script traiteajout
#
# Paramtres (formulaire ou URL) :
#   - lorsque appel depuis l'accueil : aucun
#   - lorsque appel depuis la carte des adresses libres (script liste)
#	- adr : adresse IP
#	- next : paramtres pour la suite
#   - lorsque appel depuis la carte des adresses libres (script traiteajout)
#	XXX
#
#
# Historique
#   2002/04/11 : pda/jean : cration
#   2002/05/03 : pda/jean : sparation dans une page particulire
#   2002/07/09 : pda      : ajout de nologin
#   2003/05/13 : pda/jean : utilisation de la base d'authentification
#   2005/04/08 : pda/jean : ajout des profils DHCP
#   2008/07/23 : pda/jean : ajout du droit d'mission SMTP
#   2009/12/31 : pda      : ajout de l'ajout multiple
#   2010/10/08 : pda      : ajout du cas de suite de script
#   2010/10/31 : pda      : ajout ttl
#

set conf(homeurl)	%HOMEURL%

#
# Chemins utiliss par les scripts
#

set conf(pkg)		%PKGTCL%
set conf(lib)		%DESTDIR%/lib
set conf(libdns)	$conf(lib)/libdns.tcl

#
# Dfinition des noms des pages " trous"
#

set conf(page)		$conf(lib)/ajout.html
set conf(pageadr)	$conf(lib)/ajout-adr.html
set conf(err)		$conf(lib)/erreur.html

#
# Quelques paramtres du script
#

set conf(auth)		%AUTH%
set conf(base)		%BASE%
set conf(nologin)	%NOLOGIN%
set conf(log)		%LOG%

# les champ discriminant pour la suite
set conf(form)	{
	{adr		0 1}
	{nextprog	0 1}
	{nextargs	0 1}
}

#
# Les outils du parfait concepteur de pages Web dynamiques...
#

lappend auto_path $conf(pkg)
package require webapp
package require pgsql

#
# On y va !
#

# ::webapp::cgidebug ; exit

source $conf(libdns)

##############################################################################
# Programme principal
##############################################################################

proc main {} {
    global conf

    #
    # Initialisation
    #

    init-dns $conf(nologin) $conf(auth) $conf(base) $conf(err) "" \
			$conf(form) ftab dbfd login tabcor $conf(log)

    #
    # Rcupration des types de machines
    #

    set menuhinfo [menu-hinfo $dbfd hinfo ""]

    #
    # Rcupration du droit SMTP pour afficher ou non le bouton
    # d'autorisation d'mettre en SMTP non authentifi
    #

    set droitsmtp [menu-droitsmtp $dbfd "droitsmtp" $tabcor(idcor) 0]
    set droitsmtplibelle [lindex $droitsmtp 0]
    set droitsmtpmenu    [lindex $droitsmtp 1]

    #
    # Rcupration du droit TTL pour afficher ou non le champ
    # d'dition du TTL
    #

    set ttl [menu-ttl $dbfd "ttl" $tabcor(idcor) ""]
    set ttllibelle [lindex $ttl 0]
    set ttlval     [lindex $ttl 1]

    #
    # Rcupration des domaines auxquels le correspond a accs
    # et construction du code HTML appropri.
    #

    set domaine    [menu-domaine $dbfd $tabcor(idcor) domaine    "" "" $conf(err)]
    set domaineref [menu-domaine $dbfd $tabcor(idcor) domaineref "" "" $conf(err)]

    #
    # Rcuprer les informations de profil DHCP si besoin est
    #

    set dhcpprofil [menu-dhcpprofil $dbfd "iddhcpprofil" $tabcor(idcor) 0]
    set dhcpprofillibelle [lindex $dhcpprofil 0]
    set dhcpprofilmenu    [lindex $dhcpprofil 1]

    #
    # Rcuprer les plages sous forme d'une liste droulante
    #

    set lres [liste-reseaux $dbfd $tabcor(idgrp) "consult"]
    set taille [llength $lres]
    if {$taille == 0} then {
	set menuplage "Aucun rseau slectionnable"
    } else {
	set menuplage [::webapp::form-menu "plage" 1 0 $lres {}]
    }

    #
    # Cas d'une adresse dj fournie
    #

    set adr [string trim [lindex $ftab(adr) 0]]
    set next ""
    if {[string equal $adr ""]} then {
	# show rest of page
	set display "block"
    } else {
	# hide rest of page
	set display "none"
	set nextprog [lindex $ftab(nextprog) 0]
	set nextargs [lindex $ftab(nextargs) 0]
	if {! [string equal $nextprog ""]} then {
	    set n1 "nextprog=[::webapp::post-string $nextprog]"
	    set n2 "nextargs=[::webapp::post-string $nextargs]"
	    set next "?$n1&$n2"
	}
    }

    #
    # Sortie du rsultat
    #

    ::webapp::send html [::webapp::file-subst $conf(page) \
				    [list \
					    [list %DOMAINE% $domaine] \
					    [list %DOMAINEREF% $domaineref] \
					    [list %MENUHINFO% $menuhinfo] \
					    [list %TTLLIBELLE% $ttllibelle] \
					    [list %TTLVAL% $ttlval] \
					    [list %DROITSMTPLIBELLE% $droitsmtplibelle] \
					    [list %DROITSMTPMENU% $droitsmtpmenu] \
					    [list %DHCPPROFILLIBELLE% $dhcpprofillibelle] \
					    [list %DHCPPROFILMENU% $dhcpprofilmenu] \
					    [list %MENUPLAGE% $menuplage] \
					    [list %DISPLAY% $display] \
					    [list %ADR% $adr] \
					    [list %NEXT% $next] \
					] \
				]

    #
    # Dconnexion de la base
    #

    fermer-base $dbfd
}

::webapp::cgi-exec main %DEBUG%
