mirror of
https://github.com/foo-dogsquared/dotfiles.git
synced 2025-01-30 22:57:54 +00:00
bin/create-mxroute-email-accts: init
This commit is contained in:
parent
f89e2962dc
commit
f3edaf41e1
59
bin/create-mxroute-email-accts
Executable file
59
bin/create-mxroute-email-accts
Executable file
@ -0,0 +1,59 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#! nix-shell -i python3 -p python3Packages.requests
|
||||
|
||||
import os
|
||||
import requests
|
||||
import csv
|
||||
import time
|
||||
import json
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
# This is a modified script from
|
||||
# <https://gist.github.com/Suleman-Elahi/f6c00a986ea80f8fe58e20df28c97ca9>
|
||||
# allowing to generate passwords through a command and some polish on the code.
|
||||
#
|
||||
# The biggest difference is it is configured through the environment variables
|
||||
# rather than modifying the script.
|
||||
#
|
||||
# Anyways, as of 2024-09-16, MXRoute uses DirectAdmin and it does have an API
|
||||
# at <https://www.directadmin.com/api.html>. Just create your own script around
|
||||
# its REST API for this like you always do.
|
||||
prefix = "MXROUTE_SERVER"
|
||||
server_login = os.environ[f"{prefix}_NAME"]
|
||||
server_pass = os.environ[f"{prefix}_LOGIN_KEY"]
|
||||
server_endpoint_url = os.environ[f"{prefix}_URL"] + "/CMD_API_EMAIL_POP"
|
||||
pwgen_command = os.environ[f"{prefix}_PASSCOMMAND"] or "generate-password"
|
||||
|
||||
template = {
|
||||
"json": "yes",
|
||||
"action": "create",
|
||||
"limit": "7200",
|
||||
}
|
||||
|
||||
with open(sys.argv[1], newline="\n") as csvfile:
|
||||
reader = csv.DictReader(csvfile)
|
||||
for row in reader:
|
||||
data = dict(template)
|
||||
data["user"] = row["email"].split("@")[0].lower()
|
||||
data["quota"] = row["quota"]
|
||||
data["domain"] = row["email"].split("@")[1].lower()
|
||||
|
||||
print(data, server_endpoint_url)
|
||||
password = subprocess.run(
|
||||
pwgen_command, stdout=subprocess.PIPE, check=True, shell=True
|
||||
).stdout
|
||||
data["passwd2"] = str(password)
|
||||
data["passwd"] = str(password)
|
||||
|
||||
response = requests.post(
|
||||
server_endpoint_url,
|
||||
headers={"Content-Type": "application/x-www-form-urlencoded"},
|
||||
auth=(server_login, server_pass),
|
||||
data=json.dumps(data),
|
||||
timeout=5,
|
||||
)
|
||||
print("Status: ", response.status_code, " User ", data["user"], " created !!")
|
||||
|
||||
# Sleeping to slow down the request.
|
||||
time.sleep(2)
|
Loading…
Reference in New Issue
Block a user