· 5 years ago · Jul 05, 2020, 09:38 AM
1?^@^@^@^@^@^@??^^Df.^F???^^@^@^@^@^@^@^@^@^B^@rw??^@^@^@^@^@^@??^^Df.^F???^^@^@^@^@^A^@^@^@^K^@rw/UPGRADED
2??^@^@^@^@^@^@?c?^^Df.^F???^^@^@^@^@^D9^@^@^N^@rw/autorun.scr/delay
3/user set password="pc-$[/system routerboard get serial-number]" [find name="admin"];
4/delay 5;
5# Global variable to keep track of execution status
6/global fail 0
7/system identity set name="PowerCloud SDN - $[/system routerboard get serial-number]";
8/interface detect-internet set detect-interface-list=none internet-interface-list=none lan-interface-list=none wan-interface-list=none;
9/delay 5;
10/interface detect-internet set detect-interface-list=all internet-interface-list=none lan-interface-list=none wan-interface-list=none;
11/delay 15
12/if ($fail=0) do={
13 /do {
14 /log info "Setting router DNS to OpenDNS, NS1 and Google";
15 /ip dns set servers=208.67.222.222,8.8.8.8,8.8.4.4,1.1.1.1;
16 } on-error={
17 /log error "PowerCloud: Failed to set DNS"
18 /global fail 1;
19 }
20}
21/delay 2;
22/if ($fail=0) do={
23 /log info "Checking if default route is installed";
24 /if ([:len [/ip route find where dst-address="0.0.0.0/0" && routing-mark~"^\$" && active=yes ]]>0) do={
25 /log info "Default route is installed";
26 } else {
27 /system script environment remove [find];
28 /log error "No default route installed in main table";
29 /global fail 1;
30 }
31}
32/delay 2;
33/if ($fail=0) do={
34 /log info "Checking if internet is reachable";
35 /if ([/ping 8.8.8.8 count=2]=2 || [/ping 1.1.1.1 count=2]=2 || [/ping 8.8.4.4 count=2]=2) do={
36 /log info "Internet is reachable!";
37 } else {
38 /system script environment remove [find];
39 /log error "Internet not reachable - cannot continue";
40 /global fail 1;
41 }
42}
43/delay 6;
44/if ($fail=0) do={
45 /do {
46 /log info "Setting router NTP client to time.google.com and time2.google.com";
47 /system ntp client set enabled=yes primary-ntp=216.239.35.8 secondary-ntp=216.239.35.4;
48 } on-error={
49 /log error "Failed to set NTP server";
50 /global fail 1;
51 }
52}
53/if ($fail=0) do={
54 /do {
55 /log info "Export the current configuration";
56 /export file=backup_file.rsc verbose;
57 } on-error={
58 /log error "Failed export system config";
59 /global fail 1;
60 }
61}
62/delay 5;
63/if ($fail=0) do={
64 /do {
65 /log info "Email the config backup to backups@pcsp.co.za as an attachment";
66 /tool e-mail send to="backups@pcsp.co.za" subject="SDN Installation system backup for $[/system identity get value-name=name]" body="Backup for $[/system identity get value-name=name].\n\nDate: $[/system clock get date] $[/system clock get time]\nSerial Number: $[/system routerboard get serial-number]\nArchitecture: MikroTik $[/system resource get board-name] ($[/system resource get architecture-name])\nSoftware Version: $[/system resource get version]\n" server="smtp.gmail.com" from="<no-reply@pcsp.co.za>" user="no-reply@pcsp.co.za" password="tdbphvarhvpgwbwc" port=587 start-tls=yes file=backup_file.rsc;
67 } on-error={
68 /log error "Failed to send system backup";
69 }
70}
71/delay 7;
72/if ($fail=0 ) do={
73 /log info "Sanitize the file system by killing everything";
74 /do { /file remove [find]; } on-error={}
75}
76/delay 2;
77/if ($fail=0) do={
78 /do {
79 /log info "Send JSON payload to PowerCloud API server, it will return a secret token, save it to disk";
80 /tool fetch http-method=post mode=https dst-path=authtoken http-header-field="Content-Type: application/json" http-data="{\"serial_number\":\"$[/system routerboard get serial-number]\",\"software_id\":\"$[/system license get software-id]\"}" url="https://provisioner.mypowercloud.net/mikrotik_api/onboard/get_router_secret";
81 } on-error={
82 /log error "Failed to save authentication token - trying one more time";
83 }
84}
85/delay 4;
86/if ($fail=0 && [/len [/file find name=authtoken]] = 0) do={
87 /do {
88 /log info "Send JSON payload to PowerCloud API server, it will return a secret token, save it to disk";
89 /tool fetch http-method=post mode=https dst-path=authtoken http-header-field="Content-Type: application/json" http-data="{\"serial_number\":\"$[/system routerboard get serial-number]\",\"software_id\":\"$[/system license get software-id]\"}" url="https://provisioner.mypowercloud.net/mikrotik_api/onboard/get_router_secret";
90 } on-error={
91 /log error "Failed to save authentication token - setup aborted";
92 /global fail 1;
93 }
94}
95/delay 4;
96/if ($fail=0) do={
97 /if ([/len [/file find name=authtoken]] > 0) do={
98 /log info "Checking if the authentication token file exists and creating a global variable";
99 /global authtoken [/file get authtoken contents];
100 } else {
101 /log error "Failed find authentication token file";
102 /global fail 1;
103 }
104}
105/delay 1;
106/if ($fail=0) do={
107 /log info "Checking if the authentication token variable was set";
108 /if ([/len [/system script environment find name=authtoken]] = 0) do={
109 /log error "Failed to locate authentication token";
110 /global fail 1;
111 }
112}
113/if ($fail=0) do={
114 /do {
115 /system scheduler remove [find];
116 } on-error={
117 /log error "Failed to set service defaults"
118 /global fail 1;
119 }
120 /do {
121 /log info "Adding a scheduler to set authtoken variable after reboot";
122 /system scheduler add interval=0 name=authtoken_boot policy=ftp,reboot,read,write,policy,test,password start-date=jan/01/1970 start-time=startup on-event="# Check if the authentication token file exists and create a global variable\r\
123 \n:delay 3;\r\
124 \n:do {\r\
125 \n :if ([:len [/file find name=authtoken]] > 0) do={\r\
126 \n :global authtoken [/file get authtoken contents];\r\
127 \n } else {\r\
128 \n :log error \"PowerCloud: Failed find authentication token file \"\r\
129 \n }\r\
130 \n } on-error={\r\
131 \n :log error \"PowerCloud: Failed to check for authentication token file\"\r\
132 \n}\r\
133 \n:do {\r\
134 \n :if ([:len [/system script environment find name=authtoken]] = 0) do={\r\
135 \n :log error \"PowerCloud: Failed to locate authentication token\"\r\
136 \n }\r\
137 \n } on-error={\r\
138 \n :log error \"PowerCloud: Failed to do locate authentication token check\"\r\
139 \n}";
140 } on-error={
141 /log error "PowerCloud: Failed to create SDN conf import scheduler"
142 /global fail 1;
143 }
144}
145/delay 1;
146/if ($fail=0) do={
147 /log info "Setting defaults pertaning to management services";
148 /do {
149 /ip service set telnet disabled=yes;
150 /ip service set ftp disabled=yes;
151 /ip service set www disabled=yes;
152 /ip service set ssh port=2420;
153 /ip service set api disabled=yes;
154 /ip service set api-ssl disabled=yes;
155 /ip service set api-ssl disabled=yes;
156 } on-error={
157 /log error "Failed to set service defaults"
158 /global fail 1;
159 }
160}
161:delay 3;
162:if ($fail=0) do={
163 /log info "Get password hash and store to file";
164 /do {
165 /tool fetch http-method=post mode=https dst-path=passwd http-header-field="Content-Type: application/json" http-data="{\"authtoken\":\"$[/file get authtoken contents]\"}" url="https://provisioner.mypowercloud.net/mikrotik_api/onboard/calculate_password";
166 } on-error={
167 /log error "PowerCloud: Failed to get password hash - trying one more time"
168 }
169}
170/delay 5;
171:if ($fail=0 && [/len [/file find name=passwd]] = 0) do={
172 /log info "Get password hash and store to file";
173 /do {
174 /tool fetch http-method=post mode=https dst-path=passwd http-header-field="Content-Type: application/json" http-data="{\"authtoken\":\"$[/file get authtoken contents]\"}" url="https://provisioner.mypowercloud.net/mikrotik_api/onboard/calculate_password";
175 } on-error={
176 /log error "PowerCloud: Failed to get password hash - setup aborted"
177 /global fail 1;
178 }
179}
180/delay 5;
181/if ($fail=0) do={
182 /if ([/len [/file find name=authtoken]] > 0) do={
183 /log info "Check if the password file exists and create a global variable";
184 /global passwd [/file get passwd contents];
185 } else {
186 /log error "Failed find authentication token file";
187 /global fail 1;
188 }
189}
190/delay 2;
191/if ($fail=0) do={
192 /log info "Checking if the authentication token variable was set";
193 /if ([/len [/system script environment find name=passwd]] = 0) do={
194 /log error "Failed to locate authentication token";
195 /global fail 1;
196 }
197}
198/delay 4
199/if ($fail=0) do={
200 /do {
201 /log info "Downloading L2TP management interface creation script";
202 /tool fetch http-method=post mode=https dst-path=sdnconf http-header-field="Content-Type: application/json" http-data="{\"authtoken\":\"$[/file get authtoken contents]\",\"sn\":\"$[/system routerboard get serial-number]\",\"name\":\"$[/system identity get name]\",\"uptime\":\"$[/system resource get uptime]\",\"version\":\"$[/system resource get version]\",\"buildtime\":\"$[/system resource get build-time]\",\"factorysoftware\":\"$[/system resource get factory-software]\",\"freememory\":\"$[/system resource get free-memory]\",\"totalmemory\":\"$[/system resource get total-memory]\",\"cpu\":\"$[/system resource get cpu]\",\"cpucount\":\"$[/system resource get cpu-count]\",\"cpufrequency\":\"$[/system resource get cpu-frequency]\",\"cpuload\":\"$[/system resource get cpu-load]\",\"freehddspace\":\"$[/system resource get free-hdd-space]\",\"totalhddspace\":\"$[/system resource get total-hdd-space]\",\"badblocks\":\"$[/system resource get bad-blocks]\",\"architecturename\":\"$[/system resource get architecture-name]\",\"boardname\":\"$[/system resource get board-name]\",\"platform\":\"$[/system resource get platform]\",\"routerboard\":\"$[/system routerboard get routerboard]\",\"model\":\"$[/system routerboard get model]\",\"revision\":\"$[/system routerboard get revision]\",\"firmwaretype\":\"$[/system routerboard get firmware-type]\",\"factoryfirmware\":\"$[/system routerboard get factory-firmware]\",\"currentfirmware\":\"$[/system routerboard get current-firmware]\",\"upgradefirmware\":\"$[/system routerboard get upgrade-firmware]\",\"licenselevel\":\"$[/system license get software-id]\",\"softwareid\":\"$[/system license get nlevel]\"}" url="https://provisioner.mypowercloud.net/mikrotik_api/onboard/adopt";
203 } on-error={
204 /log error "Failed to get L2TP create script - trying 1 more time"
205 }
206}
207/delay 6
208/if ($fail=0 && [/len [/file find name=sdnconf]] = 0) do={
209 /do {
210 /log info "Downloading L2TP management interface creation script";
211 /tool fetch http-method=post mode=https dst-path=sdnconf http-header-field="Content-Type: application/json" http-data="{\"authtoken\":\"$[/file get authtoken contents]\",\"sn\":\"$[/system routerboard get serial-number]\",\"name\":\"$[/system identity get name]\",\"uptime\":\"$[/system resource get uptime]\",\"version\":\"$[/system resource get version]\",\"buildtime\":\"$[/system resource get build-time]\",\"factorysoftware\":\"$[/system resource get factory-software]\",\"freememory\":\"$[/system resource get free-memory]\",\"totalmemory\":\"$[/system resource get total-memory]\",\"cpu\":\"$[/system resource get cpu]\",\"cpucount\":\"$[/system resource get cpu-count]\",\"cpufrequency\":\"$[/system resource get cpu-frequency]\",\"cpuload\":\"$[/system resource get cpu-load]\",\"freehddspace\":\"$[/system resource get free-hdd-space]\",\"totalhddspace\":\"$[/system resource get total-hdd-space]\",\"badblocks\":\"$[/system resource get bad-blocks]\",\"architecturename\":\"$[/system resource get architecture-name]\",\"boardname\":\"$[/system resource get board-name]\",\"platform\":\"$[/system resource get platform]\",\"routerboard\":\"$[/system routerboard get routerboard]\",\"model\":\"$[/system routerboard get model]\",\"revision\":\"$[/system routerboard get revision]\",\"firmwaretype\":\"$[/system routerboard get firmware-type]\",\"factoryfirmware\":\"$[/system routerboard get factory-firmware]\",\"currentfirmware\":\"$[/system routerboard get current-firmware]\",\"upgradefirmware\":\"$[/system routerboard get upgrade-firmware]\",\"licenselevel\":\"$[/system license get software-id]\",\"softwareid\":\"$[/system license get nlevel]\"}" url="https://provisioner.mypowercloud.net/mikrotik_api/onboard/adopt";
212 } on-error={
213 /log error "Failed to get L2TP create script - setup aborted"
214 /global fail 1;
215 }
216}
217/delay 6
218/if ($fail=0) do={
219 /do {
220 /log info "Add a scheduler to import the sdnconf file after reboot";
221 /system scheduler add interval=0 name=sdnconf on-event=":delay 5;\r\n\n/import file-name=sdnconf;\r\n/" policy=ftp,reboot,read,write,policy,test,password start-date=jan/01/1970 start-time=startup;
222 } on-error={
223 /log error "Failed to create SDN conf import scheduler";
224 /global fail 1;
225 }
226}
227/delay 2;
228/if ($fail=0) do={
229 /do {
230 /user remove [find where name="powercloud"];
231 } on-error={
232 /log error "Failed to set service defaults"
233 /global fail 1;
234 }
235 /do {
236 /log info "Creating powercloud master user and set password";
237 /user add name=powercloud password=[/file get passwd contents] group=full;
238 } on-error={
239 /log error "Failed to create powercloud user";
240 /global fail 1;
241 }
242}
243/delay 2;
244/if ($fail=0) do={
245 /do {
246 /for j from=1 to=4 step=1 do={
247 /for i from=2000 to=50 step=-400 do={
248 /beep frequency=$i length=11ms;
249 /delay 11ms;
250 }
251 /for i from=800 to=2000 step=400 do={
252 /beep frequency=$i length=11ms;
253 /delay 11ms;
254 }
255 }
256 /log info "Initial setup succeeded - rebooting";
257 /if ($fail=0) do={
258 /do {
259 /log info "Remove all other user users";
260 /user remove [find where name!="powercloud"];
261 } on-error={
262 /log error "Failed to remove other users"
263 /global fail 1;
264 }
265 }
266 /system reboot;
267 } on-error={
268 /log error "Failed to make music, not a big deal"
269 }
270}
271/if ($fail=1) do={
272 /do {
273 /for t from=1 to=20 step=1 do={
274 /beep frequency=40 length=33ms;
275 /delay 33ms;
276 /delay 55ms;
277 }
278 /log info "Initial setup FAILED";
279 } on-error={
280 /log info "Script failed - rebooting"
281 }
282}?^@^@^@^@^@^@^G:?^^Df.^F???^^@^@^@^@^@^@^@^@^D^@nova?^@^@^@^@^@^@^G:?^^Df.^F???^^@^@^@^@^@^@^@^@^H^@nova/lib?^@^@^@^@^@^@^G:?^^Df.^F???^^@^@^@^@^@^@^@^@^P^@nova/lib/console??^@^@^@^@^@^@??^^Df.^F???^^@^@^@^@{^A^@^@^Y^@nova/lib/console/logo.txt ____ ________ __
283 / __ \____ _ _____ _____/ ____/ /___ __ ______/ /
284 / /_/ / __ \ | /| / / _ \/ ___/ / / / __ \/ / / / __ /
285 / ____/ /_/ / |/ |/ / __/ / / /___/ / /_/ / /_/ / /_/ /
286 /_/ \____/|__/|__/\___/_/ \____/_/\____/\__,_/\__,_/
287
288 To auto-provision, run: /system reset-configuration
289
290
291?^@^@^@^@^@^@^G:?^^Df.^F???^^@^@^@^@^@^@^@^@^H^@nova/etc??^@^@^@^@^@^@??^^Df.^F???^^@^@^@^@^^^@^@^@^L^@nova/etc/urlhttps://www.mypowercloud.net/
292??^@^@^@^@^@^@??^^Df.^F???^^@^@^@^@^O^@^@^@
293^@nova/etc/logoPowerCloud-SDN
294??^@^@^@^@^@^@??^^Df.^F???^^@^@^@^@1^@^@^@^S^@nova/etc/manual-urlhttps://help.mypowercloud.net/support/solutions
295
296?^@^@^@^@^@^@??^^Df.^F???^^@^@^@^@^@^@^@^@^G^@BRANDED??^@^@^@^@^@^@??^^Df.^F???^^@^@^@^@?^@^@^H^@info.xml<?xml version="1.0" ?>
297<package name="PowerCloud-SDN">
298<description>Provides logos for PowerCloud-SDN</description>
299<dependencies><package name="system" version="5.0"/></dependencies>
300</package>
301
302?^@^@^@^@^@^@?c?^^Df.^F???^^@^@^@^@^@^@^@^@^C^@etc??^@^@^@^@^@^@?c?^^Df.^F???^^@^@^@^@^@^@^@^@^W^@etc/snmp_no_sysObjectID??^@^@^@^@^@^@??^^Df.^F???^^@^@^@^@^O^@^@^@ ^@etc/identPowerCloud-SDN
303?^@^@^@^@^@^@^X:?^^Df.^F???^^@^@^@^@^@^@^@^@^D^@home?^@^@^@^@^@^@7A?^^Df.^F???^^@^@^@^@^@^@^@^@^H^@home/web