Compare commits

..

No commits in common. "develop" and "Produccion" have entirely different histories.

30 changed files with 42 additions and 1081 deletions

4
.gitignore vendored
View File

@ -1,7 +1,3 @@
/.vs/* /.vs/*
/SoloEnLan/bin/* /SoloEnLan/bin/*
/SoloEnLan/obj/* /SoloEnLan/obj/*
/packages/*
/MigrationBackup/*
/SoloEnLan/.vs/*
/SoloEnLanServer/log/*

View File

@ -1,31 +0,0 @@
<?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>

View File

@ -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}") = "Narvaling.monitor", "SoloEnLan\Narvaling.monitor.csproj", "{E15ED562-973B-41AB-B45E-3F7944570CAA}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SoloEnLan", "SoloEnLan\SoloEnLan.csproj", "{E15ED562-973B-41AB-B45E-3F7944570CAA}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution

View File

@ -3,29 +3,4 @@
<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>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectView>ShowAllFiles</ProjectView>
</PropertyGroup>
</Project>

View File

@ -1,11 +1,8 @@
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
@ -18,24 +15,11 @@ 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 SoloEnLan() new Service1()
}; };
ServiceBase.Run(ServicesToRun); ServiceBase.Run(ServicesToRun);
} }
} }
} }
}

View File

@ -1,60 +0,0 @@
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;
}
}

View File

@ -1,19 +0,0 @@
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();
}
}
}

View File

@ -1,129 +0,0 @@
<?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>

View File

@ -1,6 +1,6 @@
namespace SoloEnLan namespace SoloEnLan
{ {
partial class SoloEnLan partial class Service1
{ {
/// <summary> /// <summary>
/// Variable del diseñador necesaria. /// Variable del diseñador necesaria.
@ -28,18 +28,10 @@
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
this.eventLog1 = new System.Diagnostics.EventLog(); components = new System.ComponentModel.Container();
((System.ComponentModel.ISupportInitialize)(this.eventLog1)).BeginInit(); this.ServiceName = "Service1";
//
// SoloEnLan
//
this.ServiceName = "SoloEnLan";
((System.ComponentModel.ISupportInitialize)(this.eventLog1)).EndInit();
} }
#endregion #endregion
private System.Diagnostics.EventLog eventLog1;
} }
} }

View File

@ -1,4 +1,4 @@
using Narvaling.monitor.model; using SoloEnLan.model;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
@ -8,47 +8,27 @@ 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 SoloEnLan : ServiceBase public partial class Service1 : ServiceBase
{ {
monitor m; monitor m;
monitorNavegacion mn; public Service1()
private string nombreService = "Narvaling.monitor";
public SoloEnLan()
{ {
InitializeComponent(); InitializeComponent();
if(!EventLog.SourceExists(nombreService))
{
EventLog.CreateEventSource(nombreService,"Application");
}
logService.EventLog = eventLog1;
eventLog1.Source = nombreService;
eventLog1.Log = "Application";
m=new monitor(); m=new monitor();
mn= new monitorNavegacion();
}
public void inicia()
{
m.start();
mn.start();
} }
protected override void OnStart(string[] args) protected override void OnStart(string[] args)
{ {
logService.log("Se inicia " + nombreService); m.start();
//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);
} }
} }
} }

View File

@ -1,126 +0,0 @@
<?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>

View File

@ -7,13 +7,11 @@
<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>Narvaling.monitor</AssemblyName> <AssemblyName>SoloEnLan</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>
@ -34,15 +32,10 @@
<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" />
@ -52,14 +45,7 @@
<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>
@ -69,30 +55,11 @@
<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>

View File

@ -1,4 +1,4 @@
using Narvaling.monitor.service; using SoloEnLan.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 Narvaling.monitor.model namespace SoloEnLan.model
{ {
public class monitor public class monitor
@ -18,15 +18,10 @@ namespace Narvaling.monitor.model
private int tiempoMensaje; private int tiempoMensaje;
public monitor() public monitor()
{ {
tiempoComprobacion = int.Parse(ConfigurationManager.AppSettings["tiempoComprovacionPrime"]);
tiempoMensaje = int.Parse(ConfigurationManager.AppSettings["tiempoNotificacion"]);
if(tiempoComprobacion>0)
t = new Thread(runMonitor);
else
t = null; t = null;
pirate = false; pirate = false;
tiempoComprobacion = int.Parse(ConfigurationManager.AppSettings["tiempoComprovacion"]);
tiempoMensaje = int.Parse(ConfigurationManager.AppSettings["tiempoNotificacion"]);
} }
private static void runMonitor(object m) private static void runMonitor(object m)
@ -34,107 +29,32 @@ namespace Narvaling.monitor.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()
{ {
string aa = IdService.GetMEI();
aa = aa;
while(!pirate) while(!pirate)
{ {
DateTime currentDate = DateTime.Now;
//espera //espera
espera(tiempoComprobacion); Thread.Sleep(tiempoComprobacion);
if (pirate)
continue;
//Thread.Sleep(tiempoComprobacion*1000);
//revisa lan //revisa lan
logService.log("Se comprueba Autorización"); if (conexionService.Getestas())
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*1000); Thread.Sleep(tiempoMensaje);
espera(tiempoMensaje);
if (pirate)
continue;
//apaga //apaga
logService.log("Se apaga maquina");
shutdownService.apagaPc(); shutdownService.apagaPc();
} }
if(res<0) Thread.Sleep(60);
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!=null &&!t.IsAlive) if (!t.IsAlive)
{ {
pirate = false; pirate = false;
t.Start(this); t.Start(this);
@ -144,7 +64,6 @@ namespace Narvaling.monitor.model
public void fin() public void fin()
{ {
pirate = true; pirate = true;
if(t != null)
t.Join(); t.Join();
} }
} }

View File

@ -1,185 +0,0 @@
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();
}
}
}

View File

@ -1,6 +0,0 @@
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

View File

@ -1,3 +0,0 @@
cd c:\Windows\Microsoft.NET\Framework64\v4.0.30319
installutil /uninstall "C:\Program Files\Narvaling.monitor\Narvaling.monitor.exe"
pause

View File

@ -1,102 +0,0 @@
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;
}
}
}

View File

@ -1,30 +1,26 @@
using System; //using Microsoft.Toolkit.Uwp.Notifications;
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 Narvaling.monitor.service namespace SoloEnLan.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
}
*/ */
} }
} }
} }

