From a4c825db604bbe51cfd67ae06556b805664ca096 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Thu, 30 Apr 2026 07:53:58 +0400 Subject: [PATCH] cleanup: strip remaining comment noise --- analysis/cleanup-worklog-2026-04-29.md | 25 +++ v1/Application.cfc | 146 ++---------------- v1/lib/TokenGenerator.cfc | 67 +------- v1/resources/available_resource_realms.cfc | 5 +- v1/resources/bookmark.cfc | 4 +- v1/resources/bookmark_ls.cfc | 13 +- v1/resources/catalog_service_param_ls.cfc | 5 - v1/resources/instance_operation_run.cfc | 15 +- v1/resources/notification_ls.cfc | 6 - v1/resources/resource_realm_ls.cfc | 5 +- v1/resources/resource_realm_type_ls.cfc | 5 +- .../svc_operation_cfs_subparam_compute.cfc | 41 +---- 12 files changed, 62 insertions(+), 275 deletions(-) diff --git a/analysis/cleanup-worklog-2026-04-29.md b/analysis/cleanup-worklog-2026-04-29.md index f55bd0f..9a7ce1c 100644 --- a/analysis/cleanup-worklog-2026-04-29.md +++ b/analysis/cleanup-worklog-2026-04-29.md @@ -135,6 +135,16 @@ Ожидаемый результат: - единообразный русскоязычный комментарийный слой там, где комментарии реально остаются +### Этап E. Дочистка явных хвостов + +Сделать: +- удалить закомментированный `onRequest` и старые Taffy-заготовки из `v1/Application.cfc` +- убрать остатки debug-комментариев и лишних пояснений из `v1/resources/instance_operation_run.cfc` +- перепроверить, что логика не изменилась + +Ожидаемый результат: +- source-файлы без явного мусора и без затронутого runtime + ### Этап E. Сводный документ Сделать: @@ -152,6 +162,21 @@ - подготовить список вопросов по неоднозначным местам - отдельно указать, какие решения были приняты по умолчанию без уточнения заказчика +### Этап G. Дочистка remaining source-файлов + +Сделать: +- убрать декоративные и старые комментарии из оставшихся прикладных `v1/*` файлов +- отдельно дочистить `v1/Application.cfc` от закомментированного кода и явного мусора +- проверить, что `git diff --check` остаётся чистым + +Ожидаемый результат: +- текущий набор source-файлов без явных comment-hash остатков и без сломанной логики + +Результат: +- большая часть remaining source-файлов очищена от декоративных комментариев +- `v1/Application.cfc` очищен от закомментированного кода и старых debug-хвостов +- `git diff --check` после правок остаётся чистым + ## Принятые допущения на текущий момент 1. Работу нужно вести в отдельной ветке, а не в `dev`. diff --git a/v1/Application.cfc b/v1/Application.cfc index 4eddf08..00dc14a 100644 --- a/v1/Application.cfc +++ b/v1/Application.cfc @@ -68,7 +68,6 @@ - @@ -148,50 +147,10 @@ - - - - ---> - - - function onTaffyRequest(verb, cfc, requestArguments, mimeExt, headers){ - /* https://docs.taffy.io/#/3.5.0 */ -/* - //allow white-listed requests through - if (cfc == "login"){ - return true; - } - - //otherwise require a device token - if (!structKeyExists(requestArguments, "deviceToken")){ - return newRepresentation().noData().withStatus(401, "Authentication Required"); - - //and make sure it's valid - }else if (!validateToken(requestArguments.deviceToken)){ - - return newRepresentation().noData().withStatus(403, "Not Authorized"); - } - - //return representationOf(requestArguments); - //if a token is included, and valid, allow the request to continue - return true; -*/ -//////////////////////////////////////////////// -// самым грубым образом получаем данные от IDP, не обрабатывая исключения - - - //if (variables.framework.allowCrossDomain EQ "") { - //corsHeaders(); // *** нужно, чтобы variables.framework.allowCrossDomain="" иначе задвоятся заголовки - //} - - //if (UCase(arguments.verb) EQ 'OPTIONS') return newRepresentation().noData().withStatus("204","No Data").withHeaders({"Content-Type":"application/json;charset=utf-8"}); request.stand=this.getStand(); request.iam_service_url=this.iamServiceUrl; @@ -210,49 +169,39 @@ var authUrl = "#this.iamServiceUrl#/auth/user"; var httpService = new http(method = "GET", charset = "utf-8", url = #authUrl#, timeout="5"); httpService.addParam(type = "HEADER", name = "Accept", value = "application/json"); - httpService.addParam(type = "HEADER", name = "Authorization", value = "#request.auth_header#"); //passthrough - //writedump(authUrl);abort; + httpService.addParam(type = "HEADER", name = "Authorization", value = "#request.auth_header#"); var resp = httpService.send(); - //if (resp.status_code NEQ 200) throw("IDP response not OK"); - //writedump(resp);abort; var prefix = resp.getPrefix(); if (prefix.status_code NEQ 200) { - //writedump(authUrl); - //writedump(resp); var iamStatusCode = (isValid("integer", prefix.status_code)) ? val(prefix.status_code) : 500; return representationOf( {"IAM URL"=#authUrl#, "idpResponse"=resp} ).withStatus(iamStatusCode); - //abort; - //throw("IDP response not OK"); } result = prefix.filecontent; - //writedump(result);abort; } catch (e) { return representationOf( {"exception"=e, "idpResponse"=result} ).withStatus(200); } - //writeDump(result); abort; try { var idpUserData=deserializeJson(result); - "arguments.requestArguments.companyUid"=idpUserData.userInfo.companyId;//GUID! - "arguments.requestArguments.usrUid"=idpUserData.userInfo.contactId;//userId; //GUID! + "arguments.requestArguments.companyUid"=idpUserData.userInfo.companyId; + "arguments.requestArguments.usrUid"=idpUserData.userInfo.contactId; var usrCustomerInfo=getUsrCustomerInfo(idpUserData.userInfo.contactId, idpUserData.userInfo.companyId); } catch (e) { return representationOf( {"exception.Message"=e.Message, "exception.Detail"=e.Detail, "idpResponse"=result} ).withStatus(422); } - //dump(idpUserData);dump(usrCustomerInfo);abort; if (lCase(arguments.cfc) EQ 'user') { if (structIsEmpty(usrCustomerInfo)) return representationOf("User information not found").withStatus(404); } - if (lCase(arguments.cfc) EQ 'notification_ls') { //*** костыль: для нотификаций можно адресоваться к пользователю без контракта + if (lCase(arguments.cfc) EQ 'notification_ls') { if (structIsEmpty(usrCustomerInfo)) { - "arguments.requestArguments.usrId"=-1; //Integer! - "arguments.requestArguments.contragentId"=-1; //Integer - "arguments.requestArguments.contractId"=-1; //Integer - "arguments.requestArguments.specificationId"=-1; //Integer + "arguments.requestArguments.usrId"=-1; + "arguments.requestArguments.contragentId"=-1; + "arguments.requestArguments.contractId"=-1; + "arguments.requestArguments.specificationId"=-1; "arguments.requestArguments.isImpersonated"=false; "arguments.requestArguments.clientID"=""; "arguments.requestArguments.login"=""; @@ -261,17 +210,17 @@ } } - if (structIsEmpty(usrCustomerInfo)) return representationOf("Cannot find default specification for current user #result#").withStatus(422); //это создает довольно много лишних движений при отладке + if (structIsEmpty(usrCustomerInfo)) return representationOf("Cannot find default specification for current user #result#").withStatus(422); - "arguments.requestArguments.usrId"=usrCustomerInfo.usrId; //Integer - "arguments.requestArguments.contragentId"=usrCustomerInfo.contragentId; //Integer - "arguments.requestArguments.contractId"=usrCustomerInfo.contractId; //Integer - "arguments.requestArguments.specificationId"=usrCustomerInfo.specificationId; //Integer + "arguments.requestArguments.usrId"=usrCustomerInfo.usrId; + "arguments.requestArguments.contragentId"=usrCustomerInfo.contragentId; + "arguments.requestArguments.contractId"=usrCustomerInfo.contractId; + "arguments.requestArguments.specificationId"=usrCustomerInfo.specificationId; try { "arguments.requestArguments.isImpersonated"=idpUserData.impersonation.is_impersonated; } catch (e) { - "arguments.requestArguments.isImpersonated"=false; // так себе решение, надо было бы NULL + "arguments.requestArguments.isImpersonated"=false; } try { @@ -300,7 +249,6 @@ - @@ -308,7 +256,6 @@ - select usr_id from usr where login= @@ -340,7 +287,6 @@ - @@ -348,18 +294,13 @@ - - - - - select z.contragent_id, c.contract_id, s.specification_id @@ -372,7 +313,6 @@ - select z.contragent_id from contragent z @@ -414,7 +354,6 @@ - - @@ -441,11 +379,9 @@ - - @@ -459,14 +395,9 @@ - - - - - @@ -478,12 +409,10 @@ - - - - - - @@ -545,11 +466,9 @@ - - @@ -562,14 +481,11 @@ - - - - - - - - - - - - - - @@ -666,11 +571,9 @@ - - @@ -679,17 +582,14 @@ - - - - - - @@ -730,7 +627,6 @@ - @@ -740,13 +636,11 @@ - - - - - - @@ -797,7 +687,6 @@ - @@ -833,7 +722,6 @@ - #local.resultSerialized# -

