__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
# Copyright 2020 Canonical, Ltd.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import logging
import os
import pwd
from subiquitycore.utils import run_command
log = logging.getLogger("subiquitycore.ssh")
def host_key_fingerprints():
"""Query sshd to find the host keys and then fingerprint them.
Returns a sequence of (key-type, fingerprint) pairs.
"""
config = run_command(['sshd', '-T'])
if config.returncode != 0:
log.debug("sshd -T failed %r", config.stderr)
return []
keyfiles = []
for line in config.stdout.splitlines():
if line.startswith('hostkey '):
keyfiles.append(line.split(None, 1)[1])
info = []
for keyfile in keyfiles:
info.extend(fingerprints(keyfile))
return info
def fingerprints(keyfile):
info = []
cp = run_command(['ssh-keygen', '-lf', keyfile])
if cp.returncode != 0:
log.debug("ssh-keygen -lf %s failed %r", keyfile, cp.stderr)
return info
for line in cp.stdout.splitlines():
parts = line.strip().replace('\r', '').split()
fingerprint = parts[1]
keytype = parts[-1].strip('()')
info.append((keytype, fingerprint))
return info
host_keys_intro = _("""\
The host key fingerprints are:
""")
host_key_tmpl = """
{keytype:{width}} {fingerprint}"""
single_host_key_tmpl = _("""\
The {keytype} host key fingerprint is:
{fingerprint}
""")
def host_key_info():
return summarize_host_keys(host_key_fingerprints())
def summarize_host_keys(fingerprints):
if len(fingerprints) == 0:
return ''
if len(fingerprints) == 1:
[(keytype, fingerprint)] = fingerprints
return _(single_host_key_tmpl).format(keytype=keytype,
fingerprint=fingerprint)
lines = [_(host_keys_intro)]
longest_type = max([len(keytype) for keytype, _ in fingerprints])
for keytype, fingerprint in fingerprints:
lines.append(host_key_tmpl.format(keytype=keytype,
fingerprint=fingerprint,
width=longest_type))
return "".join(lines)
def user_key_fingerprints(username):
try:
user_info = pwd.getpwnam(username)
except KeyError:
log.exception("getpwnam(%s) failed", username)
return []
user_key_file = '{}/.ssh/authorized_keys'.format(user_info.pw_dir)
if os.path.exists(user_key_file):
return fingerprints(user_key_file)
else:
return []
def get_ips_standalone():
from probert.prober import Prober
from subiquitycore.models.network import NETDEV_IGNORED_IFACE_TYPES
prober = Prober()
prober.probe_network()
links = prober.get_results()['network']['links']
ips = []
for link in sorted(links, key=lambda link: link['netlink_data']['name']):
if link['type'] in NETDEV_IGNORED_IFACE_TYPES:
continue
for addr in link['addresses']:
if addr['scope'] == "global":
ips.append(addr['address'].split('/')[0])
return ips
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| __pycache__ | Folder | 0755 |
|
|
| controllers | Folder | 0755 |
|
|
| models | Folder | 0755 |
|
|
| testing | Folder | 0755 |
|
|
| tests | Folder | 0755 |
|
|
| ui | Folder | 0755 |
|
|
| __init__.py | File | 710 B | 0644 |
|
| async_helpers.py | File | 2.27 KB | 0644 |
|
| context.py | File | 4.42 KB | 0644 |
|
| controller.py | File | 1.68 KB | 0644 |
|
| controllerset.py | File | 1.9 KB | 0644 |
|
| core.py | File | 4.5 KB | 0644 |
|
| file_util.py | File | 1.67 KB | 0644 |
|
| i18n.py | File | 1.7 KB | 0644 |
|
| log.py | File | 1.8 KB | 0644 |
|
| lsb_release.py | File | 947 B | 0644 |
|
| netplan.py | File | 5.34 KB | 0644 |
|
| palette.py | File | 4.53 KB | 0644 |
|
| prober.py | File | 1.96 KB | 0644 |
|
| pubsub.py | File | 1.22 KB | 0644 |
|
| screen.py | File | 4.9 KB | 0644 |
|
| snapd.py | File | 6.1 KB | 0644 |
|
| ssh.py | File | 3.54 KB | 0644 |
|
| tui.py | File | 12.98 KB | 0644 |
|
| tuicontroller.py | File | 3.38 KB | 0644 |
|
| utils.py | File | 5.71 KB | 0644 |
|
| view.py | File | 3.35 KB | 0644 |
|