Change name from Alive-Services
This commit is contained in:
@@ -1,48 +1,64 @@
|
||||
import subprocess
|
||||
import csv
|
||||
from datetime import datetime
|
||||
from Controller import mysql_connect
|
||||
import requests
|
||||
from Controller import create_service
|
||||
import socket
|
||||
import random
|
||||
import time
|
||||
|
||||
def request(function,variable):
|
||||
|
||||
####
|
||||
####
|
||||
#### --- RUN AS SINGEL SERVICE --- ####
|
||||
####
|
||||
####
|
||||
|
||||
def request_post(function,variable):
|
||||
url = (f"http://api.stines.de:8001/{function}")
|
||||
response = requests.post(url,json = variable,headers={'access_token':'^YWUbG7yX*V!tV^KBSd*2c&vdN3wV9a2i7f3hfGFMBYFxi6#mMiJGiaA5KEHE%B*miK%qb7rQ67gmcYP@gqmux8'})
|
||||
return response
|
||||
|
||||
def request_get(function,variable):
|
||||
url = (f"http://api.stines.de:8001/{function}")
|
||||
response = requests.get(url,headers={'access_token':'^YWUbG7yX*V!tV^KBSd*2c&vdN3wV9a2i7f3hfGFMBYFxi6#mMiJGiaA5KEHE%B*miK%qb7rQ67gmcYP@gqmux8'})
|
||||
return response
|
||||
|
||||
# create_service.addservice("REPORTS-AD")
|
||||
|
||||
def adcontroller (ip,name):
|
||||
# command = ["powershell", "-Command",
|
||||
# "Get-ADUser -Filter * -Properties * | Export-Csv -NoTypeInformation -Encoding UTF8 -Path 'users.csv'"]
|
||||
# subprocess.run(command)
|
||||
# # CSV-Datei einlesen und Feldnamen auslesen
|
||||
# with open("users.csv", "r", encoding='utf-8-sig') as file:
|
||||
# reader = csv.DictReader(file)
|
||||
# fieldnames = reader.fieldnames
|
||||
#
|
||||
# # Tabelle erstellen, falls sie noch nicht existiert
|
||||
# table_name = "Active-Directory-User"
|
||||
# create_table_query = f"CREATE TABLE IF NOT EXISTS `{table_name}` (id INT AUTO_INCREMENT PRIMARY KEY, importdate BIGINT(11), "
|
||||
# for field in fieldnames:
|
||||
# create_table_query += f"`{field}` TEXT, "
|
||||
# create_table_query = create_table_query.rstrip(", ") + ")"
|
||||
# request("dbset", {"query": create_table_query, 'dbname': name})
|
||||
#
|
||||
# # Daten aus der CSV-Datei in die Tabelle einfügen
|
||||
# with open("users.csv", "r", encoding='utf-8-sig') as file:
|
||||
# reader = csv.reader(file)
|
||||
# next(reader) # Überspringe die erste Zeile (Feldnamen)
|
||||
# for row in reader:
|
||||
# row = [cell if cell.strip() else "-" for cell in row]
|
||||
# unix_time = int(datetime.now().timestamp())
|
||||
# print(unix_time)
|
||||
# row = [unix_time] + row
|
||||
# insert_query = f"INSERT INTO `{table_name}` (importdate, `{'`, `'.join(fieldnames)}`) VALUES (%s, {', '.join(['%s'] * len(fieldnames))})"
|
||||
# print(request("add_ad_user", {"query": insert_query, 'dbname': name, 'entry': row}).text)
|
||||
# # mysql_connect.add_user(insert_query, name, row)
|
||||
#
|
||||
# command = ["powershell", "-Command",
|
||||
# "Get-ADGroupMember -Identity G-RDP-User | Export-Csv -NoTypeInformation -Encoding UTF8 -Path 'group.csv'"]
|
||||
# subprocess.run(command)
|
||||
command = ["powershell", "-Command",
|
||||
"Get-ADUser -Filter * -Properties * | Export-Csv -NoTypeInformation -Encoding UTF8 -Path 'users.csv'"]
|
||||
subprocess.run(command)
|
||||
# CSV-Datei einlesen und Feldnamen auslesen
|
||||
with open("users.csv", "r", encoding='utf-8-sig') as file:
|
||||
reader = csv.DictReader(file)
|
||||
fieldnames = reader.fieldnames
|
||||
|
||||
# Tabelle erstellen, falls sie noch nicht existiert
|
||||
table_name = "Active-Directory-User"
|
||||
create_table_query = f"CREATE TABLE IF NOT EXISTS `{table_name}` (id INT AUTO_INCREMENT PRIMARY KEY, importdate BIGINT(11), "
|
||||
for field in fieldnames:
|
||||
create_table_query += f"`{field}` TEXT, "
|
||||
create_table_query = create_table_query.rstrip(", ") + ")"
|
||||
request_post("dbset", {"query": create_table_query, 'dbname': name})
|
||||
|
||||
# Daten aus der CSV-Datei in die Tabelle einfügen
|
||||
with open("users.csv", "r", encoding='utf-8-sig') as file:
|
||||
reader = csv.reader(file)
|
||||
next(reader) # Überspringe die erste Zeile (Feldnamen)
|
||||
for row in reader:
|
||||
row = [cell if cell.strip() else "-" for cell in row]
|
||||
unix_time = int(datetime.now().timestamp())
|
||||
print(unix_time)
|
||||
row = [unix_time] + row
|
||||
insert_query = f"INSERT INTO `{table_name}` (importdate, `{'`, `'.join(fieldnames)}`) VALUES (%s, {', '.join(['%s'] * len(fieldnames))})"
|
||||
print(request_post("ad/adduser", {"query": insert_query, 'dbname': name, 'entry': row}).text)
|
||||
# mysql_connect.add_user(insert_query, name, row)
|
||||
|
||||
command = ["powershell", "-Command",
|
||||
"Get-ADGroupMember -Identity G-RDP-User | Export-Csv -NoTypeInformation -Encoding UTF8 -Path 'group.csv'"]
|
||||
subprocess.run(command)
|
||||
|
||||
# CSV-Datei einlesen und Feldnamen auslesen
|
||||
with open("group.csv", "r", encoding='utf-8-sig') as file:
|
||||
@@ -53,7 +69,7 @@ def adcontroller (ip,name):
|
||||
for field in fieldnames:
|
||||
create_table_query += f"`{field}` TEXT, "
|
||||
create_table_query = create_table_query.rstrip(", ") + ")"
|
||||
request("dbset", {"query": create_table_query, 'dbname': name})
|
||||
request_post("dbset", {"query": create_table_query, 'dbname': name})
|
||||
|
||||
# Daten aus der CSV-Datei in die Tabelle aktualisieren oder einfügen
|
||||
with open("group.csv", "r", encoding='utf-8-sig') as file:
|
||||
@@ -62,14 +78,12 @@ def adcontroller (ip,name):
|
||||
sam_account_name = row["SamAccountName"]
|
||||
|
||||
# Abfrage, um die ID für den Benutzernamen zu erhalten
|
||||
query_id = f"SELECT id FROM `{table_name}` WHERE SamAccountName = %s"
|
||||
query_id = f"SELECT id FROM `{table_name}` WHERE SamAccountName = '{sam_account_name}'"
|
||||
|
||||
result = request("get_ad_user", {"query": query_id, 'dbname': name}).text
|
||||
print(result)
|
||||
# result = mysql_connect.get_user(query_id, name, (sam_account_name,))
|
||||
result = request_post("ad/getuserid", {"query": query_id, 'dbname': name}).text
|
||||
|
||||
if result:
|
||||
user_id = result[0]
|
||||
if result != "false":
|
||||
user_id = result
|
||||
print(user_id)
|
||||
update_query = f"UPDATE `{table_name}` SET "
|
||||
for field in fieldnames:
|
||||
@@ -78,14 +92,13 @@ def adcontroller (ip,name):
|
||||
update_query = update_query.rstrip(", ")
|
||||
update_query += ", `importdate` = %s" # Importdate als Unix-Timestamp aktualisieren
|
||||
update_query += " WHERE id = %s"
|
||||
|
||||
row_data = [row[field] for field in fieldnames if field != "SamAccountName"]
|
||||
unix_time = int(datetime.now().timestamp())
|
||||
row_data = row_data + [unix_time]
|
||||
row_data.append(user_id)
|
||||
print(row_data)
|
||||
mysql_connect.add_user(update_query, name, row_data)
|
||||
print(request_post("ad/adduser",{"query": update_query, "dbname":name, "entry":row_data}).text)
|
||||
else:
|
||||
print("false in side else")
|
||||
insert_query = f"INSERT INTO `{table_name}` ("
|
||||
insert_query += ", ".join(fieldnames) # Spaltennamen in die INSERT-Abfrage einbeziehen
|
||||
insert_query += ", `importdate`) VALUES ("
|
||||
@@ -95,8 +108,32 @@ def adcontroller (ip,name):
|
||||
unix_time = int(datetime.now().timestamp())
|
||||
row_data = row_data + [unix_time]
|
||||
print(row_data)
|
||||
mysql_connect.add_user(insert_query, name, row_data)
|
||||
# connection.commit()
|
||||
request_post("ad/adduser",{"query": insert_query, "dbname":name, "entry":row_data})
|
||||
|
||||
def get_local_ip():
|
||||
try:
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
s.connect(("8.8.8.8", 80))
|
||||
local_ip = s.getsockname()[0]
|
||||
s.close()
|
||||
return local_ip
|
||||
except Exception as e:
|
||||
print(f"Fehler beim Abrufen der lokalen IP-Adresse: {e}")
|
||||
return None
|
||||
|
||||
adcontroller("172.18.1.6","tnp-Invest-GmbH")
|
||||
service_time = f"23:{str(random.randint(1, 59)).zfill(2)}"
|
||||
while True:
|
||||
print(f"ERROR {service_time}")
|
||||
current_time = datetime.now().strftime("%H:%M")
|
||||
try:
|
||||
with open ("log.txt","w") as datei:
|
||||
datei.writelines(request_get("gettime",{}).text)
|
||||
except Exception as e:
|
||||
with open ("log.txt","w") as datei:
|
||||
datei.writelines(f"{current_time}No Connection to Server!")
|
||||
if current_time == service_time:
|
||||
ip = get_local_ip()
|
||||
database = request_post("info/getdatabase",{"ip":ip}).text.replace('"',"")
|
||||
adcontroller(ip,database)
|
||||
time.sleep(22*3600)
|
||||
time.sleep(60)
|
||||
@@ -0,0 +1,31 @@
|
||||
import os
|
||||
import shutil
|
||||
import requests
|
||||
import zipfile
|
||||
import time
|
||||
|
||||
def addservice(service):
|
||||
path = f"C:\Scripte\{service}"
|
||||
if not os.path.isfile(f"{path}\.{service}"):
|
||||
main_folder = f"{path}"
|
||||
try:
|
||||
os.mkdir(main_folder)
|
||||
except:
|
||||
print("Folder exist")
|
||||
shutil.copy(f"{service}.exe",main_folder)
|
||||
response = requests.get("https://nssm.cc/release/nssm-2.24.zip", stream=True)
|
||||
with open('C:\Scripte\\nssm.zip', 'wb') as file:
|
||||
for chunk in response.iter_content(chunk_size=8192):
|
||||
file.write(chunk)
|
||||
|
||||
# Entpacken der ZIP-Datei
|
||||
with zipfile.ZipFile('C:\Scripte\\nssm.zip', 'r') as zip_ref:
|
||||
zip_ref.extractall('C:\Scripte\\nssm')
|
||||
|
||||
shutil.move("C:\Scripte\\nssm\\nssm-2.24\win64\\nssm.exe",f"{main_folder}\\Windows_Dienst_Builder.exe")
|
||||
os.system(f"{main_folder}\\Windows_Dienst_Builder.exe install STI-{service} {main_folder}\\{service}.exe")
|
||||
open(f"{main_folder}\.{service}", 'a').close()
|
||||
time.sleep(2)
|
||||
print("Remove not Used Files")
|
||||
shutil.rmtree('C:\Scripte\\nssm')
|
||||
os.remove('C:\Scripte\\nssm.zip')
|
||||
@@ -1,24 +0,0 @@
|
||||
"distinguishedName","name","objectClass","objectGUID","SamAccountName","SID"
|
||||
"CN=Nathalie Batura-Senebier,OU=TNP Benutzer,DC=tnp-gruppe,DC=de","Nathalie Batura-Senebier","user","e021d98f-aa51-4b3f-8db4-c5b790ca2b8c","batura","S-1-5-21-4196924754-1305228144-1931124329-1111"
|
||||
"CN=RDP Admin,OU=TNP Admins,DC=tnp-gruppe,DC=de","RDP Admin","user","c0eec35e-923d-4d2c-b7e6-8d56720355bc","rdpadmin","S-1-5-21-4196924754-1305228144-1931124329-1164"
|
||||
"CN=Johannes Wimmer,OU=Deaktivierte User,DC=tnp-gruppe,DC=de","Johannes Wimmer","user","2b107489-dbab-4dfb-a9ac-4e81d78c1850","johannnes.wimmer","S-1-5-21-4196924754-1305228144-1931124329-2620"
|
||||
"CN=Alex Bondarenko,OU=Deaktivierte User,DC=tnp-gruppe,DC=de","Alex Bondarenko","user","b89bd5b7-223d-41b4-ae1f-b8457e1d3d20","alex.bondarenko","S-1-5-21-4196924754-1305228144-1931124329-2670"
|
||||
"CN=Rita Hofmann,OU=Deaktivierte User,DC=tnp-gruppe,DC=de","Rita Hofmann","user","7de5af49-3e36-44ab-a345-1012cdef0b0a","rita.hofmann","S-1-5-21-4196924754-1305228144-1931124329-3108"
|
||||
"CN=Diana Eichelberger,OU=TNP Benutzer,DC=tnp-gruppe,DC=de","Diana Eichelberger","user","d2e1db66-7f66-4660-bbf1-4831cf743d93","diana.eichelberger","S-1-5-21-4196924754-1305228144-1931124329-4138"
|
||||
"CN=Milena Jovanovic,OU=TNP Benutzer,DC=tnp-gruppe,DC=de","Milena Jovanovic","user","3acacb97-c208-4446-a9f5-33787c7d4b70","milena.jovanovic","S-1-5-21-4196924754-1305228144-1931124329-4141"
|
||||
"CN=Maximilian Wirth,OU=TNP Benutzer,DC=tnp-gruppe,DC=de","Maximilian Wirth","user","53311b2b-0c03-470a-98b9-054064a99584","maximilian.wirth","S-1-5-21-4196924754-1305228144-1931124329-4144"
|
||||
"CN=Volker Neumann,OU=TNP Benutzer,DC=tnp-gruppe,DC=de","Volker Neumann","user","891e1491-0eac-4006-9fd8-960dec8d5266","volker.neumann","S-1-5-21-4196924754-1305228144-1931124329-1106"
|
||||
"CN=Jan Treu,OU=TNP Benutzer,DC=tnp-gruppe,DC=de","Jan Treu","user","079ec7f2-a3b1-4182-a862-953bcd3c0c0a","jan.treu","S-1-5-21-4196924754-1305228144-1931124329-1107"
|
||||
"CN=Julia Weiske,OU=TNP Benutzer,DC=tnp-gruppe,DC=de","Julia Weiske","user","f4dc59c5-f55d-47ce-b24d-909a998af89b","julia.weiske","S-1-5-21-4196924754-1305228144-1931124329-1109"
|
||||
"CN=Kati Guckel,OU=TNP Benutzer,DC=tnp-gruppe,DC=de","Kati Guckel","user","590757b8-d4e8-45ba-9094-a965a7be7008","kati.guckel","S-1-5-21-4196924754-1305228144-1931124329-1110"
|
||||
"CN=Petra Schubert,OU=TNP Benutzer,DC=tnp-gruppe,DC=de","Petra Schubert","user","c037b750-44d5-4137-a2f1-3a5fd3e29308","petra.schubert","S-1-5-21-4196924754-1305228144-1931124329-1112"
|
||||
"CN=Susanne Eisel,OU=TNP Benutzer,DC=tnp-gruppe,DC=de","Susanne Eisel","user","2e7c23fa-da52-463d-8bf2-914b95abeabf","susanne.eisel","S-1-5-21-4196924754-1305228144-1931124329-1114"
|
||||
"CN=Tobias Zander,OU=TNP Benutzer,DC=tnp-gruppe,DC=de","Tobias Zander","user","2e05a40a-6fb7-44be-9516-b5c151c415ee","tobias.zander","S-1-5-21-4196924754-1305228144-1931124329-1115"
|
||||
"CN=Eva-Maria Lehmann,OU=TNP Benutzer,DC=tnp-gruppe,DC=de","Eva-Maria Lehmann","user","bf7c0205-b0c9-48e5-97f6-bbc009758560","eva-maria.lehmann","S-1-5-21-4196924754-1305228144-1931124329-2611"
|
||||
"CN=Abdalrahman Islambouli,OU=TNP Benutzer,DC=tnp-gruppe,DC=de","Abdalrahman Islambouli","user","c3e294c2-ae05-43ee-9bd0-9b9a227fe65c","Islambouli","S-1-5-21-4196924754-1305228144-1931124329-2619"
|
||||
"CN=Maike Hinrichs,OU=TNP Benutzer,DC=tnp-gruppe,DC=de","Maike Hinrichs","user","cfe67a05-06d0-443b-8bbd-73d0d81aadf5","maike.hinrichs","S-1-5-21-4196924754-1305228144-1931124329-2622"
|
||||
"CN=Admin-Test-User,OU=TNP Benutzer,DC=tnp-gruppe,DC=de","Admin-Test-User","user","f48f294d-f644-46e1-b701-f843985e0251","ad-test-user","S-1-5-21-4196924754-1305228144-1931124329-2668"
|
||||
"CN=Manuela Blecha,OU=TNP Benutzer,DC=tnp-gruppe,DC=de","Manuela Blecha","user","2ddbc19a-42b7-48ed-bb9d-5a7eb503cfe6","manuela.blecha","S-1-5-21-4196924754-1305228144-1931124329-4103"
|
||||
"CN=Paula Wagner,OU=TNP Benutzer,DC=tnp-gruppe,DC=de","Paula Wagner","user","2a75206d-facc-48d4-9f96-62a767afdf40","paula.wagner","S-1-5-21-4196924754-1305228144-1931124329-4125"
|
||||
"CN=Oliver Klöcker,OU=TNP Benutzer,DC=tnp-gruppe,DC=de","Oliver Klöcker","user","232094a2-831a-4ad2-8836-e59a8546fb82","oliver.klöcker","S-1-5-21-4196924754-1305228144-1931124329-4128"
|
||||
"CN=Winz Sabine,OU=TNP Benutzer,DC=tnp-gruppe,DC=de","Winz Sabine","user","3efc64e9-3f06-4722-ad47-6596feb9ffc0","winz.sabine","S-1-5-21-4196924754-1305228144-1931124329-4145"
|
||||
|
@@ -1,4 +0,0 @@
|
||||
|
||||
# ssh_tunnel.server_start()
|
||||
# set_system_info("172.19.1.5")
|
||||
# ssh_tunnel.server_stop()
|
||||
Reference in New Issue
Block a user