mirror of
				https://github.com/NginxProxyManager/nginx-proxy-manager.git
				synced 2025-11-04 01:15:14 +00:00 
			
		
		
		
	Compare commits
	
		
			27 Commits
		
	
	
		
			v2.12.0
			...
			33cf8ba1c9
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					33cf8ba1c9 | ||
| 
						 | 
					07a4e5791f | ||
| 
						 | 
					640a1eeb68 | ||
| 
						 | 
					04079e7c10 | ||
| 
						 | 
					25a26d6175 | ||
| 
						 | 
					17246e418f | ||
| 
						 | 
					f7d3ca0b07 | ||
| 
						 | 
					a55de386e7 | ||
| 
						 | 
					e9d4f5b827 | ||
| 
						 | 
					1c1cee3836 | ||
| 
						 | 
					eaf6335694 | ||
| 
						 | 
					ffe05ebd41 | ||
| 
						 | 
					2e9a4f1aed | ||
| 
						 | 
					d17c85e4c8 | ||
| 
						 | 
					dad8d0ca00 | ||
| 
						 | 
					d7e0558a35 | ||
| 
						 | 
					ee41bb5562 | ||
| 
						 | 
					0cf6b9caa4 | ||
| 
						 | 
					68a9baf206 | ||
| 
						 | 
					d92421d098 | ||
| 
						 | 
					96c58b203e | ||
| 
						 | 
					d499e2bfef | ||
| 
						 | 
					2f9e062718 | ||
| 
						 | 
					edbed1af90 | ||
| 
						 | 
					8497022e41 | ||
| 
						 | 
					fa2c814fcb | ||
| 
						 | 
					d96a3987c0 | 
							
								
								
									
										10
									
								
								Jenkinsfile
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								Jenkinsfile
									
									
									
									
										vendored
									
									
								
							@@ -43,7 +43,7 @@ pipeline {
 | 
			
		||||
					steps {
 | 
			
		||||
						script {
 | 
			
		||||
							// Defaults to the Branch name, which is applies to all branches AND pr's
 | 
			
		||||
							buildxPushTags = "-t docker.io/jc21/${IMAGE}:github-${BRANCH_LOWER}"
 | 
			
		||||
							buildxPushTags = "-t docker.io/nginxproxymanager/${IMAGE}-dev:${BRANCH_LOWER}"
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
@@ -203,7 +203,13 @@ pipeline {
 | 
			
		||||
					}
 | 
			
		||||
					steps {
 | 
			
		||||
						script {
 | 
			
		||||
							npmGithubPrComment("Docker Image for build ${BUILD_NUMBER} is available on [DockerHub](https://cloud.docker.com/repository/docker/jc21/${IMAGE}) as `jc21/${IMAGE}:github-${BRANCH_LOWER}`\n\n**Note:** ensure you backup your NPM instance before testing this PR image! Especially if this PR contains database changes.", true)
 | 
			
		||||
							npmGithubPrComment("""Docker Image for build ${BUILD_NUMBER} is available on
 | 
			
		||||
[DockerHub](https://cloud.docker.com/repository/docker/nginxproxymanager/${IMAGE}-dev)
 | 
			
		||||
as `nginxproxymanager/${IMAGE}-dev:${BRANCH_LOWER}`
 | 
			
		||||
 | 
			
		||||
**Note:** ensure you backup your NPM instance before testing this image! Especially if there are database changes
 | 
			
		||||
**Note:** this is a different docker image namespace than the official image
 | 
			
		||||
""", true)
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<p align="center">
 | 
			
		||||
	<img src="https://nginxproxymanager.com/github.png">
 | 
			
		||||
	<br><br>
 | 
			
		||||
	<img src="https://img.shields.io/badge/version-2.12.0-green.svg?style=for-the-badge">
 | 
			
		||||
	<img src="https://img.shields.io/badge/version-2.12.1-green.svg?style=for-the-badge">
 | 
			
		||||
	<a href="https://hub.docker.com/repository/docker/jc21/nginx-proxy-manager">
 | 
			
		||||
		<img src="https://img.shields.io/docker/stars/jc21/nginx-proxy-manager.svg?style=for-the-badge">
 | 
			
		||||
	</a>
 | 
			
		||||
 
 | 
			
		||||
@@ -181,7 +181,9 @@ const internalNginx = {
 | 
			
		||||
	 * @param   {Object}  host
 | 
			
		||||
	 * @returns {Promise}
 | 
			
		||||
	 */
 | 
			
		||||
	generateConfig: (host_type, host) => {
 | 
			
		||||
	generateConfig: (host_type, host_row) => {
 | 
			
		||||
		// Prevent modifying the original object:
 | 
			
		||||
		let host             = JSON.parse(JSON.stringify(host_row));
 | 
			
		||||
		const nice_host_type = internalNginx.getFileFriendlyHostType(host_type);
 | 
			
		||||
 | 
			
		||||
		if (config.debug()) {
 | 
			
		||||
 
 | 
			
		||||
@@ -5,6 +5,8 @@ const authModel  = require('../models/auth');
 | 
			
		||||
const helpers    = require('../lib/helpers');
 | 
			
		||||
const TokenModel = require('../models/token');
 | 
			
		||||
 | 
			
		||||
const ERROR_MESSAGE_INVALID_AUTH = 'Invalid email or password';
 | 
			
		||||
 | 
			
		||||
module.exports = {
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
@@ -69,15 +71,15 @@ module.exports = {
 | 
			
		||||
													};
 | 
			
		||||
												});
 | 
			
		||||
										} else {
 | 
			
		||||
											throw new error.AuthError('Invalid password');
 | 
			
		||||
											throw new error.AuthError(ERROR_MESSAGE_INVALID_AUTH);
 | 
			
		||||
										}
 | 
			
		||||
									});
 | 
			
		||||
							} else {
 | 
			
		||||
								throw new error.AuthError('No password auth for user');
 | 
			
		||||
								throw new error.AuthError(ERROR_MESSAGE_INVALID_AUTH);
 | 
			
		||||
							}
 | 
			
		||||
						});
 | 
			
		||||
				} else {
 | 
			
		||||
					throw new error.AuthError('No relevant user found');
 | 
			
		||||
					throw new error.AuthError(ERROR_MESSAGE_INVALID_AUTH);
 | 
			
		||||
				}
 | 
			
		||||
			});
 | 
			
		||||
	},
 | 
			
		||||
 
 | 
			
		||||
