Giter Site home page Giter Site logo

wssh's Introduction

wssh - websocket shell

wssh ("wish") is a command-line utility/shell for WebSocket inpsired by netcat.

Install

  • Assumes Python 2.7

It uses currently uses gevent 0.13, so you may need to install libevent. This is because it uses the great work in ws4py. My gevent websocket server+client in there could probably be generalized to work with Eventlet; then this could be trivially ported to Eventlet to drop the libevent dependency.

If you don't have libevent installed already, install it prior to running setup.py. You can install libevent using apt-get on Ubuntu or brew on a Mac.

git clone git://github.com/progrium/wssh.git
cd wssh
python setup.py install

Usage

Listen for WebSocket connections on a particular path and print messages to STDOUT:

wssh -l localhost:8000/websocket

Once connected you can use STDIN to send messages. Each line is a message. You can just as well open a peristent client connection that prints incoming messages to STDOUT and sends messages from STDIN interactively:

wssh localhost:8000/websocket

Contributing

Feel free to fork and improve.

License

MIT

wssh's People

Contributors

altrg avatar jasta avatar jefferai avatar joakimsoderberg avatar progrium avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wssh's Issues

no releases for linux distros

hi,

wssh is a great tool for dealing with websockets, and I opened an ebuild request for the gentoo distribution, find it on https://bugs.gentoo.org/show_bug.cgi?id=494016

to allow distributions to include wssh, having an official release would help much ( see the distro developpers comments on the gentoo ebuild request )

so . . . please release ;)

Trace mode

I would like verbose trace output, so I can see each byte sent/received. For example the HTTP headers/Upgrade, etc

Wssh3 - a version of wssh that runs on python 3.6+ and supports TLS SNI

I made a new version of wssh that supports TLS SNI. You'll have to install python3.6+, be careful you should not mess with your system installation of python, install python3.6 for the USER ONLY not as root if it is not already your system python version.

I had to do this upgrade because one of the servers would no longer connect, and instead would give me this error:

results in : [Errno 1] _ssl.c:510: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure

It was solved by modifying some flags and options within both wssh and ws4py so that it can handle python3 lib support for TLS SNI. It was a PITA, so thankfully you don't have to do it now!

Here's my updated fork, wssh3:

https://github.com/Tectract/wssh3

Rapid messages produce IOError

After a period of time an IOError is thrown when connecting to my web application that rapidly produces log messages. I'm unsure if this is related to issue #8 but I would be happy to provide any additional information.

"File "build/bdist.macosx-10.8-intel/egg/gevent/greenlet.py", line 390, in run
result = self._run(_self.args, *_self.kwargs)
File "/Library/Python/2.7/site-packages/ws4py-0.2.3-py2.7.egg/ws4py/websocket.py", line 233, in run
if not process(bytes):
File "/Library/Python/2.7/site-packages/ws4py-0.2.3-py2.7.egg/ws4py/websocket.py", line 286, in process
self.received_message(s.message)
File "build/bdist.macosx-10.8-intel/egg/wssh/client.py", line 24, in received_message
self.iohelper.received_message(self, m)
File "build/bdist.macosx-10.8-intel/egg/wssh/common.py", line 29, in received_message
sys.stdout.write(m.data)
IOError: [Errno 35] Resource temporarily unavailable
<Greenlet at 0x101aa0af0: <bound method StdioPipedWebSocketClient.run of <wssh.client.StdioPipedWebSocketClient object at 0x101b6e750>>> failed with IOError"

ImportError: cannot import name UpgradableWSGIHandler

after installing on ubuntu 12.10 i get this when running wssh:

Traceback (most recent call last):
 File "/usr/local/bin/wssh", line 9, in <module>
load_entry_point('wssh==0.1.0', 'console_scripts', 'wssh')()
 File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 337, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
 File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2311, in load_entry_point
return ep.load()
 File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2017, in load
entry = __import__(self.module_name, globals(),globals(), ['__name__'])
 File "/usr/local/lib/python2.7/dist-packages/wssh-0.1.0-py2.7.egg/wssh/__init__.py", line 9, in <module>
from . import server
 File "/usr/local/lib/python2.7/dist-packages/wssh-0.1.0-py2.7.egg/wssh/server.py", line 6, in <module>
from ws4py.server.geventserver import UpgradableWSGIHandler
  ImportError: cannot import name UpgradableWSGIHandler

stdin closure on CTRL+S or CTRL+Z

I discovered a curious bug while working on wssh today wherein if use the CTRL+S or CTRL+Z features of a UNIX term, stdin will report to wssh as being closed (sys.stdin.read will return a 0 length buffer). This shouldn't be, but the exact reason for this escapes me.

Perhaps we should look at either switching to using gevent's FileObject or reading stdin on a separate thread?

Closing the connection with a given error status code

I am writing an API where the connection close status have significance, is there a way with WSSH to close a connection with a error status code (eg. 4000)? Similarly, does it display the error status code when the server closes the connection?

Suggestion: adding additional headers

I am trying to test a websocket server I have written that check headers for a token before proceeding with a handshake, however I don't see any option in WSSH to pass additional headers, do any exist? If not, is it a considered addition?

file redirection error on ctrl+C

hi i m using wssh to dump data to a file :

$ wssh websocket.mtgox.com:80/mtgox >depth.txt
when i do a ctrl+c I get this strange error :
^C
Exception KeyError: KeyError(408721060,) in <module 'threading' from '/usr/lib/python2.7/threading.pyc'> ignored

nothing important, its still working, nbut i m wanted to give you the information ;)

( and many thanks for this great tool, much better than telnet or netcat for websockets ! )

Data frame delineation is arbitrary and ill-defined

