Serve.py
Allikas: Lambda
#!/usr/bin/python
print "Content-type: text/html"
print
# Pane see programm kataloogi /home/kasutajanimi/public_html/cgi-bin
# ja ytle samas kasurealt
# chmod a+rx serve.py
# See programm laheb kaima, kui avad urli
# http://dijkstra.cs.ttu.ee/~kasutajanimi/cgi-bin/serve.py
# kasutame neid pythonisse sisse ehitatud standardteeke
import sqlite3
import json
import cgi
import cgitb
# see annab debugimiseks arusaadavaid veateateid brauserile
cgitb.enable()
# sinu programm, mis pannakse paringu peale kaima
def getdata():
args = cgi.FieldStorage()
# vaata, kas urlil anti key, op ja val parameetrid
key=args.getvalue("key",'')
op=args.getvalue("op",'')
val=args.getvalue("val",'')
# vota baasiga yhendust, valmista ette paring
conn = sqlite3.connect('data.db')
cur = conn.cursor()
# hakka kokku panema paringu-sqli, alustades standardosast
sql="""select id,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10 from maintable """
# kui olid olemas key, op ja val, siis ehita where tingimus
if key and val:
if not op: # vaikimisi olgu op =
op = "="
# kontrollime, kas parameetrid ok
if (not (key in ["id","c1","c2","c3","c4","c5","c6","c7","c8","c9","c10"])
or
not (op in ["=","<",">","!="])):
# valed parameetrid, sulge yhendus
cur.close()
conn.close()
# anna veateade ja lopeta
return('"error"')
# siin koik ok
where = " where " + key + op + "?"
args = [val]
else:
where=""
args=None
# liida where tingimus sql standardosale
sql = sql + where
# liida sql lausele sorteering
sql = sql + " order by id asc"
# tryki debugimiseks sql lause ja args valja
# print(sql,args)
# tee paring baasi
if args:
cur.execute(sql,args)
else:
cur.execute(sql)
# loe koik read sisse, mis paringuga klapivad
res=cur.fetchall()
# sulge yhendus
cur.close()
conn.close()
# teisenda saadud tulemus json formaati ja anna vastuseks
print(json.dumps(res))
# see paneb tegelikult programmi algul kaima:
getdata()