#Auth prototype (get windows user/password)

dev-linux
Ivan Maslov 5 years ago
parent f8377fec15
commit e438b6e0c6

@ -10,6 +10,7 @@ import Server
import Timer import Timer
import Processor import Processor
import logging import logging
import copy
from Settings import Settings from Settings import Settings
#Создать файл логирования #Создать файл логирования

@ -49,6 +49,13 @@ import importlib
# "FunctionName":"", # "FunctionName":"",
# "ArgList":[], # "ArgList":[],
# "ArgDict":{} # "ArgDict":{}
# },
# {
# "Type":"WindowsLogon",
# "Domain":"",
# "User":"",
# "Password":""
# # Return "Result": True - user is logged on, False - user is not logged on
# } # }
# ] # ]
################################## ##################################
@ -127,7 +134,6 @@ def Activity(inActivity):
if lItem["Type"]=="ProcessStart": if lItem["Type"]=="ProcessStart":
#Вид активности - запуск процесса #Вид активности - запуск процесса
#Запись в массив отработанных активностей #Запись в массив отработанных активностей
lDaemonActivityLogDict[(lItem["activityType"],lActivityDateTime,lItem["processPath"])]={"ActivityStartDateTime":lCurrentDateTime}
#Лог #Лог
mGlobalDict["Processor"]["LogList"].append({"activityType":lItem["activityType"], "activityDateTime":str(lActivityDateTime), "processPath":lItem["processPath"], "activityStartDateTime":str(lCurrentDateTime)}) mGlobalDict["Processor"]["LogList"].append({"activityType":lItem["activityType"], "activityDateTime":str(lActivityDateTime), "processPath":lItem["processPath"], "activityStartDateTime":str(lCurrentDateTime)})
#Запустить процесс #Запустить процесс
@ -140,8 +146,6 @@ def Activity(inActivity):
if lItem["Type"]=="ProcessStop": if lItem["Type"]=="ProcessStop":
#Вид активности - остановка процесса #Вид активности - остановка процесса
#часовой пояс пока не учитываем #часовой пояс пока не учитываем
#Запись в массив отработанных активностей
lDaemonActivityLogDict[(lItem["Type"],lActivityDateTime,lItem["Name"])]={"ActivityStartDateTime":lCurrentDateTime}
#Сформировать команду на завершение #Сформировать команду на завершение
lActivityCloseCommand='taskkill /im '+lItem["processName"] lActivityCloseCommand='taskkill /im '+lItem["processName"]
#TODO Сделать безопасную обработку,если параметра нет в конфигурации #TODO Сделать безопасную обработку,если параметра нет в конфигурации
@ -166,6 +170,24 @@ def Activity(inActivity):
lItem["Result"]=lFunction(*lItem.get("ArgList",[]),**lItem.get("ArgDict",{})) lItem["Result"]=lFunction(*lItem.get("ArgList",[]),**lItem.get("ArgDict",{}))
except Exception as e: except Exception as e:
logging.exception("Loop activity error: module/function not founded") logging.exception("Loop activity error: module/function not founded")
#################################
# Windows logon
#################################
if lItem["Type"] == "WindowsLogon":
import win32security
try:
hUser = win32security.LogonUser(
lItem["User"],
lItem["Domain"],
lItem["Password"],
win32security.LOGON32_LOGON_NETWORK,
win32security.LOGON32_PROVIDER_DEFAULT
)
except win32security.error:
lItem["Result"] = False
else:
lItem["Result"] = True
###################################
#Set datetime stop #Set datetime stop
lItem["DateTimeUTCStringStop"] = datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%S.%f") lItem["DateTimeUTCStringStop"] = datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%S.%f")
################## ##################

@ -1,17 +1,9 @@
from http.server import BaseHTTPRequestHandler, HTTPServer from http.server import BaseHTTPRequestHandler, HTTPServer
import pywinauto
import json import json
import subprocess
import time
import zlib
import os
import PIL
from PIL import ImageGrab
from threading import Thread from threading import Thread
import Processor import Processor
import importlib import importlib
import pdb import pdb
import imp
from desktopmagic.screengrab_win32 import ( from desktopmagic.screengrab_win32 import (
getDisplayRects, saveScreenToBmp, saveRectToBmp, getScreenAsImage, getDisplayRects, saveScreenToBmp, saveRectToBmp, getScreenAsImage,
getRectAsImage, getDisplaysAsImages) getRectAsImage, getDisplaysAsImages)
@ -134,6 +126,31 @@ class testHTTPServer_RequestHandler(BaseHTTPRequestHandler):
# check if file in FileURL - File Path Mapping Dict # check if file in FileURL - File Path Mapping Dict
if lFileURL.lower() in mGlobalDict["FileManager"]["FileURLFilePathDict"]: if lFileURL.lower() in mGlobalDict["FileManager"]["FileURLFilePathDict"]:
self.SendResponseContentTypeFile('application/octet-stream',mGlobalDict["FileManager"]["FileURLFilePathDict"][lFileURL]) self.SendResponseContentTypeFile('application/octet-stream',mGlobalDict["FileManager"]["FileURLFilePathDict"][lFileURL])
# Auth function
if self.path.lower().startswith('/auth'):
# Send response status code
self.send_response(401)
# Send headers
self.send_header('Content-type','text/html')
self.send_header('WWW-Authenticate', 'Basic') #Always ask login pass
lFlagIsKerberos=False
lHeaderAuthorization = self.headers.get("Authorization","").split(" ")
import base64
if len(lHeaderAuthorization) == 2:
llHeaderAuthorizationDecodedUserPasswordList = base64.b64decode(lHeaderAuthorization[1]).decode("utf-8").split(":")
lUser = llHeaderAuthorizationDecodedUserPasswordList[0]
lPassword = llHeaderAuthorizationDecodedUserPasswordList[1]
lDomain = None
if "\\" in lUser:
lDomain = lUser.split("\\")[0]
lUser = lUser.split("\\")[1]
#print(f"Header Authorization, domain: {lDomain}, login: {lUser}, password: {lPassword}")
#self.send_header('Vary', 'negotiative')
#self.send_header('TCN', 'choice')
self.end_headers()
# Write content as utf-8 data
self.wfile.write(bytes("", "utf8"))
#pdb.set_trace()
# POST # POST
def do_POST(self): def do_POST(self):
#Централизованная функция получения запросов/отправки #Централизованная функция получения запросов/отправки

@ -480,7 +480,7 @@
lElementParentElement.insertAdjacentHTML("beforeend",lHTMLCode); lElementParentElement.insertAdjacentHTML("beforeend",lHTMLCode);
} }
///Test ///Test
lTestData = { lTestDataTable = {
"Title":"Test", "Title":"Test",
"Columns":["Дата/Время","Статус","Клиент","Файл"], "Columns":["Дата/Время","Статус","Клиент","Файл"],
"Rows":[ "Rows":[
@ -515,7 +515,7 @@
{"Header":"Head 09","Description":"Test 21.02.2019"} {"Header":"Head 09","Description":"Test 21.02.2019"}
] ]
} }
//mGlobal.Modal.ListFilter.Show(lTestData) mGlobal.Modal.ListFilter.Show(lTestData)
}) })
; ;
</script> </script>

Loading…
Cancel
Save