From a683fd1bc33ca5b546633cee628b1e1822af2545 Mon Sep 17 00:00:00 2001
From: amirhossein <amirhossein@arvancloud.com>
Date: Wed, 9 Oct 2019 21:48:11 +0330
Subject: [PATCH 1/2] add white label cdn ability

---
 WLCdn.py                                 | 418 +++++++++++++++++++++++
 src/core/nginx.h                         |   2 +-
 src/http/ngx_http_header_filter_module.c |   2 +-
 src/http/ngx_http_special_response.c     | 277 ++-------------
 4 files changed, 454 insertions(+), 245 deletions(-)
 create mode 100644 WLCdn.py

diff --git a/WLCdn.py b/WLCdn.py
new file mode 100644
index 000000000..4a2f57a3c
--- /dev/null
+++ b/WLCdn.py
@@ -0,0 +1,418 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*- 
+
+import fileinput
+import sys
+
+WLC_NGX_SERVER_NAME="ArvanCloud"
+WLC_NGX_VAR="ARVANCLOUD"
+WLC_NGX_ERR_PAGE_301='''
+"<html><head>" CRLF
+"<title>Moved Permanently (301)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Moved Permanently (301)</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_302='''
+"<html><head>" CRLF
+"<title>Found (302)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Found (302)</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_303='''
+"<html><head>" CRLF
+"<title>See Other (303)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>See Other (303)</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_307='''
+"<html><head>" CRLF
+"<title>Temporary Redirect (307)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Temporary Redirect (307)</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_308='''
+"<html><head>" CRLF
+"<title>Permanent Redirect (308)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Permanent Redirect (308)</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_400='''
+"<html><head>" CRLF
+"<title>Bad Request (400)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Bad Request (400)</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_401='''
+"<html><head>" CRLF
+"<title>Authorization Required (401)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Authorization Required (401)</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_402='''
+"<html><head>" CRLF
+"<title>Payment Required (402)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Payment Required (402)</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_403='''
+"<html><head>" CRLF
+"<title>Forbidden (403)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Forbidden (403)</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_404='''
+"<html><head>" CRLF
+"<title>Not Found (404)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Not Found (404)</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_405='''
+"<html><head>" CRLF
+"<title>Not Allowed (405)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Not Allowed (405)</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_405='''
+"<html><head>" CRLF
+"<title>Not Allowed (405)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Not Allowed (405)</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_406='''
+"<html><head>" CRLF
+"<title>Not Acceptable (406)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Not Acceptable (406)</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_408='''
+"<html><head>" CRLF
+"<title>Request Time-out (408)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Request Time-out (408)</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_409='''
+"<html><head>" CRLF
+"<title>Conflict (409)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Conflict (409)</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_410='''
+"<html><head>" CRLF
+"<title>Gone (410)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Gone (410)</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_411='''
+"<html><head>" CRLF
+"<title>Length Required (411)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Length Required (411)</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_412='''
+"<html><head>" CRLF
+"<title>Precondition Failed (412)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Precondition Failed (412)</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_413='''
+"<html><head>" CRLF
+"<title>Request Entity Too Large (413)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Request Entity Too Large (413)</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_414='''
+"<html><head>" CRLF
+"<title>Request-URI Too Large (414)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Request-URI Too Large (414)</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_415='''
+"<html><head>" CRLF
+"<title>Unsupported Media Type (415)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Unsupported Media Type (415)</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_416='''
+"<html><head>" CRLF
+"<title>Requested Range Not Satisfiable (416)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Requested Range Not Satisfiable (416)</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_421='''
+"<html><head>" CRLF
+"<title>Too Many Concurrent SMTP Connections (421)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Too Many Concurrent SMTP Connections (421)</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_429='''
+"<html><head>" CRLF
+"<title>Too Many Requests (429)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Too Many Requests (429)</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_494='''
+"<html><head>" CRLF
+"<title>Request Header Or Cookie Too Large (400)</title></head>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Bad Request (400)</h3>" CRLF
+"<h3>Request Header Or Cookie Too Large</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_495='''
+"<html><head>" CRLF
+"<title>The SSL certificate error (400)</title></head>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Bad Request (400)</h3>" CRLF
+"<h3>The SSL certificate error</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_496='''
+"<html><head>" CRLF
+"<title>No required SSL certificate was sent (400)</title></head>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Bad Request (400)</h3>" CRLF
+"<h3>No required SSL certificate was sent</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_497='''
+"<html><head>" CRLF
+"<title>The plain HTTP request was sent to HTTPS port (400)</title></head>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Bad Request (400)</h3>" CRLF
+"<h3>The plain HTTP request was sent to HTTPS port</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_500='''
+"<html><head>" CRLF
+"<title>Internal Server Error (500)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Internal Server Error (500)</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_501='''
+"<html><head>" CRLF
+"<title>Not Implemented (501)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Not Implemented (501)</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_502='''
+"<html><head>" CRLF
+"<title>Bad Gateway (502)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Bad Gateway (502)</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_503='''
+"<html><head>" CRLF
+"<title>Service Temporarily Unavailable (503)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Service Temporarily Unavailable (503)</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_504='''
+"<html><head>" CRLF
+"<title>Gateway Time-out (504)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Gateway Time-out (504)</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_505='''
+"<html><head>" CRLF
+"<title>HTTP Version Not Supported (505)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>HTTP Version Not Supported (505)</h3>" CRLF
+;
+'''
+WLC_NGX_ERR_PAGE_507='''
+"<html><head>" CRLF
+"<title>Insufficient Storage (507)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Insufficient Storage (507)</h3>" CRLF
+;
+'''
+
+def inplace_change(filename, old_string, new_string):
+    for line in fileinput.input(filename, inplace=True):
+        # inside this loop the STDOUT will be redirected to the file
+        # the comma after each print statement is needed to avoid double line breaks
+        print line.replace(old_string, new_string),
+
+def initialize(white_label):
+    if white_label == "dotin":
+        print "initialized by dotin"
+
+def main():
+    if (len(sys.argv) > 1 ):
+        initialize(sys.argv[1])
+
+    inplace_change("src/http/ngx_http_header_filter_module.c", "%WLC_NGX_SERVER_NAME%", WLC_NGX_SERVER_NAME)
+
+    inplace_change("src/core/nginx.h", "%WLC_NGX_VAR%", WLC_NGX_VAR)
+    
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_301%", WLC_NGX_ERR_PAGE_301)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_302%", WLC_NGX_ERR_PAGE_302)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_303%", WLC_NGX_ERR_PAGE_303)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_307%", WLC_NGX_ERR_PAGE_307)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_308%", WLC_NGX_ERR_PAGE_308)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_400%", WLC_NGX_ERR_PAGE_400)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_401%", WLC_NGX_ERR_PAGE_401)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_402%", WLC_NGX_ERR_PAGE_402)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_403%", WLC_NGX_ERR_PAGE_403)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_404%", WLC_NGX_ERR_PAGE_404)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_405%", WLC_NGX_ERR_PAGE_405)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_406%", WLC_NGX_ERR_PAGE_406)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_408%", WLC_NGX_ERR_PAGE_408)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_409%", WLC_NGX_ERR_PAGE_409)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_410%", WLC_NGX_ERR_PAGE_410)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_411%", WLC_NGX_ERR_PAGE_411)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_412%", WLC_NGX_ERR_PAGE_412)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_413%", WLC_NGX_ERR_PAGE_413)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_414%", WLC_NGX_ERR_PAGE_414)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_415%", WLC_NGX_ERR_PAGE_415)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_416%", WLC_NGX_ERR_PAGE_416)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_421%", WLC_NGX_ERR_PAGE_421)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_429%", WLC_NGX_ERR_PAGE_429)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_494%", WLC_NGX_ERR_PAGE_494)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_495%", WLC_NGX_ERR_PAGE_495)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_496%", WLC_NGX_ERR_PAGE_496)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_497%", WLC_NGX_ERR_PAGE_497)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_500%", WLC_NGX_ERR_PAGE_500)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_501%", WLC_NGX_ERR_PAGE_501)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_502%", WLC_NGX_ERR_PAGE_502)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_503%", WLC_NGX_ERR_PAGE_503)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_504%", WLC_NGX_ERR_PAGE_504)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_505%", WLC_NGX_ERR_PAGE_505)
+
+    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_507%", WLC_NGX_ERR_PAGE_507)
+
+
+
+if __name__ == '__main__':
+    main()
diff --git a/src/core/nginx.h b/src/core/nginx.h
index 2df5117b6..b76310342 100644
--- a/src/core/nginx.h
+++ b/src/core/nginx.h
@@ -19,7 +19,7 @@
 #define NGINX_VER_BUILD    NGINX_VER
 #endif
 
-#define NGINX_VAR          "ARVANCLOUD"
+#define NGINX_VAR          "%WLC_NGX_VAR%"
 #define NGX_OLDPID_EXT     ".oldbin"
 
 
diff --git a/src/http/ngx_http_header_filter_module.c b/src/http/ngx_http_header_filter_module.c
index dd1dfd206..b5305f3f1 100644
--- a/src/http/ngx_http_header_filter_module.c
+++ b/src/http/ngx_http_header_filter_module.c
@@ -46,7 +46,7 @@ ngx_module_t  ngx_http_header_filter_module = {
 };
 
 
-static u_char ngx_http_server_string[] = "Server: ArvanCloud" CRLF;
+static u_char ngx_http_server_string[] = "Server: %WLC_NGX_SERVER_NAME%" CRLF;
 static u_char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;
 static u_char ngx_http_server_build_string[] = "Server: " NGINX_VER_BUILD CRLF;
 
diff --git a/src/http/ngx_http_special_response.c b/src/http/ngx_http_special_response.c
index 4de9b87ca..c5894d011 100644
--- a/src/http/ngx_http_special_response.c
+++ b/src/http/ngx_http_special_response.c
@@ -58,347 +58,138 @@ static u_char ngx_http_msie_refresh_tail[] =
 
 
 static char ngx_http_error_301_page[] =
-"<html><head>" CRLF
-"<title>Moved Permanently (301)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Moved Permanently (301)</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_301%
 
 
 static char ngx_http_error_302_page[] =
-"<html><head>" CRLF
-"<title>Found (302)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Found (302)</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_302%
 
 
 static char ngx_http_error_303_page[] =
-"<html><head>" CRLF
-"<title>See Other (303)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>See Other (303)</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_303%
 
 
 static char ngx_http_error_307_page[] =
-"<html><head>" CRLF
-"<title>Temporary Redirect (307)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Temporary Redirect (307)</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_307%
 
 
 static char ngx_http_error_308_page[] =
-"<html><head>" CRLF
-"<title>Permanent Redirect (308)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Permanent Redirect (308)</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_308%
 
 
 static char ngx_http_error_400_page[] =
-"<html><head>" CRLF
-"<title>Bad Request (400)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Bad Request (400)</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_400%
 
 
 static char ngx_http_error_401_page[] =
-"<html><head>" CRLF
-"<title>Authorization Required (401)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Authorization Required (401)</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_401%
 
 
 static char ngx_http_error_402_page[] =
-"<html><head>" CRLF
-"<title>Payment Required (402)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Payment Required (402)</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_402%
 
 
 static char ngx_http_error_403_page[] =
-"<html><head>" CRLF
-"<title>Forbidden (403)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Forbidden (403)</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_403%
 
 
 static char ngx_http_error_404_page[] =
-"<html><head>" CRLF
-"<title>Not Found (404)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Not Found (404)</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_404%
 
 
 static char ngx_http_error_405_page[] =
-"<html><head>" CRLF
-"<title>Not Allowed (405)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Not Allowed (405)</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_405%
 
 
 static char ngx_http_error_406_page[] =
-"<html><head>" CRLF
-"<title>Not Acceptable (406)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Not Acceptable (406)</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_406%
 
 
 static char ngx_http_error_408_page[] =
-"<html><head>" CRLF
-"<title>Request Time-out (408)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Request Time-out (408)</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_408%
 
 
 static char ngx_http_error_409_page[] =
-"<html><head>" CRLF
-"<title>Conflict (409)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Conflict (409)</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_409%
 
 
 static char ngx_http_error_410_page[] =
-"<html><head>" CRLF
-"<title>Gone (410)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Gone (410)</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_410%
 
 
 static char ngx_http_error_411_page[] =
-"<html><head>" CRLF
-"<title>Length Required (411)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Length Required (411)</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_411%
 
 
 static char ngx_http_error_412_page[] =
-"<html><head>" CRLF
-"<title>Precondition Failed (412)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Precondition Failed (412)</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_412%
 
 
 static char ngx_http_error_413_page[] =
-"<html><head>" CRLF
-"<title>Request Entity Too Large (413)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Request Entity Too Large (413)</h3>" CRLF
-;
-
+%WLC_NGX_ERR_PAGE_413%
 
 static char ngx_http_error_414_page[] =
-"<html><head>" CRLF
-"<title>Request-URI Too Large (414)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Request-URI Too Large (414)</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_414%
 
 
 static char ngx_http_error_415_page[] =
-"<html><head>" CRLF
-"<title>Unsupported Media Type (415)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Unsupported Media Type (415)</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_415%
 
 
 static char ngx_http_error_416_page[] =
-"<html><head>" CRLF
-"<title>Requested Range Not Satisfiable (416)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Requested Range Not Satisfiable (416)</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_416%
 
 
 static char ngx_http_error_421_page[] =
-"<html><head>" CRLF
-"<title>Too Many Concurrent SMTP Connections (421)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Too Many Concurrent SMTP Connections (421)</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_421%
 
 
 static char ngx_http_error_429_page[] =
-"<html><head>" CRLF
-"<title>Too Many Requests (429)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Too Many Requests (429)</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_429%
 
 
 static char ngx_http_error_494_page[] =
-"<html><head>" CRLF
-"<title>Request Header Or Cookie Too Large (400)</title></head>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Bad Request (400)</h3>" CRLF
-"<h3>Request Header Or Cookie Too Large</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_494%
 
 
 static char ngx_http_error_495_page[] =
-"<html><head>" CRLF
-"<title>The SSL certificate error (400)</title></head>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Bad Request (400)</h3>" CRLF
-"<h3>The SSL certificate error</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_495%
 
 
 static char ngx_http_error_496_page[] =
-"<html><head>" CRLF
-"<title>No required SSL certificate was sent (400)</title></head>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Bad Request (400)</h3>" CRLF
-"<h3>No required SSL certificate was sent</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_496%
 
 
 static char ngx_http_error_497_page[] =
-"<html><head>" CRLF
-"<title>The plain HTTP request was sent to HTTPS port (400)</title></head>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Bad Request (400)</h3>" CRLF
-"<h3>The plain HTTP request was sent to HTTPS port</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_497%
 
 
 static char ngx_http_error_500_page[] =
-"<html><head>" CRLF
-"<title>Internal Server Error (500)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Internal Server Error (500)</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_500%
 
 
 static char ngx_http_error_501_page[] =
-"<html><head>" CRLF
-"<title>Not Implemented (501)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Not Implemented (501)</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_501%
 
 
 static char ngx_http_error_502_page[] =
-"<html><head>" CRLF
-"<title>Bad Gateway (502)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Bad Gateway (502)</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_502%
 
 
 static char ngx_http_error_503_page[] =
-"<html><head>" CRLF
-"<title>Service Temporarily Unavailable (503)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Service Temporarily Unavailable (503)</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_503%
 
 
 static char ngx_http_error_504_page[] =
-"<html><head>" CRLF
-"<title>Gateway Time-out (504)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Gateway Time-out (504)</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_504%
 
 
 static char ngx_http_error_505_page[] =
-"<html><head>" CRLF
-"<title>HTTP Version Not Supported (505)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>HTTP Version Not Supported (505)</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_505%
 
 
 static char ngx_http_error_507_page[] =
-"<html><head>" CRLF
-"<title>Insufficient Storage (507)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Insufficient Storage (507)</h3>" CRLF
-;
+%WLC_NGX_ERR_PAGE_507%
 
 
 static ngx_str_t ngx_http_error_pages[] = {
-- 
GitLab


From 94929c95eb290312d27304b741e71bca3eae381b Mon Sep 17 00:00:00 2001
From: amirhossein <amirhossein@arvancloud.com>
Date: Sun, 13 Oct 2019 20:44:25 +0330
Subject: [PATCH 2/2] t1

---
 WLC/arvan/WLC_NGX_ERR_PAGE_301 |   7 +
 WLC/arvan/WLC_NGX_ERR_PAGE_302 |   7 +
 WLC/arvan/WLC_NGX_ERR_PAGE_303 |   7 +
 WLC/arvan/WLC_NGX_ERR_PAGE_307 |   8 +
 WLC/arvan/WLC_NGX_ERR_PAGE_308 |   7 +
 WLC/arvan/WLC_NGX_ERR_PAGE_400 |   7 +
 WLC/arvan/WLC_NGX_ERR_PAGE_401 |   8 +
 WLC/arvan/WLC_NGX_ERR_PAGE_402 |   8 +
 WLC/arvan/WLC_NGX_ERR_PAGE_403 |   8 +
 WLC/arvan/WLC_NGX_ERR_PAGE_404 |   8 +
 WLC/arvan/WLC_NGX_ERR_PAGE_405 |   8 +
 WLC/arvan/WLC_NGX_ERR_PAGE_406 |   7 +
 WLC/arvan/WLC_NGX_ERR_PAGE_408 |   8 +
 WLC/arvan/WLC_NGX_ERR_PAGE_409 |   8 +
 WLC/arvan/WLC_NGX_ERR_PAGE_410 |   7 +
 WLC/arvan/WLC_NGX_ERR_PAGE_411 |   8 +
 WLC/arvan/WLC_NGX_ERR_PAGE_412 |   8 +
 WLC/arvan/WLC_NGX_ERR_PAGE_413 |   8 +
 WLC/arvan/WLC_NGX_ERR_PAGE_414 |   8 +
 WLC/arvan/WLC_NGX_ERR_PAGE_415 |   8 +
 WLC/arvan/WLC_NGX_ERR_PAGE_416 |   8 +
 WLC/arvan/WLC_NGX_ERR_PAGE_421 |   7 +
 WLC/arvan/WLC_NGX_ERR_PAGE_429 |   7 +
 WLC/arvan/WLC_NGX_ERR_PAGE_494 |   8 +
 WLC/arvan/WLC_NGX_ERR_PAGE_495 |   9 +
 WLC/arvan/WLC_NGX_ERR_PAGE_496 |   8 +
 WLC/arvan/WLC_NGX_ERR_PAGE_497 |   9 +
 WLC/arvan/WLC_NGX_ERR_PAGE_500 |   8 +
 WLC/arvan/WLC_NGX_ERR_PAGE_501 |   7 +
 WLC/arvan/WLC_NGX_ERR_PAGE_502 |   7 +
 WLC/arvan/WLC_NGX_ERR_PAGE_503 |   7 +
 WLC/arvan/WLC_NGX_ERR_PAGE_504 |   8 +
 WLC/arvan/WLC_NGX_ERR_PAGE_505 |   8 +
 WLC/arvan/WLC_NGX_ERR_PAGE_507 |   8 +
 WLC/arvan/WLC_NGX_SERVER_NAME  |   1 +
 WLC/arvan/WLC_NGX_VAR          |   1 +
 WLCdn.py                       | 420 +++++----------------------------
 37 files changed, 321 insertions(+), 363 deletions(-)
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_301
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_302
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_303
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_307
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_308
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_400
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_401
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_402
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_403
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_404
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_405
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_406
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_408
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_409
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_410
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_411
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_412
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_413
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_414
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_415
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_416
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_421
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_429
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_494
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_495
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_496
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_497
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_500
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_501
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_502
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_503
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_504
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_505
 create mode 100644 WLC/arvan/WLC_NGX_ERR_PAGE_507
 create mode 100644 WLC/arvan/WLC_NGX_SERVER_NAME
 create mode 100644 WLC/arvan/WLC_NGX_VAR

diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_301 b/WLC/arvan/WLC_NGX_ERR_PAGE_301
new file mode 100644
index 000000000..c775983eb
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_301
@@ -0,0 +1,7 @@
+"<html><head>" CRLF
+"<title>Moved Permanently (301)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Moved Permanently (301)</h3>" CRLF
+;
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_302 b/WLC/arvan/WLC_NGX_ERR_PAGE_302
new file mode 100644
index 000000000..e3249b00f
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_302
@@ -0,0 +1,7 @@
+"<html><head>" CRLF
+"<title>Found (302)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Found (302)</h3>" CRLF
+;
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_303 b/WLC/arvan/WLC_NGX_ERR_PAGE_303
new file mode 100644
index 000000000..f9bb3622e
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_303
@@ -0,0 +1,7 @@
+"<html><head>" CRLF
+"<title>See Other (303)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>See Other (303)</h3>" CRLF
+;
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_307 b/WLC/arvan/WLC_NGX_ERR_PAGE_307
new file mode 100644
index 000000000..36c4d1c4b
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_307
@@ -0,0 +1,8 @@
+"<html><head>" CRLF
+"<title>Temporary Redirect (307)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Temporary Redirect (307)</h3>" CRLF
+;
+
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_308 b/WLC/arvan/WLC_NGX_ERR_PAGE_308
new file mode 100644
index 000000000..efb3a76dc
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_308
@@ -0,0 +1,7 @@
+"<html><head>" CRLF
+"<title>Permanent Redirect (308)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Permanent Redirect (308)</h3>" CRLF
+;
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_400 b/WLC/arvan/WLC_NGX_ERR_PAGE_400
new file mode 100644
index 000000000..adbb7e18b
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_400
@@ -0,0 +1,7 @@
+"<html><head>" CRLF
+"<title>Bad Request (400)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Bad Request (400)</h3>" CRLF
+;
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_401 b/WLC/arvan/WLC_NGX_ERR_PAGE_401
new file mode 100644
index 000000000..7b1a605ac
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_401
@@ -0,0 +1,8 @@
+"<html><head>" CRLF
+"<title>Authorization Required (401)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Authorization Required (401)</h3>" CRLF
+;
+
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_402 b/WLC/arvan/WLC_NGX_ERR_PAGE_402
new file mode 100644
index 000000000..c3f309585
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_402
@@ -0,0 +1,8 @@
+"<html><head>" CRLF
+"<title>Payment Required (402)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Payment Required (402)</h3>" CRLF
+;
+
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_403 b/WLC/arvan/WLC_NGX_ERR_PAGE_403
new file mode 100644
index 000000000..e3bb87d0f
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_403
@@ -0,0 +1,8 @@
+"<html><head>" CRLF
+"<title>Forbidden (403)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Forbidden (403)</h3>" CRLF
+;
+
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_404 b/WLC/arvan/WLC_NGX_ERR_PAGE_404
new file mode 100644
index 000000000..10223d9bb
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_404
@@ -0,0 +1,8 @@
+"<html><head>" CRLF
+"<title>Not Found (404)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Not Found (404)</h3>" CRLF
+;
+
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_405 b/WLC/arvan/WLC_NGX_ERR_PAGE_405
new file mode 100644
index 000000000..8bdd50d37
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_405
@@ -0,0 +1,8 @@
+"<html><head>" CRLF
+"<title>Not Allowed (405)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Not Allowed (405)</h3>" CRLF
+;
+
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_406 b/WLC/arvan/WLC_NGX_ERR_PAGE_406
new file mode 100644
index 000000000..5c5e33b5d
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_406
@@ -0,0 +1,7 @@
+"<html><head>" CRLF
+"<title>Not Acceptable (406)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Not Acceptable (406)</h3>" CRLF
+;
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_408 b/WLC/arvan/WLC_NGX_ERR_PAGE_408
new file mode 100644
index 000000000..a38e46c37
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_408
@@ -0,0 +1,8 @@
+"<html><head>" CRLF
+"<title>Request Time-out (408)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Request Time-out (408)</h3>" CRLF
+;
+
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_409 b/WLC/arvan/WLC_NGX_ERR_PAGE_409
new file mode 100644
index 000000000..37ceae5d8
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_409
@@ -0,0 +1,8 @@
+"<html><head>" CRLF
+"<title>Conflict (409)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Conflict (409)</h3>" CRLF
+;
+
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_410 b/WLC/arvan/WLC_NGX_ERR_PAGE_410
new file mode 100644
index 000000000..b027c69c8
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_410
@@ -0,0 +1,7 @@
+"<html><head>" CRLF
+"<title>Gone (410)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Gone (410)</h3>" CRLF
+;
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_411 b/WLC/arvan/WLC_NGX_ERR_PAGE_411
new file mode 100644
index 000000000..d66ed7171
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_411
@@ -0,0 +1,8 @@
+"<html><head>" CRLF
+"<title>Length Required (411)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Length Required (411)</h3>" CRLF
+;
+
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_412 b/WLC/arvan/WLC_NGX_ERR_PAGE_412
new file mode 100644
index 000000000..530ccfae9
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_412
@@ -0,0 +1,8 @@
+"<html><head>" CRLF
+"<title>Precondition Failed (412)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Precondition Failed (412)</h3>" CRLF
+;
+
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_413 b/WLC/arvan/WLC_NGX_ERR_PAGE_413
new file mode 100644
index 000000000..874d52833
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_413
@@ -0,0 +1,8 @@
+"<html><head>" CRLF
+"<title>Request Entity Too Large (413)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Request Entity Too Large (413)</h3>" CRLF
+;
+
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_414 b/WLC/arvan/WLC_NGX_ERR_PAGE_414
new file mode 100644
index 000000000..73a7bc198
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_414
@@ -0,0 +1,8 @@
+"<html><head>" CRLF
+"<title>Request-URI Too Large (414)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Request-URI Too Large (414)</h3>" CRLF
+;
+
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_415 b/WLC/arvan/WLC_NGX_ERR_PAGE_415
new file mode 100644
index 000000000..9cac06716
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_415
@@ -0,0 +1,8 @@
+"<html><head>" CRLF
+"<title>Unsupported Media Type (415)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Unsupported Media Type (415)</h3>" CRLF
+;
+
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_416 b/WLC/arvan/WLC_NGX_ERR_PAGE_416
new file mode 100644
index 000000000..717b71bef
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_416
@@ -0,0 +1,8 @@
+"<html><head>" CRLF
+"<title>Requested Range Not Satisfiable (416)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Requested Range Not Satisfiable (416)</h3>" CRLF
+;
+
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_421 b/WLC/arvan/WLC_NGX_ERR_PAGE_421
new file mode 100644
index 000000000..07ffb538c
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_421
@@ -0,0 +1,7 @@
+"<html><head>" CRLF
+"<title>Too Many Concurrent SMTP Connections (421)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Too Many Concurrent SMTP Connections (421)</h3>" CRLF
+;
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_429 b/WLC/arvan/WLC_NGX_ERR_PAGE_429
new file mode 100644
index 000000000..1c320ff63
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_429
@@ -0,0 +1,7 @@
+"<html><head>" CRLF
+"<title>Too Many Requests (429)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Too Many Requests (429)</h3>" CRLF
+;
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_494 b/WLC/arvan/WLC_NGX_ERR_PAGE_494
new file mode 100644
index 000000000..2e7913f7a
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_494
@@ -0,0 +1,8 @@
+"<html><head>" CRLF
+"<title>Request Header Or Cookie Too Large (400)</title></head>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Bad Request (400)</h3>" CRLF
+"<h3>Request Header Or Cookie Too Large</h3>" CRLF
+;
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_495 b/WLC/arvan/WLC_NGX_ERR_PAGE_495
new file mode 100644
index 000000000..989db331f
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_495
@@ -0,0 +1,9 @@
+"<html><head>" CRLF
+"<title>The SSL certificate error (400)</title></head>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Bad Request (400)</h3>" CRLF
+"<h3>The SSL certificate error</h3>" CRLF
+;
+
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_496 b/WLC/arvan/WLC_NGX_ERR_PAGE_496
new file mode 100644
index 000000000..aae9a5ff1
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_496
@@ -0,0 +1,8 @@
+"<html><head>" CRLF
+"<title>No required SSL certificate was sent (400)</title></head>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Bad Request (400)</h3>" CRLF
+"<h3>No required SSL certificate was sent</h3>" CRLF
+;
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_497 b/WLC/arvan/WLC_NGX_ERR_PAGE_497
new file mode 100644
index 000000000..ece6d5b0f
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_497
@@ -0,0 +1,9 @@
+"<html><head>" CRLF
+"<title>The plain HTTP request was sent to HTTPS port (400)</title></head>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Bad Request (400)</h3>" CRLF
+"<h3>The plain HTTP request was sent to HTTPS port</h3>" CRLF
+;
+
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_500 b/WLC/arvan/WLC_NGX_ERR_PAGE_500
new file mode 100644
index 000000000..6af4904a5
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_500
@@ -0,0 +1,8 @@
+"<html><head>" CRLF
+"<title>Internal Server Error (500)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Internal Server Error (500)</h3>" CRLF
+;
+
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_501 b/WLC/arvan/WLC_NGX_ERR_PAGE_501
new file mode 100644
index 000000000..bd603232a
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_501
@@ -0,0 +1,7 @@
+"<html><head>" CRLF
+"<title>Not Implemented (501)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Not Implemented (501)</h3>" CRLF
+;
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_502 b/WLC/arvan/WLC_NGX_ERR_PAGE_502
new file mode 100644
index 000000000..1f14c07ac
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_502
@@ -0,0 +1,7 @@
+"<html><head>" CRLF
+"<title>Bad Gateway (502)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Bad Gateway (502)</h3>" CRLF
+;
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_503 b/WLC/arvan/WLC_NGX_ERR_PAGE_503
new file mode 100644
index 000000000..c2325717b
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_503
@@ -0,0 +1,7 @@
+"<html><head>" CRLF
+"<title>Service Temporarily Unavailable (503)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Service Temporarily Unavailable (503)</h3>" CRLF
+;
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_504 b/WLC/arvan/WLC_NGX_ERR_PAGE_504
new file mode 100644
index 000000000..a791c4228
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_504
@@ -0,0 +1,8 @@
+"<html><head>" CRLF
+"<title>Gateway Time-out (504)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Gateway Time-out (504)</h3>" CRLF
+;
+
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_505 b/WLC/arvan/WLC_NGX_ERR_PAGE_505
new file mode 100644
index 000000000..29131aa86
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_505
@@ -0,0 +1,8 @@
+"<html><head>" CRLF
+"<title>HTTP Version Not Supported (505)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>HTTP Version Not Supported (505)</h3>" CRLF
+;
+
diff --git a/WLC/arvan/WLC_NGX_ERR_PAGE_507 b/WLC/arvan/WLC_NGX_ERR_PAGE_507
new file mode 100644
index 000000000..e49255df5
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_ERR_PAGE_507
@@ -0,0 +1,8 @@
+"<html><head>" CRLF
+"<title>Insufficient Storage (507)</title>" CRLF
+"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
+"</head><body><div>" CRLF
+"<h1>Arvan Cloud</h1>" CRLF
+"<h3>Insufficient Storage (507)</h3>" CRLF
+;
+
diff --git a/WLC/arvan/WLC_NGX_SERVER_NAME b/WLC/arvan/WLC_NGX_SERVER_NAME
new file mode 100644
index 000000000..d089b55b2
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_SERVER_NAME
@@ -0,0 +1 @@
+ArvanCloud
\ No newline at end of file
diff --git a/WLC/arvan/WLC_NGX_VAR b/WLC/arvan/WLC_NGX_VAR
new file mode 100644
index 000000000..9b1c92bde
--- /dev/null
+++ b/WLC/arvan/WLC_NGX_VAR
@@ -0,0 +1 @@
+ARVANCLOUD
diff --git a/WLCdn.py b/WLCdn.py
index 4a2f57a3c..90242dc3c 100644
--- a/WLCdn.py
+++ b/WLCdn.py
@@ -4,413 +4,107 @@
 import fileinput
 import sys
 
-WLC_NGX_SERVER_NAME="ArvanCloud"
-WLC_NGX_VAR="ARVANCLOUD"
-WLC_NGX_ERR_PAGE_301='''
-"<html><head>" CRLF
-"<title>Moved Permanently (301)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Moved Permanently (301)</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_302='''
-"<html><head>" CRLF
-"<title>Found (302)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Found (302)</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_303='''
-"<html><head>" CRLF
-"<title>See Other (303)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>See Other (303)</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_307='''
-"<html><head>" CRLF
-"<title>Temporary Redirect (307)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Temporary Redirect (307)</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_308='''
-"<html><head>" CRLF
-"<title>Permanent Redirect (308)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Permanent Redirect (308)</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_400='''
-"<html><head>" CRLF
-"<title>Bad Request (400)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Bad Request (400)</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_401='''
-"<html><head>" CRLF
-"<title>Authorization Required (401)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Authorization Required (401)</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_402='''
-"<html><head>" CRLF
-"<title>Payment Required (402)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Payment Required (402)</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_403='''
-"<html><head>" CRLF
-"<title>Forbidden (403)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Forbidden (403)</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_404='''
-"<html><head>" CRLF
-"<title>Not Found (404)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Not Found (404)</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_405='''
-"<html><head>" CRLF
-"<title>Not Allowed (405)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Not Allowed (405)</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_405='''
-"<html><head>" CRLF
-"<title>Not Allowed (405)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Not Allowed (405)</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_406='''
-"<html><head>" CRLF
-"<title>Not Acceptable (406)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Not Acceptable (406)</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_408='''
-"<html><head>" CRLF
-"<title>Request Time-out (408)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Request Time-out (408)</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_409='''
-"<html><head>" CRLF
-"<title>Conflict (409)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Conflict (409)</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_410='''
-"<html><head>" CRLF
-"<title>Gone (410)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Gone (410)</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_411='''
-"<html><head>" CRLF
-"<title>Length Required (411)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Length Required (411)</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_412='''
-"<html><head>" CRLF
-"<title>Precondition Failed (412)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Precondition Failed (412)</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_413='''
-"<html><head>" CRLF
-"<title>Request Entity Too Large (413)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Request Entity Too Large (413)</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_414='''
-"<html><head>" CRLF
-"<title>Request-URI Too Large (414)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Request-URI Too Large (414)</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_415='''
-"<html><head>" CRLF
-"<title>Unsupported Media Type (415)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Unsupported Media Type (415)</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_416='''
-"<html><head>" CRLF
-"<title>Requested Range Not Satisfiable (416)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Requested Range Not Satisfiable (416)</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_421='''
-"<html><head>" CRLF
-"<title>Too Many Concurrent SMTP Connections (421)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Too Many Concurrent SMTP Connections (421)</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_429='''
-"<html><head>" CRLF
-"<title>Too Many Requests (429)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Too Many Requests (429)</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_494='''
-"<html><head>" CRLF
-"<title>Request Header Or Cookie Too Large (400)</title></head>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Bad Request (400)</h3>" CRLF
-"<h3>Request Header Or Cookie Too Large</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_495='''
-"<html><head>" CRLF
-"<title>The SSL certificate error (400)</title></head>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Bad Request (400)</h3>" CRLF
-"<h3>The SSL certificate error</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_496='''
-"<html><head>" CRLF
-"<title>No required SSL certificate was sent (400)</title></head>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Bad Request (400)</h3>" CRLF
-"<h3>No required SSL certificate was sent</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_497='''
-"<html><head>" CRLF
-"<title>The plain HTTP request was sent to HTTPS port (400)</title></head>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Bad Request (400)</h3>" CRLF
-"<h3>The plain HTTP request was sent to HTTPS port</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_500='''
-"<html><head>" CRLF
-"<title>Internal Server Error (500)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Internal Server Error (500)</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_501='''
-"<html><head>" CRLF
-"<title>Not Implemented (501)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Not Implemented (501)</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_502='''
-"<html><head>" CRLF
-"<title>Bad Gateway (502)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Bad Gateway (502)</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_503='''
-"<html><head>" CRLF
-"<title>Service Temporarily Unavailable (503)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Service Temporarily Unavailable (503)</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_504='''
-"<html><head>" CRLF
-"<title>Gateway Time-out (504)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Gateway Time-out (504)</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_505='''
-"<html><head>" CRLF
-"<title>HTTP Version Not Supported (505)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>HTTP Version Not Supported (505)</h3>" CRLF
-;
-'''
-WLC_NGX_ERR_PAGE_507='''
-"<html><head>" CRLF
-"<title>Insufficient Storage (507)</title>" CRLF
-"<style>*{margin:0;padding:0;}body{background:#eee;color:#fff;}div{background:#007878;padding:70px;margin:50px 0;}h3{color:#ddd;}</style>" CRLF
-"</head><body><div>" CRLF
-"<h1>Arvan Cloud</h1>" CRLF
-"<h3>Insufficient Storage (507)</h3>" CRLF
-;
-'''
-
-def inplace_change(filename, old_string, new_string):
+flag = "arvan"
+
+def read_to_var(var_name):
+    ppath = "WLC/arvan/"
+    if flag == "dotin" :
+        ppath = "WLC/dotin/"
+
+    path = ppath + var_name
+    with open(path, 'r') as myfile:
+        data = myfile.read().rstrip("\n")
+    return data
+
+def inplace_change(filename, var_name, new_string):
+    old_string = "%" + var_name + "%"
     for line in fileinput.input(filename, inplace=True):
         # inside this loop the STDOUT will be redirected to the file
         # the comma after each print statement is needed to avoid double line breaks
         print line.replace(old_string, new_string),
 
-def initialize(white_label):
-    if white_label == "dotin":
-        print "initialized by dotin"
+def replace_var(file_name, var_name):
+    new_string = read_to_var(var_name)
+    inplace_change(file_name, var_name, new_string)
+
 
 def main():
     if (len(sys.argv) > 1 ):
-        initialize(sys.argv[1])
+        global flag
+        flag = sys.argv[1]
 
-    inplace_change("src/http/ngx_http_header_filter_module.c", "%WLC_NGX_SERVER_NAME%", WLC_NGX_SERVER_NAME)
+    replace_var("src/http/ngx_http_header_filter_module.c", "WLC_NGX_SERVER_NAME")
 
-    inplace_change("src/core/nginx.h", "%WLC_NGX_VAR%", WLC_NGX_VAR)
+    replace_var("src/core/nginx.h", "WLC_NGX_VAR")
     
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_301%", WLC_NGX_ERR_PAGE_301)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_301")
+
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_302")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_302%", WLC_NGX_ERR_PAGE_302)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_303")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_303%", WLC_NGX_ERR_PAGE_303)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_307")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_307%", WLC_NGX_ERR_PAGE_307)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_308")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_308%", WLC_NGX_ERR_PAGE_308)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_400")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_400%", WLC_NGX_ERR_PAGE_400)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_401")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_401%", WLC_NGX_ERR_PAGE_401)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_402")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_402%", WLC_NGX_ERR_PAGE_402)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_403")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_403%", WLC_NGX_ERR_PAGE_403)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_404")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_404%", WLC_NGX_ERR_PAGE_404)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_405")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_405%", WLC_NGX_ERR_PAGE_405)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_406")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_406%", WLC_NGX_ERR_PAGE_406)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_408")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_408%", WLC_NGX_ERR_PAGE_408)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_409")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_409%", WLC_NGX_ERR_PAGE_409)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_410")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_410%", WLC_NGX_ERR_PAGE_410)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_411")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_411%", WLC_NGX_ERR_PAGE_411)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_412")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_412%", WLC_NGX_ERR_PAGE_412)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_413")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_413%", WLC_NGX_ERR_PAGE_413)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_414")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_414%", WLC_NGX_ERR_PAGE_414)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_415")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_415%", WLC_NGX_ERR_PAGE_415)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_416")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_416%", WLC_NGX_ERR_PAGE_416)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_421")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_421%", WLC_NGX_ERR_PAGE_421)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_429")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_429%", WLC_NGX_ERR_PAGE_429)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_494")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_494%", WLC_NGX_ERR_PAGE_494)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_495")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_495%", WLC_NGX_ERR_PAGE_495)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_496")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_496%", WLC_NGX_ERR_PAGE_496)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_497")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_497%", WLC_NGX_ERR_PAGE_497)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_500")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_500%", WLC_NGX_ERR_PAGE_500)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_501")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_501%", WLC_NGX_ERR_PAGE_501)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_502")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_502%", WLC_NGX_ERR_PAGE_502)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_503")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_503%", WLC_NGX_ERR_PAGE_503)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_504")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_504%", WLC_NGX_ERR_PAGE_504)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_505")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_505%", WLC_NGX_ERR_PAGE_505)
+    replace_var("src/http/ngx_http_special_response.c", "WLC_NGX_ERR_PAGE_507")
 
-    inplace_change("src/http/ngx_http_special_response.c", "%WLC_NGX_ERR_PAGE_507%", WLC_NGX_ERR_PAGE_507)
 
 
 
-- 
GitLab