cleanup: trim application bootstrap comments
This commit is contained in:
@@ -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
@@ -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">
|
||||||
|
|||||||
Reference in New Issue
Block a user