SHOW:
|
|
- or go back to the newest paste.
1 | currentUser=nil | |
2 | ||
3 | function os.pullEvent() | |
4 | local event, p1, p2, p3, p4, p5 = os.pullEventRaw() | |
5 | if event == "terminate" and termDisabled then | |
6 | ||
7 | end | |
8 | return event, p1, p2, p3, p4, p5 | |
9 | end | |
10 | ||
11 | ||
12 | ||
13 | ||
14 | if not fs.exists("accountDatabase") then | |
15 | shell.run("pastebin","get","kERnnPN8","accountDatabase") | |
16 | end | |
17 | ||
18 | os.loadAPI("accountDatabase") | |
19 | ||
20 | - | defaultPrograms={["UpdateOS"]="vFjP50hm", ["MediaPl."]="7MfZH0jH", ["FileMgr"]="zyAKNJwB", ["LuaInt"]="RBMbTH66", ["LeNet"]="EQgHhsAA"} |
20 | + | defaultPrograms={["UpdateOS"]="vFjP50hm", ["MediaPl."]="7MfZH0jH", ["FileMgr"]="zyAKNJwB", ["LuaInt"]="RBMbTH66", ["LuaIDE"]="6WpGXY09", ["LeNet"]="EQgHhsAA"} |
21 | ||
22 | function drawLogin() | |
23 | termDisabled=true | |
24 | username={} | |
25 | pass={} | |
26 | term.setTextColor(2) | |
27 | loginDrawn=true | |
28 | term.setBackgroundColor(8) | |
29 | term.clear() | |
30 | screenX,screenY=term.getSize() | |
31 | term.setCursorPos(screenX/2-10,screenY/2-5) | |
32 | term.setBackgroundColor(128) | |
33 | term.write("Login to Aperture OS") | |
34 | term.setBackgroundColor(256) | |
35 | for i=1,7 do | |
36 | term.setCursorPos(screenX/2-10,(screenY/2-5)+i) | |
37 | term.write(" ") | |
38 | end | |
39 | term.setBackgroundColor(1) | |
40 | term.setCursorPos(screenX/2-2,(screenY/2-2)) | |
41 | term.write(" ") | |
42 | term.setCursorPos(screenX/2-2,(screenY/2+0)) | |
43 | term.write(" ") | |
44 | term.setBackgroundColor(256) | |
45 | term.setCursorPos(screenX/2-7,(screenY/2-2)) | |
46 | term.write("User") | |
47 | term.setCursorPos(screenX/2-7,(screenY/2+0)) | |
48 | term.write("Pass") | |
49 | term.setCursorPos(screenX/2+4,screenY/2+2) | |
50 | term.setBackgroundColor(128) | |
51 | term.write("Login") | |
52 | term.setBackgroundColor(1) | |
53 | term.setTextColor(32768) | |
54 | term.setCursorPos(screenX/2-2,(screenY/2-2)) | |
55 | term.setCursorBlink(true) | |
56 | ||
57 | end | |
58 | ||
59 | function loginEvents() | |
60 | repeat | |
61 | event,v1,v2,v3,v4,v5=os.pullEvent() | |
62 | if event=="char" then | |
63 | loginType(v1) | |
64 | elseif event=="mouse_click" then | |
65 | ||
66 | screenX,screenY=term.getSize() | |
67 | button=v1 | |
68 | x=v2 | |
69 | y=v3 | |
70 | if button==1 then | |
71 | if x>=screenX/2-3 and x< screenX/2+6 and y==math.floor(screenY/2-2) then | |
72 | term.setCursorPos(screenX/2-2+#username,(screenY/2-2)) | |
73 | elseif x>=screenX/2-3 and x< screenX/2+6 and y==math.floor(screenY/2+0) then | |
74 | term.setCursorPos(screenX/2-2+#pass,(screenY/2+0)) | |
75 | elseif x>=screenX/2+4 and x<screenX/2+9 and y==math.floor(screenY/2+2) then | |
76 | serialiseLogin() | |
77 | end | |
78 | end | |
79 | elseif event=="key" then | |
80 | key=v1 | |
81 | if key==14 then | |
82 | loginBackspace() | |
83 | elseif key==15 then | |
84 | loginTab() | |
85 | end | |
86 | end | |
87 | until currentUser~=nil | |
88 | end | |
89 | ||
90 | function serialiseLogin() | |
91 | userString="" | |
92 | passString="" | |
93 | for id,letter in ipairs(username) do | |
94 | userString=userString..letter | |
95 | end | |
96 | for id,letter in ipairs(pass) do | |
97 | passString=passString..letter | |
98 | end | |
99 | loggedIn=attemptLogin(userString,passString) | |
100 | if not loggedIn then | |
101 | oldX,oldY=term.getCursorPos() | |
102 | term.setCursorBlink(false) | |
103 | term.setCursorPos(screenX/2-9,screenY/2+5) | |
104 | term.setTextColor(16384) | |
105 | term.setBackgroundColor(32768) | |
106 | term.write("Incorrect Password!") | |
107 | sleep(1) | |
108 | term.setBackgroundColor(8) | |
109 | term.setCursorPos(screenX/2-9,screenY/2+5) | |
110 | term.write(" ") | |
111 | term.setCursorPos(oldX,oldY) | |
112 | term.setTextColor(32768) | |
113 | term.setCursorBlink(true) | |
114 | end | |
115 | end | |
116 | ||
117 | function attemptLogin(user,pass) | |
118 | password=accountDatabase.getData(user) | |
119 | if password==nil then | |
120 | passLength=string.len(pass) | |
121 | if passLength<8 then | |
122 | for i=1,8-passLength do | |
123 | pass=pass.." " | |
124 | end | |
125 | end | |
126 | accountDatabase.setData(user,pass) | |
127 | fs.makeDir("users/"..user) | |
128 | for id,paste in pairs(defaultPrograms) do | |
129 | if fs.exists(id)==false then | |
130 | term.setCursorPos(1000,1) | |
131 | shell.run("pastebin","get",paste,id) | |
132 | end | |
133 | fs.copy(id,"users/"..user.."/"..id) | |
134 | end | |
135 | login(user) | |
136 | return true | |
137 | else | |
138 | password=string.gsub(password," ","") | |
139 | password=string.gsub(password,"\n","") | |
140 | if password==pass then | |
141 | login(user) | |
142 | return true | |
143 | else | |
144 | return false | |
145 | end | |
146 | end | |
147 | end | |
148 | ||
149 | function login(user) | |
150 | currentUser=user | |
151 | term.setCursorBlink(false) | |
152 | loginDrawn=false | |
153 | currentDirectory="users/"..currentUser | |
154 | for id,paste in pairs(defaultPrograms) do | |
155 | if fs.exists(id)==false then | |
156 | term.setCursorPos(1000,1) | |
157 | shell.run("pastebin","get",paste,id) | |
158 | end | |
159 | if not fs.exists("users/"..user.."/"..id) then | |
160 | fs.copy(id,"users/"..user.."/"..id) | |
161 | end | |
162 | end | |
163 | drawDesktop() | |
164 | desktopEvents() | |
165 | end | |
166 | ||
167 | function loginType(char) | |
168 | x,y=term.getCursorPos() | |
169 | screenX,screenY=term.getSize() | |
170 | if y==math.floor(screenY/2+0) and #pass<=8 then | |
171 | writeChar="*" | |
172 | pass[#pass+1]=char | |
173 | elseif #username<8 then | |
174 | writeChar=char | |
175 | username[#username+1]=char | |
176 | end | |
177 | term.setBackgroundColor(1) | |
178 | term.write(writeChar) | |
179 | end | |
180 | ||
181 | function loginTab() | |
182 | x,y=term.getCursorPos() | |
183 | screenX,screenY=term.getSize() | |
184 | if y==screenY/2+0 then | |
185 | term.setCursorPos(screenX/2-2,(screenY/2-2)) | |
186 | else | |
187 | term.setCursorPos(screenX/2-2,(screenY/2+0)) | |
188 | end | |
189 | end | |
190 | ||
191 | function loginBackspace() | |
192 | x,y=term.getCursorPos() | |
193 | screenX,screenY=term.getSize() | |
194 | x,y=term.getCursorPos() | |
195 | if x>=screenX/2-2 then | |
196 | if y==screenY/2+4 then | |
197 | usernameOld=username | |
198 | username={} | |
199 | for id,letter in ipairs(usernameOld) do | |
200 | if id~=#usernameOld then | |
201 | username[#username+1]=letter | |
202 | end | |
203 | end | |
204 | else | |
205 | passOld=pass | |
206 | pass={} | |
207 | for id,letter in ipairs(passOld) do | |
208 | if id~=#passOld then | |
209 | pass[#pass+1]=letter | |
210 | end | |
211 | end | |
212 | end | |
213 | term.setBackgroundColor(1) | |
214 | x,y=term.getCursorPos() | |
215 | term.setCursorPos(x-1,y) | |
216 | term.write(" ") | |
217 | term.setCursorPos(x-1,y) | |
218 | end | |
219 | end | |
220 | ||
221 | function drawDesktop() | |
222 | if currentUser==nil then | |
223 | loginEvents() | |
224 | else | |
225 | screenX,screenY=term.getSize() | |
226 | term.setBackgroundColor(256) --Taskbar on top of the screen | |
227 | touchScreenTable={} | |
228 | term.clear() | |
229 | term.setCursorPos(1,1) | |
230 | term.setBackgroundColor(128) | |
231 | for i=1,screenX do | |
232 | term.setCursorPos(i,1) | |
233 | term.write(" ") | |
234 | --term.setCursorPos(i,2) | |
235 | --term.write(" ") | |
236 | end | |
237 | term.setCursorPos(1,1) | |
238 | term.setTextColor(1) | |
239 | term.setBackgroundColor(32) | |
240 | term.write("Aperture OS") | |
241 | touchScreenTable["menu"]={1,1,10,0,false,mainMenuFunction} | |
242 | term.setBackgroundColor(128) | |
243 | term.setCursorPos(screenX-10,1) | |
244 | term.write(currentUser) | |
245 | ||
246 | term.setBackgroundColor(256) --Programs section | |
247 | programsList=fs.list(currentDirectory) --Get the programs | |
248 | programs={} | |
249 | for id,program in ipairs(programsList) do | |
250 | programs[#programs+1]=program | |
251 | end | |
252 | term.setCursorPos(screenX-(screenX+10),5) | |
253 | programsTable={} | |
254 | screenX,screenY=term.getSize() | |
255 | pStart=screenX*0.75 | |
256 | pWidth=screenX*0.6 | |
257 | pTextLength=(pWidth-2)/3 | |
258 | term.setBackgroundColor(128) | |
259 | ||
260 | if currentDirectory~="users/"..currentUser then --Get directory and draw back button | |
261 | term.setBackgroundColor(128) | |
262 | term.setCursorPos(screenX-20,screenY*0.9) | |
263 | term.setTextColor(16384) | |
264 | term.write("Home directory") | |
265 | touchScreenTable["goToHome"]={screenX-20,screenY*0.9,screenX-6,5,false,backToMainDirectory} | |
266 | else | |
267 | touchScreenTable["goToHome"]=nil | |
268 | end | |
269 | ||
270 | for id,data in ipairs(programs) do | |
271 | if fs.isDir("users/"..currentUser.."/"..data) then --Draw programs | |
272 | term.setTextColor(16) | |
273 | shellRunner=false | |
274 | else | |
275 | term.setTextColor(32) | |
276 | shellRunner=true | |
277 | end | |
278 | rowID=math.ceil(id/3) | |
279 | collumnID=id-rowID*3 | |
280 | programsTable[data]={pStart+((collumnID)*pTextLength+((collumnID)*1)),screenY*0.3+rowID*2,pStart+((collumnID)*pTextLength+((collumnID)*1))+pTextLength,1,shellRunner} | |
281 | term.setCursorPos(pStart+((collumnID)*pTextLength+((collumnID)*1)),screenY*0.3+rowID*2) | |
282 | if string.len(data)<pTextLength then | |
283 | for i=1,pTextLength-string.len(data) do | |
284 | data=data.." " | |
285 | end | |
286 | end | |
287 | term.write(string.sub(data,1,pTextLength)) | |
288 | end | |
289 | term.setTextColor(1) | |
290 | term.setBackgroundColor(256) | |
291 | for id,data in pairs(programsTable) do | |
292 | touchScreenTable[id]=data | |
293 | end | |
294 | term.setBackgroundColor(256) | |
295 | term.setTextColor(1) | |
296 | term.setCursorPos(1,2) | |
297 | end | |
298 | end | |
299 | ||
300 | function relogin() | |
301 | currentUser=nil drawLogin() loginEvents() | |
302 | end | |
303 | ||
304 | function doDaShell() | |
305 | drawShell() | |
306 | inputShell() | |
307 | end | |
308 | ||
309 | function editFileFunction(id) | |
310 | shell.run("edit",currentDirectory.."/"..id) | |
311 | touchScreenTable={} | |
312 | fileManager() | |
313 | end | |
314 | ||
315 | function editFile() | |
316 | programsList=fs.list(currentDirectory) --Get the programs | |
317 | programs={} | |
318 | for id,program in ipairs(programsList) do | |
319 | programs[#programs+1]=program | |
320 | end | |
321 | term.setCursorPos(screenX-(screenX+10),5) | |
322 | programsTable={} | |
323 | screenX,screenY=term.getSize() | |
324 | pStart=screenX*0.75 | |
325 | pWidth=screenX*0.6 | |
326 | pTextLength=(pWidth-2)/3 | |
327 | term.setBackgroundColor(2) | |
328 | ||
329 | for id,data in ipairs(programs) do | |
330 | if fs.isDir("users/"..currentUser.."/"..data) then --Draw programs | |
331 | term.setTextColor(256) | |
332 | shellRunner=false | |
333 | else | |
334 | term.setTextColor(1) | |
335 | shellRunner=true | |
336 | end | |
337 | rowID=math.ceil(id/3) | |
338 | collumnID=id-rowID*3 | |
339 | programsTable[data]={pStart+((collumnID)*pTextLength+((collumnID)*1)),screenY*0.3+rowID*2,pStart+((collumnID)*pTextLength+((collumnID)*1))+pTextLength,1,false,editFileFunction} | |
340 | term.setCursorPos(pStart+((collumnID)*pTextLength+((collumnID)*1)),screenY*0.3+rowID*2) | |
341 | if string.len(data)<pTextLength then | |
342 | for i=1,pTextLength-string.len(data) do | |
343 | data=data.." " | |
344 | end | |
345 | end | |
346 | term.write(string.sub(data,1,pTextLength)) | |
347 | end | |
348 | term.setTextColor(1) | |
349 | term.setBackgroundColor(256) | |
350 | for id,data in pairs(programsTable) do | |
351 | touchScreenTable[id]=data | |
352 | end | |
353 | term.setBackgroundColor(256) | |
354 | term.setTextColor(1) | |
355 | term.setCursorPos(1,2) | |
356 | end | |
357 | ||
358 | function drawFrompastebin() | |
359 | touchScreenTable={} | |
360 | screenX,screenY=term.getSize() | |
361 | term.setTextColor(1) | |
362 | for i=1,5 do | |
363 | term.setCursorPos(screenX/2-5,i+screenY/2) | |
364 | term.setBackgroundColor(128) | |
365 | term.write(" ") | |
366 | end | |
367 | term.setCursorPos(screenX/2-4,1+screenY/2) | |
368 | term.write("Link ") | |
369 | term.setCursorPos(screenX/2-4,2+screenY/2) | |
370 | term.setBackgroundColor(1) | |
371 | term.write(" ") | |
372 | term.setCursorPos(screenX/2-4,3+screenY/2) | |
373 | term.setBackgroundColor(128) | |
374 | term.write("fileName") | |
375 | term.setCursorPos(screenX/2-4,4+screenY/2) | |
376 | term.setBackgroundColor(1) | |
377 | term.write(" ") | |
378 | term.setCursorPos(screenX/2-4,4+screenY/2) | |
379 | term.setBackgroundColor(1) | |
380 | term.setTextColor(32768) | |
381 | term.setCursorPos(screenX/2-4,2+screenY/2) | |
382 | link=read() | |
383 | term.setCursorPos(screenX/2-4,4+screenY/2) | |
384 | fileName=read() | |
385 | term.setCursorPos(screenX/2-10,screenY/2) | |
386 | term.setBackgroundColor(256) | |
387 | shell.run("pastebin","get",link,currentDirectory.."/"..fileName) | |
388 | fileManager() | |
389 | end | |
390 | ||
391 | function drawNewFile() | |
392 | touchScreenTable={} | |
393 | screenX,screenY=term.getSize() | |
394 | term.setTextColor(1) | |
395 | for i=1,5 do | |
396 | term.setCursorPos(screenX/2-5,i+screenY/2) | |
397 | term.setBackgroundColor(128) | |
398 | term.write(" ") | |
399 | end | |
400 | term.setCursorPos(screenX/2-4,2+screenY/2) | |
401 | term.setBackgroundColor(128) | |
402 | term.write("fileName") | |
403 | term.setCursorPos(screenX/2-4,3+screenY/2) | |
404 | term.setBackgroundColor(1) | |
405 | term.write(" ") | |
406 | term.setBackgroundColor(1) | |
407 | term.setTextColor(32768) | |
408 | term.setCursorPos(screenX/2-4,3+screenY/2) | |
409 | fileName=read() | |
410 | term.setCursorPos(screenX/2-20,screenY/2) | |
411 | term.setBackgroundColor(128) | |
412 | editFileFunction(fileName) | |
413 | fileManager() | |
414 | end | |
415 | ||
416 | function newFile() | |
417 | touchScreenTable={} | |
418 | screenX,screenY=term.getSize() | |
419 | term.setTextColor(1) | |
420 | for i=1,5 do | |
421 | term.setCursorPos(screenX/2-5,i+screenY/2) | |
422 | term.setBackgroundColor(128) | |
423 | term.write(" ") | |
424 | end | |
425 | term.setCursorPos(screenX/2-4,2+screenY/2) | |
426 | term.setBackgroundColor(8) | |
427 | term.write("Create ") | |
428 | term.setCursorPos(screenX/2-4,4+screenY/2) | |
429 | term.write("Pastebin") | |
430 | touchScreenTable['createNewFile']={screenX/2-4,2+screenY/2+2,screenX/2+4,1,false,drawFrompastebin} | |
431 | touchScreenTable['fileFromPastebin']={screenX/2-4,2+screenY/2,screenX/2+4,1,false,drawNewFile} | |
432 | ||
433 | end | |
434 | ||
435 | function deleteFile(fileName) | |
436 | fs.delete(currentDirectory.."/"..fileName) | |
437 | touchScreenTable={} | |
438 | fileManager() | |
439 | end | |
440 | ||
441 | function delFile() | |
442 | programsList=fs.list(currentDirectory) --Get the programs | |
443 | programs={} | |
444 | for id,program in ipairs(programsList) do | |
445 | programs[#programs+1]=program | |
446 | end | |
447 | term.setCursorPos(screenX-(screenX+10),5) | |
448 | programsTable={} | |
449 | screenX,screenY=term.getSize() | |
450 | pStart=screenX*0.75 | |
451 | pWidth=screenX*0.6 | |
452 | pTextLength=(pWidth-2)/3 | |
453 | term.setBackgroundColor(16384) | |
454 | ||
455 | for id,data in ipairs(programs) do | |
456 | if fs.isDir("users/"..currentUser.."/"..data) then --Draw programs | |
457 | term.setTextColor(256) | |
458 | shellRunner=false | |
459 | else | |
460 | term.setTextColor(1) | |
461 | shellRunner=true | |
462 | end | |
463 | rowID=math.ceil(id/3) | |
464 | collumnID=id-rowID*3 | |
465 | programsTable[data]={pStart+((collumnID)*pTextLength+((collumnID)*1)),screenY*0.3+rowID*2,pStart+((collumnID)*pTextLength+((collumnID)*1))+pTextLength,1,false,deleteFile} | |
466 | term.setCursorPos(pStart+((collumnID)*pTextLength+((collumnID)*1)),screenY*0.3+rowID*2) | |
467 | if string.len(data)<pTextLength then | |
468 | for i=1,pTextLength-string.len(data) do | |
469 | data=data.." " | |
470 | end | |
471 | end | |
472 | term.write(string.sub(data,1,pTextLength)) | |
473 | end | |
474 | term.setTextColor(1) | |
475 | term.setBackgroundColor(256) | |
476 | for id,data in pairs(programsTable) do | |
477 | touchScreenTable[id]=data | |
478 | end | |
479 | term.setBackgroundColor(256) | |
480 | term.setTextColor(1) | |
481 | term.setCursorPos(1,2) | |
482 | end | |
483 | ||
484 | function backFile() | |
485 | touchScreenTable={} | |
486 | drawDesktop() | |
487 | end | |
488 | ||
489 | function fileManager() | |
490 | touchScreenTable={} | |
491 | term.setTextColor(1) | |
492 | term.setBackgroundColor(256) | |
493 | term.clear() | |
494 | term.setBackgroundColor(2) | |
495 | for i=1,3 do | |
496 | term.setCursorPos(3,i+1) | |
497 | term.write(" ") | |
498 | if i==2 then | |
499 | term.setCursorPos(3,i+1) | |
500 | term.write(" edit ") | |
501 | end | |
502 | end | |
503 | term.setBackgroundColor(32) | |
504 | for i=1,3 do | |
505 | term.setCursorPos(3,i+5) | |
506 | term.write(" ") | |
507 | if i==2 then | |
508 | term.setCursorPos(3,i+5) | |
509 | term.write(" new ") | |
510 | end | |
511 | end | |
512 | term.setBackgroundColor(16384) | |
513 | for i=1,3 do | |
514 | term.setCursorPos(3,i+9) | |
515 | term.write(" ") | |
516 | if i==2 then | |
517 | term.setCursorPos(3,i+9) | |
518 | term.write(" delete ") | |
519 | end | |
520 | end | |
521 | ||
522 | term.setBackgroundColor(128) | |
523 | for i=1,3 do | |
524 | term.setCursorPos(3,i+13) | |
525 | term.write(" ") | |
526 | if i==2 then | |
527 | term.setCursorPos(3,i+13) | |
528 | term.write(" back ") | |
529 | end | |
530 | end | |
531 | ||
532 | touchScreenTable["edit"]={2,2,11,3,false,editFile} | |
533 | touchScreenTable["new"]={2,6,11,3,false,newFile} | |
534 | touchScreenTable["del"]={2,10,11,3,false,delFile} | |
535 | touchScreenTable["back"]={2,14,11,3,false,backFile} | |
536 | ||
537 | --drawDesktop() | |
538 | end | |
539 | ||
540 | mainMenuItems={ | |
541 | ["Shut down"]={['c']=16384,['f']=os.shutdown}, | |
542 | ["Reboot"]={['c']=32,['f']=os.reboot}, | |
543 | ["Log off"]={['c']=2,['f']=relogin}, | |
544 | ["BASH Shell"]={['c']=8,['f']=doDaShell}, | |
545 | ["Programs"]={['c']=8192,['f']=fileManager}, | |
546 | } | |
547 | ||
548 | function mainMenuFunction() | |
549 | if mainmenuShown==nil then | |
550 | mainmenuShown=false | |
551 | end | |
552 | ||
553 | if mainmenuShown==true then | |
554 | touchScreenTable={} | |
555 | drawDesktop() | |
556 | else | |
557 | term.setBackgroundColor(128) | |
558 | for i=1,6 do | |
559 | term.setCursorPos(1,i+1) | |
560 | term.write(" ") | |
561 | end | |
562 | term.setBackgroundColor(128) | |
563 | i=2 | |
564 | for name,data in pairs(mainMenuItems) do | |
565 | term.setCursorPos(1,i) | |
566 | term.setTextColor(data['c']) | |
567 | nameLength=string.len(name) | |
568 | if nameLength<9 then | |
569 | for g=1,9-nameLength do | |
570 | name=name.." " | |
571 | end | |
572 | end | |
573 | term.write(name) | |
574 | if data['f']==nil then | |
575 | touchScreenTable[name]={1,i,9,0,true} | |
576 | else | |
577 | touchScreenTable[name]={1,i,9,0,false,data['f']} | |
578 | end | |
579 | i=i+1 | |
580 | end | |
581 | end | |
582 | mainmenuShown=not mainmenuShown | |
583 | end | |
584 | ||
585 | function backToMainDirectory() | |
586 | currentDirectory="users/"..currentUser | |
587 | print("Main Directory") | |
588 | drawDesktop() | |
589 | end | |
590 | ||
591 | function desktopEvents() | |
592 | while true do | |
593 | event,v1,v2,v3,v4,v5=os.pullEvent() | |
594 | if event=="mouse_click" then | |
595 | button=v1 | |
596 | x=v2 | |
597 | y=v3 | |
598 | for id,data in pairs(touchScreenTable) do | |
599 | if button==1 and x>=math.floor(data[1]) and x<=math.floor(data[3]) and y>=math.floor(data[2]) and y<=math.floor(data[2]+data[4]) then | |
600 | if data[5] then | |
601 | termDisabled=false | |
602 | shell.run(currentDirectory.."/"..id) | |
603 | drawDesktop() | |
604 | termDisabled=true | |
605 | elseif fs.isDir(currentDirectory.."/"..id) then | |
606 | currentDirectory="users/"..currentUser.."/"..id | |
607 | drawDesktop() | |
608 | termDisabled=true | |
609 | else | |
610 | termDisabled=false | |
611 | data[6](id) | |
612 | termDisabled=true | |
613 | end | |
614 | ||
615 | end | |
616 | end | |
617 | elseif event=="char" then | |
618 | ||
619 | elseif event=="key" then | |
620 | ||
621 | end | |
622 | end | |
623 | end | |
624 | ||
625 | --NanoShell | |
626 | ||
627 | function drawShell() | |
628 | term.setBackgroundColor(128) | |
629 | for i=2,19 do | |
630 | term.setCursorPos(1,i) | |
631 | if i==2 then | |
632 | term.write(" BASH Shell ") | |
633 | else | |
634 | term.write(" ") | |
635 | end | |
636 | end | |
637 | term.setBackgroundColor(32768) | |
638 | for i=3,18 do | |
639 | term.setCursorPos(2,i) | |
640 | term.write(" ") | |
641 | end | |
642 | term.setCursorPos(2,3) | |
643 | term.setTextColor(1) | |
644 | end | |
645 | ||
646 | function inputShell() | |
647 | term.setCursorPos(2,3) | |
648 | term.setTextColor(1) | |
649 | repeat | |
650 | command=read() | |
651 | x,y=term.getCursorPos() | |
652 | ||
653 | if string.find(command,"edit")~=nil then | |
654 | command=string.gsub(command,"edit ","edit "..currentDirectory.."/") | |
655 | term.write(command) | |
656 | elseif string.find(command,"list")~=nil then | |
657 | command=string.gsub(command,"list","list "..currentDirectory) | |
658 | elseif string.find(command,"lua")~=nil then | |
659 | command=nil | |
660 | print("Access Denied") | |
661 | end | |
662 | if string.find(command,"edit")~=nil then | |
663 | shell.run(command) | |
664 | term.setCursorPos(2,y+1) | |
665 | drawDesktop() | |
666 | drawShell() | |
667 | elseif string.find(command,"list")~=nil then | |
668 | programs=fs.list(currentDirectory) | |
669 | ox,oy=term.getCursorPos() | |
670 | term.setCursorPos(2,oy) | |
671 | for id,program in pairs(programs) do | |
672 | term.write(program.." ") | |
673 | end | |
674 | term.setCursorPos(2,oy+1) | |
675 | elseif command~=nil and command~="stop" and fs.exists(currentDirectory.."/"..command) then | |
676 | returned=shell.run(currentDirectory.."/"..command) | |
677 | term.setCursorPos(2,y+1) | |
678 | else | |
679 | if y>=17 then | |
680 | drawShell() | |
681 | term.setCursorPos(2,3) | |
682 | else | |
683 | term.setCursorPos(2,y) | |
684 | term.write("No such program") | |
685 | term.setCursorPos(2,y+1) | |
686 | end | |
687 | end | |
688 | ||
689 | until command=="stop" | |
690 | drawDesktop() | |
691 | end | |
692 | ||
693 | function startOS() | |
694 | - | drawLogin() |
694 | + | user = Utente |
695 | - | loginEvents() |
695 | + | pass = proprietario |
696 | drawDesktop() | |
697 | end | |
698 | ||
699 | startOS() |