mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-11-03 03:16:10 -06:00 
			
		
		
		
	Drop SHARED_SECRET in favour of EMAIL_SECRET
Originally we used SHARED secret both for email and for the API. That was a bad idea, and now that we're only using this value for one case, I've renamed it to reflect its actual use.
This commit is contained in:
		@@ -1,6 +1,17 @@
 | 
				
			|||||||
Changelog
 | 
					Changelog
 | 
				
			||||||
#########
 | 
					#########
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* 0.6.0
 | 
				
			||||||
 | 
					  * Abandon the shared-secret trick we were using for the POST API in favour
 | 
				
			||||||
 | 
					    of BasicAuth or Django session.
 | 
				
			||||||
 | 
					  * Fix the POST API so it actually works.  `#236`_
 | 
				
			||||||
 | 
					  * **Breaking change**: We've dropped the use of ``PAPERLESS_SHARED_SECRET``
 | 
				
			||||||
 | 
					    as it was being used both for the API (now replaced with a normal auth)
 | 
				
			||||||
 | 
					    and form email polling.  Now that we're only using it for email, this
 | 
				
			||||||
 | 
					    variable has been renamed to ``PAPERLESS_EMAIL_SECRET``.  The old value
 | 
				
			||||||
 | 
					    will still work for a while, but you should change your config if you've
 | 
				
			||||||
 | 
					    been using the email polling feature.  Thanks to `Joshua Gilman`_ for all
 | 
				
			||||||
 | 
					    the help with this feature.
 | 
				
			||||||
* 0.5.0
 | 
					* 0.5.0
 | 
				
			||||||
  * Support for fuzzy matching in the auto-tagger & auto-correspondent systems
 | 
					  * Support for fuzzy matching in the auto-tagger & auto-correspondent systems
 | 
				
			||||||
    thanks to `Jake Gysland`_'s patch `#220`_.
 | 
					    thanks to `Jake Gysland`_'s patch `#220`_.
 | 
				
			||||||
@@ -11,7 +22,8 @@ Changelog
 | 
				
			|||||||
    thanks to `CkuT`_ for finding this shortcoming and doing the work to get
 | 
					    thanks to `CkuT`_ for finding this shortcoming and doing the work to get
 | 
				
			||||||
    it fixed in `#224`_.
 | 
					    it fixed in `#224`_.
 | 
				
			||||||
  * All of the following changes are thanks to `David Martin`_:
 | 
					  * All of the following changes are thanks to `David Martin`_:
 | 
				
			||||||
    * Bumped the dependency on pyocr to 0.4.7 so new users can make use of Tesseract 4 if they so prefer (`#226`_).
 | 
					    * Bumped the dependency on pyocr to 0.4.7 so new users can make use of
 | 
				
			||||||
 | 
					    Tesseract 4 if they so prefer (`#226`_).
 | 
				
			||||||
    * Fixed a number of issues with the automated mail handler (`#227`_, `#228`_)
 | 
					    * Fixed a number of issues with the automated mail handler (`#227`_, `#228`_)
 | 
				
			||||||
    * Amended the documentation for better handling of systemd service files (`#229`_)
 | 
					    * Amended the documentation for better handling of systemd service files (`#229`_)
 | 
				
			||||||
    * Amended the Django Admin configuration to have nice headers (`#230`_)
 | 
					    * Amended the Django Admin configuration to have nice headers (`#230`_)
 | 
				
			||||||
@@ -206,6 +218,7 @@ Changelog
 | 
				
			|||||||
.. _CkuT: https://github.com/CkuT
 | 
					.. _CkuT: https://github.com/CkuT
 | 
				
			||||||
.. _David Martin: https://github.com/ddddavidmartin
 | 
					.. _David Martin: https://github.com/ddddavidmartin
 | 
				
			||||||
.. _Paperless Desktop: https://github.com/thomasbrueggemann/paperless-desktop
 | 
					.. _Paperless Desktop: https://github.com/thomasbrueggemann/paperless-desktop
 | 
				
			||||||
 | 
					.. _Joshua Gilman: https://github.com/jmgilman
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.. _#20: https://github.com/danielquinn/paperless/issues/20
 | 
					.. _#20: https://github.com/danielquinn/paperless/issues/20
 | 
				
			||||||
.. _#44: https://github.com/danielquinn/paperless/issues/44
 | 
					.. _#44: https://github.com/danielquinn/paperless/issues/44
 | 
				
			||||||
@@ -243,4 +256,5 @@ Changelog
 | 
				
			|||||||