stdin is being read such that each time data is available in the buffer (up to currently 4096 bytes according to wssh, and possibly smaller values dependent on the kernel's buffer size), it transmits a new WebSocket data frame. This would make it impossible for wssh to create data frames larger than 4096 bytes, and possibly worse, for the user of wssh to control exactly how data frames are delineated in general.

Say a particular WebSocket framed protocol permitted a rapid firing of many small initialization type messages. To use wssh to send these frames it may be tempting to simply execute:

(print_hello_msg; print_request_1; print_request_2) | wssh ...

But wssh would quite likely interpret this as 1 data frame comprising all 3 messages, violating this hypothetical protocol and potentially confusing the server.

Currently the only way around this would be to ensure small timing windows between each write, and of course to never exceed 4096 bytes.

The solution to this problem is tricky, however, given that netcat's analogy no longer holds up since netcat doesn't have to worry about how it breaks things up into individual TCP or UDP packets. It's the job of the application layer to provide it's own framing layer that handles it, so netcat doesn't have to worry.

Perhaps we could do something like add an option to specify a special data frame delimiter or an option to add our own wssh-specific data framing layer? Seems kludgey though, hmm...

wssh from pip is seriously degraded, old wssh is partially broken

I'm a wssh user, been using it happily for a long time. I'm using version 0.1.0 from this repo. It seems that if you install wssh via pip, you get a broken, degraded version. Here is the output from this wssh:

usage: wssh [-h] [-l] [-m {text,binary,auto}] [-n] [-q secs] [-v] URL
positional arguments:
     URL                   URL of a WebSocket endpoint with or without ws:// or wss://

optional arguments:
    -h, --help            show this help message and exit
    -l                    start in listen mode, creating a server
    -m {text,binary,auto}   specify the message transmit mode (default: auto)
    -n                    separate each received message with a newline
    -q secs               quit after EOF on stdin and delay of secs (0 allowed)
    -v                    verbose (use up to 3 times to be more verbose)

and here is the output from wssh installed via pip:

usage: wssh [-h] [--host HOST] [--port PORT] [--password [PASSWORD]]
        [--key [KEY]] [--key-passphrase [KEY_PASSPHRASE]]
        destination

Why is the official pip version missing all those options, I need the -n option!

My notes also indicate I need to use ws4py v0.2.4 (version-locked) for a working install of wssh, installed from source, and possibly also libevent library may need to be installed from source or lib-linked at compile-time for wssh.

On my most recent install this week, I'm getting this error popping up:
Exception: threading module loaded before patching!

It's a PITA to debug this, involving changing wssh/init.py so the first lines in my init.py now read:

import gevent.monkey; gevent.monkey.patch_thread()
import sys
import threading

but this now causes the error/warning (which doesn't seem to affect functionality on my system, luckily):

Exception KeyError: KeyError(140049873684592,) in <module 'threading' from '/usr/lib/python2.7/threading.pyc'> ignored

So, it's a boondoggle to get wssh working on a modern system anymore, is the point.

Can we get the 'good' / working version of wssh with the full option set into python pip somehow?

No local packages or download links found for ws4py==0.2.4

> python setup.py install                                                                                                                                                                                                                                                               running install
Checking .pth file support in /Library/Python/2.7/site-packages/
/usr/bin/python -E -c pass
TEST PASSED: /Library/Python/2.7/site-packages/ appears to support .pth files
running bdist_egg
running egg_info
creating wssh.egg-info
writing requirements to wssh.egg-info/requires.txt
writing wssh.egg-info/PKG-INFO
writing top-level names to wssh.egg-info/top_level.txt
writing dependency_links to wssh.egg-info/dependency_links.txt
writing entry points to wssh.egg-info/entry_points.txt
writing manifest file 'wssh.egg-info/SOURCES.txt'
reading manifest file 'wssh.egg-info/SOURCES.txt'
writing manifest file 'wssh.egg-info/SOURCES.txt'
installing library code to build/bdist.macosx-10.12-intel/egg
running install_lib
running build_py
creating build
creating build/lib
creating build/lib/wssh
copying wssh/__init__.py -> build/lib/wssh
copying wssh/client.py -> build/lib/wssh
copying wssh/common.py -> build/lib/wssh
copying wssh/server.py -> build/lib/wssh
creating build/bdist.macosx-10.12-intel
creating build/bdist.macosx-10.12-intel/egg
creating build/bdist.macosx-10.12-intel/egg/wssh
copying build/lib/wssh/__init__.py -> build/bdist.macosx-10.12-intel/egg/wssh
copying build/lib/wssh/client.py -> build/bdist.macosx-10.12-intel/egg/wssh
copying build/lib/wssh/common.py -> build/bdist.macosx-10.12-intel/egg/wssh
copying build/lib/wssh/server.py -> build/bdist.macosx-10.12-intel/egg/wssh
byte-compiling build/bdist.macosx-10.12-intel/egg/wssh/__init__.py to __init__.pyc
byte-compiling build/bdist.macosx-10.12-intel/egg/wssh/client.py to client.pyc
byte-compiling build/bdist.macosx-10.12-intel/egg/wssh/common.py to common.pyc
byte-compiling build/bdist.macosx-10.12-intel/egg/wssh/server.py to server.pyc
creating build/bdist.macosx-10.12-intel/egg/EGG-INFO
copying wssh.egg-info/PKG-INFO -> build/bdist.macosx-10.12-intel/egg/EGG-INFO
copying wssh.egg-info/SOURCES.txt -> build/bdist.macosx-10.12-intel/egg/EGG-INFO
copying wssh.egg-info/dependency_links.txt -> build/bdist.macosx-10.12-intel/egg/EGG-INFO
copying wssh.egg-info/entry_points.txt -> build/bdist.macosx-10.12-intel/egg/EGG-INFO
copying wssh.egg-info/requires.txt -> build/bdist.macosx-10.12-intel/egg/EGG-INFO
copying wssh.egg-info/top_level.txt -> build/bdist.macosx-10.12-intel/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating dist
creating 'dist/wssh-0.1.0-py2.7.egg' and adding 'build/bdist.macosx-10.12-intel/egg' to it
removing 'build/bdist.macosx-10.12-intel/egg' (and everything under it)
Processing wssh-0.1.0-py2.7.egg
Copying wssh-0.1.0-py2.7.egg to /Library/Python/2.7/site-packages
Adding wssh 0.1.0 to easy-install.pth file
Installing wssh script to /usr/local/bin

Installed /Library/Python/2.7/site-packages/wssh-0.1.0-py2.7.egg
Processing dependencies for wssh==0.1.0
Searching for gevent==0.13.6
Reading https://pypi.python.org/simple/gevent/
Best match: gevent 0.13.6
Downloading https://pypi.python.org/packages/14/83/37f998c61406cb765264db8b68a24296e1f40d05a57b18dbfafa0883b5bd/gevent-0.13.6.tar.gz#md5=7c836ce2315d44ba0af6134efbcd38c9
Processing gevent-0.13.6.tar.gz
Writing /tmp/easy_install-ovRlcN/gevent-0.13.6/setup.cfg
Running gevent-0.13.6/setup.py -q bdist_egg --dist-dir /tmp/easy_install-ovRlcN/gevent-0.13.6/egg-dist-tmp-DMqGBD
gevent/core.c:4208:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:5296:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:5332:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:5459:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:5646:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:5689:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:5732:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:5793:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:5853:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:5886:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:5959:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:6422:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:6580:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:6738:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:6896:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:16161:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:21886:33: warning: unused function '__Pyx_PyIndex_AsSsize_t' [-Wunused-function]
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
                                ^
gevent/core.c:21297:36: warning: unused function '__Pyx_PyInt_AsUnsignedChar' [-Wunused-function]
static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
                                   ^
gevent/core.c:21335:35: warning: unused function '__Pyx_PyInt_AsUnsignedInt' [-Wunused-function]
static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
                                  ^
gevent/core.c:21354:27: warning: unused function '__Pyx_PyInt_AsChar' [-Wunused-function]
static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
                          ^
gevent/core.c:21411:34: warning: unused function '__Pyx_PyInt_AsSignedChar' [-Wunused-function]
static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
                                 ^
gevent/core.c:21430:35: warning: unused function '__Pyx_PyInt_AsSignedShort' [-Wunused-function]
static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
                                  ^
gevent/core.c:21449:33: warning: unused function '__Pyx_PyInt_AsSignedInt' [-Wunused-function]
static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
                                ^
gevent/core.c:21468:26: warning: unused function '__Pyx_PyInt_AsLongDouble' [-Wunused-function]
static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {
                         ^
gevent/core.c:21592:35: warning: function '__Pyx_PyInt_AsLongLong' is not needed and will not be emitted [-Wunneeded-internal-declaration]
static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
                                  ^
gevent/core.c:21662:42: warning: function '__Pyx_PyInt_AsSignedLongLong' is not needed and will not be emitted [-Wunneeded-internal-declaration]
static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
                                         ^
26 warnings generated.
gevent/core.c:4208:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:5296:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:5332:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:5459:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:5646:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:5689:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:5732:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:5793:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:5853:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:5886:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:5959:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:6422:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:6580:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:6738:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:6896:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:7214:15: warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long') to 'int' [-Wshorten-64-to-32]
    __pyx_r = evbuffer_get_length(((struct __pyx_obj_6gevent_4core_buffer *)__pyx_v_self)->__pyx___obj);
            ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gevent/core.c:16161:14: warning: explicitly assigning value of variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
  __pyx_self = __pyx_self;
  ~~~~~~~~~~ ^ ~~~~~~~~~~
gevent/core.c:21886:33: warning: unused function '__Pyx_PyIndex_AsSsize_t' [-Wunused-function]
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
                                ^
gevent/core.c:21297:36: warning: unused function '__Pyx_PyInt_AsUnsignedChar' [-Wunused-function]
static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
                                   ^
gevent/core.c:21335:35: warning: unused function '__Pyx_PyInt_AsUnsignedInt' [-Wunused-function]
static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
                                  ^
gevent/core.c:21354:27: warning: unused function '__Pyx_PyInt_AsChar' [-Wunused-function]
static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
                          ^
gevent/core.c:21411:34: warning: unused function '__Pyx_PyInt_AsSignedChar' [-Wunused-function]
static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
                                 ^
gevent/core.c:21430:35: warning: unused function '__Pyx_PyInt_AsSignedShort' [-Wunused-function]
static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
                                  ^
gevent/core.c:21449:33: warning: unused function '__Pyx_PyInt_AsSignedInt' [-Wunused-function]
static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
                                ^
gevent/core.c:21468:26: warning: unused function '__Pyx_PyInt_AsLongDouble' [-Wunused-function]
static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {
                         ^
gevent/core.c:21592:35: warning: function '__Pyx_PyInt_AsLongLong' is not needed and will not be emitted [-Wunneeded-internal-declaration]
static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
                                  ^
gevent/core.c:21662:42: warning: function '__Pyx_PyInt_AsSignedLongLong' is not needed and will not be emitted [-Wunneeded-internal-declaration]
static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
                                         ^
27 warnings generated.
ld: warning: ignoring file /usr/local/lib/libevent.dylib, file was built for x86_64 which is not the architecture being linked (i386): /usr/local/lib/libevent.dylib
Linking /private/tmp/easy_install-ovRlcN/gevent-0.13.6/build/lib.macosx-10.12-intel-2.7/gevent/core.so to /private/tmp/easy_install-ovRlcN/gevent-0.13.6/gevent/core.so
zip_safe flag not set; analyzing archive contents...
Copying gevent-0.13.6-py2.7-macosx-10.12-intel.egg to /Library/Python/2.7/site-packages
Adding gevent 0.13.6 to easy-install.pth file

Installed /Library/Python/2.7/site-packages/gevent-0.13.6-py2.7-macosx-10.12-intel.egg
Searching for ws4py==0.2.4
Reading https://pypi.python.org/simple/ws4py/
No local packages or download links found for ws4py==0.2.4
error: Could not find suitable distribution for Requirement.parse('ws4py==0.2.4')

Wssh needs an upgrade to python3, it's breaking down

I have a third wish!

So, python2.7 support is officially ending, and I'm getting some serious errors with wssh, having to do with lack of SNI support in the request / urllib3 packages, specifically under python2.7.6. I can't really upgrade my system version of python, and I don't want to move to a different OS at the moment.

So.... I need to figure out how to get wssh running with the assumption of python3 instead of python.

Can you suggest how I do that?

We need wssh3!

Cheers!

How to set verbosity?

i want to see "opened" messages and see... if self.opts.verbosity >= 1: in server.py. i am a python idiot.. so I'm wondering... how can one SET such verbosity.. either permanently, or on a per-run basis?

restarting on connection reset by peer

if you have a network problem wssh with stop / crash on :

Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/gevent-0.13.6-py2.7-linux-i686.egg/gevent/greenlet.py", line 390, in run
    result = self._run(*self.args, **self.kwargs)
  File "/usr/lib/python2.7/site-packages/ws4py-0.2.1-py2.7.egg/ws4py/websocket.py", line 229, in run
    bytes = sock.recv(self.reading_buffer_size)
  File "/usr/lib/python2.7/site-packages/gevent-0.13.6-py2.7-linux-i686.egg/gevent/socket.py", line 418, in recv
return sock.recv(*args)
error: [Errno 104] Connection reset by peer
<Greenlet at 0x146bd07c: <bound method WebSocketClient.run of <ws4py.client.geventclient.WebSocketClient object at 0x147073cc>>> failed with error

it could be a good feature to intercept the exception and restart / reconnect the websocket in this case

Trailing newline character in `wssh > client` message.

Hi!
Is the trailing newline character necessary when sending a message to the client?
From the terminal, if you send a string:- "ABC",
you end up getting "ABC\n"
or
"ABC
"
This may* catch some one off-guard resulting in a long bug studded development day/night.

Improve installation instructions

Following command didn't worked on Ubuntu 10.04:

git clone git://github.com/progrium/wssh.git
cd wssh
python setup.py install

I also had to:

sudo apt-get install libevent-dev
sudo pip install argparse

Segmentation Fault on Raspberry Pi

Not sure if this is the right place to put this, but wssh seg faults on a raspberry pi, looks like due to libcrypto, but not sure if that is something that can be addressed by wssh or not:

pi@raspberrypi:/usr/local/lib/python2.7/dist-packages/ws4py-0.2.4-py2.7.egg/ws4py/client$ gdb /usr/bin/python2.7
GNU gdb (GDB) 7.4.1-debian
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "arm-linux-gnueabihf".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/bin/python2.7...(no debugging symbols found)...done.
(gdb) run -d -v /usr/local/bin/wssh -q 1 -m text -v ws://192.168.1.45/ws
Starting program: /usr/bin/python2.7 -d -v /usr/local/bin/wssh -q 1 -m text -v ws://192.168.1.45/ws
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".
# installing zipimport hook
import zipimport # builtin
# installed zipimport hook
# /usr/lib/python2.7/site.pyc matches /usr/lib/python2.7/site.py
import site # precompiled from /usr/lib/python2.7/site.pyc
# /usr/lib/python2.7/os.pyc matches /usr/lib/python2.7/os.py
import os # precompiled from /usr/lib/python2.7/os.pyc
import errno # builtin
import posix # builtin
# /usr/lib/python2.7/posixpath.pyc matches /usr/lib/python2.7/posixpath.py
import posixpath # precompiled from /usr/lib/python2.7/posixpath.pyc
# /usr/lib/python2.7/stat.pyc matches /usr/lib/python2.7/stat.py
import stat # precompiled from /usr/lib/python2.7/stat.pyc
# /usr/lib/python2.7/genericpath.pyc matches /usr/lib/python2.7/genericpath.py
import genericpath # precompiled from /usr/lib/python2.7/genericpath.pyc
# /usr/lib/python2.7/warnings.pyc matches /usr/lib/python2.7/warnings.py
import warnings # precompiled from /usr/lib/python2.7/warnings.pyc
# /usr/lib/python2.7/linecache.pyc matches /usr/lib/python2.7/linecache.py
import linecache # precompiled from /usr/lib/python2.7/linecache.pyc
# /usr/lib/python2.7/types.pyc matches /usr/lib/python2.7/types.py
import types # precompiled from /usr/lib/python2.7/types.pyc
# /usr/lib/python2.7/UserDict.pyc matches /usr/lib/python2.7/UserDict.py
import UserDict # precompiled from /usr/lib/python2.7/UserDict.pyc
# /usr/lib/python2.7/_abcoll.pyc matches /usr/lib/python2.7/_abcoll.py
import _abcoll # precompiled from /usr/lib/python2.7/_abcoll.pyc
# /usr/lib/python2.7/abc.pyc matches /usr/lib/python2.7/abc.py
import abc # precompiled from /usr/lib/python2.7/abc.pyc
# /usr/lib/python2.7/_weakrefset.pyc matches /usr/lib/python2.7/_weakrefset.py
import _weakrefset # precompiled from /usr/lib/python2.7/_weakrefset.pyc
import _weakref # builtin
# /usr/lib/python2.7/copy_reg.pyc matches /usr/lib/python2.7/copy_reg.py
import copy_reg # precompiled from /usr/lib/python2.7/copy_reg.pyc
# /usr/lib/python2.7/traceback.pyc matches /usr/lib/python2.7/traceback.py
import traceback # precompiled from /usr/lib/python2.7/traceback.pyc
# /usr/lib/python2.7/sysconfig.pyc matches /usr/lib/python2.7/sysconfig.py
import sysconfig # precompiled from /usr/lib/python2.7/sysconfig.pyc
# /usr/lib/python2.7/re.pyc matches /usr/lib/python2.7/re.py
import re # precompiled from /usr/lib/python2.7/re.pyc
# /usr/lib/python2.7/sre_compile.pyc matches /usr/lib/python2.7/sre_compile.py
import sre_compile # precompiled from /usr/lib/python2.7/sre_compile.pyc
import _sre # builtin
# /usr/lib/python2.7/sre_parse.pyc matches /usr/lib/python2.7/sre_parse.py
import sre_parse # precompiled from /usr/lib/python2.7/sre_parse.pyc
# /usr/lib/python2.7/sre_constants.pyc matches /usr/lib/python2.7/sre_constants.py
import sre_constants # precompiled from /usr/lib/python2.7/sre_constants.pyc
# /usr/lib/python2.7/_sysconfigdata.pyc matches /usr/lib/python2.7/_sysconfigdata.py
import _sysconfigdata # precompiled from /usr/lib/python2.7/_sysconfigdata.pyc
# /usr/lib/python2.7/_sysconfigdata_nd.pyc matches /usr/lib/python2.7/_sysconfigdata_nd.py
import _sysconfigdata_nd # precompiled from /usr/lib/python2.7/_sysconfigdata_nd.pyc
# /usr/lib/python2.7/sitecustomize.pyc matches /usr/lib/python2.7/sitecustomize.py
import sitecustomize # precompiled from /usr/lib/python2.7/sitecustomize.pyc
import encodings # directory /usr/lib/python2.7/encodings
# /usr/lib/python2.7/encodings/__init__.pyc matches /usr/lib/python2.7/encodings/__init__.py
import encodings # precompiled from /usr/lib/python2.7/encodings/__init__.pyc
# /usr/lib/python2.7/codecs.pyc matches /usr/lib/python2.7/codecs.py
import codecs # precompiled from /usr/lib/python2.7/codecs.pyc
import _codecs # builtin
# /usr/lib/python2.7/encodings/aliases.pyc matches /usr/lib/python2.7/encodings/aliases.py
import encodings.aliases # precompiled from /usr/lib/python2.7/encodings/aliases.pyc
# /usr/lib/python2.7/encodings/utf_8.pyc matches /usr/lib/python2.7/encodings/utf_8.py
import encodings.utf_8 # precompiled from /usr/lib/python2.7/encodings/utf_8.pyc
Python 2.7.3 (default, Jan 13 2013, 11:20:46) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
# /usr/lib/python2.7/dist-packages/pkg_resources.pyc matches /usr/lib/python2.7/dist-packages/pkg_resources.py
import pkg_resources # precompiled from /usr/lib/python2.7/dist-packages/pkg_resources.pyc
import time # builtin
import imp # builtin
# /usr/lib/python2.7/urlparse.pyc matches /usr/lib/python2.7/urlparse.py
import urlparse # precompiled from /usr/lib/python2.7/urlparse.pyc
# /usr/lib/python2.7/collections.pyc matches /usr/lib/python2.7/collections.py
import collections # precompiled from /usr/lib/python2.7/collections.pyc
import _collections # builtin
import operator # builtin
# /usr/lib/python2.7/keyword.pyc matches /usr/lib/python2.7/keyword.py
import keyword # precompiled from /usr/lib/python2.7/keyword.pyc
# /usr/lib/python2.7/heapq.pyc matches /usr/lib/python2.7/heapq.py
import heapq # precompiled from /usr/lib/python2.7/heapq.pyc
import itertools # builtin
# /usr/lib/python2.7/bisect.pyc matches /usr/lib/python2.7/bisect.py
import bisect # precompiled from /usr/lib/python2.7/bisect.pyc
import _bisect # builtin
import _heapq # builtin
import thread # builtin
import distutils # directory /usr/lib/python2.7/distutils
# /usr/lib/python2.7/distutils/__init__.pyc matches /usr/lib/python2.7/distutils/__init__.py
import distutils # precompiled from /usr/lib/python2.7/distutils/__init__.pyc
# /usr/lib/python2.7/distutils/util.pyc matches /usr/lib/python2.7/distutils/util.py
import distutils.util # precompiled from /usr/lib/python2.7/distutils/util.pyc
# /usr/lib/python2.7/string.pyc matches /usr/lib/python2.7/string.py
import string # precompiled from /usr/lib/python2.7/string.pyc
import strop # builtin
# /usr/lib/python2.7/distutils/errors.pyc matches /usr/lib/python2.7/distutils/errors.py
import distutils.errors # precompiled from /usr/lib/python2.7/distutils/errors.pyc
# /usr/lib/python2.7/distutils/dep_util.pyc matches /usr/lib/python2.7/distutils/dep_util.py
import distutils.dep_util # precompiled from /usr/lib/python2.7/distutils/dep_util.pyc
# /usr/lib/python2.7/distutils/spawn.pyc matches /usr/lib/python2.7/distutils/spawn.py
import distutils.spawn # precompiled from /usr/lib/python2.7/distutils/spawn.pyc
# /usr/lib/python2.7/distutils/log.pyc matches /usr/lib/python2.7/distutils/log.py
import distutils.log # precompiled from /usr/lib/python2.7/distutils/log.pyc
# /usr/lib/python2.7/pkgutil.pyc matches /usr/lib/python2.7/pkgutil.py
import pkgutil # precompiled from /usr/lib/python2.7/pkgutil.pyc
import zope # directory /usr/lib/python2.7/dist-packages/zope
# /usr/lib/python2.7/dist-packages/zope/__init__.pyc matches /usr/lib/python2.7/dist-packages/zope/__init__.py
import zope # precompiled from /usr/lib/python2.7/dist-packages/zope/__init__.pyc
import wssh # directory /usr/local/lib/python2.7/dist-packages/wssh-0.1.0-py2.7.egg/wssh
# /usr/local/lib/python2.7/dist-packages/wssh-0.1.0-py2.7.egg/wssh/__init__.pyc matches /usr/local/lib/python2.7/dist-packages/wssh-0.1.0-py2.7.egg/wssh/__init__.py
import wssh # precompiled from /usr/local/lib/python2.7/dist-packages/wssh-0.1.0-py2.7.egg/wssh/__init__.pyc
import gevent # directory /usr/lib/pymodules/python2.7/gevent
# /usr/lib/pymodules/python2.7/gevent/__init__.pyc matches /usr/lib/pymodules/python2.7/gevent/__init__.py
import gevent # precompiled from /usr/lib/pymodules/python2.7/gevent/__init__.pyc
dlopen("/usr/lib/pymodules/python2.7/gevent/core.so", 2);
# /usr/lib/python2.7/pprint.pyc matches /usr/lib/python2.7/pprint.py
import pprint # precompiled from /usr/lib/python2.7/pprint.pyc
import cStringIO # builtin
# /usr/lib/python2.7/weakref.pyc matches /usr/lib/python2.7/weakref.py
import weakref # precompiled from /usr/lib/python2.7/weakref.pyc
import gevent.core # dynamically loaded from /usr/lib/pymodules/python2.7/gevent/core.so
# /usr/lib/pymodules/python2.7/gevent/greenlet.pyc matches /usr/lib/pymodules/python2.7/gevent/greenlet.py
import gevent.greenlet # precompiled from /usr/lib/pymodules/python2.7/gevent/greenlet.pyc
# /usr/lib/pymodules/python2.7/gevent/hub.pyc matches /usr/lib/pymodules/python2.7/gevent/hub.py
import gevent.hub # precompiled from /usr/lib/pymodules/python2.7/gevent/hub.pyc
dlopen("/usr/lib/pymodules/python2.7/greenlet.so", 2);
import greenlet # dynamically loaded from /usr/lib/pymodules/python2.7/greenlet.so
# /usr/lib/pymodules/python2.7/gevent/timeout.pyc matches /usr/lib/pymodules/python2.7/gevent/timeout.py
import gevent.timeout # precompiled from /usr/lib/pymodules/python2.7/gevent/timeout.pyc
# /usr/lib/pymodules/python2.7/gevent/monkey.pyc matches /usr/lib/pymodules/python2.7/gevent/monkey.py
import gevent.monkey # precompiled from /usr/lib/pymodules/python2.7/gevent/monkey.pyc
# /usr/lib/pymodules/python2.7/gevent/thread.pyc matches /usr/lib/pymodules/python2.7/gevent/thread.py
import gevent.thread # precompiled from /usr/lib/pymodules/python2.7/gevent/thread.pyc
# /usr/lib/pymodules/python2.7/gevent/coros.pyc matches /usr/lib/pymodules/python2.7/gevent/coros.py
import gevent.coros # precompiled from /usr/lib/pymodules/python2.7/gevent/coros.pyc
# /usr/lib/pymodules/python2.7/gevent/local.pyc matches /usr/lib/pymodules/python2.7/gevent/local.py
import gevent.local # precompiled from /usr/lib/pymodules/python2.7/gevent/local.pyc
# /usr/lib/python2.7/copy.pyc matches /usr/lib/python2.7/copy.py
import copy # precompiled from /usr/lib/python2.7/copy.pyc
# /usr/lib/python2.7/threading.pyc matches /usr/lib/python2.7/threading.py
import threading # precompiled from /usr/lib/python2.7/threading.pyc
# /usr/lib/python2.7/_threading_local.pyc matches /usr/lib/python2.7/_threading_local.py
import _threading_local # precompiled from /usr/lib/python2.7/_threading_local.pyc
# /usr/lib/python2.7/argparse.pyc matches /usr/lib/python2.7/argparse.py
import argparse # precompiled from /usr/lib/python2.7/argparse.pyc
# /usr/lib/python2.7/textwrap.pyc matches /usr/lib/python2.7/textwrap.py
import textwrap # precompiled from /usr/lib/python2.7/textwrap.pyc
# /usr/lib/python2.7/gettext.pyc matches /usr/lib/python2.7/gettext.py
import gettext # precompiled from /usr/lib/python2.7/gettext.pyc
# /usr/lib/python2.7/locale.pyc matches /usr/lib/python2.7/locale.py
import locale # precompiled from /usr/lib/python2.7/locale.pyc
# /usr/lib/python2.7/functools.pyc matches /usr/lib/python2.7/functools.py
import functools # precompiled from /usr/lib/python2.7/functools.pyc
import _functools # builtin
import _locale # builtin
# /usr/lib/python2.7/struct.pyc matches /usr/lib/python2.7/struct.py
import struct # precompiled from /usr/lib/python2.7/struct.pyc
import _struct # builtin
# /usr/local/lib/python2.7/dist-packages/wssh-0.1.0-py2.7.egg/wssh/client.pyc matches /usr/local/lib/python2.7/dist-packages/wssh-0.1.0-py2.7.egg/wssh/client.py
import wssh.client # precompiled from /usr/local/lib/python2.7/dist-packages/wssh-0.1.0-py2.7.egg/wssh/client.pyc
# /usr/lib/pymodules/python2.7/gevent/event.pyc matches /usr/lib/pymodules/python2.7/gevent/event.py
import gevent.event # precompiled from /usr/lib/pymodules/python2.7/gevent/event.pyc
import ws4py # directory /usr/local/lib/python2.7/dist-packages/ws4py-0.2.4-py2.7.egg/ws4py
# /usr/local/lib/python2.7/dist-packages/ws4py-0.2.4-py2.7.egg/ws4py/__init__.pyc matches /usr/local/lib/python2.7/dist-packages/ws4py-0.2.4-py2.7.egg/ws4py/__init__.py
import ws4py # precompiled from /usr/local/lib/python2.7/dist-packages/ws4py-0.2.4-py2.7.egg/ws4py/__init__.pyc
# /usr/local/lib/python2.7/dist-packages/ws4py-0.2.4-py2.7.egg/ws4py/compat.pyc matches /usr/local/lib/python2.7/dist-packages/ws4py-0.2.4-py2.7.egg/ws4py/compat.py
import ws4py.compat # precompiled from /usr/local/lib/python2.7/dist-packages/ws4py-0.2.4-py2.7.egg/ws4py/compat.pyc
# /usr/local/lib/python2.7/dist-packages/ws4py-0.2.4-py2.7.egg/ws4py/exc.pyc matches /usr/local/lib/python2.7/dist-packages/ws4py-0.2.4-py2.7.egg/ws4py/exc.py
import ws4py.exc # precompiled from /usr/local/lib/python2.7/dist-packages/ws4py-0.2.4-py2.7.egg/ws4py/exc.pyc
import ws4py.client # directory /usr/local/lib/python2.7/dist-packages/ws4py-0.2.4-py2.7.egg/ws4py/client
# /usr/local/lib/python2.7/dist-packages/ws4py-0.2.4-py2.7.egg/ws4py/client/__init__.pyc matches /usr/local/lib/python2.7/dist-packages/ws4py-0.2.4-py2.7.egg/ws4py/client/__init__.py
import ws4py.client # precompiled from /usr/local/lib/python2.7/dist-packages/ws4py-0.2.4-py2.7.egg/ws4py/client/__init__.pyc
# /usr/lib/python2.7/base64.pyc matches /usr/lib/python2.7/base64.py
import base64 # precompiled from /usr/lib/python2.7/base64.pyc
import binascii # builtin
# /usr/lib/python2.7/hashlib.pyc matches /usr/lib/python2.7/hashlib.py
import hashlib # precompiled from /usr/lib/python2.7/hashlib.pyc
dlopen("/usr/lib/python2.7/lib-dynload/_hashlib.so", 2);

Program received signal SIGILL, Illegal instruction.
0xb68b85e0 in ?? () from /usr/lib/arm-linux-gnueabihf/libcrypto.so.1.0.0

Error on installation

Per the README:

git clone git://github.com/progrium/wssh.git
cd wssh
python setup.py install

running the above as root on my MBP fails with the following output:

$ python --version
Python 2.7.1

$ sudo python setup.py install 
running install
running bdist_egg
running egg_info
writing requirements to wssh.egg-info/requires.txt
writing wssh.egg-info/PKG-INFO
writing top-level names to wssh.egg-info/top_level.txt
writing dependency_links to wssh.egg-info/dependency_links.txt
writing entry points to wssh.egg-info/entry_points.txt
reading manifest file 'wssh.egg-info/SOURCES.txt'
writing manifest file 'wssh.egg-info/SOURCES.txt'
installing library code to build/bdist.macosx-10.7-intel/egg
running install_lib
running build_py
creating build/bdist.macosx-10.7-intel/egg
creating build/bdist.macosx-10.7-intel/egg/wssh
copying build/lib/wssh/__init__.py -> build/bdist.macosx-10.7-intel/egg/wssh
copying build/lib/wssh/client.py -> build/bdist.macosx-10.7-intel/egg/wssh
copying build/lib/wssh/server.py -> build/bdist.macosx-10.7-intel/egg/wssh
byte-compiling build/bdist.macosx-10.7-intel/egg/wssh/__init__.py to __init__.pyc
byte-compiling build/bdist.macosx-10.7-intel/egg/wssh/client.py to client.pyc
byte-compiling build/bdist.macosx-10.7-intel/egg/wssh/server.py to server.pyc
creating build/bdist.macosx-10.7-intel/egg/EGG-INFO
copying wssh.egg-info/PKG-INFO -> build/bdist.macosx-10.7-intel/egg/EGG-INFO
copying wssh.egg-info/SOURCES.txt -> build/bdist.macosx-10.7-intel/egg/EGG-INFO
copying wssh.egg-info/dependency_links.txt -> build/bdist.macosx-10.7-intel/egg/EGG-INFO
copying wssh.egg-info/entry_points.txt -> build/bdist.macosx-10.7-intel/egg/EGG-INFO
copying wssh.egg-info/requires.txt -> build/bdist.macosx-10.7-intel/egg/EGG-INFO
copying wssh.egg-info/top_level.txt -> build/bdist.macosx-10.7-intel/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating 'dist/wssh-0.1.0-py2.7.egg' and adding 'build/bdist.macosx-10.7-intel/egg' to it
removing 'build/bdist.macosx-10.7-intel/egg' (and everything under it)
Processing wssh-0.1.0-py2.7.egg
Removing /Library/Python/2.7/site-packages/wssh-0.1.0-py2.7.egg
Copying wssh-0.1.0-py2.7.egg to /Library/Python/2.7/site-packages
wssh 0.1.0 is already the active version in easy-install.pth
Installing wssh script to /usr/local/bin

Installed /Library/Python/2.7/site-packages/wssh-0.1.0-py2.7.egg
Processing dependencies for wssh==0.1.0
Searching for gevent==0.13.6
Reading http://pypi.python.org/simple/gevent/
Reading http://gevent.org/
Reading http://www.gevent.org/
Best match: gevent 0.13.6
Downloading http://pypi.python.org/packages/source/g/gevent/gevent-0.13.6.tar.gz#md5=7c836ce2315d44ba0af6134efbcd38c9
Processing gevent-0.13.6.tar.gz
Running gevent-0.13.6/setup.py -q bdist_egg --dist-dir /tmp/easy_install-XaoOPo/gevent-0.13.6/egg-dist-tmp-lFCZjD
In file included from gevent/core.c:225:
gevent/libevent.h:9:19: error: event.h: No such file or directory
gevent/libevent.h:38:20: error: evhttp.h: No such file or directory
gevent/libevent.h:39:19: error: evdns.h: No such file or directory
gevent/core.c:361: error: field 'ev' has incomplete type
gevent/core.c:741: warning: parameter names (without types) in function declaration
gevent/core.c: In function '__pyx_f_6gevent_4core___event_handler':
gevent/core.c:1619: warning: implicit declaration of function 'event_pending'
gevent/core.c:1619: error: 'EV_READ' undeclared (first use in this function)
gevent/core.c:1619: error: (Each undeclared identifier is reported only once
gevent/core.c:1619: error: for each function it appears in.)
gevent/core.c:1619: error: 'EV_WRITE' undeclared (first use in this function)
gevent/core.c:1619: error: 'EV_SIGNAL' undeclared (first use in this function)
gevent/core.c:1619: error: 'EV_TIMEOUT' undeclared (first use in this function)
gevent/core.c: In function '__pyx_pf_6gevent_4core_5event___init__':
gevent/core.c:1827: warning: implicit declaration of function 'evtimer_set'
gevent/core.c:1839: warning: implicit declaration of function 'event_set'
gevent/core.c: In function '__pyx_pf_6gevent_4core_5event_7pending___get__':
gevent/core.c:1970: error: 'EV_TIMEOUT' undeclared (first use in this function)
gevent/core.c:1970: error: 'EV_SIGNAL' undeclared (first use in this function)
gevent/core.c:1970: error: 'EV_READ' undeclared (first use in this function)
gevent/core.c:1970: error: 'EV_WRITE' undeclared (first use in this function)
gevent/core.c: In function '__pyx_pf_6gevent_4core_5event_10events_str___get__':
gevent/core.c:2126: error: 'EV_TIMEOUT' undeclared (first use in this function)
gevent/core.c:2136: error: 'EV_READ' undeclared (first use in this function)
gevent/core.c:2146: error: 'EV_WRITE' undeclared (first use in this function)
gevent/core.c:2164: error: 'EV_SIGNAL' undeclared (first use in this function)
gevent/core.c:2174: error: 'EV_PERSIST' undeclared (first use in this function)
gevent/core.c: In function '__pyx_pf_6gevent_4core_5event_9flags_str___get__':
gevent/core.c:2466: error: 'EVLIST_TIMEOUT' undeclared (first use in this function)
gevent/core.c:2476: error: 'EVLIST_INSERTED' undeclared (first use in this function)
gevent/core.c:2486: error: 'EVLIST_SIGNAL' undeclared (first use in this function)
gevent/core.c:2504: error: 'EVLIST_ACTIVE' undeclared (first use in this function)
gevent/core.c:2514: error: 'EVLIST_INTERNAL' undeclared (first use in this function)
gevent/core.c:2524: error: 'EVLIST_INIT' undeclared (first use in this function)
gevent/core.c: In function '__pyx_pf_6gevent_4core_5event_1add':
gevent/core.c:2801: warning: implicit declaration of function 'event_add'
gevent/core.c: In function '__pyx_pf_6gevent_4core_5event_2cancel':
gevent/core.c:3048: error: 'EV_TIMEOUT' undeclared (first use in this function)
gevent/core.c:3048: error: 'EV_SIGNAL' undeclared (first use in this function)
gevent/core.c:3048: error: 'EV_READ' undeclared (first use in this function)
gevent/core.c:3048: error: 'EV_WRITE' undeclared (first use in this function)
gevent/core.c:3058: warning: implicit declaration of function 'event_del'
gevent/core.c: In function '__pyx_pf_6gevent_4core_10read_event___init__':
gevent/core.c:3886: error: 'EV_READ' undeclared (first use in this function)
gevent/core.c:3905: error: 'EV_PERSIST' undeclared (first use in this function)
gevent/core.c: In function '__pyx_pf_6gevent_4core_11write_event___init__':
gevent/core.c:4088: error: 'EV_WRITE' undeclared (first use in this function)
gevent/core.c:4107: error: 'EV_PERSIST' undeclared (first use in this function)
gevent/core.c: In function '__pyx_pf_6gevent_4core_15readwrite_event___init__':
gevent/core.c:4302: error: 'EV_READ' undeclared (first use in this function)
gevent/core.c:4302: error: 'EV_WRITE' undeclared (first use in this function)
gevent/core.c:4321: error: 'EV_PERSIST' undeclared (first use in this function)
gevent/core.c: In function '__pyx_f_6gevent_4core___simple_handler':
gevent/core.c:4710: error: 'EV_READ' undeclared (first use in this function)
gevent/core.c:4710: error: 'EV_WRITE' undeclared (first use in this function)
gevent/core.c:4710: error: 'EV_SIGNAL' undeclared (first use in this function)
gevent/core.c:4710: error: 'EV_TIMEOUT' undeclared (first use in this function)
gevent/core.c: In function '__pyx_pf_6gevent_4core_5timer___init__':
gevent/core.c:4825: warning: implicit conversion shortens 64-bit value into a 32-bit value
gevent/core.c:4830: warning: implicit conversion shortens 64-bit value into a 32-bit value
gevent/core.c: In function '__pyx_pf_6gevent_4core_6signal___init__':
gevent/core.c:5040: error: 'EV_SIGNAL' undeclared (first use in this function)
gevent/core.c:5040: error: 'EV_PERSIST' undeclared (first use in this function)
gevent/core.c: In function '__pyx_pf_6gevent_4core_12active_event___init__':
gevent/core.c:5195: warning: implicit declaration of function 'event_active'
gevent/core.c:5195: error: 'EV_TIMEOUT' undeclared (first use in this function)
gevent/core.c: In function '__pyx_pf_6gevent_4core_init':
gevent/core.c:5305: warning: implicit declaration of function 'event_init'
gevent/core.c: In function '__pyx_pf_6gevent_4core_1dispatch':
gevent/core.c:5355: warning: implicit declaration of function 'event_dispatch'
gevent/core.c: In function '__pyx_pf_6gevent_4core_2loop':
gevent/core.c:5504: error: 'EVLOOP_ONCE' undeclared (first use in this function)
gevent/core.c:5523: error: 'EVLOOP_NONBLOCK' undeclared (first use in this function)
gevent/core.c:5549: warning: implicit declaration of function 'event_loop'
gevent/core.c: In function '__pyx_pf_6gevent_4core_3get_version':
gevent/core.c:5656: warning: implicit declaration of function 'event_get_version'
gevent/core.c:5656: warning: passing argument 1 of 'PyString_FromString' makes pointer from integer without a cast
gevent/core.c: In function '__pyx_pf_6gevent_4core_4get_method':
gevent/core.c:5699: warning: implicit declaration of function 'event_get_method'
gevent/core.c:5699: warning: passing argument 1 of 'PyString_FromString' makes pointer from integer without a cast
gevent/core.c: In function '__pyx_pf_6gevent_4core_5get_header_version':
gevent/core.c:5768: warning: label '__pyx_L1_error' defined but not used
gevent/core.c: In function '__pyx_pf_6gevent_4core_6reinit':
gevent/core.c:5829: warning: label '__pyx_L1_error' defined but not used
gevent/core.c: In function '__pyx_pf_6gevent_4core_7dns_init':
gevent/core.c:5862: warning: implicit declaration of function 'evdns_init'
gevent/core.c: In function '__pyx_pf_6gevent_4core_8dns_shutdown':
gevent/core.c:5934: warning: implicit declaration of function 'evdns_shutdown'
gevent/core.c: In function '__pyx_pf_6gevent_4core_9dns_err_to_string':
gevent/core.c:5977: warning: implicit declaration of function 'evdns_err_to_string'
gevent/core.c:5977: warning: assignment makes pointer from integer without a cast
gevent/core.c: In function '__pyx_pf_6gevent_4core_10dns_resolve_ipv4':
gevent/core.c:6480: warning: implicit declaration of function 'evdns_resolve_ipv4'
gevent/core.c: In function '__pyx_pf_6gevent_4core_11dns_resolve_ipv6':
gevent/core.c:6638: warning: implicit declaration of function 'evdns_resolve_ipv6'
gevent/core.c: In function '__pyx_pf_6gevent_4core_12dns_resolve_reverse':
gevent/core.c:6796: warning: implicit declaration of function 'evdns_resolve_reverse'
gevent/core.c: In function '__pyx_pf_6gevent_4core_13dns_resolve_reverse_ipv6':
gevent/core.c:6954: warning: implicit declaration of function 'evdns_resolve_reverse_ipv6'
gevent/core.c: In function '__pyx_pf_6gevent_4core_6buffer_1__len__':
gevent/core.c:7159: warning: implicit declaration of function 'EVBUFFER_LENGTH'
gevent/core.c: In function '__pyx_pf_6gevent_4core_6buffer_6read':
gevent/core.c:7545: warning: implicit declaration of function 'EVBUFFER_DATA'
gevent/core.c:7591: warning: implicit declaration of function 'evbuffer_drain'
gevent/core.c: In function '__pyx_pf_6gevent_4core_6buffer_9write':
gevent/core.c:8222: warning: implicit declaration of function 'evbuffer_add'
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_6get_input_headers':
gevent/core.c:9277: error: dereferencing pointer to incomplete type
gevent/core.c:9286: error: dereferencing pointer to incomplete type
gevent/core.c:9319: error: dereferencing pointer to incomplete type
gevent/core.c:9328: error: dereferencing pointer to incomplete type
gevent/core.c:9396: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_10connection___get__':
gevent/core.c:9477: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_11remote_host___get__':
gevent/core.c:9552: error: dereferencing pointer to incomplete type
gevent/core.c:9563: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_11remote_port___get__':
gevent/core.c:9633: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_4kind___get__':
gevent/core.c:9754: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_4type___get__':
gevent/core.c:9821: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_7typestr___get__':
gevent/core.c:9895: error: dereferencing pointer to incomplete type
gevent/core.c:9909: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_3uri___get__':
gevent/core.c:9991: error: dereferencing pointer to incomplete type
gevent/core.c:10002: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_5major___get__':
gevent/core.c:10072: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_5minor___get__':
gevent/core.c:10139: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_7version___get__':
gevent/core.c:10208: error: dereferencing pointer to incomplete type
gevent/core.c:10210: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_13response_code___get__':
gevent/core.c:10287: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_18response_code_line___get__':
gevent/core.c:10353: error: dereferencing pointer to incomplete type
gevent/core.c:10364: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_7chunked___get__':
gevent/core.c:10488: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_12input_buffer___get__':
gevent/core.c:10580: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_13output_buffer___get__':
gevent/core.c:10695: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_7find_input_header':
gevent/core.c:10795: warning: implicit declaration of function 'evhttp_find_header'
gevent/core.c:10795: error: dereferencing pointer to incomplete type
gevent/core.c:10795: warning: assignment makes pointer from integer without a cast
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_8find_output_header':
gevent/core.c:10895: error: dereferencing pointer to incomplete type
gevent/core.c:10895: warning: assignment makes pointer from integer without a cast
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_9add_input_header':
gevent/core.c:11028: warning: implicit declaration of function 'evhttp_add_header'
gevent/core.c:11028: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_10add_output_header':
gevent/core.c:11151: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_11remove_input_header':
gevent/core.c:11242: warning: implicit declaration of function 'evhttp_remove_header'
gevent/core.c:11242: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_12remove_output_header':
gevent/core.c:11325: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_13clear_input_headers':
gevent/core.c:11396: warning: implicit declaration of function 'evhttp_clear_headers'
gevent/core.c:11396: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_14clear_output_headers':
gevent/core.c:11458: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_12http_request_3send_reply':
gevent/core.c:12050: warning: implicit declaration of function 'evhttp_send_reply'
gevent/core.c:12091: warning: implicit declaration of function 'evbuffer_new'
gevent/core.c:12091: warning: assignment makes pointer from integer without a cast
gevent/core.c:12124: warning: implicit declaration of function 'evbuffer_free'
gevent/core.c: In function '__pyx_pf_6gevent_4core_12http_request_4send_reply_start':
gevent/core.c:12277: warning: implicit declaration of function 'evhttp_send_reply_start'
gevent/core.c: In function '__pyx_pf_6gevent_4core_12http_request_5send_reply_chunk':
gevent/core.c:12361: warning: implicit declaration of function 'evhttp_send_reply_chunk'
gevent/core.c:12388: warning: assignment makes pointer from integer without a cast
gevent/core.c: In function '__pyx_pf_6gevent_4core_12http_request_6send_reply_end':
gevent/core.c:12516: warning: implicit declaration of function 'evhttp_send_reply_end'
gevent/core.c: In function '__pyx_pf_6gevent_4core_12http_request_7send_error':
gevent/core.c:12636: warning: implicit declaration of function 'evhttp_send_error'
gevent/core.c: In function '__pyx_pf_6gevent_4core_19http_request_client___init__':
gevent/core.c:12831: warning: implicit declaration of function 'evhttp_request_new'
gevent/core.c:12831: warning: assignment makes pointer from integer without a cast
gevent/core.c: In function '__pyx_pf_6gevent_4core_19http_request_client_1__dealloc__':
gevent/core.c:13070: warning: implicit declaration of function 'evhttp_request_free'
gevent/core.c: In function '__pyx_pf_6gevent_4core_15http_connection_1new':
gevent/core.c:13347: warning: implicit declaration of function 'evhttp_connection_new'
gevent/core.c:13347: warning: assignment makes pointer from integer without a cast
gevent/core.c: In function '__pyx_pf_6gevent_4core_15http_connection_2__dealloc__':
gevent/core.c:13458: warning: implicit declaration of function 'evhttp_connection_free'
gevent/core.c: In function '__pyx_pf_6gevent_4core_15http_connection_4peer___get__':
gevent/core.c:13877: error: 'ev_uint16_t' undeclared (first use in this function)
gevent/core.c:13877: error: expected ';' before '__pyx_v_port'
gevent/core.c:13928: error: '__pyx_v_port' undeclared (first use in this function)
gevent/core.c:13937: warning: implicit declaration of function 'evhttp_connection_get_peer'
gevent/core.c: In function '__pyx_pf_6gevent_4core_15http_connection_6set_local_address':
gevent/core.c:14073: warning: implicit declaration of function 'evhttp_connection_set_local_address'
gevent/core.c: In function '__pyx_pf_6gevent_4core_15http_connection_7set_timeout':
gevent/core.c:14145: warning: implicit declaration of function 'evhttp_connection_set_timeout'
gevent/core.c: In function '__pyx_pf_6gevent_4core_15http_connection_8set_retries':
gevent/core.c:14217: warning: implicit declaration of function 'evhttp_connection_set_retries'
gevent/core.c: In function '__pyx_pf_6gevent_4core_15http_connection_9make_request':
gevent/core.c:14318: warning: implicit declaration of function 'evhttp_make_request'
gevent/core.c: In function '__pyx_f_6gevent_4core__http_cb_handler':
gevent/core.c:14846: error: dereferencing pointer to incomplete type
gevent/core.c:14870: warning: implicit declaration of function 'evhttp_connection_set_closecb'
gevent/core.c: In function '__pyx_f_6gevent_4core_report_internal_error':
gevent/core.c:15344: error: dereferencing pointer to incomplete type
gevent/core.c:15358: error: dereferencing pointer to incomplete type
gevent/core.c:15367: error: dereferencing pointer to incomplete type
gevent/core.c:15376: warning: assignment makes pointer from integer without a cast
gevent/core.c:15385: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_4http___init__':
gevent/core.c:15559: warning: implicit declaration of function 'evhttp_new'
gevent/core.c:15559: warning: assignment makes pointer from integer without a cast
gevent/core.c:15568: warning: implicit declaration of function 'evhttp_set_gencb'
gevent/core.c: In function '__pyx_pf_6gevent_4core_4http_1__dealloc__':
gevent/core.c:15620: warning: implicit declaration of function 'evhttp_free'
gevent/core.c: In function '__pyx_pf_6gevent_4core_4http_3bind':
gevent/core.c:15812: warning: implicit declaration of function 'evhttp_bind_socket'
gevent/core.c: In function '__pyx_pf_6gevent_4core_4http_4accept':
gevent/core.c:15914: warning: implicit declaration of function 'evhttp_accept_socket'
gevent/core.c: At top level:
gevent/core.c:21272: error: expected ')' before 'val'
In file included from gevent/core.c:225:
gevent/libevent.h:9:19: error: event.h: No such file or directory
gevent/libevent.h:38:20: error: evhttp.h: No such file or directory
gevent/libevent.h:39:19: error: evdns.h: No such file or directory
gevent/core.c:361: error: field 'ev' has incomplete type
gevent/core.c:741: warning: parameter names (without types) in function declaration
gevent/core.c: In function '__pyx_f_6gevent_4core___event_handler':
gevent/core.c:1619: warning: implicit declaration of function 'event_pending'
gevent/core.c:1619: error: 'EV_READ' undeclared (first use in this function)
gevent/core.c:1619: error: (Each undeclared identifier is reported only once
gevent/core.c:1619: error: for each function it appears in.)
gevent/core.c:1619: error: 'EV_WRITE' undeclared (first use in this function)
gevent/core.c:1619: error: 'EV_SIGNAL' undeclared (first use in this function)
gevent/core.c:1619: error: 'EV_TIMEOUT' undeclared (first use in this function)
gevent/core.c: In function '__pyx_pf_6gevent_4core_5event___init__':
gevent/core.c:1827: warning: implicit declaration of function 'evtimer_set'
gevent/core.c:1839: warning: implicit declaration of function 'event_set'
gevent/core.c: In function '__pyx_pf_6gevent_4core_5event_7pending___get__':
gevent/core.c:1970: error: 'EV_TIMEOUT' undeclared (first use in this function)
gevent/core.c:1970: error: 'EV_SIGNAL' undeclared (first use in this function)
gevent/core.c:1970: error: 'EV_READ' undeclared (first use in this function)
gevent/core.c:1970: error: 'EV_WRITE' undeclared (first use in this function)
gevent/core.c: In function '__pyx_pf_6gevent_4core_5event_10events_str___get__':
gevent/core.c:2126: error: 'EV_TIMEOUT' undeclared (first use in this function)
gevent/core.c:2136: error: 'EV_READ' undeclared (first use in this function)
gevent/core.c:2146: error: 'EV_WRITE' undeclared (first use in this function)
gevent/core.c:2164: error: 'EV_SIGNAL' undeclared (first use in this function)
gevent/core.c:2174: error: 'EV_PERSIST' undeclared (first use in this function)
gevent/core.c: In function '__pyx_pf_6gevent_4core_5event_9flags_str___get__':
gevent/core.c:2466: error: 'EVLIST_TIMEOUT' undeclared (first use in this function)
gevent/core.c:2476: error: 'EVLIST_INSERTED' undeclared (first use in this function)
gevent/core.c:2486: error: 'EVLIST_SIGNAL' undeclared (first use in this function)
gevent/core.c:2504: error: 'EVLIST_ACTIVE' undeclared (first use in this function)
gevent/core.c:2514: error: 'EVLIST_INTERNAL' undeclared (first use in this function)
gevent/core.c:2524: error: 'EVLIST_INIT' undeclared (first use in this function)
gevent/core.c: In function '__pyx_pf_6gevent_4core_5event_1add':
gevent/core.c:2801: warning: implicit declaration of function 'event_add'
gevent/core.c: In function '__pyx_pf_6gevent_4core_5event_2cancel':
gevent/core.c:3048: error: 'EV_TIMEOUT' undeclared (first use in this function)
gevent/core.c:3048: error: 'EV_SIGNAL' undeclared (first use in this function)
gevent/core.c:3048: error: 'EV_READ' undeclared (first use in this function)
gevent/core.c:3048: error: 'EV_WRITE' undeclared (first use in this function)
gevent/core.c:3058: warning: implicit declaration of function 'event_del'
gevent/core.c: In function '__pyx_pf_6gevent_4core_10read_event___init__':
gevent/core.c:3886: error: 'EV_READ' undeclared (first use in this function)
gevent/core.c:3905: error: 'EV_PERSIST' undeclared (first use in this function)
gevent/core.c: In function '__pyx_pf_6gevent_4core_11write_event___init__':
gevent/core.c:4088: error: 'EV_WRITE' undeclared (first use in this function)
gevent/core.c:4107: error: 'EV_PERSIST' undeclared (first use in this function)
gevent/core.c: In function '__pyx_pf_6gevent_4core_15readwrite_event___init__':
gevent/core.c:4302: error: 'EV_READ' undeclared (first use in this function)
gevent/core.c:4302: error: 'EV_WRITE' undeclared (first use in this function)
gevent/core.c:4321: error: 'EV_PERSIST' undeclared (first use in this function)
gevent/core.c: In function '__pyx_f_6gevent_4core___simple_handler':
gevent/core.c:4710: error: 'EV_READ' undeclared (first use in this function)
gevent/core.c:4710: error: 'EV_WRITE' undeclared (first use in this function)
gevent/core.c:4710: error: 'EV_SIGNAL' undeclared (first use in this function)
gevent/core.c:4710: error: 'EV_TIMEOUT' undeclared (first use in this function)
gevent/core.c: In function '__pyx_pf_6gevent_4core_5timer___init__':
gevent/core.c:4825: warning: implicit conversion shortens 64-bit value into a 32-bit value
gevent/core.c:4830: warning: implicit conversion shortens 64-bit value into a 32-bit value
gevent/core.c: In function '__pyx_pf_6gevent_4core_6signal___init__':
gevent/core.c:5040: error: 'EV_SIGNAL' undeclared (first use in this function)
gevent/core.c:5040: error: 'EV_PERSIST' undeclared (first use in this function)
gevent/core.c: In function '__pyx_pf_6gevent_4core_12active_event___init__':
gevent/core.c:5195: warning: implicit declaration of function 'event_active'
gevent/core.c:5195: error: 'EV_TIMEOUT' undeclared (first use in this function)
gevent/core.c: In function '__pyx_pf_6gevent_4core_init':
gevent/core.c:5305: warning: implicit declaration of function 'event_init'
gevent/core.c: In function '__pyx_pf_6gevent_4core_1dispatch':
gevent/core.c:5355: warning: implicit declaration of function 'event_dispatch'
gevent/core.c: In function '__pyx_pf_6gevent_4core_2loop':
gevent/core.c:5504: error: 'EVLOOP_ONCE' undeclared (first use in this function)
gevent/core.c:5523: error: 'EVLOOP_NONBLOCK' undeclared (first use in this function)
gevent/core.c:5549: warning: implicit declaration of function 'event_loop'
gevent/core.c: In function '__pyx_pf_6gevent_4core_3get_version':
gevent/core.c:5656: warning: implicit declaration of function 'event_get_version'
gevent/core.c:5656: warning: passing argument 1 of 'PyString_FromString' makes pointer from integer without a cast
gevent/core.c: In function '__pyx_pf_6gevent_4core_4get_method':
gevent/core.c:5699: warning: implicit declaration of function 'event_get_method'
gevent/core.c:5699: warning: passing argument 1 of 'PyString_FromString' makes pointer from integer without a cast
gevent/core.c: In function '__pyx_pf_6gevent_4core_5get_header_version':
gevent/core.c:5768: warning: label '__pyx_L1_error' defined but not used
gevent/core.c: In function '__pyx_pf_6gevent_4core_6reinit':
gevent/core.c:5829: warning: label '__pyx_L1_error' defined but not used
gevent/core.c: In function '__pyx_pf_6gevent_4core_7dns_init':
gevent/core.c:5862: warning: implicit declaration of function 'evdns_init'
gevent/core.c: In function '__pyx_pf_6gevent_4core_8dns_shutdown':
gevent/core.c:5934: warning: implicit declaration of function 'evdns_shutdown'
gevent/core.c: In function '__pyx_pf_6gevent_4core_9dns_err_to_string':
gevent/core.c:5977: warning: implicit declaration of function 'evdns_err_to_string'
gevent/core.c:5977: warning: assignment makes pointer from integer without a cast
gevent/core.c: In function '__pyx_pf_6gevent_4core_10dns_resolve_ipv4':
gevent/core.c:6480: warning: implicit declaration of function 'evdns_resolve_ipv4'
gevent/core.c: In function '__pyx_pf_6gevent_4core_11dns_resolve_ipv6':
gevent/core.c:6638: warning: implicit declaration of function 'evdns_resolve_ipv6'
gevent/core.c: In function '__pyx_pf_6gevent_4core_12dns_resolve_reverse':
gevent/core.c:6796: warning: implicit declaration of function 'evdns_resolve_reverse'
gevent/core.c: In function '__pyx_pf_6gevent_4core_13dns_resolve_reverse_ipv6':
gevent/core.c:6954: warning: implicit declaration of function 'evdns_resolve_reverse_ipv6'
gevent/core.c: In function '__pyx_pf_6gevent_4core_6buffer_1__len__':
gevent/core.c:7159: warning: implicit declaration of function 'EVBUFFER_LENGTH'
gevent/core.c: In function '__pyx_pf_6gevent_4core_6buffer_6read':
gevent/core.c:7545: warning: implicit declaration of function 'EVBUFFER_DATA'
gevent/core.c:7545: warning: cast to pointer from integer of different size
gevent/core.c:7591: warning: implicit declaration of function 'evbuffer_drain'
gevent/core.c: In function '__pyx_pf_6gevent_4core_6buffer_7readline':
gevent/core.c:7849: warning: cast to pointer from integer of different size
gevent/core.c: In function '__pyx_pf_6gevent_4core_6buffer_9write':
gevent/core.c:8222: warning: implicit declaration of function 'evbuffer_add'
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_6get_input_headers':
gevent/core.c:9277: error: dereferencing pointer to incomplete type
gevent/core.c:9286: error: dereferencing pointer to incomplete type
gevent/core.c:9319: error: dereferencing pointer to incomplete type
gevent/core.c:9328: error: dereferencing pointer to incomplete type
gevent/core.c:9396: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_10connection___get__':
gevent/core.c:9477: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_11remote_host___get__':
gevent/core.c:9552: error: dereferencing pointer to incomplete type
gevent/core.c:9563: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_11remote_port___get__':
gevent/core.c:9633: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_4kind___get__':
gevent/core.c:9754: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_4type___get__':
gevent/core.c:9821: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_7typestr___get__':
gevent/core.c:9895: error: dereferencing pointer to incomplete type
gevent/core.c:9909: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_3uri___get__':
gevent/core.c:9991: error: dereferencing pointer to incomplete type
gevent/core.c:10002: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_5major___get__':
gevent/core.c:10072: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_5minor___get__':
gevent/core.c:10139: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_7version___get__':
gevent/core.c:10208: error: dereferencing pointer to incomplete type
gevent/core.c:10210: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_13response_code___get__':
gevent/core.c:10287: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_18response_code_line___get__':
gevent/core.c:10353: error: dereferencing pointer to incomplete type
gevent/core.c:10364: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_7chunked___get__':
gevent/core.c:10488: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_12input_buffer___get__':
gevent/core.c:10580: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_13output_buffer___get__':
gevent/core.c:10695: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_7find_input_header':
gevent/core.c:10795: warning: implicit declaration of function 'evhttp_find_header'
gevent/core.c:10795: error: dereferencing pointer to incomplete type
gevent/core.c:10795: warning: assignment makes pointer from integer without a cast
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_8find_output_header':
gevent/core.c:10895: error: dereferencing pointer to incomplete type
gevent/core.c:10895: warning: assignment makes pointer from integer without a cast
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_9add_input_header':
gevent/core.c:11028: warning: implicit declaration of function 'evhttp_add_header'
gevent/core.c:11028: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_10add_output_header':
gevent/core.c:11151: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_11remove_input_header':
gevent/core.c:11242: warning: implicit declaration of function 'evhttp_remove_header'
gevent/core.c:11242: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_12remove_output_header':
gevent/core.c:11325: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_13clear_input_headers':
gevent/core.c:11396: warning: implicit declaration of function 'evhttp_clear_headers'
gevent/core.c:11396: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_17http_request_base_14clear_output_headers':
gevent/core.c:11458: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_12http_request_3send_reply':
gevent/core.c:12050: warning: implicit declaration of function 'evhttp_send_reply'
gevent/core.c:12091: warning: implicit declaration of function 'evbuffer_new'
gevent/core.c:12091: warning: assignment makes pointer from integer without a cast
gevent/core.c:12124: warning: implicit declaration of function 'evbuffer_free'
gevent/core.c: In function '__pyx_pf_6gevent_4core_12http_request_4send_reply_start':
gevent/core.c:12277: warning: implicit declaration of function 'evhttp_send_reply_start'
gevent/core.c: In function '__pyx_pf_6gevent_4core_12http_request_5send_reply_chunk':
gevent/core.c:12361: warning: implicit declaration of function 'evhttp_send_reply_chunk'
gevent/core.c:12388: warning: assignment makes pointer from integer without a cast
gevent/core.c: In function '__pyx_pf_6gevent_4core_12http_request_6send_reply_end':
gevent/core.c:12516: warning: implicit declaration of function 'evhttp_send_reply_end'
gevent/core.c: In function '__pyx_pf_6gevent_4core_12http_request_7send_error':
gevent/core.c:12636: warning: implicit declaration of function 'evhttp_send_error'
gevent/core.c: In function '__pyx_pf_6gevent_4core_19http_request_client___init__':
gevent/core.c:12831: warning: implicit declaration of function 'evhttp_request_new'
gevent/core.c:12831: warning: assignment makes pointer from integer without a cast
gevent/core.c: In function '__pyx_pf_6gevent_4core_19http_request_client_1__dealloc__':
gevent/core.c:13070: warning: implicit declaration of function 'evhttp_request_free'
gevent/core.c: In function '__pyx_pf_6gevent_4core_15http_connection_1new':
gevent/core.c:13347: warning: implicit declaration of function 'evhttp_connection_new'
gevent/core.c:13347: warning: assignment makes pointer from integer without a cast
gevent/core.c: In function '__pyx_pf_6gevent_4core_15http_connection_2__dealloc__':
gevent/core.c:13458: warning: implicit declaration of function 'evhttp_connection_free'
gevent/core.c: In function '__pyx_pf_6gevent_4core_15http_connection_4peer___get__':
gevent/core.c:13877: error: 'ev_uint16_t' undeclared (first use in this function)
gevent/core.c:13877: error: expected ';' before '__pyx_v_port'
gevent/core.c:13928: error: '__pyx_v_port' undeclared (first use in this function)
gevent/core.c:13937: warning: implicit declaration of function 'evhttp_connection_get_peer'
gevent/core.c: In function '__pyx_pf_6gevent_4core_15http_connection_6set_local_address':
gevent/core.c:14073: warning: implicit declaration of function 'evhttp_connection_set_local_address'
gevent/core.c: In function '__pyx_pf_6gevent_4core_15http_connection_7set_timeout':
gevent/core.c:14145: warning: implicit declaration of function 'evhttp_connection_set_timeout'
gevent/core.c: In function '__pyx_pf_6gevent_4core_15http_connection_8set_retries':
gevent/core.c:14217: warning: implicit declaration of function 'evhttp_connection_set_retries'
gevent/core.c: In function '__pyx_pf_6gevent_4core_15http_connection_9make_request':
gevent/core.c:14318: warning: implicit declaration of function 'evhttp_make_request'
gevent/core.c: In function '__pyx_f_6gevent_4core__http_cb_handler':
gevent/core.c:14846: error: dereferencing pointer to incomplete type
gevent/core.c:14870: warning: implicit declaration of function 'evhttp_connection_set_closecb'
gevent/core.c: In function '__pyx_f_6gevent_4core_report_internal_error':
gevent/core.c:15344: error: dereferencing pointer to incomplete type
gevent/core.c:15358: error: dereferencing pointer to incomplete type
gevent/core.c:15367: error: dereferencing pointer to incomplete type
gevent/core.c:15376: warning: assignment makes pointer from integer without a cast
gevent/core.c:15385: error: dereferencing pointer to incomplete type
gevent/core.c: In function '__pyx_pf_6gevent_4core_4http___init__':
gevent/core.c:15559: warning: implicit declaration of function 'evhttp_new'
gevent/core.c:15559: warning: assignment makes pointer from integer without a cast
gevent/core.c:15568: warning: implicit declaration of function 'evhttp_set_gencb'
gevent/core.c: In function '__pyx_pf_6gevent_4core_4http_1__dealloc__':
gevent/core.c:15620: warning: implicit declaration of function 'evhttp_free'
gevent/core.c: In function '__pyx_pf_6gevent_4core_4http_3bind':
gevent/core.c:15812: warning: implicit declaration of function 'evhttp_bind_socket'
gevent/core.c: In function '__pyx_pf_6gevent_4core_4http_4accept':
gevent/core.c:15914: warning: implicit declaration of function 'evhttp_accept_socket'
gevent/core.c: At top level:
gevent/core.c:21272: error: expected ')' before 'val'
lipo: can't open input file: /var/tmp//ccpotBdH.out (No such file or directory)
error: Setup script exited with error: command 'llvm-gcc-4.2' failed with exit status 1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.