Lilith API Walkthorough 01-05-2016, 10:40 AM
#1
Yay, more tools! And a hostname to boot!
Anyway, it's 4 AM again, and I just finished the first few patches on my API server, so I thought I'd do a runthrough of how it all works.
If you've looked at the project page (link in my sig), you'll have seen that there are two ways of using Lilith: POST and Query Strings. POST requests will become more important when I add any kind of file management API, so We'll go over the Query String option first.
Query Strings, as a refresher, are the text following a question mark in a url. This text usually represents input values for html forms, but can be parsed to a hash table with PHP, which is what I did.
To get a response from Lilith with a Query, it's just the following few lines with python:
Or just one with curl:
An example of what to use could be 'ip', which doesn't take arguments, or 'gw-ip', which would take a domain name, ie 'sinister.ly', as it's parameter.
You can also choose which output format you want from either json (which is the default), plain text, or j-box, from J Language. You can access these by passing the rtype parameter in your Query.
For the POSTing side of things, using RESTful APIs can get really confusing in some languages, so I'm just going to stick with python.
Basic ip request:
More complex DNS resolution with jbox return type:
Sorry this wasn't super informative, I should be waking up in 2 hours, so I'm kinda tired. Anyway, enjoy, and feel free to check out the project.
EDIT: POST requests are fucked in python, so just stick with Query Strings.
Anyway, it's 4 AM again, and I just finished the first few patches on my API server, so I thought I'd do a runthrough of how it all works.
If you've looked at the project page (link in my sig), you'll have seen that there are two ways of using Lilith: POST and Query Strings. POST requests will become more important when I add any kind of file management API, so We'll go over the Query String option first.
Query Strings, as a refresher, are the text following a question mark in a url. This text usually represents input values for html forms, but can be parsed to a hash table with PHP, which is what I did.
To get a response from Lilith with a Query, it's just the following few lines with python:
Code:
from requests import get
print get('http://lilithapi.red?action=<action>[&args=[args]]).text
Code:
curl 'http://lilithapi.red?action=<action>[&args=[args]]'
An example of what to use could be 'ip', which doesn't take arguments, or 'gw-ip', which would take a domain name, ie 'sinister.ly', as it's parameter.
You can also choose which output format you want from either json (which is the default), plain text, or j-box, from J Language. You can access these by passing the rtype parameter in your Query.
Code:
#json
$ curl 'http://lilithapi.red?action=ip'
{"ip": "0.0.0.0"}
#text
$ curl 'http://lilithapi.red?action=ip&rtype=text'
ip | 0.0.0.0
#jbox
$ curl 'http://lilithapi.red?action=ip&rtype=jbox'
+----+---------+
| ip | 0.0.0.0 |
+----+---------+
For the POSTing side of things, using RESTful APIs can get really confusing in some languages, so I'm just going to stick with python.
Basic ip request:
Code:
from requests import post
print post(url='http://lilithapi.red',files={'action': 'ip'}).text
More complex DNS resolution with jbox return type:
Code:
from requests import post
print post(
url='http://lilithapi.red', #base url
files={ #start of parameters
'action': 'gw-ip', #equivilant to ?action=gw-ip
'args': 'sinister.ly', #args=sinister.ly
'rtype': 'jbox' #rtype=jbox
}
).text #get the text from the page
Sorry this wasn't super informative, I should be waking up in 2 hours, so I'm kinda tired. Anyway, enjoy, and feel free to check out the project.
EDIT: POST requests are fucked in python, so just stick with Query Strings.