whois / at.hs3.pl

Zamieszanynot7cd, mw
Rozpoczęto2018-01-12
Status

Działa na at.hs3.pl

Repo https://github.com/hs3city/whois
Tagi

Ogólnie fajnie by było wiedzieć czy ktoś jest w hs'ie. Aktualnie jest działający skrypt dla mikrotika, który wysyła co jakiś czas POST'a do bazy danych po stronie serwera.

Stack

  1. Mikrotik
  2. Flask
  1. Zarejestruj się będąc w spejsie
    1. Najlepiej nick zgodny z wiki
    2. Tak, hasła są hashowane
  2. Zajmij urządzenia które są twoje
    1. Jeżeli nic nie widać poczekaj maks 15 minut, mikrotik powinien je już wysłać
    2. Uwaga, to samo urządzenie może mieć kilka interfejsów sieciowych
  3. Ustaw flagi dla urządzenia (z ctrl wiele)
  4. W profilu możesz ustawić flagi dla siebie i zmienić dane
  5. Czasem wpadnij zaktualizować swoje urządzenia
  6. Na slacku użyj komendy /ktohakuje
    1. Nie panikuj kontener z botem wolno wstaje
    2. Panikuj, spotty-kiwi nie żyje, napraw, po dostęp uderzaj do not7cd naprawiane
  7. Wykorzystaj endpoint http://at.hs3.pl/api/now w swoim projekcie
  1. Na wewnętrznym serwerze stoi aplikacja która nasłuchuje requestów z routera.
  2. Router mikrotik wysyła listę leasów na adres serwera co 12
  3. Serwer zbiera informacje o urządzeniach i ich właścicielach
  4. Serwer wystawia jeden JSON GET z aktywnością z ostatnich 30 minut
  5. Slack bot wysyła zapytanie na at.hs3.pl gdy wywołany

Skrypt dla Mikrotik z RouterOS >= 6.39

# Get DHCP leases records and send selected fields (MAC ADDRESS, HOST NAME, LAST SEEN and STATUS) to a webservice via POST.
:put "Get DHCP leases";
:local leases "";
:foreach i in=[/ip dhcp-server lease find] do={ 
  :local dhcp [/ip dhcp-server lease get $i] 
  :local client "\"mac\":\"$($dhcp->"active-mac-address")\",\"name\":\"$($dhcp->"host-name")\",\"last\":\"$($dhcp->"last-seen")\",\"status\":\"$($dhcp->"status")\"";
  :set $leases ($leases, $client);
}
:local json "[";
:local first true;
:foreach k,v in $leases do={
  if ([:len $v] > 0) do={
    if ($first = true) do={
     :set $json ($json .  "{" . $v . "}");
    } else={
      :set $json ($json . ",{" .  $v . "}");
    };
    :set $first false;
  }
}
:set $json ($json."]");
:local data ("data=" . $json);
:do {
  :put "Send DHCP leases";
  /tool fetch mode=http url="http://webservice" keep-result=yes dst-path="sendleases.txt" http-method="post" http-data=$data;
} on-error={
  :put "Send DHCP leases failed!";
  log warning "Send DHCP leases failed!";
}

Skrypt wysyła dane w parametrze data sformatowane do json:

data=[{"mac":"11:22:33:44:55:66","name":"Dom","last":"50w6d16h1m10s","status":"waiting"},{"mac":"AA:BB:CC:DD:EE:FF","name":"HS","last":"4d1h58m8s","status":"bound"}]

Proof of Concept: skrypt na mikrotiku komunikujący się z aplikacją — 2018/03/03 5:36


Program uruchomiony na serwerze w HS — not7cd, mroz 2018/03/25 16:18


Forwad i DNS na serwer + Bot na slackunot7cd 2018/04/08 12:38


Hairpin NAT1) dla at.hs3.pl Sensowny docker w testach — not7cd 2018/04/15 13:54


glitch.com coś zmienił z SQlite więc spotty-kiwi nie działa — 2018/04/22 15:17


Prawilny deployment na Serwer na laptopie. — allgreed 2018/04/25 23 z hakiem


Instalacja nginx + certbot (https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-16-04), konfiguracja nginx w trybie reverse proxy dla at.hs3.pl, przekierowanie portu na routerze. MAMY HTTPS! Do zrobienia zostało - całkowite ukrycie at.hs3.pl za reverse proxy (aktualnie port 80 jest serwowany bezpośrednio przez aplikację) — mroz 2018/07/01 16:40not7cd 2018/07/01 16:40


kontener wywalony na 127.0.0.1:6000 dostęp tylko przez proxy ngnix'a — not7cd 2018/07/04 17:57


  • projekty/whois.txt
  • ostatnio zmienione: 2018/07/04 17:58
  • przez not7cd