update?
This commit is contained in:
176
admin/admin.py
Normal file
176
admin/admin.py
Normal file
@ -0,0 +1,176 @@
|
||||
#!/bin/python3
|
||||
|
||||
"""
|
||||
Administration script for my website (ngn.tf)
|
||||
#############################################
|
||||
I really enjoy doing stuff from the terminal,
|
||||
so I wrote this simple python script that interacts
|
||||
with the API and lets me add/remove new posts/services
|
||||
from the terminal
|
||||
"""
|
||||
|
||||
from os import remove, getenv
|
||||
from getpass import getpass
|
||||
import requests as req
|
||||
from sys import argv
|
||||
|
||||
URL = ""
|
||||
|
||||
def join(pth: str) -> str:
|
||||
if URL == None:
|
||||
return ""
|
||||
|
||||
if URL.endswith("/"):
|
||||
return URL+pth
|
||||
return URL+"/"+pth
|
||||
|
||||
def get_token() -> str:
|
||||
try:
|
||||
f = open("/tmp/wa", "r")
|
||||
token = f.read()
|
||||
f.close()
|
||||
return token
|
||||
except:
|
||||
print("[-] You are not authenticated")
|
||||
exit(1)
|
||||
|
||||
def login() -> None:
|
||||
pwd = getpass("[>] Enter your password: ")
|
||||
res = req.get(join("admin/login")+f"?pass={pwd}").json()
|
||||
if res["error"] != "":
|
||||
print(f"[-] Error logging in: {res['error']}")
|
||||
return
|
||||
|
||||
token = res["token"]
|
||||
f = open("/tmp/wa", "w")
|
||||
f.write(token)
|
||||
f.close()
|
||||
|
||||
def logout() -> None:
|
||||
token = get_token()
|
||||
res = req.get(join("admin/logout"), headers={
|
||||
"Authorization": token
|
||||
}).json()
|
||||
if res["error"] != "":
|
||||
print(f"[-] Error logging out: {res['error']}")
|
||||
return
|
||||
|
||||
remove("/tmp/wa")
|
||||
print("[+] Logged out")
|
||||
|
||||
def add_post() -> None:
|
||||
token = get_token()
|
||||
title = input("[>] Post title: ")
|
||||
author = input("[>] Post author: ")
|
||||
content_file = input("[>] Post content file: ")
|
||||
public = input("[>] Should post be public? (y/n): ")
|
||||
|
||||
try:
|
||||
f = open(content_file, "r")
|
||||
content = f.read()
|
||||
f.close()
|
||||
except:
|
||||
print("[-] Content file not found")
|
||||
return
|
||||
|
||||
res = req.put(join("admin/blog/add"), json={
|
||||
"title": title,
|
||||
"author": author,
|
||||
"content": content,
|
||||
"public": 1 if public == "y" else 0
|
||||
}, headers={
|
||||
"Authorization": token
|
||||
}).json()
|
||||
|
||||
if res["error"] != "":
|
||||
print(f"[-] Error adding post: {res['error']}")
|
||||
return
|
||||
|
||||
print("[+] Post has been added")
|
||||
|
||||
def remove_post() -> None:
|
||||
token = get_token()
|
||||
id = input("[>] Post ID: ")
|
||||
res = req.delete(join("admin/blog/del")+f"?id={id}", headers={
|
||||
"Authorization": token
|
||||
}).json()
|
||||
|
||||
if res["error"] != "":
|
||||
print(f"[-] Error removing post: {res['error']}")
|
||||
return
|
||||
|
||||
print("[-] Post has been deleted")
|
||||
|
||||
def add_service() -> None:
|
||||
token = get_token()
|
||||
name = input("[>] Serivce name: ")
|
||||
desc = input("[>] Serivce desc: ")
|
||||
link = input("[>] Serivce URL: ")
|
||||
|
||||
res = req.put(join("admin/service/add"), json={
|
||||
"name": name,
|
||||
"desc": desc,
|
||||
"url": link
|
||||
}, headers={
|
||||
"Authorization": token
|
||||
}).json()
|
||||
|
||||
if res["error"] != "":
|
||||
print(f"[-] Error adding service: {res['error']}")
|
||||
return
|
||||
|
||||
print("[+] Service has been added")
|
||||
|
||||
def remove_service() -> None:
|
||||
token = get_token()
|
||||
name = input("[>] Service name: ")
|
||||
res = req.delete(join("admin/service/remove")+f"?name={name}", headers={
|
||||
"Authorization": token
|
||||
}).json()
|
||||
|
||||
if res["error"] != "":
|
||||
print(f"[-] Error removing service: {res['error']}")
|
||||
return
|
||||
|
||||
print("[+] Serivce has been added")
|
||||
|
||||
cmds = {
|
||||
"login": login,
|
||||
"logout": logout,
|
||||
"add_post": add_post,
|
||||
"remove_post": remove_post,
|
||||
"add_service": add_service,
|
||||
"remove_service": remove_service,
|
||||
}
|
||||
|
||||
def main():
|
||||
global URL
|
||||
URL = getenv("API")
|
||||
if URL == None or URL == "":
|
||||
print("[-] API enviroment variable not set")
|
||||
exit(1)
|
||||
|
||||
if len(argv) != 2:
|
||||
print(f"[-] Usage: admin_script <command>")
|
||||
print(f"[+] Run \"admin_script help\" to get all commands")
|
||||
exit(1)
|
||||
|
||||
if argv[1] == "help":
|
||||
print("Avaliable commands:")
|
||||
for k in cmds.keys():
|
||||
print(f" {k}")
|
||||
exit()
|
||||
|
||||
for k in cmds.keys():
|
||||
if k != argv[1]:
|
||||
continue
|
||||
try:
|
||||
cmds[k]()
|
||||
except KeyboardInterrupt:
|
||||
pass
|
||||
exit()
|
||||
|
||||
print("[-] Command not found")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Reference in New Issue
Block a user