%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.aliyun.com/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 * Thu Jun 08 2023 Python_Bot - 1.6.2-1 - Package Spec generated