forked from agent4788/SHC_Framework
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathshc_install.php
executable file
·128 lines (103 loc) · 4.9 KB
/
shc_install.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<?php
//SHC Einstellungen
$settingsXml = new SimpleXMLElement('./rwf/data/storage/default/defaultSettings.xml', null, true);
//Einstellung hinzufuegen
define('TYPE_BOOLEAN', 'bool');
define('TYPE_STRING', 'string');
define('TYPE_INTEGER', 'int');
function addSetting($name, $value, $type) {
global $settingsXml;
$setting = $settingsXml->addChild('setting');
$setting->addAttribute('name', $name);
$setting->addAttribute('value', $value);
$setting->addAttribute('type', $type);
}
//Allgemeine Einstellungen
addSetting('shc.ui.redirectActive', 'true', TYPE_BOOLEAN);
addSetting('shc.ui.redirectPcTo', '1', TYPE_INTEGER);
addSetting('shc.ui.redirectTabletTo', '1', TYPE_INTEGER);
addSetting('shc.ui.redirectSmartphoneTo', '1', TYPE_INTEGER);
addSetting('shc.ui.index.showUsersAtHome', 'true', TYPE_BOOLEAN);
//Sheduler Daemon
addSetting('shc.shedulerDaemon.active', 'true', TYPE_BOOLEAN);
//Schaltserver
addSetting('shc.switchServer.active', 'true', TYPE_BOOLEAN);
addSetting('shc.switchServer.ip', '127.0.0.1', TYPE_STRING);
addSetting('shc.switchServer.port', '9274', TYPE_STRING);
addSetting('shc.switchServer.senderActive', 'true', TYPE_BOOLEAN);
addSetting('shc.switchServer.sendCommand', '/usr/local/bin/pilight-send', TYPE_STRING);
addSetting('shc.switchServer.gpioCommand', '/usr/local/bin/gpio', TYPE_STRING);
addSetting('shc.switchServer.rcswitchPiCommand', '/opt/rcswitch-pi/send', TYPE_STRING);
addSetting('shc.switchServer.sendLedPin', '-1', TYPE_INTEGER);
addSetting('shc.switchServer.writeGpio', 'true', TYPE_BOOLEAN);
addSetting('shc.switchServer.readGpio', 'true', TYPE_BOOLEAN);
//Arduino Reciver
addSetting('shc.arduinoReciver.active', 'false', TYPE_BOOLEAN);
addSetting('shc.arduinoReciver.interface', '/dev/ttyAMA0', TYPE_STRING);
addSetting('shc.arduinoReciver.baudRate', '9600', TYPE_INTEGER);
addSetting('shc.arduinoReciver.ip', '127.0.0.1', TYPE_STRING);
addSetting('shc.arduinoReciver.port', '9275', TYPE_STRING);
//Sensor Reciver
addSetting('shc.sensorReciver.active', 'false', TYPE_BOOLEAN);
addSetting('shc.sensorReciver.ip', '127.0.0.1', TYPE_STRING);
addSetting('shc.sensorReciver.port', '9275', TYPE_STRING);
//Sensor Transmitter
addSetting('shc.sensorTransmitter.active', 'false', TYPE_BOOLEAN);
addSetting('shc.sensorTransmitter.ip', '127.0.0.1', TYPE_STRING);
addSetting('shc.sensorTransmitter.port', '9275', TYPE_STRING);
addSetting('shc.sensorTransmitter.pointId', '-1', TYPE_INTEGER);
//Allgemeine SHC Einstellungen
addSetting('shc.title', 'SHC%202.0', TYPE_STRING);
addSetting('shc.defaultStyle', 'redmond', TYPE_STRING);
addSetting('shc.defaultMobileStyle', 'default', TYPE_STRING);
//XML Speichern
$settingsXml->asXML('./rwf/data/storage/settings.xml');
//Benutzerverwaltung Konfigurieren
$usersXml = new SimpleXMLElement('./rwf/data/storage/default/defaultUsers.xml', null, true);
//Funktionen
function addPremission($xml, $name, $value) {
$premission = $xml->addChild('premission');
$premission->addAttribute('name', $name);
$premission->addAttribute('value', $value);
}
function randomStr($length = 10) {
$set = array("a", "A", "b", "B", "c", "C", "d", "D", "e", "E", "f", "F", "g", "G", "h", "H", "i", "I", "j", "J",
"k", "K", "l", "L", "m", "M", "n", "N", "o", "O", "p", "P", "q", "Q", "r", "R", "s", "S", "t", "T",
"u", "U", "v", "V", "w", "W", "x", "X", "y", "Y", "z", "Z", "1", "2", "3", "4", "5", "6", "7", "8",
"9");
$str = '';
for ($i = 1; $i <= $length; ++$i) {
$ch = mt_rand(0, count($set) - 1);
$str .= $set[$ch];
}
return $str;
}
//Gruppenrechte vorbereiten
foreach($usersXml->groups->group as $group) {
$group = $group->premissions;
addPremission($group, 'shc.ucp.viewUserAtHome', '0');
addPremission($group, 'shc.ucp.reboot', '0');
addPremission($group, 'shc.ucp.shutdown', '0');
addPremission($group, 'shc.acp.menu', '0');
addPremission($group, 'shc.acp.userManagement', '0');
addPremission($group, 'shc.acp.settings', '0');
addPremission($group, 'shc.acp.backupsManagement', '0');
addPremission($group, 'shc.acp.roomManagement', '0');
addPremission($group, 'shc.acp.switchableManagement', '0');
addPremission($group, 'shc.acp.sensorpointsManagement', '0');
addPremission($group, 'shc.acp.usersathomeManagement', '0');
addPremission($group, 'shc.acp.conditionsManagement', '0');
addPremission($group, 'shc.acp.switchpointsManagement', '0');
addPremission($group, 'shc.acp.eventsManagement', '0');
addPremission($group, 'shc.acp.switchserverManagement', '0');
}
//Passwort Libary einbinden fuer PHP Versionen < PHP 5.5
require_once('./rwf/lib/external/password/password.php');
//Hauptbenutzer vorbereiten
$user = $usersXml->users->user[0];
$user->name = 'admin';
$user->password = password_hash('admin', PASSWORD_DEFAULT);
$user->authCode = randomStr(64);
$user->register = (new DateTime('now'))->format('Y-m-d');
//XML Speichern
$usersXml->asXML('./rwf/data/storage/users.xml');