From 2c3e4bb2dd9a245927ca4ecf39126d2a8889e7c0 Mon Sep 17 00:00:00 2001 From: System Administrator <apave001@gold.ac.uk> Date: Wed, 19 Dec 2018 14:46:31 +0000 Subject: [PATCH] Initial Commit --- cgi-bin/.myserve_cat.py.swp | Bin 0 -> 12288 bytes cgi-bin/__pycache__/myutils.cpython-35.pyc | Bin 0 -> 746 bytes cgi-bin/myserve_cat.py | 83 +++++++++++++++++++++ cgi-bin/myservecat.py | 0 cgi-bin/myutils.py | 30 ++++++++ dump/catflucks/accounts.bson | Bin 0 -> 11357 bytes dump/catflucks/accounts.metadata.json | 1 + dump/catflucks/flucks.bson | Bin 0 -> 5150 bytes dump/catflucks/flucks.metadata.json | 1 + dump/catflucks/images.bson | Bin 0 -> 4375 bytes dump/catflucks/images.metadata.json | 1 + dump/catflucks/system.indexes.bson | Bin 0 -> 215 bytes mysimpleServer.py | 26 +++++++ 13 files changed, 142 insertions(+) create mode 100644 cgi-bin/.myserve_cat.py.swp create mode 100644 cgi-bin/__pycache__/myutils.cpython-35.pyc create mode 100755 cgi-bin/myserve_cat.py create mode 100644 cgi-bin/myservecat.py create mode 100755 cgi-bin/myutils.py create mode 100644 dump/catflucks/accounts.bson create mode 100644 dump/catflucks/accounts.metadata.json create mode 100644 dump/catflucks/flucks.bson create mode 100644 dump/catflucks/flucks.metadata.json create mode 100644 dump/catflucks/images.bson create mode 100644 dump/catflucks/images.metadata.json create mode 100644 dump/catflucks/system.indexes.bson create mode 100755 mysimpleServer.py diff --git a/cgi-bin/.myserve_cat.py.swp b/cgi-bin/.myserve_cat.py.swp new file mode 100644 index 0000000000000000000000000000000000000000..85001640de113c39d8f680b7b15c483463167daf GIT binary patch literal 12288 zcmeI2F>fR_6vusZdvI_Z)lt37B4t-fcC!}{QM9`S$w^#+f|MNS6pqL<<DD5YV-L1x zmn8~(2Si7~2RMm>jsgjZ1|$kVlt2wNrz@a<zh`z61maQy9_g>0v7evq-+Rwe6o(tH z+<J+g?>)=#TxIOTuYWuI>I23;yTTYR`BZFd3|!a4o>)bjgRO^IG=1+Z9rj~6>n}e_ zt=<rk?MF$r9%iy%%#F}faTIaeE9Vz`^%kChCvYKw%1+j|uH4?dG1zdn?O=tTx_0}* zVcx(K@B};oPrwuK1Uvyxz!UHU{yPM0d5OJ??L4yB(v8LMrN8_xKK+j;;0bsFo`5Id z33vjYfG6Mycmke)C*TSE3kmR;v0qz^{dgIR$N&GAfB*md1Y<uzUqW9%??DN)1HAyP zK~F>1q2C{8?0e{Q=ws*}^gc9&B$Plmp<QSPx(40H{ethHZ=r9XPoR$=4ZRL+K`YQ@ z=>B7j{Q}*C4xoMLI`rUC#y*9n&@MEFo`kMK53nD%rytzD{No9D0-k^;;0bsFo`5It z{~%D7I+L~&4Ev#q=i^~NwM9M-x~xsAvSnq-s6x<0DJwL&PR3fxG39tqm8M7gFtKSS z6PgKWX{MD-R)+o3`4PDh+pHA?L2sgT!EJ}KA~`ZTTB~1pZr8|I-H}ysG|8*z*mSAe zWvwBnREx<d_=jt+0olyvVieSOVF`C(gYmw*7E4mh+~=^*$8b}Q57Nv~sg!oDlyXC% z5R&T2L`)~A@KgvxJlBH9^PXEd24b0nWsZWA(*S+8d6{LgO-IjdY`|o}AqX(Z9aRz6 zf~J|6ITD;Sm$53aNuCH&6SQFZ#yM-9@0LashrMR!y-6nH4xI$`prb4fwrMYPcYkli z9fvK8yK59=rXeNJKRBgsFH#kP2xx6`9tbm2-PUZ<&@8hl0e)0Rsqs`>%~F9ypF6}W z;Wl%twXhkvARVq^;?=v0R-nL|>t?*3H3QYMxzc&v+@`Y1bC*bDQ_KRO=&I*+PONy# zvKF$U?#U!+VXE9BTiTQ%-MAGPr&X1tq-qL=VC7szl{OgHF{!HZn3T-t2r3P_ESsFU zffq-;@e26J<B&(ki~-c)39UY3cv0qJb(`>EvbWvafKKW3E?bPLLsQ4X^mvkJkzh?7 z)J7sKCKbyV<9c^hxYVEMWyB2vkmrb8rX-G%VLBMUD)Pt`lU20CZ4+@6++d92=(1s5 zfD8>t!Z91x**$(y<he6nS~sn1h=M~trCb|<#H??w1{ky$>*|zpE|XCpB-+mtb!B&N z=ituEH|tV9>)27!V)^R_^HOZrajDON*W}+00yn|gK@f*^@*YJ>O6(K~*v78wcelxy zTOM*F7^|^_M#)|i$1Fz3OQr2ub`yp=gFgk@WU)Z_3LGYi-mHY4yK@4y1=E5bBbd&9 zSsoPS+@OZ1Jj;2QyCX{@^b@4Fj9fu3R#D6=o8?HPX8t%_t{xYDSNfIFeRsoN$SIX` Jn<}}<{s59+_Q3!E literal 0 HcmV?d00001 diff --git a/cgi-bin/__pycache__/myutils.cpython-35.pyc b/cgi-bin/__pycache__/myutils.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..045c8e0d467591f624983cf3c1e4f4638910d7fc GIT binary patch literal 746 zcmZWnJ&)8d5FKYf6S&hhP*Ax*NGWc!chYG^gb;8bDh|XV0ZXxRV(%tLVn?>KtE}!C z;LlJZ{ss+gS}OhmG)%H5I0;Mh<nerX-m`D+?Rnq7{eJhw0r&w|7W(i2&D=rY0CPkF z+<}Zh?!epu!aKmb@CjqM>A}qJZ@*H{eU+q!=8Bh@poLcJlnX-{HNsN0q*|0lun1$N zO|#TibXm&Srb?R2Qmkh5sZuM<F}6bFDmGT9az&$x+C<O|tHz%DQZSAeX+c?}O4~$o zng}gIoFcKdFkujEHk)x#*+j{)(yM@rbx?@HG;lCEI-UmJPb3IFsjod#a-~kPR7e{) zXU%G4aM4cC%w2?P1h$ppBY_Km*YXAsLToDy9+3|KZ{<F`IR`j%;DW$8ff*__^Sj%K zzWAp{tfUkzacULPz`GwmqMTV4F(W*;;b%)NP3XDq^XLq7L;8>=OmdV2OW1!!NPBy$ z?ZhLbo~f8+i83}knobU<!S?nOt(6YxlBJp8O^;X$X2q@%ja%xcen&T~>t2D9+qoMv zyUfb?z44uSf0t7`Jo*f}hiSi#gGA*bU<F%?$>cELa`V^0=Wpf?;#GPOr83B?=Fts4 zNbT`xaVf#|M%#S^7<9;pbcjcWUDweAJUR8d^<c5UAFx==2SwGgYv*gj?Fd((k0tf+ R-tPC^AEIZv2z_Vd`~ekT%18hJ literal 0 HcmV?d00001 diff --git a/cgi-bin/myserve_cat.py b/cgi-bin/myserve_cat.py new file mode 100755 index 0000000..ba914c6 --- /dev/null +++ b/cgi-bin/myserve_cat.py @@ -0,0 +1,83 @@ +#!/usr/bin/env python3 + +from myutils import db_connect + +# make bson ObjectId class available for referencing +# bson objects inside a mongo query string +from bson.objectid import ObjectId +from datetime import datetime +# connect to database +import cgi +import cgitb +cgitb.enable() +form=cgi.FieldStorage() +db = db_connect() + +# output some header html +print("Content-Type: text/html\n") +print("""<!DOCTYPE html> +<html lang="en"> +<head> +<meta charset="utf-8"> +<title>Hello Caflucks</title> +</head> +<body> +<h1>Welcome to Catflucks</h1>""") + + +# get one random document from images collection +result = db.images.aggregate( + [{ '$sample': { 'size': 1 } }] +) + +# if a result came back +if result: + # iterate through objects in the cursor (should only be 1) + for img in result: + # pull out the img url and alt text + img_src = img['url'] + img_alt = img['alt'] + img_id = img['_id'] + + # find and count flucks with matching img_id and where is_flucked is 1 + num_flucks = db.flucks.find( {"image_id": ObjectId(img_id), "is_flucked":1} ).count() + num_nice = db.flucks.find( {"image_id": ObjectId(img_id), "is_nice":1} ).count() + print("""<p>You are viewing a random image of a cat.</p> + <img src="{}" alt="{}" width=500> + <p>This poor cat has been flucked {} times already.</p> + <p>Nice Points {}</p> + <a href="/cgi-bin/myserve_cat.py" title="serve cat">Serve new cat</a> + """.format( img_src, img_alt, str(num_flucks), str(num_nice) )) +else: + print("<p>Oops. Something went wrong!</p>") + +# output some footer html output a form with skip/fluck buttons +print("""<form method="POST" action="/cgi-bin/myserve_cat.py"> + <input type="hidden" value="{}" name="img_id"> + <input name="btn_skip" type="submit" value="Skip"> + <input name="btn_fluck" type="submit" value="Fluck"> + <input name="btn_nice" type="submit" value="Nice"> + </form>""".format( img_id )) +# check if either button clicked and insert a fluck in the database +if 'btn_fluck' in form: + result = db.flucks.insert( { + "image_id":ObjectId(form['img_id'].value), + "is_flucked":1, + "timestamp":datetime.now().timestamp(), + "is_nice":0 + } ) +elif 'btn_skip' in form: + result = db.flucks.insert( { + "image_id":ObjectId(form['img_id'].value), + "is_flucked":0, + "timestamp":datetime.now().timestamp(), + "is_nice":0 + } ) +elif 'btn_nice' in form: + result = db.flucks.insert( { + "image_id":ObjectId(form['img_id'].value), + "is_flucked":0, + "timestamp":datetime.now().timestamp(), + "is_nice":1 + } ) +print("</body></html>") diff --git a/cgi-bin/myservecat.py b/cgi-bin/myservecat.py new file mode 100644 index 0000000..e69de29 diff --git a/cgi-bin/myutils.py b/cgi-bin/myutils.py new file mode 100755 index 0000000..c217a9b --- /dev/null +++ b/cgi-bin/myutils.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python3 + +""" + This module provides a set of reuseable utility functions + This is a Google style docstring by the way. + Read more about them here: + https://www.python.org/dev/peps/pep-0257/ +""" + +from pymongo import MongoClient + +def db_connect(): + """ Provides a connection to mongoDB database + + Returns: + Object: A handle to a mongoDB database + """ + # try to create instance of MongoClient object + try: + client = MongoClient('mongodb://localhost:27017/') + except: + print("Error: failed to create mongo client") + raise + # if we have a mongo client... + else: + # switch to the specified database + db = client.catflucks + # return a handle to the database + return db + diff --git a/dump/catflucks/accounts.bson b/dump/catflucks/accounts.bson new file mode 100644 index 0000000000000000000000000000000000000000..f7495f04a5c0779de913effc8aa4284f27d2a10c GIT binary patch literal 11357 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 Be$)T} literal 0 HcmV?d00001 diff --git a/dump/catflucks/accounts.metadata.json b/dump/catflucks/accounts.metadata.json new file mode 100644 index 0000000..0fbe266 --- /dev/null +++ b/dump/catflucks/accounts.metadata.json @@ -0,0 +1 @@ +{ "indexes" : [ { "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "catflucks.accounts" } ] } \ No newline at end of file diff --git a/dump/catflucks/flucks.bson b/dump/catflucks/flucks.bson new file mode 100644 index 0000000000000000000000000000000000000000..d8f227e8d594e884fd32c51ae4b8faf867510a38 GIT binary patch literal 5150 zcmb8yT};hk90%}!4M&k8DKAAKbSiIQwp?)IBC|HGm|9Lp&J=AGbHR*>3ogvukVqjm zo3flJ3eAW`UMl8oUdA%bDD#p{o9Een`|fwXTeoND>~p@q=l49%@5yr<$Cd5Nb=E{} zJKuOXA|p3CVOWH(D0@SGiD#2H*9jW<LQt`<z*|(DQ&8v>_11N-+uO0!<txa^^O_$X z`~SoEN3I-?XG_WEV)J>m`TVbwr!X$U)P`LS%-jU#ocZ6uDl?ogrE!G01B^}6uQDNo z2~H(U6EJ0_XirooR5Alam21<SPME8}oHfjEl^G!!Xo0K@!aM-xxM7~D%t*qdtR>71 zU~KCSRhcl!K+!_-3DXXYE!rQI8AX`n9fY|JOt~rAOO*+i46MzHgM`5}oQWXJp|U|R z6(-F`HO*+kBwZlP6(}0to?|2fEl|-w7~D6NCe0T$O{8RCZK7HU<A*dS4f9rI#!3d# z^mP)Z0hlVod{vn!$v~Rw4}`%}fER5XVRn5d%tJ_H8~TNsCYmsrLH@w^4PFGCiIEJf zO;<Q!+8~WB+GjP*c*(%pT#O}53oxfl3w%<U36g;{``v`WGtFKE&sAokWFSrHV!~k2 z?CtqfWhO}m(kxj{m}^ipyFK5lOe|quttQM}U~HNWm5C#ae?4LF_B>-+;HSz=Cd}?a z!rX&2wgtLWW{PB>1y=4P%ynRFnjb0?Pnfs^guyfIgelq^l}R8><Wa(48h+SJC5%%& z2*wUjL)0|W2-8qU7`)bOL+jgfx@2H`ZoNeqoS{#fwdqyUBod~noiO##X*P{Ms?U%N zG<4N#!r%$bTVN((F7*)RKBVCdJxemMHf{Zc!8CjvOd`y;(E7laG`>CUDWIQeZo+iN z5T+T5W^d1KwbPO%11(UVNEqxio2E}?QX~UwvnP!(k0FhH-~3XURLMY^Rm%v|3XHuy z_2G85WFU<<lQ1}PSmvFYW{zYajVFsRI1AWoO@HFfl?<dw&nFB{opx>Xx92><v}`8~ zKBM^doKKjVeS=`^(Wy^1X_A4pX+J_390&RPW&vU9DhY%4jXeeQ8G4~)panM85C&%f WenKyj3>3}XM3_d{p7!C<<NO1)M#XXf literal 0 HcmV?d00001 diff --git a/dump/catflucks/flucks.metadata.json b/dump/catflucks/flucks.metadata.json new file mode 100644 index 0000000..a75d15a --- /dev/null +++ b/dump/catflucks/flucks.metadata.json @@ -0,0 +1 @@ +{ "indexes" : [ { "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "catflucks.flucks" } ] } \ No newline at end of file diff --git a/dump/catflucks/images.bson b/dump/catflucks/images.bson new file mode 100644 index 0000000000000000000000000000000000000000..448eb07b3d19f1c0bf05370acab47cae26a117c5 GIT binary patch literal 4375 zcmciEOK;jh5C`yWE>&;6RK3zuE)9>=7~0#EnAB|`COquq5*gco!3MHkFz_|1NR|3Q z`byvLcheqw>=&uI)e%M`)ys8PTKzQh_l%DTA?FWmlN?;~@1NYgc*nea<-yvBIwT$3 zbQl|YH&Ur#(@QencH2o~;HF&5wDr_hX{;(4MfCtgM^Td9VVhhqsHHQ@B&WIGe-6(P zvZgzXTn%25UA=83sO8MB6Ks%JH*~h1@C>RCgM$_wxQUu?GiFgjju)UFVo_$%>8NP{ zVX{#TqqKb7s7E-IB;GCvP)~zYl*C>bMPo-j#-U1M>(<8ZynV`!lHrYdf<rB<loxxY zPH?DYL60Bx6pM-udi<zoSX8S#Drj{8RVbdx6pOum&#@@e6x(VK!0ISF;h@KldVxi? z>XZhRlDzFBJ&YQ~Ua6N@l$9?rEtpd?EuV`Mb#K8$e}zQ#X_J-fd5{XCv%dtDTDWF< z^PSR<+BAz?uaPb)Ot1H~AXaMgrVw_G|LtI0t~XfMEHiT(KEO=g-dlm|E!MSZ)FzDz zK;Hs)1+I5U*H|mLdqKXSP*m*|xZY!3s&K7amjQfFr(u`RBVQk|u1d2EngKAa$@vwy zK4M)`y5r4vk0%VB6}UbjT_dqm+f)IdE1O4Q*MvtOKO<dB<|-H07o=;+T;<~WigiWL zRW7b?SXcC1o$|=nccg3V=Cb?q+<S$sGrwJ2TtBcbyIS3C3;+(M(`@*A<l;KTx}x_G g7uQd$t5NA?RRKWGR=se&W<2us3+syBL;vmi3;2d;7XSbN literal 0 HcmV?d00001 diff --git a/dump/catflucks/images.metadata.json b/dump/catflucks/images.metadata.json new file mode 100644 index 0000000..b12bd68 --- /dev/null +++ b/dump/catflucks/images.metadata.json @@ -0,0 +1 @@ +{ "indexes" : [ { "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "catflucks.images" } ] } \ No newline at end of file diff --git a/dump/catflucks/system.indexes.bson b/dump/catflucks/system.indexes.bson new file mode 100644 index 0000000000000000000000000000000000000000..3a045ae92526736da2b0678107defbc96f47294f GIT binary patch literal 215 zcmZ=~U|<j^V_*bQ%-N}x416Gdd}az*gn=n9F*lWg6(|N2iU)Fw83cix<iwJ+oYLg% qV!h1V#Prl+1_n=%Hd2fcMlmKaIXS;HuLNk2JE;btx(DJc1_l7MI4aQq literal 0 HcmV?d00001 diff --git a/mysimpleServer.py b/mysimpleServer.py new file mode 100755 index 0000000..7999374 --- /dev/null +++ b/mysimpleServer.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python3 +# above 'she-bang' line makes the script executable from command line + +""" A Simple Web Server + Run with ./simpleServer.py + Make sure all cgi scripts are executable + for single script: + chmod +x simpleServer.py + or for a whole directory: + chmod -r +x cgi-bin/ +""" + +import http.server # import http.server module +import cgitb; cgitb.enable() # import and enable cgitb module for exception handling + +PORT = 8000 # specifies the port number to accept connections on + +server = http.server.HTTPServer # provides simple web server +handler = http.server.CGIHTTPRequestHandler # provides request handler +server_address = ("", PORT) # specify server directory and port number +handler.cgi_directories = ["/","/cgi-bin","/htbin"] # where CGI scripts will reside in relation to the `server' directory + +print("Starting server...") # outputs a message +httpd = server(server_address, handler) # creates the server, passing it the server address and port number, as well as the CGI handler (httpd stands for HTTP Daemon) +print("serving at port", PORT) # outputs a message +httpd.serve_forever() # puts program in infinite loop so that the server can `serve_forever' -- GitLab