Add OCDaemonHoster Version 1.
This commit is contained in:
parent
e0d8c0bf42
commit
739ae2e4e5
61
OCUploadDownloadServer/OCDaemonHoster/OCDaemonHoster.csproj
Normal file
61
OCUploadDownloadServer/OCDaemonHoster/OCDaemonHoster.csproj
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
|
||||||
|
<PropertyGroup>
|
||||||
|
<ProjectGuid>{08F6D48F-9EAB-4861-9D50-F9F1BC10C074}</ProjectGuid>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
|
<RootNamespace>OCDaemonHoster</RootNamespace>
|
||||||
|
<AssemblyName>OCDaemonHoster</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
<ApplicationIcon>..\Icon2.ico</ApplicationIcon>
|
||||||
|
<NoWin32Manifest>False</NoWin32Manifest>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Platform)' == 'AnyCPU' ">
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DebugSymbols>True</DebugSymbols>
|
||||||
|
<DebugType>Full</DebugType>
|
||||||
|
<Optimize>False</Optimize>
|
||||||
|
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DebugSymbols>False</DebugSymbols>
|
||||||
|
<DebugType>None</DebugType>
|
||||||
|
<Optimize>True</Optimize>
|
||||||
|
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Core">
|
||||||
|
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions">
|
||||||
|
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Net">
|
||||||
|
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
<Reference Include="System.Xml.Linq">
|
||||||
|
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||||
|
</Reference>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="OCNetworkClient.cs" />
|
||||||
|
<Compile Include="OCNetworkListener.cs" />
|
||||||
|
<Compile Include="Program.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="app.config" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
</Project>
|
179
OCUploadDownloadServer/OCDaemonHoster/OCNetworkClient.cs
Normal file
179
OCUploadDownloadServer/OCDaemonHoster/OCNetworkClient.cs
Normal file
@ -0,0 +1,179 @@
|
|||||||
|
/*
|
||||||
|
* Created by SharpDevelop.
|
||||||
|
* User: Alfred
|
||||||
|
* Date: 28/12/2019
|
||||||
|
* Time: 18:34
|
||||||
|
*
|
||||||
|
* To change this template use Tools | Options | Coding | Edit Standard Headers.
|
||||||
|
*/
|
||||||
|
using System;
|
||||||
|
using System.Net;
|
||||||
|
using System.Net.Sockets;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
|
namespace captainalm.network.oc
|
||||||
|
{
|
||||||
|
public class OCNetworkClient {
|
||||||
|
private Socket sock;
|
||||||
|
private IPEndPoint remoteAddress;
|
||||||
|
private IPEndPoint localAddress;
|
||||||
|
private Boolean connected;
|
||||||
|
|
||||||
|
internal OCNetworkClient(Socket socketIn) {
|
||||||
|
sock = socketIn;
|
||||||
|
if (sock != null) {
|
||||||
|
if (sock.Connected) {
|
||||||
|
remoteAddress = (IPEndPoint) sock.RemoteEndPoint;
|
||||||
|
localAddress = (IPEndPoint) sock.LocalEndPoint;
|
||||||
|
connected = true;
|
||||||
|
} else {
|
||||||
|
connected = false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
connected = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public IPEndPoint getRemoteAddress() {
|
||||||
|
return remoteAddress;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IPEndPoint getLocalAddress() {
|
||||||
|
return localAddress;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Socket getSocket() {
|
||||||
|
return sock;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean sendHandshake(String chIn) {
|
||||||
|
if (chIn == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (connected && chIn.Length == 1) {
|
||||||
|
try {
|
||||||
|
var bts = System.Text.Encoding.ASCII.GetBytes(chIn.Substring(0,1));
|
||||||
|
sock.Send(bts,bts.Length, SocketFlags.None);
|
||||||
|
return true;
|
||||||
|
} catch (SocketException e) {
|
||||||
|
connected = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String receiveProtocol() {
|
||||||
|
if (connected) {
|
||||||
|
try {
|
||||||
|
var bts = new Byte[1];
|
||||||
|
sock.Receive(bts,1,SocketFlags.None);
|
||||||
|
String prot = System.Text.Encoding.ASCII.GetString(bts);
|
||||||
|
return prot;
|
||||||
|
} catch (SocketException e) {
|
||||||
|
connected = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean receiveHandshake(String chIn) {
|
||||||
|
if (chIn == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (connected && chIn.Length == 1) {
|
||||||
|
try {
|
||||||
|
var bts = new Byte[1];
|
||||||
|
sock.Receive(bts,1,SocketFlags.None);
|
||||||
|
Boolean test = System.Text.Encoding.ASCII.GetString(bts).Equals(chIn.Substring(0,1));
|
||||||
|
return test;
|
||||||
|
} catch (SocketException e) {
|
||||||
|
connected = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean sendData(String data) {
|
||||||
|
if (data == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (connected && data.Length > 0) {
|
||||||
|
try {
|
||||||
|
var bts = System.Text.Encoding.ASCII.GetBytes(data);
|
||||||
|
sock.Send(bts,bts.Length, SocketFlags.None);
|
||||||
|
return true;
|
||||||
|
} catch (SocketException e) {
|
||||||
|
connected = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String receiveData() {
|
||||||
|
String toret = "";
|
||||||
|
if (connected) {
|
||||||
|
try {
|
||||||
|
int lout = 0;
|
||||||
|
while (sock.Available < 1 && lout < 50) {
|
||||||
|
try {
|
||||||
|
Thread.Sleep(100);
|
||||||
|
} catch (ThreadInterruptedException e) {
|
||||||
|
}
|
||||||
|
lout++;
|
||||||
|
}
|
||||||
|
int len = sock.Available;
|
||||||
|
byte[] bufferIn = new byte[len];
|
||||||
|
int res = sock.Receive(bufferIn,len,SocketFlags.None);
|
||||||
|
if (res == 0 && len != 0) {
|
||||||
|
connected = false;
|
||||||
|
} else {
|
||||||
|
connected = true;
|
||||||
|
}
|
||||||
|
toret = System.Text.Encoding.ASCII.GetString(bufferIn);
|
||||||
|
} catch (SocketException e) {
|
||||||
|
connected = false;
|
||||||
|
toret = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return toret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void invokeConnectionCheck() {
|
||||||
|
try {
|
||||||
|
byte[] bufferIn = new byte[1];
|
||||||
|
int res = sock.Receive(bufferIn,1,SocketFlags.None);
|
||||||
|
if (res == 0) {
|
||||||
|
connected = false;
|
||||||
|
} else {
|
||||||
|
connected = true;
|
||||||
|
}
|
||||||
|
} catch (SocketException e) {
|
||||||
|
connected = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean getIsConnected() {
|
||||||
|
return connected;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void shutdown() {
|
||||||
|
if (connected) {
|
||||||
|
try {
|
||||||
|
sock.Shutdown(SocketShutdown.Both);
|
||||||
|
} catch (SocketException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void close() {
|
||||||
|
if (connected) {
|
||||||
|
try {
|
||||||
|
sock.Close();
|
||||||
|
} catch (SocketException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
connected = false;
|
||||||
|
sock = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
146
OCUploadDownloadServer/OCDaemonHoster/OCNetworkListener.cs
Normal file
146
OCUploadDownloadServer/OCDaemonHoster/OCNetworkListener.cs
Normal file
@ -0,0 +1,146 @@
|
|||||||
|
/*
|
||||||
|
* Created by SharpDevelop.
|
||||||
|
* User: Alfred
|
||||||
|
* Date: 28/12/2019
|
||||||
|
* Time: 19:08
|
||||||
|
*
|
||||||
|
* To change this template use Tools | Options | Coding | Edit Standard Headers.
|
||||||
|
*/
|
||||||
|
using System;
|
||||||
|
using System.Net;
|
||||||
|
using System.Net.NetworkInformation;
|
||||||
|
using System.Net.Sockets;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
|
namespace captainalm.network.oc
|
||||||
|
{
|
||||||
|
public class OCNetworkListener {
|
||||||
|
private Socket sSock;
|
||||||
|
private Thread lThread;
|
||||||
|
private Boolean listening;
|
||||||
|
private OCNetworkClient acceptedClient;
|
||||||
|
private Boolean cWaiting;
|
||||||
|
private Boolean cExists;
|
||||||
|
private Object slockcl = new Object();
|
||||||
|
private IPEndPoint listeningAddress;
|
||||||
|
|
||||||
|
public OCNetworkListener(IPEndPoint addressIn) {
|
||||||
|
lThread = new Thread(new ThreadStart(this.run));
|
||||||
|
lThread.IsBackground = true;
|
||||||
|
listening = false;
|
||||||
|
listeningAddress = addressIn;
|
||||||
|
try {
|
||||||
|
if (Environment.OSVersion.Version.Major >= 6 && addressIn.Address.Equals(IPAddress.IPv6Any)) {
|
||||||
|
sSock = new Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp);
|
||||||
|
sSock.SetSocketOption(SocketOptionLevel.IPv6, SocketOptionName.IPv6Only, false);
|
||||||
|
} else {
|
||||||
|
sSock = new Socket(addressIn.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
|
||||||
|
}
|
||||||
|
sSock.ReceiveBufferSize = Int16.MaxValue;
|
||||||
|
sSock.SendBufferSize = Int16.MaxValue;
|
||||||
|
sSock.ReceiveTimeout = 5000;
|
||||||
|
sSock.SendTimeout = 5000;
|
||||||
|
} catch (SocketException e) {
|
||||||
|
sSock = null;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
if (sSock == null) {
|
||||||
|
throw new SocketException(0);
|
||||||
|
}
|
||||||
|
sSock.Bind(addressIn);
|
||||||
|
sSock.Listen(1);
|
||||||
|
listening = true;
|
||||||
|
} catch (SocketException e) {
|
||||||
|
}
|
||||||
|
if (listening) {
|
||||||
|
lThread.Start();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public OCNetworkClient getAcceptedClient() {
|
||||||
|
OCNetworkClient toret = null;
|
||||||
|
lock (slockcl) {
|
||||||
|
if (cWaiting && acceptedClient != null) {
|
||||||
|
cExists = true;
|
||||||
|
cWaiting = false;
|
||||||
|
toret = acceptedClient;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return toret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void returnAcceptedClient(OCNetworkClient toRet) {
|
||||||
|
lock (slockcl) {
|
||||||
|
if (cExists && toRet == acceptedClient) {
|
||||||
|
toRet.shutdown();
|
||||||
|
toRet.close();
|
||||||
|
toRet = null;
|
||||||
|
cExists = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public IPEndPoint getListeningAddress() {
|
||||||
|
return listeningAddress;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean getIsThereGottenClient() {
|
||||||
|
return cExists;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean getIsThereAcceptedClient() {
|
||||||
|
return cWaiting;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean getIsListening() {
|
||||||
|
return listening;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void close() {
|
||||||
|
if (acceptedClient != null && (cWaiting == true)) {
|
||||||
|
this.getAcceptedClient();
|
||||||
|
}
|
||||||
|
if (acceptedClient != null && (cExists == true)) {
|
||||||
|
this.returnAcceptedClient(acceptedClient);
|
||||||
|
}
|
||||||
|
if (listening) {
|
||||||
|
sSock.Close();
|
||||||
|
}
|
||||||
|
listening = false;
|
||||||
|
while (lThread.IsAlive) {
|
||||||
|
try {
|
||||||
|
Thread.Sleep(100);
|
||||||
|
} catch (ThreadInterruptedException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sSock = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void run() {
|
||||||
|
while (listening) {
|
||||||
|
while (cExists) {
|
||||||
|
try {
|
||||||
|
Thread.Sleep(100);
|
||||||
|
} catch (ThreadInterruptedException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
Socket sa = sSock.Accept();
|
||||||
|
sa.ReceiveBufferSize = Int16.MaxValue;
|
||||||
|
sa.SendBufferSize = Int16.MaxValue;
|
||||||
|
sa.ReceiveTimeout = 5000;
|
||||||
|
sa.SendTimeout = 5000;
|
||||||
|
acceptedClient = new OCNetworkClient(sa);
|
||||||
|
cWaiting = true;
|
||||||
|
while (cWaiting) {
|
||||||
|
try {
|
||||||
|
Thread.Sleep(100);
|
||||||
|
} catch (ThreadInterruptedException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (SocketException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
318
OCUploadDownloadServer/OCDaemonHoster/Program.cs
Normal file
318
OCUploadDownloadServer/OCDaemonHoster/Program.cs
Normal file
@ -0,0 +1,318 @@
|
|||||||
|
/*
|
||||||
|
* Created by SharpDevelop.
|
||||||
|
* User: Alfred
|
||||||
|
* Date: 28/12/2019
|
||||||
|
* Time: 17:53
|
||||||
|
*
|
||||||
|
* To change this template use Tools | Options | Coding | Edit Standard Headers.
|
||||||
|
*/
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Net;
|
||||||
|
using System.Net.NetworkInformation;
|
||||||
|
using System.Net.Sockets;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
|
using captainalm.network.oc;
|
||||||
|
|
||||||
|
namespace OCDaemonHoster
|
||||||
|
{
|
||||||
|
public class Program {
|
||||||
|
public static String ipAddress;
|
||||||
|
public static int port;
|
||||||
|
public static int version = 0;
|
||||||
|
|
||||||
|
public static Dictionary<String, String> settings = new Dictionary<String, String>();
|
||||||
|
public static String cache;
|
||||||
|
public static List<String> addrsv4;
|
||||||
|
public static List<String> addrsv6;
|
||||||
|
|
||||||
|
public static void Main(String[] args) {
|
||||||
|
writeLine("Open Computers Daemon Hoster (OCDH) : (C) Captain ALM 2019.");
|
||||||
|
writeLine("License: BSD 2-Clause.");
|
||||||
|
addrsv4 = getInterfaceAddresses(4);
|
||||||
|
addrsv6 = getInterfaceAddresses(6);
|
||||||
|
if (args != null) {
|
||||||
|
if (args.Length < 2) {
|
||||||
|
printUsage();
|
||||||
|
Environment.Exit(1);
|
||||||
|
} else {
|
||||||
|
decryptArgs(args);
|
||||||
|
if (settings.ContainsKey("mode")) {
|
||||||
|
if (settings["mode"].ToLower().Equals("h")) {
|
||||||
|
hoster();
|
||||||
|
} else if (settings["mode"].ToLower().Equals("a")) {
|
||||||
|
accessor();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
printUsage();
|
||||||
|
Environment.Exit(1);
|
||||||
|
}
|
||||||
|
Environment.Exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void hoster() {
|
||||||
|
writeLine("Hosting Mode!");
|
||||||
|
IPEndPoint address = new IPEndPoint(IPAddress.Parse(ipAddress),port);
|
||||||
|
writeLine("[INFO] : Address Setup!");
|
||||||
|
if (settings.ContainsKey("target")) {
|
||||||
|
writeLine("[INFO] : Target File : " + settings["target"]);
|
||||||
|
}
|
||||||
|
cache = "";
|
||||||
|
if (settings.ContainsKey("cache") && settings.ContainsKey("target")) {
|
||||||
|
try {
|
||||||
|
cache = loadFile(settings["target"]);
|
||||||
|
writeLine("[INFO] : File Cached!");
|
||||||
|
} catch (IOException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
OCNetworkListener server = new OCNetworkListener(address);
|
||||||
|
writeLine("[INFO] : Listener Started!");
|
||||||
|
writeLine("[INFO] : Listener 'Address:Port' : " + server.getListeningAddress().Address.ToString()
|
||||||
|
+ ":" + server.getListeningAddress().Port);
|
||||||
|
writeLine("[INFO] : Open Addresses 'Address:Port' :");
|
||||||
|
if (version == 4 && ipAddress.Equals(IPAddress.Any.ToString())) {
|
||||||
|
foreach (String c in addrsv4) {
|
||||||
|
writeLine(c + ":" + port);
|
||||||
|
}
|
||||||
|
} else if (version == 6 && ipAddress.Equals(IPAddress.IPv6Any.ToString())) {
|
||||||
|
foreach (String c in addrsv6) {
|
||||||
|
writeLine(c + ":" + port);
|
||||||
|
}
|
||||||
|
} else if (version == 0 && ipAddress.Equals(IPAddress.IPv6Any.ToString())) {
|
||||||
|
List<String> addrsT = new List<String>();
|
||||||
|
addrsT.AddRange(addrsv4);
|
||||||
|
addrsT.AddRange(addrsv6);
|
||||||
|
foreach (String c in addrsT) {
|
||||||
|
writeLine(c + ":" + port);
|
||||||
|
}
|
||||||
|
addrsT.Clear();
|
||||||
|
addrsT = null;
|
||||||
|
} else {
|
||||||
|
writeLine(ipAddress + ":" + port);
|
||||||
|
}
|
||||||
|
Boolean exec = true;
|
||||||
|
while (exec) {
|
||||||
|
if (server.getIsThereAcceptedClient()) {
|
||||||
|
OCNetworkClient client = server.getAcceptedClient();
|
||||||
|
writeLine("[INFO] : Client Accepted!");
|
||||||
|
writeLine("[INFO] : Client 'Address:Port' : " + client.getRemoteAddress().Address.ToString()
|
||||||
|
+ ":" + client.getRemoteAddress().Port);
|
||||||
|
handleProtocol(client);
|
||||||
|
server.returnAcceptedClient(client);
|
||||||
|
writeLine("[INFO] : Client Disposed!");
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
Thread.Sleep(100);
|
||||||
|
} catch (ThreadInterruptedException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
server.close();
|
||||||
|
server = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void accessor() {
|
||||||
|
throw new NotImplementedException("Method not Implemented.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void handleProtocol(OCNetworkClient clientIn) {
|
||||||
|
String prot = clientIn.receiveProtocol();
|
||||||
|
if (prot.Equals("1")) {
|
||||||
|
writeLine("[INFO] : Sending...");
|
||||||
|
String data = "";
|
||||||
|
if (settings.ContainsKey("target") && !settings.ContainsKey("cache")) {
|
||||||
|
writeLine("[INFO] : Sending : Loading Data...");
|
||||||
|
try {
|
||||||
|
data = loadFile(settings["target"]);
|
||||||
|
} catch (IOException e) {
|
||||||
|
data = "";
|
||||||
|
}
|
||||||
|
} else if (settings.ContainsKey("cache")) {
|
||||||
|
writeLine("[INFO] : Sending : Retrieving Data...");
|
||||||
|
data = cache;
|
||||||
|
}
|
||||||
|
writeLine("[INFO] : Sending : Sending Handshake...");
|
||||||
|
clientIn.sendHandshake("1");
|
||||||
|
writeLine("[INFO] : Sending : Waiting For Handshake...");
|
||||||
|
Boolean hand1Succ = clientIn.receiveHandshake("1");
|
||||||
|
if (hand1Succ) {
|
||||||
|
writeLine("[INFO] : Sending : Sending Data...");
|
||||||
|
clientIn.sendData(data);
|
||||||
|
writeLine("[INFO] : Sending : Waiting For Handshake...");
|
||||||
|
clientIn.receiveHandshake("1");
|
||||||
|
}
|
||||||
|
} else if (prot.Equals("2")) {
|
||||||
|
writeLine("[INFO] : Receiving...");
|
||||||
|
writeLine("[INFO] : Receiving : Sending Handshake...");
|
||||||
|
clientIn.sendHandshake("1");
|
||||||
|
writeLine("[INFO] : Receiving : Waiting For Data...");
|
||||||
|
String data = clientIn.receiveData();
|
||||||
|
writeLine("[INFO] : Receiving : Processing Data...");
|
||||||
|
if (data.Contains("\r") && !data.Contains("\n")) {
|
||||||
|
data = data.Replace("\r", "\r\n");
|
||||||
|
}
|
||||||
|
if (data.Contains("\n") && !data.Contains("\r")) {
|
||||||
|
data = data.Replace("\n", "\r\n");
|
||||||
|
}
|
||||||
|
if (settings.ContainsKey("cache")) {
|
||||||
|
writeLine("[INFO] : Receiving : Caching Data...");
|
||||||
|
cache = data;
|
||||||
|
}
|
||||||
|
if (settings.ContainsKey("target")) {
|
||||||
|
writeLine("[INFO] : Receiving : Saving Data...");
|
||||||
|
try {
|
||||||
|
saveFile(settings["target"], data);
|
||||||
|
} catch (IOException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
writeLine("[INFO] : Receiving : Sending Handshake...");
|
||||||
|
clientIn.sendHandshake("1");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String loadFile(String target) {
|
||||||
|
return System.IO.File.ReadAllText(target, System.Text.Encoding.ASCII);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void saveFile(String target, String contents) {
|
||||||
|
System.IO.File.WriteAllText(target,contents,System.Text.Encoding.ASCII);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void decryptArgs(String[] args) {
|
||||||
|
try {
|
||||||
|
port = Int32.Parse(args[1]);
|
||||||
|
} catch (FormatException e) {
|
||||||
|
port = 0;
|
||||||
|
}
|
||||||
|
for (int i = 2; i < args.Length; i++) {
|
||||||
|
String carg = args[i];
|
||||||
|
Boolean hasEquals = carg.Contains("=");
|
||||||
|
Boolean isSwitch = carg.StartsWith("-");
|
||||||
|
String cSwitch = "";
|
||||||
|
String cValue = "";
|
||||||
|
if (isSwitch && !hasEquals) {
|
||||||
|
cSwitch = carg.Substring(1).ToLower();
|
||||||
|
} else if (isSwitch && hasEquals) {
|
||||||
|
cSwitch = carg.Substring(1, carg.IndexOf("=")).ToLower();
|
||||||
|
cValue = carg.Substring(carg.IndexOf("=") + 1);
|
||||||
|
}
|
||||||
|
if (!settings.ContainsKey(cSwitch)) {
|
||||||
|
settings.Add(cSwitch, cValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
var ip = IPAddress.Parse(args[0]);
|
||||||
|
if (ip.AddressFamily == AddressFamily.InterNetworkV6 && ! args[0].Equals(IPAddress.IPv6Any.ToString())) {
|
||||||
|
version = 6;
|
||||||
|
} else if (ip.AddressFamily == AddressFamily.InterNetworkV6 && args[0].Equals(IPAddress.IPv6Any.ToString()) && Environment.OSVersion.Version.Major >= 6) {
|
||||||
|
version = 0;
|
||||||
|
} else if (ip.AddressFamily == AddressFamily.InterNetworkV6 && args[0].Equals(IPAddress.IPv6Any.ToString()) && Environment.OSVersion.Version.Major < 6) {
|
||||||
|
version = 6;
|
||||||
|
} else {
|
||||||
|
version = 4;
|
||||||
|
}
|
||||||
|
} catch (FormatException ex) {
|
||||||
|
if (Environment.OSVersion.Version.Major >= 6) {
|
||||||
|
version = 0;
|
||||||
|
} else {
|
||||||
|
version = 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
ipAddress = verifyInterface(args[0], version);
|
||||||
|
} catch (SocketException ex) {
|
||||||
|
ipAddress = IPAddress.IPv6Any.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<String> getInterfaceAddresses(int ver) {
|
||||||
|
List<String> toret = new List<String>();
|
||||||
|
var allNetworkInterfaces = NetworkInterface.GetAllNetworkInterfaces();
|
||||||
|
foreach (NetworkInterface netc in allNetworkInterfaces) {
|
||||||
|
if (netc.OperationalStatus == OperationalStatus.Up) {
|
||||||
|
var ipInfo = netc.GetIPProperties().UnicastAddresses;
|
||||||
|
foreach (UnicastIPAddressInformation cadd in ipInfo) {
|
||||||
|
String sadd = "";
|
||||||
|
if (cadd.Address.AddressFamily == AddressFamily.InterNetwork && (ver == 4 || ver == 0)) {
|
||||||
|
sadd = cadd.Address.ToString();
|
||||||
|
} else if (cadd.Address.AddressFamily == AddressFamily.InterNetworkV6 && (ver == 6 || ver == 0)) {
|
||||||
|
sadd = cadd.Address.ToString();
|
||||||
|
}
|
||||||
|
if (sadd != "") {
|
||||||
|
if (sadd.Contains("%")) {
|
||||||
|
sadd = sadd.Substring(0, sadd.IndexOf("%"));
|
||||||
|
}
|
||||||
|
toret.Add(sadd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return toret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String verifyInterface(String inF, int ver) {
|
||||||
|
Boolean isContained = false;
|
||||||
|
List<String> addrsT = new List<String>();
|
||||||
|
if (ver == 4 || ver == 0) {
|
||||||
|
addrsT.AddRange(addrsv4);
|
||||||
|
} else if (ver == 6 || ver == 0) {
|
||||||
|
addrsT.AddRange(addrsv6);
|
||||||
|
}
|
||||||
|
foreach (String c in addrsT) {
|
||||||
|
if (c.Equals(inF)) {
|
||||||
|
isContained = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (! isContained) {
|
||||||
|
if (inF.Equals(IPAddress.Any.ToString()) && ver == 4) {
|
||||||
|
return IPAddress.Any.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
addrsT.Clear();
|
||||||
|
addrsT = null;
|
||||||
|
if (isContained) {
|
||||||
|
return inF;
|
||||||
|
} else {
|
||||||
|
return IPAddress.IPv6Any.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void printUsage() {
|
||||||
|
writeLine("");
|
||||||
|
writeLine("Usage:");
|
||||||
|
writeLine(
|
||||||
|
"OCDH.exe <listening IP Address> <listening Port> [-mode=<MODE>] [-target=<target file path>] [-cache] [-enumeration] [-creation] [-deletion]");
|
||||||
|
writeLine("");
|
||||||
|
writeLine("-mode=<MODE> : allows to select a Hosting Mode.");
|
||||||
|
writeLine("-target=<target file path> : allows to select a file for hosting (File Host Mode Only).");
|
||||||
|
writeLine("-cache : caches the target file once (File Host Mode Only).");
|
||||||
|
writeLine("-enumeration : allows for file/directory enumeration (File Access Mode Only).");
|
||||||
|
writeLine("-creation : allows for file/directory creation (File Access Mode Only).");
|
||||||
|
writeLine("-deletion : allows for file/directory deletion (File Access Mode Only).");
|
||||||
|
writeLine("");
|
||||||
|
writeLine("MODE:");
|
||||||
|
writeLine("H : File Host Mode, Hosts a single file for access.");
|
||||||
|
writeLine("A : File Access Mode, Allows file system access.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void write(String stringIn) {
|
||||||
|
Console.Out.Write(stringIn);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void writeLine(String stringIn) {
|
||||||
|
Console.Out.WriteLine(stringIn);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void writeError(String stringIn) {
|
||||||
|
Console.Error.Write(stringIn);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void writeErrorLine(String stringIn) {
|
||||||
|
Console.Error.WriteLine(stringIn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
#region Using directives
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
// 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("OCDaemonHoster")]
|
||||||
|
[assembly: AssemblyDescription("Open Computers Daemon Hoster")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("Captain ALM")]
|
||||||
|
[assembly: AssemblyProduct("Open Computers Daemon Hoster")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright (C) Captain ALM 2019")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// This sets the default COM visibility of types in the assembly to invisible.
|
||||||
|
// If you need to expose a type to COM, use [ComVisible(true)] on that type.
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// The assembly version has following format :
|
||||||
|
//
|
||||||
|
// Major.Minor.Build.Revision
|
||||||
|
//
|
||||||
|
// You can specify all the values or you can use the default the Revision and
|
||||||
|
// Build Numbers by using the '*' as shown below:
|
||||||
|
[assembly: AssemblyVersion("1.0.*")]
|
6
OCUploadDownloadServer/OCDaemonHoster/app.config
Normal file
6
OCUploadDownloadServer/OCDaemonHoster/app.config
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<configuration>
|
||||||
|
<startup>
|
||||||
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
|
||||||
|
</startup>
|
||||||
|
</configuration>
|
Loading…
Reference in New Issue
Block a user