CrashPlan Plugin broken on FreeNAS 11

Status
Not open for further replies.

zoomzoom

Guru
Joined
Sep 6, 2015
Messages
677
There's numerous things broken in the CrashPlan plugin on FreeNAS 11.
  • Setting up a standard jail to install CrashPlan into isn't an option, as the few guides I've found that detail what needs to be installed all use the linux_base-f10 port, which has reported vulnerabilities (from around mid 2016) that haven't been patched.
The CrashPlan plugin on FreeNAS 11 is missing at least two, if not three, critical symlinks in the jail, of which prevents CrashPlan from showing up under the Plugins NavTree, as well as breaking commands and scripts within the jail
  1. Without the below symlinks, the WebGUI will throw errors regarding libintl.so.9, as will the jail if any commands are issued regarding bash or starting the CrashPlan service.
    1. WebGUI error:
      Code:
      ClientException('DHCPREQUEST on epair0b to 255.255.255.255 port 67\nDHCPACK from 192.168.200.65\nbound to 192.168.200.110 -- renewal in 41805 seconds.\nShared object "libintl.so.9" not found, required by "python2.7"\n', {'class': 'warden_exception', 'frames': [{'filename': '/usr/local/lib/python3.6/site-packages/middlewared/main.py', 'lineno': 176, 'method': 'call_method', 'line': ' self.send_error(message, str(e), sys.exc_info())\n', 'argspec': ['self', 'message'], 'locals': {'e': 'warden_exception(\'DHCPREQUEST on epair0b to 255.255.255.255 port 67\\nDHCPACK from 192.168.200.65\\nbound to 192.168.200.110 -- renewal in 41805 seconds.\\nShared object "libintl.so.9" not found, required by "python2.7"\\n\',)', 'message': "{'msg': 'method', 'method': 'notifier.warden', 'id': '7a97fcf6-d339-4d3c-9b4c-c3913a732dee', 'params': ['start', None, {'jail': 'cplan'}]}", 'self': ''}}, {'filename': '/usr/local/lib/python3.6/site-packages/middlewared/main.py', 'lineno': 581, 'method': 'call_method', 'line': " return self._call(message['method'], methodobj, params, app=app)\n", 'argspec': ['self', 'app', 'message'], 'locals': {'methodobj': '>', 'method_name': "'warden'", 'service': "'notifier'", 'params': "['start', None, {'jail': 'cplan'}]", 'message': "{'msg': 'method', 'method': 'notifier.warden', 'id': '7a97fcf6-d339-4d3c-9b4c-c3913a732dee', 'params': ['start', None, {'jail': 'cplan'}]}", 'app': '', 'self': ''}}, {'filename': '/usr/local/lib/python3.6/site-packages/middlewared/main.py', 'lineno': 569, 'method': '_call', 'line': ' return methodobj(*args)\n', 'argspec': ['self', 'name', 'methodobj', 'params', 'app'], 'locals': {'job': 'None', 'job_options': 'None', 'args': "['start', None, {'jail': 'cplan'}]", 'app': '', 'params': "['start', None, {'jail': 'cplan'}]", 'methodobj': '>', 'name': "'notifier.warden'", 'self': ''}}, {'filename': '/usr/local/lib/python3.6/site-packages/middlewared/plugins/notifier.py', 'lineno': 99, 'method': 'warden', 'line': ' return method(*params, **kwargs)\n', 'argspec': ['self', 'method', 'params', 'kwargs'], 'locals': {'kwargs': "{'jail': 'cplan'}", 'params': '[]', 'method': '>', 'self': ''}}, {'filename': '/usr/local/www/freenasUI/common/warden.py', 'lineno': 1138, 'method': 'start', 'line': ' }, **kwargs))\n', 'argspec': ['self', 'flags'], 'keywordspec': 'kwargs', 'locals': {'kwargs': "{'jail': 'cplan'}", 'flags': '', 'self': ''}}, {'filename': '/usr/local/www/freenasUI/common/warden.py', 'lineno': 1069, 'method': '__call', 'line': ' raise\n', 'argspec': ['self', 'obj'], 'locals': {'tmp': 'None', 'obj': '', 'self': ''}}, {'filename': '/usr/local/www/freenasUI/common/warden.py', 'lineno': 461, 'method': 'run', 'line': ' raise warden_exception(msg)\n', 'argspec': ['self', 'jail', 'jid'], 'locals': {'msg': '\'DHCPREQUEST on epair0b to 255.255.255.255 port 67\\nDHCPACK from 192.168.200.65\\nbound to 192.168.200.110 -- renewal in 41805 seconds.\\nShared object "libintl.so.9" not found, required by "python2.7"\\n\'', 'pobj': '', 'cmd': '"/usr/local/bin/warden start \'cplan\'"', 'jid': '0', 'jail': 'False', 'self': ''}}], 'formatted': 'Traceback (most recent call last):\n File "/usr/local/lib/python3.6/site-packages/middlewared/main.py", line 163, in call_method\n result = self.middleware.call_method(self, message)\n File "/usr/local/lib/python3.6/site-packages/middlewared/main.py", line 581, in call_method\n return self._call(message[\'method\'], methodobj, params, app=app)\n File "/usr/local/lib/python3.6/site-packages/middlewared/main.py", line 569, in _call\n return methodobj(*args)\n File "/usr/local/lib/python3.6/site-packages/middlewared/plugins/notifier.py", line 99, in warden\n return method(*params, **kwargs)\n File "/usr/local/www/freenasUI/common/warden.py", line 1138, in start\n }, **kwargs))\n File "/usr/local/www/freenasUI/common/warden.py", line 1066, in __call\n tmp = obj.run()\n File "/usr/local/www/freenasUI/common/warden.py", line 461, in run\n raise warden_exception(msg)\nfreenasUI.common.warden.warden_exception: DHCPREQUEST on epair0b to 255.255.255.255 port 67\nDHCPACK from 192.168.200.65\nbound to 192.168.200.110 -- renewal in 41805 seconds.\nShared object "libintl.so.9" not found, required by "python2.7"\n\n'})
      
      • Could this have to do with the incorrect python shebang that broke sendmail up until a few weeks ago?

    2. Jail error:
      Code:
        # CrashPlan fails to start:
      	# Scripts called when Java EULA is accepted have not been ran 
      #----------------------------------------
      [root@crashplan] /# service crashplan start
      /usr/local/etc/rc.d/crashplan: WARNING: $crashplan_enable is not set properly - see rc.conf(5).
      Cannot 'start' crashplan. Set crashplan_enable to YES in /etc/rc.conf or use 'onestart' instead of 'start'.
      
      
        # Add crashplan_enable="YES" to rc.conf
      #----------------------------------------
      [root@crashplan] /# cat >> /etc/rc.conf << EOF
      ? crashplan_enable="YES"
      ? EOF
      
      
        # Start crashplan
      #----------------------------------------
      [root@crashplan] /# service crashplan start
      Shared object "libintl.so.9" not found, required by "bash"
      
  2. Missing symlink for: /usr/local/lib/libintl.so.9, which must be linked to /usr/pbi/crashplan-amd64/lib/libintl.so.9
    • Issue: ln -s /usr/pbi/crashplan-amd64/lib/libintl.so.9 /usr/local/lib/libintl.so.9

  3. Missing symlink for: /usr/local/lib/libiconv.so.3, which must be linked to /usr/pbi/crashplan-amd64/lib/libiconv.so.3
    • Issue: ln -s /usr/pbi/crashplan-amd64/lib/libiconv.so.3 /usr/local/lib/libiconv.so.3

  4. Missing symlink for: /lib/libxml2.so.2, which must be linked to /usr/local/lib/libxml2.so.2.9.4
    • Issue: ln -s /usr/local/lib/libxml2.so.2.9.4 /lib/libxml2.so.2
      • CrashPlan will show up in the NavTree without this, however the error below appears to be the same with and without this symlink.
        • According to multiple posts on the FreeBSD forums, this symlink is always mentioned with the above two.
