Esempio n. 1
0
    def test_fallbacks(self, fallbacks, environ, expected):
        reverse_proxied = ReverseProxiedEnvironment(**fallbacks)

        merged_environ = dict(standard_environ)
        merged_environ.update(environ)

        actual = reverse_proxied(merged_environ)

        merged_expected = dict(standard_environ)
        merged_expected.update(environ)
        merged_expected.update(expected)

        self.assertDictEqual(merged_expected, actual)
Esempio n. 2
0
    def test_nohost(self, environ, expected):
        reverse_proxied = ReverseProxiedEnvironment()

        merged_environ = dict(standard_environ)
        merged_environ.update(environ)
        del merged_environ["HTTP_HOST"]

        actual = reverse_proxied(merged_environ)

        merged_expected = dict(standard_environ)
        merged_expected.update(environ)
        merged_expected.update(expected)

        self.assertDictEqual(merged_expected, actual)
Esempio n. 3
0
	def _setup_app(self, app):
		from octoprint.server.util.flask import ReverseProxiedEnvironment, OctoPrintFlaskRequest, OctoPrintFlaskResponse

		s = settings()

		app.debug = self._debug

		secret_key = s.get(["server", "secretKey"])
		if not secret_key:
			import string
			from random import choice
			chars = string.ascii_lowercase + string.ascii_uppercase + string.digits
			secret_key = "".join(choice(chars) for _ in range(32))
			s.set(["server", "secretKey"], secret_key)
			s.save()

		app.secret_key = secret_key

		reverse_proxied = ReverseProxiedEnvironment(
			header_prefix=s.get(["server", "reverseProxy", "prefixHeader"]),
			header_scheme=s.get(["server", "reverseProxy", "schemeHeader"]),
			header_host=s.get(["server", "reverseProxy", "hostHeader"]),
			header_server=s.get(["server", "reverseProxy", "serverHeader"]),
			header_port=s.get(["server", "reverseProxy", "portHeader"]),
			prefix=s.get(["server", "reverseProxy", "prefixFallback"]),
			scheme=s.get(["server", "reverseProxy", "schemeFallback"]),
			host=s.get(["server", "reverseProxy", "hostFallback"]),
			server=s.get(["server", "reverseProxy", "serverFallback"]),
			port=s.get(["server", "reverseProxy", "portFallback"])
		)

		OctoPrintFlaskRequest.environment_wrapper = reverse_proxied
		app.request_class = OctoPrintFlaskRequest
		app.response_class = OctoPrintFlaskResponse

		@app.before_request
		def before_request():
			g.locale = self._get_locale()

		@app.after_request
		def after_request(response):
			# send no-cache headers with all POST responses
			if request.method == "POST":
				response.cache_control.no_cache = True
			response.headers.add("X-Clacks-Overhead", "GNU Terry Pratchett")
			return response

		from octoprint.util.jinja import MarkdownFilter
		MarkdownFilter(app)
Esempio n. 4
0
 def test_header_config_none(self):
     result = ReverseProxiedEnvironment.to_header_candidates(None)
     self.assertEqual(result, [])
Esempio n. 5
0
 def test_header_config_string(self):
     result = ReverseProxiedEnvironment.to_header_candidates(
         "prefix-header")
     self.assertSetEqual(set(result), set(["HTTP_PREFIX_HEADER"]))
Esempio n. 6
0
 def test_header_config_ok(self):
     result = ReverseProxiedEnvironment.to_header_candidates(
         ["prefix-header1", "prefix-header2"])
     self.assertSetEqual(
         set(result), set(["HTTP_PREFIX_HEADER1", "HTTP_PREFIX_HEADER2"]))
Esempio n. 7
0
	def test_header_config_none(self):
		result = ReverseProxiedEnvironment.to_header_candidates(None)
		self.assertEquals(result, [])
Esempio n. 8
0
	def test_header_config_string(self):
		result = ReverseProxiedEnvironment.to_header_candidates("prefix-header")
		self.assertEquals(result, ["HTTP_PREFIX_HEADER"])
Esempio n. 9
0
	def test_header_config_ok(self):
		result = ReverseProxiedEnvironment.to_header_candidates(["prefix-header1", "prefix-header2"])
		self.assertEquals(result, ["HTTP_PREFIX_HEADER1", "HTTP_PREFIX_HEADER2"])