-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
bb1562d
commit 2cf24be
Showing
8 changed files
with
808 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
import subprocess | ||
import customtkinter as ctk | ||
def application_whitelisting(parent_frame,ctk): | ||
|
||
Modify_label = ctk.CTkLabel(parent_frame, text="Application Whitelisting",font = ("Arial", 24)) | ||
Modify_label.pack(padx = 10,pady = (20,10)) | ||
|
||
mainFrame = ctk.CTkFrame(parent_frame) | ||
mainFrame.pack() | ||
mainFrame1 = ctk.CTkFrame(mainFrame) | ||
mainFrame1.pack(fill = 'both') | ||
modify = ctk.CTkLabel(mainFrame1,text = "Modify : ",font = ('Arial',18)) | ||
modify.grid(row = 0,column = 0,padx = (10,0),pady = (10,0),sticky = 'w') | ||
|
||
AppName = ctk.CTkEntry(mainFrame1,width = 270, placeholder_text = "Application Name") | ||
AppName.grid(row = 1,column = 1,padx = (0,10)) | ||
serviceName = ctk.CTkEntry(mainFrame1,width = 270,placeholder_text = "Service Name") | ||
serviceName.grid(row = 1,column = 2,padx = (0,10)) | ||
modify_btn = ctk.CTkButton(mainFrame1,text = "Modify",width = 260) | ||
modify_btn.grid(row = 2,column = 2) | ||
checkBoxFrame = ctk.CTkFrame(mainFrame1,fg_color="transparent") | ||
|
||
|
||
checkBoxFrame.grid(row = 2,column = 1) | ||
read = ctk.CTkCheckBox(checkBoxFrame,text = "read") | ||
read.grid(row = 0,column = 1,pady = 10) | ||
write = ctk.CTkCheckBox(checkBoxFrame,text = "write") | ||
write.grid(row = 0,column = 2,pady = 10) | ||
execute = ctk.CTkCheckBox(checkBoxFrame,text = "execute") | ||
execute.grid(row = 0,column = 3,pady = 10) | ||
|
||
|
||
scroll = ctk.CTkScrollbar(mainFrame,width = 600,corner_radius=0) | ||
scroll.pack(padx = 10,pady = (10,20)) | ||
|
||
tk_textbox = ctk.CTkTextbox(scroll,width=600) | ||
tk_textbox.pack() | ||
|
||
tk_textbox.insert("0.0",""""Where does it come from? | ||
Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.Where does it come from? | ||
Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.""") | ||
|
||
|
||
|
||
root = ctk.CTk() | ||
application_whitelisting(root,ctk) | ||
root.mainloop() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,232 @@ | ||
import customtkinter as ctk | ||
from usb_management import create_usb_port_management_frame | ||
from file_permissions import create_file_permissions | ||
from service_management import create_service_management | ||
from remote_logging import create_logging | ||
from firewall import create_firewall_management | ||
from patch_management import create_patch_management | ||
import os | ||
|
||
class DashboardApp(ctk.CTk): | ||
def __init__(self): | ||
super().__init__() | ||
self.title("Dashboard") | ||
self.geometry("1200x600") | ||
self.grid_rowconfigure(0, weight=1) | ||
self.grid_columnconfigure(1, weight=1) | ||
|
||
self.create_navigation_frame() | ||
self.frame_1 = None | ||
self.frame_2 = None | ||
self.frame_3 = None | ||
self.frame_4 = None | ||
self.frame_5 = None | ||
self.frame_6 = None | ||
self.frame_7 = None | ||
|
||
def create_navigation_frame(self): | ||
self.navigation_frame = ctk.CTkFrame(self, corner_radius=0) | ||
self.navigation_frame.grid(row=0, column=0, sticky="nsew") | ||
self.navigation_frame.grid_rowconfigure(12, weight=1) | ||
|
||
self.navigation_frame_label = ctk.CTkLabel( | ||
self.navigation_frame, text="Ubuntu Hardening", font=ctk.CTkFont(size=15, weight="bold", family="Ubuntu")) | ||
self.navigation_frame_label.grid(row=0, column=0, padx=20, pady=20) | ||
|
||
self.frame_1_button = self.create_nav_button( | ||
self.navigation_frame, " PortMaster ", self.frame_1_button_clicked) | ||
self.frame_2_button = self.create_nav_button( | ||
self.navigation_frame, " File Permissions ", self.frame_2_button_clicked) | ||
self.frame_3_button = self.create_nav_button( | ||
self.navigation_frame, " Service Management ", self.frame_3_button_clicked) | ||
self.frame_4_button = self.create_nav_button( | ||
self.navigation_frame, " Remote Logging ", self.frame_4_button_clicked) | ||
self.frame_5_button = self.create_nav_button( | ||
self.navigation_frame, " Firewall ", self.frame_5_button_clicked) | ||
self.frame_6_button = self.create_nav_button( | ||
self.navigation_frame, " Patch Management ", self.frame_6_button_clicked) | ||
self.frame_7_button = self.create_nav_button( | ||
self.navigation_frame, " Application Whitelisting ", self.frame_7_button_clicked) | ||
|
||
self.frame_1_button.grid(row=1, column=0) | ||
self.frame_2_button.grid(row=2, column=0) | ||
self.frame_3_button.grid(row=3, column=0) | ||
self.frame_4_button.grid(row=4, column=0) | ||
self.frame_5_button.grid(row=5, column=0) | ||
self.frame_6_button.grid(row=6, column=0) | ||
self.frame_7_button.grid(row=7, column=0) | ||
|
||
self.appearance_mode_menu = ctk.CTkOptionMenu( | ||
self.navigation_frame, values=["Light", "Dark", "System"], command=self.change_appearance_mode) | ||
self.appearance_mode_menu.grid(row=12, column=0, padx=0, pady=20, ipadx=0,sticky="s") | ||
|
||
def create_frame_1(self): | ||
if self.frame_2: | ||
self.frame_2.grid_forget() | ||
if self.frame_3: | ||
self.frame_3.grid_forget() | ||
if self.frame_4: | ||
self.frame_4.grid_forget() | ||
if self.frame_5: | ||
self.frame_5.grid_forget() | ||
if self.frame_6: | ||
self.frame_6.grid_forget() | ||
if self.frame_7: | ||
self.frame_7.grid_forget() | ||
if self.frame_1: | ||
self.frame_1.grid(row=0, column=1, sticky="nsew") | ||
else: | ||
self.frame_1 = ctk.CTkFrame(self, corner_radius=0, fg_color="transparent") | ||
self.frame_1.grid(row=0, column=1, sticky="nsew") | ||
create_usb_port_management_frame(self.frame_1, ctk) | ||
|
||
def create_frame_2(self): | ||
if self.frame_1: | ||
self.frame_1.grid_forget() | ||
if self.frame_3: | ||
self.frame_3.grid_forget() | ||
if self.frame_4: | ||
self.frame_4.grid_forget() | ||
if self.frame_5: | ||
self.frame_5.grid_forget() | ||
if self.frame_6: | ||
self.frame_6.grid_forget() | ||
if self.frame_7: | ||
self.frame_7.grid_forget() | ||
if self.frame_2: | ||
self.frame_2.grid(row=0, column=1, sticky="nsew") | ||
else: | ||
self.frame_2 = ctk.CTkFrame(self, corner_radius=0, fg_color="transparent") | ||
self.frame_2.grid(row=0, column=1, sticky="nsew") | ||
create_file_permissions(self.frame_2, ctk) | ||
|
||
def create_frame_3(self): | ||
if self.frame_1: | ||
self.frame_1.grid_forget() | ||
if self.frame_2: | ||
self.frame_2.grid_forget() | ||
if self.frame_4: | ||
self.frame_4.grid_forget() | ||
if self.frame_5: | ||
self.frame_5.grid_forget() | ||
if self.frame_6: | ||
self.frame_6.grid_forget() | ||
if self.frame_7: | ||
self.frame_7.grid_forget() | ||
if self.frame_3: | ||
self.frame_3.grid(row=0, column=1, sticky="nsew") | ||
else: | ||
self.frame_3 = ctk.CTkFrame(self, corner_radius=0, fg_color="transparent") | ||
self.frame_3.grid(row=0, column=1, sticky="nsew") | ||
create_service_management(self.frame_3, ctk) | ||
|
||
def create_frame_4(self): | ||
if self.frame_1: | ||
self.frame_1.grid_forget() | ||
if self.frame_2: | ||
self.frame_2.grid_forget() | ||
if self.frame_3: | ||
self.frame_3.grid_forget() | ||
if self.frame_5: | ||
self.frame_5.grid_forget() | ||
if self.frame_6: | ||
self.frame_6.grid_forget() | ||
if self.frame_7: | ||
self.frame_7.grid_forget() | ||
if self.frame_4: | ||
self.frame_4.grid(row=0, column=1, sticky="nsew") | ||
else: | ||
self.frame_4 = ctk.CTkFrame(self, corner_radius=0, fg_color="transparent") | ||
self.frame_4.grid(row=0, column=1, sticky="nsew") | ||
create_logging(self.frame_4, ctk) | ||
|
||
def create_frame_5(self): | ||
if self.frame_1: | ||
self.frame_1.grid_forget() | ||
if self.frame_2: | ||
self.frame_2.grid_forget() | ||
if self.frame_3: | ||
self.frame_3.grid_forget() | ||
if self.frame_4: | ||
self.frame_4.grid_forget() | ||
if self.frame_6: | ||
self.frame_6.grid_forget() | ||
if self.frame_7: | ||
self.frame_7.grid_forget() | ||
if self.frame_5: | ||
self.frame_5.grid(row=0, column=1, sticky="nsew") | ||
else: | ||
self.frame_5 = ctk.CTkFrame(self, corner_radius=0, fg_color="transparent") | ||
self.frame_5.grid(row=0, column=1, sticky="nsew") | ||
create_firewall_management(self.frame_5, ctk) | ||
|
||
def create_frame_6(self): | ||
if self.frame_1: | ||
self.frame_1.grid_forget() | ||
if self.frame_2: | ||
self.frame_2.grid_forget() | ||
if self.frame_3: | ||
self.frame_3.grid_forget() | ||
if self.frame_4: | ||
self.frame_4.grid_forget() | ||
if self.frame_5: | ||
self.frame_5.grid_forget() | ||
if self.frame_7: | ||
self.frame_7.grid_forget() | ||
if self.frame_6: | ||
self.frame_6.grid(row=0, column=1, sticky="nsew") | ||
else: | ||
self.frame_6 = ctk.CTkFrame(self, corner_radius=0, fg_color="transparent") | ||
self.frame_6.grid(row=0, column=1, sticky="nsew") | ||
create_patch_management(self.frame_6, ctk) | ||
|
||
def create_frame_7(self): | ||
if self.frame_1: | ||
self.frame_1.grid_forget() | ||
if self.frame_2: | ||
self.frame_2.grid_forget() | ||
if self.frame_3: | ||
self.frame_3.grid_forget() | ||
if self.frame_4: | ||
self.frame_4.grid_forget() | ||
if self.frame_5: | ||
self.frame_5.grid_forget() | ||
if self.frame_6: | ||
self.frame_6.grid_forget() | ||
if self.frame_7: | ||
self.frame_7.grid(row=0, column=1, sticky="nsew") | ||
else: | ||
self.frame_7 = ctk.CTkFrame(self, corner_radius=0, fg_color="transparent") | ||
self.frame_7.grid(row=0, column=1, sticky="nsew") | ||
create_patch_management(self.frame_7, ctk) | ||
|
||
def create_nav_button(self, parent_frame, text, command): | ||
return ctk.CTkButton(parent_frame, corner_radius=0, height=40, border_spacing=10, text=text, fg_color="transparent", text_color=("gray10", "gray90"), hover_color=("gray70", "gray30"), anchor="w", command=command) | ||
|
||
def frame_1_button_clicked(self): | ||
self.create_frame_1() | ||
|
||
def frame_2_button_clicked(self): | ||
self.create_frame_2() | ||
|
||
def frame_3_button_clicked(self): | ||
self.create_frame_3() | ||
|
||
def frame_4_button_clicked(self): | ||
self.create_frame_4() | ||
|
||
def frame_5_button_clicked(self): | ||
self.create_frame_5() | ||
|
||
def frame_6_button_clicked(self): | ||
self.create_frame_6() | ||
|
||
def frame_7_button_clicked(self): | ||
self.create_frame_7() | ||
|
||
def change_appearance_mode(self, new_appearance_mode): | ||
ctk.set_appearance_mode(new_appearance_mode) | ||
|
||
if __name__ == "__main__": | ||
app = DashboardApp() | ||
app.mainloop() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
import subprocess | ||
from CTkMessagebox import CTkMessagebox | ||
|
||
def add_permissions(username, path, read_access, write_access, execute_access): | ||
subprocess.run(["pkexec", "setfacl", '-x', f"u:{username}", path]) | ||
permission_string = "" | ||
if read_access: | ||
permission_string += "r" | ||
if write_access: | ||
permission_string += "w" | ||
if execute_access: | ||
permission_string += "x" | ||
|
||
try: | ||
subprocess.run(["pkexec", "setfacl", '-m', f"u:{username}:{permission_string}", path]) | ||
except subprocess.CalledProcessError as e: | ||
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): | ||
file_permissions_frame = ctk.CTkFrame(parent_frame, corner_radius=0) | ||
file_permissions_frame.pack(fill=ctk.BOTH, expand=True) | ||
|
||
title = ctk.CTkLabel(file_permissions_frame, text="File Permissions",font = ('Arial',24)) | ||
title.pack(side=ctk.TOP, padx=10, pady=(20,10)) | ||
|
||
frame1 = ctk.CTkFrame(file_permissions_frame) | ||
frame1.pack(side=ctk.TOP, 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) | ||
|
||
entry_path = ctk.CTkEntry(frame1, placeholder_text="Enter File Path",width = 300) | ||
entry_path.grid(row = 1,column = 0,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) | ||
|
||
read_var = ctk.CTkCheckBox(frame1, text="Read",) | ||
read_var.grid(row = 0,column = 1,padx = 10,pady = 10) | ||
|
||
write_var = ctk.CTkCheckBox(frame1, text="Write") | ||
write_var.grid(row = 1,column = 1,padx = 10,pady = 10) | ||
|
||
execute_var = ctk.CTkCheckBox(frame1, text="Execute",) | ||
execute_var.grid(row = 2,column = 1,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) | ||
|
||
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 file_permissions_frame |
Oops, something went wrong.