Subversion Repositories slis

Rev

Rev 5775 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?PHP
/* $Id: view.php 6102 2009-11-10 08:58:29Z plb $

This script has been written by Joel Savignon
Copyright (C) 2002 Joel Savignon <js@neosystem.com>

This script is released under GNU Public Licence (GPL)
http://www.gnu.org/licenses/gpl.html

This script is part of the SLIS Project initiated by
the CARMI-Internet (Academie de Grenoble - France 38).

SLIS : Serveur de communications Linux pour l'Internet Scolaire.
Copyright (C) 1998-2001 Bruno Bzeznik

--------------------------------------------------------------*/


// hidden_name = Fiche
// hidden_desc = Fiche Slis

include_once("general.php");
include_once("gui/Form.php");
include_once("gui/FormField.php");
include_once("gui/OptionField.php");
include_once("gui/HiddenField.php");
include_once("gui/CheckboxField.php");
include_once("gui/Table.php");
include_once("gui/LinkField.php");
include_once("gui/LineField.php");
include_once("gui/HelpButton.php");
include_once("gui/Button.php");
include_once("gui/ButtonForm.php");

include_once("objects/Site.php");
include_once("objects/Slis.php");
include_once("objects/SlisGroup.php");
include_once("objects/HAdminUser.php");
include_once("objects/Route.php");
include_once("objects/Link.php");
include_once("objects/AccessHistory.php");
include_once("objects/CustomViewList.php");
include_once("objects/CustomViews.php");

if ($monitor) {
        include_once("objects/Monitor_check.php");
        include_once("objects/Monitor_list.php");
}

if ($slis) $name=$slis;

$slis = $Slis->select_by_key($name);


if (!$slis) html_error("Pas de fiche pour %s", $name);

if (!$slim_user->has_slis_right("view_slis", $slis->name)){
        html_error("Operation not allowed", $name);
}

// Check rights
if ($add_group){
  $slim_user->check_right("add_slis_group");
}

if ($rm_group){
  $slim_user->check_slis_right("remove_slis_group",$name);
}

// And apply modifications
if ($rm_admin && $slim_user->has_slis_right("delete_admin_user",$name))         {
        $admin = $HAdminUser->select_by_key($rm_admin);
        if ($admin)
                $admin->delete();
}

if ($add_group && $slim_user->has_right("add_slis_group")){
        $sg = $SlisGroup->get_new();
        $sg->group_id = $add_group;
        $sg->slis_name = $slis->name;
        $sg->add();
}
                       
if ($rm_group && $slim_user->has_slis_right("remove_slis_group",$name))         {
        $sg = $SlisGroup->select_by_key($rm_group);
        if ($sg)
                $sg->delete();
}


if ($monitor && $rm_slischeck && $slim_user->has_right("manage_check") )                {
//if ($monitor && $rm_slischeck && $slim_user->login=="admin")          {
        $chk = $Monitor_list->select_by_key($rm_slischeck);
        if ($chk)
                $chk->delete();
}

if ($monitor && $add_id_check && $slim_user->has_right("manage_check") )                {
        $chk = $Monitor_list->get_new();
        $chk->id_check = $add_id_check;
        $chk->slis_name= $name;
        $chk->enabled = "t";
        $chk->alert = "t";
        $chk->add();

}


$lastAccess = $AccessHistory->select("tablename='slis' and login='{$slim_user->login}' ","lastaccess desc");
if (count($lastAccess)>9) {
        $lastAccess=$lastAccess[9];
        if ($lastAccess)
                $lastAccess->delete();
}

$lastAccess = $AccessHistory->select("tablename='slis' and login='{$slim_user->login}' and id='{$slis->name}'","lastaccess desc ");

if (! $lastAccess ) {
        $la= $AccessHistory->get_new();
        $la->login=$slim_user->login;
        $la->tablename="slis";
        $la->lastaccess= $AccessHistory->val_today();
        $la->id=$slis->name;
        $la->add();    
}else{
        $lastAccess=$lastAccess[0];
        $lastAccess->lastaccess= $AccessHistory->val_today();
        $lastAccess->modify();
}


