Skip to content

Commit

Permalink
version 1.0.0
Browse files Browse the repository at this point in the history
  • Loading branch information
realies committed Nov 25, 2017
1 parent 2f574cc commit 2080f6f
Show file tree
Hide file tree
Showing 8 changed files with 310 additions and 1 deletion.
63 changes: 63 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
###############################################################################
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto

###############################################################################
# Set default behavior for command prompt diff.
#
# This is need for earlier builds of msysgit that does not have it on by
# default for csharp files.
# Note: This is only used by command line
###############################################################################
#*.cs diff=csharp

###############################################################################
# Set the merge driver for project and solution files
#
# Merging from the command prompt will add diff markers to the files if there
# are conflicts (Merging from VS is not affected by the settings below, in VS
# the diff markers are never inserted). Diff markers may cause the following
# file extensions to fail to load in VS. An alternative would be to treat
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
###############################################################################
#*.sln merge=binary
#*.csproj merge=binary
#*.vbproj merge=binary
#*.vcxproj merge=binary
#*.vcproj merge=binary
#*.dbproj merge=binary
#*.fsproj merge=binary
#*.lsproj merge=binary
#*.wixproj merge=binary
#*.modelproj merge=binary
#*.sqlproj merge=binary
#*.wwaproj merge=binary

###############################################################################
# behavior for image files
#
# image files are treated as binary by default.
###############################################################################
#*.jpg binary
#*.png binary
#*.gif binary

###############################################################################
# diff behavior for common document formats
#
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the
# entries below.
###############################################################################
#*.doc diff=astextplain
#*.DOC diff=astextplain
#*.docx diff=astextplain
#*.DOCX diff=astextplain
#*.dot diff=astextplain
#*.DOT diff=astextplain
#*.pdf diff=astextplain
#*.PDF diff=astextplain
#*.rtf diff=astextplain
#*.RTF diff=astextplain
10 changes: 9 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,9 @@
# nvsap
# nvsap

NVIDIA's SHIELD service requires users to pair devices by filling out a randomly generated PIN in a textfield prompt.

![SHIELD Auth Prompt](https://i.snag.gy/CM8iG1.jpg)

To ease pairing with new remote devices, this software serves as lighweight HTTP server capable of populating a PIN on demand remotely by accepting GET requests on `http://+:47980/auth/1234` where `1234` is a 4 digit PIN. Upon receiving a GET request, the software checks for an existing SHIELD auth prompt, populates the PIN, clicks the `Connect` button and responds with `true` or `false` depending on the success of the operations. Currently there is no way of validating pairing requests and it is expected that a client attempting to pair will receive a pairing status response from the SHIELD server.

![nvsap](https://i.snag.gy/Ekdf7P.jpg)
25 changes: 25 additions & 0 deletions nvsap.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27004.2009
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nvsap", "nvsap\nvsap.csproj", "{E5FFF455-3358-4AD3-A5C1-A2C8835EAA61}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{E5FFF455-3358-4AD3-A5C1-A2C8835EAA61}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E5FFF455-3358-4AD3-A5C1-A2C8835EAA61}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E5FFF455-3358-4AD3-A5C1-A2C8835EAA61}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E5FFF455-3358-4AD3-A5C1-A2C8835EAA61}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {60176C95-2568-4652-AC6D-D2F7E79C8A92}
EndGlobalSection
EndGlobal
4 changes: 4 additions & 0 deletions nvsap/FodyWeavers.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<Weavers>
<Costura IncludeDebugSymbols="false" />
</Weavers>
87 changes: 87 additions & 0 deletions nvsap/Program.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
using AutoIt;
using Nancy;
using Nancy.Hosting.Self;
using System;

