Adding SSL support to socketserver Python3 - ssl

I want to add SSL support to Server based on python3 (version 3.3) socketserver. I've found answer to my problem here, but this code doesn't work in Python 3. Method socket._fileobject is not longer available. Is there any way to get this example running in Python3?

Related

Django runserver_plus Werkzeug not installed error, although it is

I am trying to run my Django application using runserver_plus as I am using an SSL certificate to create HTTPS connections to the backend.
In order to do so, I have done the following:
pip install django_extensions
Installed Django extensions to the project but include
"django_extensions" in the "INSTALLED_APPS" list in the settings.py
file.
pip install Werkzeug
python -m pip freeze (to make sure everything has been installed
correctly within the venv)
ran ./manage.py to check the available commands (to make sure Django
extensions is working as expected)
However, I get the following error:
CommandError: Werkzeug is required to use runserver_plus.
although everything has been installed properly and all checks/re-installs have been made. Also, it must be noted that I updated Django, django_extensions, and Werkzeug to the latest versions available.
This is a recurrent issue with Werkzeug. Your safest option is to downgrade to 0.16.1.

Issue when trying to run passenger on Apache

I am getting this issue when running
httpd -t
httpd: Syntax error on line 545 of /private/etc/apache2/httpd.conf: Syntax error on line 1 of /private/etc/apache2/other/passenger.conf: Cannot load /Users/sbaidon/.rvm/gems/ruby-2.2.5/gems/passenger-5.3.5/b
uildout/apache2/mod_passenger.so into server: dlopen(/Users/sbaidon/.rvm/gems/ruby-2.2.5/gems/passenger-5.3.5/buildout/apache2/mod_passenger.so, 10): no suitable image found. Did find:\n\t/Users/sbaidon/.rv
m/gems/ruby-2.2.5/gems/passenger-5.3.5/buildout/apache2/mod_passenger.so: code signature in (/Users/sbaidon/.rvm/gems/ruby-2.2.5/gems/passenger-5.3.5/buildout/apache2/mod_passenger.so) not valid for use in p
rocess using Library Validation: mapped file has no cdhash, completely unsigned? Code has to be at least ad-hoc signed.\n\t/Users/sbaidon/.rvm/gems/ruby-2.2.5/gems/passenger-5.3.5/buildout/apache2/mod_passen
ger.so: stat() failed with errno=22
Passenger installation is just fine.
I ran into this too: the issue is that the built-in httpd that comes with macOS Mojave has Library Validation turned on, which means any modules it loads must be properly signed. Unfortunately, mod_passenger.so is not signed, so loading fails. Actually, a lot of people are having this problem with loading Apache modules on macOS Mojave (especially during the beta), some example references:
https://github.com/GrahamDumpleton/mod_wsgi/issues/357
https://github.com/phpredis/phpredis/issues/1406
I believe it's possible to set up a plist somewhere to give an entitlement to httpd to disable library validation (com.apple.security.cs.disable-library-validation) as described at https://developer.apple.com/documentation/security/com_apple_security_cs_disable-library-validation. For instance, here's a recent WebKit patch where they add it to allow plugin loading: https://bugs.webkit.org/show_bug.cgi?id=183252. Similarly, here's the Mozilla people talking about how they need to enable this (and other) properties: https://bugzilla.mozilla.org/show_bug.cgi?format=default&id=1470597.
Unfortunately, I don't do macOS development (I just do development on macOS) and I have absolutely no idea how to apply it to the built-in Apache, I'm sorry.
At this point I'm kind of sick of every major macOS update nerfing all my httpd settings and generally being a pain (it's infrequent but it's still annoying), so I'm doing what I should have done years ago: stop using the built-in httpd that comes with OS/X and just use Homebrew httpd.
Here's some instructions I found regarding setting up Homebrew httpd (and disabling the built-in macOS httpd), it's pretty straightforward and you don't have to follow all of the directions about multiple PHP versions etc: https://getgrav.org/blog/macos-mojave-apache-multiple-php-versions
If someone can figure out how to disable Library Validation in the built-in httpd, or if there is some way to provide signing on mod_passenger.so (seems unlikely since both the Homebrew and gem passenger need to be buildable from source), you don't need to junk the built-in httpd. But I personally think the best solution is to move away from it entirely and use the Homebrew version instead.
For anyone having this issue or any issue with library validation in macOS Mojave, I found an incredibly easy fix to disable it. https://github.com/mologie/macos-disable-library-validation
This is fixed in macOS 10.14.4

Cannot run standalone psychopy if PYTHONPATH and PYTHONHOME set for different python version

