'''
Server begrüßt den Nutzer im Server mit seinem Namen.
Der Nutzer muss seinen Namen in der Adresszeile des Browsers hinter die Server-Adresse schreiben (getrennt durch ein /-Zeichen).
'''

import network
import socket
from time import time

# Wlan-Zugangsdaten; hier Ihre Wlan-Daten eintragen:
ssid = 'mipamipa'
password = 'Asdfghjkl1234'

def getrequest(connection):
  result = ''
  block_size = 64 # nur zum Test so klein, sonst z. B. 512
  while True:
    data = connection.recv(block_size)
    result += str(data, 'UTF-8')        
    if result.find('\r\n\r\n') >= 0: # Ende des Requests gefunden
      break
  return result  

def http_header():
  return '''HTTP/1.1 200 OK\r
Content-Type: text/html\r
Connection: close\r
\r
'''

def html(request):
  getparam = request.split(' ')[1] # Element 1 von ['GET', '/name', ... ]
  myname = getparam[1:] # '/' gehört nicht zum Namen
  return '<html><body><h1>Hallo '+myname+'</h1></body></html>' 

# Konfiguration des Wlans:
station = network.WLAN(network.STA_IF)
station.active(True)
station.connect(ssid, password) 
time0 = time()
while (not station.isconnected()) and (time() - time0 < 5):
  pass

if station.isconnected():
  print('Wlan connected')
  print(station.ifconfig()) # zur Information
  s = socket.socket() # Socket des Servers
  s.bind(('', 80))
  s.listen(5) 
  print('Server listening')
  print('--------------------------------------')
  
  # Daten holen;
  while True:
      connection, addr = s.accept()
      print("Client connected: ", addr) # bei manchen Browser connected ohne Senden eines HTML-Requests!
      request = getrequest(connection)
      connection.send(http_header())
      print(http_header()) # zur Kontrolle
      connection.send(html(request))
      print(html(request)) # zur Kontrolle
      connection.close()
      print('--------------------------------------------')
 
station.active(False)
print('Wlan deactivated')
print('Please reset!')

    