.. _#228: https://github.com/danielquinn/paperless/pull/228
 | 
					.. _#228: https://github.com/danielquinn/paperless/pull/228
 | 
				
			||||||
.. _#229: https://github.com/danielquinn/paperless/pull/229
 | 
					.. _#229: https://github.com/danielquinn/paperless/pull/229
 | 
				
			||||||
.. _#230: https://github.com/danielquinn/paperless/pull/230
 | 
					.. _#230: https://github.com/danielquinn/paperless/pull/230
 | 
				
			||||||
 | 
					.. _#236: https://github.com/danielquinn/paperless/issues/236
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -125,7 +125,7 @@ So, with all that in mind, here's what you do to get it running:
 | 
				
			|||||||
   ``PATHS AND FOLDERS`` and ``SECURITY``.
 | 
					   ``PATHS AND FOLDERS`` and ``SECURITY``.
 | 
				
			||||||
   If you decided to use a subfolder of an existing account, then make sure you
 | 
					   If you decided to use a subfolder of an existing account, then make sure you
 | 
				
			||||||
   set ``PAPERLESS_CONSUME_MAIL_INBOX`` accordingly here.  You also have to set
 | 
					   set ``PAPERLESS_CONSUME_MAIL_INBOX`` accordingly here.  You also have to set
 | 
				
			||||||
   the ``PAPERLESS_SHARED_SECRET`` to something you can remember 'cause you'll
 | 
					   the ``PAPERLESS_EMAIL_SECRET`` to something you can remember 'cause you'll
 | 
				
			||||||
   have to include that in every email you send.
 | 
					   have to include that in every email you send.
 | 
				
			||||||
3. Restart the :ref:`consumer <utilities-consumer>`.  The consumer will check
 | 
					3. Restart the :ref:`consumer <utilities-consumer>`.  The consumer will check
 | 
				
			||||||
   the configured email account at startup and from then on every 10 minutes
 | 
					   the configured email account at startup and from then on every 10 minutes
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
###############################################################################
 | 
					###############################################################################
 | 
				
			||||||
####                       Paths  and folders                              ####
 | 
					####                         Paths & Folders                               ####
 | 
				
			||||||
###############################################################################
 | 
					###############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# This where your documents should go to be consumed.  Make sure that it exists
 | 
					# This where your documents should go to be consumed.  Make sure that it exists
 | 
				
			||||||
@@ -39,7 +39,11 @@ PAPERLESS_CONSUME_MAIL_PASS=""
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# Override the default IMAP inbox here. If not set Paperless defaults to
 | 
					# Override the default IMAP inbox here. If not set Paperless defaults to
 | 
				
			||||||
# "INBOX".
 | 
					# "INBOX".
 | 
				
			||||||
#PAPERLESS_CONSUME_MAIL_INBOX=""
 | 
					#PAPERLESS_CONSUME_MAIL_INBOX="INBOX"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Any email sent to the target account that does not contain this text will be
 | 
				
			||||||
 | 
					# ignored.
 | 
				
			||||||
 | 
					PAPERLESS_EMAIL_SECRET=""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
###############################################################################
 | 
					###############################################################################
 | 
				
			||||||
@@ -61,11 +65,6 @@ PAPERLESS_CONSUME_MAIL_PASS=""
 | 
				
			|||||||
PAPERLESS_PASSPHRASE="secret"
 | 
					PAPERLESS_PASSPHRASE="secret"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# If you intend to consume documents either via HTTP POST or by email, you must
 | 
					 | 
				
			||||||
# have a shared secret here.
 | 
					 | 
				
			||||||
PAPERLESS_SHARED_SECRET=""
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# The secret key has a default that should be fine so long as you're hosting
 | 
					# The secret key has a default that should be fine so long as you're hosting
 | 
				
			||||||
# Paperless on a closed network.  However, if you're putting this anywhere
 | 
					# Paperless on a closed network.  However, if you're putting this anywhere
 | 
				
			||||||
