def check(switch): if not files.isfile("/proc/" + str(switch)): colors.show("/proc/" + str(switch), "ok-endswitch", "") colors.show("", "poweroff", "") sys.exit(0) else: if files.isfile("/proc/info/sp"): files.remove("/proc/info/sp") files.write("/proc/info/sp", str(switch))
def shut(): colors.show('', 'ok', 'Closing the switched process ...') if files.isfile("/proc/selected"): files.remove("/proc/selected") process.end(int(files.readall("/proc/info/sp"))) if files.readall("/proc/info/su") == "0": if files.isdir("/desk/guest"): files.removedirs("/desk/guest") if files.isdir("/tmp"): files.removedirs("/tmp") files.mkdir("/tmp") if files.isfile("/proc/selected"): files.remove("/proc/selected") process.endall()
def cut(src, dest): su = files.readall("/proc/info/su") if permissions.check(files.output(src), "r", su) and permissions.check( files.output(src), "w", su): if isfile(src): if permissions.check(files.output(dest), "w", su): if files.isdir(dest): colors.show("libabr.file.cut", "fail", dest + ": dest is a directory.") else: perm = permissions.get_permissions(files.output(src)) control.write_record(files.output(dest), perm, "/etc/permtab") files.cut(src, dest) else: colors.show("libabr.file.cut", "perm", "") elif isdir(src): if permissions.check(files.output(dest), "w", su): if files.isfile(dest): colors.show("libabr.file.cut", "fail", dest + ": dest is a file.") else: perm = permissions.get_permissions(files.output(src)) control.write_record(files.output(dest), perm, "/etc/permtab") files.cutdir(src, dest) else: colors.show("libabr.file.cut", "perm", "") else: colors.show("libabr.file.cut", "fail", src + ": source not found.") else: colors.show("libabr.file.cut", "perm", "")
def new(user, code): colors.show('', 'ok', 'Switching a new process ...') if files.isfile("/proc/selected"): files.remove("/proc/selected") if user == "guest": sub.call(['./' + boot, 'user', 'guest']) else: sub.call(['./' + boot, 'user', user, code])
def get_style (): if not files.isfile("/proc/id/desktop"): style = control.read_record("style", "/etc/color") return style else: return ""
def get_bgcolor (): if not files.isfile("/proc/id/desktop"): bgcolor = control.read_record("bgcolor", "/etc/color") return bgcolor else: return ""
def udel(input_username, user): ## Check not exists user account ## if input_username == user: colors.show("udel", "fail", input_username + ": cannot remove switched user.") else: if permissions.check_root(user): if not files.isfile("/etc/users/" + input_username): colors.show("udel", "fail", input_username + ": user not found.") else: if input_username == "root": colors.show("udel", "fail", input_username + ": is a permanet user.") else: hashname = hashlib.sha3_256(str(input_username).encode( )).hexdigest() ## Create hashname username = control.read_record( "username", "/etc/users/" + input_username) if not hashname == username: colors.show("udel", "fail", input_username + ": user not found.") else: files.remove("/etc/users/" + input_username) if files.isdir('/desk/' + input_username): files.removedirs("/desk/" + input_username) colors.show( '', 'ok', "Remove '" + input_username + "' user account.") else: colors.show("udel", "perm", "")
def isfile(name): su = files.readall("/proc/info/su") if permissions.check(files.output(name), "r", su): return files.isfile(name) else: colors.show("libabr.file.isfile", "perm", "") return None
def endall(): if files.isfile("/proc/info/sp"): files.remove("/proc/info/sp") list = files.list("/proc") list.remove("id") list.remove("info") for i in list: files.remove("/proc/" + str(i))
def endall(): files.remove('/proc/id/desktop') colors.show('desktop','ok-endid','') colors.show('kernel',"poweroff","") listid = files.list ("/proc/id") for i in listid: if files.isfile('/proc/id/'+i): files.remove('/proc/id/'+i)
def build(name): if permissions.check_root(files.readall("/proc/info/su")): if not files.isfile(name + "/control/manifest"): colors.show("libpa.build", "fail", "cannot create archive package") clean() sys.exit(0) if not files.isdir(name + "/data"): files.mkdir(name + "/data") if not files.isdir(name + "/code"): files.mkdir(name + "/code") ## Remove cache archives ## if files.isdir('/app/cache/archives/code'): files.removedirs('/app/cache/archives/code') if files.isdir('/app/cache/archives/control'): files.removedirs('/app/cache/archives/control') if files.isdir('/app/cache/archives/data'): files.removedirs('/app/cache/archives/data') ## Copy dir ## files.copydir(name + '/data', '/app/cache/archives/data') files.copydir(name + '/code', '/app/cache/archives/code') files.copydir(name + '/control', '/app/cache/archives/control') ## Compile codes ## if files.isfile("/app/cache/archives/control/compile"): listcodes = control.read_list( "/app/cache/archives/control/compile") for i in listcodes: i = i.split(":") files.compile("/app/cache/archives/code/" + i[0], "/app/cache/archives/data/" + i[1]) ## Pack archives ## shutil.make_archive(files.input("/app/cache/archives/build/data"), "xztar", files.input('/app/cache/archives/data')) shutil.make_archive(files.input("/app/cache/archives/build/control"), "xztar", files.input('/app/cache/archives/control')) shutil.make_archive(files.input(name), "zip", files.input("/app/cache/archives/build")) files.cut(name + ".zip", name + ".pa") ## Unlock the cache ## else: colors.show("libpa.build", "perm", "")
def shutdown(): colors.show('', 'ok', 'Shutdowning the clouding system ...') if files.isdir("/desk/guest"): files.removedirs("/desk/guest") if files.isdir("/tmp"): files.removedirs("/tmp") files.mkdir("/tmp") if files.isfile("/proc/selected"): files.remove("/proc/selected") process.endall()
def start (id): ## Check exists ## if files.isfile ('/proc/id/'+id): pass colors.show (id,'ok-start','') ## Create id ## files.create ("/proc/id/"+id) ## Check desktop shortcut ## if files.isfile ("/usr/share/applications/"+id): files.copy ("/usr/share/applications/"+id+".desk","/proc/id/"+id) # Copy all informations about this GUI application ## Set default id ## files.write ("/proc/info/id",id)
def unsel(): select = files.readall("/proc/info/sel") if select == "/proc/" + files.readall("/proc/info/sp"): colors.show("unsel", "warning", "controller has already selected.") else: files.write("/proc/info/sel", "/proc/" + files.readall("/proc/info/sp")) if files.isfile("/proc/selected"): files.remove("/proc/selected") colors.show('', 'ok', 'Select the switched process as a controller.')
def uadd (input_username,user): if permissions.check_root(user): ## Check exists user ## if files.isfile("/etc/users/" + input_username) or input_username == "root": colors.show("uadd", "fail", input_username + ": user exists.") elif input_username == "guest": colors.show("uadd", "fail", "cannot create user account with guest username.") else: while True: password = getpass.getpass ('Enter a new password: '******'Confirm the new password: '******'\tEnter your first name []: ') last_name = input ('\tEnter your last name []: ') company = input ('\tEnter your company name []: ') birthday = input ('\tEnter your birthday []: ') gender = input ('\tChoose your gender [Male/Female/Other]: ') blood_type = input ('\tChoose your blood type [O/A/B/AB]: ') phone = input ('\tEnter your phone number []: ') website = input ('\tEnter your website address []: ') email = input ('\tEnter your email address []: ') hashname = hashlib.sha3_256(str(input_username).encode()).hexdigest() hashcode = hashlib.sha3_512(str(password).encode()).hexdigest() files.create ("/etc/users/"+input_username) control.write_record ("username",hashname,'/etc/users/'+input_username) control.write_record ("code",hashcode,'/etc/users/'+input_username) ## Add informations ## if not (first_name == None or first_name == ""): control.write_record("first_name", first_name, '/etc/users/' + input_username) if not (last_name == None or last_name == ""): control.write_record("last_name", last_name, '/etc/users/' + input_username) if not (company == None or company == ""): control.write_record ("company",company,'/etc/users/'+input_username) if not (birthday == None or birthday == ""): control.write_record("birthday", birthday, '/etc/users/' + input_username) if not (gender == None or gender == ""): control.write_record("gender", gender, '/etc/users/' + input_username) if not (blood_type == None or blood_type == ""): control.write_record("blood_type", blood_type, '/etc/users/' + input_username) if not (phone == None or phone == ""): control.write_record("phone", phone, '/etc/users/' + input_username) if not (website == None or website == ""): control.write_record("website", website, '/etc/users/' + input_username) if not (email == None or email == ""): control.write_record ("email",email,'/etc/users/'+input_username) permissions.create ("/desk/"+input_username,7,1,0,input_username) ## Create permission for another user colors.show('', 'ok', "Add '" + input_username + "' user account.") else: colors.show ("uadd","perm","")
def actions(self): if self.Env.objectName() == 'Login': username = self.leInput.text() ## Get username if self.Env.guest == 'Yes' and username == 'guest': self.Env.setCentralWidget( Desktop([self.Backend, self], username, '*')) elif not files.isfile('/etc/users/' + username): self.leInput.clear() self.leInput.setEnabled(False) message = res.get('@string/user_not_found') if not message == None: message = message.replace("{0}", username) self.leInput.setPlaceholderText(message) QTimer.singleShot(2500, self.clean) else: ## Check user ## hashname = hashlib.sha3_256( username.encode()).hexdigest() ## Get hashname name = control.read_record('username', '/etc/users/' + username) if not hashname == name: self.leInput.clear() self.leInput.setEnabled(False) message = res.get('@string/user_not_found') if not message == None: message = message.replace("{0}", username) self.leInput.setPlaceholderText(message) QTimer.singleShot(2500, self.clean) else: ## Setting up switched user ## self.Env.setCentralWidget( Enter([self.Backend, self], username)) ## Switch user elif self.Env.objectName() == 'Enter': username = self.Env.username password = self.leInput.text() ## Check password ## hashcode = hashlib.sha3_512( password.encode()).hexdigest() ## Create hashcode for password code = control.read_record('code', '/etc/users/' + username) if not code == hashcode: self.leInput.clear() self.leInput.setEnabled(False) message = res.get('@string/wrong_password') self.leInput.setPlaceholderText(message) QTimer.singleShot(2500, self.clean) else: self.Env.setCentralWidget( Desktop([self.Backend, self], username, password))
def help(helpfile): if helpfile == "": print(files.readall("/usr/share/helps/cmdall.txt")) else: if files.isfile("/usr/share/helps/commands/" + helpfile + ".txt"): print( files.readall("/usr/share/helps/commands/" + helpfile + ".txt")) else: print(files.readall("/usr/share/helps/cmdall.txt"))
def sel (database_name): if files.isfile(database_name): if permissions.check (files.output(database_name),"r",files.readall("/proc/info/su")): files.write("/proc/info/sel", database_name) files.create("/proc/selected") colors.show('', 'ok', "Select '" + database_name + "' controller.") else: colors.show ("sel","perm","") else: colors.show("sel", "fail", database_name + ": controller not found.")
def get_hide(): if not files.isfile("/proc/id/desktop"): style = control.read_record("style", "/etc/color") bgcolor = control.read_record("bgcolor", "/etc/color") fgcolor = int(control.read_record("bgcolor", "/etc/color")) + 10 strv = "\033[" + str(style) + ";" + str(fgcolor) + ";" + str(bgcolor) + "m" return strv else: return ""
def get_ok(): if not files.isfile("/proc/id/desktop"): style = control.read_record("ok_style", "/etc/color") fgcolor = control.read_record("ok_fgcolor", "/etc/color") bgcolor = control.read_record("ok_bgcolor", "/etc/color") strv = "\033[" + str(style) + ";" + str(fgcolor) + ";" + str(bgcolor) + "m" return strv else: return ""
def mv(src, dest): if files.isdir(src): if files.isfile(dest): colors.show("mv", "fail", dest + ": dest is a file.") else: if permissions.check( files.output(src), "r", files.readall("/proc/info/su")) and permissions.check( files.output(src), "w", files.readall("/proc/info/su")): if permissions.check(files.output(dest), "w", files.readall("/proc/info/su")): perm = permissions.get_permissions(files.output(src)) control.write_record(files.output(dest), perm, "/etc/permtab") files.copydir(src, dest) files.removedirs(src) else: colors.show("mv", "perm", "") else: colors.show("mv", "perm", "") elif files.isfile(src): if files.isdir(dest): colors.show("mv", "fail", dest + ": dest is a directory.") else: if permissions.check( files.output(src), "r", files.readall("/proc/info/su")) and permissions.check( files.output(src), "w", files.readall("/proc/info/su")): if permissions.check(files.output(dest), "w", files.readall("/proc/info/su")): perm = permissions.get_permissions(files.output(src)) control.write_record(files.output(dest), perm, "/etc/permtab") files.copy(src, dest) files.remove(src) else: colors.show("mv", "perm", "") else: colors.show("mv", "perm", "") else: colors.show("mv", "fail", src + ": source not found.")
def reboot(): colors.show('', 'ok', 'Rebooting the clouding system ...') if files.isfile("/proc/selected"): files.remove("/proc/selected") colors.show("kernel", "reboot", "") if files.isdir("/desk/guest"): files.removedirs("/desk/guest") if files.isdir("/tmp"): files.removedirs("/tmp") files.mkdir("/tmp") process.endall() sub.call(['./' + files.readall("/proc/info/boot")])
def check_root(user): if user == "root": if files.isfile("/etc/users/" + user): hashname = hashlib.sha3_256(str(user).encode()).hexdigest() username = control.read_record("username", "/etc/users/" + user) if (hashname == username): return True else: return False else: return False
def uinfo(input_username): enable_cli = control.read_record("enable_cli", "/etc/guest") if not (input_username == "guest" and enable_cli == "Yes"): if files.isfile("/etc/users/" + input_username): ## Get information from user database ## first_name = control.read_record("first_name", "/etc/users/" + input_username) last_name = control.read_record("last_name", "/etc/users/" + input_username) company = control.read_record("company", "/etc/users/" + input_username) birthday = control.read_record("birthday", "/etc/users/" + input_username) gender = control.read_record("gender", "/etc/users/" + input_username) blood_type = control.read_record("blood_type", "/etc/users/" + input_username) phone = control.read_record("phone", "/etc/users/" + input_username) website = control.read_record("website", "/etc/users/" + input_username) email = control.read_record("email", "/etc/users/" + input_username) ## Show it on screen ## bold = colors.color(1, colors.get_bgcolor(), colors.get_fgcolor()) if not (first_name == None or first_name == ""): print("\t First name: " + bold + first_name + colors.get_colors()) if not (last_name == None or last_name == ""): print("\t Last name: " + bold + last_name + colors.get_colors()) if not (company == None or company == ""): print("\t Company: " + bold + company + colors.get_colors()) if not (birthday == None or birthday == ""): print("\t Birthday: " + bold + birthday + colors.get_colors()) if not (gender == None or gender == ""): print("\t Gender: " + bold + gender + colors.get_colors()) if not (blood_type == None or blood_type == ""): print("\t BloodType: " + bold + blood_type + colors.get_colors()) if not (phone == None or phone == ""): print("\t Phone number: " + bold + phone + colors.get_colors()) if not (website == None or website == ""): print("\t Website: " + bold + website + colors.get_colors()) if not (email == None or email == ""): print("\tEmail address: " + bold + email + colors.get_colors()) else: colors.show("uinfo", "fail", input_username + ": user not found.")
def su(input_username, user): if files.isfile("/proc/selected"): files.remove("/proc/selected") if user == input_username: colors.show("su", "warning", user + " has already switched.") elif input_username == "guest": enable_cli = control.read_record("enable_cli", "/etc/guest") if enable_cli == "Yes": colors.show('', 'ok', "Switching '" + input_username + "' user account.") os.system("./" + files.readall("/proc/info/boot") + " user guest") else: colors.show(input_username, "fail", "user not found.") elif files.isfile("/etc/users/" + input_username): hashname = hashlib.sha3_256(str(input_username).encode()).hexdigest() username = control.read_record("username", "/etc/users/" + input_username) if hashname == username: input_password = getpass.getpass('Enter ' + input_username + '\'s password: '******'', 'ok', "Switching '" + input_username + "' user account ...") os.system("./" + files.readall("/proc/info/boot") + " user " + input_username + " " + input_password) else: colors.show("su", "fail", input_username + ": wrong password.") else: colors.show("su", "fail", input_username + " user not found.") else: colors.show("su", "fail", input_username + " user not found.")
def check_owner(filename, user): owner = get_owner(filename) if user == "guest": enable_cli = control.read_record("enable_cli", "/etc/guest") if enable_cli == "Yes": if owner == user: return True else: return False else: return False elif user == "root": if files.isfile("/etc/users/" + user): hashname = hashlib.sha3_256(str(user).encode()).hexdigest() username = control.read_record("username", "/etc/users/" + user) if (hashname == username): return True else: return False else: return False else: if files.isfile("/etc/users/" + user): hashname = hashlib.sha3_256(str(user).encode()).hexdigest() username = control.read_record("username", "/etc/users/" + user) if (hashname == username): if owner == user: return True elif owner == "guest": return True else: return False else: return False else: return False
def processor(): j = 0 if not files.isfile("/proc/" + str(0)): files.create("/proc/" + str(0)) j = j + 1 else: list = files.list("/proc") list.remove('id') list.remove('info') for i in list: if files.isfile("/proc/" + i): files.create("/proc/" + str(int(i) + 1)) j = j + 1 else: files.create("/proc/" + i) if files.isfile("/proc/1"): files.write("/proc/info/sp", str(j)) return j else: files.write("/proc/info/sp", str(j - 1)) return j - 1
def readall(name): su = files.readall("/proc/info/su") if permissions.check(files.output(name), "r", su): if files.isfile(name): file = open(files.input(name), "rb") check_bin = str(file.read()) file.close() if check_bin.__contains__("\\x00"): return check_bin else: return files.readall(name) else: colors.show("libabr.file.readall", "fail", name + ": file not found.") else: colors.show("libabr.file.readall", "perm", "")
def zip (src,dest): su = files.readall("/proc/info/su") ## Get user data base if permissions.check (files.output(src),"r",su): ## Check this user permissions if permissions.check (files.output(dest+".zip"),"r",su): ## Check read only permission if files.isdir (src): ## Check source dir exists if files.isdir (dest+".zip"): ## Check dest dir exists colors.show("libabr.archive.zip", "fail", dest+".zip" + ": dest is a directory.") else: shutil.make_archive(files.input(dest),"zip",files.input(src)) ## Create archive elif files.isfile (src): colors.show("libabr.archive.zip", "fail",src+ ": source is a file.") ## Show error for permissions else: colors.show("libabr.archive.zip", "fail",src+ ": source not found.") else: colors.show("libabr.archive.zip", "perm", "") else: colors.show ("libabr.archive.zip","perm","")
def gzip(src, dest): su = files.readall("/proc/info/su") if permissions.check(files.output(src), "r", su): if permissions.check(files.output(dest + ".gz"), "r", su): if files.isdir(src): if files.isdir(dest + ".gz"): colors.show("libabr.archive.xzip", "fail", dest + ".gz" + ": dest is a directory.") else: shutil.make_archive(files.input(dest), "gz", files.input(src)) elif files.isfile(src): colors.show("libabr.archive.gzip", "fail", src + ": source is a file.") else: colors.show("libabr.archive.gzip", "fail", src + ": source not found.") else: colors.show("libabr.archive.gzip", "perm", "") else: colors.show("libabr.archive.gzip", "perm", "")