r8410: converted the newuser script to js
[samba.git] / source4 / setup / provision
1 #!/usr/bin/env smbscript
2 /*
3         provision a Samba4 server
4         Copyright Andrew Tridgell 2005
5         Released under the GNU GPL v2 or later
6 */
7
8 options = new Object();
9 ok = GetOptions(ARGV, options, 
10                 "POPT_AUTOHELP",
11                 "POPT_COMMON_SAMBA",
12                 "POPT_COMMON_VERSION",
13                 'realm=s',
14                 'domain=s',
15                 'domain-guid=s',
16                 'domain-sid=s',
17                 'host-name=s',
18                 'host-ip=s',
19                 'host-guid=s',
20                 'invocationid=s',
21                 'adminpass=s',
22                 'krbtgtpass=s',
23                 'machinepass=s',
24                 'root=s',
25                 'nobody=s',
26                 'nogroup=s',
27                 'wheel=s',
28                 'users=s',
29                 'quiet');
30 if (ok == false) {
31    println("Failed to parse options: " + options.ERROR);
32    return -1;
33 }
34
35 libinclude("base.js");
36 libinclude("provision.js");
37
38 /*
39   print a message if quiet is not set
40 */
41 function message() 
42 {
43         if (options["quiet"] == undefined) {
44                 print(vsprintf(arguments));
45         }
46 }
47
48 /*
49  show some help
50 */
51 function ShowHelp()
52 {
53         print("
54 Samba4 provisioning
55
56 provision [options]
57  --realm        REALM           set realm
58  --domain       DOMAIN          set domain
59  --domain-guid  GUID            set domainguid (otherwise random)
60  --domain-sid   SID             set domainsid (otherwise random)
61  --host-name    HOSTNAME        set hostname
62  --host-ip      IPADDRESS       set ipaddress
63  --host-guid    GUID            set hostguid (otherwise random)
64  --invocationid GUID            set invocationid (otherwise random)
65  --adminpass    PASSWORD        choose admin password (otherwise random)
66  --krbtgtpass   PASSWORD        choose krbtgt password (otherwise random)
67  --machinepass  PASSWORD        choose machine password (otherwise random)
68  --root         USERNAME        choose 'root' unix username
69  --nobody       USERNAME        choose 'nobody' user
70  --nogroup      GROUPNAME       choose 'nogroup' group
71  --wheel        GROUPNAME       choose 'wheel' privileged group
72  --users        GROUPNAME       choose 'users' group
73  --quiet                        Be quiet
74
75 You must provide at least a realm and domain
76
77 ");
78         exit(1);
79 }
80
81 if (options['host-name'] == undefined) {
82         options['host-name'] = hostname();
83 }
84
85 /*
86    main program
87 */
88 if (options["realm"] == undefined ||
89     options["domain"] == undefined ||
90     options["host-name"] == undefined) {
91         ShowHelp();
92 }
93
94 var subobj = provision_guess();
95 for (r in options) {
96         var key = strupper(join("", split("-", r)));
97         subobj[key] = options[r];
98 }
99
100 message("Provisioning for %s in realm %s\n", subobj.DOMAIN, subobj.REALM);
101 message("Using administrator password: %s\n", subobj.ADMINPASS);
102 provision(subobj, message);
103 message("All OK\n");
104 return 0;