Skip to content

Commit

Permalink
Update file_permissions.py
Browse files Browse the repository at this point in the history
  • Loading branch information
uhloofstardust committed Oct 27, 2023
1 parent f86f07b commit 345f746
Showing 1 changed file with 54 additions and 50 deletions.
104 changes: 54 additions & 50 deletions file_permissions.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import subprocess
from tkinter import messagebox

from CTkMessagebox import CTkMessagebox

def add_permissions(username, path, read_access, write_access, execute_access):
subprocess.run(["pkexec", "setfacl", '-x', f"u:{username}", path])
Expand All @@ -15,66 +14,71 @@ def add_permissions(username, path, read_access, write_access, execute_access):
try:
subprocess.run(["pkexec", "setfacl", '-m', f"u:{username}:{permission_string}", path])
except subprocess.CalledProcessError as e:
messagebox.showerror("Error", f"Failed to update permissions: {e}")


def flush_user(username, path):
subprocess.run(["pkexec", "setfacl", '-x', f"u:{username}", path])


def flush_all(path):
CTkMessagebox(title="Error", message=f"Failed to update permissions: {e}")


def flush_user_func(username, path):
print(username.get(),path.get())
if(username.get() == "" and path.get() == ""):
username.configure(fg_color = "red")
path.configure(fg_color = "red")
ctkmsg = CTkMessagebox(title="Info", message="Username and Path is not specified")
if(ctkmsg.get() == 'OK'):
username.configure(fg_color="#ab23ff")
path.configure(fg_color="#ab23ff")

elif(username.get() == ""):
username.configure(fg_color = "red")
ctkmsg = CTkMessagebox(title="Info", message="Username is not specified")
if(ctkmsg.get() == 'OK'):
username.configure(fg_color = '#006653')
path.configure(fg_color = '#006653')
elif(path.get() == ""):
path.configure(fg_color = "red")
ctkmsg = CTkMessagebox(title="Info", message="File Path is not specified")
if(ctkmsg.get() == 'OK'):
username.configure(fg_color="transparent")
path.configure(fg_color="transparent")
else:
subprocess.run(["pkexec", "setfacl", '-x', f"u:{username.get()}", path.get()])


def flush_all_func(path):
subprocess.run(["pkexec", "setfacl", '--remove-all', path])


def create_file_permissions(parent_frame, ctk):
two = ctk.CTkFrame(parent_frame, corner_radius=0)
two.pack(fill=ctk.BOTH, expand=True) # Use pack to place the 'two' frame

title = ctk.CTkLabel(two, text="File Permissions", font=ctk.CTkFont(size=15, weight="bold"))
title.pack(side=ctk.TOP, padx=10, pady=10)

entry_username_frame = ctk.CTkFrame(two)
entry_username_frame.pack(side=ctk.TOP, padx=10, pady=10)

label1 = ctk.CTkLabel(entry_username_frame, text="Enter the Username: ", font=("Ubuntu", 20), justify=ctk.LEFT)
label1.pack(side=ctk.LEFT, padx=10, pady=10)

entry_username = ctk.CTkEntry(entry_username_frame, placeholder_text="", font=("Ubuntu", 20, "bold"),
border_width=2)
entry_username.pack(side=ctk.LEFT, padx=10, pady=10)
file_permissions_frame = ctk.CTkFrame(parent_frame, corner_radius=0)
file_permissions_frame.pack(fill=ctk.BOTH, expand=True)

entry_path_frame = ctk.CTkFrame(two)
entry_path_frame.pack(side=ctk.TOP, padx=10, pady=10)
title = ctk.CTkLabel(file_permissions_frame, text="File Permissions",font = ('Arial',24))
title.pack(side=ctk.TOP, padx=10, pady=(20,10))

label2 = ctk.CTkLabel(entry_path_frame, text="Enter File Path: ", font=("Ubuntu", 20), justify=ctk.LEFT)
label2.pack(side=ctk.LEFT, padx=10, pady=10)
frame1 = ctk.CTkFrame(file_permissions_frame)
frame1.pack(side=ctk.TOP, padx=10, pady=10)

entry_path = ctk.CTkEntry(entry_path_frame, placeholder_text="", font=("Ubuntu", 20, "bold"), border_width=2)
entry_path.pack(side=ctk.LEFT, padx=10, pady=10)
entry_username = ctk.CTkEntry(frame1, placeholder_text="Enter Username",width = 300)
entry_username.grid(row = 0,column = 0,padx = 10,pady = 10)

checkboxes_frame = ctk.CTkFrame(two)
checkboxes_frame.pack(side=ctk.TOP, padx=10, pady=10)
entry_path = ctk.CTkEntry(frame1, placeholder_text="Enter File Path",width = 300)
entry_path.grid(row = 1,column = 0,padx = 10,pady = 10)

read_var = ctk.CTkCheckBox(checkboxes_frame, text="Read", font=("Ubuntu", 20))
read_var.pack(side=ctk.LEFT, padx=10, pady=10)
submit = ctk.CTkButton(frame1, text="SUBMIT",command=lambda: add_permissions(entry_username, entry_path, read_var, write_var,execute_var),width = 300)
submit.grid(row = 2,column = 0,padx = 10,pady = 10)

write_var = ctk.CTkCheckBox(checkboxes_frame, text="Write", font=("Ubuntu", 20))
write_var.pack(side=ctk.LEFT, padx=10, pady=10)
read_var = ctk.CTkCheckBox(frame1, text="Read",)
read_var.grid(row = 0,column = 1,padx = 10,pady = 10)

execute_var = ctk.CTkCheckBox(checkboxes_frame, text="Execute", font=("Ubuntu", 20))
execute_var.pack(side=ctk.LEFT, padx=10, pady=10)
write_var = ctk.CTkCheckBox(frame1, text="Write")
write_var.grid(row = 1,column = 1,padx = 10,pady = 10)

flush_all_btn = ctk.CTkButton(two, text="FLUSH FOR ALL", font=("Ubuntu", 18),
command=lambda: flush_all_func(entry_path))
flush_all_btn.pack(side=ctk.TOP, padx=10, pady=10)
execute_var = ctk.CTkCheckBox(frame1, text="Execute",)
execute_var.grid(row = 2,column = 1,padx = 10,pady = 10)

flush_user_btn = ctk.CTkButton(two, text="FLUSH FOR USER", font=("Ubuntu", 18),
command=lambda: flush_user_func(entry_username, entry_path))
flush_user_btn.pack(side=ctk.TOP, padx=10, pady=10)
flush_all_btn = ctk.CTkButton(frame1, text="FLUSH FOR ALL",command=lambda: flush_all_func(entry_path),width = 300)
flush_all_btn.grid(row = 3,column = 0,padx = 10,pady = 10)

submit = ctk.CTkButton(two, text="SUBMIT", font=("Ubuntu", 18),
command=lambda: add_permissions(entry_username, entry_path, read_var, write_var,
execute_var))
submit.pack(side=ctk.TOP, padx=10, pady=10)
flush_user_btn = ctk.CTkButton(frame1, text="FLUSH FOR USER",command=lambda: flush_user_func(entry_username, entry_path),width = 200)
flush_user_btn.grid(row = 3,column = 1,padx = 10,pady = 10)

return two
return file_permissions_frame

0 comments on commit 345f746

Please sign in to comment.