Giter Club home page Giter Club logo

simpleremote's Introduction

Overview

SimpleRemote is a framework designed to make device automation easier. It does this by providing a simple communications framework for interacting with devices under test. If you need to call programs or transfer files to devices as part of your testing, this framework can help you.

This project also contains SimpleJsonRpc, which is a minimalist .NET Core JSON-RPC server.

Note: This project is also sometimes referred to as SimpleDUTRemote in the documentation - SimpleRemote and SimpleDUTRemote are the same thing, SimpleDUTRemote is just the older name for the tool.

How do I start?

This project is fully documented (with tutorials) in doxygen. To use, simply clone this code and run doxygen in the project directory.

You can also view the pre-built documentation online.

Binaries for both the server and client are available on the GitHub Releases page, and nuget packages are available for the client and the SimpleJsonRpc libraries (under the Microsoft.SurfaceAutomationTeam.SimpleRemote namespace).

If you already have doxygen and the .NET Core CLI tools, you can build everything by running the BuildAll.bat script included in this repositry. That will automatically build the client, server, supporting libraries, and all documentation, and place it in the output directory.

Why Should I Use This?

This project was designed by the Surface team to help automate their hardware testing. The solution is incredibly lightweight - it has minimal power impact, generates minimal network traffic, and does not require any external servers. To deploy, simply run an exe and you're ready.

You can think of this as shiny version of telnet and FTP, wrapped into one.

Security

SimpleRemote allows users to run programs and access files on the computer where it is run, with no authentication whatsoever. It was desiged to be run on test machines on closed, lab networks.

When you start the server for the first time, it will display a security warning, and prompt you to acknowledge the security risks of using SimpleRemote. Once you acknowledge the warning, the server will write a blank file UserWarningAcknowledged in the same directory as the server executable, and will not display the prompt on future runs.

If you are deploying in a lab enviornment, acknowledge and accept the risks of using this software, and want to avoid manually acknowledging the prompt on each machine, you can either:

  • Place a blank file named UserWarningAcknowledged in the same directory as the server exe.
  • Start the server with the command line flag --SuppressUserWarning.

Tests

Most functions provided by this tool have associated test cases, in the DUTRemoteTests project. To run, uses either Visual Studio's build in unit test runner, or run dotnet test from the DUTRemoteTests project directory.

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.

When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

simpleremote's People

Contributors

dependabot[bot] avatar iunknwn avatar microsoft-github-policy-service[bot] avatar microsoftopensource avatar msftgits avatar roundingerror avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

simpleremote's Issues

Help determining LargeFileTransfers port

Hello. I came across an "issue" while trying out this project today and just wanted to share the solution. In case it helps someone else down the road.

After getting the SimpleRemoteConsole running on a remote machine, I am to able use the RpcClient.Upload() procedure to push files to the remote machine. This was working great, except that for each upload attempt, the console would output that it was listening to a completely different port: 50118, 50121, 50122, 50124, etc. This works fine if I disable the firewall on the remote machine. In case I do not want to disable the firewall, I would still need to open several hundred ports in order to upload over an extended period of time. Is it possible to know which port the remote machine will be listening on ahead of time?

Solution: Notice the "Upload" procedure accepts an optional "portNumber" argument. Passing in a port number other than "0" will force the SimpleRemoteConsole to listen on that port.

Can't recover from momentary network glitches

For a variety of reasons, notifications from the SR server back to the client, such as job completion notifications, or other responses, may not make it. SR is able to detect that the notification failed because it prints so in the log. In this situation, can SR be made to try again, say up to 3 times? This seems like it could go along way to improving robustness against momentary network glitches.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.