summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-webssh.spec480
-rw-r--r--sources1
3 files changed, 482 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..38d16fe 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/webssh-1.6.2.tar.gz
diff --git a/python-webssh.spec b/python-webssh.spec
new file mode 100644
index 0000000..4622760
--- /dev/null
+++ b/python-webssh.spec
@@ -0,0 +1,480 @@
+%global _empty_manifest_terminate_build 0
+Name: python-webssh
+Version: 1.6.2
+Release: 1
+Summary: Web based ssh client
+License: MIT
+URL: https://github.com/huashengdun/webssh
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/3b/a0/6df4b2daae067807771670264a4c2b0f41914364af9c9adc58ba0d7576ef/webssh-1.6.2.tar.gz
+BuildArch: noarch
+
+
+%description
+|Build Status| |codecov| |PyPI - Python Version| |PyPI|
+Introduction
+~~~~~~~~~~~~
+A simple web application to be used as an ssh client to connect to your
+ssh servers. It is written in Python, base on tornado, paramiko and
+xterm.js.
+Features
+~~~~~~~~
+- SSH password authentication supported, including empty password.
+- SSH public-key authentication supported, including DSA RSA ECDSA
+ Ed25519 keys.
+- Encrypted keys supported.
+- Two-Factor Authentication (time-based one-time password) supported.
+- Fullscreen terminal supported.
+- Terminal window resizable.
+- Auto detect the ssh server's default encoding.
+- Modern browsers including Chrome, Firefox, Safari, Edge, Opera
+ supported.
+Preview
+~~~~~~~
+|Login| |Terminal|
+How it works
+~~~~~~~~~~~~
+ +---------+ http +--------+ ssh +-----------+
+ | browser | <==========> | webssh | <=======> | ssh server|
+ +---------+ websocket +--------+ ssh +-----------+
+Requirements
+~~~~~~~~~~~~
+- Python 3.8+
+Quickstart
+~~~~~~~~~~
+1. Install this app, run command ``pip install webssh``
+2. Start a webserver, run command ``wssh``
+3. Open your browser, navigate to ``127.0.0.1:8888``
+4. Input your data, submit the form.
+Server options
+~~~~~~~~~~~~~~
+ # start a http server with specified listen address and listen port
+ wssh --address='2.2.2.2' --port=8000
+ # start a https server, certfile and keyfile must be passed
+ wssh --certfile='/path/to/cert.crt' --keyfile='/path/to/cert.key'
+ # missing host key policy
+ wssh --policy=reject
+ # logging level
+ wssh --logging=debug
+ # log to file
+ wssh --log-file-prefix=main.log
+ # more options
+ wssh --help
+Browser console
+~~~~~~~~~~~~~~~
+ // connect to your ssh server
+ wssh.connect(hostname, port, username, password, privatekey, passphrase, totp);
+ // pass an object to wssh.connect
+ var opts = {
+ hostname: 'hostname',
+ port: 'port',
+ username: 'username',
+ password: 'password',
+ privatekey: 'the private key text',
+ passphrase: 'passphrase',
+ totp: 'totp'
+ };
+ wssh.connect(opts);
+ // without an argument, wssh will use the form data to connect
+ wssh.connect();
+ // set a new encoding for client to use
+ wssh.set_encoding(encoding);
+ // reset encoding to use the default one
+ wssh.reset_encoding();
+ // send a command to the server
+ wssh.send('ls -l');
+Custom Font
+~~~~~~~~~~~
+To use custom font, put your font file in the directory
+``webssh/static/css/fonts/`` and restart the server.
+URL Arguments
+~~~~~~~~~~~~~
+Support passing arguments by url (query or fragment) like following
+examples:
+Passing form data (password must be encoded in base64, privatekey not
+supported)
+ http://localhost:8888/?hostname=xx&username=yy&password=str_base64_encoded
+Passing a terminal background color
+ http://localhost:8888/#bgcolor=green
+Passing a user defined title
+ http://localhost:8888/?title=my-ssh-server
+Passing an encoding
+ http://localhost:8888/#encoding=gbk
+Passing a command executed right after login
+ http://localhost:8888/?command=pwd
+Passing a terminal type
+ http://localhost:8888/?term=xterm-256color
+Use Docker
+~~~~~~~~~~
+Start up the app
+ docker-compose up
+Tear down the app
+ docker-compose down
+Tests
+~~~~~
+Requirements
+ pip install pytest pytest-cov codecov flake8 mock
+Use unittest to run all tests
+ python -m unittest discover tests
+Use pytest to run all tests
+ python -m pytest tests
+Deployment
+~~~~~~~~~~
+Running behind an Nginx server
+ wssh --address='127.0.0.1' --port=8888 --policy=reject
+ # Nginx config example
+ location / {
+ proxy_pass http://127.0.0.1:8888;
+ proxy_http_version 1.1;
+ proxy_read_timeout 300;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection "upgrade";
+ proxy_set_header Host $http_host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Real-PORT $remote_port;
+ }
+Running as a standalone server
+ wssh --port=8080 --sslport=4433 --certfile='cert.crt' --keyfile='cert.key' --xheaders=False --policy=reject
+Tips
+~~~~
+- For whatever deployment choice you choose, don't forget to enable
+ SSL.
+- By default plain http requests from a public network will be either
+ redirected or blocked and being redirected takes precedence over
+ being blocked.
+- Try to use reject policy as the missing host key policy along with
+ your verified known\_hosts, this will prevent man-in-the-middle
+ attacks. The idea is that it checks the system host keys
+ file("~/.ssh/known\_hosts") and the application host keys
+ file("./known\_hosts") in order, if the ssh server's hostname is not
+ found or the key is not matched, the connection will be aborted.
+
+%package -n python3-webssh
+Summary: Web based ssh client
+Provides: python-webssh
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-webssh
+|Build Status| |codecov| |PyPI - Python Version| |PyPI|
+Introduction
+~~~~~~~~~~~~
+A simple web application to be used as an ssh client to connect to your
+ssh servers. It is written in Python, base on tornado, paramiko and
+xterm.js.
+Features
+~~~~~~~~
+- SSH password authentication supported, including empty password.
+- SSH public-key authentication supported, including DSA RSA ECDSA
+ Ed25519 keys.
+- Encrypted keys supported.
+- Two-Factor Authentication (time-based one-time password) supported.
+- Fullscreen terminal supported.
+- Terminal window resizable.
+- Auto detect the ssh server's default encoding.
+- Modern browsers including Chrome, Firefox, Safari, Edge, Opera
+ supported.
+Preview
+~~~~~~~
+|Login| |Terminal|
+How it works
+~~~~~~~~~~~~
+ +---------+ http +--------+ ssh +-----------+
+ | browser | <==========> | webssh | <=======> | ssh server|
+ +---------+ websocket +--------+ ssh +-----------+
+Requirements
+~~~~~~~~~~~~
+- Python 3.8+
+Quickstart
+~~~~~~~~~~
+1. Install this app, run command ``pip install webssh``
+2. Start a webserver, run command ``wssh``
+3. Open your browser, navigate to ``127.0.0.1:8888``
+4. Input your data, submit the form.
+Server options
+~~~~~~~~~~~~~~
+ # start a http server with specified listen address and listen port
+ wssh --address='2.2.2.2' --port=8000
+ # start a https server, certfile and keyfile must be passed
+ wssh --certfile='/path/to/cert.crt' --keyfile='/path/to/cert.key'
+ # missing host key policy
+ wssh --policy=reject
+ # logging level
+ wssh --logging=debug
+ # log to file
+ wssh --log-file-prefix=main.log
+ # more options
+ wssh --help
+Browser console
+~~~~~~~~~~~~~~~
+ // connect to your ssh server
+ wssh.connect(hostname, port, username, password, privatekey, passphrase, totp);
+ // pass an object to wssh.connect
+ var opts = {
+ hostname: 'hostname',
+ port: 'port',
+ username: 'username',
+ password: 'password',
+ privatekey: 'the private key text',
+ passphrase: 'passphrase',
+ totp: 'totp'
+ };
+ wssh.connect(opts);
+ // without an argument, wssh will use the form data to connect
+ wssh.connect();
+ // set a new encoding for client to use
+ wssh.set_encoding(encoding);
+ // reset encoding to use the default one
+ wssh.reset_encoding();
+ // send a command to the server
+ wssh.send('ls -l');
+Custom Font
+~~~~~~~~~~~
+To use custom font, put your font file in the directory
+``webssh/static/css/fonts/`` and restart the server.
+URL Arguments
+~~~~~~~~~~~~~
+Support passing arguments by url (query or fragment) like following
+examples:
+Passing form data (password must be encoded in base64, privatekey not
+supported)
+ http://localhost:8888/?hostname=xx&username=yy&password=str_base64_encoded
+Passing a terminal background color
+ http://localhost:8888/#bgcolor=green
+Passing a user defined title
+ http://localhost:8888/?title=my-ssh-server
+Passing an encoding
+ http://localhost:8888/#encoding=gbk
+Passing a command executed right after login
+ http://localhost:8888/?command=pwd
+Passing a terminal type
+ http://localhost:8888/?term=xterm-256color
+Use Docker
+~~~~~~~~~~
+Start up the app
+ docker-compose up
+Tear down the app
+ docker-compose down
+Tests
+~~~~~
+Requirements
+ pip install pytest pytest-cov codecov flake8 mock
+Use unittest to run all tests
+ python -m unittest discover tests
+Use pytest to run all tests
+ python -m pytest tests
+Deployment
+~~~~~~~~~~
+Running behind an Nginx server
+ wssh --address='127.0.0.1' --port=8888 --policy=reject
+ # Nginx config example
+ location / {
+ proxy_pass http://127.0.0.1:8888;
+ proxy_http_version 1.1;
+ proxy_read_timeout 300;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection "upgrade";
+ proxy_set_header Host $http_host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Real-PORT $remote_port;
+ }
+Running as a standalone server
+ wssh --port=8080 --sslport=4433 --certfile='cert.crt' --keyfile='cert.key' --xheaders=False --policy=reject
+Tips
+~~~~
+- For whatever deployment choice you choose, don't forget to enable
+ SSL.
+- By default plain http requests from a public network will be either
+ redirected or blocked and being redirected takes precedence over
+ being blocked.
+- Try to use reject policy as the missing host key policy along with
+ your verified known\_hosts, this will prevent man-in-the-middle
+ attacks. The idea is that it checks the system host keys
+ file("~/.ssh/known\_hosts") and the application host keys
+ file("./known\_hosts") in order, if the ssh server's hostname is not
+ found or the key is not matched, the connection will be aborted.
+
+%package help
+Summary: Development documents and examples for webssh
+Provides: python3-webssh-doc
+%description help
+|Build Status| |codecov| |PyPI - Python Version| |PyPI|
+Introduction
+~~~~~~~~~~~~
+A simple web application to be used as an ssh client to connect to your
+ssh servers. It is written in Python, base on tornado, paramiko and
+xterm.js.
+Features
+~~~~~~~~
+- SSH password authentication supported, including empty password.
+- SSH public-key authentication supported, including DSA RSA ECDSA
+ Ed25519 keys.
+- Encrypted keys supported.
+- Two-Factor Authentication (time-based one-time password) supported.
+- Fullscreen terminal supported.
+- Terminal window resizable.
+- Auto detect the ssh server's default encoding.
+- Modern browsers including Chrome, Firefox, Safari, Edge, Opera
+ supported.
+Preview
+~~~~~~~
+|Login| |Terminal|
+How it works
+~~~~~~~~~~~~
+ +---------+ http +--------+ ssh +-----------+
+ | browser | <==========> | webssh | <=======> | ssh server|
+ +---------+ websocket +--------+ ssh +-----------+
+Requirements
+~~~~~~~~~~~~
+- Python 3.8+
+Quickstart
+~~~~~~~~~~
+1. Install this app, run command ``pip install webssh``
+2. Start a webserver, run command ``wssh``
+3. Open your browser, navigate to ``127.0.0.1:8888``
+4. Input your data, submit the form.
+Server options
+~~~~~~~~~~~~~~
+ # start a http server with specified listen address and listen port
+ wssh --address='2.2.2.2' --port=8000
+ # start a https server, certfile and keyfile must be passed
+ wssh --certfile='/path/to/cert.crt' --keyfile='/path/to/cert.key'
+ # missing host key policy
+ wssh --policy=reject
+ # logging level
+ wssh --logging=debug
+ # log to file
+ wssh --log-file-prefix=main.log
+ # more options
+ wssh --help
+Browser console
+~~~~~~~~~~~~~~~
+ // connect to your ssh server
+ wssh.connect(hostname, port, username, password, privatekey, passphrase, totp);
+ // pass an object to wssh.connect
+ var opts = {
+ hostname: 'hostname',
+ port: 'port',
+ username: 'username',
+ password: 'password',
+ privatekey: 'the private key text',
+ passphrase: 'passphrase',
+ totp: 'totp'
+ };
+ wssh.connect(opts);
+ // without an argument, wssh will use the form data to connect
+ wssh.connect();
+ // set a new encoding for client to use
+ wssh.set_encoding(encoding);
+ // reset encoding to use the default one
+ wssh.reset_encoding();
+ // send a command to the server
+ wssh.send('ls -l');
+Custom Font
+~~~~~~~~~~~
+To use custom font, put your font file in the directory
+``webssh/static/css/fonts/`` and restart the server.
+URL Arguments
+~~~~~~~~~~~~~
+Support passing arguments by url (query or fragment) like following
+examples:
+Passing form data (password must be encoded in base64, privatekey not
+supported)
+ http://localhost:8888/?hostname=xx&username=yy&password=str_base64_encoded
+Passing a terminal background color
+ http://localhost:8888/#bgcolor=green
+Passing a user defined title
+ http://localhost:8888/?title=my-ssh-server
+Passing an encoding
+ http://localhost:8888/#encoding=gbk
+Passing a command executed right after login
+ http://localhost:8888/?command=pwd
+Passing a terminal type
+ http://localhost:8888/?term=xterm-256color
+Use Docker
+~~~~~~~~~~
+Start up the app
+ docker-compose up
+Tear down the app
+ docker-compose down
+Tests
+~~~~~
+Requirements
+ pip install pytest pytest-cov codecov flake8 mock
+Use unittest to run all tests
+ python -m unittest discover tests
+Use pytest to run all tests
+ python -m pytest tests
+Deployment
+~~~~~~~~~~
+Running behind an Nginx server
+ wssh --address='127.0.0.1' --port=8888 --policy=reject
+ # Nginx config example
+ location / {
+ proxy_pass http://127.0.0.1:8888;
+ proxy_http_version 1.1;
+ proxy_read_timeout 300;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection "upgrade";
+ proxy_set_header Host $http_host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Real-PORT $remote_port;
+ }
+Running as a standalone server
+ wssh --port=8080 --sslport=4433 --certfile='cert.crt' --keyfile='cert.key' --xheaders=False --policy=reject
+Tips
+~~~~
+- For whatever deployment choice you choose, don't forget to enable
+ SSL.
+- By default plain http requests from a public network will be either
+ redirected or blocked and being redirected takes precedence over
+ being blocked.
+- Try to use reject policy as the missing host key policy along with
+ your verified known\_hosts, this will prevent man-in-the-middle
+ attacks. The idea is that it checks the system host keys
+ file("~/.ssh/known\_hosts") and the application host keys
+ file("./known\_hosts") in order, if the ssh server's hostname is not
+ found or the key is not matched, the connection will be aborted.
+
+%prep
+%autosetup -n webssh-1.6.2
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-webssh -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Mon May 15 2023 Python_Bot <Python_Bot@openeuler.org> - 1.6.2-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..943da92
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+dfbed4a8466298650b581102e11527f4 webssh-1.6.2.tar.gz