Once the symlinks are added, and the jail restarted, CrashPlan will now show under the NavTree, however clicking on it to initiate the Java EULA acceptance results with:
Code:
OperationalError at /plugins/crashplan/18/open/ no such table: freenas_crashplan Request Method: GET Request URL: https://192.168.200.100/plugins/crashplan/18/open/ Django Version: 1.6.1 Python Executable: /usr/pbi/crashplan-amd64/bin/python2.7 Python Version: 2.7.6 Python Path: ['/usr/pbi/crashplan-amd64/crashplanUI/../lib/python2.7/site-packages', '/usr/pbi/crashplan-amd64/lib/python2.7/site-packages', '/usr/pbi/crashplan-amd64', '/usr/pbi/crashplan-amd64/lib/python2.7/site-packages/flup-1.0.2-py2.7.egg', '/usr/pbi/crashplan-amd64/lib/python2.7/site-packages/python_daemon-1.5.5-py2.7.egg', '/usr/pbi/crashplan-amd64/lib/python2.7/site-packages/httplib2-0.8-py2.7.egg', '/usr/pbi/crashplan-amd64/lib/python2.7/site-packages/oauth2-1.5.211-py2.7.egg', '/usr/pbi/crashplan-amd64/lib/python27.zip', '/usr/pbi/crashplan-amd64/lib/python2.7', '/usr/pbi/crashplan-amd64/lib/python2.7/plat-freebsd9', '/usr/pbi/crashplan-amd64/lib/python2.7/lib-tk', '/usr/pbi/crashplan-amd64/lib/python2.7/lib-old', '/usr/pbi/crashplan-amd64/lib/python2.7/lib-dynload', '/usr/pbi/crashplan-amd64/lib/python2.7/site-packages'] Server time: Thu, 4 May 2017 10:24:44 -0500 Installed Applications: ('django.contrib.contenttypes', 'django.contrib.staticfiles', 'crashplanUI.freenas', 'south') Installed Middleware: ('django.middleware.common.CommonMiddleware',) Traceback: File "/usr/pbi/crashplan-amd64/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 114. response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/usr/pbi/crashplan-amd64/crashplanUI/freenas/views.py" in open_view 338. crashplan = models.Crashplan.objects.order_by('-id')[0] File "/usr/pbi/crashplan-amd64/lib/python2.7/site-packages/django/db/models/query.py" in __getitem__ 132. return list(qs)[0] File "/usr/pbi/crashplan-amd64/lib/python2.7/site-packages/django/db/models/query.py" in __iter__ 96. self._fetch_all() File "/usr/pbi/crashplan-amd64/lib/python2.7/site-packages/django/db/models/query.py" in _fetch_all 854. self._result_cache = list(self.iterator()) File "/usr/pbi/crashplan-amd64/lib/python2.7/site-packages/django/db/models/query.py" in iterator 220. for row in compiler.results_iter(): File "/usr/pbi/crashplan-amd64/lib/python2.7/site-packages/django/db/models/sql/compiler.py" in results_iter 710. for rows in self.execute_sql(MULTI): File "/usr/pbi/crashplan-amd64/lib/python2.7/site-packages/django/db/models/sql/compiler.py" in execute_sql 781. cursor.execute(sql, params) File "/usr/pbi/crashplan-amd64/lib/python2.7/site-packages/django/db/backends/util.py" in execute 69. return super(CursorDebugWrapper, self).execute(sql, params) File "/usr/pbi/crashplan-amd64/lib/python2.7/site-packages/django/db/backends/util.py" in execute 53. return self.cursor.execute(sql, params) File "/usr/pbi/crashplan-amd64/lib/python2.7/site-packages/django/db/utils.py" in __exit__ 99. six.reraise(dj_exc_type, dj_exc_value, traceback) File "/usr/pbi/crashplan-amd64/lib/python2.7/site-packages/django/db/backends/util.py" in execute 53. return self.cursor.execute(sql, params) File "/usr/pbi/crashplan-amd64/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py" in execute 450. return Database.Cursor.execute(self, query, params) Exception Type: OperationalError at /plugins/crashplan/18/open/ Exception Value: no such table: freenas_crashplan Request information: GET: No GET data POST: No POST data FILES: No FILES data COOKIES: csrftoken = '54JseWUCvLy1IAXtAw0Y5LdR8ocJutRztEKS0FOZ0akjBhYVEtq6tn1pP24WQIaZ' sessionid = 'grecj03gvdktxya5jn7t2bac2esah2ew' fntreeSaveStateCookie = 'root%2Croot%2F298%2Croot%2F298%2F304%2Croot%2F286%2Croot%2F301%2Croot%2F309%2Croot%2F313%2Croot%2F305' META: wsgi.multiprocess = False HTTP_REFERER = 'https://192.168.200.100/' SERVER_SOFTWARE = 'nginx/1.10.1' SCRIPT_NAME = u'' REQUEST_METHOD = 'GET' PATH_INFO = u'/plugins/crashplan/18/open/' SERVER_PROTOCOL = 'HTTP/2.0' QUERY_STRING = '' CONTENT_LENGTH = '0' HTTP_USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.36 Safari/537.36' HTTP_COOKIE = 'sessionid=grecj03gvdktxya5jn7t2bac2esah2ew; csrftoken=54JseWUCvLy1IAXtAw0Y5LdR8ocJutRztEKS0FOZ0akjBhYVEtq6tn1pP24WQIaZ; fntreeSaveStateCookie=root%2Croot%2F298%2Croot%2F298%2F304%2Croot%2F286%2Croot%2F301%2Croot%2F309%2Croot%2F313%2Croot%2F305' SERVER_NAME = 'localhost' REMOTE_ADDR = '192.168.200.15' wsgi.url_scheme = 'https' SERVER_PORT = '443' SERVER_ADDR = '192.168.200.100' DOCUMENT_ROOT = '/usr/local/etc/nginx/html' HTTP_X_REQUESTED_WITH = 'XMLHttpRequest' DOCUMENT_URI = '/plugins/crashplan/18/open/' wsgi.input = HTTP_DNT = '1' HTTP_HOST = '192.168.200.100' HTTPS = 'on' wsgi.multithread = True HTTP_CONTENT_TYPE = 'application/x-www-form-urlencoded' REQUEST_URI = '/plugins/crashplan/18/open/' HTTP_ACCEPT = '*/*' wsgi.version = wsgi.run_once = False wsgi.errors = REMOTE_PORT = '54168' HTTP_ACCEPT_LANGUAGE = 'en-US,en;q=0.8' CONTENT_TYPE = 'application/x-www-form-urlencoded' HTTP_ACCEPT_ENCODING = 'gzip, deflate, br' Settings: Using settings module crashplanUI.settings USE_L10N = True USE_THOUSAND_SEPARATOR = False CSRF_COOKIE_SECURE = False LANGUAGE_CODE = 'en-us' ROOT_URLCONF = 'crashplanUI.urls' MANAGERS = DEFAULT_CHARSET = 'utf-8' SESSION_SERIALIZER = 'django.contrib.sessions.serializers.JSONSerializer' STATIC_ROOT = '' ALLOWED_HOSTS = [] MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage' EMAIL_SUBJECT_PREFIX = '[Django] ' FILE_UPLOAD_PERMISSIONS = None STATICFILES_FINDERS = SESSION_CACHE_ALIAS = 'default' SESSION_COOKIE_DOMAIN = None SESSION_COOKIE_NAME = 'sessionid' ADMIN_FOR = TIME_INPUT_FORMATS = DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3', 'AUTOCOMMIT': True, 'ATOMIC_REQUESTS': False, 'NAME': '/usr/pbi/crashplan-amd64/crashplanUI/crashplan.db', 'TEST_MIRROR': None, 'OPTIONS': {}, 'CONN_MAX_AGE': 0, 'TIME_ZONE': None, 'TEST_COLLATION': None, 'TEST_CHARSET': None, 'HOST': '', 'USER': '', 'TEST_NAME': None, 'PASSWORD': u'********************', 'PORT': ''}} SERVER_EMAIL = 'root@localhost' FILE_UPLOAD_HANDLERS = DEFAULT_CONTENT_TYPE = 'text/html' APPEND_SLASH = True FIRST_DAY_OF_WEEK = 0 DATABASE_ROUTERS = [] YEAR_MONTH_FORMAT = 'F Y' STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage' CACHES = {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}} SESSION_COOKIE_PATH = '/' MIDDLEWARE_CLASSES = 'django.middleware.common.CommonMiddleware' USE_I18N = True THOUSAND_SEPARATOR = ',' SECRET_KEY = u'********************' LANGUAGE_COOKIE_NAME = 'django_language' DEFAULT_INDEX_TABLESPACE = '' TRANSACTIONS_MANAGED = False LOGGING_CONFIG = 'django.utils.log.dictConfig' SEND_BROKEN_LINK_EMAILS = False TEMPLATE_LOADERS = WSGI_APPLICATION = None TEMPLATE_DEBUG = True X_FRAME_OPTIONS = 'SAMEORIGIN' AUTHENTICATION_BACKENDS = 'django.contrib.auth.backends.ModelBackend' FORCE_SCRIPT_NAME = '' USE_X_FORWARDED_HOST = False SIGNING_BACKEND = 'django.core.signing.TimestampSigner' SESSION_COOKIE_SECURE = False CSRF_COOKIE_DOMAIN = None FILE_CHARSET = 'utf-8' DEBUG = True SESSION_FILE_PATH = None DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage' INSTALLED_APPS = LANGUAGES = COMMENTS_ALLOW_PROFANITIES = False STATICFILES_DIRS = PREPEND_WWW = False SECURE_PROXY_SSL_HEADER = None SESSION_COOKIE_HTTPONLY = True DEBUG_PROPAGATE_EXCEPTIONS = False MONTH_DAY_FORMAT = 'F j' LOGIN_URL = '/accounts/login/' SESSION_EXPIRE_AT_BROWSER_CLOSE = False TIME_FORMAT = 'P' AUTH_USER_MODEL = 'auth.User' DATE_INPUT_FORMATS = CSRF_COOKIE_NAME = 'csrftoken' EMAIL_HOST_PASSWORD = u'********************' PASSWORD_RESET_TIMEOUT_DAYS = u'********************' CACHE_MIDDLEWARE_ALIAS = 'default' SESSION_SAVE_EVERY_REQUEST = False ADMIN_MEDIA_PREFIX = '/static/admin/' NUMBER_GROUPING = 0 SESSION_ENGINE = 'django.contrib.sessions.backends.db' CSRF_FAILURE_VIEW = 'django.views.csrf.csrf_failure' CSRF_COOKIE_PATH = '/' LOGIN_REDIRECT_URL = '/accounts/profile/' TEMPLATE_STRING_IF_INVALID = '' DECIMAL_SEPARATOR = '.' IGNORABLE_404_URLS = LOCALE_PATHS = HERE = '/usr/pbi/crashplan-amd64/crashplanUI' LOGOUT_URL = '/accounts/logout/' EMAIL_USE_TLS = False FIXTURE_DIRS = EMAIL_HOST = 'localhost' DATE_FORMAT = 'N j, Y' MEDIA_ROOT = '' DEFAULT_EXCEPTION_REPORTER_FILTER = 'django.views.debug.SafeExceptionReporterFilter' ADMINS = FORMAT_MODULE_PATH = None DEFAULT_FROM_EMAIL = 'webmaster@localhost' MEDIA_URL = '' DATETIME_FORMAT = 'N j, Y, P' TEMPLATE_DIRS = SITE_ID = 1 DISALLOWED_USER_AGENTS = ALLOWED_INCLUDE_ROOTS = LOGGING = {'loggers': {'django.request': {'handlers': ['mail_admins'], 'propagate': True, 'level': 'ERROR'}}, 'version': 1, 'disable_existing_loggers': False, 'handlers': {'mail_admins': {'class': 'django.utils.log.AdminEmailHandler', 'filters': [], 'level': 'ERROR'}}} SHORT_DATE_FORMAT = 'm/d/Y' TEST_RUNNER = 'django.test.runner.DiscoverRunner' CACHE_MIDDLEWARE_KEY_PREFIX = u'********************' TIME_ZONE = None FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' DEFAULT_TABLESPACE = '' TEMPLATE_CONTEXT_PROCESSORS = SESSION_COOKIE_AGE = 1209600 SETTINGS_MODULE = 'crashplanUI.settings' USE_ETAGS = False LANGUAGES_BIDI = FILE_UPLOAD_TEMP_DIR = None INTERNAL_IPS = STATIC_URL = '/static/' EMAIL_PORT = 25 USE_TZ = False SHORT_DATETIME_FORMAT = 'm/d/Y P' PASSWORD_HASHERS = u'********************' ABSOLUTE_URL_OVERRIDES = {} CACHE_MIDDLEWARE_SECONDS = 600 CSRF_COOKIE_HTTPONLY = False DATETIME_INPUT_FORMATS = EMAIL_HOST_USER = '' PROFANITIES_LIST = u'********************' You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 500 page.
  • Could this have to do with the incorrect python shebang that broke sendmail up until a few weeks ago?
 
Last edited:
D

dlavigne

Guest
Please create a bug report at bugs.freenas.org and post the issue number here.
 

zoomzoom

Guru
Joined
Sep 6, 2015
Messages
677
Status
Not open for further replies.
Top