View File

@ -1,83 +1,17 @@
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 Narvaling.monitor.service namespace SoloEnLan.service
{ {
internal class conexionService internal class conexionService
{ {
private static int GetPermisoSRV(string sURL)
{
var resf = -1;
try public static bool Getestas()
{ {
HttpClient client = new HttpClient(); return true;
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;
}
} }
} }
} }

View File

@ -1,22 +0,0 @@
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);
}
}
}
}

View File

@ -1,17 +1,16 @@
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 Narvaling.monitor.service namespace SoloEnLan.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.

Before

Width:  |  Height:  |  Size: 114 KiB

View File

@ -1,42 +0,0 @@
<?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;
}

View File

@ -1,7 +0,0 @@
<?php
$res_default="NO";
//$res_default="NO"
#$denegados= array("batman", "spiderman", "spirit");
$denegados= array();
#$permitidos= array("pepe", "manuel");
$permitidos= array();

View File

@ -1,27 +0,0 @@
<?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;
}

View File

@ -1,3 +0,0 @@
<?php
require_once 'autoriza.php';

View File

@ -1,6 +0,0 @@
<?php
echo "<h1>".$_POST['nombre']."<h1>";
echo "<h1>".$_POST['apellidos']."<h1>";
var_dump($_POST);

Binary file not shown.

View File

@ -1,7 +0,0 @@
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