namespace nvsap
{
public class SimpleModule : NancyModule
{
public SimpleModule()
{
Get["/auth/{code}"] = parameters =>
{
Program.Log($"Auth request received from {this.Request.UserHostAddress}");
return AuthenticateShield(parameters.code) ? "true" : "false";
};
}

private bool AuthenticateShield(string code)
{
if (Program.Busy)
return false;
try
{
Program.Busy = true;
string targetWindowClass = "[CLASS:#32770]";
string targetWindowText = "SHIELD is requesting to connect";
if (AutoItX.WinWait(targetWindowClass, targetWindowText, 1) == 0)
{
Program.Log("Warning: Auth window does not exist");
return false;
}
AutoItX.ControlSetText(targetWindowClass, "", "[CLASS:Edit; INSTANCE:1]", code);
AutoItX.ControlClick(targetWindowClass, "", "[CLASS:Button; INSTANCE:1]");
Program.Log("Auth code send");
return true;
}
catch (Exception ex)
{
Program.Log($"Authentication error: {ex.Message}");
return false;
}
finally
{
Program.Busy = false;
}
}
}

class Program
{
public static bool Busy = false;
private string url = "http://localhost";
private int port = 47980;
private NancyHost nancy;

public Program()
{
var configuration = new HostConfiguration()
{
UrlReservations = new UrlReservations() { CreateAutomatically = true },
RewriteLocalhost = true
};
var uri = new Uri($"{url}:{port}/");
nancy = new NancyHost(configuration, uri);
}

private void Start()
{
nancy.Start();
Log($"Listening on port {port}");
Console.ReadKey();
nancy.Stop();
}

static void Main(string[] args)
{
var p = new Program();
p.Start();
}

public static void Log(string message)
{
Console.WriteLine($"[{DateTime.Now}] {message}");
}
}
}
35 changes: 35 additions & 0 deletions nvsap/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("nvsap")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("nvsap")]
[assembly: AssemblyCopyright("Copyright © realies 2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]

// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("e5fff455-3358-4ad3-a5c1-a2c8835eaa61")]

// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0")]
[assembly: AssemblyFileVersion("1.0.0")]
79 changes: 79 additions & 0 deletions nvsap/nvsap.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{E5FFF455-3358-4AD3-A5C1-A2C8835EAA61}</ProjectGuid>
<OutputType>Exe</OutputType>
<RootNamespace>nvsap</RootNamespace>
<AssemblyName>nvsap</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="AutoItX3.Assembly, Version=3.0.0.0, Culture=neutral, PublicKeyToken=a646454c8d475470, processorArchitecture=MSIL">
<HintPath>..\packages\AutoItX.Dotnet.3.3.14.2\lib\AutoItX3.Assembly.dll</HintPath>
</Reference>
<Reference Include="Costura, Version=1.6.2.0, Culture=neutral, PublicKeyToken=9919ef960d84173d, processorArchitecture=MSIL">
<HintPath>..\packages\Costura.Fody.1.6.2\lib\portable-net+sl+win+wpa+wp\Costura.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Nancy, Version=1.4.1.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Nancy.1.4.1\lib\net40\Nancy.dll</HintPath>
</Reference>
<Reference Include="Nancy.Hosting.Self, Version=1.4.1.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Nancy.Hosting.Self.1.4.1\lib\net40\Nancy.Hosting.Self.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<None Include="FodyWeavers.xml" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\AutoItX.Dotnet.3.3.14.2\build\AutoItX.Dotnet.targets" Condition="Exists('..\packages\AutoItX.Dotnet.3.3.14.2\build\AutoItX.Dotnet.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\AutoItX.Dotnet.3.3.14.2\build\AutoItX.Dotnet.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\AutoItX.Dotnet.3.3.14.2\build\AutoItX.Dotnet.targets'))" />
<Error Condition="!Exists('..\packages\Fody.2.0.0\build\portable-net+sl+win+wpa+wp\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Fody.2.0.0\build\portable-net+sl+win+wpa+wp\Fody.targets'))" />
<Error Condition="!Exists('..\packages\Costura.Fody.1.6.2\build\portable-net+sl+win+wpa+wp\Costura.Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Costura.Fody.1.6.2\build\portable-net+sl+win+wpa+wp\Costura.Fody.targets'))" />
</Target>
<Import Project="..\packages\Fody.2.0.0\build\portable-net+sl+win+wpa+wp\Fody.targets" Condition="Exists('..\packages\Fody.2.0.0\build\portable-net+sl+win+wpa+wp\Fody.targets')" />
<Import Project="..\packages\Costura.Fody.1.6.2\build\portable-net+sl+win+wpa+wp\Costura.Fody.targets" Condition="Exists('..\packages\Costura.Fody.1.6.2\build\portable-net+sl+win+wpa+wp\Costura.Fody.targets')" />
</Project>
8 changes: 8 additions & 0 deletions nvsap/packages.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="AutoItX.Dotnet" version="3.3.14.2" targetFramework="net40" />
<package id="Costura.Fody" version="1.6.2" targetFramework="net40" developmentDependency="true" />
<package id="Fody" version="2.0.0" targetFramework="net40" developmentDependency="true" />
<package id="Nancy" version="1.4.1" targetFramework="net40" />
<package id="Nancy.Hosting.Self" version="1.4.1" targetFramework="net40" />
</packages>

0 comments on commit 2080f6f

Please sign in to comment.