01 Jan 0001, 00:00

Share

API

El gateway envia un request a http://wifi.tictapps.com/welcome?data=DATA

Siendo data los siguientes datos encodeados en base64:

{
    "ip":"172.22.0.115", 
    "mac-address":"00:db:df:15:42:67", 
    "url":"http://google.com", 
    "gwurl":"http://190.2.3.4/auth/172.22.0.103"
}

Se hacen algunos reemplazos para evitar problemas en la url: (+ -,/ _,= ~)

data=eyJpcCI6IjE3Mi4yMi4wLjExNSIsICJtYWMtYWRkcmVzcyI6IjAwOmRiOmRmOjE1OjQyOjY3Iiw gInVybCI6Imh0dHA6Ly9nb29nbGUuY29tIiwgImd3dXJsIjoiaHR0cDovLzE5MC4yLjMuNC9hcGkvYXV 0aCJ9Cg~~

Como es un Mikrotik hay una direrencia en gwurl:

{
    "ip":"172.22.0.115",
    "mac-address":"00:db:df:15:42:67",
    "url":"http://google.com", 
    "gwurl":"http://wifi.tictapps.com:8080/auth/190.2.3.4"
}

Metodos disponibles

LOGIN

C: POST http://wifi.tictapps.com:8080/auth/190.2.3.4
C: {"ip":"172.22.0.115","mac-address":"00:db:df:15:42:67","group":"paid",
    "type":"login","available":120,"id":"1"}
S: {"status":"ok"}

LOGOUT

C: POST http://wifi.tictapps.com:8080/auth/190.2.3.4
C: {"ip":"172.22.0.115","mac-address":"00:db:df:15:42:67","type":"logout"}
S: {"status":"ok"}

LOGOUT

C: POST http://wifi.tictapps.com:8080/auth/190.2.3.4
C: {"ip":"172.22.0.115","type":"logout"}
S: {"status":"ok"}

LIST (no implementado)

C: POST http://wifi.tictapps.com:8080/auth/190.2.3.4
C: {"type":"list"}
S: {"status":"ok",
    "items":[{"ip":"172.22.0.115","mac-address":"00:db:df:15:42:67",
              "group":"paid","available":45,"timestamp":1427816763}]}

Proceso con Mikrotik

mikrotik —> /inform El mikrotik hace un POST con datos (mac ip nas)

api/inform —> tomcat data=xxx Se hace la redireccion al portal con los parametros data=xxx (mac ip url gwurl)

tomcat —> /auth?nas=x.x.x.x Se hace el POST con login/logout para permitir al usuario

Aqui api/auth debe agregar al radius el usuario

Pruebas

Enviar Radius

echo "User-Name=1.2.3.4,Password=''" | radclient -x wifi.tictapps.com auth key
echo "Framed-IP-Address=10.5.50.254,Session-Timeout=600" | radclient -x \
    -t10 -r3 172.22.0.112 coa Baicom6710

Crear usuario

>>> from models import User
>>> user = User('1:2:3:4','1.2.3.4','vip',1200)
>>> db.session.add(user)
>>> db.session.commit()

DNS

Poner los DNS de BAICOM con filtros, agregar la ip publica