// init all data
$tun = $slis->get_tunel();
if ($tun) {
        $routes =& $tun->get_routes();
}
       
print html_header($slis->name);
       
// get the custom_view_id
$slis_view_custom_view_id = $CustomViews->getUserCustom_view_id("slis_view");

// Display links to select cutom views
print $CustomViews->getViewLinks("view.php?name={$slis->name}","slis_view",$slis_view_custom_view_id);


$border="0";
$cols = array();

// get items
if ($slis_view_custom_view_id==-2) {
// return default items
$cols[0] = Array ( "slis_info","hadmin","root_shell","make_dks","file_management","view_links");
$cols[1] = Array ( "tunel_and_route","view_dns","view_groups","view_admin","tickets","view_slis_depvar","view_checks" );

}
else {
  for ($i=0;$i< count($CustomViews->getAlignList()) ; $i++) {
                $cols[$i] = $CustomViewList->getCustomViewNames($slis_view_custom_view_id,$i);
        //$left_items = $CustomViewList->getCustomViewNames($slis_view_custom_view_id,0);
        //$right_items = $CustomViewList->getCustomViewNames($slis_view_custom_view_id,1);
        }
}

if (count ($cols)>1 ) {
        print "<table border=$border ><tr valign=top><td align=left>\n";
}      


for ($c=0 ; $c<count($cols) ; $c++) {
        $items = $cols[$c];
//print_r($items);
        for ($i=0 ; $i<count($items) ; $i++) {
                $tmp = getItemHtmlCode($items[$i]);
                if ($tmp && $tmp!="KO")
                        print $tmp;
                flush();       
        }

        if (count ($cols)>1 ) {
                print "</td><td align=left>\n";
        }      
}

if (count ($cols)>1 ) {
        print "</td></tr></table>\n";
}      


//******************************************************************************************************

