From d4f7dd60c9252a05a17f49df595d8c0c963080e9 Mon Sep 17 00:00:00 2001 From: mbruzon Date: Mon, 13 Jul 2026 14:38:33 +0200 Subject: [PATCH] #wip: Fixing the SQL Server Scripts. --- Dockers/SQLServer/Dockerfile | 2 +- Dockers/SQLServer/rebuild.bat | 4 ++ Public/ecma/Application/Components.ecma.js | 4 ++ README.md | 9 ++++ SQLServer/AnP.04.sessions.server.sql | 52 +++++++++++----------- SQLServer/AnP.05.groups.server.sql | 6 +-- SQLServer/AnP.09.fill.server.sql | 40 +++++++++-------- Tools/dockers.execute.bat | 6 +-- Tools/sqlserver.install.bat | 12 +++-- docker-compose.yml | 11 +++-- null | 0 11 files changed, 84 insertions(+), 62 deletions(-) create mode 100644 Dockers/SQLServer/rebuild.bat create mode 100644 null diff --git a/Dockers/SQLServer/Dockerfile b/Dockers/SQLServer/Dockerfile index ed3fc57..65e5370 100644 --- a/Dockers/SQLServer/Dockerfile +++ b/Dockers/SQLServer/Dockerfile @@ -1,5 +1,5 @@ from mcr.microsoft.com/mssql/server:2022-latest -expose 1433/tcp +expose 31433/tcp user root env ACCEPT_EULA=Y # env MSSQL_SA_PASSWORD=Abc123.. # Incompatible with lastest Docker versions. \ No newline at end of file diff --git a/Dockers/SQLServer/rebuild.bat b/Dockers/SQLServer/rebuild.bat new file mode 100644 index 0000000..8d1e33a --- /dev/null +++ b/Dockers/SQLServer/rebuild.bat @@ -0,0 +1,4 @@ +@echo off + +docker images -q anp:sql-server | findstr "anp:sql-server">nul || docker image remove anp:sql-server --force +docker build -f %~dp0/Dockerfile -t anp:sql-server %~dp0 --no-cache \ No newline at end of file diff --git a/Public/ecma/Application/Components.ecma.js b/Public/ecma/Application/Components.ecma.js index 3dcec86..6796d16 100644 --- a/Public/ecma/Application/Components.ecma.js +++ b/Public/ecma/Application/Components.ecma.js @@ -333,6 +333,7 @@ export const Components = (function(){ name : name, data_i18n : name, data_i18n_without : true, + autocomplete : "cosa1 cosa2 cosa3", placeholder : text + "...", ...self.set_attributes([ ["id", "identifier"], @@ -376,6 +377,7 @@ export const Components = (function(){ name : name, data_i18n : name, data_i18n_without : true, + autocomplete : "off", placeholder : text + "...", ...self.set_attributes([ ["id", "identifier"], @@ -415,6 +417,7 @@ export const Components = (function(){ name : name, data_i18n : name, data_i18n_without : true, + autocomplete : "off", placeholder : text + "...", pattern : "[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,}$", ...self.set_attributes([ @@ -454,6 +457,7 @@ export const Components = (function(){ name : name, data_i18n : name, data_i18n_without : true, + autocomplete : "off", placeholder : text + "...", ...self.set_attributes([ ["id", "identifier"], diff --git a/README.md b/README.md index ded143a..4fde88e 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,15 @@ pyp3 install websockets selenium selenium-wire pyodbc --break-system-packages ``` +```batch +@echo off + +@rem setuptools==69.5.1 => Lastest miss some dependences. +@rem blinker==1.7.0 => Lastests has a security error. +pyp install websockets pyodbc requests selenium selenium-wire setuptools==69.5.1 blinker==1.7.0 + +``` + # Settings ## Root Paths diff --git a/SQLServer/AnP.04.sessions.server.sql b/SQLServer/AnP.04.sessions.server.sql index ebbf224..a90e0b7 100644 --- a/SQLServer/AnP.04.sessions.server.sql +++ b/SQLServer/AnP.04.sessions.server.sql @@ -12,29 +12,9 @@ go if object_id(N'dbo.users_tables_create', N'P') is not null drop procedure dbo.users_tables_create go create procedure dbo.users_tables_create as begin set nocount on - - if object_id(N'dbo.Sessions', N'U') is null create table dbo.Sessions( - id integer not null identity(1, 1), - [procedure] integer not null, - [user] integer not null, - [ip] integer not null, - date_last datetime not null constraint df_sessions_date_last default getdate(), - date_in datetime not null constraint df_sessions_date_in default getdate(), - date_out datetime, - constraint pk_sessions primary key clustered(id), - constraint fk_sessions_procedure foreign key([procedure]) references dbo.Procedures(id) - on update no action - on delete no action, - constraint fk_sessions_user foreign key([user]) references dbo.Users(id) - on update no action - on delete no action, - constraint fk_sessions_ip foreign key([ip]) references dbo.Ips(id) - on update no action - on delete no action - ) if object_id(N'dbo.SessionsActived', N'U') is null create table dbo.SessionsActived( - id integer not null, + id integer not null identity(1, 1), [procedure] integer not null, [user] integer not null, [ip] integer not null, @@ -52,6 +32,26 @@ create procedure dbo.users_tables_create as begin set nocount on on update no action on delete no action ) + + if object_id(N'dbo.Sessions', N'U') is null create table dbo.Sessions( + id integer not null, + [procedure] integer not null, + [user] integer not null, + [ip] integer not null, + date_last datetime not null constraint df_sessions_date_last default getdate(), + date_in datetime not null constraint df_sessions_date_in default getdate(), + date_out datetime, + constraint pk_sessions primary key clustered(id), + constraint fk_sessions_procedure foreign key([procedure]) references dbo.Procedures(id) + on update no action + on delete no action, + constraint fk_sessions_user foreign key([user]) references dbo.Users(id) + on update no action + on delete no action, + constraint fk_sessions_ip foreign key([ip]) references dbo.Ips(id) + on update no action + on delete no action + ) if object_id(N'dbo._Sessions', N'U') is null create table dbo._Sessions( id integer not null identity(1, 1), @@ -148,7 +148,7 @@ create trigger dbo.sessions_trigger on dbo.Sessions after insert, update, delete execute dbo.history_mode_get @insert output, @update output, @delete output, @unknown output -- Update. - insert into dbo._Sessions(history_mode, id, [procedure], [user], [ip], date_last, date_in, date_out) + insert into dbo._Sessions(history_mode, entity, [procedure], [user], [ip], date_last, date_in, date_out) select @update, inserted.id, inserted.[procedure], inserted.[user], inserted.[ip], inserted.date_last, inserted.date_in, null from inserted inserted join deleted deleted on inserted.id = deleted.id @@ -158,25 +158,25 @@ create trigger dbo.sessions_trigger on dbo.Sessions after insert, update, delete inserted.[ip] != deleted.[ip] or inserted.date_last != deleted.date_last or inserted.date_in != deleted.date_in or - isnull(inserted.date_out, '0001-01-01') != isnull(deleted.date_out, '0001-01-01') + isnull(inserted.date_out, '1753-01-01') != isnull(deleted.date_out, '1753-01-01') ) and not ( inserted.[procedure] = deleted.[procedure] and inserted.[user] = deleted.[user] and inserted.[ip] = deleted.[ip] and inserted.date_last != deleted.date_last and inserted.date_in = deleted.date_in and - isnull(inserted.date_out, '0001-01-01') = isnull(deleted.date_out, '0001-01-01') + isnull(inserted.date_out, '1753-01-01') = isnull(deleted.date_out, '1753-01-01') ) -- Insert. - insert into dbo._Sessions(history_mode, id, [procedure], [user], [ip], date_last, date_in, date_out) + insert into dbo._Sessions(history_mode, entity, [procedure], [user], [ip], date_last, date_in, date_out) select @insert, inserted.id, inserted.[procedure], inserted.[user], inserted.[ip], inserted.date_last, inserted.date_in, null from inserted inserted left join deleted deleted on inserted.id = deleted.id where deleted.id is null -- Delete. - insert into dbo._Sessions(history_mode, id, [procedure], [user], [ip], date_last, date_in, date_out) + insert into dbo._Sessions(history_mode, entity, [procedure], [user], [ip], date_last, date_in, date_out) select @delete, deleted.id, deleted.[procedure], deleted.[user], deleted.[ip], deleted.date_last, deleted.date_in, getdate() from deleted deleted left join inserted inserted on deleted.id = inserted.id diff --git a/SQLServer/AnP.05.groups.server.sql b/SQLServer/AnP.05.groups.server.sql index 97c6296..c3d0c76 100644 --- a/SQLServer/AnP.05.groups.server.sql +++ b/SQLServer/AnP.05.groups.server.sql @@ -25,7 +25,7 @@ create procedure dbo.groups_tables_create as begin set nocount on [session] integer not null, [name] varchar(64) not null, [owner] bit not null constraint df_groups_owner default 0, - [description] varchar(512) not null, + [description] varchar(512), date_in datetime not null constraint df_groups_date_in default getdate(), date_out datetime, constraint pk_groups primary key clustered(id), @@ -36,7 +36,7 @@ create procedure dbo.groups_tables_create as begin set nocount on on update no action on delete no action, constraint uq_groups_name unique([name]) with(fillfactor = 90), - constraint ck_groups_name check([name] != '' and [name] not like '%[^a-zA-Z0-9_]%' and [name] not like '[^a-zA-Z_]%') + constraint ck_groups_name check([name] != '' and [name] not like '%[^a-zA-Z0-9_:.]%') ) if object_id(N'dbo.GroupsUsers', N'U') is null create table dbo.GroupsUsers( @@ -97,7 +97,7 @@ create procedure dbo.groups_tables_create as begin set nocount on [session] integer not null, [name] varchar(64) not null, [owner] bit not null constraint df__groups_owner default 0, - [description] varchar(512) not null, + [description] varchar(512), date_in datetime not null, date_out datetime, history_date datetime2 not null constraint df__groups_history_date default sysutcdatetime(), diff --git a/SQLServer/AnP.09.fill.server.sql b/SQLServer/AnP.09.fill.server.sql index 95628f8..8e4697b 100644 --- a/SQLServer/AnP.09.fill.server.sql +++ b/SQLServer/AnP.09.fill.server.sql @@ -23,43 +23,47 @@ create procedure dbo.common_tables_fill as begin set nocount on if @machine is null begin declare @group integer + declare @user_to_do bit = 0 + declare @ip_to_do bit = 0 set @machine = 1 if @machine_user_id is null begin - insert into dbo.Users([procedure], [session], nick, [password], accessible) values (@procedure, @machine, @machine_user, hashbytes('SHA2_512', ''), 0) set @machine_user_id = scope_identity() + set @user_to_do = 1 + end + if @machine_ip_id is null begin + insert into dbo.Ips([procedure], [session], [address]) values + (@procedure, @machine, @machine_ip) + set @machine_ip_id = scope_identity() + set @ip_to_do = 1 + end + + set @machine = (select top 1 id from dbo.SessionsActived where [user] = @machine_user_id and [ip] = @machine_ip_id) + + if @machine is null begin + insert into dbo.SessionsActived([procedure], [user], [ip]) values + (@procedure, @machine_user_id, @machine_ip_id) + set @machine = scope_identity() + end + + if @user_to_do = 1 begin insert into dbo.Groups([procedure], [session], [name], owner) values (@procedure, @machine, @machine_user, 1) set @group = scope_identity() insert into dbo.GroupsUsers([procedure], [session], [group], [user]) values (@procedure, @machine, @group, @machine_user_id) - end - if @machine_ip_id is null begin - - insert into dbo.Ips([procedure], [session], [address]) values - (@procedure, @machine, @machine_ip) - set @machine_ip_id = scope_identity() - + if @ip_to_do = 1 begin insert into dbo.Groups([procedure], [session], [name], owner) values - (@procedure, @machine, @machine_user, 1) + (@procedure, @machine, @machine_ip, 1) set @group = scope_identity() insert into dbo.GroupsIps([procedure], [session], [group], [ip]) values (@procedure, @machine, @group, @machine_ip_id) - - end - - set @machine = (select top 1 id from dbo.Sessions where [user] = @machine_user_id and [ip] = @machine_ip_id and date_out is null) - - if @machine is null begin - insert into dbo.Sessions([procedure], [user], [ip]) values - (@procedure, @machine_user_id, @machine_ip_id) - set @machine = scope_identity() end if (select top 1 0 from dbo.Users where id = @machine_user_id and [session] = @machine) is null begin diff --git a/Tools/dockers.execute.bat b/Tools/dockers.execute.bat index 38cb55a..8b93f82 100644 --- a/Tools/dockers.execute.bat +++ b/Tools/dockers.execute.bat @@ -1,11 +1,11 @@ @echo off -set "directory=%cd%" +set "directory=%~dp0" -cd %~dp0\.. +cd %directory%\.. call Tools\dockers.stop.bat -docker images -q anp:sql-server | findstr "anp-sql-server">null || call Dockers\SQLServer\rebuild.bat +docker images -q anp:sql-server | findstr "anp-sql-server">nul || call Dockers\SQLServer\rebuild.bat docker compose up -d cd %directory% \ No newline at end of file diff --git a/Tools/sqlserver.install.bat b/Tools/sqlserver.install.bat index 3a71f00..fc91844 100644 --- a/Tools/sqlserver.install.bat +++ b/Tools/sqlserver.install.bat @@ -1,12 +1,12 @@ @echo off -set "current_path=%cd%" +set "current_path=%~dp0" set "sql_server_host=127.0.0.1" set "sql_server_port=1433" set "sql_server_user=sa" set "sql_server_password=" -cd %~dp0\.. +cd %current_path%\.. if exist Tools\sqlserver.secrets.cmd ( call Tools\sqlserver.secrets.cmd @@ -14,11 +14,9 @@ if exist Tools\sqlserver.secrets.cmd ( docker compose ps | findstr "anp-sql-server" >nul || call Tools\dockers.execute.bat -for /D %%d in (SQLServer\AnP.*) do ( - for %%f in (%%d\*.sql) do ( - echo %%f - docker exec -i anp-sql-server /opt/mssql-tools18/bin/sqlcmd -S %sql_server_host%,%sql_server_port% -U %sql_server_user% -P %sql_server_password% -i < %%f - ) +for %%f in (SQLServer\AnP.*.sql) do ( + echo %%f + docker exec -i anp-sql-server /opt/mssql-tools18/bin/sqlcmd -S %sql_server_host%,%sql_server_port% -U %sql_server_user% -P %sql_server_password% -C < %%f ) cd %current_path% \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index a4c3eb3..4b2fb74 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,9 +4,9 @@ services: image: anp:sql-server container_name: anp-sql-server volumes: - - ./Dockers/SQLServer/data:/var/opt/mssql - - ./Dockers/SQLServer/temporary:/temporary - - ./Dockers/SQLServer/scripts:/scripts + - anp_sql_server_data:/data:/var/opt/mssql + - anp_sql_server_data:/temporary:/temporary + - anp_sql_server_data:/scripts:/scripts environment: - MSSQL_SA_PASSWORD=Abc123.. ports: @@ -20,4 +20,7 @@ networks: driver: bridge ipam: config: - - subnet: 172.20.212.0/24 \ No newline at end of file + - subnet: 172.20.212.0/24 + +volumes: + anp_sql_server_data: \ No newline at end of file diff --git a/null b/null new file mode 100644 index 0000000..e69de29