-
Notifications
You must be signed in to change notification settings - Fork 1
/
edit_device.php
145 lines (123 loc) · 4.85 KB
/
edit_device.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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
<?php
$directaccess = true;
error_reporting(E_ALL ^ (E_NOTICE | E_WARNING));
require("config.php");
$r_action = (string)$_POST['action'];
$r_id = (string)$_POST['id'];
$r_name = (string)$_POST['name'];
$r_room = (string)$_POST['room'];
$r_vendor = (string)$_POST['vendor'];
$r_masterdip = (string)$_POST['masterdip'];
$r_slavedip = (string)$_POST['slavedip'];
$r_sendCommandsOnlyOnce = (string)$_POST['sendCommandsOnlyOnce'];
$r_rawCodeOn = (string)$_POST['rawCodeOn'];
$r_rawCodeOff = (string)$_POST['rawCodeOff'];
$r_tx433version = (string)$_POST['tx433version'];
$r_btnLabelOn = (string)$_POST['btnLabelOn'];
$r_btnLabelOff = (string)$_POST['btnLabelOff'];
$r_senderid = (string)$_POST['senderid'];
$r_ssh_address = (string)$_POST['ssh_address'];
$r_ssh_user = (string)$_POST['ssh_user'];
$r_ssh_password = (string)$_POST['ssh_password'];
$r_showDeviceStatus = (string)$_POST['showDeviceStatus'];
switch ($r_action) {
case "add":
$newid=1;
foreach($xml->devices->device as $device) {
$oldid=(integer)$device->id;
if($oldid >= $newid) {
$newid = $oldid + 1;
}
}
$newdevice = $xml->devices->addChild('device');
if(!empty($r_btnLabelOn)) {
$newdevice->addAttribute('buttonLabelOn', $r_btnLabelOn);
}
if(!empty($r_btnLabelOff)) {
$newdevice->addAttribute('buttonLabelOff', $r_btnLabelOff);
}
$newdevice->addChild('id', $newid);
$newdevice->addChild('name', $r_name);
$newdevice->addChild('vendor', $r_vendor);
$newdevice->addChild('sendCommandsOnlyOnce', $r_sendCommandsOnlyOnce);
$newdeviceaddress = $newdevice->addChild('address');
$newdeviceaddress->addChild('masterdip', $r_masterdip);
$newdeviceaddress->addChild('slavedip', $r_slavedip);
$newdeviceaddress->addChild('tx433version', $r_tx433version);
if($r_vendor == "url") {
$newdeviceaddress->addChild('rawCodeOn', str_replace('&','&',$r_rawCodeOn));
$newdeviceaddress->addChild('rawCodeOff', str_replace('&','&',$r_rawCodeOff));
} else {
$newdeviceaddress->addChild('rawCodeOn', $r_rawCodeOn);
$newdeviceaddress->addChild('rawCodeOff', $r_rawCodeOff);
}
if(!empty($r_ssh_address)){
$newdeviceaddress->addChild('ssh_address', $r_ssh_address);
$newdeviceaddress->addChild('ssh_user', $r_ssh_user);
$newdeviceaddress->addChild('ssh_password', $r_ssh_password);
}
$newdevice->addChild('room', $r_room);
$newdevice->addChild('senderid', $r_senderid);
$newdevice->addChild('status', 'OFF');
$newdevice->addChild('showDeviceStatus', $r_showDeviceStatus);
if(check_device($newdevice)) {
echo "ok";
config_save();
}
break;
case "edit":
$xpath='//device/id[.="'.$r_id.'"]/parent::*';
$res = $xml->xpath($xpath);
$parent = $res[0];
if(!empty($r_btnLabelOn)) {
#$parent[0]->addAttribute('buttonLabelOn', $r_btnLabelOn);
$parent[0]['buttonLabelOn']= $r_btnLabelOn;
}else{
unset ($parent[0]['buttonLabelOn']);
}
if(!empty($r_btnLabelOff)) {
#$parent[0]->addAttribute('buttonLabelOff', $r_btnLabelOff);
$parent[0]['buttonLabelOff']= $r_btnLabelOff;
}else{
unset ($parent[0]['buttonLabelOff']);
}
$parent[0]->name = $r_name;
$parent[0]->vendor = $r_vendor;
$parent[0]->address->masterdip = $r_masterdip;
$parent[0]->address->slavedip = $r_slavedip;
$parent[0]->address->tx433version = $r_tx433version;
$parent[0]->sendCommandsOnlyOnce = $r_sendCommandsOnlyOnce;
if($r_vendor == "url") {
$parent[0]->address->rawCodeOn = str_replace('&','&',$r_rawCodeOn);
$parent[0]->address->rawCodeOff = str_replace('&','&',$r_rawCodeOff);
} else {
$parent[0]->address->rawCodeOn = $r_rawCodeOn;
$parent[0]->address->rawCodeOff = $r_rawCodeOff;
}
if(!empty($r_ssh_address)){
$parent[0]->address->ssh_address = $r_ssh_address;
$parent[0]->address->ssh_user = $r_ssh_user;
$parent[0]->address->ssh_password = $r_ssh_password;
}
$parent[0]->room = $r_room;
$parent[0]->senderid = $r_senderid;
$parent[0]->status = 'OFF';
$parent[0]->showDeviceStatus = $r_showDeviceStatus;
if(check_device($parent[0])) {
echo "ok";
config_save();
}
break;
case "delete":
$xpath='//device/id[.="'.$r_id.'"]/parent::*';
$res = $xml->xpath($xpath);
$parent = $res[0];
unset($parent[0]);
echo "ok";
config_save();
break;
default:
echo "unsupported";
break;
}
?>