function getItemHtmlCode($itemName) {

        global $slis,$slim_user,$monitor,$tun,$routes,$border,$Monitor_check,$Monitor_list;
//echo "$itemName<br>";
        if ($monitor && strpos($itemName,"MONITOR:")===0) {
                // ################# MONITOR ELEMENTS #####################
                $mon_item = substr($itemName,8);

                if (!@include("https://localhost/slim/scripts/monitor/get/monitor_getdisplayscript.php?slis_name=".urlencode($slis->name)."&item=".urlencode($mon_item)."&slim_user_login={$slim_user->login}"));
                return "KO";

        } else
       
        if ($itemName=="slis_info") {
                // ################# SLIS INFO #####################
                $form = new Form("edit.php");
                $form->set_title("Fiche Slis");
                $form->add_field(new HiddenField("name", $slis->name, "Nom", 1));
                $form->add_field(new HiddenField("", $slis->get_status(), "Status"));
                $form->add_field(new HiddenField("", html_link($slis->url_site(), $slis->site_code), "Etablissement"));
                $form->add_field(new HiddenField("", $slis->type, "Type"));
                $form->add_field(new HiddenField("", $slis->version, "Last generated version"));
                $form->add_field(new HiddenField("", $slis->version_dks, "dks"));
                if ($slim_user->has_right("modify_network")) {
                        $form->add_field(new HiddenField("", $slis->get_network_link(), "Réseau"));
                }else{
                        $form->add_field(new HiddenField("", $slis->get_network_name(), "Réseau"));
                }
                if ($slim_user->has_right("modify_pop")) {
                        $form->add_field(new HiddenField("", $slis->get_pop_link(), "Pop"));
                }else{
                        $form->add_field(new HiddenField("", $slis->get_pop_name(), "Pop"));
                }
                $form->add_field(new HiddenField("", $slis->get_nat_link(), "Adresse Nat"));
                $form->add_field(new HiddenField("", $slis->ip_ppp, "Adresse ppp fixe"));
                $form->add_field(new HiddenField("", $slis->get_internet_ip(), "IP Internet"));
                $form->add_field(new HiddenField("", $slis->get_intranet_ip(), "IP Intranet"));

                if ($slis->parent_slisname) {
                        $form->add_field(new HiddenField("", html_link("view.php?name=".$slis->parent_slisname, $slis->parent_slisname), "SLIS Parent"));
                }      

                $form->add_field(new LineField());
                $form->add_field(new HiddenField("", $slis->ip_gateway, "IP routeur"));
                $form->add_field(new HiddenField("", $slis->gateway_user, "Login routeur"));
                if ($slim_user->has_slis_right("view_router_password", $slis->name)){
                        $form->add_field(new HiddenField("", $slis->gateway_passwd, "Mot de passe routeur"));
                }
                $form->add_field(new HiddenField("", $slis->get_router_name(), "Type routeur"));
                $form->add_field(new LineField());
                $form->add_field(new HiddenField("", $slis->creation_date, "Date de création"));
                $form->add_field(new HiddenField("", $slis->install_date, "Date d'installation"));
                $form->add_field(new HiddenField("", $slis->get_installer(), "Installateur"));
//              if ($slim_user->has_right("view_slis_comment")){
                $form->add_field(new LineField());
                $field = new HiddenField("", html_br($slis->comment), "Commentaire");
                  $field->set_valign("top");
                $form->add_field($field);
//              }
                if ($slim_user->has_right("create_slis") || $slim_user->has_slis_right("modify_slis", $slis->name) ){
                        $form->add_button(new Button("Editer"));
                }
                if ($slis->has_history_elements()){
                        $form->add_button(new Button("History","history"));
                }
       
                return $form->build_code()."\n";
        }else

                if ($monitor && $itemName=="hadmin"  && $slim_user->has_slis_right("log_to_hadmin_slis", $slis->name) ) {
                        ############### log_to_hadmin_slis ####################
               
                        $form = new Form("interface.php");
                        $form->setTarget("_blank");
                        $form->add_field(new HiddenField("","", "web admin"));
                        $form->add_field(new HiddenField("name", $slis->name));
        //              $form->add_field(new CheckboxField("newWindow","Dans une nouvelle fenêtre","t"));
                        $form->add_button(new Button("SLIS", "goSLIS"));
      if ($slis->version > 4.0) {
        $form->add_button(new Button("LCS", "goLCS"));
      }

                        return $form->build_code()."\n";

        }else

                if ($monitor && $itemName=="root_shell"  && $slim_user->has_slis_right("log_to_shell_slis", $slis->name) ) {
                        ############### log_to_shell_slis ####################
       
                        $form = new Form("rootShell.php");
                        $form->add_field(new HiddenField("","", "RootShell"));
                        $form->add_field(new HiddenField("name", $slis->name));
                        //$form->add_field(new CheckboxField("showPassword","Show password","f"));
      $form->add_button(new Button("Show passwords","showPassword"));
      $form->add_button(new Button("SLIS","goSLIS"));
      if ($slis->version > 4.0) {
      $form->add_button(new Button("LCS", "goLCS"));
      $form->add_button(new Button("HOST", "goHOST"));
      }
                return $form->build_code()."\n";
        }else

                if ($itemName=="make_dks"  && $slim_user->has_slis_right("make_dks", $slis->name) ) {
                ############### DKS AND TICKETS LINKS ####################
                        $form = new Form("../ZDKS/make.php");
                        #$form->set_title("Setup disk");
                        $form->add_field(new HiddenField("slis_name",$slis->name));
                        $form->add_field(new HiddenField("strict_s","t"));
                        $form->add_field(new HiddenField("date",$slis->creation_date));
                        $form->add_field(new HiddenField("version",$slis->version));
                        $form->add_field(new HiddenField("type",$slis->type));
                        $form->add_field(new HiddenField("pop_id",$slis->pop_id));
                        $form->add_field(new HiddenField("","", "Pour generer automatiquement la DKS"));
                        $form->add_button(new Button("Make"));
                return $form->build_code()."\n";
               
        }else
                if ($itemName=="tunel_and_route") {
                        $retval="<table border=$border  width=100%><tr valign=top>\n";
                        ############### TUNNEL TABLE ####################

                        if ($tun && $slim_user->has_right("view_tunel"))
                        {
                                $form2 = new Form("tun_edit.php");
                                $form2->set_title("Tunnel Slis");
                                $form2->add_field(new HiddenField("id", $tun->id));
                                $form2->add_field(new HiddenField("", html_link($tun->url_server(), $tun->server_ip), "IP serveur"));
                                $form2->add_field(new HiddenField("", $tun->port, "Port"));
                                $form2->add_field(new HiddenField("", $tun->proto, "Proto"));
                                $form2->add_field(new HiddenField("", $tun->type, "Type"));
                                $form2->add_field(new HiddenField("", $tun->tun_slis_ip, "IP tunnel Slis"));
                                $form2->add_field(new HiddenField("", $tun->tun_svr_ip, "IP tunnel serveur"));
                                $form2->add_field(new HiddenField("", $tun->login, "Utilisateur"));
                               
                                //if ($slim_user->has_right("modify_tunel") || $slim_user->has_right("create_tunnel")) {
                                if ($slim_user->has_right("view_tunel_password") ) {
                                        $form2->add_field(new HiddenField("", $tun->password, "Mot de passe"));
                                }
                                if ($slim_user->has_right("modify_tunel"))
                                        {
                                                $form2->add_button(new Button("Editer"));
                                        }
                                $retval.= "<td align=left>".$form2->build_code()."</td>\n";
                       
                       
                        ############### ROUTES TABLE ####################
                       
                                $routes =& $tun->get_routes();
                       
                                if ($routes && $slim_user->has_right("view_route"))     {  
                                        $table = new Table();
                                        if (count($routes) > 1)
                                                {
                                                        $table->set_title("%d routes", count($routes));
                                                }
                                        else
                                                {
                                                        $table->set_title("%d route", count($routes));
                                                }
                                       
                                        if ($slim_user->has_right("modify_route"))
                                                $table->add_field(new LinkField("id", "Id", "", "", "url_tunel_id"));
                                        else
                                                $table->add_field(new Field("id", "Id"));
                                        $table->add_field(new LinkField("gateway_ip", "IP Passerelle", "", "", "url_gateway"));
                                        $table->add_field(new Field("network_name", "Réseau", "", "get_network_link"));
                                       
                                        $retval.= "<td>\n";
                                       
                                        $retval.= $table->build_code($routes);
                                }  
                                if ($slim_user->has_right("create_route"))
                                {
                                        $button_form = new ButtonForm(new Button("Créer"), "../Networks/route_edit.php");
                                        $button_form->add_field(new HiddenField("tunel_id", $tun->id));
                                        $button_form->add_field(new HiddenField("tunel", $tun->slis_name));
                                        $retval.= "<p>\n";
                                        $retval.= $button_form->build_code();
                                }
                                $retval.= "</td>\n";
                        }
                        else if ($slim_user->has_right("create_tunel"))
                        {
                                $form2 = new ButtonForm(new Button("Créer tunnel"), "tun_edit.php");
                                $form2->add_field(new HiddenField("slis_name", $slis->name));
                                $retval.= "<td>".$form2->build_code()."</td>\n";
                        }
                        $retval.= "</tr></table>\n";
                       
                return $retval;
                       
       
       
        }else
                if ($itemName=="view_admin") {
                ###################### ADMINS TABLE ######################
               
                $retval="";
                $admins =& $slis->get_admin_users();
                $table = new Table(1);
                if (count($admins) > 1)
                {
                        $table->set_title("%d administrateurs", count($admins));
                }
                else
                {
                        $table->set_title("%d administrateur", count($admins));
                }
               
                if ($slim_user->has_slis_right("view_hadmin_user",$slis->name)) {
                        $table->add_field(new LinkField("id", "Id", "../Slis_admins/view.php"));
                        $table->add_field(new Field("login", "Utilisateur"));
                        if ($slim_user->has_slis_right("delete_admin_user",$slis->name))
                        {
                                $table->add_field(new Field("", "", "", "get_rm_link"));
                        }
                       
                //      $retval.= "<td>\n";
                       
                        $retval.= $table->build_code($admins);
                       
                        if ($slim_user->has_slis_right("create_admin_user",$slis->name))
                        {
                                $button_form = new ButtonForm(new Button("Créer"), "../Slis_admins/edit.php");
                                $button_form->add_field(new HiddenField("slis_name", $slis->name));
                                $retval.= "<p>\n";
                                $retval.= $button_form->build_code();
                        }
                //      $retval.= "</td>\n";
                }
                return $retval;
        }else
                if ($itemName=="view_groups") {
                        #################### GROUPS TABLE ##########################
                        $retval="";
                        $sgs =& $slis->get_slis_groups();
                        $table = new Table(1);
                        if (count($sgs) > 1) $table->set_title("%d groupes", count($sgs));
                        else  $table->set_title("%d groupe", count($sgs));
                       
                        $table->add_field(new LinkField("group_id", "Nom", "", "", "url_group", "", "get_group_name"));
                        if ($slim_user->has_slis_right("remove_slis_group",$slis->name))
                        {
                                $table->add_field(new Field("", "", "", "get_rm_link2"));
                        }
                //      $retval.= "<td>\n";
                       
                        $retval.= $table->build_code($sgs);
                       
                        if ($slim_user->has_right("add_slis_group"))
                        {
                                $button_form = new ButtonForm(new HelpButton("Ajouter", "groups.php?slis=".urlencode($slis->name)));
                                $retval.= "<p>\n";
                                $retval.= $button_form->build_code();
                        }
//                      $retval.= "</td>\n";
                        return $retval;
        }else
                if ($itemName=="view_dns") {
                ############### DNS TABLE ###############################
               
                $ips =& $slis->get_pub_ipaddresses(1);
                if ($ips && $slim_user->has_right("view_dns_entry")) {
                        $table = new Table(1);
                        if (count($ips) > 1) $table->set_title("%d entrées DNS", count($ips));
                        else  $table->set_title("%d entrée DNS", count($ips));
                        $table->add_field(new LinkField("ip", "Adresse IP","../IPAddress/edit.php"));
                        $table->add_field(new LinkField("dns_id", "DNS", "", "", "url_dns", "", "get_dns_name"));
                        $retval = $table->build_code($ips);
                }

                return $retval;
        }else
                if ($itemName=="tickets") {

                        ############### Tickets ###############################
                       
                        if ($slim_user->has_slis_right("list_slis_ticket", $slis->name)){
                                $retval="";
                                $tickets= $slis->get_opened_ticket_objects();
                                        $table = new Table(1);
                                        if ( $slis->get_opened_tickets_number()>1) {
                                                $table->set_title("%d Opened technical hitches!", $slis->get_opened_tickets_number());
                                        } else if ($slis->get_opened_tickets_number()==1) {
                                                $table->set_title("%d Opened technical hitche!", $slis->get_opened_tickets_number());
                                        } else {
                                                $table->set_title("No Opened technical hitche");
                                        }      
                                       
                                        if ($slim_user->has_slis_right("view_slis_ticket", $slis->name)){
                                                $table->add_field(new LinkField("subject","Subject", "../ZTickets/view.php","id"));
                                        } else {
                                                $table->add_field(new Field("subject","Subject"));
                                        }
                                        $table->add_field(new Field("date_open","Date"));
                                        $table->add_field(new Field("owner","Owner"));
                                        $retval.= $table->build_code($tickets);
                                        //$one=true;
                       
                                $fb= new ButtonForm(new Button("Rechercher","search"),"../ZTickets/list.php");
                                $fb->add_field(new HiddenField("sliskeyword",$slis->name));
                        //      $fb->add_field(new HiddenField("status","t"));
                                $retval.= $fb->build_code();
                       
                                if ($slim_user->has_slis_right("create_slis_ticket", $slis->name)){
                                        $fb= new ButtonForm(new Button("New ticket", "new"),"../ZTickets/edit.php");
                                        $fb->add_field(new HiddenField("slis",$slis->name));
                                        $fb->add_field(new HiddenField("status","t"));
                                        $retval.= $fb->build_code();
                                }
                                       
                               
                        }
                       
                        return $retval;

       
        }else
                if ($itemName=="view_slis_depvar") {
               
                        ############### DEPLOYMENT VARIABLES ####################
                        $retval="";
                        $depvars =& $slis->get_depvars();
                        if ($slim_user->has_slis_right("view_slis_depvar", $slis->name)){
                                $table = new Table(1);
                                        if (count($depvars) > 1)
                                                $table->set_title("%d deployment variables", count($depvars));
                                        else
                                                $table->set_title("%d deployment variable", count($depvars));
                                $table->add_field(new Field("date", "Date", "", get_date));
                               
                                if ($slim_user->has_slis_right("modify_slis_depvar", $slis->name)){
                                        $table->add_field(new LinkField("var_name", "Variable", "depvar_edit.php","id"));
                                } else {
                                        $table->add_field(new Field("var_name", "Variable"));
                                }
                                $table->add_field(new Field("value", "Valeur"));
                                       
                                $retval.= $table->build_code($depvars);
                        }
                               
                        if ($slim_user->has_slis_right("create_slis_depvar", $slis->name)){
                       
                                $button_form = new ButtonForm(new Button("Créer"), "depvar_edit.php");
                                $button_form->add_field(new HiddenField("slis_name", $slis->name));
                                $retval.= "<p>\n";
                                $retval.= $button_form->build_code();
                               
                        }
                        return $retval;
               
        }else
                if ($itemName=="view_links") {
                        if ($slim_user->has_slis_right("view_links", $slis->name) ){
                                return $slis->build_links();
                        }
        }else
                if ($itemName=="view_checks" && $monitor) {
                global $Monitor_check,$Monitor_list;
                        if ($slim_user->has_right("manage_check") )             {
                                $retval="";
                                $checklist= $Monitor_list->select("slis_name='$slis->name'");
                                if ($checklist && count($checklist)>0) {
        /*                              $cond ="";
                                        foreach ($checklist as $checklist_item) {
                                               
                                                if ($cond) $cond .= " or ";
                                                $cond .= "id_check={$checklist_item->id_check}";
                                        }
                                        $checks = $Monitor_check->select($cond,"priority");
                                //      echo "count(checks)=".count($checks);
                                        $table =  new Table(1);
                                        $table->add_field(new Field("priority", "Priorite"));
                                        $table->add_field(new LinkField("name", "Nom","","","getLink_1","",""));
                                        //$table->add_field(new Field("comment", "Commentaire"));
                                        $retval.= $table->build_code($checks);
                                */

                                        $table =  new Table(1);
                                        $table->add_field(new Field("priority", "Priority","","getPriority"));
                                        $table->add_field(new LinkField("name", "Nom","","","getLink_1","","getCheckName"));
                                        $table->add_field(new Field("", "", "", "get_rm_link2"));
                                        $retval.= $table->build_code($checklist);
                                       
                                        $button_form = new ButtonForm(new HelpButton("Ajouter", "../monitor/monitor_check_list.php?slis_name={$slis->name}",600,400));
                                        //print "<p>\n";
                                        $retval.= $button_form->build_code();
                                }
                               
                                return $retval;
                        }
        }       else
                if ($itemName=="file_management" && $slim_user->has_slis_right("download_file", $slis->name) ) {
                                $form = new Form("filemanagement.php");
                                $form->add_field(new HiddenField("","", "File Managment"));
                                $form->add_field(new HiddenField("name", $slis->name));
                                $form->add_button(new Button("go"));
                               
                                return $form->build_code()."\n";
                }

}


print html_footer();

?>