r26389: Merge SWAT changes from alpha2 back into main Samba4 tree.
[ira/wip.git] / swat / install / samba3.esp
1 <% page_header("columns", "Upgrade", "install"); 
2
3  /* frontend to Samba3 upgrade.
4         Based on provision.esp
5         (C) Jelmer Vernooij 2005
6         Published under the GNU GPL
7   */
8
9   include("/scripting/forms.js");
10   libinclude("base.js");
11   libinclude("provision.js");
12   libinclude("upgrade.js");
13 %>
14
15 <h1>Import from Samba3</h1>
16
17 <%
18 if ((session.authinfo.user_class == "ADMINISTRATOR")
19          || (session.authinfo.user_class == "SYSTEM")) {
20
21         if (form['submit'] == "Cancel") {
22                 redirect("/");
23         }
24
25         function confirm_form()
26         {
27                 var samba3 = samba3_read(form['LIBDIR'], form['SMBCONF']);
28
29                 var subobj = upgrade_provision(samba3);
30                 var f = FormObj("Import from Samba3", 0, 2);
31                 subobj.ADMINPASS = "";
32
33                 f.add("REALM", "Realm");
34                 f.add("DOMAIN", "Domain Name");
35                 f.add("HOSTNAME", "Hostname");
36                 f.add("ADMINPASS", "Administrator Password", "password");
37                 f.add("CONFIRM", "Confirm Password", "password");
38                 f.add("DOMAINSID", "Domain SID");
39                 f.add("HOSTGUID", "Host GUID");
40                 f.add("HOSTIP", "Host IP");
41                 f.add("DEFAULTSITE", "Default Site");
42
43                 for (i=0;i<f.element.length;i++) {
44                         f.element[i].value = subobj[f.element[i].name];
45                 }
46
47                 f.add("SMBCONF", "", "hidden", form['SMBCONF']);
48                 f.add("LIBDIR", "", "hidden", form['LIBDIR']);
49
50                 f.submit[0] = "Continue";
51                 f.submit[1] = "Cancel";
52                 f.display();    
53         }
54
55         if (form['submit'] == "Import") {
56                 confirm_form();
57         } else if (form['submit'] == "Continue") {
58                 var samba3 = samba3_read(form['LIBDIR'], form['SMBCONF']);
59                 assert(samba3 != undefined);
60                 var subobj = upgrade_provision(samba3);
61                 for (r in form) {
62                         subobj[r] = form[r];
63                 }
64
65                 var goodpass = (subobj.CONFIRM == subobj.ADMINPASS);
66
67                 if (!goodpass) {
68                         write("<h3>Passwords don't match.  Please try again.</h3>");
69                         confirm_form();
70                 } else if (subobj.ADMINPASS == "") {
71                         write("<h3>You must choose an administrator password.  Please try again.</h3>");
72                         confirm_form();
73                 } else {
74                         var paths = provision_default_paths(subobj);
75                         if (!provision(subobj, writefln, true, paths, 
76                                        session.authinfo.session_info, session.authinfo.credentials)) {
77                                 writefln("Provision failed!");
78                         } else { 
79                                 var ret = upgrade(subobj,samba3,message,paths,
80                                                   session.authinfo.session_info, session.authinfo.credentials);
81                                 if (ret > 0) {
82                                         writefln("Failed to import %d entries\n", ret);
83                                 } else {
84                                         if (!provision_dns(subobj, writefln, paths,
85                                                            session.authinfo.session_info, session.authinfo.credentials)) {
86                                                 writefln("DNS Provision failed!");
87                                         } else {
88                                                 writefln("Reloading smb.conf\n");
89                                                 var lp = loadparm_init();
90                                                 lp.reload();
91                                                 writefln("Upgrade Complete!");
92                                         }
93                                 }
94                         }
95                 }
96         } else {
97                 var f = FormObj("Import from Samba3", 0, 2);
98
99                 f.add("SMBCONF", "smb.conf file", "text", "/etc/samba/smb.conf");
100                 f.add("LIBDIR", "Lib directory", "text", "/var/lib/samba");
101                 f.submit[0] = "Import";
102                 f.submit[1] = "Cancel";
103
104                 write('<p>Warning: This will erase your current configuration!</p>');
105                 f.display();
106         }
107 } else {
108         redirect("/");
109 }
110 %>
111
112 <% page_footer(); %>