cleanup: trim application bootstrap comments

This commit is contained in:
“Naeel”
2026-04-29 21:57:42 +04:00
parent 0ee66e8bd3
commit 8278cd93dc
2 changed files with 35 additions and 62 deletions
+21
View File
@@ -597,6 +597,27 @@
Каталог `v1/etc/bk` на этом этапе не затрагивается, потому что для его файлов нужна отдельная проверка по назначению и ссылкам. Каталог `v1/etc/bk` на этом этапе не затрагивается, потому что для его файлов нужна отдельная проверка по назначению и ссылкам.
## Обновление: минимальный cleanup-проход по Application.cfc
Дата фиксации: 2026-04-29.
### Границы этапа
В этом проходе затрагивается только безопасный comment/debug-слой:
- верхние исторические и объяснительные блоки
- закомментированные настройки и альтернативы, не влияющие на текущий runtime
- служебные комментарии вокруг bootstrap и `locateIamService`
Что сознательно не трогается:
- основной control flow `onTaffyRequest`
- override-логика Taffy в `onRequest`
- тексты ошибок и поведение авторизации
### Проверка
Результат проверки:
- синтаксических ошибок в `v1/Application.cfc` не обнаружено
### Следующий мини-этап ### Следующий мини-этап
Для следующего такого же безопасного прохода выбраны: Для следующего такого же безопасного прохода выбраны:
+14 -62
View File
@@ -1,33 +1,22 @@
<cfcomponent extends="taffy.core.api"> <cfcomponent extends="taffy.core.api">
<!---<cfset this.name = "deck_api" />--->
<!--- Способы передачи аргументов из Application.cfc
В скоупе request (доступен всегда и отовсюду). Но там может возникнуть хаос. Плюс: достаточно явный способ
onTaffyRequest.arguments.requestArguments - инжектируется в аргументы методов get/post/put etc/
this - в Taffy не работает, a только при include шаблона в Application.cfc (есть такой способ условного вызова шаблона) --->
<cfset this.mappings["/resources"] = expandPath("./resources")/> <cfset this.mappings["/resources"] = expandPath("./resources")/>
<cfset this.mappings["/taffy"] = expandPath("./taffy")/> <cfset this.mappings["/taffy"] = expandPath("./taffy")/>
<cfset this.mappings["/lib"] = expandPath("./lib")/> <cfset this.mappings["/lib"] = expandPath("./lib")/>
<cflock scope="application" type="exclusive" timeout="3"><!---*** не уверен, что это необходимо---> <cflock scope="application" type="exclusive" timeout="3">
<cftry> <cftry>
<!---production environment--->
<cfinclude template="../../conf/prod.cfm"/> <cfinclude template="../../conf/prod.cfm"/>
<cfcatch type="ANY"> <cfcatch type="ANY">
<cftry> <cftry>
<!---staging environment--->
<cfinclude template="../../conf/stage.cfm"/> <cfinclude template="../../conf/stage.cfm"/>
<cfcatch type="ANY"> <cfcatch type="ANY">
<cftry> <cftry>
<!--- development environment --->
<cfinclude template="../../conf/dev.cfm"/> <cfinclude template="../../conf/dev.cfm"/>
<cfcatch type="ANY"> <cfcatch type="ANY">
<!---configure right here--->
<!---для ясности--->
<!--- *** кажется, этот подход устарел --->
<cfset this.config.environment = "dev-default" /> <cfset this.config.environment = "dev-default" />
<cfset this.config.datasource = "cmdb" /> <cfset this.config.datasource = "cmdb" />
<cfset this.config.is_dev_default = "true" /><!---это виднее в сообщении об ошибке---> <cfset this.config.is_dev_default = "true" />
</cfcatch> </cfcatch>
</cftry> </cftry>
@@ -42,51 +31,38 @@
<cfscript> <cfscript>
this.name = hash(getCurrentTemplatePath()); this.name = hash(getCurrentTemplatePath());
//variables.framework = structNew(); //
variables.framework.debugKey = "debug"; variables.framework.debugKey = "debug";
variables.framework.reloadKey = "reload"; variables.framework.reloadKey = "reload";
variables.framework.reloadPassword = "true"; variables.framework.reloadPassword = "true";
variables.framework.reloadOnEveryRequest = true; variables.framework.reloadOnEveryRequest = true;
variables.framework.serializer = "taffy.core.nativeJsonSerializer"; variables.framework.serializer = "taffy.core.nativeJsonSerializer";
//variables.framework.serializer = "JsonUtilSerializer";
variables.framework.dashboardKey = "dashboard"; variables.framework.dashboardKey = "dashboard";
variables.framework.disableDashboard = false; variables.framework.disableDashboard = false;
variables.framework.unhandledPaths = "/flex2gateway"; variables.framework.unhandledPaths = "/flex2gateway";
variables.framework.allowCrossDomain = true; // соответствующие заголовки, включая Access-Control-Allow-Origin выставляются только при наличии заголовка origin в реквесте variables.framework.allowCrossDomain = true;
//variables.framework.allowCrossDomain = ""; // перепишем явно, возвращая Origin
//variables.framework.docs={};
variables.framework.docs.APIName="svc-api"; variables.framework.docs.APIName="svc-api";
variables.framework.docs.APIVersion="0.234"; /*$ git config --global --unset user.password*/ variables.framework.docs.APIVersion="0.234";
variables.framework.globalHeaders = structNew(); variables.framework.globalHeaders = structNew();
variables.framework.globalHeaders["Access-Control-Expose-Headers"] = "Location"; variables.framework.globalHeaders["Access-Control-Expose-Headers"] = "Location";
variables.framework.globalHeaders["Access-Control-Allow-Credentials"] = "true"; variables.framework.globalHeaders["Access-Control-Allow-Credentials"] = "true";
variables.framework.globalHeaders["X-Application-Version"] = variables.framework.docs.APIVersion; variables.framework.globalHeaders["X-Application-Version"] = variables.framework.docs.APIVersion;
//variables.framework.globalHeaders["Access-Control-Allow-Origin"] = "*";
request.UNDEFINED_USR_ID=-1; request.UNDEFINED_USR_ID=-1;
request.ANONYMOUS_USR_ID=2; request.ANONYMOUS_USR_ID=2;
request.GUEST_USR_ID=3; request.GUEST_USR_ID=3;
request.USER_AGENT="#variables.framework.docs.APIName# #variables.framework.docs.APIVersion# stand:#this.getStand()#"; request.USER_AGENT="#variables.framework.docs.APIName# #variables.framework.docs.APIVersion# stand:#this.getStand()#";
////////////////////////////////////////////////////////
request.ORCHESTRATOR_AUTH = createObject("java", "java.lang.System").getEnv("ORCHESTRATOR_AUTH"); request.ORCHESTRATOR_AUTH = createObject("java", "java.lang.System").getEnv("ORCHESTRATOR_AUTH");
if (isNull(request.ORCHESTRATOR_AUTH)) { if (isNull(request.ORCHESTRATOR_AUTH)) {
request.ORCHESTRATOR_AUTH = "Basic ...no data";//*** времянка, дубль из deck/Application.cfm request.ORCHESTRATOR_AUTH = "Basic ...no data";
} }
//request.vault_login_url=createObject("java", "java.lang.System").getEnv("VAULT_LOGIN_URL");
request.vault_login_url="https://vault.lk.adl.nubes.ru/v1/auth/approle/login"; request.vault_login_url="https://vault.lk.adl.nubes.ru/v1/auth/approle/login";
request.vault_role_id=createObject("java", "java.lang.System").getEnv("VAULT_ROLE_ID"); request.vault_role_id=createObject("java", "java.lang.System").getEnv("VAULT_ROLE_ID");
request.vault_secret_id=createObject("java", "java.lang.System").getEnv("VAULT_SECRET_ID");//*** тут в другом скоупе, не как deck, и вообще стоит ли это делать в псевдоконструкторе request.vault_secret_id=createObject("java", "java.lang.System").getEnv("VAULT_SECRET_ID");
//*** почему-то scope this ведет себя совершенно не так, как request и variables
// в нем, когда переменная получает значение Empty:null, можно выполнить writedump, а в других получаем ошибку, что такой переменной нет
request.auth_header=""; request.auth_header="";
//request.locateIamService=locateIamService; //for possible debug
//request.IAM_SERVICE_URL=this.iamServiceUrl; // так не работает!
</cfscript> </cfscript>
@@ -102,27 +78,21 @@
</cffunction> </cffunction>
<cffunction name="castToBool" returntype="any"> <cffunction name="castToBool" returntype="any">
<!--- приводит поле резалтсета к булевому типу, пригодному для сериализации в json --->
<cfargument name="x"/> <cfargument name="x"/>
<cfif isNull(arguments.x) OR isEmpty(arguments.x)> <cfif isNull(arguments.x) OR isEmpty(arguments.x)>
<cfreturn arguments.x/><!--- при сериализации преобразуется в null ---> <cfreturn arguments.x/>
<cfelse> <cfelse>
<cfreturn (arguments.x NEQ 0)/><!--- при сериализации дает false/true ---> <cfreturn (arguments.x NEQ 0)/>
</cfif> </cfif>
</cffunction> </cffunction>
<cfset request.castToBool=#castToBool#/> <cfset request.castToBool=#castToBool#/>
<cffunction name="castToBoolSimple" returntype="any"> <cffunction name="castToBoolSimple" returntype="any">
<!---
приводит поле резалтсета к булевому типу, пригодному для сериализации в json,
вместо null возвращает false
--->
<cfargument name="x"/> <cfargument name="x"/>
<cfreturn (arguments.x NEQ 0)/><!--- при сериализации дает false/true ---> <cfreturn (arguments.x NEQ 0)/>
</cffunction> </cffunction>
<cfset request.castToBoolSimple=#castToBoolSimple#/> <cfset request.castToBoolSimple=#castToBoolSimple#/>
<!--- почему-то эта функция недоступна onApplicationStart --->
<cffunction <cffunction
name="getStand" name="getStand"
access="private" access="private"
@@ -145,19 +115,14 @@
<cffunction name="onApplicationStart"> <cffunction name="onApplicationStart">
<!--- <cfset application.dbUser = "username" /> <cfset this.iamServiceUrl=locateIamService()/>
<cfset application.dbPass = "password" />--->
<!---<cfset application._taffy.settings.allowCrossDomain = true/>--->
<cfset this.iamServiceUrl=locateIamService()/> <!--- ***при недоступности будет падать все --->
<cfreturn super.onApplicationStart() /> <cfreturn super.onApplicationStart() />
</cffunction> </cffunction>
<cffunction name="locateIamService"><!--- *** архитектурный колхоз ---> <cffunction name="locateIamService">
<!--- почему-то мы не видим других функций, когда нас вызывают onApplicationStart. С другой стороны, а почему вообще должны вызывать без перезагрузки приложения --->
<cfset var stand=""/> <cfset var stand=""/>
<!--- дублируем код, потому что getStand отсюда почему-то не виден --->
<cftry> <cftry>
<cfquery name=qConfig> <cfquery name=qConfig>
select value as stand from config select value as stand from config
@@ -175,26 +140,13 @@
<cfcase value="prod"> <cfcase value="prod">
<cfreturn "https://auth-api.ngcloud.ru/api/v1" /> <cfreturn "https://auth-api.ngcloud.ru/api/v1" />
</cfcase> </cfcase>
<cfdefaultcase><!--- proceed to the legacy locator ---></cfdefaultcase> <cfdefaultcase></cfdefaultcase>
</cfswitch> </cfswitch>
<cfcatch type="ANY"> <cfcatch type="ANY">
<!--- do nothing, proceed to the legacy locator --->
<cfthrow message="IAM service unavailable" detail="there is no IAM for stand #stand# defined"/> <cfthrow message="IAM service unavailable" detail="there is no IAM for stand #stand# defined"/>
</cfcatch> </cfcatch>
</cftry> </cftry>
<!--- вот если ничего не прописано, попробуем по-старинке --->
<!--- <cfloop list="https://auth-api-dev.ngcloud.ru/api/v1,https://auth-api-test.ngcloud.ru/api/v1,https://auth-api.ngcloud.ru/api/v1" index="serviceUrl">
<cftry>
<cfhttp url=#serviceUrl# method="OPTIONS" result="resp" timeout=1/>
<cfreturn serviceUrl/>
<cfcatch type="any">
</cfcatch>
</cftry>
</cfloop>
<cfthrow message="IAM service unavailable" detail="cannot find IAM"/> --->
</cffunction> </cffunction>
<!--- <cffunction name="onRequest"> <!--- <cffunction name="onRequest">