@@ -23,9 +23,7 @@
 | 
			
		||||
		"locations",
 | 
			
		||||
		"hsts_enabled",
 | 
			
		||||
		"hsts_subdomains",
 | 
			
		||||
		"certificate",
 | 
			
		||||
		"use_default_location",
 | 
			
		||||
		"ipv6"
 | 
			
		||||
		"certificate"
 | 
			
		||||
	],
 | 
			
		||||
	"additionalProperties": false,
 | 
			
		||||
	"properties": {
 | 
			
		||||
@@ -151,12 +149,6 @@
 | 
			
		||||
					"$ref": "./access-list-object.json"
 | 
			
		||||
				}
 | 
			
		||||
			]
 | 
			
		||||
		},
 | 
			
		||||
		"use_default_location": {
 | 
			
		||||
			"type": "boolean"
 | 
			
		||||
		},
 | 
			
		||||
		"ipv6": {
 | 
			
		||||
			"type": "boolean"
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -28,7 +28,7 @@
 | 
			
		||||
		},
 | 
			
		||||
		"forward_scheme": {
 | 
			
		||||
			"type": "string",
 | 
			
		||||
			"enum": ["http", "https"]
 | 
			
		||||
			"enum": ["auto", "http", "https"]
 | 
			
		||||
		},
 | 
			
		||||
		"forward_domain_name": {
 | 
			
		||||
			"description": "Domain Name",
 | 
			
		||||
 
 | 
			
		||||
@@ -25,7 +25,7 @@
 | 
			
		||||
		"value": {
 | 
			
		||||
			"description": "Value in almost any form",
 | 
			
		||||
			"example": "congratulations",
 | 
			
		||||
			"oneOf": [
 | 
			
		||||
			"anyOf": [
 | 
			
		||||
				{
 | 
			
		||||
					"type": "string",
 | 
			
		||||
					"minLength": 1
 | 
			
		||||
@@ -46,7 +46,10 @@
 | 
			
		||||
		},
 | 
			
		||||
		"meta": {
 | 
			
		||||
			"description": "Extra metadata",
 | 
			
		||||
			"example": {},
 | 
			
		||||
			"example": {
 | 
			
		||||
				"redirect": "http://example.com",
 | 
			
		||||
				"html": "<h1>404</h1>"
 | 
			
		||||
			},
 | 
			
		||||
			"type": "object"
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -49,8 +49,7 @@
 | 
			
		||||
										"minLength": 1
 | 
			
		||||
									},
 | 
			
		||||
									"password": {
 | 
			
		||||
										"type": "string",
 | 
			
		||||
										"minLength": 1
 | 
			
		||||
										"type": "string"
 | 
			
		||||
									}
 | 
			
		||||
								}
 | 
			
		||||
							}
 | 
			
		||||
 
 | 
			
		||||
@@ -94,9 +94,7 @@
 | 
			
		||||
									"avatar": "",
 | 
			
		||||
									"roles": ["admin"]
 | 
			
		||||
								},
 | 
			
		||||
								"certificate": null,
 | 
			
		||||
								"use_default_location": true,
 | 
			
		||||
								"ipv6": true
 | 
			
		||||
								"certificate": null
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
					},
 | 
			
		||||
 
 | 
			
		||||
