Code snippets which are used at https://getinto.in
Last active
March 30, 2020 04:30
-
-
Save dhsathiya/c2f71deb5e78d1a076f8ffa5f6e827f6 to your computer and use it in GitHub Desktop.
Snippets for getinto.in
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# nginx.conf -- docker-openresty | |
# | |
# This file is installed to: | |
# `/usr/local/openresty/nginx/conf/nginx.conf` | |
# and is the file loaded by nginx at startup, | |
# unless the user specifies otherwise. | |
# | |
# It tracks the upstream OpenResty's `nginx.conf`, but removes the `server` | |
# section and adds this directive: | |
# `include /etc/nginx/conf.d/*.conf;` | |
# | |
# The `docker-openresty` file `nginx.vh.default.conf` is copied to | |
# `/etc/nginx/conf.d/default.conf`. It contains the `server section | |
# of the upstream `nginx.conf`. | |
# | |
# See https://github.com/openresty/docker-openresty/blob/master/README.md#nginx-config-files | |
# | |
#user nobody; | |
worker_processes 1; | |
#error_log logs/error.log; | |
#error_log logs/error.log notice; | |
#error_log logs/error.log info; | |
#pid logs/nginx.pid; | |
events { | |
worker_connections 1024; | |
} | |
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; | |
# See Move default writable paths to a dedicated directory (#119) | |
# https://github.com/openresty/docker-openresty/issues/119 | |
client_body_temp_path /var/run/openresty/nginx-client-body; | |
proxy_temp_path /var/run/openresty/nginx-proxy; | |
fastcgi_temp_path /var/run/openresty/nginx-fastcgi; | |
uwsgi_temp_path /var/run/openresty/nginx-uwsgi; | |
scgi_temp_path /var/run/openresty/nginx-scgi; | |
sendfile on; | |
#tcp_nopush on; | |
#keepalive_timeout 0; | |
keepalive_timeout 65; | |
#gzip on; | |
include /usr/local/openresty/nginx/conf/naxsi_core.rules; | |
include /etc/nginx/conf.d/*.conf; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Dockerfile - Ubuntu Bionic | |
# https://github.com/openresty/docker-openresty | |
ARG RESTY_IMAGE_BASE="ubuntu" | |
ARG RESTY_IMAGE_TAG="bionic" | |
FROM ${RESTY_IMAGE_BASE}:${RESTY_IMAGE_TAG} | |
LABEL maintainer="Devarshi Sathiya <[email protected]>" | |
# Docker Build Arguments | |
ARG RESTY_IMAGE_BASE="ubuntu" | |
ARG RESTY_IMAGE_TAG="bionic" | |
ARG RESTY_VERSION="1.15.8.2" | |
ARG NAXSI_VERSION="0.56" | |
ARG RESTY_LUAROCKS_VERSION="3.2.1" | |
ARG RESTY_OPENSSL_VERSION="1.1.0k" | |
ARG RESTY_PCRE_VERSION="8.43" | |
ARG RESTY_J="1" | |
ARG RESTY_CONFIG_OPTIONS="\ | |
--with-compat \ | |
--with-file-aio \ | |
--with-http_addition_module \ | |
--with-http_auth_request_module \ | |
--with-http_dav_module \ | |
--with-http_flv_module \ | |
--with-http_geoip_module=dynamic \ | |
--with-http_gunzip_module \ | |
--with-http_gzip_static_module \ | |
--with-http_image_filter_module=dynamic \ | |
--with-http_mp4_module \ | |
--with-http_random_index_module \ | |
--with-http_realip_module \ | |
--with-http_secure_link_module \ | |
--with-http_slice_module \ | |
--with-http_ssl_module \ | |
--with-http_stub_status_module \ | |
--with-http_sub_module \ | |
--with-http_v2_module \ | |
--with-http_xslt_module=dynamic \ | |
--with-ipv6 \ | |
--with-mail \ | |
--with-mail_ssl_module \ | |
--with-md5-asm \ | |
--with-pcre-jit \ | |
--with-sha1-asm \ | |
--with-stream \ | |
--with-stream_ssl_module \ | |
--with-threads \ | |
--add-module=/tmp/naxsi-${NAXSI_VERSION}/naxsi_src/ \ | |
" | |
ARG RESTY_CONFIG_OPTIONS_MORE="" | |
ARG RESTY_LUAJIT_OPTIONS="--with-luajit-xcflags='-DLUAJIT_NUMMODE=2 -DLUAJIT_ENABLE_LUA52COMPAT'" | |
ARG RESTY_ADD_PACKAGE_BUILDDEPS="" | |
ARG RESTY_ADD_PACKAGE_RUNDEPS="" | |
ARG RESTY_EVAL_PRE_CONFIGURE="" | |
ARG RESTY_EVAL_POST_MAKE="" | |
# These are not intended to be user-specified | |
ARG _RESTY_CONFIG_DEPS="--with-pcre \ | |
--with-cc-opt='-DNGX_LUA_ABORT_AT_PANIC -I/usr/local/openresty/pcre/include -I/usr/local/openresty/openssl/include' \ | |
--with-ld-opt='-L/usr/local/openresty/pcre/lib -L/usr/local/openresty/openssl/lib -Wl,-rpath,/usr/local/openresty/pcre/lib:/usr/local/openresty/openssl/lib' \ | |
" | |
LABEL resty_image_base="${RESTY_IMAGE_BASE}" | |
LABEL resty_image_tag="${RESTY_IMAGE_TAG}" | |
LABEL resty_version="${RESTY_VERSION}" | |
LABEL resty_luarocks_version="${RESTY_LUAROCKS_VERSION}" | |
LABEL resty_openssl_version="${RESTY_OPENSSL_VERSION}" | |
LABEL resty_pcre_version="${RESTY_PCRE_VERSION}" | |
LABEL resty_config_options="${RESTY_CONFIG_OPTIONS}" | |
LABEL resty_config_options_more="${RESTY_CONFIG_OPTIONS_MORE}" | |
LABEL resty_config_deps="${_RESTY_CONFIG_DEPS}" | |
LABEL resty_add_package_builddeps="${RESTY_ADD_PACKAGE_BUILDDEPS}" | |
LABEL resty_add_package_rundeps="${RESTY_ADD_PACKAGE_RUNDEPS}" | |
LABEL resty_eval_pre_configure="${RESTY_EVAL_PRE_CONFIGURE}" | |
LABEL resty_eval_post_make="${RESTY_EVAL_POST_MAKE}" | |
RUN DEBIAN_FRONTEND=noninteractive apt-get update \ | |
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ | |
build-essential \ | |
ca-certificates \ | |
curl \ | |
gettext-base \ | |
libgd-dev \ | |
libgeoip-dev \ | |
libncurses5-dev \ | |
libperl-dev \ | |
libreadline-dev \ | |
libxslt1-dev \ | |
make \ | |
perl \ | |
unzip \ | |
zlib1g-dev \ | |
${RESTY_ADD_PACKAGE_BUILDDEPS} \ | |
${RESTY_ADD_PACKAGE_RUNDEPS} \ | |
&& cd /tmp \ | |
&& if [ -n "${RESTY_EVAL_PRE_CONFIGURE}" ]; then eval $(echo ${RESTY_EVAL_PRE_CONFIGURE}); fi \ | |
&& curl -fSL https://www.openssl.org/source/openssl-${RESTY_OPENSSL_VERSION}.tar.gz -o openssl-${RESTY_OPENSSL_VERSION}.tar.gz \ | |
&& tar xzf openssl-${RESTY_OPENSSL_VERSION}.tar.gz \ | |
&& cd openssl-${RESTY_OPENSSL_VERSION} \ | |
&& if [ $(echo ${RESTY_OPENSSL_VERSION} | cut -c 1-5) = "1.1.1" ] ; then \ | |
echo 'patching OpenSSL 1.1.1 for OpenResty' \ | |
&& curl -s https://raw.githubusercontent.com/openresty/openresty/master/patches/openssl-1.1.1c-sess_set_get_cb_yield.patch | patch -p1 ; \ | |
fi \ | |
&& if [ $(echo ${RESTY_OPENSSL_VERSION} | cut -c 1-5) = "1.1.0" ] ; then \ | |
echo 'patching OpenSSL 1.1.0 for OpenResty' \ | |
&& curl -s https://raw.githubusercontent.com/openresty/openresty/ed328977028c3ec3033bc25873ee360056e247cd/patches/openssl-1.1.0j-parallel_build_fix.patch | patch -p1 \ | |
&& curl -s https://raw.githubusercontent.com/openresty/openresty/master/patches/openssl-1.1.0d-sess_set_get_cb_yield.patch | patch -p1 ; \ | |
fi \ | |
&& ./config \ | |
no-threads shared zlib -g \ | |
enable-ssl3 enable-ssl3-method \ | |
--prefix=/usr/local/openresty/openssl \ | |
--libdir=lib \ | |
-Wl,-rpath,/usr/local/openresty/openssl/lib \ | |
&& make -j${RESTY_J} \ | |
&& make -j${RESTY_J} install_sw \ | |
&& cd /tmp \ | |
&& curl -fSL https://ftp.pcre.org/pub/pcre/pcre-${RESTY_PCRE_VERSION}.tar.gz -o pcre-${RESTY_PCRE_VERSION}.tar.gz \ | |
&& tar xzf pcre-${RESTY_PCRE_VERSION}.tar.gz \ | |
&& cd /tmp/pcre-${RESTY_PCRE_VERSION} \ | |
&& ./configure \ | |
--prefix=/usr/local/openresty/pcre \ | |
--disable-cpp \ | |
--enable-jit \ | |
--enable-utf \ | |
--enable-unicode-properties \ | |
&& make -j${RESTY_J} \ | |
&& make -j${RESTY_J} install \ | |
&& cd /tmp \ | |
&& curl -fSL https://github.com/openresty/openresty/releases/download/v${RESTY_VERSION}/openresty-${RESTY_VERSION}.tar.gz -o openresty-${RESTY_VERSION}.tar.gz \ | |
&& tar xzf openresty-${RESTY_VERSION}.tar.gz \ | |
&& curl -fSL https://github.com/nbs-system/naxsi/archive/${NAXSI_VERSION}.tar.gz -o naxsi-${NAXSI_VERSION}.tar.gz \ | |
&& tar xzf naxsi-${NAXSI_VERSION}.tar.gz \ | |
&& cd /tmp/openresty-${RESTY_VERSION} \ | |
&& ls /tmp \ | |
&& eval ./configure -j${RESTY_J} ${_RESTY_CONFIG_DEPS} ${RESTY_CONFIG_OPTIONS} ${RESTY_CONFIG_OPTIONS_MORE} ${RESTY_LUAJIT_OPTIONS} \ | |
&& make -j${RESTY_J} \ | |
&& make -j${RESTY_J} install \ | |
&& cd /tmp \ | |
&& rm -rf \ | |
openssl-${RESTY_OPENSSL_VERSION}.tar.gz openssl-${RESTY_OPENSSL_VERSION} \ | |
pcre-${RESTY_PCRE_VERSION}.tar.gz pcre-${RESTY_PCRE_VERSION} \ | |
openresty-${RESTY_VERSION}.tar.gz openresty-${RESTY_VERSION} \ | |
&& curl -fSL https://luarocks.github.io/luarocks/releases/luarocks-${RESTY_LUAROCKS_VERSION}.tar.gz -o luarocks-${RESTY_LUAROCKS_VERSION}.tar.gz \ | |
&& tar xzf luarocks-${RESTY_LUAROCKS_VERSION}.tar.gz \ | |
&& cd luarocks-${RESTY_LUAROCKS_VERSION} \ | |
&& ./configure \ | |
--prefix=/usr/local/openresty/luajit \ | |
--with-lua=/usr/local/openresty/luajit \ | |
--lua-suffix=jit-2.1.0-beta3 \ | |
--with-lua-include=/usr/local/openresty/luajit/include/luajit-2.1 \ | |
&& make build \ | |
&& make install \ | |
&& cd /tmp \ | |
&& if [ -n "${RESTY_EVAL_POST_MAKE}" ]; then eval $(echo ${RESTY_EVAL_POST_MAKE}); fi \ | |
&& rm -rf luarocks-${RESTY_LUAROCKS_VERSION} luarocks-${RESTY_LUAROCKS_VERSION}.tar.gz \ | |
&& if [ -n "${RESTY_ADD_PACKAGE_BUILDDEPS}" ]; then DEBIAN_FRONTEND=noninteractive apt-get remove -y --purge ${RESTY_ADD_PACKAGE_BUILDDEPS} ; fi \ | |
&& DEBIAN_FRONTEND=noninteractive apt-get autoremove -y \ | |
&& mkdir -p /var/run/openresty \ | |
&& ln -sf /dev/stdout /usr/local/openresty/nginx/logs/access.log \ | |
&& ln -sf /dev/stderr /usr/local/openresty/nginx/logs/error.log \ | |
&& cp naxsi-${NAXSI_VERSION}/naxsi_config/naxsi_core.rules /usr/local/openresty/nginx/conf/ \ | |
&& rm -rf /tmp/naxsi-${NAXSI_VERSION}.tar.gz /tmp/naxsi-${NAXSI_VERSION} | |
# Add additional binaries into PATH for convenience | |
ENV PATH=$PATH:/usr/local/openresty/luajit/bin:/usr/local/openresty/nginx/sbin:/usr/local/openresty/bin | |
# Add LuaRocks paths | |
# If OpenResty changes, these may need updating: | |
# /usr/local/openresty/bin/resty -e 'print(package.path)' | |
# /usr/local/openresty/bin/resty -e 'print(package.cpath)' | |
ENV LUA_PATH="/usr/local/openresty/site/lualib/?.ljbc;/usr/local/openresty/site/lualib/?/init.ljbc;/usr/local/openresty/lualib/?.ljbc;/usr/local/openresty/lualib/?/init.ljbc;/usr/local/openresty/site/lualib/?.lua;/usr/local/openresty/site/lualib/?/init.lua;/usr/local/openresty/lualib/?.lua;/usr/local/openresty/lualib/?/init.lua;./?.lua;/usr/local/openresty/luajit/share/luajit-2.1.0-beta3/?.lua;/usr/local/share/lua/5.1/?.lua;/usr/local/share/lua/5.1/?/init.lua;/usr/local/openresty/luajit/share/lua/5.1/?.lua;/usr/local/openresty/luajit/share/lua/5.1/?/init.lua" | |
ENV LUA_CPATH="/usr/local/openresty/site/lualib/?.so;/usr/local/openresty/lualib/?.so;./?.so;/usr/local/lib/lua/5.1/?.so;/usr/local/openresty/luajit/lib/lua/5.1/?.so;/usr/local/lib/lua/5.1/loadall.so;/usr/local/openresty/luajit/lib/lua/5.1/?.so" | |
# Copy nginx configuration files | |
COPY nginx.conf /usr/local/openresty/nginx/conf/nginx.conf | |
COPY nginx.vh.default.conf /etc/nginx/conf.d/default.conf | |
CMD ["/usr/local/openresty/bin/openresty", "-g", "daemon off;"] | |
# Use SIGQUIT instead of default SIGTERM to cleanly drain requests | |
# See https://github.com/openresty/docker-openresty/blob/master/README.md#tips--pitfalls | |
STOPSIGNAL SIGQUIT |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<html> | |
<head> | |
<script> | |
// Check for wasm support. | |
if (!('WebAssembly' in window)) { | |
alert('you need a browser with wasm support enabled :('); | |
} | |
// Loads a WebAssembly dynamic library, returns a promise. | |
// imports is an optional imports object | |
function loadWebAssembly(filename, imports) { | |
// Fetch the file and compile it | |
return fetch(filename) | |
.then(response => response.arrayBuffer()) | |
.then(buffer => WebAssembly.compile(buffer)) | |
.then(module => { | |
// Create the imports for the module, including the | |
// standard dynamic library imports | |
imports = imports || {}; | |
imports.env = imports.env || {}; | |
imports.env.memoryBase = imports.env.memoryBase || 0; | |
imports.env.tableBase = imports.env.tableBase || 0; | |
if (!imports.env.memory) { | |
imports.env.memory = new WebAssembly.Memory({ initial: 256 }); | |
} | |
if (!imports.env.table) { | |
imports.env.table = new WebAssembly.Table({ initial: 0, element: 'anyfunc' }); | |
} | |
// Create the instance. | |
return new WebAssembly.Instance(module, imports); | |
}); | |
} | |
// Main part of this example, loads the module and uses it. | |
loadWebAssembly('sum.wasm') | |
.then(instance => { | |
var exports = instance.exports; // the exports of that instance | |
var sum = exports.sum; // the "sum" function | |
// now we are ready, set up the button so the user can run the code | |
var button = document.getElementById('run'); | |
button.value = 'Call a method in the WebAssembly module'; | |
button.addEventListener('click', function() { | |
var val1 = document.getElementById("val1").value; | |
var val2 = document.getElementById("val2").value; | |
alert(` sum of ${val1} and ${val2} is ` + sum(val1,val2)); | |
}, false); | |
} | |
); | |
</script> | |
</head> | |
<body> | |
<input type="textbox" id="val1" value="7"/> | |
<input type="textbox" id="val2" value="5"/> | |
<input type="button" id="run" value="(waiting for WebAssembly)"/> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment