Hệ thống được triển khai dựa trên openresty bằng cách cấu hình openresty cho phù hợp với yêu cầu. Các files cấu hình và mã nguồn được thêm vào như sau:
nginx.conf: file cấu hình chung của openresty như khi request được cho phép thì sẽ chuyển đến đâu, cần tải các thành phần hay thư viện nào để chạy code.
captcha.html: file chứa phần mã để hiện captcha cho người dùng, có thể sửa đổi theo ý muốn.
init.lua: file mã nguồn chứa tất cả các tham số khởi tạo cũng như các function dùng chung cho toàn bộ hệ thống.
ecofair.lua: phần xử lý logic chính của hệ thống chứa gần như tất cả các module cũng như thể hiện logic như đã viết ở phần 2.1.2.
recaptcha.lua: xác thực captcha người dùng, tạo captcha khi thành công. File cấu hình của nginx như sau:
#user nobody; worker_processes 2; events { worker_connections 2048; } http { include mime.types; default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; access_log logs/access.log main;
sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on;
#lua_code_cache off; # DEBUG only
# dùng cho phần limit request và quản lý xác thực. lua_shared_dict ecofair_limit_req 100m; lua_shared_dict ecofair_accesslist 50m; lua_package_cpath "/usr/local/lib/lua/5.1/?.so;/usr/local/lib/lua/5.1/socket/?.so;/usr/local/lib/lua/5.1/mi me/?.so;;"; lua_package_path "/usr/local/share/lua/5.1/ssl/?.lua;/usr/local/share/lua/5.1/?.lua;/ecofair/lua-resty- cookie/lib/?.lua;/ecofair/lua-resty-string/lib/?.lua;/ecofair/lua-resty-limit- traffic/lib/?.lua; /ecofair/lua-resty-iputils/lib/?.lua;;"; init_by_lua_file '/ecofair/init.lua'; server { listen 80; server_name localhost; 34
#charset koi8-r;
location /cgi-bin/ecofair-captcha { default_type 'text/html';
access_by_lua_file '/ecofair/recaptcha.lua'; }
#access_log logs/host.access.log main; location / {
default_type 'text/html';
access_by_lua_file '/ecofair/ecofair.lua';
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host;
proxy_pass http://websiteip; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
Các thành phần code của các file lua đã được trình bày ở các phần trên.
CHƯƠNG 3: TRIỂN KHAI, THỬ NGHIỆM HỆ THỐNG.