@@ -79,9 +79,7 @@
 | 
			
		||||
									"nickname": "Admin",
 | 
			
		||||
									"avatar": "",
 | 
			
		||||
									"roles": ["admin"]
 | 
			
		||||
								},
 | 
			
		||||
								"use_default_location": true,
 | 
			
		||||
								"ipv6": true
 | 
			
		||||
								}
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
					},
 | 
			
		||||
 
 | 
			
		||||
@@ -129,9 +129,7 @@
 | 
			
		||||
									"roles": ["admin"]
 | 
			
		||||
								},
 | 
			
		||||
								"certificate": null,
 | 
			
		||||
								"access_list": null,
 | 
			
		||||
								"use_default_location": true,
 | 
			
		||||
								"ipv6": true
 | 
			
		||||
								"access_list": null
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
					},
 | 
			
		||||
 
 | 
			
		||||
@@ -114,9 +114,7 @@
 | 
			
		||||
									"avatar": "//www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?default=mm",
 | 
			
		||||
									"roles": ["admin"]
 | 
			
		||||
								},
 | 
			
		||||
								"access_list": null,
 | 
			
		||||
								"use_default_location": true,
 | 
			
		||||
								"ipv6": true
 | 
			
		||||
								"access_list": null
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
					},
 | 
			
		||||
 
 | 
			
		||||
@@ -114,9 +114,7 @@
 | 
			
		||||
									"avatar": "",
 | 
			
		||||
									"roles": ["admin"]
 | 
			
		||||
								},
 | 
			
		||||
								"certificate": null,
 | 
			
		||||
								"use_default_location": true,
 | 
			
		||||
								"ipv6": true
 | 
			
		||||
								"certificate": null
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
					},
 | 
			
		||||
 
 | 
			
		||||
@@ -99,9 +99,7 @@
 | 
			
		||||
									"nickname": "Admin",
 | 
			
		||||
									"avatar": "",
 | 
			
		||||
									"roles": ["admin"]
 | 
			
		||||
								},
 | 
			
		||||
								"use_default_location": true,
 | 
			
		||||
								"ipv6": true
 | 
			
		||||
								}
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
					},
 | 
			
		||||
 
 | 
			
		||||
@@ -129,9 +129,7 @@
 | 
			
		||||
									"roles": ["admin"]
 | 
			
		||||
								},
 | 
			
		||||
								"certificate": null,
 | 
			
		||||
								"access_list": null,
 | 
			
		||||
								"use_default_location": true,
 | 
			
		||||
								"ipv6": true
 | 
			
		||||
								"access_list": null
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
					},
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,8 @@
 | 
			
		||||
			"name": "settingID",
 | 
			
		||||
			"schema": {
 | 
			
		||||
				"type": "string",
 | 
			
		||||
				"minLength": 1
 | 
			
		||||
				"minLength": 1,
 | 
			
		||||
				"enum": ["default-site"]
 | 
			
		||||
			},
 | 
			
		||||
			"required": true,
 | 
			
		||||
			"description": "Setting ID",
 | 
			
		||||