I thought that the standalone PsychoPy install could coexist happily if Python was installed separately on the PC to but I can't get it to, nor can I find any docs. (I'm using Windows 7)
I have the lastest standalone version installed and the shortcut to run it is
"D:\Program Files (x86)\PsychoPy2\pythonw.exe" "D:\Program Files (x86)\PsychoPy2\Lib\site-packages\PsychoPy-1.81.02-py2.7.egg\psychopy\app\psychopyApp.py"
This works fine if my system env variables for PYTHONHOME & PYTHONPATH aren't set but I also use Python for other apps and need them setting to point to the other version of Python I have installed natively. When these env vars are set, Psychopy fails to load and gives no error messages at all.
Can anyone advise how I get them to play together nicely? (I thought it used to work last year, has something changed?)
[ I've tried a full uninstall of psychopy and freshly installed the latest standalone version v1.81.02
Yes, this is an unfortunate consequence of the way that PsychoPy is currently bundled with it's own closed environment in it's own python and dependencies installed seperately.
However, a new option to install psychopy using the conda package manager was introduced recently for Mac OS but some have also got it to work on Windows with a bit of tweaking.. Work is currently ongoing for this feature. I doubt that it was working previously unless you manually installed all dependencies in your default python, or ran linux:
On linux you can simply install psychopy from the neuro.debian repository, making it available for python system-wide. See PsychoPy documentation.
Thinking about it, I don't think it would ever worked if you had set PYTHONPATH (I don't know about PYTHONHOME).
BUT I did have a 'regular' python installation running alongside my Standalone PsychoPy install by not using the PYTHONPATH variable. You can add further paths to your python importing path (I assume that's the aim here) without setting any environment variable by adding text files ending in .pth to your site-packages directory. Essentially any lines in a .pth file that is found while navigating the existing path will also be added to the path!
Actually, according to the python docs you can also set a flag -E to ignore the environment variables:
https://docs.python.org/2/using/cmdline.html
To use that solution for the Standalone PsychoPy installation you'd have to alter the application shortcut to add this (that should get the app to load), but also make a couple of changes to the code for running scripts so that they also run with the flag set.
I still think not setting those variables is the easier solution though.
cheers,
Jon

Installing pyOpenSSL on Bluemix

I have troubles installing pyOpenSSL on bluemix. I have a self-signed certificate I want to use with my flask app. When adding pyopenssl to requirements.txt and pushing onto cloud, staging fails.
Here is dump from logs --recent: http://pastebin.com/raw.php?i=M5fAJddC
Looks like Bluemix's pip complains about libffi-dev but I have no idea how to solve it. Any clues?
I am not sure which buildpack you are using but it doesn't look like it includes libffi dependency. I found this python buildpack that includes libffi. You might want to try it as a replacement for the buildpack you are currently using.
Ok, I've figured it out myself. After going through pip repositories I've noticed there is a package called cffi. Adding cffi to requirements.txt before pyOpenSSL solved the problem.
Just a little warning, after restarting app I got out of memory error. Turns out, these two libraries eat ~38.9MB RAM (72.1 compared to 34.2 in last push) when used in flask.
Unfortunately, now I am getting 502 Bad Gateway: Registered endpoint failed to handle the request. when opening the page. But that is quite different problem I suppose.

Getting "not a dynamic executable" running "ldd mod_wsgi.o" on CentOS 5.5

I've installed Python 2.7.1 on 64-bit CentOS 5.5 and compiled mod_wsgi against 2.7.1. I'm building a DJango web application and need Python modules from 2.7 (CentOS built-in version of Python is only 2.4.3 and sorely lacking). I've basically followed the procedure on this great link:
http://willsani.com/2011/03/02/centos-5-5-x86_64-install-python-2-7/
So, I've now got a working version of Python 2.7.1 installed in /opt/python2.7.1. But, when I install my mod_wsgi.o module in Apache, Apache fails to start with:
Cannot load /etc/httpd/modules/mod_wsgi.so into server:
/etc/httpd/modules/mod_wsgi.so: only ET_DYN and ET_EXEC can be loaded
So, I ran the ldd command against my version of mod_wsgi.o and, instead of seeing the expected list of shared libraries, I see:
[root#ac5w15tps01 modules]# ldd mod_wsgi.o
not a dynamic executable
Currently, my web application is running with mod_wsgi working fine against Python 2.4.3. Someone else set that up so not sure if they needed to do anything special - I inherited the setup. I've read everything related to building and installing mod_wsgi from http://code.google.com/p/modwsgi/ and searched the web for answers. Can't see to find anything on this error.
Any help would be greatly appreciated!