-
Notifications
You must be signed in to change notification settings - Fork 5
/
minifoxos.src
131 lines (122 loc) · 3.83 KB
/
minifoxos.src
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
minifox=function(shell,user)
import_code("/root/minifoxcmds")
globals.origShell=0
globals.clipboard=0
shelltype=typeof(shell)
if shelltype == "shell" then
comp=shell.host_computer
else
comp=shell
end if
globals.xuser=user
globals.rfile=comp.File("/root")
if xuser == "root" then globals.xpath="/root" else globals.xpath="/home/"+xuser
if not comp.File(xpath) then globals.xpath="/"
getPath=function(path)
path=path.split("/")
cpath=xpath.split("/")
if cpath.join("/") == "/" then cpath=[""]
if path[0] == "" then cpath=[""]
if path[0] == "#" and home != "/" then cpath=home.split("/")
for p in path
if p == "" then continue
if p == "#" then continue
if p == "." then
check=null
if shelltype == "file" then check=getFile((cpath+[p]).join("/")) else check=comp.File((cpath+[p]).join("/"))
if not check then continue
end if
if p == ".." then
cpath.pop
continue
end if
cpath.push(p)
end for
cpath=cpath.join("/")
if cpath == "" then cpath="/"
return cpath
end function
print("<color=#6a855e>-={ miniFoxOS }=-</color>")
print("<color=#6a855e>Type ""help"" for commands list")
fssh=function()
while 1
shelltype=typeof(shell)
if shelltype == "shell" then
comp=shell.host_computer
sstat="Shell"
else
comp=shell
sstat="Computer"
end if
pubip=comp.public_ip
locip=comp.local_ip
display="\n<color=#445239>[</color><color=#6a855e>"+sstat+"</color><color=#445239>] [</color><color=#6a855e>"+locip+"</color><color=#445239>]</color>"
if xuser == "root" then home="/root" else home="/home/"+xuser
if not comp.File(home) then home="/"
displaypath=xpath
if home != "/" then
displaypath=xpath.split("/")[:home.split("/").len].join("/")
if displaypath == home then displaypath="~"+([""]+xpath.split("/")[home.split("/").len:]).join("/") else displaypath=xpath
end if
display=display+"\n<color=#445239>[</color><color=#6A855E>"+xuser+"@"+pubip+"</color><color=#445239>:</color><color=#6A855E>"+displaypath+"</color><color=#445239>]</color><color=white>~$ "
pipe=[]
prompt=[]
next=[]
prompt=user_input(display).split(" ")
if prompt[0] == "|" then continue
if prompt.indexOf("|") >= 0 then
prompt.push("|")
while prompt.len
pipe.push(prompt[:prompt.indexOf("|")])
prompt=prompt[prompt.indexOf("|"):][1:]
end while
else
pipe.push(prompt[0:])
end if
while pipe.len
dbfile=null
shelltype=typeof(shell)
if shelltype == "shell" then
comp=shell.host_computer
else if shelltype == "computer" then
comp=shell
end if
pubip=comp.public_ip
locip=comp.local_ip
prompt=pipe.pull
if next.len then prompt.push(next.pull)
if prompt[0] == "" or prompt[0] == "0" or not prompt[0] then continue
i=0
for el in prompt
if el == "" then prompt[i]=0
i=i+1
end for
if prompt[0] == "!!" then prompt=previous
previous=prompt
args=prompt[1:]
comm=prompt[0]
if comm == "exit" then return "exit"
if cmds.hasIndex(comm) then
f=@cmds[comm]
if clipboard then
for inp in args
if typeof(clipboard) == "string" and inp == "copyv" then args[args.indexOf(inp)] = clipboard
if typeof(clipboard) == "map" and clipboard.hasIndex(inp) then args[args.indexOf(inp)] = clipboard[inp]
end for
end if
out=f(args)
if out.bool == 1 then
if pipe.len then next.push(out.out) else print("<color=#6A855E>:> "+out.out+"</color>")
else if out.bool == 0 then
print("<color=#6A855E>:> "+out.err+"</color>")
break
end if
if out.bool == 3 then break
end if
end while
end while
end function
while 1
if fssh == "exit" then return
end while
end function