mirror of
				https://github.com/NginxProxyManager/nginx-proxy-manager.git
				synced 2025-11-04 01:15:14 +00:00 
			
		
		
		
	Compare commits
	
		
			4 Commits
		
	
	
		
			75dbbebf8d
			...
			static-con
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					066a765a4d | ||
| 
						 | 
					5a3d32db7b | ||
| 
						 | 
					8de118d875 | ||
| 
						 | 
					f61ab55b52 | 
@@ -69,6 +69,9 @@ exports.up = function (knex/*, Promise*/) {
 | 
				
			|||||||
				table.json('domain_names').notNull();
 | 
									table.json('domain_names').notNull();
 | 
				
			||||||
				table.string('forward_ip').notNull();
 | 
									table.string('forward_ip').notNull();
 | 
				
			||||||
				table.integer('forward_port').notNull().unsigned();
 | 
									table.integer('forward_port').notNull().unsigned();
 | 
				
			||||||
 | 
									table.string('root_dir').notNull();
 | 
				
			||||||
 | 
									table.string('index_file').notNull();
 | 
				
			||||||
 | 
									table.integer('static').notNull().unsigned().defaultTo(0);
 | 
				
			||||||
				table.integer('access_list_id').notNull().unsigned().defaultTo(0);
 | 
									table.integer('access_list_id').notNull().unsigned().defaultTo(0);
 | 
				
			||||||
				table.integer('certificate_id').notNull().unsigned().defaultTo(0);
 | 
									table.integer('certificate_id').notNull().unsigned().defaultTo(0);
 | 
				
			||||||
				table.integer('ssl_forced').notNull().unsigned().defaultTo(0);
 | 
									table.integer('ssl_forced').notNull().unsigned().defaultTo(0);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -235,6 +235,11 @@
 | 
				
			|||||||
      "description": "Should we cache assets",
 | 
					      "description": "Should we cache assets",
 | 
				
			||||||
      "example": true,
 | 
					      "example": true,
 | 
				
			||||||
      "type": "boolean"
 | 
					      "type": "boolean"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "static": {
 | 
				
			||||||
 | 
					      "description": "Should the proxy point to static files",
 | 
				
			||||||
 | 
					      "example": true,
 | 
				
			||||||
 | 
					      "type": "boolean"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,14 +24,22 @@
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
    "forward_host": {
 | 
					    "forward_host": {
 | 
				
			||||||
      "type": "string",
 | 
					      "type": "string",
 | 
				
			||||||
      "minLength": 1,
 | 
					      "minLength": 0,
 | 
				
			||||||
      "maxLength": 255
 | 
					      "maxLength": 255
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "forward_port": {
 | 
					    "forward_port": {
 | 
				
			||||||
      "type": "integer",
 | 
					      "type": "integer",
 | 
				
			||||||
      "minimum": 1,
 | 
					      "minimum": 0,
 | 
				
			||||||
      "maximum": 65535
 | 
					      "maximum": 65535
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "root_dir": {
 | 
				
			||||||
 | 
					      "type": "string",
 | 
				
			||||||
 | 
					      "minLength": 0,
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "index_file": {
 | 
				
			||||||
 | 
					      "type": "string",
 | 
				
			||||||
 | 
					      "minLength": 0,
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "certificate_id": {
 | 
					    "certificate_id": {
 | 
				
			||||||
      "$ref": "../definitions.json#/definitions/certificate_id"
 | 
					      "$ref": "../definitions.json#/definitions/certificate_id"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
@@ -53,6 +61,9 @@
 | 
				
			|||||||
    "caching_enabled": {
 | 
					    "caching_enabled": {
 | 
				
			||||||
      "$ref": "../definitions.json#/definitions/caching_enabled"
 | 
					      "$ref": "../definitions.json#/definitions/caching_enabled"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "static": {
 | 
				
			||||||
 | 
					      "$ref": "../definitions.json#/definitions/static"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "allow_websocket_upgrade": {
 | 
					    "allow_websocket_upgrade": {
 | 
				
			||||||
      "description": "Allow Websocket Upgrade for all paths",
 | 
					      "description": "Allow Websocket Upgrade for all paths",
 | 
				
			||||||
      "example": true,
 | 
					      "example": true,
 | 
				
			||||||
@@ -76,10 +87,7 @@
 | 
				
			|||||||
      "items": {
 | 
					      "items": {
 | 
				
			||||||
        "type": "object",
 | 
					        "type": "object",
 | 
				
			||||||
        "required": [
 | 
					        "required": [
 | 
				
			||||||
          "forward_scheme",
 | 
					          "forward_scheme"
 | 
				
			||||||
          "forward_host",
 | 
					 | 
				
			||||||
          "forward_port",
 | 
					 | 
				
			||||||
          "path"
 | 
					 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "additionalProperties": false,
 | 
					        "additionalProperties": false,
 | 
				
			||||||
        "properties": {
 | 
					        "properties": {
 | 
				
			||||||
@@ -99,6 +107,15 @@
 | 
				
			|||||||
          "forward_port": {
 | 
					          "forward_port": {
 | 
				
			||||||
            "$ref": "#/definitions/forward_port"
 | 
					            "$ref": "#/definitions/forward_port"
 | 
				
			||||||
          },
 | 
					          },
 | 
				
			||||||
 | 
					          "root_dir": {
 | 
				
			||||||
 | 
					            "$ref": "#/definitions/root_dir"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "index_file": {
 | 
				
			||||||
 | 
					            "$ref": "#/definitions/index_file"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "static": {
 | 
				
			||||||
 | 
					            "$ref": "#/definitions/static"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
          "forward_path": {
 | 
					          "forward_path": {
 | 
				
			||||||
            "type": "string"
 | 
					            "type": "string"
 | 
				
			||||||
          },
 | 
					          },
 | 
				
			||||||
@@ -131,6 +148,12 @@
 | 
				
			|||||||
    "forward_port": {
 | 
					    "forward_port": {
 | 
				
			||||||
      "$ref": "#/definitions/forward_port"
 | 
					      "$ref": "#/definitions/forward_port"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "root_dir": {
 | 
				
			||||||
 | 
					      "$ref": "#/definitions/root_dir"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "index_file": {
 | 
				
			||||||
 | 
					      "$ref": "#/definitions/index_file"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "certificate_id": {
 | 
					    "certificate_id": {
 | 
				
			||||||
      "$ref": "#/definitions/certificate_id"
 | 
					      "$ref": "#/definitions/certificate_id"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
@@ -152,6 +175,9 @@
 | 
				
			|||||||
    "caching_enabled": {
 | 
					    "caching_enabled": {
 | 
				
			||||||
      "$ref": "#/definitions/caching_enabled"
 | 
					      "$ref": "#/definitions/caching_enabled"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "static": {
 | 
				
			||||||
 | 
					      "$ref": "#/definitions/static"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "allow_websocket_upgrade": {
 | 
					    "allow_websocket_upgrade": {
 | 
				
			||||||
      "$ref": "#/definitions/allow_websocket_upgrade"
 | 
					      "$ref": "#/definitions/allow_websocket_upgrade"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
@@ -204,9 +230,7 @@
 | 
				
			|||||||
        "additionalProperties": false,
 | 
					        "additionalProperties": false,
 | 
				
			||||||
        "required": [
 | 
					        "required": [
 | 
				
			||||||
          "domain_names",
 | 
					          "domain_names",
 | 
				
			||||||
          "forward_scheme",
 | 
					          "forward_scheme"
 | 
				
			||||||
          "forward_host",
 | 
					 | 
				
			||||||
          "forward_port"
 | 
					 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "properties": {
 | 
					        "properties": {
 | 
				
			||||||
          "domain_names": {
 | 
					          "domain_names": {
 | 
				
			||||||
@@ -221,6 +245,12 @@
 | 
				
			|||||||
          "forward_port": {
 | 
					          "forward_port": {
 | 
				
			||||||
            "$ref": "#/definitions/forward_port"
 | 
					            "$ref": "#/definitions/forward_port"
 | 
				
			||||||
          },
 | 
					          },
 | 
				
			||||||
 | 
					          "root_dir": {
 | 
				
			||||||
 | 
					            "$ref": "#/definitions/root_dir"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "index_file": {
 | 
				
			||||||
 | 
					            "$ref": "#/definitions/index_file"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
          "certificate_id": {
 | 
					          "certificate_id": {
 | 
				
			||||||
            "$ref": "#/definitions/certificate_id"
 | 
					            "$ref": "#/definitions/certificate_id"
 | 
				
			||||||
          },
 | 
					          },
 | 
				
			||||||
@@ -242,6 +272,9 @@
 | 
				
			|||||||
          "caching_enabled": {
 | 
					          "caching_enabled": {
 | 
				
			||||||
            "$ref": "#/definitions/caching_enabled"
 | 
					            "$ref": "#/definitions/caching_enabled"
 | 
				
			||||||
          },
 | 
					          },
 | 
				
			||||||
 | 
					          "static": {
 | 
				
			||||||
 | 
					            "$ref": "#/definitions/static"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
          "allow_websocket_upgrade": {
 | 
					          "allow_websocket_upgrade": {
 | 
				
			||||||
            "$ref": "#/definitions/allow_websocket_upgrade"
 | 
					            "$ref": "#/definitions/allow_websocket_upgrade"
 | 
				
			||||||
          },
 | 
					          },
 | 
				
			||||||
@@ -294,6 +327,12 @@
 | 
				
			|||||||
          "forward_port": {
 | 
					          "forward_port": {
 | 
				
			||||||
            "$ref": "#/definitions/forward_port"
 | 
					            "$ref": "#/definitions/forward_port"
 | 
				
			||||||
          },
 | 
					          },
 | 
				
			||||||
 | 
					          "root_dir": {
 | 
				
			||||||
 | 
					            "$ref": "#/definitions/root_dir"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "index_file": {
 | 
				
			||||||
 | 
					            "$ref": "#/definitions/index_file"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
          "certificate_id": {
 | 
					          "certificate_id": {
 | 
				
			||||||
            "$ref": "#/definitions/certificate_id"
 | 
					            "$ref": "#/definitions/certificate_id"
 | 
				
			||||||
          },
 | 
					          },
 | 
				
			||||||
@@ -315,6 +354,9 @@
 | 
				
			|||||||
          "caching_enabled": {
 | 
					          "caching_enabled": {
 | 
				
			||||||
            "$ref": "#/definitions/caching_enabled"
 | 
					            "$ref": "#/definitions/caching_enabled"
 | 
				
			||||||
          },
 | 
					          },
 | 
				
			||||||
 | 
					          "static": {
 | 
				
			||||||
 | 
					            "$ref": "#/definitions/static"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
          "allow_websocket_upgrade": {
 | 
					          "allow_websocket_upgrade": {
 | 
				
			||||||
            "$ref": "#/definitions/allow_websocket_upgrade"
 | 
					            "$ref": "#/definitions/allow_websocket_upgrade"
 | 
				
			||||||
          },
 | 
					          },
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,3 +13,8 @@
 | 
				
			|||||||
{% endif %}
 | 
					{% endif %}
 | 
				
			||||||
{% endif %}
 | 
					{% endif %}
 | 
				
			||||||
  server_name {{ domain_names | join: " " }};
 | 
					  server_name {{ domain_names | join: " " }};
 | 
				
			||||||
 | 
					{% if static == 1 or static == true %}
 | 
				
			||||||
 | 
						root {{ root_dir }};
 | 
				
			||||||
 | 
						index {{ index_file }};
 | 
				
			||||||
 | 
					{% endif %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,16 @@
 | 
				
			|||||||
  location {{ path }} {
 | 
					  location {{ path }} {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							{% if static == 0 or static == false %}
 | 
				
			||||||
			proxy_set_header Host $host;
 | 
								proxy_set_header Host $host;
 | 
				
			||||||
			proxy_set_header X-Forwarded-Scheme $scheme;
 | 
								proxy_set_header X-Forwarded-Scheme $scheme;
 | 
				
			||||||
			proxy_set_header X-Forwarded-Proto  $scheme;
 | 
								proxy_set_header X-Forwarded-Proto  $scheme;
 | 
				
			||||||
			proxy_set_header X-Forwarded-For    $remote_addr;
 | 
								proxy_set_header X-Forwarded-For    $remote_addr;
 | 
				
			||||||
			proxy_pass       {{ forward_scheme }}://{{ forward_host }}:{{ forward_port }}{{ forward_path }};
 | 
								proxy_pass       {{ forward_scheme }}://{{ forward_host }}:{{ forward_port }}{{ forward_path }};
 | 
				
			||||||
 | 
							{% else %}
 | 
				
			||||||
 | 
								alias {{ root_dir }}/$1;
 | 
				
			||||||
 | 
								try_files $uri /{{ index_file }} =200;
 | 
				
			||||||
 | 
							{% endif %}  
 | 
				
			||||||
 | 
							
 | 
				
			||||||
    {{ advanced_config }}
 | 
					    {{ advanced_config }}
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,6 +29,7 @@ server {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
{%- if value == "html" %}
 | 
					{%- if value == "html" %}
 | 
				
			||||||
  root /data/nginx/default_www;
 | 
					  root /data/nginx/default_www;
 | 
				
			||||||
 | 
						# root /var/www/test2;
 | 
				
			||||||
  location / {
 | 
					  location / {
 | 
				
			||||||
    try_files $uri /index.html;
 | 
					    try_files $uri /index.html;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -52,8 +52,14 @@ server {
 | 
				
			|||||||
    proxy_http_version 1.1;
 | 
					    proxy_http_version 1.1;
 | 
				
			||||||
    {% endif %}
 | 
					    {% endif %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							{% if static == 1 or static == true %}
 | 
				
			||||||
 | 
								alias {{ root_dir }}/$1;
 | 
				
			||||||
 | 
								try_files $uri /{{index_file}} =200;
 | 
				
			||||||
 | 
							{% else  %}
 | 
				
			||||||
			# Proxy!
 | 
								# Proxy!
 | 
				
			||||||
			include conf.d/include/proxy.conf;
 | 
								include conf.d/include/proxy.conf;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							{% endif %}
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
{% endif %}
 | 
					{% endif %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -35,7 +35,7 @@
 | 
				
			|||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
                        <div class="col-sm-3 col-md-3">
 | 
					                        <div class="col-sm-3 col-md-3">
 | 
				
			||||||
                            <div class="form-group">
 | 
					                            <div class="form-group">
 | 
				
			||||||
                                <label class="form-label"><%- i18n('proxy-hosts', 'forward-scheme') %><span class="form-required">*</span></label>
 | 
					                                <label class="form-label"><%- i18n('proxy-hosts', 'forward-scheme') %></label>
 | 
				
			||||||
                                <select name="forward_scheme" class="form-control custom-select" placeholder="http">
 | 
					                                <select name="forward_scheme" class="form-control custom-select" placeholder="http">
 | 
				
			||||||
                                    <option value="http" <%- forward_scheme === 'http' ? 'selected' : '' %>>http</option>
 | 
					                                    <option value="http" <%- forward_scheme === 'http' ? 'selected' : '' %>>http</option>
 | 
				
			||||||
                                    <option value="https" <%- forward_scheme === 'https' ? 'selected' : '' %>>https</option>
 | 
					                                    <option value="https" <%- forward_scheme === 'https' ? 'selected' : '' %>>https</option>
 | 
				
			||||||
@@ -44,14 +44,26 @@
 | 
				
			|||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
                        <div class="col-sm-5 col-md-5">
 | 
					                        <div class="col-sm-5 col-md-5">
 | 
				
			||||||
                            <div class="form-group">
 | 
					                            <div class="form-group">
 | 
				
			||||||
                                <label class="form-label"><%- i18n('proxy-hosts', 'forward-host') %><span class="form-required">*</span></label>
 | 
					                                <label class="form-label"><%- i18n('proxy-hosts', 'forward-host') %><% if (!static) { %> <span class="form-required">*</span><% } %></label>
 | 
				
			||||||
                                <input type="text" name="forward_host" class="form-control text-monospace" placeholder="" value="<%- forward_host %>" autocomplete="off" maxlength="255" required>
 | 
					                                <input type="text" name="forward_host" class="form-control text-monospace" placeholder="" value="<%- forward_host %>" <%- !static ? 'required' : '' %> autocomplete="off" maxlength="255">
 | 
				
			||||||
                            </div>
 | 
					                            </div>
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
                        <div class="col-sm-4 col-md-4">
 | 
					                        <div class="col-sm-4 col-md-4">
 | 
				
			||||||
                            <div class="form-group">
 | 
					                            <div class="form-group">
 | 
				
			||||||
                                <label class="form-label"><%- i18n('proxy-hosts', 'forward-port') %> <span class="form-required">*</span></label>
 | 
					                                <label class="form-label"><%- i18n('proxy-hosts', 'forward-port') %><% if (!static) { %> <span class="form-required">*</span><% } %> </label>
 | 
				
			||||||
                                <input name="forward_port" type="number" class="form-control text-monospace" placeholder="80" value="<%- forward_port %>" required>
 | 
					                                <input name="forward_port" type="number" class="form-control text-monospace" placeholder="80" value="<%- forward_port %>" <%- !static ? 'required' : '' %>>
 | 
				
			||||||
 | 
					                            </div>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                        <div class="col-sm-5 col-md-5">
 | 
				
			||||||
 | 
					                            <div class="form-group">
 | 
				
			||||||
 | 
					                                <label class="form-label"><%- i18n('proxy-hosts', 'root-dir') %><% if (static) { %> <span class="form-required">*</span><% } %></label>
 | 
				
			||||||
 | 
					                                <input type="text" name="root_dir" class="form-control text-monospace" placeholder="" value="<%- root_dir %>" <%- static ? 'required' : '' %> autocomplete="off" maxlength="255">
 | 
				
			||||||
 | 
					                            </div>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                        <div class="col-sm-5 col-md-5">
 | 
				
			||||||
 | 
					                            <div class="form-group">
 | 
				
			||||||
 | 
					                                <label class="form-label"><%- i18n('proxy-hosts', 'index-file') %><% if (static) { %> <span class="form-required">*</span><% } %></label>
 | 
				
			||||||
 | 
					                                <input type="text" name="index_file" class="form-control text-monospace" placeholder="" value="<%- index_file %>" <%- static ? 'required' : '' %> autocomplete="off" maxlength="255">
 | 
				
			||||||
                            </div>
 | 
					                            </div>
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
                        <div class="col-sm-6 col-md-6">
 | 
					                        <div class="col-sm-6 col-md-6">
 | 
				
			||||||
@@ -81,6 +93,15 @@
 | 
				
			|||||||
                                </label>
 | 
					                                </label>
 | 
				
			||||||
                            </div>
 | 
					                            </div>
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
 | 
					                        <div class="col-sm-12 col-md-12">
 | 
				
			||||||
 | 
					                            <div class="form-group">
 | 
				
			||||||
 | 
					                                <label class="custom-switch">
 | 
				
			||||||
 | 
					                                    <input type="checkbox" class="custom-switch-input static-checkbox" name="static" value="1"<%- static ? ' checked' : '' %>>
 | 
				
			||||||
 | 
					                                    <span class="custom-switch-indicator"></span>
 | 
				
			||||||
 | 
					                                    <span class="custom-switch-description"><%- i18n('proxy-hosts', 'static') %></span>
 | 
				
			||||||
 | 
					                                </label>
 | 
				
			||||||
 | 
					                            </div>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        <div class="col-sm-12 col-md-12">
 | 
					                        <div class="col-sm-12 col-md-12">
 | 
				
			||||||
                            <div class="form-group">
 | 
					                            <div class="form-group">
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -43,7 +43,10 @@ module.exports = Mn.View.extend({
 | 
				
			|||||||
        dns_provider_credentials: 'textarea[name="meta[dns_provider_credentials]"]',
 | 
					        dns_provider_credentials: 'textarea[name="meta[dns_provider_credentials]"]',
 | 
				
			||||||
        propagation_seconds:      'input[name="meta[propagation_seconds]"]',
 | 
					        propagation_seconds:      'input[name="meta[propagation_seconds]"]',
 | 
				
			||||||
        forward_scheme:           'select[name="forward_scheme"]',
 | 
					        forward_scheme:           'select[name="forward_scheme"]',
 | 
				
			||||||
        letsencrypt:              '.letsencrypt'
 | 
					        letsencrypt:              '.letsencrypt',
 | 
				
			||||||
 | 
					        root_dir:                 'input[name="root_dir"]',
 | 
				
			||||||
 | 
					        index_file:               'input[name="index_file"]',
 | 
				
			||||||
 | 
					        static:                   'input[type="checkbox"].static-checkbox',
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    regions: {
 | 
					    regions: {
 | 
				
			||||||
@@ -136,6 +139,15 @@ module.exports = Mn.View.extend({
 | 
				
			|||||||
            this.locationsCollection.add(model);
 | 
					            this.locationsCollection.add(model);
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        'click @ui.static': function(e){
 | 
				
			||||||
 | 
					            const map = {};
 | 
				
			||||||
 | 
					            let value = e.target.value
 | 
				
			||||||
 | 
					            if(e.target.type == 'checkbox') value = e.target.checked;
 | 
				
			||||||
 | 
					            map[e.target.name] = value;
 | 
				
			||||||
 | 
					            this.model.set(map);
 | 
				
			||||||
 | 
					            setTimeout(this.render.bind(this), 300)
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        'click @ui.save': function (e) {
 | 
					        'click @ui.save': function (e) {
 | 
				
			||||||
            e.preventDefault();
 | 
					            e.preventDefault();
 | 
				
			||||||
            this.ui.le_error_info.hide();
 | 
					            this.ui.le_error_info.hide();
 | 
				
			||||||
@@ -167,6 +179,7 @@ module.exports = Mn.View.extend({
 | 
				
			|||||||
            data.hsts_enabled            = !!data.hsts_enabled;
 | 
					            data.hsts_enabled            = !!data.hsts_enabled;
 | 
				
			||||||
            data.hsts_subdomains         = !!data.hsts_subdomains;
 | 
					            data.hsts_subdomains         = !!data.hsts_subdomains;
 | 
				
			||||||
            data.ssl_forced              = !!data.ssl_forced;
 | 
					            data.ssl_forced              = !!data.ssl_forced;
 | 
				
			||||||
 | 
					            data.static                  = !!data.static;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (typeof data.meta === 'undefined') data.meta = {};
 | 
					            if (typeof data.meta === 'undefined') data.meta = {};
 | 
				
			||||||
            data.meta.letsencrypt_agree = data.meta.letsencrypt_agree == 1;
 | 
					            data.meta.letsencrypt_agree = data.meta.letsencrypt_agree == 1;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,7 +23,13 @@
 | 
				
			|||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
</td>
 | 
					</td>
 | 
				
			||||||
<td>
 | 
					<td>
 | 
				
			||||||
 | 
							<!-- <div> <%- static %> </div> -->
 | 
				
			||||||
 | 
							<% if (!static) { %>
 | 
				
			||||||
			<div class="text-monospace"><%- forward_scheme %>://<%- forward_host %>:<%- forward_port %></div>
 | 
								<div class="text-monospace"><%- forward_scheme %>://<%- forward_host %>:<%- forward_port %></div>
 | 
				
			||||||
 | 
							<% } else { %>
 | 
				
			||||||
 | 
								<div class="text-monospace"><%- root_dir %></div>
 | 
				
			||||||
 | 
								<div class="text-monospace"><%- index_file %></div>
 | 
				
			||||||
 | 
							<% } %>
 | 
				
			||||||
</td>
 | 
					</td>
 | 
				
			||||||
<td>
 | 
					<td>
 | 
				
			||||||
    <div><%- certificate && certificate_id ? i18n('ssl', certificate.provider) : i18n('ssl', 'none') %></div>
 | 
					    <div><%- certificate && certificate_id ? i18n('ssl', certificate.provider) : i18n('ssl', 'none') %></div>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,7 +16,7 @@
 | 
				
			|||||||
                        <div class="col-auto">
 | 
					                        <div class="col-auto">
 | 
				
			||||||
                            <div class="selectgroup">
 | 
					                            <div class="selectgroup">
 | 
				
			||||||
                                <label class="selectgroup-item">
 | 
					                                <label class="selectgroup-item">
 | 
				
			||||||
                                    <input type="checkbox" class="selectgroup-input">
 | 
					                                    <input type="checkbox" class="selectgroup-input settings-checkbox">
 | 
				
			||||||
                                    <span class="selectgroup-button">
 | 
					                                    <span class="selectgroup-button">
 | 
				
			||||||
                                        <i class="fe fe-settings"></i>
 | 
					                                        <i class="fe fe-settings"></i>
 | 
				
			||||||
                                    </span>
 | 
					                                    </span>
 | 
				
			||||||
@@ -28,7 +28,7 @@
 | 
				
			|||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
            <div class="col-sm-3 col-md-3">
 | 
					            <div class="col-sm-3 col-md-3">
 | 
				
			||||||
                <div class="form-group">
 | 
					                <div class="form-group">
 | 
				
			||||||
                    <label class="form-label"><%- i18n('proxy-hosts', 'forward-scheme') %><span class="form-required">*</span></label>
 | 
					                    <label class="form-label"><%- i18n('proxy-hosts', 'forward-scheme') %></label>
 | 
				
			||||||
                    <select name="forward_scheme" class="form-control custom-select model" placeholder="http">
 | 
					                    <select name="forward_scheme" class="form-control custom-select model" placeholder="http">
 | 
				
			||||||
                        <option value="http" <%- forward_scheme === 'http' ? 'selected' : '' %>>http</option>
 | 
					                        <option value="http" <%- forward_scheme === 'http' ? 'selected' : '' %>>http</option>
 | 
				
			||||||
                        <option value="https" <%- forward_scheme === 'https' ? 'selected' : '' %>>https</option>
 | 
					                        <option value="https" <%- forward_scheme === 'https' ? 'selected' : '' %>>https</option>
 | 
				
			||||||
@@ -37,15 +37,36 @@
 | 
				
			|||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
            <div class="col-sm-5 col-md-5">
 | 
					            <div class="col-sm-5 col-md-5">
 | 
				
			||||||
                <div class="form-group">
 | 
					                <div class="form-group">
 | 
				
			||||||
                    <label class="form-label"><%- i18n('proxy-hosts', 'forward-host') %><span class="form-required">*</span></label>
 | 
					                    <label class="form-label"><%- i18n('proxy-hosts', 'forward-host') %> <% if (!static) { %> <span class="form-required">*</span> <% } %> </label>
 | 
				
			||||||
                    <input type="text" name="forward_host" class="form-control text-monospace model" placeholder="" value="<%- forward_host %>" autocomplete="off" maxlength="200" required>
 | 
					                    <input type="text" name="forward_host" class="form-control text-monospace model" placeholder="" value="<%- forward_host %>" <%- !static ? 'checked' : '' %> autocomplete="off" maxlength="200">
 | 
				
			||||||
                    <span style="font-size: 9px;"><%- i18n('proxy-hosts', 'custom-forward-host-help') %></span>
 | 
					                    <span style="font-size: 9px;"><%- i18n('proxy-hosts', 'custom-forward-host-help') %></span>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
            <div class="col-sm-4 col-md-4">
 | 
					            <div class="col-sm-4 col-md-4">
 | 
				
			||||||
                <div class="form-group">
 | 
					                <div class="form-group">
 | 
				
			||||||
                    <label class="form-label"><%- i18n('proxy-hosts', 'forward-port') %> <span class="form-required">*</span></label>
 | 
					                    <label class="form-label"><%- i18n('proxy-hosts', 'forward-port') %> <% if (!static) { %> <span class="form-required">*</span><% } %> </label>
 | 
				
			||||||
                    <input name="forward_port" type="number" class="form-control text-monospace model" placeholder="80" value="<%- forward_port %>" required>
 | 
					                    <input name="forward_port" type="number" class="form-control text-monospace model" placeholder="80" value="<%- forward_port %>" <%- !static ? 'checked' : '' %> >
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					            <div class="col-sm-5 col-md-5">
 | 
				
			||||||
 | 
					                <div class="form-group">
 | 
				
			||||||
 | 
					                    <label class="form-label"><%- i18n('proxy-hosts', 'root-dir') %><% if (static) { %> <span class="form-required">*</span><% } %></label>
 | 
				
			||||||
 | 
					                    <input type="text" name="root_dir" class="form-control text-monospace model" placeholder="" value="<%- root_dir %>" <%- static ? 'required' : '' %> autocomplete="off" maxlength="200">
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					            <div class="col-sm-5 col-md-5">
 | 
				
			||||||
 | 
					                <div class="form-group">
 | 
				
			||||||
 | 
					                    <label class="form-label"><%- i18n('proxy-hosts', 'index-file') %><% if (static) { %> <span class="form-required">*</span><% } %></label>
 | 
				
			||||||
 | 
					                    <input type="text" name="index_file" class="form-control text-monospace model" placeholder="" value="<%- index_file %>" <%- static ? 'required' : false %> autocomplete="off" maxlength="200">
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
											<div class="col-sm-12 col-md-12">
 | 
				
			||||||
 | 
													<div class="form-group">
 | 
				
			||||||
 | 
															<label class="custom-switch">
 | 
				
			||||||
 | 
																	<input type="checkbox" class="custom-switch-input location-static-checkbox model" name="static" value="1"<%- static ? ' checked' : '' %> >
 | 
				
			||||||
 | 
																	<span class="custom-switch-indicator"></span>
 | 
				
			||||||
 | 
																	<span class="custom-switch-description"><%- i18n('proxy-hosts', 'static') %></span>
 | 
				
			||||||
 | 
															</label>
 | 
				
			||||||
								</div>
 | 
													</div>
 | 
				
			||||||
						</div>
 | 
											</div>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,13 +7,15 @@ const LocationView = Mn.View.extend({
 | 
				
			|||||||
    className: 'location_block',
 | 
					    className: 'location_block',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ui: {
 | 
					    ui: {
 | 
				
			||||||
        toggle:     'input[type="checkbox"]',
 | 
					        settings:   'input[type="checkbox"].settings-checkbox',
 | 
				
			||||||
 | 
					        static:     'input[type="checkbox"].location-static-checkbox',
 | 
				
			||||||
        config:     '.config',
 | 
					        config:     '.config',
 | 
				
			||||||
        delete:     '.location-delete'
 | 
					        delete:     '.location-delete'
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    events: {
 | 
					    events: {
 | 
				
			||||||
        'change @ui.toggle': function(el) {
 | 
								
 | 
				
			||||||
 | 
					        'change @ui.settings': function(el) {
 | 
				
			||||||
            if (el.target.checked) {
 | 
					            if (el.target.checked) {
 | 
				
			||||||
                this.ui.config.show();
 | 
					                this.ui.config.show();
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
@@ -22,11 +24,20 @@ const LocationView = Mn.View.extend({
 | 
				
			|||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        'change .model': function (e) {
 | 
					        'change .model': function (e) {
 | 
				
			||||||
 | 
										
 | 
				
			||||||
            const map = {};
 | 
					            const map = {};
 | 
				
			||||||
            map[e.target.name] = e.target.value;
 | 
					
 | 
				
			||||||
 | 
											let value = e.target.value
 | 
				
			||||||
 | 
											if(e.target.type == 'checkbox') value = e.target.checked ? 1 : 0
 | 
				
			||||||
 | 
					            map[e.target.name] = value
 | 
				
			||||||
            this.model.set(map);
 | 
					            this.model.set(map);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											setTimeout(this.render.bind(this), 300)
 | 
				
			||||||
 | 
											
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									// 'click @ui.static': 'render',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        'click @ui.delete': function () {
 | 
					        'click @ui.delete': function () {
 | 
				
			||||||
            this.model.destroy();
 | 
					            this.model.destroy();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -123,6 +123,9 @@
 | 
				
			|||||||
      "forward-scheme": "Scheme",
 | 
					      "forward-scheme": "Scheme",
 | 
				
			||||||
      "forward-host": "Forward Hostname / IP",
 | 
					      "forward-host": "Forward Hostname / IP",
 | 
				
			||||||
      "forward-port": "Forward Port",
 | 
					      "forward-port": "Forward Port",
 | 
				
			||||||
 | 
								"root-dir": "Root Directory",
 | 
				
			||||||
 | 
								"static": "Static File Proxy",
 | 
				
			||||||
 | 
								"index-file": "Index File",
 | 
				
			||||||
      "delete": "Delete Proxy Host",
 | 
					      "delete": "Delete Proxy Host",
 | 
				
			||||||
      "delete-confirm": "Are you sure you want to delete the Proxy host for: <strong>{domains}</strong>?",
 | 
					      "delete-confirm": "Are you sure you want to delete the Proxy host for: <strong>{domains}</strong>?",
 | 
				
			||||||
      "help-title": "What is a Proxy Host?",
 | 
					      "help-title": "What is a Proxy Host?",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,8 +9,11 @@ const model = Backbone.Model.extend({
 | 
				
			|||||||
            path:               '',
 | 
					            path:               '',
 | 
				
			||||||
            advanced_config:    '',
 | 
					            advanced_config:    '',
 | 
				
			||||||
            forward_scheme:     'http',
 | 
					            forward_scheme:     'http',
 | 
				
			||||||
            forward_host:       '',
 | 
					            forward_host:       null,
 | 
				
			||||||
            forward_port:       '80'
 | 
					            forward_port:       '80',
 | 
				
			||||||
 | 
											root_dir:						null,
 | 
				
			||||||
 | 
											static:							false,
 | 
				
			||||||
 | 
											index_file:					'index.html',
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,8 +10,11 @@ const model = Backbone.Model.extend({
 | 
				
			|||||||
            modified_on:             null,
 | 
					            modified_on:             null,
 | 
				
			||||||
            domain_names:            [],
 | 
					            domain_names:            [],
 | 
				
			||||||
            forward_scheme:          'http',
 | 
					            forward_scheme:          'http',
 | 
				
			||||||
            forward_host:            '',
 | 
					            forward_host:            null,
 | 
				
			||||||
            forward_port:            null,
 | 
					            forward_port:            null,
 | 
				
			||||||
 | 
					            root_dir:            		 null,
 | 
				
			||||||
 | 
											static:									 false,
 | 
				
			||||||
 | 
					            index_file:            	 'index.html',
 | 
				
			||||||
            access_list_id:          0,
 | 
					            access_list_id:          0,
 | 
				
			||||||
            certificate_id:          0,
 | 
					            certificate_id:          0,
 | 
				
			||||||
            ssl_forced:              false,
 | 
					            ssl_forced:              false,
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										7
									
								
								scripts/restart-dev
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								scripts/restart-dev
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
 | 
				
			||||||
 | 
					. "$DIR/.common.sh"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cd "${DIR}/.."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					. scripts/destroy-dev
 | 
				
			||||||
 | 
					. scripts/start-dev
 | 
				
			||||||
		Reference in New Issue
	
	Block a user