%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