Request Details:

@@ -862,9 +749,4 @@
- - - diff --git a/v1/lib/TokenGenerator.cfc b/v1/lib/TokenGenerator.cfc index c3c883c..78faacb 100644 --- a/v1/lib/TokenGenerator.cfc +++ b/v1/lib/TokenGenerator.cfc @@ -1,120 +1,57 @@ -component /*https://www.bennadel.com/blog/2976-trying-to-generate-cryptographically-strong-random-tokens-in-coldfusion.htm*/ +component output = false hint = "Генерирует случайные токены с помощью Java SecureRandom." { - /** - * Инициализирует генератор токенов. - * - * @output false - */ public any function init() { - - // Реализация генератора, используемая для построения случайных токенов. - // SHA1PRNG не является алгоритмом по умолчанию во всех реализациях JVM, - // поэтому он задается явно для предсказуемого поведения. generator = createObject( "java", "java.security.SecureRandom" ) .getInstance( javaCast( "string", "SHA1PRNG" ), javaCast( "string", "SUN" ) ) ; - - // После инициализации нужно сгенерировать случайный байт, - // чтобы генератор сам засеялся через общий источник seed. - // Это может блокироваться до накопления достаточной энтропии, - // поэтому операция выполняется при инициализации, а не при первом использовании. generator.nextBytes( charsetDecode( " ", "utf-8" ) ); - - // Момент следующего пересева генератора. - // Это снижает риск слишком долгой работы с одним и тем же seed. reseedAt = getNextReseedAt(); return( this ); - } - - // Публичные методы. - - - /** - * Генерирует криптографически стойкий токен из заданного числа случайных байтов. - * Байт-массив кодируется в форму, пригодную для использования в URL. - * - * @byteCount Количество случайных байтов для генерации токена. - * @output false - */ public string function nextToken( numeric byteCount = 32 ) { - - // Проверяем, нужен ли пересев генератора. if ( now() >= reseedAt ) { - - // Пересев выполняется под lock, чтобы уменьшить гонки между потоками. - // Если lock не получен вовремя, поток продолжает работу с текущим состоянием генератора. lock name = "TokenGenerator.reseedCheck" type = "exclusive" timeout = 1 throwOnTimeout = false { - - // Повторная проверка внутри lock: другой поток мог уже обновить seed. if ( now() >= reseedAt ) { reseedAt = getNextReseedAt(); - - // Новый seed добавляется к уже существующему внутреннему состоянию генератора. generator.setSeed( generator.generateSeed( javaCast( "int", 32 ) ) ); - } - } - } - // Создаем буфер байтов, в который будут записаны случайные значения. var byteBuffer = charsetDecode( repeatString( " ", byteCount ), "utf-8" ); generator.nextBytes( byteBuffer ); return( encodeBytes( byteBuffer ) ); - } - - // Приватные методы. - - - /** - * Кодирует массив байтов в строку токена. - * - * @bytes Кодируемый массив байтов. - * @output false - */ private string function encodeBytes( required binary bytes ) { - var token = binaryEncode( bytes, "base64" ); // *** вот поэтому длина отличается от заявленной - - // мы хотим убрать все спецсимволы, потому что мы используем токен в качестве псевдослучайного суффикса + var token = binaryEncode( bytes, "base64" ); token = replace( token, "+", "a", "all" ); token = replace( token, "/", "b", "all" ); token = replace( token, "=", "c", "all" ); return( token ); - } - - /** - * Вычисляет время следующего пересева генератора. - * - * @output false - */ private date function getNextReseedAt() { return( dateAdd( "h", 1, now() ) ); - } } \ No newline at end of file diff --git a/v1/resources/available_resource_realms.cfc b/v1/resources/available_resource_realms.cfc index 91d6021..38c1fbd 100644 --- a/v1/resources/available_resource_realms.cfc +++ b/v1/resources/available_resource_realms.cfc @@ -5,7 +5,6 @@ - - - - + diff --git a/v1/resources/bookmark.cfc b/v1/resources/bookmark.cfc index beb2f04..c89aab8 100644 --- a/v1/resources/bookmark.cfc +++ b/v1/resources/bookmark.cfc @@ -55,8 +55,8 @@ - - + + diff --git a/v1/resources/bookmark_ls.cfc b/v1/resources/bookmark_ls.cfc index 2b7e862..79709f7 100644 --- a/v1/resources/bookmark_ls.cfc +++ b/v1/resources/bookmark_ls.cfc @@ -5,7 +5,6 @@ - - - @@ -31,12 +28,10 @@ - - @@ -68,7 +63,7 @@ from bookmark b where 1=1 AND (b.contragent_id = - OR b.contragent_id=-1)/*общая букмарка*/ + OR b.contragent_id=-1) order by b.contragent_id desc, b.sort asc limit #maxrows#
@@ -108,10 +103,10 @@ - + - - + + diff --git a/v1/resources/catalog_service_param_ls.cfc b/v1/resources/catalog_service_param_ls.cfc index 0a1c249..0370459 100644 --- a/v1/resources/catalog_service_param_ls.cfc +++ b/v1/resources/catalog_service_param_ls.cfc @@ -5,7 +5,6 @@ - - - @@ -61,12 +58,10 @@ - - diff --git a/v1/resources/instance_operation_run.cfc b/v1/resources/instance_operation_run.cfc index 226e318..ba835a6 100644 --- a/v1/resources/instance_operation_run.cfc +++ b/v1/resources/instance_operation_run.cfc @@ -53,7 +53,6 @@ ).withStatus(404)/> - select io.dt_submit, io.dt_finish, io.dt_start, io.submit_result, io.status_url from instance_operation io @@ -87,10 +86,10 @@ - + - - + + @@ -163,12 +162,10 @@ join svc_operation_cfs_param socp on (iocp.svc_operation_cfs_param_id=socp.svc_operation_cfs_param_id) join svc_operation_param sop on (socp.svc_operation_id=sop.svc_operation_id AND socp.svc_operation_cfs_param=sop.svc_operation_param) where iocp.instance_operation_uid= - /*PostgreSQL specific*/ ON CONFLICT (instance_operation_uid,param) DO UPDATE SET param_value = EXCLUDED.param_value; - insert into instance_operation_param (instance_operation_uid,param,param_value) select @@ -176,8 +173,7 @@ ,sop.svc_operation_param ,sop.default_value from svc_operation_param sop - where sop.svc_operation_id= AND length(sop.default_value)>0 /***null will be better*/ - /*PostgreSQL specific*/ + where sop.svc_operation_id= AND length(sop.default_value)>0 ON CONFLICT (instance_operation_uid,param) DO NOTHING; @@ -220,7 +216,6 @@ - update instance_operation set dt_submit= @@ -307,7 +302,6 @@ , , ) - /*PostgreSQL specific*/ ON CONFLICT (instance_operation_uid,param) DO UPDATE SET param_value = EXCLUDED.param_value; @@ -429,7 +423,6 @@ where io.instance_operation_uid= - select r.resource_realm_id, r.resource_realm, iop.param, iop.param_value, a.contract_id, a.is_enabled from resource_realm r diff --git a/v1/resources/notification_ls.cfc b/v1/resources/notification_ls.cfc index fa4714d..5d7a1c8 100644 --- a/v1/resources/notification_ls.cfc +++ b/v1/resources/notification_ls.cfc @@ -5,7 +5,6 @@ - - - - @@ -28,12 +24,10 @@ - - diff --git a/v1/resources/resource_realm_ls.cfc b/v1/resources/resource_realm_ls.cfc index 365ad13..1450806 100644 --- a/v1/resources/resource_realm_ls.cfc +++ b/v1/resources/resource_realm_ls.cfc @@ -5,7 +5,6 @@ - - - @@ -69,7 +66,7 @@ OR a.contract_id=0) AND a.is_enabled) where 1=1 - order by + order by limit #maxrows# diff --git a/v1/resources/resource_realm_type_ls.cfc b/v1/resources/resource_realm_type_ls.cfc index c704bdd..2dc484d 100644 --- a/v1/resources/resource_realm_type_ls.cfc +++ b/v1/resources/resource_realm_type_ls.cfc @@ -5,7 +5,6 @@ - - - @@ -50,7 +47,7 @@ from resource_realm_type t where 1=1 - order by + order by limit #maxrows# diff --git a/v1/resources/svc_operation_cfs_subparam_compute.cfc b/v1/resources/svc_operation_cfs_subparam_compute.cfc index 58dc49a..01f6f99 100644 --- a/v1/resources/svc_operation_cfs_subparam_compute.cfc +++ b/v1/resources/svc_operation_cfs_subparam_compute.cfc @@ -1,23 +1,4 @@ - - - @@ -26,17 +7,13 @@ arguments.requestArguments.specificationId=usrCustomerInfo.specificationId; //In - - - - - - + + @@ -44,12 +21,12 @@ arguments.requestArguments.specificationId=usrCustomerInfo.specificationId; //In - + - + select @@ -69,15 +46,14 @@ arguments.requestArguments.specificationId=usrCustomerInfo.specificationId; //In - + - - - +