diff options
| -rwxr-xr-x | bin/pep-proxy.py | 31 | ||||
| -rwxr-xr-x | bin/proxy.py | 13 | ||||
| -rw-r--r-- | bin/sql_build.sql | 17 | ||||
| -rw-r--r-- | cgi-bin/js_check/__init__.pyc | bin | 156 -> 190 bytes | |||
| -rw-r--r-- | cgi-bin/js_check/jsparser.pyc | bin | 27289 -> 28605 bytes | |||
| -rw-r--r-- | cgi-bin/js_check/validate.pyc | bin | 2770 -> 2756 bytes | |||
| -rwxr-xr-x | cgi-bin/test.cgi | 13 | ||||
| -rwxr-xr-x | cgi-bin/view | 49 | ||||
| -rw-r--r-- | js/image.js | 2 |
9 files changed, 98 insertions, 27 deletions
diff --git a/bin/pep-proxy.py b/bin/pep-proxy.py new file mode 100755 index 0000000..b44bbbc --- /dev/null +++ b/bin/pep-proxy.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python3 +import http.server +import urllib.request +import re + +class MyHTTPRequestHandler(http.server.CGIHTTPRequestHandler ): + def end_headers(self): + self.send_my_headers() + + http.server.CGIHTTPRequestHandler .end_headers(self) + + def send_my_headers(self): + self.send_header("Access-Control-Allow-Origin", "*") + + def do_GET(self): + if self.path[0:14] == "/cgi-bin/proxy": + self.copyfile(urllib.request.urlopen(self.path[15:]), self.wfile) + elif re.match(r'.+cgi-bin/im/shader/.+$', self.path): + self.path = re.sub(r'(.+cgi-bin/)im/shader/(.+)$', r'\1\2', self.path); + super().do_GET(); + else: + super().do_GET() + + def do_POST(self): + if re.match(r'.+cgi-bin/im/shader/.+$', self.path): + self.path = re.sub(r'(.+cgi-bin/)im/shader/(.+)$', r'\1\2', self.path); + super().do_POST(); + +if __name__ == '__main__': + http.server.test(HandlerClass=MyHTTPRequestHandler) + diff --git a/bin/proxy.py b/bin/proxy.py index 6171dab..b44bbbc 100755 --- a/bin/proxy.py +++ b/bin/proxy.py @@ -1,12 +1,13 @@ #!/usr/bin/env python3 import http.server import urllib.request +import re -class MyHTTPRequestHandler(http.server.SimpleHTTPRequestHandler): +class MyHTTPRequestHandler(http.server.CGIHTTPRequestHandler ): def end_headers(self): self.send_my_headers() - http.server.SimpleHTTPRequestHandler.end_headers(self) + http.server.CGIHTTPRequestHandler .end_headers(self) def send_my_headers(self): self.send_header("Access-Control-Allow-Origin", "*") @@ -14,9 +15,17 @@ class MyHTTPRequestHandler(http.server.SimpleHTTPRequestHandler): def do_GET(self): if self.path[0:14] == "/cgi-bin/proxy": self.copyfile(urllib.request.urlopen(self.path[15:]), self.wfile) + elif re.match(r'.+cgi-bin/im/shader/.+$', self.path): + self.path = re.sub(r'(.+cgi-bin/)im/shader/(.+)$', r'\1\2', self.path); + super().do_GET(); else: super().do_GET() + def do_POST(self): + if re.match(r'.+cgi-bin/im/shader/.+$', self.path): + self.path = re.sub(r'(.+cgi-bin/)im/shader/(.+)$', r'\1\2', self.path); + super().do_POST(); + if __name__ == '__main__': http.server.test(HandlerClass=MyHTTPRequestHandler) diff --git a/bin/sql_build.sql b/bin/sql_build.sql new file mode 100644 index 0000000..8badd66 --- /dev/null +++ b/bin/sql_build.sql @@ -0,0 +1,17 @@ +create database IF NOT EXISTS asdfus; +grant all privileges on asdfus.* to 'asdfus'@'localhost' identified by 'gTYgT&M6q'; +flush privileges; +use asdfus; +create table IF NOT EXISTS shaders (id int(11) AUTO_INCREMENT NOT NULL, PRIMARY KEY(id), script blob, image_url blob, thumbnail_url varchar(50), username varchar(30), time bigint(20) NOT NULL, shader_id int(11)); + +create table IF NOT EXISTS shader_ids (id int(11) AUTO_INCREMENT NOT NULL, PRIMARY KEY(id), username varchar(40)); +alter table shaders modify username varchar(30); + +IF EXISTS ( + SELECT * + FROM sys.columns + WHERE name = 'shaders' +) +begin + alter table shaders add name varchar(40); +end; diff --git a/cgi-bin/js_check/__init__.pyc b/cgi-bin/js_check/__init__.pyc Binary files differindex 5d23962..e3d1cac 100644 --- a/cgi-bin/js_check/__init__.pyc +++ b/cgi-bin/js_check/__init__.pyc diff --git a/cgi-bin/js_check/jsparser.pyc b/cgi-bin/js_check/jsparser.pyc Binary files differindex 42b15b8..5ce5c81 100644 --- a/cgi-bin/js_check/jsparser.pyc +++ b/cgi-bin/js_check/jsparser.pyc diff --git a/cgi-bin/js_check/validate.pyc b/cgi-bin/js_check/validate.pyc Binary files differindex 0905b8f..a3c7071 100644 --- a/cgi-bin/js_check/validate.pyc +++ b/cgi-bin/js_check/validate.pyc diff --git a/cgi-bin/test.cgi b/cgi-bin/test.cgi new file mode 100755 index 0000000..e33ee3e --- /dev/null +++ b/cgi-bin/test.cgi @@ -0,0 +1,13 @@ +#!/usr/bin/perl + print "Content-type: text/html\n\n"; + print <<HTML; + <html> +<head> + <title>A Simple Perl CGI</title> + </head> + <body> + <h1>A Simple Perl CGI</h1> + <p>Hello World</p> + </body> +HTML + exit; diff --git a/cgi-bin/view b/cgi-bin/view index d818519..6bb55b4 100755 --- a/cgi-bin/view +++ b/cgi-bin/view @@ -72,40 +72,41 @@ sub main{ } my $res; - given($params->{f}){ - when(/info/){ + for($params->{f}){ + /info/ && do { unless(defined $params->{id}) { not_specified_error("id"); }; $res = mysql_retrieve('SELECT * FROM shaders WHERE id = ?', $params->{id}); - } - when(/all/){ + last; + }; + /all/ && do { $res = mysql_retrieve('select * from shaders order by id'); - } - when(/range/){ + last; + }; + /range/ && do { unless (defined $params->{limit}){ not_specified_error("limit") }; - if (defined $params->{last}){ - $res = mysql_retrieve(sprintf(' select * from shaders order by id desc limit %s , %s', $param->{last}, $params->{limit})); - }else{ - $res = mysql_retrieve(sprintf(' select * from shaders order by id desc limit 0 , %s', $params->{limit})); - } - } - when(/history/){ + $res = mysql_retrieve(' select * from shaders order by id desc limit ? , ?', ($params->{last} || 0), $params->{limit}); + last; + }; + /history/ && do{ unless(defined $params->{id}) { not_specified_error("id"); }; $res = mysql_retrieve('SELECT * FROM shaders WHERE shader_id = ? order by id', $params->{id}); - } - when(/username/){ + last; + }; + /username/ && do{ unless(defined $params->{username}) { not_specified_error("username") }; $res = mysql_retrieve('select * from shaders where username = ?', $params->{username}); - } - when(/list_users/){ + last; + }; + /list_users/ && do{ $res = mysql_retrieve('select distinct username from shaders;'); - } - when(/originals/){ + last; + }; + /originals/ && do{ $res = mysql_retrieve('select shaders.* from shader_ids cross join shaders on shader_ids.id = shaders.shader_id'); - } - default { - response({ ERROR => "Function parameter f improperly defined"}, $callback); - exit(1); - }; + last; + }; + response({ ERROR => "Function parameter f improperly defined"}, $callback); + exit(1); } response($res, $callback); } diff --git a/js/image.js b/js/image.js index 9ac1290..ef58f4b 100644 --- a/js/image.js +++ b/js/image.js @@ -69,7 +69,7 @@ function uploadImage(opt){ form.append("qqfile", opt.blob); var req = new XMLHttpRequest(); - req.open("POST", "/cgi-bin/im/upload"); + req.open("POST", "/cgi-bin/im/shader/upload"); req.onload = function(event) { if (req.status == 200) { var res = JSON.parse(req.responseText); |
