Added Birdnetes models'

This commit is contained in:
kunkliricsi 2020-12-01 16:27:26 +01:00
parent 02df37692f
commit 544df78ac8
3 changed files with 1664 additions and 1539 deletions

View File

@ -73,6 +73,11 @@
url = {https://github.com/RicoSuter/NSwag}, url = {https://github.com/RicoSuter/NSwag},
} }
@misc{hmacsha512,
title = {Az HMACSHA512 dokumentációja},
url = {https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.hmacsha512},
}
@thesis{birdnetes-tdk, @thesis{birdnetes-tdk,
author = {Torma Kristóf és Pünkösdi Marcell}, author = {Torma Kristóf és Pünkösdi Marcell},
institution = {Budapesti Műszaki és Gazdaságtudományi Egyetem}, institution = {Budapesti Műszaki és Gazdaságtudományi Egyetem},

View File

@ -1,5 +1,5 @@
%---------------------------------------------------------------------------- %----------------------------------------------------------------------------
\chapter{Backend} \chapter{Szerver oldal}
\label{chapt:birdmap-backend} \label{chapt:birdmap-backend}
%---------------------------------------------------------------------------- %----------------------------------------------------------------------------
Ebben a fejezetben bemutatom a szerveroldal architektúráját, felépítését. Ismertetem a különböző szoftver komponensek feladatát. Ebben a fejezetben bemutatom a szerveroldal architektúráját, felépítését. Ismertetem a különböző szoftver komponensek feladatát.
@ -60,7 +60,7 @@ mert szerettem volna, hogyha a kezelőfelületen lehetne őket szerkeszteni, tö
Az alkalmazás használata szempontjából a felhasználók két csoportba oszlanak. Az alkalmazás használata szempontjából a felhasználók két csoportba oszlanak.
Vannak adminisztrátor és sima felhasználók, utóbbi csak az adatok olvasására, míg előbb azok módosítására is jogosult. Vannak adminisztrátor és sima felhasználók, utóbbi csak az adatok olvasására, míg előbb azok módosítására is jogosult.
Ennek a megkülönböztetésnek a jelzője a \verb+Role+ osztály tulajdonság. A \verb+Role+ mező ennek a megkülönböztetsnek a jelzője.
%---------------------------------------------------------------------------- %----------------------------------------------------------------------------
\subsection{Seedelés} \subsection{Seedelés}
@ -73,17 +73,35 @@ Majd hozzáadja az újonnan beolvasott értékeket.
%---------------------------------------------------------------------------- %----------------------------------------------------------------------------
\section{Üzleti logikai réteg} \section{Üzleti logikai réteg}
%---------------------------------------------------------------------------- %----------------------------------------------------------------------------
Ebben a rétegben található meg a szerver legtöbb szolgáltatása. It vannak implementálva a Birdnetes Command and Control és Input komponenseivel kommunikáló szolgáltatások is, Ebben a rétegben található meg a szerver legtöbb szolgáltatása. It vannak implementálva a Birdnetes Command and Control és Input komponensekkel kommunikáló szolgáltatások is,
melyeket azok OpenAPI leírói alapján az NSwag\cite{nswag} alkalmazással generáltam. melyeket azok OpenAPI leírói alapján az NSwag\cite{nswag} alkalmazással generáltam. Az OpenAPI a klienseken kívül definiálja még az azok által használt modelleket is.
A Command and Control által használt \verb+Device+ modell tartalmazza annak egyedi azonosítóját, státuszát, koordinátáit és a használt szenzorok listáját,
melyeknek szintén van egy modellje \verb+Sensor+ néven. Ennek szintén van azonosítója és státusza. Az Input szolgáltatásnak is van saját modellje,
amely a hangüzenetek metaadatait reprezentálja. Többek között tartalmazza a kihelyezett eszköz egyedi azonosítóját és a hangüzenet keltének dátumát.
Ugyan itt található meg a \verb+User+ és \verb+Service+ entitások létrehozásáért, olvasásáért, szerkesztéséért és törléséért felelős szolgáltatások is. Ugyan itt található meg a \verb+User+ és \verb+Service+ entitások létrehozásáért, olvasásáért, szerkesztéséért és törléséért felelős szolgáltatások is.
Valamint itt található még az autentikációért felelős szolgáltatás is. A felhasználók jelszavainak tárolására a HMAC (Hash-based Message Authentication Code) algorithmust, Valamint itt található még az autentikációért felelős szolgáltatás is. A felhasználók jelszavainak tárolására a HMAC (Hash-based Message Authentication Code) algorithmust,
pontosabban annak a \verb+HMACSHA512+ C\# implementációját használtam. pontosabban annak a \verb+HMACSHA512+\cite{hmacsha512} C\# implementációját használtam.
Minden jelszóhoz generálok egy egyedi kulcsot és azzal egy hash-t és ezeket tárolom a \verb+User+ modell \verb+PasswordSalt+ és \verb+PasswordHash+ mezőiben. Minden jelszóhoz generálok egy egyedi kulcsot és azzal egy hash-t, majd ezeket tárolom a \verb+User+ modell \verb+PasswordSalt+ és \verb+PasswordHash+ mezőiben.
Amikor egy felhasználó be akar jelentkezni először megvizsgálom, hogy egyáltalán létezik-e az adatbázisban a megadott nevű felhasználó Amikor egy felhasználó be akar jelentkezni először megvizsgálom, hogy egyáltalán létezik-e az adatbázisban az adott nevű felhasználó,
és ha igen a megadott jelszóból az imént említett folyamattal generált kulcsot és hash-t összehasonlítom az adatbázisban tárolttal. ha igen, akkor a megadott jelszóból az imént említett folyamattal generált kulcsot és hash-t összehasonlítom az adatbázisban tárolttal.
%---------------------------------------------------------------------------- %----------------------------------------------------------------------------
\section{Megjelenítési réteg} \section{Megjelenítési réteg}
%---------------------------------------------------------------------------- %----------------------------------------------------------------------------
program.cs startup.cs
middlewares
logolás
seedelés
%----------------------------------------------------------------------------
\subsection{Szolgáltatások}
%----------------------------------------------------------------------------
mqtt
signalR
%----------------------------------------------------------------------------
\subsection{Kontrollerek}
%----------------------------------------------------------------------------
Controllersw
Dtos
mapper

File diff suppressed because it is too large Load Diff