mirror of https://git.kore.io/kore.git
initial python example.
don't look too much into this yet.
This commit is contained in:
parent
21f9c29f31
commit
ff48aed926
|
@ -0,0 +1,6 @@
|
|||
*.o
|
||||
.flavor
|
||||
.objs
|
||||
python.so
|
||||
assets.h
|
||||
cert
|
|
@ -0,0 +1,35 @@
|
|||
# python build config
|
||||
# You can switch flavors using: kore flavor [newflavor]
|
||||
|
||||
# Set to yes if you wish to produce a single binary instead
|
||||
# of a dynamic library. If you set this to yes you must also
|
||||
# set kore_source together with kore_flavor and update ldflags
|
||||
# to include the appropriate libraries you will be linking with.
|
||||
#single_binary=no
|
||||
#kore_source=/home/joris/src/kore
|
||||
#kore_flavor=
|
||||
|
||||
# The flags below are shared between flavors
|
||||
cflags=-Wall -Wmissing-declarations -Wshadow
|
||||
cflags=-Wstrict-prototypes -Wmissing-prototypes
|
||||
cflags=-Wpointer-arith -Wcast-qual -Wsign-compare
|
||||
|
||||
cxxflags=-Wall -Wmissing-declarations -Wshadow
|
||||
cxxflags=-Wpointer-arith -Wcast-qual -Wsign-compare
|
||||
|
||||
# Mime types for assets served via the builtin asset_serve_*
|
||||
#mime_add=txt:text/plain; charset=utf-8
|
||||
#mime_add=png:image/png
|
||||
#mime_add=html:text/html; charset=utf-8
|
||||
|
||||
dev {
|
||||
# These flags are added to the shared ones when
|
||||
# you build the "dev" flavor.
|
||||
cflags=-g
|
||||
cxxflags=-g
|
||||
}
|
||||
|
||||
#prod {
|
||||
# You can specify additional flags here which are only
|
||||
# included if you build with the "prod" flavor.
|
||||
#}
|
|
@ -0,0 +1,39 @@
|
|||
# python configuration
|
||||
|
||||
load ./python.so onload
|
||||
python_import src/index.py onload
|
||||
|
||||
#bind 127.0.0.1 8888 c_on_connect
|
||||
bind 127.0.0.1 8888
|
||||
|
||||
tls_dhparam dh2048.pem
|
||||
|
||||
validator v_id function c_validator
|
||||
validator v_p_id function python_validator
|
||||
validator v_auth function python_auth
|
||||
|
||||
authentication auth {
|
||||
authentication_type request
|
||||
authentication_validator v_auth
|
||||
}
|
||||
|
||||
domain * {
|
||||
certfile cert/server.crt
|
||||
certkey cert/server.key
|
||||
|
||||
static / page
|
||||
static /c cpage
|
||||
static /b minimal
|
||||
static /json json_parse
|
||||
static /state state_test
|
||||
|
||||
static /auth page auth
|
||||
|
||||
params get / {
|
||||
validate id v_p_id
|
||||
}
|
||||
|
||||
params get /c {
|
||||
validate id v_id
|
||||
}
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
-----BEGIN DH PARAMETERS-----
|
||||
MIIBCAKCAQEAn4f4Qn5SudFjEYPWTbUaOTLUH85YWmmPFW1+b5bRa9ygr+1wfamv
|
||||
VKVT7jO8c4msSNikUf6eEfoH0H4VTCaj+Habwu+Sj+I416r3mliMD4SjNsUJrBrY
|
||||
Y0QV3ZUgZz4A8ARk/WwQcRl8+ZXJz34IaLwAcpyNhoV46iHVxW0ty8ND0U4DIku/
|
||||
PNayKimu4BXWXk4RfwNVP59t8DQKqjshZ4fDnbotskmSZ+e+FHrd+Kvrq/WButvV
|
||||
Bzy9fYgnUlJ82g/bziCI83R2xAdtH014fR63MpElkqdNeChb94pPbEdFlNUvYIBN
|
||||
xx2vTUQMqRbB4UdG2zuzzr5j98HDdblQ+wIBAg==
|
||||
-----END DH PARAMETERS-----
|
|
@ -0,0 +1,92 @@
|
|||
# Simplistic kore example
|
||||
|
||||
import kore
|
||||
import json
|
||||
|
||||
def python_auth(req, data):
|
||||
# print("python auth called %s" % data)
|
||||
return kore.RESULT_OK
|
||||
|
||||
def python_validator(req, data):
|
||||
print("python validator called %s" % data)
|
||||
return kore.RESULT_OK
|
||||
|
||||
def python_handle(c):
|
||||
print("python_handle %s" % c)
|
||||
|
||||
def python_on_connect(c):
|
||||
c.proto = kore.CONN_PROTO_UNKNOWN;
|
||||
c.state = kore.CONN_STATE_ESTABLISHED;
|
||||
c.handle = python_handle
|
||||
print("onconnect %s" % c)
|
||||
|
||||
def onload(action):
|
||||
kore.log(kore.LOG_INFO, "FOOBAR python onload called with %d" % action)
|
||||
return kore.RESULT_OK
|
||||
|
||||
def kore_onload():
|
||||
print("kore_onload called")
|
||||
|
||||
def kore_preload():
|
||||
print("kore_preload called")
|
||||
|
||||
def page(req):
|
||||
# print("%s path is %s - host is %s" % (req, req.path, req.host))
|
||||
# print("connection is %s" % req.connection)
|
||||
xframe = req.request_header("xframe")
|
||||
# if xframe != None:
|
||||
# print("xframe header present %s" % xframe)
|
||||
if req.method == kore.METHOD_POST:
|
||||
try:
|
||||
length, body = req.body_read(1024)
|
||||
print("POST and got %d bytes! (%s)" %
|
||||
(length, body.decode("utf-8")))
|
||||
except RuntimeError as r:
|
||||
print("oops runtime error %s" % r)
|
||||
req.response(500, b'')
|
||||
except:
|
||||
print("oops other error")
|
||||
req.response(500, b'')
|
||||
else:
|
||||
req.response_header("content-type", "text/plain")
|
||||
req.response(200, body)
|
||||
else:
|
||||
req.populate_get()
|
||||
req.response_header("content-type", "text/plain")
|
||||
req.response(200, "hello 1234".encode("utf-8"))
|
||||
return kore.RESULT_OK
|
||||
|
||||
def json_parse(req):
|
||||
if req.method != kore.METHOD_PUT:
|
||||
req.response(400, b'')
|
||||
return kore.RESULT_OK
|
||||
|
||||
data = json.loads(req.body)
|
||||
print("loaded json %s" % data)
|
||||
if data["hello"] == 123:
|
||||
print("hello is 123!")
|
||||
|
||||
req.response(200, "ok".encode("utf-8"))
|
||||
return kore.RESULT_OK
|
||||
|
||||
def state_test(req):
|
||||
# If we don't have a state this is the first time we're called.
|
||||
if req.state is None:
|
||||
print("state_test: first time")
|
||||
req.state = "hello world"
|
||||
|
||||
# Tell Kore to call us again next event loop.
|
||||
return kore.RESULT_RETRY
|
||||
|
||||
# We have been called before.
|
||||
print("state_test: second time, with %s" % req.state)
|
||||
req.response(200, req.state.encode("utf-8"))
|
||||
|
||||
# We *MUST* reset state back to None before returning RESULT_OK
|
||||
req.state = None;
|
||||
|
||||
return kore.RESULT_OK
|
||||
|
||||
def minimal(req):
|
||||
req.response(200, b'')
|
||||
return kore.RESULT_OK
|
|
@ -0,0 +1,38 @@
|
|||
#include <kore/kore.h>
|
||||
#include <kore/http.h>
|
||||
|
||||
int onload(int);
|
||||
int cpage(struct http_request *);
|
||||
void c_on_connect(struct connection *);
|
||||
int c_validator(struct http_request *, void *);
|
||||
|
||||
int
|
||||
c_validator(struct http_request *req, void *data)
|
||||
{
|
||||
printf("c_validator called!\n");
|
||||
return (KORE_RESULT_OK);
|
||||
}
|
||||
|
||||
void
|
||||
c_on_connect(struct connection *c)
|
||||
{
|
||||
printf("c_on_connect!\n");
|
||||
}
|
||||
|
||||
int
|
||||
onload(int action)
|
||||
{
|
||||
printf("C onload called!\n");
|
||||
return (KORE_RESULT_OK);
|
||||
}
|
||||
|
||||
int
|
||||
cpage(struct http_request *req)
|
||||
{
|
||||
http_populate_get(req);
|
||||
|
||||
//printf("cpage called\n");
|
||||
http_response(req, 200, NULL, 0);
|
||||
|
||||
return (KORE_RESULT_OK);
|
||||
}
|
Loading…
Reference in New Issue