From bed7683c8d91884a0584751f1ddcc59cf1a078a3 Mon Sep 17 00:00:00 2001 From: CoprDistGit Date: Mon, 15 May 2023 08:27:36 +0000 Subject: automatic import of python-webssh --- python-webssh.spec | 480 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 480 insertions(+) create mode 100644 python-webssh.spec (limited to 'python-webssh.spec') 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 - 1.6.2-1 +- Package Spec generated -- cgit v1.2.3