@@ -31,10 +32,21 @@
 | 
			
		||||
					"minProperties": 1,
 | 
			
		||||
					"properties": {
 | 
			
		||||
						"value": {
 | 
			
		||||
							"$ref": "../../../components/setting-object.json#/properties/value"
 | 
			
		||||
							"type": "string",
 | 
			
		||||
							"minLength": 1,
 | 
			
		||||
							"enum": ["congratulations", "404", "444", "redirect", "html"]
 | 
			
		||||
						},
 | 
			
		||||
						"meta": {
 | 
			
		||||
							"$ref": "../../../components/setting-object.json#/properties/meta"
 | 
			
		||||
							"type": "object",
 | 
			
		||||
							"additionalProperties": false,
 | 
			
		||||
							"properties": {
 | 
			
		||||
								"redirect": {
 | 
			
		||||
									"type": "string"
 | 
			
		||||
								},
 | 
			
		||||
								"html": {
 | 
			
		||||
									"type": "string"
 | 
			
		||||
								}
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
    auth_basic            "Authorization required";
 | 
			
		||||
    auth_basic_user_file  /data/access/{{ access_list_id }};
 | 
			
		||||
 | 
			
		||||
    {% if access_list.pass_auth == 0 %}
 | 
			
		||||
    {% if access_list.pass_auth == 0 or access_list.pass_auth == true %}
 | 
			
		||||
    proxy_set_header Authorization "";
 | 
			
		||||
    {% endif %}
 | 
			
		||||
 | 
			
		||||
@@ -17,7 +17,7 @@
 | 
			
		||||
    deny all;
 | 
			
		||||
 | 
			
		||||
    # Access checks must...
 | 
			
		||||
    {% if access_list.satisfy_any == 1 %}
 | 
			
		||||
    {% if access_list.satisfy_any == 1 or access_list.satisfy_any == true %}
 | 
			
		||||
    satisfy any;
 | 
			
		||||
    {% else %}
 | 
			
		||||
    satisfy all;
 | 
			
		||||
 
 | 
			
		||||
@@ -5,11 +5,16 @@
 | 
			
		||||
  #listen [::]:80;
 | 
			
		||||
{% endif %}
 | 
			
		||||
{% if certificate -%}
 | 
			
		||||
  listen 443 ssl{% if http2_support == 1 or http2_support == true %} http2{% endif %};
 | 
			
		||||
  listen 443 ssl;
 | 
			
		||||
{% if ipv6 -%}
 | 
			
		||||
  listen [::]:443 ssl{% if http2_support == 1 or http2_support == true %} http2{% endif %};
 | 
			
		||||
  listen [::]:443 ssl;
 | 
			
		||||
{% else -%}
 | 
			
		||||
  #listen [::]:443;
 | 
			
		||||
{% endif %}
 | 
			
		||||
{% endif %}
 | 
			
		||||
  server_name {{ domain_names | join: " " }};
 | 
			
		||||
{% if http2_support == 1 or http2_support == true %}
 | 
			
		||||
  http2 on;
 | 
			
		||||
{% else -%}
 | 
			
		||||
  http2 off;
 | 
			
		||||
{% endif %}
 | 
			
		||||
@@ -7,11 +7,7 @@
 | 
			
		||||
    proxy_set_header X-Forwarded-For    $remote_addr;
 | 
			
		||||
    proxy_set_header X-Real-IP		$remote_addr;
 | 
			
		||||
 | 
			
		||||
    set $proxy_forward_scheme {{ forward_scheme }};
 | 
			
		||||
    set $proxy_server         "{{ forward_host }}";
 | 
			
		||||
    set $proxy_port           {{ forward_port }};
 | 
			
		||||
 | 
			
		||||
    proxy_pass       $proxy_forward_scheme://$proxy_server:$proxy_port{{ forward_path }};
 | 
			
		||||
    proxy_pass       {{ forward_scheme }}://{{ forward_host }}:{{ forward_port }}{{ forward_path }};
 | 
			
		||||
 | 
			
		||||
    {% include "_access.conf" %}
 | 
			
		||||
    {% include "_assets.conf" %}
 | 
			
		||||
 
 | 
			
		||||
@@ -137,5 +137,13 @@ Email:    admin@example.com
 | 
			
		||||
Password: changeme
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Immediately after logging in with this default user you will be asked to modify your details and change your password.
 | 
			
		||||
Immediately after logging in with this default user you will be asked to modify your details and change your password. You can change defaults with:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
    environment:
 | 
			
		||||
      INITIAL_ADMIN_EMAIL: my@example.com
 | 
			
		||||
      INITIAL_ADMIN_PASSWORD: mypassword1
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
<td class="text-center">
 | 
			
		||||
    <div class="avatar d-block" style="background-image: url(<%- owner.avatar || '/images/default-avatar.jpg' %>)" title="Owned by <%- owner.name %>">
 | 
			
		||||
        <span class="avatar-status <%- owner.is_disabled ? 'bg-red' : 'bg-green' %>"></span>
 | 
			
		||||
    <div class="avatar d-block" style="background-image: url(<%- (owner && owner.avatar) || '/images/default-avatar.jpg' %>)" title="Owned by <%- (owner && owner.name) || 'a deleted user' %>">
 | 
			
		||||
        <span class="avatar-status <%- owner && !owner.is_disabled ? 'bg-green' : 'bg-red' %>"></span>
 | 
			
		||||
    </div>
 | 
			
		||||
</td>
 | 
			
		||||
<td>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
<td class="text-center">
 | 
			
		||||
    <div class="avatar d-block" style="background-image: url(<%- owner.avatar || '/images/default-avatar.jpg' %>)" title="Owned by <%- owner.name %>">
 | 
			
		||||
        <span class="avatar-status <%- owner.is_disabled ? 'bg-red' : 'bg-green' %>"></span>
 | 
			
		||||
    <div class="avatar d-block" style="background-image: url(<%- (owner && owner.avatar) || '/images/default-avatar.jpg' %>)" title="Owned by <%- (owner && owner.name) || 'a deleted user' %>">
 | 
			
		||||
        <span class="avatar-status <%- owner && !owner.is_disabled ? 'bg-green' : 'bg-red' %>"></span>
 | 
			
		||||
    </div>
 | 
			
		||||
</td>
 | 
			
		||||
<td>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
<td class="text-center">
 | 
			
		||||
    <div class="avatar d-block" style="background-image: url(<%- owner.avatar || '/images/default-avatar.jpg' %>)" title="Owned by <%- owner.name %>">
 | 
			
		||||
        <span class="avatar-status <%- owner.is_disabled ? 'bg-red' : 'bg-green' %>"></span>
 | 
			
		||||
    <div class="avatar d-block" style="background-image: url(<%- (owner && owner.avatar) || '/images/default-avatar.jpg' %>)" title="Owned by <%- (owner && owner.name) || 'a deleted user' %>">
 | 
			
		||||
        <span class="avatar-status <%- owner && !owner.is_disabled ? 'bg-green' : 'bg-red' %>"></span>
 | 
			
		||||
    </div>
 | 
			
		||||
</td>
 | 
			
		||||
<td>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
<td class="text-center">
 | 
			
		||||
    <div class="avatar d-block" style="background-image: url(<%- owner.avatar || '/images/default-avatar.jpg' %>)" title="Owned by <%- owner.name %>">
 | 
			
		||||
        <span class="avatar-status <%- owner.is_disabled ? 'bg-red' : 'bg-green' %>"></span>
 | 
			
		||||
    <div class="avatar d-block" style="background-image: url(<%- (owner && owner.avatar) || '/images/default-avatar.jpg' %>)" title="Owned by <%- (owner && owner.name) || 'a deleted user' %>">
 | 
			
		||||
        <span class="avatar-status <%- owner && !owner.is_disabled ? 'bg-green' : 'bg-red' %>"></span>
 | 
			
		||||
    </div>
 | 
			
		||||
</td>
 | 
			
		||||
<td>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
<td class="text-center">
 | 
			
		||||
    <div class="avatar d-block" style="background-image: url(<%- owner.avatar || '/images/default-avatar.jpg' %>)" title="Owned by <%- owner.name %>">
 | 
			
		||||
        <span class="avatar-status <%- owner.is_disabled ? 'bg-red' : 'bg-green' %>"></span>
 | 
			
		||||
    <div class="avatar d-block" style="background-image: url(<%- (owner && owner.avatar) || '/images/default-avatar.jpg' %>)" title="Owned by <%- (owner && owner.name) || 'a deleted user' %>">
 | 
			
		||||
        <span class="avatar-status <%- owner && !owner.is_disabled ? 'bg-green' : 'bg-red' %>"></span>
 | 
			
		||||
    </div>
 | 
			
		||||
</td>
 | 
			
		||||
<td>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
<td class="text-center">
 | 
			
		||||
    <div class="avatar d-block" style="background-image: url(<%- owner.avatar || '/images/default-avatar.jpg' %>)" title="Owned by <%- owner.name %>">
 | 
			
		||||
        <span class="avatar-status <%- owner.is_disabled ? 'bg-red' : 'bg-green' %>"></span>
 | 
			
		||||
    <div class="avatar d-block" style="background-image: url(<%- (owner && owner.avatar) || '/images/default-avatar.jpg' %>)" title="Owned by <%- (owner && owner.name) || 'a deleted user' %>">
 | 
			
		||||
        <span class="avatar-status <%- owner && !owner.is_disabled ? 'bg-green' : 'bg-red' %>"></span>
 | 
			
		||||
    </div>
 | 
			
		||||
</td>
 | 
			
		||||
<td>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
		"credentials": "dns_acmedns_api_url = http://acmedns-server/\ndns_acmedns_registration_file = /data/acme-registration.json",
 | 
			
		||||
		"full_plugin_name": "dns-acmedns"
 | 
			
		||||
	},
 | 
			
		||||
    "active24":{
 | 
			
		||||
	"active24":{
 | 
			
		||||
		"name": "Active24",
 | 
			
		||||
		"package_name": "certbot-dns-active24",
 | 
			
		||||
		"version": "~=1.5.1",
 | 
			
		||||
@@ -303,6 +303,14 @@
 | 
			
		||||
		"credentials": "dns_joker_username = <Dynamic DNS Authentication Username>\ndns_joker_password = <Dynamic DNS Authentication Password>\ndns_joker_domain = <Dynamic DNS Domain>",
 | 
			
		||||
		"full_plugin_name": "dns-joker"
 | 
			
		||||
	},
 | 
			
		||||
	"leaseweb": {
 | 
			
		||||
		"name": "LeaseWeb",
 | 
			
		||||
		"package_name": "certbot-dns-leaseweb",
 | 
			
		||||
		"version": "~=1.0.1",
 | 
			
		||||
		"dependencies": "",
 | 
			
		||||
		"credentials": "dns_leaseweb_api_token = 01234556789",
 | 
			
		||||
		"full_plugin_name": "dns-leaseweb"
 | 
			
		||||
	},
 | 
			
		||||
	"linode": {
 | 
			
		||||
		"name": "Linode",
 | 
			
		||||
		"package_name": "certbot-dns-linode",
 | 
			
		||||
@@ -424,13 +432,13 @@
 | 
			
		||||
		"full_plugin_name": "dns-rfc2136"
 | 
			
		||||
	},
 | 
			
		||||
	"rockenstein": {
 | 
			
		||||
                "name": "rockenstein AG",
 | 
			
		||||
                "package_name": "certbot-dns-rockenstein",
 | 
			
		||||
                "version": "~=1.0.0",
 | 
			
		||||
                "dependencies": "",
 | 
			
		||||
                "credentials": "dns_rockenstein_token=<token>",
 | 
			
		||||
                "full_plugin_name": "dns-rockenstein"
 | 
			
		||||
        },
 | 
			
		||||
		"name": "rockenstein AG",
 | 
			
		||||
		"package_name": "certbot-dns-rockenstein",
 | 
			
		||||
		"version": "~=1.0.0",
 | 
			
		||||
		"dependencies": "",
 | 
			
		||||
		"credentials": "dns_rockenstein_token=<token>",
 | 
			
		||||
		"full_plugin_name": "dns-rockenstein"
 | 
			
		||||
	},
 | 
			
		||||
	"route53": {
 | 
			
		||||
		"name": "Route 53 (Amazon)",
 | 
			
		||||
		"package_name": "certbot-dns-route53",
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ describe('Full Certificate Provisions', () => {
 | 
			
		||||
		});
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
	it.only('Should be able to create new http certificate', function() {
 | 
			
		||||
	it('Should be able to create new http certificate', function() {
 | 
			
		||||
		cy.task('backendApiPost', {
 | 
			
		||||
			token: token,
 | 
			
		||||
			path:  '/api/nginx/certificates',
 | 
			
		||||
@@ -35,7 +35,7 @@ describe('Full Certificate Provisions', () => {
 | 
			
		||||
	it('Should be able to create new DNS certificate with Powerdns', function() {
 | 
			
		||||
		cy.task('backendApiPost', {
 | 
			
		||||
			token: token,
 | 
			
		||||
			path:  '/api/certificates',
 | 
			
		||||
			path:  '/api/nginx/certificates',
 | 
			
		||||
			data:  {
 | 
			
		||||
				domain_names: [
 | 
			
		||||
					'website2.example.com'
 | 
			
		||||
@@ -45,7 +45,8 @@ describe('Full Certificate Provisions', () => {
 | 
			
		||||
					dns_challenge: true,
 | 
			
		||||
					dns_provider: 'powerdns',
 | 
			
		||||
					dns_provider_credentials: 'dns_powerdns_api_url = http://ns1.pdns:8081\r\ndns_powerdns_api_key = npm',
 | 
			
		||||
					letsencrypt_agree: true
 | 
			
		||||
					letsencrypt_agree: true,
 | 
			
		||||
					propagation_seconds: 5,
 | 
			
		||||
				},
 | 
			
		||||
				provider: 'letsencrypt'
 | 
			
		||||
			}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
/// <reference types="cypress" />
 | 
			
		||||
 | 
			
		||||
describe('Hosts endpoints', () => {
 | 
			
		||||
describe('Proxy Hosts endpoints', () => {
 | 
			
		||||
	let token;
 | 
			
		||||
 | 
			
		||||
	before(() => {
 | 
			
		||||
							
								
								
									
										124
									
								
								test/cypress/e2e/api/Settings.cy.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										124
									
								
								test/cypress/e2e/api/Settings.cy.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,124 @@
 | 
			
		||||
/// <reference types="cypress" />
 | 
			
		||||
 | 
			
		||||
describe('Settings endpoints', () => {
 | 
			
		||||
	let token;
 | 
			
		||||
 | 
			
		||||
	before(() => {
 | 
			
		||||
		cy.getToken().then((tok) => {
 | 
			
		||||
			token = tok;
 | 
			
		||||
		});
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
	it('Get all settings', function() {
 | 
			
		||||
		cy.task('backendApiGet', {
 | 
			
		||||
			token: token,
 | 
			
		||||
			path:  '/api/settings',
 | 
			
		||||
		}).then((data) => {
 | 
			
		||||
			cy.validateSwaggerSchema('get', 200, '/settings', data);
 | 
			
		||||
			expect(data.length).to.be.greaterThan(0);
 | 
			
		||||
		});
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
	it('Get default-site setting', function() {
 | 
			
		||||
		cy.task('backendApiGet', {
 | 
			
		||||
			token: token,
 | 
			
		||||
			path:  '/api/settings/default-site',
 | 
			
		||||
		}).then((data) => {
 | 
			
		||||
			cy.validateSwaggerSchema('get', 200, '/settings/{settingID}', data);
 | 
			
		||||
			expect(data).to.have.property('id');
 | 
			
		||||
			expect(data.id).to.be.equal('default-site');
 | 
			
		||||
		});
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
	it('Default Site congratulations', function() {
 | 
			
		||||
		cy.task('backendApiPut', {
 | 
			
		||||
			token: token,
 | 
			
		||||
			path:  '/api/settings/default-site',
 | 
			
		||||
			data: {
 | 
			
		||||
				value: 'congratulations',
 | 
			
		||||
			},
 | 
			
		||||
		}).then((data) => {
 | 
			
		||||
			cy.validateSwaggerSchema('put', 200, '/settings/{settingID}', data);
 | 
			
		||||
			expect(data).to.have.property('id');
 | 
			
		||||
			expect(data.id).to.be.equal('default-site');
 | 
			
		||||
			expect(data).to.have.property('value');
 | 
			
		||||
			expect(data.value).to.be.equal('congratulations');
 | 
			
		||||
		});
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
	it('Default Site 404', function() {
 | 
			
		||||
		cy.task('backendApiPut', {
 | 
			
		||||
			token: token,
 | 
			
		||||
			path:  '/api/settings/default-site',
 | 
			
		||||
			data: {
 | 
			
		||||
				value: '404',
 | 
			
		||||
			},
 | 
			
		||||
		}).then((data) => {
 | 
			
		||||
			cy.validateSwaggerSchema('put', 200, '/settings/{settingID}', data);
 | 
			
		||||
			expect(data).to.have.property('id');
 | 
			
		||||
			expect(data.id).to.be.equal('default-site');
 | 
			
		||||
			expect(data).to.have.property('value');
 | 
			
		||||
			expect(data.value).to.be.equal('404');
 | 
			
		||||
		});
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
	it('Default Site 444', function() {
 | 
			
		||||
		cy.task('backendApiPut', {
 | 
			
		||||
			token: token,
 | 
			
		||||
			path:  '/api/settings/default-site',
 | 
			
		||||
			data: {
 | 
			
		||||
				value: '444',
 | 
			
		||||
			},
 | 
			
		||||
		}).then((data) => {
 | 
			
		||||
			cy.validateSwaggerSchema('put', 200, '/settings/{settingID}', data);
 | 
			
		||||
			expect(data).to.have.property('id');
 | 
			
		||||
			expect(data.id).to.be.equal('default-site');
 | 
			
		||||
			expect(data).to.have.property('value');
 | 
			
		||||
			expect(data.value).to.be.equal('444');
 | 
			
		||||
		});
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
	it('Default Site redirect', function() {
 | 
			
		||||
		cy.task('backendApiPut', {
 | 
			
		||||
			token: token,
 | 
			
		||||
			path:  '/api/settings/default-site',
 | 
			
		||||
			data: {
 | 
			
		||||
				value: 'redirect',
 | 
			
		||||
				meta: {
 | 
			
		||||
					redirect: 'https://www.google.com',
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
		}).then((data) => {
 | 
			
		||||
			cy.validateSwaggerSchema('put', 200, '/settings/{settingID}', data);
 | 
			
		||||
			expect(data).to.have.property('id');
 | 
			
		||||
			expect(data.id).to.be.equal('default-site');
 | 
			
		||||
			expect(data).to.have.property('value');
 | 
			
		||||
			expect(data.value).to.be.equal('redirect');
 | 
			
		||||
			expect(data).to.have.property('meta');
 | 
			
		||||
			expect(data.meta).to.have.property('redirect');
 | 
			
		||||
			expect(data.meta.redirect).to.be.equal('https://www.google.com');
 | 
			
		||||
		});
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
	it('Default Site html', function() {
 | 
			
		||||
		cy.task('backendApiPut', {
 | 
			
		||||
			token: token,
 | 
			
		||||
			path:  '/api/settings/default-site',
 | 
			
		||||
			data: {
 | 
			
		||||
				value: 'html',
 | 
			
		||||
				meta: {
 | 
			
		||||
					html: '<p>hello world</p>'
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
		}).then((data) => {
 | 
			
		||||
			cy.validateSwaggerSchema('put', 200, '/settings/{settingID}', data);
 | 
			
		||||
			expect(data).to.have.property('id');
 | 
			
		||||
			expect(data.id).to.be.equal('default-site');
 | 
			
		||||
			expect(data).to.have.property('value');
 | 
			
		||||
			expect(data.value).to.be.equal('html');
 | 
			
		||||
			expect(data).to.have.property('meta');
 | 
			
		||||
			expect(data.meta).to.have.property('html');
 | 
			
		||||
			expect(data.meta.html).to.be.equal('<p>hello world</p>');
 | 
			
		||||
		});
 | 
			
		||||
	});
 | 
			
		||||
});
 | 
			
		||||
@@ -7,7 +7,7 @@ const BackendApi = function(config, token) {
 | 
			
		||||
 | 
			
		||||
	this.axios = axios.create({
 | 
			
		||||
		baseURL: config.baseUrl,
 | 
			
		||||
		timeout: 60000,
 | 
			
		||||
		timeout: 90000,
 | 
			
		||||
	});
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user