# public, you should change the key to something unique and verbose.
 | 
					# public, you should change the key to something unique and verbose.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,7 +13,6 @@ from .consumer import Consumer
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
class UploadForm(forms.Form):
 | 
					class UploadForm(forms.Form):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SECRET = settings.SHARED_SECRET
 | 
					 | 
				
			||||||
    TYPE_LOOKUP = {
 | 
					    TYPE_LOOKUP = {
 | 
				
			||||||
        "application/pdf": Document.TYPE_PDF,
 | 
					        "application/pdf": Document.TYPE_PDF,
 | 
				
			||||||
        "image/png": Document.TYPE_PNG,
 | 
					        "image/png": Document.TYPE_PNG,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -43,7 +43,10 @@ class Message(Loggable):
 | 
				
			|||||||
    and n attachments, and that we don't care about the message body.
 | 
					    and n attachments, and that we don't care about the message body.
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SECRET = settings.SHARED_SECRET
 | 
					    SECRET = os.getenv(
 | 
				
			||||||
 | 
					        "PAPERLESS_EMAIL_SECRET",
 | 
				
			||||||
 | 
					        os.getenv("PAPERLESS_SHARED_SECRET")  # TODO: Remove after 2017/09
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __init__(self, data, group=None):
 | 
					    def __init__(self, data, group=None):
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
@@ -153,15 +156,16 @@ class MailFetcher(Loggable):
 | 
				
			|||||||
        Loggable.__init__(self)
 | 
					        Loggable.__init__(self)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self._connection = None
 | 
					        self._connection = None
 | 
				
			||||||
        self._host = settings.MAIL_CONSUMPTION["HOST"]
 | 
					        self._host = os.getenv("PAPERLESS_CONSUME_MAIL_HOST")
 | 
				
			||||||
        self._port = settings.MAIL_CONSUMPTION["PORT"]
 | 
					        self._port = os.getenv("PAPERLESS_CONSUME_MAIL_PORT")
 | 
				
			||||||
        self._username = settings.MAIL_CONSUMPTION["USERNAME"]
 | 
					        self._username = os.getenv("PAPERLESS_CONSUME_MAIL_USER")
 | 
				
			||||||
        self._password = settings.MAIL_CONSUMPTION["PASSWORD"]
 | 
					        self._password = os.getenv("PAPERLESS_CONSUME_MAIL_PASS")
 | 
				
			||||||
        self._inbox = settings.MAIL_CONSUMPTION["INBOX"]
 | 
					        self._inbox = os.getenv("PAPERLESS_CONSUME_MAIL_INBOX", "INBOX")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self._enabled = bool(self._host)
 | 
					        self._enabled = bool(self._host)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.last_checked = datetime.datetime.now()
 | 
					        self.last_checked = datetime.datetime.now()
 | 
				
			||||||
 | 
					        print(self._connection, self._host, self._port, self._username, self._password, self._inbox, self._enabled, self.last_checked)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def pull(self):
 | 
					    def pull(self):
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -84,3 +84,20 @@ def binaries_check(app_configs, **kwargs):
 | 
				
			|||||||
            check_messages.append(Warning(error.format(binary), hint))
 | 
					            check_messages.append(Warning(error.format(binary), hint))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return check_messages
 | 
					    return check_messages
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@register()
 | 
				
			||||||
 | 
					def config_check(app_configs, **kwargs):
 | 
				
			||||||
 | 
					    warning = (
 | 
				
			||||||
 | 
					        "It looks like you have PAPERLESS_SHARED_SECRET defined.  Note that "
 | 
				
			||||||
 | 
					        "in the \npast, this variable was used for both API authentication "
 | 
				
			||||||
 | 
					        "and as the mail \nkeyword.  As the API no no longer uses it, this "
 | 
				
			||||||
 | 
					        "variable has been renamed to \nPAPERLESS_EMAIL_SECRET, so if you're "
 | 
				
			||||||
 | 
					        "using the mail feature, you'd best update \nyour variable name.\n\n"
 | 
				
			||||||
 | 
					        "The old variable will stop working in a few months."
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if os.getenv("PAPERLESS_SHARED_SECRET"):
 | 
				
			||||||
 | 
					        return [Warning(warning)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return []
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -237,20 +237,6 @@ CONSUMPTION_DIR = os.getenv("PAPERLESS_CONSUMPTION_DIR")
 | 
				
			|||||||
# slowly, you may want to use a higher value than the default.
 | 
					# slowly, you may want to use a higher value than the default.
 | 
				
			||||||
CONSUMER_LOOP_TIME = int(os.getenv("PAPERLESS_CONSUMER_LOOP_TIME", 10))
 | 
					CONSUMER_LOOP_TIME = int(os.getenv("PAPERLESS_CONSUMER_LOOP_TIME", 10))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# If you want to use IMAP mail consumption, populate this with useful values.
 | 
					 | 
				
			||||||
# If you leave HOST set to None, we assume you're not going to use this
 | 
					 | 
				
			||||||
# feature.
 | 
					 | 
				
			||||||
MAIL_CONSUMPTION = {
 | 
					 | 
				
			||||||
    "HOST": os.getenv("PAPERLESS_CONSUME_MAIL_HOST"),
 | 
					 | 
				
			||||||
    "PORT": os.getenv("PAPERLESS_CONSUME_MAIL_PORT"),
 | 
					 | 
				
			||||||
    "USERNAME": os.getenv("PAPERLESS_CONSUME_MAIL_USER"),
 | 
					 | 
				
			||||||
    "PASSWORD": os.getenv("PAPERLESS_CONSUME_MAIL_PASS"),
 | 
					 | 
				
			||||||
    # If True, use SSL/TLS to connect
 | 
					 | 
				
			||||||
    "USE_SSL": os.getenv("PAPERLESS_CONSUME_MAIL_USE_SSL", "y").lower() == "y",
 | 
					 | 
				
			||||||
    # The name of the inbox on the server
 | 
					 | 
				
			||||||
    "INBOX": os.getenv("PAPERLESS_CONSUME_MAIL_INBOX", "INBOX")
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# This is used to encrypt the original documents and decrypt them later when
 | 
					# This is used to encrypt the original documents and decrypt them later when
 | 
				
			||||||
# you want to download them.  Set it and change the permissions on this file to
 | 
					# you want to download them.  Set it and change the permissions on this file to
 | 
				
			||||||
# 0600, or set it to `None` and you'll be prompted for the passphrase at
 | 
					# 0600, or set it to `None` and you'll be prompted for the passphrase at
 | 
				
			||||||
@@ -260,11 +246,6 @@ MAIL_CONSUMPTION = {
 | 
				
			|||||||
# files.
 | 
					# files.
 | 
				
			||||||
PASSPHRASE = os.getenv("PAPERLESS_PASSPHRASE")
 | 
					PASSPHRASE = os.getenv("PAPERLESS_PASSPHRASE")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# If you intend to use the "API" to push files into the consumer, you'll need
 | 
					 | 
				
			||||||
# to provide a shared secret here.  Leaving this as the default will disable
 | 
					 | 
				
			||||||
# the API.
 | 
					 | 
				
			||||||
SHARED_SECRET = os.getenv("PAPERLESS_SHARED_SECRET", "")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Trigger a script after every successful document consumption?
 | 
					# Trigger a script after every successful document consumption?
 | 
				
			||||||
PRE_CONSUME_SCRIPT = os.getenv("PAPERLESS_PRE_CONSUME_SCRIPT")
 | 
					PRE_CONSUME_SCRIPT = os.getenv("PAPERLESS_PRE_CONSUME_SCRIPT")
 | 
				
			||||||
POST_CONSUME_SCRIPT = os.getenv("PAPERLESS_POST_CONSUME_SCRIPT")
 | 
					POST_CONSUME_SCRIPT = os.getenv("PAPERLESS_POST_CONSUME_SCRIPT")
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -34,18 +34,15 @@ urlpatterns = [
 | 
				
			|||||||
        name="fetch"
 | 
					        name="fetch"
 | 
				
			||||||
    ),
 | 
					    ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # File uploads
 | 
				
			||||||
 | 
					    url(r"^push$", csrf_exempt(PushView.as_view()), name="push"),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # The Django admin
 | 
					    # The Django admin
 | 
				
			||||||
    url(r"admin/", admin.site.urls),
 | 
					    url(r"admin/", admin.site.urls),
 | 
				
			||||||
    url(r"", admin.site.urls),  # This is going away
 | 
					    url(r"", admin.site.urls),  # This is going away
 | 
				
			||||||
 | 
					
 | 
				
			||||||
] + static.static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
 | 
					] + static.static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if settings.SHARED_SECRET:
 | 
					 | 
				
			||||||
    urlpatterns.insert(
 | 
					 | 
				
			||||||
        0,
 | 
					 | 
				
			||||||
        url(r"^push$", csrf_exempt(PushView.as_view()), name="push")
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Text in each page's <h1> (and above login form).
 | 
					# Text in each page's <h1> (and above login form).
 | 
				
			||||||
admin.site.site_header = 'Paperless'
 | 
					admin.site.site_header = 'Paperless'
 | 
				
			||||||
# Text at the end of each page's <title>.
 | 
					# Text at the end of each page's <title>.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1 +1 @@
 | 
				
			|||||||
__version__ = (0, 5, 0)
 | 
					__version__ = (0, 6, 0)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user