def echo(): sysArr = sys.argv sysArr.pop(0) seperator = " " count = 0 count2 = 0 hasFound = 0 newEnvVarName = [] newEnvVarValue = [] for I in command.env_var_name: newEnvVarName.append(I.replace("\n", "")) for I in command.env_var_value: newEnvVarValue.append(I.replace("\n", "")) def update(): for I in sysArr: if (I.replace("%", "") in newEnvVarName and I.startswith("%")): Index = newEnvVarName.index(I.replace("%", "")) SysIndex = sysArr.index(I) sysArr[SysIndex] = str(newEnvVarValue[Index]) else: if (I.startswith("%")): Index2 = sysArr.index(I) sysArr[Index2] = "null" update() print(seperator.join(sysArr)) command.end(sys.argv)
def check_if_user_exists(): for user in users: if (sys.argv[1] == user.split("/")[2]): print("This user already exists!") end(sys.argv) else: pass
def check_if_file_exists_and_write(): if (os.path.isfile(currentDir + sys.argv[1])): print("This file already exists!") end(sys.argv) else: open(currentDir + sys.argv[1], "w").close() end(sys.argv)
def create_new_home_directory(name): print("Creating home directory `/home/" + name + "' ...") try: os.mkdir("LostiaFiles/root/home/" + name + "/") except FileExistsError: print("Home directory already exists!") end(sys.argv)
def read_and_write_from_source(): sourceData = open(command.CURDIR + source).read() with open(command.CURDIR + target, "w") as newFile: newFile.write(sourceData) newFile.close() command.end(sys.argv)
def cat(): if (os.path.exists(currentDir + sys.argv[1])): catFile = open(currentDir + sys.argv[1]).read() print(catFile) end(sys.argv) else: print("Directory does not exist") end(sys.argv)
def validate_permission(): if (len(sys.argv) == 3): if (sys.argv[2] in permissions and sys.argv[2] != "sysadmin" and len(sys.argv) == 3): return True else: print(sys.argv[2] + " is not a valid permission.") end(sys.argv) else: return None
def PlayAnimation(speed, files): try: Plane = open(files).read() PlaneFixed = Plane.split("END") os.system("clear") for I in PlaneFixed: print(I) time.sleep(speed) os.system("clear") print("Animation finished playing.") end() except: print("Failed to run animation")
def run_command(command): canContinue = False for I in modules: if (command.split(" ")[0] == I.replace("\n", "")): canContinue = True for I in coreCmd: if (command.split(" ")[0] == I.replace("\n", "")): canContinue = True if (canContinue == False): print("ash: command not found: " + command.split(" ")[0]) end(sys.argv) if (command.split(" ")[0] in hidden): print("ash: command not found: " + command.split(" ")[0]) end(sys.argv) elif (os.path.isfile("clib/" + command.split(" ")[0] + ".py")): pass else: print("ash: command not found: " + command.split(" ")[0]) end(sys.argv)
def deluser(): for user in keychain: foundUser = False userName = user.split("/")[2] if (sys.argv[1] == userName): foundUser = True else: newKeychain.append(user.replace("\n", "")) if (foundUser == True): print("Looking for files to backup/remove ...") if (len(sys.argv) >= 3 and "--backup-to" in sys.argv): index = 0 for I in sys.argv: if (sys.argv[index] == "--backup-to"): break index += 1 if (os.path.isdir(sys.argv[index + 1])): print("Backing up files to be removed to " + sys.argv[index + 1] + " ...") make_tarfile(sys.argv[index + 1] + sys.argv[1] + ".tar.gz", "LostiaFiles/root/home/" + sys.argv[1]) print("backup_name = " + sys.argv[index + 1] + sys.argv[1] + ".tar.gz") else: print("Backup directory does not exist") command.end(sys.argv) if (command.new_arg_parser("--remove-home")): print("Removing files ...") shutil.rmtree("LostiaFiles/root/home/" + sys.argv[1] + "/") print("Removing user `" + sys.argv[1] + "' ...") with open("LostiaFiles/keychain.keychain", "w") as newData: newData.writelines(newKeychain) newData.close() print("Done.") else: print("User not found")
def MainCommand(): if (len(sys.argv) > 1): if (os.path.exists("LostiaHelp/" + sys.argv[1] + ".help")): for I in Modules: if (I.replace("\n", "") == sys.argv[1]): Help = open("LostiaHelp/" + sys.argv[1] + ".help").readlines() for I in Help: print(I.replace("\n", "")) end(sys.argv) else: pass for I in CoreCommands: if (I.replace("\n", "") == sys.argv[1]): Help = open("LostiaHelp/" + sys.argv[1] + ".help").readlines() for I in Help: print(I.replace("\n", "")) end(sys.argv) else: pass print("No help entry for " + sys.argv[1]) end(sys.argv) else: print("No help entry for " + sys.argv[1]) end(sys.argv) else: folder = "LostiaHelp/" for file in os.listdir(folder): if (".help" in file): filepath = os.path.join(folder, file) f = open(filepath, 'r') print(file.replace(".help", "") + " - " + f.read()) f.close() else: pass end(sys.argv)
def check_if_user_exists_and_save_new_data(): users = open("LostiaFiles/keychain.keychain") loggedInAs = open("LostiaFiles/user.data") if(loggedInAs == "guest"): print("Permission Denied") end(sys.argv) newData = users.readlines() count = 0 for user in newData: if(sys.argv[1] == user.split("/")[2]): password = user.split("/")[3] ignorePassword = 0 if(loggedInAs == "systemadmin"): ignorePassword = 1 if(ignorePassword == 0): ask_for_password("passwd",user.split("/")[1],3,password) newPassword = getpass("Enter new LOSTIA password: "******"" or newPassword.split(" ")[0] == ""): print("New password cannot be empty") end(sys.argv) else: retype = getpass("Retype new LOSTIA password: "******"LostiaFiles/keychain.keychain","w") write.writelines(newData) write.close() print("passwd: password updated successfully") end(sys.argv) else: print("retyped password does not match") end(sys.argv) else: pass count+=1 print("User not found")
import os import sys from command import end, check_for_permission from datetime import datetime from getpass import getpass import shutil users = open("LostiaFiles/keychain.keychain").readlines() permissions = ["sysadmin", "user", "admin"] check_for_permission() if (len(sys.argv) < 2): print("adduser: user, permission [Optional]") end(sys.argv) def check_if_user_exists(): for user in users: if (sys.argv[1] == user.split("/")[2]): print("This user already exists!") end(sys.argv) else: pass def validate_permission(): if (len(sys.argv) == 3): if (sys.argv[2] in permissions and sys.argv[2] != "sysadmin" and len(sys.argv) == 3): return True
def check_if_has_arguments(): if (len(sys.argv) > 1): return True else: print("touch: filename") end(sys.argv)
def check_if_has_arguments(): if (len(sys.argv) > 1): return True else: print("deluser: user") command.end(sys.argv)
keychain = open("LostiaFiles/keychain.keychain").readlines() def check_if_has_arguments(): if (len(sys.argv) > 1): return True else: print("deluser: user") command.end(sys.argv) if (currentUser == "systemadmin"): pass else: print("deluser: Only root may remove a user from Ash ") command.end(sys.argv) newKeychain = [] check_if_has_arguments() if (sys.argv[1] == "systemadmin"): print("deluser: Cannot target this user") command.end(sys.argv) def deluser(): for user in keychain: foundUser = False userName = user.split("/")[2] if (sys.argv[1] == userName): foundUser = True
def check_if_has_arguments(): if(len(sys.argv)> 1): return True else: print("passwd: user") end(sys.argv)
def has_arguments(): if (len(sys.argv) > 2): pass else: print("cp: source, target") command.end(sys.argv)
def write_new_data(): if (sys.argv[1].isupper()): print("User name cannot be uppercase, full name can be") end(sys.argv) print("Adding user " + sys.argv[1] + " ...") create_new_home_directory(sys.argv[1]) copy_files_default_files(sys.argv[1]) password = getpass("\033[39mEnter new LOSTIA password: "******"/" in password): print("/ is not a valid symbol") remove_created_home_directory(sys.argv[1]) end(sys.argv) else: retype = getpass("\033[39mRetype new LOSTIA password: "******"retyped password does not match") remove_created_home_directory(sys.argv[1]) end(sys.argv) else: fullName = input("\033[39mFull Name: ") if (fullName != "" or fullName.split(" ")[0] != ""): if (len(sys.argv) == 2): with open("LostiaFiles/keychain.keychain", "a") as newuser: newuser.write("\n/" + fullName + "/" + sys.argv[1] + "/" + password + "/user/visable/" + str(datetime.now()) + "/") newuser.close() print("Added new user") end(sys.argv) else: with open("LostiaFiles/keychain.keychain", "a") as newuser: newuser.write("\n/" + fullName + "/" + sys.argv[1] + "/" + password + "/" + sys.argv[2] + "/visable/" + str(datetime.now()) + "/") newuser.close() print("Added new user") end(sys.argv) else: print("Full name cannot be empty") remove_created_home_directory(sys.argv[1]) end(sys.argv)
def check_if_has_arguments(): if (len(sys.argv) > 1): return True else: print("cd: .. or directory") end(sys.argv)