class_setupStep_Finish.inc 3.92 KB
Newer Older
1
2
3
4
<?php
/*
  This code is part of FusionDirectory (http://www.fusiondirectory.org/)
  Copyright (C) 2007  Fabian Hickert
5
  Copyright (C) 2011-2013  FusionDirectory
6
7
8
9
10
11
12
13
14
15
16
17
18

  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2 of the License, or
  (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
19
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
20
21
22
23
*/

class Step_Finish extends setup_step
{
24
  var $header_image = "geticon.php?context=devices&icon=server&size=48";
25

26
  function __construct()
27
28
29
30
31
32
33
34
35
36
37
38
39
40
  {
    $this->update_strings();
  }

  function update_strings()
  {
    $this->s_title      = _("Finish");
    $this->s_info       = _("Write configuration file");
    $this->s_title_long = _("Finish - write the configuration file");
  }

  function get_conf_data()
  {
    $smarty = get_smarty();
41
42
43
    $smarty->assign("cv",                       xmlentities($this->parent->captured_values));
    $smarty->assign("config_checksum",          md5(file_get_contents(CONFIG_TEMPLATE_DIR.CONFIG_FILE)));
    $smarty->assign("templateCompileDirectory", SPOOL_DIR);
44
    return $smarty->fetch(CONFIG_TEMPLATE_DIR.CONFIG_FILE);
45
  }
46

47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
  function insertConfigDefaults()
  {
    /* Insert default config values, even for installed plugin */
    global $config, $ui, $plist, $BASE_DIR;
    $cv = $this->parent->captured_values;

    /* Create config object */

    $config = new config(CONFIG_DIR."/".CONFIG_FILE, $BASE_DIR);
    $config->set_current($config->data['MAIN']['DEFAULT']);

    /* Create ui object */

    /* got user dn, fill acl's */
    $ui           = new userinfo($config, $cv['valid_admin']);
    $ui->username = 'fd-admin';
    /* Username is set, load subtreeACL's now */
    $ui->loadACL();

    /* We need the pluglist object */
    load_all_classes();
    $plist = new pluglist($config, $ui);

    /* Now we can save LDAP config */
    $config->loadPlist($plist);
    $config->checkLdapConfig();
  }
74
75
76

  function execute()
  {
77
78
    global $BASE_DIR;

79
    /* Check if there is currently an active fusiondirectory.conf */
80
    $exists = file_exists(CONFIG_DIR."/".CONFIG_FILE);
81

82
    /* Redirect to FusionDirectory login, if :
83
     *   - fusiondirectory.conf exists
84
85
     *   - Permisssion are set correctly
     */
86

87
    if (isset($_POST['next']) && $exists && !$this->is_world_readable(CONFIG_DIR."/".CONFIG_FILE)) {
88
      $this->insertConfigDefaults();
89
90
91
92
93
      session::destroy();
      header("Location: index.php");
      exit();
    }

Benoit Mortier's avatar
Benoit Mortier committed
94
    /* Download config */
95
    if (isset($_POST['getconf'])) {
96
      send_binary_content($this->get_conf_data(), CONFIG_FILE, "text/plain");
97
    }
98

99
    $err_msg = "";
100

101
    if ($exists && $this->is_world_readable(CONFIG_DIR."/".CONFIG_FILE)) {
102
      $err_msg = _("Your configuration file is currently world readable. Please update the file permissions!");
103
    } elseif (!$exists) {
104
105
106
107
      $err_msg = _("The configuration is currently not readable or it does not exists.");
    }

    $smarty = get_smarty();
108
    $smarty->assign("err_msg",  $err_msg);
109
    $smarty->assign("msg2",     sprintf(_("After downloading and placing the file under %s, please make sure that the user the webserver is running with is able to read %s, while other users shouldn't."), CONFIG_DIR, CONFIG_FILE));
110
111

    //~ Changer ça pour du sp.
112

113
    return $smarty->fetch("$BASE_DIR/setup/setup_finish.tpl");
114
115
116
117
118
119
120
  }

  /* check if given file is world readable */
  function is_world_readable($file)
  {
    clearstatcache();
    $p = fileperms($file);
121
    return (decbin($p & 4) == TRUE);
122
123
124
125
  }
}

?>