Para mejorar la seguridad en nuestros proyectos, realizamos varios cambios en los archivos de la aplicación. Uno de estos cambios afectó un archivo crucial que indica a las aplicaciones cómo sincronizarse.
Para asegurarnos de que la sincronización siga funcionando correctamente, hicimos una modificación en el código del evento onValidate de la aplicación de sincronización. Todos los módulos futuros seguirán esta corrección en el código, lo cual proporcionará una mayor seguridad y eficiencia en nuestros proyectos.
Sin embargo, para los usuarios que estén utilizando una versión anterior del módulo de seguridad, será necesario realizar un pequeño ajuste en su aplicación para garantizar un funcionamiento correcto.
Aquí están los pasos a seguir:
1-Accede a la aplicación de sincronización:
En desarrollo, dentro de la carpeta de seguridad, abre la aplicación: "app_sync_apps".
Por defecto, la aplicación tiene el nombre "app_sync_apps", sin embargo, es posible cambiar el prefijo de la aplicación al crear el módulo de seguridad. Si no se encuentra la aplicación con el nombre predeterminado, utiliza solo el final del nombre de la aplicación: sync_apps.
2-Nuevo código para la aplicación "app_sync_apps":
La aplicación "app_sync_apps" se crea generando módulos de los tipos: Grupo, Aplicaciones y LDAP - Control Total. Asegúrate de conocer el tipo de módulo que se está utilizando antes de reemplazar los códigos.
Para los módulos de los tipos: Grupo:
Copia el siguiente código:
- $arr_apps = array();
- $_arr_apps = array_diff(scandir($this->Ini->path_aplicacao . "../_lib/_app_data/"), array('.','..', 'index.php', 'index.html'));
- foreach($_arr_apps as $k => $v)
- {
- if(substr($v, -12) != "_mob_ini.php")
- {
- $arr_apps[] = substr($v, 0, -8);
- }
- }
- if({check_deleted} == 'Y')
- {
- foreach($arr_apps as $k => $app)
- {
- require($this->Ini->path_aplicacao . "../_lib/_app_data/". $app . '_ini.php');
- $app = (isset($arr_data['friendly_url']) && !empty($arr_data['friendly_url']))?$arr_data['friendly_url']:$app;
- if( !is_dir($this->Ini->path_aplicacao . "../" . $app) )
- {
- unset($arr_apps[$k]);
- }
- }
- }
- sc_select(rs, "SELECT app_name FROM sec_apps");
- $arr_apps_db = array();
- while(!$rs->EOF)
- {
- $arr_apps_db[] = $rs->fields[0];
- $rs->MoveNext();
- }
- $rs->Close();
- $arr_apps = array_diff($arr_apps, $arr_apps_db);
- //========= Groups =========
- $arr_grp = array();
- sc_select(rs, "SELECT group_id FROM sec_groups");
- while(!$rs->EOF)
- {
- $arr_grp[] = $rs->fields[0];
- $rs->MoveNext();
- }
- $rs->Close();
- foreach($arr_apps as $k => $app)
- {
- require($this->Ini->path_aplicacao . "../_lib/_app_data/". $app . '_ini.php');
- $app_type = isset($arr_data['type'])?$arr_data['type']:'';
-
- $sql = "SELECT count(*) FROM sec_apps WHERE app_name = '". $app ."' ";
- sc_lookup(rs, $sql);
- if({rs[0][0]} == 0)
- {
- $sql = "INSERT INTO sec_apps(app_name, app_type) VALUES ('". $app ."', '".$app_type."')";
- sc_exec_sql( $sql );
- foreach($arr_grp as $grp)
- {
- $sql = "INSERT INTO sec_groups_apps(app_name, group_id) VALUES ('". $app ."', '". $grp ."')";
- sc_exec_sql( $sql );
- }
- }
- }
Para los módulos de los tipos: Aplicaciones:
Copia el siguiente código:
- $arr_apps = array();
- $_arr_apps = array_diff(scandir($this->Ini->path_aplicacao . "../_lib/_app_data/"), array('.','..', 'index.php', 'index.html'));
- foreach($_arr_apps as $k => $v)
- {
- if(substr($v, -12) != "_mob_ini.php")
- {
- $arr_apps[] = substr($v, 0, -8);
- }
- }
- if({check_deleted} == 'Y')
- {
- foreach($arr_apps as $k => $app)
- {
- require($this->Ini->path_aplicacao . "../_lib/_app_data/". $app . '_ini.php');
- $app = (isset($arr_data['friendly_url']) && !empty($arr_data['friendly_url']))?$arr_data['friendly_url']:$app;
- if( !is_dir($this->Ini->path_aplicacao . "../" . $app) )
- {
- unset($arr_apps[$k]);
- }
- }
- }
- sc_select(rs, "SELECT app_name FROM sec_apps");
- $arr_apps_db = array();
- while(!$rs->EOF)
- {
- $arr_apps_db[] = $rs->fields[0];
- $rs->MoveNext();
- }
- $rs->Close();
- $arr_apps = array_diff($arr_apps, $arr_apps_db);
- //========= Users =====
- $arr_usr = array();
- sc_select(rs, "SELECT login FROM sec_users");
- while(!$rs->EOF)
- {
- $arr_usr[] = $rs->fields[0];
- $rs->MoveNext();
- }
- $rs->Close();
- foreach($arr_apps as $k => $app)
- {
- require($this->Ini->path_aplicacao . "../_lib/_app_data/". $app . '_ini.php');
- $app_type = isset($arr_data['type'])?$arr_data['type']:'';
- $sql = "SELECT count(*) FROM sec_apps WHERE app_name = '". $app ."' ";
- sc_lookup(rs, $sql);
- if({rs[0][0]} == 0)
- {
- sc_exec_sql("INSERT INTO sec_apps(app_name, app_type) VALUES ('". $app ."', '".$app_type."')");
- foreach($arr_usr as $usr)
- {
- sc_exec_sql("INSERT INTO sec_users_apps(app_name, login) VALUES ('". $app ."', '".$usr."')");
- }
- }
- }
Para los módulos del tipo: LDAP - Control Total:
Copia el siguiente código:
- $arr_apps = array();
- $_arr_apps = array_diff(scandir($this->Ini->path_aplicacao . "../_lib/_app_data/"), array('.','..', 'index.php', 'index.html'));
- foreach($_arr_apps as $k => $v)
- {
- if(substr($v, -12) != "_mob_ini.php")
- {
- $arr_apps[] = substr($v, 0, -8);
- }
- }
- if({check_deleted} == 'Y')
- {
- foreach($arr_apps as $k => $app)
- {
- require($this->Ini->path_aplicacao . "../_lib/_app_data/". $app . '_ini.php');
- $app = (isset($arr_data['friendly_url']) && !empty($arr_data['friendly_url']))?$arr_data['friendly_url']:$app;
- if( !is_dir($this->Ini->path_aplicacao . "../" . $app) )
- {
- unset($arr_apps[$k]);
- }
- }
- }
-
- sc_select(rs, "SELECT app_name FROM sec_apps");
- $arr_apps_db = array();
- while(!$rs->EOF)
- {
- $arr_apps_db[] = $rs->fields[0];
- $rs->MoveNext();
- }
- $rs->Close();
- $arr_apps = array_diff($arr_apps, $arr_apps_db);
- //========= Users =========
- $arr_usr = array();
- sc_select(rs, "SELECT login FROM sec_users");
- while(!$rs->EOF)
- {
- $arr_usr[] = $rs->fields[0];
- $rs->MoveNext();
- }
- $rs->Close();
- foreach($arr_apps as $k => $app)
- {
- require($this->Ini->path_aplicacao . "../_lib/_app_data/". $app . '_ini.php');
- $app_type = isset($arr_data['type'])?$arr_data['type']:'';
- $sql = "SELECT count(*) FROM sec_apps WHERE app_name = '". $app ."' ";
- sc_lookup(rs, $sql);
- if({rs[0][0]} == 0)
- {
- sc_exec_sql("INSERT INTO sec_apps(app_name, app_type) VALUES ('". $app ."', '".$app_type."')");
- foreach($arr_usr as $usr)
- {
- sc_exec_sql("INSERT INTO sec_users_apps(app_name, login) VALUES ('". $app ."', '".$usr."')");
- }
- }
- }
3-Reemplaza el evento "onValidate":
En la carpeta de eventos, selecciona el evento "onValidate". Reemplaza el código existente con el que copiaste en el paso 2.
En el código proporcionado, las tablas están precedidas por el patrón "sec_" que es generado por el módulo de seguridad. En caso de que hayas cambiado el prefijo durante la generación de tu módulo, es necesario ajustar el código, reemplazando "sec_" por el prefijo utilizado.
4- generar el código fuente
Después de completar estos pasos y generar el código fuente, estarás listo para sincronizar las aplicaciones.