Compare commits
5 Commits
Produccion
...
develop
| Author | SHA1 | Date |
|---|---|---|
|
|
1ed021a50c | |
|
|
e7a053c1c8 | |
|
|
072777d466 | |
|
|
9d539eb9da | |
|
|
275fc75e9d |
|
|
@ -1,3 +1,7 @@
|
||||||
/.vs/*
|
/.vs/*
|
||||||
/SoloEnLan/bin/*
|
/SoloEnLan/bin/*
|
||||||
/SoloEnLan/obj/*
|
/SoloEnLan/obj/*
|
||||||
|
/packages/*
|
||||||
|
/MigrationBackup/*
|
||||||
|
/SoloEnLan/.vs/*
|
||||||
|
/SoloEnLanServer/log/*
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<configuration>
|
||||||
|
<startup>
|
||||||
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
|
||||||
|
</startup>
|
||||||
|
<appSettings>
|
||||||
|
<add key="MensajeAviso" value="Este ordenador es propiedad del Colegio La Inmaculada Concepción de San lorenzo de El Escorial. No debe salir de las instalaciones de dicho colegio. Por favor, devuélvalo a su lugar cuanto antes. El sistema se apagará mientras se encuentre fuera."/>
|
||||||
|
<!--
|
||||||
|
<add key="tiempoComprovacion" value="300"/>
|
||||||
|
<add key="tiempoNotificacion" value="120"/>
|
||||||
|
-->
|
||||||
|
<add key="tiempoComprovacionPrime" value="0"/>
|
||||||
|
<add key="tiempoComprovacion" value="1200"/>
|
||||||
|
<add key="tiempoNotificacion" value="30"/>
|
||||||
|
|
||||||
|
|
||||||
|
<add key="tiempoComprovacionNavegador" value="10"/>
|
||||||
|
<add key="NombreProcesosNavegador" value="chrome;"/>
|
||||||
|
<add key="CarpetasBorrarNavegacion" value="C:\Users\hercules\AppData\Local\Google\Chrome\User Data"/>
|
||||||
|
<add key="CarpetasCopiarNavegacion" value="C:\Program Files\Narvaling.monitor\User Data?C:\Users\hercules\AppData\Local\Google\Chrome\User Data"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<add key="url" value="http://10.0.100.5:8002"/>
|
||||||
|
<add key="urlExtern" value="http://sololan.narvaling.com"/>
|
||||||
|
|
||||||
|
<add key="notifica.exe" value="F:\desa\v2022\Notifica\Notifica\bin\Release\notifica.exe"/>
|
||||||
|
<add key="consola" value="1"/>
|
||||||
|
</appSettings>
|
||||||
|
</configuration>
|
||||||
|
|
@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio Version 17
|
# Visual Studio Version 17
|
||||||
VisualStudioVersion = 17.10.35013.160
|
VisualStudioVersion = 17.10.35013.160
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SoloEnLan", "SoloEnLan\SoloEnLan.csproj", "{E15ED562-973B-41AB-B45E-3F7944570CAA}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Narvaling.monitor", "SoloEnLan\Narvaling.monitor.csproj", "{E15ED562-973B-41AB-B45E-3F7944570CAA}"
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
|
@ -3,4 +3,29 @@
|
||||||
<startup>
|
<startup>
|
||||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
|
||||||
</startup>
|
</startup>
|
||||||
|
<appSettings>
|
||||||
|
<add key="MensajeAviso" value="Este ordenador es propiedad del Colegio La Inmaculada Concepción de San lorenzo de El Escorial. No debe salir de las instalaciones de dicho colegio. Por favor, devuélvalo a su lugar cuanto antes. El sistema se apagará mientras se encuentre fuera."/>
|
||||||
|
<!--
|
||||||
|
<add key="tiempoComprovacion" value="300"/>
|
||||||
|
<add key="tiempoNotificacion" value="120"/>
|
||||||
|
-->
|
||||||
|
<add key="tiempoComprovacionPrime" value="0"/>
|
||||||
|
<add key="tiempoComprovacion" value="1200"/>
|
||||||
|
<add key="tiempoNotificacion" value="30"/>
|
||||||
|
|
||||||
|
|
||||||
|
<add key="tiempoComprovacionNavegador" value="10"/>
|
||||||
|
<add key="NombreProcesosNavegador" value="edge;"/>
|
||||||
|
<add key="CarpetasBorrarNavegacion" value="C:\Temp\aa\User Data"/>
|
||||||
|
<add key="CarpetasCopiarNavegacion" value="C:\Temp\User Data?C:\Temp\aa\User Data"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<add key="url" value="http://10.0.100.5:8002"/>
|
||||||
|
<add key="urlExtern" value="http://sololan.narvaling.com"/>
|
||||||
|
|
||||||
|
<add key="notifica.exe" value="F:\desa\v2022\Notifica\Notifica\bin\Release\notifica.exe"/>
|
||||||
|
<add key="consola" value="1"/>
|
||||||
|
</appSettings>
|
||||||
</configuration>
|
</configuration>
|
||||||
|
|
@ -7,11 +7,13 @@
|
||||||
<ProjectGuid>{E15ED562-973B-41AB-B45E-3F7944570CAA}</ProjectGuid>
|
<ProjectGuid>{E15ED562-973B-41AB-B45E-3F7944570CAA}</ProjectGuid>
|
||||||
<OutputType>WinExe</OutputType>
|
<OutputType>WinExe</OutputType>
|
||||||
<RootNamespace>SoloEnLan</RootNamespace>
|
<RootNamespace>SoloEnLan</RootNamespace>
|
||||||
<AssemblyName>SoloEnLan</AssemblyName>
|
<AssemblyName>Narvaling.monitor</AssemblyName>
|
||||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
<Deterministic>true</Deterministic>
|
<Deterministic>true</Deterministic>
|
||||||
|
<NuGetPackageImportStamp>
|
||||||
|
</NuGetPackageImportStamp>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
|
@ -32,10 +34,15 @@
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<ApplicationIcon>solologo_ico.ico</ApplicationIcon>
|
||||||
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Configuration" />
|
<Reference Include="System.Configuration" />
|
||||||
|
<Reference Include="System.Configuration.Install" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Management" />
|
||||||
<Reference Include="System.Xml.Linq" />
|
<Reference Include="System.Xml.Linq" />
|
||||||
<Reference Include="System.Data.DataSetExtensions" />
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
<Reference Include="Microsoft.CSharp" />
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
|
@ -45,7 +52,14 @@
|
||||||
<Reference Include="System.Xml" />
|
<Reference Include="System.Xml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Compile Include="model\monitorNavegacion.cs" />
|
||||||
<Compile Include="model\monitor.cs" />
|
<Compile Include="model\monitor.cs" />
|
||||||
|
<Compile Include="ProjectInstaller.cs">
|
||||||
|
<SubType>Component</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="ProjectInstaller.Designer.cs">
|
||||||
|
<DependentUpon>ProjectInstaller.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="Service1.cs">
|
<Compile Include="Service1.cs">
|
||||||
<SubType>Component</SubType>
|
<SubType>Component</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
|
@ -55,11 +69,30 @@
|
||||||
<Compile Include="Program.cs" />
|
<Compile Include="Program.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="service\conexionService.cs" />
|
<Compile Include="service\conexionService.cs" />
|
||||||
|
<Compile Include="service\IdService.cs" />
|
||||||
|
<Compile Include="service\logService.cs" />
|
||||||
<Compile Include="service\NotificacionService.cs" />
|
<Compile Include="service\NotificacionService.cs" />
|
||||||
<Compile Include="service\shutdownService.cs" />
|
<Compile Include="service\shutdownService.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="App.config" />
|
<None Include="App.config" />
|
||||||
|
<None Include="script\install.bat">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Include="script\unista.bat">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="solologo_ico.ico" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<EmbeddedResource Include="ProjectInstaller.resx">
|
||||||
|
<DependentUpon>ProjectInstaller.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Service1.resx">
|
||||||
|
<DependentUpon>Service1.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
</Project>
|
</Project>
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<ProjectView>ShowAllFiles</ProjectView>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Project>
|
||||||
|
|
@ -1,8 +1,11 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Configuration;
|
||||||
|
using System.Diagnostics;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.ServiceProcess;
|
using System.ServiceProcess;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace SoloEnLan
|
namespace SoloEnLan
|
||||||
|
|
@ -15,11 +18,24 @@ namespace SoloEnLan
|
||||||
static void Main()
|
static void Main()
|
||||||
{
|
{
|
||||||
ServiceBase[] ServicesToRun;
|
ServiceBase[] ServicesToRun;
|
||||||
|
|
||||||
|
if (int.Parse(ConfigurationManager.AppSettings["consola"]) == 1)
|
||||||
|
{
|
||||||
|
var s = new SoloEnLan();
|
||||||
|
s.inicia();
|
||||||
|
while(true)
|
||||||
|
{
|
||||||
|
Thread.Sleep(100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
ServicesToRun = new ServiceBase[]
|
ServicesToRun = new ServiceBase[]
|
||||||
{
|
{
|
||||||
new Service1()
|
new SoloEnLan()
|
||||||
};
|
};
|
||||||
ServiceBase.Run(ServicesToRun);
|
ServiceBase.Run(ServicesToRun);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
namespace SoloEnLan
|
||||||
|
{
|
||||||
|
partial class ProjectInstaller
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Variable del diseñador necesaria.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Limpiar los recursos que se estén usando.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true si los recursos administrados se deben desechar; false en caso contrario.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Código generado por el Diseñador de componentes
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Método necesario para admitir el Diseñador. No se puede modificar
|
||||||
|
/// el contenido de este método con el editor de código.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
this.serviceProcessInstaller1 = new System.ServiceProcess.ServiceProcessInstaller();
|
||||||
|
this.serviceInstaller1 = new System.ServiceProcess.ServiceInstaller();
|
||||||
|
//
|
||||||
|
// serviceProcessInstaller1
|
||||||
|
//
|
||||||
|
this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;
|
||||||
|
this.serviceProcessInstaller1.Password = null;
|
||||||
|
this.serviceProcessInstaller1.Username = null;
|
||||||
|
//
|
||||||
|
// serviceInstaller1
|
||||||
|
//
|
||||||
|
this.serviceInstaller1.Description = "Monitor de procesos narvaling";
|
||||||
|
this.serviceInstaller1.DisplayName = "Narvaling.monitor";
|
||||||
|
this.serviceInstaller1.ServiceName = "Narvaling.monitor";
|
||||||
|
this.serviceInstaller1.StartType = System.ServiceProcess.ServiceStartMode.Automatic;
|
||||||
|
//
|
||||||
|
// ProjectInstaller
|
||||||
|
//
|
||||||
|
this.Installers.AddRange(new System.Configuration.Install.Installer[] {
|
||||||
|
this.serviceProcessInstaller1,
|
||||||
|
this.serviceInstaller1});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.ServiceProcess.ServiceProcessInstaller serviceProcessInstaller1;
|
||||||
|
private System.ServiceProcess.ServiceInstaller serviceInstaller1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Configuration.Install;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SoloEnLan
|
||||||
|
{
|
||||||
|
[RunInstaller(true)]
|
||||||
|
public partial class ProjectInstaller : System.Configuration.Install.Installer
|
||||||
|
{
|
||||||
|
public ProjectInstaller()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,129 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<metadata name="serviceProcessInstaller1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>17, 17</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="serviceInstaller1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>194, 17</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>False</value>
|
||||||
|
</metadata>
|
||||||
|
</root>
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
namespace SoloEnLan
|
namespace SoloEnLan
|
||||||
{
|
{
|
||||||
partial class Service1
|
partial class SoloEnLan
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Variable del diseñador necesaria.
|
/// Variable del diseñador necesaria.
|
||||||
|
|
@ -28,10 +28,18 @@
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
components = new System.ComponentModel.Container();
|
this.eventLog1 = new System.Diagnostics.EventLog();
|
||||||
this.ServiceName = "Service1";
|
((System.ComponentModel.ISupportInitialize)(this.eventLog1)).BeginInit();
|
||||||
|
//
|
||||||
|
// SoloEnLan
|
||||||
|
//
|
||||||
|
this.ServiceName = "SoloEnLan";
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.eventLog1)).EndInit();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
private System.Diagnostics.EventLog eventLog1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
using SoloEnLan.model;
|
using Narvaling.monitor.model;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
|
|
@ -8,27 +8,47 @@ using System.Linq;
|
||||||
using System.ServiceProcess;
|
using System.ServiceProcess;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using Narvaling.monitor.service;
|
||||||
namespace SoloEnLan
|
namespace SoloEnLan
|
||||||
{
|
{
|
||||||
public partial class Service1 : ServiceBase
|
public partial class SoloEnLan : ServiceBase
|
||||||
{
|
{
|
||||||
monitor m;
|
monitor m;
|
||||||
public Service1()
|
monitorNavegacion mn;
|
||||||
|
|
||||||
|
private string nombreService = "Narvaling.monitor";
|
||||||
|
public SoloEnLan()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
if(!EventLog.SourceExists(nombreService))
|
||||||
m=new monitor();
|
{
|
||||||
|
EventLog.CreateEventSource(nombreService,"Application");
|
||||||
}
|
}
|
||||||
|
logService.EventLog = eventLog1;
|
||||||
protected override void OnStart(string[] args)
|
eventLog1.Source = nombreService;
|
||||||
|
eventLog1.Log = "Application";
|
||||||
|
m =new monitor();
|
||||||
|
mn= new monitorNavegacion();
|
||||||
|
}
|
||||||
|
public void inicia()
|
||||||
{
|
{
|
||||||
m.start();
|
m.start();
|
||||||
|
mn.start();
|
||||||
|
}
|
||||||
|
protected override void OnStart(string[] args)
|
||||||
|
{
|
||||||
|
logService.log("Se inicia " + nombreService);
|
||||||
|
//eventLog1.WriteEntry("Se inicia " + nombreService);
|
||||||
|
inicia();
|
||||||
|
logService.log("Fin Inicio " + nombreService);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnStop()
|
protected override void OnStop()
|
||||||
{
|
{
|
||||||
m.fin();
|
m.fin();
|
||||||
|
mn.fin();
|
||||||
|
logService.log("Finaliza" + nombreService);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,126 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<metadata name="eventLog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>17, 17</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>False</value>
|
||||||
|
</metadata>
|
||||||
|
</root>
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
using SoloEnLan.service;
|
using Narvaling.monitor.service;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Configuration;
|
using System.Configuration;
|
||||||
|
|
@ -7,7 +7,7 @@ using System.Text;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace SoloEnLan.model
|
namespace Narvaling.monitor.model
|
||||||
{
|
{
|
||||||
|
|
||||||
public class monitor
|
public class monitor
|
||||||
|
|
@ -18,10 +18,15 @@ namespace SoloEnLan.model
|
||||||
private int tiempoMensaje;
|
private int tiempoMensaje;
|
||||||
public monitor()
|
public monitor()
|
||||||
{
|
{
|
||||||
t = null;
|
tiempoComprobacion = int.Parse(ConfigurationManager.AppSettings["tiempoComprovacionPrime"]);
|
||||||
pirate = false;
|
|
||||||
tiempoComprobacion = int.Parse(ConfigurationManager.AppSettings["tiempoComprovacion"]);
|
|
||||||
tiempoMensaje = int.Parse(ConfigurationManager.AppSettings["tiempoNotificacion"]);
|
tiempoMensaje = int.Parse(ConfigurationManager.AppSettings["tiempoNotificacion"]);
|
||||||
|
if(tiempoComprobacion>0)
|
||||||
|
t = new Thread(runMonitor);
|
||||||
|
else
|
||||||
|
t = null;
|
||||||
|
|
||||||
|
pirate = false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void runMonitor(object m)
|
private static void runMonitor(object m)
|
||||||
|
|
@ -29,32 +34,107 @@ namespace SoloEnLan.model
|
||||||
|
|
||||||
((monitor)m).run();
|
((monitor)m).run();
|
||||||
}
|
}
|
||||||
|
private void espera(int nseg)
|
||||||
|
{
|
||||||
|
DateTime currentDate = DateTime.Now;
|
||||||
|
//espera
|
||||||
|
while (!pirate)
|
||||||
|
{
|
||||||
|
Thread.Sleep(1000);
|
||||||
|
long elapsedTicks = DateTime.Now.Ticks- currentDate.Ticks;
|
||||||
|
TimeSpan elapsedSpan = new TimeSpan(elapsedTicks);
|
||||||
|
if (elapsedSpan.TotalSeconds > nseg)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
private void run()
|
private void run()
|
||||||
{
|
{
|
||||||
while(!pirate)
|
string aa = IdService.GetMEI();
|
||||||
|
aa = aa;
|
||||||
|
while (!pirate)
|
||||||
{
|
{
|
||||||
|
DateTime currentDate = DateTime.Now;
|
||||||
//espera
|
//espera
|
||||||
Thread.Sleep(tiempoComprobacion);
|
espera(tiempoComprobacion);
|
||||||
|
if (pirate)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
//Thread.Sleep(tiempoComprobacion*1000);
|
||||||
//revisa lan
|
//revisa lan
|
||||||
if (conexionService.Getestas())
|
logService.log("Se comprueba Autorización");
|
||||||
|
var res = ConectaSRV();
|
||||||
|
|
||||||
|
if(res==1)
|
||||||
{
|
{
|
||||||
|
logService.log("Pc autorizado");
|
||||||
|
}
|
||||||
|
else if(res<0)
|
||||||
|
{
|
||||||
|
logService.log("Pc sin conexión");
|
||||||
|
//se intentara mas adelante
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
logService.log("Pc sin autorizacion");
|
||||||
|
if (pirate)
|
||||||
|
continue;
|
||||||
//manda mensaje
|
//manda mensaje
|
||||||
NotificacionService.Notifica();
|
NotificacionService.Notifica();
|
||||||
//espera despues de mensaje
|
//espera despues de mensaje
|
||||||
Thread.Sleep(tiempoMensaje);
|
//Thread.Sleep(tiempoMensaje*1000);
|
||||||
|
espera(tiempoMensaje);
|
||||||
|
if (pirate)
|
||||||
|
continue;
|
||||||
//apaga
|
//apaga
|
||||||
|
logService.log("Se apaga maquina");
|
||||||
shutdownService.apagaPc();
|
shutdownService.apagaPc();
|
||||||
}
|
}
|
||||||
Thread.Sleep(60);
|
if(res<0)
|
||||||
|
int.Parse(ConfigurationManager.AppSettings["tiempoComprovacionPrime"]);
|
||||||
|
else
|
||||||
|
tiempoComprobacion = int.Parse(ConfigurationManager.AppSettings["tiempoComprovacion"]);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int ConectaSRV()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < 3; i++)
|
||||||
|
{
|
||||||
|
if (pirate)
|
||||||
|
return -1;
|
||||||
|
//intenta a srv lan
|
||||||
|
var res= conexionService.ConectLanSRV();
|
||||||
|
if( res<0)
|
||||||
|
espera(5);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < 3; i++)
|
||||||
|
{
|
||||||
|
if (pirate)
|
||||||
|
return -1;
|
||||||
|
//intenta a srv lan
|
||||||
|
var res = conexionService.ConectExternSRV();
|
||||||
|
if (res < 0)
|
||||||
|
espera(5);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void start()
|
public void start()
|
||||||
{
|
{
|
||||||
|
|
||||||
if (!t.IsAlive)
|
if (t!=null &&!t.IsAlive)
|
||||||
{
|
{
|
||||||
pirate = false;
|
pirate = false;
|
||||||
t.Start(this);
|
t.Start(this);
|
||||||
|
|
@ -64,6 +144,7 @@ namespace SoloEnLan.model
|
||||||
public void fin()
|
public void fin()
|
||||||
{
|
{
|
||||||
pirate = true;
|
pirate = true;
|
||||||
|
if(t != null)
|
||||||
t.Join();
|
t.Join();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,185 @@
|
||||||
|
using Narvaling.monitor.service;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Configuration;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Narvaling.monitor.model
|
||||||
|
{
|
||||||
|
|
||||||
|
public class monitorNavegacion
|
||||||
|
|
||||||
|
{
|
||||||
|
private Thread t;
|
||||||
|
private bool pirate;
|
||||||
|
private int tiempoComprobacion;
|
||||||
|
private bool reiniciaNavegador;
|
||||||
|
public monitorNavegacion()
|
||||||
|
{
|
||||||
|
tiempoComprobacion = int.Parse(ConfigurationManager.AppSettings["tiempoComprovacionNavegador"]);
|
||||||
|
reiniciaNavegador = true;
|
||||||
|
if(tiempoComprobacion>0)
|
||||||
|
t = new Thread(runMonitorNavegador);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
t = null;
|
||||||
|
}
|
||||||
|
pirate = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void runMonitorNavegador(object m)
|
||||||
|
{
|
||||||
|
|
||||||
|
((monitorNavegacion)m).run();
|
||||||
|
}
|
||||||
|
private void espera(int nseg)
|
||||||
|
{
|
||||||
|
DateTime currentDate = DateTime.Now;
|
||||||
|
//espera
|
||||||
|
while (!pirate)
|
||||||
|
{
|
||||||
|
Thread.Sleep(1000);
|
||||||
|
long elapsedTicks = DateTime.Now.Ticks- currentDate.Ticks;
|
||||||
|
TimeSpan elapsedSpan = new TimeSpan(elapsedTicks);
|
||||||
|
if (elapsedSpan.TotalSeconds > nseg)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void run()
|
||||||
|
{
|
||||||
|
logService.log("Se inicia monitor de navegador");
|
||||||
|
while (!pirate)
|
||||||
|
{
|
||||||
|
DateTime currentDate = DateTime.Now;
|
||||||
|
//espera
|
||||||
|
espera(tiempoComprobacion);
|
||||||
|
if (pirate)
|
||||||
|
continue;
|
||||||
|
CompruebaNavegador();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CompruebaNavegador()
|
||||||
|
{
|
||||||
|
if(IsNavRun())
|
||||||
|
{
|
||||||
|
reiniciaNavegador = true;
|
||||||
|
}
|
||||||
|
else if(reiniciaNavegador)
|
||||||
|
{
|
||||||
|
logService.log("Se ReiniciaNavegador");
|
||||||
|
reiniciaNavegador = false;
|
||||||
|
reiniciaNav();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void reiniciaNav()
|
||||||
|
{
|
||||||
|
borraDatosNavegacion();
|
||||||
|
copiaPaths();
|
||||||
|
}
|
||||||
|
private bool IsNavRun()
|
||||||
|
{
|
||||||
|
var st = ConfigurationManager.AppSettings["NombreProcesosNavegador"];
|
||||||
|
if (String.IsNullOrWhiteSpace(st))
|
||||||
|
return false;
|
||||||
|
var procesos=st.Split(';');
|
||||||
|
var res = false;
|
||||||
|
foreach(var p in procesos)
|
||||||
|
{
|
||||||
|
res = res || IsProceso(p);
|
||||||
|
if (res)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
private bool IsProceso(string nombreProceso)
|
||||||
|
{
|
||||||
|
Process[] procesos = Process.GetProcessesByName(nombreProceso);
|
||||||
|
|
||||||
|
return procesos.Length > 0;
|
||||||
|
}
|
||||||
|
private void borraDatosNavegacion()
|
||||||
|
{
|
||||||
|
var st = ConfigurationManager.AppSettings["CarpetasBorrarNavegacion"];
|
||||||
|
if (String.IsNullOrWhiteSpace(st))
|
||||||
|
return ;
|
||||||
|
var carpetas = st.Split(';');
|
||||||
|
foreach (var c in carpetas)
|
||||||
|
borraPath(c);
|
||||||
|
}
|
||||||
|
private void borraPath(string path)
|
||||||
|
{
|
||||||
|
if(string.IsNullOrWhiteSpace(path))
|
||||||
|
return ;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (Directory.Exists(path))
|
||||||
|
Directory.Delete(path, recursive: true);
|
||||||
|
if (File.Exists(path))
|
||||||
|
File.Delete(path);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void copiaPaths()
|
||||||
|
{
|
||||||
|
var st = ConfigurationManager.AppSettings["CarpetasCopiarNavegacion"];
|
||||||
|
if (String.IsNullOrWhiteSpace(st))
|
||||||
|
return;
|
||||||
|
var carpetas = st.Split(';');
|
||||||
|
foreach (var c in carpetas)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(c))
|
||||||
|
continue;
|
||||||
|
var dat=c.Split('?');
|
||||||
|
if (dat.Length == 2)
|
||||||
|
copiaDir(dat[0], dat[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void copiaDir(string origen, string destino)
|
||||||
|
{
|
||||||
|
Directory.CreateDirectory(destino);
|
||||||
|
|
||||||
|
// Copiar archivos
|
||||||
|
foreach (string archivo in Directory.GetFiles(origen))
|
||||||
|
{
|
||||||
|
string nombreArchivo = Path.GetFileName(archivo);
|
||||||
|
string destinoArchivo = Path.Combine(destino, nombreArchivo);
|
||||||
|
File.Copy(archivo, destinoArchivo, overwrite: true); // overwrite opcional
|
||||||
|
}
|
||||||
|
|
||||||
|
// Copiar subdirectorios recursivamente
|
||||||
|
foreach (string subdir in Directory.GetDirectories(origen))
|
||||||
|
{
|
||||||
|
string nombreSubdir = Path.GetFileName(subdir);
|
||||||
|
string destinoSubdir = Path.Combine(destino, nombreSubdir);
|
||||||
|
copiaDir(subdir, destinoSubdir);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void start()
|
||||||
|
{
|
||||||
|
|
||||||
|
if (t!=null && !t.IsAlive)
|
||||||
|
{
|
||||||
|
pirate = false;
|
||||||
|
t.Start(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public void fin()
|
||||||
|
{
|
||||||
|
pirate = true;
|
||||||
|
if(t != null)
|
||||||
|
t.Join();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
mkdir "C:\Program Files\Narvaling.monitor"
|
||||||
|
xcopy "%~dp0..\*" "C:\Program Files\Narvaling.monitor"
|
||||||
|
|
||||||
|
cd c:\Windows\Microsoft.NET\Framework64\v4.0.30319
|
||||||
|
installutil.exe "C:\Program Files\Narvaling.monitor\Narvaling.monitor.exe"
|
||||||
|
pause
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
cd c:\Windows\Microsoft.NET\Framework64\v4.0.30319
|
||||||
|
installutil /uninstall "C:\Program Files\Narvaling.monitor\Narvaling.monitor.exe"
|
||||||
|
pause
|
||||||
|
|
@ -0,0 +1,102 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Management;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Narvaling.monitor.service
|
||||||
|
{
|
||||||
|
internal class IdService
|
||||||
|
{
|
||||||
|
private static string id=null;
|
||||||
|
private static string ObtenerCPUId()
|
||||||
|
{
|
||||||
|
string cpuInfo = String.Empty;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
|
||||||
|
System.Management.ManagementClass mgmt = new System.Management.ManagementClass("Win32_Processor");
|
||||||
|
System.Management.ManagementObjectCollection objCol = mgmt.GetInstances();
|
||||||
|
foreach (System.Management.ManagementObject obj in objCol)
|
||||||
|
{
|
||||||
|
if (cpuInfo == String.Empty)
|
||||||
|
{
|
||||||
|
cpuInfo = obj.Properties["ProcessorId"].Value.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (cpuInfo == String.Empty)
|
||||||
|
cpuInfo = "CPUID";
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception exp)
|
||||||
|
{
|
||||||
|
cpuInfo = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
return cpuInfo.Trim();
|
||||||
|
|
||||||
|
}
|
||||||
|
private static string ObtenerMotherBoardID()
|
||||||
|
{
|
||||||
|
string serial = "MBID";
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard");
|
||||||
|
ManagementObjectCollection moc = mos.Get();
|
||||||
|
|
||||||
|
foreach (ManagementObject mo in moc)
|
||||||
|
{
|
||||||
|
serial = (string)mo["SerialNumber"];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception exp)
|
||||||
|
{
|
||||||
|
|
||||||
|
serial = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
return serial.Trim();
|
||||||
|
}
|
||||||
|
private static string MEI_CODE(int longitud)
|
||||||
|
{
|
||||||
|
string st = ObtenerCPUId() + ObtenerMotherBoardID();
|
||||||
|
var resul = "";
|
||||||
|
|
||||||
|
char[] code = new char[longitud];
|
||||||
|
|
||||||
|
int minus = 'z'-'a'+1;
|
||||||
|
int num = '9' - '0'+1;
|
||||||
|
int mayus = 'Z' - 'A'+1;
|
||||||
|
int maxi = minus + num + mayus;
|
||||||
|
int pos = 0;
|
||||||
|
foreach (char c in st)
|
||||||
|
{
|
||||||
|
code[pos] = (char)(code[pos] ^ c);
|
||||||
|
pos=(pos+1) %longitud;
|
||||||
|
}
|
||||||
|
|
||||||
|
int e;
|
||||||
|
foreach (char c in code)
|
||||||
|
{
|
||||||
|
e = c % maxi;
|
||||||
|
if (e < minus)
|
||||||
|
resul = resul + (char)('a' + (e));
|
||||||
|
else if (e < minus + mayus)
|
||||||
|
resul = resul + (char)('A' + (e - minus));
|
||||||
|
else
|
||||||
|
resul = resul + (char)('0' + (e - minus - mayus));
|
||||||
|
}
|
||||||
|
|
||||||
|
return resul;
|
||||||
|
|
||||||
|
}
|
||||||
|
public static string GetMEI()
|
||||||
|
{
|
||||||
|
if (id == null)
|
||||||
|
id = MEI_CODE(16);
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,26 +1,30 @@
|
||||||
//using Microsoft.Toolkit.Uwp.Notifications;
|
using System;
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Configuration;
|
using System.Configuration;
|
||||||
|
using System.Diagnostics;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace SoloEnLan.service
|
namespace Narvaling.monitor.service
|
||||||
{
|
{
|
||||||
internal class NotificacionService
|
internal class NotificacionService
|
||||||
{
|
{
|
||||||
public static void Notifica()
|
public static void Notifica()
|
||||||
{
|
{
|
||||||
/*string mens = ConfigurationManager.AppSettings["MensajeAviso"];
|
string mens = ConfigurationManager.AppSettings["MensajeAviso"];
|
||||||
|
string exe = ConfigurationManager.AppSettings["notifica.exe"];
|
||||||
|
if(exe!="")
|
||||||
|
Process.Start(exe, " \"" + mens + "\"");
|
||||||
|
/*
|
||||||
new ToastContentBuilder()
|
new ToastContentBuilder()
|
||||||
.AddArgument("action", "viewConversation")
|
.AddArgument("action", "viewConversation")
|
||||||
.AddArgument("conversationId", 9813)
|
.AddArgument("conversationId", 9813)
|
||||||
.AddText("Aviso")
|
.AddText("Aviso")
|
||||||
.AddText(mens)
|
.AddText(mens)
|
||||||
.Show(); // Not seeing the Show() method? Make sure you have version 7.0, and if you're using .NET 6 (or later), then your TFM must be net6.0-windows10.0.17763.0 or greater
|
.Show(); // Not seeing the Show() method? Make sure you have version 7.0, and if you're using .NET 6 (or later), then your TFM must be net6.0-windows10.0.17763.0 or greater
|
||||||
}
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,83 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Configuration;
|
||||||
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Net;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Net.Http.Headers;
|
||||||
|
using System.Security.Policy;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace SoloEnLan.service
|
namespace Narvaling.monitor.service
|
||||||
{
|
{
|
||||||
internal class conexionService
|
internal class conexionService
|
||||||
{
|
{
|
||||||
|
private static int GetPermisoSRV(string sURL)
|
||||||
public static bool Getestas()
|
|
||||||
{
|
{
|
||||||
return true;
|
var resf = -1;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
HttpClient client = new HttpClient();
|
||||||
|
int.Parse(ConfigurationManager.AppSettings["tiempoComprovacion"]);
|
||||||
|
var nombre = System.Environment.MachineName;
|
||||||
|
client.BaseAddress = new Uri(sURL);
|
||||||
|
client.DefaultRequestHeaders.Accept.Clear();
|
||||||
|
var res = client.GetAsync(
|
||||||
|
"?nombre="+ nombre + "&mei=" + IdService.GetMEI()).Result;
|
||||||
|
|
||||||
|
if (res.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
if (res.StatusCode == HttpStatusCode.OK)
|
||||||
|
{
|
||||||
|
var jsonResponse = res.Content.ReadAsStringAsync().Result;
|
||||||
|
if (jsonResponse != null && jsonResponse.Contains("OK"))
|
||||||
|
resf=1;
|
||||||
|
else
|
||||||
|
resf= 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
client.Dispose();
|
||||||
|
res.Dispose();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
var ex = e.ToString();
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return resf;
|
||||||
|
}
|
||||||
|
public static int ConectLanSRV()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
|
||||||
|
var sURL = ConfigurationManager.AppSettings["url"];
|
||||||
|
return GetPermisoSRV(sURL);
|
||||||
|
}
|
||||||
|
catch(Exception e)
|
||||||
|
{
|
||||||
|
var ex = e.ToString();
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int ConectExternSRV()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var sURL = ConfigurationManager.AppSettings["urlExtern"];
|
||||||
|
return GetPermisoSRV(sURL);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
var ex = e.ToString();
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Narvaling.monitor.service
|
||||||
|
{
|
||||||
|
internal class logService
|
||||||
|
{
|
||||||
|
public static EventLog EventLog=null;
|
||||||
|
|
||||||
|
public static void log(string msg)
|
||||||
|
{
|
||||||
|
;if(EventLog!=null)
|
||||||
|
{
|
||||||
|
EventLog.WriteEntry(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,16 +1,17 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace SoloEnLan.service
|
namespace Narvaling.monitor.service
|
||||||
{
|
{
|
||||||
internal class shutdownService
|
internal class shutdownService
|
||||||
{
|
{
|
||||||
public static void apagaPc()
|
public static void apagaPc()
|
||||||
{
|
{
|
||||||
|
Process.Start("shutdown", "/s /f /t 0");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 114 KiB |
|
|
@ -0,0 +1,42 @@
|
||||||
|
|
||||||
|
<?php
|
||||||
|
require_once 'config.php';
|
||||||
|
require_once 'helper.php';
|
||||||
|
if(isset($_GET))
|
||||||
|
{
|
||||||
|
$res=$res_default;
|
||||||
|
$sel=0;
|
||||||
|
$nombre=isset($_GET['nombre']) ? trim($_GET['nombre']): '';
|
||||||
|
$mei=isset($_GET['mei']) ? trim($_GET['mei']): '';
|
||||||
|
//isset($_GET['nombre']) ? trim($_GET['nombre']): null;
|
||||||
|
|
||||||
|
foreach ($denegados as $pc)
|
||||||
|
{
|
||||||
|
if($pc==$mei)
|
||||||
|
{ $res='NO';
|
||||||
|
$sel=1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if($sel == 0)
|
||||||
|
{
|
||||||
|
foreach ($permitidos as $pc)
|
||||||
|
{
|
||||||
|
if($pc==$mei)
|
||||||
|
{ $res='OK';
|
||||||
|
$sel=1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
$datos=date('Y-m-d H:i:s').';'.getUserIP().';'.$nombre.';'.$mei.';'.$res. PHP_EOL;
|
||||||
|
|
||||||
|
$logfile = date('Y-m-d') . '.csv';
|
||||||
|
$file1 = fopen("log/" . $logfile, "a");
|
||||||
|
fwrite($file1, $datos);
|
||||||
|
fclose($file1);
|
||||||
|
echo $res;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
<?php
|
||||||
|
$res_default="NO";
|
||||||
|
//$res_default="NO"
|
||||||
|
#$denegados= array("batman", "spiderman", "spirit");
|
||||||
|
$denegados= array();
|
||||||
|
#$permitidos= array("pepe", "manuel");
|
||||||
|
$permitidos= array();
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
<?php
|
||||||
|
function getUserIP()
|
||||||
|
{
|
||||||
|
// Get real visitor IP behind CloudFlare network
|
||||||
|
if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
|
||||||
|
$_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
|
||||||
|
$_SERVER['HTTP_CLIENT_IP'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
|
||||||
|
}
|
||||||
|
$client = @$_SERVER['HTTP_CLIENT_IP'];
|
||||||
|
$forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
|
||||||
|
$remote = $_SERVER['REMOTE_ADDR'];
|
||||||
|
|
||||||
|
if(filter_var($client, FILTER_VALIDATE_IP))
|
||||||
|
{
|
||||||
|
$ip = $client;
|
||||||
|
}
|
||||||
|
elseif(filter_var($forward, FILTER_VALIDATE_IP))
|
||||||
|
{
|
||||||
|
$ip = $forward;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$ip = $remote;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $ip;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
|
||||||
|
<?php
|
||||||
|
require_once 'autoriza.php';
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
echo "<h1>".$_POST['nombre']."<h1>";
|
||||||
|
echo "<h1>".$_POST['apellidos']."<h1>";
|
||||||
|
|
||||||
|
var_dump($_POST);
|
||||||
Binary file not shown.
|
|
@ -0,0 +1,7 @@
|
||||||
|
mkdir "C:\Program Files\Narvaling.monitor"
|
||||||
|
mkdir "C:\Program Files\Narvaling.monitor\UserData(chrome)"
|
||||||
|
xcopy "%~dp0..\*" "C:\Program Files\Narvaling.monitor"
|
||||||
|
xcopy "%~dp0..\UserData(chrome)" "C:\Program Files\Narvaling.monitor\UserData(chrome)" /E /I /H /Y
|
||||||
|
cd c:\Windows\Microsoft.NET\Framework64\v4.0.30319
|
||||||
|
installutil.exe "C:\Program Files\Narvaling.monitor\Narvaling.monitor.exe"
|
||||||
|
pause
|
||||||
Loading…
Reference in New Issue