diff options
Diffstat (limited to 'admin')
464 files changed, 7155 insertions, 8173 deletions
diff --git a/admin/Database/ogAdmBD-1.1.0-1.1.1.sql b/admin/Database/ogAdmBD-1.1.0-1.1.1.sql new file mode 120000 index 00000000..fd52f3c8 --- /dev/null +++ b/admin/Database/ogAdmBD-1.1.0-1.1.1.sql @@ -0,0 +1 @@ +ogAdmBD-1.1.0a-1.1.1.sql
\ No newline at end of file diff --git a/admin/Database/ogAdmBD-1.1.0a-1.1.1pre.sql b/admin/Database/ogAdmBD-1.1.0a-1.1.1.sql index d0b3e0a7..d0b3e0a7 100644 --- a/admin/Database/ogAdmBD-1.1.0a-1.1.1pre.sql +++ b/admin/Database/ogAdmBD-1.1.0a-1.1.1.sql diff --git a/admin/Database/ogAdmBD-1.1.1pre.sql b/admin/Database/ogAdmBD-1.1.1pre-1.1.1.sql index a89f37be..6d075d40 100644 --- a/admin/Database/ogAdmBD-1.1.1pre.sql +++ b/admin/Database/ogAdmBD-1.1.1pre-1.1.1.sql @@ -1,5 +1,5 @@ ### Fichero de actualización de la base de datos. -# OpenGnsys 1.1.1 +# OpenGnsys 1.1.1pre - OpenGnsys 1.1.1 #use ogAdmBD # Eliminar procedimiento y disparador para evitar errores de ejecución. @@ -28,6 +28,9 @@ DELIMITER ';' CALL addcols(); DROP PROCEDURE addcols; +# Cambio del nombre de las plantillas PXE para compatibilidad con UEFI. +UPDATE ordenadores SET arranque='10' WHERE arranque='01'; + # Nueva tabla de proyectores (ticket #794). DROP TABLE IF EXISTS projectors; CREATE TABLE `projectors` ( @@ -39,4 +42,3 @@ CREATE TABLE `projectors` ( lab_id INT(11) NOT NULL DEFAULT 0, PRIMARY KEY(`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; - diff --git a/admin/Sources/Clients/ogagent/linux/debian/changelog b/admin/Sources/Clients/ogagent/linux/debian/changelog index 176cac0d..056c0dc4 100644 --- a/admin/Sources/Clients/ogagent/linux/debian/changelog +++ b/admin/Sources/Clients/ogagent/linux/debian/changelog @@ -1,8 +1,15 @@ ogagent (1.1.1) unstable; urgency=medium - * OGAgent code retrieved from GitHub + * Set connection timeout + * Compatibility with "Exam Mode" from the University of Seville - -- Ramón M. Gómez <ramongomez@us.es> Sun, 3 Jun 2018 13:00:00 +0200 + -- Ramón M. Gómez <ramongomez@us.es> Thu, 23 May 2019 13:00:00 +0200 + +ogagent (1.1.0a) stable; urgency=medium + + * Fix a bug when activating the agent with some network devices + + -- Ramón M. Gómez <ramongomez@us.es> Wed, 22 May 2019 18:00:00 +0200 ogagent (1.1.0) stable; urgency=medium diff --git a/admin/Sources/Clients/ogagent/src/cfg/ogagent.cfg b/admin/Sources/Clients/ogagent/src/cfg/ogagent.cfg index 8888e88a..3fa38ab2 100644 --- a/admin/Sources/Clients/ogagent/src/cfg/ogagent.cfg +++ b/admin/Sources/Clients/ogagent/src/cfg/ogagent.cfg @@ -8,6 +8,8 @@ path=test_modules/server # Remote OpenGnsys Service remote=https://192.168.2.10/opengnsys/rest +# Alternate OpenGnsys Service (comment out to enable this option) +#altremote=https://10.0.2.2/opengnsys/rest # Log Level, if ommited, will be set to INFO log=DEBUG diff --git a/admin/Sources/Clients/ogagent/src/opengnsys/RESTApi.py b/admin/Sources/Clients/ogagent/src/opengnsys/RESTApi.py index 5caaf8c4..d785dfa7 100644 --- a/admin/Sources/Clients/ogagent/src/opengnsys/RESTApi.py +++ b/admin/Sources/Clients/ogagent/src/opengnsys/RESTApi.py @@ -26,9 +26,9 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -''' +""" @author: Adolfo Gómez, dkmaster at dkmon dot com -''' +""" # pylint: disable-msg=E1101,W0703 @@ -43,7 +43,8 @@ from .log import logger from .utils import exceptionToMessage -VERIFY_CERT = False +VERIFY_CERT = False # Do not check server certificate +TIMEOUT = 5 # Connection timout, in seconds class RESTError(Exception): @@ -66,30 +67,34 @@ try: except Exception: pass # In fact, isn't too important, but wil log warns to logging file + class REST(object): - ''' + """ Simple interface to remote REST apis. The constructor expects the "base url" as parameter, that is, the url that will be common on all REST requests Remember that this is a helper for "easy of use". You can provide your owns using requests lib for example. Examples: v = REST('https://example.com/rest/v1/') (Can omit trailing / if desired) v.sendMessage('hello?param1=1¶m2=2') - This will generate a GET message to https://example.com/rest/v1/hello?param1=1¶m2=2, and return the deserialized JSON result or an exception + This will generate a GET message to https://example.com/rest/v1/hello?param1=1¶m2=2, and return the + deserialized JSON result or an exception v.sendMessage('hello?param1=1¶m2=2', {'name': 'mario' }) - This will generate a POST message to https://example.com/rest/v1/hello?param1=1¶m2=2, with json encoded body {'name': 'mario' }, and also returns + This will generate a POST message to https://example.com/rest/v1/hello?param1=1¶m2=2, with json encoded + body {'name': 'mario' }, and also returns the deserialized JSON result or raises an exception in case of error - ''' + """ + def __init__(self, url): - ''' + """ Initializes the REST helper url is the full url of the REST API Base, as for example "https://example.com/rest/v1". @param url The url of the REST API Base. The trailing '/' can be included or omitted, as desired. - ''' + """ self.endpoint = url - + if self.endpoint[-1] != '/': self.endpoint += '/' - + # Some OSs ships very old python requests lib implementations, workaround them... try: self.newerRequestLib = requests.__version__.split('.')[0] >= '1' @@ -105,37 +110,39 @@ class REST(object): pass def _getUrl(self, method): - ''' + """ Internal method Composes the URL based on "method" @param method: Method to append to base url for composition - ''' + """ url = self.endpoint + method return url def _request(self, url, data=None): - ''' + """ Launches the request @param url: The url to obtain - @param data: if None, the request will be sent as a GET request. If != None, the request will be sent as a POST, with data serialized as JSON in the body. - ''' + @param data: if None, the request will be sent as a GET request. If != None, the request will be sent as a POST, + with data serialized as JSON in the body. + """ try: if data is None: logger.debug('Requesting using GET (no data provided) {}'.format(url)) - # Old requests version does not support verify, but they do not checks ssl certificate by default + # Old requests version does not support verify, but it do not checks ssl certificate by default if self.newerRequestLib: - r = requests.get(url, verify=VERIFY_CERT) + r = requests.get(url, verify=VERIFY_CERT, timeout=TIMEOUT) else: - r = requests.get(url) - else: # POST + r = requests.get(url) + else: # POST logger.debug('Requesting using POST {}, data: {}'.format(url, data)) if self.newerRequestLib: - r = requests.post(url, data=data, headers={'content-type': 'application/json'}, verify=VERIFY_CERT) + r = requests.post(url, data=data, headers={'content-type': 'application/json'}, + verify=VERIFY_CERT, timeout=TIMEOUT) else: r = requests.post(url, data=data, headers={'content-type': 'application/json'}) - r = json.loads(r.content) # Using instead of r.json() to make compatible with oooold rquests lib versions + r = json.loads(r.content) # Using instead of r.json() to make compatible with old requests lib versions except requests.exceptions.RequestException as e: raise ConnectionError(e) except Exception as e: @@ -144,17 +151,17 @@ class REST(object): return r def sendMessage(self, msg, data=None, processData=True): - ''' + """ Sends a message to remote REST server @param data: if None or omitted, message will be a GET, else it will send a POST @param processData: if True, data will be serialized to json before sending, else, data will be sent as "raw" - ''' + """ logger.debug('Invoking post message {} with data {}'.format(msg, data)) if processData and data is not None: data = json.dumps(data) - + url = self._getUrl(msg) logger.debug('Requesting {}'.format(url)) - + return self._request(url, data) diff --git a/admin/Sources/Clients/ogagent/src/opengnsys/config.py b/admin/Sources/Clients/ogagent/src/opengnsys/config.py index c86c6979..d1f3ede6 100644 --- a/admin/Sources/Clients/ogagent/src/opengnsys/config.py +++ b/admin/Sources/Clients/ogagent/src/opengnsys/config.py @@ -33,7 +33,6 @@ from __future__ import unicode_literals from ConfigParser import SafeConfigParser -from .log import logger config = None diff --git a/admin/Sources/Clients/ogagent/src/opengnsys/modules/server/OpenGnSys/__init__.py b/admin/Sources/Clients/ogagent/src/opengnsys/modules/server/OpenGnSys/__init__.py index 8ef866ad..24d69ee4 100644 --- a/admin/Sources/Clients/ogagent/src/opengnsys/modules/server/OpenGnSys/__init__.py +++ b/admin/Sources/Clients/ogagent/src/opengnsys/modules/server/OpenGnSys/__init__.py @@ -25,14 +25,12 @@ # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -''' +""" @author: Ramón M. Gómez, ramongomez at us dot es -''' +""" from __future__ import unicode_literals -import subprocess import threading -import thread import os import platform import time @@ -47,8 +45,28 @@ from opengnsys import operations from opengnsys.log import logger from opengnsys.scriptThread import ScriptExecutorThread + +# Check authorization header decorator +def check_secret(fnc): + """ + Decorator to check for received secret key and raise exception if it isn't valid. + """ + def wrapper(*args, **kwargs): + try: + this, path, get_params, post_params, server = args # @UnusedVariable + if this.random == server.headers['Authorization']: + fnc(*args, **kwargs) + else: + raise Exception('Unauthorized operation') + except Exception as e: + logger.error(e) + raise Exception(e) + + return wrapper + + # Error handler decorator. -def catchBackgroundError(fnc): +def catch_background_error(fnc): def wrapper(*args, **kwargs): this = args[0] try: @@ -57,32 +75,26 @@ def catchBackgroundError(fnc): this.REST.sendMessage('error?id={}'.format(kwargs.get('requestId', 'error')), {'error': '{}'.format(e)}) return wrapper + class OpenGnSysWorker(ServerWorker): name = 'opengnsys' - interface = None # Binded interface for OpenGnsys - loggedin = False # User session flag + interface = None # Bound interface for OpenGnsys + REST = None # REST object + logged_in = False # User session flag locked = {} random = None # Random string for secure connections length = 32 # Random string length - def checkSecret(self, server): - """ - Checks for received secret key and raise exception if it isn't valid. - """ - try: - if self.random != server.headers['Authorization']: - raise Exception('Unauthorized operation') - except Exception as e: - logger.error(e) - raise Exception(e) - def onActivation(self): """ Sends OGAgent activation notification to OpenGnsys server """ - self.cmd = None + t = 0 + # Generate random secret to send on activation + self.random = ''.join(random.choice(string.ascii_lowercase + string.digits) for _ in range(self.length)) # Ensure cfg has required configuration variables or an exception will be thrown - self.REST = REST(self.service.config.get('opengnsys', 'remote')) + url = self.service.config.get('opengnsys', 'remote') + self.REST = REST(url) # Get network interfaces until they are active or timeout (5 minutes) for t in range(0, 300): try: @@ -99,6 +111,29 @@ class OpenGnSysWorker(ServerWorker): # Raise error after timeout if not self.interface: raise e + # Loop to send initialization message + for t in range(0, 100): + try: + try: + self.REST.sendMessage('ogagent/started', {'mac': self.interface.mac, 'ip': self.interface.ip, + 'secret': self.random, 'ostype': operations.os_type, + 'osversion': operations.os_version}) + break + except: + # Trying to initialize on alternative server, if defined + # (used in "exam mode" from the University of Seville) + self.REST = REST(self.service.config.get('opengnsys', 'altremote')) + self.REST.sendMessage('ogagent/started', {'mac': self.interface.mac, 'ip': self.interface.ip, + 'secret': self.random, 'ostype': operations.os_type, + 'osversion': operations.os_version, 'alt_url': True}) + break + except: + time.sleep(3) + # Raise error after timeout + if 0 < t < 100: + logger.debug('Successful connection after {} tries'.format(t)) + elif t == 100: + raise Exception('Initialization error: Cannot connect to remote server') # Delete marking files for f in ['ogboot.me', 'ogboot.firstboot', 'ogboot.secondboot']: try: @@ -106,22 +141,19 @@ class OpenGnSysWorker(ServerWorker): except OSError: pass # Copy file "HostsFile.FirstOctetOfIPAddress" to "HostsFile", if it exists - # (used in "exam mode" of the University of Seville) - hostsFile = os.path.join(operations.get_etc_path(), 'hosts') - newHostsFile = hostsFile + '.' + self.interface.ip.split('.')[0] - if os.path.isfile(newHostsFile): - shutil.copyfile(newHostsFile, hostsFile) - # Generate random secret to send on activation - self.random = ''.join(random.choice(string.ascii_lowercase + string.digits) for _ in range(self.length)) - # Send initialization message - self.REST.sendMessage('ogagent/started', {'mac': self.interface.mac, 'ip': self.interface.ip, 'secret': self.random, 'ostype': operations.osType, 'osversion': operations.osVersion}) + # (used in "exam mode" from the University of Seville) + hosts_file = os.path.join(operations.get_etc_path(), 'hosts') + new_hosts_file = hosts_file + '.' + self.interface.ip.split('.')[0] + if os.path.isfile(new_hosts_file): + shutil.copyfile(new_hosts_file, hosts_file) def onDeactivation(self): """ Sends OGAgent stopping notification to OpenGnsys server """ logger.debug('onDeactivation') - self.REST.sendMessage('ogagent/stopped', {'mac': self.interface.mac, 'ip': self.interface.ip, 'ostype': operations.osType, 'osversion': operations.osVersion}) + self.REST.sendMessage('ogagent/stopped', {'mac': self.interface.mac, 'ip': self.interface.ip, + 'ostype': operations.os_type, 'osversion': operations.os_version}) def processClientMessage(self, message, data): logger.debug('Got OpenGnsys message from client: {}, data {}'.format(message, data)) @@ -132,18 +164,19 @@ class OpenGnSysWorker(ServerWorker): """ user, sep, language = data.partition(',') logger.debug('Received login for {} with language {}'.format(user, language)) - self.loggedin = True - self.REST.sendMessage('ogagent/loggedin', {'ip': self.interface.ip, 'user': user, 'language': language, 'ostype': operations.osType, 'osversion': operations.osVersion}) + self.logged_in = True + self.REST.sendMessage('ogagent/loggedin', {'ip': self.interface.ip, 'user': user, 'language': language, + 'ostype': operations.os_type, 'osversion': operations.os_version}) def onLogout(self, user): """ Sends session logout notification to OpenGnsys server """ logger.debug('Received logout for {}'.format(user)) - self.loggedin = False + self.logged_in = False self.REST.sendMessage('ogagent/loggedout', {'ip': self.interface.ip, 'user': user}) - def process_ogclient(self, path, getParams, postParams, server): + def process_ogclient(self, path, get_params, post_params, server): """ This method can be overridden to provide your own message processor, or better you can implement a method that is called exactly as "process_" + path[0] (module name has been removed from path @@ -151,11 +184,11 @@ class OpenGnSysWorker(ServerWorker): * Example: Imagine this invocation url (no matter if GET or POST): http://example.com:9999/Sample/mazinger/Z The HTTP Server will remove "Sample" from path, parse arguments and invoke this method as this: - module.processMessage(["mazinger","Z"], getParams, postParams) + module.processMessage(["mazinger","Z"], get_params, post_params) This method will process "mazinger", and look for a "self" method that is called "process_mazinger", and invoke it this way: - return self.process_mazinger(["Z"], getParams, postParams) + return self.process_mazinger(["Z"], get_params, post_params) In the case path is empty (that is, the path is composed only by the module name, like in "http://example.com/Sample", the "process" method will be invoked directly @@ -169,13 +202,18 @@ class OpenGnSysWorker(ServerWorker): operation = getattr(self, 'ogclient_' + path[0]) except Exception: raise Exception('Message processor for "{}" not found'.format(path[0])) - return operation(path[1:], getParams, postParams) + return operation(path[1:], get_params, post_params) - def process_status(self, path, getParams, postParams, server): + def process_status(self, path, get_params, post_params, server): """ - Returns client status. + Returns client status (OS type or execution status) and login status + :param path: + :param get_params: + :param post_params: + :param server: + :return: JSON object {"status": "status_code", "loggedin": boolean} """ - res = {'status': '', 'loggedin': self.loggedin} + res = {'status': '', 'loggedin': self.logged_in} if platform.system() == 'Linux': # GNU/Linux # Check if it's OpenGnsys Client. if os.path.exists('/scripts/oginit'): @@ -194,66 +232,83 @@ class OpenGnSysWorker(ServerWorker): res['status'] = 'OSX' return res - def process_reboot(self, path, getParams, postParams, server): + @check_secret + def process_reboot(self, path, get_params, post_params, server): """ - Launches a system reboot operation. + Launches a system reboot operation + :param path: + :param get_params: + :param post_params: + :param server: authorization header + :return: JSON object {"op": "launched"} """ logger.debug('Received reboot operation') - self.checkSecret(server) - # Rebooting thread. + + # Rebooting thread def rebt(): operations.reboot() threading.Thread(target=rebt).start() return {'op': 'launched'} - def process_poweroff(self, path, getParams, postParams, server): + @check_secret + def process_poweroff(self, path, get_params, post_params, server): """ - Launches a system power off operation. + Launches a system power off operation + :param path: + :param get_params: + :param post_params: + :param server: authorization header + :return: JSON object {"op": "launched"} """ logger.debug('Received poweroff operation') - self.checkSecret(server) - # Powering off thread. + + # Powering off thread def pwoff(): time.sleep(2) operations.poweroff() threading.Thread(target=pwoff).start() return {'op': 'launched'} - def process_script(self, path, getParams, postParams, server): + @check_secret + def process_script(self, path, get_params, post_params, server): """ Processes an script execution (script should be encoded in base64) + :param path: + :param get_params: + :param post_params: JSON object {"script": "commands"} + :param server: authorization header + :return: JSON object {"op": "launched"} """ logger.debug('Processing script request') - self.checkSecret(server) - # Decoding script. - script = urllib.unquote(postParams.get('script').decode('base64')).decode('utf8') + # Decoding script + script = urllib.unquote(post_params.get('script').decode('base64')).decode('utf8') script = 'import subprocess; subprocess.check_output("""{}""",shell=True)'.format(script) # Executing script. - if postParams.get('client', 'false') == 'false': + if post_params.get('client', 'false') == 'false': thr = ScriptExecutorThread(script) thr.start() else: self.sendClientMessage('script', {'code': script}) return {'op': 'launched'} - def process_logoff(self, path, getParams, postParams, server): + @check_secret + def process_logoff(self, path, get_params, post_params, server): """ - Closes user session. + Closes user session """ logger.debug('Received logoff operation') - self.checkSecret(server) - # Sending log off message to OGAgent client. + # Sending log off message to OGAgent client self.sendClientMessage('logoff', {}) return {'op': 'sent to client'} - def process_popup(self, path, getParams, postParams, server): + @check_secret + def process_popup(self, path, get_params, post_params, server): """ - Shows a message popup on the user's session. + Shows a message popup on the user's session """ logger.debug('Received message operation') - self.checkSecret(server) - # Sending popup message to OGAgent client. - self.sendClientMessage('popup', postParams) + # Sending popup message to OGAgent client + self.sendClientMessage('popup', post_params) return {'op': 'launched'} def process_client_popup(self, params): diff --git a/admin/Sources/Clients/ogagent/src/opengnsys/operations.py b/admin/Sources/Clients/ogagent/src/opengnsys/operations.py index dcfa40cb..1a274b20 100644 --- a/admin/Sources/Clients/ogagent/src/opengnsys/operations.py +++ b/admin/Sources/Clients/ogagent/src/opengnsys/operations.py @@ -26,25 +26,25 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -''' +""" @author: Adolfo Gómez, dkmaster at dkmon dot com -''' +""" # pylint: disable=unused-wildcard-import,wildcard-import from __future__ import unicode_literals - import sys + # Importing platform operations and getting operating system data. if sys.platform == 'win32': from .windows.operations import * # @UnusedWildImport - osType = 'Windows' - osVersion = getWindowsVersion() + os_type = 'Windows' + os_version = getWindowsVersion() else: if sys.platform == 'darwin': from .macos.operations import * # @UnusedWildImport - osType = 'MacOS' - osVersion = getMacosVersion().replace(',','') + os_type = 'MacOS' + os_version = getMacosVersion().replace(',', '') else: from .linux.operations import * # @UnusedWildImport - osType = 'Linux' - osVersion = getLinuxVersion().replace(',','') + os_type = 'Linux' + os_version = getLinuxVersion().replace(',', '') diff --git a/admin/Sources/Clients/ogagent/windows/build-windows.sh b/admin/Sources/Clients/ogagent/windows/build-windows.sh index d7248ab7..88a3c4ed 100755 --- a/admin/Sources/Clients/ogagent/windows/build-windows.sh +++ b/admin/Sources/Clients/ogagent/windows/build-windows.sh @@ -1,5 +1,7 @@ #!/bin/bash +cd "$(dirname "$0")" export WINEARCH=win32 -export WINEPREFIX=$(realpath $(dirname $0)/wine) +export WINEPREFIX=$PWD/wine +grep -o "[0-9]*\.[0-9]*\.[0-9]*" ../src/VERSION > VERSION wine cmd /c c:\\ogagent\\build.bat -chmod -x $(dirname $0)/../OGAgentSetup*.exe +chmod -x ../OGAgentSetup*.exe diff --git a/admin/Sources/Clients/ogagent/windows/ogagent.nsi b/admin/Sources/Clients/ogagent/windows/ogagent.nsi index 88c9ab2f..8caf6738 100644 --- a/admin/Sources/Clients/ogagent/windows/ogagent.nsi +++ b/admin/Sources/Clients/ogagent/windows/ogagent.nsi @@ -2,12 +2,17 @@ # Copy inside the two x86_xxxxx folders inside nsis plugins folder
Name "OpenGnsys Agent"
-# OpenGnsys Actor version
+# OpenGnsys Agent version
!define /file OGA_VERSION "src\VERSION"
+!define /file OGA_WINVERSION "windows\VERSION"
# General Symbol Definitions
!define REGKEY "SOFTWARE\OGAgent"
-!define VERSION ${OGA_VERSION}.0
+!if ${OGA_VERSION} == ${OGA_WINVERSION}
+ !define VERSION ${OGA_WINVERSION}.0
+!else
+ !define VERSION ${OGA_WINVERSION}.1
+!endif
!define COMPANY "OpenGnsys Project"
!define URL https://opengnsys.es
diff --git a/admin/Sources/Includes/ogAdmLib.c b/admin/Sources/Includes/ogAdmLib.c index a526d173..7faa9f08 100644 --- a/admin/Sources/Includes/ogAdmLib.c +++ b/admin/Sources/Includes/ogAdmLib.c @@ -7,53 +7,6 @@ // Descripción: Este fichero implementa una libreria de funciones para uso común de los servicios // ************************************************************************************************************************************************** // ________________________________________________________________________________________________________ -// Función: encriptar -// -// Descripción: -// Encripta una cadena -// Parametros: -// - cadena : Cadena a encriptar -// - ret : Longitud de la caden cadena encriptada -// ________________________________________________________________________________________________________ -char * encriptar(char *cadena,int*ret) -{ - /* - int i,lon; - char clave; - - clave = 12 & 0xFFU; // La clave elegida entre 0-255, en este caso 12 - lon=strlen(cadena); - for(i=0;i<lon;i++) - cadena[i]=((char)cadena[i] ^ clave) & 0xFF; - *ret=lon; - */ - return(cadena); -} -// ________________________________________________________________________________________________________ -// Función: desencriptar -// -// Descripción: -// Desencripta una cadena -// Parametros: -// - cadena : Cadena a desencriptar -// - ret : Longitud de la caden cadena encriptada -// ________________________________________________________________________________________________________ -char * desencriptar(char *cadena,int* ret) -{ - /* - int i,lon; - char clave; - - clave = 12 & 0xFFU; // La clave elegida entre 0-255, en este caso 12 - lon=strlen(cadena); - for(i=0;i<lon;i++) - cadena[i]=((char)cadena[i] ^ clave) & 0xFF; - *ret=lon; - */ - return(cadena); - -} -// ________________________________________________________________________________________________________ // Función: tomaHora // // Descripción: @@ -606,7 +559,6 @@ BOOLEAN mandaTrama(SOCKET *sock, TRAMA* ptrTrama) BOOLEAN res; lonprm=strlen(ptrTrama->parametros); - ptrTrama->parametros=encriptar(ptrTrama->parametros,&lonprm); // Encripta los parámetros sprintf(hlonprm,"%05X",LONGITUD_CABECERATRAMA+LONHEXPRM+lonprm); // Convierte en hexadecimal la longitud buffer=reservaMemoria(LONGITUD_CABECERATRAMA+LONHEXPRM+lonprm); // Longitud total de la trama @@ -699,7 +651,7 @@ TRAMA* recibeTrama(SOCKET *sock) if (!ptrTrama) return(NULL); memcpy(ptrTrama,buffer,LONGITUD_CABECERATRAMA); // Copia cabecera de trama lon=lSize-(LONGITUD_CABECERATRAMA+LONHEXPRM); // Longitud de los parametros aún encriptados - bufferd=desencriptar(&buffer[LONGITUD_CABECERATRAMA+LONHEXPRM],&lon); + bufferd = &buffer[LONGITUD_CABECERATRAMA+LONHEXPRM]; initParametros(ptrTrama,lon); // Desencripta la trama memcpy(ptrTrama->parametros,bufferd,lon); liberaMemoria((char*)buffer); @@ -1120,23 +1072,3 @@ TRAMA* recibeMensaje(SOCKET *socket_c) } // ________________________________________________________________________________________________________ - -int tomaPuerto(SOCKET s) -{ - struct sockaddr_in sin; - socklen_t addrlen = sizeof(sin); - int local_port; - - if(getpeername(s, (struct sockaddr *)&sin, &addrlen) == 0 - && sin.sin_family == AF_INET && - addrlen == sizeof(sin)) - { - local_port = ntohs(sin.sin_port); - } - else - local_port=-1; - - return(local_port); - -} - diff --git a/admin/Sources/Includes/ogAdmLib.h b/admin/Sources/Includes/ogAdmLib.h index 2e63bbc5..42279a3e 100644 --- a/admin/Sources/Includes/ogAdmLib.h +++ b/admin/Sources/Includes/ogAdmLib.h @@ -232,7 +232,7 @@ const char* tbErrores[]={"Se han generado errores. No se puede continuar la ejec "094-Ha habido algún problerma al procesar la actualización después de crear una imagen",\ "095-Ha habido algún problerma al procesar la actualización después de restaurar una imagen",\ "096-Ha habido algún problerma al procesar la actualización después de crear un software incremental",\ - + "097-Este fichero de log está obsoleto, este proceso usa ahora syslog para gestionar los mensajes de log",\ }; // ________________________________________________________________________________________________________ // Tabla de mensajes @@ -267,12 +267,12 @@ const char* tbMensajes[]={"",\ // ________________________________________________________________________________________________________ // Prototipo de funciones // ________________________________________________________________________________________________________ -char *desencriptar(char *,int*); -char *encriptar(char *,int*); struct tm * tomaHora(); void registraLog(const char *,const char *,int ); void errorLog(const char *,int ,int); +#define og_log(err, swe) errorLog(__FUNCTION__, err, swe) void errorInfo(const char *,char *); +#define og_info(err) errorInfo(__FUNCTION__, err) void infoLog(int); void infoDebug(char*); BOOLEAN validacionParametros(int,char**,int); @@ -310,5 +310,10 @@ BOOLEAN escribeArchivo(char *,char*); BOOLEAN sendArchivo(SOCKET *,char *); BOOLEAN recArchivo(SOCKET *,char *); SOCKET TCPConnect(char *,char*); -int tomaPuerto(SOCKET); + +#include <stddef.h> /* for offsetof. */ + +#define container_of(ptr, type, member) ({ \ + typeof( ((type *)0)->member ) *__mptr = (ptr); \ + (type *)( (char *)__mptr - offsetof(type,member) );}) diff --git a/admin/Sources/Services/ogAdmAgent/Makefile b/admin/Sources/Services/ogAdmAgent/Makefile index 143c4c81..b9d39b9b 100644 --- a/admin/Sources/Services/ogAdmAgent/Makefile +++ b/admin/Sources/Services/ogAdmAgent/Makefile @@ -8,8 +8,7 @@ INSTALL_DIR := /opt/opengnsys # Opciones de compilacion CFLAGS := $(shell mysql_config --cflags) -CFLAGS += -O0 -g -Wall -I../../Includes # Depuracion -#CFLAGS += -O3 -I../../Includes # Optimizacion +CFLAGS += -g -Wall -I../../Includes CPPFLAGS := $(CFLAGS) # Opciones de linkado @@ -23,7 +22,6 @@ all: $(PROYECTO) $(PROYECTO): $(OBJS) g++ $(LDFLAGS) $(OBJS) -o $(PROYECTO) -# strip $(PROYECTO) # Optimizacion install: $(PROYECTO) cp $(PROYECTO) $(INSTALL_DIR)/sbin diff --git a/admin/Sources/Services/ogAdmAgent/sources/ogAdmAgent.cpp b/admin/Sources/Services/ogAdmAgent/sources/ogAdmAgent.cpp index cce297fe..2f0f442b 100644 --- a/admin/Sources/Services/ogAdmAgent/sources/ogAdmAgent.cpp +++ b/admin/Sources/Services/ogAdmAgent/sources/ogAdmAgent.cpp @@ -1,911 +1,914 @@ -// ********************************************************************************************************
-// Servicio: ogAdmAgent
-// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
-// Fecha Creación: Marzo-2010
-// Fecha Última modificación: Marzo-2010
-// Nombre del fichero: ogAdmAgent.cpp
-// Descripción: Este fichero implementa el servicio agente del sistema. Revisa a intervalos
-// regulares la base de datos para comprobar si existen acciones programadas.
-// ********************************************************************************************************
-#include "ogAdmAgent.h"
-#include "ogAdmLib.c"
-//________________________________________________________________________________________________________
-// Función: tomaConfiguracion
-//
-// Descripción:
-// Lee el fichero de configuración del servicio
-// Parámetros:
-// filecfg : Ruta completa al fichero de configuración
-// Devuelve:
-// TRUE: Si el proceso es correcto
-// FALSE: En caso de ocurrir algún error
-//________________________________________________________________________________________________________
-BOOLEAN tomaConfiguracion(char* filecfg)
-{
- char modulo[] = "tomaConfiguracion()";
-
- if (filecfg == NULL || strlen(filecfg) == 0) {
- errorLog(modulo, 1, FALSE); // Fichero de configuración del servicio vacÃo
- return (FALSE);
- }
- FILE *fcfg;
- long lSize;
- char * buffer, *lineas[MAXPRM], *dualparametro[2];
- int i, numlin, resul;
-
- fcfg = fopen(filecfg, "rt");
- if (fcfg == NULL) {
- errorLog(modulo, 2, FALSE); // No existe fichero de configuración del servicio
- return (FALSE);
- }
-
- fseek(fcfg, 0, SEEK_END);
- lSize = ftell(fcfg); // Obtiene tamaño del fichero.
- rewind(fcfg);
- buffer = (char*) reservaMemoria(lSize + 1); // Toma memoria para el buffer de lectura.
- if (buffer == NULL) { // No hay memoria suficiente para el buffer
- errorLog(modulo, 3, FALSE);
- return (FALSE);
- }
- fread(buffer, 1, lSize, fcfg); // Lee contenido del fichero
- buffer[lSize] = (char) NULL;
- fclose(fcfg);
-
- servidoradm[0] = (char) NULL; //inicializar variables globales
- puerto[0] = (char) NULL;
- usuario[0] = (char) NULL;
- pasguor[0] = (char) NULL;
- datasource[0] = (char) NULL;
- catalog[0] = (char) NULL;
-
- numlin = splitCadena(lineas, buffer, '\n');
- for (i = 0; i < numlin; i++) {
- splitCadena(dualparametro, lineas[i], '=');
- resul = strcmp(StrToUpper(dualparametro[0]), "SERVIDORADM");
- if (resul == 0)
- strcpy(servidoradm, dualparametro[1]);
- resul = strcmp(StrToUpper(dualparametro[0]), "PUERTO");
- if (resul == 0)
- strcpy(puerto, dualparametro[1]);
- resul = strcmp(StrToUpper(dualparametro[0]), "USUARIO");
- if (resul == 0)
- strcpy(usuario, dualparametro[1]);
- resul = strcmp(StrToUpper(dualparametro[0]), "PASSWORD");
- if (resul == 0)
- strcpy(pasguor, dualparametro[1]);
- resul = strcmp(StrToUpper(dualparametro[0]), "DATASOURCE");
- if (resul == 0)
- strcpy(datasource, dualparametro[1]);
- resul = strcmp(StrToUpper(dualparametro[0]), "CATALOG");
- if (resul == 0)
- strcpy(catalog, dualparametro[1]);
- }
- if (servidoradm[0] == (char) NULL) {
- errorLog(modulo, 4, FALSE); // Falta parámetro SERVIDORADM
- return (FALSE);
- }
- if (puerto[0] == (char) NULL) {
- errorLog(modulo, 5, FALSE); // Falta parámetro PUERTO
- return (FALSE);
- }
- if (usuario[0] == (char) NULL) {
- errorLog(modulo, 6, FALSE); // Falta parámetro USUARIO
- return (FALSE);
- }
- if (pasguor[0] == (char) NULL) {
- errorLog(modulo, 7, FALSE); // Falta parámetro PASSWORD
- return (FALSE);
- }
- if (datasource[0] == (char) NULL) {
- errorLog(modulo, 8, FALSE); // Falta parámetro DATASOURCE
- return (FALSE);
- }
- if (catalog[0] == (char) NULL) {
- errorLog(modulo, 9, FALSE); // Falta parámetro CATALOG
- return (FALSE);
- }
- return (TRUE);
-}
-// ________________________________________________________________________________________________________
-//
-// Función: diadelaSemana
-//
-// Descripción:
-// Calcula el número del dÃa de la semana que corresponde a una fecha
-// Parámetros:
-// - dia: Un dÃa
-// - mes: Un mes
-// - anno: Un año
-// Devuelve:
-// El número del dÃa de la semana: 1=Lunes, 2=martes ... 6=sábado 7=domingo
-// ________________________________________________________________________________________________________
-
-int diadelaSemana(WORD dia,WORD mes,WORD anno)
-{
- int i,cont,dias_anuales;
- int desplazamiento_dias=6;
- int orddiasem;
-
- cont =0;
- for (i=1900;i<anno;i++){
- if (bisiesto(i)) dias_anuales=366; else dias_anuales=365;
- cont+=dias_anuales;
- }
- for (i=1;i<mes;i++){
- if (i!=2)
- cont+=dias_meses[i];
- else{
- if (bisiesto(anno))
- cont+=29;
- else
- cont+=28;
- }
- }
- cont+=dia+desplazamiento_dias;
- orddiasem=(cont%7);
- if(orddiasem==0) orddiasem=7;
- return(orddiasem);
-}
-// ________________________________________________________________________________________________________
-//
-// Función: bisiesto
-//
-// Descripción:
-// Calcula si un año es bisiesto o no lo es
-// Parámetros:
-// - anno: Un año
-// Devuelve:
-// TRUE si el año es bisiesto
-// FALSE si no es bisiesto
-// ________________________________________________________________________________________________________
-
-BOOLEAN bisiesto(WORD anno){
- return(anno%4==0);
-}
-// ________________________________________________________________________________________________________
-//
-// Función: semanadelMes
-//
-// Descripción:
-// Calcula el número de semana perteneciente a un dÃa del mes
-// Parámetros:
-// - ordiasem_1: Orden semanal (1,2...) del primer dia del mes que se pasa como parámetro
-// - diames: El mes concreto
-// Devuelve:
-// El número del dÃa de la semana: 1=Lunes, 2=martes ... 6=sábado 7=domingo , de ese mes
-// ________________________________________________________________________________________________________
-
-int semanadelMes(int ordiasem_1,int diames)
-{
- int nwdia,resto,cociente;
-
- nwdia=diames+ordiasem_1-1;
- cociente=nwdia/7;
- resto=nwdia%7;
- if(resto>0) cociente++;
- return(cociente);
-}
-// ________________________________________________________________________________________________________
-//
-// Función: buscaAccion
-//
-// Descripción:
-// Busca en la base de datos, acciones programadas
-// Parámetros:
-// - db: Objeto base de datos (operativo)
-// - dia : DÃa actual del mes
-// - mes : mes en curso
-// - anno : Año en curso
-// - hora : Hora actual
-// - minutos : Minutos actuales
-// - diasemana : Dia de la semana 1=lunes,2=martes ... ( 0 Domingo)
-// Devuelve:
-// TRUE: Si el proceso es correcto
-// FALSE: En caso de ocurrir algún error
-// ________________________________________________________________________________________________________
-
-BOOLEAN buscaAccion(Database db,WORD dia,WORD mes,WORD anno,WORD hora,WORD minutos,WORD diasemana)
-{
- char msglog[LONSTD], sqlstr[LONSQL];
- Table tbl;
- BYTE swampm,bitsemana;
- int ordsem,ordulsem,ordiasem_1,maxdias;
- int sesionprog;
- char modulo[] = "buscaAccion()";
-
- /* Año de comienzo */
- anno=anno-ANNOREF; //
- /* Preparación hora */
- if(hora>11){
- hora-=12;
- swampm=1; // Es P.M.
- }
- else
- swampm=0; // Es am
- /* Preparación semana */
- if(diasemana==0) diasemana=7; // El domingo
-
- // Cuestión semanas
- ordiasem_1=diadelaSemana(1,mes,anno+2009);
- ordsem=semanadelMes(ordiasem_1,dia); // Calcula el número de la semana
- if (mes!=2) // Toma el último dÃa de ese mes
- maxdias=dias_meses[mes];
- else{
- if (bisiesto(anno+ANNOREF))
- maxdias=29;
- else
- maxdias=28;
- }
- ordulsem=semanadelMes(ordiasem_1,maxdias); // Calcula el número de la última semana
- bitsemana=HEX_semanas[ordsem];
- if(ordsem==ordulsem) // Si es la última semana del mes
- bitsemana|=HEX_semanas[6];
-
- sprintf(sqlstr,"SELECT DISTINCT idprogramacion,tipoaccion,identificador,sesion,idcentro,"\
- "tareas.descripcion as descritarea"\
- " FROM programaciones"\
- " LEFT OUTER JOIN tareas ON tareas.idtarea=programaciones.identificador"\
- " WHERE suspendida=0 "\
- " AND (annos & %d <> 0) "\
- " AND (meses & %d<>0) "\
- " AND ((diario & %d<>0) OR (dias & %d<>0) OR (semanas & %d<>0))"\
- " AND (horas & %d<>0) AND ampm=%d AND minutos=%d",\
- HEX_annos[anno],\
- HEX_meses[mes],\
- HEX_dias[dia],\
- HEX_diasemana[diasemana],\
- bitsemana,\
- HEX_horas[hora],\
- swampm,minutos);
-
- if (!db.Execute(sqlstr, tbl)) { // Error al leer
- errorLog(modulo, 21, FALSE);
- db.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
- if(tbl.ISEOF()){
- return(TRUE); // No hay acciones programadas
- }
-
- while(!tbl.ISEOF()){
- if(!tbl.Get("idprogramacion",idprogramacion)){
- tbl.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
- if(!tbl.Get("tipoaccion",tipoaccion)){
- tbl.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
- if(!tbl.Get("identificador",idtipoaccion)){
- tbl.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
- if(!tbl.Get("sesion",sesionprog)){
- tbl.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
- if(!tbl.Get("idcentro",idcentro)){
- tbl.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
-
- if(tipoaccion==EJECUCION_COMANDO){ // Es una programación de un comando
- return(ejecutarComando(db,idprogramacion,sesionprog));
- }
- else{
-
- if(tipoaccion==EJECUCION_TAREA){
- if(!tbl.Get("descritarea",descriaccion)){
- tbl.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
- return(ejecutarTarea(db,idprogramacion,idtipoaccion));
- }
- else{
- if(tipoaccion==EJECUCION_RESERVA){
- EjecutarReserva(idtipoaccion,db); // Es una programación de un trabajo
- }
- }
- }
- tbl.MoveNext();
- }
- return(TRUE);
-}
-// ________________________________________________________________________________________________________
-//
-// Función: ejecutarComando
-//
-// Descripción:
-// Ejecuta un comando programado
-// Parámetros:
-// - db: Objeto base de datos (operativo)
-// - idcomando: Identificador del comando
-// - sesion: Sesión correspondiente al comando cuando se grabó en la tabla acciones
-// Devuelve:
-// TRUE: Si el proceso es correcto
-// FALSE: En caso de ocurrir algún error
-// ________________________________________________________________________________________________________
-
-BOOLEAN ejecutarComando(Database db,int idprogramacion,int sesion )
-{
- struct tm* st;
- char msglog[LONSTD], sqlstr[LONSQL];
- char fechahorareg[24];
- char modulo[] = "ejecutarComando()";
-
- st = tomaHora();
- sprintf(fechahorareg,"%d/%d/%d %d:%d:%d", st->tm_year + 1900, st->tm_mon + 1,
- st->tm_mday, st->tm_hour, st->tm_min, st->tm_sec);
-
- sprintf(sqlstr,"UPDATE acciones SET estado=%d,idprogramacion=%d,fechahorareg='%s'"\
- " WHERE sesion=%d", ACCION_INICIADA,idprogramacion,fechahorareg,sesion);
-
- if (!db.Execute(sqlstr)) { // Error al recuperar los datos
- errorLog(modulo, 21, FALSE);
- db.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
- return(enviaPeticion(idprogramacion));
-}
-// ________________________________________________________________________________________________________
-//
-// Función: ejecutarProcedimiento
-//
-// Descripción:
-// Ejecuta un procedimiento programado
-// Parámetros:
-// - db: Objeto base de datos (operativo)
-// - idprocedimiento: Identificador del procedimiento
-// - ambito: Ãmbito de aplicación
-// - idambito: Identificador del ámbito
-// - restrambito: cadena con los identificadores de los ordenadores a los que se aplica la acción
-// Devuelve:
-// TRUE: Si el proceso es correcto
-// FALSE: En caso de ocurrir algún error
-// ________________________________________________________________________________________________________
-
-BOOLEAN ejecutarProcedimiento(Database db,int idprocedimiento,int ambito,int idambito,char* restrambito)
-{
- char msglog[LONSTD], sqlstr[LONSQL],*parametros;
- Table tbl;
- int procedimientoid,idcomando,lonprm;
- char modulo[] = "ejecutarProcedimiento()";
-
- sprintf(sqlstr,"SELECT idcomando,procedimientoid,parametros,length(parametros) as lonprm"\
- " FROM procedimientos_acciones"\
- " WHERE idprocedimiento=%d ORDER BY orden",idprocedimiento);
-
- if (!db.Execute(sqlstr, tbl)) { // Error al leer
- errorLog(modulo, 21, FALSE);
- db.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
-
- if(tbl.ISEOF()){
- return(TRUE); // No exustde tarea
- }
- while(!tbl.ISEOF()){
- if(!tbl.Get("procedimientoid",procedimientoid)){
- tbl.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
- if(procedimientoid>0){ // Procedimiento recursivo
- if(!ejecutarProcedimiento(db,procedimientoid,ambito,idambito,restrambito)){
- return(false);
- }
- }
- else{
- if(!tbl.Get("lonprm",lonprm)){
- tbl.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
- parametros = reservaMemoria(lonprm+1); // Reserva para almacenar los parametros del procedimiento
- if (parametros == NULL) {
- errorLog(modulo, 3, FALSE);
- return (FALSE);
- }
- if(!tbl.Get("parametros",parametros)){
- tbl.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- liberaMemoria(parametros);
- return (FALSE);
- }
- liberaMemoria(parametros);
- if(!tbl.Get("idcomando",idcomando)){
- tbl.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
-
- if(!insertaComando(db,idcomando,parametros,idprocedimiento,ambito,idambito,restrambito))
- return(false);
- }
- tbl.MoveNext();
- }
- return(TRUE);
-}
-// ________________________________________________________________________________________________________
-//
-// Función: ejecutarTarea
-//
-// Descripción:
-// Ejecuta una tarea programada
-// Parámetros:
-// - db: Objeto base de datos (operativo)
-// - idtarea: Identificador de la tarea
-// - idprogramacion: Identificador de la programación
-// Devuelve:
-// TRUE: Si el proceso es correcto
-// FALSE: En caso de ocurrir algún error
-// ________________________________________________________________________________________________________
-
-BOOLEAN ejecutarTarea(Database db, int idprogramacion, int idtarea)
-{
- char msglog[LONSTD], sqlstr[LONSQL];
- Table tbl;
- int tareaid,ambito,idambito,idprocedimiento,lonrestrambito;
- char* restrambito;
- char modulo[] = "ejecutarTarea()";
-
- sprintf(sqlstr,"SELECT tareas_acciones.orden,tareas_acciones.idprocedimiento,tareas_acciones.tareaid,"\
- " tareas.ambito,tareas.idambito,tareas.restrambito,length(tareas.restrambito) as lonrestrambito"\
- " FROM tareas"\
- " INNER JOIN tareas_acciones ON tareas_acciones.idtarea=tareas.idtarea"\
- " WHERE tareas_acciones.idtarea=%d ORDER BY tareas_acciones.orden",idtarea);
-
- if (!db.Execute(sqlstr, tbl)) { // Error al leer
- errorLog(modulo, 21, FALSE);
- db.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
-
- if(tbl.ISEOF()){
- return(TRUE); // No existe tarea
- }
-
- while(!tbl.ISEOF()){
- if(!tbl.Get("tareaid",tareaid)){
- tbl.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
- if(tareaid>0){ // Tarea recursiva
- if(!ejecutarTarea(db,idprogramacion,tareaid)){
- return(false);
- }
- }
- else{
- if(!tbl.Get("ambito",ambito)){
- tbl.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
- if(!tbl.Get("idambito",idambito)){
- tbl.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
- if(!tbl.Get("lonrestrambito",lonrestrambito)){
- tbl.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
- restrambito = reservaMemoria(lonrestrambito+1);
- if (restrambito == NULL) {
- errorLog(modulo, 3, FALSE);
- return (FALSE);
- }
- if(!tbl.Get("restrambito",restrambito)){
- tbl.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- liberaMemoria(restrambito);
- return (FALSE);
- }
- liberaMemoria(restrambito);
- RecopilaIpesMacs(db,ambito,idambito,restrambito); // Recopila Ipes del ámbito
- if(!tbl.Get("idprocedimiento",idprocedimiento)){
- tbl.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
- sesion=time(NULL);
-
- if(!ejecutarProcedimiento(db,idprocedimiento,ambito,idambito,restrambito))
- return(FALSE);
- }
- tbl.MoveNext();
- }
- return(enviaPeticion(idprogramacion));
-}
-// ________________________________________________________________________________________________________
-//
-// Función: ejecutarTarea
-//
-// Descripción:
-// Registra un procedimiento para un ambito concreto
-// Parámetros:
-// - db: Objeto base de datos (operativo)
-// - idcomando: Identificador del comando
-// - idprocedimiento: Identificador del procedimiento
-// - ambito: Ãmbito de aplicación
-// - idambito: Identificador del ámbito
-// - restrambito: cadena con los identificadores de los ordenadores a los que se aplica la acción
-// Devuelve:
-// TRUE: Si el proceso es correcto
-// FALSE: En caso de ocurrir algún error
-//________________________________________________________________________________________________________
-BOOLEAN insertaComando(Database db,int idcomando,char*parametros,int idprocedimiento,int ambito,int idambito,char*restrambito)
-{
- char msglog[LONSTD], sqlstr[LONSQL];
- struct tm* st;
- char *auxID[MAXIMOS_CLIENTES],*auxIP[MAXIMOS_CLIENTES];
- char fechahorareg[24];
- int i;
- char modulo[] = "insertaComando()";
-
- if(concli==0) return(TRUE); // No hay ordenadores en el ámbito
-
- st = tomaHora();
- sprintf(fechahorareg,"%d/%d/%d %d:%d:%d", st->tm_year + 1900, st->tm_mon + 1, st->tm_mday, st->tm_hour, st->tm_min, st->tm_sec);
-
- splitCadena(auxID,cadenaid,',');
- splitCadena(auxIP,cadenaip,';');
-
- for (i=0;i<concli;i++){
- sprintf(sqlstr,"INSERT INTO acciones (idordenador,tipoaccion,idtipoaccion,descriaccion,ip,"\
- "sesion,idcomando,parametros,fechahorareg,estado,resultado,ambito,idambito,"\
- "restrambito,idprocedimiento,idcentro,idprogramacion)"\
- " VALUES (%s,%d,%d,'%s','%s',%d,%d,'%s','%s',%d,%d,%d,%d,'%s',%d,%d,%d)",\
- auxID[i],tipoaccion,idtipoaccion,descriaccion,auxIP[i],sesion,idcomando,parametros,fechahorareg,\
- ACCION_INICIADA,ACCION_SINRESULTADO,ambito,idambito,restrambito,idprocedimiento,idcentro,idprogramacion);
- if (!db.Execute(sqlstr)) { // Error al recuperar los datos
- errorLog(modulo, 21, FALSE);
- db.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
- }
- return(TRUE);
-}
-// _____________________________________________________________________________________________________________
-// Función: EjecutarReserva
-//
-// Descripción:
-// Registra una acción (Tarea) y la envÃa para su ejecución
-// Parámetros:
-// - idreserva : Identificador de la reserva
-// - db: una conexion ADO operativa
-// - parametros: Parámetros de la acción
-// _____________________________________________________________________________________________________________
-BOOLEAN EjecutarReserva(int idreserva,Database db )
-{
-
-
- return(true);
-}
-// _____________________________________________________________________________________________________________
-// Función: enviaPeticion
-//
-// Descripción:
-// Hace una petición al servidor para que actualice los ordenadores implicados en la programación
-// Parámetros:
-// - idprogramacion: Identificador de la programación
-// _____________________________________________________________________________________________________________
-BOOLEAN enviaPeticion(int idprogramacion)
-{
- int lon;
- TRAMA *ptrTrama;
- SOCKET socket_c;
- char modulo[] = "enviaPeticion()";
-
- /* Envio de comandos a clientes */
- ptrTrama=(TRAMA *)reservaMemoria(sizeof(TRAMA));
- if (ptrTrama == NULL) { // No hay memoria suficiente para el bufer de las tramas
- errorLog(modulo, 3, FALSE);
- return(FALSE);
- }
- initParametros(ptrTrama,0);
- lon=sprintf(ptrTrama->parametros,"nfn=envioProgramacion\r"); // Nombre de la función a ejecutar en el servidor
- lon+=sprintf(ptrTrama->parametros+lon,"idp=%d\r",idprogramacion); // Configuración de los Sistemas Operativos del cliente
-
- if(!enviaMensaje(&socket_c,ptrTrama,MSG_PETICION)){
- errorLog(modulo,91,FALSE);
- liberaMemoria(ptrTrama);
- return(FALSE);
- }
- liberaMemoria(ptrTrama);
- return(TRUE);
-}
-// _____________________________________________________________________________________________________________
-//
-// Función: RecopilaIpesMacs
-//
-// Descripción :
-// Recopila las IPes, las Macs y los identificadores de ordenadores de un ámbito determinado
-//
-// Especificaciones:
-// Esta Función recibe tres parámatros:
-// db : Un objeto Base de datos totalmente operativo
-// ambito: Tipo de ámbito
-// idambito: Identificador del ámbito
-// Devuelve:
-// Todas los identificadores de ordenadores , las ipes y las macs de los ordenadores que componen el ámbito
-// Para ellos habrá que tener declarada tres variables globales :
-// cadenaid,cadenaip y cadenamac
-// _____________________________________________________________________________________________________________
-
-BOOLEAN RecopilaIpesMacs(Database db,int ambito,int idambito,char *restrambito)
-{
- char sqlstr[LONSQL];
-
- concli=0;
- /* Reserva memoria al meno para caracter nulo */
- cadenaid=(char*) reservaMemoria(1);
- cadenaip=(char*) reservaMemoria(1);
- cadenamac=(char*) reservaMemoria(1);
-
- switch(ambito){
- case AMBITO_CENTROS :
- sprintf(sqlstr,"SELECT idcentro FROM centros WHERE idcentro=%d",idambito);
- RecorreCentro(db,sqlstr);
- break;
- case AMBITO_GRUPOSAULAS :
- sprintf(sqlstr,"SELECT idgrupo FROM grupos WHERE idgrupo=%d AND tipo=%d",idambito,AMBITO_GRUPOSAULAS);
- RecorreGruposAulas(db,sqlstr);
- break;
- case AMBITO_AULAS :
- sprintf(sqlstr,"SELECT idaula FROM aulas WHERE idaula=%d",idambito);
- RecorreAulas(db,sqlstr);
- break;
- case AMBITO_GRUPOSORDENADORES :
- sprintf(sqlstr,"SELECT idgrupo FROM gruposordenadores WHERE idgrupo=%d",idambito);
- RecorreGruposOrdenadores(db,sqlstr);
- break;
- case AMBITO_ORDENADORES :
- sprintf(sqlstr,"SELECT ip,mac,idordenador FROM ordenadores WHERE idordenador=%d",idambito);
- RecorreOrdenadores(db,sqlstr);
- break;
- default: // Se trata de un conjunto aleatorio de ordenadores
- sprintf(sqlstr,"SELECT ip,mac,idordenador FROM ordenadores WHERE idordenador IN (%s)",restrambito);
- RecorreOrdenadores(db,sqlstr);
-
- }
- return (TRUE);
-}
-//________________________________________________________________________________________________________
-
-BOOLEAN RecorreCentro(Database db, char* sqlstr)
-{
- char msglog[LONSTD];
- Table tbl;
- int idcentro;
- char modulo[] = "RecorreCentro()";
-
- if (!db.Execute(sqlstr, tbl)) { // Error al leer
- errorLog(modulo, 21, FALSE);
- db.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
- if(!tbl.ISEOF()){
- if(!tbl.Get("idcentro",idcentro)){
- tbl.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
- sprintf(sqlstr,"SELECT idgrupo FROM grupos WHERE idcentro=%d AND grupoid=0 AND tipo=%d",idcentro,AMBITO_GRUPOSAULAS);
- RecorreGruposAulas(db,sqlstr);
- sprintf(sqlstr,"SELECT idaula FROM aulas WHERE idcentro=%d AND grupoid=0",idcentro);
- RecorreAulas(db,sqlstr);
- }
- return (TRUE);
-}
-//________________________________________________________________________________________________________
-
-BOOLEAN RecorreGruposAulas(Database db, char* sqlstr)
-{
- char msglog[LONSTD];
- Table tbl;
- int idgrupo;
- char modulo[] = "RecorreGruposAulas()";
-
- if (!db.Execute(sqlstr, tbl)) { // Error al leer
- errorLog(modulo, 21, FALSE);
- db.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
- while(!tbl.ISEOF()){
- if(!tbl.Get("idgrupo",idgrupo)){
- tbl.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
- sprintf(sqlstr,"SELECT idgrupo FROM grupos WHERE grupoid=%d AND tipo=%d",idgrupo,AMBITO_GRUPOSAULAS);
- RecorreGruposAulas(db,sqlstr);
- sprintf(sqlstr,"SELECT idaula FROM aulas WHERE grupoid=%d",idgrupo);
- RecorreAulas(db,sqlstr);
- tbl.MoveNext();
- }
- return (TRUE);
-}
-//________________________________________________________________________________________________________
-
-BOOLEAN RecorreAulas(Database db, char* sqlstr)
-{
- char msglog[LONSTD];
- Table tbl;
- int idaula;
- char modulo[] = "RecorreAulas()";
-
- if (!db.Execute(sqlstr, tbl)) { // Error al leer
- errorLog(modulo, 21, FALSE);
- db.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
- while(!tbl.ISEOF()){
- if(!tbl.Get("idaula",idaula)){
- tbl.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
- sprintf(sqlstr,"SELECT idgrupo FROM gruposordenadores WHERE idaula=%d AND grupoid=0",idaula);
- RecorreGruposOrdenadores(db,sqlstr);
- sprintf(sqlstr,"SELECT ip,mac,idordenador FROM ordenadores WHERE idaula=%d AND grupoid=0",idaula);
- RecorreOrdenadores(db,sqlstr);
- tbl.MoveNext();
- }
- return (TRUE);
-}
-//________________________________________________________________________________________________________
-
-BOOLEAN RecorreGruposOrdenadores(Database db, char* sqlstr)
-{
- char msglog[LONSTD];
- Table tbl;
- int idgrupo;
- char modulo[] = "RecorreGruposOrdenadores()";
-
- if (!db.Execute(sqlstr, tbl)) { // Error al leer
- errorLog(modulo, 21, FALSE);
- db.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
- while(!tbl.ISEOF()){
- if(!tbl.Get("idgrupo",idgrupo)){
- tbl.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
- sprintf(sqlstr,"SELECT idgrupo FROM gruposordenadores WHERE grupoid=%d",idgrupo);
- RecorreGruposOrdenadores(db,sqlstr);
- sprintf(sqlstr,"SELECT ip,mac,idordenador FROM ordenadores WHERE grupoid=%d",idgrupo);
- RecorreOrdenadores(db,sqlstr);
- tbl.MoveNext();
- }
- return (TRUE);
-}
-//________________________________________________________________________________________________________
-
-BOOLEAN RecorreOrdenadores(Database db, char* sqlstr)
-{
- char msglog[LONSTD];
- Table tbl;
- int idordenador,o,p,m,lon;
- char ido[16],ip[LONIP],mac[LONMAC];
- char modulo[] = "RecorreOrdenadores()";
-
- if (!db.Execute(sqlstr, tbl)) { // Error al leer
- errorLog(modulo, 21, FALSE);
- db.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
- o=p=m=0;
- while(!tbl.ISEOF()){
- if(!tbl.Get("idordenador",idordenador)){
- tbl.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
- if(!tbl.Get("ip",ip)){
- tbl.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
- if(!tbl.Get("mac",mac)){
- tbl.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- return (FALSE);
- }
- sprintf(ido,"%d",idordenador);
- lon=strlen(ido);
- if(lon>16) lon=16;
- cadenaid=(char*) ampliaMemoria(cadenaid,o+lon+1);
- memcpy(&cadenaid[o],ido,lon);
- o+=lon;
- cadenaid[o++]=',';
-
- lon=strlen(ip);
- if(lon>16) lon=LONIP;
- cadenaip=(char*) ampliaMemoria(cadenaip,p+lon+1);
- memcpy(&cadenaip[p],ip,lon);
- p+=lon;
- cadenaip[p++]=';';
-
- lon=strlen(mac);
- if(lon>16) lon=LONMAC;
- cadenamac=(char*) ampliaMemoria(cadenamac,m+lon+1);
- memcpy(&cadenamac[m],mac,lon);
- m+=lon;
- cadenamac[m++]=';';
-
- concli++;
- tbl.MoveNext();
- }
- if(o>0) o--;
- if(p>0) p--;
- if(m>0) m--;
- cadenaid[o]='\0';
- cadenaip[p]='\0';
- cadenamac[m]='\0';
-
- return (TRUE);
-}
-// ********************************************************************************************************
-// PROGRAMA PRINCIPAL (SERVICIO)
-// ********************************************************************************************************
-int main(int argc, char *argv[])
-{
- int pseg;
- char msglog[LONSTD];
- struct tm* st;
- Database db;
- char modulo[] = "main()";
-
- /* Validación de parámetros de ejecución y lectura del fichero de configuración del servicio */
-
- if (!validacionParametros(argc, argv, 5)) // Valida parámetros de ejecución
- exit(EXIT_FAILURE);
-
- if (!tomaConfiguracion(szPathFileCfg)) { // Toma parametros de configuracion
- exit(EXIT_FAILURE);
- }
-
- /* Bucle principal del servicio */
-
- while (TRUE){
- st = tomaHora();
- pseg=65-st->tm_sec; // Calcula segundos de inactividad de la hebra
- sleep(pseg);
-
- // Toma la hora
- st = tomaHora();
-
- if (!db.Open(usuario, pasguor, datasource, catalog)) { // Error de conexion
- errorLog(modulo, 20, FALSE);
- db.GetErrorErrStr(msglog);
- errorInfo(modulo, msglog);
- exit(EXIT_FAILURE);
- }
- buscaAccion(db,st->tm_mday,st->tm_mon+1,st->tm_year+1900,st->tm_hour,st->tm_min,st->tm_wday );
- db.Close(); // Cierra conexión
- }
- exit(EXIT_SUCCESS);
-}
-
-
+// ******************************************************************************************************** +// Servicio: ogAdmAgent +// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla +// Fecha Creación: Marzo-2010 +// Fecha Última modificación: Marzo-2010 +// Nombre del fichero: ogAdmAgent.cpp +// Descripción: Este fichero implementa el servicio agente del sistema. Revisa a intervalos +// regulares la base de datos para comprobar si existen acciones programadas. +// ******************************************************************************************************** +#include "ogAdmAgent.h" +#include "ogAdmLib.c" +//________________________________________________________________________________________________________ +// Función: tomaConfiguracion +// +// Descripción: +// Lee el fichero de configuración del servicio +// Parámetros: +// filecfg : Ruta completa al fichero de configuración +// Devuelve: +// TRUE: Si el proceso es correcto +// FALSE: En caso de ocurrir algún error +//________________________________________________________________________________________________________ +BOOLEAN tomaConfiguracion(char* filecfg) +{ + char modulo[] = "tomaConfiguracion()"; + + if (filecfg == NULL || strlen(filecfg) == 0) { + errorLog(modulo, 1, FALSE); // Fichero de configuración del servicio vacÃo + return (FALSE); + } + FILE *fcfg; + long lSize; + char * buffer, *lineas[MAXPRM], *dualparametro[2]; + int i, numlin, resul; + + fcfg = fopen(filecfg, "rt"); + if (fcfg == NULL) { + errorLog(modulo, 2, FALSE); // No existe fichero de configuración del servicio + return (FALSE); + } + + fseek(fcfg, 0, SEEK_END); + lSize = ftell(fcfg); // Obtiene tamaño del fichero. + rewind(fcfg); + buffer = (char*) reservaMemoria(lSize + 1); // Toma memoria para el buffer de lectura. + if (buffer == NULL) { // No hay memoria suficiente para el buffer + errorLog(modulo, 3, FALSE); + return (FALSE); + } + fread(buffer, 1, lSize, fcfg); // Lee contenido del fichero + buffer[lSize] = (char) NULL; + fclose(fcfg); + + servidoradm[0] = (char) NULL; //inicializar variables globales + puerto[0] = (char) NULL; + usuario[0] = (char) NULL; + pasguor[0] = (char) NULL; + datasource[0] = (char) NULL; + catalog[0] = (char) NULL; + + numlin = splitCadena(lineas, buffer, '\n'); + for (i = 0; i < numlin; i++) { + splitCadena(dualparametro, lineas[i], '='); + resul = strcmp(StrToUpper(dualparametro[0]), "SERVIDORADM"); + if (resul == 0) + strcpy(servidoradm, dualparametro[1]); + resul = strcmp(StrToUpper(dualparametro[0]), "PUERTO"); + if (resul == 0) + strcpy(puerto, dualparametro[1]); + resul = strcmp(StrToUpper(dualparametro[0]), "USUARIO"); + if (resul == 0) + strcpy(usuario, dualparametro[1]); + resul = strcmp(StrToUpper(dualparametro[0]), "PASSWORD"); + if (resul == 0) + strcpy(pasguor, dualparametro[1]); + resul = strcmp(StrToUpper(dualparametro[0]), "DATASOURCE"); + if (resul == 0) + strcpy(datasource, dualparametro[1]); + resul = strcmp(StrToUpper(dualparametro[0]), "CATALOG"); + if (resul == 0) + strcpy(catalog, dualparametro[1]); + } + if (servidoradm[0] == (char) NULL) { + errorLog(modulo, 4, FALSE); // Falta parámetro SERVIDORADM + return (FALSE); + } + if (puerto[0] == (char) NULL) { + errorLog(modulo, 5, FALSE); // Falta parámetro PUERTO + return (FALSE); + } + if (usuario[0] == (char) NULL) { + errorLog(modulo, 6, FALSE); // Falta parámetro USUARIO + return (FALSE); + } + if (pasguor[0] == (char) NULL) { + errorLog(modulo, 7, FALSE); // Falta parámetro PASSWORD + return (FALSE); + } + if (datasource[0] == (char) NULL) { + errorLog(modulo, 8, FALSE); // Falta parámetro DATASOURCE + return (FALSE); + } + if (catalog[0] == (char) NULL) { + errorLog(modulo, 9, FALSE); // Falta parámetro CATALOG + return (FALSE); + } + return (TRUE); +} +// ________________________________________________________________________________________________________ +// +// Función: diadelaSemana +// +// Descripción: +// Calcula el número del dÃa de la semana que corresponde a una fecha +// Parámetros: +// - dia: Un dÃa +// - mes: Un mes +// - anno: Un año +// Devuelve: +// El número del dÃa de la semana: 1=Lunes, 2=martes ... 6=sábado 7=domingo +// ________________________________________________________________________________________________________ + +int diadelaSemana(WORD dia,WORD mes,WORD anno) +{ + int i,cont,dias_anuales; + int desplazamiento_dias=6; + int orddiasem; + + cont =0; + for (i=1900;i<anno;i++){ + if (bisiesto(i)) dias_anuales=366; else dias_anuales=365; + cont+=dias_anuales; + } + for (i=1;i<mes;i++){ + if (i!=2) + cont+=dias_meses[i]; + else{ + if (bisiesto(anno)) + cont+=29; + else + cont+=28; + } + } + cont+=dia+desplazamiento_dias; + orddiasem=(cont%7); + if(orddiasem==0) orddiasem=7; + return(orddiasem); +} +// ________________________________________________________________________________________________________ +// +// Función: bisiesto +// +// Descripción: +// Calcula si un año es bisiesto o no lo es +// Parámetros: +// - anno: Un año +// Devuelve: +// TRUE si el año es bisiesto +// FALSE si no es bisiesto +// ________________________________________________________________________________________________________ + +BOOLEAN bisiesto(WORD anno){ + return(anno%4==0); +} +// ________________________________________________________________________________________________________ +// +// Función: semanadelMes +// +// Descripción: +// Calcula el número de semana perteneciente a un dÃa del mes +// Parámetros: +// - ordiasem_1: Orden semanal (1,2...) del primer dia del mes que se pasa como parámetro +// - diames: El mes concreto +// Devuelve: +// El número del dÃa de la semana: 1=Lunes, 2=martes ... 6=sábado 7=domingo , de ese mes +// ________________________________________________________________________________________________________ + +int semanadelMes(int ordiasem_1,int diames) +{ + int nwdia,resto,cociente; + + nwdia=diames+ordiasem_1-1; + cociente=nwdia/7; + resto=nwdia%7; + if(resto>0) cociente++; + return(cociente); +} +// ________________________________________________________________________________________________________ +// +// Función: buscaAccion +// +// Descripción: +// Busca en la base de datos, acciones programadas +// Parámetros: +// - db: Objeto base de datos (operativo) +// - dia : DÃa actual del mes +// - mes : mes en curso +// - anno : Año en curso +// - hora : Hora actual +// - minutos : Minutos actuales +// - diasemana : Dia de la semana 1=lunes,2=martes ... ( 0 Domingo) +// Devuelve: +// TRUE: Si el proceso es correcto +// FALSE: En caso de ocurrir algún error +// ________________________________________________________________________________________________________ + +BOOLEAN buscaAccion(Database db,WORD dia,WORD mes,WORD anno,WORD hora,WORD minutos,WORD diasemana) +{ + char msglog[LONSTD], sqlstr[LONSQL]; + Table tbl; + BYTE swampm,bitsemana; + int ordsem,ordulsem,ordiasem_1,maxdias; + int sesionprog; + char modulo[] = "buscaAccion()"; + + /* Año de comienzo */ + anno=anno-ANNOREF; // + /* Preparación hora */ + if(hora>11){ + hora-=12; + swampm=1; // Es P.M. + } + else + swampm=0; // Es am + /* Preparación semana */ + if(diasemana==0) diasemana=7; // El domingo + + // Cuestión semanas + ordiasem_1=diadelaSemana(1,mes,anno+2009); + ordsem=semanadelMes(ordiasem_1,dia); // Calcula el número de la semana + if (mes!=2) // Toma el último dÃa de ese mes + maxdias=dias_meses[mes]; + else{ + if (bisiesto(anno+ANNOREF)) + maxdias=29; + else + maxdias=28; + } + ordulsem=semanadelMes(ordiasem_1,maxdias); // Calcula el número de la última semana + bitsemana=HEX_semanas[ordsem]; + if(ordsem==ordulsem) // Si es la última semana del mes + bitsemana|=HEX_semanas[6]; + + sprintf(sqlstr,"SELECT DISTINCT idprogramacion,tipoaccion,identificador,sesion,idcentro,"\ + "tareas.descripcion as descritarea"\ + " FROM programaciones"\ + " LEFT OUTER JOIN tareas ON tareas.idtarea=programaciones.identificador"\ + " WHERE suspendida=0 "\ + " AND (annos & %d <> 0) "\ + " AND (meses & %d<>0) "\ + " AND ((diario & %d<>0) OR (dias & %d<>0) OR (semanas & %d<>0))"\ + " AND (horas & %d<>0) AND ampm=%d AND minutos=%d",\ + HEX_annos[anno],\ + HEX_meses[mes],\ + HEX_dias[dia],\ + HEX_diasemana[diasemana],\ + bitsemana,\ + HEX_horas[hora],\ + swampm,minutos); + + if (!db.Execute(sqlstr, tbl)) { // Error al leer + errorLog(modulo, 21, FALSE); + db.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + if(tbl.ISEOF()){ + return(TRUE); // No hay acciones programadas + } + + while(!tbl.ISEOF()){ + if(!tbl.Get("idprogramacion",idprogramacion)){ + tbl.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + if(!tbl.Get("tipoaccion",tipoaccion)){ + tbl.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + if(!tbl.Get("identificador",idtipoaccion)){ + tbl.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + if(!tbl.Get("sesion",sesionprog)){ + tbl.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + if(!tbl.Get("idcentro",idcentro)){ + tbl.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + + if(tipoaccion==EJECUCION_COMANDO){ // Es una programación de un comando + return(ejecutarComando(db,idprogramacion,sesionprog)); + } + else{ + + if(tipoaccion==EJECUCION_TAREA){ + if(!tbl.Get("descritarea",descriaccion)){ + tbl.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + return(ejecutarTarea(db,idprogramacion,idtipoaccion)); + } + else{ + if(tipoaccion==EJECUCION_RESERVA){ + EjecutarReserva(idtipoaccion,db); // Es una programación de un trabajo + } + } + } + tbl.MoveNext(); + } + return(TRUE); +} +// ________________________________________________________________________________________________________ +// +// Función: ejecutarComando +// +// Descripción: +// Ejecuta un comando programado +// Parámetros: +// - db: Objeto base de datos (operativo) +// - idcomando: Identificador del comando +// - sesion: Sesión correspondiente al comando cuando se grabó en la tabla acciones +// Devuelve: +// TRUE: Si el proceso es correcto +// FALSE: En caso de ocurrir algún error +// ________________________________________________________________________________________________________ + +BOOLEAN ejecutarComando(Database db,int idprogramacion,int sesion ) +{ + struct tm* st; + char msglog[LONSTD], sqlstr[LONSQL]; + char fechahorareg[24]; + char modulo[] = "ejecutarComando()"; + + st = tomaHora(); + sprintf(fechahorareg,"%d/%d/%d %d:%d:%d", st->tm_year + 1900, st->tm_mon + 1, + st->tm_mday, st->tm_hour, st->tm_min, st->tm_sec); + + sprintf(sqlstr,"UPDATE acciones SET estado=%d,idprogramacion=%d,fechahorareg='%s'"\ + " WHERE sesion=%d", ACCION_INICIADA,idprogramacion,fechahorareg,sesion); + + if (!db.Execute(sqlstr)) { // Error al recuperar los datos + errorLog(modulo, 21, FALSE); + db.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + return(enviaPeticion(idprogramacion)); +} +// ________________________________________________________________________________________________________ +// +// Función: ejecutarProcedimiento +// +// Descripción: +// Ejecuta un procedimiento programado +// Parámetros: +// - db: Objeto base de datos (operativo) +// - idprocedimiento: Identificador del procedimiento +// - ambito: Ãmbito de aplicación +// - idambito: Identificador del ámbito +// - restrambito: cadena con los identificadores de los ordenadores a los que se aplica la acción +// Devuelve: +// TRUE: Si el proceso es correcto +// FALSE: En caso de ocurrir algún error +// ________________________________________________________________________________________________________ + +BOOLEAN ejecutarProcedimiento(Database db,int idprocedimiento,int ambito,int idambito,char* restrambito) +{ + char msglog[LONSTD], sqlstr[LONSQL],*parametros; + Table tbl; + int procedimientoid,idcomando,lonprm; + char modulo[] = "ejecutarProcedimiento()"; + + sprintf(sqlstr,"SELECT idcomando,procedimientoid,parametros,length(parametros) as lonprm"\ + " FROM procedimientos_acciones"\ + " WHERE idprocedimiento=%d ORDER BY orden",idprocedimiento); + + if (!db.Execute(sqlstr, tbl)) { // Error al leer + errorLog(modulo, 21, FALSE); + db.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + + if(tbl.ISEOF()){ + return(TRUE); // No exustde tarea + } + while(!tbl.ISEOF()){ + if(!tbl.Get("procedimientoid",procedimientoid)){ + tbl.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + if(procedimientoid>0){ // Procedimiento recursivo + if(!ejecutarProcedimiento(db,procedimientoid,ambito,idambito,restrambito)){ + return(false); + } + } + else{ + if(!tbl.Get("lonprm",lonprm)){ + tbl.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + parametros = reservaMemoria(lonprm+1); // Reserva para almacenar los parametros del procedimiento + if (parametros == NULL) { + errorLog(modulo, 3, FALSE); + return (FALSE); + } + if(!tbl.Get("parametros",parametros)){ + tbl.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + liberaMemoria(parametros); + return (FALSE); + } + if(!tbl.Get("idcomando",idcomando)){ + tbl.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + + if(!insertaComando(db,idcomando,parametros,idprocedimiento,ambito,idambito,restrambito)) { + + liberaMemoria(parametros); + return(false); + } + liberaMemoria(parametros); + } + tbl.MoveNext(); + } + return(TRUE); +} +// ________________________________________________________________________________________________________ +// +// Función: ejecutarTarea +// +// Descripción: +// Ejecuta una tarea programada +// Parámetros: +// - db: Objeto base de datos (operativo) +// - idtarea: Identificador de la tarea +// - idprogramacion: Identificador de la programación +// Devuelve: +// TRUE: Si el proceso es correcto +// FALSE: En caso de ocurrir algún error +// ________________________________________________________________________________________________________ + +BOOLEAN ejecutarTarea(Database db, int idprogramacion, int idtarea) +{ + char msglog[LONSTD], sqlstr[LONSQL]; + Table tbl; + int tareaid,ambito,idambito,idprocedimiento,lonrestrambito; + char* restrambito; + char modulo[] = "ejecutarTarea()"; + + sprintf(sqlstr,"SELECT tareas_acciones.orden,tareas_acciones.idprocedimiento,tareas_acciones.tareaid,"\ + " tareas.ambito,tareas.idambito,tareas.restrambito,length(tareas.restrambito) as lonrestrambito"\ + " FROM tareas"\ + " INNER JOIN tareas_acciones ON tareas_acciones.idtarea=tareas.idtarea"\ + " WHERE tareas_acciones.idtarea=%d ORDER BY tareas_acciones.orden",idtarea); + + if (!db.Execute(sqlstr, tbl)) { // Error al leer + errorLog(modulo, 21, FALSE); + db.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + + if(tbl.ISEOF()){ + return(TRUE); // No existe tarea + } + + while(!tbl.ISEOF()){ + if(!tbl.Get("tareaid",tareaid)){ + tbl.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + if(tareaid>0){ // Tarea recursiva + if(!ejecutarTarea(db,idprogramacion,tareaid)){ + return(false); + } + } + else{ + if(!tbl.Get("ambito",ambito)){ + tbl.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + if(!tbl.Get("idambito",idambito)){ + tbl.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + if(!tbl.Get("lonrestrambito",lonrestrambito)){ + tbl.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + restrambito = reservaMemoria(lonrestrambito+1); + if (restrambito == NULL) { + errorLog(modulo, 3, FALSE); + return (FALSE); + } + if(!tbl.Get("restrambito",restrambito)){ + tbl.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + liberaMemoria(restrambito); + return (FALSE); + } + liberaMemoria(restrambito); + RecopilaIpesMacs(db,ambito,idambito,restrambito); // Recopila Ipes del ámbito + if(!tbl.Get("idprocedimiento",idprocedimiento)){ + tbl.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + sesion=time(NULL); + + if(!ejecutarProcedimiento(db,idprocedimiento,ambito,idambito,restrambito)) + return(FALSE); + } + tbl.MoveNext(); + } + return(enviaPeticion(idprogramacion)); +} +// ________________________________________________________________________________________________________ +// +// Función: ejecutarTarea +// +// Descripción: +// Registra un procedimiento para un ambito concreto +// Parámetros: +// - db: Objeto base de datos (operativo) +// - idcomando: Identificador del comando +// - idprocedimiento: Identificador del procedimiento +// - ambito: Ãmbito de aplicación +// - idambito: Identificador del ámbito +// - restrambito: cadena con los identificadores de los ordenadores a los que se aplica la acción +// Devuelve: +// TRUE: Si el proceso es correcto +// FALSE: En caso de ocurrir algún error +//________________________________________________________________________________________________________ +BOOLEAN insertaComando(Database db,int idcomando,char*parametros,int idprocedimiento,int ambito,int idambito,char*restrambito) +{ + char msglog[LONSTD], sqlstr[LONSQL]; + struct tm* st; + char *auxID[MAXIMOS_CLIENTES],*auxIP[MAXIMOS_CLIENTES]; + char fechahorareg[24]; + int i; + char modulo[] = "insertaComando()"; + + if(concli==0) return(TRUE); // No hay ordenadores en el ámbito + + st = tomaHora(); + sprintf(fechahorareg,"%d/%d/%d %d:%d:%d", st->tm_year + 1900, st->tm_mon + 1, st->tm_mday, st->tm_hour, st->tm_min, st->tm_sec); + + splitCadena(auxID,cadenaid,','); + splitCadena(auxIP,cadenaip,';'); + + for (i=0;i<concli;i++){ + sprintf(sqlstr,"INSERT INTO acciones (idordenador,tipoaccion,idtipoaccion,descriaccion,ip,"\ + "sesion,idcomando,parametros,fechahorareg,estado,resultado,ambito,idambito,"\ + "restrambito,idprocedimiento,idcentro,idprogramacion)"\ + " VALUES (%s,%d,%d,'%s','%s',%d,%d,'%s','%s',%d,%d,%d,%d,'%s',%d,%d,%d)",\ + auxID[i],tipoaccion,idtipoaccion,descriaccion,auxIP[i],sesion,idcomando,parametros,fechahorareg,\ + ACCION_INICIADA,ACCION_SINRESULTADO,ambito,idambito,restrambito,idprocedimiento,idcentro,idprogramacion); + if (!db.Execute(sqlstr)) { // Error al recuperar los datos + errorLog(modulo, 21, FALSE); + db.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + } + return(TRUE); +} +// _____________________________________________________________________________________________________________ +// Función: EjecutarReserva +// +// Descripción: +// Registra una acción (Tarea) y la envÃa para su ejecución +// Parámetros: +// - idreserva : Identificador de la reserva +// - db: una conexion ADO operativa +// - parametros: Parámetros de la acción +// _____________________________________________________________________________________________________________ +BOOLEAN EjecutarReserva(int idreserva,Database db ) +{ + + + return(true); +} +// _____________________________________________________________________________________________________________ +// Función: enviaPeticion +// +// Descripción: +// Hace una petición al servidor para que actualice los ordenadores implicados en la programación +// Parámetros: +// - idprogramacion: Identificador de la programación +// _____________________________________________________________________________________________________________ +BOOLEAN enviaPeticion(int idprogramacion) +{ + int lon; + TRAMA *ptrTrama; + SOCKET socket_c; + char modulo[] = "enviaPeticion()"; + + /* Envio de comandos a clientes */ + ptrTrama=(TRAMA *)reservaMemoria(sizeof(TRAMA)); + if (ptrTrama == NULL) { // No hay memoria suficiente para el bufer de las tramas + errorLog(modulo, 3, FALSE); + return(FALSE); + } + initParametros(ptrTrama,0); + lon=sprintf(ptrTrama->parametros,"nfn=envioProgramacion\r"); // Nombre de la función a ejecutar en el servidor + lon+=sprintf(ptrTrama->parametros+lon,"idp=%d\r",idprogramacion); // Configuración de los Sistemas Operativos del cliente + + if(!enviaMensaje(&socket_c,ptrTrama,MSG_PETICION)){ + errorLog(modulo,91,FALSE); + liberaMemoria(ptrTrama); + return(FALSE); + } + liberaMemoria(ptrTrama); + return(TRUE); +} +// _____________________________________________________________________________________________________________ +// +// Función: RecopilaIpesMacs +// +// Descripción : +// Recopila las IPes, las Macs y los identificadores de ordenadores de un ámbito determinado +// +// Especificaciones: +// Esta Función recibe tres parámatros: +// db : Un objeto Base de datos totalmente operativo +// ambito: Tipo de ámbito +// idambito: Identificador del ámbito +// Devuelve: +// Todas los identificadores de ordenadores , las ipes y las macs de los ordenadores que componen el ámbito +// Para ellos habrá que tener declarada tres variables globales : +// cadenaid,cadenaip y cadenamac +// _____________________________________________________________________________________________________________ + +BOOLEAN RecopilaIpesMacs(Database db,int ambito,int idambito,char *restrambito) +{ + char sqlstr[LONSQL]; + + concli=0; + /* Reserva memoria al meno para caracter nulo */ + cadenaid=(char*) reservaMemoria(1); + cadenaip=(char*) reservaMemoria(1); + cadenamac=(char*) reservaMemoria(1); + + switch(ambito){ + case AMBITO_CENTROS : + sprintf(sqlstr,"SELECT idcentro FROM centros WHERE idcentro=%d",idambito); + RecorreCentro(db,sqlstr); + break; + case AMBITO_GRUPOSAULAS : + sprintf(sqlstr,"SELECT idgrupo FROM grupos WHERE idgrupo=%d AND tipo=%d",idambito,AMBITO_GRUPOSAULAS); + RecorreGruposAulas(db,sqlstr); + break; + case AMBITO_AULAS : + sprintf(sqlstr,"SELECT idaula FROM aulas WHERE idaula=%d",idambito); + RecorreAulas(db,sqlstr); + break; + case AMBITO_GRUPOSORDENADORES : + sprintf(sqlstr,"SELECT idgrupo FROM gruposordenadores WHERE idgrupo=%d",idambito); + RecorreGruposOrdenadores(db,sqlstr); + break; + case AMBITO_ORDENADORES : + sprintf(sqlstr,"SELECT ip,mac,idordenador FROM ordenadores WHERE idordenador=%d",idambito); + RecorreOrdenadores(db,sqlstr); + break; + default: // Se trata de un conjunto aleatorio de ordenadores + sprintf(sqlstr,"SELECT ip,mac,idordenador FROM ordenadores WHERE idordenador IN (%s)",restrambito); + RecorreOrdenadores(db,sqlstr); + + } + return (TRUE); +} +//________________________________________________________________________________________________________ + +BOOLEAN RecorreCentro(Database db, char* sqlstr) +{ + char msglog[LONSTD]; + Table tbl; + int idcentro; + char modulo[] = "RecorreCentro()"; + + if (!db.Execute(sqlstr, tbl)) { // Error al leer + errorLog(modulo, 21, FALSE); + db.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + if(!tbl.ISEOF()){ + if(!tbl.Get("idcentro",idcentro)){ + tbl.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + sprintf(sqlstr,"SELECT idgrupo FROM grupos WHERE idcentro=%d AND grupoid=0 AND tipo=%d",idcentro,AMBITO_GRUPOSAULAS); + RecorreGruposAulas(db,sqlstr); + sprintf(sqlstr,"SELECT idaula FROM aulas WHERE idcentro=%d AND grupoid=0",idcentro); + RecorreAulas(db,sqlstr); + } + return (TRUE); +} +//________________________________________________________________________________________________________ + +BOOLEAN RecorreGruposAulas(Database db, char* sqlstr) +{ + char msglog[LONSTD]; + Table tbl; + int idgrupo; + char modulo[] = "RecorreGruposAulas()"; + + if (!db.Execute(sqlstr, tbl)) { // Error al leer + errorLog(modulo, 21, FALSE); + db.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + while(!tbl.ISEOF()){ + if(!tbl.Get("idgrupo",idgrupo)){ + tbl.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + sprintf(sqlstr,"SELECT idgrupo FROM grupos WHERE grupoid=%d AND tipo=%d",idgrupo,AMBITO_GRUPOSAULAS); + RecorreGruposAulas(db,sqlstr); + sprintf(sqlstr,"SELECT idaula FROM aulas WHERE grupoid=%d",idgrupo); + RecorreAulas(db,sqlstr); + tbl.MoveNext(); + } + return (TRUE); +} +//________________________________________________________________________________________________________ + +BOOLEAN RecorreAulas(Database db, char* sqlstr) +{ + char msglog[LONSTD]; + Table tbl; + int idaula; + char modulo[] = "RecorreAulas()"; + + if (!db.Execute(sqlstr, tbl)) { // Error al leer + errorLog(modulo, 21, FALSE); + db.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + while(!tbl.ISEOF()){ + if(!tbl.Get("idaula",idaula)){ + tbl.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + sprintf(sqlstr,"SELECT idgrupo FROM gruposordenadores WHERE idaula=%d AND grupoid=0",idaula); + RecorreGruposOrdenadores(db,sqlstr); + sprintf(sqlstr,"SELECT ip,mac,idordenador FROM ordenadores WHERE idaula=%d AND grupoid=0",idaula); + RecorreOrdenadores(db,sqlstr); + tbl.MoveNext(); + } + return (TRUE); +} +//________________________________________________________________________________________________________ + +BOOLEAN RecorreGruposOrdenadores(Database db, char* sqlstr) +{ + char msglog[LONSTD]; + Table tbl; + int idgrupo; + char modulo[] = "RecorreGruposOrdenadores()"; + + if (!db.Execute(sqlstr, tbl)) { // Error al leer + errorLog(modulo, 21, FALSE); + db.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + while(!tbl.ISEOF()){ + if(!tbl.Get("idgrupo",idgrupo)){ + tbl.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + sprintf(sqlstr,"SELECT idgrupo FROM gruposordenadores WHERE grupoid=%d",idgrupo); + RecorreGruposOrdenadores(db,sqlstr); + sprintf(sqlstr,"SELECT ip,mac,idordenador FROM ordenadores WHERE grupoid=%d",idgrupo); + RecorreOrdenadores(db,sqlstr); + tbl.MoveNext(); + } + return (TRUE); +} +//________________________________________________________________________________________________________ + +BOOLEAN RecorreOrdenadores(Database db, char* sqlstr) +{ + char msglog[LONSTD]; + Table tbl; + int idordenador,o,p,m,lon; + char ido[16],ip[LONIP],mac[LONMAC]; + char modulo[] = "RecorreOrdenadores()"; + + if (!db.Execute(sqlstr, tbl)) { // Error al leer + errorLog(modulo, 21, FALSE); + db.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + o=p=m=0; + while(!tbl.ISEOF()){ + if(!tbl.Get("idordenador",idordenador)){ + tbl.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + if(!tbl.Get("ip",ip)){ + tbl.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + if(!tbl.Get("mac",mac)){ + tbl.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + sprintf(ido,"%d",idordenador); + lon=strlen(ido); + if(lon>16) lon=16; + cadenaid=(char*) ampliaMemoria(cadenaid,o+lon+1); + memcpy(&cadenaid[o],ido,lon); + o+=lon; + cadenaid[o++]=','; + + lon=strlen(ip); + if(lon>16) lon=LONIP; + cadenaip=(char*) ampliaMemoria(cadenaip,p+lon+1); + memcpy(&cadenaip[p],ip,lon); + p+=lon; + cadenaip[p++]=';'; + + lon=strlen(mac); + if(lon>16) lon=LONMAC; + cadenamac=(char*) ampliaMemoria(cadenamac,m+lon+1); + memcpy(&cadenamac[m],mac,lon); + m+=lon; + cadenamac[m++]=';'; + + concli++; + tbl.MoveNext(); + } + if(o>0) o--; + if(p>0) p--; + if(m>0) m--; + cadenaid[o]='\0'; + cadenaip[p]='\0'; + cadenamac[m]='\0'; + + return (TRUE); +} +// ******************************************************************************************************** +// PROGRAMA PRINCIPAL (SERVICIO) +// ******************************************************************************************************** +int main(int argc, char *argv[]) +{ + int pseg; + char msglog[LONSTD]; + struct tm* st; + Database db; + char modulo[] = "main()"; + + /* Validación de parámetros de ejecución y lectura del fichero de configuración del servicio */ + + if (!validacionParametros(argc, argv, 5)) // Valida parámetros de ejecución + exit(EXIT_FAILURE); + + if (!tomaConfiguracion(szPathFileCfg)) { // Toma parametros de configuracion + exit(EXIT_FAILURE); + } + + /* Bucle principal del servicio */ + + while (TRUE){ + st = tomaHora(); + pseg=65-st->tm_sec; // Calcula segundos de inactividad de la hebra + sleep(pseg); + + // Toma la hora + st = tomaHora(); + + if (!db.Open(usuario, pasguor, datasource, catalog)) { // Error de conexion + errorLog(modulo, 20, FALSE); + db.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + exit(EXIT_FAILURE); + } + buscaAccion(db,st->tm_mday,st->tm_mon+1,st->tm_year+1900,st->tm_hour,st->tm_min,st->tm_wday ); + db.Close(); // Cierra conexión + } + exit(EXIT_SUCCESS); +} + + diff --git a/admin/Sources/Services/ogAdmBoot/Makefile b/admin/Sources/Services/ogAdmBoot/Makefile deleted file mode 100644 index 78a7e88d..00000000 --- a/admin/Sources/Services/ogAdmBoot/Makefile +++ /dev/null @@ -1,44 +0,0 @@ -# makefile - -# Nombre del proyecto -PROYECTO := ogAdmBoot - -# Directorio de instalación -INSTALL_DIR := /opt/opengnsys - -# Opciones de compilacion -CFLAGS := $(shell mysql_config --cflags) -CFLAGS += -O0 -g -Wall -I../../Includes # Depuracion -#CFLAGS += -O3 -I../../Includes # Optimizacion -CPPFLAGS := $(CFLAGS) - -# Opciones de linkado -LDFLAGS := -Wl,--no-as-needed $(shell mysql_config --libs) -lpthread - -# Ficheros objetos -OBJS := ../includes/Database.o sources/ogAdmBoot.o - - -all: $(PROYECTO) - -$(PROYECTO): $(OBJS) - g++ $(LDFLAGS) $(OBJS) -o $(PROYECTO) -# strip $(PROYECTO) # Optimizacion - -install: $(PROYECTO) - cp $(PROYECTO) $(INSTALL_DIR)/sbin - cp $(PROYECTO).cfg $(INSTALL_DIR)/etc - -clean: - rm -f $(PROYECTO) $(OBJS) - -uninstall: clean - rm -f /usr/local/sbin/$(PROYECTO) /usr/local/etc/$(PROYECTO).cfg - -sources/%.o: sources/%.cpp - g++ $(CPPFLAGS) -I ../includes -c -o"$@" "$<" - -sources/%.o: sources/%.c - gcc $(CFLAGS) -I ../includes -c -o"$@" "$<" - - diff --git a/admin/Sources/Services/ogAdmBoot/ogAdmBoot.cfg b/admin/Sources/Services/ogAdmBoot/ogAdmBoot.cfg deleted file mode 100644 index 5a33b513..00000000 --- a/admin/Sources/Services/ogAdmBoot/ogAdmBoot.cfg +++ /dev/null @@ -1,8 +0,0 @@ -IPLocal=SERVERIP -USUARIO=usuog -PASSWORD=passusuog -datasource=localhost -CATALOG=ogAdmBD -router=10.1.12.1 -mascara=255.255.252.0 - diff --git a/admin/Sources/Services/ogAdmBoot/sources/ogAdmBoot.cpp b/admin/Sources/Services/ogAdmBoot/sources/ogAdmBoot.cpp deleted file mode 100644 index 03468d5b..00000000 --- a/admin/Sources/Services/ogAdmBoot/sources/ogAdmBoot.cpp +++ /dev/null @@ -1,1264 +0,0 @@ -// ******************************************************************************************************** -// Servicio: ogAdmBoot -// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla -// Fecha Creación: Julio-2010 -// Fecha Última modificación: Julio-2010 -// Nombre del fichero: ogAdmBoot.cpp -// Descripción :Este fichero implementa el servicio dhcp y tftp propios del sistema -// ******************************************************************************************************** -#include "ogAdmBoot.h" -#include "ogAdmLib.c" -//________________________________________________________________________________________________________ -// Función: tomaConfiguracion -// -// Descripción: -// Lee el fichero de configuración del servicio -// Parámetros: -// filecfg : Ruta completa al fichero de configuración -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//________________________________________________________________________________________________________ -BOOLEAN tomaConfiguracion(char* filecfg) -{ - char modulo[] = "tomaConfiguracion()"; - - if (filecfg == NULL || strlen(filecfg) == 0) { - errorLog(modulo, 1, FALSE); // Fichero de configuración del servicio vacÃo - return (FALSE); - } - FILE *fcfg; - long lSize; - char * buffer, *lineas[MAXPRM], *dualparametro[2]; - int i, numlin, resul; - - fcfg = fopen(filecfg, "rt"); - if (fcfg == NULL) { - errorLog(modulo, 2, FALSE); // No existe fichero de configuración del servicio - return (FALSE); - } - - fseek(fcfg, 0, SEEK_END); - lSize = ftell(fcfg); // Obtiene tamaño del fichero. - rewind(fcfg); - buffer = (char*) reservaMemoria(lSize+1); // Toma memoria para el buffer de lectura. - if (buffer == NULL) { // No hay memoria suficiente para el buffer - errorLog(modulo, 3, FALSE); - return (FALSE); - } - fread(buffer, 1, lSize, fcfg); // Lee contenido del fichero - buffer[lSize]=(char) NULL; - fclose(fcfg); - - IPlocal[0] = (char) NULL; //inicializar variables globales - usuario[0] = (char) NULL; - pasguor[0] = (char) NULL; - datasource[0] = (char) NULL; - catalog[0] = (char) NULL; - router[0] = (char) NULL; - mascara[0] = (char) NULL; - - numlin = splitCadena(lineas, buffer, '\n'); - for (i = 0; i < numlin; i++) { - splitCadena(dualparametro, lineas[i], '='); - resul = strcmp(StrToUpper(dualparametro[0]), "IPLOCAL"); - if (resul == 0) - strcpy(IPlocal, dualparametro[1]); - resul = strcmp(StrToUpper(dualparametro[0]), "USUARIO"); - if (resul == 0) - strcpy(usuario, dualparametro[1]); - resul = strcmp(StrToUpper(dualparametro[0]), "PASSWORD"); - if (resul == 0) - strcpy(pasguor, dualparametro[1]); - resul = strcmp(StrToUpper(dualparametro[0]), "DATASOURCE"); - if (resul == 0) - strcpy(datasource, dualparametro[1]); - resul = strcmp(StrToUpper(dualparametro[0]), "CATALOG"); - if (resul == 0) - strcpy(catalog, dualparametro[1]); - resul = strcmp(StrToUpper(dualparametro[0]), "ROUTER"); - if (resul == 0) - strcpy(router, dualparametro[1]); - resul = strcmp(StrToUpper(dualparametro[0]), "MASCARA"); - if (resul == 0) - strcpy(mascara, dualparametro[1]); - } - if (IPlocal[0] == (char) NULL) { - errorLog(modulo, 4, FALSE); // Falta parámetro IPLOCAL - return (FALSE); - } - if (usuario[0] == (char) NULL) { - errorLog(modulo, 6, FALSE); // Falta parámetro USUARIO - return (FALSE); - } - if (pasguor[0] == (char) NULL) { - errorLog(modulo, 7, FALSE); // Falta parámetro PASSWORD - return (FALSE); - } - if (datasource[0] == (char) NULL) { - errorLog(modulo, 8, FALSE); // Falta parámetro DATASOURCE - return (FALSE); - } - if (catalog[0] == (char) NULL) { - errorLog(modulo, 9, FALSE); // Falta parámetro CATALOG - return (FALSE); - } - return (TRUE); -} -// _____________________________________________________________________________________________________________ -// Función: ServicioDHCP -// -// Descripción: -// Esta hebra implementa el servicio DHCP -// _____________________________________________________________________________________________________________ - -LPVOID ServicioDHCP(LPVOID ipl) -{ - SOCKET socket_s; // Socket donde escucha el servidor - struct TramaDhcpBootp * trmInfo; - struct sockaddr_in local; - int ret,resul; - BOOLEAN bOpt; - pthread_t hThread; - char modulo[]="ServicioDHCP()"; - - socket_s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); // Crea socket para UDP - if (socket_s == SOCKET_ERROR){ - errorLog(modulo,61, TRUE); - return(FALSE); - } - local.sin_addr.s_addr = htonl(INADDR_ANY); // selecciona interface - local.sin_family = AF_INET; - local.sin_port = htons(PUERTODHCPORIGEN); // Puerto - - // Enlaza socket - if (bind(socket_s,(struct sockaddr *)&local,sizeof(local)) == SOCKET_ERROR){ - errorLog(modulo,62, TRUE); - return(FALSE); - } - - bOpt=TRUE; // Pone el socket en modo "soportar Broadcast" - ret=setsockopt(socket_s,SOL_SOCKET,SO_BROADCAST,(char *)&bOpt,sizeof(bOpt)); - if (ret == SOCKET_ERROR){ - errorLog(modulo,48, TRUE); - return(FALSE); - } - while(true){ - trmInfo = (struct TramaDhcpBootp*)malloc(sizeof(struct TramaDhcpBootp)); // Crea estructura de control para hebra - if (trmInfo == NULL){ - errorLog(modulo,64, FALSE); - return(FALSE); - } - // Inicializa parámetros - memset(trmInfo,0,sizeof(struct TramaDhcpBootp)); - trmInfo->sockaddrsize = sizeof(trmInfo->cliente); - trmInfo->sck=socket_s; - // Espera tramas DHCP - ret = recvfrom(trmInfo->sck,(char *)&trmInfo->pckDchp, sizeof(trmInfo->pckDchp),0,(struct sockaddr *)&trmInfo->cliente, &trmInfo->sockaddrsize); - if (ret == SOCKET_ERROR){ - errorLog(modulo,65, TRUE); - return(FALSE); - } - else{ - if (ret>0){ - resul=pthread_create(&hThread,NULL,GestionaServicioDHCP,(LPVOID)trmInfo); - if(resul!=0){ - errorLog(modulo,66,TRUE); - return(FALSE); - } - pthread_detach(hThread); - } - } - } - close(socket_s); -} -// _____________________________________________________________________________________________________________ -// Función: ServicioBOOTP -// -// Descripción: -// Esta hebra implementa el servicio BOOTP -// _____________________________________________________________________________________________________________ - -LPVOID ServicioBOOTP(LPVOID iplocal) -{ - SOCKET socket_s; // Socket donde escucha el servidor - struct TramaDhcpBootp * trmInfo; - struct sockaddr_in local; - int ret,resul; - pthread_t hThread; - char modulo[]="ServicioBOOTP()"; - - socket_s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); // Crea socket para UDP - if (socket_s == SOCKET_ERROR){ - errorLog(modulo,67, TRUE); - return(FALSE); - } - local.sin_addr.s_addr = htonl(INADDR_ANY); // selecciona interface - local.sin_family = AF_INET; - local.sin_port = htons(PUERTOBOOTPORIGEN); // Puerto - - // Enlaza socket - if (bind(socket_s,(struct sockaddr *)&local,sizeof(local)) == SOCKET_ERROR){ - errorLog(modulo,68, TRUE); - return(FALSE); - } - while(true){ - trmInfo = (struct TramaDhcpBootp*)malloc(sizeof(struct TramaDhcpBootp)); // Crea estructura de control para hebra - if (trmInfo == NULL){ - errorLog(modulo,69, FALSE); - return(FALSE); - } - // Inicializa parámetros - memset(trmInfo,0,sizeof(struct TramaDhcpBootp)); - trmInfo->sockaddrsize = sizeof(trmInfo->cliente); - trmInfo->sck=socket_s; - // Espera tramas BOOTP - ret = recvfrom(trmInfo->sck,(char *)&trmInfo->pckDchp, sizeof(trmInfo->pckDchp),0,(struct sockaddr *)&trmInfo->cliente, &trmInfo->sockaddrsize); - - if (ret == SOCKET_ERROR){ - errorLog(modulo,70, TRUE); - return(FALSE); - } - else{ - if (ret>0){ - resul=pthread_create(&hThread,NULL,GestionaServicioBOOTP,(LPVOID)trmInfo); - if(resul!=0){ - errorLog(modulo,71, TRUE); - return(FALSE); - } - pthread_detach(hThread); - } - } - } - close(socket_s); -} -// _____________________________________________________________________________________________________________ -// Función: ServicioTFTP -// -// Descripción: -// Esta hebra implementa el servicio TFTP -// _____________________________________________________________________________________________________________ - -LPVOID ServicioTFTP(LPVOID ipl) -{ - SOCKET socket_s; // Socket donde escucha el servidor - struct TramaTftp * trmInfo; - struct sockaddr_in local; - pthread_t hThread; - int ret,resul; - char modulo[]="ServicioTFTP()"; - - socket_s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); // Crea socket para UDP - if (socket_s == SOCKET_ERROR){ - errorLog(modulo,72, TRUE); - return(FALSE); - } - local.sin_addr.s_addr = htonl(INADDR_ANY); // selecciona interface - local.sin_family = AF_INET; - local.sin_port = htons(PUERTOTFTPORIGEN); // Puerto - - // Enlaza socket - if (bind(socket_s,(struct sockaddr *)&local,sizeof(local)) == SOCKET_ERROR){ - errorLog(modulo,73, TRUE); - return(FALSE); - } - while(true){ - trmInfo = (struct TramaTftp*)malloc(sizeof(struct TramaTftp)); // Crea estructura de control para hebra - if (trmInfo == NULL){ - errorLog(modulo,74, FALSE); - return(FALSE); - } - memset(trmInfo,0,sizeof(struct TramaTftp)); - trmInfo->sockaddrsize = sizeof(trmInfo->cliente); - // Espera tramas TFTP - ret = recvfrom(socket_s,(char *)&trmInfo->pckTftp, sizeof(trmInfo->pckTftp),0,(struct sockaddr *)&trmInfo->cliente,&trmInfo->sockaddrsize); - if (ret == SOCKET_ERROR){ - errorLog(modulo,75, TRUE); - return(FALSE); - } - else{ - if (ret>0){ - resul=pthread_create(&hThread,NULL,GestionaServicioTFTP,(LPVOID)trmInfo); - if(resul!=0){ - errorLog(modulo,76, TRUE); - return(FALSE); - } - pthread_detach(hThread); - } - } - - } - close(socket_s); -} -//________________________________________________________________________________________________________ -// Función: GestionaServicioDHCP -// -// Descripción: -// Gestiona la conexiónn con un cliente que sea Hidra para el servicio DHCP -// Parámetros: -// lpParam: Puntero a la estructura de control para la conversacion DHCP -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//________________________________________________________________________________________________________ -LPVOID GestionaServicioDHCP(LPVOID lpParam) -{ - struct TramaDhcpBootp * trmInfo=(struct TramaDhcpBootp *)lpParam; - char IPCliente[16]; // Ip del cliente - char MACCliente[16]; // Mac del cliente - - if(!OpcionesPresentes(trmInfo->pckDchp.magiccookie)) // Comprueba que existen opciones en la trama Dhcp - return(false); - strcpy(IPCliente,inet_ntoa(trmInfo->cliente.sin_addr)); - if(strcmp(IPCliente,"0.0.0.0")!=0){ // El cliente tiene una IP concreta distinta de 0.0.0.0 - if(!ClienteExistente(trmInfo,IPCliente,1)){ // Comprueba que se trata de un cliente Hidra - free(trmInfo); - return(false); - } - } - else{ - sprintf(MACCliente,"%02.2x%02.2x%02.2x%02.2x%02.2x%02.2x",(unsigned int)trmInfo->pckDchp.chaddr[0],(unsigned int)trmInfo->pckDchp.chaddr[1],(unsigned int)trmInfo->pckDchp.chaddr[2],(unsigned int)trmInfo->pckDchp.chaddr[3],(unsigned int)trmInfo->pckDchp.chaddr[4],(unsigned int)trmInfo->pckDchp.chaddr[5]); - if(!ClienteExistente(trmInfo,MACCliente,0)){ // Comprueba que se trata de un cliente Hidra (Por la Mac) - free(trmInfo); - return(false); - } - } - if(OpcionPXEClient(&trmInfo->pckDchp)) // Comprueba que sea un cliente PXE - ProcesaTramaClientePXE(trmInfo); // Procesa DHCP para el protocolo PXE - else - ProcesaTramaClienteDHCP(trmInfo); // Procesa DHCP de cliente Windows o Linux - - free(trmInfo); - return(false); -} -//_______________________________________________________________________________________________________________ -// -// Gestiona la conexion con un cliente que sea Hidra para el servicio BOOTP -// Parámetros: -// lpParam: Puntero a la estructura de control para la conversacion BOOTP -//_______________________________________________________________________________________________________________ -LPVOID GestionaServicioBOOTP(LPVOID lpParam) -{ - struct TramaDhcpBootp * trmInfo=(struct TramaDhcpBootp *)lpParam; - char IPCliente[16]; // Ip del cliente - - if(!OpcionesPresentes(trmInfo->pckDchp.magiccookie)) // Comprueba que existen opciones en la trama Dhcp - return(false); - - strcpy(IPCliente,inet_ntoa(trmInfo->cliente.sin_addr)); - if(!ClienteExistente(trmInfo,IPCliente,1)) // Comprueba que se trata de un cliente Hidra - return(false); - - if(OpcionPXEClient(&trmInfo->pckDchp)) // Comprueba que sea un cliente PXE - ProcesaTramaClienteBOOTP(trmInfo); // Procesa DHCP para el protocolo PXE - - free(trmInfo); - return(trmInfo); -} -//_______________________________________________________________________________________________________________ -// -// Comprueba si la IP del cliente está en la base de datos de Hidra -// Parámetros: -// trmInfo: Puntero a la estructura de control de la conversacin DHCP -// ipmac: IP o MAC del cliente que ha abierto la hebra -// sw: Si vale 1 o 2 o 3 el parámetro anterior ser una IP en caso contrario ser una MAC -// -// Devuelve: -// true: Si el cliente est en la base de datos -// false: En caso contrario -// -// Comentarios: -// Slo se procesarn mensages dhcp de clientes hidra. -//_______________________________________________________________________________________________________________ -int ClienteExistente(struct TramaDhcpBootp *trmInfo,char* ipmac,int sw) -{ - char sqlstr[1000],ErrStr[200]; - Database db; - Table tbl; - char wrouter[LONPRM]; - char wmascara[LONPRM]; - ///////////////////////////////////////////////////////////////////////// - // ACCESO atnico A TRAVEZ DE OBJETO MUTEX a este trozo de cnigo - pthread_mutex_lock(&guardia); - - // Abre conexion con base de datos - if(!db.Open(usuario,pasguor,datasource,catalog)){ // error de conexion - db.GetErrorErrStr(ErrStr); - return(false); - } - - if(sw==1 || sw==2){ // Bsqueda por IP - sprintf(sqlstr,"SELECT ip,router,mascara FROM ordenadores WHERE ip='%s' ",ipmac); - } - else{ // Bsqueda por MAC - sprintf(sqlstr,"SELECT ip,router,mascara FROM ordenadores WHERE mac='%s' ",ipmac); - } - if(!db.Execute(sqlstr,tbl)){ // Error al leer - db.GetErrorErrStr(ErrStr); - db.Close(); - pthread_mutex_unlock(&guardia); - return(false); - } - - if(tbl.ISEOF()){ // No existe el cliente - db.Close(); - pthread_mutex_unlock(&guardia); - return(false); - } - if(sw==1 || sw==0){ // Sólo para las tramas dhcp PXE y BOOTP - if(!tbl.Get("ip",trmInfo->bdIP)){ // Incorpora la IP a asignar al cliente a la estructura de control - tbl.GetErrorErrStr(ErrStr); // error al acceder al registro - db.Close(); - pthread_mutex_unlock(&guardia); - return(false); - } - if(!tbl.Get("router",wrouter)){ // Toma la configuración router del cliente - tbl.GetErrorErrStr(ErrStr); // error al acceder al registro - db.Close(); - pthread_mutex_unlock(&guardia); - return(false); - } - if(strlen(wrouter)>0) - strcpy(oProuter,wrouter); - else - strcpy(oProuter,router); - - if(!tbl.Get("mascara",wmascara)){ // Toma la configuración router del cliente - tbl.GetErrorErrStr(ErrStr); // error al acceder al registro - db.Close(); - pthread_mutex_unlock(&guardia); - return(false); - } - if(strlen(wmascara)>0) - strcpy(oPmascara,wmascara); - else - strcpy(oPmascara,mascara); - } - db.Close(); - pthread_mutex_unlock(&guardia); - //////////////////////////////////////////////////////////////////////////////// - return(true); -} -//_______________________________________________________________________________________________________________ -// -// Comprueba que existen opciones en el mensage dhcp analizando la magic cookie -// Parámetros: -// mc: Puntero al primer elemento de la magic cookie (primer campo de las opciones) -// -// Devuelve: -// true: Si esta presenta el valor 99..130.83.99 -// false: En caso contrario -//_______________________________________________________________________________________________________________ -int OpcionesPresentes(unsigned char *mc) -{ - if(mc[0]!=0x63) return(false); - if(mc[1]!=0x82) return(false); - if(mc[2]!=0x53) return(false); - if(mc[3]!=0x63) return(false); - - // Magic Cookie presente - return(true); -} -//_______________________________________________________________________________________________________________ -// -// Busca una determinada opción dentro de la trama dhcp -// Parámetros: -// dhcp_packet: Puntero a la estructura que contiene el mensaje dhcp -// codop: Cdigo de la opción a buscar -// -// Devuelve: -// Si existe, un puntero al primer elemento de la estructura de la opción (codigo,longitud,valor) -// en caso contrario devuelve null -//_______________________________________________________________________________________________________________ -unsigned char * BuscaOpcion(dhcp_packet* tDhcp,unsigned char codop) -{ - unsigned char wcodop; - unsigned char wlongitud; - unsigned char *ptrOp,*ptrDhcp; - - ptrDhcp=(unsigned char*)tDhcp; // Se toma el puntero al principio del mensage - ptrOp=(unsigned char*)&tDhcp->options[0]; // Se toma el puntero a las opciones - - while(ptrOp-ptrDhcp<DHCP_OPTION_LEN-4){ - wcodop = ptrOp[0]; - if(wcodop==DHCP_PAD) - ptrOp++; - else{ - if(wcodop==DHCP_END) // Fin de la cadena de opciones, no se encontr la opción - return(NULL); - else{ - - if (wcodop == codop) // Encuentra la opción - return(ptrOp); // Devuelve el puntero a la estructura variable opción - else{ - wlongitud = ptrOp[1]; - ptrOp+=wlongitud+2; // Avanza hasta la prxima opción - } - } - } - } - return(NULL); -} -//_______________________________________________________________________________________________________________ -// -// Comprueba si el mensaje recibido proviene de un cliente PXE -// Parámetros: -// dhcp_packet: Puntero a la estructura que contiene el mensaje dhcp -// -// Devuelve: -// true: Si el mensaje lo ha enviado un cliente PXE -// false: En caso contrario -//_______________________________________________________________________________________________________________ -int OpcionPXEClient(dhcp_packet* tDhcp) -{ - if(!BuscaOpcion(tDhcp,DHCP_CLASS_IDENTIFIER)) - return(false); - else - return(true); -} -//_______________________________________________________________________________________________________________ -// -// Procesa un mensaje DHCP recibido que proviene de un cliente PXE -// Parámetros: -// trmInfo: Puntero a la estructura de control de la conversacin DHCP -//_______________________________________________________________________________________________________________ -void ProcesaTramaClientePXE(struct TramaDhcpBootp* trmInfo) -{ - unsigned char codop; - unsigned char longitud; - unsigned char *ptrOp; - unsigned char *msgDhcp; - char modulo[]="ProcesaTramaClientePXE()"; - - ptrOp=BuscaOpcion(&trmInfo->pckDchp,DHCP_MESSAGE_TYPE); // Puntero a la opción tipo de mensaje - if(!ptrOp){ // No existe la opción DHCP - errorLog(modulo,77, FALSE); - return; - } - codop = ptrOp[0]; - longitud=ptrOp[1]; - msgDhcp=ptrOp+2; // Puntero al dato tipo de mensaje - switch(*msgDhcp){ - case DHCPDISCOVER: - dhcpDISCOVER_PXE(trmInfo); - break; - case DHCPREQUEST: - dhcpREQUEST_PXE(trmInfo); - break; - } -} -//_______________________________________________________________________________________________________________ -// -// Procesa un mensaje BOOTP recibido que proviene de un cliente PXE -// Parámetros: -// trmInfo: Puntero a la estructura de control de la conversacin BOOTP -//_______________________________________________________________________________________________________________ -void ProcesaTramaClienteBOOTP(struct TramaDhcpBootp* trmInfo) -{ - unsigned char codop; - unsigned char longitud; - unsigned char *ptrOp; - unsigned char *msgDhcp; - char modulo[]="ProcesaTramaClienteBOOTP()"; - - ptrOp=BuscaOpcion(&trmInfo->pckDchp,DHCP_MESSAGE_TYPE); // Puntero a la opción tipo de mensaje - if(!ptrOp){ // No existe la opción DHCP - errorLog(modulo,77, FALSE); - return; - } - codop = ptrOp[0]; - longitud=ptrOp[1]; - msgDhcp=ptrOp+2; // Puntero al dato tipo de mensaje - switch(*msgDhcp){ - case DHCPREQUEST: - bootpREQUEST_PXE(trmInfo); - break; - } -} -//_______________________________________________________________________________________________________________ -// -// Gestiona la conexion con un cliente que sea Hidra para el servicio TFTP -// Parámetros: -// lpParam: Puntero a la estructura de control para la conversacion TFTP -//_______________________________________________________________________________________________________________ -LPVOID GestionaServicioTFTP(LPVOID lpParam) -{ - struct TramaTftp * trmInfo=(struct TramaTftp *)lpParam; - char IPCliente[16]; // Ip del cliente - - strcpy(IPCliente,inet_ntoa(trmInfo->cliente.sin_addr)); - if(!ClienteExistente((struct TramaDhcpBootp*)trmInfo,IPCliente,2)) // Comprueba que se trata de un cliente Hidra - return(false); - - // Inicializa parámetros - trmInfo->sockaddrsize = sizeof(trmInfo->cliente); - trmInfo->sck=TomaSocketUser(); - if(trmInfo->sck==INVALID_SOCKET) return(false); // Ha habido algn problama para crear el socket de usuario - - trmInfo->currentopCode=0x0000; // Cdigo de operación para detectar errores de secuencia - trmInfo->bloquesize=512; // Tamao de bloque por defecto 512 - trmInfo->tsize=0; // Tamao del fichero - trmInfo->interval=0; // Intervalo - - ProcesaTramaClienteTFTP(trmInfo); // Procesa TFTP para el protocolo PXE - close(trmInfo->sck); - free(trmInfo); - return(trmInfo); -} -//_______________________________________________________________________________________________________________ -// -// Procesa un mensaje TFTP recibido que proviene de un cliente PXE -// Parámetros: -// trmInfo: Puntero a la estructura de control de la conversacin TFTP -//_______________________________________________________________________________________________________________ -void ProcesaTramaClienteTFTP(struct TramaTftp* trmInfo) -{ - char *ptr; - int bloque,lon,ret; - char tam[20]; - struct tftppacket_ack* ptrack; - char modulo[]="ProcesaTramaClienteTFTP()"; - - while(true){ - switch(ntohs(trmInfo->pckTftp.opcode)){ - case TFTPRRQ: // Read Request - if(trmInfo->currentopCode!=0x0000) return; // Error en la secuencia de operaciones - if(!PeticionFichero(trmInfo)) return; - fseek(trmInfo->fileboot,0,SEEK_SET); - trmInfo->pckTftp.opcode= htons(TFTPOACK); - trmInfo->currentopCode=TFTPOACK; - ptr=&trmInfo->pckTftp.buffer[0]; - if(trmInfo->tsize>0){ // opción tsize - strcpy(ptr,"tsize"); - ptr+=strlen(ptr)+1; - //itoa(trmInfo->tsize,tam,10); - sprintf(tam,"%d",trmInfo->tsize); - strcpy(ptr,tam); - ptr+=strlen(ptr)+1; - *ptr=0x00; - } - else{ - if(trmInfo->bloquesize>0){ // opción blksize - strcpy(ptr,"blksize"); - ptr+=strlen(ptr)+1; - //itoa(trmInfo->bloquesize,tam,10); - sprintf(tam,"%d",trmInfo->bloquesize); - strcpy(ptr,tam); - ptr+=strlen(ptr)+1; - *ptr=0x00; - } - else - trmInfo->bloquesize=512; - } - - lon=ptr-(char*)&trmInfo->pckTftp; - //ret=connect(trmInfo->sck,(struct sockaddr*)&trmInfo->cliente,trmInfo->sockaddrsize); - //if (ret == SOCKET_ERROR){ - // RegistraLog("***connect() fallo:",true); - // return; - //} - ret=sendto(trmInfo->sck,(char*)&trmInfo->pckTftp,lon,0,(struct sockaddr*)&trmInfo->cliente,trmInfo->sockaddrsize); - //ret=send(trmInfo->sck,(char*)&trmInfo->pckTftp,lon,0); - if (ret == SOCKET_ERROR){ - errorLog(modulo,26, TRUE); - return; - } - break; - - case TFTPACK: // - if(trmInfo->currentopCode!=TFTPOACK && trmInfo->currentopCode!=TFTPDATA) return; // Error en la secuencia de operaciones - ptrack=(struct tftppacket_ack*)&trmInfo->pckTftp; - bloque=ntohs(ptrack->block); - trmInfo->currentopCode=TFTPDATA; - ptrack->opcode=htons(TFTPDATA); - bloque++; - ptrack->block=htons(bloque); - trmInfo->numblock=bloque; - lon=fread(ptrack->buffer,1,trmInfo->bloquesize,trmInfo->fileboot); - //ret=connect(trmInfo->sck,(struct sockaddr*)&trmInfo->cliente,trmInfo->sockaddrsize); - //if (ret == SOCKET_ERROR){ - // RegistraLog("***connect() fallo:",true); - // return; - //} - ret=sendto(trmInfo->sck,(char*)&trmInfo->pckTftp,lon+4,0,(struct sockaddr*)&trmInfo->cliente,trmInfo->sockaddrsize); - //ret=send(trmInfo->sck,(char*)&trmInfo->pckTftp,lon+4,0); - if (ret == SOCKET_ERROR){ - errorLog(modulo,26, TRUE); - return; - } - if(lon==0) - return; // Fin de la trama tftp - break; - case TFTPERROR: - errorLog(modulo,78, TRUE); - } - ret = recvfrom(trmInfo->sck,(char *)&trmInfo->pckTftp, sizeof(trmInfo->pckTftp),0,(struct sockaddr *)&trmInfo->cliente,&trmInfo->sockaddrsize); - if (ret == SOCKET_ERROR){ - errorLog(modulo,79, TRUE); - return; - } - else - if(ret==0) break; - } - return; -} -//_______________________________________________________________________________________________________________ -// -// Procesa un mensaje Tftp de peticin de fichero. Recupera datos de tamao de bloque y otros parámetros -// para gestionar la conversacin. -// -// Parámetros: -// trmInfo: Puntero a la estructura de control de la conversacin TFTP -//_______________________________________________________________________________________________________________ -int PeticionFichero(struct TramaTftp* trmInfo) -{ - char *ptr; - char nomfile[250]; - - if(strncmp(trmInfo->pckTftp.buffer,"pxelinux.cfg",12)==0) - strcpy(nomfile,"default"); - else - strcpy(nomfile,trmInfo->pckTftp.buffer); - - trmInfo->currentopCode=ntohs(trmInfo->pckTftp.opcode); // Guarda código de operación - // Localiza parámetros - ptr=&trmInfo->pckTftp.buffer[0]; - ptr+=strlen(ptr)+1; // Avanza al campo siguiente al del nombre de fichero - if(!strcmp(ptr,"octet")){ // Modo de apertura - //trmInfo->fileboot=fopen(trmInfo->pckTftp.buffer,"rb"); - trmInfo->fileboot=fopen(nomfile,"rb"); - } - else{ - //trmInfo->fileboot=fopen(trmInfo->pckTftp.buffer,"rt"); - trmInfo->fileboot=fopen(nomfile,"rt"); - } - if(trmInfo->fileboot==NULL) - return(false); // No existe el fichero boot - ptr+=strlen(ptr)+1; // Paso al parámetro siguiente - while(*ptr){ - if(strcmp(ptr,"blksize")==0){ // parámetro blksize - ptr+=strlen(ptr) + 1; - trmInfo->bloquesize=atoi(ptr); - if(trmInfo->bloquesize<512) trmInfo->bloquesize=512; - if(trmInfo->bloquesize>MAXBLOCK) trmInfo->bloquesize=512; - ptr+=strlen(ptr) + 1; - } - else{ - if(strcmp(ptr,"tsize")==0){ // parámetro tsize - ptr+=strlen(ptr) + 1; - fseek(trmInfo->fileboot,0,SEEK_END); - trmInfo->tsize=ftell(trmInfo->fileboot); - ptr+=strlen(ptr) + 1; - } - else{ - if(strcmp(ptr,"interval")==0){ // Tamao de los bloques - ptr+=strlen(ptr) + 1; - trmInfo->interval=atoi(ptr); - ptr+=strlen(ptr) + 1; - } - else - return(false); - } - - } - } - return(true); -} -//_______________________________________________________________________________________________________________ -// -// Procesa un mensaje recibido que proviene de un cliente Hidra pero no en el momento de arranque con PXE -// sino cuando arranca con algn S.O. como (Windows oLinux) -// -// Parámetros: -// trmInfo: Puntero a la estructura de control de la conversacin DHCP -//_______________________________________________________________________________________________________________ -void ProcesaTramaClienteDHCP(struct TramaDhcpBootp* trmInfo) -{ - unsigned char codop; - unsigned char longitud; - unsigned char *ptrOp; - unsigned char *msgDhcp; - int ret; - char modulo[]="ProcesaTramaClienteDHCP()"; - - while(true){ - ptrOp=BuscaOpcion(&trmInfo->pckDchp,DHCP_MESSAGE_TYPE); // Puntero a la opción tipo de mensaje - if(!ptrOp){ // No existe la opción DHCP - errorLog(modulo,77, FALSE); - return; - } - codop = ptrOp[0]; - longitud=ptrOp[1]; - msgDhcp=ptrOp+2; // Puntero al dato tipo de mensaje - - switch(*msgDhcp){ - case DHCPDISCOVER: - dhcpDISCOVER_PXE(trmInfo); - break; - case DHCPREQUEST: - dhcpREQUEST_PXE(trmInfo); - break; - } - ret = recvfrom(trmInfo->sck,(char *)&trmInfo->pckDchp, sizeof(trmInfo->pckDchp),0,(struct sockaddr *)&trmInfo->cliente,&trmInfo->sockaddrsize); - if (ret == SOCKET_ERROR){ - errorLog(modulo,80, TRUE); - } - else - if(ret==0) break; - } -} -//_______________________________________________________________________________________________________________ -// -// Rellena el campo IP asignada(yiaddr) al cliente dentro del mensaje DHCP -// -// Parámetros: -// trmInfo: Puntero a la estructura de control de la conversacin DHCP -//_______________________________________________________________________________________________________________ -void RellenaIPCLiente(struct TramaDhcpBootp* trmInfo) -{ - unsigned long aux; - - aux=inet_addr(trmInfo->bdIP); // Ip para el cliente - memcpy((void*)&trmInfo->pckDchp.yiaddr,&aux,sizeof(aux)); -} -//_______________________________________________________________________________________________________________ -// -// Rellena el campo IP del servidor(siaddr) dentro del mensaje DHCP -// -// Parámetros: -// trmInfo: Puntero a la estructura de control de la conversacin DHCP -//_______________________________________________________________________________________________________________ -void RellenaIPServidor(struct TramaDhcpBootp* trmInfo) -{ - unsigned long aux; - - aux=inet_addr(IPlocal); // Ip del servidor - memcpy(&trmInfo->pckDchp.siaddr,&aux,sizeof(aux)); -} -//_______________________________________________________________________________________________________________ -// -// Rellena el campo nombre del servidor boot dentro del mensaje BOOTP -// -// Parámetros: -// trmInfo: Puntero a la estructura de control de la conversacin BOOTP -//_______________________________________________________________________________________________________________ -void RellenaNombreServidorBoot(struct TramaDhcpBootp* trmInfo) -{ - char aux[100]; - - strcpy(aux,"Hidra 2.0 PXE Boot Server"); - memcpy(&trmInfo->pckDchp.sname,&aux,25); -} -//_______________________________________________________________________________________________________________ -// -// Rellena el campo nombre del fichero boot dentro del mensaje BOOTP -// -// Parámetros: -// trmInfo: Puntero a la estructura de control de la conversacin BOOTP -//_______________________________________________________________________________________________________________ -void RellenaNombreFicheroBoot(struct TramaDhcpBootp* trmInfo) -{ - char aux[100]; - - strcpy(aux,"pxelinux.0"); - memcpy(&trmInfo->pckDchp.file,&aux,25); -} -//_______________________________________________________________________________________________________________ -// -// Procesa un mensaje DHCPDISCOVER -// -// Parámetros: -// trmInfo: Puntero a la estructura de control de la conversacin DHCP -// -// Devuelve: -// true: Si el mensaje se procesa correctamente -// false: En caso contrario -//_______________________________________________________________________________________________________________ -void dhcpDISCOVER_PXE(struct TramaDhcpBootp* trmInfo) -{ - unsigned char *ptrOp,*ptrDhcp; - int lon,ret; - char modulo[]="dhcpDISCOVER_PXE()"; - - ptrDhcp=(unsigned char*)&trmInfo->pckDchp; // Se toma el puntero al principio del mensage - ptrOp=(unsigned char*)&trmInfo->pckDchp.options[0]; // Se toma el puntero a las opciones - lon=ptrOp-ptrDhcp; //Longitud del mensaje sin las opciones ni la magic coockie - - RellenaIPCLiente(trmInfo); - RellenaIPServidor(trmInfo); - *ptrOp='\0'; //Borra opciones del mensaje recibido para colocar las nuevas - - - AdjDHCPOFFER(&ptrOp,&lon); // Genera opción de Mensaje (0x35) dhcp valor 1 - AdjSERVERIDENTIFIER(&ptrOp,&lon); // Genera opción de Mensaje (0x36) Dhcp - AdjLEASETIME(&ptrOp,&lon); // Genera opción de Mensaje (0x33) Dhcp - AdjSUBNETMASK(&ptrOp,&lon); // Genera opción de Mensaje (0x01) Dhcp - AdjROUTERS(&ptrOp,&lon); // Genera opción de Mensaje (0x03) Dhcp - AdjCLASSIDENTIFIER(&ptrOp,&lon); // Genera opción de Mensaje (0x3c) Dhcp - *ptrOp=DHCP_END; - lon++; - trmInfo->pckDchp.op=DHCPOFFER; - //MandaRespuesta(&trmInfo->pckDchp,htonl(INADDR_BROADCAST),lon,htons(PUERTODHCPDESTINO)); - trmInfo->cliente.sin_addr.s_addr=htonl(INADDR_BROADCAST); - ret=sendto(trmInfo->sck,(char*)&trmInfo->pckDchp,lon,0,(struct sockaddr*)&trmInfo->cliente,trmInfo->sockaddrsize); - if (ret == SOCKET_ERROR){ - errorLog(modulo,26, TRUE); - } -} -//_______________________________________________________________________________________________________________ -// -// Procesa un mensaje DHCPREQUEST (DHCP) -// -// Parámetros: -// trmInfo: Puntero a la estructura de control para la conversacin DHCP -// -// Devuelve: -// true: Si el mensaje se procesa correctamente -// false: En caso contrario -//_______________________________________________________________________________________________________________ -void dhcpREQUEST_PXE(struct TramaDhcpBootp* trmInfo) -{ - unsigned char * ptrOp,*ptrDhcp; - struct dhcp_opcion; - int lon,ret; - char modulo[]="dhcpREQUEST_PXE()"; - - ptrDhcp=(unsigned char*)&trmInfo->pckDchp; // Se toma el puntero al principio del mensage - ptrOp=(unsigned char*)&trmInfo->pckDchp.options[0]; // Se toma el puntero a las opciones - lon=ptrOp-ptrDhcp; //Longitud del mensaje sin las opciones ni la magic coockie - - RellenaIPCLiente(trmInfo); - RellenaIPServidor(trmInfo); - *ptrOp='\0'; //Borra opciones del mensaje recibido para colocar las nuevas - - AdjDHCPACK(&ptrOp,&lon); // Ge db.Close();nera opción de Mensaje (0x35) dhcp valor 5 - AdjSERVERIDENTIFIER(&ptrOp,&lon); // Genera opción de Mensaje (0x36) Dhcp - AdjLEASETIME(&ptrOp,&lon); // Genera opción de Mensaje (0x33) Dhcp - AdjSUBNETMASK(&ptrOp,&lon); // Genera opción de Mensaje (0x01) Dhcp - AdjROUTERS(&ptrOp,&lon); // Genera opción de Mensaje (0x03) Dhcp - AdjCLASSIDENTIFIER(&ptrOp,&lon); // Genera opción de Mensaje (0x3c) Dhcp - - *ptrOp=DHCP_END; - lon++; - - trmInfo->pckDchp.op=DHCPOFFER; - //MandaRespuesta(&trmInfo->pckDchp,htonl(INADDR_BROADCAST),lon,htons(PUERTODHCPDESTINO)); - trmInfo->cliente.sin_addr.s_addr=htonl(INADDR_BROADCAST); - ret=sendto(trmInfo->sck,(char*)&trmInfo->pckDchp,lon,0,(struct sockaddr*)&trmInfo->cliente,trmInfo->sockaddrsize); - if (ret == SOCKET_ERROR){ - errorLog(modulo,26, TRUE); - } -} -//_______________________________________________________________________________________________________________ -// -// Procesa un mensaje DHCPREQUEST (BOOTP) -// -// Parámetros: -// trmInfo: Puntero a la estructura de control para la conversacin BOOTP -// -// Devuelve: -// true: Si el mensaje se procesa correctamente -// false: En caso contrario -//_______________________________________________________________________________________________________________ -void bootpREQUEST_PXE(struct TramaDhcpBootp* trmInfo) -{ - unsigned char * ptrOp,*ptrDhcp; - struct dhcp_opcion; - int lon,ret; - unsigned long aux; - char modulo[]="bootpREQUEST_PXE()"; - - ptrDhcp=(unsigned char*)&trmInfo->pckDchp; // Se toma el puntero al principio del mensage - ptrOp=(unsigned char*)&trmInfo->pckDchp.options[0]; // Se toma el puntero a las opciones - lon=ptrOp-ptrDhcp; //Longitud del mensaje sin las opciones ni la magic coockie - - aux=inet_addr("0.0.0.0"); // Borra Ip del cliente ( No se porqu pero en la trama aparece as) - memcpy(&trmInfo->pckDchp.ciaddr,&aux,4); - RellenaNombreServidorBoot(trmInfo); - RellenaNombreFicheroBoot(trmInfo); - - *ptrOp='\0'; //Borra opciones del mensaje recibido para colocar las nuevas - - AdjDHCPACK(&ptrOp,&lon); // Genera opción de Mensaje (0x35) dhcp valor 5 - AdjSERVERIDENTIFIER(&ptrOp,&lon); // Genera opción de Mensaje (0x36) Dhcp - AdjBOOTSIZE(&ptrOp,&lon); // Genera opción de Mensaje (0x0D) Dhcp - AdjCLASSIDENTIFIER(&ptrOp,&lon); // Genera opción de Mensaje (0x3c) Dhcp - - *ptrOp=DHCP_END; - lon++; - - trmInfo->pckDchp.op=DHCPOFFER; - //ret=connect(trmInfo->sck,(struct sockaddr*)&trmInfo->cliente,trmInfo->sockaddrsize); - //if (ret == SOCKET_ERROR){ - // RegistraLog("***connect() fallo:",true); - // return; - //} - //ret=send(trmInfo->sck,(char*)&trmInfo->pckDchp,lon,0); - ret=sendto(trmInfo->sck,(char*)&trmInfo->pckDchp,lon,0,(struct sockaddr*)&trmInfo->cliente,trmInfo->sockaddrsize); - if (ret == SOCKET_ERROR){ - errorLog(modulo,26,TRUE); - return; - } -} -//_______________________________________________________________________________________________________________ -// -// Genera una opción del tipo 0x35(53) con el valor "Dhcp Offer" valor 2 -// -// Devuelve: -// Una estructura de opciones de dhcp(codigo,longitud,dato) con la opciones de Mensaje dhcp Offer -//_______________________________________________________________________________________________________________ -void AdjDHCPOFFER(unsigned char* *ptrOp,int*lon) -{ - **ptrOp=DHCP_MESSAGE_TYPE; - *ptrOp+=1; - **ptrOp=1; - *ptrOp+=1; - **ptrOp=DHCPOFFER; - *ptrOp+=1; - *lon+=3; -} -//_______________________________________________________________________________________________________________ -// -// Genera una opción del tipo 0x35(53) con el valor "Dhcp Ack" valor 5 -// -// Devuelve: -// Una estructura de opciones de dhcp(codigo,longitud,dato) con la opciones de Mensaje dhcp Ack -//_______________________________________________________________________________________________________________ -void AdjDHCPACK(unsigned char** ptrOp,int*lon) - -{ - **ptrOp=DHCP_MESSAGE_TYPE; - *ptrOp+=1; - **ptrOp=1; - *ptrOp+=1; - **ptrOp=DHCPACK; - *ptrOp+=1; - *lon+=3; -} -//_______________________________________________________________________________________________________________ -// -// Genera una opción del tipo 0x03(3) con la IP del router -// -// Devuelve: -// Una estructura de opciones de dhcp(codigo,longitud,dato) con la opciones de Ip del Routers -//_______________________________________________________________________________________________________________ -void AdjROUTERS(unsigned char** ptrOp,int*lon) -{ - unsigned long aux; - aux=inet_addr(oProuter); // Router - - **ptrOp=DHCP_ROUTERS; - *ptrOp+=1; - **ptrOp=4; - *ptrOp+=1; - memcpy(*ptrOp,&aux,4); // Copia la Ip del router en la estructura - *ptrOp+=4; - *lon+=6; - -} -//_______________________________________________________________________________________________________________ -// -// Genera una opción del tipo 0x01(1) con la mascara de red -// -// Devuelve: -// Una estructura de opciones de dhcp(codigo,longitud,dato) con la opciones de mscara de red -//_______________________________________________________________________________________________________________ -void AdjSUBNETMASK(unsigned char** ptrOp,int*lon) -{ - unsigned long aux; - aux=inet_addr(oPmascara); // Mascara de red - - **ptrOp=DHCP_SUBNET_MASK; - *ptrOp+=1; - **ptrOp=4; - *ptrOp+=1; - memcpy(*ptrOp,&aux,4); // Copia la máscara de red - *ptrOp+=4; - *lon+=6; -} -//_______________________________________________________________________________________________________________ -// -// Genera una opción del tipo 0x3c(60) con el literal "PXECLient" para clientes PXE -// -// Devuelve: -// Una estructura de opciones de dhcp(codigo,longitud,dato) con la opciones de clase de cliente -//_______________________________________________________________________________________________________________ -void AdjCLASSIDENTIFIER(unsigned char** ptrOp,int*lon) -{ - **ptrOp=DHCP_CLASS_IDENTIFIER; - *ptrOp+=1; - **ptrOp=9; - *ptrOp+=1; - memcpy(*ptrOp,"PXEClient",9); // Copia el literal PXClient - *ptrOp+=9; - *lon+=11; -} -//_______________________________________________________________________________________________________________ -// -// Genera una opción del tipo 0x36(54) con la IP del servidor -// -// Devuelve: -// Una estructura de opciones de dhcp(codigo,longitud,dato) con la opciones de Ip del servidor -//_______________________________________________________________________________________________________________ -void AdjSERVERIDENTIFIER(unsigned char** ptrOp,int*lon) -{ - unsigned long aux; - aux=inet_addr(IPlocal); // Ip del servidor - - **ptrOp=DHCP_SERVER_IDENTIFIER; - *ptrOp+=1; - **ptrOp=4; - *ptrOp+=1; - memcpy(*ptrOp,&aux,4); // Copia la Ip del ervidor en la estructura - *ptrOp+=4; - *lon+=6; - -} -//_______________________________________________________________________________________________________________ -// -// Genera una opción del tipo 0x33(51) con el tiempo de "lease" de la IP -// -// Devuelve: -// Una estructura de opciones de dhcp(codigo,longitud,dato) con la opciones del "Lease Time" -//_______________________________________________________________________________________________________________ -void AdjLEASETIME(unsigned char** ptrOp,int*lon) -{ - unsigned long aux; - aux=0x00006054; // tiempo en segundos - - **ptrOp=DHCP_LEASE_TIME; - *ptrOp+=1; - **ptrOp=4; - *ptrOp+=1; - memcpy(*ptrOp,&aux,4); // Copia el lease time en la estructura - *ptrOp+=4; - *lon+=6; -} -//_______________________________________________________________________________________________________________ -// -// Genera una opción del tipo 0x0D(13) con el tiempo tamao del fichero boot -// -// Devuelve: -// Una estructura de opciones de dhcp(codigo,longitud,dato) con la opciones del "Lease Time" -//_______________________________________________________________________________________________________________ -void AdjBOOTSIZE(unsigned char** ptrOp,int*lon) -{ - unsigned short aux; - aux=0x0402; // Tamao en bytes - - **ptrOp=DHCP_BOOT_SIZE; - *ptrOp+=1; - **ptrOp=2; - *ptrOp+=1; - memcpy(*ptrOp,&aux,2); // Copia el tamao en la estructura - *ptrOp+=2; - *lon+=4; -} -//_______________________________________________________________________________________________________________ -// -// Crea un socket en un puerto determinado para la conversacin de las distintas hebras -// -//_______________________________________________________________________________________________________________ -SOCKET TomaSocketUser() -{ - SOCKET socket_c; // Socket para hebras (UDP) - struct sockaddr_in cliente; - int ret,puerto; - BOOLEAN bOpt; - char modulo[]="TomaSocketUser()"; - - socket_c = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); // Crea socket para UDP - - if (socket_c == SOCKET_ERROR){ - errorLog(modulo,81,TRUE); - return(false); - } - cliente.sin_addr.s_addr = htonl(INADDR_ANY); // selecciona interface - cliente.sin_family = AF_INET; - puerto=PUERTOMINUSER; - while(puerto<PUERTOMAXUSER){ // Busca puerto libre - cliente.sin_port = htons(puerto); // Puerto asignado - if (bind(socket_c,(struct sockaddr *)&cliente,sizeof(cliente)) == SOCKET_ERROR) - puerto++; - else - break; - } - if(puerto>=PUERTOMAXUSER){ // No hay puertos libres - errorLog(modulo,63, TRUE); - return(INVALID_SOCKET); - } - - bOpt=TRUE; // Pone el socket en modo "soportar Broadcast" - ret=setsockopt(socket_c,SOL_SOCKET,SO_BROADCAST,(char *)&bOpt,sizeof(bOpt)); - if (ret == SOCKET_ERROR){ - errorLog(modulo,48, TRUE); - return(INVALID_SOCKET); - } - return(socket_c); -} -//_______________________________________________________________________________________________________________ -void Pinta(dhcp_packet* tdp) -{ - return; - printf("\nop = %d htype = %d hlen = %d hops = %d",tdp -> op, tdp -> htype, tdp -> hlen, tdp -> hops); - //printf ("\nxid = %x secs = %d flags = %x",tdp -> xid, tdp -> secs, tdp -> flags); - printf ("\nciaddr = %s", inet_ntoa (tdp -> ciaddr)); - printf ("\nyiaddr = %s", inet_ntoa (tdp -> yiaddr)); - printf ("\nsiaddr = %s", inet_ntoa (tdp -> siaddr)); - printf ("\ngiaddr = %s", inet_ntoa (tdp -> giaddr)); - printf ("\nchaddr = %x:%x:%x:%x:%x:%x",((unsigned char *)(tdp -> chaddr)) [0],((unsigned char *)(tdp -> chaddr)) [1],((unsigned char *)(tdp -> chaddr)) [2],((unsigned char *)(tdp -> chaddr)) [3],((unsigned char *)(tdp -> chaddr)) [4],((unsigned char *)(tdp -> chaddr)) [5]); - printf ("\nfilename = %s", tdp -> file); - printf ("\nserver_name = %s", tdp -> sname); - - printf ("\n\n"); -} -//*************************************************************************************************************** -// PROGRAMA PRINCIPAL -//*************************************************************************************************************** -int main(int argc, char **argv) -{ - pthread_t hThreadDHCP,hThreadBOOTP,hThreadTFTP; - int resul; - char modulo[] = "main()"; - - /*-------------------------------------------------------------------------------------------------------- - Validación de parámetros de ejecución y lectura del fichero de configuración del servicio - ---------------------------------------------------------------------------------------------------------*/ - if (!validacionParametros(argc, argv,4)) // Valida parámetros de ejecución - exit(EXIT_FAILURE); - - if (!tomaConfiguracion(szPathFileCfg)) { // Toma parametros de configuracion - exit(EXIT_FAILURE); - } - - infoLog(1); // Inicio de sesión - - // Hebra servicio DHCP --------------------------------- - resul=pthread_create(&hThreadDHCP,NULL,ServicioDHCP,(LPVOID)IPlocal); - if(resul!=0){ - errorLog(modulo, 58, TRUE); - exit(EXIT_FAILURE); - } - pthread_detach(hThreadDHCP); - - - // Hebra servicio BOOTP --------------------------------- - resul=pthread_create(&hThreadBOOTP,NULL,ServicioBOOTP,(LPVOID)IPlocal); - if(resul!=0){ - errorLog(modulo,59,TRUE); - exit(EXIT_FAILURE); - } - pthread_detach(hThreadBOOTP); - - // Hebra servicio TFTP ---------------------------------- - resul=pthread_create(&hThreadTFTP,NULL,ServicioTFTP,(LPVOID)IPlocal); - if(resul!=0){ - errorLog(modulo,60,TRUE); - exit(EXIT_FAILURE); - } - pthread_detach(hThreadTFTP); - - while (true) - sleep(1000); - -} diff --git a/admin/Sources/Services/ogAdmBoot/sources/ogAdmBoot.h b/admin/Sources/Services/ogAdmBoot/sources/ogAdmBoot.h deleted file mode 100644 index ec6db36a..00000000 --- a/admin/Sources/Services/ogAdmBoot/sources/ogAdmBoot.h +++ /dev/null @@ -1,262 +0,0 @@ -// ******************************************************************************************************** -// Servicio: ogAdmBoot -// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla -// Fecha Creación: Julio-2010 -// Fecha Última modificación: Julio-2010 -// Nombre del fichero: ogAdmBoot.cpp -// Descripción :Este fichero implementa el servicio dhcp y tftp propios del sistema -// ******************************************************************************************************** -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <ctype.h> -#include <errno.h> -#include <unistd.h> -#include <time.h> -#include <sys/types.h> -#include <sys/socket.h> -#include <netinet/in.h> -#include <arpa/inet.h> -#include </usr/include/mysql/mysql.h> -#include <pthread.h> -#include "Database.h" -#include "ogAdmLib.h" -// _____________________________________________________________________________________________________________ - -#define PUERTODHCPORIGEN 67 -#define PUERTODHCPDESTINO 68 - -#define PUERTOBOOTPORIGEN 4011 -#define PUERTOBOOTPDESTINO 68 - -#define PUERTOTFTPORIGEN 69 - -#define PUERTOMINUSER 20000 -#define PUERTOMAXUSER 60000 - -#define MAX_INTERFACE_LIST 20 -#define MAX_NUM_CSADDRS 20 -// _____________________________________________________________________________________________________________ -#define DHCP_UDP_OVERHEAD (20 + 8 ) // IP header + UDP header -#define DHCP_SNAME_LEN 64 -#define DHCP_FILE_LEN 128 -#define DHCP_FIXED_NON_UDP 236 -#define DHCP_FIXED_LEN (DHCP_FIXED_NON_UDP + DHCP_UDP_OVERHEAD) // Longitud de la trama sin las opciones -#define DHCP_MTU_MAX 1500 -#define DHCP_OPTION_LEN (DHCP_MTU_MAX - DHCP_FIXED_LEN) - -#define BOOTP_MIN_LEN 300 -#define DHCP_MIN_LEN 548 - -struct dhcp_packet { - unsigned char op; // Message opcode - unsigned char htype; // Hardware addr type - unsigned char hlen; // Hardware addr length - unsigned char hops; // Number of relay agent hops from client - unsigned long xid; // Transaction ID - unsigned short secs; // Seconds since client started looking - unsigned short flags; // Flag bits - struct in_addr ciaddr; // Client IP address - struct in_addr yiaddr; // Client IP address - struct in_addr siaddr; // IP address of next server - struct in_addr giaddr; // DHCP relay agent IP address - unsigned char chaddr [16];// Client hardware address - char sname[DHCP_SNAME_LEN]; // Server name - char file[DHCP_FILE_LEN]; // Boot filename - unsigned char magiccookie[4]; - unsigned char options [DHCP_OPTION_LEN-4]; // Optional parameters. -}; - -// Estructura genrica de una opcin DHCP -struct dhcp_opcion { - unsigned char codop; - unsigned char tam; - unsigned char dato; -}; - -// Cdigo de las distintas opciones DHCP -#define DHCP_PAD 0 -#define DHCP_SUBNET_MASK 1 -#define DHCP_TIME_OFFSET 2 -#define DHCP_ROUTERS 3 -#define DHCP_TIME_SERVERS 4 -#define DHCP_NAME_SERVERS 5 -#define DHCP_DOMAIN_NAME_SERVERS 6 -#define DHCP_LOG_SERVERS 7 -#define DHCP_COOKIE_SERVERS 8 -#define DHCP_LPR_SERVERS 9 -#define DHCP_IMPRESS_SERVERS 10 -#define DHCP_RESOURCE_LOCATION_SERVERS 11 -#define DHCP_HOST_NAME 12 -#define DHCP_BOOT_SIZE 13 -#define DHCP_MERIT_DUMP 14 -#define DHCP_DOMAIN_NAME 15 -#define DHCP_SWAP_SERVER 16 -#define DHCP_ROOT_PATH 17 -#define DHCP_EXTENSIONS_PATH 18 -#define DHCP_IP_FORWARDING 19 -#define DHCP_NON_LOCAL_SOURCE_ROUTING 20 -#define DHCP_POLICY_FILTER 21 -#define DHCP_MAX_DGRAM_REASSEMBLY 22 -#define DHCP_DEFAULT_IP_TTL 23 -#define DHCP_PATH_MTU_AGING_TIMEOUT 24 -#define DHCP_PATH_MTU_PLATEAU_TABLE 25 -#define DHCP_INTERFACE_MTU 26 -#define DHCP_ALL_SUBNETS_LOCAL 27 -#define DHCP_BROADCAST_ADDRESS 28 -#define DHCP_PERFORM_MASK_DISCOVERY 29 -#define DHCP_MASK_SUPPLIER 30 -#define DHCP_ROUTER_DISCOVERY 31 -#define DHCP_ROUTER_SOLICITATION_ADDRESS 32 -#define DHCP_STATIC_ROUTES 33 -#define DHCP_TRAILER_ENCAPSULATION 34 -#define DHCP_ARP_CACHE_TIMEOUT 35 -#define DHCP_IEEE802_3_ENCAPSULATION 36 -#define DHCP_DEFAULT_TCP_TTL 37 -#define DHCP_TCP_KEEPALIVE_INTERVAL 38 -#define DHCP_TCP_KEEPALIVE_GARBAGE 39 -#define DHCP_NIS_DOMAIN 40 -#define DHCP_NIS_SERVERS 41 -#define DHCP_NTP_SERVERS 42 -#define DHCP_VENDOR_ENCAPSULATED_OPTIONS 43 -#define DHCP_NETBIOS_NAME_SERVERS 44 -#define DHCP_NETBIOS_DD_SERVER 45 -#define DHCP_NETBIOS_NODE_TYPE 46 -#define DHCP_NETBIOS_SCOPE 47 -#define DHCP_FONT_SERVERS 48 -#define DHCP_X_DISPLAY_MANAGER 49 -#define DHCP_REQUESTED_ADDRESS 50 -#define DHCP_LEASE_TIME 51 -#define DHCP_OPTION_OVERLOAD 52 -#define DHCP_MESSAGE_TYPE 53 -#define DHCP_SERVER_IDENTIFIER 54 -#define DHCP_PARAMETER_REQUEST_LIST 55 -#define DHCP_MESSAGE 56 -#define DHCP_MAX_MESSAGE_SIZE 57 -#define DHCP_RENEWAL_TIME 58 -#define DHCP_REBINDING_TIME 59 -#define DHCP_CLASS_IDENTIFIER 60 -#define DHCP_CLIENT_IDENTIFIER 61 -#define DHCP_USER_CLASS_ID 77 -#define DHCP_END 255 - -// DHCP message types. -#define DHCPDISCOVER 1 -#define DHCPOFFER 2 -#define DHCPREQUEST 3 -#define DHCPDECLINE 4 -#define DHCPACK 5 -#define DHCPNAK 6 -#define DHCPRELEASE 7 -#define DHCPINFORM 8 - -// Estructura para trabajar en cada hebra con el cliente en cuestion -struct TramaDhcpBootp{ - SOCKET sck; - struct sockaddr_in cliente; - socklen_t sockaddrsize; - struct dhcp_packet pckDchp; - char bdIP[16]; -}; -// _____________________________________________________________________________________________________________ - -#define MAXBLOCK 4096 - - -// TFTP Cdigos de operacin. -#define TFTPRRQ 1 // Read request. -#define TFTPWRQ 2 // Write request -#define TFTPDATA 3 // Read or write the next block of data. -#define TFTPACK 4 // Confirnacin de bloque procesado -#define TFTPERROR 5 // Error message -#define TFTPOACK 6 // Option acknowledgment - -// Paquete TFTP genrico -struct tftp_packet -{ - WORD opcode; - char buffer[MAXBLOCK+2]; -}; -// Paquete TFTP tipo ACK -struct tftppacket_ack -{ - WORD opcode; - WORD block; - char buffer[MAXBLOCK]; -}; -// Paquete TFTP tipo ERROR packet -struct tftppacket_error -{ - WORD opcode; - WORD errorcode; - char errormessage[508]; -}; -// Estructura para trabajar en cada hebra con el cliente en cuestion -struct TramaTftp{ - SOCKET sck; - struct sockaddr_in cliente; - socklen_t sockaddrsize; - struct tftp_packet pckTftp; - FILE * fileboot; - int bloquesize; - int tsize; - int interval; - int numblock; - unsigned short currentopCode; -}; -//______________________________________________________ -static pthread_mutex_t guardia; // Controla acceso exclusivo de hebras -//______________________________________________________ -char IPlocal[LONPRM]; -char usuario[LONPRM]; -char pasguor[LONPRM]; -char datasource[LONPRM]; -char catalog[LONPRM]; -char router[LONPRM]; -char mascara[LONPRM]; - -char oProuter[LONPRM]; -char oPmascara[LONPRM]; - -// Prototipo de funciones -void RegistraLog(char *,int); -int TomaParametrosReg(); - -LPVOID ServicioDHCP(LPVOID); -LPVOID ServicioBOOTP(LPVOID); -LPVOID ServicioTFTP(LPVOID); -LPVOID GestionaServicioDHCP(LPVOID); -LPVOID GestionaServicioBOOTP(LPVOID); -LPVOID GestionaServicioTFTP(LPVOID); - -int ClienteExistente(struct TramaDhcpBootp *,char*,int); -int OpcionesPresentes(unsigned char *); -unsigned char * BuscaOpcion(dhcp_packet* ,unsigned char ); - -int OpcionPXEClient(dhcp_packet* ); -void ProcesaTramaClientePXE(struct TramaDhcpBootp* trmInfo); -void ProcesaTramaClienteDHCP(struct TramaDhcpBootp* trmInfo); -void ProcesaTramaClienteBOOTP(struct TramaDhcpBootp* trmInfo); -void ProcesaTramaClienteTFTP(struct TramaTftp * trmInfo); - -void RellenaIPCLiente(struct TramaDhcpBootp*); -void RellenaIPServidor(struct TramaDhcpBootp*); -void dhcpDISCOVER_PXE(struct TramaDhcpBootp*); -void dhcpREQUEST_PXE(struct TramaDhcpBootp*); -void bootpREQUEST_PXE(struct TramaDhcpBootp*); - -int PeticionFichero(struct TramaTftp*); - -void AdjDHCPOFFER(unsigned char**,int*); -void AdjDHCPACK(unsigned char**,int*); -void AdjROUTERS(unsigned char** ,int*); -void AdjSUBNETMASK(unsigned char**,int*); -void AdjCLASSIDENTIFIER(unsigned char** ,int*); -void AdjSERVERIDENTIFIER(unsigned char** ,int*); -void AdjLEASETIME(unsigned char** ,int*); -void AdjBOOTSIZE(unsigned char** ,int*); - -SOCKET TomaSocketUser(); -struct tm * TomaHora(); -int split_parametros(char **,char *, char *); -void duerme(unsigned int ); diff --git a/admin/Sources/Services/ogAdmServer/Makefile b/admin/Sources/Services/ogAdmServer/Makefile index cfd06d4d..bffa4dca 100644 --- a/admin/Sources/Services/ogAdmServer/Makefile +++ b/admin/Sources/Services/ogAdmServer/Makefile @@ -8,12 +8,11 @@ INSTALL_DIR := /opt/opengnsys # Opciones de compilacion CFLAGS := $(shell mysql_config --cflags) -CFLAGS += -O0 -g -Wall -I../../Includes # Depuracion -#CFLAGS += -O3 -I../../Includes # Optimizacion +CFLAGS += -g -Wall -I../../Includes CPPFLAGS := $(CFLAGS) # Opciones de linkado -LDFLAGS := -Wl,--no-as-needed $(shell mysql_config --libs) -lpthread +LDFLAGS := -Wl,--no-as-needed $(shell mysql_config --libs) -lev -ljansson # Ficheros objetos OBJS := ../../Includes/Database.o sources/ogAdmServer.o @@ -23,7 +22,6 @@ all: $(PROYECTO) $(PROYECTO): $(OBJS) g++ $(LDFLAGS) $(OBJS) -o $(PROYECTO) -# strip $(PROYECTO) # Optimizacion install: $(PROYECTO) cp $(PROYECTO) $(INSTALL_DIR)/sbin diff --git a/admin/Sources/Services/ogAdmServer/ogAdmServer.cfg b/admin/Sources/Services/ogAdmServer/ogAdmServer.cfg index 9273952f..790b2336 100644 --- a/admin/Sources/Services/ogAdmServer/ogAdmServer.cfg +++ b/admin/Sources/Services/ogAdmServer/ogAdmServer.cfg @@ -4,3 +4,5 @@ USUARIO=DBUSER PASSWORD=DBPASSWORD datasource=localhost CATALOG=DATABASE +INTERFACE=eth0 +APITOKEN=REPOKEY diff --git a/admin/Sources/Services/ogAdmServer/sources/ogAdmServer.cpp b/admin/Sources/Services/ogAdmServer/sources/ogAdmServer.cpp index 4aa68441..1b806a91 100644 --- a/admin/Sources/Services/ogAdmServer/sources/ogAdmServer.cpp +++ b/admin/Sources/Services/ogAdmServer/sources/ogAdmServer.cpp @@ -8,6 +8,22 @@ // ******************************************************************************************************* #include "ogAdmServer.h" #include "ogAdmLib.c" +#include <ev.h> +#include <syslog.h> +#include <sys/ioctl.h> +#include <ifaddrs.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <jansson.h> + +static char usuario[LONPRM]; // Usuario de acceso a la base de datos +static char pasguor[LONPRM]; // Password del usuario +static char datasource[LONPRM]; // Dirección IP del gestor de base de datos +static char catalog[LONPRM]; // Nombre de la base de datos +static char interface[LONPRM]; // Interface name +static char auth_token[LONPRM]; // API token + //________________________________________________________________________________________________________ // Función: tomaConfiguracion // @@ -16,361 +32,120 @@ // Parámetros: // filecfg : Ruta completa al fichero de configuración // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error //________________________________________________________________________________________________________ -BOOLEAN tomaConfiguracion(char* filecfg) { - char modulo[] = "tomaConfiguracion()"; +static bool tomaConfiguracion(const char *filecfg) +{ + char buf[1024], *line; + char *key, *value; + FILE *fcfg; if (filecfg == NULL || strlen(filecfg) == 0) { - errorLog(modulo, 1, FALSE); // Fichero de configuración del servicio vacÃo - return (FALSE); + syslog(LOG_ERR, "No configuration file has been specified\n"); + return false; } - FILE *fcfg; - long lSize; - char * buffer, *lineas[MAXPRM], *dualparametro[2]; - int i, numlin, resul; fcfg = fopen(filecfg, "rt"); if (fcfg == NULL) { - errorLog(modulo, 2, FALSE); // No existe fichero de configuración del servicio - return (FALSE); + syslog(LOG_ERR, "Cannot open configuration file `%s'\n", + filecfg); + return false; } - fseek(fcfg, 0, SEEK_END); - lSize = ftell(fcfg); // Obtiene tamaño del fichero. - rewind(fcfg); - buffer = (char*) reservaMemoria(lSize + 1); // Toma memoria para el buffer de lectura. - if (buffer == NULL) { // No hay memoria suficiente para el buffer - errorLog(modulo, 3, FALSE); - return (FALSE); - } - fread(buffer, 1, lSize, fcfg); // Lee contenido del fichero - buffer[lSize] = (char) NULL; - fclose(fcfg); - servidoradm[0] = (char) NULL; //inicializar variables globales - usuario[0] = (char) NULL; - pasguor[0] = (char) NULL; - datasource[0] = (char) NULL; - catalog[0] = (char) NULL; - aulaup[0] = (char) NULL; - - numlin = splitCadena(lineas, buffer, '\n'); - for (i = 0; i < numlin; i++) { - splitCadena(dualparametro, lineas[i], '='); - resul = strcmp(StrToUpper(dualparametro[0]), "SERVIDORADM"); - if (resul == 0) - strcpy(servidoradm, dualparametro[1]); - resul = strcmp(StrToUpper(dualparametro[0]), "PUERTO"); - if (resul == 0) - strcpy(puerto, dualparametro[1]); - resul = strcmp(StrToUpper(dualparametro[0]), "USUARIO"); - if (resul == 0) - strcpy(usuario, dualparametro[1]); - resul = strcmp(StrToUpper(dualparametro[0]), "PASSWORD"); - if (resul == 0) - strcpy(pasguor, dualparametro[1]); - resul = strcmp(StrToUpper(dualparametro[0]), "DATASOURCE"); - if (resul == 0) - strcpy(datasource, dualparametro[1]); - resul = strcmp(StrToUpper(dualparametro[0]), "CATALOG"); - if (resul == 0) - strcpy(catalog, dualparametro[1]); - resul = strcmp(StrToUpper(dualparametro[0]), "AULAUP"); - if (resul == 0) - strcpy(catalog, dualparametro[1]); - } - if (servidoradm[0] == (char) NULL) { - liberaMemoria(buffer); - errorLog(modulo, 4, FALSE); // Falta parámetro SERVIDORADM - return (FALSE); - } - if (puerto[0] == (char) NULL) { - liberaMemoria(buffer); - errorLog(modulo, 5, FALSE); // Falta parámetro PUERTO - return (FALSE); - } - if (usuario[0] == (char) NULL) { - liberaMemoria(buffer); - errorLog(modulo, 6, FALSE); // Falta parámetro USUARIO - return (FALSE); - } - if (pasguor[0] == (char) NULL) { - liberaMemoria(buffer); - errorLog(modulo, 7, FALSE); // Falta parámetro PASSWORD - return (FALSE); - } - if (datasource[0] == (char) NULL) { - liberaMemoria(buffer); - errorLog(modulo, 8, FALSE); // Falta parámetro DATASOURCE - return (FALSE); - } - if (catalog[0] == (char) NULL) { - liberaMemoria(buffer); - errorLog(modulo, 9, FALSE); // Falta parámetro CATALOG - return (FALSE); - } - if (aulaup[0] == (char) NULL) { - strcpy(aulaup, "0"); // Por defecto el conmutador de registro automático esta en off - - } - liberaMemoria(buffer); - return (TRUE); -} -// ________________________________________________________________________________________________________ -// Función: gestionaTrama -// -// Descripción: -// Procesa las tramas recibidas . -// Parametros: -// - s : Socket usado para comunicaciones -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -// ________________________________________________________________________________________________________ -BOOLEAN gestionaTrama(SOCKET *socket_c) -{ - TRAMA* ptrTrama; - int i, res; - char *nfn; - char modulo[] = "gestionaTrama()"; - ptrTrama=recibeTrama(socket_c); - - if (ptrTrama){ - INTROaFINCAD(ptrTrama); - nfn = copiaParametro("nfn",ptrTrama); // Toma nombre de la función + line = fgets(buf, sizeof(buf), fcfg); + while (line != NULL) { + const char *delim = "="; - for (i = 0; i < MAXIMAS_FUNCIONES; i++) { // Recorre funciones que procesan las tramas - res = strcmp(tbfuncionesServer[i].nf, nfn); - if (res == 0) { // Encontrada la función que procesa el mensaje - liberaMemoria(nfn); - res=tbfuncionesServer[i].fptr(socket_c, ptrTrama); // Invoca la función - liberaMemoria(ptrTrama->parametros); - liberaMemoria(ptrTrama); - return(res); - } - } - liberaMemoria(nfn); - liberaMemoria(ptrTrama->parametros); - liberaMemoria(ptrTrama); - /* - Sólo puede ser un comando personalizado o su notificación - if (ptrTrama->tipo == MSG_COMANDO) - return (Comando(socket_c, ptrTrama)); - else { - if (ptrTrama->tipo == MSG_NOTIFICACION) - return (RESPUESTA_Comando(socket_c, ptrTrama)); - else - errorLog(modulo, 18, FALSE); // No se reconoce el mensaje - } - */ - } - else - errorLog(modulo, 17, FALSE); // Error en la recepción - return (TRUE); -} -// ________________________________________________________________________________________________________ -// Función: Sondeo -// -// Descripción: -// Solicita a los clientes su disponibiliad para recibir comandos interactivos -// Parámetros: -// - socket_c: Socket del cliente que envió el mensaje -// - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros del mensaje -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -// ________________________________________________________________________________________________________ -BOOLEAN Sondeo(SOCKET *socket_c, TRAMA* ptrTrama) { - char msglog[LONSTD]; - char modulo[] = "Sondeo()"; + line[strlen(line) - 1] = '\0'; - if (!enviaComando(ptrTrama, CLIENTE_APAGADO)) { - sprintf(msglog, "%s:%s", tbErrores[32], modulo); - errorInfo(modulo, msglog); - respuestaConsola(socket_c, ptrTrama, FALSE); - return (FALSE); - } - respuestaConsola(socket_c, ptrTrama, TRUE); - return (TRUE); -} -// ________________________________________________________________________________________________________ -// Función: respuestaSondeo -// -// Descripción: -// Recupera el estatus de los ordenadores solicitados leyendo la tabla de sockets -// Parámetros: -// - socket_c: Socket del cliente que envió el mensaje -// - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros del mensaje -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -// ________________________________________________________________________________________________________ -BOOLEAN respuestaSondeo(SOCKET *socket_c, TRAMA* ptrTrama) { - int i; - long lSize; - char *iph, *Ipes; - char modulo[] = "respuestaSondeo()"; + key = strtok(line, delim); + value = strtok(NULL, delim); - iph = copiaParametro("iph",ptrTrama); // Toma dirección/es IP - lSize = strlen(iph); // Calcula longitud de la cadena de direccion/es IPE/S - Ipes = (char*) reservaMemoria(lSize + 1); - if (Ipes == NULL) { - liberaMemoria(iph); - errorLog(modulo, 3, FALSE); - return (FALSE); + if (!strcmp(StrToUpper(key), "SERVIDORADM")) + snprintf(servidoradm, sizeof(servidoradm), "%s", value); + else if (!strcmp(StrToUpper(key), "PUERTO")) + snprintf(puerto, sizeof(puerto), "%s", value); + else if (!strcmp(StrToUpper(key), "USUARIO")) + snprintf(usuario, sizeof(usuario), "%s", value); + else if (!strcmp(StrToUpper(key), "PASSWORD")) + snprintf(pasguor, sizeof(pasguor), "%s", value); + else if (!strcmp(StrToUpper(key), "DATASOURCE")) + snprintf(datasource, sizeof(datasource), "%s", value); + else if (!strcmp(StrToUpper(key), "CATALOG")) + snprintf(catalog, sizeof(catalog), "%s", value); + else if (!strcmp(StrToUpper(key), "INTERFACE")) + snprintf(interface, sizeof(interface), "%s", value); + else if (!strcmp(StrToUpper(key), "APITOKEN")) + snprintf(auth_token, sizeof(auth_token), "%s", value); + + line = fgets(buf, sizeof(buf), fcfg); } - strcpy(Ipes, iph); // Copia cadena de IPES - liberaMemoria(iph); - initParametros(ptrTrama,0); - strcpy(ptrTrama->parametros, "tso="); // Compone retorno tso (sistemas operativos de los clientes ) - for (i = 0; i < MAXIMOS_CLIENTES; i++) { - if (strncmp(tbsockets[i].ip, "\0", 1) != 0) { // Si es un cliente activo - if (contieneIP(Ipes, tbsockets[i].ip)) { // Si existe la IP en la cadena - strcat(ptrTrama->parametros, tbsockets[i].ip); // Compone retorno - strcat(ptrTrama->parametros, "/"); // "ip/sistema operativo;" - strcat(ptrTrama->parametros, tbsockets[i].estado); - strcat(ptrTrama->parametros, ";"); - } - } + + fclose(fcfg); + + if (!servidoradm[0]) { + syslog(LOG_ERR, "Missing SERVIDORADM in configuration file\n"); + return false; } - strcat(ptrTrama->parametros, "\r"); - liberaMemoria(Ipes); - if (!mandaTrama(socket_c, ptrTrama)) { - errorLog(modulo, 26, FALSE); - return (FALSE); + if (!puerto[0]) { + syslog(LOG_ERR, "Missing PUERTO in configuration file\n"); + return false; } - return (TRUE); -} -// ________________________________________________________________________________________________________ -// Función: Actualizar -// -// Descripción: -// Obliga a los clientes a iniciar sesión en el sistema -// Parámetros: -// - socket_c: Socket del cliente que envió el mensaje -// - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros del mensaje -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -// ________________________________________________________________________________________________________ -BOOLEAN Actualizar(SOCKET *socket_c, TRAMA* ptrTrama) { - char msglog[LONSTD]; - char modulo[] = "Actualizar()"; - - if (!enviaComando(ptrTrama, CLIENTE_APAGADO)) { - sprintf(msglog, "%s:%s", tbErrores[32], modulo); - errorInfo(modulo, msglog); - return (FALSE); + if (!usuario[0]) { + syslog(LOG_ERR, "Missing USUARIO in configuration file\n"); + return false; } - respuestaConsola(socket_c, ptrTrama, TRUE); - return (TRUE); -} -// ________________________________________________________________________________________________________ -// Función: Purgar -// -// Descripción: -// Detiene la ejecución del browser en el cliente -// Parámetros: -// - socket_c: Socket del cliente que envió el mensaje -// - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros del mensaje -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -// ________________________________________________________________________________________________________ -BOOLEAN Purgar(SOCKET *socket_c, TRAMA* ptrTrama) { - char msglog[LONSTD]; - char modulo[] = "Purgar()"; - - if (!enviaComando(ptrTrama, CLIENTE_APAGADO)) { - sprintf(msglog, "%s:%s", tbErrores[32], modulo); - errorInfo(modulo, msglog); - return (FALSE); + if (!pasguor[0]) { + syslog(LOG_ERR, "Missing PASSWORD in configuration file\n"); + return false; } - respuestaConsola(socket_c, ptrTrama, TRUE); - return (TRUE); -} -// ________________________________________________________________________________________________________ -// Función: ConsolaRemota -// -// Descripción: -// Envia un script al cliente, éste lo ejecuta y manda el archivo que genera la salida por pantalla -// Parámetros: -// - socket_c: Socket del cliente que envió el mensaje -// - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros del mensaje -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -// ________________________________________________________________________________________________________ -BOOLEAN ConsolaRemota(SOCKET *socket_c, TRAMA* ptrTrama) -{ - char *iph,fileco[LONPRM],msglog[LONSTD],*ptrIpes[MAXIMOS_CLIENTES];; - FILE* f; - int i,lon; - char modulo[] = "ConsolaRemota()"; - - if (!enviaComando(ptrTrama, CLIENTE_OCUPADO)) { - sprintf(msglog, "%s:%s", tbErrores[32], modulo); - errorInfo(modulo, msglog); - respuestaConsola(socket_c, ptrTrama, FALSE); - return (FALSE); + if (!datasource[0]) { + syslog(LOG_ERR, "Missing DATASOURCE in configuration file\n"); + return false; } - INTROaFINCAD(ptrTrama); - /* Destruye contenido del fichero de eco anterior */ - iph = copiaParametro("iph",ptrTrama); // Toma dirección ip del cliente - lon = splitCadena(ptrIpes,iph,';'); - for (i = 0; i < lon; i++) { - sprintf(fileco,"/tmp/_Seconsola_%s",ptrIpes[i]); // Nombre que tendra el archivo en el Servidor - f = fopen(fileco, "wt"); - fclose(f); + if (!catalog[0]) { + syslog(LOG_ERR, "Missing CATALOG in configuration file\n"); + return false; } - liberaMemoria(iph); - respuestaConsola(socket_c, ptrTrama, TRUE); - return (TRUE); + if (!interface[0]) + syslog(LOG_ERR, "Missing INTERFACE in configuration file\n"); + + return true; } -// ________________________________________________________________________________________________________ -// Función: EcoConsola -// -// Descripción: -// Solicita el eco de una consola remota almacenado en un archivo de eco -// Parámetros: -// - socket_c: Socket del cliente que envió el mensaje -// - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros del mensaje -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -// ________________________________________________________________________________________________________ -BOOLEAN EcoConsola(SOCKET *socket_c, TRAMA* ptrTrama) -{ - char *iph,fileco[LONPRM],*buffer; - int lSize; - char modulo[] = "EcoConsola()"; - INTROaFINCAD(ptrTrama); - // Lee archivo de eco de consola - iph = copiaParametro("iph",ptrTrama); // Toma dirección ip del cliente - sprintf(fileco,"/tmp/_Seconsola_%s",iph); // Nombre del archivo en el Servidor - liberaMemoria(iph); - lSize=lonArchivo(fileco); - if(lSize>0){ // Si el fichero tiene contenido... - initParametros(ptrTrama,lSize+LONGITUD_PARAMETROS); - buffer=leeArchivo(fileco); - sprintf(ptrTrama->parametros,"res=%s\r",buffer); - liberaMemoria(buffer); - } - else{ - initParametros(ptrTrama,0); - sprintf(ptrTrama->parametros,"res=\r"); - } - ptrTrama->tipo=MSG_RESPUESTA; // Tipo de mensaje - if (!mandaTrama(socket_c, ptrTrama)) { - errorLog(modulo, 26, FALSE); - return (FALSE); - } - return (TRUE); +enum og_client_state { + OG_CLIENT_RECEIVING_HEADER = 0, + OG_CLIENT_RECEIVING_PAYLOAD, + OG_CLIENT_PROCESSING_REQUEST, +}; + +#define OG_MSG_REQUEST_MAXLEN 4096 + +/* Shut down connection if there is no complete message after 10 seconds. */ +#define OG_CLIENT_TIMEOUT 10 + +struct og_client { + struct ev_io io; + struct ev_timer timer; + struct sockaddr_in addr; + enum og_client_state state; + char buf[OG_MSG_REQUEST_MAXLEN]; + unsigned int buf_len; + unsigned int msg_len; + int keepalive_idx; + bool rest; + int content_length; + char auth_token[64]; +}; + +static inline int og_client_socket(const struct og_client *cli) +{ + return cli->io.fd; } + // ________________________________________________________________________________________________________ // Función: clienteDisponible // @@ -380,28 +155,29 @@ BOOLEAN EcoConsola(SOCKET *socket_c, TRAMA* ptrTrama) // - ip : La ip del cliente a buscar // - idx: (Salida) Indice que ocupa el cliente, de estar ya registrado // Devuelve: -// TRUE: Si el cliente está disponible -// FALSE: En caso contrario +// true: Si el cliente está disponible +// false: En caso contrario // ________________________________________________________________________________________________________ -BOOLEAN clienteDisponible(char *ip, int* idx) { +bool clienteDisponible(char *ip, int* idx) +{ int estado; if (clienteExistente(ip, idx)) { estado = strcmp(tbsockets[*idx].estado, CLIENTE_OCUPADO); // Cliente ocupado if (estado == 0) - return (FALSE); + return false; estado = strcmp(tbsockets[*idx].estado, CLIENTE_APAGADO); // Cliente apagado if (estado == 0) - return (FALSE); + return false; estado = strcmp(tbsockets[*idx].estado, CLIENTE_INICIANDO); // Cliente en proceso de inclusión if (estado == 0) - return (FALSE); + return false; - return (TRUE); // En caso contrario el cliente está disponible + return true; // En caso contrario el cliente está disponible } - return (FALSE); // Cliente no está registrado en el sistema + return false; // Cliente no está registrado en el sistema } // ________________________________________________________________________________________________________ // Función: clienteExistente @@ -412,40 +188,42 @@ BOOLEAN clienteDisponible(char *ip, int* idx) { // - ip : La ip del cliente a buscar // - idx:(Salida) Indice que ocupa el cliente, de estar ya registrado // Devuelve: -// TRUE: Si el cliente está registrado -// FALSE: En caso contrario +// true: Si el cliente está registrado +// false: En caso contrario // ________________________________________________________________________________________________________ -BOOLEAN clienteExistente(char *ip, int* idx) { +bool clienteExistente(char *ip, int* idx) +{ int i; for (i = 0; i < MAXIMOS_CLIENTES; i++) { if (contieneIP(ip, tbsockets[i].ip)) { // Si existe la IP en la cadena *idx = i; - return (TRUE); + return true; } } - return (FALSE); + return false; } // ________________________________________________________________________________________________________ // Función: hayHueco // // Descripción: -// Esta función devuelve TRUE o FALSE dependiendo de que haya hueco en la tabla de sockets para un nuevo cliente. +// Esta función devuelve true o false dependiendo de que haya hueco en la tabla de sockets para un nuevo cliente. // Parametros: // - idx: Primer indice libre que se podrn utilizar // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN hayHueco(int *idx) { +static bool hayHueco(int *idx) +{ int i; for (i = 0; i < MAXIMOS_CLIENTES; i++) { if (strncmp(tbsockets[i].ip, "\0", 1) == 0) { // Hay un hueco *idx = i; - return (TRUE); + return true; } } - return (FALSE); + return false; } // ________________________________________________________________________________________________________ // Función: InclusionClienteWin @@ -456,17 +234,18 @@ BOOLEAN hayHueco(int *idx) { // - socket_c: Socket del cliente que envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN InclusionClienteWinLnx(SOCKET *socket_c, TRAMA *ptrTrama) - { - char modulo[] = "InclusionClienteWinLnx()"; +static bool InclusionClienteWinLnx(TRAMA *ptrTrama, struct og_client *cli) +{ + int socket_c = og_client_socket(cli); int res,idordenador,lon; char nombreordenador[LONFIL]; - - res=procesoInclusionClienteWinLnx(socket_c, ptrTrama,&idordenador,nombreordenador); - + + res = procesoInclusionClienteWinLnx(socket_c, ptrTrama, &idordenador, + nombreordenador); + // Prepara la trama de respuesta initParametros(ptrTrama,0); @@ -475,12 +254,14 @@ BOOLEAN InclusionClienteWinLnx(SOCKET *socket_c, TRAMA *ptrTrama) lon += sprintf(ptrTrama->parametros + lon, "ido=%d\r", idordenador); lon += sprintf(ptrTrama->parametros + lon, "npc=%s\r", nombreordenador); lon += sprintf(ptrTrama->parametros + lon, "res=%d\r", res); - - if (!mandaTrama(socket_c, ptrTrama)) { - errorLog(modulo, 26, FALSE); - return (FALSE); + + if (!mandaTrama(&socket_c, ptrTrama)) { + syslog(LOG_ERR, "failed to send response to %s:%hu reason=%s\n", + inet_ntoa(cli->addr.sin_addr), ntohs(cli->addr.sin_port), + strerror(errno)); + return false; } - return (TRUE); + return true; } // ________________________________________________________________________________________________________ // Función: procesoInclusionClienteWinLnx @@ -496,24 +277,22 @@ BOOLEAN InclusionClienteWinLnx(SOCKET *socket_c, TRAMA *ptrTrama) // Devuelve: // Código del error producido en caso de ocurrir algún error, 0 si el proceso es correcto // ________________________________________________________________________________________________________ -BOOLEAN procesoInclusionClienteWinLnx(SOCKET *socket_c, TRAMA *ptrTrama,int *idordenador,char* nombreordenador) +bool procesoInclusionClienteWinLnx(int socket_c, TRAMA *ptrTrama, int *idordenador, char *nombreordenador) { char msglog[LONSTD], sqlstr[LONSQL]; Database db; Table tbl; - char *iph; - char modulo[] = "procesoInclusionClienteWinLnx()"; - + // Toma parámetros iph = copiaParametro("iph",ptrTrama); // Toma ip - if (!db.Open(usuario, pasguor, datasource, catalog)) { // Error de conexión con la BD + if (!db.Open(usuario, pasguor, datasource, catalog)) { liberaMemoria(iph); - errorLog(modulo, 20, FALSE); db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (20); + syslog(LOG_ERR, "cannot open connection database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } // Recupera los datos del cliente @@ -521,53 +300,52 @@ BOOLEAN procesoInclusionClienteWinLnx(SOCKET *socket_c, TRAMA *ptrTrama,int *ido "SELECT idordenador,nombreordenador FROM ordenadores " " WHERE ordenadores.ip = '%s'", iph); - if (!db.Execute(sqlstr, tbl)) { // Error al recuperar los datos + if (!db.Execute(sqlstr, tbl)) { liberaMemoria(iph); - errorLog(modulo, 21, FALSE); db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); + syslog(LOG_ERR, "failed to query database (%s:%d) %s\n", + __func__, __LINE__, msglog); db.Close(); - return (21); + return false; } - if (tbl.ISEOF()) { // Si no existe el cliente + if (tbl.ISEOF()) { liberaMemoria(iph); - errorLog(modulo, 22, FALSE); + syslog(LOG_ERR, "client does not exist in database (%s:%d)\n", + __func__, __LINE__); db.liberaResult(tbl); db.Close(); - return (22); + return false; } - if (ndebug == DEBUG_ALTO) { - sprintf(msglog, "%s IP:%s", tbMensajes[2], iph); - infoDebug(msglog); - } + syslog(LOG_DEBUG, "Client %s requesting inclusion\n", iph); + if (!tbl.Get("idordenador", *idordenador)) { liberaMemoria(iph); db.liberaResult(tbl); tbl.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); + og_info(msglog); db.Close(); - return (FALSE); + return false; } if (!tbl.Get("nombreordenador", nombreordenador)) { liberaMemoria(iph); db.liberaResult(tbl); tbl.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); + og_info(msglog); db.Close(); - return (FALSE); + return false; } db.liberaResult(tbl); db.Close(); - + if (!registraCliente(iph)) { // Incluyendo al cliente en la tabla de sokets liberaMemoria(iph); - errorLog(modulo, 25, FALSE); - return (25); + syslog(LOG_ERR, "client table is full\n"); + return false; } liberaMemoria(iph); - return(0); + return true; } // ________________________________________________________________________________________________________ // Función: InclusionCliente @@ -579,22 +357,25 @@ BOOLEAN procesoInclusionClienteWinLnx(SOCKET *socket_c, TRAMA *ptrTrama,int *ido // - socket_c: Socket del cliente que envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN InclusionCliente(SOCKET *socket_c, TRAMA *ptrTrama) { - char modulo[] = "InclusionCliente()"; +static bool InclusionCliente(TRAMA *ptrTrama, struct og_client *cli) +{ + int socket_c = og_client_socket(cli); - if (!procesoInclusionCliente(socket_c, ptrTrama)) { // Ha habido algún error... + if (!procesoInclusionCliente(cli, ptrTrama)) { initParametros(ptrTrama,0); strcpy(ptrTrama->parametros, "nfn=RESPUESTA_InclusionCliente\rres=0\r"); - if (!mandaTrama(socket_c, ptrTrama)) { - errorLog(modulo, 26, FALSE); - return (FALSE); + if (!mandaTrama(&socket_c, ptrTrama)) { + syslog(LOG_ERR, "failed to send response to %s:%hu reason=%s\n", + inet_ntoa(cli->addr.sin_addr), ntohs(cli->addr.sin_port), + strerror(errno)); + return false; } } - return (TRUE); -} + return true; +} // ________________________________________________________________________________________________________ // Función: procesoInclusionCliente // @@ -604,10 +385,12 @@ BOOLEAN InclusionCliente(SOCKET *socket_c, TRAMA *ptrTrama) { // - socket_c: Socket del cliente que envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN procesoInclusionCliente(SOCKET *socket_c, TRAMA *ptrTrama) { +bool procesoInclusionCliente(struct og_client *cli, TRAMA *ptrTrama) +{ + int socket_c = og_client_socket(cli); char msglog[LONSTD], sqlstr[LONSQL]; Database db; Table tbl; @@ -615,19 +398,18 @@ BOOLEAN procesoInclusionCliente(SOCKET *socket_c, TRAMA *ptrTrama) { char *iph, *cfg; char nombreordenador[LONFIL]; int lon, resul, idordenador, idmenu, cache, idproautoexec, idaula, idcentro; - char modulo[] = "procesoInclusionCliente()"; // Toma parámetros iph = copiaParametro("iph",ptrTrama); // Toma ip cfg = copiaParametro("cfg",ptrTrama); // Toma configuracion - if (!db.Open(usuario, pasguor, datasource, catalog)) { // Error de conexión con la BD + if (!db.Open(usuario, pasguor, datasource, catalog)) { liberaMemoria(iph); liberaMemoria(cfg); - errorLog(modulo, 20, FALSE); db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "cannot open connection database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } // Recupera los datos del cliente @@ -637,56 +419,55 @@ BOOLEAN procesoInclusionCliente(SOCKET *socket_c, TRAMA *ptrTrama) { " INNER JOIN centros ON centros.idcentro=aulas.idcentro" " WHERE ordenadores.ip = '%s'", iph); - if (!db.Execute(sqlstr, tbl)) { // Error al recuperar los datos - errorLog(modulo, 21, FALSE); + if (!db.Execute(sqlstr, tbl)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "failed to query database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } - if (tbl.ISEOF()) { // Si no existe el cliente - errorLog(modulo, 22, FALSE); - return (FALSE); + if (tbl.ISEOF()) { + syslog(LOG_ERR, "client does not exist in database (%s:%d)\n", + __func__, __LINE__); + return false; } - if (ndebug == DEBUG_ALTO) { - sprintf(msglog, "%s IP:%s", tbMensajes[2], iph); - infoDebug(msglog); - } + syslog(LOG_DEBUG, "Client %s requesting inclusion\n", iph); + if (!tbl.Get("idordenador", idordenador)) { tbl.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } if (!tbl.Get("nombreordenador", nombreordenador)) { tbl.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } if (!tbl.Get("idmenu", idmenu)) { tbl.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } if (!tbl.Get("cache", cache)) { tbl.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } if (!tbl.Get("idproautoexec", idproautoexec)) { tbl.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } if (!tbl.Get("idaula", idaula)) { tbl.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } if (!tbl.Get("idcentro", idcentro)) { tbl.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } resul = actualizaConfiguracion(db, tbl, cfg, idordenador); // Actualiza la configuración del ordenador @@ -695,14 +476,14 @@ BOOLEAN procesoInclusionCliente(SOCKET *socket_c, TRAMA *ptrTrama) { if (!resul) { liberaMemoria(iph); - errorLog(modulo, 29, FALSE); - return (FALSE); + syslog(LOG_ERR, "Cannot add client to database\n"); + return false; } if (!registraCliente(iph)) { // Incluyendo al cliente en la tabla de sokets liberaMemoria(iph); - errorLog(modulo, 25, FALSE); - return (FALSE); + syslog(LOG_ERR, "client table is full\n"); + return false; } /*------------------------------------------------------------------------------------------------------------------------------ @@ -719,12 +500,14 @@ BOOLEAN procesoInclusionCliente(SOCKET *socket_c, TRAMA *ptrTrama) { lon += sprintf(ptrTrama->parametros + lon, "idc=%d\r", idcentro); lon += sprintf(ptrTrama->parametros + lon, "res=%d\r", 1); // Confirmación proceso correcto - if (!mandaTrama(socket_c, ptrTrama)) { - errorLog(modulo, 26, FALSE); - return (FALSE); + if (!mandaTrama(&socket_c, ptrTrama)) { + syslog(LOG_ERR, "failed to send response to %s:%hu reason=%s\n", + inet_ntoa(cli->addr.sin_addr), ntohs(cli->addr.sin_port), + strerror(errno)); + return false; } liberaMemoria(iph); - return (TRUE); + return true; } // ________________________________________________________________________________________________________ // Función: actualizaConfiguracion @@ -737,8 +520,8 @@ BOOLEAN procesoInclusionCliente(SOCKET *socket_c, TRAMA *ptrTrama) { // - cfg: cadena con una Configuración // - ido: Identificador del ordenador cliente // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // Especificaciones: // Los parametros de la configuración son: // par= Número de partición @@ -747,13 +530,12 @@ BOOLEAN procesoInclusionCliente(SOCKET *socket_c, TRAMA *ptrTrama) { // soi= Nombre del sistema de ficheros instalado en la partición // tam= Tamaño de la partición // ________________________________________________________________________________________________________ -BOOLEAN actualizaConfiguracion(Database db, Table tbl, char* cfg, int ido) +bool actualizaConfiguracion(Database db, Table tbl, char *cfg, int ido) { char msglog[LONSTD], sqlstr[LONSQL]; int lon, p, c,i, dato, swu, idsoi, idsfi,k; - char *ptrPar[MAXPAR], *ptrCfg[6], *ptrDual[2], tbPar[LONSTD]; + char *ptrPar[MAXPAR], *ptrCfg[7], *ptrDual[2], tbPar[LONSTD]; char *ser, *disk, *par, *cpt, *sfi, *soi, *tam, *uso; // Parametros de configuración. - char modulo[] = "actualizaConfiguracion()"; lon = 0; p = splitCadena(ptrPar, cfg, '\n'); @@ -771,8 +553,8 @@ BOOLEAN actualizaConfiguracion(Database db, Table tbl, char* cfg, int ido) ser, ido); if (!db.Execute(sqlstr, tbl)) { // Error al insertar db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } } continue; @@ -826,11 +608,11 @@ BOOLEAN actualizaConfiguracion(Database db, Table tbl, char* cfg, int ido) ido, disk, par); - if (!db.Execute(sqlstr, tbl)) { // Error al recuperar los datos - errorLog(modulo, 21, FALSE); + if (!db.Execute(sqlstr, tbl)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "failed to query database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } if (tbl.ISEOF()) { // Si no existe el registro sprintf(sqlstr, "INSERT INTO ordenadores_particiones(idordenador,numdisk,numpar,codpar,tamano,uso,idsistemafichero,idnombreso,idimagen)" @@ -840,36 +622,36 @@ BOOLEAN actualizaConfiguracion(Database db, Table tbl, char* cfg, int ido) if (!db.Execute(sqlstr, tbl)) { // Error al insertar db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } } else { // Existe el registro - swu = TRUE; // Se supone que algún dato ha cambiado + swu = true; // Se supone que algún dato ha cambiado if (!tbl.Get("codpar", dato)) { // Toma dato tbl.GetErrorErrStr(msglog); // Error al acceder al registro - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } if (strtol(cpt, NULL, 16) == dato) {// Parámetro tipo de partición (hexadecimal) igual al almacenado (decimal) if (!tbl.Get("tamano", dato)) { // Toma dato tbl.GetErrorErrStr(msglog); // Error al acceder al registro - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } if (atoi(tam) == dato) {// Parámetro tamaño igual al almacenado if (!tbl.Get("idsistemafichero", dato)) { // Toma dato tbl.GetErrorErrStr(msglog); // Error al acceder al registro - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } if (idsfi == dato) {// Parámetro sistema de fichero igual al almacenado if (!tbl.Get("idnombreso", dato)) { // Toma dato tbl.GetErrorErrStr(msglog); // Error al acceder al registro - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } if (idsoi == dato) {// Parámetro sistema de fichero distinto al almacenado - swu = FALSE; // Todos los parámetros de la partición son iguales, no se actualiza + swu = false; // Todos los parámetros de la partición son iguales, no se actualiza } } } @@ -892,11 +674,11 @@ BOOLEAN actualizaConfiguracion(Database db, Table tbl, char* cfg, int ido) " WHERE idordenador=%d AND numdisk=%s AND numpar=%s", uso, ido, disk, par); } - if (!db.Execute(sqlstr, tbl)) { // Error al recuperar los datos - errorLog(modulo, 21, FALSE); + if (!db.Execute(sqlstr, tbl)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "failed to query database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } } } @@ -904,13 +686,13 @@ BOOLEAN actualizaConfiguracion(Database db, Table tbl, char* cfg, int ido) // Eliminar particiones almacenadas que ya no existen sprintf(sqlstr, "DELETE FROM ordenadores_particiones WHERE idordenador=%d AND (numdisk, numpar) NOT IN (%s)", ido, tbPar); - if (!db.Execute(sqlstr, tbl)) { // Error al recuperar los datos - errorLog(modulo, 21, FALSE); + if (!db.Execute(sqlstr, tbl)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "failed to query database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } - return (TRUE); + return true; } // ________________________________________________________________________________________________________ // Función: checkDato @@ -932,10 +714,10 @@ BOOLEAN actualizaConfiguracion(Database db, Table tbl, char* cfg, int ido) // En caso de producirse algún error se devuelve el valor 0 // ________________________________________________________________________________________________________ -int checkDato(Database db, Table tbl, char *dato, const char*tabla, - const char* nomdato, const char *nomidentificador) { +int checkDato(Database db, Table tbl, char *dato, const char *tabla, + const char *nomdato, const char *nomidentificador) +{ char msglog[LONSTD], sqlstr[LONSQL]; - char modulo[] = "checkDato()"; int identificador; if (strlen(dato) == 0) @@ -944,37 +726,37 @@ int checkDato(Database db, Table tbl, char *dato, const char*tabla, tabla, nomdato, dato); // Ejecuta consulta - if (!db.Execute(sqlstr, tbl)) { // Error al leer - errorLog(modulo, 21, FALSE); + if (!db.Execute(sqlstr, tbl)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); + syslog(LOG_ERR, "failed to query database (%s:%d) %s\n", + __func__, __LINE__, msglog); return (0); } if (tbl.ISEOF()) { // Software NO existente sprintf(sqlstr, "INSERT INTO %s (%s) VALUES('%s')", tabla, nomdato, dato); if (!db.Execute(sqlstr, tbl)) { // Error al insertar db.GetErrorErrStr(msglog); // Error al acceder al registro - errorInfo(modulo, msglog); + og_info(msglog); return (0); } // Recupera el identificador del software sprintf(sqlstr, "SELECT LAST_INSERT_ID() as identificador"); if (!db.Execute(sqlstr, tbl)) { // Error al leer db.GetErrorErrStr(msglog); // Error al acceder al registro - errorInfo(modulo, msglog); + og_info(msglog); return (0); } if (!tbl.ISEOF()) { // Si existe registro if (!tbl.Get("identificador", identificador)) { tbl.GetErrorErrStr(msglog); // Error al acceder al registro - errorInfo(modulo, msglog); + og_info(msglog); return (0); } } } else { if (!tbl.Get(nomidentificador, identificador)) { // Toma dato tbl.GetErrorErrStr(msglog); // Error al acceder al registro - errorInfo(modulo, msglog); + og_info(msglog); return (0); } } @@ -988,20 +770,21 @@ int checkDato(Database db, Table tbl, char *dato, const char*tabla, // Parámetros: // - iph: Dirección ip del cliente // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN registraCliente(char *iph) { +bool registraCliente(char *iph) +{ int idx; if (!clienteExistente(iph, &idx)) { // Si no existe la IP ... if (!hayHueco(&idx)) { // Busca hueco para el nuevo cliente - return (FALSE); // No hay huecos + return false; // No hay huecos } } strcpy(tbsockets[idx].ip, iph); // Copia IP strcpy(tbsockets[idx].estado, CLIENTE_INICIANDO); // Actualiza el estado del cliente - return (TRUE); + return true; } // ________________________________________________________________________________________________________ // Función: AutoexecCliente @@ -1012,17 +795,18 @@ BOOLEAN registraCliente(char *iph) { // - socket_c: Socket del cliente que envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN AutoexecCliente(SOCKET *socket_c, TRAMA *ptrTrama) { +static bool AutoexecCliente(TRAMA *ptrTrama, struct og_client *cli) +{ + int socket_c = og_client_socket(cli); int lon; char *iph, *exe, msglog[LONSTD]; Database db; FILE *fileexe; char fileautoexec[LONPRM]; char parametros[LONGITUD_PARAMETROS]; - char modulo[] = "AutoexecCliente()"; iph = copiaParametro("iph",ptrTrama); // Toma dirección IP del cliente exe = copiaParametro("exe",ptrTrama); // Toma identificador del procedimiento inicial @@ -1031,15 +815,15 @@ BOOLEAN AutoexecCliente(SOCKET *socket_c, TRAMA *ptrTrama) { liberaMemoria(iph); fileexe = fopen(fileautoexec, "wb"); // Abre fichero de script if (fileexe == NULL) { - errorLog(modulo, 52, FALSE); - return (FALSE); + syslog(LOG_ERR, "cannot create temporary file\n"); + return false; } - if (!db.Open(usuario, pasguor, datasource, catalog)) { // Error de conexión con la BD - errorLog(modulo, 20, FALSE); + if (!db.Open(usuario, pasguor, datasource, catalog)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "cannot open connection database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } initParametros(ptrTrama,0); if (recorreProcedimientos(db, parametros, fileexe, exe)) { @@ -1054,13 +838,15 @@ BOOLEAN AutoexecCliente(SOCKET *socket_c, TRAMA *ptrTrama) { db.Close(); fclose(fileexe); - if (!mandaTrama(socket_c, ptrTrama)) { + if (!mandaTrama(&socket_c, ptrTrama)) { liberaMemoria(exe); - errorLog(modulo, 26, FALSE); - return (FALSE); + syslog(LOG_ERR, "failed to send response to %s:%hu reason=%s\n", + inet_ntoa(cli->addr.sin_addr), ntohs(cli->addr.sin_port), + strerror(errno)); + return false; } liberaMemoria(exe); - return (TRUE); + return true; } // ________________________________________________________________________________________________________ // Función: recorreProcedimientos @@ -1070,43 +856,42 @@ BOOLEAN AutoexecCliente(SOCKET *socket_c, TRAMA *ptrTrama) { // Parámetros: // Database db,char* parametros,FILE* fileexe,char* idp // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN recorreProcedimientos(Database db, char* parametros, FILE* fileexe, - char* idp) { +bool recorreProcedimientos(Database db, char *parametros, FILE *fileexe, char *idp) +{ int procedimientoid, lsize; char idprocedimiento[LONPRM], msglog[LONSTD], sqlstr[LONSQL]; Table tbl; - char modulo[] = "recorreProcedimientos()"; /* Busca procedimiento */ sprintf(sqlstr, "SELECT procedimientoid,parametros FROM procedimientos_acciones" " WHERE idprocedimiento=%s ORDER BY orden", idp); // Ejecuta consulta - if (!db.Execute(sqlstr, tbl)) { // Error al leer - errorLog(modulo, 21, FALSE); + if (!db.Execute(sqlstr, tbl)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "failed to query database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } while (!tbl.ISEOF()) { // Recorre procedimientos if (!tbl.Get("procedimientoid", procedimientoid)) { // Toma dato tbl.GetErrorErrStr(msglog); // Error al acceder al registro - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } if (procedimientoid > 0) { // Procedimiento recursivo sprintf(idprocedimiento, "%d", procedimientoid); if (!recorreProcedimientos(db, parametros, fileexe, idprocedimiento)) { - return (FALSE); + return false; } } else { if (!tbl.Get("parametros", parametros)) { // Toma dato tbl.GetErrorErrStr(msglog); // Error al acceder al registro - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } strcat(parametros, "@"); lsize = strlen(parametros); @@ -1114,7 +899,7 @@ BOOLEAN recorreProcedimientos(Database db, char* parametros, FILE* fileexe, } tbl.MoveNext(); } - return (TRUE); + return true; } // ________________________________________________________________________________________________________ // Función: ComandosPendientes @@ -1125,14 +910,14 @@ BOOLEAN recorreProcedimientos(Database db, char* parametros, FILE* fileexe, // - socket_c: Socket del cliente que envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN ComandosPendientes(SOCKET *socket_c, TRAMA *ptrTrama) +static bool ComandosPendientes(TRAMA *ptrTrama, struct og_client *cli) { + int socket_c = og_client_socket(cli); char *ido,*iph,pids[LONPRM]; int ids, idx; - char modulo[] = "ComandosPendientes()"; iph = copiaParametro("iph",ptrTrama); // Toma dirección IP ido = copiaParametro("ido",ptrTrama); // Toma identificador del ordenador @@ -1140,8 +925,8 @@ BOOLEAN ComandosPendientes(SOCKET *socket_c, TRAMA *ptrTrama) if (!clienteExistente(iph, &idx)) { // Busca Ãndice del cliente liberaMemoria(iph); liberaMemoria(ido); - errorLog(modulo, 47, FALSE); - return (FALSE); + syslog(LOG_ERR, "client does not exist\n"); + return false; } if (buscaComandos(ido, ptrTrama, &ids)) { // Existen comandos pendientes ptrTrama->tipo = MSG_COMANDO; @@ -1152,15 +937,17 @@ BOOLEAN ComandosPendientes(SOCKET *socket_c, TRAMA *ptrTrama) initParametros(ptrTrama,0); strcpy(ptrTrama->parametros, "nfn=NoComandosPtes\r"); } - if (!mandaTrama(socket_c, ptrTrama)) { + if (!mandaTrama(&socket_c, ptrTrama)) { liberaMemoria(iph); - liberaMemoria(ido); - errorLog(modulo, 26, FALSE); - return (FALSE); + liberaMemoria(ido); + syslog(LOG_ERR, "failed to send response to %s:%hu reason=%s\n", + inet_ntoa(cli->addr.sin_addr), ntohs(cli->addr.sin_port), + strerror(errno)); + return false; } liberaMemoria(iph); liberaMemoria(ido); - return (TRUE); + return true; } // ________________________________________________________________________________________________________ // Función: buscaComandos @@ -1172,59 +959,57 @@ BOOLEAN ComandosPendientes(SOCKET *socket_c, TRAMA *ptrTrama) // - cmd: Parámetros del comando (Salida) // - ids: Identificador de la sesion(Salida) // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN buscaComandos(char *ido, TRAMA *ptrTrama, int *ids) +bool buscaComandos(char *ido, TRAMA *ptrTrama, int *ids) { char msglog[LONSTD], sqlstr[LONSQL]; Database db; Table tbl; int lonprm; - char modulo[] = "buscaComandos()"; - - if (!db.Open(usuario, pasguor, datasource, catalog)) { // Error de conexión con la BD - errorLog(modulo, 20, FALSE); + if (!db.Open(usuario, pasguor, datasource, catalog)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "cannot open connection database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } sprintf(sqlstr,"SELECT sesion,parametros,length( parametros) as lonprm"\ " FROM acciones WHERE idordenador=%s AND estado='%d' ORDER BY idaccion", ido, ACCION_INICIADA); - if (!db.Execute(sqlstr, tbl)) { // Error al recuperar los datos - errorLog(modulo, 21, FALSE); + if (!db.Execute(sqlstr, tbl)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "failed to query database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } if (tbl.ISEOF()) { db.Close(); - return (FALSE); // No hay comandos pendientes + return false; // No hay comandos pendientes } else { // Busca entre todas las acciones de diversos ambitos if (!tbl.Get("sesion", *ids)) { // Toma identificador de la sesion tbl.GetErrorErrStr(msglog); // Error al acceder al registro - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } if (!tbl.Get("lonprm", lonprm)) { // Toma parámetros del comando tbl.GetErrorErrStr(msglog); // Error al acceder al registro - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } if(!initParametros(ptrTrama,lonprm+LONGITUD_PARAMETROS)){ db.Close(); - errorLog(modulo, 3, FALSE); - return (FALSE); + syslog(LOG_ERR, "%s:%d OOM\n", __FILE__, __LINE__); + return false; } if (!tbl.Get("parametros", ptrTrama->parametros)) { // Toma parámetros del comando tbl.GetErrorErrStr(msglog); // Error al acceder al registro - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } } db.Close(); - return (TRUE); // Hay comandos pendientes, se toma el primero de la cola + return true; // Hay comandos pendientes, se toma el primero de la cola } // ________________________________________________________________________________________________________ // Función: DisponibilidadComandos @@ -1235,41 +1020,27 @@ BOOLEAN buscaComandos(char *ido, TRAMA *ptrTrama, int *ids) // - socket_c: Socket del cliente que envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ // -BOOLEAN DisponibilidadComandos(SOCKET *socket_c, TRAMA *ptrTrama) +static bool DisponibilidadComandos(TRAMA *ptrTrama, struct og_client *cli) { char *iph, *tpc; - int idx,port_old=0,port_new; - char modulo[] = "DisponibilidadComandos()"; - - + int idx; iph = copiaParametro("iph",ptrTrama); // Toma ip if (!clienteExistente(iph, &idx)) { // Busca Ãndice del cliente liberaMemoria(iph); - errorLog(modulo, 47, FALSE); - return (FALSE); + syslog(LOG_ERR, "client does not exist\n"); + return false; } tpc = copiaParametro("tpc",ptrTrama); // Tipo de cliente (Plataforma y S.O.) strcpy(tbsockets[idx].estado, tpc); - - port_new=tomaPuerto(*socket_c); - - if(tbsockets[idx].sock!=INVALID_SOCKET){ - port_old=tomaPuerto(tbsockets[idx].sock); - if(port_old!=port_new){ - close(tbsockets[idx].sock); // Cierra el socket si ya existia uno - } - } - - tbsockets[idx].sock = *socket_c; - swcSocket = TRUE; // El socket permanece abierto para recibir comandos desde el servidor + cli->keepalive_idx = idx; liberaMemoria(iph); liberaMemoria(tpc); - return (TRUE); + return true; } // ________________________________________________________________________________________________________ // Función: respuestaEstandar @@ -1285,26 +1056,26 @@ BOOLEAN DisponibilidadComandos(SOCKET *socket_c, TRAMA *ptrTrama) // - db: Objeto base de datos (operativo) // - tbl: Objeto tabla // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN respuestaEstandar(TRAMA *ptrTrama, char *iph, char *ido, Database db, - Table tbl) { +static bool respuestaEstandar(TRAMA *ptrTrama, char *iph, char *ido, Database db, + Table tbl) +{ char msglog[LONSTD], sqlstr[LONSQL]; char *res, *ids, *der; char fechafin[LONPRM]; struct tm* st; int idaccion; - char modulo[] = "respuestaEstandar()"; ids = copiaParametro("ids",ptrTrama); // Toma identificador de la sesión if (ids == NULL) // No existe seguimiento de la acción - return (TRUE); - + return true; + if (atoi(ids) == 0){ // No existe seguimiento de la acción liberaMemoria(ids); - return (TRUE); + return true; } sprintf(sqlstr, @@ -1313,20 +1084,20 @@ BOOLEAN respuestaEstandar(TRAMA *ptrTrama, char *iph, char *ido, Database db, liberaMemoria(ids); - if (!db.Execute(sqlstr, tbl)) { // Error al consultar - errorLog(modulo, 21, FALSE); + if (!db.Execute(sqlstr, tbl)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "failed to query database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } - if (tbl.ISEOF()) { // No existe registro de acciones - errorLog(modulo, 31, FALSE); - return (TRUE); + if (tbl.ISEOF()) { + syslog(LOG_ERR, "no actions available\n"); + return true; } if (!tbl.Get("idaccion", idaccion)) { // Toma identificador de la accion tbl.GetErrorErrStr(msglog); // Error al acceder al registro - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } st = tomaHora(); sprintf(fechafin, "%d/%d/%d %d:%d:%d", st->tm_year + 1900, st->tm_mon + 1, @@ -1345,20 +1116,40 @@ BOOLEAN respuestaEstandar(TRAMA *ptrTrama, char *iph, char *ido, Database db, liberaMemoria(res); liberaMemoria(der); db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } liberaMemoria(der); if (atoi(res) == ACCION_FALLIDA) { liberaMemoria(res); - return (FALSE); // Error en la ejecución del comando + return false; // Error en la ejecución del comando } liberaMemoria(res); - return (TRUE); + return true; } + +static bool og_send_cmd(char *ips_array[], int ips_array_len, + const char *state, TRAMA *ptrTrama) +{ + int i, idx; + + for (i = 0; i < ips_array_len; i++) { + if (clienteDisponible(ips_array[i], &idx)) { // Si el cliente puede recibir comandos + int sock = tbsockets[idx].cli ? tbsockets[idx].cli->io.fd : -1; + + strcpy(tbsockets[idx].estado, state); // Actualiza el estado del cliente + if (sock >= 0 && !mandaTrama(&sock, ptrTrama)) { + syslog(LOG_ERR, "failed to send response to %s:%s\n", + ips_array[i], strerror(errno)); + } + } + } + return true; +} + // ________________________________________________________________________________________________________ // Función: enviaComando // @@ -1368,21 +1159,20 @@ BOOLEAN respuestaEstandar(TRAMA *ptrTrama, char *iph, char *ido, Database db, // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // - estado: Estado en el se deja al cliente mientras se ejecuta el comando // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN enviaComando(TRAMA* ptrTrama, const char *estado) - { +bool enviaComando(TRAMA* ptrTrama, const char *estado) +{ char *iph, *Ipes, *ptrIpes[MAXIMOS_CLIENTES]; - int i, idx, lon; - char modulo[] = "enviaComando()"; + int lon; iph = copiaParametro("iph",ptrTrama); // Toma dirección/es IP lon = strlen(iph); // Calcula longitud de la cadena de direccion/es IPE/S Ipes = (char*) reservaMemoria(lon + 1); if (Ipes == NULL) { - errorLog(modulo, 3, FALSE); - return (FALSE); + syslog(LOG_ERR, "%s:%d OOM\n", __FILE__, __LINE__); + return false; } strcpy(Ipes, iph); // Copia cadena de IPES @@ -1390,18 +1180,12 @@ BOOLEAN enviaComando(TRAMA* ptrTrama, const char *estado) lon = splitCadena(ptrIpes, Ipes, ';'); FINCADaINTRO(ptrTrama); - for (i = 0; i < lon; i++) { - if (clienteDisponible(ptrIpes[i], &idx)) { // Si el cliente puede recibir comandos - strcpy(tbsockets[idx].estado, estado); // Actualiza el estado del cliente - if (!mandaTrama(&tbsockets[idx].sock, ptrTrama)) { - errorLog(modulo, 26, FALSE); - return (FALSE); - } - //close(tbsockets[idx].sock); // Cierra el socket del cliente hasta nueva disponibilidad - } - } + + if (!og_send_cmd(ptrIpes, lon, estado, ptrTrama)) + return false; + liberaMemoria(Ipes); - return (TRUE); + return true; } //______________________________________________________________________________________________________ // Función: respuestaConsola @@ -1412,61 +1196,19 @@ BOOLEAN enviaComando(TRAMA* ptrTrama, const char *estado) // - socket_c: (Salida) Socket utilizado para el envÃo // - res: Resultado del envÃo del comando // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN respuestaConsola(SOCKET *socket_c, TRAMA *ptrTrama, int res) { - char modulo[] = "respuestaConsola()"; +bool respuestaConsola(int socket_c, TRAMA *ptrTrama, int res) +{ initParametros(ptrTrama,0); sprintf(ptrTrama->parametros, "res=%d\r", res); - if (!mandaTrama(socket_c, ptrTrama)) { - errorLog(modulo, 26, FALSE); - return (FALSE); + if (!mandaTrama(&socket_c, ptrTrama)) { + syslog(LOG_ERR, "%s:%d failed to send response: %s\n", + __func__, __LINE__, strerror(errno)); + return false; } - return (TRUE); -} -// ________________________________________________________________________________________________________ -// Función: Arrancar -// -// Descripción: -// Procesa el comando Arrancar -// Parámetros: -// - socket_c: Socket de la consola al envió el mensaje -// - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -// ________________________________________________________________________________________________________ -BOOLEAN Arrancar(SOCKET *socket_c, TRAMA* ptrTrama) { - char *iph,*mac,*mar, msglog[LONSTD]; - BOOLEAN res; - char modulo[] = "Arrancar()"; - - iph = copiaParametro("iph",ptrTrama); // Toma dirección/es IP - mac = copiaParametro("mac",ptrTrama); // Toma dirección/es MAC - mar = copiaParametro("mar",ptrTrama); // Método de arranque (Broadcast o Unicast) - - res=Levanta(iph,mac,mar); - - liberaMemoria(iph); - liberaMemoria(mac); - liberaMemoria(mar); - - if(!res){ - sprintf(msglog, "%s:%s", tbErrores[32], modulo); - errorInfo(modulo, msglog); - respuestaConsola(socket_c, ptrTrama, FALSE); - return (FALSE); - } - - if (!enviaComando(ptrTrama, CLIENTE_OCUPADO)) { - sprintf(msglog, "%s:%s", tbErrores[32], modulo); - errorInfo(modulo, msglog); - respuestaConsola(socket_c, ptrTrama, FALSE); - return (FALSE); - } - respuestaConsola(socket_c, ptrTrama, TRUE); - return (TRUE); + return true; } // ________________________________________________________________________________________________________ // Función: Levanta @@ -1478,50 +1220,114 @@ BOOLEAN Arrancar(SOCKET *socket_c, TRAMA* ptrTrama) { // - mac: Cadena de direcciones mac separadas por ";" // - mar: Método de arranque (1=Broadcast, 2=Unicast) // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN Levanta(char* iph,char *mac, char* mar) + +bool Levanta(char *ptrIP[], char *ptrMacs[], int lon, char *mar) { - char *ptrIP[MAXIMOS_CLIENTES],*ptrMacs[MAXIMOS_CLIENTES]; - int i, lon, res; - SOCKET s; - BOOLEAN bOpt; + unsigned int on = 1; sockaddr_in local; - char modulo[] = "Levanta()"; + int i, res; + int s; /* Creación de socket para envÃo de magig packet */ s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); - if (s == SOCKET_ERROR) { // Error al crear el socket del servicio - errorLog(modulo, 13, TRUE); - return (FALSE); + if (s < 0) { + syslog(LOG_ERR, "cannot create socket for magic packet\n"); + return false; } - bOpt = TRUE; // Pone el socket en modo Broadcast - res = setsockopt(s, SOL_SOCKET, SO_BROADCAST, (char *) &bOpt, sizeof(bOpt)); - if (res == SOCKET_ERROR) { - errorLog(modulo, 48, TRUE); - return (FALSE); + res = setsockopt(s, SOL_SOCKET, SO_BROADCAST, (unsigned int *) &on, + sizeof(on)); + if (res < 0) { + syslog(LOG_ERR, "cannot set broadcast socket\n"); + return false; } + memset(&local, 0, sizeof(local)); local.sin_family = AF_INET; - local.sin_port = htons((short) PUERTO_WAKEUP); - local.sin_addr.s_addr = htonl(INADDR_ANY); // cualquier interface - if (bind(s, (sockaddr *) &local, sizeof(local)) == SOCKET_ERROR) { - errorLog(modulo, 14, TRUE); - exit(EXIT_FAILURE); - } - /* fin creación de socket */ - lon = splitCadena(ptrIP, iph, ';'); - lon = splitCadena(ptrMacs, mac, ';'); + local.sin_port = htons(PUERTO_WAKEUP); + local.sin_addr.s_addr = htonl(INADDR_ANY); + for (i = 0; i < lon; i++) { - if (!WakeUp(&s,ptrIP[i],ptrMacs[i],mar)) { - errorLog(modulo, 49, TRUE); + if (!WakeUp(s, ptrIP[i], ptrMacs[i], mar)) { + syslog(LOG_ERR, "problem sending magic packet\n"); close(s); - return (FALSE); + return false; } } close(s); - return (TRUE); + return true; } + +#define OG_WOL_SEQUENCE 6 +#define OG_WOL_MACADDR_LEN 6 +#define OG_WOL_REPEAT 16 + +struct wol_msg { + char secuencia_FF[OG_WOL_SEQUENCE]; + char macbin[OG_WOL_REPEAT][OG_WOL_MACADDR_LEN]; +}; + +static bool wake_up_broadcast(int sd, struct sockaddr_in *client, + const struct wol_msg *msg) +{ + struct sockaddr_in *broadcast_addr; + struct ifaddrs *ifaddr, *ifa; + int ret; + + if (getifaddrs(&ifaddr) < 0) { + syslog(LOG_ERR, "cannot get list of addresses\n"); + return false; + } + + client->sin_addr.s_addr = htonl(INADDR_BROADCAST); + + for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) { + if (ifa->ifa_addr == NULL || + ifa->ifa_addr->sa_family != AF_INET || + strcmp(ifa->ifa_name, interface) != 0) + continue; + + broadcast_addr = + (struct sockaddr_in *)ifa->ifa_ifu.ifu_broadaddr; + client->sin_addr.s_addr = broadcast_addr->sin_addr.s_addr; + break; + } + freeifaddrs(ifaddr); + + ret = sendto(sd, msg, sizeof(*msg), 0, + (sockaddr *)client, sizeof(*client)); + if (ret < 0) { + syslog(LOG_ERR, "failed to send broadcast wol\n"); + return false; + } + + return true; +} + +static bool wake_up_unicast(int sd, struct sockaddr_in *client, + const struct wol_msg *msg, + const struct in_addr *addr) +{ + int ret; + + client->sin_addr.s_addr = addr->s_addr; + + ret = sendto(sd, msg, sizeof(*msg), 0, + (sockaddr *)client, sizeof(*client)); + if (ret < 0) { + syslog(LOG_ERR, "failed to send unicast wol\n"); + return false; + } + + return true; +} + +enum wol_delivery_type { + OG_WOL_BROADCAST = 1, + OG_WOL_UNICAST = 2 +}; + //_____________________________________________________________________________________________________________ // Función: WakeUp // @@ -1533,25 +1339,29 @@ BOOLEAN Levanta(char* iph,char *mac, char* mar) // - mac : Cadena con la dirección mac en formato XXXXXXXXXXXX // - mar: Método de arranque (1=Broadcast, 2=Unicast) // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error //_____________________________________________________________________________________________________________ // -BOOLEAN WakeUp(SOCKET *s, char* iph,char *mac,char* mar) +bool WakeUp(int s, char* iph, char *mac, char *mar) { - int i, res; - char HDaddress_bin[6]; - struct { - BYTE secuencia_FF[6]; - char macbin[16][6]; - } Trama_WakeUp; - sockaddr_in WakeUpCliente; - char modulo[] = "WakeUp()"; + unsigned int macaddr[OG_WOL_MACADDR_LEN]; + char HDaddress_bin[OG_WOL_MACADDR_LEN]; + struct sockaddr_in WakeUpCliente; + struct wol_msg Trama_WakeUp; + struct in_addr addr; + bool ret; + int i; for (i = 0; i < 6; i++) // Primera secuencia de la trama Wake Up (0xFFFFFFFFFFFF) Trama_WakeUp.secuencia_FF[i] = 0xFF; - PasaHexBin(mac, HDaddress_bin); // Pasa a binario la MAC + sscanf(mac, "%02x%02x%02x%02x%02x%02x", + &macaddr[0], &macaddr[1], &macaddr[2], + &macaddr[3], &macaddr[4], &macaddr[5]); + + for (i = 0; i < 6; i++) + HDaddress_bin[i] = (uint8_t)macaddr[i]; for (i = 0; i < 16; i++) // Segunda secuencia de la trama Wake Up , repetir 16 veces su la MAC memcpy(&Trama_WakeUp.macbin[i][0], &HDaddress_bin, 6); @@ -1559,52 +1369,25 @@ BOOLEAN WakeUp(SOCKET *s, char* iph,char *mac,char* mar) /* Creación de socket del cliente que recibe la trama magic packet */ WakeUpCliente.sin_family = AF_INET; WakeUpCliente.sin_port = htons((short) PUERTO_WAKEUP); - if(atoi(mar)==2) - WakeUpCliente.sin_addr.s_addr = inet_addr(iph); // Para hacerlo con IP - else - WakeUpCliente.sin_addr.s_addr = htonl(INADDR_BROADCAST); // Para hacerlo con broadcast - res = sendto(*s, (char *) &Trama_WakeUp, sizeof(Trama_WakeUp), 0, - (sockaddr *) &WakeUpCliente, sizeof(WakeUpCliente)); - if (res == SOCKET_ERROR) { - errorLog(modulo, 26, FALSE); - return (FALSE); - } - return (TRUE); -} -//_____________________________________________________________________________________________________________ -// Función: PasaHexBin -// -// Descripción: -// Convierte a binario una dirección mac desde una cadena con formato XXXXXXXXXXXX -// -// Parámetros de entrada: -// - cadena : Cadena con el contenido de la mac -// - numero : la dirección mac convertida a binario (6 bytes) -//_____________________________________________________________________________________________________________ -void PasaHexBin(char *cadena, char *numero) { - int i, j, p; - char matrizHex[] = "0123456789ABCDEF"; - char Ucadena[12], aux; - - for (i = 0; i < 12; i++) - Ucadena[i] = toupper(cadena[i]); - p = 0; - for (i = 0; i < 12; i++) { - for (j = 0; j < 16; j++) { - if (Ucadena[i] == matrizHex[j]) { - if (i % 2) { - aux = numero[p]; - aux = (aux << 4); - numero[p] = j; - numero[p] = numero[p] | aux; - p++; - } else - numero[p] = j; - break; - } + switch (atoi(mar)) { + case OG_WOL_BROADCAST: + ret = wake_up_broadcast(s, &WakeUpCliente, &Trama_WakeUp); + break; + case OG_WOL_UNICAST: + if (inet_aton(iph, &addr) < 0) { + syslog(LOG_ERR, "bad IP address for unicast wol\n"); + ret = false; + break; } - } + ret = wake_up_unicast(s, &WakeUpCliente, &Trama_WakeUp, &addr); + break; + default: + syslog(LOG_ERR, "unknown wol type\n"); + ret = false; + break; + } + return ret; } // ________________________________________________________________________________________________________ // Función: RESPUESTA_Arrancar @@ -1615,23 +1398,23 @@ void PasaHexBin(char *cadena, char *numero) { // - socket_c: Socket del cliente que envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN RESPUESTA_Arrancar(SOCKET *socket_c, TRAMA* ptrTrama) { +static bool RESPUESTA_Arrancar(TRAMA* ptrTrama, struct og_client *cli) +{ char msglog[LONSTD]; Database db; Table tbl; int i; char *iph, *ido; char *tpc; - char modulo[] = "RESPUESTA_Arrancar()"; - if (!db.Open(usuario, pasguor, datasource, catalog)) { // Error de conexion - errorLog(modulo, 20, FALSE); + if (!db.Open(usuario, pasguor, datasource, catalog)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "cannot open connection database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } iph = copiaParametro("iph",ptrTrama); // Toma dirección ip @@ -1640,8 +1423,8 @@ BOOLEAN RESPUESTA_Arrancar(SOCKET *socket_c, TRAMA* ptrTrama) { if (!respuestaEstandar(ptrTrama, iph, ido, db, tbl)) { liberaMemoria(iph); liberaMemoria(ido); - errorLog(modulo, 30, FALSE); - return (FALSE); // Error al registrar notificacion + syslog(LOG_ERR, "failed to register notification\n"); + return false; } tpc = copiaParametro("tpc",ptrTrama); // Tipo de cliente (Plataforma y S.O.) @@ -1653,73 +1436,7 @@ BOOLEAN RESPUESTA_Arrancar(SOCKET *socket_c, TRAMA* ptrTrama) { liberaMemoria(tpc); db.Close(); // Cierra conexión - return (TRUE); -} -// ________________________________________________________________________________________________________ -// Función: Comando -// -// Descripción: -// Procesa un comando personalizado -// Parámetros: -// - socket_c: Socket de la consola al envió el mensaje -// - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -// ________________________________________________________________________________________________________ -BOOLEAN Comando(SOCKET *socket_c, TRAMA* ptrTrama) { - char msglog[LONSTD]; - char modulo[] = "Comando()"; - - if (!enviaComando(ptrTrama, CLIENTE_OCUPADO)) { - sprintf(msglog, "%s:%s", tbErrores[32], modulo); - errorInfo(modulo, msglog); - respuestaConsola(socket_c, ptrTrama, FALSE); - return (FALSE); - } - respuestaConsola(socket_c, ptrTrama, TRUE); - return (TRUE); -} -// ________________________________________________________________________________________________________ -// Función: RESPUESTA_Comando -// -// Descripción: -// Respuesta del cliente al un comando personalizado -// Parámetros: -// - socket_c: Socket del cliente que envió el mensaje -// - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -// ________________________________________________________________________________________________________ -BOOLEAN RESPUESTA_Comando(SOCKET *socket_c, TRAMA* ptrTrama) - { - char msglog[LONSTD]; - Database db; - Table tbl; - char *iph, *ido; - char modulo[] = "RESPUESTA_Comando()"; - - if (!db.Open(usuario, pasguor, datasource, catalog)) { // Error de conexion - errorLog(modulo, 20, FALSE); - db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); - } - - iph = copiaParametro("iph",ptrTrama); // Toma dirección ip - ido = copiaParametro("ido",ptrTrama); // Toma identificador del ordenador - - if (!respuestaEstandar(ptrTrama, iph, ido, db, tbl)) { - liberaMemoria(iph); - liberaMemoria(ido); - errorLog(modulo, 30, FALSE); - return (FALSE); // Error al registrar notificacion - } - liberaMemoria(iph); - liberaMemoria(ido); - db.Close(); // Cierra conexión - return (TRUE); + return true; } // ________________________________________________________________________________________________________ // Función: Apagar @@ -1730,21 +1447,17 @@ BOOLEAN RESPUESTA_Comando(SOCKET *socket_c, TRAMA* ptrTrama) // - socket_c: Socket de la consola al envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN Apagar(SOCKET *socket_c, TRAMA* ptrTrama) { - char msglog[LONSTD]; - char modulo[] = "Apagar()"; - +static bool Apagar(TRAMA* ptrTrama, struct og_client *cli) +{ if (!enviaComando(ptrTrama, CLIENTE_OCUPADO)) { - sprintf(msglog, "%s:%s", tbErrores[32], modulo); - errorInfo(modulo, msglog); - respuestaConsola(socket_c, ptrTrama, FALSE); - return (FALSE); + respuestaConsola(og_client_socket(cli), ptrTrama, false); + return false; } - respuestaConsola(socket_c, ptrTrama, TRUE); - return (TRUE); + respuestaConsola(og_client_socket(cli), ptrTrama, true); + return true; } // ________________________________________________________________________________________________________ // Función: RESPUESTA_Apagar @@ -1755,22 +1468,22 @@ BOOLEAN Apagar(SOCKET *socket_c, TRAMA* ptrTrama) { // - socket_c: Socket del cliente que envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN RESPUESTA_Apagar(SOCKET *socket_c, TRAMA* ptrTrama) { +static bool RESPUESTA_Apagar(TRAMA* ptrTrama, struct og_client *cli) +{ char msglog[LONSTD]; Database db; Table tbl; int i; char *iph, *ido; - char modulo[] = "RESPUESTA_Apagar()"; - if (!db.Open(usuario, pasguor, datasource, catalog)) { // Error de conexion - errorLog(modulo, 20, FALSE); + if (!db.Open(usuario, pasguor, datasource, catalog)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "cannot open connection database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } iph = copiaParametro("iph",ptrTrama); // Toma dirección ip @@ -1779,8 +1492,8 @@ BOOLEAN RESPUESTA_Apagar(SOCKET *socket_c, TRAMA* ptrTrama) { if (!respuestaEstandar(ptrTrama, iph, ido, db, tbl)) { liberaMemoria(iph); liberaMemoria(ido); - errorLog(modulo, 30, FALSE); - return (FALSE); // Error al registrar notificacion + syslog(LOG_ERR, "failed to register notification\n"); + return false; // Error al registrar notificacion } if (clienteExistente(iph, &i)) // Actualiza estado @@ -1790,32 +1503,7 @@ BOOLEAN RESPUESTA_Apagar(SOCKET *socket_c, TRAMA* ptrTrama) { liberaMemoria(ido); db.Close(); // Cierra conexión - return (TRUE); -} -// ________________________________________________________________________________________________________ -// Función: Reiniciar -// -// Descripción: -// Procesa el comando Reiniciar -// Parámetros: -// - socket_c: Socket de la consola al envió el mensaje -// - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -// ________________________________________________________________________________________________________ -BOOLEAN Reiniciar(SOCKET *socket_c, TRAMA* ptrTrama) { - char msglog[LONSTD]; - char modulo[] = "Reiniciar()"; - - if (!enviaComando(ptrTrama, CLIENTE_OCUPADO)) { - sprintf(msglog, "%s:%s", tbErrores[32], modulo); - errorInfo(modulo, msglog); - respuestaConsola(socket_c, ptrTrama, FALSE); - return (FALSE); - } - respuestaConsola(socket_c, ptrTrama, TRUE); - return (TRUE); + return true; } // ________________________________________________________________________________________________________ // Función: RESPUESTA_Reiniciar @@ -1826,22 +1514,22 @@ BOOLEAN Reiniciar(SOCKET *socket_c, TRAMA* ptrTrama) { // - socket_c: Socket del cliente que envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN RESPUESTA_Reiniciar(SOCKET *socket_c, TRAMA* ptrTrama) { +static bool RESPUESTA_Reiniciar(TRAMA* ptrTrama, struct og_client *cli) +{ char msglog[LONSTD]; Database db; Table tbl; int i; char *iph, *ido; - char modulo[] = "RESPUESTA_Reiniciar()"; - if (!db.Open(usuario, pasguor, datasource, catalog)) { // Error de conexion - errorLog(modulo, 20, FALSE); + if (!db.Open(usuario, pasguor, datasource, catalog)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "cannot open connection database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } iph = copiaParametro("iph",ptrTrama); // Toma dirección ip @@ -1850,8 +1538,8 @@ BOOLEAN RESPUESTA_Reiniciar(SOCKET *socket_c, TRAMA* ptrTrama) { if (!respuestaEstandar(ptrTrama, iph, ido, db, tbl)) { liberaMemoria(iph); liberaMemoria(ido); - errorLog(modulo, 30, FALSE); - return (FALSE); // Error al registrar notificacion + syslog(LOG_ERR, "failed to register notification\n"); + return false; // Error al registrar notificacion } if (clienteExistente(iph, &i)) // Actualiza estado @@ -1861,32 +1549,7 @@ BOOLEAN RESPUESTA_Reiniciar(SOCKET *socket_c, TRAMA* ptrTrama) { liberaMemoria(ido); db.Close(); // Cierra conexión - return (TRUE); -} -// ________________________________________________________________________________________________________ -// Función: IniciarSesion -// -// Descripción: -// Procesa el comando Iniciar Sesión -// Parámetros: -// - socket_c: Socket de la consola al envió el mensaje -// - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -// ________________________________________________________________________________________________________ -BOOLEAN IniciarSesion(SOCKET *socket_c, TRAMA* ptrTrama) { - char msglog[LONSTD]; - char modulo[] = "IniciarSesion()"; - - if (!enviaComando(ptrTrama, CLIENTE_OCUPADO)) { - sprintf(msglog, "%s:%s", tbErrores[32], modulo); - errorInfo(modulo, msglog); - respuestaConsola(socket_c, ptrTrama, FALSE); - return (FALSE); - } - respuestaConsola(socket_c, ptrTrama, TRUE); - return (TRUE); + return true; } // ________________________________________________________________________________________________________ // Función: RESPUESTA_IniciarSesion @@ -1897,22 +1560,22 @@ BOOLEAN IniciarSesion(SOCKET *socket_c, TRAMA* ptrTrama) { // - socket_c: Socket del cliente que envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN RESPUESTA_IniciarSesion(SOCKET *socket_c, TRAMA* ptrTrama) { +static bool RESPUESTA_IniciarSesion(TRAMA* ptrTrama, struct og_client *cli) +{ char msglog[LONSTD]; Database db; Table tbl; int i; char *iph, *ido; - char modulo[] = "RESPUESTA_IniciarSesion()"; - if (!db.Open(usuario, pasguor, datasource, catalog)) { // Error de conexion - errorLog(modulo, 20, FALSE); + if (!db.Open(usuario, pasguor, datasource, catalog)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "cannot open connection database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } iph = copiaParametro("iph",ptrTrama); // Toma dirección ip @@ -1921,8 +1584,8 @@ BOOLEAN RESPUESTA_IniciarSesion(SOCKET *socket_c, TRAMA* ptrTrama) { if (!respuestaEstandar(ptrTrama, iph, ido, db, tbl)) { liberaMemoria(iph); liberaMemoria(ido); - errorLog(modulo, 30, FALSE); - return (FALSE); // Error al registrar notificacion + syslog(LOG_ERR, "failed to register notification\n"); + return false; // Error al registrar notificacion } if (clienteExistente(iph, &i)) // Actualiza estado @@ -1932,7 +1595,7 @@ BOOLEAN RESPUESTA_IniciarSesion(SOCKET *socket_c, TRAMA* ptrTrama) { liberaMemoria(ido); db.Close(); // Cierra conexión - return (TRUE); + return true; } // ________________________________________________________________________________________________________ // Función: CrearImagen @@ -1943,21 +1606,17 @@ BOOLEAN RESPUESTA_IniciarSesion(SOCKET *socket_c, TRAMA* ptrTrama) { // - socket_c: Socket de la consola al envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN CrearImagen(SOCKET *socket_c, TRAMA* ptrTrama) { - char msglog[LONSTD]; - char modulo[] = "CrearImagen()"; - +static bool CrearImagen(TRAMA* ptrTrama, struct og_client *cli) +{ if (!enviaComando(ptrTrama, CLIENTE_OCUPADO)) { - sprintf(msglog, "%s:%s", tbErrores[32], modulo); - errorInfo(modulo, msglog); - respuestaConsola(socket_c, ptrTrama, FALSE); - return (FALSE); + respuestaConsola(og_client_socket(cli), ptrTrama, false); + return false; } - respuestaConsola(socket_c, ptrTrama, TRUE); - return (TRUE); + respuestaConsola(og_client_socket(cli), ptrTrama, true); + return true; } // ________________________________________________________________________________________________________ // Función: RESPUESTA_CrearImagen @@ -1968,24 +1627,23 @@ BOOLEAN CrearImagen(SOCKET *socket_c, TRAMA* ptrTrama) { // - socket_c: Socket del cliente que envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN RESPUESTA_CrearImagen(SOCKET *socket_c, TRAMA* ptrTrama) +static bool RESPUESTA_CrearImagen(TRAMA* ptrTrama, struct og_client *cli) { char msglog[LONSTD]; Database db; Table tbl; char *iph, *dsk, *par, *cpt, *ipr, *ido; char *idi; - BOOLEAN res; - char modulo[] = "RESPUESTA_CrearImagen()"; + bool res; - if (!db.Open(usuario, pasguor, datasource, catalog)) { // Error de conexion - errorLog(modulo, 20, FALSE); + if (!db.Open(usuario, pasguor, datasource, catalog)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "cannot open connection database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } iph = copiaParametro("iph",ptrTrama); // Toma dirección ip @@ -1994,8 +1652,8 @@ BOOLEAN RESPUESTA_CrearImagen(SOCKET *socket_c, TRAMA* ptrTrama) if (!respuestaEstandar(ptrTrama, iph, ido, db, tbl)) { liberaMemoria(iph); liberaMemoria(ido); - errorLog(modulo, 30, FALSE); - return (FALSE); // Error al registrar notificacion + syslog(LOG_ERR, "failed to register notification\n"); + return false; // Error al registrar notificacion } // Acciones posteriores @@ -2011,15 +1669,15 @@ BOOLEAN RESPUESTA_CrearImagen(SOCKET *socket_c, TRAMA* ptrTrama) liberaMemoria(par); liberaMemoria(cpt); liberaMemoria(ipr); - + if(!res){ - errorLog(modulo, 94, FALSE); - db.Close(); // Cierra conexión - return (FALSE); + syslog(LOG_ERR, "Problem processing update\n"); + db.Close(); + return false; } db.Close(); // Cierra conexión - return (TRUE); + return true; } // ________________________________________________________________________________________________________ // Función: actualizaCreacionImagen @@ -2036,13 +1694,13 @@ BOOLEAN RESPUESTA_CrearImagen(SOCKET *socket_c, TRAMA* ptrTrama) // - ipr: Ip del repositorio // - ido: Identificador del ordenador modelo // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN actualizaCreacionImagen(Database db, Table tbl, char* idi, char* dsk, - char* par, char* cpt, char* ipr, char *ido) { +bool actualizaCreacionImagen(Database db, Table tbl, char *idi, char *dsk, + char *par, char *cpt, char *ipr, char *ido) +{ char msglog[LONSTD], sqlstr[LONSQL]; - char modulo[] = "actualizaCreacionImagen()"; int idr,ifs; /* Toma identificador del repositorio correspondiente al ordenador modelo */ @@ -2052,16 +1710,16 @@ BOOLEAN actualizaCreacionImagen(Database db, Table tbl, char* idi, char* dsk, " LEFT JOIN ordenadores USING (idrepositorio)" " WHERE repositorios.ip='%s' AND ordenadores.idordenador=%s", ipr, ido); - if (!db.Execute(sqlstr, tbl)) { // Error al leer - errorLog(modulo, 21, FALSE); + if (!db.Execute(sqlstr, tbl)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "failed to query database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } if (!tbl.Get("idrepositorio", idr)) { // Toma dato tbl.GetErrorErrStr(msglog); // Error al acceder al registro - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } /* Toma identificador del perfilsoftware */ @@ -2070,16 +1728,16 @@ BOOLEAN actualizaCreacionImagen(Database db, Table tbl, char* idi, char* dsk, " FROM ordenadores_particiones" " WHERE idordenador=%s AND numdisk=%s AND numpar=%s", ido, dsk, par); - if (!db.Execute(sqlstr, tbl)) { // Error al leer - errorLog(modulo, 21, FALSE); + if (!db.Execute(sqlstr, tbl)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "failed to query database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } if (!tbl.Get("idperfilsoft", ifs)) { // Toma dato tbl.GetErrorErrStr(msglog); // Error al acceder al registro - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } /* Actualizar los datos de la imagen */ @@ -2090,11 +1748,11 @@ BOOLEAN actualizaCreacionImagen(Database db, Table tbl, char* idi, char* dsk, " fechacreacion=NOW(), revision=revision+1" " WHERE idimagen=%s", ido, dsk, par, cpt, ifs, idr, idi); - if (!db.Execute(sqlstr, tbl)) { // Error al recuperar los datos - errorLog(modulo, 21, FALSE); + if (!db.Execute(sqlstr, tbl)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "failed to query database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } /* Actualizar los datos en el cliente */ snprintf(sqlstr, LONSQL, @@ -2103,13 +1761,13 @@ BOOLEAN actualizaCreacionImagen(Database db, Table tbl, char* idi, char* dsk, " fechadespliegue=NOW()" " WHERE idordenador=%s AND numdisk=%s AND numpar=%s", idi, idi, ido, dsk, par); - if (!db.Execute(sqlstr, tbl)) { // Error al recuperar los datos - errorLog(modulo, 21, FALSE); + if (!db.Execute(sqlstr, tbl)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "failed to query database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } - return (TRUE); + return true; } // ________________________________________________________________________________________________________ // Función: CrearImagenBasica @@ -2120,21 +1778,17 @@ BOOLEAN actualizaCreacionImagen(Database db, Table tbl, char* idi, char* dsk, // - socket_c: Socket de la consola al envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN CrearImagenBasica(SOCKET *socket_c, TRAMA* ptrTrama) { - char msglog[LONSTD]; - char modulo[] = "CrearImagenBasica()"; - +static bool CrearImagenBasica(TRAMA* ptrTrama, struct og_client *cli) +{ if (!enviaComando(ptrTrama, CLIENTE_OCUPADO)) { - sprintf(msglog, "%s:%s", tbErrores[32], modulo); - errorInfo(modulo, msglog); - respuestaConsola(socket_c, ptrTrama, FALSE); - return (FALSE); + respuestaConsola(og_client_socket(cli), ptrTrama, false); + return false; } - respuestaConsola(socket_c, ptrTrama, TRUE); - return (TRUE); + respuestaConsola(og_client_socket(cli), ptrTrama, true); + return true; } // ________________________________________________________________________________________________________ // Función: RESPUESTA_CrearImagenBasica @@ -2145,11 +1799,13 @@ BOOLEAN CrearImagenBasica(SOCKET *socket_c, TRAMA* ptrTrama) { // - socket_c: Socket del cliente que envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN RESPUESTA_CrearImagenBasica(SOCKET *socket_c, TRAMA* ptrTrama) { - return(RESPUESTA_CrearImagen(socket_c,ptrTrama)); // La misma respuesta que la creación de imagen monolÃtica +static bool RESPUESTA_CrearImagenBasica(TRAMA* ptrTrama, struct og_client *cli) +{ + // La misma respuesta que la creación de imagen monolÃtica + return RESPUESTA_CrearImagen(ptrTrama, cli); } // ________________________________________________________________________________________________________ // Función: CrearSoftIncremental @@ -2161,21 +1817,17 @@ BOOLEAN RESPUESTA_CrearImagenBasica(SOCKET *socket_c, TRAMA* ptrTrama) { // - socket_c: Socket de la consola al envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN CrearSoftIncremental(SOCKET *socket_c, TRAMA* ptrTrama) { - char msglog[LONSTD]; - char modulo[] = "CrearSoftIncremental()"; - +static bool CrearSoftIncremental(TRAMA* ptrTrama, struct og_client *cli) +{ if (!enviaComando(ptrTrama, CLIENTE_OCUPADO)) { - sprintf(msglog, "%s:%s", tbErrores[32], modulo); - errorInfo(modulo, msglog); - respuestaConsola(socket_c, ptrTrama, FALSE); - return (FALSE); + respuestaConsola(og_client_socket(cli), ptrTrama, false); + return false; } - respuestaConsola(socket_c, ptrTrama, TRUE); - return (TRUE); + respuestaConsola(og_client_socket(cli), ptrTrama, true); + return true; } // ________________________________________________________________________________________________________ // Función: RESPUESTA_CrearSoftIncremental @@ -2186,23 +1838,22 @@ BOOLEAN CrearSoftIncremental(SOCKET *socket_c, TRAMA* ptrTrama) { // - socket_c: Socket del cliente que envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN RESPUESTA_CrearSoftIncremental(SOCKET *socket_c, TRAMA* ptrTrama) +static bool RESPUESTA_CrearSoftIncremental(TRAMA* ptrTrama, struct og_client *cli) { Database db; Table tbl; char *iph,*par,*ido,*idf; int ifs; char msglog[LONSTD],sqlstr[LONSQL]; - char modulo[] = "RESPUESTA_CrearSoftIncremental()"; - if (!db.Open(usuario, pasguor, datasource, catalog)) { // Error de conexion - errorLog(modulo, 20, FALSE); + if (!db.Open(usuario, pasguor, datasource, catalog)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "cannot open connection database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } iph = copiaParametro("iph",ptrTrama); // Toma dirección ip @@ -2210,9 +1861,9 @@ BOOLEAN RESPUESTA_CrearSoftIncremental(SOCKET *socket_c, TRAMA* ptrTrama) if (!respuestaEstandar(ptrTrama, iph, ido, db, tbl)) { liberaMemoria(iph); - liberaMemoria(ido); - errorLog(modulo, 30, FALSE); - return (FALSE); // Error al registrar notificacion + liberaMemoria(ido); + syslog(LOG_ERR, "failed to register notification\n"); + return false; } par = copiaParametro("par",ptrTrama); @@ -2223,75 +1874,32 @@ BOOLEAN RESPUESTA_CrearSoftIncremental(SOCKET *socket_c, TRAMA* ptrTrama) liberaMemoria(iph); liberaMemoria(ido); liberaMemoria(par); - - if (!db.Execute(sqlstr, tbl)) { // Error al leer - errorLog(modulo, 21, FALSE); + + if (!db.Execute(sqlstr, tbl)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "failed to query database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } if (!tbl.Get("idperfilsoft", ifs)) { // Toma dato tbl.GetErrorErrStr(msglog); // Error al acceder al registro - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } /* Actualizar los datos de la imagen */ idf = copiaParametro("idf",ptrTrama); sprintf(sqlstr,"UPDATE imagenes SET idperfilsoft=%d WHERE idimagen=%s",ifs,idf); liberaMemoria(idf); - - if (!db.Execute(sqlstr, tbl)) { // Error al recuperar los datos - errorLog(modulo, 21, FALSE); - db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); - } - db.Close(); // Cierra conexión - return (TRUE); -} -// ________________________________________________________________________________________________________ -// Función: actualizaCreacionSoftIncremental -// -// Descripción: -// Esta función actualiza la base de datos con el resultado de la creación de software incremental -// Parámetros: -// - db: Objeto base de datos (ya operativo) -// - tbl: Objeto tabla -// - idi: Identificador de la imagen -// - idf: Identificador del software incremental -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -// ________________________________________________________________________________________________________ -BOOLEAN actualizaCreacionSoftIncremental(Database db, Table tbl, char* idi,char* idf) -{ - char msglog[LONSTD], sqlstr[LONSQL]; - char modulo[] = "actualizaCreacionSoftIncremental()"; - - /* Comprueba si existe ya relación entre la imagen y el software incremental */ - sprintf(sqlstr, "SELECT * FROM imagenes_softincremental" - " WHERE idimagen=%s AND idsoftincremental=%s", idi,idf); - - if (!db.Execute(sqlstr, tbl)) { // Error al leer - errorLog(modulo, 21, FALSE); - db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); - } - if (!tbl.ISEOF()) - return (TRUE); // Ya existe relación - - // Crea relación entre la imagen y el software incremental - sprintf(sqlstr,"INSERT INTO imagenes_softincremental (idimagen,idsoftincremental) VALUES (%s,%s)",idi,idf); - if (!db.Execute(sqlstr, tbl)) { // Error al ejecutar la sentencia - errorLog(modulo, 21, FALSE); + if (!db.Execute(sqlstr, tbl)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "failed to query database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } - return (TRUE); + db.Close(); // Cierra conexión + return true; } // ________________________________________________________________________________________________________ // Función: RestaurarImagen @@ -2302,21 +1910,17 @@ BOOLEAN actualizaCreacionSoftIncremental(Database db, Table tbl, char* idi,char* // - socket_c: Socket de la consola al envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN RestaurarImagen(SOCKET *socket_c, TRAMA* ptrTrama) { - char msglog[LONSTD]; - char modulo[] = "RestaurarImagen()"; - +static bool RestaurarImagen(TRAMA* ptrTrama, struct og_client *cli) +{ if (!enviaComando(ptrTrama, CLIENTE_OCUPADO)) { - sprintf(msglog, "%s:%s", tbErrores[32], modulo); - errorInfo(modulo, msglog); - respuestaConsola(socket_c, ptrTrama, FALSE); - return (FALSE); + respuestaConsola(og_client_socket(cli), ptrTrama, false); + return false; } - respuestaConsola(socket_c, ptrTrama, TRUE); - return (TRUE); + respuestaConsola(og_client_socket(cli), ptrTrama, true); + return true; } // ________________________________________________________________________________________________________ // Función: RestaurarImagenBasica @@ -2327,21 +1931,17 @@ BOOLEAN RestaurarImagen(SOCKET *socket_c, TRAMA* ptrTrama) { // - socket_c: Socket de la consola al envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN RestaurarImagenBasica(SOCKET *socket_c, TRAMA* ptrTrama) { - char msglog[LONSTD]; - char modulo[] = "RestaurarImagenBasica()"; - +static bool RestaurarImagenBasica(TRAMA* ptrTrama, struct og_client *cli) +{ if (!enviaComando(ptrTrama, CLIENTE_OCUPADO)) { - sprintf(msglog, "%s:%s", tbErrores[32], modulo); - errorInfo(modulo, msglog); - respuestaConsola(socket_c, ptrTrama, FALSE); - return (FALSE); + respuestaConsola(og_client_socket(cli), ptrTrama, false); + return false; } - respuestaConsola(socket_c, ptrTrama, TRUE); - return (TRUE); + respuestaConsola(og_client_socket(cli), ptrTrama, true); + return true; } // ________________________________________________________________________________________________________ // Función: RestaurarSoftIncremental @@ -2352,21 +1952,17 @@ BOOLEAN RestaurarImagenBasica(SOCKET *socket_c, TRAMA* ptrTrama) { // - socket_c: Socket de la consola al envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN RestaurarSoftIncremental(SOCKET *socket_c, TRAMA* ptrTrama) { - char msglog[LONSTD]; - char modulo[] = "RestaurarSoftIncremental()"; - +static bool RestaurarSoftIncremental(TRAMA* ptrTrama, struct og_client *cli) +{ if (!enviaComando(ptrTrama, CLIENTE_OCUPADO)) { - sprintf(msglog, "%s:%s", tbErrores[32], modulo); - errorInfo(modulo, msglog); - respuestaConsola(socket_c, ptrTrama, FALSE); - return (FALSE); + respuestaConsola(og_client_socket(cli), ptrTrama, false); + return false; } - respuestaConsola(socket_c, ptrTrama, TRUE); - return (TRUE); + respuestaConsola(og_client_socket(cli), ptrTrama, true); + return true; } // ________________________________________________________________________________________________________ // Función: RESPUESTA_RestaurarImagen @@ -2377,24 +1973,23 @@ BOOLEAN RestaurarSoftIncremental(SOCKET *socket_c, TRAMA* ptrTrama) { // - socket_c: Socket del cliente que envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ // -BOOLEAN RESPUESTA_RestaurarImagen(SOCKET *socket_c, TRAMA* ptrTrama) +static bool RESPUESTA_RestaurarImagen(TRAMA* ptrTrama, struct og_client *cli) { char msglog[LONSTD]; Database db; Table tbl; - BOOLEAN res; + bool res; char *iph, *ido, *idi, *dsk, *par, *ifs, *cfg; - char modulo[] = "RESPUESTA_RestaurarImagen()"; - if (!db.Open(usuario, pasguor, datasource, catalog)) { // Error de conexion - errorLog(modulo, 20, FALSE); + if (!db.Open(usuario, pasguor, datasource, catalog)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "cannot open connection database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } iph = copiaParametro("iph",ptrTrama); // Toma dirección ip @@ -2402,9 +1997,9 @@ BOOLEAN RESPUESTA_RestaurarImagen(SOCKET *socket_c, TRAMA* ptrTrama) if (!respuestaEstandar(ptrTrama, iph, ido, db, tbl)) { liberaMemoria(iph); - liberaMemoria(ido); - errorLog(modulo, 30, FALSE); - return (FALSE); // Error al registrar notificacion + liberaMemoria(ido); + syslog(LOG_ERR, "failed to register notification\n"); + return false; } // Acciones posteriores @@ -2426,13 +2021,13 @@ BOOLEAN RESPUESTA_RestaurarImagen(SOCKET *socket_c, TRAMA* ptrTrama) liberaMemoria(ifs); if(!res){ - errorLog(modulo, 95, FALSE); - db.Close(); // Cierra conexión - return (FALSE); + syslog(LOG_ERR, "Problem after restoring image\n"); + db.Close(); + return false; } db.Close(); // Cierra conexión - return (TRUE); + return true; } // ________________________________________________________________________________________________________ // @@ -2444,12 +2039,13 @@ BOOLEAN RESPUESTA_RestaurarImagen(SOCKET *socket_c, TRAMA* ptrTrama) // - socket_c: Socket del cliente que envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ // -BOOLEAN RESPUESTA_RestaurarImagenBasica(SOCKET *socket_c, TRAMA* ptrTrama) { - return(RESPUESTA_RestaurarImagen(socket_c,ptrTrama)); +static bool RESPUESTA_RestaurarImagenBasica(TRAMA* ptrTrama, struct og_client *cli) +{ + return RESPUESTA_RestaurarImagen(ptrTrama, cli); } // ________________________________________________________________________________________________________ // Función: RESPUESTA_RestaurarSoftIncremental @@ -2460,11 +2056,12 @@ BOOLEAN RESPUESTA_RestaurarImagenBasica(SOCKET *socket_c, TRAMA* ptrTrama) { // - socket_c: Socket del cliente que envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN RESPUESTA_RestaurarSoftIncremental(SOCKET *socket_c, TRAMA* ptrTrama) { - return(RESPUESTA_RestaurarImagen(socket_c,ptrTrama)); +static bool RESPUESTA_RestaurarSoftIncremental(TRAMA* ptrTrama, struct og_client *cli) +{ + return RESPUESTA_RestaurarImagen(ptrTrama, cli); } // ________________________________________________________________________________________________________ // Función: actualizaRestauracionImagen @@ -2480,13 +2077,13 @@ BOOLEAN RESPUESTA_RestaurarSoftIncremental(SOCKET *socket_c, TRAMA* ptrTrama) { // - ido: Identificador del cliente donde se restauró // - ifs: Identificador del perfil software contenido en la imagen // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN actualizaRestauracionImagen(Database db, Table tbl, char* idi, - char* dsk, char* par, char* ido, char* ifs) { +bool actualizaRestauracionImagen(Database db, Table tbl, char *idi, + char *dsk, char *par, char *ido, char *ifs) +{ char msglog[LONSTD], sqlstr[LONSQL]; - char modulo[] = "actualizaRestauracionImagen()"; /* Actualizar los datos de la imagen */ snprintf(sqlstr, LONSQL, @@ -2496,13 +2093,13 @@ BOOLEAN actualizaRestauracionImagen(Database db, Table tbl, char* idi, " idnombreso=IFNULL((SELECT idnombreso FROM perfilessoft WHERE idperfilsoft=%s),0)" " WHERE idordenador=%s AND numdisk=%s AND numpar=%s", idi, ifs, idi, ifs, ido, dsk, par); - if (!db.Execute(sqlstr, tbl)) { // Error al recuperar los datos - errorLog(modulo, 21, FALSE); + if (!db.Execute(sqlstr, tbl)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "failed to query database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } - return (TRUE); + return true; } // ________________________________________________________________________________________________________ // Función: Configurar @@ -2513,21 +2110,17 @@ BOOLEAN actualizaRestauracionImagen(Database db, Table tbl, char* idi, // - socket_c: Socket de la consola al envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN Configurar(SOCKET *socket_c, TRAMA* ptrTrama) { - char msglog[LONSTD]; - char modulo[] = "Configurar()"; - +static bool Configurar(TRAMA* ptrTrama, struct og_client *cli) +{ if (!enviaComando(ptrTrama, CLIENTE_OCUPADO)) { - sprintf(msglog, "%s:%s", tbErrores[32], modulo); - errorInfo(modulo, msglog); - respuestaConsola(socket_c, ptrTrama, FALSE); - return (FALSE); + respuestaConsola(og_client_socket(cli), ptrTrama, false); + return false; } - respuestaConsola(socket_c, ptrTrama, TRUE); - return (TRUE); + respuestaConsola(og_client_socket(cli), ptrTrama, true); + return true; } // ________________________________________________________________________________________________________ // Función: RESPUESTA_Configurar @@ -2538,24 +2131,23 @@ BOOLEAN Configurar(SOCKET *socket_c, TRAMA* ptrTrama) { // - socket_c: Socket del cliente que envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ // -BOOLEAN RESPUESTA_Configurar(SOCKET *socket_c, TRAMA* ptrTrama) +static bool RESPUESTA_Configurar(TRAMA* ptrTrama, struct og_client *ci) { char msglog[LONSTD]; Database db; Table tbl; - BOOLEAN res; + bool res; char *iph, *ido,*cfg; - char modulo[] = "RESPUESTA_Configurar()"; - if (!db.Open(usuario, pasguor, datasource, catalog)) { // Error de conexion - errorLog(modulo, 20, FALSE); + if (!db.Open(usuario, pasguor, datasource, catalog)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "cannot open connection database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } iph = copiaParametro("iph",ptrTrama); // Toma dirección ip @@ -2563,9 +2155,9 @@ BOOLEAN RESPUESTA_Configurar(SOCKET *socket_c, TRAMA* ptrTrama) if (!respuestaEstandar(ptrTrama, iph, ido, db, tbl)) { liberaMemoria(iph); - liberaMemoria(ido); - errorLog(modulo, 30, FALSE); - return (FALSE); // Error al registrar notificacion + liberaMemoria(ido); + syslog(LOG_ERR, "failed to register notification\n"); + return false; } cfg = copiaParametro("cfg",ptrTrama); // Toma configuración de particiones @@ -2574,14 +2166,14 @@ BOOLEAN RESPUESTA_Configurar(SOCKET *socket_c, TRAMA* ptrTrama) liberaMemoria(iph); liberaMemoria(ido); liberaMemoria(cfg); - - if(!res){ - errorLog(modulo, 24, FALSE); - return (FALSE); // Error al registrar notificacion + + if(!res){ + syslog(LOG_ERR, "Problem updating client configuration\n"); + return false; } - + db.Close(); // Cierra conexión - return (TRUE); + return true; } // ________________________________________________________________________________________________________ // Función: EjecutarScript @@ -2592,21 +2184,17 @@ BOOLEAN RESPUESTA_Configurar(SOCKET *socket_c, TRAMA* ptrTrama) // - socket_c: Socket de la consola al envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN EjecutarScript(SOCKET *socket_c, TRAMA* ptrTrama) { - char msglog[LONSTD]; - char modulo[] = "EjecutarScript()"; - +static bool EjecutarScript(TRAMA* ptrTrama, struct og_client *cli) +{ if (!enviaComando(ptrTrama, CLIENTE_OCUPADO)) { - sprintf(msglog, "%s:%s", tbErrores[32], modulo); - errorInfo(modulo, msglog); - respuestaConsola(socket_c, ptrTrama, FALSE); - return (FALSE); + respuestaConsola(og_client_socket(cli), ptrTrama, false); + return false; } - respuestaConsola(socket_c, ptrTrama, TRUE); - return (TRUE); + respuestaConsola(og_client_socket(cli), ptrTrama, true); + return true; } // ________________________________________________________________________________________________________ // Función: RESPUESTA_EjecutarScript @@ -2617,23 +2205,21 @@ BOOLEAN EjecutarScript(SOCKET *socket_c, TRAMA* ptrTrama) { // - socket_c: Socket del cliente que envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN RESPUESTA_EjecutarScript(SOCKET *socket_c, TRAMA* ptrTrama) +static bool RESPUESTA_EjecutarScript(TRAMA* ptrTrama, struct og_client *cli) { char msglog[LONSTD]; Database db; Table tbl; char *iph, *ido,*cfg; - char modulo[] = "RESPUESTA_EjecutarScript()"; - - if (!db.Open(usuario, pasguor, datasource, catalog)) { // Error de conexion - errorLog(modulo, 20, FALSE); + if (!db.Open(usuario, pasguor, datasource, catalog)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "cannot open connection database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } iph = copiaParametro("iph",ptrTrama); // Toma dirección ip @@ -2641,9 +2227,9 @@ BOOLEAN RESPUESTA_EjecutarScript(SOCKET *socket_c, TRAMA* ptrTrama) if (!respuestaEstandar(ptrTrama, iph, ido, db, tbl)) { liberaMemoria(iph); - liberaMemoria(ido); - errorLog(modulo, 30, FALSE); - return (FALSE); // Error al registrar notificacion + liberaMemoria(ido); + syslog(LOG_ERR, "failed to register notification\n"); + return false; } cfg = copiaParametro("cfg",ptrTrama); // Toma configuración de particiones @@ -2657,7 +2243,7 @@ BOOLEAN RESPUESTA_EjecutarScript(SOCKET *socket_c, TRAMA* ptrTrama) db.Close(); // Cierra conexión - return (TRUE); + return true; } // ________________________________________________________________________________________________________ // Función: InventarioHardware @@ -2668,21 +2254,17 @@ BOOLEAN RESPUESTA_EjecutarScript(SOCKET *socket_c, TRAMA* ptrTrama) // - socket_c: Socket de la consola al envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN InventarioHardware(SOCKET *socket_c, TRAMA* ptrTrama) { - char msglog[LONSTD]; - char modulo[] = "InventarioHardware()"; - +static bool InventarioHardware(TRAMA* ptrTrama, struct og_client *cli) +{ if (!enviaComando(ptrTrama, CLIENTE_OCUPADO)) { - sprintf(msglog, "%s:%s", tbErrores[32], modulo); - errorInfo(modulo, msglog); - respuestaConsola(socket_c, ptrTrama, FALSE); - return (FALSE); + respuestaConsola(og_client_socket(cli), ptrTrama, false); + return false; } - respuestaConsola(socket_c, ptrTrama, TRUE); - return (TRUE); + respuestaConsola(og_client_socket(cli), ptrTrama, true); + return true; } // ________________________________________________________________________________________________________ // Función: RESPUESTA_InventarioHardware @@ -2693,22 +2275,22 @@ BOOLEAN InventarioHardware(SOCKET *socket_c, TRAMA* ptrTrama) { // - socket_c: Socket del cliente que envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN RESPUESTA_InventarioHardware(SOCKET *socket_c, TRAMA* ptrTrama) { +static bool RESPUESTA_InventarioHardware(TRAMA* ptrTrama, struct og_client *cli) +{ char msglog[LONSTD]; Database db; Table tbl; - BOOLEAN res; + bool res; char *iph, *ido, *idc, *npc, *hrd, *buffer; - char modulo[] = "RESPUESTA_InventarioHardware()"; - if (!db.Open(usuario, pasguor, datasource, catalog)) { // Error de conexion - errorLog(modulo, 20, FALSE); + if (!db.Open(usuario, pasguor, datasource, catalog)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "cannot open connection database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } iph = copiaParametro("iph",ptrTrama); // Toma dirección ip del cliente @@ -2716,9 +2298,9 @@ BOOLEAN RESPUESTA_InventarioHardware(SOCKET *socket_c, TRAMA* ptrTrama) { if (!respuestaEstandar(ptrTrama, iph, ido, db, tbl)) { liberaMemoria(iph); - liberaMemoria(ido); - errorLog(modulo, 30, FALSE); - return (FALSE); // Error al registrar notificacion + liberaMemoria(ido); + syslog(LOG_ERR, "failed to register notification\n"); + return false; } // Lee archivo de inventario enviado anteriormente hrd = copiaParametro("hrd",ptrTrama); @@ -2737,12 +2319,12 @@ BOOLEAN RESPUESTA_InventarioHardware(SOCKET *socket_c, TRAMA* ptrTrama) { liberaMemoria(buffer); if(!res){ - errorLog(modulo, 53, FALSE); - return (FALSE); + syslog(LOG_ERR, "Problem updating client configuration\n"); + return false; } db.Close(); // Cierra conexión - return (TRUE); + return true; } // ________________________________________________________________________________________________________ // Función: actualizaHardware @@ -2758,7 +2340,8 @@ BOOLEAN RESPUESTA_InventarioHardware(SOCKET *socket_c, TRAMA* ptrTrama) { // - idc: Identificador del centro o Unidad organizativa // ________________________________________________________________________________________________________ // -BOOLEAN actualizaHardware(Database db, Table tbl, char* hrd, char*ido,char* npc, char *idc) +bool actualizaHardware(Database db, Table tbl, char *hrd, char *ido, char *npc, + char *idc) { char msglog[LONSTD], sqlstr[LONSQL]; int idtipohardware, idperfilhard; @@ -2767,25 +2350,24 @@ BOOLEAN actualizaHardware(Database db, Table tbl, char* hrd, char*ido,char* npc, char *whard; int tbidhardware[MAXHARDWARE]; char *tbHardware[MAXHARDWARE],*dualHardware[2], descripcion[250], strInt[LONINT], *idhardwares; - char modulo[] = "actualizaHardware()"; /* Toma Centro (Unidad Organizativa) */ sprintf(sqlstr, "SELECT * FROM ordenadores WHERE idordenador=%s", ido); - if (!db.Execute(sqlstr, tbl)) { // Error al leer - errorLog(modulo, 21, FALSE); + if (!db.Execute(sqlstr, tbl)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "failed to query database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } if (!tbl.Get("idperfilhard", idperfilhard)) { // Toma dato tbl.GetErrorErrStr(msglog); // Error al acceder al registro - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } whard=escaparCadena(hrd); // Codificar comillas simples if(!whard) - return (FALSE); + return false; /* Recorre componentes hardware*/ lon = splitCadena(tbHardware, whard, '\n'); if (lon > MAXHARDWARE) @@ -2793,49 +2375,48 @@ BOOLEAN actualizaHardware(Database db, Table tbl, char* hrd, char*ido,char* npc, /* for (i=0;i<lon;i++){ sprintf(msglog,"Linea de inventario: %s",tbHardware[i]); - RegistraLog(msglog,FALSE); + RegistraLog(msglog,false); } */ for (i = 0; i < lon; i++) { splitCadena(dualHardware, rTrim(tbHardware[i]), '='); //sprintf(msglog,"nemonico: %s",dualHardware[0]); - //RegistraLog(msglog,FALSE); + //RegistraLog(msglog,false); //sprintf(msglog,"valor: %s",dualHardware[1]); - //RegistraLog(msglog,FALSE); + //RegistraLog(msglog,false); sprintf(sqlstr, "SELECT idtipohardware,descripcion FROM tipohardwares " " WHERE nemonico='%s'", dualHardware[0]); - if (!db.Execute(sqlstr, tbl)) { // Error al leer - errorLog(modulo, 21, FALSE); + if (!db.Execute(sqlstr, tbl)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "failed to query database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } if (tbl.ISEOF()) { // Tipo de Hardware NO existente sprintf(msglog, "%s: %s)", tbErrores[54], dualHardware[0]); - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } else { // Tipo de Hardware Existe if (!tbl.Get("idtipohardware", idtipohardware)) { // Toma dato tbl.GetErrorErrStr(msglog); // Error al acceder al registro - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } if (!tbl.Get("descripcion", descripcion)) { // Toma dato tbl.GetErrorErrStr(msglog); // Error al acceder al registro - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } sprintf(sqlstr, "SELECT idhardware FROM hardwares " " WHERE idtipohardware=%d AND descripcion='%s'", idtipohardware, dualHardware[1]); - // Ejecuta consulta - if (!db.Execute(sqlstr, tbl)) { // Error al leer - errorLog(modulo, 21, FALSE); + if (!db.Execute(sqlstr, tbl)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "failed to query database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } if (tbl.ISEOF()) { // Hardware NO existente @@ -2844,29 +2425,29 @@ BOOLEAN actualizaHardware(Database db, Table tbl, char* hrd, char*ido,char* npc, dualHardware[1], idc); if (!db.Execute(sqlstr, tbl)) { // Error al insertar db.GetErrorErrStr(msglog); // Error al acceder al registro - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } // Recupera el identificador del hardware sprintf(sqlstr, "SELECT LAST_INSERT_ID() as identificador"); - if (!db.Execute(sqlstr, tbl)) { // Error al leer - errorLog(modulo, 21, FALSE); + if (!db.Execute(sqlstr, tbl)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "failed to query database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } if (!tbl.ISEOF()) { // Si existe registro if (!tbl.Get("identificador", tbidhardware[i])) { tbl.GetErrorErrStr(msglog); // Error al acceder al registro - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } } } else { if (!tbl.Get("idhardware", tbidhardware[i])) { // Toma dato tbl.GetErrorErrStr(msglog); // Error al acceder al registro - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } } } @@ -2887,8 +2468,8 @@ BOOLEAN actualizaHardware(Database db, Table tbl, char* hrd, char*ido,char* npc, aux = strlen(strInt); // Calcula longitud de cadena para reservar espacio a todos los perfiles idhardwares = reservaMemoria(sizeof(aux) * lon + lon); if (idhardwares == NULL) { - errorLog(modulo, 3, FALSE); - return (FALSE); + syslog(LOG_ERR, "%s:%d OOM\n", __FILE__, __LINE__); + return false; } aux = sprintf(idhardwares, "%d", tbidhardware[0]); for (i = 1; i < lon; i++) @@ -2896,12 +2477,11 @@ BOOLEAN actualizaHardware(Database db, Table tbl, char* hrd, char*ido,char* npc, if (!cuestionPerfilHardware(db, tbl, idc, ido, idperfilhard, idhardwares, npc, tbidhardware, lon)) { - errorLog(modulo, 55, FALSE); - errorInfo(modulo, msglog); - retval=FALSE; + syslog(LOG_ERR, "Problem updating client hardware\n"); + retval=false; } else { - retval=TRUE; + retval=true; } liberaMemoria(whard); liberaMemoria(idhardwares); @@ -2921,19 +2501,18 @@ BOOLEAN actualizaHardware(Database db, Table tbl, char* hrd, char*ido,char* npc, // - con: Número de componentes detectados para configurar un el perfil hardware // - npc: Nombre del cliente // ________________________________________________________________________________________________________ -BOOLEAN cuestionPerfilHardware(Database db, Table tbl, char* idc, char* ido, - int idperfilhardware, char*idhardwares, char *npc, int *tbidhardware, +bool cuestionPerfilHardware(Database db, Table tbl, char *idc, char *ido, + int idperfilhardware, char *idhardwares, char *npc, int *tbidhardware, int lon) { char msglog[LONSTD], *sqlstr; int i; int nwidperfilhard; - char modulo[] = "cuestionPerfilHardware()"; sqlstr = reservaMemoria(strlen(idhardwares)+LONSQL); // Reserva para escribir sentencia SQL if (sqlstr == NULL) { - errorLog(modulo, 3, FALSE); - return (FALSE); + syslog(LOG_ERR, "%s:%d OOM\n", __FILE__, __LINE__); + return false; } // Busca perfil hard del ordenador que contenga todos los componentes hardware encontrados sprintf(sqlstr, "SELECT idperfilhard FROM" @@ -2943,37 +2522,37 @@ BOOLEAN cuestionPerfilHardware(Database db, Table tbl, char* idc, char* ido, " FROM perfileshard_hardwares" " GROUP BY perfileshard_hardwares.idperfilhard) AS temp" " WHERE idhardwares LIKE '%s'", idhardwares); - // Ejecuta consulta - if (!db.Execute(sqlstr, tbl)) { // Error al leer - errorLog(modulo, 21, FALSE); + + if (!db.Execute(sqlstr, tbl)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); + syslog(LOG_ERR, "failed to query database (%s:%d) %s\n", + __func__, __LINE__, msglog); liberaMemoria(sqlstr); - return (false); + return false; } if (tbl.ISEOF()) { // No existe un perfil hardware con esos componentes de componentes hardware, lo crea sprintf(sqlstr, "INSERT perfileshard (descripcion,idcentro,grupoid)" " VALUES('Perfil hardware (%s) ',%s,0)", npc, idc); if (!db.Execute(sqlstr, tbl)) { // Error al insertar db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); + og_info(msglog); liberaMemoria(sqlstr); - return (false); + return false; } // Recupera el identificador del nuevo perfil hardware sprintf(sqlstr, "SELECT LAST_INSERT_ID() as identificador"); if (!db.Execute(sqlstr, tbl)) { // Error al leer db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); + og_info(msglog); liberaMemoria(sqlstr); - return (false); + return false; } if (!tbl.ISEOF()) { // Si existe registro if (!tbl.Get("identificador", nwidperfilhard)) { tbl.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); + og_info(msglog); liberaMemoria(sqlstr); - return (false); + return false; } } // Crea la relación entre perfiles y componenetes hardware @@ -2982,17 +2561,17 @@ BOOLEAN cuestionPerfilHardware(Database db, Table tbl, char* idc, char* ido, " VALUES(%d,%d)", nwidperfilhard, tbidhardware[i]); if (!db.Execute(sqlstr, tbl)) { // Error al insertar db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); + og_info(msglog); liberaMemoria(sqlstr); - return (false); + return false; } } } else { // Existe un perfil con todos esos componentes if (!tbl.Get("idperfilhard", nwidperfilhard)) { tbl.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); + og_info(msglog); liberaMemoria(sqlstr); - return (false); + return false; } } if (idperfilhardware != nwidperfilhard) { // No coinciden los perfiles @@ -3001,9 +2580,9 @@ BOOLEAN cuestionPerfilHardware(Database db, Table tbl, char* idc, char* ido, " WHERE idordenador=%s", nwidperfilhard, ido); if (!db.Execute(sqlstr, tbl)) { // Error al insertar db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); + og_info(msglog); liberaMemoria(sqlstr); - return (false); + return false; } } /* Eliminar Relación de hardwares con Perfiles hardware que quedan húerfanos */ @@ -3012,9 +2591,9 @@ BOOLEAN cuestionPerfilHardware(Database db, Table tbl, char* idc, char* ido, " (SELECT DISTINCT idperfilhard from ordenadores))"); if (!db.Execute(sqlstr, tbl)) { // Error al insertar db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); + og_info(msglog); liberaMemoria(sqlstr); - return (false); + return false; } /* Eliminar Perfiles hardware que quedan húerfanos */ @@ -3022,21 +2601,21 @@ BOOLEAN cuestionPerfilHardware(Database db, Table tbl, char* idc, char* ido, " (SELECT DISTINCT idperfilhard FROM ordenadores)"); if (!db.Execute(sqlstr, tbl)) { // Error al insertar db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); + og_info(msglog); liberaMemoria(sqlstr); - return (false); + return false; } /* Eliminar Relación de hardwares con Perfiles hardware que quedan húerfanos */ sprintf(sqlstr, "DELETE FROM perfileshard_hardwares WHERE idperfilhard NOT IN" " (SELECT idperfilhard FROM perfileshard)"); if (!db.Execute(sqlstr, tbl)) { // Error al insertar db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); + og_info(msglog); liberaMemoria(sqlstr); - return (false); + return false; } liberaMemoria(sqlstr); - return (TRUE); + return true; } // ________________________________________________________________________________________________________ // Función: InventarioSoftware @@ -3047,21 +2626,17 @@ BOOLEAN cuestionPerfilHardware(Database db, Table tbl, char* idc, char* ido, // - socket_c: Socket de la consola al envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN InventarioSoftware(SOCKET *socket_c, TRAMA* ptrTrama) { - char msglog[LONSTD]; - char modulo[] = "InventarioSoftware()"; - +static bool InventarioSoftware(TRAMA* ptrTrama, struct og_client *cli) +{ if (!enviaComando(ptrTrama, CLIENTE_OCUPADO)) { - sprintf(msglog, "%s:%s", tbErrores[32], modulo); - errorInfo(modulo, msglog); - respuestaConsola(socket_c, ptrTrama, FALSE); - return (FALSE); + respuestaConsola(og_client_socket(cli), ptrTrama, false); + return false; } - respuestaConsola(socket_c, ptrTrama, TRUE); - return (TRUE); + respuestaConsola(og_client_socket(cli), ptrTrama, true); + return true; } // ________________________________________________________________________________________________________ // Función: RESPUESTA_InventarioSoftware @@ -3072,22 +2647,22 @@ BOOLEAN InventarioSoftware(SOCKET *socket_c, TRAMA* ptrTrama) { // - socket_c: Socket del cliente que envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN RESPUESTA_InventarioSoftware(SOCKET *socket_c, TRAMA* ptrTrama) { +static bool RESPUESTA_InventarioSoftware(TRAMA* ptrTrama, struct og_client *cli) +{ char msglog[LONSTD]; Database db; Table tbl; - BOOLEAN res; + bool res; char *iph, *ido, *npc, *idc, *par, *sft, *buffer; - char modulo[] = "RESPUESTA_InventarioSoftware()"; - if (!db.Open(usuario, pasguor, datasource, catalog)) { // Error de conexion - errorLog(modulo, 20, FALSE); + if (!db.Open(usuario, pasguor, datasource, catalog)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "cannot open connection database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } iph = copiaParametro("iph",ptrTrama); // Toma dirección ip @@ -3095,11 +2670,11 @@ BOOLEAN RESPUESTA_InventarioSoftware(SOCKET *socket_c, TRAMA* ptrTrama) { if (!respuestaEstandar(ptrTrama, iph, ido, db, tbl)) { liberaMemoria(iph); - liberaMemoria(ido); - errorLog(modulo, 30, FALSE); - return (FALSE); // Error al registrar notificacion + liberaMemoria(ido); + syslog(LOG_ERR, "failed to register notification\n"); + return false; } - + npc = copiaParametro("npc",ptrTrama); idc = copiaParametro("idc",ptrTrama); // Toma identificador del Centro par = copiaParametro("par",ptrTrama); @@ -3117,12 +2692,12 @@ BOOLEAN RESPUESTA_InventarioSoftware(SOCKET *socket_c, TRAMA* ptrTrama) { liberaMemoria(sft); if(!res){ - errorLog(modulo, 82, FALSE); - return (FALSE); - } - + syslog(LOG_ERR, "cannot update software\n"); + return false; + } + db.Close(); // Cierra conexión - return (TRUE); + return true; } // ________________________________________________________________________________________________________ // Función: actualizaSoftware @@ -3138,43 +2713,43 @@ BOOLEAN RESPUESTA_InventarioSoftware(SOCKET *socket_c, TRAMA* ptrTrama) { // - npc: Nombre del ordenador // - idc: Identificador del centro o Unidad organizativa // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // // Versión 1.1.0: Se incluye el sistema operativo. Autora: Irina Gómez - ETSII Universidad Sevilla // ________________________________________________________________________________________________________ -BOOLEAN actualizaSoftware(Database db, Table tbl, char* sft, char* par,char* ido, char* npc, char* idc) +bool actualizaSoftware(Database db, Table tbl, char *sft, char *par,char *ido, + char *npc, char *idc) { int i, j, lon, aux, idperfilsoft, idnombreso; bool retval; char *wsft; int tbidsoftware[MAXSOFTWARE]; char *tbSoftware[MAXSOFTWARE],msglog[LONSTD], sqlstr[LONSQL], strInt[LONINT], *idsoftwares; - char modulo[] = "actualizaSoftware()"; /* Toma Centro (Unidad Organizativa) y perfil software */ sprintf(sqlstr, "SELECT idperfilsoft,numpar" " FROM ordenadores_particiones" " WHERE idordenador=%s", ido); - if (!db.Execute(sqlstr, tbl)) { // Error al leer - errorLog(modulo, 21, FALSE); + if (!db.Execute(sqlstr, tbl)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "failed to query database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } idperfilsoft = 0; // Por defecto se supone que el ordenador no tiene aún detectado el perfil software while (!tbl.ISEOF()) { // Recorre particiones if (!tbl.Get("numpar", aux)) { tbl.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } if (aux == atoi(par)) { // Se encuentra la partición if (!tbl.Get("idperfilsoft", idperfilsoft)) { tbl.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } break; } @@ -3182,13 +2757,13 @@ BOOLEAN actualizaSoftware(Database db, Table tbl, char* sft, char* par,char* ido } wsft=escaparCadena(sft); // Codificar comillas simples if(!wsft) - return (FALSE); + return false; /* Recorre componentes software*/ lon = splitCadena(tbSoftware, wsft, '\n'); if (lon == 0) - return (true); // No hay lineas que procesar + return true; // No hay lineas que procesar if (lon > MAXSOFTWARE) lon = MAXSOFTWARE; // Limita el número de componentes software @@ -3203,12 +2778,11 @@ BOOLEAN actualizaSoftware(Database db, Table tbl, char* sft, char* par,char* ido "SELECT idsoftware FROM softwares WHERE descripcion ='%s'", rTrim(tbSoftware[i])); - // Ejecuta consulta - if (!db.Execute(sqlstr, tbl)) { // Error al leer - errorLog(modulo, 21, FALSE); + if (!db.Execute(sqlstr, tbl)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "failed to query database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } if (tbl.ISEOF()) { // Software NO existente @@ -3217,28 +2791,28 @@ BOOLEAN actualizaSoftware(Database db, Table tbl, char* sft, char* par,char* ido if (!db.Execute(sqlstr, tbl)) { // Error al insertar db.GetErrorErrStr(msglog); // Error al acceder al registro - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } // Recupera el identificador del software sprintf(sqlstr, "SELECT LAST_INSERT_ID() as identificador"); if (!db.Execute(sqlstr, tbl)) { // Error al leer db.GetErrorErrStr(msglog); // Error al acceder al registro - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } if (!tbl.ISEOF()) { // Si existe registro if (!tbl.Get("identificador", tbidsoftware[i])) { tbl.GetErrorErrStr(msglog); // Error al acceder al registro - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } } } else { if (!tbl.Get("idsoftware", tbidsoftware[i])) { // Toma dato tbl.GetErrorErrStr(msglog); // Error al acceder al registro - errorInfo(modulo, msglog); - return (FALSE); + og_info(msglog); + return false; } } } @@ -3259,8 +2833,8 @@ BOOLEAN actualizaSoftware(Database db, Table tbl, char* sft, char* par,char* ido aux = strlen(strInt); // Calcula longitud de cadena para reservar espacio a todos los perfiles idsoftwares = reservaMemoria((sizeof(aux)+1) * lon + lon); if (idsoftwares == NULL) { - errorLog(modulo, 3, FALSE); - return (FALSE); + syslog(LOG_ERR, "%s:%d OOM\n", __FILE__, __LINE__); + return false; } aux = sprintf(idsoftwares, "%d", tbidsoftware[0]); for (i = 1; i < lon; i++) @@ -3269,12 +2843,12 @@ BOOLEAN actualizaSoftware(Database db, Table tbl, char* sft, char* par,char* ido // Comprueba existencia de perfil software y actualización de éste para el ordenador if (!cuestionPerfilSoftware(db, tbl, idc, ido, idperfilsoft, idnombreso, idsoftwares, npc, par, tbidsoftware, lon)) { - errorLog(modulo, 83, FALSE); - errorInfo(modulo, msglog); - retval=FALSE; + syslog(LOG_ERR, "cannot update software\n"); + og_info(msglog); + retval=false; } else { - retval=TRUE; + retval=true; } liberaMemoria(wsft); liberaMemoria(idsoftwares); @@ -3295,22 +2869,23 @@ BOOLEAN actualizaSoftware(Database db, Table tbl, char* sft, char* par,char* ido // - tbidsoftware: Array con los identificadores de componentes software // - lon: Número de componentes // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // // Versión 1.1.0: Se incluye el sistema operativo. Autora: Irina Gómez - ETSII Universidad Sevilla //_________________________________________________________________________________________________________ -BOOLEAN cuestionPerfilSoftware(Database db, Table tbl, char* idc, char* ido, - int idperfilsoftware, int idnombreso, char *idsoftwares, char *npc, char *par, - int *tbidsoftware, int lon) { +bool cuestionPerfilSoftware(Database db, Table tbl, char *idc, char *ido, + int idperfilsoftware, int idnombreso, + char *idsoftwares, char *npc, char *par, + int *tbidsoftware, int lon) +{ char *sqlstr, msglog[LONSTD]; int i, nwidperfilsoft; - char modulo[] = "cuestionPerfilSoftware()"; sqlstr = reservaMemoria(strlen(idsoftwares)+LONSQL); // Reserva para escribir sentencia SQL if (sqlstr == NULL) { - errorLog(modulo, 3, FALSE); - return (FALSE); + syslog(LOG_ERR, "%s:%d OOM\n", __FILE__, __LINE__); + return false; } // Busca perfil soft del ordenador que contenga todos los componentes software encontrados sprintf(sqlstr, "SELECT idperfilsoft FROM" @@ -3320,36 +2895,36 @@ BOOLEAN cuestionPerfilSoftware(Database db, Table tbl, char* idc, char* ido, " FROM perfilessoft_softwares" " GROUP BY perfilessoft_softwares.idperfilsoft) AS temp" " WHERE idsoftwares LIKE '%s'", idsoftwares); - // Ejecuta consulta - if (!db.Execute(sqlstr, tbl)) { // Error al leer - errorLog(modulo, 21, FALSE); + + if (!db.Execute(sqlstr, tbl)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); + syslog(LOG_ERR, "failed to query database (%s:%d) %s\n", + __func__, __LINE__, msglog); liberaMemoria(sqlstr); - return (false); + return false; } if (tbl.ISEOF()) { // No existe un perfil software con esos componentes de componentes software, lo crea sprintf(sqlstr, "INSERT perfilessoft (descripcion, idcentro, grupoid, idnombreso)" " VALUES('Perfil Software (%s, Part:%s) ',%s,0,%i)", npc, par, idc,idnombreso); if (!db.Execute(sqlstr, tbl)) { // Error al insertar db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (false); + og_info(msglog); + return false; } // Recupera el identificador del nuevo perfil software sprintf(sqlstr, "SELECT LAST_INSERT_ID() as identificador"); if (!db.Execute(sqlstr, tbl)) { // Error al leer tbl.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); + og_info(msglog); liberaMemoria(sqlstr); - return (false); + return false; } if (!tbl.ISEOF()) { // Si existe registro if (!tbl.Get("identificador", nwidperfilsoft)) { tbl.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); + og_info(msglog); liberaMemoria(sqlstr); - return (false); + return false; } } // Crea la relación entre perfiles y componenetes software @@ -3358,17 +2933,17 @@ BOOLEAN cuestionPerfilSoftware(Database db, Table tbl, char* idc, char* ido, " VALUES(%d,%d)", nwidperfilsoft, tbidsoftware[i]); if (!db.Execute(sqlstr, tbl)) { // Error al insertar db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); + og_info(msglog); liberaMemoria(sqlstr); - return (false); + return false; } } } else { // Existe un perfil con todos esos componentes if (!tbl.Get("idperfilsoft", nwidperfilsoft)) { tbl.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); + og_info(msglog); liberaMemoria(sqlstr); - return (false); + return false; } } @@ -3378,9 +2953,9 @@ BOOLEAN cuestionPerfilSoftware(Database db, Table tbl, char* idc, char* ido, " WHERE idordenador=%s AND numpar=%s", nwidperfilsoft, ido, par); if (!db.Execute(sqlstr, tbl)) { // Error al insertar db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); + og_info(msglog); liberaMemoria(sqlstr); - return (false); + return false; } } @@ -3393,9 +2968,9 @@ BOOLEAN cuestionPerfilSoftware(Database db, Table tbl, char* idc, char* ido, " (SELECT DISTINCT idperfilsoft from imagenes))"); if (!db.Execute(sqlstr, tbl)) { // Error al insertar db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); + og_info(msglog); liberaMemoria(sqlstr); - return (false); + return false; } /* Eliminar Perfiles software que quedan húerfanos */ sprintf(sqlstr, "DELETE FROM perfilessoft WHERE idperfilsoft NOT IN" @@ -3404,21 +2979,21 @@ BOOLEAN cuestionPerfilSoftware(Database db, Table tbl, char* idc, char* ido, " (SELECT DISTINCT idperfilsoft from imagenes)"); if (!db.Execute(sqlstr, tbl)) { // Error al insertar db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); + og_info(msglog); liberaMemoria(sqlstr); - return (false); + return false; } /* Eliminar Relación de softwares con Perfiles software que quedan húerfanos */ sprintf(sqlstr, "DELETE FROM perfilessoft_softwares WHERE idperfilsoft NOT IN" " (SELECT idperfilsoft from perfilessoft)"); if (!db.Execute(sqlstr, tbl)) { // Error al insertar db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); + og_info(msglog); liberaMemoria(sqlstr); - return (false); + return false; } liberaMemoria(sqlstr); - return (TRUE); + return true; } // ________________________________________________________________________________________________________ // Función: enviaArchivo @@ -3429,22 +3004,23 @@ BOOLEAN cuestionPerfilSoftware(Database db, Table tbl, char* idc, char* ido, // - socket_c: Socket del cliente que envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN enviaArchivo(SOCKET *socket_c, TRAMA *ptrTrama) { +static bool enviaArchivo(TRAMA *ptrTrama, struct og_client *cli) +{ + int socket_c = og_client_socket(cli); char *nfl; - char modulo[] = "enviaArchivo()"; // Toma parámetros nfl = copiaParametro("nfl",ptrTrama); // Toma nombre completo del archivo - if (!sendArchivo(socket_c, nfl)) { + if (!sendArchivo(&socket_c, nfl)) { liberaMemoria(nfl); - errorLog(modulo, 57, FALSE); - return (FALSE); + syslog(LOG_ERR, "Problem sending file\n"); + return false; } liberaMemoria(nfl); - return (TRUE); + return true; } // ________________________________________________________________________________________________________ // Función: enviaArchivo @@ -3455,24 +3031,25 @@ BOOLEAN enviaArchivo(SOCKET *socket_c, TRAMA *ptrTrama) { // - socket_c: Socket del cliente que envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN recibeArchivo(SOCKET *socket_c, TRAMA *ptrTrama) { +static bool recibeArchivo(TRAMA *ptrTrama, struct og_client *cli) +{ + int socket_c = og_client_socket(cli); char *nfl; - char modulo[] = "recibeArchivo()"; // Toma parámetros nfl = copiaParametro("nfl",ptrTrama); // Toma nombre completo del archivo ptrTrama->tipo = MSG_NOTIFICACION; - enviaFlag(socket_c, ptrTrama); - if (!recArchivo(socket_c, nfl)) { + enviaFlag(&socket_c, ptrTrama); + if (!recArchivo(&socket_c, nfl)) { liberaMemoria(nfl); - errorLog(modulo, 58, FALSE); - return (FALSE); + syslog(LOG_ERR, "Problem receiving file\n"); + return false; } liberaMemoria(nfl); - return (TRUE); + return true; } // ________________________________________________________________________________________________________ // Función: envioProgramacion @@ -3484,23 +3061,23 @@ BOOLEAN recibeArchivo(SOCKET *socket_c, TRAMA *ptrTrama) { // - socket_c: Socket del cliente que envió el mensaje // - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros // Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error // ________________________________________________________________________________________________________ -BOOLEAN envioProgramacion(SOCKET *socket_c, TRAMA *ptrTrama) +static bool envioProgramacion(TRAMA *ptrTrama, struct og_client *cli) { + char *ptrIP[MAXIMOS_CLIENTES],*ptrMacs[MAXIMOS_CLIENTES]; char sqlstr[LONSQL], msglog[LONSTD]; char *idp,iph[LONIP],mac[LONMAC]; Database db; Table tbl; - int idx,idcomando; - char modulo[] = "envioProgramacion()"; + int idx,idcomando,lon; - if (!db.Open(usuario, pasguor, datasource, catalog)) { // Error de conexion - errorLog(modulo, 20, FALSE); + if (!db.Open(usuario, pasguor, datasource, catalog)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "cannot open connection database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } idp = copiaParametro("idp",ptrTrama); // Toma identificador de la programación de la tabla acciones @@ -3510,16 +3087,16 @@ BOOLEAN envioProgramacion(SOCKET *socket_c, TRAMA *ptrTrama) " WHERE acciones.idprogramacion=%s",idp); liberaMemoria(idp); - - if (!db.Execute(sqlstr, tbl)) { // Error al leer - errorLog(modulo, 21, FALSE); + + if (!db.Execute(sqlstr, tbl)) { db.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "failed to query database (%s:%d) %s\n", + __func__, __LINE__, msglog); + return false; } db.Close(); if(tbl.ISEOF()) - return (TRUE); // No existen registros + return true; // No existen registros /* Prepara la trama de actualizacion */ @@ -3530,235 +3107,1319 @@ BOOLEAN envioProgramacion(SOCKET *socket_c, TRAMA *ptrTrama) while (!tbl.ISEOF()) { // Recorre particiones if (!tbl.Get("ip", iph)) { tbl.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "cannot find ip column in table: %s\n", + msglog); + return false; } if (!tbl.Get("idcomando", idcomando)) { tbl.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "cannot find idcomando column in table: %s\n", + msglog); + return false; } if(idcomando==1){ // Arrancar if (!tbl.Get("mac", mac)) { tbl.GetErrorErrStr(msglog); - errorInfo(modulo, msglog); - return (FALSE); + syslog(LOG_ERR, "cannot find mac column in table: %s\n", + msglog); + return false; } + lon = splitCadena(ptrIP, iph, ';'); + lon = splitCadena(ptrMacs, mac, ';'); + // Se manda por broadcast y por unicast - if (!Levanta(iph, mac, (char*)"1")) { - sprintf(msglog, "%s:%s", tbErrores[32], modulo); - errorInfo(modulo, msglog); - return (FALSE); - } + if (!Levanta(ptrIP, ptrMacs, lon, (char*)"1")) + return false; - if (!Levanta(iph, mac, (char*)"2")) { - sprintf(msglog, "%s:%s", tbErrores[32], modulo); - errorInfo(modulo, msglog); - return (FALSE); - } + if (!Levanta(ptrIP, ptrMacs, lon, (char*)"2")) + return false; } if (clienteDisponible(iph, &idx)) { // Si el cliente puede recibir comandos + int sock = tbsockets[idx].cli ? tbsockets[idx].cli->io.fd : -1; + strcpy(tbsockets[idx].estado, CLIENTE_OCUPADO); // Actualiza el estado del cliente - if (!mandaTrama(&tbsockets[idx].sock, ptrTrama)) { - errorLog(modulo, 26, FALSE); - return (FALSE); + if (sock >= 0 && !mandaTrama(&sock, ptrTrama)) { + syslog(LOG_ERR, "failed to send response: %s\n", + strerror(errno)); } //close(tbsockets[idx].sock); // Cierra el socket del cliente hasta nueva disponibilidad } tbl.MoveNext(); } - return (TRUE); // No existen registros + return true; // No existen registros +} + +// This object stores function handler for messages +static struct { + const char *nf; // Nombre de la función + bool (*fcn)(TRAMA *, struct og_client *cli); +} tbfuncionesServer[] = { + { "InclusionCliente", InclusionCliente, }, + { "InclusionClienteWinLnx", InclusionClienteWinLnx, }, + { "AutoexecCliente", AutoexecCliente, }, + { "ComandosPendientes", ComandosPendientes, }, + { "DisponibilidadComandos", DisponibilidadComandos, }, + { "RESPUESTA_Arrancar", RESPUESTA_Arrancar, }, + { "Apagar", Apagar, }, + { "RESPUESTA_Apagar", RESPUESTA_Apagar, }, + { "RESPUESTA_Reiniciar", RESPUESTA_Reiniciar, }, + { "RESPUESTA_IniciarSesion", RESPUESTA_IniciarSesion, }, + { "CrearImagen", CrearImagen, }, + { "RESPUESTA_CrearImagen", RESPUESTA_CrearImagen, }, + { "CrearImagenBasica", CrearImagenBasica, }, + { "RESPUESTA_CrearImagenBasica", RESPUESTA_CrearImagenBasica, }, + { "CrearSoftIncremental", CrearSoftIncremental, }, + { "RESPUESTA_CrearSoftIncremental", RESPUESTA_CrearSoftIncremental, }, + { "RestaurarImagen", RestaurarImagen, }, + { "RESPUESTA_RestaurarImagen", RESPUESTA_RestaurarImagen }, + { "RestaurarImagenBasica", RestaurarImagenBasica, }, + { "RESPUESTA_RestaurarImagenBasica", RESPUESTA_RestaurarImagenBasica, }, + { "RestaurarSoftIncremental", RestaurarSoftIncremental, }, + { "RESPUESTA_RestaurarSoftIncremental", RESPUESTA_RestaurarSoftIncremental, }, + { "Configurar", Configurar, }, + { "RESPUESTA_Configurar", RESPUESTA_Configurar, }, + { "EjecutarScript", EjecutarScript, }, + { "RESPUESTA_EjecutarScript", RESPUESTA_EjecutarScript, }, + { "InventarioHardware", InventarioHardware, }, + { "RESPUESTA_InventarioHardware", RESPUESTA_InventarioHardware, }, + { "InventarioSoftware", InventarioSoftware }, + { "RESPUESTA_InventarioSoftware", RESPUESTA_InventarioSoftware, }, + { "enviaArchivo", enviaArchivo, }, + { "recibeArchivo", recibeArchivo, }, + { "envioProgramacion", envioProgramacion, }, + { NULL, NULL, }, +}; + +// ________________________________________________________________________________________________________ +// Función: gestionaTrama +// +// Descripción: +// Procesa las tramas recibidas . +// Parametros: +// - s : Socket usado para comunicaciones +// Devuelve: +// true: Si el proceso es correcto +// false: En caso de ocurrir algún error +// ________________________________________________________________________________________________________ +static void gestionaTrama(TRAMA *ptrTrama, struct og_client *cli) +{ + int i, res; + char *nfn; + + if (ptrTrama){ + INTROaFINCAD(ptrTrama); + nfn = copiaParametro("nfn",ptrTrama); // Toma nombre de la función + + for (i = 0; tbfuncionesServer[i].fcn; i++) { + if (!strncmp(tbfuncionesServer[i].nf, nfn, + strlen(tbfuncionesServer[i].nf))) { + res = tbfuncionesServer[i].fcn(ptrTrama, cli); + if (!res) { + syslog(LOG_ERR, "Failed handling of %s for client %s:%hu\n", + tbfuncionesServer[i].nf, + inet_ntoa(cli->addr.sin_addr), + ntohs(cli->addr.sin_port)); + } else { + syslog(LOG_DEBUG, "Successful handling of %s for client %s:%hu\n", + tbfuncionesServer[i].nf, + inet_ntoa(cli->addr.sin_addr), + ntohs(cli->addr.sin_port)); + } + break; + } + } + if (!tbfuncionesServer[i].fcn) + syslog(LOG_ERR, "unknown request %s from client %s:%hu\n", + nfn, inet_ntoa(cli->addr.sin_addr), + ntohs(cli->addr.sin_port)); + + liberaMemoria(nfn); + } +} + +static void og_client_release(struct ev_loop *loop, struct og_client *cli) +{ + if (cli->keepalive_idx >= 0) { + syslog(LOG_DEBUG, "closing keepalive connection for %s:%hu in slot %d\n", + inet_ntoa(cli->addr.sin_addr), + ntohs(cli->addr.sin_port), cli->keepalive_idx); + tbsockets[cli->keepalive_idx].cli = NULL; + } + + ev_io_stop(loop, &cli->io); + close(cli->io.fd); + free(cli); +} + +static void og_client_keepalive(struct ev_loop *loop, struct og_client *cli) +{ + struct og_client *old_cli; + + old_cli = tbsockets[cli->keepalive_idx].cli; + if (old_cli && old_cli != cli) { + syslog(LOG_DEBUG, "closing old keepalive connection for %s:%hu\n", + inet_ntoa(old_cli->addr.sin_addr), + ntohs(old_cli->addr.sin_port)); + + og_client_release(loop, old_cli); + } + tbsockets[cli->keepalive_idx].cli = cli; +} + +static void og_client_reset_state(struct og_client *cli) +{ + cli->state = OG_CLIENT_RECEIVING_HEADER; + cli->buf_len = 0; +} + +static int og_client_state_recv_hdr(struct og_client *cli) +{ + char hdrlen[LONHEXPRM]; + + /* Still too short to validate protocol fingerprint and message + * length. + */ + if (cli->buf_len < 15 + LONHEXPRM) + return 0; + + if (strncmp(cli->buf, "@JMMLCAMDJ_MCDJ", 15)) { + syslog(LOG_ERR, "bad fingerprint from client %s:%hu, closing\n", + inet_ntoa(cli->addr.sin_addr), + ntohs(cli->addr.sin_port)); + return -1; + } + + memcpy(hdrlen, &cli->buf[LONGITUD_CABECERATRAMA], LONHEXPRM); + cli->msg_len = strtol(hdrlen, NULL, 16); + + /* Header announces more that we can fit into buffer. */ + if (cli->msg_len >= sizeof(cli->buf)) { + syslog(LOG_ERR, "too large message %u bytes from %s:%hu\n", + cli->msg_len, inet_ntoa(cli->addr.sin_addr), + ntohs(cli->addr.sin_port)); + return -1; + } + + return 1; +} + +static TRAMA *og_msg_alloc(char *data, unsigned int len) +{ + TRAMA *ptrTrama; + + ptrTrama = (TRAMA *)reservaMemoria(sizeof(TRAMA)); + if (!ptrTrama) { + syslog(LOG_ERR, "OOM\n"); + return NULL; + } + + initParametros(ptrTrama, len); + memcpy(ptrTrama, "@JMMLCAMDJ_MCDJ", LONGITUD_CABECERATRAMA); + memcpy(ptrTrama->parametros, data, len); + ptrTrama->lonprm = len; + + return ptrTrama; +} + +static void og_msg_free(TRAMA *ptrTrama) +{ + liberaMemoria(ptrTrama->parametros); + liberaMemoria(ptrTrama); +} + +static int og_client_state_process_payload(struct og_client *cli) +{ + TRAMA *ptrTrama; + char *data; + int len; + + len = cli->msg_len - (LONGITUD_CABECERATRAMA + LONHEXPRM); + data = &cli->buf[LONGITUD_CABECERATRAMA + LONHEXPRM]; + + ptrTrama = og_msg_alloc(data, len); + if (!ptrTrama) + return -1; + + gestionaTrama(ptrTrama, cli); + + og_msg_free(ptrTrama); + + return 1; +} + +#define OG_CLIENTS_MAX 4096 + +struct og_msg_params { + const char *ips_array[OG_CLIENTS_MAX]; + const char *mac_array[OG_CLIENTS_MAX]; + unsigned int ips_array_len; + const char *wol_type; + char run_cmd[4096]; + const char *disk; + const char *partition; +}; + +static int og_json_parse_clients(json_t *element, struct og_msg_params *params) +{ + unsigned int i; + json_t *k; + + if (json_typeof(element) != JSON_ARRAY) + return -1; + + for (i = 0; i < json_array_size(element); i++) { + k = json_array_get(element, i); + if (json_typeof(k) != JSON_STRING) + return -1; + + params->ips_array[params->ips_array_len++] = + json_string_value(k); + } + return 0; +} + +static int og_cmd_legacy_send(struct og_msg_params *params, const char *cmd, + const char *state) +{ + char buf[4096] = {}; + int len, err = 0; + TRAMA *msg; + + len = snprintf(buf, sizeof(buf), "nfn=%s\r", cmd); + + msg = og_msg_alloc(buf, len); + if (!msg) + return -1; + + if (!og_send_cmd((char **)params->ips_array, params->ips_array_len, + state, msg)) + err = -1; + + og_msg_free(msg); + + return err; +} + +static int og_cmd_post_clients(json_t *element, struct og_msg_params *params) +{ + const char *key; + json_t *value; + int err = 0; + + if (json_typeof(element) != JSON_OBJECT) + return -1; + + json_object_foreach(element, key, value) { + if (!strcmp(key, "clients")) + err = og_json_parse_clients(value, params); + + if (err < 0) + break; + } + + return og_cmd_legacy_send(params, "Sondeo", CLIENTE_APAGADO); +} + +struct og_buffer { + char *data; + int len; +}; + +static int og_json_dump_clients(const char *buffer, size_t size, void *data) +{ + struct og_buffer *og_buffer = (struct og_buffer *)data; + + memcpy(og_buffer->data + og_buffer->len, buffer, size); + og_buffer->len += size; + + return 0; } -// ******************************************************************************************************** -// PROGRAMA PRINCIPAL (SERVICIO) -// ******************************************************************************************************** -int main(int argc, char *argv[]) { + +static int og_cmd_get_clients(json_t *element, struct og_msg_params *params, + char *buffer_reply) +{ + json_t *root, *array, *addr, *state, *object; + struct og_buffer og_buffer = { + .data = buffer_reply, + }; int i; - SOCKET socket_s; // Socket donde escucha el servidor - SOCKET socket_c; // Socket de los clientes que se conectan - socklen_t iAddrSize; - struct sockaddr_in local, cliente; - char modulo[] = "main()"; - int activo=1; - /*-------------------------------------------------------------------------------------------------------- - Validación de parámetros de ejecución y lectura del fichero de configuración del servicio - ---------------------------------------------------------------------------------------------------------*/ - if (!validacionParametros(argc, argv, 1)) // Valida parámetros de ejecución - exit(EXIT_FAILURE); + array = json_array(); + if (!array) + return -1; - if (!tomaConfiguracion(szPathFileCfg)) { // Toma parametros de configuracion - exit(EXIT_FAILURE); + for (i = 0; i < MAXIMOS_CLIENTES; i++) { + if (tbsockets[i].ip[0] == '\0') + continue; + + object = json_object(); + if (!object) { + json_decref(array); + return -1; + } + addr = json_string(tbsockets[i].ip); + if (!addr) { + json_decref(object); + json_decref(array); + return -1; + } + json_object_set_new(object, "addr", addr); + + state = json_string(tbsockets[i].estado); + if (!state) { + json_decref(object); + json_decref(array); + return -1; + } + json_object_set_new(object, "state", state); + + json_array_append_new(array, object); } - /*-------------------------------------------------------------------------------------------------------- - Carga del catálogo de funciones que procesan las tramas (referencia directa por puntero a función) - ---------------------------------------------------------------------------------------------------------*/ - int cf = 0; - - strcpy(tbfuncionesServer[cf].nf, "Sondeo"); - tbfuncionesServer[cf++].fptr = &Sondeo; - strcpy(tbfuncionesServer[cf].nf, "respuestaSondeo"); - tbfuncionesServer[cf++].fptr = &respuestaSondeo; + root = json_pack("{s:o}", "clients", array); + if (!root) { + json_decref(array); + return -1; + } + + json_dump_callback(root, og_json_dump_clients, &og_buffer, 0); + json_decref(root); + + return 0; +} + +static int og_json_parse_target(json_t *element, struct og_msg_params *params) +{ + const char *key; + json_t *value; + + if (json_typeof(element) != JSON_OBJECT) { + return -1; + } + + json_object_foreach(element, key, value) { + if (!strcmp(key, "addr")) { + if (json_typeof(value) != JSON_STRING) + return -1; + + params->ips_array[params->ips_array_len] = + json_string_value(value); + } else if (!strcmp(key, "mac")) { + if (json_typeof(value) != JSON_STRING) + return -1; + + params->mac_array[params->ips_array_len] = + json_string_value(value); + } + } + + return 0; +} + +static int og_json_parse_targets(json_t *element, struct og_msg_params *params) +{ + unsigned int i; + json_t *k; + int err; + + if (json_typeof(element) != JSON_ARRAY) + return -1; + + for (i = 0; i < json_array_size(element); i++) { + k = json_array_get(element, i); + + if (json_typeof(k) != JSON_OBJECT) + return -1; + + err = og_json_parse_target(k, params); + if (err < 0) + return err; + + params->ips_array_len++; + } + return 0; +} + +static int og_json_parse_type(json_t *element, struct og_msg_params *params) +{ + const char *type; + + if (json_typeof(element) != JSON_STRING) + return -1; + + params->wol_type = json_string_value(element); + + type = json_string_value(element); + if (!strcmp(type, "unicast")) + params->wol_type = "2"; + else if (!strcmp(type, "broadcast")) + params->wol_type = "1"; + + return 0; +} + +static int og_cmd_wol(json_t *element, struct og_msg_params *params) +{ + const char *key; + json_t *value; + int err = 0; + + if (json_typeof(element) != JSON_OBJECT) + return -1; + + json_object_foreach(element, key, value) { + if (!strcmp(key, "clients")) { + err = og_json_parse_targets(value, params); + } else if (!strcmp(key, "type")) { + err = og_json_parse_type(value, params); + } + + if (err < 0) + break; + } + + if (!Levanta((char **)params->ips_array, (char **)params->mac_array, + params->ips_array_len, (char *)params->wol_type)) + return -1; + + return 0; +} + +static int og_json_parse_run(json_t *element, struct og_msg_params *params) +{ + if (json_typeof(element) != JSON_STRING) + return -1; + + snprintf(params->run_cmd, sizeof(params->run_cmd), "%s", + json_string_value(element)); + + return 0; +} + +static int og_cmd_run_post(json_t *element, struct og_msg_params *params) +{ + char buf[4096] = {}, iph[4096] = {}; + int err = 0, len; + const char *key; + unsigned int i; + json_t *value; + TRAMA *msg; + + if (json_typeof(element) != JSON_OBJECT) + return -1; + + json_object_foreach(element, key, value) { + if (!strcmp(key, "clients")) + err = og_json_parse_clients(value, params); + if (!strcmp(key, "run")) + err = og_json_parse_run(value, params); + + if (err < 0) + break; + } + + for (i = 0; i < params->ips_array_len; i++) { + len = snprintf(iph + strlen(iph), sizeof(iph), "%s;", + params->ips_array[i]); + } + len = snprintf(buf, sizeof(buf), "nfn=ConsolaRemota\riph=%s\rscp=%s\r", + iph, params->run_cmd); + + msg = og_msg_alloc(buf, len); + if (!msg) + return -1; + + if (!og_send_cmd((char **)params->ips_array, params->ips_array_len, + CLIENTE_OCUPADO, msg)) + err = -1; + + og_msg_free(msg); + + if (err < 0) + return err; + + for (i = 0; i < params->ips_array_len; i++) { + char filename[4096]; + FILE *f; + + sprintf(filename, "/tmp/_Seconsola_%s", params->ips_array[i]); + f = fopen(filename, "wt"); + fclose(f); + } + + return 0; +} + +static int og_cmd_run_get(json_t *element, struct og_msg_params *params, + char *buffer_reply) +{ + struct og_buffer og_buffer = { + .data = buffer_reply, + }; + json_t *root, *value, *array; + const char *key; + unsigned int i; + int err = 0; + + if (json_typeof(element) != JSON_OBJECT) + return -1; + + json_object_foreach(element, key, value) { + if (!strcmp(key, "clients")) + err = og_json_parse_clients(value, params); + + if (err < 0) + return err; + } + + array = json_array(); + if (!array) + return -1; + + for (i = 0; i < params->ips_array_len; i++) { + json_t *object, *output, *addr; + char data[4096] = {}; + char filename[4096]; + int fd, numbytes; + + sprintf(filename, "/tmp/_Seconsola_%s", params->ips_array[i]); + + fd = open(filename, O_RDONLY); + if (!fd) + return -1; + + numbytes = read(fd, data, sizeof(data)); + if (numbytes < 0) { + close(fd); + return -1; + } + data[sizeof(data) - 1] = '\0'; + close(fd); + + object = json_object(); + if (!object) { + json_decref(array); + return -1; + } + addr = json_string(params->ips_array[i]); + if (!addr) { + json_decref(object); + json_decref(array); + return -1; + } + json_object_set_new(object, "addr", addr); + + output = json_string(data); + if (!output) { + json_decref(object); + json_decref(array); + return -1; + } + json_object_set_new(object, "output", output); + + json_array_append_new(array, object); + } + + root = json_pack("{s:o}", "clients", array); + if (!root) + return -1; + + json_dump_callback(root, og_json_dump_clients, &og_buffer, 0); + json_decref(root); + + return 0; +} - strcpy(tbfuncionesServer[cf].nf, "ConsolaRemota"); - tbfuncionesServer[cf++].fptr = &ConsolaRemota; +static int og_json_parse_disk(json_t *element, struct og_msg_params *params) +{ + if (json_typeof(element) != JSON_STRING) + return -1; + + params->disk = json_string_value(element); + + return 0; +} + +static int og_json_parse_partition(json_t *element, + struct og_msg_params *params) +{ + if (json_typeof(element) != JSON_STRING) + return -1; + + params->partition = json_string_value(element); + + return 0; +} + +static int og_cmd_session(json_t *element, struct og_msg_params *params) +{ + char buf[4096], iph[4096]; + int err = 0, len; + const char *key; + unsigned int i; + json_t *value; + TRAMA *msg; + + if (json_typeof(element) != JSON_OBJECT) + return -1; + + json_object_foreach(element, key, value) { + if (!strcmp(key, "clients")) { + err = og_json_parse_clients(value, params); + } else if (!strcmp(key, "disk")) { + err = og_json_parse_disk(value, params); + } else if (!strcmp(key, "partition")) { + err = og_json_parse_partition(value, params); + } + + if (err < 0) + return err; + } + + for (i = 0; i < params->ips_array_len; i++) { + snprintf(iph + strlen(iph), sizeof(iph), "%s;", + params->ips_array[i]); + } + len = snprintf(buf, sizeof(buf), + "nfn=IniciarSesion\riph=%s\rdsk=%s\rpar=%s\r", + iph, params->disk, params->partition); + + msg = og_msg_alloc(buf, len); + if (!msg) + return -1; + + if (!og_send_cmd((char **)params->ips_array, params->ips_array_len, + CLIENTE_APAGADO, msg)) + err = -1; + + og_msg_free(msg); + + return 0; +} + +static int og_cmd_poweroff(json_t *element, struct og_msg_params *params) +{ + const char *key; + json_t *value; + int err = 0; + + if (json_typeof(element) != JSON_OBJECT) + return -1; + + json_object_foreach(element, key, value) { + if (!strcmp(key, "clients")) + err = og_json_parse_clients(value, params); + + if (err < 0) + break; + } + + return og_cmd_legacy_send(params, "Apagar", CLIENTE_OCUPADO); +} + +static int og_cmd_refresh(json_t *element, struct og_msg_params *params) +{ + const char *key; + json_t *value; + int err = 0; + + if (json_typeof(element) != JSON_OBJECT) + return -1; + + json_object_foreach(element, key, value) { + if (!strcmp(key, "clients")) + err = og_json_parse_clients(value, params); + + if (err < 0) + break; + } + + return og_cmd_legacy_send(params, "Actualizar", CLIENTE_APAGADO); +} + +static int og_cmd_reboot(json_t *element, struct og_msg_params *params) +{ + const char *key; + json_t *value; + int err = 0; + + if (json_typeof(element) != JSON_OBJECT) + return -1; + + json_object_foreach(element, key, value) { + if (!strcmp(key, "clients")) + err = og_json_parse_clients(value, params); + + if (err < 0) + break; + } + + return og_cmd_legacy_send(params, "Reiniciar", CLIENTE_OCUPADO); +} + +static int og_cmd_stop(json_t *element, struct og_msg_params *params) +{ + const char *key; + json_t *value; + int err = 0; + + if (json_typeof(element) != JSON_OBJECT) + return -1; + + json_object_foreach(element, key, value) { + if (!strcmp(key, "clients")) + err = og_json_parse_clients(value, params); + + if (err < 0) + break; + } + + return og_cmd_legacy_send(params, "Purgar", CLIENTE_APAGADO); +} + +static int og_cmd_hardware(json_t *element, struct og_msg_params *params) +{ + const char *key; + json_t *value; + int err = 0; + + if (json_typeof(element) != JSON_OBJECT) + return -1; + + json_object_foreach(element, key, value) { + if (!strcmp(key, "clients")) + err = og_json_parse_clients(value, params); + + if (err < 0) + break; + } + + return og_cmd_legacy_send(params, "InventarioHardware", + CLIENTE_OCUPADO); +} + +static int og_cmd_software(json_t *element, struct og_msg_params *params) +{ + const char *key; + json_t *value; + int err = 0; + + if (json_typeof(element) != JSON_OBJECT) + return -1; + + json_object_foreach(element, key, value) { + if (!strcmp(key, "clients")) + err = og_json_parse_clients(value, params); + + if (err < 0) + break; + } + + return og_cmd_legacy_send(params, "InventarioSoftware", + CLIENTE_OCUPADO); +} + +static int og_client_method_not_found(struct og_client *cli) +{ + /* To meet RFC 7231, this function MUST generate an Allow header field + * containing the correct methods. For example: "Allow: POST\r\n" + */ + char buf[] = "HTTP/1.1 405 Method Not Allowed\r\n" + "Content-Length: 0\r\n\r\n"; + + send(og_client_socket(cli), buf, strlen(buf), 0); + + return -1; +} + +static int og_client_bad_request(struct og_client *cli) +{ + char buf[] = "HTTP/1.1 400 Bad Request\r\nContent-Length: 0\r\n\r\n"; + + send(og_client_socket(cli), buf, strlen(buf), 0); + + return -1; +} + +static int og_client_not_found(struct og_client *cli) +{ + char buf[] = "HTTP/1.1 404 Not Found\r\nContent-Length: 0\r\n\r\n"; + + send(og_client_socket(cli), buf, strlen(buf), 0); + + return -1; +} + +static int og_client_not_authorized(struct og_client *cli) +{ + char buf[] = "HTTP/1.1 401 Unauthorized\r\n" + "WWW-Authenticate: Basic\r\n" + "Content-Length: 0\r\n\r\n"; + + send(og_client_socket(cli), buf, strlen(buf), 0); + + return -1; +} + +static int og_server_internal_error(struct og_client *cli) +{ + char buf[] = "HTTP/1.1 500 Internal Server Error\r\n" + "Content-Length: 0\r\n\r\n"; + + send(og_client_socket(cli), buf, strlen(buf), 0); + + return -1; +} + +#define OG_MSG_RESPONSE_MAXLEN 65536 + +static int og_client_ok(struct og_client *cli, char *buf_reply) +{ + char buf[OG_MSG_RESPONSE_MAXLEN] = {}; + int err = 0, len; + + len = snprintf(buf, sizeof(buf), + "HTTP/1.1 200 OK\r\nContent-Length: %ld\r\n\r\n%s", + strlen(buf_reply), buf_reply); + if (len >= (int)sizeof(buf)) + err = og_server_internal_error(cli); + + send(og_client_socket(cli), buf, strlen(buf), 0); + + return err; +} + +enum og_rest_method { + OG_METHOD_GET = 0, + OG_METHOD_POST, +}; + +static int og_client_state_process_payload_rest(struct og_client *cli) +{ + char buf_reply[OG_MSG_RESPONSE_MAXLEN] = {}; + struct og_msg_params params = {}; + enum og_rest_method method; + const char *cmd, *body; + json_error_t json_err; + json_t *root = NULL; + int err = 0; + + syslog(LOG_DEBUG, "%s:%hu %.32s ...\n", + inet_ntoa(cli->addr.sin_addr), + ntohs(cli->addr.sin_port), cli->buf); + + if (!strncmp(cli->buf, "GET", strlen("GET"))) { + method = OG_METHOD_GET; + cmd = cli->buf + strlen("GET") + 2; + } else if (!strncmp(cli->buf, "POST", strlen("POST"))) { + method = OG_METHOD_POST; + cmd = cli->buf + strlen("POST") + 2; + } else + return og_client_method_not_found(cli); + + body = strstr(cli->buf, "\r\n\r\n") + 4; + + if (strcmp(cli->auth_token, auth_token)) { + syslog(LOG_ERR, "wrong Authentication key\n"); + return og_client_not_authorized(cli); + } + + if (cli->content_length) { + root = json_loads(body, 0, &json_err); + if (!root) { + syslog(LOG_ERR, "malformed json line %d: %s\n", + json_err.line, json_err.text); + return og_client_not_found(cli); + } + } + + if (!strncmp(cmd, "clients", strlen("clients"))) { + if (method != OG_METHOD_POST && + method != OG_METHOD_GET) + return og_client_method_not_found(cli); + + if (method == OG_METHOD_POST && !root) { + syslog(LOG_ERR, "command clients with no payload\n"); + return og_client_bad_request(cli); + } + switch (method) { + case OG_METHOD_POST: + err = og_cmd_post_clients(root, ¶ms); + break; + case OG_METHOD_GET: + err = og_cmd_get_clients(root, ¶ms, buf_reply); + break; + } + } else if (!strncmp(cmd, "wol", strlen("wol"))) { + if (method != OG_METHOD_POST) + return og_client_method_not_found(cli); + + if (!root) { + syslog(LOG_ERR, "command wol with no payload\n"); + return og_client_bad_request(cli); + } + err = og_cmd_wol(root, ¶ms); + } else if (!strncmp(cmd, "shell/run", strlen("shell/run"))) { + if (method != OG_METHOD_POST) + return og_client_method_not_found(cli); + + if (!root) { + syslog(LOG_ERR, "command run with no payload\n"); + return og_client_bad_request(cli); + } + err = og_cmd_run_post(root, ¶ms); + } else if (!strncmp(cmd, "shell/output", strlen("shell/output"))) { + if (method != OG_METHOD_POST) + return og_client_method_not_found(cli); + + if (!root) { + syslog(LOG_ERR, "command output with no payload\n"); + return og_client_bad_request(cli); + } - strcpy(tbfuncionesServer[cf].nf, "EcoConsola"); - tbfuncionesServer[cf++].fptr = &EcoConsola; + err = og_cmd_run_get(root, ¶ms, buf_reply); + } else if (!strncmp(cmd, "session", strlen("session"))) { + if (method != OG_METHOD_POST) + return og_client_method_not_found(cli); + + if (!root) { + syslog(LOG_ERR, "command session with no payload\n"); + return og_client_bad_request(cli); + } + err = og_cmd_session(root, ¶ms); + } else if (!strncmp(cmd, "poweroff", strlen("poweroff"))) { + if (method != OG_METHOD_POST) + return og_client_method_not_found(cli); + + if (!root) { + syslog(LOG_ERR, "command poweroff with no payload\n"); + return og_client_bad_request(cli); + } + err = og_cmd_poweroff(root, ¶ms); + } else if (!strncmp(cmd, "reboot", strlen("reboot"))) { + if (method != OG_METHOD_POST) + return og_client_method_not_found(cli); + + if (!root) { + syslog(LOG_ERR, "command reboot with no payload\n"); + return og_client_bad_request(cli); + } + err = og_cmd_reboot(root, ¶ms); + } else if (!strncmp(cmd, "stop", strlen("stop"))) { + if (method != OG_METHOD_POST) + return og_client_method_not_found(cli); + + if (!root) { + syslog(LOG_ERR, "command stop with no payload\n"); + return og_client_bad_request(cli); + } + err = og_cmd_stop(root, ¶ms); + } else if (!strncmp(cmd, "refresh", strlen("refresh"))) { + if (method != OG_METHOD_POST) + return og_client_method_not_found(cli); + + if (!root) { + syslog(LOG_ERR, "command refresh with no payload\n"); + return og_client_bad_request(cli); + } + err = og_cmd_refresh(root, ¶ms); + } else if (!strncmp(cmd, "hardware", strlen("hardware"))) { + if (method != OG_METHOD_POST) + return og_client_method_not_found(cli); + + if (!root) { + syslog(LOG_ERR, "command hardware with no payload\n"); + return og_client_bad_request(cli); + } + err = og_cmd_hardware(root, ¶ms); + } else if (!strncmp(cmd, "software", strlen("software"))) { + if (method != OG_METHOD_POST) + return og_client_method_not_found(cli); + + if (!root) { + syslog(LOG_ERR, "command software with no payload\n"); + return og_client_bad_request(cli); + } + err = og_cmd_software(root, ¶ms); + } else { + syslog(LOG_ERR, "unknown command: %.32s ...\n", cmd); + err = og_client_not_found(cli); + } - strcpy(tbfuncionesServer[cf].nf, "Actualizar"); - tbfuncionesServer[cf++].fptr = &Actualizar; + if (root) + json_decref(root); - strcpy(tbfuncionesServer[cf].nf, "Purgar"); - tbfuncionesServer[cf++].fptr = &Purgar; + if (err < 0) + return err; - strcpy(tbfuncionesServer[cf].nf, "InclusionCliente"); - tbfuncionesServer[cf++].fptr = &InclusionCliente; + err = og_client_ok(cli, buf_reply); + if (err < 0) { + syslog(LOG_ERR, "HTTP response to %s:%hu is too large\n", + inet_ntoa(cli->addr.sin_addr), + ntohs(cli->addr.sin_port)); + } - strcpy(tbfuncionesServer[cf].nf, "InclusionClienteWinLnx"); - tbfuncionesServer[cf++].fptr = &InclusionClienteWinLnx; + return err; +} - strcpy(tbfuncionesServer[cf].nf, "AutoexecCliente"); - tbfuncionesServer[cf++].fptr = &AutoexecCliente; +static int og_client_state_recv_hdr_rest(struct og_client *cli) +{ + char *ptr; - strcpy(tbfuncionesServer[cf].nf, "ComandosPendientes"); - tbfuncionesServer[cf++].fptr = &ComandosPendientes; + ptr = strstr(cli->buf, "\r\n\r\n"); + if (!ptr) + return 0; - strcpy(tbfuncionesServer[cf].nf, "DisponibilidadComandos"); - tbfuncionesServer[cf++].fptr = &DisponibilidadComandos; + cli->msg_len = ptr - cli->buf + 4; - strcpy(tbfuncionesServer[cf].nf, "Arrancar"); - tbfuncionesServer[cf++].fptr = &Arrancar; - strcpy(tbfuncionesServer[cf].nf, "RESPUESTA_Arrancar"); - tbfuncionesServer[cf++].fptr = &RESPUESTA_Arrancar; + ptr = strstr(cli->buf, "Content-Length: "); + if (ptr) { + sscanf(ptr, "Content-Length: %i[^\r\n]", &cli->content_length); + if (cli->content_length < 0) + return -1; + cli->msg_len += cli->content_length; + } - strcpy(tbfuncionesServer[cf].nf, "Apagar"); - tbfuncionesServer[cf++].fptr = &Apagar; - strcpy(tbfuncionesServer[cf].nf, "RESPUESTA_Apagar"); - tbfuncionesServer[cf++].fptr = &RESPUESTA_Apagar; + ptr = strstr(cli->buf, "Authorization: "); + if (ptr) + sscanf(ptr, "Authorization: %63[^\r\n]", cli->auth_token); - strcpy(tbfuncionesServer[cf].nf, "Reiniciar"); - tbfuncionesServer[cf++].fptr = &Reiniciar; - strcpy(tbfuncionesServer[cf].nf, "RESPUESTA_Reiniciar"); - tbfuncionesServer[cf++].fptr = &RESPUESTA_Reiniciar; + return 1; +} - strcpy(tbfuncionesServer[cf].nf, "IniciarSesion"); - tbfuncionesServer[cf++].fptr = &IniciarSesion; - strcpy(tbfuncionesServer[cf].nf, "RESPUESTA_IniciarSesion"); - tbfuncionesServer[cf++].fptr = &RESPUESTA_IniciarSesion; +static void og_client_read_cb(struct ev_loop *loop, struct ev_io *io, int events) +{ + struct og_client *cli; + int ret; - strcpy(tbfuncionesServer[cf].nf, "CrearImagen"); - tbfuncionesServer[cf++].fptr = &CrearImagen; - strcpy(tbfuncionesServer[cf].nf, "RESPUESTA_CrearImagen"); - tbfuncionesServer[cf++].fptr = &RESPUESTA_CrearImagen; + cli = container_of(io, struct og_client, io); - strcpy(tbfuncionesServer[cf].nf, "CrearImagenBasica"); - tbfuncionesServer[cf++].fptr = &CrearImagenBasica; - strcpy(tbfuncionesServer[cf].nf, "RESPUESTA_CrearImagenBasica"); - tbfuncionesServer[cf++].fptr = &RESPUESTA_CrearImagenBasica; + if (events & EV_ERROR) { + syslog(LOG_ERR, "unexpected error event from client %s:%hu\n", + inet_ntoa(cli->addr.sin_addr), + ntohs(cli->addr.sin_port)); + goto close; + } - strcpy(tbfuncionesServer[cf].nf, "CrearSoftIncremental"); - tbfuncionesServer[cf++].fptr = &CrearSoftIncremental; - strcpy(tbfuncionesServer[cf].nf, "RESPUESTA_CrearSoftIncremental"); - tbfuncionesServer[cf++].fptr = &RESPUESTA_CrearSoftIncremental; + ret = recv(io->fd, cli->buf + cli->buf_len, + sizeof(cli->buf) - cli->buf_len, 0); + if (ret <= 0) { + if (ret < 0) { + syslog(LOG_ERR, "error reading from client %s:%hu (%s)\n", + inet_ntoa(cli->addr.sin_addr), ntohs(cli->addr.sin_port), + strerror(errno)); + } else { + syslog(LOG_DEBUG, "closed connection by %s:%hu\n", + inet_ntoa(cli->addr.sin_addr), ntohs(cli->addr.sin_port)); + } + goto close; + } - strcpy(tbfuncionesServer[cf].nf, "RestaurarImagen"); - tbfuncionesServer[cf++].fptr = &RestaurarImagen; - strcpy(tbfuncionesServer[cf].nf, "RESPUESTA_RestaurarImagen"); - tbfuncionesServer[cf++].fptr = &RESPUESTA_RestaurarImagen; + if (cli->keepalive_idx >= 0) + return; - strcpy(tbfuncionesServer[cf].nf, "RestaurarImagenBasica"); - tbfuncionesServer[cf++].fptr = &RestaurarImagenBasica; - strcpy(tbfuncionesServer[cf].nf, "RESPUESTA_RestaurarImagenBasica"); - tbfuncionesServer[cf++].fptr = &RESPUESTA_RestaurarImagenBasica; + ev_timer_again(loop, &cli->timer); - strcpy(tbfuncionesServer[cf].nf, "RestaurarSoftIncremental"); - tbfuncionesServer[cf++].fptr = &RestaurarSoftIncremental; - strcpy(tbfuncionesServer[cf].nf, "RESPUESTA_RestaurarSoftIncremental"); - tbfuncionesServer[cf++].fptr = &RESPUESTA_RestaurarSoftIncremental; + cli->buf_len += ret; + if (cli->buf_len >= sizeof(cli->buf)) { + syslog(LOG_ERR, "client request from %s:%hu is too long\n", + inet_ntoa(cli->addr.sin_addr), ntohs(cli->addr.sin_port)); + goto close; + } - strcpy(tbfuncionesServer[cf].nf, "Configurar"); - tbfuncionesServer[cf++].fptr = &Configurar; - strcpy(tbfuncionesServer[cf].nf, "RESPUESTA_Configurar"); - tbfuncionesServer[cf++].fptr = &RESPUESTA_Configurar; + switch (cli->state) { + case OG_CLIENT_RECEIVING_HEADER: + if (cli->rest) + ret = og_client_state_recv_hdr_rest(cli); + else + ret = og_client_state_recv_hdr(cli); + + if (ret < 0) + goto close; + if (!ret) + return; + + cli->state = OG_CLIENT_RECEIVING_PAYLOAD; + /* Fall through. */ + case OG_CLIENT_RECEIVING_PAYLOAD: + /* Still not enough data to process request. */ + if (cli->buf_len < cli->msg_len) + return; + + cli->state = OG_CLIENT_PROCESSING_REQUEST; + /* fall through. */ + case OG_CLIENT_PROCESSING_REQUEST: + if (cli->rest) { + ret = og_client_state_process_payload_rest(cli); + if (ret < 0) { + syslog(LOG_ERR, "Failed to process HTTP request from %s:%hu\n", + inet_ntoa(cli->addr.sin_addr), + ntohs(cli->addr.sin_port)); + } + } else { + ret = og_client_state_process_payload(cli); + } + if (ret < 0) + goto close; - strcpy(tbfuncionesServer[cf].nf, "EjecutarScript"); - tbfuncionesServer[cf++].fptr = &EjecutarScript; - strcpy(tbfuncionesServer[cf].nf, "RESPUESTA_EjecutarScript"); - tbfuncionesServer[cf++].fptr = &RESPUESTA_EjecutarScript; + if (cli->keepalive_idx < 0) { + syslog(LOG_DEBUG, "server closing connection to %s:%hu\n", + inet_ntoa(cli->addr.sin_addr), ntohs(cli->addr.sin_port)); + goto close; + } else { + syslog(LOG_DEBUG, "leaving client %s:%hu in keepalive mode\n", + inet_ntoa(cli->addr.sin_addr), + ntohs(cli->addr.sin_port)); + og_client_keepalive(loop, cli); + og_client_reset_state(cli); + } + break; + default: + syslog(LOG_ERR, "unknown state, critical internal error\n"); + goto close; + } + return; +close: + ev_timer_stop(loop, &cli->timer); + og_client_release(loop, cli); +} - strcpy(tbfuncionesServer[cf].nf, "InventarioHardware"); - tbfuncionesServer[cf++].fptr = &InventarioHardware; - strcpy(tbfuncionesServer[cf].nf, "RESPUESTA_InventarioHardware"); - tbfuncionesServer[cf++].fptr = &RESPUESTA_InventarioHardware; +static void og_client_timer_cb(struct ev_loop *loop, ev_timer *timer, int events) +{ + struct og_client *cli; - strcpy(tbfuncionesServer[cf].nf, "InventarioSoftware"); - tbfuncionesServer[cf++].fptr = &InventarioSoftware; - strcpy(tbfuncionesServer[cf].nf, "RESPUESTA_InventarioSoftware"); - tbfuncionesServer[cf++].fptr = &RESPUESTA_InventarioSoftware; + cli = container_of(timer, struct og_client, timer); + if (cli->keepalive_idx >= 0) { + ev_timer_again(loop, &cli->timer); + return; + } + syslog(LOG_ERR, "timeout request for client %s:%hu\n", + inet_ntoa(cli->addr.sin_addr), ntohs(cli->addr.sin_port)); - strcpy(tbfuncionesServer[cf].nf, "enviaArchivo"); - tbfuncionesServer[cf++].fptr = &enviaArchivo; + og_client_release(loop, cli); +} - strcpy(tbfuncionesServer[cf].nf, "recibeArchivo"); - tbfuncionesServer[cf++].fptr = &recibeArchivo; +static int socket_s, socket_rest; - strcpy(tbfuncionesServer[cf].nf, "envioProgramacion"); - tbfuncionesServer[cf++].fptr = &envioProgramacion; +static void og_server_accept_cb(struct ev_loop *loop, struct ev_io *io, + int events) +{ + struct sockaddr_in client_addr; + socklen_t addrlen = sizeof(client_addr); + struct og_client *cli; + int client_sd; + + if (events & EV_ERROR) + return; + + client_sd = accept(io->fd, (struct sockaddr *)&client_addr, &addrlen); + if (client_sd < 0) { + syslog(LOG_ERR, "cannot accept client connection\n"); + return; + } + + cli = (struct og_client *)calloc(1, sizeof(struct og_client)); + if (!cli) { + close(client_sd); + return; + } + memcpy(&cli->addr, &client_addr, sizeof(client_addr)); + cli->keepalive_idx = -1; + + if (io->fd == socket_rest) + cli->rest = true; + + syslog(LOG_DEBUG, "connection from client %s:%hu\n", + inet_ntoa(cli->addr.sin_addr), ntohs(cli->addr.sin_port)); + + ev_io_init(&cli->io, og_client_read_cb, client_sd, EV_READ); + ev_io_start(loop, &cli->io); + ev_timer_init(&cli->timer, og_client_timer_cb, OG_CLIENT_TIMEOUT, 0.); + ev_timer_start(loop, &cli->timer); +} + +static int og_socket_server_init(const char *port) +{ + struct sockaddr_in local; + int sd, on = 1; + + sd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + if (sd < 0) { + syslog(LOG_ERR, "cannot create main socket\n"); + return -1; + } + setsockopt(sd, SOL_SOCKET, SO_REUSEPORT, &on, sizeof(int)); + + local.sin_addr.s_addr = htonl(INADDR_ANY); + local.sin_family = AF_INET; + local.sin_port = htons(atoi(port)); + + if (bind(sd, (struct sockaddr *) &local, sizeof(local)) < 0) { + close(sd); + syslog(LOG_ERR, "cannot bind socket\n"); + return -1; + } + + listen(sd, 250); + + return sd; +} + +int main(int argc, char *argv[]) +{ + struct ev_io ev_io_server, ev_io_server_rest; + struct ev_loop *loop = ev_default_loop(0); + int i; + + if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) + exit(EXIT_FAILURE); + + openlog("ogAdmServer", LOG_PID, LOG_DAEMON); + + /*-------------------------------------------------------------------------------------------------------- + Validación de parámetros de ejecución y lectura del fichero de configuración del servicio + ---------------------------------------------------------------------------------------------------------*/ + if (!validacionParametros(argc, argv, 1)) // Valida parámetros de ejecución + exit(EXIT_FAILURE); + + if (!tomaConfiguracion(szPathFileCfg)) { // Toma parametros de configuracion + exit(EXIT_FAILURE); + } /*-------------------------------------------------------------------------------------------------------- // Inicializa array de información de los clientes ---------------------------------------------------------------------------------------------------------*/ for (i = 0; i < MAXIMOS_CLIENTES; i++) { tbsockets[i].ip[0] = '\0'; - tbsockets[i].sock = INVALID_SOCKET; + tbsockets[i].cli = NULL; } /*-------------------------------------------------------------------------------------------------------- Creación y configuración del socket del servicio ---------------------------------------------------------------------------------------------------------*/ - socket_s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); // Crea socket del servicio - setsockopt(socket_s, SOL_SOCKET, SO_REUSEPORT, &activo, sizeof(int)); - if (socket_s == SOCKET_ERROR) { // Error al crear el socket del servicio - errorLog(modulo, 13, TRUE); + socket_s = og_socket_server_init(puerto); + if (socket_s < 0) exit(EXIT_FAILURE); - } - local.sin_addr.s_addr = htonl(INADDR_ANY); // Configura el socket del servicio - local.sin_family = AF_INET; - local.sin_port = htons(atoi(puerto)); + ev_io_init(&ev_io_server, og_server_accept_cb, socket_s, EV_READ); + ev_io_start(loop, &ev_io_server); - if (bind(socket_s, (struct sockaddr *) &local, sizeof(local)) - == SOCKET_ERROR) { // Enlaza socket - errorLog(modulo, 14, TRUE); + socket_rest = og_socket_server_init("8888"); + if (socket_rest < 0) exit(EXIT_FAILURE); - } - listen(socket_s, 250); // Pone a escuchar al socket - iAddrSize = sizeof(cliente); - /*-------------------------------------------------------------------------------------------------------- - Bucle para acceptar conexiones - ---------------------------------------------------------------------------------------------------------*/ + ev_io_init(&ev_io_server_rest, og_server_accept_cb, socket_rest, EV_READ); + ev_io_start(loop, &ev_io_server_rest); + infoLog(1); // Inicio de sesión - while (TRUE) { - socket_c = accept(socket_s, (struct sockaddr *) &cliente, &iAddrSize); - if (socket_c == INVALID_SOCKET) { - errorLog(modulo, 15, TRUE); - exit(EXIT_FAILURE); - } - swcSocket = FALSE; // Por defecto se cerrara el socket de cliente después del anális de la trama - if (!gestionaTrama(&socket_c)) { - errorLog(modulo, 39, TRUE); - //close(socket_c);/tmp/ - //break; - } - if (!swcSocket) // Sólo se cierra cuando el cliente NO espera comandos ineractivos - close(socket_c); - } - /*-------------------------------------------------------------------------------------------------------- - Fin del servicio - ---------------------------------------------------------------------------------------------------------*/ - close(socket_s); + + /* old log file has been deprecated. */ + og_log(97, false); + + syslog(LOG_INFO, "Waiting for connections\n"); + + while (1) + ev_loop(loop, 0); + exit(EXIT_SUCCESS); } diff --git a/admin/Sources/Services/ogAdmServer/sources/ogAdmServer.h b/admin/Sources/Services/ogAdmServer/sources/ogAdmServer.h index 48f0be3a..22ffd30b 100644 --- a/admin/Sources/Services/ogAdmServer/sources/ogAdmServer.h +++ b/admin/Sources/Services/ogAdmServer/sources/ogAdmServer.h @@ -17,6 +17,7 @@ #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> +#include <stdbool.h> #include </usr/include/mysql/mysql.h> #include "Database.h" #include "ogAdmLib.h" @@ -25,105 +26,34 @@ // ________________________________________________________________________________________________________ char servidoradm[LONPRM]; // Dirección IP del servidor de administración char puerto[LONPRM]; // Puerto de comunicación -char usuario[LONPRM]; // Usuario de acceso a la base de datos -char pasguor[LONPRM]; // Password del usuario -char datasource[LONPRM]; // Dirección IP del gestor de base de datos -char catalog[LONPRM]; // Nombre de la base de datos -char aulaup[LONPRM]; // Conmutador para registro automático de clientes + +struct og_client; typedef struct{ // Estructura usada para guardar información de los clientes char ip[LONIP]; // IP del cliente char estado[4]; // Tipo de Sistema Operativo en que se encuentra el cliente - SOCKET sock; // Socket por el que se comunica + struct og_client *cli; }SOCKETCL; SOCKETCL tbsockets[MAXIMOS_CLIENTES]; -BOOLEAN swcSocket; // Switch para indicar si se debe cerrar el socket del cliente - -typedef struct{ // Estructura usada para referenciar las funciones que procesan las tramas - char nf[LONFUN]; // Nombre de la función - BOOLEAN (*fptr)(SOCKET*,TRAMA*); // Puntero a la función que procesa la trama -}MSGFUN; -MSGFUN tbfuncionesServer[MAXIMAS_FUNCIONES]; -// ________________________________________________________________________________________________________ -// Prototipo de funciones -// ________________________________________________________________________________________________________ - -BOOLEAN tomaConfiguracion(char*); -BOOLEAN gestionaTrama(SOCKET*); -BOOLEAN Sondeo(SOCKET*,TRAMA*); -BOOLEAN respuestaSondeo(SOCKET *,TRAMA*); -BOOLEAN InclusionClienteWinLnx(SOCKET*,TRAMA*); -BOOLEAN InclusionCliente(SOCKET*,TRAMA*); -BOOLEAN registraCliente(char *); - -BOOLEAN procesoInclusionClienteWinLnx(SOCKET*,TRAMA*,int*,char*); -BOOLEAN procesoInclusionCliente(SOCKET*,TRAMA*); -BOOLEAN clienteExistente(char *,int *); -BOOLEAN clienteDisponible(char *,int *); -BOOLEAN hayHueco(int *); -BOOLEAN actualizaConfiguracion(Database , Table ,char* ,int); -BOOLEAN AutoexecCliente(SOCKET *, TRAMA *); -BOOLEAN recorreProcedimientos(Database ,char* ,FILE*,char*); - -BOOLEAN tomaRepositorio(Database ,Table ,char*,int*); -BOOLEAN buscaComandos(char *,TRAMA *,int *); -BOOLEAN DisponibilidadComandos(SOCKET*,TRAMA*); -BOOLEAN respuestaEstandar(TRAMA *,char **,char **,char ** ,Database *,Table *); -BOOLEAN respuestaConsola(SOCKET *,TRAMA *,int); -BOOLEAN enviaComando(TRAMA *ptrTrama,const char*); - -BOOLEAN Actualizar(SOCKET *, TRAMA* ); -BOOLEAN Purgar(SOCKET *, TRAMA* ); - -BOOLEAN ConsolaRemota(SOCKET *,TRAMA*); -BOOLEAN RESPUESTA_ConsolaRemota(SOCKET *,TRAMA*); -BOOLEAN EcoConsola(SOCKET *,TRAMA*); - -BOOLEAN Comando(SOCKET *,TRAMA *); -BOOLEAN RESPUESTA_Comando(SOCKET *,TRAMA *); - -BOOLEAN Arrancar(SOCKET *,TRAMA *); -BOOLEAN Levanta(char*,char*,char*); -BOOLEAN WakeUp(SOCKET *,char*,char*,char*); +bool registraCliente(char *); +bool procesoInclusionClienteWinLnx(int socket, TRAMA*,int*,char*); +bool procesoInclusionCliente(struct og_client *, TRAMA*); +bool clienteExistente(char *,int *); +bool clienteDisponible(char *,int *); +bool actualizaConfiguracion(Database , Table ,char* ,int); +bool recorreProcedimientos(Database ,char* ,FILE*,char*); +bool buscaComandos(char *,TRAMA *,int *); +bool respuestaConsola(int socket, TRAMA *,int); +bool enviaComando(TRAMA *ptrTrama,const char*); +bool Levanta(char**, char**, int, char*); +bool WakeUp(int,char*,char*,char*); void PasaHexBin(char *,char *); -BOOLEAN RESPUESTA_Arrancar(SOCKET *,TRAMA*); -BOOLEAN Apagar(SOCKET *,TRAMA *); -BOOLEAN RESPUESTA_Apagar(SOCKET *,TRAMA *); -BOOLEAN Reiniciar(SOCKET *,TRAMA *); -BOOLEAN RESPUESTA_Reiniciar(SOCKET *,TRAMA *); -BOOLEAN IniciarSesion(SOCKET *,TRAMA *); -BOOLEAN RESPUESTA_IniciarSesion(SOCKET *,TRAMA *); -BOOLEAN CrearImagen(SOCKET *,TRAMA *); -BOOLEAN CrearImagenBasica(SOCKET *,TRAMA *); -BOOLEAN CrearSoftIncremental(SOCKET *,TRAMA *); -BOOLEAN RESPUESTA_CrearImagen(SOCKET *,TRAMA *); -BOOLEAN RESPUESTA_CrearImagenBasica(SOCKET *,TRAMA *); -BOOLEAN RESPUESTA_CrearSoftIncremental(SOCKET *,TRAMA *); -BOOLEAN actualizaCreacionImagen(Database,Table,char*,char*,char*,char*,char*,char*); -BOOLEAN actualizaCreacionSoftIncremental(Database,Table,char*,char*); -BOOLEAN RestaurarImagen(SOCKET *,TRAMA *); -BOOLEAN RestaurarImagenBasica(SOCKET *,TRAMA *); -BOOLEAN RestaurarSoftIncremental(SOCKET *,TRAMA *); -BOOLEAN RESPUESTA_RestaurarImagen(SOCKET *,TRAMA *); -BOOLEAN RESPUESTA_RestaurarImagenBasica(SOCKET *,TRAMA *); -BOOLEAN RESPUESTA_RestaurarSoftIncremental(SOCKET *,TRAMA *); -BOOLEAN actualizaRestauracionImagen(Database,Table,char*,char*,char*,char*,char*); -BOOLEAN Configurar(SOCKET *,TRAMA* ); -BOOLEAN RESPUESTA_Configurar(SOCKET *,TRAMA* ); -BOOLEAN actualizaConfigurar(Database , Table , char* ); -BOOLEAN InventarioHardware(SOCKET *,TRAMA *); -BOOLEAN RESPUESTA_InventarioHardware(SOCKET *,TRAMA *); -BOOLEAN actualizaHardware(Database, Table,char* ,char*,char*,char*); -BOOLEAN cuestionPerfilHardware(Database,Table,char*,char*,int,char*,char*,int *,int); -BOOLEAN actualizaSoftware(Database , Table , char* , char* , char*,char*,char*); -BOOLEAN cuestionPerfilSoftware(Database, Table, char*, char*,int,int,char*,char*,char*,int *,int); - -BOOLEAN enviaArchivo(SOCKET *, TRAMA *); -BOOLEAN recibeArchivo(SOCKET *, TRAMA *); -BOOLEAN envioProgramacion(SOCKET *, TRAMA *); +bool actualizaCreacionImagen(Database,Table,char*,char*,char*,char*,char*,char*); +bool actualizaRestauracionImagen(Database,Table,char*,char*,char*,char*,char*); +bool actualizaHardware(Database, Table,char* ,char*,char*,char*); +bool cuestionPerfilHardware(Database,Table,char*,char*,int,char*,char*,int *,int); +bool actualizaSoftware(Database , Table , char* , char* , char*,char*,char*); +bool cuestionPerfilSoftware(Database, Table, char*, char*,int,int,char*,char*,char*,int *,int); int checkDato(Database,Table,char*,const char*,const char*,const char*); - - - diff --git a/admin/Sources/Services/ogAdmServer/tests/clients.json b/admin/Sources/Services/ogAdmServer/tests/clients.json new file mode 100644 index 00000000..01672ed3 --- /dev/null +++ b/admin/Sources/Services/ogAdmServer/tests/clients.json @@ -0,0 +1 @@ +curl -X GET http://127.0.0.1:8888/clients diff --git a/admin/Sources/Services/ogAdmServer/tests/config/ogAdmServer.cfg b/admin/Sources/Services/ogAdmServer/tests/config/ogAdmServer.cfg new file mode 100644 index 00000000..41d812b6 --- /dev/null +++ b/admin/Sources/Services/ogAdmServer/tests/config/ogAdmServer.cfg @@ -0,0 +1,8 @@ +ServidorAdm=localhost +PUERTO=2008 +USUARIO=test-db +PASSWORD=test-db +datasource=localhost +CATALOG=test-db +INTERFACE=eth1 +APITOKEN=07b3bfe728954619b58f0107ad73acc1 diff --git a/admin/Sources/Services/ogAdmServer/tests/post_clients.json b/admin/Sources/Services/ogAdmServer/tests/post_clients.json new file mode 100644 index 00000000..4667303d --- /dev/null +++ b/admin/Sources/Services/ogAdmServer/tests/post_clients.json @@ -0,0 +1 @@ +{ "clients" : [ "192.168.2.1", "192.168.2.2" ] } diff --git a/admin/Sources/Services/ogAdmServer/tests/post_shell_output.json b/admin/Sources/Services/ogAdmServer/tests/post_shell_output.json new file mode 100644 index 00000000..1badfed0 --- /dev/null +++ b/admin/Sources/Services/ogAdmServer/tests/post_shell_output.json @@ -0,0 +1 @@ +{ "clients" : [ "192.168.2.1", "192.168.2.2" ]} diff --git a/admin/Sources/Services/ogAdmServer/tests/post_shell_run.json b/admin/Sources/Services/ogAdmServer/tests/post_shell_run.json new file mode 100644 index 00000000..1449d055 --- /dev/null +++ b/admin/Sources/Services/ogAdmServer/tests/post_shell_run.json @@ -0,0 +1 @@ +{ "clients" : [ "192.168.2.1", "192.168.2.2" ], "run" : "ls" } diff --git a/admin/Sources/Services/ogAdmServer/tests/poweroff.json b/admin/Sources/Services/ogAdmServer/tests/poweroff.json new file mode 100644 index 00000000..4667303d --- /dev/null +++ b/admin/Sources/Services/ogAdmServer/tests/poweroff.json @@ -0,0 +1 @@ +{ "clients" : [ "192.168.2.1", "192.168.2.2" ] } diff --git a/admin/Sources/Services/ogAdmServer/tests/reboot.json b/admin/Sources/Services/ogAdmServer/tests/reboot.json new file mode 100644 index 00000000..4667303d --- /dev/null +++ b/admin/Sources/Services/ogAdmServer/tests/reboot.json @@ -0,0 +1 @@ +{ "clients" : [ "192.168.2.1", "192.168.2.2" ] } diff --git a/admin/Sources/Services/ogAdmServer/tests/run-tests.py b/admin/Sources/Services/ogAdmServer/tests/run-tests.py new file mode 100755 index 00000000..1a59a348 --- /dev/null +++ b/admin/Sources/Services/ogAdmServer/tests/run-tests.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python3 + +import subprocess, glob, os + +sql_data = "INSERT INTO aulas (nombreaula, idcentro, urlfoto, grupoid, ubicacion, puestos, modomul, ipmul, pormul, velmul, router, netmask, ntp, dns, proxy, modp2p, timep2p) VALUES ('Aula virtual', 1, 'aula.jpg', 0, 'Despliegue virtual con Vagrant.', 5, 2, '239.194.2.11', 9000, 70, '192.168.56.1', '255.255.255.0', '', '', '', 'peer', 30); INSERT INTO ordenadores (nombreordenador, ip, mac, idaula, idrepositorio, idperfilhard, idmenu, idproautoexec, grupoid, router, mascara, arranque, netiface, netdriver, fotoord) VALUES ('pc2', '192.168.2.1', '0800270E6501', 1, 1, 0, 0, 0, 0, '192.168.56.1', '255.255.255.0', '00unknown', 'eth0', 'generic', 'fotoordenador.gif'), ('pc2', '192.168.2.2', '0800270E6502', 1, 1, 0, 0, 0, 0, '192.168.56.1', '255.255.255.0', '00unknown', 'eth0', 'generic', 'fotoordenador.gif');" + +sql_create_user = "CREATE USER 'test-db'@'hostname'; GRANT ALL PRIVILEGES ON *.* To 'test-db'@'hostname' IDENTIFIED BY 'test-db';" + +sql_delete_user = "DROP USER 'test-db'@'hostname';" + +def start_mysql(): + + subprocess.run(['mysqladmin', 'drop', '-f', 'test-db'], + stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) + subprocess.run(['mysqladmin', 'create', 'test-db']) + subprocess.run('mysql --default-character-set=utf8 test-db < ../../../../Database/ogAdmBD.sql', shell=True) + subprocess.run(['mysql', '-D', 'test-db', '-e', sql_data]) + subprocess.run(['mysql', '-D', 'test-db', '-e', sql_create_user]) + +def stop_mysql(): + + subprocess.run(['mysql', '-D', 'test-db', '-e', sql_delete_user]) + subprocess.run(['mysqladmin', 'drop', '-f', 'test-db']) + +if os.getuid() is not 0: + print('You need to be root to run these tests :-)') + exit() + +if os.path.isfile('../ogAdmServer') is not True: + print('You need to build the ogAdmServer binary to run these tests :-)') + exit() + +start_mysql(); + +subprocess.Popen(['../ogAdmServer', '-f', 'config/ogAdmServer.cfg']) + +subprocess.run('python3 -m unittest discover -s units -v', shell=True) + +stop_mysql(); + +subprocess.run(['pkill', 'ogAdmServer']) diff --git a/admin/Sources/Services/ogAdmServer/tests/run-tests.sh b/admin/Sources/Services/ogAdmServer/tests/run-tests.sh new file mode 100755 index 00000000..f22df02a --- /dev/null +++ b/admin/Sources/Services/ogAdmServer/tests/run-tests.sh @@ -0,0 +1,14 @@ +API_KEY="07b3bfe728954619b58f0107ad73acc1" + +curl -X POST -H "Authorization: $API_KEY" http://127.0.0.1:8888/clients -d @post_clients.json +curl -X GET -H "Authorization: $API_KEY" http://127.0.0.1:8888/clients +curl -X POST -H "Authorization: $API_KEY" http://127.0.0.1:8888/wol -d @wol.json +curl -X POST -H "Authorization: $API_KEY" http://127.0.0.1:8888/shell/run -d @post_shell_run.json +curl -X POST -H "Authorization: $API_KEY" http://127.0.0.1:8888/shell/output -d @post_shell_output.json +curl -X POST -H "Authorization: $API_KEY" http://127.0.0.1:8888/session -d @session.json +curl -X POST -H "Authorization: $API_KEY" http://127.0.0.1:8888/poweroff -d @poweroff.json +curl -X POST -H "Authorization: $API_KEY" http://127.0.0.1:8888/reboot -d @reboot.json +curl -X POST -H "Authorization: $API_KEY" http://127.0.0.1:8888/stop -d @stop.json +curl -X POST -H "Authorization: $API_KEY" http://127.0.0.1:8888/refresh -d @refresh.json +curl -X POST -H "Authorization: $API_KEY" http://127.0.0.1:8888/hardware -d @post_clients.json +curl -X POST -H "Authorization: $API_KEY" http://127.0.0.1:8888/software -d @post_clients.json diff --git a/admin/Sources/Services/ogAdmServer/tests/session.json b/admin/Sources/Services/ogAdmServer/tests/session.json new file mode 100644 index 00000000..1b473c4c --- /dev/null +++ b/admin/Sources/Services/ogAdmServer/tests/session.json @@ -0,0 +1 @@ +{ "clients" : [ "192.168.2.1", "192.168.2.2" ], "disk" : "0", "partition" : "1"} diff --git a/admin/Sources/Services/ogAdmServer/tests/stop.json b/admin/Sources/Services/ogAdmServer/tests/stop.json new file mode 100644 index 00000000..4667303d --- /dev/null +++ b/admin/Sources/Services/ogAdmServer/tests/stop.json @@ -0,0 +1 @@ +{ "clients" : [ "192.168.2.1", "192.168.2.2" ] } diff --git a/admin/Sources/Services/ogAdmServer/tests/units/test_0001_get_clients.py b/admin/Sources/Services/ogAdmServer/tests/units/test_0001_get_clients.py new file mode 100644 index 00000000..218b41aa --- /dev/null +++ b/admin/Sources/Services/ogAdmServer/tests/units/test_0001_get_clients.py @@ -0,0 +1,19 @@ +import requests +import unittest + +class TestGetClientsMethods(unittest.TestCase): + + def setUp(self): + self.url = 'http://localhost:8888/clients' + self.headers = {'Authorization' : '07b3bfe728954619b58f0107ad73acc1'} + + def test_get(self): + returned = requests.get(self.url, headers=self.headers) + self.assertEqual(returned.status_code, 200) + + def test_post_without_data(self): + returned = requests.post(self.url, headers=self.headers) + self.assertEqual(returned.status_code, 400) + +if __name__ == '__main__': + unittest.main() diff --git a/admin/Sources/Services/ogAdmServer/tests/units/test_0002_post_clients.py b/admin/Sources/Services/ogAdmServer/tests/units/test_0002_post_clients.py new file mode 100644 index 00000000..1aae349e --- /dev/null +++ b/admin/Sources/Services/ogAdmServer/tests/units/test_0002_post_clients.py @@ -0,0 +1,16 @@ +import requests +import unittest + +class TestPostClientsMethods(unittest.TestCase): + + def setUp(self): + self.url = 'http://localhost:8888/clients' + self.headers = {'Authorization' : '07b3bfe728954619b58f0107ad73acc1'} + self.json = { 'clients' : [ '192.168.2.1', '192.168.2.2' ] } + + def test_post(self): + returned = requests.post(self.url, headers=self.headers, json=self.json) + self.assertEqual(returned.status_code, 200) + +if __name__ == '__main__': + unittest.main() diff --git a/admin/Sources/Services/ogAdmServer/tests/units/test_0003_post_wol.py b/admin/Sources/Services/ogAdmServer/tests/units/test_0003_post_wol.py new file mode 100644 index 00000000..e997aff6 --- /dev/null +++ b/admin/Sources/Services/ogAdmServer/tests/units/test_0003_post_wol.py @@ -0,0 +1,21 @@ +import requests +import unittest + +class TestPostWolMethods(unittest.TestCase): + + def setUp(self): + self.url = 'http://localhost:8888/wol' + self.headers = {'Authorization' : '07b3bfe728954619b58f0107ad73acc1'} + self.json = { 'type' : 'broadcast', 'clients' : [ { 'addr' : '192.168.2.1', + 'mac' : '00AABBCCDD01' } ] } + + def test_post(self): + returned = requests.post(self.url, headers=self.headers, json=self.json) + self.assertEqual(returned.status_code, 200) + + def test_get(self): + returned = requests.get(self.url, headers=self.headers) + self.assertEqual(returned.status_code, 405) + +if __name__ == '__main__': + unittest.main() diff --git a/admin/Sources/Services/ogAdmServer/tests/units/test_0004_post_shell_run.py b/admin/Sources/Services/ogAdmServer/tests/units/test_0004_post_shell_run.py new file mode 100644 index 00000000..2a330be9 --- /dev/null +++ b/admin/Sources/Services/ogAdmServer/tests/units/test_0004_post_shell_run.py @@ -0,0 +1,20 @@ +import requests +import unittest + +class TestPostShellRunMethods(unittest.TestCase): + + def setUp(self): + self.url = 'http://localhost:8888/shell/run' + self.headers = {'Authorization' : '07b3bfe728954619b58f0107ad73acc1'} + self.json = { 'clients' : [ '192.168.2.1', '192.168.2.2' ], 'run' : 'ls' } + + def test_post(self): + returned = requests.post(self.url, headers=self.headers, json=self.json) + self.assertEqual(returned.status_code, 200) + + def test_get(self): + returned = requests.get(self.url, headers=self.headers) + self.assertEqual(returned.status_code, 405) + +if __name__ == '__main__': + unittest.main() diff --git a/admin/Sources/Services/ogAdmServer/tests/units/test_0005_post_shell_output.py b/admin/Sources/Services/ogAdmServer/tests/units/test_0005_post_shell_output.py new file mode 100644 index 00000000..1c6f7a3a --- /dev/null +++ b/admin/Sources/Services/ogAdmServer/tests/units/test_0005_post_shell_output.py @@ -0,0 +1,20 @@ +import requests +import unittest + +class TestPostShellOutputMethods(unittest.TestCase): + + def setUp(self): + self.url = 'http://localhost:8888/shell/output' + self.headers = {'Authorization' : '07b3bfe728954619b58f0107ad73acc1'} + self.json = { 'clients' : [ '192.168.2.1', '192.168.2.2' ] } + + def test_post(self): + returned = requests.post(self.url, headers=self.headers, json=self.json) + self.assertEqual(returned.status_code, 200) + + def test_get(self): + returned = requests.get(self.url, headers=self.headers) + self.assertEqual(returned.status_code, 405) + +if __name__ == '__main__': + unittest.main() diff --git a/admin/Sources/Services/ogAdmServer/tests/units/test_0006_post_session.py b/admin/Sources/Services/ogAdmServer/tests/units/test_0006_post_session.py new file mode 100644 index 00000000..544ae2ab --- /dev/null +++ b/admin/Sources/Services/ogAdmServer/tests/units/test_0006_post_session.py @@ -0,0 +1,21 @@ +import requests +import unittest + +class TestPostSessionMethods(unittest.TestCase): + + def setUp(self): + self.url = 'http://localhost:8888/session' + self.headers = {'Authorization' : '07b3bfe728954619b58f0107ad73acc1'} + self.json = { 'clients' : [ '192.168.2.1', '192.168.2.2' ], + 'disk' : '0', 'partition' : '1'} + + def test_post(self): + returned = requests.post(self.url, headers=self.headers, json=self.json) + self.assertEqual(returned.status_code, 200) + + def test_get(self): + returned = requests.get(self.url, headers=self.headers) + self.assertEqual(returned.status_code, 405) + +if __name__ == '__main__': + unittest.main() diff --git a/admin/Sources/Services/ogAdmServer/tests/units/test_0007_post_poweroff.py b/admin/Sources/Services/ogAdmServer/tests/units/test_0007_post_poweroff.py new file mode 100644 index 00000000..d2d5b15d --- /dev/null +++ b/admin/Sources/Services/ogAdmServer/tests/units/test_0007_post_poweroff.py @@ -0,0 +1,20 @@ +import requests +import unittest + +class TestPostPoweroffMethods(unittest.TestCase): + + def setUp(self): + self.url = 'http://localhost:8888/poweroff' + self.headers = {'Authorization' : '07b3bfe728954619b58f0107ad73acc1'} + self.json = { 'clients' : [ '192.168.2.1', '192.168.2.2' ] } + + def test_post(self): + returned = requests.post(self.url, headers=self.headers, json=self.json) + self.assertEqual(returned.status_code, 200) + + def test_get(self): + returned = requests.get(self.url, headers=self.headers) + self.assertEqual(returned.status_code, 405) + +if __name__ == '__main__': + unittest.main() diff --git a/admin/Sources/Services/ogAdmServer/tests/units/test_0008_post_reboot.py b/admin/Sources/Services/ogAdmServer/tests/units/test_0008_post_reboot.py new file mode 100644 index 00000000..5ac4dc24 --- /dev/null +++ b/admin/Sources/Services/ogAdmServer/tests/units/test_0008_post_reboot.py @@ -0,0 +1,20 @@ +import requests +import unittest + +class TestPostRebootMethods(unittest.TestCase): + + def setUp(self): + self.url = 'http://localhost:8888/reboot' + self.headers = {'Authorization' : '07b3bfe728954619b58f0107ad73acc1'} + self.json = { 'clients' : [ '192.168.2.1', '192.168.2.2' ] } + + def test_post(self): + returned = requests.post(self.url, headers=self.headers, json=self.json) + self.assertEqual(returned.status_code, 200) + + def test_get(self): + returned = requests.get(self.url, headers=self.headers) + self.assertEqual(returned.status_code, 405) + +if __name__ == '__main__': + unittest.main() diff --git a/admin/Sources/Services/ogAdmServer/tests/units/test_0009_post_stop.py b/admin/Sources/Services/ogAdmServer/tests/units/test_0009_post_stop.py new file mode 100644 index 00000000..7aa96ff8 --- /dev/null +++ b/admin/Sources/Services/ogAdmServer/tests/units/test_0009_post_stop.py @@ -0,0 +1,20 @@ +import requests +import unittest + +class TestPostStopMethods(unittest.TestCase): + + def setUp(self): + self.url = 'http://localhost:8888/stop' + self.headers = {'Authorization' : '07b3bfe728954619b58f0107ad73acc1'} + self.json = { 'clients' : [ '192.168.2.1', '192.168.2.2' ] } + + def test_post(self): + returned = requests.post(self.url, headers=self.headers, json=self.json) + self.assertEqual(returned.status_code, 200) + + def test_get(self): + returned = requests.get(self.url, headers=self.headers) + self.assertEqual(returned.status_code, 405) + +if __name__ == '__main__': + unittest.main() diff --git a/admin/Sources/Services/ogAdmServer/tests/units/test_0010_post_refresh.py b/admin/Sources/Services/ogAdmServer/tests/units/test_0010_post_refresh.py new file mode 100644 index 00000000..745bdbe5 --- /dev/null +++ b/admin/Sources/Services/ogAdmServer/tests/units/test_0010_post_refresh.py @@ -0,0 +1,20 @@ +import requests +import unittest + +class TestPostRefreshMethods(unittest.TestCase): + + def setUp(self): + self.url = 'http://localhost:8888/refresh' + self.headers = {'Authorization' : '07b3bfe728954619b58f0107ad73acc1'} + self.json = { 'clients' : [ '192.168.2.1', '192.168.2.2' ] } + + def test_post(self): + returned = requests.post(self.url, headers=self.headers, json=self.json) + self.assertEqual(returned.status_code, 200) + + def test_get(self): + returned = requests.get(self.url, headers=self.headers) + self.assertEqual(returned.status_code, 405) + +if __name__ == '__main__': + unittest.main() diff --git a/admin/Sources/Services/ogAdmServer/tests/units/test_0011_post_hardware.py b/admin/Sources/Services/ogAdmServer/tests/units/test_0011_post_hardware.py new file mode 100644 index 00000000..6d9c16a9 --- /dev/null +++ b/admin/Sources/Services/ogAdmServer/tests/units/test_0011_post_hardware.py @@ -0,0 +1,20 @@ +import requests +import unittest + +class TestPostHardwareMethods(unittest.TestCase): + + def setUp(self): + self.url = 'http://localhost:8888/hardware' + self.headers = {'Authorization' : '07b3bfe728954619b58f0107ad73acc1'} + self.json = { 'clients' : [ '192.168.2.1', '192.168.2.2' ] } + + def test_post(self): + returned = requests.post(self.url, headers=self.headers, json=self.json) + self.assertEqual(returned.status_code, 200) + + def test_get(self): + returned = requests.get(self.url, headers=self.headers) + self.assertEqual(returned.status_code, 405) + +if __name__ == '__main__': + unittest.main() diff --git a/admin/Sources/Services/ogAdmServer/tests/units/test_0012_post_software.py b/admin/Sources/Services/ogAdmServer/tests/units/test_0012_post_software.py new file mode 100644 index 00000000..049a3ec8 --- /dev/null +++ b/admin/Sources/Services/ogAdmServer/tests/units/test_0012_post_software.py @@ -0,0 +1,20 @@ +import requests +import unittest + +class TestPostSoftwareMethods(unittest.TestCase): + + def setUp(self): + self.url = 'http://localhost:8888/software' + self.headers = {'Authorization' : '07b3bfe728954619b58f0107ad73acc1'} + self.json = { 'clients' : [ '192.168.2.1', '192.168.2.2' ] } + + def test_post(self): + returned = requests.post(self.url, headers=self.headers, json=self.json) + self.assertEqual(returned.status_code, 200) + + def test_get(self): + returned = requests.get(self.url, headers=self.headers) + self.assertEqual(returned.status_code, 405) + +if __name__ == '__main__': + unittest.main() diff --git a/admin/Sources/Services/ogAdmServer/tests/units/test_0013_nonexistent.py b/admin/Sources/Services/ogAdmServer/tests/units/test_0013_nonexistent.py new file mode 100644 index 00000000..b2e908ce --- /dev/null +++ b/admin/Sources/Services/ogAdmServer/tests/units/test_0013_nonexistent.py @@ -0,0 +1,30 @@ +import requests +import unittest + +class TestPostNonexistentMethods(unittest.TestCase): + + def setUp(self): + self.url = 'http://localhost:8888/nonexistent' + self.headers = {'Authorization' : '07b3bfe728954619b58f0107ad73acc1'} + self.wrong_headers = {'Authorization' : + 'WrongWrongWrongWrongWrongWrongWr'} + self.json = { 'clients' : [ '192.168.2.1', '192.168.2.2' ] } + + def test_post(self): + returned = requests.post(self.url, headers=self.headers, json=self.json) + self.assertEqual(returned.status_code, 404) + + def test_get(self): + returned = requests.get(self.url, headers=self.headers) + self.assertEqual(returned.status_code, 404) + + def test_post_unauthenticated(self): + returned = requests.post(self.url, headers=self.wrong_headers) + self.assertEqual(returned.status_code, 401) + + def test_post_without_json(self): + returned = requests.post(self.url, headers=self.headers) + self.assertEqual(returned.status_code, 404) + +if __name__ == '__main__': + unittest.main() diff --git a/admin/Sources/Services/ogAdmServer/tests/units/test_0014_big_request.py b/admin/Sources/Services/ogAdmServer/tests/units/test_0014_big_request.py new file mode 100644 index 00000000..5e5e2d71 --- /dev/null +++ b/admin/Sources/Services/ogAdmServer/tests/units/test_0014_big_request.py @@ -0,0 +1,19 @@ +import requests +import unittest + +MAX_REQ_SIZE = 4096 + +class TestBigRequest(unittest.TestCase): + + def setUp(self): + self.url = 'http://localhost:8888/clients' + self.data = 'X' * MAX_REQ_SIZE + + def test_post(self): + with self.assertRaises(requests.exceptions.ConnectionError) as context: + requests.post(self.url, data=self.data) + + self.assertTrue('Connection reset by peer' in str(context.exception)) + +if __name__ == '__main__': + unittest.main() diff --git a/admin/Sources/Services/ogAdmServer/tests/units/test_0015_wrong_headers.py b/admin/Sources/Services/ogAdmServer/tests/units/test_0015_wrong_headers.py new file mode 100644 index 00000000..8a353217 --- /dev/null +++ b/admin/Sources/Services/ogAdmServer/tests/units/test_0015_wrong_headers.py @@ -0,0 +1,29 @@ +import requests +import unittest + +class TestPostWrongHeaders(unittest.TestCase): + + def setUp(self): + self.url = 'http://localhost:8888/clients' + self.too_large_content_length_headers = {'Authorization' : + '07b3bfe728954619b58f0107ad73acc1', 'Content-Length' : + '999999999999999999999999999999999999999999999999999999999'} + self.too_large_auth_headers = {'Authorization' : + 'TooLongoTooLongTooLongTooLongTooLongTooLongTooLongTooLong' + 'TooLongoTooLongTooLongTooLongTooLongTooLongTooLongTooLong' + 'TooLongoTooLongTooLongTooLongTooLongTooLongTooLongTooLong'} + self.json = { 'clients' : [ '192.168.2.1', '192.168.2.2' ] } + + def test_post_too_large_content(self): + with self.assertRaises(requests.exceptions.ConnectionError) as context: + returned = requests.post(self.url, + headers=self.too_large_content_length_headers) + + self.assertTrue('Connection aborted' in str(context.exception)) + + def test_post_too_large_auth(self): + returned = requests.post(self.url, headers=self.too_large_auth_headers) + self.assertEqual(returned.status_code, 401) + +if __name__ == '__main__': + unittest.main() diff --git a/admin/Sources/Services/ogAdmServer/tests/wol.json b/admin/Sources/Services/ogAdmServer/tests/wol.json new file mode 100644 index 00000000..2a2f799f --- /dev/null +++ b/admin/Sources/Services/ogAdmServer/tests/wol.json @@ -0,0 +1 @@ +{ "type" : "unicast", "clients" : [ { "addr" : "192.168.2.1", "mac" : "00AABBCCDD01" } ] } diff --git a/admin/Sources/Services/opengnsys.default b/admin/Sources/Services/opengnsys.default index 9af83e29..c0196537 100644 --- a/admin/Sources/Services/opengnsys.default +++ b/admin/Sources/Services/opengnsys.default @@ -1,12 +1,17 @@ # RUN_OGADMSERVER defined as OpenGnsys Admin Server # RUN_OGADMREPO defined as OpenGnsys Repository Manager -# RUN_OGADMAGENT run task scheduler service -# RUN_BTTRACKER run Bittorrent Tracker -# RUN_BTSEEDER start seeding of selected torrent files +# RUN_OGADMAGENT run task scheduler service, only if Admin Server is enabled +# RUN_BTTRACKER run Bittorrent Tracker, only if Repository is enabled +# RUN_BTSEEDER start seeding of selected torrent files, only if Repository is enabled +# BTSEEDER_PRIORITY nice priority to seed torrent files; recommended values: +# 8 for Admin Server or Repo without Torrent +# 0 for Admin Server and Repo with Torrent +# -8 for Repo with Torrent # RUN_CRON run Cron script to check started processes RUN_OGADMSERVER="yes" RUN_OGADMREPO="yes" RUN_OGADMAGENT="yes" RUN_BTTRACKER="yes" RUN_BTSEEDER="yes" +BTSEEDER_PRIORITY=0 RUN_CRONJOB="yes" diff --git a/admin/WebConsole/asistentes/includes/asistentes/AyudanteFormularios.php b/admin/WebConsole/asistentes/includes/asistentes/AyudanteFormularios.php index 9947dcf7..c803a6bb 100644 --- a/admin/WebConsole/asistentes/includes/asistentes/AyudanteFormularios.php +++ b/admin/WebConsole/asistentes/includes/asistentes/AyudanteFormularios.php @@ -458,4 +458,4 @@ function pintaParticionesAsistenteDeployImage($cmd,$configuraciones,$idordenador echo '<TR height=5><TD colspan='.$colums.' style="BORDER-TOP: #999999 1px solid;BACKGROUND-COLOR: #FFFFFF;"> </TD></TR>';
}
-?>
+
diff --git a/admin/WebConsole/asistentes/includes/asistentes/formCloneRemotePartition.php b/admin/WebConsole/asistentes/includes/asistentes/formCloneRemotePartition.php index 0b0282b9..4caff0ae 100644 --- a/admin/WebConsole/asistentes/includes/asistentes/formCloneRemotePartition.php +++ b/admin/WebConsole/asistentes/includes/asistentes/formCloneRemotePartition.php @@ -4,7 +4,7 @@ <tr> <td class="op_basic"> <?php echo $TbMsg["WCRP32"] ?> - <select name="ipMaster" id="ipMaster" style="width:220" onChange="ListarOrigenesMaster(this.value);"> + <select name="ipMaster" id="ipMaster" style="width:220px" onChange="ListarOrigenesMaster(this.value);"> <option value=""> -- <?php echo $TbMsg["WCRP32"] ?> -- </option> <?php echo ''.htmlOPTION_equipos($cmd,$ambito,$idambito).''; ?> </select> @@ -14,7 +14,7 @@ <div id="ajaxDiv"></div> <br /> <?php echo $TbMsg["WCRP34"] ?> - <select name="targetpart" id="targetpart" style="width:220;"> + <select name="targetpart" id="targetpart" style="width:220px;"> <option value="1 1"> 1er disco - 1ª particion </option> <option value="1 2"> 1er disco - 2ª particion </option> <option value="1 3"> 1er disco - 3ª particion </option> @@ -22,19 +22,19 @@ </select> <br /> <?php echo $TbMsg["WCRP35"] ?> - <select name="idmetodo" id="idmetodo" style="width:220;"> + <select name="idmetodo" id="idmetodo" style="width:220px;"> <option value="MULTICAST"> MULTICAST </option> <option value="UNICAST"> UNICAST </option> </select> <br /> <?php echo $TbMsg["WCRP36"] ?> - <select name="tool" id="tool" style="width:220;"> + <select name="tool" id="tool" style="width:220px;"> <option value="partclone"> partclone </option> <!-- <option value="partimage"> partimage </option> --> </select> <br /> <?php echo $TbMsg["WCRP37"] ?> - <select name="compresor" id="compresor" style="width:220;"> + <select name="compresor" id="compresor" style="width:220px;"> <option value="lzop"> lzop </option> <option value="gzip"> gzip </option> </select> diff --git a/admin/WebConsole/asistentes/includes/asistentes/formDeployImage.php b/admin/WebConsole/asistentes/includes/asistentes/formDeployImage.php index 4aece176..c75c9abd 100644 --- a/admin/WebConsole/asistentes/includes/asistentes/formDeployImage.php +++ b/admin/WebConsole/asistentes/includes/asistentes/formDeployImage.php @@ -8,7 +8,7 @@ $diskPartIndex = 0; for($cfgIndex = 0; $cfgIndex < $conKeys; $cfgIndex++){ if($tbKeys[$cfgIndex]["numpar"] != 0 && $tbKeys[$cfgIndex]["clonable"] == 1){ $disksPartitions[$diskPartIndex]["text"] = "Disco ".$tbKeys[$cfgIndex]["numdisk"]." - Part ".$tbKeys[$cfgIndex]["numpar"]; - $disksPartitions[$diskPartIndex]["value"] = $tbKeys[$cfgIndex]["numdisk"].";".$tbKeys[$cfgIndex]["numpar"]; + $disksPartitions[$diskPartIndex]["value"] = $tbKeys[$cfgIndex]["numdisk"].";".$tbKeys[$cfgIndex]["numpar"].";".$tbKeys[$cfgIndex]["tipopar"]; $diskPartIndex++; } } @@ -25,21 +25,16 @@ for($cfgIndex = 0; $cfgIndex < $conKeys; $cfgIndex++){ <td class="op_basic"> <?php echo $TbMsg["WDI20"] ?> - <select name="idparticion" id="idparticion" style="WIDTH:220"> + <select name="idparticion" id="idparticion" style="width:220px"> <?php foreach($disksPartitions as $diskPartition){ echo "<option value='".$diskPartition["value"]."'>".$diskPartition["text"]." </option>"; } ?> - <!-- - <option value="1"> 1 </option> - <option value="2"> 2 </option> - <option value="3"> 3 </option> - --> </select> <br /> <?php echo $TbMsg["WDI21"] ?> - <select name="idimagen" id="idimagen" style="WIDTH:220"> + <select name="idimagen" id="idimagen" style="width:220px"> <option value=""> <?php echo $TbMsg["WDI22"] ?></option> <?php echo ''. htmlOPTION_images($cmd,$ambito,$idambito) .''; ?> </select> @@ -47,7 +42,7 @@ for($cfgIndex = 0; $cfgIndex < $conKeys; $cfgIndex++){ <?php echo $TbMsg["WDI23"] ?> <br /> - <select name="idmetodo" id="idmetodo" style="WIDTH:220;"> + <select name="idmetodo" id="idmetodo" style="width:220px;"> <option value="TORRENT"> TORRENT </option> <option value="MULTICAST"> MULTICAST </option> <option value="MULTICAST-DIRECT"> MULTICAST-DIRECT </option> diff --git a/admin/WebConsole/asistentes/includes/asistentes/formParticionado_gpt.php b/admin/WebConsole/asistentes/includes/asistentes/formParticionado_gpt.php index 9069815f..43f1d4e7 100644 --- a/admin/WebConsole/asistentes/includes/asistentes/formParticionado_gpt.php +++ b/admin/WebConsole/asistentes/includes/asistentes/formParticionado_gpt.php @@ -15,7 +15,7 @@ for ($p=1; $p<4; $p++) { <td> <input type="checkbox" id="checkGPT'.$p.'" name="checkGPT'.$p.'" value="checkGPT'.$p.'" onclick="clickPartitionCheckbox(this.form, '.$p.',true);" /> '.$TbMsg[20].' '.$p.'</td> <td> -<select name="partGPT'.$p.'" id="partGPT'.$p.'" style="width:220" disabled="true" onclick=" +<select name="partGPT'.$p.'" id="partGPT'.$p.'" style="width:220px" disabled="true" onclick=" //if (this.form.part'.$p.'.options[this.form.part'.$p.'.selectedIndex].value == \'CUSTOM\') { if (this.options[this.selectedIndex].value == \'CUSTOM\') { this.form.partGPT'.$p.'custom.disabled=false; @@ -24,10 +24,10 @@ for ($p=1; $p<4; $p++) { }">'.htmlForm_typepart($cmd,$p).'<option value="CUSTOM"> '.$TbMsg[39].' </option> </select> <br> -<select name="partGPT'.$p.'custom" id="partGPT'.$p.'custom" style="width:220" disabled="true" >'. htmlForm_typepartnotcacheGPT($p) .'</select> +<select name="partGPT'.$p.'custom" id="partGPT'.$p.'custom" style="width:220px" disabled="true" >'. htmlForm_typepartnotcacheGPT($p) .'</select> </td> <td> -<select name="sizeGPT'.$p.'" id="sizeGPT'.$p.'" style="width:220" disabled="true" onclick=" +<select name="sizeGPT'.$p.'" id="sizeGPT'.$p.'" style="width:220px" disabled="true" onclick=" if (this.form.sizeGPT'.$p.'.options[this.form.sizeGPT'.$p.'.selectedIndex].value == \'CUSTOM\') { this.form.sizeGPT'.$p.'custom.disabled=false; } else { @@ -37,7 +37,7 @@ for ($p=1; $p<4; $p++) { <option value="CUSTOM"> '.$TbMsg[39].'</option> </select> <br /> -<input type="text" style="width:100" id="sizeGPT'.$p.'custom" name="sizeGPT'.$p.'custom" value="0" disabled="true" onchange="calculateFreeDisk(this.form);" /> +<input type="text" style="width:100px" id="sizeGPT'.$p.'custom" name="sizeGPT'.$p.'custom" value="0" disabled="true" onchange="calculateFreeDisk(this.form);" /> </td> </tr> '; @@ -47,15 +47,15 @@ for ($p=1; $p<4; $p++) { <tr id="trPartition4"> <td><input type="checkbox" name="checkGPT4" value="checkGPT4" onclick="clickPartitionCheckbox(this.form, 4,true);" /> <?php echo $TbMsg[20].' '.$p;?> </td> <td> -<select name="partGPT4" id="partGPT4" style="width:220" disabled="true" onchange="checkExtendedPartition(form);"><?php echo htmlForm_typepartnotcacheGPT(4) ?></select> +<select name="partGPT4" id="partGPT4" style="width:220px" disabled="disabled" onchange="checkExtendedPartition(form);"><?php echo htmlForm_typepartnotcacheGPT(4) ?></select> </td> -<td><select name="sizeGPT4" id="sizeGPT4" style="width:220" disabled="true" onclick="if (this.form.sizeGPT4.options[this.form.sizeGPT4.selectedIndex].value == 'CUSTOM') { this.form.sizeGPT4custom.disabled=false } else { this.form.sizeGPT4custom.disabled=true }" onchange="calculateFreeGPTDisk(this.form);" /> +<td><select name="sizeGPT4" id="sizeGPT4" style="width:220px" disabled="disabled" onclick="if (this.form.sizeGPT4.options[this.form.sizeGPT4.selectedIndex].value == 'CUSTOM') { this.form.sizeGPT4custom.disabled=false } else { this.form.sizeGPT4custom.disabled=true }" onchange="calculateFreeGPTDisk(this.form);"> <option value="0"> <?php echo $TbMsg[40];?> </option> <?php echo ''. htmlForm_sizepart($cmd,4) .''; ?> <option value="CUSTOM"> <?php echo $TbMsg[39];?> </option> </select> <br /> -<input type="text" style="width:100" name="sizeGPT4custom" value="0" disabled="true" onchange="calculateFreeGPTDisk(this.form);" /></td> +<input type="text" style="width:100px" name="sizeGPT4custom" value="0" disabled="disabled" onchange="calculateFreeGPTDisk(this.form);" /></td> </tr> </table> </td> @@ -76,5 +76,3 @@ for ($p=1; $p<4; $p++) { </th> </tr> -</td> - diff --git a/admin/WebConsole/asistentes/includes/asistentes/formParticionado_msdos.php b/admin/WebConsole/asistentes/includes/asistentes/formParticionado_msdos.php index b1d6b079..08162326 100644 --- a/admin/WebConsole/asistentes/includes/asistentes/formParticionado_msdos.php +++ b/admin/WebConsole/asistentes/includes/asistentes/formParticionado_msdos.php @@ -59,15 +59,15 @@ for ($p=1; $p<4; $p++) { </select> <br /> --> -<select name="part4" id="part4" style="width:220" disabled="true" onchange="checkExtendedPartition(form);"><?php echo htmlForm_typepartnotcacheEngine10(4) ?></select> +<select name="part4" id="part4" style="width:220px" disabled="disabled" onchange="checkExtendedPartition(form);"><?php echo htmlForm_typepartnotcacheEngine10(4) ?></select> </td> -<td><select name="size4" id="size4" style="width:220" disabled="true" onclick="if (this.form.size4.options[this.form.size4.selectedIndex].value == 'CUSTOM') { this.form.size4custom.disabled=false } else { this.form.size4custom.disabled=true }" onchange="calculateFreeDisk(this.form);" /> +<td><select name="size4" id="size4" style="width:220px" disabled="disabled" onclick="if (this.form.size4.options[this.form.size4.selectedIndex].value == 'CUSTOM') { this.form.size4custom.disabled=false } else { this.form.size4custom.disabled=true }" onchange="calculateFreeDisk(this.form);"> <option value="0"> <?php echo $TbMsg[40];?> </option> <?php echo ''. htmlForm_sizepart($cmd,4) .''; ?> <option value="CUSTOM"> <?php echo $TbMsg[39];?> </option> </select> <br /> -<input type="text" style="width:100" name="size4custom" value="0" disabled="true" onchange="calculateFreeDisk(this.form);" /></td> +<input type="text" style="width:100px" name="size4custom" value="0" disabled="disabled" onchange="calculateFreeDisk(this.form);" /></td> </tr> </table> @@ -132,5 +132,3 @@ for ($p=5; $p<=9; $p++) { <?php echo $TbMsg[38];?>: <input type="text" id="freedisk" width="15" disabled="true" /> </th> </tr> - - diff --git a/admin/WebConsole/asistentes/includes/capturaacciones.php b/admin/WebConsole/asistentes/includes/capturaacciones.php index a6fa089d..3c24bce0 100644 --- a/admin/WebConsole/asistentes/includes/capturaacciones.php +++ b/admin/WebConsole/asistentes/includes/capturaacciones.php @@ -27,5 +27,5 @@ if (isset($_POST["nombreambito"])) $nombreambito=$_POST["nombreambito"]; if (isset($_POST["funcion"])) $funcion=$_POST["funcion"]; if (isset($_POST["atributos"])) $atributos=$_POST["atributos"]; if (isset($_POST["gestor"])) $gestor=$_POST["gestor"]; -?> + diff --git a/admin/WebConsole/asistentes/includes/opcionesacciones.php b/admin/WebConsole/asistentes/includes/opcionesacciones.php index a598b090..31601278 100644 --- a/admin/WebConsole/asistentes/includes/opcionesacciones.php +++ b/admin/WebConsole/asistentes/includes/opcionesacciones.php @@ -63,9 +63,9 @@ <TD> </TD> <TD> </TD> <TD><?php echo $TbMsgAux[8] ?> </TD> - <TD><INPUT maxlength=3 style="FONT-FAMILY:Arial, Helvetica, sans-serif;FONT-SIZE: 11px;WIDTH:30" name=ordprocedimiento type=text value=""></TD></TR> + <TD><INPUT maxlength=3 style="FONT-FAMILY:Arial, Helvetica, sans-serif;FONT-SIZE: 11px;WIDTH:30px" name=ordprocedimiento type=text value=""></TD></TR> <!--------------------------------------------------------------------------------------------------------------------------------> - <TR HEIGHT=10><TD colspan=4> <HR></TD></TR> + <TR><TD colspan=4 height="10px"> <HR></TD></TR> <!--------------------------------------------------------------------------------------------------------------------------------> <TR> <TD><INPUT onclick="clic_mktarea(this)" name=sw_mktarea type=checkbox></TD> @@ -87,7 +87,7 @@ <TD> </TD> <TD> </TD> <TD><?php echo $TbMsgAux[12] ?> </TD> - <TD><INPUT maxlength=3 style="FONT-FAMILY:Arial, Helvetica, sans-serif;FONT-SIZE: 11px;WIDTH:30" name=ordtarea type=text value=""></TD></TR> + <TD><INPUT maxlength=3 style="FONT-FAMILY:Arial, Helvetica, sans-serif;FONT-SIZE: 11px;WIDTH:30px" name=ordtarea type=text value=""></TD></TR> <!--------------------------------------------------------------------------------------------------------------------------------> </TABLE> </FORM> diff --git a/admin/WebConsole/asistentes/jscripts/asistentes.js b/admin/WebConsole/asistentes/jscripts/asistentes.js index 59446868..b26eef01 100644 --- a/admin/WebConsole/asistentes/jscripts/asistentes.js +++ b/admin/WebConsole/asistentes/jscripts/asistentes.js @@ -18,7 +18,7 @@ // *********************************************************************************************************** function codeCloneRemotePartition(form){ -var command ; +var protocol; switch (form.idmetodo.value) { case "MULTICAST": @@ -29,7 +29,7 @@ switch (form.idmetodo.value) break; } //form.codigo.value="cloneRemoteFromMaster " + form.ipMaster.value + " 1 " + form.PartOrigen.value + " " + form.mcastpuerto.value + ":" + form.mcastmodo.value + ":" + form.mcastdireccion.value + ":" + form.mcastvelocidad.value + "M:" + form.mcastnclien.value + ":" + form.mcastseg.value + " 1 " + form.PartOrigen.value + " " + form.tool.value + " " + form.compresor.value; -command="cloneRemoteFromMaster " + form.ipMaster.value + " " + form.source.value + " " + protocol + " " + form.targetpart.value + " " + form.tool.value + " " + form.compresor.value; +var command="cloneRemoteFromMaster " + form.ipMaster.value + " " + form.source.value + " " + protocol + " " + form.targetpart.value + " " + form.tool.value + " " + form.compresor.value; form.codigo.value="\ ogEcho log session \"[0] $MSG_SCRIPTS_TASK_START " + command + "\"\n \ ogExecAndLog command " + command + " \n "; @@ -52,6 +52,10 @@ function enableDirect(form){ function codeDeployImage(form){ +var diskPart; +var imagen; +var command; + switch (form.idmetodo.value) { case "MULTICAST": @@ -72,14 +76,14 @@ switch (form.idmetodo.value) } // Datos imagen -var imagen = form.idimagen.value.split("_"); +imagen = form.idimagen.value.split("_"); //form.codigo.value="deployImage REPO /"; if (form.modo[0].checked) { // UHU - Distinguimos entre disco y particion, el valor de idparticion sera disco;particion. eje. 1;1 - var diskPart = form.idparticion.value.split(";"); - var imagen = form.idimagen.value.split("_"); + diskPart = form.idparticion.value.split(";"); + imagen = form.idimagen.value.split("_"); command="deployImage " + imagen[0] + " /" + imagen[1] + " "+diskPart[0]+" " + diskPart[1] + " " + protocol ; form.codigo.value="\ ogEcho log session \"[0] $MSG_SCRIPTS_TASK_START " + command + "\"\n \ " + @@ -89,10 +93,12 @@ command + " \n"; form.atrib_restore.value = "dsk=" + diskPart[0] + "@par="+ diskPart[1] +"@idi=" +imagen[2] + "@nci="+imagen[1] + "@ipr="+ imagen[0] +"@ifs=" +imagen[3] + "@ptc="+protocol +"@"; + // Si la partición es EFI mostramos un aviso. + if (diskPart[2] == "EFI") alert (TbMsg['EFIPART']); } else { - command="updateCache REPO /" + imagen[1] + ".img" + " " + protocol ; + command="updateCache " + imagen[0] + " /" + imagen[1] + ".img" + " " + protocol ; form.codigo.value="\ ogEcho log session \"[0] $MSG_SCRIPTS_TASK_START " + command +"\"\n \ " + command + " \n"; @@ -109,9 +115,11 @@ function modificarCodigo() { function codeParticionado(form){ var n_disk = form.n_disk.value; var tipo_part_table = form.tipo_part_table.value; + var freedisk; + var freediskGPT; // Comprobamos si la opcion elejida es GPT o MSDOS para llamar a una funcion u otra - if(tipo_part_table == "GPT"){ - var freediskGPT = parseInt(document.getElementById("freediskGPT").value); + if(tipo_part_table === "GPT"){ + freediskGPT = parseInt(document.getElementById("freediskGPT").value); // Comprobamos que el espacio libre en el disco no sea negativo, si lo es, dar aviso if(freediskGPT < 0){ alert(TbMsg['NODISKSIZE']); @@ -124,7 +132,7 @@ function codeParticionado(form){ } } else{ - var freedisk = parseInt(document.getElementById("freedisk").value); + freedisk = parseInt(document.getElementById("freedisk").value); // Comprobamos que el espacio libre en el disco no sea negativo, si lo es, dar aviso if(freedisk < 0){ alert(TbMsg['NODISKSIZE']); @@ -136,7 +144,6 @@ function codeParticionado(form){ codeParticionadoMSDOS(form); } } - } @@ -150,19 +157,23 @@ function codeParticionadoMSDOS (form) { var n_disk = form.n_disk.value; var tipo_part_table = form.tipo_part_table.value; var maxParts = 4; - var swapPart = new Array(); + var swapPart = []; var swapCode = ""; - + var partCheck; + var partType; + var partTypeCustom; + var partSize; + var partSizeCustom; // Comprobamos si esta seleccionada la cuarta particion y no es CACHE - if(form.check4.checked && form.part4.value != "CACHE") - maxParts = 5; + if(form.check4.checked && form.part4.value !== "CACHE") + maxParts = 5; for (var nPart=1; nPart<maxParts; nPart++) { - var partCheck=eval("form.check"+nPart); + partCheck=eval("form.check"+nPart); if (partCheck.checked) { - var partType=eval("form.part"+nPart); - if (partType.value == "CUSTOM" ) { - var partTypeCustom=eval("form.part"+nPart+"custom"); + partType=eval("form.part"+nPart); + if (partType.value === "CUSTOM" ) { + partTypeCustom=eval("form.part"+nPart+"custom"); partCode += " " + partTypeCustom.value; switch(partTypeCustom.value) { case "EXTENDED": @@ -184,9 +195,9 @@ function codeParticionadoMSDOS (form) { break; } } - var partSize=eval("form.size"+nPart); - if (partSize.value == "CUSTOM" ) { - var partSizeCustom=eval("form.size"+nPart+"custom"); + partSize=eval("form.size"+nPart); + if (partSize.value === "CUSTOM" ) { + partSizeCustom=eval("form.size"+nPart+"custom"); partCode += ":" + partSizeCustom.value; } else { partCode += ":" + partSize.value; @@ -195,19 +206,18 @@ function codeParticionadoMSDOS (form) { partCode += " EMPTY:0"; } } - var cacheCode=""; // Si se selecciono la particion 4 y es CACHE - if(form.part4.value == "CACHE"){ + if(form.part4.value === "CACHE"){ if (form.check4.checked) { - if (form.size4.value == "0") { + if (form.size4.value === "0") { sizecacheCode="\ ogEcho session \"[20] $MSG_HELP_ogGetCacheSize\"\n \ -sizecache=`ogGetCacheSize` "; +sizecache=`ogGetCacheSize` \n "; cacheCode="\ initCache "+n_disk+" $sizecache NOMOUNT &>/dev/null \n "; } else { - if (form.size4.value == "CUSTOM") { + if (form.size4.value === "CUSTOM") { cacheSize = form.size4custom.value; } else { cacheSize = form.size4.value; @@ -215,40 +225,40 @@ initCache "+n_disk+" $sizecache NOMOUNT &>/dev/null \n "; cacheCode="\ initCache " + n_disk + " " + cacheSize + " NOMOUNT &>/dev/null \n "; } - cacheCode += "ogEcho session \"[60] $MSG_HELP_ogListPartitions "+n_disk+"\" \n "; - cacheCode += "ogExecAndLog command session ogListPartitions "+n_disk+" \n "; + cacheCode += "ogEcho session \"[60] $MSG_HELP_ogListPartitions "+n_disk+"\" \n "; + cacheCode += "ogExecAndLog command session ogListPartitions "+n_disk+" \n "; } else { -partCode += " EMPTY:0"; + partCode += " EMPTY:0"; } } if (extended) { var lastLogical=5; - for (var nPart=9; nPart>5; nPart--) { + for (nPart=9; nPart>5; nPart--) { if (eval ("form.check"+nPart+".checked")) { lastLogical = nPart; break; } } - for (var nPart=5; nPart<=lastLogical; nPart++) { - var partCheck=eval("form.check"+nPart); + for (nPart=5; nPart<=lastLogical; nPart++) { + partCheck=eval("form.check"+nPart); if (partCheck.checked) { - var partType=eval("form.part"+nPart); - if (partType.value == "CUSTOM" ) { - var partTypeCustom=eval("form.part"+nPart+"custom"); + partType=eval("form.part"+nPart); + if (partType.value === "CUSTOM" ) { + partTypeCustom=eval("form.part"+nPart+"custom"); logicalCode += " " + partTypeCustom.value; // Partición swap - if (partTypeCustom.value == "LINUX-SWAP") + if (partTypeCustom.value === "LINUX-SWAP") swapPart.push(nPart); } else { logicalCode += " " + partType.value; // Partición swap - if (partType.value == "LINUX-SWAP") + if (partType.value === "LINUX-SWAP") swapPart.push(nPart); } - var partSize=eval("form.size"+nPart); - if (partSize.value == "CUSTOM" ) { - var partSizeCustom=eval("form.size"+nPart+"custom"); + partSize=eval("form.size"+nPart); + if (partSize.value === "CUSTOM" ) { + partSizeCustom=eval("form.size"+nPart+"custom"); logicalCode += ":" + partSizeCustom.value; } else { logicalCode += ":" + partSize.value; @@ -270,17 +280,20 @@ partCode += " EMPTY:0"; } form.codigo.value="\ -" + sizecacheCode + " \n \ +ogEcho log session \"[0] $MSG_HELP_ogCreatePartitions "+n_disk+"\"\n \ ogEcho session \"[10] $MSG_HELP_ogUnmountAll "+n_disk+"\"\n \ ogUnmountAll "+n_disk+" 2>/dev/null \n \ ogUnmountCache \n \ +" + sizecacheCode + "\ ogEcho session \"[30] $MSG_HELP_ogUpdatePartitionTable "+n_disk+"\"\n \ ogCreatePartitionTable "+n_disk+" "+tipo_part_table +" \n \ ogDeletePartitionTable "+n_disk+" \n \ ogUpdatePartitionTable "+n_disk+" \n \ " + cacheCode + "\ ogEcho session \"[70] $MSG_HELP_ogCreatePartitions " + partCode + "\"\n \ -if ogExecAndLog command ogCreatePartitions "+n_disk+" " + partCode + "; then \n \ +ogExecAndLog command ogCreatePartitions "+n_disk+" " + partCode + " \n \ +EVAL=$? \n \ +if [ $EVAL -eq 0 ]; then \n \ ogEcho session \"[80] $MSG_HELP_ogSetPartitionActive "+n_disk+" 1\"\n \ ogSetPartitionActive "+n_disk+" 1 \n \ ogEcho log session \"[90] $MSG_HELP_ogListPartitions "+n_disk+"\"\n \ @@ -290,7 +303,7 @@ if ogExecAndLog command ogCreatePartitions "+n_disk+" " + partCode + "; then \n "+ swapCode +"\ else \n \ ogEcho session log \"[100] ERROR: $MSG_HELP_ogCreatePartitions\" \n \ - sleep 5 \n \ + return $EVAL \n \ fi"; } @@ -304,26 +317,25 @@ function codeParticionadoGPT (form) { var extended=false; var n_disk = form.n_disk.value; var tipo_part_table = form.tipo_part_table.value; - var swapPart = new Array(); + var swapPart = []; var swapCode = ""; - - numParts=document.getElementById("numGPTpartitions").value; + var numParts=document.getElementById("numGPTpartitions").value; for (var nPart=1; nPart <= numParts; nPart++) { var partCheck=eval("form.checkGPT"+nPart); if (partCheck.checked) { // Distinguimos entre cache y el resto de particiones // Solo tratamos la particion 4 como cache, si se selecciono este tipo - if(nPart == 4 && form.partGPT4.value == "CACHE") { - if (form.sizeGPT4.value == "0") { + if(nPart === 4 && form.partGPT4.value === "CACHE") { + if (form.sizeGPT4.value === "0") { sizecacheCode="\ -ogEcho session \"[20] $MSG_HELP_ogGetCacheSize\"\n \ -sizecache=`ogGetCacheSize` "; +ogEcho session \"[20] $MSG_HELP_ogGetCacheSize\" \n \ +sizecache=`ogGetCacheSize` \n "; cacheCode="\ ogEcho session \"[50] $MSG_HELP_ogCreateCache\"\n \ initCache "+ n_disk +" $sizecache NOMOUNT &>/dev/null \n "; } else { - if (form.sizeGPT4.value == "CUSTOM") { + if (form.sizeGPT4.value === "CUSTOM") { cacheSize = form.sizeGPT4custom.value; } else { cacheSize = form.sizeGPT4.value; @@ -336,20 +348,20 @@ initCache " + n_disk +" "+ cacheSize + " NOMOUNT &>/dev/null \n "; cacheCode += "ogExecAndLog command session ogListPartitions "+n_disk+" \n "; } else{ var partType=eval("form.partGPT"+nPart); - if (partType.value == "CUSTOM" ) { + if (partType.value === "CUSTOM" ) { var partTypeCustom=eval("form.partGPT"+nPart+"custom"); partCode += " " + partTypeCustom.value; // Partición swap - if (partTypeCustom.value == "LINUX-SWAP") - swapPart.push(nPart); + if (partTypeCustom.value === "LINUX-SWAP") + swapPart.push(nPart); } else { partCode += " " + partType.value; // Partición swap - if (partType.value == "LINUX-SWAP") - swapPart.push(nPart); + if (partType.value === "LINUX-SWAP") + swapPart.push(nPart); } var partSize=eval("form.sizeGPT"+nPart); - if (partSize.value == "CUSTOM" ) { + if (partSize.value === "CUSTOM" ) { var partSizeCustom=eval("form.sizeGPT"+nPart+"custom"); partCode += ":" + partSizeCustom.value; } else { @@ -369,24 +381,30 @@ initCache " + n_disk +" "+ cacheSize + " NOMOUNT &>/dev/null \n "; } form.codigo.value="\ -" + sizecacheCode + " \n \ -ogCreatePartitionTable "+n_disk+" "+tipo_part_table +" \n \ ogEcho log session \"[0] $MSG_HELP_ogCreatePartitions "+n_disk+"\"\n \ ogEcho session \"[10] $MSG_HELP_ogUnmountAll "+n_disk+"\"\n \ ogUnmountAll "+n_disk+" \n \ ogUnmountCache \n \ +" + sizecacheCode + "\ ogEcho session \"[30] $MSG_HELP_ogUpdatePartitionTable "+n_disk+"\"\n \ +ogCreatePartitionTable "+n_disk+" "+tipo_part_table +" \n \ ogDeletePartitionTable "+n_disk+" \n \ ogUpdatePartitionTable "+n_disk+" \n \ " + cacheCode + "\ ogEcho session \"[70] $MSG_HELP_ogCreatePartitions " + partCode + "\"\n \ -ogExecAndLog command ogCreatePartitions "+n_disk+" " + partCode + " \n \ -ogEcho session \"[80] $MSG_HELP_ogSetPartitionActive "+n_disk+" 1\"\n \ -ogSetPartitionActive "+n_disk+" 1 \n \ -ogEcho log session \"[90] $MSG_HELP_ogListPartitions "+n_disk+"\"\n \ -ogUpdatePartitionTable "+n_disk+" \n \ -ms-sys /dev/sda | grep unknow && ms-sys /dev/sda \n \ -ogExecAndLog command session log ogListPartitions "+n_disk+" \n"; +ogExecAndLog command ogCreatePartitions "+n_disk+" " + partCode + "\n \ +EVAL=$? \n \ +if [ $EVAL -eq 0 ]; then \n \ + ogEcho session \"[80] $MSG_HELP_ogSetPartitionActive "+n_disk+" 1\"\n \ + ogSetPartitionActive "+n_disk+" 1 \n \ + ogEcho log session \"[90] $MSG_HELP_ogListPartitions "+n_disk+"\"\n \ + ogUpdatePartitionTable "+n_disk+" \n \ + ms-sys /dev/sda | grep unknow && ms-sys /dev/sda \n \ + ogExecAndLog command session log ogListPartitions "+n_disk+" \n \ +else \n \ + ogEcho session log \"[100] ERROR: $MSG_HELP_ogCreatePartitions\" \n \ + return $EVAL \n \ +fi \n "; // Formateo de la swap form.codigo.value += swapCode; @@ -395,7 +413,7 @@ form.codigo.value += swapCode; function showPartitionForm (tipo_table_part) { document.getElementById("form"+tipo_table_part).style.display="inline"; - if(tipo_table_part == "MSDOS"){ + if(tipo_table_part === "MSDOS"){ // De los dos tipos, se oculta el otro document.getElementById("formGPT").style.display="none"; document.getElementById("warngpt").style.display="none"; @@ -419,10 +437,9 @@ function showPartitionForm (tipo_table_part) { function clickPartitionCheckbox (form, npart, isGPT) { // Si el parametro no esta definido, se toma como false isGPT = (isGPT)?isGPT:"false"; - if(isGPT == true){ + var prefix=""; + if(isGPT === true){ prefix="GPT"; - } else { - prefix=""; } var partCheck=eval("form.check"+prefix+npart); var partType=eval("form.part"+prefix+npart); @@ -434,27 +451,23 @@ function clickPartitionCheckbox (form, npart, isGPT) { if (partCheck.checked) { partType.disabled=false; partSize.disabled=false; - if(npart != 4){ - if (partType.options[partType.selectedIndex].value == "CUSTOM") { + if(npart !== 4){ + if (partType.options[partType.selectedIndex].value === "CUSTOM") { partTypeCustom.disabled=false; } } - if (partSize.options[partSize.selectedIndex].value == "CUSTOM") { - partSizeCustom.disabled=false; - } else { - partSizeCustom.disabled=true; - } + partSizeCustom.disabled = partSize.options[partSize.selectedIndex].value !== "CUSTOM"; } else { partType.disabled=true; partSize.disabled=true; // El campo TypeCustom no existe para la particion 4 - if(npart != 4) + if(npart !== 4) partTypeCustom.disabled=true; partSizeCustom.disabled=true; } if (npart <= 4) { // Si el formulario es GPT no hay extendidas - if(isGPT != true){ + if(isGPT !== true){ checkExtendedPartition(form); } calculateFreeDisk(form); @@ -479,12 +492,17 @@ function getMinDiskSize(disk){ // Calcula el tamaño de la mayor cache y lo guarda en un campo oculto function getMaxCacheSize() { var cacheSizeArray = document.getElementsByName("cachesize"); - var maxSize = cacheSizeArray[0].value; - for(var i= 1; i < cacheSizeArray.length; i++){ + // Si no existe cache el valor es cero. + if (cacheSizeArray[0]) { + var maxSize = cacheSizeArray[0].value; + for(var i= 1; i < cacheSizeArray.length; i++){ if(maxSize < cacheSizeArray[i].value) maxSize = cacheSizeArray[i].value; - } - document.getElementById("maxcachesize").value = maxSize; + } + document.getElementById("maxcachesize").value = maxSize; + } else { + document.getElementById("maxcachesize").value = 0; + } } @@ -492,7 +510,7 @@ function getMaxCacheSize() { function validaCache (freedisk) { var form = document.fdatos; var maxcachesize = parseInt(document.getElementById("maxcachesize").value); - if(form.part4.value === "CACHE" && form.check4.checked && form.size4.value == 0 ){ + if(form.part4.value === "CACHE" && form.check4.checked && form.size4.value === 0 ){ return ((freedisk - maxcachesize) > 0); } return true; @@ -501,7 +519,7 @@ function validaCache (freedisk) { // Código para calcular el espacio libre del disco. function calculateFreeDisk(form) { // Si esta seleccionada la opcion GPT, se llama a la funcion correspondiente - if(document.getElementById("tipo_part_table").value == "GPT"){ + if(document.getElementById("tipo_part_table").value === "GPT"){ calculateFreeGPTDisk(form); } // Capturamos el disco seleccionado @@ -517,7 +535,7 @@ function calculateFreeDisk(form) { var partSize=eval("form.size"+npart); var partSizeCustom=eval("form.size"+npart+"custom"); if (partCheck.checked) { - if (partSize.options[partSize.selectedIndex].value == "CUSTOM") { + if (partSize.options[partSize.selectedIndex].value === "CUSTOM") { freeDisk.value -= parseInt(partSizeCustom.value); } else { freeDisk.value -= parseInt(partSize.options[partSize.selectedIndex].value); @@ -531,7 +549,7 @@ function calculateFreeDisk(form) { freeDisk.style.fontWeight = "normal"; freeDisk.style.fontStyle = "normal"; } - if (form.size4.value == 0) { + if (form.size4.value === 0) { freeDisk.value += " (- cache)"; // Aviso de caché sin modificar. } } @@ -539,7 +557,7 @@ function calculateFreeDisk(form) { // Código para calcular el espacio libre del disco. en el formulario GPT function calculateFreeGPTDisk(form) { // Si esta seleccionada la opcion MSDOS, se llama a la funcion correspondiente - if(document.getElementById("tipo_part_table").value == "MSDOS"){ + if(document.getElementById("tipo_part_table").value === "MSDOS"){ calculateFreeDisk(form); } // Capturamos el disco seleccionado @@ -549,13 +567,13 @@ function calculateFreeGPTDisk(form) { var freeDisk=document.getElementById("freediskGPT"); // Capturamos el numero de particiones que hay hechas - numParts=document.getElementById("numGPTpartitions").value; - for (npart=1; npart<=numParts; npart++) { + var numParts=document.getElementById("numGPTpartitions").value; + for (var npart=1; npart<=numParts; npart++) { var partCheck=eval("form.checkGPT"+npart); var partSize=eval("form.sizeGPT"+npart); var partSizeCustom=eval("form.sizeGPT"+npart+"custom"); if (partCheck.checked) { - if (partSize.options[partSize.selectedIndex].value == "CUSTOM") { + if (partSize.options[partSize.selectedIndex].value === "CUSTOM") { freeDisk.value -= parseInt(partSizeCustom.value); } else { freeDisk.value -= parseInt(partSize.options[partSize.selectedIndex].value); @@ -569,7 +587,7 @@ function calculateFreeGPTDisk(form) { freeDisk.style.fontWeight = "normal"; freeDisk.style.fontStyle = "normal"; } - if (form.size4.value == 0) { + if (form.size4.value === 0) { freeDisk.value += " (- cache)"; // Aviso de caché sin modificar. } } @@ -603,28 +621,28 @@ function addGPTPartition(){ partitionTypes+='<OPTION value="BIOS-BOOT"> BIOS Boot </OPTION>'; - table = document.getElementById("particionesGPT"); + var table = document.getElementById("particionesGPT"); // Capturamos el numero de particiones, antes incrementamos document.getElementById("numGPTpartitions").value = parseInt(document.getElementById("numGPTpartitions").value)+1; - numPart=document.getElementById("numGPTpartitions").value; - partitionRow = table.insertRow(-1); + var numPart=document.getElementById("numGPTpartitions").value; + var partitionRow = table.insertRow(-1); partitionRow.id = "trPartition"+numPart; partitionRow.innerHTML="<td> \ <input type='checkbox' name='checkGPT"+numPart+"' value='checkGPT"+numPart+"' onclick='clickPartitionCheckbox(this.form, "+numPart+",true);' /> Partición "+numPart+"</td> \ <td>\ <select name='partGPT"+numPart+"' id='partGPT"+numPart+"' style='width:220' disabled='true' onclick=' \ - if (this.options[this.selectedIndex].value == \'CUSTOM\') { \ + if (this.options[this.selectedIndex].value === \"CUSTOM\") { \ this.form.partGPT"+numPart+"custom.disabled=false; \ } else { \ this.form.partGPT"+numPart+"custom.disabled=true; \ }'><option value='CUSTOM'> Personalizar </option> \ </select> \ <br> \ -<select name='partGPT"+numPart+"custom' id='partGPT"+numPart+"custom' style='width:220' disabled='true' >"+partitionTypes+"</select> \ +<select name='partGPT"+numPart+"custom' id='partGPT"+numPart+"custom' style='width:220px' disabled='true' >"+partitionTypes+"</select> \ </td> \ <td> \ -<select name='sizeGPT"+numPart+"' id='sizeGPT"+numPart+"' style='width:220' disabled='true' onclick=' \ - if (this.form.size"+numPart+".options[this.form.size"+numPart+".selectedIndex].value == \'CUSTOM\') { \ +<select name='sizeGPT"+numPart+"' id='sizeGPT"+numPart+"' style='width:220px' disabled='true' onclick=' \ + if (this.form.size"+numPart+".options[this.form.size"+numPart+".selectedIndex].value === \"CUSTOM\") { \ this.form.sizeGPT"+numPart+"custom.disabled=false; \ } else { \ this.form.sizeGPT"+numPart+"custom.disabled=true; \ @@ -632,19 +650,19 @@ function addGPTPartition(){ ' onchange='calculateFreeGPTDisk(this.form);'>0<option value='CUSTOM'> Personalizar </option> \ </select> \ <br /> \ -<input type='text' style='width:100' name='sizeGPT"+numPart+"custom' value='0' disabled='true' onchange='calculateFreeDisk(this.form);' /> \ +<input type='text' style='width:100px' name='sizeGPT"+numPart+"custom' value='0' disabled='true' onchange='calculateFreeDisk(this.form);' /> \ </td>" } // Agrega una nueva fila a la tabla de particiones con una nueva particion function deleteGPTPartition(){ - table = document.getElementById("particionesGPT"); + var table = document.getElementById("particionesGPT"); // Capturamos el numero de particiones - numPart=document.getElementById("numGPTpartitions").value; + var numPart=document.getElementById("numGPTpartitions").value; // Si ya solo quedan 4 particiones, no se elimina ni se decrementa el contador if(numPart > 4){ - partitionRow = document.getElementById("trPartition"+numPart); + var partitionRow = document.getElementById("trPartition"+numPart); table.deleteRow(partitionRow.rowIndex); // Decrementamos el numero de particiones document.getElementById("numGPTpartitions").value = parseInt(document.getElementById("numGPTpartitions").value)-1; @@ -655,21 +673,21 @@ function deleteGPTPartition(){ function checkExtendedPartition(form) { var logical=document.getElementById("logicas"); var visible=false; - for (npart=1; npart<=4; npart++) { + for (var npart=1; npart<=4; npart++) { var partCheck=eval("form.check"+npart); var partType=eval("form.part"+npart); var partTypeCustom=eval("form.part"+npart+"custom"); if (partCheck.checked) { partType.style.fontWeight = "normal"; - if (partType.value == "EXTENDED") { + if (partType.value === "EXTENDED") { visible=true; partType.style.fontWeight = "bold"; } // La particion 4 no tiene partTypeCustom - if(npart != 4){ - partTypeCustom.style.fontWeight = "normal"; - if (partType.value == "CUSTOM" && partTypeCustom.value == "EXTENDED") { + if(npart !== 4){ + partTypeCustom.style.fontWeight = "normal"; + if (partType.value === "CUSTOM" && partTypeCustom.value === "EXTENDED") { visible=true; partTypeCustom.style.fontWeight = "bold"; } diff --git a/admin/WebConsole/barramenu.php b/admin/WebConsole/barramenu.php index 7584c0d3..881c4d7f 100644 --- a/admin/WebConsole/barramenu.php +++ b/admin/WebConsole/barramenu.php @@ -276,20 +276,14 @@ for ($i=0;$i<count($numidcentro);$i++) </select> <TD width=4 align=middle><IMG src="./images/iconos/separitem.gif"></TD> -<TD width=4 align=middle><input name="submit" type="submit" value="Cambiar" ></input></TD> +<TD width=4 align=middle><input name="submit" type="submit" value="Cambiar"></TD> </form> <TD width=0 align=middle><IMG src="./images/iconos/separitem.gif"></TD> <TD><?php echo "Usuario.:.".ucwords($_SESSION["wusuario"]); ?></TD> -</TD> <?php } }?> - - - - - </TR> </TABLE> </TR> diff --git a/admin/WebConsole/clases/AdoPhp.php b/admin/WebConsole/clases/AdoPhp.php index 4265911c..b0dd5574 100644 --- a/admin/WebConsole/clases/AdoPhp.php +++ b/admin/WebConsole/clases/AdoPhp.php @@ -18,13 +18,13 @@ class Conexion{ var $controlador; // Controlador var $estado; // Estado de la conexion var $proveedor; // Proveedor de BD - var $error; // Colecci� de errores ocurridos durante el proceso (C�igo de error) - var $ultimoerror; // Ultimo error detectado - var $inderror; // Nmero de errores ocurridos durante el proceso + var $error; // Colección de errores ocurridos durante el proceso (Código de error) + var $ultimoerror; // Último error detectado + var $inderror; // Número de errores ocurridos durante el proceso var $msgerrores=array( "No se ha producido ningn error", - "001 : conexiónError - La conexion no se pudo establecer", - "002 : conexiónError - Se estableció la conexióncon el servidor pero la base de datos no responde", + "001 : conexiónError - La conexión no se pudo establecer", + "002 : conexiónError - Se estableció la conexión con el servidor pero la base de datos no responde", "003 : conexiónError - No se ha podido cerrar la actual conexión", "004 : conexiónError - El objeto está ocupado intentando establecer una conexiónanterior", "005 : conexiónError - La conexiónya está cerrada", @@ -653,7 +653,6 @@ class Recordset{ $this->campos=mysqli_fetch_array($this->filas); } } -} /* ------------------------------------------------------------------------------------------- Esta función devuelve una matriz asociativa con el nombre de los campos del recordset ---------------------------------------------------------------------------------------------*/ @@ -676,4 +675,5 @@ class Recordset{ } return($infocampos); } +} diff --git a/admin/WebConsole/clases/ArbolVistaXML.php b/admin/WebConsole/clases/ArbolVistaXML.php index 27ab3e1d..e83d448c 100644 --- a/admin/WebConsole/clases/ArbolVistaXML.php +++ b/admin/WebConsole/clases/ArbolVistaXML.php @@ -183,11 +183,9 @@ class ArbolVistaXML{ else $arbol='<TABLE style="BORDER-BOTTOM:#000000 1px solid;" border=0 cellspacing=0 cellpadding=0>'; $arbol.='<TR height="16px">'; - $atributosHTML=" "; $atributosHTML=$this->gXML->Atributos($nodo); $colornodo=""; $fondonodo=""; - $estilo=""; $atributosHTML=$this->gXML->TomaAtributoEspecial("colornodo",$colornodo,$atributosHTML); $atributosHTML=$this->gXML->TomaAtributoEspecial("fondonodo",$fondonodo,$atributosHTML); if ($colornodo!="" ) $colornodo=' COLOR:'.$colornodo.";"; @@ -196,7 +194,7 @@ class ArbolVistaXML{ if ($estilo!="" ) $estilo='style="'.$colornodo.$fondonodo.'"'; for ($i=0;$i<$nivel;$i++){ // Niveles previos - $arbol.='<TD '.$estilo.'width="3px"></TD>'; + $arbol.='<TD '.$estilo.' width="3px"></TD>'; $arbol.='<TD '.$estilo.' width="16px"><IMG src="'.$this->c_imgnivel[$i].'" width="16px" height="16px" ></TD>'; } $arbol.='<TD '.$estilo.' width="3px"></TD>'; // Desplazamiento de la imagen diff --git a/admin/WebConsole/clases/EncripDescrip.php b/admin/WebConsole/clases/EncripDescrip.php index c65c30a7..4752c8ad 100644 --- a/admin/WebConsole/clases/EncripDescrip.php +++ b/admin/WebConsole/clases/EncripDescrip.php @@ -52,4 +52,3 @@ class EncripDescrip{ return( $this->cadena); } } -?>
\ No newline at end of file diff --git a/admin/WebConsole/clases/MenuContextual.php b/admin/WebConsole/clases/MenuContextual.php index 7c49f5f2..1b108a4e 100644 --- a/admin/WebConsole/clases/MenuContextual.php +++ b/admin/WebConsole/clases/MenuContextual.php @@ -161,4 +161,3 @@ class MenuContextual{ return($layer); } } -?>
\ No newline at end of file diff --git a/admin/WebConsole/clases/SockHidra.php b/admin/WebConsole/clases/SockHidra.php index f3151b0f..4f49abba 100644 --- a/admin/WebConsole/clases/SockHidra.php +++ b/admin/WebConsole/clases/SockHidra.php @@ -3,18 +3,18 @@ include_once("EncripDescrip.php"); /*================================================================================ - Clase para conectarse con el servidor hidra y enviar comandos - Cualquier error producido en los procesos se puede recuperar con los m�odos + Clase para conectarse con el Servidor OpenGnsys y enviar comandos + Cualquier error producido en los procesos se puede recuperar con los métodos ================================================================================*/ class SockHidra{ - var $ultimoerror; // Ultimo error detectado - var $descripultimoerror; // Descripción del ltimo error detectado - var $socket; // Stream socket - var $servidor; // El servidor hidra - var $puerto; // El puerto odnde se conectar� - var $timeout; // El tiempo de espera para la conexi� - var $encripdescrip; // El encriptador - var $LONGITUD_TRAMA; // M�ima longitud de la trama + var $ultimoerror; // Ultimo error detectado + var $descripultimoerror; // Descripción del último error detectado + var $socket; // Stream socket + var $servidor; // El Servidor OpenGnsys + var $puerto; // El puerto donde se conectará + var $timeout; // El tiempo de espera para la conexión + var $encripdescrip; // El encriptador + var $LONGITUD_TRAMA; // Máxima longitud de la trama //________________________________________________________________________________________ // @@ -22,7 +22,7 @@ class SockHidra{ // Parámetros: // - servidor: El nombre o la IP del servidor // - puerto: El puerto usado para las comunicaciones - // - timeout: El tiempo de espera para la conexi� + // - timeout: El tiempo de espera para la conexión //________________________________________________________________________________________ function __construct($servidor, $puerto, $timeout=30){ $this->servidor=$servidor; @@ -36,7 +36,7 @@ class SockHidra{ } //________________________________________________________________________________________ // - // Averigua si el parametro pasado es una IP. devuelve true en caso afirmativo + // Averigua si el parámetro pasado es una IP. devuelve true en caso afirmativo //________________________________________________________________________________________ function _esIP(){ return(false); @@ -45,13 +45,13 @@ class SockHidra{ // // Conecta con el servidor // Devuelve: - // - false: Si falla la conexi� + // - false: Si falla la conexión // - true: En caso contrario //________________________________________________________________________________________ function conectar(){ $this->socket = socket_create (AF_INET, SOCK_STREAM, 0); if ($this->socket < 0) { - $this->ultimoerror=socket_strerror($socket); + $this->ultimoerror=socket_strerror($this->socket); $this->descripultimoerror="socket_create() fallo"; return(false); } @@ -65,9 +65,9 @@ class SockHidra{ } //________________________________________________________________________________________ // - // Cerrar la conexióncon el servidor + // Cierra la conexión con el servidor // Devuelve: - // - false: Si falla la conexi� + // - false: Si falla la conexión // - true: En caso contrario //________________________________________________________________________________________ function desconectar(){ @@ -75,21 +75,21 @@ class SockHidra{ } //________________________________________________________________________________________ // - // Devuelve el c�igo del ltimo error ocurrido durante el proceso anterior. + // Devuelve el código del último error ocurrido durante el proceso anterior. //________________________________________________________________________________________ function UltimoError(){ return($this->ultimoerror); } //________________________________________________________________________________________ // - // Devuelve una cadena con el mensage del ltimo error ocurrido durante el proceso anterior. + // Devuelve una cadena con el mensage del último error ocurrido durante el proceso anterior. //________________________________________________________________________________________ function DescripUltimoError(){ return($this->descripultimoerror); } //________________________________________________________________________________________ // - // Envia una petición de comando al servidor + // EnvÃa una petición de comando al servidor // Parámetros: // - Parámetros: Parámetros del mensaje //________________________________________________________________________________________ @@ -102,7 +102,7 @@ class SockHidra{ } //________________________________________________________________________________________ // - // Envia una petición de información al servidor + // EnvÃa una petición de información al servidor // Parámetros: // - Parámetros: Parámetros del mensaje //________________________________________________________________________________________ @@ -115,7 +115,7 @@ class SockHidra{ } //________________________________________________________________________________________ // - // Envia un mensaje al servidor + // EnvÃa un mensaje al servidor // Parámetros: // - trama: Trama a enviar // - tipo: Tipo de mensaje @@ -157,7 +157,7 @@ class SockHidra{ global $LONCABECERA; global $LONBLK; - $lon=$lSize=0; + $lon=$hlonprm=$lSize=0; $buffer=""; $cadenaret=""; do{ @@ -168,16 +168,16 @@ class SockHidra{ if (substr($buffer,0,15)!="@JMMLCAMDJ_MCDJ") return($cadenaret); // No se reconoce la trama $hlonprm=hexdec(substr($buffer,$LONCABECERA,$LONHEXPRM)); - $lSize=$hlonprm; // Longitud total de la trama con los parametros encriptados + $lSize=$hlonprm; // Longitud total de la trama con los parámetros encriptados } }while($lon<$lSize); - $lon=$lSize-($LONCABECERA+$LONHEXPRM); // Longitud de los parametros aún encriptados - $parametros=substr($buffer,$LONCABECERA+$LONHEXPRM,$lon); // Parametros encriptados - $parametros=$this->encripdescrip->Desencriptar($parametros,$hlonprm); // Parametros sin encriptar + $lon=$lSize-($LONCABECERA+$LONHEXPRM); // Longitud de los parámetros aún encriptados + $parametros=substr($buffer,$LONCABECERA+$LONHEXPRM,$lon); // Parámetros encriptados + $parametros=$this->encripdescrip->Desencriptar($parametros,$hlonprm); // Parámetros sin encriptar $hlonprm=str_pad(dechex($lon),$LONHEXPRM,"0",STR_PAD_LEFT); // Rellena con ceros $cadenaret=substr($buffer,0,$LONCABECERA).$hlonprm.$parametros; return($cadenaret); } } -?> + diff --git a/admin/WebConsole/clases/XmlPhp.php b/admin/WebConsole/clases/XmlPhp.php index 55def93e..38711c02 100644 --- a/admin/WebConsole/clases/XmlPhp.php +++ b/admin/WebConsole/clases/XmlPhp.php @@ -282,4 +282,4 @@ class XmlPhp{ return($info); } } // Fin de la clase -?> + diff --git a/admin/WebConsole/comandos/Apagar.php b/admin/WebConsole/comandos/Apagar.php index 284b9cd0..ac316a2c 100644 --- a/admin/WebConsole/comandos/Apagar.php +++ b/admin/WebConsole/comandos/Apagar.php @@ -27,8 +27,8 @@ if (!$cmd) //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="./jscripts/Apagar.js"></SCRIPT> diff --git a/admin/WebConsole/comandos/Arrancar.php b/admin/WebConsole/comandos/Arrancar.php index a73e2d7f..21ff0b9d 100644 --- a/admin/WebConsole/comandos/Arrancar.php +++ b/admin/WebConsole/comandos/Arrancar.php @@ -27,8 +27,8 @@ if (!$cmd) //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="./jscripts/Arrancar.js"></SCRIPT> @@ -43,8 +43,7 @@ if (!$cmd) // include_once("./includes/FiltradoAmbito.php"); ?> - <P align=center><SPAN align=center class=subcabeceras><?php echo $TbMsg[7] ?></SPAN></p> - </BR> + <P align=center><SPAN class=subcabeceras><?php echo $TbMsg[7] ?></SPAN></p> <TABLE id="tabla_conf" align=center border=0 cellPadding=1 cellSpacing=1 class=tabla_datos> <TR> <TH align=center> </Th> diff --git a/admin/WebConsole/comandos/Comando.php b/admin/WebConsole/comandos/Comando.php index d4e7eff8..ccece6e6 100644 --- a/admin/WebConsole/comandos/Comando.php +++ b/admin/WebConsole/comandos/Comando.php @@ -27,8 +27,8 @@ if (!$cmd) //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="./jscripts/Comando.js"></SCRIPT> diff --git a/admin/WebConsole/comandos/Configurar.php b/admin/WebConsole/comandos/Configurar.php index 6ce89cfa..89e34713 100644 --- a/admin/WebConsole/comandos/Configurar.php +++ b/admin/WebConsole/comandos/Configurar.php @@ -53,9 +53,9 @@ if (isset($_POST["fk_nombreSO"])) $fk_nombreSO=$_POST["fk_nombreSO"]; //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> - <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> +<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> +<TITLE>Administración web de aulas</TITLE> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <STYLE TYPE="text/css"></STYLE> <SCRIPT language="javascript" src="./jscripts/Configurar.js"></SCRIPT> @@ -126,7 +126,7 @@ if (isset($_POST["fk_nombreSO"])) $fk_nombreSO=$_POST["fk_nombreSO"]; echo '<TD align=center>'.HTMLSELECT_particiones(0).'</TD>'; echo '<TD align=center>'.HTMLSELECT_tipospar($cmd,"").'</TD>'; echo '<TD align=center>'.HTMLSELECT_sistemasficheros($cmd,"").'</TD>'; - echo '<TD align=center><INPUT type="text" style="width:100" value="0"></TD>'; + echo '<TD align=center><INPUT type="text" style="width:100px" value="0"></TD>'; echo '<TD align=center> </TD>'; echo '<TD align=center>'.opeFormatear().'</TD></TR></TABlE>'; //________________________________________________________________________________________________________ diff --git a/admin/WebConsole/comandos/CrearImagen.php b/admin/WebConsole/comandos/CrearImagen.php index bab18e16..1944872a 100644 --- a/admin/WebConsole/comandos/CrearImagen.php +++ b/admin/WebConsole/comandos/CrearImagen.php @@ -38,7 +38,7 @@ if (!$resul){ <HTML> <HEAD> <TITLE>Administración web de aulas</TITLE> - <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> +<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="./jscripts/CrearImagen.js"></SCRIPT> <SCRIPT language="javascript" src="../clases/jscripts/HttpLib.js"></SCRIPT> @@ -51,11 +51,11 @@ if (!$resul){ $urlimg='../images/iconos/ordenador.gif'; $textambito=$TbMsg[15]; - echo '<p align=center><span class=cabeceras>'.$TbMsg[0].' </span><br>'; - echo '<IMG src="'.$urlimg.'"> <span align=center class=subcabeceras> - <U>'.$TbMsg[14].': '.$textambito.','.$nombreambito.'</U></span> </span></p>'; + echo '<p align="center"><span class="cabeceras">'.$TbMsg[0].' </span><br>'; + echo '<img src="'.$urlimg.'" alt="*"> <span align=center class=subcabeceras> + <u>'.$TbMsg[14].': '.$textambito.','.$nombreambito.'</u></span> </p>'; - echo '<P align=center><SPAN align=center class=subcabeceras><?php echo $TbMsg[6] ?></SPAN></P>'."\n"; + echo '<p align="center"><SPAN class="subcabeceras">'.$TbMsg[6].'</span></p>'."\n"; if (tiene_repo($idambito)) { echo '<FORM align=center name="fdatos">'."\n". @@ -68,9 +68,8 @@ if (!$resul){ ' <TH align=center>'.$TbMsg["CREATE_NOREPO"].'</TH>'."\n". ' </TR>'."\n". '</TABLE>'."\n"; - } ?> + } -<?php //________________________________________________________________________________________________________ include_once("./includes/formularioacciones.php"); //________________________________________________________________________________________________________ @@ -83,8 +82,8 @@ if (!$resul){ <?php /************************************************************************************************************************************************** Recupera los datos de un ordenador - Parametros: - - cmd: Una comando ya operativo (con conexiónabierta) + Parámetros: + - cmd: Una comando ya operativo (con conexiónabierta) - ido: El identificador del ordenador ________________________________________________________________________________________________________*/ function tomaPropiedades($cmd,$ido){ @@ -93,11 +92,11 @@ function tomaPropiedades($cmd,$ido){ global $mac; global $idperfilhard; global $idrepositorio; - $rs=new Recordset; + $rs=new Recordset; $cmd->texto="SELECT nombreordenador,ip,mac,idperfilhard,idrepositorio FROM ordenadores WHERE idordenador='".$ido."'"; - $rs->Comando=&$cmd; + $rs->Comando=&$cmd; if (!$rs->Abrir()) return(false); // Error al abrir recordset - $rs->Primero(); + $rs->Primero(); if (!$rs->EOF){ $nombreordenador=$rs->campos["nombreordenador"]; $ip=$rs->campos["ip"]; @@ -123,15 +122,16 @@ function HTMLSELECT_imagenes($cmd,$idrepositorio,$idperfilsoft,$disk,$particion, $cmd->texto="SELECT DISTINCT imagenes.idimagen,imagenes.descripcion,imagenes.nombreca, imagenes.idperfilsoft, repositorios.nombrerepositorio, repositorios.ip FROM imagenes INNER JOIN repositorios USING (idrepositorio) - WHERE repositorios.idrepositorio = (SELECT idrepositorio FROM ordenadores WHERE ordenadores.ip='".$masterip."') + WHERE imagenes.tipo=".$IMAGENES_MONOLITICAS." + AND repositorios.idrepositorio IN (SELECT idrepositorio FROM ordenadores WHERE ordenadores.ip='".$masterip."') OR repositorios.ip='".$masterip."' ORDER BY imagenes.descripcion"; - $rs=new Recordset; - $rs->Comando=&$cmd; + $rs=new Recordset; + $rs->Comando=&$cmd; $SelectHtml.= '<SELECT class="formulariodatos" id="despleimagen_'.$disk."_".$particion.'" style="WIDTH: 300">'; $SelectHtml.= ' <OPTION value="0"></OPTION>'; if ($rs->Abrir()){ - $rs->Primero(); + $rs->Primero(); while (!$rs->EOF){ $SelectHtml.='<OPTION value="'.$rs->campos["idimagen"]."_".$rs->campos["nombreca"]."_".$rs->campos["ip"].'"'; if($idperfilsoft==$rs->campos["idperfilsoft"]) $SelectHtml.=" selected "; diff --git a/admin/WebConsole/comandos/CrearImagenBasica.php b/admin/WebConsole/comandos/CrearImagenBasica.php index 875aeb40..d3d048ef 100644 --- a/admin/WebConsole/comandos/CrearImagenBasica.php +++ b/admin/WebConsole/comandos/CrearImagenBasica.php @@ -1,12 +1,12 @@ <?php // ************************************************************************************************************************************************* -// Aplicaci�n WEB: ogAdmWebCon -// Autor: Jos� Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla -// Fecha Creaci�n: A�o 2012 -// Fecha �ltima modificaci�n: Noviembre-2012 +// Aplicación WEB: ogAdmWebCon +// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla +// Fecha Creación: Año 2012 +// Fecha última modificación: Noviembre-2012 // Nombre del fichero: CrearImagenBas.php -// Descripci�n : -// Implementaci�n del comando "CrearImagenBas.php" +// Descripción : +// Implementación del comando "CrearImagenBas.php" // ************************************************************************************************************************************************* include_once("../includes/ctrlacc.php"); include_once("../clases/AdoPhp.php"); @@ -35,9 +35,9 @@ if (!$resul){ //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administraci�n web de aulas</TITLE> <HEAD> - <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> +<TITLE>Administración web de aulas</TITLE> +<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="./jscripts/CrearImagenBasica.js"></SCRIPT> <SCRIPT language="javascript" src="../clases/jscripts/HttpLib.js"></SCRIPT> @@ -50,29 +50,27 @@ if (!$resul){ Cabecera -------------------------------------------------------------------------------------------> <P align=center class=cabeceras><?php echo $TbMsg[0] ?><P> - <P align=center> - <SPAN align=center class=subcabeceras><?php echo $TbMsg[1] ?></SPAN> - </BR> + <P align=center><SPAN class=subcabeceras><?php echo $TbMsg[1] ?></SPAN></P> + <BR> <TABLE align=center border=0 cellPadding=1 cellSpacing=1 class=tabla_datos> <TR> - <TH align=center> <?php echo $TbMsg[2] ?> </TD> + <TH align=center> <?php echo $TbMsg[2] ?> </TH> <?php echo '<TD>'.$nombreordenador.'</TD>';?> <TD colspan=2 valign=top align=left rowspan=3><IMG border=2 style="border-color:#63676b" src="../images/fotoordenador.gif"></TD> </TR> <TR> - <TH align=center> <?php echo $TbMsg[3] ?> </TD> + <TH align=center> <?php echo $TbMsg[3] ?> </TH> <?php echo '<TD>'.$ip.'</TD>';?> </TR> <TR> - <TH align=center> <?php echo $TbMsg[4] ?> </TD> + <TH align=center> <?php echo $TbMsg[4] ?> </TH> <?php echo '<TD>'.$mac.'</TD>';?> </TR> </TABLE> - </P> <!------------------------------------------------------------------------------------------ Subcabecera -------------------------------------------------------------------------------------------> - <P align=center><SPAN align=center class=subcabeceras><?php echo $TbMsg[6] ?></SPAN></p> + <P align=center><SPAN class=subcabeceras><?php echo $TbMsg[6] ?></SPAN></p> <FORM align=center name="fdatos"> <TABLE width=90% align=center border=0 cellPadding=1 cellSpacing=1 class=tabla_datos> <TR> @@ -114,7 +112,7 @@ if (!$resul){ /*---------------------------------------------------------------------------------------------- Recupera los datos de un ordenador - Parametros: + Parámetros: - ido: El identificador del ordenador ----------------------------------------------------------------------------------------------*/ function tomaPropiedades($cmd,$ido) @@ -126,8 +124,8 @@ function tomaPropiedades($cmd,$ido) $rs=new Recordset; $cmd->texto="SELECT nombreordenador,ip,mac,idperfilhard,idrepositorio - FROM ordenadores - WHERE idordenador='".$ido."'"; + FROM ordenadores + WHERE idordenador='".$ido."'"; $rs->Comando=&$cmd; if (!$rs->Abrir()) return(false); // Error al abrir recordset $rs->Primero(); @@ -184,13 +182,11 @@ function HTMLSELECT_imagenes($idimagen) $SelectHtml=""; $cmd->texto="SELECT imagenes.idimagen,imagenes.descripcion,imagenes.nombreca,imagenes.ruta, - repositorios.ip,repositorios.nombrerepositorio - FROM imagenes - INNER JOIN repositorios on imagenes.idrepositorio = repositorios.idrepositorio - WHERE tipo=".$IMAGENES_BASICAS." - AND imagenes.idcentro=".$idcentro; - - //echo $cmd->texto; + repositorios.ip,repositorios.nombrerepositorio + FROM imagenes + INNER JOIN repositorios on imagenes.idrepositorio = repositorios.idrepositorio + WHERE tipo=".$IMAGENES_BASICAS." + AND imagenes.idcentro=".$idcentro; $rs=new Recordset; $rs->Comando=&$cmd; if (!$rs->Abrir()) return(""); @@ -209,5 +205,4 @@ function HTMLSELECT_imagenes($idimagen) $SelectHtml.= '</SELECT>'; return($SelectHtml); } -?> diff --git a/admin/WebConsole/comandos/CrearSoftIncremental.php b/admin/WebConsole/comandos/CrearSoftIncremental.php index 87c3cb69..0381e4c6 100644 --- a/admin/WebConsole/comandos/CrearSoftIncremental.php +++ b/admin/WebConsole/comandos/CrearSoftIncremental.php @@ -1,12 +1,12 @@ <?php // ************************************************************************************************************************************************* -// Aplicaci�n WEB: ogAdmWebCon -// Autor: Jos� Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla -// Fecha Creaci�n: A�o 2012 -// Fecha �ltima modificaci�n: Noviembre-2012 +// Aplicación WEB: ogAdmWebCon +// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla +// Fecha Creación: Año 2012 +// Fecha última modificación: Noviembre-2012 // Nombre del fichero: CrearImagenBas.php -// Descripci�n : -// Implementaci�n del comando "CrearImagenBas.php" +// Descripción: +// Implementación del comando "CrearImagenBas.php" // ************************************************************************************************************************************************* include_once("../includes/ctrlacc.php"); include_once("../clases/AdoPhp.php"); @@ -26,19 +26,19 @@ include_once("./includes/capturaacciones.php"); // $cmd=CreaComando($cadenaconexion); if (!$cmd) - Header('Location: '.$pagerror.'?herror=2'); // Error de conexi�n con servidor B.D. + Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D. //________________________________________________________________________________________________________ // $resul=tomaPropiedades($cmd,$idambito); if (!$resul){ - Header('Location: '.$pagerror.'?herror=3'); // Error de recuperaci�n de datos. + Header('Location: '.$pagerror.'?herror=3'); // Error de recuperación de datos. } //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administraci�n web de aulas</TITLE> <HEAD> - <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> +<TITLE>Administración web de aulas</TITLE> +<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="./jscripts/CrearSoftIncremental.js"></SCRIPT> <SCRIPT language="javascript" src="../clases/jscripts/HttpLib.js"></SCRIPT> @@ -50,30 +50,29 @@ if (!$resul){ <!------------------------------------------------------------------------------------------ Cabecera -------------------------------------------------------------------------------------------> - <P align=center class=cabeceras><?php echo $TbMsg[0] ?><P> + <P align=center class=cabeceras><?php echo $TbMsg[0] ?></P> <P align=center> - <SPAN align=center class=subcabeceras><?php echo $TbMsg[1] ?></SPAN> - </BR> + <SPAN class=subcabeceras><?php echo $TbMsg[1] ?></SPAN> + <BR> <TABLE align=center border=0 cellPadding=1 cellSpacing=1 class=tabla_datos> <TR> - <TH align=center> <?php echo $TbMsg[2] ?> </TD> + <TH align=center> <?php echo $TbMsg[2] ?> </TH> <?php echo '<TD>'.$nombreordenador.'</TD>';?> <TD colspan=2 valign=top align=left rowspan=3><IMG border=2 style="border-color:#63676b" src="../images/fotoordenador.gif"></TD> </TR> <TR> - <TH align=center> <?php echo $TbMsg[3] ?> </TD> + <TH align=center> <?php echo $TbMsg[3] ?> </TH> <?php echo '<TD>'.$ip.'</TD>';?> </TR> <TR> - <TH align=center> <?php echo $TbMsg[4] ?> </TD> + <TH align=center> <?php echo $TbMsg[4] ?> </TH> <?php echo '<TD>'.$mac.'</TD>';?> </TR> </TABLE> - </P> <!------------------------------------------------------------------------------------------ Subcabecera -------------------------------------------------------------------------------------------> - <P align=center><SPAN align=center class=subcabeceras><?php echo $TbMsg[6] ?></SPAN></p> + <P align=center><SPAN class=subcabeceras><?php echo $TbMsg[6] ?></SPAN></p> <FORM align=center name="fdatos"> <TABLE width=90% align=center border=0 cellPadding=1 cellSpacing=1 class=tabla_datos> <TR> @@ -115,7 +114,7 @@ if (!$resul){ /*---------------------------------------------------------------------------------------------- Recupera los datos de un ordenador - Parametros: + Parámetros: - ido: El identificador del ordenador ----------------------------------------------------------------------------------------------*/ function tomaPropiedades($cmd,$ido) @@ -154,13 +153,13 @@ function opcionesAdicionales() $tablaHtml.='<tr><th colspan=8 align=center><b> '.$TbMsg[11].' </b></th></tr>'; $tablaHtml.='<tr id="trOpc"> <td align=right>'.$TbMsg[13].'</td> - <td ><input type=checkbox name="bpi"></td>'; // Borrar imagen del servidor o borrar partici�n previamente + <td ><input type=checkbox name="bpi"></td>'; // Borrar imagen del servidor o borrar partición previamente $tablaHtml.=' <td align=right>'.$TbMsg[14].'</td> - <td><input type=checkbox name="cpc"></td>'; // Copiar adem�s la imagen a la cach� + <td><input type=checkbox name="cpc"></td>'; // Copiar además la imagen a la caché $tablaHtml.=' <td align=right>'.$TbMsg[15].'</td> - <td><input type=checkbox name="bpc"></td>'; // Borrar imagen de la cach� previamente antes de copiarla + <td><input type=checkbox name="bpc"></td>'; // Borrar imagen de la caché previamente antes de copiarla $tablaHtml.=' <td align=right>'.$TbMsg[16].'</td> <td><input type=checkbox name="nba"></td>'; // No borrar archivos en destino @@ -206,5 +205,4 @@ function HTMLSELECT_imagenes($idimagen) $SelectHtml.= '</SELECT>'; return($SelectHtml); } -?> diff --git a/admin/WebConsole/comandos/EjecutarScripts.php b/admin/WebConsole/comandos/EjecutarScripts.php index 539e78c4..d5c31b6a 100644 --- a/admin/WebConsole/comandos/EjecutarScripts.php +++ b/admin/WebConsole/comandos/EjecutarScripts.php @@ -26,8 +26,8 @@ if (!$cmd) //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="./jscripts/EjecutarScripts.js"></SCRIPT> @@ -45,8 +45,8 @@ if (!$cmd) //________________________________________________________________________________________________________ ?> <P align=center> - <SPAN align=center class=subcabeceras><?php echo $TbMsg[10] ?></SPAN> - <form align=center name="fdatos"> + <SPAN class=subcabeceras><?php echo $TbMsg[10] ?></SPAN> + <form name="fdatos"> <table align=center class=tabla_datos border="0" cellpadding="0" cellspacing="1"> <tr> <th><?php echo $TbMsg[12] ?></th> diff --git a/admin/WebConsole/comandos/EliminarImagenCache.php b/admin/WebConsole/comandos/EliminarImagenCache.php index a49f6eac..4fb0088a 100644 --- a/admin/WebConsole/comandos/EliminarImagenCache.php +++ b/admin/WebConsole/comandos/EliminarImagenCache.php @@ -28,9 +28,9 @@ if (!$cmd) //___________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administraci??n web de aulas</TITLE> <HEAD> - <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> +<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> +<TITLE>Administración web de aulas</TITLE> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="./jscripts/EliminarImagenCache.js"></SCRIPT> <SCRIPT language="javascript" src="../clases/jscripts/HttpLib.js"></SCRIPT> @@ -159,9 +159,7 @@ switch($ambito){ <?php }?> <!-- //#agp--> - <P align=center> - <SPAN align=center class=subcabeceras><?php echo $TbMsg[7] ?></SPAN> - </P> + <P align=center><SPAN class=subcabeceras><?php echo $TbMsg[7] ?></SPAN></P> <form align=center name="fdatos"> <?php echo tabla_configuraciones($cmd,$idambito); ?> @@ -330,8 +328,7 @@ switch($ambito){ $tablaHtml=""; - $rs->Comando=&$cmd; - $rs=new Recordset; + $rs=new Recordset; $rs->Comando=&$cmd; if (!$rs->Abrir()) return($tablaHtml); // Error al abrir recordset $rs->Primero(); @@ -415,9 +412,9 @@ switch($ambito){ if ($esdir[$numdir] == "d"){$ruta[$numdir]='rm%20-r%20/opt/opengnsys/cache/opt/opengnsys/images/'.$value;}else{$ruta[$numdir]='rm%20-r%20/opt/opengnsys/cache/opt/opengnsys/images/'.$value.$todo;} echo '<TR>'.chr(13); echo '<TD align=center> '.$contar.' </TD>'.chr(13); - if ($esdir[$numdir]=="d"){echo '<TD align=center><font color=blue> D </font></TD>'.chr(13);}else{echo '<TD align=center> F </TD>'.chr(13);} + if ($esdir[$numdir]=="d"){echo '<TD align=center><div style="color: blue"> D </div></TD>'.chr(13);}else{echo '<TD align=center> F </TD>'.chr(13);} echo '<TD align=center ><input type="radio" name="codigo" value='.$ruta[$numdir].'></TD>'.chr(13); - if ($esdir[$numdir]=="d"){echo '<TD align=center><font color=blue> '.$value.' </font></TD>'.chr(13);}else{echo '<TD align=center> '.$value.' </TD>'.chr(13);} + if ($esdir[$numdir]=="d"){echo '<TD align=center><div style="color: blue"> '.$value.' </div></TD>'.chr(13);}else{echo '<TD align=center> '.$value.' </TD>'.chr(13);} if ($cuentarepos==1){echo '<TD align=center> '.$tamanofich[0].'</TD>'.chr(13);} echo '</TR>'.chr(13); $contar++;$numdir++; diff --git a/admin/WebConsole/comandos/EliminarImagenRepositorio.php b/admin/WebConsole/comandos/EliminarImagenRepositorio.php index 7fbb046a..5708679c 100644 --- a/admin/WebConsole/comandos/EliminarImagenRepositorio.php +++ b/admin/WebConsole/comandos/EliminarImagenRepositorio.php @@ -16,12 +16,9 @@ include_once("../idiomas/php/".$idioma."/comandos/opcionesacciones_".$idioma.".p include_once("../gestores/relaciones/imagenes_eliminacion.php"); -if (isset($_POST["opcion"])) {$opcion=$_POST["opcion"];}else{$opcion;} // Recoge parametros -//$opcion=$_POST["opcion"]; // Recoge parametros -if (isset($_POST["idrepositorio"])) {$idrepositorio=$_POST["idrepositorio"];}else{$idrepositorio;} -//$idrepositorio=$_POST["idrepositorio"]; +if (isset($_POST["opcion"])) {$opcion=$_POST["opcion"];}else{$opcion='';} // Recoge parametros +if (isset($_POST["idrepositorio"])) {$idrepositorio=$_POST["idrepositorio"];}else{$idrepositorio=0;} if (isset($_POST["grupoid"])) {$grupoid=$_POST["grupoid"];}else{$grupoid='';} -//$grupoid=$_POST["grupoid"]; $idcentro=$_SESSION["widcentro"]; if (isset($_GET["opcion"])) $opcion=$_GET["opcion"]; // Recoge parametros if (isset($_GET["idrepositorio"])) $idrepositorio=$_GET["idrepositorio"]; @@ -32,13 +29,12 @@ if (isset($_POST["modov"])) {$modov=$_POST["modov"];}else{$modov=0;} //________________________________________________________________________________________________________ $idcomando=10; $descricomando="Ejecutar Script"; -//echo $ambito."<br>"; -//echo $idambito."<br>"; $funcion="EjecutarScript"; -//echo $atributos."<br>"; -//echo $gestor; $gestor="../comandos/gestores/gestor_Comandos.php"; //$gestor="./ElimininarImagenRepositorio.php"; +$espaciorepos=array(); +$separarogunit=0; +$iprepositorio=''; //________________________________________________________________________________________________________ $cmd=CreaComando($cadenaconexion); if (!$cmd) @@ -145,8 +141,7 @@ $repolocal="si"; sort($imarepo); // Ordenamos el Array - if (isset($_POST["contar"])) {$cuantos=$_POST["contar"];}else{$cuantos=0;$contar;} - //$cuantos=$_POST["contar"]; + if (isset($_POST["contar"])) {$cuantos=$_POST["contar"];}else{$cuantos=0;} for ($i=1;$i<=$cuantos;$i++) { //######################################################################### @@ -242,8 +237,8 @@ $repolocal="no"; ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="../clases/jscripts/HttpLib.js"></SCRIPT> @@ -268,10 +263,10 @@ function confirmeliminar() {var mensaje="<?php echo $TbMsg[17];?>";if(confirm(me <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <?php if ($espaciorepo != ""){?> <TR> - <TH align=center> <?php echo $TbMsg[18]?> </TD> - <TH align=center> <?php echo $TbMsg[19]?> </TD> - <TH align=center> <?php echo $TbMsg[20]?> </TD> - <TH align=center> <?php echo $TbMsg[21]?> </TD> + <TH align=center> <?php echo $TbMsg[18]?> </TH> + <TH align=center> <?php echo $TbMsg[19]?> </TH> + <TH align=center> <?php echo $TbMsg[20]?> </TH> + <TH align=center> <?php echo $TbMsg[21]?> </TH> </TR> <TR> <TD align=center width=110> <?php echo $totalrepo?> </TD> @@ -281,7 +276,7 @@ function confirmeliminar() {var mensaje="<?php echo $TbMsg[17];?>";if(confirm(me </TR> <?php }else {?> <TR> - <TH align=center width=485> <?php echo $TbMsg[22]?> </TD> + <TH align=center width=485> <?php echo $TbMsg[22]?> </TH> </TR> <?php } ?> @@ -292,7 +287,7 @@ function confirmeliminar() {var mensaje="<?php echo $TbMsg[17];?>";if(confirm(me <div align=center class=subcabeceras><?php echo $TbMsg[7] ?> - <form align="center" name="modoadmin" action="./EliminarImagenRepositorio.php" method="post"> + <form name="modoadmin" action="./EliminarImagenRepositorio.php" method="post"> <INPUT type="hidden" name="opcion" value="<?php echo $opcion?>"> <INPUT type="hidden" name="idrepositorio" value="<?php echo $idrepositorio?>"> <INPUT type="hidden" name="grupoid" value="<?php echo $grupoid ?>"> @@ -517,11 +512,11 @@ function confirmeliminar() {var mensaje="<?php echo $TbMsg[17];?>";if(confirm(me if ($bustor<>"") { - echo '<TD align=center><font color=red><strong> '.$TbMsg[14].'</strong></TD>'.chr(13); + echo '<TD align=center><div style="color: red; font-weight: bold;"> '.$TbMsg[14].'</div></TD>'.chr(13); } elseif (file_exists($ficherodelete)) { - echo '<TD align=center><font color=red><strong> '.$TbMsg[15].'</strong></TD>'.chr(13);} + echo '<TD align=center><div style="color: red; font-weight: bold;"><div> '.$TbMsg[15].'</div></TD>'.chr(13);} else { echo '<TD align=center ><input type="checkbox" name="checkbox'.$contar.'" value="si"></TD>'.chr(13); @@ -530,11 +525,11 @@ function confirmeliminar() {var mensaje="<?php echo $TbMsg[17];?>";if(confirm(me // ########## Tipo #################################################################### if ($tipo[$contandotipo]=="D") { - echo '<TD align=center ><font color=blue>'.$tipo[$contandotipo].'</TD>'.chr(13); + echo '<TD align=center ><div style="color: blue;">'.$tipo[$contandotipo].'</div></TD>'.chr(13); } elseif ($tipo[$contandotipo]=="B") { - echo '<TD align=center><font color=red> '.$tipo[$contandotipo].' </TD>'.chr(13); + echo '<TD align=center><div style="color: red;"> '.$tipo[$contandotipo].' </div></TD>'.chr(13); }else{ echo '<TD align=center >'.$tipo[$contandotipo].'</TD>'.chr(13); } @@ -548,8 +543,8 @@ function confirmeliminar() {var mensaje="<?php echo $TbMsg[17];?>";if(confirm(me // ########## Aviso si directorio distinto al del centro - en vista repositorio ########## $aviso=''; if ($separarogunit == 1) { - if ( $nombrecaidcentro != 0 and "/".$imgdir != $dircentros[$nombrecaidcentro]){ - $aviso="<font color=red> * </font>"; + if ( $nombrecaidcentro != 0 and "/".$imgdir != $dircentros[$nombrecaidcentro]){ + $aviso="<style=\"color: red;\"> * </div>"; $textoaviso="<tr>\n <th colspan='7' align='center'>". " <sup>*</sup> $TbMsg[33] </th>\n". "</tr>\n"; @@ -559,7 +554,7 @@ function confirmeliminar() {var mensaje="<?php echo $TbMsg[17];?>";if(confirm(me // ########## Nombre de Imagen ######################################################## if ($tipo[$contandotipo]=="D") { - echo '<TD align=center><font color=blue> '.str_replace(":"," / ",$value).' '.$aviso.' </TD>'.chr(13); + echo '<TD align=center><div style="color: blue;"> '.str_replace(":"," / ",$value).' '.$aviso.' </div></TD>'.chr(13); } else { @@ -579,9 +574,9 @@ function confirmeliminar() {var mensaje="<?php echo $TbMsg[17];?>";if(confirm(me } elseif (preg_match("/.ant/",$nombrefichero)) { - echo '<TD align=center><font color=red> ------</strong></TD>'.chr(13); + echo '<TD align=center><div style="color: red;"> ------</div></TD>'.chr(13); }else{ - echo '<TD align=center><font color=red> '.$TbMsg[25].'</strong></TD>'.chr(13); + echo '<TD align=center><div style="color: red;"> '.$TbMsg[25].'</div></TD>'.chr(13); } // VISTA REPOSITORIO COMPLETO if ($modov == 1){ @@ -609,7 +604,7 @@ function confirmeliminar() {var mensaje="<?php echo $TbMsg[17];?>";if(confirm(me <INPUT type="hidden" name="grupoid" value="<?php echo $grupoid ?>"> <INPUT type="hidden" name="modov" value="<?php echo $modov; ?>"> - </TABLE><BR/> + </TABLE><P> <TABLE align=center> <TR> <TD></TD> @@ -627,4 +622,3 @@ function confirmeliminar() {var mensaje="<?php echo $TbMsg[17];?>";if(confirm(me </HTML> <?php } ?> - diff --git a/admin/WebConsole/comandos/EnviarMensaje.php b/admin/WebConsole/comandos/EnviarMensaje.php index 15e9237a..9f2f97a6 100644 --- a/admin/WebConsole/comandos/EnviarMensaje.php +++ b/admin/WebConsole/comandos/EnviarMensaje.php @@ -5,7 +5,7 @@ // Fecha Creación: Año 2009-2010 // Fecha Última modificación: Agosto-2010 // Nombre del fichero: Comando.php -// Descripción : +// Descripción: // Implementación del comando "EjecutarScripts" // ************************************************************************************************************************************************* include_once("../includes/ctrlacc.php"); @@ -26,8 +26,8 @@ if (!$cmd) //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="./jscripts/EnviarMensaje.js"></SCRIPT> @@ -45,10 +45,8 @@ if (!$cmd) include_once("./includes/FiltradoAmbito.php"); //________________________________________________________________________________________________________ ?> - <P align=center> - <SPAN align=center class=subcabeceras><?php echo $TbMsg[10] ?></SPAN> - <form align=center name="fdatos"> - + <P align=center><SPAN class=subcabeceras><?php echo $TbMsg[10] ?></SPAN></P> + <form name="fdatos"> <table align=center class=tabla_datos border="0" cellpadding="0" cellspacing="1"> <tr> <th> <?php echo $TbMsg[7]?> </th> @@ -67,7 +65,7 @@ if (!$cmd) // Sólo permite ejecutar inmediantemente como opción de ejecución // include_once("./includes/opcionesacciones.php") ?> - <P align=center><span align=center class=subcabeceras>Opciones de Ejecución</span></P> + <P align=center><span class=subcabeceras>Opciones de Ejecución</span></P> <table align=center> <tr> <td><img border=0 style="cursor:pointer" src="../images/boton_aceptar_esp.gif" onclick="confirmar()" ></td> @@ -89,7 +87,7 @@ if (!$cmd) </tr> </table> - </FORM> + </form> <SCRIPT language="javascript"> Sondeo(); </SCRIPT> diff --git a/admin/WebConsole/comandos/IniciarSesion.php b/admin/WebConsole/comandos/IniciarSesion.php index 404a004d..5bcf5b9f 100644 --- a/admin/WebConsole/comandos/IniciarSesion.php +++ b/admin/WebConsole/comandos/IniciarSesion.php @@ -6,7 +6,7 @@ // Fecha Última modificación: Agosto-2010 // Nombre del fichero: IniciarSesion.php // Descripción : -// Implementación� del comando "Iniciar Sesión" +// Implementación del comando "Iniciar Sesión" // Version 0.1 - En ambito distinto a ordenador muestra los equipos agrupados en configuraciones iguales. // Fecha: 2014-10-23 // Autora: Irina Gomez, ETSII Universidad de Sevilla @@ -32,9 +32,9 @@ if (!$cmd) //___________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> - <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> +<TITLE>Administración web de aulas</TITLE> +<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="./jscripts/IniciarSesion.js"></SCRIPT> <SCRIPT language="javascript" src="../clases/jscripts/HttpLib.js"></SCRIPT> @@ -56,11 +56,10 @@ if (!$cmd) $cadenaip=""; $cadenamac=""; RecopilaIpesMacs($cmd,$ambito,$idambito); - + ?> - <P align=center> - <SPAN align=center class=subcabeceras><?php echo $TbMsg[7] ?></SPAN> - </BR> + <P align=center><SPAN class=subcabeceras><?php echo $TbMsg[7] ?></SPAN></P> + <BR> <form align=center name="fdatos" method="POST"> <INPUT type="hidden" name="idambito" value="<?php echo $idambito?>"> <INPUT type="hidden" name="ambito" value="<?php echo $ambito?>"> @@ -84,7 +83,7 @@ if (!$cmd) <?php /************************************************************************************************************************************************** Recupera los datos de un ordenador - Parametros: + Parámetros: - cmd: Una comando ya operativo (con conexiónabierta) - ido: El identificador del ordenador ________________________________________________________________________________________________________*/ @@ -134,9 +133,7 @@ function tabla_configuraciones($cmd,$idordenador){ AND tipospar.clonable=1 AND nombresos.nombreso!='DATA' ORDER BY ordenadores_particiones.numpar"; - - $rs->Comando=&$cmd; - $rs=new Recordset; + $rs=new Recordset; $rs->Comando=&$cmd; if (!$rs->Abrir()) return($tablaHtml); // Error al abrir recordset $rs->Primero(); @@ -153,5 +150,3 @@ function tabla_configuraciones($cmd,$idordenador){ $rs->Cerrar(); return($tablaHtml); } -?> - diff --git a/admin/WebConsole/comandos/InventarioHardware.php b/admin/WebConsole/comandos/InventarioHardware.php index afba8f2d..b722f6d2 100644 --- a/admin/WebConsole/comandos/InventarioHardware.php +++ b/admin/WebConsole/comandos/InventarioHardware.php @@ -27,8 +27,8 @@ if (!$cmd) //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="./jscripts/InventarioHardware.js"></SCRIPT> diff --git a/admin/WebConsole/comandos/InventarioSoftware.php b/admin/WebConsole/comandos/InventarioSoftware.php index b8756ec9..e0d98da4 100644 --- a/admin/WebConsole/comandos/InventarioSoftware.php +++ b/admin/WebConsole/comandos/InventarioSoftware.php @@ -26,8 +26,8 @@ if (!$cmd) //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="./jscripts/InventarioSoftware.js"></SCRIPT> @@ -64,12 +64,11 @@ switch($ambito){ echo '<IMG src="'.$urlimg.'"> <span align=center class=subcabeceras><U>'.$TbMsg[6].': '.$textambito.','.$nombreambito.'</U></span> </span></p>'; ?> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> - <P align=center> - <SPAN align=center class=subcabeceras><?php echo $TbMsg[7] ?></SPAN> - </p> + <P align=center><SPAN class=subcabeceras><?php echo $TbMsg[7] ?></SPAN></p> + <?php echo tablaConfiguracionesInventarioSoftware($cmd,$idambito); ?> - </BR> + <BR> <?php //________________________________________________________________________________________________________ include_once("./includes/formularioacciones.php"); diff --git a/admin/WebConsole/comandos/Reiniciar.php b/admin/WebConsole/comandos/Reiniciar.php index 0f759e20..ea8817cc 100644 --- a/admin/WebConsole/comandos/Reiniciar.php +++ b/admin/WebConsole/comandos/Reiniciar.php @@ -27,8 +27,8 @@ if (!$cmd) //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="./jscripts/Reiniciar.js"></SCRIPT> diff --git a/admin/WebConsole/comandos/RestaurarImagen.php b/admin/WebConsole/comandos/RestaurarImagen.php index 047f6174..e052feb9 100644 --- a/admin/WebConsole/comandos/RestaurarImagen.php +++ b/admin/WebConsole/comandos/RestaurarImagen.php @@ -58,9 +58,9 @@ if (isset($_POST["fk_nombreSO"])) $fk_nombreSO=$_POST["fk_nombreSO"]; //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> - <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> +<TITLE>Administración web de aulas</TITLE> +<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <STYLE TYPE="text/css"></STYLE> <SCRIPT language="javascript" src="./jscripts/RestaurarImagen.js"></SCRIPT> diff --git a/admin/WebConsole/comandos/RestaurarImagenBasica.php b/admin/WebConsole/comandos/RestaurarImagenBasica.php index d7be1eec..77faeb4d 100644 --- a/admin/WebConsole/comandos/RestaurarImagenBasica.php +++ b/admin/WebConsole/comandos/RestaurarImagenBasica.php @@ -1,12 +1,12 @@ <?php // ******************************************************************************************************** -// Aplicaci�n WEB: ogAdmWebCon -// Autor: Jos� Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla -// Fecha Creaci�n: A�o 2012 -// Fecha �ltima modificaci�n: Noviembre-2012 +// Aplicación WEB: ogAdmWebCon +// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla +// Fecha Creación: Año 2012 +// Fecha última modificación: Noviembre-2012 // Nombre del fichero: RestaurarImagenBasica.php -// Descripci�n : -// Implementaci�n del comando "RestaurarImagenB�sica" +// Descripción: +// Implementación del comando "RestaurarImagenBasica" // ******************************************************************************************************** include_once("../includes/ctrlacc.php"); include_once("../clases/AdoPhp.php"); @@ -27,11 +27,11 @@ include_once("../includes/ConfiguracionesParticiones.php"); // $cmd=CreaComando($cadenaconexion); if (!$cmd) - Header('Location: '.$pagerror.'?herror=2'); // Error de conexi�n con servidor B.D. + Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D. //________________________________________________________________________________________________________ // // -// Captura par�metros +// Captura parámetros //________________________________________________________________________________________________________ // @@ -44,23 +44,23 @@ $fk_sysFi=0; $fk_tamano=0; $fk_nombreSO=0; -if (isset($_GET["idambito"])) $idambito=$_GET["idambito"]; -if (isset($_GET["ambito"])) $ambito=$_GET["ambito"]; +if (isset($_GET["idambito"])) $idambito=$_GET["idambito"]; +if (isset($_GET["ambito"])) $ambito=$_GET["ambito"]; -if (isset($_POST["idambito"])) $idambito=$_POST["idambito"]; -if (isset($_POST["ambito"])) $ambito=$_POST["ambito"]; +if (isset($_POST["idambito"])) $idambito=$_POST["idambito"]; +if (isset($_POST["ambito"])) $ambito=$_POST["ambito"]; -if (isset($_POST["fk_sysFi"])) $fk_sysFi=$_POST["fk_sysFi"]; -if (isset($_POST["fk_tamano"])) $fk_tamano=$_POST["fk_tamano"]; -if (isset($_POST["fk_nombreSO"])) $fk_nombreSO=$_POST["fk_nombreSO"]; +if (isset($_POST["fk_sysFi"])) $fk_sysFi=$_POST["fk_sysFi"]; +if (isset($_POST["fk_tamano"])) $fk_tamano=$_POST["fk_tamano"]; +if (isset($_POST["fk_nombreSO"])) $fk_nombreSO=$_POST["fk_nombreSO"]; //________________________________________________________________________________________________________ // ?> <HTML> -<TITLE>Administraci�n web de aulas</TITLE> <HEAD> - <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> +<TITLE>Administración web de aulas</TITLE> +<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <STYLE TYPE="text/css"></STYLE> <SCRIPT language="javascript" src="./jscripts/RestaurarImagenBasica.js"></SCRIPT> @@ -142,7 +142,7 @@ if (isset($_POST["fk_nombreSO"])) $fk_nombreSO=$_POST["fk_nombreSO"]; /*________________________________________________________________________________________________________ - Crea la etiqueta html <SELECT> de las im�genes + Crea la etiqueta html <SELECT> de las imágenes ________________________________________________________________________________________________________*/ function HTMLSELECT_imagenes($cmd,$idimagen,$numpar,$codpar,$icp,$sw,$idordenadores,$ambito) { @@ -216,5 +216,3 @@ function opcionesAdicionales() echo $tablaHtml; } -?> - diff --git a/admin/WebConsole/comandos/RestaurarSoftIncremental.php b/admin/WebConsole/comandos/RestaurarSoftIncremental.php index 3075819d..a2e03d15 100644 --- a/admin/WebConsole/comandos/RestaurarSoftIncremental.php +++ b/admin/WebConsole/comandos/RestaurarSoftIncremental.php @@ -1,12 +1,12 @@ <?php // ******************************************************************************************************** -// Aplicaci�n WEB: ogAdmWebCon -// Autor: Jos� Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla -// Fecha Creaci�n: A�o 2012 -// Fecha �ltima modificaci�n: Noviembre-2012 +// Aplicación WEB: ogAdmWebCon +// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla +// Fecha Creación: Año 2012 +// Fecha última modificación: Noviembre-2012 // Nombre del fichero: RestaurarSoftIncremental.php -// Descripci�n : -// Implementaci�n del comando "RestaurarSoftIncremental" +// Descripción: +// Implementación del comando "RestaurarSoftIncremental" // ******************************************************************************************************** include_once("../includes/ctrlacc.php"); include_once("../clases/AdoPhp.php"); @@ -27,11 +27,11 @@ include_once("../includes/ConfiguracionesParticiones.php"); // $cmd=CreaComando($cadenaconexion); if (!$cmd) - Header('Location: '.$pagerror.'?herror=2'); // Error de conexi�n con servidor B.D. + Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D. //________________________________________________________________________________________________________ // // -// Captura par�metros +// Captura parámetros //________________________________________________________________________________________________________ // @@ -58,9 +58,9 @@ if (isset($_POST["fk_nombreSO"])) $fk_nombreSO=$_POST["fk_nombreSO"]; // ?> <HTML> -<TITLE>Administraci�n web de aulas</TITLE> <HEAD> - <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> +<TITLE>Administración web de aulas</TITLE> +<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <STYLE TYPE="text/css"></STYLE> <SCRIPT language="javascript" src="./jscripts/RestaurarSoftIncremental.js"></SCRIPT> @@ -139,7 +139,7 @@ if (isset($_POST["fk_nombreSO"])) $fk_nombreSO=$_POST["fk_nombreSO"]; /*________________________________________________________________________________________________________ - Crea la etiqueta html <SELECT> de las im�genes + Crea la etiqueta html <SELECT> de las imágenes ________________________________________________________________________________________________________*/ function HTMLSELECT_imagenes($cmd,$idimagen,$numpar,$codpar,$icp,$sw,$idordenadores,$ambito) { @@ -192,29 +192,24 @@ function HTMLSELECT_imagenes($cmd,$idimagen,$numpar,$codpar,$icp,$sw,$idordenado ----------------------------------------------------------------------------------------------*/ function opcionesAdicionales() { - global $TbMsg; - + global $TbMsg; + $tablaHtml='<table style="display:none" width="95%" align=center border=0 cellPadding=0 cellSpacing=0 class="tabla_accesos">'; $tablaHtml.='<tr><th colspan=8 align=center><b> '.$TbMsg[11].' </b></th></tr>'; $tablaHtml.='<tr id="trOpc"> <td align=right>'.$TbMsg[35].'</td> - <td><input type=checkbox name="bpi"></td>'; // Borrar imagen previamente del servidor - $tablaHtml.=' + <td><input type=checkbox name="bpi"></td>'; // Borrar imagen previamente del servidor + $tablaHtml.=' <td align=right>'.$TbMsg[36].'</td> - <td><input type=checkbox name="cpc"></td>'; // Copiar adem�s la imagen a la cach� - $tablaHtml.=' + <td><input type=checkbox name="cpc"></td>'; // Copiar además la imagen a la caché + $tablaHtml.=' <td align=right>'.$TbMsg[37].'</td> - <td><input type=checkbox name="bpc"></td>'; // Borrar imagen de la cach� previamente antes de copiarla - $tablaHtml.=' + <td><input type=checkbox name="bpc"></td>'; // Borrar imagen de la caché previamente antes de copiarla + $tablaHtml.=' <td align=right>'.$TbMsg[39].'</td> - <td><input type=checkbox name="nba"></td>'; // No borrar archivos en destino + <td><input type=checkbox name="nba"></td>'; // No borrar archivos en destino $tablaHtml.='</tr>'; $tablaHtml.=' </table>'; echo $tablaHtml; } - -?> - - - diff --git a/admin/WebConsole/comandos/gestores/gestor_Comandos.php b/admin/WebConsole/comandos/gestores/gestor_Comandos.php index b2a81b79..943fdac7 100644 --- a/admin/WebConsole/comandos/gestores/gestor_Comandos.php +++ b/admin/WebConsole/comandos/gestores/gestor_Comandos.php @@ -20,6 +20,16 @@ include_once("../../includes/RecopilaIpesMacs.php"); //________________________________________________________________________________________________________ include_once("../includes/capturaacciones.php"); //________________________________________________________________________________________________________ + +define('OG_CMD_ID_WAKEUP', 1); +define('OG_CMD_ID_POWEROFF', 2); +define('OG_CMD_ID_REBOOT', 5); +define('OG_CMD_ID_HARDWARE', 6); +define('OG_CMD_ID_SOFTWARE', 7); +define("OG_CMD_ID_SCRIPT", 8); +define('OG_CMD_ID_SESSION', 9); +define('OG_CMD_ID_SENDMESSAGE', 16); + // Recoge parametros de seguimiento $sw_ejya=""; $sw_seguimiento=""; @@ -73,7 +83,6 @@ $atributos=str_replace('$',chr(9),$atributos); <HTML> <HEAD> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> -<BODY> <SCRIPT language="javascript" src="../jscripts/comunescomandos.js"></SCRIPT> <?php echo '<SCRIPT language="javascript" src="../../idiomas/javascripts/'.$idioma.'/comandos/comunescomandos_'.$idioma.'.js"></SCRIPT>'?> @@ -116,9 +125,25 @@ $cmd->CreaParametro("@ordprocedimiento",0,1); $cmd->CreaParametro("@ordtarea",0,1); /* PARCHE UHU heredado de la version 1.1.0: Si la accion a realizar es Arrancar incluimos una pagina para arrancar desde el repo */ -if($funcion == "nfn=Arrancar".chr(13)) - include("wakeonlan_repo.php"); -/**/ +switch ($idcomando) { + case OG_CMD_ID_WAKEUP: + include("wakeonlan_repo.php"); + break; + case OG_CMD_ID_SESSION: + session($cadenaip, $atributos); + break; + case OG_CMD_ID_POWEROFF: + poweroff($cadenaip); + break; + case OG_CMD_ID_REBOOT: + reboot($cadenaip); + break; + case OG_CMD_ID_HARDWARE: + hardware($cadenaip); + break; + case OG_CMD_ID_SOFTWARE: + software($cadenaip); +} if($ambito==0){ // Ambito restringido a un subconjuto de ordenadores con formato (idordenador1,idordenador2,etc) $cmd->ParamSetValor("@restrambito",$idambito); @@ -174,9 +199,14 @@ if($sw_ejya=='on' || $sw_ejprg=="on" ){ $ValorParametros=extrae_parametros($parametros,chr(13),'='); $script=@urldecode($ValorParametros["scp"]); if($sw_ejya=='on'){ - // comando 16 sólo agente nuevo - if ($idcomando != 16){ - // Envio al servidor + if ($idcomando != OG_CMD_ID_SENDMESSAGE && + $idcomando != OG_CMD_ID_WAKEUP && + $idcomando != OG_CMD_ID_SESSION && + $idcomando != OG_CMD_ID_POWEROFF && + $idcomando != OG_CMD_ID_HARDWARE && + $idcomando != OG_CMD_ID_SOFTWARE && + $idcomando != OG_CMD_ID_REBOOT) { + // EnvÃo al servidor $shidra=new SockHidra($servidorhidra,$hidraport); if ($shidra->conectar()){ // Se ha establecido la conexión con el servidor hidra $parametros.=$aplicacion; @@ -199,28 +229,28 @@ if($sw_ejya=='on' || $sw_ejprg=="on" ){ $resulhidra = 1; } - // Comprobamos si el comando es soportado por el nuevo ogAgent + // Comprobamos si el comando es soportado por el nuevo OGAgent $numip=0; $ogAgentNuevo = false; switch ($idcomando) { - case 2: + case OG_CMD_ID_POWEROFF: // Apagar $urlcomando = 'poweroff'; $ogAgentNuevo = true; break; - case 5: + case OG_CMD_ID_REBOOT: // Reiniciar $urlcomando = 'reboot'; $ogAgentNuevo = true; break; - case 8: + case OG_CMD_ID_SCRIPT: // Ejecutar script $urlcomando = 'script'; $ogAgentNuevo = true; $client = (isset ($_POST['modoejecucion']) && $_POST['modoejecucion'] != '' ) ? $_POST['modoejecucion'] : 'true'; $paramsPost = '{"script":"'.base64_encode($script).'","client":"'.$client.'"}'; break; - case 16: + case OG_CMD_ID_SENDMESSAGE: // Enviar mensaje $urlcomando = 'popup'; $ogAgentNuevo = true; @@ -228,7 +258,7 @@ if($sw_ejya=='on' || $sw_ejprg=="on" ){ break; } - // Se envÃa acción al nuevo ogAgent + // Se envÃa acción al nuevo ogAgent if ( $ogAgentNuevo ) { // Send REST requests to new OGAgent clients. $urls = array(); @@ -241,7 +271,6 @@ if($sw_ejya=='on' || $sw_ejprg=="on" ){ $urls[$ip]['url'] = "https://$ip:8000/opengnsys/$urlcomando"; if (isset($auxKey[$i])) $urls[$ip]['header'] = Array("Authorization: ".$auxKey[$i]); if (isset($paramsPost)) $urls[$ip]['post'] = $paramsPost; - $i++; } // Launch concurrent requests. @@ -384,6 +413,8 @@ if ($resul){ } } ?> +</HEAD> +<BODY> </BODY> </HTML> diff --git a/admin/WebConsole/comandos/gestores/wakeonlan_repo.php b/admin/WebConsole/comandos/gestores/wakeonlan_repo.php index b2929d48..c1c5394f 100644 --- a/admin/WebConsole/comandos/gestores/wakeonlan_repo.php +++ b/admin/WebConsole/comandos/gestores/wakeonlan_repo.php @@ -9,9 +9,17 @@ include_once("../../includes/restfunctions.php"); $cadenaip $cadenamac -*/ + */ + +//Multicast or Unicast +preg_match_all('!\d{1}!', $atributos, $matches); + // Capturamos todas las ids $macs = explode(";",$cadenamac); +$ips = explode(';',$cadenaip); + +wol($matches[0][0], $macs, $ips); + // Recorremos las ids y vemos cual es la ip del repositorio $repos = array(); $reposAndMacs = array(); @@ -43,19 +51,21 @@ foreach($macs as $mac){ } $rs->Cerrar(); } + // En este punto tenemos un array con todos los repos y cada uno de ellos con una lista de todas las macs que deben arrancar // Recorremos cada uno de ellos foreach($reposAndMacs as $repo => $macs){ // En el array de $macs tenemos la clave "apikey" - if($macs["apikey"] !== ""){ + if($macs["apikey"] !== "") { $apiKeyRepo = $macs["apikey"]; unset($macs["apikey"]); // Componer datos de conexión para el repositorio. $urls[$repo]['url'] = "https://$repo/opengnsys/rest/repository/poweron"; $urls[$repo]['header'] = array('Authorization: '. $apiKeyRepo); - $urls[$repo]['post'] = '{"macs": ["' . implode('","', $macs) . '"]}'; + $urls[$repo]['post'] = '{"macs": ["' . implode('","', $macs) . '"], "ips": ["' . str_replace(';', '","', $cadenaip) . + '"], "mar": "' . $matches[0][0] . '"}'; } - else{ + else { $avisoRepo = true; } } @@ -76,10 +86,11 @@ function existREPO($repo, $repos){ $index = 0; while(!$found && $index < count($repos)){ $r = $repos[$index]; + $index++; if($r == $repo) $found=true; } return $found; } -?> + diff --git a/admin/WebConsole/comandos/includes/FiltradoAmbito.php b/admin/WebConsole/comandos/includes/FiltradoAmbito.php index 490969f7..42ca61e7 100644 --- a/admin/WebConsole/comandos/includes/FiltradoAmbito.php +++ b/admin/WebConsole/comandos/includes/FiltradoAmbito.php @@ -1,400 +1,399 @@ -<?php
-// ******************************************************************************************************************
-// Aplicación WEB: ogAdmWebCon
-// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
-// Fecha Creación: Año 2012
-// Fecha última modificación: Febrero-2012
-// Nombre del fichero: FiltradoAmbito.php
-// Descripción :
-// Colección de funciones en php y javascript que implementan la posibilidad de aplicar filtro de selección
-// a un determinado grupo de ordenadores dentro de un aula para aplicarles comandos.
-//
-// ********************************************************************************************************************
-//
-include_once("../idiomas/php/".$idioma."/estados_".$idioma.".php");
-
-$cadenaip="";
-$cid=0; // Identificadores para tablas de ordenadores
-switch($ambito)
-{
- case $AMBITO_CENTROS :
- $cmd->texto="SELECT idcentro,nombrecentro FROM centros WHERE idcentro=".$idambito;
- RecorriendoCentro($cmd);
- break;
- case $AMBITO_GRUPOSAULAS :
- $cmd->texto="SELECT idgrupo,nombregrupo FROM grupos WHERE tipo=".$AMBITO_GRUPOSAULAS." AND idgrupo=".$idambito;
- RecorriendoGruposAulas($cmd);
- break;
- case $AMBITO_AULAS :
- $cmd->texto="SELECT idaula,nombreaula FROM aulas WHERE idaula=".$idambito;
- RecorriendoAulas($cmd);
- break;
- case $AMBITO_GRUPOSORDENADORES :
- $cmd->texto="SELECT idgrupo,nombregrupoordenador FROM gruposordenadores WHERE idgrupo=".$idambito;
- RecorriendoGruposOrdenadores($cmd);
- break;
-}
-echo '<P><INPUT type="hidden" id="cadenaip" value="'.$cadenaip.'"></P>';
-//________________________________________________________________________________________________________
-//
-function RecorriendoCentro($cmd)
-{
- global $AMBITO_GRUPOSAULAS;
- global $TbMsg;
-
- $rs=new Recordset;
- $rs->Comando=&$cmd;
- if (!$rs->Abrir()) return; // Error al abrir recordset
- $rs->Primero();
- if(!$rs->EOF){
- $idcentro=$rs->campos["idcentro"];
- $nombrecentro=$rs->campos["nombrecentro"];
-
- $urlimg='../images/iconos/centros.gif';
- $ambito=$TbMsg[0];
- echo '<p align=center><IMG src="'.$urlimg.'">
- <span align=center class=subcabeceras><U>'.$ambito.':'.$nombrecentro.'</U></span></p>';
-
- $cmd->texto="SELECT idgrupo,nombregrupo FROM grupos WHERE idcentro=".$idcentro." AND grupoid=0
- AND tipo=".$AMBITO_GRUPOSAULAS." ORDER BY nombregrupo ";
- RecorriendoGruposAulas($cmd);
- $cmd->texto="SELECT idaula,nombreaula FROM aulas WHERE idcentro=".$idcentro." AND grupoid=0 ORDER BY nombreaula";
- RecorriendoAulas($cmd);
- }
- $rs->Cerrar();
-}
-//________________________________________________________________________________________________________
-//
-function RecorriendoGruposAulas($cmd)
-{
- global $AMBITO_GRUPOSAULAS;
- global $TbMsg;
-
- $rs=new Recordset;
- $rs->Comando=&$cmd;
- if (!$rs->Abrir()) return; // Error al abrir recordset
- $rs->Primero();
- while (!$rs->EOF){
- $idgrupo=$rs->campos["idgrupo"];
- $nombregrupo=$rs->campos["nombregrupo"];
-
- $urlimg='../images/iconos/carpeta.gif';
- $ambito=$TbMsg[1];
- echo '<p align=center><IMG src="'.$urlimg.'">
- <span align=center class=subcabeceras><U>'.$ambito.':'.$nombregrupo.'</U></span></p>';
-
- $cmd->texto="SELECT idgrupo,nombregrupo FROM grupos WHERE grupoid=".$idgrupo."
- AND tipo=".$AMBITO_GRUPOSAULAS." ORDER BY nombregrupo";
- RecorriendoGruposAulas($cmd);
- $cmd->texto="SELECT idaula,nombreaula FROM aulas WHERE grupoid=".$idgrupo." ORDER BY nombreaula";
- RecorriendoAulas($cmd);
- $rs->Siguiente();
- }
- $rs->Cerrar();
-}
-//________________________________________________________________________________________________________
-//
-function RecorriendoAulas($cmd)
-{
- global $TbMsg;
-
- $rs=new Recordset;
- $rs->Comando=&$cmd;
- if (!$rs->Abrir()) return; // Error al abrir recordset
- $rs->Primero();
- while (!$rs->EOF){
- $idaula=$rs->campos["idaula"];
- $nombreaula=$rs->campos["nombreaula"];
-
- $urlimg='../images/iconos/aula.gif';
- $ambito=$TbMsg[2];
- echo '<p align=center><IMG src="'.$urlimg.'">
- <span align=center class=subcabeceras><U>'.$ambito.':'.$nombreaula.'</U></span></p>';
-
- $cmd->texto="SELECT idordenador,nombreordenador,ip,mac FROM ordenadores WHERE idaula=".$idaula;
- RecorriendoOrdenadores($cmd);
- $rs->Siguiente();
- }
- $rs->Cerrar();
-}
-//________________________________________________________________________________________________________
-//
-function RecorriendoGruposOrdenadores($cmd)
-{
- global $TbMsg;
-
- $rs=new Recordset;
- $rs->Comando=&$cmd;
- if (!$rs->Abrir()) return; // Error al abrir recordset
- $rs->Primero();
- while (!$rs->EOF){
- $idgrupo=$rs->campos["idgrupo"];
- $nombregrupo=$rs->campos["nombregrupo"];
-
- $urlimg='../images/iconos/carpeta.gif';
- $ambito=$TbMsg[3];
- echo '<p align=center><IMG src="'.$urlimg.'">
- <span align=center class=subcabeceras><U>'.$ambito.':'.$nombregrupo.'</U></span></p>';
-
- $cmd->texto="SELECT idgrupo,nombregrupoordenador FROM gruposOrdenadores WHERE grupoid=".$idgrupo." ORDER BY nombregrupoordenador";
- RecorriendoGruposOrdenadores($cmd);
- $cmd->texto="SELECT idordenador,nombreordenador,ip,mac FROM ordenadores WHERE grupoid=".$idgrupo;
- RecorriendoOrdenadores($cmd);
- $rs->Siguiente();
- }
- $rs->Cerrar();
-}
-//____________________________________________________________________________________________________
-//
-function RecorriendoOrdenadores($cmd)
-{
- global $TbMsg;
- global $cadenaip;
- global $cid;
-
- $cid++;
- $cmd->texto.= " ORDER BY nombreordenador";
- $rs=new Recordset;
- $rs->Comando=&$cmd;
- if (!$rs->Abrir()) return; // Error al abrir recordset
- $rs->Primero();
- $htmlCode="";
- $con=0;
-
- $htmlCode.='
-<TABLE border=0 class="tabla_busquedas" align=center>
-<TR>
-
-<TD align="center">'.$TbMsg["STATUS_OFF"].'</TD>
-<TD><INPUT type="checkbox" checked onclick="selector(this,1,'.$cid.')"></TD>
-
-<TD align="center">'.$TbMsg["STATUS_BSY"].'</TD>
-<TD><INPUT type="checkbox" checked onclick="selector(this,2,'.$cid.')"></TD>
-
-<TD align="center">'.$TbMsg["STATUS_OPG"].'</TD>
-<TD><INPUT type="checkbox" checked onclick="selector(this,3,'.$cid.')"></TD>
-</TR>
-
-<TR>
-<TD align="center">'.$TbMsg["STATUS_WIN"].'</TD>
-<TD><INPUT type="checkbox" checked onclick="selector(this,4,'.$cid.')"></TD>
-
-<TD align="center">'.$TbMsg["STATUS_WINS"].'</TD>
-<TD><INPUT type="checkbox" checked onclick="selector(this,5,'.$cid.')"></TD>
-
-<TD align="center">'.$TbMsg["STATUS_LNX"].'</TD>
-<TD><INPUT type="checkbox" checked onclick="selector(this,6,'.$cid.')"></TD>
-
-<TD align="center">'.$TbMsg["STATUS_LNXS"].'</TD>
-<TD><INPUT type="checkbox" checked onclick="selector(this,7,'.$cid.')"></TD>
-
-<TD align="center">'.$TbMsg["STATUS_OSX"].'</TD>
-<TD><INPUT type="checkbox" checked onclick="selector(this,8,'.$cid.')"></TD>
-
-</TR>
-</TABLE>';
-
- $htmlCode.='<BR>';
- $htmlCode.='<TABLE id="tbo-'.$cid.'" border=0 align=center>';
- $htmlCode.='<TR>';
-
- while (!$rs->EOF){
- $htmlCode.= '<TD style="border: 1px solid #999999;">';
- $nombreordenador=$rs->campos["nombreordenador"];
- $ip=$rs->campos["ip"];
- $cadenaip.=$ip.";";
- $htmlCode.='<TABLE cellspacing=1 cellpadding=0>';
- $htmlCode.=' <TR><TD align="center"><img sondeo="ordenador_OFF.png" id="img-'.$ip.'" width=24 src="../images/ordenador_OFF.png"></TD></TR>';
- $htmlCode.=' <TR><TD align="center"><SPAN style="FONT-SIZE:9px; COLOR: #4f4f4f;">'.$nombreordenador.'</SPAN></TD></TR>';
- $htmlCode.=' <TR><TD align="center"><SPAN style="FONT-SIZE:8px; COLOR: #4f4f4f;">'.$ip.'</SPAN></TD></TR>';
- $htmlCode.=' <TR><TD align="center"><INPUT id="chk-'.$ip.'" type="checkbox" checked></TD></TR>';
- $htmlCode.='</TABLE>';
- $htmlCode.='</TD>';
- $con++;
- if($con>15){
- $htmlCode.='</TR>';
- $htmlCode.='<TR>';
- $con=0;
- }
- $rs->Siguiente();
- }
- $htmlCode.='</TR>';
- $htmlCode.='</TABLE>';
- echo $htmlCode;
-}
-//______________________________________________________________________________________________________
-//
-echo '<SCRIPT language="javascript">';
-echo 'var cid='.$cid.';';
-echo '</SCRIPT>';
-?>
-<SCRIPT language="javascript">
-function Sondeo(){
- var ambito=<?php echo $ambito?>;
- var idambito=<?php echo $idambito?>;
- var wurl="../principal/sondeo.php";
- var prm="ambito="+ambito+"&idambito="+idambito+"&sw=1";
- CallPage(wurl,prm,"retornoSondeo","POST");
- setTimeout("respuestaSondeo();",100);
-}
-//______________________________________________________________________________________________________
-//
-function retornoSondeo(resul)
-{
- // No se hace nada
-}
-//________________________________________________________________________________________________________
-//
-function respuestaSondeo(){
- var ambito=<?php echo $ambito?>;
- var idambito=<?php echo $idambito?>;
- var wurl="../principal/sondeo.php";
- var prm="ambito="+ambito+"&idambito="+idambito+"&sw=2";
- CallPage(wurl,prm,"retornorespuestaSondeo","POST");
- setTimeout("respuestaSondeo();",5000);
-}
-//______________________________________________________________________________________________________
-//
-function retornorespuestaSondeo(resul)
-{
- if(resul.length>0){
- var ip=""; // Dirección IP del ordenador
- var so=""; // Sistema operativo activo
- var objOrd=null; // Objeto ordenador
- var imgOrd="";
- var cadena=resul.split(";");
- for (var i=0;i<cadena.length;i++){
- var dual=cadena[i].split("/");
- ip=dual[0].replace(/\n*/,"");
- so=dual[1];
- objOrd=document.getElementById("img-"+ip);
- if(objOrd){
- imgOrd=soIMG(so);
- if(objOrd.getAttribute("sondeo")!=imgOrd){
- objOrd.setAttribute("src", "../images/"+imgOrd);
- objOrd.setAttribute("sondeo",imgOrd);
- var objChk=document.getElementById("chk-"+ip);
- if(objChk)
- objChk.checked=true;
- }
- }
- }
- }
-}
-//______________________________________________________________________________________________________
-//
-function soIMG(so)
-{
- var MimgOrdenador="";
- switch(so){
- case 'INI':
- MimgOrdenador="ordenador_INI.png"; // Cliente iniciando
- break;
- case 'BSY':
- MimgOrdenador="ordenador_BSY.png"; // Cliente ocupado
- break;
- case 'OPG':
- MimgOrdenador="ordenador_OPG.png"; // Cliente OpenGnsys
- break;
- case 'WIN':
- case 'WXP':
- MimgOrdenador="ordenador_WIN.png"; // Windows
- break;
- case 'WINS':
- MimgOrdenador="ordenador_WINS.png"; // Sesión Windows
- break;
- case 'LNX':
- MimgOrdenador="ordenador_LNX.png"; // Linux
- break;
- case 'LNXS':
- MimgOrdenador="ordenador_LNXS.png"; // Sesión Linux
- break;
- case 'OSX':
- MimgOrdenador="ordenador_OSX.png"; // macOS
- break;
- default:
- MimgOrdenador="ordenador_OFF.png"; // Apagado
- break;
- }
- return(MimgOrdenador);
-}
-//______________________________________________________________________________________________________
-//
-function selector(oSLCT,op,id)
-{
- var sw=oSLCT.checked;
- var objTB=document.getElementById("tbo-"+id);
-
- if(objTB){
- var imagenes = objTB.getElementsByTagName('img');
- for(var i=0;i<imagenes.length;i++){
- var ip=imagenes[i].id.split("-")[1];
- var estado=imagenes[i].getAttribute("sondeo");
-
- var oCHK = document.getElementById('chk-'+ip); // Recupera checkbox
-
- switch(parseInt(op)){
- case 1: // Apagados
- if(estado=="ordenador_OFF.png")
- oCHK.checked=sw;
- break;
- case 2: // Ocupados
- if(estado=="ordenador_BSY.png")
- oCHK.checked=sw;
- break;
- case 3: // OpenGnsys
- if(estado=="ordenador_OPG.png")
- oCHK.checked=sw;
- break;
- case 4: // Windows
- if(estado=="ordenador_WIN.png")
- oCHK.checked=sw;
- break;
- case 5: // Sesión Windows
- if(estado=="ordenador_WINS.png")
- oCHK.checked=sw;
- break;
- case 6: // Linux
- if(estado=="ordenador_LNX.png")
- oCHK.checked=sw;
- break;
- case 7: // Sesión Linux
- if(estado=="ordenador_LNXS.png")
- oCHK.checked=sw;
- break;
- case 8: // macOS
- if(estado=="ordenador_OSX.png")
- oCHK.checked=sw;
- break;
- }
- }
- }
-}
-
-//______________________________________________________________________________________________________
-//
-function filtrado()
-{
- var ipes="";
- for(j=1;j<=cid;j++){
-
- var objTB=document.getElementById("tbo-"+j);
- if(objTB){
- var imagenes = objTB.getElementsByTagName('img');
- for(var i=0;i<imagenes.length;i++){
- var ip=imagenes[i].id.split("-")[1];
- var oCHK = document.getElementById('chk-'+ip); // Recupera checkbox
- if(oCHK.checked){
- ipes+=ip+";";
- }
- }
- }
- }
- var preipes=document.getElementById("cadenaip").value;
- if(preipes!=ipes)
- document.fdatosejecucion.filtro.value=ipes;
- else
- document.fdatosejecucion.filtro.value="";
-}
-</SCRIPT>
-
+<?php +// ****************************************************************************************************************** +// Aplicación WEB: ogAdmWebCon +// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla +// Fecha Creación: Año 2012 +// Fecha última modificación: Febrero-2012 +// Nombre del fichero: FiltradoAmbito.php +// Descripción: +// Colección de funciones en php y javascript que implementan la posibilidad de aplicar filtro de selección +// a un determinado grupo de ordenadores dentro de un aula para aplicarles comandos. +// +// ******************************************************************************************************************** +// +include_once("../idiomas/php/".$idioma."/estados_".$idioma.".php"); + +$cadenaip=""; +$cid=0; // Identificadores para tablas de ordenadores +switch($ambito) +{ + case $AMBITO_CENTROS : + $cmd->texto="SELECT idcentro,nombrecentro FROM centros WHERE idcentro=".$idambito; + RecorriendoCentro($cmd); + break; + case $AMBITO_GRUPOSAULAS : + $cmd->texto="SELECT idgrupo,nombregrupo FROM grupos WHERE tipo=".$AMBITO_GRUPOSAULAS." AND idgrupo=".$idambito; + RecorriendoGruposAulas($cmd); + break; + case $AMBITO_AULAS : + $cmd->texto="SELECT idaula,nombreaula FROM aulas WHERE idaula=".$idambito; + RecorriendoAulas($cmd); + break; + case $AMBITO_GRUPOSORDENADORES : + $cmd->texto="SELECT idgrupo,nombregrupoordenador FROM gruposordenadores WHERE idgrupo=".$idambito; + RecorriendoGruposOrdenadores($cmd); + break; +} +echo '<P><INPUT type="hidden" id="cadenaip" value="'.$cadenaip.'"></P>'; +//________________________________________________________________________________________________________ +// +function RecorriendoCentro($cmd) +{ + global $AMBITO_GRUPOSAULAS; + global $TbMsg; + + $rs=new Recordset; + $rs->Comando=&$cmd; + if (!$rs->Abrir()) return; // Error al abrir recordset + $rs->Primero(); + if(!$rs->EOF){ + $idcentro=$rs->campos["idcentro"]; + $nombrecentro=$rs->campos["nombrecentro"]; + + $urlimg='../images/iconos/centros.gif'; + $ambito=$TbMsg[0]; + echo '<p align=center><IMG src="'.$urlimg.'"> + <span class=subcabeceras><U>'.$ambito.':'.$nombrecentro.'</U></span></p>'; + + $cmd->texto="SELECT idgrupo,nombregrupo FROM grupos WHERE idcentro=".$idcentro." AND grupoid=0 + AND tipo=".$AMBITO_GRUPOSAULAS." ORDER BY nombregrupo "; + RecorriendoGruposAulas($cmd); + $cmd->texto="SELECT idaula,nombreaula FROM aulas WHERE idcentro=".$idcentro." AND grupoid=0 ORDER BY nombreaula"; + RecorriendoAulas($cmd); + } + $rs->Cerrar(); +} +//________________________________________________________________________________________________________ +// +function RecorriendoGruposAulas($cmd) +{ + global $AMBITO_GRUPOSAULAS; + global $TbMsg; + + $rs=new Recordset; + $rs->Comando=&$cmd; + if (!$rs->Abrir()) return; // Error al abrir recordset + $rs->Primero(); + while (!$rs->EOF){ + $idgrupo=$rs->campos["idgrupo"]; + $nombregrupo=$rs->campos["nombregrupo"]; + + $urlimg='../images/iconos/carpeta.gif'; + $ambito=$TbMsg[1]; + echo '<p align=center><IMG src="'.$urlimg.'"> + <span class=subcabeceras><U>'.$ambito.':'.$nombregrupo.'</U></span></p>'; + + $cmd->texto="SELECT idgrupo,nombregrupo FROM grupos WHERE grupoid=".$idgrupo." + AND tipo=".$AMBITO_GRUPOSAULAS." ORDER BY nombregrupo"; + RecorriendoGruposAulas($cmd); + $cmd->texto="SELECT idaula,nombreaula FROM aulas WHERE grupoid=".$idgrupo." ORDER BY nombreaula"; + RecorriendoAulas($cmd); + $rs->Siguiente(); + } + $rs->Cerrar(); +} +//________________________________________________________________________________________________________ +// +function RecorriendoAulas($cmd) +{ + global $TbMsg; + + $rs=new Recordset; + $rs->Comando=&$cmd; + if (!$rs->Abrir()) return; // Error al abrir recordset + $rs->Primero(); + while (!$rs->EOF){ + $idaula=$rs->campos["idaula"]; + $nombreaula=$rs->campos["nombreaula"]; + + $urlimg='../images/iconos/aula.gif'; + $ambito=$TbMsg[2]; + echo '<p align=center><IMG src="'.$urlimg.'"> + <span class=subcabeceras><U>'.$ambito.':'.$nombreaula.'</U></span></p>'; + + $cmd->texto="SELECT idordenador,nombreordenador,ip,mac FROM ordenadores WHERE idaula=".$idaula; + RecorriendoOrdenadores($cmd); + $rs->Siguiente(); + } + $rs->Cerrar(); +} +//________________________________________________________________________________________________________ +// +function RecorriendoGruposOrdenadores($cmd) +{ + global $TbMsg; + + $rs=new Recordset; + $rs->Comando=&$cmd; + if (!$rs->Abrir()) return; // Error al abrir recordset + $rs->Primero(); + while (!$rs->EOF){ + $idgrupo=$rs->campos["idgrupo"]; + $nombregrupo=$rs->campos["nombregrupo"]; + + $urlimg='../images/iconos/carpeta.gif'; + $ambito=$TbMsg[3]; + echo '<p align=center><IMG src="'.$urlimg.'"> + <span class=subcabeceras><U>'.$ambito.':'.$nombregrupo.'</U></span></p>'; + + $cmd->texto="SELECT idgrupo,nombregrupoordenador FROM gruposOrdenadores WHERE grupoid=".$idgrupo." ORDER BY nombregrupoordenador"; + RecorriendoGruposOrdenadores($cmd); + $cmd->texto="SELECT idordenador,nombreordenador,ip,mac FROM ordenadores WHERE grupoid=".$idgrupo; + RecorriendoOrdenadores($cmd); + $rs->Siguiente(); + } + $rs->Cerrar(); +} +//____________________________________________________________________________________________________ +// +function RecorriendoOrdenadores($cmd) +{ + global $TbMsg; + global $cadenaip; + global $cid; + + $cid++; + $cmd->texto.= " ORDER BY nombreordenador"; + $rs=new Recordset; + $rs->Comando=&$cmd; + if (!$rs->Abrir()) return; // Error al abrir recordset + $rs->Primero(); + $htmlCode=""; + $con=0; + + $htmlCode.=' +<TABLE border=0 class="tabla_busquedas" align=center> +<TR> + +<TD align="center">'.$TbMsg["STATUS_OFF"].'</TD> +<TD><INPUT type="checkbox" checked onclick="selector(this,1,'.$cid.')"></TD> + +<TD align="center">'.$TbMsg["STATUS_BSY"].'</TD> +<TD><INPUT type="checkbox" checked onclick="selector(this,2,'.$cid.')"></TD> + +<TD align="center">'.$TbMsg["STATUS_OPG"].'</TD> +<TD><INPUT type="checkbox" checked onclick="selector(this,3,'.$cid.')"></TD> +</TR> + +<TR> +<TD align="center">'.$TbMsg["STATUS_WIN"].'</TD> +<TD><INPUT type="checkbox" checked onclick="selector(this,4,'.$cid.')"></TD> + +<TD align="center">'.$TbMsg["STATUS_WINS"].'</TD> +<TD><INPUT type="checkbox" checked onclick="selector(this,5,'.$cid.')"></TD> + +<TD align="center">'.$TbMsg["STATUS_LNX"].'</TD> +<TD><INPUT type="checkbox" checked onclick="selector(this,6,'.$cid.')"></TD> + +<TD align="center">'.$TbMsg["STATUS_LNXS"].'</TD> +<TD><INPUT type="checkbox" checked onclick="selector(this,7,'.$cid.')"></TD> + +<TD align="center">'.$TbMsg["STATUS_OSX"].'</TD> +<TD><INPUT type="checkbox" checked onclick="selector(this,8,'.$cid.')"></TD> + +</TR> +</TABLE>'; + + $htmlCode.='<BR>'; + $htmlCode.='<TABLE id="tbo-'.$cid.'" border=0 align=center>'; + $htmlCode.='<TR>'; + + while (!$rs->EOF){ + $htmlCode.= '<TD style="border: 1px solid #999999;">'; + $nombreordenador=$rs->campos["nombreordenador"]; + $ip=$rs->campos["ip"]; + $cadenaip.=$ip.";"; + $htmlCode.='<TABLE cellspacing=1 cellpadding=0>'; + $htmlCode.=' <TR><TD align="center"><img sondeo="ordenador_OFF.png" id="img-'.$ip.'" width=24 src="../images/ordenador_OFF.png"></TD></TR>'; + $htmlCode.=' <TR><TD align="center"><SPAN style="FONT-SIZE:9px; COLOR: #4f4f4f;">'.$nombreordenador.'</SPAN></TD></TR>'; + $htmlCode.=' <TR><TD align="center"><SPAN style="FONT-SIZE:8px; COLOR: #4f4f4f;">'.$ip.'</SPAN></TD></TR>'; + $htmlCode.=' <TR><TD align="center"><INPUT id="chk-'.$ip.'" type="checkbox" checked></TD></TR>'; + $htmlCode.='</TABLE>'; + $htmlCode.='</TD>'; + $con++; + if($con>15){ + $htmlCode.='</TR>'; + $htmlCode.='<TR>'; + $con=0; + } + $rs->Siguiente(); + } + $htmlCode.='</TR>'; + $htmlCode.='</TABLE>'; + echo $htmlCode; +} +//______________________________________________________________________________________________________ +// +echo '<SCRIPT language="javascript">'; +echo 'var cid='.$cid.';'; +echo '</SCRIPT>'; +?> +<SCRIPT language="javascript"> +function Sondeo(){ + var ambito=<?php echo $ambito?>; + var idambito=<?php echo $idambito?>; + var wurl="../principal/sondeo.php"; + var prm="ambito="+ambito+"&idambito="+idambito+"&sw=1"; + CallPage(wurl,prm,"retornoSondeo","POST"); + setTimeout("respuestaSondeo();",100); +} +//______________________________________________________________________________________________________ +// +function retornoSondeo(resul) +{ + // No se hace nada +} +//________________________________________________________________________________________________________ +// +function respuestaSondeo(){ + var ambito=<?php echo $ambito?>; + var idambito=<?php echo $idambito?>; + var wurl="../principal/sondeo.php"; + var prm="ambito="+ambito+"&idambito="+idambito+"&sw=2"; + CallPage(wurl,prm,"retornorespuestaSondeo","POST"); + setTimeout("respuestaSondeo();",5000); +} +//______________________________________________________________________________________________________ +// +function retornorespuestaSondeo(resul) +{ + if(resul.length>0){ + var ip=""; // Dirección IP del ordenador + var so=""; // Sistema operativo activo + var objOrd=null; // Objeto ordenador + var imgOrd=""; + var cadena=resul.split(";"); + for (var i=0;i<cadena.length;i++){ + var dual=cadena[i].split("/"); + ip=dual[0].replace(/\n*/,""); + so=dual[1]; + objOrd=document.getElementById("img-"+ip); + if(objOrd){ + imgOrd=soIMG(so); + if(objOrd.getAttribute("sondeo")!=imgOrd){ + objOrd.setAttribute("src", "../images/"+imgOrd); + objOrd.setAttribute("sondeo",imgOrd); + var objChk=document.getElementById("chk-"+ip); + if(objChk) + objChk.checked=true; + } + } + } + } +} +//______________________________________________________________________________________________________ +// +function soIMG(so) +{ + var MimgOrdenador=""; + switch(so){ + case 'INI': + MimgOrdenador="ordenador_INI.png"; // Cliente iniciando + break; + case 'BSY': + MimgOrdenador="ordenador_BSY.png"; // Cliente ocupado + break; + case 'OPG': + MimgOrdenador="ordenador_OPG.png"; // Cliente OpenGnsys + break; + case 'WIN': + case 'WXP': + MimgOrdenador="ordenador_WIN.png"; // Windows + break; + case 'WINS': + MimgOrdenador="ordenador_WINS.png"; // Sesión Windows + break; + case 'LNX': + MimgOrdenador="ordenador_LNX.png"; // Linux + break; + case 'LNXS': + MimgOrdenador="ordenador_LNXS.png"; // Sesión Linux + break; + case 'OSX': + MimgOrdenador="ordenador_OSX.png"; // macOS + break; + default: + MimgOrdenador="ordenador_OFF.png"; // Apagado + break; + } + return(MimgOrdenador); +} +//______________________________________________________________________________________________________ +// +function selector(oSLCT,op,id) +{ + var sw=oSLCT.checked; + var objTB=document.getElementById("tbo-"+id); + + if(objTB){ + var imagenes = objTB.getElementsByTagName('img'); + for(var i=0;i<imagenes.length;i++){ + var ip=imagenes[i].id.split("-")[1]; + var estado=imagenes[i].getAttribute("sondeo"); + var oCHK = document.getElementById('chk-'+ip); // Recupera checkbox + + switch(parseInt(op)){ + case 1: // Apagados + if(estado=="ordenador_OFF.png") + oCHK.checked=sw; + break; + case 2: // Ocupados + if(estado=="ordenador_BSY.png") + oCHK.checked=sw; + break; + case 3: // OpenGnsys + if(estado=="ordenador_OPG.png") + oCHK.checked=sw; + break; + case 4: // Windows + if(estado=="ordenador_WIN.png") + oCHK.checked=sw; + break; + case 5: // Sesión Windows + if(estado=="ordenador_WINS.png") + oCHK.checked=sw; + break; + case 6: // Linux + if(estado=="ordenador_LNX.png") + oCHK.checked=sw; + break; + case 7: // Sesión Linux + if(estado=="ordenador_LNXS.png") + oCHK.checked=sw; + break; + case 8: // macOS + if(estado=="ordenador_OSX.png") + oCHK.checked=sw; + break; + } + } + } +} + +//______________________________________________________________________________________________________ +// +function filtrado() +{ + var ipes=""; + for(var j=1; j<=cid; j++){ + + var objTB=document.getElementById("tbo-"+j); + if(objTB){ + var imagenes = objTB.getElementsByTagName('img'); + for(var i=0;i<imagenes.length;i++){ + var ip=imagenes[i].id.split("-")[1]; + var oCHK = document.getElementById('chk-'+ip); // Recupera checkbox + if(oCHK.checked){ + ipes+=ip+";"; + } + } + } + } + var preipes=document.getElementById("cadenaip").value; + if(preipes!=ipes) + document.fdatosejecucion.filtro.value=ipes; + else + document.fdatosejecucion.filtro.value=""; +} +</SCRIPT> + diff --git a/admin/WebConsole/comandos/includes/capturaacciones.php b/admin/WebConsole/comandos/includes/capturaacciones.php index 1941b428..7e793f96 100644 --- a/admin/WebConsole/comandos/includes/capturaacciones.php +++ b/admin/WebConsole/comandos/includes/capturaacciones.php @@ -29,5 +29,5 @@ if (isset($_POST["funcion"])) $funcion=$_POST["funcion"]; if (isset($_POST["atributos"])) $atributos=$_POST["atributos"]; if (isset($_POST["gestor"])) $gestor=$_POST["gestor"]; if (isset($_POST["filtro"])) $filtro=$_POST["filtro"]; -?> + diff --git a/admin/WebConsole/comandos/includes/formularioacciones.php b/admin/WebConsole/comandos/includes/formularioacciones.php index 90c5de3c..fadc915c 100644 --- a/admin/WebConsole/comandos/includes/formularioacciones.php +++ b/admin/WebConsole/comandos/includes/formularioacciones.php @@ -9,7 +9,7 @@ // Formulario para paso de parametros comunes para la ejecución de comandos // ************************************************************************************************************************************************* ?> -<FORM align=center name="fdatosejecucion" action="<?php echo $gestor?>" method="post"> +<FORM name="fdatosejecucion" action="<?php echo $gestor?>" method="post"> <INPUT type="hidden" name="idcomando" value="<?php echo $idcomando?>"> <INPUT type="hidden" name="descricomando" value="<?php echo $descricomando?>"> <INPUT type="hidden" name="ambito" value="<?php echo $ambito?>"> diff --git a/admin/WebConsole/comandos/includes/opcionesacciones.php b/admin/WebConsole/comandos/includes/opcionesacciones.php index c8f9ea6a..7842d3a3 100644 --- a/admin/WebConsole/comandos/includes/opcionesacciones.php +++ b/admin/WebConsole/comandos/includes/opcionesacciones.php @@ -64,9 +64,9 @@ <TD> </TD> <TD> </TD> <TD><?php echo $TbMsgAux[8] ?> </TD> - <TD><INPUT maxlength=3 style="FONT-FAMILY:Arial, Helvetica, sans-serif;FONT-SIZE: 11px;WIDTH:30" name=ordprocedimiento type=text value=""></TD></TR> + <TD><INPUT maxlength=3 style="FONT-FAMILY:Arial, Helvetica, sans-serif;FONT-SIZE: 11px;WIDTH:30px" name=ordprocedimiento type=text value=""></TD></TR> <!--------------------------------------------------------------------------------------------------------------------------------> - <TR HEIGHT=10><TD colspan=4> <HR></TD></TR> + <TR><TD colspan=4 HEIGHT="10px"> <HR></TD></TR> <!--------------------------------------------------------------------------------------------------------------------------------> <TR> <TD><INPUT onclick="clic_mktarea(this)" name=sw_mktarea type=checkbox></TD> @@ -88,8 +88,9 @@ <TD> </TD> <TD> </TD> <TD><?php echo $TbMsgAux[12] ?> </TD> - <TD><INPUT maxlength=3 style="FONT-FAMILY:Arial, Helvetica, sans-serif;FONT-SIZE: 11px;WIDTH:30" name=ordtarea type=text value=""></TD></TR> + <TD><INPUT maxlength=3 style="FONT-FAMILY:Arial, Helvetica, sans-serif;FONT-SIZE: 11px;WIDTH:30px" name=ordtarea type=text value=""></TD></TR> <!--------------------------------------------------------------------------------------------------------------------------------> </TABLE> </FORM> + diff --git a/admin/WebConsole/comandos/jscripts/Configurar.js b/admin/WebConsole/comandos/jscripts/Configurar.js index 38f17a15..8e11615b 100644 --- a/admin/WebConsole/comandos/jscripts/Configurar.js +++ b/admin/WebConsole/comandos/jscripts/Configurar.js @@ -15,7 +15,7 @@ var swe=false; // Switch para detectar partición extendida //________________________________________________________________________________________________________ // // Elimina una fila de una tabla de configuraciones perteneciente a las propiedades de una partición -// Parametros: +// Parámetros: // icp: Identificador de la configuración-partición // o: Objeto checkbox que invoca la función //________________________________________________________________________________________________________ @@ -31,8 +31,8 @@ function eliminaParticion(o,icp) // Toma desplegable de tipo de partición var desplepar=o.parentNode.nextSibling.nextSibling.childNodes[0]; var tipar=tomavalorDesple(desplepar); // Partición - if(tipar=="CACHE") swc=false; // Si es la caché se pone a false su switch - if(tipar=="EXTENDED") swe=false; // Si es la EXTENDED se pone a false su switch + if(tipar==="CACHE") swc=false; // Si es la caché se pone a false su switch + if(tipar==="EXTENDED") swe=false; // Si es la EXTENDED se pone a false su switch var tbCfg = document.getElementById("tabla_conf"); // Recupera objeto <TABLE> var trCfg = document.getElementById("TR_"+icp); // Recupera <TR> de la fila a eliminar @@ -69,7 +69,7 @@ function addParticion(objImg,cc) //________________________________________________________________________________________________________ // // Confirma un bloque de configuración de particiones -// Parametros: +// Parámetros: // idordenadores: Identificadores de los ordenadores a los que se aplicará el comando // cc: Identificador de la configuración (bloque de particiones) // Especificaciones: @@ -85,7 +85,7 @@ function Confirmar(cc) var tbOrd= document.getElementById("tbOrd_"+cc); // Recupera tabla de ordenadores de la configuración var idordenadores=tbOrd.getAttribute('value'); // Toma identificadores de los ordenadores var cadenaid=document.fdatos.cadenaid.value; // Cadena de identificadores de todos los ordenadores del ámbito - if(idordenadores!=cadenaid){ // Si no son iguales es que el ámbito de aplicación es restringido + if(idordenadores!==cadenaid){ // Si no son iguales es que el ámbito de aplicación es restringido document.fdatosejecucion.ambito.value=0; // Ambito de aplicación restringido document.fdatosejecucion.idambito.value=idordenadores; } @@ -116,8 +116,8 @@ function comprobarDatos(cc) var SL="%"; var TB="*"; var maxpar=0; - var tbpar=new Array(); // Para control de particiones duplicadas - var tbparam=new Array(); // Para control de configuración + var tbpar=[]; // Para control de particiones duplicadas + var tbparam=[]; // Para control de configuración var npar; // Partición en formato integer var tch=0; // Tamaño de la caché @@ -129,27 +129,33 @@ function comprobarDatos(cc) var trCfg = document.getElementById("TR_"+cc); // Recupera primer <TR> de la configuración trCfg=trCfg.nextSibling; // Primera fila de particiones - while(trCfg.id!="TRIMG_"+cc){ + while(trCfg.id!=="TRIMG_"+cc){ var tama=trCfg.childNodes[itama].childNodes[0].value; // Tamaño de partición + // Comprobar tamaño negativo. + if (tama < 0) { + alert(TbMsg[8]); + trCfg.childNodes[ipar].childNodes[0].focus(); + return(false); + } var par=tomavalorDesple(trCfg.childNodes[ipar].childNodes[0]); // Partición npar=parseInt(par); if(maxpar<npar) maxpar=npar; // Guarda partición de mayor orden - if (npar==4){ + if (npar===4){ swc=true; // Se especifica partición caché tch=tama; } - if(npar==0){ + if(npar===0){ alert(TbMsg[1]); trCfg.childNodes[ipar].childNodes[0].focus(); return(false); } - if(tbpar[npar]==1){ // Existe ya una partición con ese número + if(tbpar[npar]===1){ // Existe ya una partición con ese número alert(TbMsg[0]); trCfg.childNodes[ipar].childNodes[0].focus(); return(false); @@ -157,13 +163,13 @@ function comprobarDatos(cc) tbpar[npar]=1; var codpar=tomavalorDesple(trCfg.childNodes[icodpar].childNodes[0]); // Tipo de partición - if(codpar==""){ + if(codpar===""){ alert(TbMsg[2]); trCfg.childNodes[icodpar].childNodes[0].focus(); return(false); } - if(codpar=="EXTENDED") { + if(codpar==="EXTENDED") { swe=true; extsize=tama; } else { @@ -174,7 +180,7 @@ function comprobarDatos(cc) } } - if(codpar=="CACHE" && npar!=4){ + if(codpar==="CACHE" && npar!==4){ alert(TbMsg[6]); trCfg.childNodes[icodpar].childNodes[0].focus(); return(false); @@ -183,8 +189,8 @@ function comprobarDatos(cc) var ope=tomavalorCheck(trCfg.childNodes[iope].childNodes[0]); // Formatar a realizar var sysfi=tomatextDesple(trCfg.childNodes[isysfi].childNodes[0]); // Sistema de ficheros - if(sysfi=="" || sysfi=="EMPTY" ){ // Si el sistema de fichero es vacio o empty... - if(ope==1){ // Si se quiere formatear... + if(sysfi==="" || sysfi==="EMPTY" ){ // Si el sistema de fichero es vacio o empty... + if(ope===1){ // Si se quiere formatear... alert(TbMsg[5]); trCfg.childNodes[isysfi].childNodes[0].focus(); return(false); @@ -193,7 +199,7 @@ function comprobarDatos(cc) sysfi="EMPTY"; } - if(tama==0 && codpar!="EXTENDED") { + if(tama===0 && codpar!=="EXTENDED") { alert(TbMsg[3]); trCfg.childNodes[itama].childNodes[0].focus(); return(false); @@ -220,13 +226,12 @@ function comprobarDatos(cc) alert(TbMsg["EXTSIZE"]); return(false); } - allpartsize+=parseInt(extsize); + allpartsize+=extsize; } // Alerta si tamaño del disco menor que las particiones if (hdsize<allpartsize) { alert(TbMsg["HDSIZE"]); return(false); - } /* Compone cadena de particiones (Deja fuera la cache, @@ -260,7 +265,7 @@ function comprobarDatos(cc) if(maxpar<4){ var up=4; if(swc) up=3; - for(var i=maxpar+1;i<=up;i++) + for(i=maxpar+1;i<=up;i++) atributos+="par="+i+TB+"cpt=EMPTY"+TB+"sfi=EMPTY"+TB+"tam=0"+TB+"ope=0"+SL; } diff --git a/admin/WebConsole/comandos/jscripts/CrearImagen.js b/admin/WebConsole/comandos/jscripts/CrearImagen.js index 384661b3..17b3c2cf 100644 --- a/admin/WebConsole/comandos/jscripts/CrearImagen.js +++ b/admin/WebConsole/comandos/jscripts/CrearImagen.js @@ -45,7 +45,7 @@ //________________________________________________________________________________________________________ function comprobar_datos() { - tb_conf=document.getElementById("tabla_conf"); + var tb_conf=document.getElementById("tabla_conf"); var ochecks=tb_conf.getElementsByTagName('INPUT'); var op=0; for(var i=0;i<ochecks.length;i++){ @@ -55,16 +55,16 @@ var disco=ochecks[i].value.split("_")[0]; var particion=ochecks[i].value.split("_")[1]; // El desplegable de imagen ahora indica disco y particion en su nombre - despleimagen=document.getElementById("despleimagen_"+disco+"_"+particion); - var p=despleimagen.selectedIndex; - if (p==0){ + var despleimagen=document.getElementById("despleimagen_"+disco+"_"+particion); + var p=despleimagen.selectedIndex; + if (p===0){ alert(TbMsg[0]); despleimagen.focus(); return(false) } } } - if(op==0){ + if(op===0){ alert(TbMsg[1]); return(false); } diff --git a/admin/WebConsole/comandos/jscripts/CrearImagenBasica.js b/admin/WebConsole/comandos/jscripts/CrearImagenBasica.js index affb0f77..68751f25 100644 --- a/admin/WebConsole/comandos/jscripts/CrearImagenBasica.js +++ b/admin/WebConsole/comandos/jscripts/CrearImagenBasica.js @@ -1,10 +1,10 @@ // ************************************************************************************************************************************************* // Libreria de scripts de Javascript -// Copyright 2003-2005 Jos� Manuel Alonso. Todos los derechos reservados. -// Fecha Creaci�n:2003-2004 -// Fecha �ltima modificaci�n: Marzo-2005 +// Copyright 2003-2005 José Manuel Alonso. Todos los derechos reservados. +// Fecha Creación:2003-2004 +// Fecha última modificación: Marzo-2005 // Nombre del fichero: CrearImagenBasica.js -// Descripci�n : +// Descripción: // Este fichero implementa las funciones javascript del fichero CrearImagenBasica.php (Comandos) // ************************************************************************************************************************************************* var RC="@"; @@ -12,7 +12,7 @@ function confirmar() { var prm=comprobar_datos(); - if(prm=="") return; // Ha habido alg�n error + if(prm==="") return; // Ha habido algún error var disco=1; // Siempre disco 1 document.fdatosejecucion.atributos.value="dsk="+disco+RC+prm; @@ -21,7 +21,7 @@ } //________________________________________________________________________________________________________ // -// Cancela la edici�n +// Cancela la edición //________________________________________________________________________________________________________ function cancelar(){ @@ -35,75 +35,72 @@ function cancelar(){ function comprobar_datos() { - var prm=""; // Retorno par�metros + var prm=""; // Retorno parámetros var cadPar=document.getElementById("cadPar").getAttribute("value"); var tbPar=cadPar.split(";"); for(var i=0;i<tbPar.length;i++){ - var par=tbPar[i]; // Numero de partici�n + var par=tbPar[i]; // Numero de partición if(par>0){ var trObj=document.getElementById('trPar-'+par); // Recupera objeto fila var obRDO=trObj.childNodes[0].childNodes[0]; // Recupera Radio buton de la fila - if(obRDO.checked){ // Si est� seleccionado ... + if(obRDO.checked){ // Si está seleccionado ... var cpt=obRDO.getAttribute("value"); - var obSel=trObj.childNodes[3].childNodes[0]; // Recupera objeto select de la Imagen + var obSel=trObj.childNodes[3].childNodes[0]; // Recupera objeto select de la Imagen var idx=obSel.selectedIndex; - if(idx==0){ // No ha seleccionado indice en el desplegable imagen + if(idx===0){ // No ha seleccionado indice en el desplegable imagen alert(TbMsg[1]); - return(false); - } - // Compone parametros + return(false); + } + // Compone parametros var tbIMG=obSel.options[idx].value.split(";"); var idi=tbIMG[0]; // Identificador de la imagen - var nci=tbIMG[1]; // Nombre can�nico de la imagen - var ipr=tbIMG[2]; // Ip del repositorio de la imagen - var rti=tbIMG[3]; // Ruta de origen de la imagen + var nci=tbIMG[1]; // Nombre canónico de la imagen + var ipr=tbIMG[2]; // Ip del repositorio de la imagen + var rti=tbIMG[3]; // Ruta de origen de la imagen prm+="par="+par+RC; - prm+="cpt="+cpt+RC; + prm+="cpt="+cpt+RC; prm+="idi="+idi+RC; prm+="nci="+nci+RC; - prm+="ipr="+ipr+RC; - prm+="rti="+rti+RC; + prm+="ipr="+ipr+RC; + prm+="rti="+rti+RC; + + var desplemet=document.getElementById("desplesync_"+par); // Desplegable metodo de syncronización + var p=desplemet.selectedIndex; // Toma Ãndice seleccionado - - var desplemet=document.getElementById("desplesync_"+par); // Desplegable metodo de syncronizaci�n - var p=desplemet.selectedIndex; // Toma �ndice seleccionado - - // No ha elegido ninguna partici�n - if(p==0){ + // No ha elegido ninguna partición + if(p===0){ alert(TbMsg[3]); return(""); } - prm+="msy="+p+RC; // M�todo de syncronizaci�n 1=Sincronizaci�n1 2=Sincronizacion2 - - + prm+="msy="+p+RC; // Método de syncronización 1=Sincronización1 2=Sincronización2 + var chrChk=document.getElementById('whl-'+par); // Recupera objeto fila de la tabla opciones adicionales if(chrChk.checked) prm+="whl=1"+RC; else prm+="whl=0"+RC; chrChk=document.getElementById('eli-'+par); // Recupera objeto fila de la tabla opciones adicionales if(chrChk.checked) prm+="eli=1"+RC; else prm+="eli=0"+RC; chrChk=document.getElementById('cmp-'+par); // Recupera objeto fila de la tabla opciones adicionales if(chrChk.checked) prm+="cmp=1"+RC; else prm+="cmp=0"+RC; - - var trObj=document.getElementById('trOpc'); // Recupera objeto fila de la tabla opciones adicionales - var obChk=trObj.childNodes[3].childNodes[0]; // Recupera objeto checkbox borrar de la Imagen + + trObj=document.getElementById('trOpc'); // Recupera objeto fila de la tabla opciones adicionales + var obChk=trObj.childNodes[3].childNodes[0]; // Recupera objeto checkbox borrar de la Imagen if(obChk.checked) prm+="bpi=1"+RC; else prm+="bpi=0"+RC; - var obChk=trObj.childNodes[7].childNodes[0]; // Recupera objeto checkbox copiar en cache + obChk=trObj.childNodes[7].childNodes[0]; // Recupera objeto checkbox copiar en caché if(obChk.checked) prm+="cpc=1"+RC; else prm+="cpc=0"+RC; - var obChk=trObj.childNodes[11].childNodes[0]; // Recupera objeto checkbox borrar la cache + obChk=trObj.childNodes[11].childNodes[0]; // Recupera objeto checkbox borrar la caché if(obChk.checked) prm+="bpc=1"+RC; else prm+="bpc=0"+RC; - var obChk=trObj.childNodes[15].childNodes[0]; // Recupera objeto checkbox no borrar archivos en destino + obChk=trObj.childNodes[15].childNodes[0]; // Recupera objeto checkbox no borrar archivos en destino if(obChk.checked) prm+="nba=1"+RC; else prm+="nba=0"+RC; - if(comprobar_datosejecucion()) // Comprueba opciones de ejecuci�n + if(comprobar_datosejecucion()) // Comprueba opciones de ejecución return(prm); else return(""); } } } - // No ha elegido ninguna partici�n + // No ha elegido ninguna partición alert(TbMsg[2]); return(""); } - diff --git a/admin/WebConsole/comandos/jscripts/CrearSoftIncremental.js b/admin/WebConsole/comandos/jscripts/CrearSoftIncremental.js index b4a827d1..250c85e7 100644 --- a/admin/WebConsole/comandos/jscripts/CrearSoftIncremental.js +++ b/admin/WebConsole/comandos/jscripts/CrearSoftIncremental.js @@ -1,10 +1,10 @@ // ************************************************************************************************************** // Libreria de scripts de Javascript -// Copyright 2003-2005 Jos� Manuel Alonso. Todos los derechos reservados. -// Fecha Creaci�n:2003-2004 -// Fecha �ltima modificaci�n: Marzo-2005 +// Copyright 2003-2005 José Manuel Alonso. Todos los derechos reservados. +// Fecha Creación:2003-2004 +// Fecha última modificación: Marzo-2005 // Nombre del fichero: CrearSoftIncremental.js -// Descripci�n : +// Descripción: // Este fichero implementa las funciones javascript del fichero CrearSoftIncremental.php (Comandos) // ************************************************************************************************************** @@ -13,16 +13,15 @@ function confirmar() { var prm=comprobar_datos(); - if(prm=="") return; // Ha habido alg�n error + if(prm==="") return; // Ha habido algún error var disco=1; // Siempre disco 1 document.fdatosejecucion.atributos.value="dsk="+disco+RC+prm; - //alert(document.fdatosejecucion.atributos.value); document.fdatosejecucion.submit(); } //________________________________________________________________________________________________________ // -// Cancela la edici�n +// Cancela la edición //________________________________________________________________________________________________________ function cancelar(){ @@ -36,47 +35,47 @@ function cancelar(){ function comprobar_datos() { - var prm=""; // Retorno par�metros + var prm=""; // Retorno parámetros var cadPar=document.getElementById("cadPar").getAttribute("value"); var tbPar=cadPar.split(";"); for(var i=0;i<tbPar.length;i++){ - var par=tbPar[i]; // Numero de partici�n + var par=tbPar[i]; // Numero de partición if(par>0){ var trObj=document.getElementById('trPar-'+par); // Recupera objeto fila var obRDO=trObj.childNodes[0].childNodes[0]; // Recupera Radio buton de la fila - if(obRDO.checked){ // Si est� seleccionado ... - var obSel=trObj.childNodes[3].childNodes[0]; // Recupera objeto select de la Imagen + if(obRDO.checked){ // Si está seleccionado ... + var obSel=trObj.childNodes[3].childNodes[0]; // Recupera objeto select de la Imagen var idx=obSel.selectedIndex; - if(idx==0){ // No ha seleccionado indice en el desplegable imagen + if(idx===0){ // No ha seleccionado indice en el desplegable imagen alert(TbMsg[3]); return(false); } var tbIMG=obSel.options[idx].value.split(";"); - var idi=tbIMG[0]; // Identificador de la imagen b�sica - var nci=tbIMG[1]; // Nombre can�nico de la imagen b�sica + var idi=tbIMG[0]; // Identificador de la imagen básica + var nci=tbIMG[1]; // Nombre canónico de la imagen básica var ipr=tbIMG[2]; // Ip del repositorio de la imagen var idf=tbIMG[3]; // NIdentificador de la imagen incremental - var ncf=tbIMG[4]; // Nombre can�nico de la imagen incremental + var ncf=tbIMG[4]; // Nombre canónico de la imagen incremental var rti=tbIMG[5]; // Ruta de origen de la imagen - // Compone parametros + // Compone parametros prm+="par="+par+RC; prm+="idi="+idi+RC; prm+="nci="+nci+RC; - prm+="ipr="+ipr+RC; + prm+="ipr="+ipr+RC; prm+="idf="+idf+RC; - prm+="ncf="+ncf+RC; - prm+="rti="+rti+RC; + prm+="ncf="+ncf+RC; + prm+="rti="+rti+RC; - var desplemet=document.getElementById("desplesync_"+par); // Desplegable metodo de syncronizaci�n - var p=desplemet.selectedIndex; // Toma �ndice seleccionado - - // No ha elegido ninguna partici�n - if(p==0){ + var desplemet=document.getElementById("desplesync_"+par); // Desplegable metodo de syncronización + var p=desplemet.selectedIndex; // Toma Ãndice seleccionado + + // No ha elegido ninguna partición + if(p===0){ alert(TbMsg[4]); return(""); } - prm+="msy="+p+RC; // M�todo de syncronizaci�n 1=Sincronizaci�n1 2=Sincronizacion2 + prm+="msy="+p+RC; // Método de syncronización 1=Sincronización1 2=Sincronización2 var chrChk=document.getElementById('whl-'+par); // Recupera objeto fila de la tabla opciones adicionales if(chrChk.checked) prm+="whl=1"+RC; else prm+="whl=0"+RC; @@ -86,24 +85,24 @@ function comprobar_datos() if(chrChk.checked) prm+="cmp=1"+RC; else prm+="cmp=0"+RC; - var trObj=document.getElementById('trOpc'); // Recupera objeto fila de la tabla opciones adicionales + trObj=document.getElementById('trOpc'); // Recupera objeto fila de la tabla opciones adicionales var obChk=trObj.childNodes[3].childNodes[0]; // Recupera objeto checkbox borrar de la Imagen if(obChk.checked) prm+="bpi=1"+RC; else prm+="bpi=0"+RC; - var obChk=trObj.childNodes[7].childNodes[0]; // Recupera objeto checkbox copiar en cache + obChk=trObj.childNodes[7].childNodes[0]; // Recupera objeto checkbox copiar en cache if(obChk.checked) prm+="cpc=1"+RC; else prm+="cpc=0"+RC; - var obChk=trObj.childNodes[11].childNodes[0]; // Recupera objeto checkbox borrar la cache + obChk=trObj.childNodes[11].childNodes[0]; // Recupera objeto checkbox borrar la cache if(obChk.checked) prm+="bpc=1"+RC; else prm+="bpc=0"+RC; - var obChk=trObj.childNodes[15].childNodes[0]; // Recupera objeto checkbox no borrar archivos en destino - if(obChk.checked) prm+="nba=1"+RC; else prm+="nba=0"+RC; + obChk=trObj.childNodes[15].childNodes[0]; // Recupera objeto checkbox no borrar archivos en destino + if(obChk.checked) prm+="nba=1"+RC; else prm+="nba=0"+RC; - if(comprobar_datosejecucion()) // Comprueba opciones de ejecuci�n + if(comprobar_datosejecucion()) // Comprueba opciones de ejecución return(prm); else return(""); } } } - // No ha elegido ninguna partici�n + // No ha elegido ninguna partición alert(TbMsg[2]); return(""); } diff --git a/admin/WebConsole/comandos/jscripts/EjecutarScripts.js b/admin/WebConsole/comandos/jscripts/EjecutarScripts.js index 878ea770..e97e6f2a 100644 --- a/admin/WebConsole/comandos/jscripts/EjecutarScripts.js +++ b/admin/WebConsole/comandos/jscripts/EjecutarScripts.js @@ -33,7 +33,7 @@ function comprobar_datos() { - if (document.fdatos.codigo.value=="") { + if (document.fdatos.codigo.value==="") { alert(TbMsg[1]); document.fdatos.codigo.focus(); return(false); diff --git a/admin/WebConsole/comandos/jscripts/EliminarImagenCache.js b/admin/WebConsole/comandos/jscripts/EliminarImagenCache.js index 2e74c9a0..62ff72fd 100644 --- a/admin/WebConsole/comandos/jscripts/EliminarImagenCache.js +++ b/admin/WebConsole/comandos/jscripts/EliminarImagenCache.js @@ -7,7 +7,7 @@ function confirmar(){ if (comprobar_datos()){ // Compone atributos del comando - tb_conf=document.getElementById("tabla_conf"); + var tb_conf=document.getElementById("tabla_conf"); var ochecks=tb_conf.getElementsByTagName('INPUT'); var atributos; for(var i=0;i<ochecks.length;i++){ @@ -29,13 +29,13 @@ function confirmar(){ //________________________________________________________________________________________________________ function comprobar_datos() { - tb_conf=document.getElementById("tabla_conf"); + var tb_conf=document.getElementById("tabla_conf"); var ochecks=tb_conf.getElementsByTagName('INPUT'); var op=0; for(var i=0;i<ochecks.length;i++){ if(ochecks[i].checked) op++; } - if(op==0){ + if(op===0){ alert(TbMsg[1]); return(false); } diff --git a/admin/WebConsole/comandos/jscripts/IniciarSesion.js b/admin/WebConsole/comandos/jscripts/IniciarSesion.js index cbd1cf69..9fe4d525 100644 --- a/admin/WebConsole/comandos/jscripts/IniciarSesion.js +++ b/admin/WebConsole/comandos/jscripts/IniciarSesion.js @@ -20,13 +20,13 @@ function confirmar(){ filtrado(); var ipfiltro=document.fdatosejecucion.filtro.value; // Compone atributos del comando - tb_conf=document.getElementById("tabla_conf"); + var tb_conf=document.getElementById("tabla_conf"); var ochecks=tb_conf.getElementsByTagName('INPUT'); for(var i=0;i<ochecks.length;i++){ if(ochecks[i].checked){ var diskPart = ochecks[i].value.split(";"); var disco = diskPart[0]; - var numpar= diskPart[1]; + var numpar= diskPart[1]; atributos+="dsk="+disco+RC; atributos+="par="+numpar+RC; // Datos bloque de configuracion: ip equipos. @@ -35,12 +35,12 @@ function confirmar(){ var iptabla=tbOrd.getAttribute('value'); // Elimino los ordenadores del filtro que no estén en la tabla. - if (ipfiltro!=''){ + if (ipfiltro!==''){ var arraytabla = iptabla.split(","); var arrayfiltro =ipfiltro.split(";"); arrayfiltro = array_interset (arrayfiltro.sort(), arraytabla.sort()); ipfiltro = arrayfiltro.join(";"); - if (ipfiltro ==''){ + if (ipfiltro===''){ alert(TbMsg["FILTER"]); return(false); } @@ -68,13 +68,13 @@ function confirmar(){ //________________________________________________________________________________________________________ function comprobar_datos() { - tb_conf=document.getElementById("tabla_conf"); + var tb_conf=document.getElementById("tabla_conf"); var ochecks=tb_conf.getElementsByTagName('INPUT'); var op=0; for(var i=0;i<ochecks.length;i++){ if(ochecks[i].checked) op++; } - if(op==0){ + if(op===0){ alert(TbMsg[1]); return(false); } diff --git a/admin/WebConsole/comandos/jscripts/InventarioSoftware.js b/admin/WebConsole/comandos/jscripts/InventarioSoftware.js index 4910d047..ad6a42c1 100644 --- a/admin/WebConsole/comandos/jscripts/InventarioSoftware.js +++ b/admin/WebConsole/comandos/jscripts/InventarioSoftware.js @@ -8,10 +8,10 @@ // Este fichero implementa las funciones javascript del fichero InventarioHardware.php (Comandos) // ************************************************************************************************************************************************* function confirmar(){ + var diskPart=[]; if (comprobar_datos()){ - tb_conf=document.getElementById("tabla_conf"); + var tb_conf=document.getElementById("tabla_conf"); var ochecks=tb_conf.getElementsByTagName('INPUT'); - var particion; for(var i=0;i<ochecks.length;i++){ if(ochecks[i].checked){ diskPart=ochecks[i].value.split(";"); @@ -32,14 +32,14 @@ } //________________________________________________________________________________________________________ function comprobar_datos(){ - tb_conf=document.getElementById("tabla_conf"); + var tb_conf=document.getElementById("tabla_conf"); var ochecks=tb_conf.getElementsByTagName('INPUT'); var op=0; for(var i=0;i<ochecks.length;i++){ if(ochecks[i].checked) op++; } - if(op==0){ + if(op===0){ alert(TbMsg[1]); return(false); } diff --git a/admin/WebConsole/comandos/jscripts/RestaurarImagen.js b/admin/WebConsole/comandos/jscripts/RestaurarImagen.js index 778e6de1..36705236 100644 --- a/admin/WebConsole/comandos/jscripts/RestaurarImagen.js +++ b/admin/WebConsole/comandos/jscripts/RestaurarImagen.js @@ -12,6 +12,7 @@ var RC="@"; // UHU - Ahora puede ser cualquier disco var disco; + var numequipos; var atributos=""; var tb_conf=document.getElementById("tabla_conf"); var ochecks=tb_conf.getElementsByTagName('INPUT'); @@ -46,12 +47,12 @@ var ipfiltro=document.fdatosejecucion.filtro.value; // Elimino los ordenadores del filtro que no estén en la tabla. - if (ipfiltro!=''){ + if (ipfiltro!==''){ var arraytabla = iptabla.split(","); var arrayfiltro =ipfiltro.split(";"); arrayfiltro = array_interset (arrayfiltro.sort(), arraytabla.sort()); ipfiltro = arrayfiltro.join(";"); - if (ipfiltro ==''){ + if (ipfiltro===''){ alert(TbMsg["FILTER"]); return(false); } @@ -63,8 +64,8 @@ } // Mensaje de aviso si protocolo UNICAST y más de un ordenador - if ( ( protoclonacion.value=="UNICAST" || protoclonacion.value=="UNICAST-DIRECT") && numequipos > 1 ) { - if (confirm(TbMsg["UNICAST"]) != true) { + if ( ( protoclonacion.value==="UNICAST" || protoclonacion.value==="UNICAST-DIRECT") && numequipos > 1 ) { + if (confirm(TbMsg["UNICAST"]) !== true) { cancelar(); return(false); } @@ -84,32 +85,32 @@ //________________________________________________________________________________________________________ function comprobar_datos() { - tb_conf=document.getElementById("tabla_conf"); + var tb_conf=document.getElementById("tabla_conf"); var ochecks=tb_conf.getElementsByTagName('INPUT'); var op=0; for(var i=0;i<ochecks.length;i++){ if(ochecks[i].checked){ op++; var idradio=ochecks[i].id; // Toma idemtificador del desplegable de imagenes - despleimagenizda=document.getElementById("despleimagen_"+idradio+"_1"); // Desplegable izda. - despleimagendcha=document.getElementById("despleimagen_"+idradio+"_0"); // Desplegable derecha. + var despleimagenizda=document.getElementById("despleimagen_"+idradio+"_1"); // Desplegable izda. + var despleimagendcha=document.getElementById("despleimagen_"+idradio+"_0"); // Desplegable derecha. var p1=despleimagenizda.selectedIndex; // Toma Ãndice seleccionado var p2=despleimagendcha.selectedIndex; // Toma Ãndice seleccionado - if (p1==0 && p2==0){ + if (p1===0 && p2===0){ alert(TbMsg[0]); despleimagenizda.focus(); return(false) } - if (p1==p2){ + if (p1===p2){ alert(TbMsg[6]); despleimagenizda.focus(); return(false) } } } - if(op==0){ + if(op===0){ alert(TbMsg[1]); return(false); } diff --git a/admin/WebConsole/comandos/jscripts/RestaurarImagenBasica.js b/admin/WebConsole/comandos/jscripts/RestaurarImagenBasica.js index 99b91a19..960cd8ce 100644 --- a/admin/WebConsole/comandos/jscripts/RestaurarImagenBasica.js +++ b/admin/WebConsole/comandos/jscripts/RestaurarImagenBasica.js @@ -16,7 +16,7 @@ var tb_conf=document.getElementById("tabla_conf"); var ochecks=tb_conf.getElementsByTagName('INPUT'); for(var i=0;i<ochecks.length;i++){ - if(ochecks[i].checked && ochecks[i].name=="particion"){ + if(ochecks[i].checked && ochecks[i].name==="particion"){ var idradio=ochecks[i].id; var diskPart = ochecks[i].value.split(";"); disco =diskPart[0]; @@ -36,15 +36,15 @@ atributos+="rti="+imgcanrepo[4]+RC; // Ruta de origen de la imagen var desplemet=document.getElementById("desplemet_"+idradio); // Desplegable metodo de restauración - var p=desplemet.selectedIndex; // Toma Ãndice seleccionado + var p=desplemet.selectedIndex; // Toma Ãndice seleccionado atributos+="met="+p+RC; // Método de clonación 0=caché 1=repositorio - var desplemet=document.getElementById("desplesync_"+idradio); // Desplegable metodo de syncronización - var p=desplemet.selectedIndex; // Toma Ãndice seleccionado + desplemet=document.getElementById("desplesync_"+idradio); // Desplegable metodo de syncronización + p=desplemet.selectedIndex; // Toma Ãndice seleccionado atributos+="msy="+p+RC; // Método de clonación - var desplemet=document.getElementById("despletpt_"+idradio); // Desplegable metodo de syncronización - var p=desplemet.value; // Toma Ãndice seleccionado + desplemet=document.getElementById("despletpt_"+idradio); // Desplegable metodo de syncronización + p=desplemet.value; // Toma Ãndice seleccionado atributos+="tpt="+p+RC; // Método de clonación var chrChk=document.getElementById('whl-'+idradio); // Recupera objeto fila de la tabla opciones adicionales @@ -55,12 +55,12 @@ if(chrChk.checked) atributos+="cmp=1"+RC; else atributos+="cmp=0"+RC; var cc=ochecks[i].getAttribute('idcfg'); // Toma identificador del bloque de configuración - if(document.fdatosejecucion.ambito.value!=AMBITO_ORDENADORES){ + if(document.fdatosejecucion.ambito.value!=AMBITO_ORDENADORES){ var tbOrd=document.getElementById("tbOrd_"+cc); var idordenadores=tbOrd.getAttribute('value'); // Toma identificadores de los ordenadores var cadenaid=document.fdatos.cadenaid.value; // Cadena de identificadores de todos los ordenadores del ámbito - if(idordenadores!=cadenaid){ - document.fdatosejecucion.ambito.value=0; // Ambito de aplicación restringido + if(idordenadores!==cadenaid){ + document.fdatosejecucion.ambito.value=0; // Ãmbito de aplicación restringido document.fdatosejecucion.idambito.value=idordenadores; } } @@ -68,11 +68,11 @@ var trObj=document.getElementById('trOpc'); // Recupera objeto fila de la tabla opciones adicionales var obChk=trObj.childNodes[3].childNodes[0]; // Recupera objeto checkbox borrar de la Imagen if(obChk.checked) atributos+="bpi=1"+RC; else atributos+="bpi=0"+RC; - var obChk=trObj.childNodes[7].childNodes[0]; // Recupera objeto checkbox copiar en cache + obChk=trObj.childNodes[7].childNodes[0]; // Recupera objeto checkbox copiar en cache if(obChk.checked) atributos+="cpc=1"+RC; else atributos+="cpc=0"+RC; - var obChk=trObj.childNodes[11].childNodes[0]; // Recupera objeto checkbox borrar la cache + obChk=trObj.childNodes[11].childNodes[0]; // Recupera objeto checkbox borrar la cache if(obChk.checked) atributos+="bpc=1"+RC; else atributos+="bpc=0"+RC; - var obChk=trObj.childNodes[15].childNodes[0]; // Recupera objeto checkbox no borrar archivos en destino + obChk=trObj.childNodes[15].childNodes[0]; // Recupera objeto checkbox no borrar archivos en destino if(obChk.checked) atributos+="nba=1"+RC; else atributos+="nba=0"+RC; document.fdatosejecucion.atributos.value=atributos; @@ -92,31 +92,31 @@ //________________________________________________________________________________________________________ function comprobar_datos() { - tb_conf=document.getElementById("tabla_conf"); + var tb_conf=document.getElementById("tabla_conf"); var ochecks=tb_conf.getElementsByTagName('INPUT'); var op=0; for(var i=0;i<ochecks.length;i++){ - if(ochecks[i].checked && ochecks[i].name=="particion"){ + if(ochecks[i].checked && ochecks[i].name==="particion"){ op++; var idradio=ochecks[i].id; // Toma idemtificador del desplegable de imagenes - despleimagenizda=document.getElementById("despleimagen_"+idradio+"_1"); // Desplegable izda. - var p1=despleimagenizda.selectedIndex; // Toma Ãndice seleccionado - if (p1==0){ + var despleimagenizda=document.getElementById("despleimagen_"+idradio+"_1"); // Desplegable izda. + var p1=despleimagenizda.selectedIndex; // Toma Ãndice seleccionado + if (p1===0){ alert(TbMsg[0]); despleimagenizda.focus(); return(false) } // Comprobamos tipo de sincronizacion. var desplemet=document.getElementById("desplesync_"+idradio); // Desplegable metodo de syncronización - var p1=desplemet.selectedIndex; // Toma Ãndice seleccionado - if (p1==0){ + p1=desplemet.selectedIndex; // Toma Ãndice seleccionado + if (p1===0){ alert(TbMsg[7]); desplemet.focus(); return(false) } } } - if(op==0){ + if(op===0){ alert(TbMsg[1]); return(false); } diff --git a/admin/WebConsole/comandos/jscripts/RestaurarSoftIncremental.js b/admin/WebConsole/comandos/jscripts/RestaurarSoftIncremental.js index 756b3ba9..88ecd6e1 100644 --- a/admin/WebConsole/comandos/jscripts/RestaurarSoftIncremental.js +++ b/admin/WebConsole/comandos/jscripts/RestaurarSoftIncremental.js @@ -16,7 +16,7 @@ var tb_conf=document.getElementById("tabla_conf"); var ochecks=tb_conf.getElementsByTagName('INPUT'); for(var i=0;i<ochecks.length;i++){ - if(ochecks[i].checked && ochecks[i].name=="particion"){ + if(ochecks[i].checked && ochecks[i].name==="particion"){ var idradio=ochecks[i].id; var diskPart = ochecks[i].value.split(";"); disco =diskPart[0]; @@ -39,15 +39,15 @@ atributos+="rti="+imgcanrepo[6]+RC; // Ruta de origen de la imagen var desplemet=document.getElementById("desplemet_"+idradio); // Desplegable metodo de restauración - var p=desplemet.selectedIndex; // Toma Ãndice seleccionado + var p=desplemet.selectedIndex; // Toma Ãndice seleccionado atributos+="met="+p+RC; // Método de clonación 0=caché 1=repositorio - var desplemet=document.getElementById("desplesync_"+idradio); // Desplegable metodo de syncronización - var p=desplemet.selectedIndex; // Toma Ãndice seleccionado + desplemet=document.getElementById("desplesync_"+idradio); // Desplegable metodo de syncronización + p=desplemet.selectedIndex; // Toma Ãndice seleccionado atributos+="msy="+p+RC; // Método de clonación - var desplemet=document.getElementById("despletpt_"+idradio); // Desplegable metodo de syncronización - var p=desplemet.value; // Toma Ãndice seleccionado + desplemet=document.getElementById("despletpt_"+idradio); // Desplegable metodo de syncronización + p=desplemet.value; // Toma Ãndice seleccionado atributos+="tpt="+p+RC; // Método de transmision var chrChk=document.getElementById('whl-'+idradio); // Recupera objeto fila de la tabla opciones adicionales @@ -58,11 +58,11 @@ if(chrChk.checked) atributos+="cmp=1"+RC; else atributos+="cmp=0"+RC; var cc=ochecks[i].getAttribute('idcfg'); // Toma identificador del bloque de configuración - if(document.fdatosejecucion.ambito.value!=AMBITO_ORDENADORES){ + if(document.fdatosejecucion.ambito.value!=AMBITO_ORDENADORES){ var tbOrd=document.getElementById("tbOrd_"+cc); var idordenadores=tbOrd.getAttribute('value'); // Toma identificadores de los ordenadores var cadenaid=document.fdatos.cadenaid.value; // Cadena de identificadores de todos los ordenadores del ámbito - if(idordenadores!=cadenaid){ + if(idordenadores!==cadenaid){ document.fdatosejecucion.ambito.value=0; // Ambito de aplicación restringido document.fdatosejecucion.idambito.value=idordenadores; } @@ -71,11 +71,11 @@ var trObj=document.getElementById('trOpc'); // Recupera objeto fila de la tabla opciones adicionales var obChk=trObj.childNodes[3].childNodes[0]; // Recupera objeto checkbox borrar de la Imagen if(obChk.checked) atributos+="bpi=1"+RC; else atributos+="bpi=0"+RC; - var obChk=trObj.childNodes[7].childNodes[0]; // Recupera objeto checkbox copiar en cache + obChk=trObj.childNodes[7].childNodes[0]; // Recupera objeto checkbox copiar en cache if(obChk.checked) atributos+="cpc=1"+RC; else atributos+="cpc=0"+RC; - var obChk=trObj.childNodes[11].childNodes[0]; // Recupera objeto checkbox borrar la cache + obChk=trObj.childNodes[11].childNodes[0]; // Recupera objeto checkbox borrar la cache if(obChk.checked) atributos+="bpc=1"+RC; else atributos+="bpc=0"+RC; - var obChk=trObj.childNodes[15].childNodes[0]; // Recupera objeto checkbox no borrar archivos en destino + obChk=trObj.childNodes[15].childNodes[0]; // Recupera objeto checkbox no borrar archivos en destino if(obChk.checked) atributos+="nba=1"+RC; else atributos+="nba=0"+RC; document.fdatosejecucion.atributos.value=atributos; @@ -95,30 +95,30 @@ //________________________________________________________________________________________________________ function comprobar_datos() { - tb_conf=document.getElementById("tabla_conf"); + var tb_conf=document.getElementById("tabla_conf"); var ochecks=tb_conf.getElementsByTagName('INPUT'); var op=0; for(var i=0;i<ochecks.length;i++){ - if(ochecks[i].checked && ochecks[i].name=="particion"){ + if(ochecks[i].checked && ochecks[i].name==="particion"){ op++; var idradio=ochecks[i].id; // Toma idemtificador del desplegable de imagenes - despleimagenizda=document.getElementById("despleimagen_"+idradio+"_1"); // Desplegable imagenes. - var p1=despleimagenizda.selectedIndex; // Toma Ãndice seleccionado - if (p1==0){ + var despleimagenizda=document.getElementById("despleimagen_"+idradio+"_1"); // Desplegable imagenes. + var p1=despleimagenizda.selectedIndex; // Toma Ãndice seleccionado + if (p1===0){ alert(TbMsg[0]); despleimagenizda.focus(); return(false) } var desplemet=document.getElementById("desplesync_"+idradio); // Desplegable metodo de syncronización - var p1=desplemet.selectedIndex; // Toma Ãndice seleccionado - if (p1==0){ + p1=desplemet.selectedIndex; // Toma Ãndice seleccionado + if (p1===0){ alert(TbMsg[7]); desplemet.focus(); return(false) } } } - if(op==0){ + if(op===0){ alert(TbMsg[1]); return(false); } diff --git a/admin/WebConsole/controlacceso.php b/admin/WebConsole/controlacceso.php index 3e2f74ce..cfae986b 100644 --- a/admin/WebConsole/controlacceso.php +++ b/admin/WebConsole/controlacceso.php @@ -16,4 +16,4 @@ $wac="OPENGNSYSURL/"; // Página de login de la aplicación $idi="esp"; // Idioma por defecto //======================================================================================================== -?> + diff --git a/admin/WebConsole/controlpostacceso.php b/admin/WebConsole/controlpostacceso.php index 01f840d2..e3ecd0d9 100644 --- a/admin/WebConsole/controlpostacceso.php +++ b/admin/WebConsole/controlpostacceso.php @@ -16,7 +16,8 @@ include_once("./clases/AdoPhp.php"); $pss=""; $ident=""; $idc=0; - $iph=""; // Switch menu cliente + $iph=""; // Switch menu cliente + $adminetboot=""; if (isset($_GET["iph"])) $iph=$_GET["iph"]; //________________________________________________________________________________________________________ @@ -32,7 +33,6 @@ include_once("./clases/AdoPhp.php"); if ($idc != 0) { $rs=new Recordset; -// $cmd->texto="SELECT * FROM centros WHERE idcentro='$idc'"; $cmd->texto="SELECT * FROM centros WHERE idcentro=".$idc; $rs->Comando=&$cmd; if (!$rs->Abrir()) return(false); // Error al abrir recordset @@ -91,7 +91,7 @@ if ($idc != 0) //________________________________________________________________________________________________________ // Busca datos del usuario que intenta acceder a la aplicación - // Parametros: + // Parámetros: // - cmd:Una comando ya operativo (con conexión abierta) // - usuario: Nombre del usuario // - pasguor: Password del uuario @@ -122,7 +122,7 @@ if ($idc != 0) AND usuarios.pasguor=SHA2('".$pasguor."', 224)"; } $rs->Comando=&$cmd; - if (!$rs->Abrir()) return($false); // Error al abrir recordset + if (!$rs->Abrir()) return(false); // Error al abrir recordset if(!$rs->EOF){ $adminetboot=$rs->campos["idtipousuario"]; $idtipousuario=$rs->campos["idtipousuario"]; @@ -144,7 +144,7 @@ if ($idc != 0) } //________________________________________________________________________________________________________ // Busca datos de configuración del sistema - // Parametros: + // Paráametros: // - cmd:Una comando ya operativo (con conexión abierta) // - ips: Dirección IP del servidor de administración // - prt: Puerto de comunicaciones @@ -157,8 +157,7 @@ if ($idc != 0) $rs=new Recordset; $cmd->texto="SELECT * FROM entornos"; $rs->Comando=&$cmd; - //echo $cmd->texto; - if (!$rs->Abrir()) return($false); // Error al abrir recordset + if (!$rs->Abrir()) return(false); // Error al abrir recordset if(!$rs->EOF){ $ips=$rs->campos["ipserveradm"]; $prt=$rs->campos["portserveradm"]; @@ -169,7 +168,7 @@ if ($idc != 0) } //_______________________________________________________________________________________________________ // Muestra mensaje de alerta si no existe repositorio en la unidad organizativa - // Parametros: + // Parámetros: // - cmd:Una comando ya operativo (con conexión abierta) // - idcentro: identificador de la unidad organizativa //_______________________________________________________________________________________________________ @@ -202,17 +201,17 @@ if ($idc != 0) </head> <body> -<div id="mensaje" style="position:absolute;TOP:250;LEFT:330; visibility:visible"> - <span align="center" class="subcabeceras"><?php echo $TbMsg["ACCESS_ALLOWED"] ?></span> +<div id="mensaje" style="position:absolute;TOP:250px;LEFT:330px; visibility:visible; text-align: center"> + <span class="subcabeceras"><?php echo $TbMsg["ACCESS_ALLOWED"] ?></span> </div> <script language="javascript"> var vez=0; setTimeout("acceso();",300); function acceso(){ - o=document.getElementById("mensaje"); + var o=document.getElementById("mensaje"); var s=o.style.visibility; - if(s=="hidden") + if(s==="hidden") o.style.visibility="visible"; else o.style.visibility="hidden"; diff --git a/admin/WebConsole/descargas/README.es.html b/admin/WebConsole/descargas/README.es.html index 65560da7..bc548e02 100644 --- a/admin/WebConsole/descargas/README.es.html +++ b/admin/WebConsole/descargas/README.es.html @@ -7,53 +7,52 @@ <h1>OGAgent: agentes OpenGnsys para sistemas operativos</h1> <p>Ficheros disponibles para descarga de agente OGAgent:</p> -<dl> - <li><code>ogagent_<em>Version</em>_all.deb</code>: OGAgent para sistemas Ubuntu, Debian y derivados - <li><code>ogagent-<em>Version</em>.noarch.rpm</code>: OGAgent para sistemas Red Hat, Fedora y derivados - <li><code>ogagent-opensuse-<em>Version</em>.noarch.rpm</code>: OGAgent para sistemas SuSE y OpenSuSE - <li><code>OGAgentInstaller-<em>Version</em>.pkg</code>: OGAgent para sistemas macOS X - <li><code>OGAgentSetup-<em>Version</em>.exe</code>: OGAgent para sistemas Windows -</dl> +<ul> + <li><code>ogagent_<em>Version</em>_all.deb</code>: OGAgent para sistemas Ubuntu, Debian y derivados</li> + <li><code>ogagent-<em>Version</em>.noarch.rpm</code>: OGAgent para sistemas Red Hat, Fedora y derivados</li> + <li><code>ogagent-opensuse-<em>Version</em>.noarch.rpm</code>: OGAgent para sistemas SuSE y OpenSuSE</li> + <li><code>OGAgentInstaller-<em>Version</em>.pkg</code>: OGAgent para sistemas macOS X</li> + <li><code>OGAgentSetup-<em>Version</em>.exe</code>: OGAgent para sistemas Windows</li> +</ul> <h2>Instalar los agentes</h2> <h3>Ubuntu, Debian y derivados:</h3> -<dl> +<ul> <li>Ejecutar los comandos desde una terminal.</li> <li>Descargar el fichero e instalar el agente con sus dependencias: <pre> - sudo dpkg -i ogagent_<em>Version</em>_all.deb - sudo apt-get update - sudo apt-get install -fy</pre></li> + sudo apt update + sudo apt install <em>DirectorioDescarga</em>/ogagent_<em>Version</em>_all.deb</pre></li> <li>Configurar el agente: <pre> sudo sed -i "0,/remote=/ s,remote=.*,remote=https://<em>IPServidorOpenGnsys</em>/opengnsys/rest/," /usr/share/OGAgent/cfg/ogagent.cfg</pre></li> <li>Reiniciar el equipo o ejecutar el servicio <em>(se iniciará automáticamente en el proceso de arranque)</em>: <pre> sudo service ogagent start</pre></li> -</dl> +</ul> <h3>Red Hat, Fedora y derivados (como root):</h3> -<dl> +<ul> <li>Ejecutar los comandos desde una terminal.</li> <li>Descargar el fichero e instalar el agente con sus dependencias: <pre> yum install ogagent-<em>Version</em>.noarch.rpm</pre></li> <li>Configurar el agente: <pre> sed -i "0,/remote=/ s,remote=.*,remote=https://<em>IPServidorOpenGnsys</em>/opengnsys/rest/," /usr/share/OGAgent/cfg/ogagent.cfg</pre></li> - <li>Puede ser necesario corregir permisos antes de iniciar el servicio:</li> + <li>Puede ser necesario corregir permisos antes de iniciar el servicio: <pre> chmod +x /etc/init.d/ogagent</pre></li> <li>Reiniciar el equipo o ejecutar el servicio <em>(se iniciará automáticamente en el proceso de arranque)</em>: <pre> service ogagent start</pre></li> -</dl> +</ul> <h3>OpenSuSE:</h3> <p><em>(en preparación)</em></p> <h3>macOS X:</h3> -<dl> +<ul> <li>Ejecutar los comandos desde una terminal.</li> <li>Instalar dependencias <em>(la instalación puebe realizar estas operaciones)</em>: <pre> sudo easy_install pip - sudo pip install netifaces requests six</pre></li> + sudo pip install -U --ignore-installed netifaces requests six</pre></li> <li>Descargar el fichero e instalar el agente: <pre> sudo installer -pkg OGAgentInstaller-<em>Version</em>.pkg -target /</pre></li> <li>Configurar el agente: @@ -62,16 +61,16 @@ sudo mv /tmp/ogagent.cfg /Applications/OGAgent.app/cfg/ogagent.cfg</pre></li> <li>Reiniciar el equipo o ejecutar el servicio <em>(se iniciará automáticamente en el proceso de arranque)</em>: <pre> sudo ogagent start</pre></li> -</dl> +</ul> <h3>Windows (como usuario administrador):</h3> -<dl> - <li>Descargar el fichero e instalar el agente ejecutando el fichero <code>OGAgentSetup-<em>Version</em>.exe</code></li> +<ul> + <li>Descargar el fichero e instalar el agente ejecutando <code>OGAgentSetup-<em>Version</em>.exe</code></li> <li>Seguir las instrucciones del instalador.</li> <li>Editar el fichero de configuación <code>C:\Program Files\OGAgent\cfg\ogagent.cfg</code> (o <code>C:\Archivos de programa\OGAgent\cfg\ogagent.cfg</code>) y modificar el valor de la cláusula <code>remote</code> de la sección <code>[OGAgent]</code> inclyendo la dirección IP del servidor OpenGnsys.</li> <li>Reiniciar el equipo o ejecutar el servicio <em>(se iniciará automáticamente en el proceso de arranque)</em>: <pre> NET START OGAgent</pre></li> -</dl> +</ul> <h2>Desinstalar los agentes</h2> diff --git a/admin/WebConsole/descargas/index.php b/admin/WebConsole/descargas/index.php index bb434bee..b5caae13 100644 --- a/admin/WebConsole/descargas/index.php +++ b/admin/WebConsole/descargas/index.php @@ -65,4 +65,4 @@ function sendFile($file) { } // Warning: Don't left any character outside PHP code. -?> + diff --git a/admin/WebConsole/dirphp.php b/admin/WebConsole/dirphp.php index 26e3f8c4..7d706544 100644 --- a/admin/WebConsole/dirphp.php +++ b/admin/WebConsole/dirphp.php @@ -6,8 +6,8 @@ function listar_directorios_ruta($ruta){ if ($dh = opendir($ruta)) { while (($file = readdir($dh)) !== false) { if($file !=".svn" && $file!="." && $file!=".."){ - //esta línea la utilizaríamos si queremos listar todo lo que hay en el directorio - //mostraría tanto archivos como directorios + //esta lÃnea la utilizarÃamos si queremos listar todo lo que hay en el directorio + //mostrarÃa tanto archivos como directorios //echo "<br>Nombre de archivo: $file : Es un: " . filetype($ruta . $file); if (is_dir($ruta . $file) && $file!="." && $file!=".."){ //solo si el archivo es un directorio, distinto que "." y ".." @@ -53,4 +53,4 @@ function listar_directorios_ruta($ruta){ fwrite($fp, $buffer,strlen($buffer)); fclose($fp); } -?> + diff --git a/admin/WebConsole/estilos.css b/admin/WebConsole/estilos.css index d80d00fe..c53747c2 100644 --- a/admin/WebConsole/estilos.css +++ b/admin/WebConsole/estilos.css @@ -244,7 +244,7 @@ BACKGROUND-COLOR: #EEEECC; COLOR: #000000; FONT-FAMILY: Arial, Helvetica, sans-serif; - FONT-SIZE: 11; + FONT-SIZE: 11px; } A.tabla_listados_sin:visited{ COLOR: #000000; @@ -438,3 +438,13 @@ A.tabla_listados_sin:link{ color: #6b6363; font-weight: bold; } +/* consejo del dÃa */ +.consejo { + margin: 0 auto; + text-align: justify; + padding: 0 2em 0 2em; + max-width: 50em; +} +.consejo > div { + text-align: center; +} diff --git a/admin/WebConsole/gestores/gestor_accionmenu.php b/admin/WebConsole/gestores/gestor_accionmenu.php index c205c795..abeabef9 100644 --- a/admin/WebConsole/gestores/gestor_accionmenu.php +++ b/admin/WebConsole/gestores/gestor_accionmenu.php @@ -142,4 +142,4 @@ function Gestiona() } return(true); } -?> + diff --git a/admin/WebConsole/gestores/gestor_administradores_centros.php b/admin/WebConsole/gestores/gestor_administradores_centros.php index b6588752..0a33a645 100644 --- a/admin/WebConsole/gestores/gestor_administradores_centros.php +++ b/admin/WebConsole/gestores/gestor_administradores_centros.php @@ -74,4 +74,4 @@ function Gestiona(){ } return($resul); } -?> + diff --git a/admin/WebConsole/gestores/gestor_administradores_usuarios.php b/admin/WebConsole/gestores/gestor_administradores_usuarios.php index 14de0c41..b62e8e44 100644 --- a/admin/WebConsole/gestores/gestor_administradores_usuarios.php +++ b/admin/WebConsole/gestores/gestor_administradores_usuarios.php @@ -77,4 +77,4 @@ function Gestiona(){ } return($resul); } -?> + diff --git a/admin/WebConsole/gestores/gestor_colasacciones.php b/admin/WebConsole/gestores/gestor_colasacciones.php index dcb7a3a6..a8212f33 100644 --- a/admin/WebConsole/gestores/gestor_colasacciones.php +++ b/admin/WebConsole/gestores/gestor_colasacciones.php @@ -175,4 +175,4 @@ function enviaComandoActualizar($aplicacion) if($trama_notificacion==1) return(true); // Devuelve respuesta return(false); // Error de actualización } -?> + diff --git a/admin/WebConsole/gestores/gestor_componentehardwares.php b/admin/WebConsole/gestores/gestor_componentehardwares.php index 00fec28c..9a759b0b 100644 --- a/admin/WebConsole/gestores/gestor_componentehardwares.php +++ b/admin/WebConsole/gestores/gestor_componentehardwares.php @@ -166,4 +166,4 @@ function SubarbolXML_ComponenteHardwares($cmd,$idhardware,$descripcion,$idtipoha $cadenaXML.='</COMPONENTEHARDWARES>'; return($cadenaXML); } -?> + diff --git a/admin/WebConsole/gestores/gestor_componentesoftwares.php b/admin/WebConsole/gestores/gestor_componentesoftwares.php index 03483715..f437934b 100644 --- a/admin/WebConsole/gestores/gestor_componentesoftwares.php +++ b/admin/WebConsole/gestores/gestor_componentesoftwares.php @@ -170,4 +170,4 @@ function SubarbolXML_Componentesoftwares($cmd,$idsoftware,$descripcion,$idtiposo $cadenaXML.='</COMPONENTESOFTWARES>'; return($cadenaXML); } -?> + diff --git a/admin/WebConsole/gestores/gestor_ejecutaracciones.php b/admin/WebConsole/gestores/gestor_ejecutaracciones.php index 40672678..8e27d1be 100644 --- a/admin/WebConsole/gestores/gestor_ejecutaracciones.php +++ b/admin/WebConsole/gestores/gestor_ejecutaracciones.php @@ -306,5 +306,5 @@ function enviaComando($parametros,$sesion) } return(true); } -?> + diff --git a/admin/WebConsole/gestores/gestor_entidades.php b/admin/WebConsole/gestores/gestor_entidades.php index d37f41e0..7c89d30b 100644 --- a/admin/WebConsole/gestores/gestor_entidades.php +++ b/admin/WebConsole/gestores/gestor_entidades.php @@ -164,4 +164,4 @@ function SubarbolXML_entidades($identidad,$nombreentidad){ $cadenaXML.='></ENTIDAD>'; return($cadenaXML); } -?> + diff --git a/admin/WebConsole/gestores/gestor_imagenes.php b/admin/WebConsole/gestores/gestor_imagenes.php index a0706725..a412f20b 100644 --- a/admin/WebConsole/gestores/gestor_imagenes.php +++ b/admin/WebConsole/gestores/gestor_imagenes.php @@ -207,4 +207,4 @@ function SubarbolXML_imagenes($idimagen,$descripcion) $cadenaXML.='</IMAGEN>'; return($cadenaXML); } -?> + diff --git a/admin/WebConsole/gestores/gestor_inclusionacciones.php b/admin/WebConsole/gestores/gestor_inclusionacciones.php index f9337942..e20dad5d 100644 --- a/admin/WebConsole/gestores/gestor_inclusionacciones.php +++ b/admin/WebConsole/gestores/gestor_inclusionacciones.php @@ -172,4 +172,4 @@ function Gestiona() } return(true); } -?> + diff --git a/admin/WebConsole/gestores/gestor_menus.php b/admin/WebConsole/gestores/gestor_menus.php index e024100c..7545d079 100644 --- a/admin/WebConsole/gestores/gestor_menus.php +++ b/admin/WebConsole/gestores/gestor_menus.php @@ -184,7 +184,7 @@ function Gestiona(){ ________________________________________________________________________________________________________*/ function SubarbolXML_menus($idmenu,$descripcion){ global $LITAMBITO_MENUS; - $cadenaXML.='<MENU'; + $cadenaXML='<MENU'; // Atributos $cadenaXML.=' imagenodo="../images/iconos/menu.gif"'; $cadenaXML.=' infonodo="' .$descripcion.'"'; @@ -194,4 +194,4 @@ function SubarbolXML_menus($idmenu,$descripcion){ $cadenaXML.='</MENU>'; return($cadenaXML); } -?> + diff --git a/admin/WebConsole/gestores/gestor_ordenadores.php b/admin/WebConsole/gestores/gestor_ordenadores.php index 2b517abd..e0123d6d 100644 --- a/admin/WebConsole/gestores/gestor_ordenadores.php +++ b/admin/WebConsole/gestores/gestor_ordenadores.php @@ -147,13 +147,19 @@ if($opcion!=$op_movida){ break; } if ($resul){ - if ($opcion==$op_alta ) { + if ($opcion == $op_alta) { if ( $datosduplicados != '') { echo $literal."(0,'".$TbMsg["DUPLICADO"].$datosduplicados." ',".$idordenador.",o.innerHTML);".chr(13); - } else { + } else { echo $literal."(1,'".$cmd->DescripUltimoError()." ',".$idordenador.",o.innerHTML);".chr(13); } - } + } elseif ($opcion == $op_modificacion) { + if ( $datosduplicados != '') { + echo $literal."(0,'".$TbMsg["DUPLICADO"].$datosduplicados." ','".$nombreordenador."');".chr(13); + } else { + echo $literal."(1,'".$cmd->DescripUltimoError()." ','".$nombreordenador."');".chr(13); + } + } else echo $literal."(1,'".$cmd->DescripUltimoError()." ','".$nombreordenador."');".chr(13); } @@ -253,38 +259,18 @@ function Gestiona(){ switch($opcion){ case $op_alta : - // Comprueba que no existan duplicados - $ipduplicada='no'; - $nombreduplicado='no'; - $macduplicada='no'; - $cmd->texto="SELECT nombreordenador,ip,mac FROM ordenadores - WHERE nombreordenador=@nombreordenador OR ip=@ip OR mac=@mac"; - $rs=new Recordset; - $rs->Comando=&$cmd; - if (!$rs->Abrir()) return(0); // Error al abrir recordset - $rs->Primero(); - while (!$rs->EOF){ - if ( $nombreordenador == $rs->campos["nombreordenador"]) $datosduplicados ="nombre: $nombreordenador,"; - if ( $ip == $rs->campos["ip"]) $datosduplicados .=" ip: $ip,"; - if ( $mac == $rs->campos["mac"]) $datosduplicados .=" mac: $mac,"; - $rs->Siguiente(); - } - $rs->Cerrar(); - // quitamos última coma - $datosduplicados = trim($datosduplicados, ','); - - // Si no hay datos duplicados insertamos el ordenador; - if ( $datosduplicados == "" ) { - //Insertar fotoord con Values @fotoordenador - $cmd->texto="INSERT INTO ordenadores(nombreordenador,numserie,ip,mac,idperfilhard,idrepositorio,oglivedir, - idmenu,idproautoexec,idaula,grupoid,netiface,netdriver,fotoord,validacion,paginalogin,paginavalidacion) VALUES (@nombreordenador,@numserie,@ip,@mac,@idperfilhard,@idrepositorio,@oglivedir, - @idmenu,@idprocedimiento,@idaula,@grupoid,@netiface,@netdriver,@fotoordenador,@validacion,@paginalogin,@paginavalidacion)"; - } - $resul=$cmd->Ejecutar(); + $duplicates = checkDuplicates($cmd, $datosduplicados, $idordenador, $nombreordenador, $ip, $mac); + // Si no hay datos duplicados insertamos el ordenador; + if (!$duplicates) { + $cmd->texto="INSERT INTO ordenadores(nombreordenador,numserie,ip,mac,idperfilhard,idrepositorio,oglivedir, + idmenu,idproautoexec,idaula,grupoid,netiface,netdriver,fotoord,validacion,paginalogin,paginavalidacion) VALUES (@nombreordenador,@numserie,@ip,@mac,@idperfilhard,@idrepositorio,@oglivedir, + @idmenu,@idprocedimiento,@idaula,@grupoid,@netiface,@netdriver,@fotoordenador,@validacion,@paginalogin,@paginavalidacion)"; + } + $resul=$cmd->Ejecutar(); if ($resul){ // Crea una tabla nodo para devolver a la página que llamó ésta $idordenador=$cmd->Autonumerico(); // Crear fichero TFTP/PXE por defecto para el nuevo ordenador. - createBootMode ($cmd, "", $idordenador, $idioma); + createBootMode ($cmd, "", $nombreordenador, $idioma); // Insertar datos en el árbol de configuración. $arbolXML=SubarbolXML_ordenadores($idordenador,$nombreordenador); $baseurlimg="../images/signos"; // Url de las imagenes de signo @@ -293,13 +279,16 @@ function Gestiona(){ $tablanodo=$arbol->CreaArbolVistaXML(); } break; - case $op_modificacion: - $cmd->texto="UPDATE ordenadores SET nombreordenador=@nombreordenador,numserie=@numserie,ip=@ip,mac=@mac,idperfilhard=@idperfilhard, - idrepositorio=@idrepositorio,oglivedir=@oglivedir,idmenu=@idmenu,idproautoexec=@idprocedimiento,netiface=@netiface,netdriver=@netdriver,fotoord=@fotoordenador,validacion=@validacion,paginalogin=@paginalogin,paginavalidacion=@paginavalidacion - WHERE idordenador=@idordenador"; + case $op_modificacion: + $duplicates = checkDuplicates($cmd, $datosduplicados, $idordenador, $nombreordenador, $ip, $mac); + if (!$duplicates) { + $cmd->texto="UPDATE ordenadores SET nombreordenador=@nombreordenador,numserie=@numserie,ip=@ip,mac=@mac,idperfilhard=@idperfilhard, + idrepositorio=@idrepositorio,oglivedir=@oglivedir,idmenu=@idmenu,idproautoexec=@idprocedimiento,netiface=@netiface,netdriver=@netdriver,fotoord=@fotoordenador,validacion=@validacion,paginalogin=@paginalogin,paginavalidacion=@paginavalidacion + WHERE idordenador=@idordenador"; + } $resul=$cmd->Ejecutar(); // Actualizar fichero TFTP/PXE a partir de la plantilla asociada. - createBootMode ($cmd, $arranque, $idordenador, $idioma); + createBootMode ($cmd, $arranque, $nombreordenador, $idioma); break; case $op_eliminacion : $resul=EliminaOrdenadores($cmd,$idordenador,"idordenador");// Eliminación en cascada @@ -310,13 +299,38 @@ function Gestiona(){ $cmd->texto="UPDATE ordenadores SET idaula=@idaula, grupoid=@grupoid WHERE idordenador=@idordenador"; $resul=$cmd->Ejecutar(); // Actualizar fichero TFTP/PXE a partir de la plantilla asociada. - createBootMode ($cmd, $arranque, $idordenador, $idioma); + createBootMode ($cmd, $arranque, $nombreordenador, $idioma); break; default: break; } return($resul); } + +function checkDuplicates(&$cmd, &$duplicate_data, $computer_id, $computer_name, $ip, $mac){ + $cmd->texto="SELECT idordenador,nombreordenador,ip,mac FROM ordenadores + WHERE nombreordenador=@nombreordenador OR ip=@ip OR mac=@mac"; + $rs = new Recordset; + $rs->Comando=&$cmd; + if (!$rs->Abrir()) return(0); + $rs->Primero(); + while (!$rs->EOF) { + if ($computer_id != $rs->campos["idordenador"]) { + if ( $computer_name == $rs->campos["nombreordenador"]) + $duplicate_data ="nombre: $computer_name,"; + if ( $ip == $rs->campos["ip"]) + $duplicate_data .=" ip: $ip,"; + if (strtoupper($mac) == strtoupper($rs->campos["mac"])) + $duplicate_data .=" mac: $mac,"; + } + $rs->Siguiente(); + } + $rs->Cerrar(); + $duplicate_data = trim($duplicate_data, ','); + $ret = !empty($duplicate_data); + return($ret); +} + /*________________________________________________________________________________________________________ Crea un arbol XML para el nuevo nodo insertado ________________________________________________________________________________________________________*/ diff --git a/admin/WebConsole/gestores/gestor_perfilcomponente_hard.php b/admin/WebConsole/gestores/gestor_perfilcomponente_hard.php index 6682b748..a5822567 100644 --- a/admin/WebConsole/gestores/gestor_perfilcomponente_hard.php +++ b/admin/WebConsole/gestores/gestor_perfilcomponente_hard.php @@ -74,4 +74,4 @@ function Gestiona(){ } return($resul); } -?> + diff --git a/admin/WebConsole/gestores/gestor_perfilcomponente_soft.php b/admin/WebConsole/gestores/gestor_perfilcomponente_soft.php index baef269a..90c78314 100644 --- a/admin/WebConsole/gestores/gestor_perfilcomponente_soft.php +++ b/admin/WebConsole/gestores/gestor_perfilcomponente_soft.php @@ -74,4 +74,4 @@ function Gestiona(){ } return($resul); } -?> + diff --git a/admin/WebConsole/gestores/gestor_perfilhardwares.php b/admin/WebConsole/gestores/gestor_perfilhardwares.php index 43f50a28..6a238854 100644 --- a/admin/WebConsole/gestores/gestor_perfilhardwares.php +++ b/admin/WebConsole/gestores/gestor_perfilhardwares.php @@ -166,5 +166,5 @@ function SubarbolXML_perfileshard($idperfilhard,$descripcion){ $cadenaXML.='</PERFILESHARDWARES>'; return($cadenaXML); } -?> + diff --git a/admin/WebConsole/gestores/gestor_perfilsoftwares.php b/admin/WebConsole/gestores/gestor_perfilsoftwares.php index b50b4252..2185d2d7 100644 --- a/admin/WebConsole/gestores/gestor_perfilsoftwares.php +++ b/admin/WebConsole/gestores/gestor_perfilsoftwares.php @@ -156,4 +156,4 @@ function SubarbolXML_perfilessoft($idperfilsoft,$descripcion){ $cadenaXML.='</PERFILESSOFTWARES>'; return($cadenaXML); } -?> + diff --git a/admin/WebConsole/gestores/gestor_procedimientos.php b/admin/WebConsole/gestores/gestor_procedimientos.php index 449c5120..39f99514 100644 --- a/admin/WebConsole/gestores/gestor_procedimientos.php +++ b/admin/WebConsole/gestores/gestor_procedimientos.php @@ -156,4 +156,4 @@ function SubarbolXML_procedimientos($idprocedimiento,$descripcion){ $cadenaXML.='</PROCEDIMIENTO>'; return($cadenaXML); } -?> + diff --git a/admin/WebConsole/gestores/gestor_procedimientoscomandos.php b/admin/WebConsole/gestores/gestor_procedimientoscomandos.php index f89f6f2e..dd5af444 100644 --- a/admin/WebConsole/gestores/gestor_procedimientoscomandos.php +++ b/admin/WebConsole/gestores/gestor_procedimientoscomandos.php @@ -68,4 +68,4 @@ function Gestiona(){ } return($resul); } -?> + diff --git a/admin/WebConsole/gestores/gestor_programaciones.php b/admin/WebConsole/gestores/gestor_programaciones.php index bd9e0ba7..599427e5 100644 --- a/admin/WebConsole/gestores/gestor_programaciones.php +++ b/admin/WebConsole/gestores/gestor_programaciones.php @@ -205,6 +205,6 @@ function Gestiona() } return($resul); } -?> + diff --git a/admin/WebConsole/gestores/gestor_pxe.php b/admin/WebConsole/gestores/gestor_pxe.php index 331b6902..ee3bb751 100644 --- a/admin/WebConsole/gestores/gestor_pxe.php +++ b/admin/WebConsole/gestores/gestor_pxe.php @@ -214,4 +214,4 @@ function cleanString ($cadena) { } -?> + diff --git a/admin/WebConsole/gestores/gestor_pxe_grub4dos.php b/admin/WebConsole/gestores/gestor_pxe_grub4dos.php index 4992e1e2..fc21bbdc 100644 --- a/admin/WebConsole/gestores/gestor_pxe_grub4dos.php +++ b/admin/WebConsole/gestores/gestor_pxe_grub4dos.php @@ -1,49 +1,30 @@ <?php +// Version 1.1.1 - Se utiliza createBootMode para crear los archivos PXE (ticket #802 #888) +// Autor: Irina Gomez - ETSII Universidad de Sevilla +// Fecha: 2019/02/12 + include_once("../includes/ctrlacc.php"); -include_once("../clases/AdoPhp.php"); -include_once("../clases/XmlPhp.php"); -include_once("../clases/MenuContextual.php"); -include_once("../clases/SockHidra.php"); -include_once("../includes/constantes.php"); -include_once("../includes/comunes.php"); include_once("../includes/CreaComando.php"); include_once("../includes/tftputils.php"); -include_once("../idiomas/php/".$idioma."/aulas_".$idioma.".php"); - -$cmd=CreaComando($cadenaconexion); -if (!$cmd) - Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D. -//________________________________________________________________________________________________________ +// Recogemos los parametros +$litambito=(isset($_REQUEST["litambito"])) ? $_REQUEST["litambito"] : ""; +$idambito=(isset($_REQUEST["idambito"])) ? $_REQUEST["idambito"] : ""; +$nombreambito=(isset($_REQUEST["nombreambito"])) ? $_REQUEST["nombreambito"] : ""; +$lista=(isset($_POST['listOfItems'])) ? explode(";",$_POST['listOfItems']) : ""; -echo "<html>"; -echo "<head>"; -echo "<meta http-equiv='Refresh' content='1;URL=../principal/boot.php?idambito=". $_GET['idaula'] ."&nombreambito=" . $_GET['nombreambito'] . "&litambito=" . $_GET['litambito'] . "'>"; -echo "<title> gestion de equipos </title>"; -echo "<base target='principal'>"; -echo "</head>"; -echo "<body>"; +// Crea objeto comando +$cmd=CreaComando($cadenaconexion); -$lista = explode(";",$_POST['listOfItems']); foreach ($lista as $sublista) { - if (! empty ($sublista)) { - $elementos = explode("|",$sublista); - $hostname=$elementos[1]; - $optboot=$elementos[0]; - createBootMode ($cmd, $optboot, $hostname, $idioma); - } -} -echo " </body>"; -echo " </html> "; - + if (! empty ($sublista)) { + $elementos = explode("|",$sublista); + $hostname=$elementos[1]; + $optboot=$elementos[0]; -function netmask2cidr($netmask) { - $cidr = 0; - foreach (explode('.', $netmask) as $number) { - for (;$number> 0; $number = ($number <<1) % 256) { - $cidr++; - } - } - return $cidr; + createBootMode ($cmd, $optboot, $hostname, $idioma); + } } +header("Location: ../principal/boot.php?idambito=". $idambito ."&nombreambito=" . $nombreambito . "&litambito=" . $litambito); +exit(); diff --git a/admin/WebConsole/gestores/gestor_reservas.php b/admin/WebConsole/gestores/gestor_reservas.php index b983ecee..dbcb5f85 100644 --- a/admin/WebConsole/gestores/gestor_reservas.php +++ b/admin/WebConsole/gestores/gestor_reservas.php @@ -197,4 +197,4 @@ function SubarbolXML_reservas($idreserva,$descripcion,$estado){ $cadenaXML.='</RESERVA>'; return($cadenaXML); } -?> + diff --git a/admin/WebConsole/gestores/gestor_tareas.php b/admin/WebConsole/gestores/gestor_tareas.php index b96805dd..47928c92 100644 --- a/admin/WebConsole/gestores/gestor_tareas.php +++ b/admin/WebConsole/gestores/gestor_tareas.php @@ -141,8 +141,8 @@ function Gestiona(){ global $op_eliminacion; global $op_movida; global $op_ejecucion; - global $tablanodo; + $resul=false; $cmd->CreaParametro("@idcentro",$idcentro,1); $cmd->CreaParametro("@idtarea",$idtarea,1); @@ -171,7 +171,6 @@ function Gestiona(){ ambito=@ambito,idambito=@idambito WHERE idtarea=@idtarea"; $resul=$cmd->Ejecutar(); - //echo $cmd->texto; break; case $op_eliminacion : $resul=EliminaTareas($cmd,$idtarea,"idtarea"); @@ -181,7 +180,7 @@ function Gestiona(){ $resul=$cmd->Ejecutar(); break; case $op_ejecucion : - $resul=EjecutandoTareas(); + $resul=EjecutandoTareas(); break; default: break; @@ -213,7 +212,7 @@ function EjecutandoTareas(){ global $EJECUCION_TAREA; global $PROCESOS; global $ACCION_INICIADA; - global $ACCION_SINERRORES; + global $ACCION_SINRESULTADO; global $idcentro; global $servidorhidra; global $hidraport; @@ -309,4 +308,4 @@ function EjecutandoTareas(){ } return(true); } -?> + diff --git a/admin/WebConsole/gestores/gestor_tareascomandos.php b/admin/WebConsole/gestores/gestor_tareascomandos.php index c7f88ccd..ceffb695 100644 --- a/admin/WebConsole/gestores/gestor_tareascomandos.php +++ b/admin/WebConsole/gestores/gestor_tareascomandos.php @@ -59,12 +59,14 @@ function Gestiona(){ global $EJECUCION_COMANDO; global $PROCESOS; global $ACCION_INICIADA; - global $ACCION_SINERRORES; + global $ACCION_SINERRORES; + global $ACCION_SINRESULTADO; global $servidorhidra; global $hidraport; global $idcentro; global $idtareacomando; global $orden; + $resul=true; $cmd->CreaParametro("@orden",$orden,1); @@ -90,8 +92,6 @@ function Gestiona(){ $idambito=$Datos["idambito"]; $parametros=$Datos["parametros"]; - $resul=true; - $cmd->CreaParametro("@tipoaccion",$EJECUCION_COMANDO,1); $cmd->CreaParametro("@idtipoaccion",$idtipoaccion,1); $cmd->CreaParametro("@cateaccion",$PROCESOS,1); @@ -119,4 +119,4 @@ function Gestiona(){ } return($resul); } -?> + diff --git a/admin/WebConsole/gestores/gestor_tipohardwares.php b/admin/WebConsole/gestores/gestor_tipohardwares.php index 81e1f992..439de424 100644 --- a/admin/WebConsole/gestores/gestor_tipohardwares.php +++ b/admin/WebConsole/gestores/gestor_tipohardwares.php @@ -147,4 +147,4 @@ function SubarbolXML_tipohardwares($idtipohardware,$descripcion,$urlimg){ $cadenaXML.='</TIPOHARDWARES>'; return($cadenaXML); } -?> + diff --git a/admin/WebConsole/gestores/relaciones/aulas_eliminacion.php b/admin/WebConsole/gestores/relaciones/aulas_eliminacion.php index f42c6744..0f8ebefd 100644 --- a/admin/WebConsole/gestores/relaciones/aulas_eliminacion.php +++ b/admin/WebConsole/gestores/relaciones/aulas_eliminacion.php @@ -40,4 +40,4 @@ function EliminaAulas($cmd,$identificador,$nombreid,$swid=1){ $resul=$cmd->Ejecutar(); return($resul); } -?> + diff --git a/admin/WebConsole/gestores/relaciones/centros_eliminacion.php b/admin/WebConsole/gestores/relaciones/centros_eliminacion.php index 10ec2a06..af75ef1f 100644 --- a/admin/WebConsole/gestores/relaciones/centros_eliminacion.php +++ b/admin/WebConsole/gestores/relaciones/centros_eliminacion.php @@ -38,4 +38,4 @@ function EliminaCentros($cmd,$identificador,$nombreid,$swid=1){ $resul=$cmd->Ejecutar(); return($resul); } -?> + diff --git a/admin/WebConsole/gestores/relaciones/entidades_eliminacion.php b/admin/WebConsole/gestores/relaciones/entidades_eliminacion.php index 8444f0ba..706ed66d 100644 --- a/admin/WebConsole/gestores/relaciones/entidades_eliminacion.php +++ b/admin/WebConsole/gestores/relaciones/entidades_eliminacion.php @@ -38,4 +38,4 @@ function EliminaEntidad($cmd,$identificador,$nombreid,$swid=1){ $resul=$cmd->Ejecutar(); return($resul); } -?> + diff --git a/admin/WebConsole/gestores/relaciones/gruposordenadores_eliminacion.php b/admin/WebConsole/gestores/relaciones/gruposordenadores_eliminacion.php index d28be296..1b11b2e8 100644 --- a/admin/WebConsole/gestores/relaciones/gruposordenadores_eliminacion.php +++ b/admin/WebConsole/gestores/relaciones/gruposordenadores_eliminacion.php @@ -41,4 +41,4 @@ function EliminaGruposOrdenadores($cmd,$identificador,$nombreid,$swid=1){ $resul=$cmd->Ejecutar(); return($resul); } -?> + diff --git a/admin/WebConsole/gestores/relaciones/hardwares_eliminacion.php b/admin/WebConsole/gestores/relaciones/hardwares_eliminacion.php index a1c2a29e..bf0b7f65 100644 --- a/admin/WebConsole/gestores/relaciones/hardwares_eliminacion.php +++ b/admin/WebConsole/gestores/relaciones/hardwares_eliminacion.php @@ -39,4 +39,4 @@ function EliminaHardwares($cmd,$identificador,$nombreid,$swid=1){ $resul=$cmd->Ejecutar(); return($resul); } -?> + diff --git a/admin/WebConsole/gestores/relaciones/imagenes_eliminacion.php b/admin/WebConsole/gestores/relaciones/imagenes_eliminacion.php index 7b17500d..c0fea566 100644 --- a/admin/WebConsole/gestores/relaciones/imagenes_eliminacion.php +++ b/admin/WebConsole/gestores/relaciones/imagenes_eliminacion.php @@ -40,4 +40,4 @@ function EliminaImagenes($cmd,$identificador,$nombreid,$swid=1){ $resul=$cmd->Ejecutar(); return($resul); } -?> + diff --git a/admin/WebConsole/gestores/relaciones/incrementales_eliminacion.php b/admin/WebConsole/gestores/relaciones/incrementales_eliminacion.php index b2c33cd0..6aa25fa1 100644 --- a/admin/WebConsole/gestores/relaciones/incrementales_eliminacion.php +++ b/admin/WebConsole/gestores/relaciones/incrementales_eliminacion.php @@ -43,4 +43,4 @@ function EliminaSoftincremental($cmd,$identificador,$nombreid,$swid=1){ $resul=$cmd->Ejecutar(); return($resul); } -?> + diff --git a/admin/WebConsole/gestores/relaciones/menus_eliminacion.php b/admin/WebConsole/gestores/relaciones/menus_eliminacion.php index 4ffcfe06..0d369da2 100644 --- a/admin/WebConsole/gestores/relaciones/menus_eliminacion.php +++ b/admin/WebConsole/gestores/relaciones/menus_eliminacion.php @@ -40,4 +40,4 @@ function EliminaMenus($cmd,$identificador,$nombreid,$swid=1){ $resul=$cmd->Ejecutar(); return($resul); } -?> + diff --git a/admin/WebConsole/gestores/relaciones/ordenadores_eliminacion.php b/admin/WebConsole/gestores/relaciones/ordenadores_eliminacion.php index dd008dee..ed540da4 100644 --- a/admin/WebConsole/gestores/relaciones/ordenadores_eliminacion.php +++ b/admin/WebConsole/gestores/relaciones/ordenadores_eliminacion.php @@ -48,5 +48,5 @@ function EliminaOrdenadores($cmd,$identificador,$nombreid,$swid=1) $resul=$cmd->Ejecutar(); return($resul); } -?> + diff --git a/admin/WebConsole/gestores/relaciones/perfileshard_eliminacion.php b/admin/WebConsole/gestores/relaciones/perfileshard_eliminacion.php index f3c251c0..6d0391b4 100644 --- a/admin/WebConsole/gestores/relaciones/perfileshard_eliminacion.php +++ b/admin/WebConsole/gestores/relaciones/perfileshard_eliminacion.php @@ -44,4 +44,4 @@ function EliminaPerfileshard($cmd,$identificador,$nombreid,$swid=1){ $resul=$cmd->Ejecutar(); return($resul); } -?> + diff --git a/admin/WebConsole/gestores/relaciones/perfilessoft_eliminacion.php b/admin/WebConsole/gestores/relaciones/perfilessoft_eliminacion.php index ef7c4fc4..4f5d73de 100644 --- a/admin/WebConsole/gestores/relaciones/perfilessoft_eliminacion.php +++ b/admin/WebConsole/gestores/relaciones/perfilessoft_eliminacion.php @@ -43,4 +43,4 @@ function EliminaPerfilessoft($cmd,$identificador,$nombreid,$swid=1){ $resul=$cmd->Ejecutar(); return($resul); } -?> + diff --git a/admin/WebConsole/gestores/relaciones/procedimientos_eliminacion.php b/admin/WebConsole/gestores/relaciones/procedimientos_eliminacion.php index 8351ade0..292f397d 100644 --- a/admin/WebConsole/gestores/relaciones/procedimientos_eliminacion.php +++ b/admin/WebConsole/gestores/relaciones/procedimientos_eliminacion.php @@ -48,4 +48,4 @@ function EliminaProcedimientos($cmd,$identificador,$nombreid,$swid=1){ $resul=$cmd->Ejecutar(); return($resul); } -?> + diff --git a/admin/WebConsole/gestores/relaciones/repositorios_eliminacion.php b/admin/WebConsole/gestores/relaciones/repositorios_eliminacion.php index 005f8a96..539b2776 100644 --- a/admin/WebConsole/gestores/relaciones/repositorios_eliminacion.php +++ b/admin/WebConsole/gestores/relaciones/repositorios_eliminacion.php @@ -40,4 +40,4 @@ function Eliminarepositorios($cmd,$identificador,$nombreid,$swid=1){ $resul=$cmd->Ejecutar(); return($resul); } -?> + diff --git a/admin/WebConsole/gestores/relaciones/reservas_eliminacion.php b/admin/WebConsole/gestores/relaciones/reservas_eliminacion.php index 48ff5a76..3a33701a 100644 --- a/admin/WebConsole/gestores/relaciones/reservas_eliminacion.php +++ b/admin/WebConsole/gestores/relaciones/reservas_eliminacion.php @@ -40,4 +40,4 @@ function EliminaReservas($cmd,$identificador,$nombreid,$swid=1){ $resul=$cmd->Ejecutar(); return($resul); } -?> + diff --git a/admin/WebConsole/gestores/relaciones/softwares_eliminacion.php b/admin/WebConsole/gestores/relaciones/softwares_eliminacion.php index cb20db38..883403f1 100644 --- a/admin/WebConsole/gestores/relaciones/softwares_eliminacion.php +++ b/admin/WebConsole/gestores/relaciones/softwares_eliminacion.php @@ -39,4 +39,4 @@ function EliminaSoftwares($cmd,$identificador,$nombreid,$swid=1){ $resul=$cmd->Ejecutar(); return($resul); } -?> + diff --git a/admin/WebConsole/gestores/relaciones/tareas_eliminacion.php b/admin/WebConsole/gestores/relaciones/tareas_eliminacion.php index a0401116..06564e63 100644 --- a/admin/WebConsole/gestores/relaciones/tareas_eliminacion.php +++ b/admin/WebConsole/gestores/relaciones/tareas_eliminacion.php @@ -49,4 +49,4 @@ function EliminaTareas($cmd,$identificador,$nombreid,$swid=1){ $resul=$cmd->Ejecutar(); return($resul); } -?> + diff --git a/admin/WebConsole/gestores/relaciones/trabajos_eliminacion.php b/admin/WebConsole/gestores/relaciones/trabajos_eliminacion.php index d88452c7..5a5da48b 100644 --- a/admin/WebConsole/gestores/relaciones/trabajos_eliminacion.php +++ b/admin/WebConsole/gestores/relaciones/trabajos_eliminacion.php @@ -48,4 +48,4 @@ function EliminaTrabajos($cmd,$identificador,$nombreid,$swid=1){ $resul=$cmd->Ejecutar(); return($resul); } -?> + diff --git a/admin/WebConsole/gestores/relaciones/usuarios_eliminacion.php b/admin/WebConsole/gestores/relaciones/usuarios_eliminacion.php index 39160026..d3f1ea2b 100644 --- a/admin/WebConsole/gestores/relaciones/usuarios_eliminacion.php +++ b/admin/WebConsole/gestores/relaciones/usuarios_eliminacion.php @@ -41,4 +41,4 @@ function EliminaUsuarios($cmd,$identificador,$nombreid,$swid=1){ $resul=$cmd->Ejecutar(); return($resul); } -?> + diff --git a/admin/WebConsole/idiomas/javascripts/cat/asistentes_cat.js b/admin/WebConsole/idiomas/javascripts/cat/asistentes_cat.js index 06ab60db..44d3b073 100644 --- a/admin/WebConsole/idiomas/javascripts/cat/asistentes_cat.js +++ b/admin/WebConsole/idiomas/javascripts/cat/asistentes_cat.js @@ -8,3 +8,5 @@ TbMsg=new Array; TbMsg["NOCACHESIZE"] = "¡El espacio libre en disco es menor que la cache!"; TbMsg["NODISKSIZE"] = "¡El espacio libre en disco no puede ser menor que 0!"; TbMsg["NOSUPPORT"] = "Este navegador no soporta la operación."; +// Asistente DeployImage +TbMsg["EFIPART"] = "No es conveniente restaurar particiones EFI. \nEn la postconfiguración de la partición de sistema OpenGnsys copia los cargadores de arranque a esta partición. Si existen otros sistemas restaurados dejarán de funcionar."; diff --git a/admin/WebConsole/idiomas/javascripts/cat/comandos/configurar_cat.js b/admin/WebConsole/idiomas/javascripts/cat/comandos/configurar_cat.js index 0a049236..8e97dcef 100644 --- a/admin/WebConsole/idiomas/javascripts/cat/comandos/configurar_cat.js +++ b/admin/WebConsole/idiomas/javascripts/cat/comandos/configurar_cat.js @@ -1,7 +1,7 @@ //________________________________________________________________________________________________________ // -// Fichero de idiomas javascripts: configurar_esp.js -// Idioma: Español +// Fichero de idiomas javascripts: configurar_cat.js +// Idioma: Catalán //________________________________________________________________________________________________________ TbMsg=new Array; TbMsg[0]="ATENCIÓN: Partición duplicada, ya existe una partición con ese número"; @@ -12,5 +12,6 @@ TbMsg[4]="ATENCIÓN: Se va a eliminar esta partición ¿ Está seguro ?"; TbMsg[5]="Debe especificar el tipo de sistema de fichero si desea formatear la partición"; TbMsg[6]="La CACHE sólo puede definirse en la partición 4"; TbMsg[7]="El número máximo de particiones es 4"; +TbMsg[8]="El tamaño de la partición no puede ser negativo"; TbMsg["EXTSIZE"]="El tamaño de las particiones lógicas es mayor que el de la partición extendida"; TbMsg["HDSIZE"]="El tamaño de las particiones es mayor el tamaño del disco"; diff --git a/admin/WebConsole/idiomas/javascripts/eng/asistentes_eng.js b/admin/WebConsole/idiomas/javascripts/eng/asistentes_eng.js index 01753ce3..39070e88 100644 --- a/admin/WebConsole/idiomas/javascripts/eng/asistentes_eng.js +++ b/admin/WebConsole/idiomas/javascripts/eng/asistentes_eng.js @@ -8,3 +8,5 @@ TbMsg=new Array; TbMsg["NOCACHESIZE"] = "Free disk space is smaller than cache!"; TbMsg["NODISKSIZE"] = "Free disk space cannot be lower than zero!"; TbMsg["NOSUPPORT"] = "This browser does not support this operation."; +// Asistente DeployImage +TbMsg["EFIPART"] = "Restore EFI partitions is not convenient. In postconfiguration of the system partition OpenGnsys copy bootloader in this partition. If there are other restored systems will not work."; diff --git a/admin/WebConsole/idiomas/javascripts/eng/comandos/configurar_eng.js b/admin/WebConsole/idiomas/javascripts/eng/comandos/configurar_eng.js index 38eef74f..eeaea040 100644 --- a/admin/WebConsole/idiomas/javascripts/eng/comandos/configurar_eng.js +++ b/admin/WebConsole/idiomas/javascripts/eng/comandos/configurar_eng.js @@ -12,5 +12,6 @@ TbMsg[4]="WARNING: This partition will be deleted. Are you sure?"; TbMsg[5]="If you want to format this partition, you must specify file-system type"; TbMsg[6]="CACHE can only be at partition 4"; TbMsg[7]="Maximum number of partitions is 4"; +TbMsg[8]="Partition size cannot be negative"; TbMsg["EXTSIZE"]="Logic partitions size is greater than extended partition size"; TbMsg["HDSIZE"]="Partitions size is greater than disk size"; diff --git a/admin/WebConsole/idiomas/javascripts/eng/tareascomandos_eng.js b/admin/WebConsole/idiomas/javascripts/eng/tareascomandos_eng.js index 7b9c146a..5e075b18 100644 --- a/admin/WebConsole/idiomas/javascripts/eng/tareascomandos_eng.js +++ b/admin/WebConsole/idiomas/javascripts/eng/tareascomandos_eng.js @@ -1,9 +1,9 @@ //____________________________________________________________________________ // // Fichero de idiomas javascript: tareascomandos_eng.js -// Idioma: Inglés +// Idioma: Inglés //____________________________________________________________________________ -TbMsg=new Array; +TbMsg=[]; TbMsg[0]="WARNING: This command will be excluded from this task. Are you sure?"; TbMsg[1]="WARNING: You must enter a sequence number"; TbMsg[2]="This command has been excluded successfully from this task"; diff --git a/admin/WebConsole/idiomas/javascripts/esp/asistentes_esp.js b/admin/WebConsole/idiomas/javascripts/esp/asistentes_esp.js index 5e8948ac..981c3246 100644 --- a/admin/WebConsole/idiomas/javascripts/esp/asistentes_esp.js +++ b/admin/WebConsole/idiomas/javascripts/esp/asistentes_esp.js @@ -8,3 +8,5 @@ TbMsg=new Array; TbMsg["NOCACHESIZE"] = "¡El espacio libre en disco es menor que la cache!"; TbMsg["NODISKSIZE"] = "¡El espacio libre en disco no puede ser menor que 0!"; TbMsg["NOSUPPORT"] = "Este navegador no soporta la operación."; +// Asistente DeployImage +TbMsg["EFIPART"] = "No es conveniente restaurar particiones EFI. \nEn la postconfiguración de la partición de sistema OpenGnsys copia los cargadores de arranque a esta partición. Si existen otros sistemas restaurados dejarán de funcionar."; diff --git a/admin/WebConsole/idiomas/javascripts/esp/comandos/configurar_esp.js b/admin/WebConsole/idiomas/javascripts/esp/comandos/configurar_esp.js index df708800..8019e20b 100644 --- a/admin/WebConsole/idiomas/javascripts/esp/comandos/configurar_esp.js +++ b/admin/WebConsole/idiomas/javascripts/esp/comandos/configurar_esp.js @@ -12,5 +12,6 @@ TbMsg[4]="ATENCIÓN: Se va a eliminar esta partición ¿ Está seguro ?"; TbMsg[5]="Debe especificar el tipo de sistema de ficheros si desea formatear la partición"; TbMsg[6]="La CACHE sólo puede definirse en la partición 4"; TbMsg[7]="El número máximo de particiones es 4"; +TbMsg[8]="El tamaño de la partición no puede ser negativo"; TbMsg["EXTSIZE"]="El tamaño de las particiones lógicas es mayor que el de la partición extendida"; TbMsg["HDSIZE"]="El tamaño de las particiones es mayor el tamaño del disco"; diff --git a/admin/WebConsole/idiomas/php/cat/acciones_cat.php b/admin/WebConsole/idiomas/php/cat/acciones_cat.php index 07ce21dc..2c28449c 100644 --- a/admin/WebConsole/idiomas/php/cat/acciones_cat.php +++ b/admin/WebConsole/idiomas/php/cat/acciones_cat.php @@ -2,7 +2,7 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: accions_cat.php -// Idioma: Català +// Idioma: Català //________________________________________________________________________________________________________ $TbMsg=array(); $TbMsg[0]='"Nou grup de procediments"'; @@ -10,19 +10,19 @@ $TbMsg[2]='"Col.locar procediment"'; $TbMsg[3]='"Renombrar"'; $TbMsg[4]='"Eliminar grup de procediments"'; - $TbMsg[5]='"Gestió d\'ordres"'; - $TbMsg[6]='"Informació Procediment"'; + $TbMsg[5]='"Gestió d\'ordres"'; + $TbMsg[6]='"Informació Procediment"'; $TbMsg[7]='"Moure procediment"'; $TbMsg[8]='"Propietats"'; $TbMsg[9]='"Eliminar procediment"'; - $TbMsg[10]='"Gestió de Menús"'; + $TbMsg[10]='"Gestió de Menús"'; $TbMsg[11]='"Nou grup de tasques"'; $TbMsg[12]='"Definir nova tasca"'; $TbMsg[13]='"Col.locar tasca"'; $TbMsg[14]='"Eliminar grup de tasca"'; $TbMsg[15]='"Executar tasca"'; $TbMsg[16]='"Programacions"'; - $TbMsg[17]='"Informació Tasca"'; + $TbMsg[17]='"Informació Tasca"'; $TbMsg[18]='"Moure tasca"'; $TbMsg[19]='"Eliminar tasca"'; $TbMsg[20]='"Nou grup de treballs"'; @@ -30,12 +30,11 @@ $TbMsg[22]='"Col.locar treball"'; $TbMsg[23]='"Eliminar grup de treballs"'; $TbMsg[24]='"Executar treball"'; - $TbMsg[25]='"Gestió de tasques"'; - $TbMsg[26]='"Informació Treball"'; + $TbMsg[25]='"Gestió de tasques"'; + $TbMsg[26]='"Informació Treball"'; $TbMsg[27]='"Moure treball"'; $TbMsg[28]='"Eliminar treball"'; $TbMsg[29]='Procediments'; $TbMsg[30]='Ordres'; $TbMsg[31]='Tasques'; $TbMsg[32]='Treballs'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/cat/accionmenu_cat.php b/admin/WebConsole/idiomas/php/cat/accionmenu_cat.php index b5123a0c..9fe1c2b9 100644 --- a/admin/WebConsole/idiomas/php/cat/accionmenu_cat.php +++ b/admin/WebConsole/idiomas/php/cat/accionmenu_cat.php @@ -2,22 +2,21 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: accionmenu_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); $TbMsg[0]='Items'; - $TbMsg[1]='Gestió Items Menú'; + $TbMsg[1]='Gesti� Items Men�'; $TbMsg[2]='Procediment'; $TbMsg[3]='Tasca'; $TbMsg[4]='Treballs'; - $TbMsg[5]='Públic'; + $TbMsg[5]='P�blic'; $TbMsg[6]='Privat'; - $TbMsg[7]='Items públics '; + $TbMsg[7]='Items p�blics '; $TbMsg[8]='Items privats '; - $TbMsg[9]='Nom del Menú'; + $TbMsg[9]='Nom del Men�'; $TbMsg[10]='Tipus item'; $TbMsg[11]='Imatge del item'; $TbMsg[12]='Literal item'; $TbMsg[13]='Ord'; - $TbMsg[14]='(*)Per a incloure alguna acció en aquest menú ha de fer click sobre la casella de verificació corresponent. Per a actualitzar faci click sobre la imatge.'; -?>
\ No newline at end of file + $TbMsg[14]='(*)Per a incloure alguna acci� en aquest men� ha de fer click sobre la casella de verificaci� corresponent. Per a actualitzar faci click sobre la imatge.'; diff --git a/admin/WebConsole/idiomas/php/cat/acercade_cat.php b/admin/WebConsole/idiomas/php/cat/acercade_cat.php index 7c731a31..50ffe6b0 100644 --- a/admin/WebConsole/idiomas/php/cat/acercade_cat.php +++ b/admin/WebConsole/idiomas/php/cat/acercade_cat.php @@ -17,5 +17,5 @@ $TbMsg["CHANGE"]='Canvis en: '; $TbMsg["MANUAL"]='Manual OpenGnsys '; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/actualizar_cat.php b/admin/WebConsole/idiomas/php/cat/actualizar_cat.php index 40365eb0..941840c7 100644 --- a/admin/WebConsole/idiomas/php/cat/actualizar_cat.php +++ b/admin/WebConsole/idiomas/php/cat/actualizar_cat.php @@ -2,9 +2,8 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: actualitzar_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); - $TbMsg[0]='Aquest àmbit s\'ha actualitzat correctament'; - $TbMsg[1]='ATENCIÓ: Hi ha hagut un problema al actualitzar l\'àmbit'; -?>
\ No newline at end of file + $TbMsg[0]='Aquest �mbit s\'ha actualitzat correctament'; + $TbMsg[1]='ATENCI�: Hi ha hagut un problema al actualitzar l\'�mbit'; diff --git a/admin/WebConsole/idiomas/php/cat/administracion_cat.php b/admin/WebConsole/idiomas/php/cat/administracion_cat.php index 4889107d..9717510c 100644 --- a/admin/WebConsole/idiomas/php/cat/administracion_cat.php +++ b/admin/WebConsole/idiomas/php/cat/administracion_cat.php @@ -1,11 +1,11 @@ <?php //________________________________________________________________________________________________________ // -// Fitxer d'idiomes php: administració_cat.php -// Idioma: Català +// Fitxer d'idiomes php: administraci�_cat.php +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); - $TbMsg[0]='"Administració"'; + $TbMsg[0]='"Administraci�"'; $TbMsg[1]='"Nou grup d\'Entitats"'; $TbMsg[2]='"Nova Entitat"'; $TbMsg[3]='"Nou Superadministrador"'; @@ -16,4 +16,3 @@ $TbMsg[8]='"Nova unitat organitzativa"'; $TbMsg[9]='"Nou Administrador"'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/cat/administradores_centros_cat.php b/admin/WebConsole/idiomas/php/cat/administradores_centros_cat.php index 40ff7341..910a51e4 100644 --- a/admin/WebConsole/idiomas/php/cat/administradores_centros_cat.php +++ b/admin/WebConsole/idiomas/php/cat/administradores_centros_cat.php @@ -11,4 +11,4 @@ $TbMsg[3]='Nom de l\'administrador'; $TbMsg[4]='(*)Per incluir algun administrador en aquesta Unitat Organitzativa ha de fer click sobre la casella de verificació corresponent.'; $TbMsg[5]='Administradors disponibles'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/administradores_usuarios_cat.php b/admin/WebConsole/idiomas/php/cat/administradores_usuarios_cat.php index 5ce0a954..f210b76b 100644 --- a/admin/WebConsole/idiomas/php/cat/administradores_usuarios_cat.php +++ b/admin/WebConsole/idiomas/php/cat/administradores_usuarios_cat.php @@ -11,4 +11,4 @@ $TbMsg[3]='Nom del centre'; $TbMsg[4]='(*)Per assignar algun centre a un administrador ha de fer click sobre la casella de verificació corresponent.'; $TbMsg[5]='Centres disponibles'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/aulas_cat.php b/admin/WebConsole/idiomas/php/cat/aulas_cat.php index 75d55af7..8e5b9dae 100644 --- a/admin/WebConsole/idiomas/php/cat/aulas_cat.php +++ b/admin/WebConsole/idiomas/php/cat/aulas_cat.php @@ -56,5 +56,5 @@ $TbMsg[48]='"Log en temps real"'; $TbMsg[49]='"Sincronización"'; $TbMsg[50]='"Sincronización 2"'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/avisos_cat.php b/admin/WebConsole/idiomas/php/cat/avisos_cat.php index 97eb5f15..65522458 100644 --- a/admin/WebConsole/idiomas/php/cat/avisos_cat.php +++ b/admin/WebConsole/idiomas/php/cat/avisos_cat.php @@ -14,5 +14,5 @@ $TbMsg["WARN_NOTESOFMENU"]='NOTAS: Los menús personalizados tienen mayor $TbMsg["WARN_GPT"]='AVISO: Para tabla de particiones GPT es necesario que la primera partición sea tipo EFI <br>y se recomienda un tamaño en torno a 512Mb.'; $TbMsg["WARN_SCHEDULER"]='AVISO: activar calendario de eventos de la BD para habilitar esta propiedad.'; $TbMsg["WARN_SOURCE_PATH"]='AVISO: La ruta de origen sólo se utiliza en las sincronizadas tipo directorio.'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/ayuda_cat.php b/admin/WebConsole/idiomas/php/cat/ayuda_cat.php index 40607de3..ee47be1d 100644 --- a/admin/WebConsole/idiomas/php/cat/ayuda_cat.php +++ b/admin/WebConsole/idiomas/php/cat/ayuda_cat.php @@ -5,11 +5,12 @@ // Idioma: Catalán // __________________________________________________ // Mensajes. -$TbMsg=array(); +if (empty ($TbMsg)) $TbMsg=array(); $TbMsg["HELP_TITLE"]='Ayuda'; $TbMsg["MANUAL"]='Manual de usuario'; -$TbMsg["API"]='Documentación de la API'; +$TbMsg["API"]='Documentación de la API del Motor de Clonación'; $TbMsg["CFG"]='Configuración de los clientes'; +$TbMsg["REST"]='Documentación de la API REST'; $TbMsg["CHANGELOG"]='Cambios en la versión:'; $TbMsg["USERMAIL"]='Lista de correos de usuarios'; $TbMsg["WEB"]='Web del proyecto: opengnsys.es'; diff --git a/admin/WebConsole/idiomas/php/cat/boot_grub4dos_cat.php b/admin/WebConsole/idiomas/php/cat/boot_grub4dos_cat.php index 674bd3b5..7d36a212 100644 --- a/admin/WebConsole/idiomas/php/cat/boot_grub4dos_cat.php +++ b/admin/WebConsole/idiomas/php/cat/boot_grub4dos_cat.php @@ -1,53 +1,55 @@ -<?php
-//____________________________________________________________
-//
-// Fichero de idiomas php: aulas_cat.php
-// Idioma: Català
-//_____________________________________________________________
- $TbMsg=array();
- $TbMsg[0]='Nou';
- $TbMsg[1]='Modificar';
- $TbMsg[2]='Eliminar';
- $TbMsg[3]='Nova Columna d\'Arrancada';
- $TbMsg[4]='Modificar Columna d\'Arrancada';
- $TbMsg[5]='Eliminar Columna d\'Arrancada';
- $TbMsg[6]='Arrancada Creada Correctament';
- $TbMsg[7]='Arrancada Modificada Correctament';
- $TbMsg[8]='Arrancada Eliminada Correctament';
- $TbMsg[9]='Selecciona Columna Arrancada';
- $TbMsg[10]='"Mode Usuari"';
- $TbMsg[11]='"Mode Administració"';
- $TbMsg[12]='Nom';
- $TbMsg[13]='Acceptar';
- $TbMsg[14]='Introdueixi un Nom de Columna';
- $TbMsg[15]='"Renombrar"';
- $TbMsg[16]='Cancel·lar';
- $TbMsg[17]='Plantilla';
- $TbMsg[18]='Sense Plantilla';
- $TbMsg[19]='Comandes';
- $TbMsg[20]='Descripció';
- $TbMsg[21]='Fitxer';
- $TbMsg[22]='##NO-TOCAR-ESTA-LINEA ';
- $TbMsg[23]='NO HI HA COLUMNA NOVA';
- $TbMsg[24]='Àmbit: Centros';
- $TbMsg[25]='Àmbit: Grup d\'aulas';
- $TbMsg[26]='Àmbit: Grup d\'ordinadors';
- $TbMsg[27]='"Incorporar ordinadors"';
- $TbMsg[28]='"Procediments"';
- $TbMsg[29]='"Reserves d\'aulas"';
- $TbMsg[30]='"Confirmades"';
- $TbMsg[31]='"Pendents"';
- $TbMsg[32]='"Denegades"';
- $TbMsg[33]='"Consola remota"';
- $TbMsg[34]='"Programació reserves"';
- $TbMsg[35]='"Operadors"';
- $TbMsg[36]='"Eliminar Operador"';
- $TbMsg[37]='"Afegir nou Operador"';
- $TbMsg[38]='"Assistents"';
- $TbMsg[39]='"Eco de Consola"';
- $TbMsg[40]='"NetBoot avançat"';
- $TbMsg[41]='"Reubicar ordinadors"';
- $TbMsg[42]='Gestió Arrancada Avançada';
- $TbMsg[43]='"Guardar"';
- $TbMsg[44]='Ubicador Ordinadors';
- $TbMsg[45]='Nom àmbit';
+<?php +//____________________________________________________________ +// +// Fichero de idiomas php: aulas_cat.php +// Idioma: Català +//_____________________________________________________________ + $TbMsg=array(); + $TbMsg[0]='Nou'; + $TbMsg[1]='Modificar'; + $TbMsg[2]='Eliminar'; + $TbMsg[3]='Nova Columna d\'Arrancada'; + $TbMsg[4]='Modificar Columna d\'Arrancada'; + $TbMsg[5]='Eliminar Columna d\'Arrancada'; + $TbMsg[6]='Arrancada Creada Correctament'; + $TbMsg[7]='Arrancada Modificada Correctament'; + $TbMsg[8]='Arrancada Eliminada Correctament'; + $TbMsg[9]='Selecciona Columna Arrancada'; + $TbMsg[10]='"Mode Usuari"'; + $TbMsg[11]='"Mode Administració"'; + $TbMsg[12]='Nom'; + $TbMsg[13]='Acceptar'; + $TbMsg[14]='Introdueixi un Nom de Columna'; + $TbMsg[15]='"Renombrar"'; + $TbMsg[16]='Cancel·lar'; + $TbMsg[17]='Plantilla'; + $TbMsg[18]='Sense Plantilla'; + $TbMsg[19]='Comandes'; + $TbMsg[20]='Descripció'; + $TbMsg[21]='Fitxer'; + $TbMsg[22]='##NO-TOCAR-ESTA-LINEA '; + $TbMsg[23]='NO HI HA COLUMNA NOVA'; + $TbMsg[24]='Àmbit: Centros'; + $TbMsg[25]='Àmbit: Grup d\'aulas'; + $TbMsg[26]='Àmbit: Grup d\'ordinadors'; + $TbMsg[27]='"Incorporar ordinadors"'; + $TbMsg[28]='"Procediments"'; + $TbMsg[29]='"Reserves d\'aulas"'; + $TbMsg[30]='"Confirmades"'; + $TbMsg[31]='"Pendents"'; + $TbMsg[32]='"Denegades"'; + $TbMsg[33]='"Consola remota"'; + $TbMsg[34]='"Programació reserves"'; + $TbMsg[35]='"Operadors"'; + $TbMsg[36]='"Eliminar Operador"'; + $TbMsg[37]='"Afegir nou Operador"'; + $TbMsg[38]='"Assistents"'; + $TbMsg[39]='"Eco de Consola"'; + $TbMsg[40]='"NetBoot avançat"'; + $TbMsg[41]='"Reubicar ordinadors"'; + $TbMsg[42]='Gestió Arrancada Avançada'; + $TbMsg[43]='"Guardar"'; + $TbMsg[44]='Ubicador Ordinadors'; + $TbMsg[45]='Nom à mbit'; + $TbMsg["UEFI"]='AVISO: Hay plantillas PXE que sólo son compatibles con un tipo de firmware, uefi o bios.<br>Al elegir estas plantillas la otra opción quedará configurada por defecto'; + $TbMsg["ERR_DUPLICADO"]='ERROR: El nombre o la descripción de la plantilla están duplicados'; diff --git a/admin/WebConsole/idiomas/php/cat/buscar_cat.php b/admin/WebConsole/idiomas/php/cat/buscar_cat.php index 5c7ff062..494cd99a 100644 --- a/admin/WebConsole/idiomas/php/cat/buscar_cat.php +++ b/admin/WebConsole/idiomas/php/cat/buscar_cat.php @@ -17,5 +17,5 @@ $TbMsg["SEARCH_NOMATCHES"]="No es troben resultats"; $TbMsg["SEARCH_NOVALUE"]="Ha d\'introduir un valor pel criteri de cerca"; $TbMsg["SEARCH_PROFESSOR"]="Ordenadores de profesor"; $TbMsg["SEARCH_NOREPO"]="Ordenadores sin repositorio"; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/colasacciones_cat.php b/admin/WebConsole/idiomas/php/cat/colasacciones_cat.php index 1af27c3c..a130cc69 100644 --- a/admin/WebConsole/idiomas/php/cat/colasacciones_cat.php +++ b/admin/WebConsole/idiomas/php/cat/colasacciones_cat.php @@ -2,7 +2,7 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: colasacciones_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ // Literals dels tipus d'accions @@ -13,14 +13,14 @@ $LITEJECUCION_TRABAJO="Treballs"; $LITACCION_EXITOSA='Finalitzada correctament'; // Literal Finalitzada exitosament $LITACCION_FALLIDA='Finalitzada amb errors'; // Literal Finalitzada amb errors -$LITACCION_TERMINADA='Finalitzada manualment'; //Literal Finalitzada manualment amb indicació d'exit -$LITACCION_ABORTADA='Cancel·lada manualment'; // Literal Finalitzada manualment amb indicació d'errors +$LITACCION_TERMINADA='Finalitzada manualment'; //Literal Finalitzada manualment amb indicaci� d'exit +$LITACCION_ABORTADA='Cancel�lada manualment'; // Literal Finalitzada manualment amb indicaci� d'errors $LITACCION_SINERRORES='Activa sense errors'; // Literal Activa i sense cap error -$LITACCION_CONERRORES='Activa amb errors'; // Literal Activa i amb algún error +$LITACCION_CONERRORES='Activa amb errors'; // Literal Activa i amb alg�n error -$LITACCION_DETENIDA='Parada'; // Literal acció momentàniament parada -$LITACCION_INICIADA='Activa'; // Literal acció activa -$LITACCION_FINALIZADA='Finalitzada'; // Literal acció finalitzada +$LITACCION_DETENIDA='Parada'; // Literal acci� moment�niament parada +$LITACCION_INICIADA='Activa'; // Literal acci� activa +$LITACCION_FINALIZADA='Finalitzada'; // Literal acci� finalitzada $TbMsg=array(); $TbMsg[0]='Cua d\'accions'; @@ -34,15 +34,15 @@ $TbMsg=array(); $TbMsg[8]='Data final'; $TbMsg[9]='Hora inici'; $TbMsg[10]='Hora final'; - $TbMsg[11]='Àmbit'; + $TbMsg[11]='�mbit'; $TbMsg[12]='Eliminar'; $TbMsg[13]='Reiniciar'; $TbMsg[14]='Parar'; $TbMsg[15]='Continuar'; - $TbMsg[16]='Cancel·lar'; + $TbMsg[16]='Cancel�lar'; $TbMsg[17]='Finalitzar'; - $TbMsg[18]='Acció'; + $TbMsg[18]='Acci�'; $TbMsg[19]='Data final'; $TbMsg[20]='Hora final'; $TbMsg[21]='Data inici'; @@ -59,10 +59,10 @@ $TbMsg=array(); $TbMsg[31]='Tasques'; $TbMsg[32]='Treballs'; - $TbMsg[41]='"Filtre Acció"'; - $TbMsg[42]='"Filtre àmbit"'; + $TbMsg[41]='"Filtre Acci�"'; + $TbMsg[42]='"Filtre �mbit"'; $TbMsg[43]='"Eliminar filtre"'; - $TbMsg[44]='"Modificar Acció"'; + $TbMsg[44]='"Modificar Acci�"'; $TbMsg[45]='"Reiniciar"'; $TbMsg[46]='"Eliminar"'; $TbMsg[47]='"Tasca pare"'; @@ -71,9 +71,8 @@ $TbMsg=array(); $TbMsg[50]='"Veure tasques"'; $TbMsg[51]='"Parar"'; $TbMsg[52]='"Continuar"'; - $TbMsg[53]='"Cancel·lar"'; + $TbMsg[53]='"Cancel�lar"'; $TbMsg[54]='"Finalitzar"'; $TbMsg[55]='"Finalitzar sense errors"'; $TbMsg[56]='"Finalitzar amb errors"'; - $TbMsg[57]='Informació'; -?>
\ No newline at end of file + $TbMsg[57]='Informaci�'; diff --git a/admin/WebConsole/idiomas/php/cat/colasreservas_cat.php b/admin/WebConsole/idiomas/php/cat/colasreservas_cat.php index 834b6ce1..7575f0ac 100644 --- a/admin/WebConsole/idiomas/php/cat/colasreservas_cat.php +++ b/admin/WebConsole/idiomas/php/cat/colasreservas_cat.php @@ -2,7 +2,7 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: colasreservas_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ // Literals dels tipus de reserves @@ -10,14 +10,14 @@ $LITRESERVA_PENDENT="Pendents"; $LITRESERVA_CONFIRMADA="Confirmades"; $LITRESERVA_DENEGADA="Denegades"; -$RESERVA_PARADA=1; // reserva momentàniament aturada +$RESERVA_PARADA=1; // reserva moment�niament aturada $RESERVA_ACTIVA=0; // Reserva activa -$LITRESERVA_PARADA='Suspesa'; // Literal reserva momentàniament aturada +$LITRESERVA_PARADA='Suspesa'; // Literal reserva moment�niament aturada $LITRESERVA_ACTIVA='Activa'; // Literal reserva activa $TbMsg=array(); $TbMsg[0]='Reserves d\'aules'; - $TbMsg[1]='Opcions de búsqueda'; + $TbMsg[1]='Opcions de b�squeda'; $TbMsg[2]='Tipus'; $TbMsg[3]=''; $TbMsg[4]='Estats'; @@ -27,7 +27,7 @@ $TbMsg=array(); $TbMsg[8]='Data final'; $TbMsg[9]='Hora inici'; $TbMsg[10]='Hora final'; - $TbMsg[11]='Àmbit'; + $TbMsg[11]='�mbit'; $TbMsg[12]='Centres'; $TbMsg[13]='Grup d\'aules'; @@ -35,19 +35,18 @@ $TbMsg=array(); $TbMsg[15]='Any'; $TbMsg[16]='Mes'; - $TbMsg[17]='Día'; + $TbMsg[17]='D�a'; $TbMsg[18]='Aula'; - $TbMsg[19]='Ocupació'; + $TbMsg[19]='Ocupaci�'; $TbMsg[20]='Imatge associada'; - $TbMsg[21]='Descripció'; + $TbMsg[21]='Descripci�'; - $TbMsg[22]='Programació reserves'; + $TbMsg[22]='Programaci� reserves'; $TbMsg[23]='(Sense especificar)'; $TbMsg[24]='Aula'; - $TbMsg[25]='Sol·licitant'; - $TbMsg[26]="Anticipació previa"; - $TbMsg[27]="(Sense acció previa)"; + $TbMsg[25]='Sol�licitant'; + $TbMsg[26]="Anticipaci� previa"; + $TbMsg[27]="(Sense acci� previa)"; $TbMsg[28]="Tasca previa"; $TbMsg[29]="Treball previ"; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/cat/comandos/apagar_cat.php b/admin/WebConsole/idiomas/php/cat/comandos/apagar_cat.php index b47ebe1f..30e73236 100644 --- a/admin/WebConsole/idiomas/php/cat/comandos/apagar_cat.php +++ b/admin/WebConsole/idiomas/php/cat/comandos/apagar_cat.php @@ -13,4 +13,3 @@ $TbMsg[5]='Apagar ordinadors'; $TbMsg[6]='Àmbit'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/cat/comandos/arrancar_cat.php b/admin/WebConsole/idiomas/php/cat/comandos/arrancar_cat.php index 7423433d..547f21aa 100644 --- a/admin/WebConsole/idiomas/php/cat/comandos/arrancar_cat.php +++ b/admin/WebConsole/idiomas/php/cat/comandos/arrancar_cat.php @@ -17,4 +17,4 @@ $TbMsg[9]='Unicast'; $TbMsg[10]='Método de arranque'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/comandos/comando_cat.php b/admin/WebConsole/idiomas/php/cat/comandos/comando_cat.php index 3f9f49eb..07612ae8 100644 --- a/admin/WebConsole/idiomas/php/cat/comandos/comando_cat.php +++ b/admin/WebConsole/idiomas/php/cat/comandos/comando_cat.php @@ -13,4 +13,4 @@ $TbMsg[5]='Apagar ordinadors'; $TbMsg[6]='Àmbit'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/comandos/configurar_cat.php b/admin/WebConsole/idiomas/php/cat/comandos/configurar_cat.php index ee1f434d..1b6102a3 100644 --- a/admin/WebConsole/idiomas/php/cat/comandos/configurar_cat.php +++ b/admin/WebConsole/idiomas/php/cat/comandos/configurar_cat.php @@ -46,4 +46,4 @@ $TbMsg[34]='Perfil Software'; $TbMsg["HD"]='Disco'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/comandos/conmutar_cat.php b/admin/WebConsole/idiomas/php/cat/comandos/conmutar_cat.php index 9c171e04..5b0efb7d 100644 --- a/admin/WebConsole/idiomas/php/cat/comandos/conmutar_cat.php +++ b/admin/WebConsole/idiomas/php/cat/comandos/conmutar_cat.php @@ -13,4 +13,3 @@ $TbMsg[5]='Commutar ordinadors'; $TbMsg[6]='Àmbit'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/cat/comandos/crearimagenbasica_cat.php b/admin/WebConsole/idiomas/php/cat/comandos/crearimagenbasica_cat.php index 3e7cab90..819414c2 100644 --- a/admin/WebConsole/idiomas/php/cat/comandos/crearimagenbasica_cat.php +++ b/admin/WebConsole/idiomas/php/cat/comandos/crearimagenbasica_cat.php @@ -22,4 +22,4 @@ $TbMsg[14]='Copiar Imagen en cache'; $TbMsg[15]='Borrarla previamente de la cache'; $TbMsg[16]='No borrar archivos en destino'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/comandos/crearperfilsoftware_cat.php b/admin/WebConsole/idiomas/php/cat/comandos/crearperfilsoftware_cat.php index 55205ecf..965703b7 100644 --- a/admin/WebConsole/idiomas/php/cat/comandos/crearperfilsoftware_cat.php +++ b/admin/WebConsole/idiomas/php/cat/comandos/crearperfilsoftware_cat.php @@ -18,4 +18,4 @@ $TbMsg[10]='Descripció de la Imatge '; $TbMsg[11]='Repositori de destÃ'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/comandos/crearsoftincremental_cat.php b/admin/WebConsole/idiomas/php/cat/comandos/crearsoftincremental_cat.php index 5322f7a3..32d01b3c 100644 --- a/admin/WebConsole/idiomas/php/cat/comandos/crearsoftincremental_cat.php +++ b/admin/WebConsole/idiomas/php/cat/comandos/crearsoftincremental_cat.php @@ -16,4 +16,4 @@ $TbMsg[8]='Par'; $TbMsg[9]='Nom Perfil'; $TbMsg[10]='Software incremental disponible'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/comandos/ejecutarscripts_cat.php b/admin/WebConsole/idiomas/php/cat/comandos/ejecutarscripts_cat.php index d2c193ad..f0035057 100644 --- a/admin/WebConsole/idiomas/php/cat/comandos/ejecutarscripts_cat.php +++ b/admin/WebConsole/idiomas/php/cat/comandos/ejecutarscripts_cat.php @@ -58,5 +58,5 @@ $TbMsg["WCRP35"]='Escull el mètode de transferència'; $TbMsg["WCRP36"]='Escull eina de clonació:'; $TbMsg["WCRP37"]='Escull compressor per l\'eina de clonació:'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/comandos/eliminarimagencache_cat.php b/admin/WebConsole/idiomas/php/cat/comandos/eliminarimagencache_cat.php index 68e70272..603f8b40 100644 --- a/admin/WebConsole/idiomas/php/cat/comandos/eliminarimagencache_cat.php +++ b/admin/WebConsole/idiomas/php/cat/comandos/eliminarimagencache_cat.php @@ -26,4 +26,4 @@ $TbMsg[18]='Grand�ria de la imatge disponible si Repositori i Servidor Web allotjats al mateix Servidor'; $TbMsg[19]='Tipus'; $TbMsg["CONFIG_NOCONFIG"]='Sense configuraci�: client no connectat al servidor.'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/comandos/eliminarimagenrepo_cat.php b/admin/WebConsole/idiomas/php/cat/comandos/eliminarimagenrepo_cat.php index a46d95cc..d1ca169f 100644 --- a/admin/WebConsole/idiomas/php/cat/comandos/eliminarimagenrepo_cat.php +++ b/admin/WebConsole/idiomas/php/cat/comandos/eliminarimagenrepo_cat.php @@ -39,4 +39,4 @@ $TbMsg[31]='Arxiu'; $TbMsg[32]='Directori'; $TbMsg[33]='AVISO: La imagen está situada en un directorio que no corresponde a la unidad organizativa.'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/comandos/enviarmensaje_cat.php b/admin/WebConsole/idiomas/php/cat/comandos/enviarmensaje_cat.php index b6f3d68d..09cbd259 100644 --- a/admin/WebConsole/idiomas/php/cat/comandos/enviarmensaje_cat.php +++ b/admin/WebConsole/idiomas/php/cat/comandos/enviarmensaje_cat.php @@ -19,5 +19,5 @@ $TbMsg["OGAGENT"]="AVISO: Sólo se puede utilizar en los equipos que se haya iniciado la sesión <br>y tengan instalado en nuevo agente de OpenGnsys."; $TbMsg["OPTION"]="AVISO: El nuevo agente, en esta versión, no permite utilizar la cola de acciones."; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/comandos/gestor_ejecutarscripts_cat.php b/admin/WebConsole/idiomas/php/cat/comandos/gestor_ejecutarscripts_cat.php index 372a2d47..959c322a 100644 --- a/admin/WebConsole/idiomas/php/cat/comandos/gestor_ejecutarscripts_cat.php +++ b/admin/WebConsole/idiomas/php/cat/comandos/gestor_ejecutarscripts_cat.php @@ -10,4 +10,3 @@ $TbMsg[3]='"ATENCIÓ: El fitxer no te la extensió .rbc"'; $TbMsg[4]='"ATENCIÓ: El fitxer no conté codi Rembo-C per executar"'; $TbMsg[5]='"ATENCIÓ: Hi ha algun problema per salvar el fitxer de script"'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/cat/comandos/iniciarsesion_cat.php b/admin/WebConsole/idiomas/php/cat/comandos/iniciarsesion_cat.php index 827108af..28533d42 100644 --- a/admin/WebConsole/idiomas/php/cat/comandos/iniciarsesion_cat.php +++ b/admin/WebConsole/idiomas/php/cat/comandos/iniciarsesion_cat.php @@ -18,4 +18,4 @@ $TbMsg[10]='Nom de la Imatge '; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/comandos/inventariohardware_cat.php b/admin/WebConsole/idiomas/php/cat/comandos/inventariohardware_cat.php index 80a6e8e1..28a271f3 100644 --- a/admin/WebConsole/idiomas/php/cat/comandos/inventariohardware_cat.php +++ b/admin/WebConsole/idiomas/php/cat/comandos/inventariohardware_cat.php @@ -13,4 +13,4 @@ $TbMsg[5]='Inventari Hardware'; $TbMsg[6]='Àmbit'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/comandos/inventariosoftware_cat.php b/admin/WebConsole/idiomas/php/cat/comandos/inventariosoftware_cat.php index a638c406..e1802d16 100644 --- a/admin/WebConsole/idiomas/php/cat/comandos/inventariosoftware_cat.php +++ b/admin/WebConsole/idiomas/php/cat/comandos/inventariosoftware_cat.php @@ -15,4 +15,4 @@ $TbMsg[7]='Dades a subministrar'; $TbMsg[8]='Par'; $TbMsg[9]='Nom S.O.'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/comandos/mensajes_cat.php b/admin/WebConsole/idiomas/php/cat/comandos/mensajes_cat.php index 408728dc..6cb41194 100644 --- a/admin/WebConsole/idiomas/php/cat/comandos/mensajes_cat.php +++ b/admin/WebConsole/idiomas/php/cat/comandos/mensajes_cat.php @@ -25,5 +25,5 @@ $TbMsg["COMMAND_RestaurarSoftIncremental"]="Restaurar Software Incremental"; $TbMsg["WIZARD_Asistente Particionado"]="Assistent de particionat"; $TbMsg["WIZARD_Asistente Clonacion Particiones Remotas"]="Clonar particions remotes"; $TbMsg["WIZARD_Asistente Deploy de Imagenes"]="Deploy d\'imatges"; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/comandos/opcionesacciones_cat.php b/admin/WebConsole/idiomas/php/cat/comandos/opcionesacciones_cat.php index 3a268d86..6bc85e0d 100644 --- a/admin/WebConsole/idiomas/php/cat/comandos/opcionesacciones_cat.php +++ b/admin/WebConsole/idiomas/php/cat/comandos/opcionesacciones_cat.php @@ -18,4 +18,3 @@ $TbMsgAux[10]='Guardar como a tasca nova' ; $TbMsgAux[11]='Incluir-ho en una tasca existent' ; $TbMsgAux[12]='Ordre d\'execució'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/cat/comandos/particionaryformatear_cat.php b/admin/WebConsole/idiomas/php/cat/comandos/particionaryformatear_cat.php index 10efdeb5..0ff8ded9 100644 --- a/admin/WebConsole/idiomas/php/cat/comandos/particionaryformatear_cat.php +++ b/admin/WebConsole/idiomas/php/cat/comandos/particionaryformatear_cat.php @@ -23,4 +23,3 @@ $TbMsg[15]='Ocultar'; $TbMsg[16]='Mostrar'; $TbMsg[17]='¡¡ Espai liure !!'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/cat/comandos/reiniciar_cat.php b/admin/WebConsole/idiomas/php/cat/comandos/reiniciar_cat.php index b968c455..d72b056b 100644 --- a/admin/WebConsole/idiomas/php/cat/comandos/reiniciar_cat.php +++ b/admin/WebConsole/idiomas/php/cat/comandos/reiniciar_cat.php @@ -13,4 +13,3 @@ $TbMsg[5]='Reiniciar ordinadors'; $TbMsg[6]='Àmbit'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/cat/comandos/rembooffline_cat.php b/admin/WebConsole/idiomas/php/cat/comandos/rembooffline_cat.php index 6bc79236..61bd14f4 100644 --- a/admin/WebConsole/idiomas/php/cat/comandos/rembooffline_cat.php +++ b/admin/WebConsole/idiomas/php/cat/comandos/rembooffline_cat.php @@ -13,4 +13,3 @@ $TbMsg[5]='Activar rembo Offline'; $TbMsg[6]='Àmbit'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/cat/comandos/restaurarimagen_cat.php b/admin/WebConsole/idiomas/php/cat/comandos/restaurarimagen_cat.php index 7be92108..c5d0cb5d 100644 --- a/admin/WebConsole/idiomas/php/cat/comandos/restaurarimagen_cat.php +++ b/admin/WebConsole/idiomas/php/cat/comandos/restaurarimagen_cat.php @@ -42,4 +42,4 @@ $TbMsg[32]='Grandà ria de partició'; $TbMsg[33]='Nom de la Imatge '; $TbMsg[34]='Perfil software'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/comandos/restaurarimagenbasica_cat.php b/admin/WebConsole/idiomas/php/cat/comandos/restaurarimagenbasica_cat.php index d5aa2825..5afcc534 100644 --- a/admin/WebConsole/idiomas/php/cat/comandos/restaurarimagenbasica_cat.php +++ b/admin/WebConsole/idiomas/php/cat/comandos/restaurarimagenbasica_cat.php @@ -50,4 +50,4 @@ $TbMsg[39]='Método'; $TbMsg[40]='Unicast'; $TbMsg[41]='Multicast'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/comandos/restaurarsoftincremental_cat.php b/admin/WebConsole/idiomas/php/cat/comandos/restaurarsoftincremental_cat.php index 6712c25c..93b3b652 100644 --- a/admin/WebConsole/idiomas/php/cat/comandos/restaurarsoftincremental_cat.php +++ b/admin/WebConsole/idiomas/php/cat/comandos/restaurarsoftincremental_cat.php @@ -48,4 +48,4 @@ $TbMsg[37]='Borrarla previamente de la cache'; $TbMsg[38]='Software Incremental'; $TbMsg[39]='No borrar archivos en destino'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/comandos/tomaconfiguracion_cat.php b/admin/WebConsole/idiomas/php/cat/comandos/tomaconfiguracion_cat.php index 31be40d2..c0061c28 100644 --- a/admin/WebConsole/idiomas/php/cat/comandos/tomaconfiguracion_cat.php +++ b/admin/WebConsole/idiomas/php/cat/comandos/tomaconfiguracion_cat.php @@ -13,4 +13,3 @@ $TbMsg[5]='Agafar configuració'; $TbMsg[6]='Àmbit'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/cat/configuraciones_cat.php b/admin/WebConsole/idiomas/php/cat/configuraciones_cat.php index e93b584f..6eaf723a 100644 --- a/admin/WebConsole/idiomas/php/cat/configuraciones_cat.php +++ b/admin/WebConsole/idiomas/php/cat/configuraciones_cat.php @@ -60,5 +60,5 @@ $TbMsg[44]='Equip sense Perfil de Hardware'; $TbMsg[45]='Afegeixi Perfil per obtenir dades'; $TbMsg[495]='Data/Caché'; $TbMsg[4951]='Caché lliure'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/conmutar_cat.php b/admin/WebConsole/idiomas/php/cat/conmutar_cat.php index 146576ec..181c3b59 100644 --- a/admin/WebConsole/idiomas/php/cat/conmutar_cat.php +++ b/admin/WebConsole/idiomas/php/cat/conmutar_cat.php @@ -2,9 +2,8 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: conmutar_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); - $TbMsg[0]='Aquest àmbit ha commutat correctament'; - $TbMsg[1]='ATENCIÓ: Ha hagut algun problema al conmutar l\'àmbit'; -?>
\ No newline at end of file + $TbMsg[0]='Aquest �mbit ha commutat correctament'; + $TbMsg[1]='ATENCI�: Ha hagut algun problema al conmutar l\'�mbit'; diff --git a/admin/WebConsole/idiomas/php/cat/consolaremota_cat.php b/admin/WebConsole/idiomas/php/cat/consolaremota_cat.php index 8b652bd1..319f69ef 100644 --- a/admin/WebConsole/idiomas/php/cat/consolaremota_cat.php +++ b/admin/WebConsole/idiomas/php/cat/consolaremota_cat.php @@ -21,4 +21,4 @@ $TbMsg[13]='ATENCIÓ: Ha escollit un à mbit d\'aplicació per la consola remota diferent al "d\'ordinador". <BR>Per visualitzar l\'eco de qualsevol client premi sobre ell amb el botón secundari i seleccioni "Eco de consola"; <BR>S\'obrirà una finestra que es refrescarà automà ticament on podrà fer un seguiment de la/el comanda/script introduït'; $TbMsg[14]='...Esperi si us plau, enviant el codi del script'; $TbMsg[15]='...El codi del script s\'ha enviat, per veure la sortida de qualsevol ordinador seleccioni "Eco de Consola"'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/descargas_cat.php b/admin/WebConsole/idiomas/php/cat/descargas_cat.php index 08152fa6..e1936f6a 100644 --- a/admin/WebConsole/idiomas/php/cat/descargas_cat.php +++ b/admin/WebConsole/idiomas/php/cat/descargas_cat.php @@ -10,4 +10,4 @@ $TbMsg['DOWNLOADS']="Descà rregues disponibles"; $TbMsg['NOFILES']="No hi ha fitxers disponibles"; // AvÃs: no hi ha cap deixar carà cter fora del codi PHP. -?> + diff --git a/admin/WebConsole/idiomas/php/cat/ecoremoto_cat.php b/admin/WebConsole/idiomas/php/cat/ecoremoto_cat.php index bf04e179..2b3da729 100644 --- a/admin/WebConsole/idiomas/php/cat/ecoremoto_cat.php +++ b/admin/WebConsole/idiomas/php/cat/ecoremoto_cat.php @@ -18,4 +18,4 @@ $TbMsg[10]='ATENCIÓ: Ha ocorregut algun problema al enviar una petició de eco de consola remota a aquest à mbit'; $TbMsg[11]='... esperi si us plau.'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/ejecutaracciones_cat.php b/admin/WebConsole/idiomas/php/cat/ejecutaracciones_cat.php index 077ba621..a54e981a 100644 --- a/admin/WebConsole/idiomas/php/cat/ejecutaracciones_cat.php +++ b/admin/WebConsole/idiomas/php/cat/ejecutaracciones_cat.php @@ -2,7 +2,7 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: acciones_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); $TbMsg[0]='Centres'; @@ -10,10 +10,9 @@ $TbMsg[2]='Aules'; $TbMsg[3]='Grup d\'ordinadors'; $TbMsg[4]='Ordinadors'; - $TbMsg[5]='Execució de procediments'; - $TbMsg[6]='Àmbit'; + $TbMsg[5]='Execuci� de procediments'; + $TbMsg[6]='�mbit'; $TbMsg[7]='Procediments'; $TbMsg[8]='Procediments'; $TbMsg[9]='"Executar procediment"'; $TbMsg[10]='"Afegir com autoexec"'; - ?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/cat/estados_cat.php b/admin/WebConsole/idiomas/php/cat/estados_cat.php index 77b35205..40a37436 100644 --- a/admin/WebConsole/idiomas/php/cat/estados_cat.php +++ b/admin/WebConsole/idiomas/php/cat/estados_cat.php @@ -17,5 +17,5 @@ $TbMsg["STATUS_LNXS"]="Sessió GNU/Linux"; $TbMsg["STATUS_OSX"]="macOS"; $TbMsg["STATUS_WIN"]="Windows"; $TbMsg["STATUS_WINS"]="Sessió Windows"; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/gestor_ordenadores_cat.php b/admin/WebConsole/idiomas/php/cat/gestor_ordenadores_cat.php index 3eebd1a9..7c1d0665 100644 --- a/admin/WebConsole/idiomas/php/cat/gestor_ordenadores_cat.php +++ b/admin/WebConsole/idiomas/php/cat/gestor_ordenadores_cat.php @@ -6,5 +6,5 @@ //______________________________________________________________ $TbMsg=array(); $TbMsg["DUPLICADO"]="Error al insertar el ordenador, se han encontrado datos duplicados: "; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/hardwares_cat.php b/admin/WebConsole/idiomas/php/cat/hardwares_cat.php index d52d7a82..f2dad48d 100644 --- a/admin/WebConsole/idiomas/php/cat/hardwares_cat.php +++ b/admin/WebConsole/idiomas/php/cat/hardwares_cat.php @@ -2,7 +2,7 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: hardwares_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); $TbMsg[0]='"Definir nou tipus de hardware"'; @@ -17,14 +17,14 @@ $TbMsg[9]='"Eliminar component"'; $TbMsg[10]='"Nou grup de perfils"'; $TbMsg[11]='"Definir nou perfil"'; - $TbMsg[12]='"Col·locar perfil"'; + $TbMsg[12]='"Col�locar perfil"'; $TbMsg[13]='"Eliminar grup de perfils"'; - $TbMsg[14]='"Gestió Components"'; - $TbMsg[15]='"Informació Perfil"'; + $TbMsg[14]='"Gesti� Components"'; + $TbMsg[15]='"Informaci� Perfil"'; $TbMsg[16]='"Moure perfil"'; $TbMsg[17]='"Eliminar perfil hardware"'; $TbMsg[18]='"Tipus de hardware"'; $TbMsg[19]='"Components hardware"'; $TbMsg[20]='"Perfils hardware"'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/iconos_cat.php b/admin/WebConsole/idiomas/php/cat/iconos_cat.php index 20bdbb42..9879a953 100644 --- a/admin/WebConsole/idiomas/php/cat/iconos_cat.php +++ b/admin/WebConsole/idiomas/php/cat/iconos_cat.php @@ -55,5 +55,5 @@ $TbMsg["Particionar"]='Particionar'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/imagenincremental_cat.php b/admin/WebConsole/idiomas/php/cat/imagenincremental_cat.php index 70eb19da..bc5e4c4b 100644 --- a/admin/WebConsole/idiomas/php/cat/imagenincremental_cat.php +++ b/admin/WebConsole/idiomas/php/cat/imagenincremental_cat.php @@ -2,12 +2,11 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: imagenincremental_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); $TbMsg[0]='Imatges'; - $TbMsg[1]='Gestió de software incremental'; + $TbMsg[1]='Gesti� de software incremental'; $TbMsg[2]='Imatge'; $TbMsg[3]='Nom del software incremental'; - $TbMsg[4]='(*)Per a incloure algun software incremental en aquesta imatge ha de fer click sobre la casella de verificació corresponent.'; -?>
\ No newline at end of file + $TbMsg[4]='(*)Per a incloure algun software incremental en aquesta imatge ha de fer click sobre la casella de verificaci� corresponent.'; diff --git a/admin/WebConsole/idiomas/php/cat/inclusionacciones_cat.php b/admin/WebConsole/idiomas/php/cat/inclusionacciones_cat.php index 47def840..e360b45c 100644 --- a/admin/WebConsole/idiomas/php/cat/inclusionacciones_cat.php +++ b/admin/WebConsole/idiomas/php/cat/inclusionacciones_cat.php @@ -18,4 +18,4 @@ $TbMsg[8]='Procediments disponibles'; $TbMsg[9]='Tasques disponibles'; $TbMsg[10]='Parà metres'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/incorporaordenadores_cat.php b/admin/WebConsole/idiomas/php/cat/incorporaordenadores_cat.php index 42ffe53f..f6ecef16 100644 --- a/admin/WebConsole/idiomas/php/cat/incorporaordenadores_cat.php +++ b/admin/WebConsole/idiomas/php/cat/incorporaordenadores_cat.php @@ -2,17 +2,17 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: incorporaordenadores_cat.php (Comandos) -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); - $TbMsg[0]='Incorporació d\'Ordinadors'; + $TbMsg[0]='Incorporaci� d\'Ordinadors'; $TbMsg[1]='Aula'; $TbMsg["MSG_DHCPCODE"]='Codi DHCP'; $TbMsg["MSG_DHCPHOST"]='(declaracions "host")'; - $TbMsg[3]='ATENCIÓ: Hi ha hagut algún problema al incorporar ordinadors des del fitxer'; - $TbMsg[4]='ATENCIÓ: El fitxer está buit'; - $TbMsg[5]='ATENCIÓ: El fitxer no conté informació amb el format necesari per incorporar ordinadors'; - $TbMsg[6]='ATENCIÓ: Hi ha algún problema per a salvar el fitxer'; + $TbMsg[3]='ATENCI�: Hi ha hagut alg�n problema al incorporar ordinadors des del fitxer'; + $TbMsg[4]='ATENCI�: El fitxer est� buit'; + $TbMsg[5]='ATENCI�: El fitxer no cont� informaci� amb el format necesari per incorporar ordinadors'; + $TbMsg[6]='ATENCI�: Hi ha alg�n problema per a salvar el fitxer'; $TbMsg[7]='S\'han incorporat correctament ordinadors desde fitxer'; $TbMsg[8]='Contingut'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/incrementalcomponente_soft_cat.php b/admin/WebConsole/idiomas/php/cat/incrementalcomponente_soft_cat.php index 16a48e39..3e9826c2 100644 --- a/admin/WebConsole/idiomas/php/cat/incrementalcomponente_soft_cat.php +++ b/admin/WebConsole/idiomas/php/cat/incrementalcomponente_soft_cat.php @@ -2,12 +2,11 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: incrementalcomponente_soft_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); $TbMsg[0]='Softwares Incrementals'; - $TbMsg[1]='Gestió de components software'; + $TbMsg[1]='Gesti� de components software'; $TbMsg[2]='Software incremental'; $TbMsg[3]='Nombre del component'; - $TbMsg[4]='(*)Per a incloure algun component en aquest software incremental ha de fer click sobre la casella de verificació corresponent.'; -?>
\ No newline at end of file + $TbMsg[4]='(*)Per a incloure algun component en aquest software incremental ha de fer click sobre la casella de verificaci� corresponent.'; diff --git a/admin/WebConsole/idiomas/php/cat/informacion_acciones_cat.php b/admin/WebConsole/idiomas/php/cat/informacion_acciones_cat.php index 5da6e260..0f5e6359 100644 --- a/admin/WebConsole/idiomas/php/cat/informacion_acciones_cat.php +++ b/admin/WebConsole/idiomas/php/cat/informacion_acciones_cat.php @@ -12,4 +12,4 @@ $TbMsg[4]='Informació sobre Tasques'; $TbMsg[5]='Informació'; $TbMsg[6]='Sense parà metres'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/informacion_imagenes_cat.php b/admin/WebConsole/idiomas/php/cat/informacion_imagenes_cat.php index d417d4a4..641120e9 100644 --- a/admin/WebConsole/idiomas/php/cat/informacion_imagenes_cat.php +++ b/admin/WebConsole/idiomas/php/cat/informacion_imagenes_cat.php @@ -2,17 +2,16 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: informacion_imagenes_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); $TbMsg[0]='Imatges'; - $TbMsg[1]='Informació sobre imatges'; + $TbMsg[1]='Informaci� sobre imatges'; $TbMsg[2]='Imatge'; - $TbMsg[3]='Informació de la Imatge'; + $TbMsg[3]='Informaci� de la Imatge'; $TbMsg[4]='Components software'; $TbMsg[5]='Software incremental'; $TbMsg[6]='Perfil Software'; $TbMsg[7]='Ordinadors amb aquesta imatge'; - $TbMsg[8]='Partició'; + $TbMsg[8]='Partici�'; $TbMsg[9]='Comentaris'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/cat/informacion_incrementales_cat.php b/admin/WebConsole/idiomas/php/cat/informacion_incrementales_cat.php index a6cdb3ba..399ea6d2 100644 --- a/admin/WebConsole/idiomas/php/cat/informacion_incrementales_cat.php +++ b/admin/WebConsole/idiomas/php/cat/informacion_incrementales_cat.php @@ -2,14 +2,13 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: informacion_incrementales_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); $TbMsg[0]='Software Incremental'; - $TbMsg[1]='Informació sobre software incremental'; + $TbMsg[1]='Informaci� sobre software incremental'; $TbMsg[2]='Software Incremental'; - $TbMsg[3]='Informació software incremental'; + $TbMsg[3]='Informaci� software incremental'; $TbMsg[4]='Components software'; $TbMsg[5]='Perfils Combinables'; $TbMsg[6]='Perfils Hardware soportats'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/cat/informacion_menus_cat.php b/admin/WebConsole/idiomas/php/cat/informacion_menus_cat.php index f1fba417..d8caaf7e 100644 --- a/admin/WebConsole/idiomas/php/cat/informacion_menus_cat.php +++ b/admin/WebConsole/idiomas/php/cat/informacion_menus_cat.php @@ -2,28 +2,27 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: informacion_menus_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); - $TbMsg[0]='Ítems del Menú'; - $TbMsg[1]='Informació del Menú'; - $TbMsg[2]='Menú'; - $TbMsg[3]='Informació Menú'; - $TbMsg[4]='Propietats dels ítems'; + $TbMsg[0]='�tems del Men�'; + $TbMsg[1]='Informaci� del Men�'; + $TbMsg[2]='Men�'; + $TbMsg[3]='Informaci� Men�'; + $TbMsg[4]='Propietats dels �tems'; $TbMsg[5]='Propietats'; - $TbMsg[6]='Eliminar Ítem'; - $TbMsg[7]='Títol'; - $TbMsg[8]='Propietats dels ítems públics del Menú'; + $TbMsg[6]='Eliminar �tem'; + $TbMsg[7]='T�tol'; + $TbMsg[8]='Propietats dels �tems p�blics del Men�'; $TbMsg[9]='Coordenada x'; $TbMsg[10]='Coordenada y'; $TbMsg[11]='Modalitat'; - $TbMsg[12]='Propietats de los ítems privats del Menú'; - $TbMsg[13]='Ítems públics '; - $TbMsg[14]='Ítems privats'; - $TbMsg[15]='Ordre del ítem'; - $TbMsg[16]='Literal del ítem'; + $TbMsg[12]='Propietats de los �tems privats del Men�'; + $TbMsg[13]='�tems p�blics '; + $TbMsg[14]='�tems privats'; + $TbMsg[15]='Ordre del �tem'; + $TbMsg[16]='Literal del �tem'; $TbMsg[17]='Nombre de la Imatge'; - $TbMsg[18]='Menú simple'; - $TbMsg[19]='Menú doble'; - $TbMsg[20]='Codi del ítem'; -?>
\ No newline at end of file + $TbMsg[18]='Men� simple'; + $TbMsg[19]='Men� doble'; + $TbMsg[20]='Codi del �tem'; diff --git a/admin/WebConsole/idiomas/php/cat/informacion_perfileshard_cat.php b/admin/WebConsole/idiomas/php/cat/informacion_perfileshard_cat.php index ee5c44a3..86aa10c5 100644 --- a/admin/WebConsole/idiomas/php/cat/informacion_perfileshard_cat.php +++ b/admin/WebConsole/idiomas/php/cat/informacion_perfileshard_cat.php @@ -2,16 +2,15 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: informacion_perfileshard_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); $TbMsg[0]='Perfils hardware'; - $TbMsg[1]='Informació sobre Perfils hardware'; + $TbMsg[1]='Informaci� sobre Perfils hardware'; $TbMsg[2]='Perfil hardware'; - $TbMsg[3]='Informació Perfil hardware'; + $TbMsg[3]='Informaci� Perfil hardware'; $TbMsg[4]='Perfils software disponibles'; $TbMsg[5]='Components software'; $TbMsg[6]='Components hardware '; $TbMsg[7]='Software Incremental'; $TbMsg[8]='Comentaris'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/cat/informacion_perfilessoft_cat.php b/admin/WebConsole/idiomas/php/cat/informacion_perfilessoft_cat.php index 3cb41f19..beb43490 100644 --- a/admin/WebConsole/idiomas/php/cat/informacion_perfilessoft_cat.php +++ b/admin/WebConsole/idiomas/php/cat/informacion_perfilessoft_cat.php @@ -2,16 +2,15 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: informacion_perfilessoft_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); $TbMsg[0]='Perfils software'; - $TbMsg[1]='Informació sobre perfils software'; + $TbMsg[1]='Informaci� sobre perfils software'; $TbMsg[2]='Perfil software'; - $TbMsg[3]='Informació perfils software'; + $TbMsg[3]='Informaci� perfils software'; $TbMsg[4]='Perfils Hardware soportats'; $TbMsg[5]='Components hardware'; $TbMsg[6]='Components software'; $TbMsg[7]='Software Incremental'; $TbMsg[8]='Comentaris'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/cat/informacion_procedimientos_cat.php b/admin/WebConsole/idiomas/php/cat/informacion_procedimientos_cat.php index 50e2d796..2d965288 100644 --- a/admin/WebConsole/idiomas/php/cat/informacion_procedimientos_cat.php +++ b/admin/WebConsole/idiomas/php/cat/informacion_procedimientos_cat.php @@ -2,10 +2,9 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: informacion_procedimientos_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); - $TbMsg[0]='Parámetres dels comandaments del Procedment'; - $TbMsg[1]='Parámetre'; + $TbMsg[0]='Par�metres dels comandaments del Procedment'; + $TbMsg[1]='Par�metre'; $TbMsg[2]='Valor'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/cat/informacion_repositorio_cat.php b/admin/WebConsole/idiomas/php/cat/informacion_repositorio_cat.php index 0501064a..b0728f2e 100644 --- a/admin/WebConsole/idiomas/php/cat/informacion_repositorio_cat.php +++ b/admin/WebConsole/idiomas/php/cat/informacion_repositorio_cat.php @@ -15,5 +15,5 @@ $TbMsg["IMGTYPE2"]='sincronizada bísica'; $TbMsg["IMGTYPE3"]='sincronizada incremental'; $TbMsg[6]='Ordinadors assignats'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/informacion_tareas_cat.php b/admin/WebConsole/idiomas/php/cat/informacion_tareas_cat.php index e58418e6..73f3bfc5 100644 --- a/admin/WebConsole/idiomas/php/cat/informacion_tareas_cat.php +++ b/admin/WebConsole/idiomas/php/cat/informacion_tareas_cat.php @@ -2,12 +2,11 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: informacion_tareas_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); - $TbMsg[0]='Parámetres de les Comandes de la Tasca'; - $TbMsg[1]='Parámetre'; + $TbMsg[0]='Par�metres de les Comandes de la Tasca'; + $TbMsg[1]='Par�metre'; $TbMsg[2]='Valor'; - $TbMsg[3]='Àmbit'; + $TbMsg[3]='�mbit'; $TbMsg[4]='Nom'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/cat/menucliente_cat.php b/admin/WebConsole/idiomas/php/cat/menucliente_cat.php index cc324849..93aaa9e2 100644 --- a/admin/WebConsole/idiomas/php/cat/menucliente_cat.php +++ b/admin/WebConsole/idiomas/php/cat/menucliente_cat.php @@ -9,4 +9,4 @@ $TbMsg[1]='"Direcció IP"'; $TbMsg[2]='NO S\'HA DETECTAT CAP MENÚ PER AQUEST CLIENT'; $TbMsg[3]='Apagar l\'equip'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/menus_cat.php b/admin/WebConsole/idiomas/php/cat/menus_cat.php index 96d745e9..82ca4639 100644 --- a/admin/WebConsole/idiomas/php/cat/menus_cat.php +++ b/admin/WebConsole/idiomas/php/cat/menus_cat.php @@ -2,19 +2,19 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: menus_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); - $TbMsg[0]='"Nou grup de menús"'; - $TbMsg[1]='"Definir nou menú"'; - $TbMsg[2]='"Col·locar menú"'; + $TbMsg[0]='"Nou grup de men�s"'; + $TbMsg[1]='"Definir nou men�"'; + $TbMsg[2]='"Col�locar men�"'; $TbMsg[3]='"Renombrar"'; - $TbMsg[4]='"Eliminar grup de menús"'; - $TbMsg[5]='"Informació Menú"'; - $TbMsg[6]='"Moure menú"'; + $TbMsg[4]='"Eliminar grup de men�s"'; + $TbMsg[5]='"Informaci� Men�"'; + $TbMsg[6]='"Moure men�"'; $TbMsg[7]='"Propietats"'; - $TbMsg[8]='"Eliminar menú"'; - $TbMsg[9]='"Menús"'; + $TbMsg[8]='"Eliminar men�"'; + $TbMsg[9]='"Men�s"'; $TbMsg[10]='"Gestionar Items"'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/msgbrowser_cat.php b/admin/WebConsole/idiomas/php/cat/msgbrowser_cat.php index 48f42677..690abe34 100644 --- a/admin/WebConsole/idiomas/php/cat/msgbrowser_cat.php +++ b/admin/WebConsole/idiomas/php/cat/msgbrowser_cat.php @@ -35,4 +35,4 @@ $TbMsg=array(); -?> + diff --git a/admin/WebConsole/idiomas/php/cat/nada_cat.php b/admin/WebConsole/idiomas/php/cat/nada_cat.php index 85d9a1ff..dd13b722 100644 --- a/admin/WebConsole/idiomas/php/cat/nada_cat.php +++ b/admin/WebConsole/idiomas/php/cat/nada_cat.php @@ -2,7 +2,7 @@ //________________________________________________________________________________________________________ // // Fichero de idiomas php: nada_esp.php -// Idioma: Español +// Idioma: Catalán //________________________________________________________________________________________________________ $TbMsg=array(); $TbMsg[0]="DISPOSITIU UTILITZAT PER ACCEDIR A OPENGNSYS"; @@ -12,5 +12,23 @@ $TbMsg[4]="Versió Sistema"; $TbMsg[5]="Navegador"; $TbMsg[6]="Versió Navegador"; + $TbMsg["TIP"]="Consejo del dÃa"; -?>
\ No newline at end of file + // Los mensajes pueden tener imágenes asociadas llamadas images/tipOfDay_N.png + $TipOfDay=Array(); + $TipOfDay[0]="El cliente de OpenGnsys puede restaurar y crear imágenes en todos los repositorios definidos en la unidad organizativa."; + $TipOfDay[1]="OpenGnsys permite gestionar equipos UEFI desde la versión 1.1.1 (Espeto)."; + $TipOfDay[2]="<a href='https://opengnsys.es' class='help_menu' target='blank'>Nueva web de OpenGnsys</a> dirigida a los usuarios, donde encontrarán fácilmente: \n". + "<ul>\n". + " <li>Descarga de la última versión de Opengnsys</li>\n". + " <li>Manual de usuario</li>\n". + " <li>Documentación de la instalación</li>\n". + " <li>Casos de éxito</li>\n". + "</ul>\n<br>\n"; + $TipOfDay[3]="OpenGnsys permite instalar varios ogLive, pudiendo seleccionar en cada equipo el que mejor reconozca su hardware."; + $TipOfDay[4]="OpenGnsys permite independizar el alojamiento de las imágenes de distintas unidades organizativas dentro de un mismo repositorio."; + $TipOfDay[5]="Para facilitar la migración de un servidor existen scripts para exportar e importar los datos de OpenGnsys."; + $TipOfDay[6]="RemotePC conjuga OpenGnsys con UDS para ofrecer acceso remoto a los equipos de las aulas fuera del horario de docencia."; + $TipOfDay[7]="<b>Curso Online</b><p>Todos los miembros de organizaciones que estén federadas en el Servicio de Identidad de RedIRIS pueden acceder al curso 'Curso Básico de OpenGnsys 1.1.0' en la <a href='https://docencia-net.cv.uma.es' class='help_menu' target='blank'>Plataforma de Formación del Grupo Docencia-Net.</p>"; + $TipOfDay[8]="El nuevo agente de OpenGnsys para el sistema operativo permite mandar mensajes a los usuarios y ejecutar comandos sobre el equipo."; + $TipOfDay[9]="En la web de OpenGnsys puedes encontrar <a href='https://opengnsys.es/trac/wiki/EjemploPracticos' class='help_menu' target='blank'>ejemplos prácticos y recetas</a>, como por ejemplo la postconfiguración necesario para la activación de Windows con KMS."; diff --git a/admin/WebConsole/idiomas/php/cat/perfilcomponente_hard_cat.php b/admin/WebConsole/idiomas/php/cat/perfilcomponente_hard_cat.php index a3aacff9..501e5669 100644 --- a/admin/WebConsole/idiomas/php/cat/perfilcomponente_hard_cat.php +++ b/admin/WebConsole/idiomas/php/cat/perfilcomponente_hard_cat.php @@ -2,12 +2,11 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: perfilcomponente_hard_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); $TbMsg[0]='Perfils hardware'; - $TbMsg[1]='Gestió Components hardware'; + $TbMsg[1]='Gesti� Components hardware'; $TbMsg[2]='Perfil hardware'; $TbMsg[3]='Nom del component'; - $TbMsg[4]='(*)Per incloure algun component en aquest perfil ha de fer click sobre la casella de verificació corresponent.'; -?>
\ No newline at end of file + $TbMsg[4]='(*)Per incloure algun component en aquest perfil ha de fer click sobre la casella de verificaci� corresponent.'; diff --git a/admin/WebConsole/idiomas/php/cat/perfilcomponente_soft_cat.php b/admin/WebConsole/idiomas/php/cat/perfilcomponente_soft_cat.php index 7be75b8f..0d6b732f 100644 --- a/admin/WebConsole/idiomas/php/cat/perfilcomponente_soft_cat.php +++ b/admin/WebConsole/idiomas/php/cat/perfilcomponente_soft_cat.php @@ -2,12 +2,11 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: perfilcomponente_soft_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); $TbMsg[0]='Perfils software'; - $TbMsg[1]='Gestió de components software'; + $TbMsg[1]='Gesti� de components software'; $TbMsg[2]='Perfil software'; $TbMsg[3]='Nom del component'; - $TbMsg[4]='(*)Per incloure algun component en aquest perfil ha de fer click sobre la casella de verificació corresponent.'; -?>
\ No newline at end of file + $TbMsg[4]='(*)Per incloure algun component en aquest perfil ha de fer click sobre la casella de verificaci� corresponent.'; diff --git a/admin/WebConsole/idiomas/php/cat/pintaParticiones_cat.php b/admin/WebConsole/idiomas/php/cat/pintaParticiones_cat.php index c2cf710c..916f30a4 100644 --- a/admin/WebConsole/idiomas/php/cat/pintaParticiones_cat.php +++ b/admin/WebConsole/idiomas/php/cat/pintaParticiones_cat.php @@ -58,5 +58,5 @@ $TbMsg["SEND"]='Protocolo'; $TbMsg["WARN_PROTOCOL"]='La opción "protocolo" sólo se utiliza en las sincronizadas tipo archivo la primera vez que se envÃa la imagen a caché. <br>En otro caso el protocolo es RSYNC.'; $TbMsg["WARN_DIFFIMAGE"]='Hay una nueva versió de la imagen (se muestra la diferencia de revisiones).'; $TbMsg["WARN_DIFFDISKSIZE"]='ATENCIÓN: no se pueden particionar grupos de ordenadores con distinto tamaño de disco.<br>Marcar la opción de "Desagrupar por tamaño de partición" y pulsar "Aceptar" en el menú superior para aplicar esta operación adecuadamente.'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/procedimientoscomandos_cat.php b/admin/WebConsole/idiomas/php/cat/procedimientoscomandos_cat.php index fff32291..821c2c73 100644 --- a/admin/WebConsole/idiomas/php/cat/procedimientoscomandos_cat.php +++ b/admin/WebConsole/idiomas/php/cat/procedimientoscomandos_cat.php @@ -2,15 +2,14 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: procedimientoscomandos_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); - $TbMsg[0]='Gestió Comandes del Procediment'; + $TbMsg[0]='Gesti� Comandes del Procediment'; $TbMsg[1]='Comandes incloses'; $TbMsg[2]='Procediment'; $TbMsg[3]='Nom Comandes'; $TbMsg[4]='Ord.'; - $TbMsg[5]='Paràmetre'; + $TbMsg[5]='Par�metre'; $TbMsg[6]='Valor'; - $TbMsg[7]='(*)Per excloure alguna comanda d\'aquest procediment ha de fer click sobre la casella de verificació corresponent'; -?>
\ No newline at end of file + $TbMsg[7]='(*)Per excloure alguna comanda d\'aquest procediment ha de fer click sobre la casella de verificaci� corresponent'; diff --git a/admin/WebConsole/idiomas/php/cat/programaciones_cat.php b/admin/WebConsole/idiomas/php/cat/programaciones_cat.php index bf61fc4b..bb7a2da7 100644 --- a/admin/WebConsole/idiomas/php/cat/programaciones_cat.php +++ b/admin/WebConsole/idiomas/php/cat/programaciones_cat.php @@ -2,7 +2,7 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: programaciones_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ // Literals dels tipus d'accions $LITEJECUCION_COMANDO="Comandes"; @@ -15,5 +15,4 @@ $TbMsg=array(); $TbMsg[0]="Programacions"; $TbMsg[1]="Suspendre temporalment tots els blocs programats"; -$TbMsg[2]="Descripció del bloc"; -?>
\ No newline at end of file +$TbMsg[2]="Descripci� del bloc"; diff --git a/admin/WebConsole/idiomas/php/cat/programacionesaulas_cat.php b/admin/WebConsole/idiomas/php/cat/programacionesaulas_cat.php index 12db16c5..862f52bb 100644 --- a/admin/WebConsole/idiomas/php/cat/programacionesaulas_cat.php +++ b/admin/WebConsole/idiomas/php/cat/programacionesaulas_cat.php @@ -2,7 +2,7 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: colasreservas_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ // Literals dels tipus de reserves @@ -27,7 +27,7 @@ $TbMsg=array(); $TbMsg[8]='Data final'; $TbMsg[9]='Hora inici'; $TbMsg[10]='Hora final'; - $TbMsg[11]='Àmbit'; + $TbMsg[11]='�mbit'; $TbMsg[12]='Centres'; $TbMsg[13]='Grup d\'aules'; @@ -37,18 +37,17 @@ $TbMsg=array(); $TbMsg[16]='Mes'; $TbMsg[17]='Dia'; $TbMsg[18]='Aula'; - $TbMsg[19]='Ocupació'; + $TbMsg[19]='Ocupaci�'; $TbMsg[20]='Imatge associada'; - $TbMsg[21]='Descripció'; + $TbMsg[21]='Descripci�'; - $TbMsg[22]='Programació reserves'; + $TbMsg[22]='Programaci� reserves'; $TbMsg[23]='(Sense especificar)'; $TbMsg[24]='Aula'; - $TbMsg[25]='Sol·licitant'; - $TbMsg[26]="Anticipació prèvia"; - $TbMsg[27]="(Sense acció prèvia)"; - $TbMsg[28]="Tasca prèvia"; + $TbMsg[25]='Sol�licitant'; + $TbMsg[26]="Anticipaci� pr�via"; + $TbMsg[27]="(Sense acci� pr�via)"; + $TbMsg[28]="Tasca pr�via"; $TbMsg[29]="Treball previ"; $TbMsg[30]='Grup de reserves'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/cat/programacionesreservas_cat.php b/admin/WebConsole/idiomas/php/cat/programacionesreservas_cat.php index 4c9c4e1c..f7e278c6 100644 --- a/admin/WebConsole/idiomas/php/cat/programacionesreservas_cat.php +++ b/admin/WebConsole/idiomas/php/cat/programacionesreservas_cat.php @@ -2,7 +2,7 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: colasreservas_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ // Literals dels tipus de reserves @@ -27,7 +27,7 @@ $TbMsg=array(); $TbMsg[8]='Data final'; $TbMsg[9]='Hora inici'; $TbMsg[10]='Hora final'; - $TbMsg[11]='Àmbit'; + $TbMsg[11]='�mbit'; $TbMsg[12]='Reserves'; $TbMsg[13]='Grup de reserves'; @@ -36,18 +36,17 @@ $TbMsg=array(); $TbMsg[16]='Mes'; $TbMsg[17]='Dia'; $TbMsg[18]='Aula'; - $TbMsg[19]='Ocupació'; + $TbMsg[19]='Ocupaci�'; $TbMsg[20]='Imatge associada'; - $TbMsg[21]='Descripció'; + $TbMsg[21]='Descripci�'; - $TbMsg[22]='Programació reserves'; + $TbMsg[22]='Programaci� reserves'; $TbMsg[23]='(Sense especificar)'; $TbMsg[24]='Aula'; - $TbMsg[25]='Sol·licitant'; - $TbMsg[26]="Anticipació prèvia"; - $TbMsg[27]="(Sense acció prèvia)"; - $TbMsg[28]="Tasca prèvia"; + $TbMsg[25]='Sol�licitant'; + $TbMsg[26]="Anticipaci� pr�via"; + $TbMsg[27]="(Sense acci� pr�via)"; + $TbMsg[28]="Tasca pr�via"; $TbMsg[29]="Treball previ"; $TbMsg[30]="Dades Reserva"; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/cat/propiedades_aulas_cat.php b/admin/WebConsole/idiomas/php/cat/propiedades_aulas_cat.php index a8185a8d..02c8a984 100644 --- a/admin/WebConsole/idiomas/php/cat/propiedades_aulas_cat.php +++ b/admin/WebConsole/idiomas/php/cat/propiedades_aulas_cat.php @@ -59,4 +59,4 @@ $TbMsg['COMM_REMOTEACCESS']="permitir gestión de acceso remoto a los orde $TbMsg['COMM_DEFOGLIVE']="Assignat per l'administrador"; // Ticket-816 PCprofesor $TbMsg['PROP_PROFCOMPUTER']="Ordenador de profesor"; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/propiedades_centros_cat.php b/admin/WebConsole/idiomas/php/cat/propiedades_centros_cat.php index 26d81b96..d35360c7 100644 --- a/admin/WebConsole/idiomas/php/cat/propiedades_centros_cat.php +++ b/admin/WebConsole/idiomas/php/cat/propiedades_centros_cat.php @@ -2,17 +2,17 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: propiedades_ordenadores_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); -$TbMsg[0]="Sense Opció"; +$TbMsg[0]="Sense Opci�"; $TbMsg[1]="Afegir"; $TbMsg[2]="Modificar"; $TbMsg[3]="Eliminar"; -$TbMsg[4]="Gestió d'Unitats Organitzatives"; +$TbMsg[4]="Gesti� d'Unitats Organitzatives"; $TbMsg[5]="Nom de la unitat"; $TbMsg[6]="Comentaris"; $TbMsg['DIR']="Directorio"; $TbMsg['MSG_OGUNIT']="Si se elige separar por unidades organizativas, el directorio <b>/opt/opengnsys/images</b><br> debe contener un subdirectorio llamado como el directorio indicado."; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/propiedades_componentehardwares_cat.php b/admin/WebConsole/idiomas/php/cat/propiedades_componentehardwares_cat.php index d32b2e4c..b726ed66 100644 --- a/admin/WebConsole/idiomas/php/cat/propiedades_componentehardwares_cat.php +++ b/admin/WebConsole/idiomas/php/cat/propiedades_componentehardwares_cat.php @@ -2,14 +2,13 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: propiedades_componentehardwares_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); -$TbMsg[0]="Sense Opció"; +$TbMsg[0]="Sense Opci�"; $TbMsg[1]="Afegir"; $TbMsg[2]="Modificar"; $TbMsg[3]="Eliminar"; -$TbMsg[4]="Gestió Components Hardware"; +$TbMsg[4]="Gesti� Components Hardware"; $TbMsg[5]="Nom"; $TbMsg[6]="Tipus de hardware"; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/cat/propiedades_componentesoftwares_cat.php b/admin/WebConsole/idiomas/php/cat/propiedades_componentesoftwares_cat.php index fcbe82e2..b959b2a9 100644 --- a/admin/WebConsole/idiomas/php/cat/propiedades_componentesoftwares_cat.php +++ b/admin/WebConsole/idiomas/php/cat/propiedades_componentesoftwares_cat.php @@ -2,15 +2,14 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: propiedades_componentesoftwares_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); -$TbMsg[0]="Sense Opció"; +$TbMsg[0]="Sense Opci�"; $TbMsg[1]="Afegir"; $TbMsg[2]="Modificar"; $TbMsg[3]="Eliminar"; -$TbMsg[4]="Gestió Components Software"; +$TbMsg[4]="Gesti� Components Software"; $TbMsg[5]="Nom"; $TbMsg[6]="Tipus de Software"; $TbMsg[7]="Tipus de S.O."; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/cat/propiedades_entidades_cat.php b/admin/WebConsole/idiomas/php/cat/propiedades_entidades_cat.php index 7798aea0..819e4f3b 100644 --- a/admin/WebConsole/idiomas/php/cat/propiedades_entidades_cat.php +++ b/admin/WebConsole/idiomas/php/cat/propiedades_entidades_cat.php @@ -2,16 +2,16 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: propiedades_ordenadores_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); -$TbMsg[0]="Sense Opció"; +$TbMsg[0]="Sense Opci�"; $TbMsg[1]="Afegir"; $TbMsg[2]="Modificar"; $TbMsg[3]="Eliminar"; -$TbMsg[4]="Gestió Entitats"; +$TbMsg[4]="Gesti� Entitats"; $TbMsg[5]="Nom de l'Entitat"; $TbMsg[6]="Comentaris"; $TbMsg['OGUNIT']="Separar unidades organizativas"; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/propiedades_entornos_cat.php b/admin/WebConsole/idiomas/php/cat/propiedades_entornos_cat.php index 42ae5d85..ac9361bb 100644 --- a/admin/WebConsole/idiomas/php/cat/propiedades_entornos_cat.php +++ b/admin/WebConsole/idiomas/php/cat/propiedades_entornos_cat.php @@ -21,4 +21,4 @@ $TbMsg[12]=""; $TbMsg[13]=""; $TbMsg[14]=""; $TbMsg[15]=""; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/propiedades_grupos_cat.php b/admin/WebConsole/idiomas/php/cat/propiedades_grupos_cat.php index b2d56d0e..7c5f6afc 100644 --- a/admin/WebConsole/idiomas/php/cat/propiedades_grupos_cat.php +++ b/admin/WebConsole/idiomas/php/cat/propiedades_grupos_cat.php @@ -2,14 +2,14 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: propiedades_tareas_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); -$TbMsg[0]="Sense Opció"; +$TbMsg[0]="Sense Opci�"; $TbMsg[1]="Afegir"; $TbMsg[2]="Modificar"; $TbMsg[3]="Eliminar"; -$TbMsg[4]="Gestió Grups"; +$TbMsg[4]="Gesti� Grups"; $TbMsg[5]="Nom Grup"; $TbMsg[6]="Comentaris"; $TbMsg[7]="Grups d'Aules"; @@ -24,8 +24,7 @@ $TbMsg[15]="Grups de Perfils Software"; $TbMsg[16]="Grups de Software Incremental"; $TbMsg[17]="Grups de Servidors Rembo"; $TbMsg[18]="Grups de Servidors Dhcp"; -$TbMsg[19]="Grups de Menús"; +$TbMsg[19]="Grups de Men�s"; $TbMsg[20]="Grups de Reserves"; $TbMsg[21]="Grups d'Entitats"; $TbMsg[22]="Grupo d'Ordinadors"; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/cat/propiedades_imagenes_cat.php b/admin/WebConsole/idiomas/php/cat/propiedades_imagenes_cat.php index 423eee50..bada5225 100644 --- a/admin/WebConsole/idiomas/php/cat/propiedades_imagenes_cat.php +++ b/admin/WebConsole/idiomas/php/cat/propiedades_imagenes_cat.php @@ -32,4 +32,4 @@ $TbMsg[22]="Introduzca otra Descripción"; $TbMsg['PROP_OS']="Sistema operativo"; $TbMsg['PROP_REMOTEACCESS']="Acceso remoto"; $TbMsg['COMM_REMOTEACCESS']="permitir gestión de acceso remoto a los ordenadores"; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/propiedades_menus_cat.php b/admin/WebConsole/idiomas/php/cat/propiedades_menus_cat.php index a6fbbb73..49dc3b7a 100644 --- a/admin/WebConsole/idiomas/php/cat/propiedades_menus_cat.php +++ b/admin/WebConsole/idiomas/php/cat/propiedades_menus_cat.php @@ -2,25 +2,25 @@ //________________________________________________________________________________________________________ // // Fitxer d'idioms php: propiedades_menus_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); -$TbMsg[0]="Sense Opció"; +$TbMsg[0]="Sense Opci�"; $TbMsg[1]="Afegir"; $TbMsg[2]="Modificar"; $TbMsg[3]="Eliminar"; -$TbMsg[4]="Gestió Menus"; -$TbMsg[5]="Nom del Menú"; -$TbMsg[6]="Títol"; +$TbMsg[4]="Gesti� Menus"; +$TbMsg[5]="Nom del Men�"; +$TbMsg[6]="T�tol"; $TbMsg[7]="Comentaris"; -$TbMsg[8]="Items de Menú Público"; +$TbMsg[8]="Items de Men� P�blico"; $TbMsg[9]="Coordenada x"; $TbMsg[10]="Coordenada y"; -$TbMsg[11]="Columnas menú automático"; -$TbMsg[13]="Menú simple"; -$TbMsg[14]="Menú doble"; -$TbMsg[15]="URL menú personalizado"; -$TbMsg[17]="Resolució de pantalla"; +$TbMsg[11]="Columnas men� autom�tico"; +$TbMsg[13]="Men� simple"; +$TbMsg[14]="Men� doble"; +$TbMsg[15]="URL men� personalizado"; +$TbMsg[17]="Resoluci� de pantalla"; $TbMsg[18]="Imagen de fondo"; $TbMsg["PROP_DEFAULT"]="Detectada por defecto"; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/propiedades_ordenadorestandar_cat.php b/admin/WebConsole/idiomas/php/cat/propiedades_ordenadorestandar_cat.php index 0883949f..5a9faa50 100644 --- a/admin/WebConsole/idiomas/php/cat/propiedades_ordenadorestandar_cat.php +++ b/admin/WebConsole/idiomas/php/cat/propiedades_ordenadorestandar_cat.php @@ -2,20 +2,20 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: propiedades_ordenadorestandar_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); $TbMsg[0]="Aula"; $TbMsg[1]="Ordinador plantilla"; $TbMsg[2]="Nom"; -$TbMsg[3]="Direcció IP"; -$TbMsg[4]="Direcció MAC"; +$TbMsg[3]="Direcci� IP"; +$TbMsg[4]="Direcci� MAC"; $TbMsg[5]="Perfil hardware"; $TbMsg[6]="Servidor Dhcp"; $TbMsg[7]="Servidor Rembo "; $TbMsg[8]="Ordinadors per a afegir"; $TbMsg[9]='(*) Per modificar un ordinador amb un certa dada, en aquesta aula, ha d\'introduir el valor corresponent i deixar el camp "Ordinadors a afegir" a zero.'; -$TbMsg[10]="(**) Si es tracta d\'ordinadors nous amb una configuració per defecte, però no vol modificar els ordinadors ja existents ha d'\introduir un valor més gran que zero."; -$TbMsg[11]="Grandària Caché"; +$TbMsg[10]="(**) Si es tracta d\'ordinadors nous amb una configuraci� per defecte, per� no vol modificar els ordinadors ja existents ha d'\introduir un valor m�s gran que zero."; +$TbMsg[11]="Grand�ria Cach�"; + -?> diff --git a/admin/WebConsole/idiomas/php/cat/propiedades_perfilhardwares_cat.php b/admin/WebConsole/idiomas/php/cat/propiedades_perfilhardwares_cat.php index 1ce3ef22..40203751 100644 --- a/admin/WebConsole/idiomas/php/cat/propiedades_perfilhardwares_cat.php +++ b/admin/WebConsole/idiomas/php/cat/propiedades_perfilhardwares_cat.php @@ -16,5 +16,5 @@ $TbMsg["HARD_COMPUTERS"]="Ordinadors"; $TbMsg["HARD_WINBOOT"]="Arrencada Windows"; $TbMsg["HARD_REBOOT"]="Reinici (reboot)"; $TbMsg["HARD_KEXEC"]="Directe (kexec)"; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/propiedades_perfilsoftwares_cat.php b/admin/WebConsole/idiomas/php/cat/propiedades_perfilsoftwares_cat.php index da08d1ef..0494e826 100644 --- a/admin/WebConsole/idiomas/php/cat/propiedades_perfilsoftwares_cat.php +++ b/admin/WebConsole/idiomas/php/cat/propiedades_perfilsoftwares_cat.php @@ -2,14 +2,13 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: propiedades_perfilsoftwares_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); -$TbMsg[0]="Sense Opció"; +$TbMsg[0]="Sense Opci�"; $TbMsg[1]="Afegir"; $TbMsg[2]="Modificar"; $TbMsg[3]="Eliminar"; -$TbMsg[4]="Gestió de Perfils software"; +$TbMsg[4]="Gesti� de Perfils software"; $TbMsg[5]="Nom"; $TbMsg[6]="Comentaris"; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/cat/propiedades_procedimientos_cat.php b/admin/WebConsole/idiomas/php/cat/propiedades_procedimientos_cat.php index eecd646b..e90cbdc9 100644 --- a/admin/WebConsole/idiomas/php/cat/propiedades_procedimientos_cat.php +++ b/admin/WebConsole/idiomas/php/cat/propiedades_procedimientos_cat.php @@ -2,14 +2,13 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: propiedades_procedimientos_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); -$TbMsg[0]="Sense Opció"; +$TbMsg[0]="Sense Opci�"; $TbMsg[1]="Afegir"; $TbMsg[2]="Modificar"; $TbMsg[3]="Eliminar"; -$TbMsg[4]="Gestió Procediments"; +$TbMsg[4]="Gesti� Procediments"; $TbMsg[5]="Nom Procediment"; $TbMsg[6]="Comentaris"; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/cat/propiedades_reservas_cat.php b/admin/WebConsole/idiomas/php/cat/propiedades_reservas_cat.php index 346d0b6c..c20a56e4 100644 --- a/admin/WebConsole/idiomas/php/cat/propiedades_reservas_cat.php +++ b/admin/WebConsole/idiomas/php/cat/propiedades_reservas_cat.php @@ -2,29 +2,28 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: propiedades_reservas_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); -$TbMsg[0]="Sense Opció"; +$TbMsg[0]="Sense Opci�"; $TbMsg[1]="Afegir"; $TbMsg[2]="Modificar"; $TbMsg[3]="Eliminar"; -$TbMsg[4]="Gestió Reserves"; -$TbMsg[5]="Descripció"; -$TbMsg[6]="Nom sol·licitant"; +$TbMsg[4]="Gesti� Reserves"; +$TbMsg[5]="Descripci�"; +$TbMsg[6]="Nom sol�licitant"; $TbMsg[7]="Comentaris"; $TbMsg[8]="E-mail"; $TbMsg[9]="Estatus universitari"; $TbMsg[10]="Aula"; $TbMsg[11]="Imatge associada"; -$TbMsg[12]="Anticipació previa"; +$TbMsg[12]="Anticipaci� previa"; $TbMsg[13]="Confirmada"; $TbMsg[14]="Pendent"; $TbMsg[15]="Denegada"; $TbMsg[16]="Estat de la reserva"; -$TbMsg[17]="(En blanc o 0 minuts indica sense anticipació)"; -$TbMsg[18]="(Sense acció anticipada)"; -$TbMsg[19]="Tasca prèvia"; +$TbMsg[17]="(En blanc o 0 minuts indica sense anticipaci�)"; +$TbMsg[18]="(Sense acci� anticipada)"; +$TbMsg[19]="Tasca pr�via"; $TbMsg[20]="Treball previ"; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/cat/propiedades_tareas_cat.php b/admin/WebConsole/idiomas/php/cat/propiedades_tareas_cat.php index b13e024c..e18e259a 100644 --- a/admin/WebConsole/idiomas/php/cat/propiedades_tareas_cat.php +++ b/admin/WebConsole/idiomas/php/cat/propiedades_tareas_cat.php @@ -2,22 +2,22 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: propiedades_tareas_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); -$TbMsg[0]="Sense Opció"; +$TbMsg[0]="Sense Opci�"; $TbMsg[1]="Afegir"; $TbMsg[2]="Modificar"; $TbMsg[3]="Eliminar"; -$TbMsg[4]="Gestió Tasques"; +$TbMsg[4]="Gesti� Tasques"; $TbMsg[5]="Nom Tasca"; $TbMsg[6]="Comentaris"; -$TbMsg[7]="Tipus àmbit"; -$TbMsg[8]="Àmbit d\'aplicació"; +$TbMsg[7]="Tipus �mbit"; +$TbMsg[8]="�mbit d\'aplicaci�"; $TbMsg[9]=""; $TbMsg[10]="Centres"; $TbMsg[11]="Grups d\'Aules"; $TbMsg[12]="Aules"; $TbMsg[13]="Grups d\Ordinadors"; $TbMsg[14]="Ordinadors"; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/propiedades_tipohardwares_cat.php b/admin/WebConsole/idiomas/php/cat/propiedades_tipohardwares_cat.php index 3323ca52..3ea773ca 100644 --- a/admin/WebConsole/idiomas/php/cat/propiedades_tipohardwares_cat.php +++ b/admin/WebConsole/idiomas/php/cat/propiedades_tipohardwares_cat.php @@ -2,14 +2,13 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: propiedades_tipohardwares_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); -$TbMsg[0]="Sense Opció"; +$TbMsg[0]="Sense Opci�"; $TbMsg[1]="Afegir"; $TbMsg[2]="Modificar"; $TbMsg[3]="Eliminar"; -$TbMsg[4]="Gestió Tipus de Hardware"; +$TbMsg[4]="Gesti� Tipus de Hardware"; $TbMsg[5]="Nom"; $TbMsg[6]="Icona"; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/cat/propiedades_universidades_cat.php b/admin/WebConsole/idiomas/php/cat/propiedades_universidades_cat.php index f1a18013..9a576b94 100644 --- a/admin/WebConsole/idiomas/php/cat/propiedades_universidades_cat.php +++ b/admin/WebConsole/idiomas/php/cat/propiedades_universidades_cat.php @@ -2,14 +2,13 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: propiedades_aulas_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); -$TbMsg[0]="Sense Opció"; +$TbMsg[0]="Sense Opci�"; $TbMsg[1]="Afegir"; $TbMsg[2]="Modificar"; $TbMsg[3]="Eliminar"; -$TbMsg[4]="Gestió Universitats"; +$TbMsg[4]="Gesti� Universitats"; $TbMsg[5]="Nom"; $TbMsg[6]="Comentaris"; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/cat/propiedades_usuarios_cat.php b/admin/WebConsole/idiomas/php/cat/propiedades_usuarios_cat.php index 16df7a25..71126a0b 100644 --- a/admin/WebConsole/idiomas/php/cat/propiedades_usuarios_cat.php +++ b/admin/WebConsole/idiomas/php/cat/propiedades_usuarios_cat.php @@ -2,14 +2,14 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: propiedades_ordenadores_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); -$TbMsg[0]="Sense Opció"; +$TbMsg[0]="Sense Opci�"; $TbMsg[1]="Afegir"; $TbMsg[2]="Modificar"; $TbMsg[3]="Eliminar"; -$TbMsg[4]="Gestió Usuaris"; +$TbMsg[4]="Gesti� Usuaris"; $TbMsg[5]="Usuari"; $TbMsg[6]="Password*"; $TbMsg[7]="Nom complet"; @@ -20,10 +20,10 @@ $TbMsg[11]="SuperAdministrador "; $TbMsg[12]="Administrador"; $TbMsg[13]="Operador"; $TbMsg[14]="Per realitzar canvis en aquest usuari<br>"; -$TbMsg[15]="creat en el procés d'instal·lació,<br><br>"; -$TbMsg[16]="premi aquí<br>"; +$TbMsg[15]="creat en el proc�s d'instal�laci�,<br><br>"; +$TbMsg[16]="premi aqu�<br>"; $TbMsg[17]="https://opengnsys.es/trac/wiki/ModificarUsuarios"; $TbMsg[18]="Confirmar password"; $TbMsg['APIKEY']="API key"; -$TbMsg['NEWAPIKEY']="La API key se generará automáticamente al insertar el usuario."; -?> +$TbMsg['NEWAPIKEY']="La API key se generar� autom�ticamente al insertar el usuario."; + diff --git a/admin/WebConsole/idiomas/php/cat/purgar_cat.php b/admin/WebConsole/idiomas/php/cat/purgar_cat.php index 792d8700..9a06fe40 100644 --- a/admin/WebConsole/idiomas/php/cat/purgar_cat.php +++ b/admin/WebConsole/idiomas/php/cat/purgar_cat.php @@ -2,9 +2,8 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: actualizar_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); - $TbMsg[0]='Aquest àmbit ha estat purgat correctament'; - $TbMsg[1]='ATENCIÓ: Ha ocorregut algún problema al purgar l\'àmbit'; -?>
\ No newline at end of file + $TbMsg[0]='Aquest �mbit ha estat purgat correctament'; + $TbMsg[1]='ATENCI�: Ha ocorregut alg�n problema al purgar l\'�mbit'; diff --git a/admin/WebConsole/idiomas/php/cat/repositorios_cat.php b/admin/WebConsole/idiomas/php/cat/repositorios_cat.php index 30677a5b..11437225 100644 --- a/admin/WebConsole/idiomas/php/cat/repositorios_cat.php +++ b/admin/WebConsole/idiomas/php/cat/repositorios_cat.php @@ -21,4 +21,4 @@ $TbMsg[13]='""'; $TbMsg[14]='"Repositoris"'; $TbMsg[15]='"Icones"'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/reservas_cat.php b/admin/WebConsole/idiomas/php/cat/reservas_cat.php index f861ef05..cd89359f 100644 --- a/admin/WebConsole/idiomas/php/cat/reservas_cat.php +++ b/admin/WebConsole/idiomas/php/cat/reservas_cat.php @@ -2,19 +2,19 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: reservas_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); $TbMsg[0]='"Nou grup de reserves"'; $TbMsg[1]='"Definir nova reserva"'; - $TbMsg[2]='"Col·locar reserva"'; + $TbMsg[2]='"Col�locar reserva"'; $TbMsg[3]='"Renombrar"'; $TbMsg[4]='"Eliminar grup de reserves"'; - $TbMsg[5]='"Informació Reserva"'; + $TbMsg[5]='"Informaci� Reserva"'; $TbMsg[6]='"Moure reserva"'; $TbMsg[7]='"Propietats"'; $TbMsg[8]='"Eliminar Reserva"'; $TbMsg[9]='"Reserves"'; $TbMsg[10]='"Programacions"'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/softwares_cat.php b/admin/WebConsole/idiomas/php/cat/softwares_cat.php index cc41e8be..3e1924e4 100644 --- a/admin/WebConsole/idiomas/php/cat/softwares_cat.php +++ b/admin/WebConsole/idiomas/php/cat/softwares_cat.php @@ -2,7 +2,7 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: softwares_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); $TbMsg[0]='""'; @@ -10,17 +10,17 @@ $TbMsg[2]='""'; $TbMsg[3]='"Nou grup de components"'; $TbMsg[4]='"Definir nou component"'; - $TbMsg[5]='"Col·locar component"'; + $TbMsg[5]='"Col�locar component"'; $TbMsg[6]='"Renombrar"'; $TbMsg[7]='"Eliminar grup de components"'; $TbMsg[8]='"Moure component"'; $TbMsg[9]='"Eliminar component"'; $TbMsg[10]='"Nou grup de perfils"'; $TbMsg[11]='"Definir nou perfil"'; - $TbMsg[12]='"Col·locar perfil"'; + $TbMsg[12]='"Col�locar perfil"'; $TbMsg[13]='"Eliminar grup de perfils"'; - $TbMsg[14]='"Gestió components"'; - $TbMsg[15]='"Informació Perfil"'; + $TbMsg[14]='"Gesti� components"'; + $TbMsg[15]='"Informaci� Perfil"'; $TbMsg[16]='"Moure perfil"'; $TbMsg[17]='"Eliminar perfil software"'; $TbMsg[18]='"Tipus de software"'; @@ -29,9 +29,8 @@ $TbMsg[21]='"Software Incremental"'; $TbMsg[22]='"Nou grup d\'incrementals"'; $TbMsg[23]='"Definir nova incremental"'; - $TbMsg[24]='"Col·locar incremental"'; + $TbMsg[24]='"Col�locar incremental"'; $TbMsg[25]='"Eliminar grup d\'incrementals"'; - $TbMsg[26]='"Informació incremental"'; + $TbMsg[26]='"Informaci� incremental"'; $TbMsg[27]='"Moure incremental"'; $TbMsg[28]='"Eliminar incremental"'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/cat/sondeo_cat.php b/admin/WebConsole/idiomas/php/cat/sondeo_cat.php index 5fb6c4e0..79e50362 100644 --- a/admin/WebConsole/idiomas/php/cat/sondeo_cat.php +++ b/admin/WebConsole/idiomas/php/cat/sondeo_cat.php @@ -7,4 +7,4 @@ $TbMsg=array(); $TbMsg[0]=''; $TbMsg[1]='ATENCIÓ: Ha ocorregut algun problema al consultar l\'estat del ordinadors'; -?> + diff --git a/admin/WebConsole/idiomas/php/cat/tareascomandos_cat.php b/admin/WebConsole/idiomas/php/cat/tareascomandos_cat.php index 484233b5..7f0406c3 100644 --- a/admin/WebConsole/idiomas/php/cat/tareascomandos_cat.php +++ b/admin/WebConsole/idiomas/php/cat/tareascomandos_cat.php @@ -2,15 +2,14 @@ //________________________________________________________________________________________________________ // // Fitxer d'idiomes php: tareascomandos_cat.php -// Idioma: Català +// Idioma: Catal� //________________________________________________________________________________________________________ $TbMsg=array(); - $TbMsg[0]='Gestió Comandes de la Tasca'; + $TbMsg[0]='Gesti� Comandes de la Tasca'; $TbMsg[1]='Comandes incloses'; $TbMsg[2]='Tasca'; $TbMsg[3]='Nom Comanda'; $TbMsg[4]='Ord.'; - $TbMsg[5]='Paràmetre'; + $TbMsg[5]='Par�metre'; $TbMsg[6]='Valor'; - $TbMsg[7]='(*)Per excloure alguna comanda d\'aquesta tasca ha de fer click sobre la casella de verificació corresponent'; -?>
\ No newline at end of file + $TbMsg[7]='(*)Per excloure alguna comanda d\'aquesta tasca ha de fer click sobre la casella de verificaci� corresponent'; diff --git a/admin/WebConsole/idiomas/php/cat/tiposhardwares_cat.php b/admin/WebConsole/idiomas/php/cat/tiposhardwares_cat.php index 06474d90..06d6772d 100644 --- a/admin/WebConsole/idiomas/php/cat/tiposhardwares_cat.php +++ b/admin/WebConsole/idiomas/php/cat/tiposhardwares_cat.php @@ -23,5 +23,5 @@ $TbMsg["HARDWARE_net"]="Tarjetas de red"; $TbMsg["HARDWARE_sto"]="Controladores de almacenamiento"; $TbMsg["HARDWARE_usb"]="Controladores USB"; $TbMsg["HARDWARE_vga"]="Tarjetas gráficas"; -?> + diff --git a/admin/WebConsole/idiomas/php/eng/ayuda_eng.php b/admin/WebConsole/idiomas/php/eng/ayuda_eng.php index f0da7af5..eaf1d084 100644 --- a/admin/WebConsole/idiomas/php/eng/ayuda_eng.php +++ b/admin/WebConsole/idiomas/php/eng/ayuda_eng.php @@ -5,11 +5,12 @@ // Idioma: Inglés // __________________________________________________ // Mensajes. -$TbMsg=array(); +if (empty ($TbMsg)) $TbMsg=array(); $TbMsg["HELP_TITLE"]='Help'; $TbMsg["MANUAL"]='User Manual'; -$TbMsg["API"]='API documentation'; +$TbMsg["API"]='Engine API documentation'; $TbMsg["CFG"]='Client configuration'; +$TbMsg["REST"]='REST API documentation'; $TbMsg["CHANGELOG"]='Changes in the version:'; $TbMsg["USERMAIL"]=' User email list'; $TbMsg["WEB"]='Web of the project: opengnsys.es'; diff --git a/admin/WebConsole/idiomas/php/eng/boot_grub4dos_eng.php b/admin/WebConsole/idiomas/php/eng/boot_grub4dos_eng.php index cc2e827c..7f58a353 100644 --- a/admin/WebConsole/idiomas/php/eng/boot_grub4dos_eng.php +++ b/admin/WebConsole/idiomas/php/eng/boot_grub4dos_eng.php @@ -51,3 +51,5 @@ $TbMsg[43]='"Save"'; $TbMsg[44]='Computer locator'; $TbMsg[45]='Scope name'; + $TbMsg["UEFI"]='AVISO: Hay plantillas PXE que sólo son compatibles con un tipo de firmware, uefi o bios.<br>Al elegir estas plantillas la otra opción quedará configurada por defecto'; + $TbMsg["ERR_DUPLICADO"]='ERROR: The name or description of template are duplicated'; diff --git a/admin/WebConsole/idiomas/php/eng/comandos/configurar_eng.php b/admin/WebConsole/idiomas/php/eng/comandos/configurar_eng.php index 16d1d06a..60085635 100644 --- a/admin/WebConsole/idiomas/php/eng/comandos/configurar_eng.php +++ b/admin/WebConsole/idiomas/php/eng/comandos/configurar_eng.php @@ -22,6 +22,6 @@ $TbMsg[14]='Format'; $TbMsg[15]='Hide'; $TbMsg[16]='Show'; - $TbMsg[17]='¡¡ Free space !!'; + $TbMsg[17]='Free space !!'; $TbMsg["HD"]='Disk'; diff --git a/admin/WebConsole/idiomas/php/eng/comandos/crearimagenbasica_eng.php b/admin/WebConsole/idiomas/php/eng/comandos/crearimagenbasica_eng.php index 6f1d3545..e20b703f 100644 --- a/admin/WebConsole/idiomas/php/eng/comandos/crearimagenbasica_eng.php +++ b/admin/WebConsole/idiomas/php/eng/comandos/crearimagenbasica_eng.php @@ -4,13 +4,13 @@ // Php image file: crearimagenbasica_eng.php (Comandos) // Language: English //________________________________________________________________________________________________________ - $TbMsg=array(); + if (empty($TbMsg)) $TbMsg=array(); $TbMsg[0]='Generation of base image <br> (experimental)' ; $TbMsg[1]='Computer features'; - $TbMsg[2]='Name'; - $TbMsg[3]='IP Address'; - $TbMsg[4]='MAC Address'; - $TbMsg[5]='Hardware profile'; + $TbMsg[2]='Name'; + $TbMsg[3]='IP Address'; + $TbMsg[4]='MAC Address'; + $TbMsg[5]='Hardware profile'; $TbMsg[6]='Data to supply'; $TbMsg[7]='Disk'; $TbMsg[8]='Par'; @@ -20,5 +20,5 @@ $TbMsg[12]='Additional Options'; $TbMsg[13]='Delete image previously'; $TbMsg[14]='Copy image to cache'; - $TbMsg[15]='Delete image previously from cache'; + $TbMsg[15]='Deleting image previously from cache'; $TbMsg[16]='Do not delete files from target'; diff --git a/admin/WebConsole/idiomas/php/eng/comandos/crearsoftincremental_eng.php b/admin/WebConsole/idiomas/php/eng/comandos/crearsoftincremental_eng.php index a26a34f4..d9a3ccce 100644 --- a/admin/WebConsole/idiomas/php/eng/comandos/crearsoftincremental_eng.php +++ b/admin/WebConsole/idiomas/php/eng/comandos/crearsoftincremental_eng.php @@ -4,15 +4,15 @@ // Php language file: crearsoftincremental_eng.php (Comandos) // Language: English //________________________________________________________________________________________________________ - $TbMsg=array(); - $TbMsg[0]='Generation of incremental image <br> (experimental)'; + if (empty($TbMsg)) $TbMsg=array(); + $TbMsg[0]='Generation of incremental image <br> (experimental)'; $TbMsg[1]='Computer features'; $TbMsg[2]='Name'; $TbMsg[3]='IP Address'; $TbMsg[4]='MAC Address'; $TbMsg[5]='Hardware profile'; $TbMsg[6]='Data to supply'; - $TbMsg[7]='Disco'; + $TbMsg[7]='Disk'; $TbMsg[8]='Par'; $TbMsg[9]='OS name'; $TbMsg[10]='Incremental image / Repository'; @@ -20,5 +20,5 @@ $TbMsg[12]='Incremental software'; $TbMsg[13]='Delete Incremental previously'; $TbMsg[14]='Copy Incremental to cache'; - $TbMsg[15]='Delete Incremental previously from cache'; - $TbMsg[16]='Do not delete files from target'; + $TbMsg[15]='Deleting Incremental previously from cache'; + $TbMsg[16]='Do not delete files from target'; diff --git a/admin/WebConsole/idiomas/php/eng/comandos/ejecutarscripts_eng.php b/admin/WebConsole/idiomas/php/eng/comandos/ejecutarscripts_eng.php index 38e217ca..fa00a89f 100644 --- a/admin/WebConsole/idiomas/php/eng/comandos/ejecutarscripts_eng.php +++ b/admin/WebConsole/idiomas/php/eng/comandos/ejecutarscripts_eng.php @@ -54,7 +54,7 @@ $TbMsg["WCRP31"]='Remote partitions cloning Wizard'; $TbMsg["WCRP32"]='Select MASTER PC:'; - $TbMsg["WCRP33"]='Select the image or partition to send from Master PC'; + $TbMsg["WCRP33"]='Choose the image or partition to send from Master PC'; $TbMsg["WCRP34"]='Select the client target partition'; $TbMsg["WCRP35"]='Select the transfer mode'; $TbMsg["WCRP36"]='Select cloning tool'; diff --git a/admin/WebConsole/idiomas/php/eng/comandos/eliminarimagenrepo_eng.php b/admin/WebConsole/idiomas/php/eng/comandos/eliminarimagenrepo_eng.php index 8582fc92..3259b608 100644 --- a/admin/WebConsole/idiomas/php/eng/comandos/eliminarimagenrepo_eng.php +++ b/admin/WebConsole/idiomas/php/eng/comandos/eliminarimagenrepo_eng.php @@ -4,19 +4,19 @@ // Php language file: eliminarimagenrepositorio_eng.php (Comandos) // Language: English //________________________________________________________________________________________________________ - $TbMsg=array(); + if (empty($TbMsg)) $TbMsg=array(); $TbMsg[0]='Image creation'; $TbMsg[1]='Computer features'; $TbMsg[2]='Name'; $TbMsg[3]='IP Address'; $TbMsg[4]='MAC Address'; - $TbMsg[5]='Delete Image from Repository'; + $TbMsg[5]='Deleting Image from Repository'; $TbMsg[6]='Data to supply'; $TbMsg[7]='Available Images'; $TbMsg[8]='Par'; $TbMsg[9]='OS name'; $TbMsg[10]='----------- Image name -----------'; - $TbMsg[11]='Nº'; + $TbMsg[11]='No.'; $TbMsg[12]='Mark'; $TbMsg[13]='Size'; $TbMsg[14]='Locked Image'; @@ -31,11 +31,11 @@ $TbMsg[23]='Version Limitations 1.5'; $TbMsg[24]='Deleting Image is allowed if Repository and Web server are hosted on the same server'; $TbMsg[25]='NOT Created'; - $TbMsg[26]='Delete Image object'; + $TbMsg[26]='Deleting Image object'; $TbMsg[27]='Type'; $TbMsg[28]='View Full Repository'; $TbMsg[29]='View Organizational Unit'; $TbMsg[30]='Organizational Unit'; $TbMsg[31]='Archive'; $TbMsg[32]='Directory'; - $TbMsg[33]='WARNING: Image is hosted in a directory that does not match with the organizational unit.' + $TbMsg[33]='WARNING: Image is hosted in a directory that does not match with the organizational unit.'; diff --git a/admin/WebConsole/idiomas/php/eng/comandos/particionaryformatear_eng.php b/admin/WebConsole/idiomas/php/eng/comandos/particionaryformatear_eng.php index 47003e15..d5c979e5 100644 --- a/admin/WebConsole/idiomas/php/eng/comandos/particionaryformatear_eng.php +++ b/admin/WebConsole/idiomas/php/eng/comandos/particionaryformatear_eng.php @@ -4,7 +4,7 @@ // Php language file: particionaryformatear_eng.php (Comandos) // Language: English //________________________________________________________________________________________________________ - $TbMsg=array(); + if(empty($TbMsg)) $TbMsg=array(); $TbMsg[0]='Centers'; $TbMsg[1]='Group of labs'; $TbMsg[2]='Labs'; @@ -22,4 +22,4 @@ $TbMsg[14]='Format'; $TbMsg[15]='Hide'; $TbMsg[16]='Show'; - $TbMsg[17]='¡¡ Free space !!'; + $TbMsg[17]='Free space !!'; diff --git a/admin/WebConsole/idiomas/php/eng/nada_eng.php b/admin/WebConsole/idiomas/php/eng/nada_eng.php index ac5e504a..b998688d 100644 --- a/admin/WebConsole/idiomas/php/eng/nada_eng.php +++ b/admin/WebConsole/idiomas/php/eng/nada_eng.php @@ -12,3 +12,23 @@ $TbMsg[4]="System Version"; $TbMsg[5]="Browser"; $TbMsg[6]="Browser Version"; + $TbMsg["TIP"]="Consejo del dÃa"; + + // Los mensajes pueden tener imágenes asociadas llamadas images/tipOfDay_N.png + $TipOfDay=Array(); + $TipOfDay[0]="OpenGnsys client can create and restore images from all repositories in organization unit." + $TipOfDay[1]="OpenGnsys can manage UEFI computers form version 1.1.1 (Espeto)." + $TipOfDay[2]="<a href='https://opengnsys.es' class='help_menu' target='blank'>New OpenGnsys website</a> aimed at the user, where you will easily find: \n". + "<ul>\n". + " <li>Download OpenGnsys last version.</li>\n". + " <li>User Manual</li>\n". + " <li>Installation documentation</li>\n". + " <li>Success stories</li>\n". + "</ul>\n<br>\n"; + $TipOfDay[3]="OpenGnsys allows users to install several ogLive, being able to select on each computer the one that best recognizes your hardware."; + $TipOfDay[4]="OpenGnsys allows independent hosting of images from different organizational units within the same repository."; + $TipOfDay[5]="For facilitate OpenGnsys migration, there are scripts to export and import data." + $TipOfDay[6]="RemotePC combines OpenGnsys with UDS to offer remote access to classroom computers outside teaching hours."; + $TipOfDay[7]="<b>Course Online</b><p>All members of organizations that are federated in the RedIRIS Identity Service can access the course 'OpenGnsys Basic Course 1.1.0' in the <a href='https://docencia-net.cv.uma.es' class='help_menu' target='blank'>Training Platform of the Docencia-Net group.</p>"; + $TipOfDay[8]="The new OpenGnsys agent for the operating system allows users to send messages and execute commands on the computer." + $TipOfDay[9]="On the OpenGnsys web project you can find <a href='https://opengnsys.es/trac/wiki/EjemploPracticos' class='help_menu' target='blank'>practical examples and recipes</a>, such as the postconfiguration required for Windows activation with KMS."; diff --git a/admin/WebConsole/idiomas/php/eng/propiedades_aulas_eng.php b/admin/WebConsole/idiomas/php/eng/propiedades_aulas_eng.php index f308484e..9191b82d 100644 --- a/admin/WebConsole/idiomas/php/eng/propiedades_aulas_eng.php +++ b/admin/WebConsole/idiomas/php/eng/propiedades_aulas_eng.php @@ -4,7 +4,7 @@ // Php language file: propiedades_aulas_eng.php // Language: English //________________________________________________________ -$TbMsg=array(); +if (empty($TbMsg)) $TbMsg=array(); $TbMsg[0]="No Option"; $TbMsg[1]="Insert"; $TbMsg[2]="Modify"; @@ -58,4 +58,4 @@ $TbMsg['PROP_REMOTEACCESS']="Remote access"; $TbMsg['COMM_REMOTEACCESS']="allow remote access management to computers"; $TbMsg['COMM_DEFOGLIVE']="Assigned by administrator"; // Ticket-816 PCprofesor -$TbMsg['PROP_PROFCOMPUTER']="Teacher‘s computer", +$TbMsg['PROP_PROFCOMPUTER']="Teacher‘s computer"; diff --git a/admin/WebConsole/idiomas/php/eng/reservas_eng.php b/admin/WebConsole/idiomas/php/eng/reservas_eng.php index ae1b8d82..ebcd2902 100644 --- a/admin/WebConsole/idiomas/php/eng/reservas_eng.php +++ b/admin/WebConsole/idiomas/php/eng/reservas_eng.php @@ -4,9 +4,9 @@ // Pph language file: reserves_eng.php // Language: English //________________________________________________________________________________________________________ - $TbMsg=array(); + if (empty($TbMsg)) $TbMsg=array(); $TbMsg[0]='"New reservations group"'; - $TbMsg[1]='"Define new reservation"; + $TbMsg[1]='"Define new reservation"'; $TbMsg[2]='"Set reserve"'; $TbMsg[3]='"Rename"'; $TbMsg[4]='"Delete reservations group"'; diff --git a/admin/WebConsole/idiomas/php/esp/acciones_esp.php b/admin/WebConsole/idiomas/php/esp/acciones_esp.php index aa80a687..d918988e 100644 --- a/admin/WebConsole/idiomas/php/esp/acciones_esp.php +++ b/admin/WebConsole/idiomas/php/esp/acciones_esp.php @@ -39,4 +39,4 @@ $TbMsg[31]='Tareas'; $TbMsg[32]=''; $TbMsg[33]='Acciones'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/accionmenu_esp.php b/admin/WebConsole/idiomas/php/esp/accionmenu_esp.php index 176e57ea..a74091e8 100644 --- a/admin/WebConsole/idiomas/php/esp/accionmenu_esp.php +++ b/admin/WebConsole/idiomas/php/esp/accionmenu_esp.php @@ -21,4 +21,4 @@ $TbMsg[13]='Ord.'; $TbMsg[14]='(*)Para incluir o excluir alguna acción en este menú debe hacer click sobre la casilla de verificación correspondiente'; $TbMsg[15]='A'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/acercade_esp.php b/admin/WebConsole/idiomas/php/esp/acercade_esp.php index 836fe0a4..e08f4806 100644 --- a/admin/WebConsole/idiomas/php/esp/acercade_esp.php +++ b/admin/WebConsole/idiomas/php/esp/acercade_esp.php @@ -17,5 +17,5 @@ $TbMsg["CHANGE"]='Cambios en: '; $TbMsg["MANUAL"]='Manual OpenGnsys '; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/actualizar_esp.php b/admin/WebConsole/idiomas/php/esp/actualizar_esp.php index 4c60f353..1d8b75d1 100644 --- a/admin/WebConsole/idiomas/php/esp/actualizar_esp.php +++ b/admin/WebConsole/idiomas/php/esp/actualizar_esp.php @@ -7,4 +7,3 @@ $TbMsg=array(); $TbMsg[0]='Este ámbito se ha refrescado correctamente'; $TbMsg[1]='ATENCIÓN: Ha habido algún problema al refrescar el ámbito'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/administracion_esp.php b/admin/WebConsole/idiomas/php/esp/administracion_esp.php index 41e23b0a..3aba0a93 100644 --- a/admin/WebConsole/idiomas/php/esp/administracion_esp.php +++ b/admin/WebConsole/idiomas/php/esp/administracion_esp.php @@ -19,4 +19,4 @@ $TbMsg[11]='"Usuarios"'; $TbMsg[12]='"Asignar Adminstradores"'; $TbMsg[13]='"Asignar Unidades Organizativas"'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/administradores_centros_esp.php b/admin/WebConsole/idiomas/php/esp/administradores_centros_esp.php index b6fc3620..230e4772 100644 --- a/admin/WebConsole/idiomas/php/esp/administradores_centros_esp.php +++ b/admin/WebConsole/idiomas/php/esp/administradores_centros_esp.php @@ -11,4 +11,4 @@ $TbMsg[3]='Nombre del adminsitrador'; $TbMsg[4]='(*)Para incluir algún adminsitrador en esta Unidad Organizativa debe hacer click sobre la casilla de verificación correspondiente.'; $TbMsg[5]='Administradores disponibles'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/administradores_usuarios_esp.php b/admin/WebConsole/idiomas/php/esp/administradores_usuarios_esp.php index 3b802356..620e95ab 100644 --- a/admin/WebConsole/idiomas/php/esp/administradores_usuarios_esp.php +++ b/admin/WebConsole/idiomas/php/esp/administradores_usuarios_esp.php @@ -11,4 +11,4 @@ $TbMsg[3]='Nombre del centro'; $TbMsg[4]='(*)Para asignar algún centro a un administrador determinado debe hacer click sobre la casilla de verificación correspondiente.'; $TbMsg[5]='Centros disponibles'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/avisos_esp.php b/admin/WebConsole/idiomas/php/esp/avisos_esp.php index f54b994f..cfefbee2 100644 --- a/admin/WebConsole/idiomas/php/esp/avisos_esp.php +++ b/admin/WebConsole/idiomas/php/esp/avisos_esp.php @@ -14,5 +14,5 @@ $TbMsg["WARN_NOTESOFMENU"]='NOTAS: Los menús personalizados tienen mayor $TbMsg["WARN_GPT"]='AVISO: Para tabla de particiones GPT es necesario que la primera partición sea tipo EFI <br>y se recomienda un tamaño en torno a 512Mb.'; $TbMsg["WARN_SCHEDULER"]='AVISO: activar calendario de eventos de la BD para habilitar esta propiedad'; $TbMsg["WARN_SOURCE_PATH"]='AVISO: La ruta de origen sólo se utiliza en las sincronizadas tipo directorio.'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/ayuda_esp.php b/admin/WebConsole/idiomas/php/esp/ayuda_esp.php index b45d1da7..bd211813 100644 --- a/admin/WebConsole/idiomas/php/esp/ayuda_esp.php +++ b/admin/WebConsole/idiomas/php/esp/ayuda_esp.php @@ -5,11 +5,12 @@ // Idioma: Español // __________________________________________________ // Mensajes. -$TbMsg=array(); +if (empty ($TbMsg)) $TbMsg=array(); $TbMsg["HELP_TITLE"]='Ayuda'; $TbMsg["MANUAL"]='Manual de usuario'; -$TbMsg["API"]='Documentación de la API'; +$TbMsg["API"]='Documentación de la API del Motor de Clonación'; $TbMsg["CFG"]='Configuración de los clientes'; +$TbMsg["REST"]='Documentación de la API REST'; $TbMsg["CHANGELOG"]='Cambios en la versión:'; $TbMsg["USERMAIL"]='Lista de correos de usuarios'; $TbMsg["WEB"]='Web del proyecto: opengnsys.es'; diff --git a/admin/WebConsole/idiomas/php/esp/barramenu_esp.php b/admin/WebConsole/idiomas/php/esp/barramenu_esp.php index 6d863015..782a60fd 100644 --- a/admin/WebConsole/idiomas/php/esp/barramenu_esp.php +++ b/admin/WebConsole/idiomas/php/esp/barramenu_esp.php @@ -21,5 +21,5 @@ $TbMsg[14]='Buscar'; $TbMsg[15]='Netboot Avanzado'; $TbMsg[16]='Unidad Organizativa'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/boot_grub4dos_esp.php b/admin/WebConsole/idiomas/php/esp/boot_grub4dos_esp.php index 60ac8877..d7d6247c 100644 --- a/admin/WebConsole/idiomas/php/esp/boot_grub4dos_esp.php +++ b/admin/WebConsole/idiomas/php/esp/boot_grub4dos_esp.php @@ -1,53 +1,55 @@ -<?php
-//____________________________________________________________
-//
-// Fichero de idiomas php: aulas_esp.php
-// Idioma: Español
-//_____________________________________________________________
- $TbMsg=array();
- $TbMsg[0]='Nuevo';
- $TbMsg[1]='Modificar';
- $TbMsg[2]='Eliminar';
- $TbMsg[3]='Nueva Columna de Arranque';
- $TbMsg[4]='Modificar Columna de Arranque';
- $TbMsg[5]='Eliminar Columna de Arranque';
- $TbMsg[6]='Arranque Creado Correctamente';
- $TbMsg[7]='Arranque Modificado Correctamente';
- $TbMsg[8]='Arranque Eliminado Correctamente';
- $TbMsg[9]='Selecciona Columna Arranque';
- $TbMsg[10]='"Modo Usuario"';
- $TbMsg[11]='"Modo Administracion"';
- $TbMsg[12]='Nombre';
- $TbMsg[13]='Aceptar';
- $TbMsg[14]='Introduzca un Nombre de Columna';
- $TbMsg[15]='"Renombrar"';
- $TbMsg[16]='Cancelar';
- $TbMsg[17]='Plantilla';
- $TbMsg[18]='Sin Plantilla';
- $TbMsg[19]='Comandos';
- $TbMsg[20]='Descripcion';
- $TbMsg[21]='Fichero';
- $TbMsg[22]='##NO-TOCAR-ESTA-LINEA ';
- $TbMsg[23]='NO HAY COLUMNA NUEVA';
- $TbMsg[24]='Ámbito: Centros';
- $TbMsg[25]='Ámbito: Grupo de aulas';
- $TbMsg[26]='Ámbito: Grupo de ordenadores';
- $TbMsg[27]='"Incorporar ordenadores"';
- $TbMsg[28]='"Procedimientos"';
- $TbMsg[29]='"Reservas de aulas"';
- $TbMsg[30]='"Confirmadas"';
- $TbMsg[31]='"Pendientes"';
- $TbMsg[32]='"Denegadas"';
- $TbMsg[33]='"Consola remota"';
- $TbMsg[34]='"Programación reservas"';
- $TbMsg[35]='"Operadores"';
- $TbMsg[36]='"Eliminar Operador"';
- $TbMsg[37]='"Añadir nuevo Operador"';
- $TbMsg[38]='"Asistentes"';
- $TbMsg[39]='"Eco de Consola"';
- $TbMsg[40]='"NetBoot avanzado"';
- $TbMsg[41]='"Reubicar ordenadores"';
- $TbMsg[42]='Gestión Arranque Avanzado';
- $TbMsg[43]='"Guardar"';
- $TbMsg[44]='Ubicador Ordenadores';
- $TbMsg[45]='Nombre ámbito';
+<?php +//____________________________________________________________ +// +// Fichero de idiomas php: boot_grub4dos_esp.php +// Idioma: Español +//_____________________________________________________________ + if (!empty($TbMsg)) $TbMsg=array(); + $TbMsg[0]='Nuevo'; + $TbMsg[1]='Modificar'; + $TbMsg[2]='Eliminar'; + $TbMsg[3]='Nueva Columna de Arranque'; + $TbMsg[4]='Modificar Columna de Arranque'; + $TbMsg[5]='Eliminar Columna de Arranque'; + $TbMsg[6]='Arranque Creado Correctamente'; + $TbMsg[7]='Arranque Modificado Correctamente'; + $TbMsg[8]='Arranque Eliminado Correctamente'; + $TbMsg[9]='Selecciona Columna Arranque'; + $TbMsg[10]='"Modo Usuario"'; + $TbMsg[11]='"Modo Administracion"'; + $TbMsg[12]='Nombre'; + $TbMsg[13]='Aceptar'; + $TbMsg[14]='Introduzca un Nombre de Columna'; + $TbMsg[15]='"Renombrar"'; + $TbMsg[16]='Cancelar'; + $TbMsg[17]='Plantilla'; + $TbMsg[18]='Sin Plantilla'; + $TbMsg[19]='Comandos'; + $TbMsg[20]='Descripcion'; + $TbMsg[21]='Fichero'; + $TbMsg[22]='##NO-TOCAR-ESTA-LINEA '; + $TbMsg[23]='NO HAY COLUMNA NUEVA'; + $TbMsg[24]='Ãmbito: Centros'; + $TbMsg[25]='Ãmbito: Grupo de aulas'; + $TbMsg[26]='Ãmbito: Grupo de ordenadores'; + $TbMsg[27]='"Incorporar ordenadores"'; + $TbMsg[28]='"Procedimientos"'; + $TbMsg[29]='"Reservas de aulas"'; + $TbMsg[30]='"Confirmadas"'; + $TbMsg[31]='"Pendientes"'; + $TbMsg[32]='"Denegadas"'; + $TbMsg[33]='"Consola remota"'; + $TbMsg[34]='"Programación reservas"'; + $TbMsg[35]='"Operadores"'; + $TbMsg[36]='"Eliminar Operador"'; + $TbMsg[37]='"Añadir nuevo Operador"'; + $TbMsg[38]='"Asistentes"'; + $TbMsg[39]='"Eco de Consola"'; + $TbMsg[40]='"NetBoot avanzado"'; + $TbMsg[41]='"Reubicar ordenadores"'; + $TbMsg[42]='Gestión Arranque Avanzado'; + $TbMsg[43]='"Guardar"'; + $TbMsg[44]='Ubicador Ordenadores'; + $TbMsg[45]='Nombre ámbito'; + $TbMsg["UEFI"]='AVISO: Hay plantillas PXE que sólo son compatibles con un tipo de firmware, uefi o bios.<br>Al elegir estas plantillas la otra opción quedará configurada por defecto'; + $TbMsg["ERR_DUPLICADO"]='ERROR: El nombre o la descripción de la plantilla están duplicados'; diff --git a/admin/WebConsole/idiomas/php/esp/buscar_esp.php b/admin/WebConsole/idiomas/php/esp/buscar_esp.php index 82281b92..a7855fde 100644 --- a/admin/WebConsole/idiomas/php/esp/buscar_esp.php +++ b/admin/WebConsole/idiomas/php/esp/buscar_esp.php @@ -17,5 +17,5 @@ $TbMsg["SEARCH_NOMATCHES"]="No se encuentran resultados"; $TbMsg["SEARCH_NOVALUE"]="Debe introducir un valor para el criterio de búsqueda"; $TbMsg["SEARCH_PROFESSOR"]="Ordenadores de profesor"; $TbMsg["SEARCH_NOREPO"]="Ordenadores sin repositorio"; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/colasacciones_esp.php b/admin/WebConsole/idiomas/php/esp/colasacciones_esp.php index 61d30f59..2872a44a 100644 --- a/admin/WebConsole/idiomas/php/esp/colasacciones_esp.php +++ b/admin/WebConsole/idiomas/php/esp/colasacciones_esp.php @@ -83,4 +83,4 @@ $TbMsg=array(); $TbMsg[59]='Ãmbito:'; $TbMsg[60]='Todos'; $TbMsg[61]='Todas'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/colasreservas_esp.php b/admin/WebConsole/idiomas/php/esp/colasreservas_esp.php index 47cc462e..8cc63c31 100644 --- a/admin/WebConsole/idiomas/php/esp/colasreservas_esp.php +++ b/admin/WebConsole/idiomas/php/esp/colasreservas_esp.php @@ -50,4 +50,3 @@ $TbMsg=array(); $TbMsg[28]="Tarea previa"; $TbMsg[29]="Trabajo previo"; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/comandos/apagar_esp.php b/admin/WebConsole/idiomas/php/esp/comandos/apagar_esp.php index ed52489e..8cd1519c 100644 --- a/admin/WebConsole/idiomas/php/esp/comandos/apagar_esp.php +++ b/admin/WebConsole/idiomas/php/esp/comandos/apagar_esp.php @@ -13,4 +13,3 @@ $TbMsg[5]='Apagar ordenadores'; $TbMsg[6]='Ãmbito'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/comandos/arrancar_esp.php b/admin/WebConsole/idiomas/php/esp/comandos/arrancar_esp.php index 0fdae000..017f0a38 100644 --- a/admin/WebConsole/idiomas/php/esp/comandos/arrancar_esp.php +++ b/admin/WebConsole/idiomas/php/esp/comandos/arrancar_esp.php @@ -17,4 +17,3 @@ $TbMsg[9]='Unicast'; $TbMsg[10]='Método de arranque'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/comandos/comando_esp.php b/admin/WebConsole/idiomas/php/esp/comandos/comando_esp.php index 80adc851..dfe93134 100644 --- a/admin/WebConsole/idiomas/php/esp/comandos/comando_esp.php +++ b/admin/WebConsole/idiomas/php/esp/comandos/comando_esp.php @@ -13,4 +13,4 @@ $TbMsg[5]='Apagar ordenadores'; $TbMsg[6]='Ãmbito'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/comandos/configurar_esp.php b/admin/WebConsole/idiomas/php/esp/comandos/configurar_esp.php index 49bfc20b..a0f93e72 100644 --- a/admin/WebConsole/idiomas/php/esp/comandos/configurar_esp.php +++ b/admin/WebConsole/idiomas/php/esp/comandos/configurar_esp.php @@ -46,4 +46,4 @@ $TbMsg[34]='Perfil software'; $TbMsg["HD"]='Disco'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/comandos/conmutar_esp.php b/admin/WebConsole/idiomas/php/esp/comandos/conmutar_esp.php index 67ab7a7c..2bf01b26 100644 --- a/admin/WebConsole/idiomas/php/esp/comandos/conmutar_esp.php +++ b/admin/WebConsole/idiomas/php/esp/comandos/conmutar_esp.php @@ -13,4 +13,3 @@ $TbMsg[5]='Conmutar ordenadores'; $TbMsg[6]='Ãmbito'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/comandos/crearimagenbasica_esp.php b/admin/WebConsole/idiomas/php/esp/comandos/crearimagenbasica_esp.php index 5ee1bc70..4ed4cfb2 100644 --- a/admin/WebConsole/idiomas/php/esp/comandos/crearimagenbasica_esp.php +++ b/admin/WebConsole/idiomas/php/esp/comandos/crearimagenbasica_esp.php @@ -22,4 +22,4 @@ $TbMsg[14]='Copiar Imagen en cache'; $TbMsg[15]='Borrarla previamente de la cache'; $TbMsg[16]='No borrar archivos en destino'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/comandos/crearperfilsoftware_esp.php b/admin/WebConsole/idiomas/php/esp/comandos/crearperfilsoftware_esp.php index fa67edff..82b51ed4 100644 --- a/admin/WebConsole/idiomas/php/esp/comandos/crearperfilsoftware_esp.php +++ b/admin/WebConsole/idiomas/php/esp/comandos/crearperfilsoftware_esp.php @@ -17,4 +17,4 @@ $TbMsg[9]='Nombre S.O.'; $TbMsg[10]='Descripción de la Imagen '; $TbMsg[11]='Repositorio de destino'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/comandos/crearsoftincremental_esp.php b/admin/WebConsole/idiomas/php/esp/comandos/crearsoftincremental_esp.php index d5778d84..8a286109 100644 --- a/admin/WebConsole/idiomas/php/esp/comandos/crearsoftincremental_esp.php +++ b/admin/WebConsole/idiomas/php/esp/comandos/crearsoftincremental_esp.php @@ -22,4 +22,4 @@ $TbMsg[14]='Copiar Incremental en cache'; $TbMsg[15]='Borrarla previamente de la cache'; $TbMsg[16]='No borrar archivos en destino'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/comandos/ejecutarscripts_esp.php b/admin/WebConsole/idiomas/php/esp/comandos/ejecutarscripts_esp.php index 5f823ab2..ad4db994 100644 --- a/admin/WebConsole/idiomas/php/esp/comandos/ejecutarscripts_esp.php +++ b/admin/WebConsole/idiomas/php/esp/comandos/ejecutarscripts_esp.php @@ -58,5 +58,5 @@ $TbMsg["WCRP35"]='Elige el metodo de transferencia'; $TbMsg["WCRP36"]='Elige herramienta de clonación:'; $TbMsg["WCRP37"]='Elige compresor para la herramienta de clonación:'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/comandos/eliminarimagencache_esp.php b/admin/WebConsole/idiomas/php/esp/comandos/eliminarimagencache_esp.php index 2107a4f8..557785c2 100644 --- a/admin/WebConsole/idiomas/php/esp/comandos/eliminarimagencache_esp.php +++ b/admin/WebConsole/idiomas/php/esp/comandos/eliminarimagencache_esp.php @@ -26,4 +26,4 @@ $TbMsg[18]='Tamaño de la imagen disponible si Repositorio y Servidor Web alojados en el mismo Servidor'; $TbMsg[19]='Tipo'; $TbMsg["CONFIG_NOCONFIG"]='Sin configuración: cliente no conectado al servidor.'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/comandos/eliminarimagenrepo_esp.php b/admin/WebConsole/idiomas/php/esp/comandos/eliminarimagenrepo_esp.php index d63711a9..e9b9950f 100644 --- a/admin/WebConsole/idiomas/php/esp/comandos/eliminarimagenrepo_esp.php +++ b/admin/WebConsole/idiomas/php/esp/comandos/eliminarimagenrepo_esp.php @@ -39,4 +39,4 @@ $TbMsg[31]='Archivo'; $TbMsg[32]='Directorio'; $TbMsg[33]='AVISO: La imagen está situada en un directorio que no corresponde a la unidad organizativa.'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/comandos/enviarmensaje_esp.php b/admin/WebConsole/idiomas/php/esp/comandos/enviarmensaje_esp.php index 1e24f37f..1bb76fad 100644 --- a/admin/WebConsole/idiomas/php/esp/comandos/enviarmensaje_esp.php +++ b/admin/WebConsole/idiomas/php/esp/comandos/enviarmensaje_esp.php @@ -20,5 +20,5 @@ $TbMsg["OGAGENT"]="AVISO: Sólo se puede utilizar en los equipos que se haya iniciado la sesión <br>y tengan instalado en nuevo agente de OpenGnsys."; $TbMsg["OPTION"]="AVISO: El nuevo agente, en esta versión, no permite utilizar la cola de acciones."; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/comandos/gestor_ejecutarscripts_esp.php b/admin/WebConsole/idiomas/php/esp/comandos/gestor_ejecutarscripts_esp.php index 1b8386e5..f33d2e1f 100644 --- a/admin/WebConsole/idiomas/php/esp/comandos/gestor_ejecutarscripts_esp.php +++ b/admin/WebConsole/idiomas/php/esp/comandos/gestor_ejecutarscripts_esp.php @@ -10,4 +10,3 @@ $TbMsg[3]='"ATENCIÓN: El fichero no tiene la extensión .rbc"'; $TbMsg[4]='"ATENCIÓN: El fichero no contiene código Rembo-C para ejecutar"'; $TbMsg[5]='"ATENCIÓN: Hay algún problema para salvar el fichero de script"'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/comandos/iniciarsesion_esp.php b/admin/WebConsole/idiomas/php/esp/comandos/iniciarsesion_esp.php index e0ddaf0e..10e664bc 100644 --- a/admin/WebConsole/idiomas/php/esp/comandos/iniciarsesion_esp.php +++ b/admin/WebConsole/idiomas/php/esp/comandos/iniciarsesion_esp.php @@ -16,4 +16,4 @@ $TbMsg[8]='Par'; $TbMsg[9]='Nombre S.O.'; $TbMsg[10]='Nombre de la Imagen '; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/comandos/inventariohardware_esp.php b/admin/WebConsole/idiomas/php/esp/comandos/inventariohardware_esp.php index ee14ae66..6d2394c0 100644 --- a/admin/WebConsole/idiomas/php/esp/comandos/inventariohardware_esp.php +++ b/admin/WebConsole/idiomas/php/esp/comandos/inventariohardware_esp.php @@ -13,4 +13,4 @@ $TbMsg[5]='Inventario Hardware'; $TbMsg[6]='Ãmbito'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/comandos/inventariosoftware_esp.php b/admin/WebConsole/idiomas/php/esp/comandos/inventariosoftware_esp.php index b26bada7..574bf332 100644 --- a/admin/WebConsole/idiomas/php/esp/comandos/inventariosoftware_esp.php +++ b/admin/WebConsole/idiomas/php/esp/comandos/inventariosoftware_esp.php @@ -15,4 +15,4 @@ $TbMsg[7]='Datos a suministrar'; $TbMsg[8]='Par'; $TbMsg[9]='Nombre S.O.'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/comandos/mensajes_esp.php b/admin/WebConsole/idiomas/php/esp/comandos/mensajes_esp.php index 391a39e4..3ab35fe2 100644 --- a/admin/WebConsole/idiomas/php/esp/comandos/mensajes_esp.php +++ b/admin/WebConsole/idiomas/php/esp/comandos/mensajes_esp.php @@ -25,5 +25,5 @@ $TbMsg["COMMAND_RestaurarSoftIncremental"]="Restaurar Imagen Incremental"; $TbMsg["WIZARD_Asistente Particionado"]="Asistente de particionado"; $TbMsg["WIZARD_Asistente Clonacion Particiones Remotas"]="Clonar particiones remotas"; $TbMsg["WIZARD_Asistente Deploy de Imagenes"]="Deploy de imagenes"; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/comandos/opcionesacciones_esp.php b/admin/WebConsole/idiomas/php/esp/comandos/opcionesacciones_esp.php index 469b7bbc..d2f123ed 100644 --- a/admin/WebConsole/idiomas/php/esp/comandos/opcionesacciones_esp.php +++ b/admin/WebConsole/idiomas/php/esp/comandos/opcionesacciones_esp.php @@ -18,4 +18,3 @@ $TbMsgAux[10]='Guardar como una tarea nueva' ; $TbMsgAux[11]='Incluir en una tarea existente' ; $TbMsgAux[12]='Orden de ejecución'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/comandos/particionaryformatear_esp.php b/admin/WebConsole/idiomas/php/esp/comandos/particionaryformatear_esp.php index 55d0e2f6..71a4acce 100644 --- a/admin/WebConsole/idiomas/php/esp/comandos/particionaryformatear_esp.php +++ b/admin/WebConsole/idiomas/php/esp/comandos/particionaryformatear_esp.php @@ -23,4 +23,3 @@ $TbMsg[15]='Ocultar'; $TbMsg[16]='Mostrar'; $TbMsg[17]='¡¡ Espacio libre !!'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/comandos/reiniciar_esp.php b/admin/WebConsole/idiomas/php/esp/comandos/reiniciar_esp.php index f523fa5f..8acb26c1 100644 --- a/admin/WebConsole/idiomas/php/esp/comandos/reiniciar_esp.php +++ b/admin/WebConsole/idiomas/php/esp/comandos/reiniciar_esp.php @@ -13,4 +13,3 @@ $TbMsg[5]='Reiniciar ordenadores'; $TbMsg[6]='Ãmbito'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/comandos/rembooffline_esp.php b/admin/WebConsole/idiomas/php/esp/comandos/rembooffline_esp.php index 1c437219..1caefb80 100644 --- a/admin/WebConsole/idiomas/php/esp/comandos/rembooffline_esp.php +++ b/admin/WebConsole/idiomas/php/esp/comandos/rembooffline_esp.php @@ -13,4 +13,3 @@ $TbMsg[5]='Activar Rembo OffLine'; $TbMsg[6]='Ãmbito'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/comandos/restaurarimagen_esp.php b/admin/WebConsole/idiomas/php/esp/comandos/restaurarimagen_esp.php index 7c05b974..d0cd16c7 100644 --- a/admin/WebConsole/idiomas/php/esp/comandos/restaurarimagen_esp.php +++ b/admin/WebConsole/idiomas/php/esp/comandos/restaurarimagen_esp.php @@ -42,4 +42,4 @@ $TbMsg[32]='Tamaño de partición'; $TbMsg[33]='Nombre de la Imagen '; $TbMsg[34]='Perfil software'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/comandos/restaurarimagenbasica_esp.php b/admin/WebConsole/idiomas/php/esp/comandos/restaurarimagenbasica_esp.php index 598351fe..d34adfd5 100644 --- a/admin/WebConsole/idiomas/php/esp/comandos/restaurarimagenbasica_esp.php +++ b/admin/WebConsole/idiomas/php/esp/comandos/restaurarimagenbasica_esp.php @@ -50,4 +50,4 @@ $TbMsg[39]='Método'; $TbMsg[40]='Unicast'; $TbMsg[41]='Multicast'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/comandos/restaurarsoftincremental_esp.php b/admin/WebConsole/idiomas/php/esp/comandos/restaurarsoftincremental_esp.php index e7b63c0a..fb2f9999 100644 --- a/admin/WebConsole/idiomas/php/esp/comandos/restaurarsoftincremental_esp.php +++ b/admin/WebConsole/idiomas/php/esp/comandos/restaurarsoftincremental_esp.php @@ -48,4 +48,4 @@ $TbMsg[37]='Borrarla previamente de la cache'; $TbMsg[38]='Software Incremental'; $TbMsg[39]='No borrar archivos en destino'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/comandos/tomaconfiguracion_esp.php b/admin/WebConsole/idiomas/php/esp/comandos/tomaconfiguracion_esp.php index a11a381a..2316c610 100644 --- a/admin/WebConsole/idiomas/php/esp/comandos/tomaconfiguracion_esp.php +++ b/admin/WebConsole/idiomas/php/esp/comandos/tomaconfiguracion_esp.php @@ -13,4 +13,3 @@ $TbMsg[5]='Tomar configuración'; $TbMsg[6]='Ãmbito'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/configuraciones_esp.php b/admin/WebConsole/idiomas/php/esp/configuraciones_esp.php index 4571d8ee..ac830a8d 100644 --- a/admin/WebConsole/idiomas/php/esp/configuraciones_esp.php +++ b/admin/WebConsole/idiomas/php/esp/configuraciones_esp.php @@ -60,5 +60,5 @@ $TbMsg[44]='Equipo sin perfil de hardware'; $TbMsg[45]='Agregue perfil para obtener datos'; $TbMsg[495]='Fecha/Caché'; $TbMsg[4951]='Caché libre'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/conmutar_esp.php b/admin/WebConsole/idiomas/php/esp/conmutar_esp.php index cdb455e9..3aab0b93 100644 --- a/admin/WebConsole/idiomas/php/esp/conmutar_esp.php +++ b/admin/WebConsole/idiomas/php/esp/conmutar_esp.php @@ -7,4 +7,3 @@ $TbMsg=array(); $TbMsg[0]='Este ámbito ha conmutado correctamente'; $TbMsg[1]='ATENCIÓN: Ha habido algún problema al conmutar el ámbito'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/consolaremota_esp.php b/admin/WebConsole/idiomas/php/esp/consolaremota_esp.php index c8f54c24..5e42f928 100644 --- a/admin/WebConsole/idiomas/php/esp/consolaremota_esp.php +++ b/admin/WebConsole/idiomas/php/esp/consolaremota_esp.php @@ -21,4 +21,4 @@ $TbMsg[13]='ATENCIÓN.- Ha elegido un ámbito de aplicación para la consola remota distinto al de "ordenador". <BR>Para visulizar el eco de cualquier cliente pulse sobre él con el botón secundario y elija "Eco de consola"; <BR>Se abrirá una ventana que se referescará automáticamente donde podrá hacer un seguiento del comando/script introducido'; $TbMsg[14]='...Espere por favor, se está enviando el código del script'; $TbMsg[15]='...El código del script se ha enviado, para ver la salida de cualquier ordenador elija "Eco de Consola"'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/descargas_esp.php b/admin/WebConsole/idiomas/php/esp/descargas_esp.php index fa4898ff..0c210427 100644 --- a/admin/WebConsole/idiomas/php/esp/descargas_esp.php +++ b/admin/WebConsole/idiomas/php/esp/descargas_esp.php @@ -10,4 +10,4 @@ $TbMsg['DOWNLOADS']="Descargas disponibles"; $TbMsg['NOFILES']="No hay ficheros disponibles"; // Aviso: no dejar ningún carácter fuera del código PHP. -?> + diff --git a/admin/WebConsole/idiomas/php/esp/ecoremoto_esp.php b/admin/WebConsole/idiomas/php/esp/ecoremoto_esp.php index d291a1ec..70529a47 100644 --- a/admin/WebConsole/idiomas/php/esp/ecoremoto_esp.php +++ b/admin/WebConsole/idiomas/php/esp/ecoremoto_esp.php @@ -18,4 +18,4 @@ $TbMsg[10]='ATENCIÓN: Ha habido algún problema al enviar una petición de eco consola remota a este ámbito'; $TbMsg[11]='... espere por favor.'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/ejecutaracciones_esp.php b/admin/WebConsole/idiomas/php/esp/ejecutaracciones_esp.php index 7007ecd0..c76d7773 100644 --- a/admin/WebConsole/idiomas/php/esp/ejecutaracciones_esp.php +++ b/admin/WebConsole/idiomas/php/esp/ejecutaracciones_esp.php @@ -16,4 +16,4 @@ $TbMsg[8]='Procedimientos'; $TbMsg[9]='"Ejecutar procedimiento"'; $TbMsg[10]='"Incluir como autoexec"'; - ?> + diff --git a/admin/WebConsole/idiomas/php/esp/estados_esp.php b/admin/WebConsole/idiomas/php/esp/estados_esp.php index 75adfdf4..cf911251 100644 --- a/admin/WebConsole/idiomas/php/esp/estados_esp.php +++ b/admin/WebConsole/idiomas/php/esp/estados_esp.php @@ -17,5 +17,5 @@ $TbMsg["STATUS_LNXS"]="Sesión GNU/Linux"; $TbMsg["STATUS_OSX"]="macOS"; $TbMsg["STATUS_WIN"]="Windows"; $TbMsg["STATUS_WINS"]="Sesión Windows"; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/gestor_ordenadores_esp.php b/admin/WebConsole/idiomas/php/esp/gestor_ordenadores_esp.php index 2946a0c4..95330ca5 100644 --- a/admin/WebConsole/idiomas/php/esp/gestor_ordenadores_esp.php +++ b/admin/WebConsole/idiomas/php/esp/gestor_ordenadores_esp.php @@ -6,5 +6,5 @@ //______________________________________________________________ $TbMsg=array(); $TbMsg["DUPLICADO"]="Error al insertar el ordenador, se han encontrado datos duplicados: "; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/hardwares_esp.php b/admin/WebConsole/idiomas/php/esp/hardwares_esp.php index 070cbe82..fca4ae44 100644 --- a/admin/WebConsole/idiomas/php/esp/hardwares_esp.php +++ b/admin/WebConsole/idiomas/php/esp/hardwares_esp.php @@ -26,5 +26,5 @@ $TbMsg[18]='"Tipos de hardware"'; $TbMsg[19]='"Componentes hardware"'; $TbMsg[20]='"Perfiles hardware"'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/iconos_esp.php b/admin/WebConsole/idiomas/php/esp/iconos_esp.php index ef11d99c..d25dfe9d 100644 --- a/admin/WebConsole/idiomas/php/esp/iconos_esp.php +++ b/admin/WebConsole/idiomas/php/esp/iconos_esp.php @@ -55,5 +55,5 @@ $TbMsg["Particionar"]='Particionar'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/imagenincremental_esp.php b/admin/WebConsole/idiomas/php/esp/imagenincremental_esp.php index 8e934497..c0ae8e77 100644 --- a/admin/WebConsole/idiomas/php/esp/imagenincremental_esp.php +++ b/admin/WebConsole/idiomas/php/esp/imagenincremental_esp.php @@ -10,4 +10,3 @@ $TbMsg[2]='Imagen'; $TbMsg[3]='Nombre del software incremental'; $TbMsg[4]='(*)Para incluir algún software incremental en esta imagen debe hacer click sobre la casilla de verificación correspondiente.'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/inclusionacciones_esp.php b/admin/WebConsole/idiomas/php/esp/inclusionacciones_esp.php index fd834a03..c46969e0 100644 --- a/admin/WebConsole/idiomas/php/esp/inclusionacciones_esp.php +++ b/admin/WebConsole/idiomas/php/esp/inclusionacciones_esp.php @@ -18,4 +18,4 @@ $TbMsg[8]='Procedimientos disponibles'; $TbMsg[9]='Tareas disponibles'; $TbMsg[10]='Parámetros'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/incorporaordenadores_esp.php b/admin/WebConsole/idiomas/php/esp/incorporaordenadores_esp.php index 533490ae..c339f990 100644 --- a/admin/WebConsole/idiomas/php/esp/incorporaordenadores_esp.php +++ b/admin/WebConsole/idiomas/php/esp/incorporaordenadores_esp.php @@ -13,4 +13,4 @@ $TbMsg[4]='ATENCIÓN: Ha ocurrido alǵun problema en el proceso de incorporación de ordenadores'; $TbMsg[5]='ATENCIÓN: Se han intentado incorporar ordenadores que ya existen'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/incrementalcomponente_soft_esp.php b/admin/WebConsole/idiomas/php/esp/incrementalcomponente_soft_esp.php index ae73e175..6ddce12b 100644 --- a/admin/WebConsole/idiomas/php/esp/incrementalcomponente_soft_esp.php +++ b/admin/WebConsole/idiomas/php/esp/incrementalcomponente_soft_esp.php @@ -10,4 +10,3 @@ $TbMsg[2]='Software incremental'; $TbMsg[3]='Nombre del componente'; $TbMsg[4]='(*)Para incluir algún componente en este software incremental debe hacer click sobre la casilla de verificación correspondiente.'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/informacion_acciones_esp.php b/admin/WebConsole/idiomas/php/esp/informacion_acciones_esp.php index 00d0b0b0..4f1c52f1 100644 --- a/admin/WebConsole/idiomas/php/esp/informacion_acciones_esp.php +++ b/admin/WebConsole/idiomas/php/esp/informacion_acciones_esp.php @@ -12,4 +12,4 @@ $TbMsg[4]='Información sobre Tareas'; $TbMsg[5]='Información'; $TbMsg[6]='Sin parámetros'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/informacion_imagenes_esp.php b/admin/WebConsole/idiomas/php/esp/informacion_imagenes_esp.php index 2ff8c16d..4618a19a 100644 --- a/admin/WebConsole/idiomas/php/esp/informacion_imagenes_esp.php +++ b/admin/WebConsole/idiomas/php/esp/informacion_imagenes_esp.php @@ -15,4 +15,4 @@ $TbMsg[6]='Perfil Software'; $TbMsg[7]='Ordenadores con esta imagen'; $TbMsg[8]='Partición'; $TbMsg[9]='Comentarios'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/informacion_incrementales_esp.php b/admin/WebConsole/idiomas/php/esp/informacion_incrementales_esp.php index e72f55ea..4f01f74b 100644 --- a/admin/WebConsole/idiomas/php/esp/informacion_incrementales_esp.php +++ b/admin/WebConsole/idiomas/php/esp/informacion_incrementales_esp.php @@ -12,4 +12,3 @@ $TbMsg[4]='Componentes software'; $TbMsg[5]='Perfiles Combinables'; $TbMsg[6]='Perfiles Hardware soportados'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/informacion_menus_esp.php b/admin/WebConsole/idiomas/php/esp/informacion_menus_esp.php index 1c51b61d..ca723efc 100644 --- a/admin/WebConsole/idiomas/php/esp/informacion_menus_esp.php +++ b/admin/WebConsole/idiomas/php/esp/informacion_menus_esp.php @@ -28,4 +28,4 @@ $TbMsg[20]='Código del item'; $TbMsg[21]='Ordenadores con este menú'; $TbMsg[22]='Items'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/informacion_perfileshard_esp.php b/admin/WebConsole/idiomas/php/esp/informacion_perfileshard_esp.php index c5f034cb..1e3c435b 100644 --- a/admin/WebConsole/idiomas/php/esp/informacion_perfileshard_esp.php +++ b/admin/WebConsole/idiomas/php/esp/informacion_perfileshard_esp.php @@ -16,4 +16,4 @@ $TbMsg[8]='Comentarios'; $TbMsg[9]='Partición'; $TbMsg[10]='Comentarios'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/informacion_perfilessoft_esp.php b/admin/WebConsole/idiomas/php/esp/informacion_perfilessoft_esp.php index 48ff637c..332f7cb0 100644 --- a/admin/WebConsole/idiomas/php/esp/informacion_perfilessoft_esp.php +++ b/admin/WebConsole/idiomas/php/esp/informacion_perfilessoft_esp.php @@ -14,4 +14,4 @@ $TbMsg[6]='Componentes software'; $TbMsg[7]='Ordenades con este perfil'; $TbMsg[8]='Comentarios'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/informacion_procedimientos_esp.php b/admin/WebConsole/idiomas/php/esp/informacion_procedimientos_esp.php index 52774eaa..13c112a1 100644 --- a/admin/WebConsole/idiomas/php/esp/informacion_procedimientos_esp.php +++ b/admin/WebConsole/idiomas/php/esp/informacion_procedimientos_esp.php @@ -8,4 +8,3 @@ $TbMsg[0]='Parámetros de los Comandos del Procedimiento'; $TbMsg[1]='Parámetro'; $TbMsg[2]='Valor'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/informacion_repositorio_esp.php b/admin/WebConsole/idiomas/php/esp/informacion_repositorio_esp.php index ccfd489d..0d8601bb 100644 --- a/admin/WebConsole/idiomas/php/esp/informacion_repositorio_esp.php +++ b/admin/WebConsole/idiomas/php/esp/informacion_repositorio_esp.php @@ -15,5 +15,5 @@ $TbMsg["IMGTYPE2"]='sincronizada bísica'; $TbMsg["IMGTYPE3"]='sincronizada incremental'; $TbMsg[6]='Ordenadores asigandos'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/informacion_tareas_esp.php b/admin/WebConsole/idiomas/php/esp/informacion_tareas_esp.php index 2e27a880..7651deb4 100644 --- a/admin/WebConsole/idiomas/php/esp/informacion_tareas_esp.php +++ b/admin/WebConsole/idiomas/php/esp/informacion_tareas_esp.php @@ -10,4 +10,3 @@ $TbMsg[2]='Valor'; $TbMsg[3]='Ãmbito'; $TbMsg[4]='Nombre'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/menucliente_esp.php b/admin/WebConsole/idiomas/php/esp/menucliente_esp.php index 8a532162..5248ca80 100644 --- a/admin/WebConsole/idiomas/php/esp/menucliente_esp.php +++ b/admin/WebConsole/idiomas/php/esp/menucliente_esp.php @@ -9,4 +9,4 @@ $TbMsg[1]='"Dirección IP"'; $TbMsg[2]='NO SE HA DETECTADO NINGÚN MENÚ PARA ESTE CLIENTE'; $TbMsg[3]='Apagar el equipo'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/menus_esp.php b/admin/WebConsole/idiomas/php/esp/menus_esp.php index 5f7acc40..4b45117b 100644 --- a/admin/WebConsole/idiomas/php/esp/menus_esp.php +++ b/admin/WebConsole/idiomas/php/esp/menus_esp.php @@ -16,4 +16,4 @@ $TbMsg[8]='"Eliminar menú"'; $TbMsg[9]='"Menús"'; $TbMsg[10]='"Gestionar Items"'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/msgbrowser_esp.php b/admin/WebConsole/idiomas/php/esp/msgbrowser_esp.php index 7d3d8625..0ffdb4da 100644 --- a/admin/WebConsole/idiomas/php/esp/msgbrowser_esp.php +++ b/admin/WebConsole/idiomas/php/esp/msgbrowser_esp.php @@ -44,4 +44,4 @@ $TbMsg=array(); $TbMsg[34]='El proceso de restauración de imagen básica ha terminado correctamente'; $TbMsg[35]='ATENCIÓN, ha habido algún error en el proceso de restauración de imagen básica'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/nada_esp.php b/admin/WebConsole/idiomas/php/esp/nada_esp.php index 24ffedbe..fd77e246 100644 --- a/admin/WebConsole/idiomas/php/esp/nada_esp.php +++ b/admin/WebConsole/idiomas/php/esp/nada_esp.php @@ -12,5 +12,23 @@ $TbMsg[4]="Versión Sistema"; $TbMsg[5]="Navegador"; $TbMsg[6]="Versión Navegador"; + $TbMsg["TIP"]="Consejo del dÃa"; -?>
\ No newline at end of file + // Los mensajes pueden tener imágenes asociadas llamadas images/tipOfDay_N.png + $TipOfDay=Array(); + $TipOfDay[0]="El cliente de OpenGnsys puede restaurar y crear imágenes en todos los repositorios definidos en la unidad organizativa."; + $TipOfDay[1]="OpenGnsys permite gestionar equipos UEFI desde la versión 1.1.1 (Espeto)."; + $TipOfDay[2]="<a href='https://opengnsys.es' class='help_menu' target='blank'>Nueva web de OpenGnsys</a> dirigida a los usuarios, donde encontrarán fácilmente: \n". + "<ul>\n". + " <li>Descarga de la última versión de Opengnsys</li>\n". + " <li>Manual de usuario</li>\n". + " <li>Documentación de la instalación</li>\n". + " <li>Casos de éxito</li>\n". + "</ul>\n<br>\n"; + $TipOfDay[3]="OpenGnsys permite instalar varios ogLive, pudiendo seleccionar en cada equipo el que mejor reconozca su hardware."; + $TipOfDay[4]="OpenGnsys permite independizar el alojamiento de las imágenes de distintas unidades organizativas dentro de un mismo repositorio."; + $TipOfDay[5]="Para facilitar la migración de un servidor existen scripts para exportar e importar los datos de OpenGnsys."; + $TipOfDay[6]="RemotePC conjuga OpenGnsys con UDS para ofrecer acceso remoto a los equipos de las aulas fuera del horario de docencia."; + $TipOfDay[7]="<b>Curso Online</b><p>Todos los miembros de organizaciones que estén federadas en el Servicio de Identidad de RedIRIS pueden acceder al curso 'Curso Básico de OpenGnsys 1.1.0' en la <a href='https://docencia-net.cv.uma.es' class='help_menu' target='blank'>Plataforma de Formación del Grupo Docencia-Net.</p>"; + $TipOfDay[8]="El nuevo agente de OpenGnsys para el sistema operativo permite mandar mensajes a los usuarios y ejecutar comandos sobre el equipo."; + $TipOfDay[9]="En la web de OpenGnsys puedes encontrar <a href='https://opengnsys.es/trac/wiki/EjemploPracticos' class='help_menu' target='blank'>ejemplos prácticos y recetas</a>, como por ejemplo la postconfiguración necesario para la activación de Windows con KMS."; diff --git a/admin/WebConsole/idiomas/php/esp/perfilcomponente_hard_esp.php b/admin/WebConsole/idiomas/php/esp/perfilcomponente_hard_esp.php index e40db5fa..28841d57 100644 --- a/admin/WebConsole/idiomas/php/esp/perfilcomponente_hard_esp.php +++ b/admin/WebConsole/idiomas/php/esp/perfilcomponente_hard_esp.php @@ -10,4 +10,3 @@ $TbMsg[2]='Perfil hardware'; $TbMsg[3]='Nombre del component e'; $TbMsg[4]='(*)Para incluir algún componente en este perfil debe hacer click sobre la casilla de verificación correspondiente.'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/perfilcomponente_soft_esp.php b/admin/WebConsole/idiomas/php/esp/perfilcomponente_soft_esp.php index d70a6dfd..24ee8b01 100644 --- a/admin/WebConsole/idiomas/php/esp/perfilcomponente_soft_esp.php +++ b/admin/WebConsole/idiomas/php/esp/perfilcomponente_soft_esp.php @@ -10,4 +10,3 @@ $TbMsg[2]='Perfil software'; $TbMsg[3]='Nombre del componente'; $TbMsg[4]='(*)Para incluir algún componente en este perfil debe hacer click sobre la casilla de verificación correspondiente.'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/pintaParticiones_esp.php b/admin/WebConsole/idiomas/php/esp/pintaParticiones_esp.php index 889eef9b..3fc9a6a7 100644 --- a/admin/WebConsole/idiomas/php/esp/pintaParticiones_esp.php +++ b/admin/WebConsole/idiomas/php/esp/pintaParticiones_esp.php @@ -58,5 +58,5 @@ $TbMsg["SEND"]='Protocolo'; $TbMsg["WARN_PROTOCOL"]='La opción "protocolo" sólo se utiliza en las sincronizadas tipo archivo la primera vez que se envÃa la imagen a caché. <br>En otro caso el protocolo es RSYNC.'; $TbMsg["WARN_DIFFIMAGE"]='Hay una nueva versión de la imagen (se muestra la diferencia de revisiones).'; $TbMsg["WARN_DIFFDISKSIZE"]='ATENCIÓN: no se pueden particionar grupos de ordenadores con distinto tamaño de disco.<br>Marcar la opción de "Desagrupar por tamaño de partición" y pulsar "Aceptar" en el menú superior para aplicar esta operación adecuadamente.'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/procedimientoscomandos_esp.php b/admin/WebConsole/idiomas/php/esp/procedimientoscomandos_esp.php index ec630b99..2f60230f 100644 --- a/admin/WebConsole/idiomas/php/esp/procedimientoscomandos_esp.php +++ b/admin/WebConsole/idiomas/php/esp/procedimientoscomandos_esp.php @@ -13,4 +13,3 @@ $TbMsg[5]='Parámetro'; $TbMsg[6]='Valor'; $TbMsg[7]='(*)Para excluir algún comando de este procedimiento debe hacer click sobre la casilla de verificación correspondiente'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/programaciones_esp.php b/admin/WebConsole/idiomas/php/esp/programaciones_esp.php index 3447d1e8..0033ec3f 100644 --- a/admin/WebConsole/idiomas/php/esp/programaciones_esp.php +++ b/admin/WebConsole/idiomas/php/esp/programaciones_esp.php @@ -15,4 +15,3 @@ $TbMsg=array(); $TbMsg[0]="Programaciones"; $TbMsg[1]="Suspender temporalmente todos los bloques programados"; $TbMsg[2]="Descripción del bloque"; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/programacionesaulas_esp.php b/admin/WebConsole/idiomas/php/esp/programacionesaulas_esp.php index fe53ba81..527f590c 100644 --- a/admin/WebConsole/idiomas/php/esp/programacionesaulas_esp.php +++ b/admin/WebConsole/idiomas/php/esp/programacionesaulas_esp.php @@ -51,4 +51,3 @@ $TbMsg=array(); $TbMsg[29]="Trabajo previo"; $TbMsg[30]='Grupo de reservas'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/programacionesreservas_esp.php b/admin/WebConsole/idiomas/php/esp/programacionesreservas_esp.php index 483472a0..d09e295a 100644 --- a/admin/WebConsole/idiomas/php/esp/programacionesreservas_esp.php +++ b/admin/WebConsole/idiomas/php/esp/programacionesreservas_esp.php @@ -50,4 +50,3 @@ $TbMsg=array(); $TbMsg[29]="Trabajo previo"; $TbMsg[30]="Datos Reserva"; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/propiedades_aulas_esp.php b/admin/WebConsole/idiomas/php/esp/propiedades_aulas_esp.php index 1685d60f..d811f04b 100644 --- a/admin/WebConsole/idiomas/php/esp/propiedades_aulas_esp.php +++ b/admin/WebConsole/idiomas/php/esp/propiedades_aulas_esp.php @@ -59,5 +59,5 @@ $TbMsg['COMM_REMOTEACCESS']="permitir gestión de acceso remoto a los orde $TbMsg['COMM_DEFOGLIVE']="Asignado por el administrador"; // Ticket-816 PCprofesor $TbMsg['PROP_PROFCOMPUTER']="Ordenador de profesor"; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/propiedades_centros_esp.php b/admin/WebConsole/idiomas/php/esp/propiedades_centros_esp.php index 9ae392d5..348ffe1e 100644 --- a/admin/WebConsole/idiomas/php/esp/propiedades_centros_esp.php +++ b/admin/WebConsole/idiomas/php/esp/propiedades_centros_esp.php @@ -14,4 +14,4 @@ $TbMsg[5]="Nombre de la unidad"; $TbMsg[6]="Comentarios"; $TbMsg['DIR']="Directorio"; $TbMsg['MSG_OGUNIT']="Si se elige separar por unidades organizativas, el directorio <b>/opt/opengnsys/images</b><br> debe contener un subdirectorio llamado como el directorio indicado."; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/propiedades_componentehardwares_esp.php b/admin/WebConsole/idiomas/php/esp/propiedades_componentehardwares_esp.php index e567637a..5ab7ad36 100644 --- a/admin/WebConsole/idiomas/php/esp/propiedades_componentehardwares_esp.php +++ b/admin/WebConsole/idiomas/php/esp/propiedades_componentehardwares_esp.php @@ -12,4 +12,3 @@ $TbMsg[3]="Eliminar"; $TbMsg[4]="Gestión Componentes Hardware"; $TbMsg[5]="Nombre"; $TbMsg[6]="Tipo de hardware"; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/propiedades_componentesoftwares_esp.php b/admin/WebConsole/idiomas/php/esp/propiedades_componentesoftwares_esp.php index 7c03d6e8..20ce10a5 100644 --- a/admin/WebConsole/idiomas/php/esp/propiedades_componentesoftwares_esp.php +++ b/admin/WebConsole/idiomas/php/esp/propiedades_componentesoftwares_esp.php @@ -13,4 +13,3 @@ $TbMsg[4]="Gestión Componentes Software"; $TbMsg[5]="Nombre"; $TbMsg[6]="Tipo de Software"; $TbMsg[7]="Tipo de S.O."; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/propiedades_entidades_esp.php b/admin/WebConsole/idiomas/php/esp/propiedades_entidades_esp.php index 2136aa78..b292525b 100644 --- a/admin/WebConsole/idiomas/php/esp/propiedades_entidades_esp.php +++ b/admin/WebConsole/idiomas/php/esp/propiedades_entidades_esp.php @@ -13,4 +13,4 @@ $TbMsg[4]="Gestión Entidades"; $TbMsg[5]="Nombre de la Entidad"; $TbMsg[6]="Comentarios"; $TbMsg['OGUNIT']="Separar unidades organizativas"; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/propiedades_entornos_esp.php b/admin/WebConsole/idiomas/php/esp/propiedades_entornos_esp.php index 3366d1b1..fec58009 100644 --- a/admin/WebConsole/idiomas/php/esp/propiedades_entornos_esp.php +++ b/admin/WebConsole/idiomas/php/esp/propiedades_entornos_esp.php @@ -21,4 +21,4 @@ $TbMsg[12]=""; $TbMsg[13]=""; $TbMsg[14]=""; $TbMsg[15]=""; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/propiedades_grupos_esp.php b/admin/WebConsole/idiomas/php/esp/propiedades_grupos_esp.php index 0cb12716..45a580e4 100644 --- a/admin/WebConsole/idiomas/php/esp/propiedades_grupos_esp.php +++ b/admin/WebConsole/idiomas/php/esp/propiedades_grupos_esp.php @@ -31,4 +31,3 @@ $TbMsg[22]="Grupos de Ordenadores"; $TbMsg[23]="Grupos de Imágenes MonolÃticas"; $TbMsg[24]="Grupos de Imágenes Básicas"; $TbMsg[25]="Grupos de Imágenes Incrementales"; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/propiedades_imagenes_esp.php b/admin/WebConsole/idiomas/php/esp/propiedades_imagenes_esp.php index 058f7512..b9e4972d 100644 --- a/admin/WebConsole/idiomas/php/esp/propiedades_imagenes_esp.php +++ b/admin/WebConsole/idiomas/php/esp/propiedades_imagenes_esp.php @@ -32,4 +32,4 @@ $TbMsg[22]="Introduzca otra Descripción"; $TbMsg['PROP_OS']="Sistema operativo"; $TbMsg['PROP_REMOTEACCESS']="Acceso remoto"; $TbMsg['COMM_REMOTEACCESS']="permitir gestión de acceso remoto a los ordenadores"; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/propiedades_menus_esp.php b/admin/WebConsole/idiomas/php/esp/propiedades_menus_esp.php index 7435bb5a..6bf04065 100644 --- a/admin/WebConsole/idiomas/php/esp/propiedades_menus_esp.php +++ b/admin/WebConsole/idiomas/php/esp/propiedades_menus_esp.php @@ -22,4 +22,4 @@ $TbMsg[15]="URL menú personalizado"; $TbMsg[17]="Resolución de pantalla"; $TbMsg[18]="Imagen de fondo"; $TbMsg["PROP_DEFAULT"]="Detectada por defecto"; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/propiedades_ordenadorestandar_esp.php b/admin/WebConsole/idiomas/php/esp/propiedades_ordenadorestandar_esp.php index a46a21f5..ec6c58e7 100644 --- a/admin/WebConsole/idiomas/php/esp/propiedades_ordenadorestandar_esp.php +++ b/admin/WebConsole/idiomas/php/esp/propiedades_ordenadorestandar_esp.php @@ -18,4 +18,4 @@ $TbMsg[9]='(*) Para modificar un ordenador con cierto dato, en esta aula, debe i $TbMsg[10]="(**)Si se trata de ordenadores nuevos con una configuración por defecto, pero no quiere modificar los ordenadores ya existentes debe introducir un valor mayor que cero."; $TbMsg[11]="Tamaño Caché"; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/propiedades_perfilhardwares_esp.php b/admin/WebConsole/idiomas/php/esp/propiedades_perfilhardwares_esp.php index 933b2c7f..ebb319a4 100644 --- a/admin/WebConsole/idiomas/php/esp/propiedades_perfilhardwares_esp.php +++ b/admin/WebConsole/idiomas/php/esp/propiedades_perfilhardwares_esp.php @@ -16,5 +16,5 @@ $TbMsg["HARD_COMPUTERS"]="Ordenadores"; $TbMsg["HARD_WINBOOT"]="Arranque Windows"; $TbMsg["HARD_REBOOT"]="Reinicio (reboot)"; $TbMsg["HARD_KEXEC"]="Directo (kexec)"; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/propiedades_perfilsoftwares_esp.php b/admin/WebConsole/idiomas/php/esp/propiedades_perfilsoftwares_esp.php index b46fcc9d..63a6112c 100644 --- a/admin/WebConsole/idiomas/php/esp/propiedades_perfilsoftwares_esp.php +++ b/admin/WebConsole/idiomas/php/esp/propiedades_perfilsoftwares_esp.php @@ -12,4 +12,3 @@ $TbMsg[3]="Eliminar"; $TbMsg[4]="Gestión de Perfiles software"; $TbMsg[5]="Nombre"; $TbMsg[6]="Comentarios"; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/propiedades_procedimientos_esp.php b/admin/WebConsole/idiomas/php/esp/propiedades_procedimientos_esp.php index f0ffdfc8..e14bcfdc 100644 --- a/admin/WebConsole/idiomas/php/esp/propiedades_procedimientos_esp.php +++ b/admin/WebConsole/idiomas/php/esp/propiedades_procedimientos_esp.php @@ -12,4 +12,3 @@ $TbMsg[3]="Eliminar"; $TbMsg[4]="Gestión Procedimientos"; $TbMsg[5]="Nombre Procedimiento"; $TbMsg[6]="Comentarios"; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/propiedades_reservas_esp.php b/admin/WebConsole/idiomas/php/esp/propiedades_reservas_esp.php index 49abddd6..5214903b 100644 --- a/admin/WebConsole/idiomas/php/esp/propiedades_reservas_esp.php +++ b/admin/WebConsole/idiomas/php/esp/propiedades_reservas_esp.php @@ -27,4 +27,3 @@ $TbMsg[18]="(Sin acción anticipada)"; $TbMsg[19]="Tarea previa"; $TbMsg[20]="Trabajo previo"; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/propiedades_tareas_esp.php b/admin/WebConsole/idiomas/php/esp/propiedades_tareas_esp.php index cb62e5c8..ecd1309c 100644 --- a/admin/WebConsole/idiomas/php/esp/propiedades_tareas_esp.php +++ b/admin/WebConsole/idiomas/php/esp/propiedades_tareas_esp.php @@ -20,4 +20,3 @@ $TbMsg[11]="Grupos de Aulas"; $TbMsg[12]="Aulas"; $TbMsg[13]="Grupos de Ordenadores"; $TbMsg[14]="Ordenadores"; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/propiedades_tipohardwares_esp.php b/admin/WebConsole/idiomas/php/esp/propiedades_tipohardwares_esp.php index aa1a5668..999f058d 100644 --- a/admin/WebConsole/idiomas/php/esp/propiedades_tipohardwares_esp.php +++ b/admin/WebConsole/idiomas/php/esp/propiedades_tipohardwares_esp.php @@ -12,4 +12,3 @@ $TbMsg[3]="Eliminar"; $TbMsg[4]="Gestión Tipos de Hardware"; $TbMsg[5]="Nombre"; $TbMsg[6]="icono"; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/propiedades_universidades_esp.php b/admin/WebConsole/idiomas/php/esp/propiedades_universidades_esp.php index e96e4d53..52e4ff31 100644 --- a/admin/WebConsole/idiomas/php/esp/propiedades_universidades_esp.php +++ b/admin/WebConsole/idiomas/php/esp/propiedades_universidades_esp.php @@ -12,4 +12,3 @@ $TbMsg[3]="Eliminar"; $TbMsg[4]="Gestión Universidades"; $TbMsg[5]="Nombre"; $TbMsg[6]="Comentarios"; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/propiedades_usuarios_esp.php b/admin/WebConsole/idiomas/php/esp/propiedades_usuarios_esp.php index 2014eaa9..90ec0572 100644 --- a/admin/WebConsole/idiomas/php/esp/propiedades_usuarios_esp.php +++ b/admin/WebConsole/idiomas/php/esp/propiedades_usuarios_esp.php @@ -26,4 +26,4 @@ $TbMsg[17]="https://opengnsys.es/trac/wiki/ModificarUsuarios"; $TbMsg[18]="Confirmar password"; $TbMsg['APIKEY']="API key"; $TbMsg['NEWAPIKEY']="La API key se generará automáticamente al insertar el usuario."; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/purgar_esp.php b/admin/WebConsole/idiomas/php/esp/purgar_esp.php index db6c41f8..8927ef40 100644 --- a/admin/WebConsole/idiomas/php/esp/purgar_esp.php +++ b/admin/WebConsole/idiomas/php/esp/purgar_esp.php @@ -7,4 +7,3 @@ $TbMsg=array(); $TbMsg[0]='Este ámbito se ha purgado correctamente'; $TbMsg[1]='ATENCIÓN: Ha habido algún problema al purgar el ámbito'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/repositorios_esp.php b/admin/WebConsole/idiomas/php/esp/repositorios_esp.php index e5d9919b..49008a1c 100644 --- a/admin/WebConsole/idiomas/php/esp/repositorios_esp.php +++ b/admin/WebConsole/idiomas/php/esp/repositorios_esp.php @@ -21,4 +21,4 @@ $TbMsg[13]='""'; $TbMsg[14]='"Repositorios"'; $TbMsg[15]='"Iconos"'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/reservas_esp.php b/admin/WebConsole/idiomas/php/esp/reservas_esp.php index 2fdc7fb7..f40c4786 100644 --- a/admin/WebConsole/idiomas/php/esp/reservas_esp.php +++ b/admin/WebConsole/idiomas/php/esp/reservas_esp.php @@ -17,4 +17,4 @@ $TbMsg[9]='"Reservas"'; $TbMsg[10]='"Programaciones"'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/softwares_esp.php b/admin/WebConsole/idiomas/php/esp/softwares_esp.php index 43a759cf..f876f20e 100644 --- a/admin/WebConsole/idiomas/php/esp/softwares_esp.php +++ b/admin/WebConsole/idiomas/php/esp/softwares_esp.php @@ -34,4 +34,3 @@ $TbMsg[26]='"Información Incremental"'; $TbMsg[27]='"Mover incremental"'; $TbMsg[28]='"Eliminar incremental"'; -?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/sondeo_esp.php b/admin/WebConsole/idiomas/php/esp/sondeo_esp.php index 78bf8d37..0eff15f2 100644 --- a/admin/WebConsole/idiomas/php/esp/sondeo_esp.php +++ b/admin/WebConsole/idiomas/php/esp/sondeo_esp.php @@ -7,4 +7,4 @@ $TbMsg=array(); $TbMsg[0]=''; $TbMsg[1]='ATENCIÓN: Ha habido algún problema al consultar el estado de los ordenadore'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/tareascomandos_esp.php b/admin/WebConsole/idiomas/php/esp/tareascomandos_esp.php index 9e2b1fe7..500ec245 100644 --- a/admin/WebConsole/idiomas/php/esp/tareascomandos_esp.php +++ b/admin/WebConsole/idiomas/php/esp/tareascomandos_esp.php @@ -15,4 +15,4 @@ $TbMsg[7]='(*)Para excluir algún comando de esta tarea debe hacer click sobre la casilla de verificación correspondiente'; $TbMsg[8]='Ãmbito'; $TbMsg[9]='Nombre'; -?> + diff --git a/admin/WebConsole/idiomas/php/esp/tiposhardwares_esp.php b/admin/WebConsole/idiomas/php/esp/tiposhardwares_esp.php index 764cdf56..f3ec436e 100644 --- a/admin/WebConsole/idiomas/php/esp/tiposhardwares_esp.php +++ b/admin/WebConsole/idiomas/php/esp/tiposhardwares_esp.php @@ -23,5 +23,5 @@ $TbMsg["HARDWARE_net"]="Tarjetas de red"; $TbMsg["HARDWARE_sto"]="Controladores de almacenamiento"; $TbMsg["HARDWARE_usb"]="Controladores USB"; $TbMsg["HARDWARE_vga"]="Tarjetas gráficas"; -?> + diff --git a/admin/WebConsole/images/tipOfDay_0.png b/admin/WebConsole/images/tipOfDay_0.png Binary files differnew file mode 100644 index 00000000..7c9b26dc --- /dev/null +++ b/admin/WebConsole/images/tipOfDay_0.png diff --git a/admin/WebConsole/images/tipOfDay_1.png b/admin/WebConsole/images/tipOfDay_1.png Binary files differnew file mode 100644 index 00000000..6f56199a --- /dev/null +++ b/admin/WebConsole/images/tipOfDay_1.png diff --git a/admin/WebConsole/images/tipOfDay_2.png b/admin/WebConsole/images/tipOfDay_2.png Binary files differnew file mode 100644 index 00000000..5ae273f0 --- /dev/null +++ b/admin/WebConsole/images/tipOfDay_2.png diff --git a/admin/WebConsole/images/tipOfDay_3.png b/admin/WebConsole/images/tipOfDay_3.png Binary files differnew file mode 100644 index 00000000..4f651526 --- /dev/null +++ b/admin/WebConsole/images/tipOfDay_3.png diff --git a/admin/WebConsole/images/tipOfDay_4.png b/admin/WebConsole/images/tipOfDay_4.png Binary files differnew file mode 100644 index 00000000..54581a9a --- /dev/null +++ b/admin/WebConsole/images/tipOfDay_4.png diff --git a/admin/WebConsole/images/tipOfDay_5.png b/admin/WebConsole/images/tipOfDay_5.png Binary files differnew file mode 100644 index 00000000..21c7597f --- /dev/null +++ b/admin/WebConsole/images/tipOfDay_5.png diff --git a/admin/WebConsole/images/tipOfDay_6.png b/admin/WebConsole/images/tipOfDay_6.png Binary files differnew file mode 100644 index 00000000..cd1a81e3 --- /dev/null +++ b/admin/WebConsole/images/tipOfDay_6.png diff --git a/admin/WebConsole/images/tipOfDay_7.png b/admin/WebConsole/images/tipOfDay_7.png Binary files differnew file mode 100644 index 00000000..882709cd --- /dev/null +++ b/admin/WebConsole/images/tipOfDay_7.png diff --git a/admin/WebConsole/images/ver.php b/admin/WebConsole/images/ver.php index edfae853..fbbeae63 100644 --- a/admin/WebConsole/images/ver.php +++ b/admin/WebConsole/images/ver.php @@ -44,4 +44,4 @@ echo '<TABLE width="100%" border="0"><TR>'; echo '</TR></TABLE>';
/////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////
-?>
+
diff --git a/admin/WebConsole/includes/ConfiguracionesParticiones.php b/admin/WebConsole/includes/ConfiguracionesParticiones.php index 816843b5..9cbd6fcf 100644 --- a/admin/WebConsole/includes/ConfiguracionesParticiones.php +++ b/admin/WebConsole/includes/ConfiguracionesParticiones.php @@ -833,5 +833,5 @@ function tomaCache($numpar,$ordenadores,$numdisk = 1) } } } -?> + diff --git a/admin/WebConsole/includes/CreaComando.php b/admin/WebConsole/includes/CreaComando.php index 056ac3ae..156ff225 100644 --- a/admin/WebConsole/includes/CreaComando.php +++ b/admin/WebConsole/includes/CreaComando.php @@ -21,4 +21,4 @@ function CreaComando($cadenaconexion){ $cmd->Conexion=&$cn; return($cmd); } -?> + diff --git a/admin/WebConsole/includes/CreaTablaParametros.php b/admin/WebConsole/includes/CreaTablaParametros.php index 9d5468f4..a395c849 100644 --- a/admin/WebConsole/includes/CreaTablaParametros.php +++ b/admin/WebConsole/includes/CreaTablaParametros.php @@ -1,51 +1,51 @@ -<?php
-// *************************************************************************************************************************************************
-// Aplicación WEB: ogAdmWebCon.
-// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
-// Fecha Creación: 2009-2010
-// Fecha Última modificación: Agosto-2010
-// Nombre del fichero: CreaTablaParametros.php
-// Descripción :
-// Crea una tabla en memoria con especificaciones sobre los parámetros de cada comando
-// Parametros:
-// - cmd: Un comando ya operativo (con conexión abierta)
-// - tabla_parametros: Referencia a la tabla donde se guardarán las especificaciones
-// - cont_parametros: Referencia a la variable que contendrá el número de elementos totales de la tabla
-// *************************************************************************************************************************************************
-function CreaTablaParametros($cmd,$tabla_parametros,$cont_parametros){
- $rs=new Recordset;
- $cmd->texto="SELECT * FROM parametros";
- $rs->Comando=&$cmd;
- if (!$rs->Abrir()) return; // Error al abrir recordset
- $rs->Primero();
- $cont=0;
- while (!$rs->EOF){
-echo "<br>".$rs->campos["nemonico"];
- $auxtabla_parametros="";
- $auxtabla_parametros["nemonico"]=$rs->campos["nemonico"];
- $auxtabla_parametros["descripcion"]=$rs->campos["descripcion"];
- $auxtabla_parametros["nomidentificador"]=$rs->campos["nomidentificador"];
- $auxtabla_parametros["nomtabla"]=$rs->campos["nomtabla"];
- $auxtabla_parametros["nomliteral"]=$rs->campos["nomliteral"];
- $tabla_parametros[$cont][0]=$auxtabla_parametros["nemonico"];
- $tabla_parametros[$cont][1]=$auxtabla_parametros;
- $cont++;
- $rs->Siguiente();
- }
- $auxnemonico="";
- // Ordena según el nemonico
- for ($i=0;$i<$cont-1;$i++){
- for ($j=$i+1;$j<$cont;$j++){
- if($tabla_parametros[$i][0]>$tabla_parametros[$j][0]){
- $auxnemonico=$tabla_parametros[$i][0];
- $tabla_parametros[$i][0]=$tabla_parametros[$j][0];
- $tabla_parametros[$j][0]=$auxnemonico;
- $auxtabla_parametros=$tabla_parametros[$i][1];
- $tabla_parametros[$i][1]=$tabla_parametros[$j][1];
- $tabla_parametros[$j][1]=$auxtabla_parametros;
- }
- }
- }
- $cont_parametros=$cont;
-}
-?>
+<?php +// ************************************************************************************************************************************************* +// Aplicación WEB: ogAdmWebCon. +// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla +// Fecha Creación: 2009-2010 +// Fecha Última modificación: Agosto-2010 +// Nombre del fichero: CreaTablaParametros.php +// Descripción : +// Crea una tabla en memoria con especificaciones sobre los parámetros de cada comando +// Parametros: +// - cmd: Un comando ya operativo (con conexión abierta) +// - tabla_parametros: Referencia a la tabla donde se guardarán las especificaciones +// - cont_parametros: Referencia a la variable que contendrá el número de elementos totales de la tabla +// ************************************************************************************************************************************************* +function CreaTablaParametros($cmd,$tabla_parametros,$cont_parametros){ + $rs=new Recordset; + $cmd->texto="SELECT * FROM parametros"; + $rs->Comando=&$cmd; + if (!$rs->Abrir()) return; // Error al abrir recordset + $rs->Primero(); + $cont=0; + while (!$rs->EOF){ +echo "<br>".$rs->campos["nemonico"]; + $auxtabla_parametros=array(); + $auxtabla_parametros["nemonico"]=$rs->campos["nemonico"]; + $auxtabla_parametros["descripcion"]=$rs->campos["descripcion"]; + $auxtabla_parametros["nomidentificador"]=$rs->campos["nomidentificador"]; + $auxtabla_parametros["nomtabla"]=$rs->campos["nomtabla"]; + $auxtabla_parametros["nomliteral"]=$rs->campos["nomliteral"]; + $tabla_parametros[$cont][0]=$auxtabla_parametros["nemonico"]; + $tabla_parametros[$cont][1]=$auxtabla_parametros; + $cont++; + $rs->Siguiente(); + } + $auxnemonico=""; + // Ordena según el nemonico + for ($i=0;$i<$cont-1;$i++){ + for ($j=$i+1;$j<$cont;$j++){ + if($tabla_parametros[$i][0]>$tabla_parametros[$j][0]){ + $auxnemonico=$tabla_parametros[$i][0]; + $tabla_parametros[$i][0]=$tabla_parametros[$j][0]; + $tabla_parametros[$j][0]=$auxnemonico; + $auxtabla_parametros=$tabla_parametros[$i][1]; + $tabla_parametros[$i][1]=$tabla_parametros[$j][1]; + $tabla_parametros[$j][1]=$auxtabla_parametros; + } + } + } + $cont_parametros=$cont; +} + diff --git a/admin/WebConsole/includes/FicherosPost.php b/admin/WebConsole/includes/FicherosPost.php index 10f38b0e..6791b3fd 100644 --- a/admin/WebConsole/includes/FicherosPost.php +++ b/admin/WebConsole/includes/FicherosPost.php @@ -48,5 +48,5 @@ function TomaPathFisico($UrlPagina,$NombreFichero){ $PathFisicoFichero=$PathFisicoCarpetaPagina."/iconos/".$NombreFichero; return($PathFisicoFichero); } -?> + diff --git a/admin/WebConsole/includes/InvFecha.php b/admin/WebConsole/includes/InvFecha.php index e4de8b83..3a82faff 100644 --- a/admin/WebConsole/includes/InvFecha.php +++ b/admin/WebConsole/includes/InvFecha.php @@ -9,7 +9,7 @@ function InvFecha($fecha){ if ($fecha=="1970-01-01")return(""); $auxexplode=explode(" ",$fecha); - list($anno_p,$mes_p,$dia_p)=explode("[/-]",$auxexplode[0]); + list($anno_p,$mes_p,$dia_p)=explode("-",str_replace("/","-",$auxexplode[0])); $fecha_p=$dia_p.'-'.$mes_p.'-'.$anno_p; return($fecha_p); } @@ -34,4 +34,4 @@ function metefechaDB($fecha){ function HoraValida($hora){ if ($hora=="00:00:00")return(""); } -?> + diff --git a/admin/WebConsole/includes/RecopilaIpesMacs.php b/admin/WebConsole/includes/RecopilaIpesMacs.php index 70a7f8e3..2ded1775 100644 --- a/admin/WebConsole/includes/RecopilaIpesMacs.php +++ b/admin/WebConsole/includes/RecopilaIpesMacs.php @@ -165,5 +165,5 @@ function RecorreOrdenadores($cmd){ } $rs->Cerrar(); } -?> + diff --git a/admin/WebConsole/includes/RedireccionaError.php b/admin/WebConsole/includes/RedireccionaError.php index 420f47a4..ded595ad 100644 --- a/admin/WebConsole/includes/RedireccionaError.php +++ b/admin/WebConsole/includes/RedireccionaError.php @@ -10,4 +10,3 @@ function RedireccionaError($herror){ $wurl="../seguridad/logerror.php?herror=".$urlerror; Header('Location: '.$wurl); } -?>
\ No newline at end of file diff --git a/admin/WebConsole/includes/comunes.php b/admin/WebConsole/includes/comunes.php index b89701ac..7f326fd5 100644 --- a/admin/WebConsole/includes/comunes.php +++ b/admin/WebConsole/includes/comunes.php @@ -5,10 +5,10 @@ // Parámetros: // - trama: La trama // Devuelve: - // Una matriz con las parejas de paramertos "nombre=valor" + // Una matriz con las parejas de parámertos "nombre=valor" //________________________________________________________________________________________ function extrae_parametros($parametros,$chsep,$chval){ - $ParametrosCadena=""; + $ParametrosCadena=array(); $auxP=explode($chsep,$parametros); for ($i=0;$i<sizeof($auxP);$i++){ $dualparam=explode($chval,$auxP[$i]); @@ -121,7 +121,7 @@ $cont=0; while (!$rs->EOF){ $nemo=$rs->campos["nemonico"]; - $auxtabla_parametros=""; + $auxtabla_parametros=array(); $auxtabla_parametros["nemonico"]=$nemo; $auxtabla_parametros["descripcion"]=$rs->campos["descripcion"]; $auxtabla_parametros["nomidentificador"]=$rs->campos["nomidentificador"]; @@ -300,7 +300,7 @@ Devuelve la descripción de un ambito Parametros: - - cmd: Objeto comando (Operativo) + - cmd: Objeto comando (Operativo) - ambito: tipo de ambito - idambito: Identificador del ambito - textambito: Por referencia. Es donde se devuelve la descripción @@ -309,7 +309,7 @@ - Los dos parámetros pasados por referencia ________________________________________________________________________*/ - function tomaDescriAmbito($cmd,$ambito,$idambito,$textambito) + function tomaDescriAmbito($cmd,$ambito,$idambito,&$textambito) { global $AMBITO_CENTROS; global $AMBITO_GRUPOSAULAS; @@ -334,7 +334,7 @@ $textambito=TomaDato($cmd,0,'ordenadores',$idambito,'idordenador','nombreordenador'); break; default: - $textambito; + $textambito=""; } } /*______________________________________________________________________ diff --git a/admin/WebConsole/includes/constantes.php b/admin/WebConsole/includes/constantes.php index d37d8a7b..a46296d7 100644 --- a/admin/WebConsole/includes/constantes.php +++ b/admin/WebConsole/includes/constantes.php @@ -174,6 +174,3 @@ $msk_cache=0x12; $IMAGENES_MONOLITICAS=0x01; $IMAGENES_BASICAS=0x02; $IMAGENES_INCREMENTALES=0x03; - -/* AVISO: no crear salto de lÃnea ni lÃneas en blanco tras el fin del código PHP. */ -?> diff --git a/admin/WebConsole/includes/ctrlacc.php b/admin/WebConsole/includes/ctrlacc.php index 9e09b9b7..c6988027 100644 --- a/admin/WebConsole/includes/ctrlacc.php +++ b/admin/WebConsole/includes/ctrlacc.php @@ -45,4 +45,4 @@ if ($swacc){ // Error en alguna variable de sesión die("***Error de acceso"); } //=============================================================================================== -?> + diff --git a/admin/WebConsole/includes/cuestionacciones.php b/admin/WebConsole/includes/cuestionacciones.php index 1f027adc..9c79894d 100644 --- a/admin/WebConsole/includes/cuestionacciones.php +++ b/admin/WebConsole/includes/cuestionacciones.php @@ -76,4 +76,4 @@ function CuestionAcciones($cmd,$shidra,$parametros){ } return(true); } - ?> + diff --git a/admin/WebConsole/includes/cuestionaccionescab.php b/admin/WebConsole/includes/cuestionaccionescab.php index d41d0324..0d0647db 100644 --- a/admin/WebConsole/includes/cuestionaccionescab.php +++ b/admin/WebConsole/includes/cuestionaccionescab.php @@ -20,4 +20,4 @@ if (isset($_POST["nwdescritarea"])) $nwdescritarea=$_POST["nwdescritarea"]; if (isset($_POST["sw_mkprocedimiento"])) $sw_mkprocedimiento=$_POST["sw_mkprocedimiento"]; if (isset($_POST["nwidprocedimiento"])) $nwidprocedimiento=$_POST["nwidprocedimiento"]; if (isset($_POST["nwdescriprocedimiento"])) $nwdescriprocedimiento=$_POST["nwdescriprocedimiento"]; -?> + diff --git a/admin/WebConsole/includes/opciones.php b/admin/WebConsole/includes/opciones.php index 4e8c1033..9cc12c8d 100644 --- a/admin/WebConsole/includes/opciones.php +++ b/admin/WebConsole/includes/opciones.php @@ -13,4 +13,3 @@ $op_modificacion=2; $op_eliminacion=3; $op_movida=4; $op_ejecucion=5; -?>
\ No newline at end of file diff --git a/admin/WebConsole/includes/opcionesbotonesop.php b/admin/WebConsole/includes/opcionesbotonesop.php index 85138063..da89b776 100644 --- a/admin/WebConsole/includes/opcionesbotonesop.php +++ b/admin/WebConsole/includes/opcionesbotonesop.php @@ -6,4 +6,4 @@ echo '<TD width=20></TD>'; echo '<TD><A href=#><IMG border=0 src="../images/boton_confirmar.gif" onclick="confirmar('.$opcion.')" ></A></TD>'; echo '</TR>'; echo '</TABLE>'; -?> + diff --git a/admin/WebConsole/includes/opcionesprotocolos.php b/admin/WebConsole/includes/opcionesprotocolos.php index 29a845bd..aaafab5d 100644 --- a/admin/WebConsole/includes/opcionesprotocolos.php +++ b/admin/WebConsole/includes/opcionesprotocolos.php @@ -105,5 +105,5 @@ return($torrentsyntax); -?> + diff --git a/admin/WebConsole/includes/pintaParticiones.php b/admin/WebConsole/includes/pintaParticiones.php index 44c3f10c..3db46818 100644 --- a/admin/WebConsole/includes/pintaParticiones.php +++ b/admin/WebConsole/includes/pintaParticiones.php @@ -34,7 +34,7 @@ function splitConfigurationsByDisk($configuraciones){ // Descripción: // Crea una taba html con las especificaciones de particiones de un ambito ya sea ordenador, // grupo de ordenadores o aula -// Parametros: +// Parámetros: // $configuraciones: Cadena con las configuraciones de particioners del ámbito. El formato // serÃa una secuencia de cadenas del tipo "clave de configuración" separados por "@" // Ejemplo:1;7;30000000;3;3;0;@2;130;20000000;5;4;0;@3;131;1000000;0;0;0;0 @@ -137,13 +137,11 @@ function pintaParticiones($cmd,$configuraciones,$idordenadores,$cc) for ($x=0;$x<count($ima); $x++) { if(substr($ima[$x],-3)==".MB") { if ( $ima[$x] == "0.MB" ){ - echo '<font color=red><strong>'.$TbMsg["CACHE_COMPLETE"].': '.$ima[$x].'</strong></font>'; + echo '<span style="color: red"><strong>'.$TbMsg["CACHE_COMPLETE"].': '.$ima[$x].'</strong></span>'; }else{ echo '<strong>'.$TbMsg["CACHE_FREESPACE"].': '.$ima[$x].'</strong>'; } }elseif (! empty($ima[1])){ - // $dir=is_dir('$ima');echo $dir; - // if ($ima == "directorio"){$dir="si";} // Esto para la informacion de la imagen if (substr($ima[$x],-5)==".diff"){$info="F";}elseif(substr($ima[$x],-4)==".img"){$info="F";}else{$info="D";} // Esto para numerarla @@ -152,7 +150,7 @@ function pintaParticiones($cmd,$configuraciones,$idordenadores,$cc) } elseif(preg_match("/.sum/",$ima[$x]) or preg_match("/.torrent/",$ima[$x]) or preg_match("/.full.sum/",$ima[$x])) { echo '<br /> '.$ima[$x]; }else{ - echo '<br /><font color=blue>('.$info.') </font>'.$numero++.'.-<font color=blue>'.$ima[$x]."</font>"; + echo '<br /><span style="color: blue">('.$info.') </span>'.$numero++.'.-<span style="color: blue">'.$ima[$x]."</span>"; } } } @@ -193,7 +191,7 @@ function pintaParticiones($cmd,$configuraciones,$idordenadores,$cc) if (!empty($aviso)) { echo '<tr><th colspan="'.$columns.'"> * '.$aviso.' </th></tr>'."\n"; } - echo '<tr height="5"><td colspan="'.$columns.'" style="BORDER-TOP: #999999 1px solid;BACKGROUND-COLOR: #FFFFFF;"> </td></tr>'; + echo '<tr><td colspan="'.$columns.'" style="BORDER-TOP: #999999 1px solid;BACKGROUND-COLOR: #FFFFFF; height: 5px;"> </td></tr>'; } @@ -203,7 +201,7 @@ function pintaParticiones($cmd,$configuraciones,$idordenadores,$cc) // (Esta función es llamada por pintaConfiguraciones que está incluida en ConfiguracionesParticiones.php) // Crea una taba html con las especificaciones de particiones de un ambito ya sea ordenador, // grupo de ordenadores o aula -// Parametros: +// Parámetros: // $configuraciones: Cadena con las configuraciones de particioners del ámbito. El formato // serÃa una secuencia de cadenas del tipo "clave de configuración" separados por "@" // Ejemplo:1;7;30000000;3;3;0;@2;130;20000000;5;4;0;@3;131;1000000;0;0;0;0 @@ -248,40 +246,47 @@ function pintaParticionesRestaurarImagen($cmd,$configuraciones,$idordenadores,$c $auxCfg=explode("@",$diskConfig); // Crea lista de particiones for($i=0;$i<sizeof($auxCfg);$i++){ $auxKey=explode(";",$auxCfg[$i]); // Toma clave de configuracion + // Para particiones EFI desabilitamos el selector + $disabled=''; for($k=0;$k<$conKeys;$k++){ // Busca los literales para las claves de esa partición if($tbKeys[$k]["cfg"]==$auxCfg[$i]){ // Claves encontradas if($tbKeys[$k]["numpar"]!=0){ // No es info. del disco (part. 0) $swcc=$tbKeys[$k]["clonable"]; if($swcc){ + if ($tbKeys[$k]["tipopar"] == 'EFI') $disabled='disabled'; echo '<TR>'.chr(13); echo '<TD align=center> </TD>'; $icp=$cc."_".$tbKeys[$k]["numdisk"]."_".$tbKeys[$k]["numpar"]; // Identificador de la configuración-partición - echo '<TD ><input type=radio idcfg="'.$cc.'" id="'.$icp.'" name="particion" value='.$tbKeys[$k]["numdisk"].";".$tbKeys[$k]["numpar"].'></TD>'.chr(13); + echo '<TD ><input type=radio idcfg="'.$cc.'" id="'.$icp.'" name="particion" value='.$tbKeys[$k]["numdisk"].";".$tbKeys[$k]["numpar"].' '.$disabled.'></TD>'.chr(13); echo '<TD align=center> '.$tbKeys[$k]["numpar"].' </TD>'.chr(13); echo '<TD align=center> '.$tbKeys[$k]["tipopar"].' </TD>'.chr(13); echo '<TD align=center> '.tomaNombresSO($tbKeys[$k]["numpar"],$idordenadores,$tbKeys[$k]["numdisk"]).' </TD>'.chr(13); echo'<TD align=center> '.tomaSistemasFicheros($tbKeys[$k]["numpar"],$idordenadores,false,$tbKeys[$k]["numdisk"]).' </TD>'.chr(13); echo'<TD align=center> '.tomaTamano($tbKeys[$k]["numpar"],$idordenadores,$tbKeys[$k]["numdisk"]).' </TD>'.chr(13); - echo '<TD>'.HTMLSELECT_imagenes($cmd,$tbKeys[$k]["idimagen"],$tbKeys[$k]["numpar"],$tbKeys[$k]["codpar"],$icp,true,$idambito,$ambito).'</TD>'; - echo '<TD>'.HTMLSELECT_imagenes($cmd,$tbKeys[$k]["idimagen"],$tbKeys[$k]["numpar"],$tbKeys[$k]["codpar"],$icp,false,$idambito,$ambito).'</TD>'; + if ($tbKeys[$k]["tipopar"] == 'EFI') { + echo "<TD></TD>\n<TD></TD>\n<TD></TD>\n"; + } else { + echo '<TD>'.HTMLSELECT_imagenes($cmd,$tbKeys[$k]["idimagen"],$tbKeys[$k]["numpar"],$tbKeys[$k]["codpar"],$icp,true,$idambito,$ambito).'</TD>'; + echo '<TD>'.HTMLSELECT_imagenes($cmd,$tbKeys[$k]["idimagen"],$tbKeys[$k]["numpar"],$tbKeys[$k]["codpar"],$icp,false,$idambito,$ambito).'</TD>'; - //Clonación - $metodos="UNICAST=UNICAST-CACHE".chr(13); - $metodos.="UNICAST-DIRECT=UNICAST-DIRECT".chr(13); - $metodos.="MULTICAST " . mcast_syntax($cmd,$ambito,$idambito) . "=MULTICAST-CACHE".chr(13); - $metodos.="MULTICAST-DIRECT " . mcast_syntax($cmd,$ambito,$idambito) . "=MULTICAST-DIRECT".chr(13); - $metodos.="TORRENT " . torrent_syntax($cmd,$ambito,$idambito) . "=TORRENT-CACHE"; + //Clonación + $metodos="UNICAST=UNICAST-CACHE".chr(13); + $metodos.="UNICAST-DIRECT=UNICAST-DIRECT".chr(13); + $metodos.="MULTICAST " . mcast_syntax($cmd,$ambito,$idambito) . "=MULTICAST-CACHE".chr(13); + $metodos.="MULTICAST-DIRECT " . mcast_syntax($cmd,$ambito,$idambito) . "=MULTICAST-DIRECT".chr(13); + $metodos.="TORRENT " . torrent_syntax($cmd,$ambito,$idambito) . "=TORRENT-CACHE"; - $TBmetodos["UNICAST-CACHE"]=1; - $TBmetodos["UNICAST-DIRECT"]=2; - $TBmetodos["MULTICAST-CACHE"]=3; - $TBmetodos["MULTICAST-DIRECT"]=4; - $TBmetodos["TORRENT-CACHE"]=5; - $idxc=$_SESSION["protclonacion"]; - if ($idxc == "UNICAST") { - $idxc = "UNICAST-DIRECT"; + $TBmetodos["UNICAST-CACHE"]=1; + $TBmetodos["UNICAST-DIRECT"]=2; + $TBmetodos["MULTICAST-CACHE"]=3; + $TBmetodos["MULTICAST-DIRECT"]=4; + $TBmetodos["TORRENT-CACHE"]=5; + $idxc=$_SESSION["protclonacion"]; + if ($idxc == "UNICAST") { + $idxc = "UNICAST-DIRECT"; + } + echo '<TD>'.HTMLCTESELECT($metodos,"protoclonacion_".$icp,"estilodesple","",$TBmetodos[$idxc],100).'</TD>'; } - echo '<TD>'.HTMLCTESELECT($metodos,"protoclonacion_".$icp,"estilodesple","",$TBmetodos[$idxc],100).'</TD>'; echo '</TR>'.chr(13); } } @@ -289,7 +294,7 @@ function pintaParticionesRestaurarImagen($cmd,$configuraciones,$idordenadores,$c } } } - echo '<TR height=5><TD colspan='.$columns.' style="BORDER-TOP: #999999 1px solid;BACKGROUND-COLOR: #FFFFFF;"> </TD></TR>'; + echo '<TR><TD colspan='.$columns.' style="BORDER-TOP: #999999 1px solid;BACKGROUND-COLOR: #FFFFFF; height:5px;"> </TD></TR>'; } /*________________________________________________________________________________________________________ @@ -298,7 +303,7 @@ function pintaParticionesRestaurarImagen($cmd,$configuraciones,$idordenadores,$c (Esta función es llamada por pintaConfiguraciones que está incluida en ConfiguracionesParticiones.php) Crea una taba html con las especificaciones de particiones de un ambito ya sea ordenador, grupo de ordenadores o aula - Parametros: + Parámetros: $configuraciones: Cadena con las configuraciones de particioners del ámbito. El formato serÃa una secuencia de cadenas del tipo "clave de configuración" separados por "@" Ejemplo:1;7;30000000;3;3;0;@2;130;20000000;5;4;0;@3;131;1000000;0;0;0;0 @@ -342,7 +347,7 @@ function pintaParticionesConfigurar($cmd,$configuraciones,$idordenadores,$cc) $sf=tomaSistemasFicheros($tbKeys[$k]["numpar"],$idordenadores,true); echo '<td>'.HTMLSELECT_sistemasficheros($cmd,$sf).'</td>'; $tm=tomaTamano($tbKeys[$k]["numpar"],$idordenadores); - echo '<td><input type="text" style="width:100" value="'.$tm.'"></td>'; + echo '<td><input type="text" style="width:100px" value="'.$tm.'"></td>'; echo '<td>'.tomaNombresSO($tbKeys[$k]["numpar"],$idordenadores).'</td>'; echo '<td>'.opeFormatear().'</td>'; echo '</tr>'; @@ -361,8 +366,8 @@ function pintaParticionesConfigurar($cmd,$configuraciones,$idordenadores,$cc) // Datos del disco $tm=tomaTamano(0,$idordenadores); echo '<tr id="TRIMG_'.$cc.'" align="center">'. - "\n<td></td>\n<td></td>\n<td".' style="font-size: 1em; padding: 1px 0px; "'.">".$TbMsg["DISK"]."</td>". - "\n<td></td>\n<td".' style="font-size: 1em; padding: 1px 0px; "> '.(isset($tm)?$tm:("<em>".$TbMsg["VARIABLE"]."</em>"))." <input type='hidden' id='hdsize$cc' name='hdsize$cc' style='width:100' value='".$tm."'></td>". + "\n<td></td>\n<td></td>\n<td".' style="font-size: 1em; padding: 1px 0; "'.">".$TbMsg["DISK"]."</td>". + "\n<td></td>\n<td".' style="font-size: 1em; padding: 1px 0; "> '.(isset($tm)?$tm:("<em>".$TbMsg["VARIABLE"]."</em>"))." <input type='hidden' id='hdsize$cc' name='hdsize$cc' style='width:100px' value='".$tm."'></td>". "\n<td></td>\n<td></td>\n</tr>"; echo '<tr><th colspan="'.$colums.'"> '.$TbMsg["WARN_DISKSIZE"].'</th></tr>'; // Mostrar aviso: solo disco 1 con tabla MSDOS. @@ -371,14 +376,14 @@ function pintaParticionesConfigurar($cmd,$configuraciones,$idordenadores,$cc) } // Botones de añadir y confirmar. if (isset($tm)) { - echo '<TR height=30><TD style="BACKGROUND-COLOR: #FFFFFF;" colspan='.$colums.' align=center>'; - echo ' <A href="#add" style="text-decoration:none"> - <IMG id="IMG_'.$icp.'" border=0 src="../images/boton_insertar.gif" - value="'.$k.'" onclick="addParticion(this,'.$cc.')"></A> - - <A href="#add" style="text-decoration:none"> - <IMG border=0 src="../images/boton_aceptar.gif" onclick="Confirmar('.$cc.')"></A></TD> - </TR>'; + echo '<tr><td style="background-color: #FFFFFF; height: 30px;" colspan="'.$colums.'" align="center">'; + echo ' <a href="#add" style="text-decoration:none"> + <img id="IMG_'.$icp.'" border=0 src="../images/boton_insertar.gif" + value="'.$k.'" onclick="addParticion(this,'.$cc.')"></a> + + <a href="#add" style="text-decoration:none"> + <img border=0 src="../images/boton_aceptar.gif" onclick="Confirmar('.$cc.')"></a></td> + </tr>'; } else { echo '<tr><th colspan="'.$colums.'">'.$TbMsg["WARN_DIFFDISKSIZE"].'</th></tr>'."\n"; } @@ -386,24 +391,24 @@ function pintaParticionesConfigurar($cmd,$configuraciones,$idordenadores,$cc) /* // -// Descripcion: -// (Esta funci�n es llamada por pintaConfiguraciones que est� incluida en ConfiguracionesParticiones.php) +// Descripcián: +// (Esta función es llamada por pintaConfiguraciones que está incluida en ConfiguracionesParticiones.php) // Crea una taba html con las especificaciones de particiones de un ambito ya sea ordenador, // grupo de ordenadores o aula -// Parametros: -// $configuraciones: Cadena con las configuraciones de particioners del �mbito. El formato -// ser�a una secuencia de cadenas del tipo "clave de configuraci�n" separados por "@" +// Parámetros: +// $configuraciones: Cadena con las configuraciones de particioners del ámbito. El formato +// serÃa una secuencia de cadenas del tipo "clave de configuración" separados por "@" // Ejemplo:1;7;30000000;3;3;0;@2;130;20000000;5;4;0;@3;131;1000000;0;0;0;0 // Devuelve: -// El c�digo html de la tabla +// El código html de la tabla //________________________________________________________________________________________________________ // // */ function pintaParticionesRestaurarImagenSincronizacion1($cmd,$configuraciones,$idordenadores,$cc,$ambito,$idambito) { - global $tbKeys; // Tabla contenedora de claves de configuraci�n - global $conKeys; // Contador de claves de configuraci�n + global $tbKeys; // Tabla contenedora de claves de configuración + global $conKeys; // Contador de claves de configuración global $TbMsg; global $_SESSION; @@ -445,7 +450,7 @@ function pintaParticionesRestaurarImagenSincronizacion1($cmd,$configuraciones,$i echo '<TR>'.chr(13); echo '<TD align=center> </TD>'; if($swcc){ - $icp=$cc."_".$tbKeys[$k]["numdisk"]."_".$tbKeys[$k]["numpar"]; // Identificador de la configuraci�n-partici�n + $icp=$cc."_".$tbKeys[$k]["numdisk"]."_".$tbKeys[$k]["numpar"]; // Identificador de la configuración-partición echo '<TD align=center><input type=radio idcfg="'.$cc.'" id="'.$icp.'" name="particion" value='.$tbKeys[$k]["numdisk"].";".$tbKeys[$k]["numpar"].'></TD>'.chr(13); echo '<TD align=center> '.$tbKeys[$k]["numpar"].' </TD>'.chr(13); echo '<TD align=center> '.$tbKeys[$k]["tipopar"].' </TD>'.chr(13); @@ -479,169 +484,6 @@ function pintaParticionesRestaurarImagenSincronizacion1($cmd,$configuraciones,$i } } - echo '<TR height=5><TD colspan='.$columns.' style="BORDER-TOP: #999999 1px solid;BACKGROUND-COLOR: #FFFFFF;"> </TD></TR>'; + echo '<TR><TD colspan="'.$columns.'" style="BORDER-TOP: #999999 1px solid;BACKGROUND-COLOR: #FFFFFF; height: 5px;"> </TD></TR>'; echo '<tr><th colspan="14">'.$TbMsg["WARN_PROTOCOL"].'</th></tr>'; } -/** - * Las funcion pintaParticionesRestaurarImagenSincronizacion1 sustituye a las funciones - * pintaParticionesRestaurarSoftIncremental y pintaParticionesRestaurarImagenBasica - * para volver a usarlas tan sólo hay que ir al fichero comandos/RestaurarImagenBasica o comandos/RestaurarSoftIncremental y cambiar la - * llamada a la función que queramos en el parametro de pintaConfiguraciones. - * Actualmente en ambos ficheros llaman a la función pintaParticionesRestaurarImagenSincronizacion1 ya que pintan - * exactamente lo mismo. - * - -//********************************************************************************************* -// FUNCIONES -//********************************************************************************************* -// -// Descripci�n: -// (Esta funci�n es llamada por pintaConfiguraciones que est� incluida en ConfiguracionesParticiones.php) -// Crea una taba html con las especificaciones de particiones de un ambito ya sea ordenador, -// grupo de ordenadores o aula -// Parametros: -// $configuraciones: Cadena con las configuraciones de particioners del �mbito. El formato -// ser�a una secuencia de cadenas del tipo "clave de configuraci�n" separados por "@" -// Ejemplo:1;7;30000000;3;3;0;@2;130;20000000;5;4;0;@3;131;1000000;0;0;0;0 -// Devuelve: -// El c�digo html de la tabla -//________________________________________________________________________________________________________ -// -// -function pintaParticionesRestaurarSoftIncremental($cmd,$configuraciones,$idordenadores,$cc,$ambito,$idambito) -{ - global $tbKeys; // Tabla contenedora de claves de configuraci�n - global $conKeys; // Contador de claves de configuraci�n - global $TbMsg; - global $_SESSION; - - // Separamos las configuraciones segun el disco al que pertenezcan - $diskConfigs = splitConfigurationsByDisk($configuraciones); - - $columns=9; - echo '<TR>'; - echo '<TH align=center> </TH>'; - echo '<th align="center"> '.$TbMsg["DISK"].' </th>'; // Número de disco - echo '<TH align=center> '.$TbMsg["PARTITION"].' </TH>'; - echo '<th align="center"> '.$TbMsg["PARTITION_TYPE"].' </th>'; // Tipo de partición - echo '<th align="center"> '.$TbMsg["INST_SO"].' </th>'; // Sistema Operativo Instalado - echo '<th align="center"> '.$TbMsg["FILESYSTEM_SHORT"].' </th>'; // Sistema de ficheros - echo '<th align="center"> '.$TbMsg["SIZE_KB"].' </th>'; // Tamaño - echo '<TH align=center> '.$TbMsg[10].' </TH>'; - echo '<TH align=center> '.$TbMsg[16].' </TH>'; - echo '</TR>'; - - - // Recorremos todas las configuraciones encontradas para cada disco - - foreach($diskConfigs as $disk => $diskConfig){ - $disk = (int)$disk; - echo'<tr height="16">'.chr(13); - echo '<td colspan="'.$columns.'" style="BORDER-TOP: #999999 1px solid;BACKGROUND-COLOR: #D4D0C8;"> '.$TbMsg["DISK"].' '.$disk.'</td>'.chr(13); - - $auxCfg=explode("@",$diskConfig); // Crea lista de particiones - for($i=0;$i<sizeof($auxCfg);$i++){ - $auxKey=explode(";",$auxCfg[$i]); // Toma clave de configuracion - for($k=0;$k<$conKeys;$k++){ // Busca los literales para las claves de esa partici�n - if($tbKeys[$k]["cfg"]==$auxCfg[$i]){ // Claves encontradas - $swcc=$tbKeys[$k]["clonable"]; - echo '<TR>'.chr(13); - echo '<TD align=center> </TD>'; - if($swcc){ - $icp=$cc."_".$tbKeys[$k]["numpar"]; // Identificador de la configuraci�n-partici�n - echo '<TD align=center><input type=radio idcfg="'.$cc.'" id="'.$icp.'" name="particion" value='.$tbKeys[$k]["numpar"].'></TD>'.chr(13); - echo '<TD align=center> '.$tbKeys[$k]["numpar"].' </TD>'.chr(13); - echo '<TD align=center> '.$tbKeys[$k]["tipopar"].' </TD>'.chr(13); - echo '<TD align=center> '.tomaNombresSO($tbKeys[$k]["numpar"],$idordenadores).' </TD>'.chr(13); - echo'<TD align=center> '.tomaSistemasFicheros($tbKeys[$k]["numpar"],$idordenadores).' </TD>'.chr(13); - echo'<TD align=center> '.tomaTamano($tbKeys[$k]["numpar"],$idordenadores).' </TD>'.chr(13); - echo '<TD align=center>'.HTMLSELECT_imagenes($cmd,$tbKeys[$k]["idimagen"],$tbKeys[$k]["numpar"],$tbKeys[$k]["codpar"],$icp,true,$idordenadores,$ambito).'</TD>'; - $metodos="CACHE=".$TbMsg[13].chr(13); - $metodos.="REPO=".$TbMsg[9]; - echo '<TD align=center>'.HTMLCTESELECT($metodos,"desplemet_".$icp,"estilodesple","",1,100).'</TD>'; - - } - echo '</TR>'.chr(13); - } - } - } - } - echo '<TR height=5><TD colspan='.$columns.' style="BORDER-TOP: #999999 1px solid;BACKGROUND-COLOR: #FFFFFF;"> </TD></TR>'; -} - -//********************************************************************************************* -// FUNCIONES -//********************************************************************************************* -// -// Descripci�n: -// (Esta funci�n es llamada por pintaConfiguraciones que est� incluida en ConfiguracionesParticiones.php) -// Crea una taba html con las especificaciones de particiones de un ambito ya sea ordenador, -// grupo de ordenadores o aula -// Parametros: -// $configuraciones: Cadena con las configuraciones de particioners del �mbito. El formato -// ser�a una secuencia de cadenas del tipo "clave de configuraci�n" separados por "@" -// Ejemplo:1;7;30000000;3;3;0;@2;130;20000000;5;4;0;@3;131;1000000;0;0;0;0 -// Devuelve: -// El c�digo html de la tabla -//________________________________________________________________________________________________________ -// -// -function pintaParticionesRestaurarImagenBasica($cmd,$configuraciones,$idordenadores,$cc,$ambito,$idambito) -{ - global $tbKeys; // Tabla contenedora de claves de configuraci�n - global $conKeys; // Contador de claves de configuraci�n - global $TbMsg; - global $_SESSION; - - // Separamos las configuraciones segun el disco al que pertenezcan - $diskConfigs = splitConfigurationsByDisk($configuraciones); - - $columns=9; - echo '<TR>'; - echo '<TH align=center> </TH>'; - echo '<th align="center"> '.$TbMsg["DISK"].' </th>'; // Número de disco - echo '<TH align=center> '.$TbMsg["PARTITION"].' </TH>'; - echo '<th align="center"> '.$TbMsg["PARTITION_TYPE"].' </th>'; // Tipo de partición - echo '<th align="center"> '.$TbMsg["INST_SO"].' </th>'; // Sistema Operativo Instalado - echo '<th align="center"> '.$TbMsg["FILESYSTEM_SHORT"].' </th>'; // Sistema de ficheros - echo '<th align="center"> '.$TbMsg["SIZE_KB"].' </th>'; // Tamaño - echo '<TH align=center> '.$TbMsg[10].' </TH>'; - echo '<TH align=center> '.$TbMsg[16].' </TH>'; - echo '</TR>'; - - // Recorremos todas las configuraciones encontradas para cada disco - - foreach($diskConfigs as $disk => $diskConfig){ - $disk = (int)$disk; - echo'<tr height="16">'.chr(13); - echo '<td colspan="'.$columns.'" style="BORDER-TOP: #999999 1px solid;BACKGROUND-COLOR: #D4D0C8;"> '.$TbMsg["DISK"].' '.$disk.'</td>'.chr(13); - - $auxCfg=explode("@",$diskConfig); // Crea lista de particiones - for($i=0;$i<sizeof($auxCfg);$i++){ - $auxKey=explode(";",$auxCfg[$i]); // Toma clave de configuracion - for($k=0;$k<$conKeys;$k++){ // Busca los literales para las claves de esa partici�n - if($tbKeys[$k]["cfg"]==$auxCfg[$i]){ // Claves encontradas - $swcc=$tbKeys[$k]["clonable"]; - if($swcc){ - echo '<TR>'.chr(13); - echo '<TD align=center> </TD>'; - $icp=$cc."_".$tbKeys[$k]["numpar"]; // Identificador de la configuraci�n-partici�n - echo '<TD align=center><input type=radio idcfg="'.$cc.'" id="'.$icp.'" name="particion" value='.$tbKeys[$k]["numpar"].'></TD>'.chr(13); - echo '<TD align=center> '.$tbKeys[$k]["numpar"].' </TD>'.chr(13); - echo '<TD align=center> '.$tbKeys[$k]["tipopar"].' </TD>'.chr(13); - echo '<TD align=center> '.tomaNombresSO($tbKeys[$k]["numpar"],$idordenadores).' </TD>'.chr(13); - echo'<TD align=center> '.tomaSistemasFicheros($tbKeys[$k]["numpar"],$idordenadores).' </TD>'.chr(13); - echo'<TD align=center> '.tomaTamano($tbKeys[$k]["numpar"],$idordenadores).' </TD>'.chr(13); - echo '<TD align=center>'.HTMLSELECT_imagenes($cmd,$tbKeys[$k]["idimagen"],$tbKeys[$k]["numpar"],$tbKeys[$k]["codpar"],$icp,true,$idordenadores,$ambito).'</TD>'; - $metodos="CACHE=".$TbMsg[13].chr(13); - $metodos.="REPO=".$TbMsg[9]; - echo '<TD align=center>'.HTMLCTESELECT($metodos,"desplemet_".$icp,"estilodesple","",1,100).'</TD>'; - } - } - } - } - } - echo '<TR height=5><TD colspan='.$columns.' style="BORDER-TOP: #999999 1px solid;BACKGROUND-COLOR: #FFFFFF;"> </TD></TR>'; -} -**/ - diff --git a/admin/WebConsole/includes/pintaTablaConfiguraciones.php b/admin/WebConsole/includes/pintaTablaConfiguraciones.php index ecf69574..5a0b72ae 100644 --- a/admin/WebConsole/includes/pintaTablaConfiguraciones.php +++ b/admin/WebConsole/includes/pintaTablaConfiguraciones.php @@ -38,10 +38,10 @@ function tablaConfiguracionesIniciarSesion($cmd,$idambito,$ambito){ // CONSULTA BD: grupo de equipos con iguales sistemas operativos: idordenadores,configuracion $cmd->texto=""; // agrupamos equipos con igual conf de disco. - $cmd->texto="select GROUP_CONCAT(pcconf.idordenador SEPARATOR ',') AS idordenadores, pcconf.configuraciones FROM ("; + $cmd->texto="SELECT GROUP_CONCAT(pcconf.idordenador SEPARATOR ',') AS idordenadores, pcconf.configuraciones FROM ("; // partconf agrupa la configuracion de todas las part: idordenador | configuracionTodasPart - $cmd->texto.=" select partconf.idordenador , GROUP_CONCAT(partconf.configuracion ORDER BY partconf.configuracion ASC SEPARATOR '@' ) AS configuraciones FROM ("; + $cmd->texto.=" SELECT partconf.idordenador, GROUP_CONCAT(partconf.configuracion ORDER BY partconf.configuracion ASC SEPARATOR '@') AS configuraciones FROM ("; // particion conf: idordenador, numdisk, configuracion (numdisk;numpar;idnombreso) $cmd->texto.="SELECT ordenadores_particiones.idordenador,ordenadores_particiones.numdisk, CONCAT_WS(';',ordenadores_particiones.numdisk, ordenadores_particiones.numpar, ordenadores_particiones.idnombreso) AS configuracion FROM ordenadores_particiones "; @@ -138,9 +138,7 @@ function tablaConfiguracionesInventarioSoftware($cmd,$idordenador){ WHERE ordenadores.idordenador=".$idordenador." AND nombresos.nombreso!='DATA' ORDER BY ordenadores_particiones.numdisk,ordenadores_particiones.numpar"; - - $rs->Comando=&$cmd; - $rs=new Recordset; + $rs=new Recordset; $rs->Comando=&$cmd; if (!$rs->Abrir()) return($tablaHtml); // Error al abrir recordset diff --git a/admin/WebConsole/includes/restfunctions.php b/admin/WebConsole/includes/restfunctions.php index 3f91f7f5..14cace17 100644 --- a/admin/WebConsole/includes/restfunctions.php +++ b/admin/WebConsole/includes/restfunctions.php @@ -1,5 +1,212 @@ <?php - + +define('OG_REST_URL', 'http://127.0.0.1:8888/'); + +define('GET', 1); +define('POST', 2); +define('CUSTOM', 3); + +define('OG_REST_CMD_CLIENTS', 'clients'); +define('OG_REST_CMD_WOL', 'wol'); +define('OG_REST_CMD_SESSION', 'session'); +define('OG_REST_CMD_RUN', 'shell/run'); +define('OG_REST_CMD_OUTPUT', 'shell/output'); +define('OG_REST_CMD_POWEROFF', 'poweroff'); +define('OG_REST_CMD_REBOOT', 'reboot'); +define('OG_REST_CMD_STOP', 'stop'); +define('OG_REST_CMD_REFRESH', 'refresh'); +define('OG_REST_CMD_HARDWARE', 'hardware'); +define('OG_REST_CMD_SOFTWARE', 'software'); + +define('OG_REST_PARAM_CLIENTS', 'clients'); +define('OG_REST_PARAM_ADDR', 'addr'); +define('OG_REST_PARAM_MAC', 'mac'); +define('OG_REST_PARAM_DISK', 'disk'); +define('OG_REST_PARAM_PART', 'partition'); +define('OG_REST_PARAM_RUN', 'run'); +define('OG_REST_PARAM_TYPE', 'type'); +define('OG_REST_PARAM_STATE', 'state'); + +$conf_file = parse_ini_file(__DIR__ . '/../../etc/ogAdmRepo.cfg'); +define('OG_REST_API_TOKEN', 'Authorization: ' . $conf_file['ApiToken']); + +function common_request($command, $type, $data = null) { + + $json = json_encode($data); + + $service_url = OG_REST_URL.$command; + + $curl = curl_init($service_url); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); + curl_setopt($curl, CURLOPT_HTTPHEADER, array( + OG_REST_API_TOKEN, + )); + + switch ($type) { + default: + case GET: + break; + case POST: + curl_setopt($curl, CURLOPT_POST, true); + curl_setopt($curl, CURLOPT_POSTFIELDS, $json); + } + + $curl_response = curl_exec($curl); + $info = curl_getinfo($curl); + + if ($curl_response === false || $info['http_code'] != 200) { + syslog(LOG_ERR, 'error occured during curl exec. Additioanl info: ' . print_r($info, TRUE)); + return 0; + } + + curl_close($curl); + + syslog(LOG_INFO, 'response '.$command.' ok!'); + + return json_decode($curl_response, true); +} + + +function shell($case, $string_ips, $command) { + + $ips = explode(';',$string_ips); + + switch ($case) { + case 1: + $data = array(OG_REST_PARAM_CLIENTS => $ips, + OG_REST_PARAM_RUN => $command); + $command = OG_REST_CMD_RUN; + break; + default: + case 2: + $data = array(OG_REST_PARAM_CLIENTS => $ips); + $command = OG_REST_CMD_OUTPUT; + } + + $result = common_request($command, POST, + $data)[OG_REST_PARAM_CLIENTS][0]['output']; + + return (is_null($result) ? '1' : $result); +} + +function clients($case, $ips) { + + switch ($case) { + case 1: + $type = POST; + $data = array(OG_REST_PARAM_CLIENTS => $ips); + break; + case 2: + $type = GET; + $data = null; + break; + } + + $result = common_request(OG_REST_CMD_CLIENTS, $type, $data); + + $trama_notificacion = ""; + if (isset($result[OG_REST_PARAM_CLIENTS])) { + foreach ($result[OG_REST_PARAM_CLIENTS] as $client) { + $trama_notificacion .= $client[OG_REST_PARAM_ADDR].'/'. + $client[OG_REST_PARAM_STATE].';'; + } + } + + return $trama_notificacion; +} + +function wol($type_wol, $macs, $ips) { + + switch ($type_wol) { + default: + case 1: + $wol = 'broadcast'; + break; + case 2: + $wol = 'unicast'; + } + + $clients = array(); + + for($i=0; $i<count($macs); $i++) { + $clients[] = array(OG_REST_PARAM_ADDR => $ips[$i], + OG_REST_PARAM_MAC => $macs[$i]); + } + + $data = array(OG_REST_PARAM_TYPE => $wol, + OG_REST_PARAM_CLIENTS => $clients); + + common_request(OG_REST_CMD_WOL, POST, $data); +} + +function session($string_ips, $params) { + + preg_match_all('!\d{1}!', $params, $matches); + + $ips = explode(';',$string_ips); + $disk = $matches[0][0]; + $part = $matches[0][1]; + + $data = array(OG_REST_PARAM_CLIENTS => $ips, + OG_REST_PARAM_DISK => $disk, OG_REST_PARAM_PART => $part); + + common_request(OG_REST_CMD_SESSION, POST, $data); +} + +function poweroff($string_ips) { + + $ips = explode(';',$string_ips); + + $data = array(OG_REST_PARAM_CLIENTS => $ips); + + common_request(OG_REST_CMD_POWEROFF, POST, $data); +} + +function reboot($string_ips) { + + $ips = explode(';',$string_ips); + + $data = array(OG_REST_PARAM_CLIENTS => $ips); + + common_request(OG_REST_CMD_REBOOT, POST, $data); +} + +function stop($string_ips) { + + $ips = explode(';',$string_ips); + + $data = array(OG_REST_PARAM_CLIENTS => $ips); + + common_request(OG_REST_CMD_STOP, POST, $data); +} + +function refresh($string_ips) { + + $ips = explode(';',$string_ips); + + $data = array(OG_REST_PARAM_CLIENTS => $ips); + + common_request(OG_REST_CMD_REFRESH, POST, $data); +} + +function hardware($string_ips) { + + $ips = explode(';',$string_ips); + + $data = array(OG_REST_PARAM_CLIENTS => $ips); + + common_request(OG_REST_CMD_HARDWARE, POST, $data); +} + +function software($string_ips) { + + $ips = explode(';',$string_ips); + + $data = array(OG_REST_PARAM_CLIENTS => $ips); + + common_request(OG_REST_CMD_SOFTWARE, POST, $data); +} + /* * @function multiRequest. * @param URLs array (may include header and POST data), cURL options array. @@ -69,4 +276,4 @@ function multiRequest($data, $options=array(CURLOPT_SSL_VERIFYHOST => false, CUR return $result; } -?> + diff --git a/admin/WebConsole/includes/tftputils.php b/admin/WebConsole/includes/tftputils.php index 5cf2da88..aca054a5 100644 --- a/admin/WebConsole/includes/tftputils.php +++ b/admin/WebConsole/includes/tftputils.php @@ -12,12 +12,13 @@ include_once("../includes/ctrlacc.php"); include_once("../clases/AdoPhp.php"); // Directorio de ficheros PXE. -define("PXEDIR", "/opt/opengnsys/tftpboot/menu.lst"); +define("PXEDIRBIOS", "/opt/opengnsys/tftpboot/menu.lst"); +define("PXEDIRUEFI", "/opt/opengnsys/tftpboot/grub"); /** * @brief Sustituye espacio por "_" y quita acentos y tildes. - * @param cadena Cadena a modificar. + * @param string Cadena a modificar. * @return string Cadena modificada. * @versión 1.0.5 - Primera versión, adaptada de NetBoot Avanzado. * @author @@ -47,13 +48,13 @@ function clientKernelVersion () { /** - * createBootMode ($cmd, $bootopt, $hostid, $lang) + * createBootMode ($cmd, $bootopt, $hostname, $lang) * @brief Crea un fichero PXE para el ordenador basado en la plantilla indicada y usando * los datos almacenados en la BD. - * @param {Object} cmd Objeto de conexión a la base de datos. - * @param {String} bootopt Plantilla de arranque PXE. - * @param {Number} hostid Id. del ordenador. - * @param {String} lang Idioma de arranque. + * @param Object cmd Objeto de conexión a la base de datos. + * @param String bootopt Plantilla de arranque PXE. + * @param String hostname Nombre del ordenador. + * @param String lang Idioma de arranque. * @version 1.0.5 - Primera versión, adaptada de NetBoot Avanzado (Antonio J. Doblas Viso - Universidad de Málaga) * @author Ramón Gómez - ETSII Universidad de Sevilla * @date 2013-04-25 @@ -63,68 +64,23 @@ function clientKernelVersion () { * @version 1.1.0 - La segunda fase de carga del ogLive se define en el SERVER para evitar erores de sincronismo entre versiones (ticket #787). * @author Antonio J. Doblas Viso - Universidad de Malaga * @date 2017-06-01 - * @version 1.1.0 - Se incluye el nombre del perfil hardware y se elimina el winboot (ticket #828). + * @version 1.1.0 - Se incluye el nombre del perfil hardware y se elimina el winboot (ticket #828). * @author Antonio J. Doblas Viso - Universidad de Malaga * @date 2018-01-21 + * @version 1.1.1 - Se utiliza setclientmode. Gestiona plantilla bios y uefi (ticket #802 #888) + * @author Irina Gómez - ETSII Universidad de Sevilla + * @date 2019-03-14 */ -function createBootMode ($cmd, $bootopt, $hostid, $lang) { +function createBootMode ($cmd, $bootopt, $hostname, $lang) { + global $cadenaconexion; + + // Datos para el acceso a mysql + $strcn=explode(";",$cadenaconexion); + $acceso="USUARIO=".$strcn[1]." PASSWORD=".$strcn[2]." CATALOG=".$strcn[3]; // Plantilla con las opciones por defecto. if (empty ($bootopt)) $bootopt = "00unknown"; - // Actualizar opción de arranque para el equipo. - $cmd->CreaParametro("@arranque",$bootopt,0); - $cmd->CreaParametro("@idordenador",$hostid,1); - $cmd->texto="UPDATE ordenadores SET arranque=@arranque WHERE idordenador=@idordenador"; - $cmd->Ejecutar(); - - // Obtener información de la base de datos. - $cmd->texto="SELECT ordenadores.nombreordenador AS hostname, ordenadores.ip AS ip, - ordenadores.mac AS mac, ordenadores.netiface AS netiface, - ordenadores.oglivedir AS oglivedir, - aulas.netmask AS netmask, aulas.router AS router, - aulas.ntp AS ntp, aulas.dns AS dns, aulas.proxy AS proxy, - aulas.nombreaula AS grupo, IFNULL(repositorios.ip, '') AS iprepo, - (SELECT ipserveradm FROM entornos LIMIT 1) AS ipserveradm, - menus.resolucion AS vga, perfileshard.descripcion AS hardprofile, - centros.directorio, entidades.ogunit - FROM ordenadores - JOIN aulas USING (idaula) - JOIN centros USING (idcentro) - JOIN entidades USING (identidad) - LEFT JOIN repositorios USING (idrepositorio) - LEFT JOIN menus USING (idmenu) - LEFT JOIN perfileshard USING (idperfilhard) - WHERE ordenadores.idordenador='$hostid'"; - - $rs=new Recordset; - $rs->Comando=&$cmd; - if (!$rs->Abrir()) return; - $rs->Primero(); - $hostname=$rs->campos["hostname"]; - $ip=$rs->campos["ip"]; - $mac=$rs->campos["mac"]; - $netiface=$rs->campos["netiface"]; - $netmask=$rs->campos["netmask"]; - $router=$rs->campos["router"]; - $ntp=$rs->campos["ntp"]; - $dns=$rs->campos["dns"]; - $proxy=$rs->campos["proxy"]; - $group=cleanString($rs->campos["grupo"]); - $repo=$rs->campos["iprepo"]; - $server=$rs->campos["ipserveradm"]; - $vga=$rs->campos["vga"]; - $hardprofile=cleanString($rs->campos["hardprofile"]); - $oglivedir=$rs->campos["oglivedir"]; - $ogunit=$rs->campos["ogunit"]; - if ($ogunit == 0 or $rs->campos["directorio"] == null) { - $directorio="" ; - } else { - $directorio=$rs->campos["directorio"]; - } - - $rs->Cerrar(); - // Componer código de idioma para el parámetro de arranque. switch ($lang) { case "eng": @@ -138,49 +94,18 @@ function createBootMode ($cmd, $bootopt, $hostid, $lang) { break; } - // Componer parámetros del kernel. - $infohost=" LANG=$lang". - " ip=$ip:$server:$router:$netmask:$hostname:$netiface:none" . - " group=$group" . - " ogrepo=$repo" . - " oglive=$server" . - " oglog=$server" . - " ogshare=$server"; - // Añadir parámetros opcionales. - if (! empty ($ntp)) { $infohost.=" ogntp=$ntp"; } - if (! empty ($dns)) { $infohost.=" ogdns=$dns"; } - if (! empty ($proxy)) { $infohost.=" ogproxy=$proxy"; } - if (! empty ($hardprofile)) { $infohost.=" hardprofile=$hardprofile"; } - // Comprobar si se usa el parámetro "vga" (número de 3 cifras) o "video" (cadena). - if (! empty ($vga)) { - // UHU - Se sustituye la función is_int por is_numeric, ya que al ser un string no funciona bien con is_int - if (is_numeric($vga) && strlen($vga) == 3) { - $infohost.=" vga=$vga"; - } else { - $infohost.=" video=$vga"; - } - } - if (! empty ($directorio)) { $infohost.=" ogunit=$directorio"; } - - $mac = substr($mac,0,2) . ":" . substr($mac,2,2) . ":" . substr($mac,4,2) . ":" . substr($mac,6,2) . ":" . substr($mac,8,2) . ":" . substr($mac,10,2); - $macfile = PXEDIR . "/01-" . str_replace(":", "-", strtoupper($mac)); - - // Crear fichero de arranque a partir de la plantilla y los datos del cliente. - // UHU - si el parametro vga no existe, no se quita. - if (! empty ($vga)) { - exec("sed -e 's|vga=...||g; s|INFOHOST|$infohost|g; s|set ISODIR=.*|set ISODIR=$oglivedir|g' " . PXEDIR . "/templates/$bootopt > $macfile"); - } - else{ - exec("sed -e 's|INFOHOST|$infohost|g; s|set ISODIR=.*|set ISODIR=$oglivedir|g; s|set ISODIR=.*|set ISODIR=$oglivedir|g' " . PXEDIR . "/templates/$bootopt > $macfile"); - } - chmod($macfile, 0777); + // Descripción plantilla PXE + $description=exec("awk 'NR==1 {print $2}' ".PXEDIRBIOS."/templates/".$bootopt); + if ($description === "") $description=exec("awk 'NR==1 {print $2}' ".PXEDIRUEFI."/templates/".$bootopt); + // Llamamos al script setclientmode + shell_exec("export LANG=$lang $acceso; /opt/opengnsys/bin/setclientmode $description $hostname PERM"); } /** * deleteBootFile ($mac) * @brief Borra el fichero PXE del ordenador con la dirección MAC correspondiente. - * @param {String} mac Dirección MAC del ordenador (sin caracteres ":"). + * @param String mac Dirección MAC del ordenador (sin caracteres ":"). * @versión 1.0.5 - Primera versión, adaptada de NetBoot Avanzado. * @authors Ramón Gómez - ETSII Universidad de Sevilla * @date 2013-04-25 @@ -189,19 +114,20 @@ function deleteBootFile ($mac) { // Obtener nombre de fichero a partir de dirección MAC. $mac = strtoupper($mac); - $macfile = PXEDIR . "/01-" . substr($mac, 0, 2) . "-" . substr($mac, 2, 2) . "-" . substr($mac, 4, 2) . "-" . substr($mac, 6, 2) . "-" . substr($mac, 8, 2) . "-" . substr($mac, 10, 2); + $macfile = "/01-" . substr($mac, 0, 2) . "-" . substr($mac, 2, 2) . "-" . substr($mac, 4, 2) . "-" . substr($mac, 6, 2) . "-" . substr($mac, 8, 2) . "-" . substr($mac, 10, 2); // Eliminar el fichero. - @unlink($macfile); + @unlink(PXEDIRBIOS.$macfile); + @unlink(PXEDIRUEFI.$macfile); } /** * updateBootMode ($cmd, $idfield, $idvalue, $lang) * @brief Ejecuta la función para componer fichero PXE para todos los clientes que cumplan * con un determinado criterio de búsqueda basado en clave ejena. - * @param {Object} cmd Objeto de conexión con la base de datos. - * @param {String} idfield Campo identificador de la clave ajena para buscar ordenadores. - * @param {Number} idvalue Valor a buscar en el Ãdentificador de la clave ajena. - * @param {String} lang Idioma de arranque. + * @param Object cmd Objeto de conexión con la base de datos. + * @param String idfield Campo identificador de la clave ajena para buscar ordenadores. + * @param Integer idvalue Valor a buscar en el Ãdentificador de la clave ajena. + * @param String lang Idioma de arranque. * @versión 1.0.5 - Primera versión, adaptada de NetBoot Avanzado. * @authors Ramón Gómez - ETSII Universidad de Sevilla * @date 2013-04-25 @@ -216,7 +142,7 @@ function updateBootMode ($cmd, $idfield, $idvalue, $lang) { $idvalue = mysqli_real_escape_string ($cmd->Conexion->controlador, $idvalue); // Obtener los ordenadores asociados al aula y sus plantillas de arranque. - $cmd->texto = "SELECT idordenador AS hostid, arranque AS bootopt + $cmd->texto = "SELECT nombreordenador AS hostname, arranque AS bootopt FROM ordenadores WHERE $idfield=$idvalue"; $rs = new Recordset; @@ -224,11 +150,12 @@ function updateBootMode ($cmd, $idfield, $idvalue, $lang) { if ($rs->Abrir()) { $rs->Primero(); while (! $rs->EOF) { - $hostid=$rs->campos["hostid"]; - if (! empty ($hostid)) { + $hostname=$rs->campos["hostname"]; + if (! empty ($hostname)) { $bootopt=$rs->campos["bootopt"]; + // Volver a crear el fichero de arranque. - createBootMode ($cmd, $bootopt, $hostid, $lang); + createBootMode ($cmd, $bootopt, $hostname, $lang); } $rs->Siguiente(); } @@ -239,9 +166,9 @@ function updateBootMode ($cmd, $idfield, $idvalue, $lang) { /** * updateBootRepo ($cmd, $repoid) * @brief Actualiza la IP del repositorio en los ficheros PXE de todos sus equipos asociados. - * @param {Object} cmd Objeto de conexión con la base de datos - * @param {Integer} repoid Campo identificador del repositorio - * @return {Integer} 0, sin errores; -1, error acceso a BD; >0, ficheros no modificados + * @param Object cmd Objeto de conexión con la base de datos + * @param Integer repoid Campo identificador del repositorio + * @return Integer 0, sin errores; -1, error acceso a BD; >0, ficheros no modificados * @versión 1.1.0 - Primera versión. * @authors Ramón Gómez - ETSII Universidad de Sevilla * @date 2018-01-19 @@ -261,13 +188,15 @@ function updateBootRepo ($cmd, $repoid) { $mac = $rs->campos["mac"]; $repo = $rs->campos["iprepo"]; // Obtener nombre de fichero PXE a partir de la MAC del ordenador cliente. - $macfile = PXEDIR . "/01-" . substr($mac, 0, 2) . "-" . substr($mac, 2, 2) . "-" . substr($mac, 4, 2) . "-" . substr($mac, 6, 2) . "-" . substr($mac, 8, 2) . "-" . substr($mac, 10, 2); + $macfile = "/01-" . substr($mac, 0, 2) . "-" . substr($mac, 2, 2) . "-" . substr($mac, 4, 2) . "-" . substr($mac, 6, 2) . "-" . substr($mac, 8, 2) . "-" . substr($mac, 10, 2); // Actualizar parámetro "ogrepo" en el fichero PXE. - if ($pxecode = @file_get_contents($macfile)) { + foreach (array (PXEDIRBIOS,PXEDIRUEFI) as $bootdir) { + if ($pxecode = @file_get_contents($bootdir.$macfile)) { $pxecode = preg_replace("/ogrepo=[^ ]*/", "ogrepo=$repo", $pxecode); - if (! @file_put_contents($macfile, $pxecode)) { - $erros++; + if (! @file_put_contents($bootdir.$macfile, $pxecode)) { + $errors++; } + } } $rs->Siguiente(); } diff --git a/admin/WebConsole/jscripts/boot_grub4dos.js b/admin/WebConsole/jscripts/boot_grub4dos.js index 7deffdf4..e7cd8359 100644 --- a/admin/WebConsole/jscripts/boot_grub4dos.js +++ b/admin/WebConsole/jscripts/boot_grub4dos.js @@ -8,6 +8,8 @@ // Este fichero implementa las funciones javascript del fichero boot_grub4dos.php // ************************************************************************************************************************************************* //________________________________________________________________________________________________________ +// Se utiliza en los botones in y out de las columnas +// Permite mover los equipos seleccionados desde una columna a otra function move(fbox, tbox) { var arrFbox = new Array(); var arrTbox = new Array(); @@ -50,27 +52,25 @@ no.text = arrTbox[c]; tbox[c] = no; } } - +// Se utiliza al enviar el formulario +// Asigna como valor del campo listOfItems un listado +// con las correspodendencias nombre plantilla - nombre equipo. +// Version 1.1.1 - Se identifica plantilla y equipo como necesita la función createBootMode (#802 #888) function allSelect() { -var saveString = ""; -// seleccionamos cada uno de los select -var input = document.getElementsByTagName('select'); -//alert(input.length); -for(var i=0; i<input.length; i++){ -//if(inputs[i].getAttribute('type')=='button'){ -// your statements -patron = "L"; -parm = input[i].name; -//alert(parm); -parm = parm.replace(patron,''); -//alert(parm); -for (j=0;j<input[i].length;j++) - { - //List.options[i].selected = true; - saveString = saveString + parm + '|' + input[i].options[j].value + ';'; - //alert(saveString); - } + var saveString = ""; + // seleccionamos cada uno de los select + var input = document.getElementsByTagName('select'); + + for(var i=0; i<input.length; i++){ + // quitamos L inicial + patron = "L"; + parm = input[i].name; + parm = parm.replace(patron,''); + + for (j=0;j<input[i].length;j++) { + saveString = saveString + parm + '|' + input[i].options[j].text + ';'; + } + } + document.forms[0].listOfItems.value = saveString; } -document.forms['myForm'].listOfItems.value = saveString; -}
\ No newline at end of file diff --git a/admin/WebConsole/jscripts/consolaremota.js b/admin/WebConsole/jscripts/consolaremota.js index b5f78ba8..26c0e9c9 100644 --- a/admin/WebConsole/jscripts/consolaremota.js +++ b/admin/WebConsole/jscripts/consolaremota.js @@ -5,7 +5,7 @@ function confirmar() { ambito=document.fdatos.ambito.value; if(ambito==AMBITO_ORDENADORES){ - var diveco=document.getElementById("diveco"); // Contenedor de salida de código + var diveco=document.getElementById("diveco"); // Contenedor de salida de código diveco.innerHTML=" "; // } var Obtcmd=document.getElementById("comando"); @@ -37,7 +37,7 @@ function enviaMsg(cmd) } //______________________________________________________________________________________________________ function resultadocmd(resul){ - if(resul==1){ // Si todo va bien se llama a la función que recupera elfichero de eco + if(resul==1){ // Si todo va bien se llama a la función que recupera elfichero de eco //alert(TbMsg[1]) if(ambito==AMBITO_ORDENADORES){ sw=2; diff --git a/admin/WebConsole/menus/examplemenu.php b/admin/WebConsole/menus/examplemenu.php index b04b3dd0..0738c797 100644 --- a/admin/WebConsole/menus/examplemenu.php +++ b/admin/WebConsole/menus/examplemenu.php @@ -58,19 +58,14 @@ <dl class="windows"> <dt><a href="command:bootOs 1 1" title="Init session Windows, accesskey: 1" accesskey="1">Init session Windows.</a></dt> <dd>Normal boot Windows without changes.</dd> - <dt><a href="commandwithconfirmation:restoreImage REPO windows 1 1" title="Format the disk and install the Windows operating system, accesskey: 2" accesskey="2">Install Windows.</a></dt> + <dt><a href="command+confirm:restoreImage REPO windows 1 1" title="Format the disk and install the Windows operating system, accesskey: 2" accesskey="2">Install Windows.</a></dt> <dd>The installation process takes a few minutes.</dd> </dl> - <!-- dl class="windows"> - <dt><a href="commandwithconfirmation:/opt/opengnsys/interfaceAdm/RestaurarImagenBasica 1 1 WINXPRD2 10.1.15.3 0000 0" title="Restore Windows Image, accesskey: 2" accesskey="2">Restore Windows Image.</a></dt> - <dd>Restore Windows Image using synchronization.</dd> - </dl --> - <dl class="linux"> - <dt><a href="command:bootOs 1 2" title="Init session GNU/Linux, accesskey: 3" accesskey="3">Init session GNU/Linux.</a></dt> + <dt><a href="command+output:bootOs 1 2" title="Init session GNU/Linux, accesskey: 3" accesskey="3">Init session GNU/Linux.</a></dt> <dd>Normal boot <acronym title="GNU's not Unix">GNU</acronym>/Linux without changes.</dd> - <dt><a href="commandwithconfirmation:restoreImage REPO linux 1 2" title="Format the disk and install the GNU/Linux operating system GNU/Linux, accesskey: 4" accesskey="4">Install GNU/Linux.</a></dt> + <dt><a href="command+output+confirm:restoreImage REPO linux 1 2" title="Format the disk and install the GNU/Linux operating system GNU/Linux, accesskey: 4" accesskey="4">Install GNU/Linux.</a></dt> <dd>The installation process takes a few minutes.</dd> </dl> diff --git a/admin/WebConsole/menus/menuejemplo.php b/admin/WebConsole/menus/menuejemplo.php index b3fcd175..7ceead9e 100644 --- a/admin/WebConsole/menus/menuejemplo.php +++ b/admin/WebConsole/menus/menuejemplo.php @@ -58,20 +58,15 @@ <dl class="windows"> <dt><a href="command:bootOs 1 1" title="Iniciar sesión de Windows, accesskey: 1" accesskey="1">[1] Arrancar Windows.</a></dt> <dd>Arranque normal de Windows sin modificaciones.</dd> - <dt><a href="commandwithconfirmation:restoreImage REPO windows 1 1" title="Formatear el disco e instalar el sistema operativo Windows, accesskey: 2" accesskey="2">[2] Instalar Windows. </a></dt> + <dt><a href="command+confirm:restoreImage REPO windows 1 1" title="Formatear el disco e instalar el sistema operativo Windows, accesskey: 2" accesskey="2">[2] Instalar Windows. </a></dt> <dd>El proceso de instalación tardará unos minutos.</dd> </dl> - <!-- dl class="windows"> - <dt><a href="commandwithconfirmation:/opt/opengnsys/interfaceAdm/RestaurarImagenBasica 1 1 WINXPRD2 10.1.15.3 0000 0" title="Sincronizar imagen de Windows, accesskey: 2" accesskey="2">Sincronizar Imagen Window.</a></dt> - <dd>Restaurar Imagen Windows con sincronización.</dd> - </dl --> - <dl class="linux"> - <dt><a href="command:bootOs 1 2" title="Iniciar sesión de Ubuntu 12, accesskey: 3" accesskey="3">[3] Arrancar GNU/Linux. </a></dt> + <dt><a href="command+output:bootOs 1 2" title="Iniciar sesión de Ubuntu 12, accesskey: 3" accesskey="3">[3] Arrancar GNU/Linux. </a></dt> <dd>Arranque normal de <acronym title="GNU's not Unix">GNU</acronym>/Linux sin modificaciones.</dd> - <dt><a href="commandwithconfirmation:restoreImage REPO linux 1 2" title="Formatear el disco e instalar el sistema operativo GNU/Linux, accesskey: 4" accesskey="4">[4] Instalar GNU/Linux. </a></dt> + <dt><a href="command+output+confirm:restoreImage REPO linux 1 2" title="Formatear el disco e instalar el sistema operativo GNU/Linux, accesskey: 4" accesskey="4">[4] Instalar GNU/Linux. </a></dt> <dd>El proceso de instalación tardará unos minutos.</dd> </dl> diff --git a/admin/WebConsole/nada.php b/admin/WebConsole/nada.php index 9e0aa255..4393b463 100644 --- a/admin/WebConsole/nada.php +++ b/admin/WebConsole/nada.php @@ -1,6 +1,32 @@ <?php +/** + * @file nada.php + * @brief Muestra el marco derecho "por defecto" cuando no se ejecuta un comando. + * @version 1.1.1 - Se incluyen consejos del dÃa la primera vez que se entra. + * @date 2019-09-06 + */ + include_once("./includes/ctrlacc.php"); include_once("./idiomas/php/".$idioma."/nada_".$idioma.".php"); + +// ################### Consejo del dÃa ################# // +// Sólo lo muestro al entrar en la consola +$consejo = ''; +if (basename($_SERVER['HTTP_REFERER']) == "frames.php") { + // Elijo el consejo de hoy aleatoriamente. + $numTip=rand(0,count($TipOfDay)-1); + $tipMessage=$TipOfDay[$numTip]; + $tipImage=is_file("images/tipOfDay_$numTip.png") ? '<img src="images/tipOfDay_'.$numTip.'.png">' : ''; + + $consejo = ' <div>'."\n". + ' <p align=center class=cabeceras><img border=0 nod="aulas-1" value="Sala Virtual" style="cursor:pointer" src="images/iconos/logocirculos.png" > '.$TbMsg["TIP"].'</p>'."\n". + ' <div class="consejo">'."\n". + ' <p class="subcabeceras help_menu">'.$tipMessage.'</p>'."\n". + ' <div>'.$tipImage.'</div>'."\n". + ' </div>'."\n". + ' </div>'."\n"; +} + // ########################################################################################################## // ############### PARA SABER QUE IP TIENE EL DISPOSITIVO QUE ESTA UTILIZANDO OPENGNSYS ################### // ########################################################################################################## @@ -229,9 +255,7 @@ if (empty($data->project)) { <link rel="stylesheet" type="text/css" href="./estilos.css"> </head> <body> - -"Here we will show our content" - + <?php echo $consejo; ?> </body> </html> diff --git a/admin/WebConsole/principal/actualizar.php b/admin/WebConsole/principal/actualizar.php index a67e3585..500b0b89 100644 --- a/admin/WebConsole/principal/actualizar.php +++ b/admin/WebConsole/principal/actualizar.php @@ -15,6 +15,7 @@ include_once("../includes/comunes.php"); include_once("../includes/CreaComando.php"); include_once("../includes/RecopilaIpesMacs.php"); + include_once('../includes/restfunctions.php'); //________________________________________________________________________________________________________ $ambito=0; $idambito=0; @@ -41,23 +42,5 @@ //________________________________________________________________________________________________________ // Envio al servidor de la petición //________________________________________________________________________________________________________ - $trama=""; - $shidra=new SockHidra($servidorhidra,$hidraport); - if ($shidra->conectar()){ // Se ha establecido la conexión con el servidor hidra - $parametros="nfn=".$funcion.chr(13); - $parametros.=$aplicacion; - $parametros.=$atributos; - $parametros.=$acciones; - $shidra->envia_comando($parametros); - $trama=$shidra->recibe_respuesta(); - $shidra->desconectar(); - $hlonprm=hexdec(substr($trama,$LONCABECERA,$LONHEXPRM)); - $parametros=substr($trama,$LONCABECERA+$LONHEXPRM,$hlonprm); - $ValorParametros=extrae_parametros($parametros,chr(13),'='); - $trama_notificacion=$ValorParametros["res"]; - echo $trama_notificacion; // Devuelve respuesta - } - else - echo "0"; // Error de conexión -?> + echo refresh($cadenaip) === 0 ? "0" : "1"; diff --git a/admin/WebConsole/principal/aula.php b/admin/WebConsole/principal/aula.php index f687c0b6..f300c508 100644 --- a/admin/WebConsole/principal/aula.php +++ b/admin/WebConsole/principal/aula.php @@ -187,7 +187,7 @@ function RecorreAulas($cmd){ while (!$rs->EOF){ $idaula=$rs->campos["idaula"]; $nombreaula=$rs->campos["nombreaula"]; - $idordprofesor=$rs->campos["idordprofesor"]; + $idordprofesor=(isset($rs->campos["idordprofesor"]) ? $rs->campos["idordprofesor"] : 0); $cmd->texto="SELECT idordenador,nombreordenador,ip,mac FROM ordenadores WHERE idaula=".$idaula; $k=0; $cadenaip=""; diff --git a/admin/WebConsole/principal/ayuda.php b/admin/WebConsole/principal/ayuda.php index b5380e5c..3bd8aeae 100644 --- a/admin/WebConsole/principal/ayuda.php +++ b/admin/WebConsole/principal/ayuda.php @@ -28,6 +28,7 @@ $version=(empty($data->project)) ? "OpenGnsys" : @$data->project.' '.@$data->ver <p class=subcabeceras><a class="help_menu" href="manual.php"> <?php echo $TbMsg["MANUAL"] ?> </a> </p> <p class=subcabeceras><a class="help_menu" href="../api/index.html"> <?php echo $TbMsg["API"] ?> </a></p> <p class=subcabeceras><a class="help_menu" href="engine.php"> <?php echo $TbMsg["CFG"] ?> </a> </p> + <p class=subcabeceras><a class="help_menu" href="../rest/"> <?php echo $TbMsg["REST"] ?> </a></p> <p> </p> <p class=subcabeceras><a class="help_menu" href="changelog.php"> <?php echo $TbMsg["CHANGELOG"]." ".$version ?> </a> </p> <p class=subcabeceras><a class="help_menu" href="https://listas.unizar.es/cgi-bin/mailman/listinfo/opengnsys-users" target="_blank"> <?php echo $TbMsg["USERMAIL"] ?> </a> </p> diff --git a/admin/WebConsole/principal/boot_grub4dos.php b/admin/WebConsole/principal/boot_grub4dos.php index e8a5a902..fbd7e171 100644 --- a/admin/WebConsole/principal/boot_grub4dos.php +++ b/admin/WebConsole/principal/boot_grub4dos.php @@ -1,11 +1,10 @@ <?php +// Version 1.1.1 - Muestra las plantillas tipo BIOS y UEFI. Se incluyen algunos id para pasar los datos necesarios a serclientmode (#802). +// Autor: Irina Gomez - ETSII Universidad de Sevilla. +// Fecha: 2019/02/12 + include_once("../includes/ctrlacc.php"); include_once("../clases/AdoPhp.php"); -include_once("../clases/XmlPhp.php"); -include_once("../clases/MenuContextual.php"); -include_once("../clases/SockHidra.php"); -include_once("../includes/constantes.php"); -include_once("../includes/comunes.php"); include_once("../includes/CreaComando.php"); include_once("../idiomas/php/".$idioma."/boot_grub4dos_".$idioma.".php"); @@ -19,16 +18,12 @@ $idambito=0; $nombreambito=""; $opcion=0; $modo=""; - - -if (isset($_GET["litambito"])) $litambito=$_GET["litambito"]; // Recoge parametros -if (isset($_GET["idambito"])) $idambito=$_GET["idambito"]; -if (isset($_GET["nombreambito"])) $nombreambito=$_GET["nombreambito"]; -if (isset($_POST["litambito"])) $litambito=$_POST["litambito"]; // Recoge parametros -if (isset($_POST["idambito"])) $idambito=$_POST["idambito"]; -if (isset($_POST["nombreambito"])) $nombreambito=$_POST["nombreambito"]; -if (isset($_POST["opcion"])) $opcion=$_POST["opcion"]; -if (isset($_POST["modo"])) $modo=$_POST["modo"]; +if (isset($_REQUEST["litambito"])) $litambito=$_REQUEST["litambito"]; // Recoge parametros +if (isset($_REQUEST["idambito"])) $idambito=$_REQUEST["idambito"]; +if (isset($_REQUEST["nombreambito"])) $nombreambito=$_REQUEST["nombreambito"]; +if (isset($_REQUEST["opcion"])) $opcion=$_REQUEST["opcion"]; +if (isset($_REQUEST["modo"])) $modo=$_REQUEST["modo"]; +if (empty($_SESSION["widcentro"])) $modo=1; switch($litambito){ case "aulas": @@ -36,81 +31,72 @@ switch($litambito){ break; case "gruposordenadores": $seleccion= "and grupoid=" . $idambito . ""; + default: + $seleccion=""; break; } + //######################################################################### // LEYENDO EL DIRECTORIO -// /var/lib/tftboot/menu.lst/templates +// /var/lib/tftboot/menu.lst/templates y /var/lib/tftpboot/grub/templates/ //######################################################################### -$dirtemplates="/var/lib/tftpboot/menu.lst/templates/"; -// Leer nombres de ficheros y quitar plantilla "pxe". -chdir($dirtemplates); -$pn=glob("*"); +// Leer nombres de ficheros plantillas bios +$dirtemplatesbios="/var/lib/tftpboot/menu.lst/templates/"; +chdir($dirtemplatesbios); +$pnbios=glob("*"); + +// Leer nombres de ficheros plantillas uefi +$dirtemplatesuefi="/var/lib/tftpboot/grub/templates/"; +chdir($dirtemplatesuefi); +$pnuefi=glob("*"); + +// Unimos las plantillas y eliminamos repetidos +$pn=array_unique(array_merge($pnbios,$pnuefi)); + +// Numero columnas +$column=count($pn); + +// Plantilla en los dos directorios +$pncomun=array_intersect($pnbios,$pnuefi); + +// quitar plantilla "pxe". unset($pn[array_search("pxe", $pn)]); sort($pn); chdir(__DIR__); -//Leemos el ultimo fichero y extraemos su numero -$ultimofichero=end($pn); -$ultimonumero=substr($ultimofichero,0,2); - -//Comprobamos que no se mayor que 99 (tendria 3 caracteres) -if ($ultimonumero==99) - {$ultimonumero=20; -}else{ - $ultimonumero++; -} -//Buscamos si el siguiente numero esta disponible -$encontrado=FALSE; -while($encontrado==FALSE) -{ - if (in_array($ultimonumero, $pn)) - { - $ultimonumero++; - }else{ - $encontrado=TRUE; - } -} ?> <html> -<TITLE>Administración web de aulas</TITLE> <head> +<TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="../jscripts/propiedades_aulas.js"></SCRIPT> <SCRIPT language="javascript" src="../jscripts/opciones.js"></SCRIPT> <SCRIPT language="javascript" src="../jscripts/boot_grub4dos.js"></SCRIPT> - <SCRIPT language="javascript" src="../idiomas/javascripts/esp/propiedades_aulas_esp.js"></SCRIPT></HEAD> + <SCRIPT language="javascript" src="../idiomas/javascripts/esp/propiedades_aulas_esp.js"></SCRIPT> </head> <body> -<TABLE align=center border=1 cellPadding=1 cellSpacing=1 class=tabla_datos > -<TR valign="bottom"><TD colspan="100%" align="left" nowrap> -<form name="modoadmin" id="modoadmin" method="post" action="./boot_grub4dos.php"> +<form name="modoadmin" id="modoadmin" method="post" action="../gestores/gestor_pxe_grub4dos.php"> <input type="hidden" name="litambito" value="<?php echo $litambito?>"> <input type="hidden" name="idambito" value="<?php echo $idambito?>"> <input type="hidden" name="nombreambito" value="<?php echo $nombreambito?>"> <input type="hidden" name="opcion" value="<?php echo $opcion?>"> -<?php - if (empty($_SESSION["widcentro"])) { - $modo=1; - } -?> -</form> - + <input type="hidden" name="listOfItems" value=""> + <!-- para la zona de administración --> + <input type="hidden" name="opcioncrear" value=""> + <P align=center class=cabeceras><?php echo $TbMsg[42]; ?><BR> + <span align=center class=subcabeceras> <?php echo $nombreambito; ?> </span> +<TABLE align=center border=1 cellPadding=1 cellSpacing=1 class=tabla_datos > +<TR valign="bottom"><TD colspan="100%" align="left" nowrap> </TD></TR> <tr> <?php -if (! empty($modo)) -{?> -<td valign="top"> -<?php include_once("./boot_grub4dos_tabla.php");?> -</td> -<?php }?> -<form name="myForm" method="post" action="../gestores/gestor_pxe_grub4dos.php?idaula=<?php echo $idambito ?>&nombreambito=<?php echo $nombreambito?>&litambito=<?php echo $litambito?>" > +// Si el modo no está vacio estamos en la parte de administración +// Incluyo un a primera columna con las opciones crear, modificar,... +if (! empty($modo)) include_once("./boot_grub4dos_tabla.php"); +?> - <P align=center class=cabeceras><?php echo $TbMsg[42]; ?><BR> - <span align=center class=subcabeceras> <?php echo $nombreambito; ?> </span> <?php ///////////////////////////////////////////////// if (!empty($_SESSION["widcentro"])){ ?> <input type="submit" value=<?php echo $TbMsg[43]; ?> name="saveButton" onclick="allSelect()"></P> @@ -118,15 +104,12 @@ if (! empty($modo)) } ?> -<input type="hidden" name="listOfItems" value=""> -<?php -?> <!-- primer file, nombre de las equipos por pxe hace falta <td> </td>--> -<td width="80"> +<td width="80" id='ogLive'> <!-- <a href="./muestramenu.php?labelmenu=pxe"> OGlive </a><br> pxe <br> --> <?php //Leer fichero pxe -$description=exec("awk 'NR==1 {print $2}' ".$dirtemplates."pxe");//$text=trim($text); +$description=exec("awk 'NR==1 {print $2}' ".$dirtemplatesbios."pxe"); ?> <br><?php echo $description;?> <br><br> <select multiple size="28" name="Lpxe" id="Lpxe"> @@ -151,15 +134,22 @@ if (!empty($_SESSION["widcentro"])) // //mostrar los datos -for($i=0; $i<count($pn); $i++) - {//for +for($i=0; $i<count($pn); $i++) { + $nocomun=""; + $description=exec("awk 'NR==1 {print $2}' ".$dirtemplatesbios.$pn[$i]); + // Si la plantilla no es comun, definimos si es bios o uefi + if ( ! in_array($pn[$i],$pncomun)) { + $nocomun= ($description === "") ? "(uefi)" : "(bios)"; + } + // Si la descripción está vacÃa consultamos las plantillas uefi + if ($description == "") $description=exec("awk 'NR==1 {print $2}' ".$dirtemplatesuefi.$pn[$i]); + if ($pn[$i]==$desconocido) {$listadopxe=listadesconocido($cmd,$desconocido,$seleccion); - if ($existe==""){}else{ - - $description=exec("awk 'NR==1 {print $2}' ".$dirtemplates.$pn[$i]); //$text=trim($text); + // Solo lo mostramos si existen aquipos no asignados. + if (isset($existe)){ echo "<td></td>"; - echo "<td> <font color=red>"; + echo "<td><font id='$description' color=red>"; echo $description; echo " <br>"; echo "<input type='button' onClick='move(this.form.L" . $pn[$i] . ",this.form.Lpxe)' value='OUT' style='height: 25px; width: 50px' >"; @@ -168,23 +158,16 @@ for($i=0; $i<count($pn); $i++) echo "<select multiple size='28' name='L" . $pn[$i] . "' >"; $listadopxe=""; $desconocido="00unknown"; - if ($pn[$i]==$desconocido) - { - $listadopxe=listaequipos($cmd,$desconocido,$seleccion); - echo $listadopxe; - }else{ - $listadopxe=listaequipos($cmd,$pn[$i],$seleccion); - echo $listadopxe; - } - echo "</select>"; - echo "</td>"; - } + $listadopxe=listaequipos($cmd,$pn[$i],$seleccion); + echo $listadopxe; + echo "</select>"; + echo "</td>"; + } - }else{ - $description=exec("awk 'NR==1 {print $2}' ".$dirtemplates.$pn[$i]); //$text=trim($text); - echo "<td></td>"; - echo "<td> "; - echo $description; + } else { + echo "<td></td>\n"; + echo "<td id='$description'> "; + echo $description ." ". $nocomun; echo " <br>"; echo "<input type='button' onClick='move(this.form.L" . $pn[$i] . ",this.form.Lpxe)' value='OUT' style='height: 25px; width: 50px' >"; echo "<input type='button' onClick='move(this.form.Lpxe,this.form.L" . $pn[$i] .")' value='IN' style='height: 25px; width: 35px' >"; @@ -192,25 +175,28 @@ for($i=0; $i<count($pn); $i++) echo "<select multiple size='28' name='L" . $pn[$i] . "' >"; $listadopxe=""; $desconocido="00unknown"; -/////////////////////////////////////////////////////////////// -if (!empty($_SESSION["widcentro"])) -{ - if ($pn[$i]==$desconocido) + /////////////////////////////////////////////////////////////// + if (!empty($_SESSION["widcentro"])) { - $listadopxe=listaequipos($cmd,$desconocido,$seleccion); - echo $listadopxe; - }else{ - $listadopxe=listaequipos($cmd,$pn[$i],$seleccion); - echo $listadopxe; - } -} -//////////////////////////////////////////////////////////////// + $listadopxe=listaequipos($cmd,$pn[$i],$seleccion); + echo $listadopxe; + } + //////////////////////////////////////////////////////////////// echo "</select>"; echo "</td>"; - }//Primer if - }//for + }//Primer if +}//for //##agp +?> +</tr> +<tr><th colspan="<?php echo (2*$column) ?>"><?php echo $TbMsg["UEFI"]; ?></th></tr> +</table> +</form> +</body> +</html> + +<?php // esta funcion genera los elementos de un select(formulario html) donde aparecen los nombres de los ordenadores, según su menu pxe function listaequipos($cmd,$menupxe,$seleccion) { @@ -245,16 +231,3 @@ $existe= $rs->campos["nombreordenador"]; } $rs->Cerrar(); } - - -?> -</form> -</tr> - - - -</table> - - -</body> -</html> diff --git a/admin/WebConsole/principal/boot_grub4dos_crear.php b/admin/WebConsole/principal/boot_grub4dos_crear.php index 26cc190d..747400c0 100644 --- a/admin/WebConsole/principal/boot_grub4dos_crear.php +++ b/admin/WebConsole/principal/boot_grub4dos_crear.php @@ -1,767 +1,472 @@ -<?php
-include_once("../includes/ctrlacc.php");
-include_once("../clases/AdoPhp.php");
-include_once("../clases/XmlPhp.php");
-include_once("../clases/MenuContextual.php");
-include_once("../clases/SockHidra.php");
-include_once("../includes/constantes.php");
-include_once("../includes/comunes.php");
-include_once("../includes/CreaComando.php");
-include_once("../idiomas/php/".$idioma."/boot_grub4dos_".$idioma.".php");
-
-$cmd=CreaComando($cadenaconexion);
-if (!$cmd)
- Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D.
-//________________________________________________________________________________________________________
-
-if (isset($_POST["litambito"])) $litambito=$_POST["litambito"]; // Recoge parametros
-if (isset($_POST["idambito"])) $idambito=$_POST["idambito"];
-if (isset($_POST["nombreambito"])) $nombreambito=$_POST["nombreambito"];
-if (isset($_POST["opcion"])) $opcion=$_POST["opcion"];
-if (isset($_POST["opcioncrear"])) $opcioncrear=$_POST["opcioncrear"];
-$ultimonumero = isset($_POST["ultimonumero"]) ? $_POST["ultimonumero"] : "";
-$boton = isset ($_REQUEST["boton"]) ? $_REQUEST["boton"] : "";
-$confirmado = ($boton == $TbMsg[13] && ($opcioncrear == 1 || $opcioncrear == 2)) ? "1" : "";
-$guarnomb = isset($_POST["nombrenuevoboot"]) ? ucfirst($_POST["nombrenuevoboot"]) : "";
-$admin = isset($_POST["modo"]) ? $_POST["modo"] : "";
-$selecdescripcion = isset($_POST["selecdescripcion"]) ? $_POST["selecdescripcion"] : "";
-$descripcion = "";
-$modo = "";
-$seleccion = "";
-
-switch($litambito){
- case "aulas":
- $seleccion="and idaula=" . $idambito ."";
- break;
- case "gruposordenadores":
- $seleccion= "and grupoid=" . $idambito . "";
- break;
-}
-?>
-<html>
-<TITLE>Administración web de aulas</TITLE>
-<head>
-
-<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
- <LINK rel="stylesheet" type="text/css" href="../estilos.css">
- <SCRIPT language="javascript" src="../jscripts/propiedades_aulas.js"></SCRIPT>
- <SCRIPT language="javascript" src="../jscripts/opciones.js"></SCRIPT>
- <SCRIPT language="javascript" src="../jscripts/boot_grub4dos.js"></SCRIPT>
- <SCRIPT language="javascript" src="../idiomas/javascripts/esp/propiedades_aulas_esp.js"></SCRIPT></HEAD>
-</head>
-
-<body>
-<P align=center class=cabeceras><?php echo $TbMsg[42]; ?><BR>
- <SPAN align=center class=subcabeceras> <?php echo $nombreambito; ?> </SPAN></P>
-<!-- <input type="submit" value=<?php echo $TbMsg[43]; ?> name="saveButton" onclick="allSelect()"> </P> -->
-<?php
-//##################################################################################################################################
-//########### NUEVO COLUMNA ARRANQUE #############################################################################################
-//##################################################################################################################################
-
-if ($opcioncrear == 1)
- {
- //$confirmado=$_POST["confirmado"];
- if ($confirmado == 1)
- {
- //$delcar=array(" "," /", "-", "@", "=");
- $descripfich=$guarnomb;$descripfich=preg_replace("/[^A-Za-z0-9]/", "-", $descripfich);//str_replace($delcar, "-", $descripfich);
- $guarnomb=preg_replace("/[^A-Za-z0-9]/", "", $descripfich);//str_replace($delcar, "", $guarnomb);
- $nombrenuevoboot=$ultimonumero.$guarnomb;
- $parametrosnuevoboot=$_POST["parametrosnuevoboot"];
- $nuevoboot = "/var/lib/tftpboot/menu.lst/templates/".$nombrenuevoboot;
- if($guarnomb != "") {
- $fp = fopen($nuevoboot, "w");
- $string = $TbMsg[22].$descripfich."\n".$parametrosnuevoboot;
- $write = fputs($fp, $string);
- fclose($fp);
- ?>
- <TABLE width="500" align=center border=1 >
- <TR><TD align="center"><br><?php if ($guarnomb != null) echo $TbMsg[6];?><br><br><SPAN align=center class=subcabeceras><?php echo $descripfich;?></span><br><br><br>
- <form name="crearranque" method="post" action="./boot_grub4dos.php">
- <input type="hidden" name="confirmado" value="1">
- <?php }else{ ?>
-
- <TABLE width="500" align=center border=1 >
- <TR><TD align="center"><br><br><br><SPAN align=center class=subcabeceras><?php echo $TbMsg[14];?></span><br><br><br>
- <form name="crearranque" method="post" action="./boot_grub4dos_crear.php">
- <input type="hidden" name="confirmado" value="">
- <input type="hidden" name="ultimonumero" value="<?php echo $ultimonumero?>">
- <?php }?>
-
- <input type="hidden" name="litambito" value="<?php echo $litambito?>">
- <input type="hidden" name="idambito" value="<?php echo $idambito?>">
- <input type="hidden" name="nombreambito" value="<?php echo $nombreambito?>">
- <input type="hidden" name="opcioncrear" value="1">
- <input type="submit" value="Continuar" name="nuevoarran">
- </form>
- </TR></TD>
- </TABLE>
-<?php }else{
-?>
-
-<TABLE width="650" align=CENTER border=1 cellPadding=1 cellSpacing=1 class=tabla_datos >
-
-<TR align=center>
- <TD height="70" colspan="2" valign="middle">
- <SPAN align=center class=cabeceras> <?php echo $TbMsg[3]?> </SPAN>
- </TD>
- </TR>
-<TR align=right>
- <TD colspan="2" valign="middle">
-
-
-
- </TD>
- </TR>
-<TR>
-<form name="crearranque" method="post" action="./boot_grub4dos_crear.php">
- <TD width="150" height="10" valign="middle">
- <SPAN align=center class=subcabeceras><?php echo $TbMsg[12]?></SPAN>
- </TD>
-
- <TD width="500" height="10" valign="middle">
- <input type="text" name="nombrenuevoboot" id="textfield" size="25" value="<?php echo $guarnomb ?>">
- </TD>
-
-</TR>
-<TR>
- <TD width="150" height="100" valign="middle">
-
-<SPAN align=center class=subcabeceras><?php echo $TbMsg[19]?><br></SPAN>
-<?php
-if ($boton == $TbMsg[17])
-{echo '<input name=boton type=submit value="'.$TbMsg[18].'">';}else{echo '<input name=boton type=submit value=Plantilla>';}
-?>
- </TD>
-
- <TD width="500" height="100" valign="middle">
-
-
- <textarea name="parametrosnuevoboot" id="parametrosnuevoboot" cols="60" rows="12">
-<?php
-if ($boton == $TbMsg[17])
-echo "timeout 3
-title FirstHardDisk-FirstPartition
-keeppxe
-root (hd0,0)
-chainloader (hd0,0)+1
-boot";
-?>
- </textarea>
- </TD>
-</TR>
-<TR>
- <TD width="150" valign="middle">
- <input type="hidden" name="litambito" value="<?php echo $litambito?>">
- <input type="hidden" name="idambito" value="<?php echo $idambito?>">
- <input type="hidden" name="nombreambito" value="<?php echo $nombreambito?>">
- <input type="hidden" name="ultimonumero" value="<?php echo $ultimonumero?>">
- <input type="hidden" name="opcioncrear" value="1">
-
- <input type="submit" name="boton" value="<?php echo $TbMsg[13]?>">
- </form>
- </TD>
-
-<TD width="500" valign="middle"><br />
- <form name="crearranque" method="post" action="./boot_grub4dos.php">
- <input type="hidden" name="litambito" value="<?php echo $litambito?>">
- <input type="hidden" name="idambito" value="<?php echo $idambito?>">
- <input type="hidden" name="nombreambito" value="<?php echo $nombreambito?>">
- <input type="hidden" name="modo" value="1">
- <input type="submit" value="<?php echo $TbMsg[16]?>">
- </form>
- </TD>
-</TR>
-</TABLE>
-<?php
-//##################################################################################################################################
-//########### NUEVO COLUMNA ARRANQUE #############################################################################################
-//##################################################################################################################################
-}}?>
-
-
-<?php
-//##################################################################################################################################
-//########### MODIFICAR COLUMNA ARRANQUE #########################################################################################
-//##################################################################################################################################
-
-
-if ($opcioncrear == 2)
- {
- $confirmado=isset($_POST["confirmado"]) ? $_POST["confirmado"] : "";
- if ($confirmado == 1)
- {
- $modificadescripcion=ucfirst($_POST["modificadescripcion"]);
-// $modificadescripcion=str_replace(" ", "", $modificadescripcion);
- $descripfich=$modificadescripcion;$descripfich=preg_replace("/[^A-Za-z0-9]/", "-", $descripfich);
- $ficherow="/var/lib/tftpboot/menu.lst/templates/".$_POST["nombrefichero"];//echo $ficherow."<br>";
- $parametrosmodifica=$_POST["parametrosmodifica"];
-
- if(empty($_POST["modificadescripcion"]))
- {?>
-
- <TABLE width="500" align=center border=1 >
- <TR><TD align="center"><br><br><br><SPAN align=center class=subcabeceras><?php echo $TbMsg[14];?></span><br><br><br>
- <form name="crearranque" method="post" action="./boot_grub4dos_crear.php">
- <input type="hidden" name="litambito" value="<?php echo $litambito?>">
- <input type="hidden" name="idambito" value="<?php echo $idambito?>">
- <input type="hidden" name="nombreambito" value="<?php echo $nombreambito?>">
- <input type="hidden" name="confirmado" value="0">
- <input type="hidden" name="opcioncrear" value="2">
- <input type="submit" value="Continuar" name="nuevoarran">
- </form>
- </TR></TD>
- </TABLE>
-
- <?php }else{
- //echo $_POST["nombrefichero"]." -- Descripcion -- ".$descripfich."<br>".$string;
- ///*
- $fp = fopen($ficherow, "w");
- $string = $TbMsg[22].$descripfich."\n".$_POST["parametrosmodifica"];
- $write = fputs($fp, $string);//Escribe la primera linea
- fclose($fp);
- //*/
-
-
- ?>
- <TABLE width="500" align=center border=1 >
- <TR><TD align="center"><br><br><br><SPAN align=center class=subcabeceras><?php echo $TbMsg[7];?></span><br><br><br>
- <form name="crearranque" method="post" action="./boot_grub4dos.php">
- <input type="hidden" name="litambito" value="<?php echo $litambito?>">
- <input type="hidden" name="idambito" value="<?php echo $idambito?>">
- <input type="hidden" name="nombreambito" value="<?php echo $nombreambito?>">
- <input type="hidden" name="confirmado" value="0">
- <input type="hidden" name="opcioncrear" value="2">
- <input type="hidden" name="modo" value="1">
- <input type="submit" value="Continuar" name="nuevoarran">
- </form>
- </TR></TD>
- </TABLE>
- <?php }?>
- <?php }else{
-?>
-<?php
-//#########################################################################
-// MODO USUARIO
-//#########################################################################
-if (empty($admin)){
-//#########################################################################
-// LEYENDO EL DIRECTORIO
-// /var/lib/tftboot/menu.lst/templates
-//#########################################################################
-$dirtemplates="/var/lib/tftpboot/menu.lst/templates/";
-$directorio=dir($dirtemplates);
-$pn= array();//pila de nombres
-//bucle para llenar las pilas :P
-while ($archivo = $directorio->read())
-{
- //no mostrar ni "." ni ".." ni "pxe"
- if(($archivo!="pxe")&&($archivo!=".")&&($archivo!=".."))
- {
- array_push($pn, $archivo);
- }
-}
-$directorio->close();
-
-//ordenar las pilas segun la pila de nombres
-array_multisort($pn);
-
-//Leyendo la Descripcion de los ficheros mayores que 20
-for ($b=0;$b<count($pn);$b++)
-{
-$numeros=substr($pn[$b],0,2);
-if ($numeros > 19)
- {
- $descripcion=exec("cat ".$dirtemplates.$pn[$b]." | awk 'NR==1 {print $2}'");//$text=trim($text);
- //Aqui busco el fichero, parametros y descripcion segun llega de $_POST["modificafichero"]
- if ($descripcion == $selecdescripcion)
- {
- $fichero=$pn[$b];
- $param=$dirtemplates.$fichero;
- $parametros=file($param);
- //echo $fichero." -- Descripcion -- ".$descripcion."<br>";
- }
-
- }
-}
-
-?>
-<TABLE width="850" align=CENTER border=1 cellPadding=1 cellSpacing=1 class=tabla_datos >
-<TR >
- <TD height="70" colspan="2" valign="middle">
- <p align=center><SPAN align=center class=cabeceras> <?php echo $TbMsg[4]?> </SPAN></p><p aling=left></p>
- <form name="crearranque" method="post" action="./boot_grub4dos_crear.php">
- <input type="hidden" name="litambito" value="<?php echo $litambito?>">
- <input type="hidden" name="idambito" value="<?php echo $idambito?>">
- <input type="hidden" name="nombreambito" value="<?php echo $nombreambito?>">
- <input type="hidden" name="ultimonumero" value="<?php echo $ultimonumero?>">
- <input type="hidden" name="opcioncrear" value="2">
- <input type="hidden" name="modo" value="1">
- <?php if ($_SESSION["wadminetboot"] == 1 ){ ?>
- <input type="submit" value=<?php echo $TbMsg[11]?> name="nuevoarran">
- <?php } ?>
-
- </form>
- </TD>
- </TR>
- <?php if ($numeros > 19){ ?>
-<TR>
-<form name="actualiza" method="post" action="./boot_grub4dos_crear.php">
- <input type="hidden" name="litambito" value="<?php echo $litambito?>">
- <input type="hidden" name="idambito" value="<?php echo $idambito?>">
- <input type="hidden" name="nombreambito" value="<?php echo $nombreambito?>">
- <input type="hidden" name="ultimonumero" value="<?php echo $ultimonumero?>">
- <input type="hidden" name="opcioncrear" value="2">
-
- <TD height="10" colspan="2" valign="middle">
- <SPAN align=center class=subcabeceras><?php echo $TbMsg[9]." ------> ";?></SPAN>
- <select name="selecdescripcion" id="selecdescripcion" onChange="document.actualiza.submit()">
- <option value"" ></option>
- <?php
- for ($z=0;$z<count($pn);$z++)
- {
- if((substr($pn[$z],0,2)) > 19)
- {
- $descripcion=exec("cat ".$dirtemplates.$pn[$z]." | awk 'NR==1 {print $2}'");//$text=trim($text);
- echo '<option value='.$descripcion.'>'.$descripcion.'</option>';
- }
- }
- ?>
- </select>
- </TD>
- </form>
-</TR>
-<?php }else{?>
-<TR>
-<form name="actualiza" method="post" action="./boot_grub4dos.php">
- <input type="hidden" name="litambito" value="<?php echo $litambito?>">
- <input type="hidden" name="idambito" value="<?php echo $idambito?>">
- <input type="hidden" name="nombreambito" value="<?php echo $nombreambito?>">
- <input type="hidden" name="ultimonumero" value="<?php echo $ultimonumero?>">
- <input type="hidden" name="modo" value="1">
-
- <TD height="10" colspan="2" valign="middle">
-<SPAN align=center class=subcabeceras><?php echo $TbMsg[23]." -------> ";?><input type="submit" value=<?php echo $TbMsg[16]?> name="nuevoarran"></SPAN>
- </TD>
- </form>
-</TR>
-
-<?php } ?>
-
-
-<?php if ($selecdescripcion != "") { ?>
-
-<form name="crearranque" method="post" action="./boot_grub4dos_crear.php">
-<TR>
- <TD width="300" height="10" valign="middle" colspan="">
- <SPAN align=center class=subcabeceras><?php echo $TbMsg[12];?></SPAN>
- </TD>
-
- <TD width="500" height="10" valign="middle">
- <input type="hidden" name="nombrefichero" id="nombrefichero" value="<?php echo $fichero;?>">
- <input type="text" name="modificadescripcion" id="modificadescripcion" size="25" value="<?php echo $selecdescripcion;?>">
- </TD>
-</TR>
-
-<TR>
- <TD width="300" height="100" valign="middle">
- <SPAN align=center class=subcabeceras><?php echo $TbMsg[19]?></SPAN>
- </TD>
-
- <TD width="500" height="100" valign="middle">
- <textarea name="parametrosmodifica" id="parametrosmodifica" cols="80" rows="15"><?php //Leyendo las lineas del Array parametros
- for ($k=1;$k<count($parametros);$k++) {
- echo $parametros[$k];
-}?></textarea>
-
- </TD>
-</TR>
-<TR>
- <TD width="300" valign="middle">
- <SPAN align=center class=subcabeceras></SPAN>
-
- <input type="hidden" name="litambito" value="<?php echo $litambito?>">
- <input type="hidden" name="idambito" value="<?php echo $idambito?>">
- <input type="hidden" name="nombreambito" value="<?php echo $nombreambito?>">
- <input type="hidden" name="ultimonumero" value="<?php echo $ultimonumero?>">
- <input type="hidden" name="confirmado" value="1">
- <input type="hidden" name="opcioncrear" value="2">
- <input type="submit" value="<?php echo $TbMsg[13]?>" name="nuevoarran">
-
- </TD></form>
-
- <TD width="500" valign="middle"><br />
- <form name="crearranque" method="post" action="./boot_grub4dos.php">
- <input type="hidden" name="litambito" value="<?php echo $litambito?>">
- <input type="hidden" name="idambito" value="<?php echo $idambito?>">
- <input type="hidden" name="nombreambito" value="<?php echo $nombreambito?>">
- <input type="hidden" name="confirmado" value="1">
- <input type="hidden" name="opcioncrear" value="2">
- <input type="hidden" name="modo" value="1">
- <input type="submit" value="<?php echo $TbMsg[16]?>" name="nuevoarran">
- </form>
- </TD>
-</TR>
-<?php }?>
-
-</TABLE>
-<?php
-//##################################################################################################################################
-//########### MODIFICAR COLUMNA ARRANQUE #########################################################################################
-//##################################################################################################################################
-//#### FIN SI USUARIO
-}
-
-else{
-//##################################################################################################################################
-//########### MODIFICAR COLUMNA ARRANQUE #########################################################################################
-//##################################################################################################################################
-//#########################################################################
-// MODO ADMINISTRADOR
-//#########################################################################
-//#########################################################################
-// LEYENDO EL DIRECTORIO
-// /var/lib/tftboot/menu.lst/templates
-//#########################################################################
-$dirtemplates="/var/lib/tftpboot/menu.lst/templates/";
-$directorio=dir($dirtemplates);
-$pn= array();//pila de nombres
-//bucle para llenar las pilas :P
-while ($archivo = $directorio->read())
-{
- //no mostrar ni "." ni ".." ni "pxe"
- if(($archivo!=".")&&($archivo!=".."))
- {
- //$description=exec("cat ".$dirtemplates.$pn[$i]." | awk 'NR==1 {print $2}'");//$text=trim($text);
- array_push($pn, $archivo);
- }
-}
-$directorio->close();
-//ordenar las pilas segun la pila de nombres
-array_multisort($pn);
-
-
-for ($b=0;$b<count($pn);$b++)
-{
- if ($pn[$b] == "pxe")
- {
- $descripcion=exec("cat ".$dirtemplates.$pn[$b]." | awk 'NR==1 {print $2}'");//$text=trim($text);
- //Aqui busco el fichero, parametros y descripcion segun llega de $_POST["modificafichero"]
- if ($descripcion == $selecdescripcion)
- {
- $fichero=$pn[$b];
- $param=$dirtemplates.$fichero;
- $parametros=file($param);
- //echo $fichero." -- Descripcion -- ".$descripcion."<br>";
- }
- }
-}
-//Leyendo la Descripcion de los ficheros menores que 20
-for ($b=0;$b<count($pn);$b++)
-{
- $numeros=substr($pn[$b],0,2);
- if ($numeros > 19)
- break;
- {
- $descripcion=exec("cat ".$dirtemplates.$pn[$b]." | awk 'NR==1 {print $2}'");//$text=trim($text);
- //Aqui busco el fichero, parametros y descripcion segun llega de $_POST["modificafichero"]
- if ($descripcion == $selecdescripcion)
- {
- $fichero=$pn[$b];
- $param=$dirtemplates.$fichero;
- $parametros=file($param);
- //echo $fichero." -- Descripcion -- ".$descripcion."<br>";
- }
-
- }
-}
-
-?>
-<TABLE width="850" align=CENTER border=1 cellPadding=1 cellSpacing=1 class=tabla_datos >
-<TR >
- <TD height="70" colspan="4" valign="middle">
- <p align=center><SPAN align=center class=cabeceras> <?php echo $TbMsg[4]?> </SPAN></p><p align=left></p>
- <form name="crearranque" method="post" action="./boot_grub4dos_crear.php">
- <input type="hidden" name="litambito" value="<?php echo $litambito?>">
- <input type="hidden" name="idambito" value="<?php echo $idambito?>">
- <input type="hidden" name="nombreambito" value="<?php echo $nombreambito?>">
- <input type="hidden" name="ultimonumero" value="<?php echo $ultimonumero?>">
- <input type="hidden" name="opcioncrear" value="2">
- <?php echo $modo;
- if ($modo==1) {
- echo ' <input type="hidden" name="modo" value="1">';
- }else{
- echo ' <input type="hidden" name="modo" value="">';
- }
-
- ?>
- <input type="submit" value=<?php echo $TbMsg[10]?> name="nuevoarran">
- </form>
- </TD>
- </TR>
-<TR>
-<form name="actualiza" method="post" action="./boot_grub4dos_crear.php">
- <input type="hidden" name="litambito" value="<?php echo $litambito?>">
- <input type="hidden" name="idambito" value="<?php echo $idambito?>">
- <input type="hidden" name="nombreambito" value="<?php echo $nombreambito?>">
- <input type="hidden" name="ultimonumero" value="<?php echo $ultimonumero?>">
- <input type="hidden" name="opcioncrear" value="2">
- <input type="hidden" name="modo" value="1">
-
-
- <TD height="10" colspan="3" valign="middle"><input type="hidden" name="nombreficheromodifica" id="nombreficheromodifica" value="<?php echo $fichero;?>">
- <SPAN align=center class=subcabeceras><?php echo $TbMsg[9]." -------------------- >";?></SPAN>
-
- </TD>
- <TD height="10" valign="middle" align="right">
- <select name="selecdescripcion" id="selecdescripcion" onChange="document.actualiza.submit()">
- <option value"" ></option>
- <?php
- for ($z=0;$z<count($pn);$z++)
- {
- if((substr($pn[$z],0,2)) < 20 )
- {
- $descripcion=exec("cat ".$dirtemplates.$pn[$z]." | awk 'NR==1 {print $2}'");//$text=trim($text);
- echo '<option value='.$descripcion.'>'.$descripcion.'</option>';
- }
- }
- ?>
- </select>
-
-
- </TD>
- </form>
-</TR>
-<?php if ($selecdescripcion != ""){ ?>
-<form name="crearranque" method="post" action="./boot_grub4dos_crear.php">
-<TR>
- <TD width="600" height="10" valign="middle">
- <SPAN align=center class=subcabeceras><?php echo $TbMsg[21];?></SPAN>
- </TD>
-
- <TD width="249" height="10" valign="middle">
- <?php echo $fichero;?>
- </TD>
-
- <TD width="100" valign="middle" align="right">
- <input type="hidden" name="nombrefichero" id="nombrefichero" value="<?php echo $fichero;?>">
- <input type="text" name="modificadescripcion" id="modificadescripcion" size="25" value="<?php echo $selecdescripcion;?>">
- </TD>
-
- <TD width="500" valign="middle">
- <SPAN align=center class=subcabeceras><?php echo " <- ".$TbMsg[12];?></SPAN>
- </TD>
-</TR>
-<TR>
- <TD width="500" height="100" valign="middle">
- <SPAN align=center class=subcabeceras><?php echo $TbMsg[19]?></SPAN>
- </TD>
-
- <TD width="500" height="100" colspan="3" valign="middle">
- <textarea name="parametrosmodifica" id="parametrosmodifica" cols="95" rows="17"><?php //Leyendo las lineas del Array parametros
- for ($k=1;$k<count($parametros);$k++) {
- echo $parametros[$k];
- }?></textarea>
- </TD>
-</TR>
-<TR>
- <TD width="500" valign="middle">
- <SPAN align=center class=subcabeceras></SPAN>
-
- <input type="hidden" name="litambito" value="<?php echo $litambito?>">
- <input type="hidden" name="idambito" value="<?php echo $idambito?>">
- <input type="hidden" name="nombreambito" value="<?php echo $nombreambito?>">
- <input type="hidden" name="ultimonumero" value="<?php echo $ultimonumero?>">
- <input type="hidden" name="confirmado" value="1">
- <input type="hidden" name="opcioncrear" value="2">
- <input type="submit" value="<?php echo $TbMsg[13]?>" name="nuevoarran">
-
- </TD></form>
-
- <TD width="500" valign="middle"><br />
- <form name="crearranque" method="post" action="./boot_grub4dos.php">
- <input type="hidden" name="litambito" value="<?php echo $litambito?>">
- <input type="hidden" name="idambito" value="<?php echo $idambito?>">
- <input type="hidden" name="nombreambito" value="<?php echo $nombreambito?>">
- <input type="hidden" name="confirmado" value="1">
- <input type="hidden" name="opcioncrear" value="2">
- <input type="hidden" name="modo" value="1">
- <input type="submit" value="<?php echo $TbMsg[16]?>" name="nuevoarran">
- </form>
- </TD>
- <TD width="500" valign="middle"><br />
- </TD>
- <TD width="500" valign="middle"><br />
- </TD>
-
-</TR>
-<?php }?>
-</TABLE>
-<?php
-//#########################################################################
-// FIN MODO ADMINISTRADOR
-//#########################################################################
-//#### FIN SI USUARIO
-
-
-//#### FIN SINO USUARIO
-}
-//#### FIN SINO CONFIRMADO
-}
-//#### FIN SI OPCIONCREAR
-}
-//##################################################################################################################################
-//########### MODIFICAR COLUMNA ARRANQUE #########################################################################################
-//##################################################################################################################################
-?>
-
-
-<?php
-//##################################################################################################################################
-//########### ELIMINAR COLUMNA ARRANQUE ##########################################################################################
-//##################################################################################################################################
-
-if ($opcioncrear == 3)
- {
- $confirmado=isset($_POST["confirmado"]) ? $_POST["confirmado"] : "";
- if ($confirmado == 1)
- {
- $eliminafichero=$_POST["eliminafichero"];
-// esta funcion genera los elementos de un select(formulario html) donde aparecen los nombres de los ordenadores, según su menu pxe
-function listaequipos($cmd,$eliminafichero,$seleccion)
-{//Buscando idordenador de los arranque eliminafichero
-global $cambia;
-$cmd->texto="SELECT * FROM ordenadores where arranque='" . $eliminafichero ."' " . $seleccion;
-$rs=new Recordset;
-$rs->Comando=&$cmd;
-if (!$rs->Abrir()) echo "error";
-$rs->Primero();
-while (!$rs->EOF)
-{
- //$cmd->texto="UPDATE ordenadores SET arranque=unknown WHERE idordenador=60";
- //$resul=$cmd->Ejecutar();
- //echo $eliminafichero.' - '.$rs->campos["nombreordenador"].'<BR>';
- $cambia[]=$rs->campos["idordenador"];
- $rs->Siguiente();
-}
-$rs->Cerrar();
-
-for ($u=0;$u<count($cambia);$u++)
-{
- $nombrefich="00unknown";
- $cmd->CreaParametro("@arranque","00unknown","");
- $cmd->ParamSetValor("@arranque","00unknown");
-$cmd->texto="UPDATE ordenadores SET arranque=@arranque WHERE idordenador=".$cambia[$u];
-
-$rs=new Recordset;
-$rs->Comando=&$cmd;
-if (!$rs->Abrir()) echo "error";
-$rs->Primero();
-$resul=$cmd->Ejecutar();
-$rs->Cerrar();
-}
-}
-
-
- $listadopxe=listaequipos($cmd,$eliminafichero,$seleccion);
- echo $listadopxe;
- $fichero = "/var/lib/tftpboot/menu.lst/templates/".$eliminafichero;
- unlink($fichero);
-
- ?>
- <TABLE width="500" align=center border=1 >
- <TR><TD align="center"><br><?php if($eliminafichero != null) echo $TbMsg[8];?><br><br><SPAN align=center class=subcabeceras><?php echo substr($eliminafichero,2);?></span><br><br><br>
- <form name="crearranque" method="post" action="./boot_grub4dos.php">
- <input type="hidden" name="litambito" value="<?php echo $litambito?>">
- <input type="hidden" name="idambito" value="<?php echo $idambito?>">
- <input type="hidden" name="nombreambito" value="<?php echo $nombreambito?>">
- <input type="submit" value="Continuar" name="nuevoarran">
- </form>
- </TR></TD>
-</TABLE>
-
- <?php }else{
-?>
-<?php
-//#########################################################################
-// LEYENDO EL DIRECTORIO
-// /var/lib/tftboot/menu.lst/templates
-//#########################################################################
-$dirtemplates="/var/lib/tftpboot/menu.lst/templates/";
-$directorio=dir($dirtemplates);
-$pn= array();//pila de nombres
-//bucle para llenar las pilas :P
-while ($archivo = $directorio->read())
-{
- //no mostrar ni "." ni ".." ni "pxe"
- if(($archivo!="pxe")&&($archivo!=".")&&($archivo!=".."))
- {
- array_push($pn, $archivo);
- }
-}
-$directorio->close();
-//ordenar las pilas segun la pila de nombres
-array_multisort($pn);
-
-
-?>
-<TABLE width="650" align=CENTER border=1 cellPadding=1 cellSpacing=1 class=tabla_datos >
-<form name="eliminaarranque" method="post" action="./boot_grub4dos_crear.php">
-<TR align=center>
- <TD height="70" colspan="2" valign="middle">
- <SPAN align=center class=cabeceras> <?php echo $TbMsg[5]?> </SPAN>
- </TD>
- </TR>
-<TR>
- <TD width="150" height="10" valign="middle">
- <SPAN align=center class=subcabeceras><?php echo $TbMsg[12]?></SPAN>
- </TD>
-
- <TD width="500" height="10" valign="middle">
- <select name="eliminafichero" id="eliminafichero">
- <?php
- for ($z=0;$z<count($pn);$z++)
- {
- if((substr($pn[$z],0,2)) > 19)
- {
- $description=exec("cat ".$dirtemplates.$pn[$z]." | awk 'NR==1 {print $2}'");//$text=trim($text);
- echo '<option value='.$pn[$z].'>'.$description.'</option>';
- }
- }
- ?>
- </select></TD>
-</TR>
-
-<TR>
- <TD width="150" valign="middle">
- <SPAN align=center class=subcabeceras></SPAN>
-
- <input type="hidden" name="litambito" value="<?php echo $litambito?>">
- <input type="hidden" name="idambito" value="<?php echo $idambito?>">
- <input type="hidden" name="nombreambito" value="<?php echo $nombreambito?>">
- <input type="hidden" name="confirmado" value="1">
- <input type="hidden" name="opcioncrear" value="3">
- <input type="submit" value="<?php echo $TbMsg[13]?>" name="nuevoarra">
-
- </TD></form>
-
- <TD width="500" valign="middle"><br />
- <form name="crearranque" method="post" action="./boot_grub4dos.php">
- <input type="hidden" name="litambito" value="<?php echo $litambito?>">
- <input type="hidden" name="idambito" value="<?php echo $idambito?>">
- <input type="hidden" name="nombreambito" value="<?php echo $nombreambito?>">
- <input type="hidden" name="modo" value="1">
- <input type="submit" value="<?php echo $TbMsg[16]?>" name="nuevoarran">
- </form>
- </TD>
-</TR>
-</TABLE>
-<?php
-//##################################################################################################################################
-//########### ELIMINAR COLUMNA ARRANQUE ##########################################################################################
-//##################################################################################################################################
-}}?>
-
-</body>
-</html>
+<?php +include_once("../includes/ctrlacc.php"); +include_once("../clases/AdoPhp.php"); +include_once("../includes/CreaComando.php"); +include_once("../idiomas/php/".$idioma."/boot_grub4dos_".$idioma.".php"); + +$cmd=CreaComando($cadenaconexion); +if (!$cmd) + Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D. +//________________________________________________________________________________________________________ + +if (isset($_POST["litambito"])) $litambito=$_POST["litambito"]; // Recoge parametros +if (isset($_POST["idambito"])) $idambito=$_POST["idambito"]; +if (isset($_POST["nombreambito"])) $nombreambito=$_POST["nombreambito"]; +if (isset($_POST["opcion"])) $opcion=$_POST["opcion"]; +if (isset($_POST["opcioncrear"])) $opcioncrear=$_POST["opcioncrear"]; +$boton = isset ($_REQUEST["boton"]) ? $_REQUEST["boton"] : ""; +$confirmado = ($boton == $TbMsg[13] && ($opcioncrear == "crear" || $opcioncrear == "modificar")) ? "1" : ""; +$guarnomb = isset($_POST["nombrenuevoboot"]) ? ucfirst($_POST["nombrenuevoboot"]) : ""; +$admin = isset($_POST["modo"]) ? $_POST["modo"] : ""; +$selectfile = isset($_POST["selectfile"]) ? $_POST["selectfile"] : ""; +$boottype = isset($_POST["boottype"]) ? $_POST["boottype"] : ""; +$dirtemplates= ( $boottype === "uefi" ) ? "/var/lib/tftpboot/grub/templates/" : "/var/lib/tftpboot/menu.lst/templates/"; +$otrodirtemplates= ( $boottype === "uefi" ) ? "/var/lib/tftpboot/menu.lst/templates/" : "/var/lib/tftpboot/grub/templates/"; +$descripcion = ""; +$modo = ""; +?> + +<html> +<head> +<TITLE>Administración web de aulas</TITLE> + +<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> + <LINK rel="stylesheet" type="text/css" href="../estilos.css"> + <SCRIPT language="javascript" src="../jscripts/propiedades_aulas.js"></SCRIPT> + <SCRIPT language="javascript" src="../jscripts/opciones.js"></SCRIPT> + <SCRIPT language="javascript" src="../jscripts/boot_grub4dos.js"></SCRIPT> + <SCRIPT language="javascript" src="../idiomas/javascripts/esp/propiedades_aulas_esp.js"></SCRIPT> +</head> + +<body> +<P align=center class=cabeceras><?php echo $TbMsg[42]; ?><BR> + <SPAN align=center class=subcabeceras> <?php echo $nombreambito; ?> </SPAN></P> +<?php +//################################################################################################################################## +//########### NUEVO COLUMNA ARRANQUE ############################################################################################# +//################################################################################################################################## + +if ($opcioncrear == "crear") + { + if ($confirmado == 1) + { + $descripfich=preg_replace("/[^A-Za-z0-9]/", "-", $guarnomb); + $guarnomb=preg_replace("/[^A-Za-z0-9]/", "", $descripfich); + $action="./boot_grub4dos.php"; + + if($guarnomb === "") { + // Mensaje de error si no ha incluido descripción + $action="./boot_grub4dos_crear.php"; + $mensaje="<br><br><SPAN align=center class=subcabeceras>".$TbMsg[14]."</span>"; + + } else { + // Nombre archivo: Si para el otro tipo de plantillas existe un fichero con igual descripción uso el nombre. + $nombrenuevoboot=exec("grep -i -m 1 \"^##NO-TOCAR-ESTA-LINEA[[:blank:]]*$descripfich$\" $otrodirtemplates* |awk -F: '{print $1}'"); + if (isset($nombrenuevoboot) && $nombrenuevoboot != "") { + $nombrenuevoboot=basename($nombrenuevoboot); + } else { + // Nombre archivo: numDescripción + // número: a todos los números posibles le quito los ya usados y me quedo con el primero + chdir($dirtemplates); + $pn=array_map("principio",glob("*")); + $todos=range(21,99); + $ultimonumero=current(array_diff($todos,$pn)); + + $nombrenuevoboot=$ultimonumero.$guarnomb; + } + + $nuevoboot = $dirtemplates.$nombrenuevoboot; + + // Comprobamos que no exista + if ( file_exists($nuevoboot)) { + $mensaje=$TbMsg["ERR_DUPLICADO"]."<br><br><SPAN align=center class=subcabeceras>".$nombrenuevoboot." - '".$guarnomb."' ($boottype)</span>"; + } else { + // Creo plantilla + $parametrosnuevoboot=$_POST["parametrosnuevoboot"]; + + $fp = fopen($nuevoboot, "w"); + $string = $TbMsg[22].$descripfich."\n".$parametrosnuevoboot; + $write = fputs($fp, $string); + fclose($fp); + + $mensaje=$TbMsg[6]."<br><br><SPAN align=center class=subcabeceras>".$descripfich."</span>"; + } + } + ?> + <form name="crearranque" method="post" action="<?php echo $action ?>"> + <input type="hidden" name="confirmado" value=""> + <input type="hidden" name="ultimonumero" value="<?php echo $ultimonumero?>"> + <input type="hidden" name="litambito" value="<?php echo $litambito?>"> + <input type="hidden" name="idambito" value="<?php echo $idambito?>"> + <input type="hidden" name="nombreambito" value="<?php echo $nombreambito?>"> + <input type="hidden" name="opcioncrear" value="crear"> + <input type="hidden" name="boottype" value="<?php echo $boottype ?>"> + <TABLE width="500" align=center border=1 > + <TR><TD align="center"><br><?php echo $mensaje;?></span><br><br><br> + <input type="submit" value="Continuar" name="nuevoarran"> + </TD></TR> + </TABLE> + </form> +<?php }else{ +?> + +<form name="crearranque" method="post" action="./boot_grub4dos_crear.php"> +<input type="hidden" name="litambito" value="<?php echo $litambito?>"> +<input type="hidden" name="idambito" value="<?php echo $idambito?>"> +<input type="hidden" name="nombreambito" value="<?php echo $nombreambito?>"> +<input type="hidden" name="boottype" value="<?php echo $boottype ?>"> +<input type="hidden" name="opcioncrear" value="crear"> +<input type="hidden" name="modo" value="1"> + +<TABLE width="650" align=CENTER border=1 cellPadding=1 cellSpacing=1 class=tabla_datos > + +<TR align=center> + <TD height="70" colspan="2" valign="middle"> + <SPAN align=center class=cabeceras> <?php echo $TbMsg[3]?> </SPAN> + </TD> + </TR> +<TR align=right> + <TD colspan="2" valign="middle"> + + + + </TD> + </TR> +<TR> + <TD width="150" height="10" valign="middle"> + <SPAN align=center class=subcabeceras><?php echo $TbMsg[12]." ($boottype)"?></SPAN> + </TD> + + <TD width="500" height="10" valign="middle"> + <input type="text" name="nombrenuevoboot" id="textfield" size="25" value="<?php echo $guarnomb ?>"> + </TD> + +</TR> +<TR> + <TD width="150" height="100" valign="middle"> + +<SPAN align=center class=subcabeceras><?php echo $TbMsg[19]?><br></SPAN> +<?php +// Boton utilizar plantilla o no. +if ($boton == $TbMsg[17]) { + echo '<input name=boton type=submit value="'.$TbMsg[18].'">'; +}else{ + echo '<input name=boton type=submit value="'.$TbMsg[17].'">'; +} +?> + </TD> + + <TD width="500" height="100" valign="middle"> + + + <textarea name="parametrosnuevoboot" id="parametrosnuevoboot" cols="60" rows="12"> +<?php +if ($boton == $TbMsg[17]) +echo "timeout 3 +title FirstHardDisk-FirstPartition +keeppxe +root (hd0,0) +chainloader (hd0,0)+1 +boot"; +?> + </textarea> + </TD> +</TR> +<TR> + <TD width="150" valign="middle"> + + <input type="submit" name="boton" value="<?php echo $TbMsg[13]?>"> + </TD> + +<TD width="500" valign="middle"> + <!-- Cancelar: vuelvo a página de netbootavanzado --> + <input type="submit" value="<?php echo $TbMsg[16]?>" onclick='document.forms[0].action="./boot_grub4dos.php";'> + </TD> +</TR> +</TABLE> +</form> +<?php +//################################################################################################################################## +//########### NUEVO COLUMNA ARRANQUE ############################################################################################# +//################################################################################################################################## +}}?> + + +<?php +//################################################################################################################################## +//########### MODIFICAR COLUMNA ARRANQUE ######################################################################################### +//################################################################################################################################## +if ($opcioncrear == "modificar") + { + $action="./boot_grub4dos_crear.php"; + $confirmado=isset($_POST["confirmado"]) ? $_POST["confirmado"] : ""; + // Realizamos los cambios en el fichero + if ($confirmado == 1) + { + $modificadescripcion=ucfirst($_POST["modificadescripcion"]); + $descripfich=$modificadescripcion;$descripfich=preg_replace("/[^A-Za-z0-9]/", "-", $descripfich); + $ficherow=$dirtemplates.$_POST["nombrefichero"];//echo $ficherow."<br>"; + $parametrosmodifica=$_POST["parametrosmodifica"]; + + if(empty($modificadescripcion)) { + $mensaje=$TbMsg[14]; + }else{ + + $fp = fopen($ficherow, "w"); + $string = $TbMsg[22].$descripfich."\n".$parametrosmodifica; + $write = fputs($fp, $string);//Escribe la primera linea + fclose($fp); + + $action="./boot_grub4dos.php"; + $mensaje=$TbMsg[7]; + } + ?> + <TABLE width="500" align=center border=1 > + <TR><TD align="center"><br><?php echo $mensaje;?><br><br><SPAN align=center class=subcabeceras><?php echo $modificadescripcion;?></span><br><br><br> + <form name="crearranque" method="post" action="<?php echo $action ?>"> + <input type="hidden" name="litambito" value="<?php echo $litambito?>"> + <input type="hidden" name="idambito" value="<?php echo $idambito?>"> + <input type="hidden" name="nombreambito" value="<?php echo $nombreambito?>"> + <input type="hidden" name="confirmado" value="0"> + <input type="hidden" name="opcioncrear" value="modificar"> + <input type="hidden" name="modo" value="0"> + <input type="submit" value="Continuar" name="nuevoarran"> + </form> + </TD></TR> + </TABLE> +<?php +//######################################################################### +// MODO USUARIO +//######################################################################### + // Mostramos las plantillas a modificar + } else { + $select=""; + $input=""; + $textoboton=""; + // No hay plantilla elegida + if ($selectfile === "") { + // LEYENDO EL DIRECTORIO + // /var/lib/tftboot/menu.lst/templates o /var/lib/tftboot/grub/templates + chdir($dirtemplates); + $pn=glob("*"); + // ordenamos + sort($pn); + + if (empty($admin)) { + // Si el modo es usuario eliminamos las plantillas de la instalación + unset ($pn[array_search("pxe", $pn)]); + foreach ($pn as $key => $valor) { + if (strnatcmp ( $valor , "20" ) > 0) break; + unset($pn[$key]); + + } + + // Botón cambio de modo + $textoboton = ' <input type="submit" value='.$TbMsg[11].' name="nuevoarran" onclick=\'document.forms[0].modo.value=1;\' >'."\n"; + } else { + $textoboton = ' <input type="submit" value='.$TbMsg[10].' name="nuevoarran" onclick=\'document.forms[0].modo.value=0;\'>'."\n"; + } + + // Opciones del select + $select = ' <select name="selectfile" id="selectfile" onChange="document.actualiza.submit()">'."\n". + ' <option value=""></option>'."\n"; + foreach ($pn as $valor) { + $descripcion=exec("awk 'NR==1 {print $2}' ".$dirtemplates.$valor); + $select.= ' <option value='.$valor.'>'.$descripcion.'</option>'."\n"; + } + $select.= ' </select>'."\n"; + + // Hay una plantilla seleccionada para modificar + } else { + $file=$dirtemplates.$selectfile; + $descripcion=exec("awk 'NR==1 {print $2}' ".$dirtemplates.$selectfile); + $parametros=file_get_contents ($file); + // Elimino cabecera anterior + $parametros=preg_replace ("/$TbMsg[22].*\n/",'', $parametros); + + // Campos de formulario especificos de esta opción + $input .= '<input type="hidden" name="nombrefichero" id="nombrefichero" value="'.$selectfile.'">'."\n". + '<input type="hidden" name="confirmado" value="1" >'."\n"; + } + +// Parte del formulario comun +?> +<form name="actualiza" method="post" action="<?php echo $action ?>"> + <input type="hidden" name="litambito" value="<?php echo $litambito ?>"> + <input type="hidden" name="idambito" value="<?php echo $idambito ?>"> + <input type="hidden" name="nombreambito" value="<?php echo $nombreambito ?>"> + <input type="hidden" name="opcioncrear" value="modificar"> + <input type="hidden" name="boottype" value="<?php echo $boottype ?>"> + <input type="hidden" name="modo" value="<?php echo $modo ?>"> + <?php echo $input; + + // Cabecera de la tabla ?> + <table width="850" align="center" border="1" cellPadding="1" cellSpacing="1" class="tabla_datos" > + <tr> + <td height="70" colspan="3" valign="middle"><p align=center class=cabeceras><?php echo $TbMsg[4] ?></p> + <?php echo $textoboton ?> + </tr> + + <?php // Lista de selección de plantillas + if ($selectfile === "") { ?> + + <tr> + <td height="10" colspan="2" valign="middle"><span align=center class=subcabeceras><?php echo $TbMsg[9]." (".$boottype.")" ?></span></td> + <td height="10" valign="middle" align="right"> + <?php echo $select ?> + </td> + </tr> + + <?php // Formulario con datos de la plantilla a cambiar + } else { ?> + + <tr> + <td height="10" valign="middle"> + <SPAN align=center class=subcabeceras><?php echo $TbMsg[21]." (".$boottype.")" ?></SPAN> + </td> + <td width="249" height="10" valign="middle"><?php echo $selectfile ?></td> + <td width="100" valign="middle" align="right"> + <span align=center class=subcabeceras><?php echo $TbMsg[12] ?></span> + <input type="text" name="modificadescripcion" id="modificadescripcion" size="25" value="<?php echo $descripcion ?>"> + </td> + </tr> + <tr> + <td width="500" height="100" valign="middle"> <span align=center class=subcabeceras><?php echo $TbMsg[19] ?></span></td> + <td width="500" height="100" colspan="2" valign="middle"> + <textarea name="parametrosmodifica" id="parametrosmodifica" cols="95" rows="17"><?php echo $parametros ?></textarea> + </td> + </tr> + <tr> + <td width="500" valign="middle"><input type="submit" value="<?php echo $TbMsg[13] ?>" name="nuevoarran"></td> + <td width="500" colspan="2" valign="middle"><input type="submit" value="<?php echo $TbMsg[16] ?>" name="nuevoarran" onclick='document.forms[0].action="./boot_grub4dos.php";'> + <tr> + + <?php } + // Final pagina ?> + </table> +</form> + + <?php + } +//################################################################################################################################## +//########### MODIFICAR COLUMNA ARRANQUE ######################################################################################### +//################################################################################################################################## +} + + +//################################################################################################################################## +//########### ELIMINAR COLUMNA ARRANQUE ########################################################################################## +//################################################################################################################################## + +if ($opcioncrear == "eliminar" ) + { + $confirmado=isset($_POST["confirmado"]) ? $_POST["confirmado"] : ""; + if ($confirmado == 1) + { + $eliminafichero=$_POST["eliminafichero"]; + $resul=actualizaequipos($cmd,$eliminafichero); + $fichero = $dirtemplates.$eliminafichero; + unlink($fichero); + + ?> + <TABLE width="500" align=center border=1 > + <TR><TD align="center"><br><?php if($eliminafichero != null) echo $TbMsg[8];?><br><br><SPAN align=center class=subcabeceras><?php echo substr($eliminafichero,2)." (".$boottype.")"; ?></span><br><br><br> + <form name="crearranque" method="post" action="./boot_grub4dos.php"> + <input type="hidden" name="litambito" value="<?php echo $litambito?>"> + <input type="hidden" name="idambito" value="<?php echo $idambito?>"> + <input type="hidden" name="nombreambito" value="<?php echo $nombreambito?>"> + <input type="submit" value="Continuar" name="nuevoarran"> + </form> + </TD></TR> +</TABLE> + + <?php }else{ +?> +<?php +//######################################################################### +// LEYENDO EL DIRECTORIO +// /var/lib/tftboot/menu.lst/templates o /var/lib/tftpboot/grub/templates/ +//######################################################################### +//$dirtemplates= "/var/lib/tftpboot/menu.lst/templates/"; +chdir($dirtemplates); + +$pn=glob("*");//pila de nombres +// No mostramos archivo pxe +unset($pn[array_search("pxe", $pn)]); +//ordenar las pilas segun la pila de nombres +sort($pn); +?> + +<form name="eliminaarranque" method="post" action="./boot_grub4dos_crear.php"> +<input type="hidden" name="litambito" value="<?php echo $litambito?>"> +<input type="hidden" name="idambito" value="<?php echo $idambito?>"> +<input type="hidden" name="nombreambito" value="<?php echo $nombreambito?>"> +<input type="hidden" name="confirmado" value="1"> +<input type="hidden" name="opcioncrear" value="eliminar"> +<input type="hidden" name="boottype" value="<?php echo $boottype ?>"> +<TABLE width="650" align=CENTER border=1 cellPadding=1 cellSpacing=1 class=tabla_datos > +<TR align=center> + <TD height="70" colspan="2" valign="middle"> + <SPAN align=center class=cabeceras> <?php echo $TbMsg[5]?> </SPAN> + </TD> + </TR> +<TR> + <TD width="150" height="10" valign="middle"> + <SPAN align=center class=subcabeceras><?php echo $TbMsg[12]." (".$boottype.")" ?></SPAN> + </TD> + + <TD width="500" height="10" valign="middle"> + <select name="eliminafichero" id="eliminafichero"> + <?php + for ($z=0;$z<count($pn);$z++) + { + // Sólo se pueden borrar plantillas que empiecen >19 + if((substr($pn[$z],0,2)) > 19) + { + $description=exec("awk 'NR==1 {print $2}' ".$dirtemplates.$pn[$z]); + echo '<option value='.$pn[$z].'>'.$description.'</option>'; + } + } + ?> + </select> + </TD> +</TR> + +<TR> + <TD width="150" valign="middle"> + <input type="submit" value="<?php echo $TbMsg[13]?>" name="nuevoarra"> + + </TD> + + <TD width="500" valign="middle"> + <input type="submit" value="<?php echo $TbMsg[16]?>" name="nuevoarran" onclick='document.forms[0].action="./boot_grub4dos.php";'> + </TD> +</TR> +</TABLE> +</form> +<?php +//################################################################################################################################## +//########### ELIMINAR COLUMNA ARRANQUE ########################################################################################## +//################################################################################################################################## +}}?> + +</body> +</html> + +<?php +// Los equipos que tienen asignada la plantilla a eliminar se actualizan con el valor desconocido. +// cmd: manejador de la base de datos +// eliminafichero: plantilla a eliminar +function actualizaequipos($cmd,$eliminafichero) { + $nombrefich="00unknown"; + $cmd->texto="UPDATE ordenadores SET arranque='".$nombrefich."' WHERE arranque='".$eliminafichero."';"; + $resul=$cmd->Ejecutar(); + return $resul; +} + +// Extrae los dos primeros caracteres de una cadena +function principio($valor) { + return substr($valor,0,2); +} +?> + diff --git a/admin/WebConsole/principal/boot_grub4dos_tabla.php b/admin/WebConsole/principal/boot_grub4dos_tabla.php index 7baae042..e4d9e7c3 100644 --- a/admin/WebConsole/principal/boot_grub4dos_tabla.php +++ b/admin/WebConsole/principal/boot_grub4dos_tabla.php @@ -1,56 +1,37 @@ +<script> +function accion (opcion) { + document.forms[0].opcioncrear.value = opcion.name; + document.forms[0].action = "./boot_grub4dos_crear.php"; +} + +</script> + +<td valign="top"> <TABLE width="150" align=left border=1 cellPadding=1 cellSpacing=1 class=tabla_datos > <TR> <TD width="150" height="45" valign="middle"> - <form name="crearranque" method="post" action="./boot_grub4dos.php"> - <input type="hidden" name="litambito" value="<?php echo $litambito?>"> - <input type="hidden" name="idambito" value="<?php echo $idambito?>"> - <input type="hidden" name="nombreambito" value="<?php echo $nombreambito?>"> - <input type="hidden" name="opcioncrear" value=""> - </form> + <input type="radio" name="boottype" value="bios" checked>bios + <input type="radio" name="boottype" value="uefi">uefi + </TD> </TR> <TR> - <TD width="150" height="100" valign="middle"> <?php echo $TbMsg[3]?><br /> - <form name="crearranque" method="post" action="./boot_grub4dos_crear.php"> - <input type="hidden" name="litambito" value="<?php echo $litambito?>"> - <input type="hidden" name="idambito" value="<?php echo $idambito?>"> - <input type="hidden" name="nombreambito" value="<?php echo $nombreambito?>"> - <input type="hidden" name="opcioncrear" value="1"> - <input type="hidden" name="ultimonumero" value="<?php echo $ultimonumero?>"> - <input type="submit" value=<?php echo $TbMsg[0]?> name="nuevoarran"> - </form> + <TD id="crear" width="150" height="100" valign="middle"> <?php echo $TbMsg[3]?><br /> + <input type="submit" value=<?php echo $TbMsg[0]?> name="crear" onclick="accion(this)"> </TD> </TR> <TR> - <TD width="150" height="100" valign="middle"> <?php echo $TbMsg[4]?><br /> - <form name="crearranque" method="post" action="./boot_grub4dos_crear.php"> - <input type="hidden" name="litambito" value="<?php echo $litambito?>"> - <input type="hidden" name="idambito" value="<?php echo $idambito?>"> - <input type="hidden" name="nombreambito" value="<?php echo $nombreambito?>"> - <input type="hidden" name="opcioncrear" value="2"> - <input type="submit" value=<?php echo $TbMsg[1]?> name="nuevoarran"> - </form> + <TD id="modificar" width="150" height="100" valign="middle"> <?php echo $TbMsg[4]?><br /> + <input type="submit" value=<?php echo $TbMsg[1]?> name="modificar" onclick="accion(this)"> </TD> </TR> <TR> - <TD width="150" height="100" valign="middle"> <?php echo $TbMsg[5]?><br /> - <form name="crearranque" method="post" action="./boot_grub4dos_crear.php"> - <input type="hidden" name="litambito" value="<?php echo $litambito?>"> - <input type="hidden" name="idambito" value="<?php echo $idambito?>"> - <input type="hidden" name="nombreambito" value="<?php echo $nombreambito?>"> - <input type="hidden" name="opcioncrear" value="3"> - <input type="submit" value=<?php echo $TbMsg[2]?> name="nuevoarran"> - </form> + <TD id="eliminar" width="150" height="100" valign="middle"> <?php echo $TbMsg[5]?><br /> + <input type="submit" value=<?php echo $TbMsg[2]?> name="eliminar" onclick="accion(this)"> </TD> </TR> <TR> - <TD width="150" height="150" valign="middle"> - <form name="crearranque" method="post" action="./boot_grub4dos.php"> - <input type="hidden" name="litambito" value="<?php echo $litambito?>"> - <input type="hidden" name="idambito" value="<?php echo $idambito?>"> - <input type="hidden" name="nombreambito" value="<?php echo $nombreambito?>"> - <input type="hidden" name="opcion"crear value=""> - </form> - </TD> + <TD width="150" height="150" valign="middle"> </TD> </TR> -</TABLE>
\ No newline at end of file +</TABLE> +</td> diff --git a/admin/WebConsole/principal/changelog.php b/admin/WebConsole/principal/changelog.php index bf829826..ddfc8f9f 100644 --- a/admin/WebConsole/principal/changelog.php +++ b/admin/WebConsole/principal/changelog.php @@ -22,14 +22,12 @@ $changelog=(file_exists ($changelogfile)) ? file_get_contents($changelogfile, TR <body> - <div><p align=center class=cabeceras><img border=0 nod="aulas-1" value="Sala Virtual" style="cursor:pointer" src="../images/iconos/aula.gif" > <?php echo $TbMsg["CHANGELOG_TITLE"] ?><br> - <span id="aulas-1" class=subcabeceras><?php echo $version ?></span></p> + <div><p align="center" class="cabeceras"><img border="0" src="../images/iconos/aula.gif" > <?php echo $TbMsg["CHANGELOG_TITLE"] ?><br> + <span id="aulas-1" class="subcabeceras"><?php echo $version ?></span></p> </div> - <div style="margin: 0 3em 0 3em"> - <pre> - <?php echo $changelog; ?> - <pre> + <div style="margin: 3em"> + <pre><?php echo $changelog; ?><pre> </div> </body> </html> diff --git a/admin/WebConsole/principal/colasacciones.php b/admin/WebConsole/principal/colasacciones.php index 1c6558d7..ad927564 100644 --- a/admin/WebConsole/principal/colasacciones.php +++ b/admin/WebConsole/principal/colasacciones.php @@ -141,8 +141,8 @@ //________________________________________________________________________________________________________ ?> <HTML> - <TITLE>Administración web de aulas</TITLE> <HEAD> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="../clases/jscripts/MenuContextual.js"></SCRIPT> @@ -175,8 +175,8 @@ $HTMLCriterios=""; $HTMLCriterios.='<TABLE class=tabla_busquedas align=center border="0">'; // Filtro de búsquedas - $HTMLCriterios.=' <TR HEIGHT=30>'; - $HTMLCriterios.=' <TD style=" BORDER-BOTTOM:#5a86b5 1px solid;"colspan=2 align="center" >'; + $HTMLCriterios.=' <TR>'; + $HTMLCriterios.=' <TD HEIGHT="30px" style="BORDER-BOTTOM:#5a86b5 1px solid;" colspan=2 align="center">'; $HTMLCriterios.=' <SPAN style="FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; FONT-SIZE: 11px;COLOR:#5a86b5;FONT-WEIGHT: 700;">____ '.$TbMsg[1].'____</SPAN></TD></TR>'; @@ -861,11 +861,10 @@ function escribeResumen($oA) { global $cmd; global $TbMsg; - global $ACCION_EXITOSA; global $ACCION_FALLIDA; - global $ACCION_SINRESULTADO; - + global $ACCION_SINRESULTADO; + global $ACCION_DETENIDA; global $EJECUCION_TAREA; $html=""; @@ -1198,9 +1197,7 @@ function ContextualXMLComun() global $EJECUCION_TAREA; global $sesion; - $layerXML=""; - - $layerXML.='<ITEM'; + $layerXML ='<ITEM'; $layerXML.=' alpulsar="eleccion(1,document.facciones.localaccion)"'; $layerXML.=' imgitem="../images/iconos/eliminar.gif"'; $layerXML.=' textoitem='.$TbMsg[46]; @@ -1244,5 +1241,4 @@ function ContextualXMLComun() $layerXML.='</MENUCONTEXTUAL>'; return($layerXML); } -?> diff --git a/admin/WebConsole/principal/configuraciones.php b/admin/WebConsole/principal/configuraciones.php index 7c6e02aa..39093914 100644 --- a/admin/WebConsole/principal/configuraciones.php +++ b/admin/WebConsole/principal/configuraciones.php @@ -280,7 +280,7 @@ function datosGruposOrdenadores($cmd,$idgrupo) } $rs->Cerrar(); } - if ($numordenadores==0) + if ($ordenadores==0) { $cmd->texto="SELECT *, COUNT(*) AS numordenadores FROM gruposordenadores diff --git a/admin/WebConsole/principal/ecoconsola.php b/admin/WebConsole/principal/ecoconsola.php index cdd09205..26ea1b61 100644 --- a/admin/WebConsole/principal/ecoconsola.php +++ b/admin/WebConsole/principal/ecoconsola.php @@ -15,6 +15,7 @@ include_once("../includes/comunes.php"); include_once("../includes/CreaComando.php"); include_once("../includes/RecopilaIpesMacs.php"); + include_once('../includes/restfunctions.php'); //________________________________________________________________________________________________________ $ambito=0; $idambito=0; @@ -29,18 +30,6 @@ if (!$cmd) Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D. //________________________________________________________________________________________________________ - switch($sw){ - case 1: // EnvÃo del código de scrip - $funcion="nfn=ConsolaRemota".chr(13); - $atributos="scp=".rawurlencode($comando).chr(13); - break; - case 2: // Recupera el archivo de eco - $funcion="nfn=EcoConsola".chr(13); // Nombre de la función que procesa la petición - $atributos=chr(13); - } - $aplicacion=""; // Ãmbito de aplicación (cadena de ipes separadas por ";" y de identificadores de ordenadores por "," - $acciones=""; // Cadena de identificadores de acciones separadas por ";" para seguimiento - //________________________________________________________________________________________________________ // Ãmbito de aplicación de la petición //________________________________________________________________________________________________________ $cadenaid=""; @@ -48,34 +37,12 @@ $cadenamac=""; RecopilaIpesMacs($cmd,$ambito,$idambito); // Ãmbito de aplicación - $aplicacion="ido=".$cadenaid.chr(13)."iph=".$cadenaip.chr(13); //________________________________________________________________________________________________________ // Envio al servidor de la petición //________________________________________________________________________________________________________ - $resul=false; - $trama=""; - $shidra=new SockHidra($servidorhidra,$hidraport); - if ($shidra->conectar()){ // Se ha establecido la conexión con el servidor hidra - $parametros=$funcion.$aplicacion.$atributos.$acciones; - $resul=$shidra->envia_peticion($parametros); - if($resul) - $trama=$shidra->recibe_respuesta(); - $shidra->desconectar(); - } - if($resul){ - $hlonprm=hexdec(substr($trama,$LONCABECERA,$LONHEXPRM)); - $parametros=substr($trama,$LONCABECERA+$LONHEXPRM,$hlonprm); - $ValorParametros=extrae_parametros($parametros,chr(13),'='); - switch($sw){ - case 1: // EnvÃo del código de scrip - $trama_notificacion=$ValorParametros["res"]; - echo $trama_notificacion; // Devuelve respuesta - break; - case 2: // Recupera el archivo de eco - $trama_notificacion=$ValorParametros["res"]; - echo $trama_notificacion; // Devuelve respuesta - } - - } -?> + $trama_notificacion = shell($sw, $cadenaip, $comando); + + echo $trama_notificacion; + + diff --git a/admin/WebConsole/principal/engine.php b/admin/WebConsole/principal/engine.php index 55004b8d..d7d10db1 100644 --- a/admin/WebConsole/principal/engine.php +++ b/admin/WebConsole/principal/engine.php @@ -18,14 +18,12 @@ $config=(file_exists ($cfgfile)) ? file_get_contents($cfgfile, TRUE) : "No hay a <body> - <div><p align=center class=cabeceras><img border=0 nod="aulas-1" value="Sala Virtual" style="cursor:pointer" src="../images/iconos/aula.gif" > <?php echo $TbMsg["ENGINE_TITLE"] ?><br> - <span id="aulas-1" class=subcabeceras><?php echo $TbMsg["ENGINE_SUBTITLE"] ?></span></p> + <div><p align="center" class="cabeceras"><img border="0" src="../images/iconos/aula.gif" > <?php echo $TbMsg["ENGINE_TITLE"] ?><br> + <span id="aulas-1" class="subcabeceras"><?php echo $TbMsg["ENGINE_SUBTITLE"] ?></span></p> </div> - <div style="margin: 0 3em 0 3em"> - <pre> - <?php echo $config; ?> - <pre> + <div style="margin: 3em"> + <pre><?php echo $config; ?><pre> </div> </body> </html> diff --git a/admin/WebConsole/principal/manual.php b/admin/WebConsole/principal/manual.php index ce9885cc..85921d75 100644 --- a/admin/WebConsole/principal/manual.php +++ b/admin/WebConsole/principal/manual.php @@ -37,7 +37,8 @@ foreach ($fichero as $ficheros) { </head> <body class='acercade'> -<div><p align=center class=cabeceras><img border=0 nod="aulas-1" value="Sala Virtual" style="cursor:pointer" src="../images/iconos/aula.gif" > <?php echo $TbMsg["MANUAL"] ?><br> +<p align=center class=cabeceras><img border=0 style="cursor: pointer;" src="../images/iconos/aula.gif" > <?php echo $TbMsg["MANUAL"] ?></p> +<br> <table width='100%' border='0'> <tr> diff --git a/admin/WebConsole/principal/purgar.php b/admin/WebConsole/principal/purgar.php index d3d0aaaa..aef8aebe 100644 --- a/admin/WebConsole/principal/purgar.php +++ b/admin/WebConsole/principal/purgar.php @@ -15,6 +15,7 @@ include_once("../includes/comunes.php"); include_once("../includes/CreaComando.php"); include_once("../includes/RecopilaIpesMacs.php"); + include_once('../includes/restfunctions.php'); //________________________________________________________________________________________________________ $ambito=0; $idambito=0; @@ -41,23 +42,5 @@ //________________________________________________________________________________________________________ // Envio al servidor de la petición //________________________________________________________________________________________________________ - $trama=""; - $shidra=new SockHidra($servidorhidra,$hidraport); - if ($shidra->conectar()){ // Se ha establecido la conexión con el servidor hidra - $parametros="nfn=".$funcion.chr(13); - $parametros.=$aplicacion; - $parametros.=$atributos; - $parametros.=$acciones; - $shidra->envia_comando($parametros); - $trama=$shidra->recibe_respuesta(); - $shidra->desconectar(); - $hlonprm=hexdec(substr($trama,$LONCABECERA,$LONHEXPRM)); - $parametros=substr($trama,$LONCABECERA+$LONHEXPRM,$hlonprm); - $ValorParametros=extrae_parametros($parametros,chr(13),'='); - $trama_notificacion=$ValorParametros["res"]; - echo $trama_notificacion; // Devuelve respuesta - } - else - echo "0"; // Error de conexión -?> + echo stop($cadenaip) === 0 ? "0" : "1"; diff --git a/admin/WebConsole/principal/repositorios.php b/admin/WebConsole/principal/repositorios.php index e2144b7f..5b273ed4 100644 --- a/admin/WebConsole/principal/repositorios.php +++ b/admin/WebConsole/principal/repositorios.php @@ -34,8 +34,8 @@ $XMLcontextual=ContextualXMLComandos($LITAMBITO_CENTROS,$AMBITO_CENTROS); //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="../clases/jscripts/ArbolVistaXML.js"></SCRIPT> @@ -70,7 +70,7 @@ echo $flotante->CreaMenuContextual($XMLcontextual); $XMLcontextual=CreacontextualXMLRepositorio(); // Repositorio echo $flotante->CreaMenuContextual($XMLcontextual); ?> -</BODY OnContextMenu="return false;"> +</BODY> </HTML> <?php // ************************************************************************************************************************************************* @@ -325,7 +325,8 @@ function ContextualXMLComandos($litambito,$ambito){ global $cmd; global $TbMsg; $maxlongdescri=0; - $rs=new Recordset; + $descrip=""; + $rs=new Recordset; $cmd->texto="SELECT idcomando,descripcion,pagina,gestor,funcion FROM comandos WHERE activo=1 AND aplicambito & ".$ambito.">0 @@ -335,9 +336,10 @@ function ContextualXMLComandos($litambito,$ambito){ $layerXML=""; $rs->Primero(); while (!$rs->EOF){ - if (isset($TbMsg["COMMAND_".$rs->campos["funcion"]])) {$descrip=$TbMsg["COMMAND_".$rs->campos["funcion"]];}else{$descrip;} - //$descrip=$TbMsg["COMMAND_".$rs->campos["funcion"]]; - if (empty ($descrip)) { + if (isset($TbMsg["COMMAND_".$rs->campos["funcion"]])) { + $descrip=$TbMsg["COMMAND_".$rs->campos["funcion"]]; + } + if (empty($descrip)) { $descrip=$rs->campos["funcion"]; } $layerXML.='<ITEM'; diff --git a/admin/WebConsole/principal/shellconsola.php b/admin/WebConsole/principal/shellconsola.php index 64c44f79..a37276f0 100644 --- a/admin/WebConsole/principal/shellconsola.php +++ b/admin/WebConsole/principal/shellconsola.php @@ -189,4 +189,4 @@ function RecorreOrdenadores($cmd){ } $rs->Cerrar(); } -?> + diff --git a/admin/WebConsole/principal/sondeo.php b/admin/WebConsole/principal/sondeo.php index cc63ec60..90493d58 100644 --- a/admin/WebConsole/principal/sondeo.php +++ b/admin/WebConsole/principal/sondeo.php @@ -46,36 +46,14 @@ $cadenamac=""; RecopilaIpesMacs($cmd,$ambito,$idambito); // Ãmbito de aplicación - $aplicacion="ido=".$cadenaid.chr(13)."iph=".$cadenaip.chr(13); - // Envio al servidor de la petición - //________________________________________________________________________________________________________ - $resul=false; - $trama=""; - $trama_notificacion=""; - $shidra=new SockHidra($servidorhidra,$hidraport); - if ($shidra->conectar()){ // Se ha establecido la conexión con el servidor hidra - $parametros="nfn=".$funcion.chr(13); - $parametros.=$aplicacion; - $parametros.=$atributos; - $parametros.=$acciones; - $resul=$shidra->envia_peticion($parametros); - if($resul) - $trama=$shidra->recibe_respuesta(); - $shidra->desconectar(); - } - if($resul){ - $hlonprm=hexdec(substr($trama,$LONCABECERA,$LONHEXPRM)); - $parametros=substr($trama,$LONCABECERA+$LONHEXPRM,$hlonprm); - $ValorParametros=extrae_parametros($parametros,chr(13),'='); - if (isset ($ValorParametros["tso"])) { - $trama_notificacion=$ValorParametros["tso"]; - } - } + $ips = explode (';', $cadenaip); + + $trama_notificacion = clients($sw, $ips); // Send REST requests to new OGAgent clients. $urls = array(); // Compose array of REST URLs. - foreach (explode (';', $cadenaip) as $ip) { + foreach ($ips as $ip) { $urls[$ip] = "https://$ip:8000/opengnsys/status"; } // Launch concurrent requests. @@ -95,5 +73,5 @@ } } echo $trama_notificacion; -?> + diff --git a/admin/WebConsole/propiedades/propiedades_aulas.php b/admin/WebConsole/propiedades/propiedades_aulas.php index cace8c5f..7042d5ca 100644 --- a/admin/WebConsole/propiedades/propiedades_aulas.php +++ b/admin/WebConsole/propiedades/propiedades_aulas.php @@ -81,8 +81,8 @@ if (!$resul) //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="../jscripts/validators.js"></SCRIPT> @@ -110,7 +110,7 @@ function abrir_ventana(URL){ <input type="hidden" name="oglive" value="<?php echo $oglive ?>"> <P align=center class=cabeceras><?php echo $TbMsg[4]?><BR> - <SPAN align=center class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> + <SPAN class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> <TABLE align=center border=5 cellPadding=1 cellSpacing=1 class=tabla_datos > <!-- AGP --> <!-------------------------------------------------- AGP -----------------------------------------------------------------> <TR> @@ -126,7 +126,7 @@ function abrir_ventana(URL){ <br />'.$TbMsg[21].': '. $ordenadores.'</td>'; } else{ - echo '<td><input class="formulariodatos" name=nombreaula style="width:215" type=text value="'. $nombreaula.'" /></td>'; + echo '<td><input class="formulariodatos" name=nombreaula style="width:215px" type=text value="'. $nombreaula.'" /></td>'; echo'<td rowspan="5" colspan="2" valign="top" align="left"><img border="3" style="border-color:#63676b" src="../images/fotos/'.$urlfoto.'" /><br />'.$TbMsg[21].': '. $ordenadores.'<br />(150X110)-(jpg - gif - png) ---- '.$TbMsg[5091].'<br /><input name="archivo" type="file" id="archivo" size="16" /></td>'; } ?> @@ -175,7 +175,7 @@ function abrir_ventana(URL){ <?php if ($opcion==$op_eliminacion) echo '<td>'.$puestos.'</td>'; else - echo '<td><input class="formulariodatos" name=puestos style="width:30" type=text value='.$puestos.'></td>'; + echo '<td><input class="formulariodatos" name=puestos style="width:30px" type=text value='.$puestos.'></td>'; ?> </tr> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> @@ -252,7 +252,7 @@ function abrir_ventana(URL){ if ($opcion==$op_eliminacion) echo '<TD colspan=3>'.$router.'</TD>'; else - echo '<TD colspan=3><INPUT class="formulariodatos" name=router style="width:100" type=text value='.$router.'></TD>'; + echo '<TD colspan=3><INPUT class="formulariodatos" name=router style="width:100px" type=text value='.$router.'></TD>'; ?> </TR> <!---- ADV --------------------------netmask-------------------------------------------------------------------------------------------------------------------------------------------> @@ -261,7 +261,7 @@ function abrir_ventana(URL){ <?php if ($opcion==$op_eliminacion) echo '<TD colspan=3>'.$netmask.'</TD>'; else - echo '<TD colspan=3><INPUT class="formulariodatos" name=netmask style="width:100" type=text value='.$netmask.'></TD>'; + echo '<TD colspan=3><INPUT class="formulariodatos" name=netmask style="width:100px" type=text value='.$netmask.'></TD>'; ?> </TR> <!---- Ramón ------------------------ntp-------------------------------------------------> @@ -270,7 +270,7 @@ function abrir_ventana(URL){ <?php if ($opcion==$op_eliminacion) { echo '<td colspan="3">'.$ntp.'</td>'; } else { - echo '<td colspan="3"><input class="formulariodatos" name="ntp" style="width:100" type="text" maxlength="15" value="'.$ntp.'" /> '; + echo '<td colspan="3"><input class="formulariodatos" name="ntp" style="width:100px" type="text" maxlength="15" value="'.$ntp.'" /> '; if (exec("timedatectl status | awk -F'[:()]' '/Time.*zone/ {print $2}'", $out, $err)) { echo '<em>('.$TbMsg['COMM_DEFTIMEZONE'].': '.$out[0].')</em>'; } @@ -284,7 +284,7 @@ function abrir_ventana(URL){ <?php if ($opcion==$op_eliminacion) echo '<td colspan="3">'.$dns.'</td>'; else - echo '<td colspan="3"><input class="formulariodatos" name="dns" style="width:100" type="text" maxlength="15" value="'.$dns.'" /></td>'; + echo '<td colspan="3"><input class="formulariodatos" name="dns" style="width:100px" type="text" maxlength="15" value="'.$dns.'" /></td>'; ?> </tr> <!---- Ramón ------------------------proxy-------------------------------------------------> @@ -293,7 +293,7 @@ function abrir_ventana(URL){ <?php if ($opcion==$op_eliminacion) echo '<td colspan="3">'.$proxy.'</td>'; else - echo '<td colspan="3"><input class="formulariodatos" name="proxy" style="width:200" type="text" maxlength="30" value="'.$proxy.'" /></td>'; + echo '<td colspan="3"><input class="formulariodatos" name="proxy" style="width:200px" type="text" maxlength="30" value="'.$proxy.'" /></td>'; ?> </tr> <!---- ADV --------------------------p2pmodo-------------------------------------------------------------------------------------------------------------------------------------------> @@ -318,7 +318,7 @@ function abrir_ventana(URL){ <?php if ($opcion==$op_eliminacion) echo '<TD colspan=3>'.$timep2p.'</TD>'; else - echo '<TD colspan=3><INPUT class="formulariodatos" name=timep2p style="width:100" type=text value='.$timep2p.'></TD>'; + echo '<TD colspan=3><INPUT class="formulariodatos" name=timep2p style="width:100px" type=text value='.$timep2p.'></TD>'; ?> </TR> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> @@ -344,7 +344,7 @@ function abrir_ventana(URL){ <?php if ($opcion==$op_eliminacion) echo '<TD colspan=3>'.$ipmul.'</TD>'; else - echo '<TD colspan=3><INPUT class="formulariodatos" name=ipmul style="width:100" type=text value='.$ipmul.'></TD>'; + echo '<TD colspan=3><INPUT class="formulariodatos" name=ipmul style="width:100px" type=text value='.$ipmul.'></TD>'; ?> </TR> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> @@ -354,10 +354,10 @@ function abrir_ventana(URL){ echo '<TD colspan=3>'.$pormul.'</TD>'; else { echo '<td colspan="3">'; - for ($i=9000; $i<9050; $i+=2) { + for ($i=9000; $i<9100; $i+=2) { $pormulmetodos.="$i=$i".chr(13); } - $pormulmetodos.="9050=9050"; + $pormulmetodos.="9100=9100"; echo HTMLCTESELECT($pormulmetodos,"pormul","estilodesple","",$pormul,100).'</td>'; } ?> @@ -368,11 +368,11 @@ function abrir_ventana(URL){ <?php if ($opcion==$op_eliminacion) echo '<TD colspan=3>'.$velmul.'</TD>'; else - echo '<TD colspan=3><INPUT class="formulariodatos" name=velmul style="width:100" type=text value='.$velmul.'></TD>'; + echo '<TD colspan=3><INPUT class="formulariodatos" name=velmul style="width:100px" type=text value='.$velmul.'></TD>'; ?> </TR> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> -</TABLE></br> +</TABLE><p> <!-- ########################################### PROPIEDADES APLICABLES A TODOS LOS ORDENADORES #################################################################################--> <TABLE align=center border=7 cellPadding=3 cellSpacing=1 class=tabla_listados > @@ -412,7 +412,7 @@ function abrir_ventana(URL){ } echo HTMLCTESELECT($ogliveList,"oglive","estilodesple"," ",$cntDiff==0?$oglive:" ",200); if ($cntDiff > 0) { - echo ' <font color=red><strong>'.$TbMsg[34]." ==> $cntDiff</strong></font>\n"; + echo ' <div style="color: red; font-weight: bold;">'.$TbMsg[34]." ==> $cntDiff</div>\n"; } echo "</td>\n"; } @@ -454,7 +454,7 @@ function abrir_ventana(URL){ <?php if ($opcion==$op_eliminacion) echo '<td colspan="3">'.$paginalogin.'</td>'; else - echo '<td colspan="3"><input class="formulariodatos" name="paginalogin" style="width:200" type="text" value="'.$paginalogin.'"></td>'; + echo '<td colspan="3"><input class="formulariodatos" name="paginalogin" style="width:200px" type="text" value="'.$paginalogin.'"></td>'; ?> </tr> <tr> @@ -462,7 +462,7 @@ function abrir_ventana(URL){ <?php if ($opcion==$op_eliminacion) echo '<td colspan="3">'.$paginavalidacion.'</td>'; else - echo '<td colspan="3"><input class="formulariodatos" name="paginavalidacion" style="width:200" type="text" value="'.$paginavalidacion.'"></td>'; + echo '<td colspan="3"><input class="formulariodatos" name="paginavalidacion" style="width:200px" type="text" value="'.$paginavalidacion.'"></td>'; ?> </tr> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> @@ -675,5 +675,3 @@ function TomaConfiguracion($cmd) { } return(false); } -?> - diff --git a/admin/WebConsole/propiedades/propiedades_centros.php b/admin/WebConsole/propiedades/propiedades_centros.php index c4f89fb2..887cc5cd 100644 --- a/admin/WebConsole/propiedades/propiedades_centros.php +++ b/admin/WebConsole/propiedades/propiedades_centros.php @@ -50,7 +50,7 @@ if ($opcion!=$op_alta){ ?> <HTML> <HEAD> -<TITLE>Administración web de aulas</TITLE> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="../jscripts/propiedades_centros.js"></SCRIPT> @@ -65,18 +65,18 @@ if ($opcion!=$op_alta){ <INPUT type=hidden name=idcentro value=<?php echo $idcentro?>> <INPUT type=hidden name=identidad value=<?php echo $identidad?>> <P align=center class=cabeceras><?php echo $TbMsg[4]?><BR> - <SPAN align=center class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> + <SPAN class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> <TABLE align=center border=0 cellPadding=1 cellSpacing=1 class=tabla_datos> -<!--------------------------------------------------------------------------------------------------------------------------------------------------> +<!-- -------------------------------------------------------------------------------------------------------------------------------------------- --> <TR> <TH> <?php echo $TbMsg[5]?> </TH> <?php if ($opcion==$op_eliminacion){?> <TD><?php echo $nombrecentro?></TD> <?php }else{?> - <TD><INPUT type=text class=cajatexto name="nombrecentro" style="width:350" value="<?php echo $nombrecentro?>"> + <TD><INPUT type=text class=cajatexto name="nombrecentro" style="width:350px" value="<?php echo $nombrecentro?>"> <?php }?> </TR> -<!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> +<!-- -------------------------------------------------------------------------------------------------------------------------------------------- --> <TR> <TH align=center> <?php echo $TbMsg[6]?> </TH> <?php if ($opcion==$op_eliminacion) @@ -85,8 +85,7 @@ if ($opcion!=$op_alta){ echo '<TD><TEXTAREA class="formulariodatos" name=comentarios rows=3 cols=66>'.$comentarios.'</TEXTAREA></TD>'; ?> </TR> -<!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> -<!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> +<!-- -------------------------------------------------------------------------------------------------------------------------------------------- --> <?php if ($opcion!=$op_eliminacion) { echo " <TR>\n". " <TH align=center> ".$TbMsg['DIR']." </TH>\n". @@ -97,7 +96,7 @@ echo " <TR>\n". " </TR>\n"; } ?> -<!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> +<!-- -------------------------------------------------------------------------------------------------------------------------------------------- --> </TABLE> </FORM> <?php diff --git a/admin/WebConsole/propiedades/propiedades_componentehardwares.php b/admin/WebConsole/propiedades/propiedades_componentehardwares.php index 4cba86ad..7ccae62b 100644 --- a/admin/WebConsole/propiedades/propiedades_componentehardwares.php +++ b/admin/WebConsole/propiedades/propiedades_componentehardwares.php @@ -40,8 +40,8 @@ if ($opcion!=$op_alta){ //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="../jscripts/propiedades_componentehardwares.js"></SCRIPT> @@ -49,24 +49,25 @@ if ($opcion!=$op_alta){ <?php echo '<SCRIPT language="javascript" src="../idiomas/javascripts/'.$idioma.'/propiedades_componentehardwares_'.$idioma.'.js"></SCRIPT>'?> </HEAD> <BODY> -<FORM name="fdatos" action="../gestores/gestor_componentehardwares.php" method="post"> +<div align="center"> +<FORM name="fdatos" action="../gestores/gestor_componentehardwares.php" method="post"> <INPUT type=hidden name=opcion value="<?php echo $opcion?>"> - <INPUT type=hidden name=idhardware value=<?php echo $idhardware?>> - <INPUT type=hidden name=grupoid value=<?php echo $grupoid?>> - <P align=center class=cabeceras><?php echo $TbMsg[4]?><BR> - <SPAN align=center class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> + <INPUT type=hidden name=idhardware value="<?php echo $idhardware?>"> + <INPUT type=hidden name=grupoid value="<?php echo $grupoid?>"> + <P align=center class=cabeceras><?php echo $TbMsg[4]?><BR> + <SPAN class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> <TABLE align=center border=0 cellPadding=1 cellSpacing=1 class=tabla_datos> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> - <TH align=center> <?php echo $TbMsg[5]?> </TD> + <TH align=center> <?php echo $TbMsg[5]?> </TH> <?php if ($opcion==$op_eliminacion) - echo '<TD style="width:215">'.$descripcion.'</TD>'; + echo '<TD style="width:215px">'.$descripcion.'</TD>'; else - echo '<TD><INPUT class="formulariodatos" name=descripcion style="width:250" type=text value="'.$descripcion.'"></TD>';?> + echo '<TD><INPUT class="formulariodatos" name=descripcion style="width:250px" type=text value="'.$descripcion.'"></TD>';?> </TR> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> - <TH align=center> <?php echo $TbMsg[6]?> </TD> + <TH align=center> <?php echo $TbMsg[6]?> </TH> <?php if ($opcion==$op_eliminacion) echo '<TD>'.TomaDato($cmd,0,'tipohardwares',$idtipohardware,'idtipohardware','descripcion').'</TD>'; @@ -77,7 +78,7 @@ if ($opcion!=$op_alta){ <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> </TABLE> </FORM> -</DIV> +</div> <?php //________________________________________________________________________________________________________ include_once("../includes/opcionesbotonesop.php"); @@ -109,4 +110,3 @@ function TomaPropiedades($cmd,$id){ else return(false); } -?> diff --git a/admin/WebConsole/propiedades/propiedades_componentesoftwares.php b/admin/WebConsole/propiedades/propiedades_componentesoftwares.php index 381ee125..68f4e95b 100644 --- a/admin/WebConsole/propiedades/propiedades_componentesoftwares.php +++ b/admin/WebConsole/propiedades/propiedades_componentesoftwares.php @@ -41,8 +41,8 @@ if ($opcion!=$op_alta){ //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="../jscripts/propiedades_componentesoftwares.js"></SCRIPT> @@ -50,23 +50,24 @@ if ($opcion!=$op_alta){ <?php echo '<SCRIPT language="javascript" src="../idiomas/javascripts/'.$idioma.'/propiedades_componentesoftwares_'.$idioma.'.js"></SCRIPT>'?> </HEAD> <BODY> +<div align="center"> <FORM name="fdatos" action="../gestores/gestor_componentesoftwares.php" method="post"> <INPUT type=hidden name=opcion value="<?php echo $opcion?>"> <INPUT type=hidden name=idsoftware value=<?php echo $idsoftware?>> <INPUT type=hidden name=grupoid value=<?php echo $grupoid?>> <P align=center class=cabeceras><?php echo $TbMsg[4]?><BR> - <SPAN align=center class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> + <SPAN class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> <TABLE align=center border=0 cellPadding=1 cellSpacing=1 class=tabla_datos> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> - <TR width="100px" style="display:block"> + <TR style="display:block"> <TH width="100px" align=center> <?php echo $TbMsg[5]?> </TH> <?php if ($opcion==$op_eliminacion) - echo '<TD style="width:215">'.$descripcion.'</TD>'; + echo '<TD style="width:215px">'.$descripcion.'</TD>'; else - echo '<TD><INPUT class="formulariodatos" name=descripcion style="width:250" type=text value="'.$descripcion.'"></TD>';?> + echo '<TD><INPUT class="formulariodatos" name=descripcion style="width:250px" type=text value="'.$descripcion.'"></TD>';?> </TR> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> - <TR width="100px" style="display:block" > + <TR style="display:block" > <TH width="100px" align=center> <?php echo $TbMsg[6]?> </TH> <?php if ($opcion==$op_eliminacion) @@ -77,22 +78,20 @@ if ($opcion!=$op_alta){ </TR> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <?php if($idtiposoftware!=1) - echo '<TR width="100px" id="tridtiposo" style="display:none">'; - else - echo '<TR width="100px" id="tridtiposo" style="display:block">'; + echo '<tr id="tridtiposo" style="display:none">'; + else + echo '<tr id="tridtiposo" style="display:block">'; + echo ' <TH width="100px" align=center> <?php echo $TbMsg[7]?> </TH>'; + if ($opcion==$op_eliminacion) + echo '<TD>'.TomaDato($cmd,0,'tiposos',$idtiposo,'idtiposo','descripcion').'</TD>'; + else + echo '<TD>'.HTMLSELECT($cmd,0,'tiposos',$idtiposo,'idtiposo','descripcion',250).'</TD>'; + echo '</tr>'; ?> - <TH width="100px" align=center> <?php echo $TbMsg[7]?> </TH> - <?php - if ($opcion==$op_eliminacion) - echo '<TD>'.TomaDato($cmd,0,'tiposos',$idtiposo,'idtiposo','descripcion').'</TD>'; - else - echo '<TD>'.HTMLSELECT($cmd,0,'tiposos',$idtiposo,'idtiposo','descripcion',250).'</TD>'; - ?> - </TR> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> </TABLE> </FORM> -</DIV> +</div> <?php //________________________________________________________________________________________________________ include_once("../includes/opcionesbotonesop.php"); @@ -126,4 +125,3 @@ function TomaPropiedades($cmd,$id){ else return(false); } -?> diff --git a/admin/WebConsole/propiedades/propiedades_entidades.php b/admin/WebConsole/propiedades/propiedades_entidades.php index 18b0abb2..e221d96a 100644 --- a/admin/WebConsole/propiedades/propiedades_entidades.php +++ b/admin/WebConsole/propiedades/propiedades_entidades.php @@ -51,7 +51,7 @@ if ($opcion!=$op_alta){ ?> <HTML> <HEAD> -<TITLE>Administración web de aulas</TITLE> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="../jscripts/propiedades_entidades.js"></SCRIPT> @@ -60,45 +60,45 @@ if ($opcion!=$op_alta){ <?php echo '<SCRIPT language="javascript" src="../idiomas/javascripts/'.$idioma.'/propiedades_entidades_'.$idioma.'.js"></SCRIPT>'?> </HEAD> <BODY> +<div align="center"> <FORM name="fdatos" action="../gestores/gestor_entidades.php" method="post"> <INPUT type=hidden name=opcion value=<?php echo $opcion?>> <INPUT type=hidden name=identidad value=<?php echo $identidad?>> <INPUT type=hidden name=iduniversidad value=<?php echo $iduniversidad?>> <INPUT type=hidden name=grupoid value=<?php echo $grupoid?>> <P align=center class=cabeceras><?php echo $TbMsg[4]?><BR> - <SPAN align=center class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> + <SPAN class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> <TABLE align=center border=0 cellPadding=1 cellSpacing=1 class=tabla_datos> -<!--------------------------------------------------------------------------------------------------------------------------------------------------> - <TR> - <TH> <?php echo $TbMsg[5]?> </TH> - <?php if ($opcion==$op_eliminacion){?> - <TD><?php echo $nombreentidad?></TD> - <?php }else{?> - <TD><INPUT type=text class=cajatexto name="nombreentidad" style="width:350" value="<?php echo $nombreentidad?>"> - <?php }?> - </TR> -<!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> +<!-- -------------------------------------------------------------------------------------------------------------------------------------------- --> <TR> - <TH align=center> <?php echo $TbMsg[6]?> </TD> - <?php if ($opcion==$op_eliminacion) + <TH> <?php echo $TbMsg[5]?> </TH> + <?php if ($opcion==$op_eliminacion){ + echo '<TD>'.$nombreentidad.'</TD>'; + }else{ + echo '<TD><INPUT type=text class=cajatexto name="nombreentidad" style="width:350px" value="'.$nombreentidad.'">'; + } ?> + </TR> +<!-- -------------------------------------------------------------------------------------------------------------------------------------------- --> + <TR> + <TH align=center> <?php echo $TbMsg[6]?> </TH> + <?php if ($opcion==$op_eliminacion) echo '<TD>'.$comentarios.'</TD>'; else echo '<TD><TEXTAREA class="formulariodatos" name=comentarios rows=3 cols=66>'.$comentarios.'</TEXTAREA></TD>'; ?> </TR> -<!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> - <?php if ($opcion!=$op_eliminacion) { - ($ogunit == 1) ? $checked = "checked" : $checked = ""; -echo " <TR>\n". - " <TH align=center> ".$TbMsg['OGUNIT']." </TD>\n". +<!-- -------------------------------------------------------------------------------------------------------------------------------------------- --> + <?php if ($opcion!=$op_eliminacion) { + $checked = ($ogunit == 1) ? "checked" : ""; + echo " <TR>\n". + " <TH align=center> ".$TbMsg['OGUNIT']." </TH>\n". " <TD><input class='formulariodatos' name='ogunit' value='1' type='checkbox' $checked onchange='mensaje_ogunit()'> </TD>\n". " </TR>\n"; - } - ?> -<!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> + } ?> +<!-- -------------------------------------------------------------------------------------------------------------------------------------------- --> </TABLE> </FORM> -</DIV> +</div> <?php //________________________________________________________________________________________________________ include_once("../includes/opcionesbotonesop.php"); @@ -133,4 +133,4 @@ function TomaPropiedades($cmd,$id){ else return(false); } -?> + diff --git a/admin/WebConsole/propiedades/propiedades_entornos.php b/admin/WebConsole/propiedades/propiedades_entornos.php index 2d21fa30..dec84f96 100644 --- a/admin/WebConsole/propiedades/propiedades_entornos.php +++ b/admin/WebConsole/propiedades/propiedades_entornos.php @@ -49,8 +49,8 @@ if ($opcion!=$op_alta){ //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="../jscripts/propiedades_entornos.js"></SCRIPT> @@ -60,18 +60,18 @@ if ($opcion!=$op_alta){ </HEAD> <BODY> <DIV align=center> -<FORM name="fdatos" name="fdatos" action="../gestores/gestor_entornos.php" method="post"> +<FORM name="fdatos" action="../gestores/gestor_entornos.php" method="post"> <INPUT type=hidden name=identorno value="<?php echo $identorno?>"> <P align=center class=cabeceras><?php echo $TbMsg[4]?><BR> - <SPAN align=center class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> + <SPAN class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> <TABLE align=center border=0 cellPadding=1 cellSpacing=1 class=tabla_datos > <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> - <TH align=center> <?php echo $TbMsg[5]?> </TD> + <TH align=center> <?php echo $TbMsg[5]?> </TH> <?php if ($opcion==$op_eliminacion){ echo '<TD>'. $ipserveradm.'</TD>'; @@ -84,7 +84,7 @@ if ($opcion!=$op_alta){ </TR> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> - <TH align=center> <?php echo $TbMsg[6]?> </TD> + <TH align=center> <?php echo $TbMsg[6]?> </TH> <?php if ($opcion==$op_eliminacion) echo '<TD>'.$portserveradm.' </TD>'; else @@ -94,7 +94,7 @@ if ($opcion!=$op_alta){ <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> - <TH align=center> <?php echo $TbMsg[7]?> </TD> + <TH align=center> <?php echo $TbMsg[7]?> </TH> <?php if ($opcion==$op_eliminacion) echo '<TD>'.$protoclonacion.'</TD>'; @@ -149,4 +149,3 @@ function TomaPropiedades($cmd,$id){ else return(false); } -?> diff --git a/admin/WebConsole/propiedades/propiedades_grupos.php b/admin/WebConsole/propiedades/propiedades_grupos.php index 4a40470f..142f6d19 100644 --- a/admin/WebConsole/propiedades/propiedades_grupos.php +++ b/admin/WebConsole/propiedades/propiedades_grupos.php @@ -129,8 +129,8 @@ switch($literaltipo){ //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="../jscripts/propiedades_grupos.js"></SCRIPT> @@ -149,19 +149,19 @@ switch($literaltipo){ <INPUT type=hidden name=iduniversidad value=<?php echo $iduniversidad?>> <INPUT type=hidden name=idaula value=<?php echo $idaula?>> <P align=center class=cabeceras><IMG src="<?php echo $urlimg?>"> <?php echo $textambito?><BR> - <SPAN align=center class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> + <SPAN class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> <TABLE align=center border=0 cellPadding=1 cellSpacing=1 class=tabla_datos > <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> - <TH align=center> <?php echo $TbMsg[5]?> </TD> + <TH align=center> <?php echo $TbMsg[5]?> </TH> <?php if ($opcion==$op_eliminacion) - echo '<TD style="width:300">'.$nombregrupo.'</TD>'; + echo '<TD style="width:300px">'.$nombregrupo.'</TD>'; else - echo '<TD><INPUT class="formulariodatos" name=nombregrupo style="width:320" type=text value="'.$nombregrupo.'"></TD>';?> + echo '<TD><INPUT class="formulariodatos" name=nombregrupo style="width:320px" type=text value="'.$nombregrupo.'"></TD>';?> </TR> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> - <TH align=center> <?php echo $TbMsg[6]?> </TD> + <TH align=center> <?php echo $TbMsg[6]?> </TH> <?php if ($opcion==$op_eliminacion) echo '<TD>'.$comentarios.'</TD>'; else @@ -211,5 +211,3 @@ function TomaPropiedades($cmd,$id){ else return(false); } -?> - diff --git a/admin/WebConsole/propiedades/propiedades_imagenes.php b/admin/WebConsole/propiedades/propiedades_imagenes.php index 4f31f607..cc108c17 100644 --- a/admin/WebConsole/propiedades/propiedades_imagenes.php +++ b/admin/WebConsole/propiedades/propiedades_imagenes.php @@ -34,6 +34,7 @@ $modelo=""; $numdisk=0; $numpar=0; $codpar=0; +$tipopar=""; $idperfilsoft=0; $perfilsoft=""; $comentarios=""; @@ -45,6 +46,7 @@ $tipoimg=0; $idrepositorio=0; $repoip=""; $repokey=""; +$sistoperativo=""; $fechacreacion=""; $revision=0; $imagenid=0; @@ -116,8 +118,8 @@ if ($opcion!=$op_alta and isset($repokey)) { //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="../jscripts/validators.js"></SCRIPT> @@ -155,35 +157,37 @@ if ($opcion!=$op_alta and isset($repokey)) { ?> <P align=center class=cabeceras><?php echo $lit?><BR> - <SPAN align=center class=subcabeceras><?php echo $opciones[$opcion]?></SPAN> + <SPAN class=subcabeceras><?php echo $opciones[$opcion]?></SPAN> </P> <TABLE align=center border=0 cellPadding=1 cellSpacing=1 class=tabla_datos> - <!--------------------------------------------------------------------------------------> + <!-- -------------------------------------------------------------------------------- --> <TR> - <TH align=center> <?php echo $TbMsg[11]?> </TD> + <TH align=center> <?php echo $TbMsg[11]?> </TH> <?php if ($opcion==$op_eliminacion || !empty($idperfilsoft) || $opcion == 2) - echo '<TD style="width:150">'.$nombreca.' + echo '<TD style="width:150px">'.$nombreca.' <INPUT type="hidden" name="nombreca" value="'.$nombreca.'"></TD>'; else - echo '<TD><INPUT class="formulariodatos" name=nombreca style="width:150" type=text value="'.$nombreca.'"></TH>';if ($validnombreca == 1){echo '<font color=red><strong> '.$TbMsg[18].'</strong>';}?> + echo '<TD><INPUT class="formulariodatos" name=nombreca style="width:150px" type=text value="'.$nombreca.'">'; + if ($validnombreca == 1){echo '<div style="color: red; font-weight: bold;"> '.$TbMsg[18].'</div>';} + echo '</TD>';?> </TR> - <!--------------------------------------------------------------------------------------> + <!-- -------------------------------------------------------------------------------- --> <TR> - <TH align=center> <?php echo $TbMsg[5]?> </TD> + <TH align=center> <?php echo $TbMsg[5]?> </TH> <?php if ($opcion==$op_eliminacion) { - echo '<TD style="width:300">'.$descripcion.' + echo '<TD style="width:300px">'.$descripcion.' <INPUT type="hidden" name="descripcion" value="'.$descripcion.'"></TD>'; } else { - echo '<TD><INPUT class="formulariodatos" name=descripcion style="width:350" type=text value="'.$descripcion.'">'; - if ($validnombreca == 0 && $validdescripcion == 1){echo '<font color=red><strong> '.$TbMsg[22].'</strong>';} + echo '<TD><INPUT class="formulariodatos" name=descripcion style="width:350px" type=text value="'.$descripcion.'">'; + if ($validnombreca == 0 && $validdescripcion == 1){echo '<div style="color: red; font-weight: bold;"> '.$TbMsg[22].'</div>';} echo '</TD>'; } ?> </TR> - <!--------------------------------------------------------------------------------------> + <!-- -------------------------------------------------------------------------------- --> <?php if($tipoimg==$IMAGENES_INCREMENTALES){?> <TR> - <TH align=center> <?php echo $TbMsg[14]?> </TD> + <TH align=center> <?php echo $TbMsg[14]?> </TH> <?php if ($opcion==$op_eliminacion || !empty($idperfilsoft)) echo '<TD>'.TomaDato($cmd,$idcentro,'imagenes',$imagenid,'imagenid','descripcion').' <INPUT type="hidden" name="imagenid" value="'.$imagenid.'"></TD>'; @@ -194,9 +198,9 @@ if ($opcion!=$op_alta and isset($repokey)) { </TR> <?php } ?> <?php if($tipoimg!=$IMAGENES_INCREMENTALES){?> - <!--------------------------------------------------------------------------------------> + <!-- -------------------------------------------------------------------------------- --> <TR> - <TH align=center> <?php echo $TbMsg[10]?> </TD> + <TH align=center> <?php echo $TbMsg[10]?> </TH> <?php if ($opcion==$op_eliminacion || !empty($idperfilsoft)) echo '<TD>'.$nombrerepositorio.' <INPUT type="hidden" name="idrepositorio" value="'.$idrepositorio.'"></TD>'; @@ -204,20 +208,20 @@ if ($opcion!=$op_alta and isset($repokey)) { echo '<TD>'.HTMLSELECT($cmd,$idcentro,'repositorios',$idrepositorio,'idrepositorio','nombrerepositorio',300).'</TD>'; ?> </TR> - <!--------------------------------------------------------------------------------------> + <!-- -------------------------------------------------------------------------------- --> <?php if($tipoimg==$IMAGENES_BASICAS){?> <TR> - <TH align=center> <?php echo $TbMsg[16]?> </TD> + <TH align=center> <?php echo $TbMsg[16]?> </TH> <?php if ($opcion==$op_eliminacion || !empty($idperfilsoft)) echo '<TD>'.$ruta.' <INPUT type="hidden" name="ruta" value="'.$ruta.'"></TD>'; else - echo '<TD><INPUT class="formulariodatos" name=ruta style="width:350" type=text value="'.$ruta.'"></TH>';?> + echo '<TD><INPUT class="formulariodatos" name=ruta style="width:350px" type=text value="'.$ruta.'"></TH>';?> </TR> <?php }?> - <!--------------------------------------------------------------------------------------> + <!-- -------------------------------------------------------------------------------- --> <TR> - <TH align=center> <?php echo $TbMsg[7]?> </TD> + <TH align=center> <?php echo $TbMsg[7]?> </TH> <?php if ($opcion==$op_eliminacion) echo '<TD>'.$comentarios.'</TD>'; else @@ -264,7 +268,7 @@ if ($opcion!=$op_alta and isset($repokey)) { </tr> <!-- Perfil de software --> <TR> - <TH align=center> <?php echo $TbMsg[6]?> </TD> + <TH align=center> <?php echo $TbMsg[6]?> </TH> <?php if (isset($modelo)) { echo '<TD> '.$perfilsoft.' @@ -319,7 +323,7 @@ EOT; echo '<tr><th colspan="14">'.$TbMsg["WARN_SOURCE_PATH"].'</th></tr>'; } }?> - <!--------------------------------------------------------------------------------------> + <!-- -------------------------------------------------------------------------------- --> </TABLE> </FORM> @@ -327,7 +331,7 @@ EOT; if (!empty($idperfilsoft)){ // Nota a pie de página indicando que cuando la imagen tiene perfilsoft no pueden modificarse ciertos campos echo ' <DIV id="Layer_nota" align=center > - <SPAN align=center class=notas><I>'.$TbMsg[15].'</I></SPAN> + <SPAN class=notas><em>'.$TbMsg[15].'</em></SPAN> </DIV><br>'; } //________________________________________________________________________________________________________ @@ -503,4 +507,3 @@ function ValidaDescripcion($cmd,$nombreca,$descripcion){ } $rs->Cerrar(); } -?> diff --git a/admin/WebConsole/propiedades/propiedades_menus.php b/admin/WebConsole/propiedades/propiedades_menus.php index 8e996841..66d44a84 100644 --- a/admin/WebConsole/propiedades/propiedades_menus.php +++ b/admin/WebConsole/propiedades/propiedades_menus.php @@ -50,8 +50,8 @@ if ($opcion!=$op_alta){ //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="../jscripts/propiedades_menus.js"></SCRIPT> @@ -59,28 +59,29 @@ if ($opcion!=$op_alta){ <?php echo '<SCRIPT language="javascript" src="../idiomas/javascripts/'.$idioma.'/propiedades_menus_'.$idioma.'.js"></SCRIPT>'?> </HEAD> <BODY> +<div align="center"> <FORM name="fdatos" action="../gestores/gestor_menus.php" method="post"> <INPUT type=hidden name=opcion value=<?php echo $opcion?>> <INPUT type=hidden name=idmenu value=<?php echo $idmenu?>> <INPUT type=hidden name=grupoid value=<?php echo $grupoid?>> <P align=center class=cabeceras><?php echo $TbMsg[4]?><BR> - <SPAN align=center class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> + <SPAN class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> <table align="center" border="0" cellPadding="1" cellSpacing="1" class="tabla_datos"> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <tr> <th align="center"> <?php echo $TbMsg[5]?> </th> <?php if ($opcion==$op_eliminacion) - echo '<td style="width:300">'.$descripcion.'</td>'; + echo '<td style="width:300px">'.$descripcion.'</td>'; else - echo '<td><input class="formulariodatos" name="descripcion" style="width:300" type="text" value="'.$descripcion.'" /></td>';?> + echo '<td><input class="formulariodatos" name="descripcion" style="width:300px" type="text" value="'.$descripcion.'" /></td>';?> </tr> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <tr> <th align=center> <?php echo $TbMsg[6]?> </th> <?php if ($opcion==$op_eliminacion) - echo '<td style="width:300">'.$titulo.'</td>'; + echo '<td style="width:300px">'.$titulo.'</td>'; else - echo '<td ><input class="formulariodatos" name="titulo" style="width:300" type="text" value="'.$titulo.'" /></td>';?> + echo '<td ><input class="formulariodatos" name="titulo" style="width:300px" type="text" value="'.$titulo.'" /></td>';?> </tr> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <tr> @@ -177,7 +178,7 @@ if ($opcion!=$op_alta){ <?php if ($opcion==$op_eliminacion){ $tbmodalidad[1]=$TbMsg[13]; $tbmodalidad[2]=$TbMsg[14]; - echo '<TD style="width:100">'.$tbmodalidad[$modalidad].'</TD>'; + echo '<TD style="width:100px">'.$tbmodalidad[$modalidad].'</TD>'; } else{ $parametros="1=1".chr(13); @@ -195,7 +196,7 @@ if ($opcion!=$op_alta){ <?php if ($opcion==$op_eliminacion) echo '<TD colspan=5>'.$htmlmenupub.'</TD>'; else - echo '<TD colspan=5><INPUT class="formulariodatos" name=htmlmenupub style="width:350" type=text value="'.$htmlmenupub.'"></TD>'; + echo '<TD colspan=5><INPUT class="formulariodatos" name=htmlmenupub style="width:350px" type=text value="'.$htmlmenupub.'"></TD>'; ?> </TR> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> @@ -208,7 +209,7 @@ if ($opcion!=$op_alta){ <?php if ($opcion==$op_eliminacion){ $tbmodalidad[1]=$TbMsg[13]; $tbmodalidad[2]=$TbMsg[14]; - echo '<TD style="width:100">'.$tbmodalidad[$smodalidad].'</TD>'; + echo '<TD style="width:100px">'.$tbmodalidad[$smodalidad].'</TD>'; } else{ $parametros="1=1".chr(13); @@ -225,7 +226,7 @@ if ($opcion!=$op_alta){ <?php if ($opcion==$op_eliminacion) echo '<TD colspan=5">'.$htmlmenupri.'</TD>'; else - echo '<TD colspan=5><INPUT class="formulariodatos" name=htmlmenupri style="width:350" type=text value="'.$htmlmenupri.'"></TD>'; + echo '<TD colspan=5><INPUT class="formulariodatos" name=htmlmenupri style="width:350px" type=text value="'.$htmlmenupri.'"></TD>'; ?> </TR> </TABLE> @@ -237,7 +238,7 @@ if ($opcion!=$op_alta){ ?> </table> </FORM> -</DIV> +</div> <?php //________________________________________________________________________________________________________ include_once("../includes/opcionesbotonesop.php"); @@ -284,4 +285,4 @@ function TomaPropiedades($cmd,$id){ else return(false); } -?> + diff --git a/admin/WebConsole/propiedades/propiedades_ordenadores.php b/admin/WebConsole/propiedades/propiedades_ordenadores.php index 887e87e0..e00f33ee 100644 --- a/admin/WebConsole/propiedades/propiedades_ordenadores.php +++ b/admin/WebConsole/propiedades/propiedades_ordenadores.php @@ -61,8 +61,8 @@ if ($opcion!=$op_alta){ //________________________________________________________________________________________________________ ?> <html> -<title>Administración web de aulas</title> <head> + <title>Administración web de aulas</title> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> <link rel="stylesheet" type="text/css" href="../estilos.css" /> <SCRIPT language="javascript" src="../jscripts/validators.js"></SCRIPT> @@ -196,6 +196,7 @@ function abrir_ventana(URL){ <TR> <th align=center> <?php echo $TbMsg[18]?> </th> <?php +$bdogLive=""; $cmd->texto="SELECT * FROM ordenadores WHERE idordenador=".$idordenador; $rs=new Recordset; $rs->Comando=&$cmd; @@ -210,14 +211,14 @@ if ($opcion==$op_eliminacion){ echo '<td colspan="3">'.$bdogLive.'</td>'; }else{ exec("bash /opt/opengnsys/bin/oglivecli list", $listogcli); - echo '<TD colspan=3><select class="formulariodatos" name="seleoglive" style=width:250>'."\n"; + echo '<TD colspan=3><select class="formulariodatos" name="seleoglive" style=width:250px>'."\n"; echo '<option value="ogLive">'.$TbMsg['COMM_DEFOGLIVE'].'</option>'; foreach ($listogcli as $oglive) { if (preg_match("/ogLive/",$oglive)){ $oglive=substr($oglive,1); $oglive=trim($oglive); $Selectcli = '<option value="'.$oglive.'"'; - If ($bdogLive==$oglive) $Selectcli.= ' selected ' ; + if ($bdogLive==$oglive) $Selectcli.= ' selected ' ; $Selectcli.= '>'.$oglive.'</OPTION>'; echo $Selectcli; } diff --git a/admin/WebConsole/propiedades/propiedades_ordenadorestandar.php b/admin/WebConsole/propiedades/propiedades_ordenadorestandar.php index 6decd954..89292c9e 100644 --- a/admin/WebConsole/propiedades/propiedades_ordenadorestandar.php +++ b/admin/WebConsole/propiedades/propiedades_ordenadorestandar.php @@ -42,8 +42,8 @@ if ($opcion!=$op_alta){ //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="../jscripts/propiedades_ordenadorestandar.js"></SCRIPT> @@ -53,11 +53,11 @@ if ($opcion!=$op_alta){ <BODY> <FORM name="fdatos"> <P align=center class=cabeceras><IMG border=0 src="../images/iconos/aula.gif"> <?php echo $TbMsg[0]?>:<SPAN class=cabeceras><?php echo $nombreaula?></SPAN><BR> - <SPAN align=center class=subcabeceras><?php echo $TbMsg[1]?></SPAN></P> + <SPAN class=subcabeceras><?php echo $TbMsg[1]?></SPAN></P> <TABLE align=center border=0 cellPadding=1 cellSpacing=1 class=tabla_datos> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> - <TH align=center> <?php echo $TbMsg[2]?> </TD> + <TH align=center> <?php echo $TbMsg[2]?> </TH> <?php echo '<TD><INPUT class="formulariodatos" name=nombreordenador type=text value="'.$nombreordenador.'"></TD>'; ?> @@ -65,45 +65,45 @@ if ($opcion!=$op_alta){ </TR> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> - <TH align=center> <?php echo $TbMsg[3]?> </TD> + <TH align=center> <?php echo $TbMsg[3]?> </TH> <?php echo '<TD><INPUT class="formulariodatos" name=ip type=text value="'.$ip.'"></TD>'; ?> </TR> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> - <TH align=center> <?php echo $TbMsg[4]?> </TD> + <TH align=center> <?php echo $TbMsg[4]?> </TH> <?php echo '<TD><INPUT class="formulariodatos" name=mac type=text value="'. $mac.'"></TD>'; ?> </TR> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> - <TH align=center> <?php echo $TbMsg[5]?> </TD> + <TH align=center> <?php echo $TbMsg[5]?> </TH> <?php echo '<TD colspan=3>'.HTMLSELECT($cmd,$idcentro,'perfileshard',$idperfilhard,'idperfilhard','descripcion',250).'</TD>'; ?> </TR> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> - <TH align=center> <?php echo $TbMsg[7]?> </TD> + <TH align=center> <?php echo $TbMsg[7]?> </TH> <?php echo '<TD colspan=3>'.HTMLSELECT($cmd,$idcentro,'repositorios',$idrepositorio,'idrepositorio','nombrerepositorios',250).'</TD>'; ?> </TR> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> - <TH align=center> <?php echo $TbMsg[11]?> </TD> + <TH align=center> <?php echo $TbMsg[11]?> </TH> <?php - echo '<TD colspan=3><INPUT style="width:250"class="formulariodatos" name=cache type=text value="'. $cache.'"></TD>'; + echo '<TD colspan=3><INPUT style="width:250px" class="formulariodatos" name=cache type=text value="'. $cache.'"></TD>'; ?> </TR> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> - <TH align=center> <?php echo $TbMsg[8]?> </TD> + <TH align=center> <?php echo $TbMsg[8]?> </TH> <?php - echo '<TD colspan=3><INPUT class="formulariodatos" name=numorde type=text value=0 style="width:250"></TD>'; + echo '<TD colspan=3><INPUT class="formulariodatos" name=numorde type=text value=0 style="width:250px"></TD>'; ?> </TR> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> diff --git a/admin/WebConsole/propiedades/propiedades_perfilhardwares.php b/admin/WebConsole/propiedades/propiedades_perfilhardwares.php index e9a1cadc..3edd2ef6 100644 --- a/admin/WebConsole/propiedades/propiedades_perfilhardwares.php +++ b/admin/WebConsole/propiedades/propiedades_perfilhardwares.php @@ -45,8 +45,8 @@ if ($opcion!=$op_alta){ //________________________________________________________________________________________________________ ?> <html> -<title>Administración web de aulas</title> <head> + <title>Administración web de aulas</title> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> <link rel="stylesheet" type="text/css" href="../estilos.css" /> <script language="javascript" src="../jscripts/propiedades_perfilhardwares.js"></script> @@ -62,16 +62,16 @@ if ($opcion!=$op_alta){ <input type="hidden" name="grupoid" value="<?php echo $grupoid?>" /> <input type="hidden" name="winboot" value="reboot" /> <p align="center" class="cabeceras"><?php echo $TbMsg["HARD_TITLE"]?><br /> - <span align="center" class="subcabeceras"><?php echo $opciones[$opcion]?></span></p> + <span class="subcabeceras"><?php echo $opciones[$opcion]?></span></p> <table align="center" border="0" cellPadding="1" cellSpacing="1" class="tabla_datos"> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <tr> <th align="center"> <?php echo $TbMsg["HARD_NAME"]?> </th> <?php if ($opcion==$op_eliminacion) - echo '<td style="width:215">'.$descripcion.'</td>'; + echo '<td style="width:215px">'.$descripcion.'</td>'; else - echo '<td><input class="formulariodatos" name="descripcion" style="width:215" type="text" value="'.$descripcion.'" /></td>'; ?> - <td align="left" rowspan="3"><img border="3" style="border-color:#63676b" src="../images/aula.jpg" /><br /> <?php echo $TbMsg["HARD_COMPUTERS"].": $ordenadores"?></td> + echo '<td><input class="formulariodatos" name="descripcion" style="width:215px" type="text" value="'.$descripcion.'" /></td>'; ?> + <td align="left" rowspan="3"><img border="3" style="border-color:#63676b" src="../images/aula.jpg" alt="*" /><br /> <?php echo $TbMsg["HARD_COMPUTERS"].": $ordenadores"?></td> </tr> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <tr> @@ -123,4 +123,4 @@ function TomaPropiedades($cmd,$id) $rs->Cerrar(); return(true); } -?> + diff --git a/admin/WebConsole/propiedades/propiedades_perfilsoftwares.php b/admin/WebConsole/propiedades/propiedades_perfilsoftwares.php index 64fadafc..2a6368b8 100644 --- a/admin/WebConsole/propiedades/propiedades_perfilsoftwares.php +++ b/admin/WebConsole/propiedades/propiedades_perfilsoftwares.php @@ -39,8 +39,8 @@ if ($opcion!=$op_alta){ //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="../jscripts/propiedades_perfilsoftwares.js"></SCRIPT> @@ -55,16 +55,16 @@ if ($opcion!=$op_alta){ <INPUT type=hidden name=imagenes value=<?php echo $imagenes?>> <INPUT type=hidden name=grupoid value=<?php echo $grupoid?>> <P align=center class=cabeceras><?php echo $TbMsg[4]?><BR> - <SPAN align=center class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> + <SPAN class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> <TABLE align=center border=0 cellPadding=1 cellSpacing=1 class=tabla_datos> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> <TH align=center> <?php echo $TbMsg[5]?> </TH> <?php if ($opcion==$op_eliminacion) - echo '<TD style="width:215">'.$descripcion.'</TD>'; + echo '<TD style="width:215px">'.$descripcion.'</TD>'; else - echo '<TD><INPUT class="formulariodatos" name=descripcion style="width:215" type=text value="'.$descripcion.'"></TD>';?> - <TD align=left rowspan=2><IMG border=3 style="border-color:#63676b" src="../images/aula.jpg"><br><center> Images: <?php echo $imagenes?></center></TD> + echo '<TD><INPUT class="formulariodatos" name=descripcion style="width:215px" type=text value="'.$descripcion.'"></TD>';?> + <TD align=left rowspan=2><IMG border=3 style="border-color:#63676b" src="../images/aula.jpg"><br><div align="center"> Images: <?php echo $imagenes?></div></TD> </TR> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> @@ -123,4 +123,4 @@ function TomaPropiedades($cmd,$id){ else return(false); } -?> + diff --git a/admin/WebConsole/propiedades/propiedades_procedimientos.php b/admin/WebConsole/propiedades/propiedades_procedimientos.php index d5e51816..c8003a4c 100644 --- a/admin/WebConsole/propiedades/propiedades_procedimientos.php +++ b/admin/WebConsole/propiedades/propiedades_procedimientos.php @@ -38,8 +38,8 @@ if ($opcion!=$op_alta){ //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="../jscripts/propiedades_procedimientos.js"></SCRIPT> @@ -53,19 +53,19 @@ if ($opcion!=$op_alta){ <INPUT type=hidden name=idprocedimiento value=<?php echo $idprocedimiento?>> <INPUT type=hidden name=grupoid value=<?php echo $grupoid?>> <P align=center class=cabeceras><?php echo $TbMsg[4]?><BR> - <SPAN align=center class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> + <SPAN class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> <TABLE align=center border=0 cellPadding=1 cellSpacing=1 class=tabla_datos> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> - <TH align=center> <?php echo $TbMsg[5]?> </TD> + <TH align=center> <?php echo $TbMsg[5]?> </TH> <?php if ($opcion==$op_eliminacion) - echo '<TD style="width:300">'.$descripcion.'</TD>'; + echo '<TD style="width:300px">'.$descripcion.'</TD>'; else - echo '<TD><INPUT class="formulariodatos" name=descripcion style="width:300" type=text value="'.$descripcion.'"></TD>';?> + echo '<TD><INPUT class="formulariodatos" name=descripcion style="width:300px" type=text value="'.$descripcion.'"></TD>';?> </TR> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> - <TH align=center> <?php echo $TbMsg[6]?> </TD> + <TH align=center> <?php echo $TbMsg[6]?> </TH> <?php if ($opcion==$op_eliminacion) echo '<TD>'.$comentarios.'</TD>'; else @@ -107,4 +107,3 @@ function TomaPropiedades($cmd,$id){ else return(false); } -?> diff --git a/admin/WebConsole/propiedades/propiedades_repositorios.php b/admin/WebConsole/propiedades/propiedades_repositorios.php index b2407b8a..7bdb6713 100644 --- a/admin/WebConsole/propiedades/propiedades_repositorios.php +++ b/admin/WebConsole/propiedades/propiedades_repositorios.php @@ -74,8 +74,8 @@ if($apiKeyRepo != ""){ //######################################################################### ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="../jscripts/validators.js"></SCRIPT> @@ -92,44 +92,44 @@ if($apiKeyRepo != ""){ <INPUT type=hidden name=ordenadores value="<?php echo $ordenadores?>"> <P align=center class=cabeceras><?php echo $TbMsg[4]?><BR> - <SPAN align=center class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> + <SPAN class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> <TABLE align=center border=0 cellPadding=1 cellSpacing=1 class=tabla_datos > <!----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --> <TR> - <TH align="center"> <?php echo $TbMsg[5]?> </TD> + <TH align="center"> <?php echo $TbMsg[5]?> </TH> <?php if ($opcion==$op_eliminacion) echo '<TD>'.$nombrerepositorio.'</TD>'; else - echo '<TD><INPUT class="formulariodatos" name="nombrerepositorio" style="width:200" type="text" value="'.$nombrerepositorio.'"></TD>'; + echo '<TD><INPUT class="formulariodatos" name="nombrerepositorio" style="width:200px" type="text" value="'.$nombrerepositorio.'"></TD>'; ?> - <TD valign="top" align="left" rowspan="4" ><CENTER> + <TD valign="top" align="center" rowspan="4"> <IMG border="3" style="border-color:#63676b" src="../images/aula.jpg"> - <BR> Ordenadores: <?php echo $ordenadores?></CENTER></TD> + <BR> Ordenadores: <?php echo $ordenadores?></TD> </TR> <!----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --> <TR> - <TH align=center> <?php echo $TbMsg[6]?> </TD> + <TH align=center> <?php echo $TbMsg[6]?> </TH> <?php if ($opcion==$op_eliminacion) echo '<TD>'.$ip.'</TD>'; else - echo'<TD><INPUT class="formulariodatos" name="ip" type="text" style="width:200" value="'.$ip.'"></TD>'; + echo'<TD><INPUT class="formulariodatos" name="ip" type="text" style="width:200px" value="'.$ip.'"></TD>'; ?> </TR> <!----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --> <TR> - <TH align=center> <?php echo $TbMsg[17]?> </TD> + <TH align=center> <?php echo $TbMsg[17]?> </TH> <?php if ($opcion==$op_eliminacion) echo '<TD>********</TD>'; else - echo'<TD><INPUT class="formulariodatos" name="apiKeyRepo" type="text" style="width:200" value="'.$apiKeyRepo.'"></TD>'; + echo'<TD><INPUT class="formulariodatos" name="apiKeyRepo" type="text" style="width:200px" value="'.$apiKeyRepo.'"></TD>'; ?> </TR> <!----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --> <TR> - <TH align=center> <?php echo $TbMsg[7]?> </TD> + <TH align=center> <?php echo $TbMsg[7]?> </TH> <?php if ($opcion==$op_eliminacion) echo '<TD colspan="2">'.$comentarios.'</TD>'; @@ -148,10 +148,10 @@ if($apiKeyRepo != ""){ <?php if ($repoWithApi) { ?> <TR> - <TH align=center width=125> <?php echo $TbMsg[11]?> </TD> - <TH align=center width=120> <?php echo $TbMsg[12]?> </TD> - <TH align=center width=120> <?php echo $TbMsg[13]?> </TD> - <TH align=center width=101> <?php echo $TbMsg[14]?> </TD> + <TH align=center width=125> <?php echo $TbMsg[11]?> </TH> + <TH align=center width=120> <?php echo $TbMsg[12]?> </TH> + <TH align=center width=120> <?php echo $TbMsg[13]?> </TH> + <TH align=center width=101> <?php echo $TbMsg[14]?> </TH> </TR> <TR> <TD align=center width=125> <?php echo $totalrepo?> </TD> diff --git a/admin/WebConsole/propiedades/propiedades_reservas.php b/admin/WebConsole/propiedades/propiedades_reservas.php index 1cf4f79c..3c49cdde 100644 --- a/admin/WebConsole/propiedades/propiedades_reservas.php +++ b/admin/WebConsole/propiedades/propiedades_reservas.php @@ -49,8 +49,8 @@ if ($opcion!=$op_alta){ //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="../jscripts/opciones.js"></SCRIPT> @@ -66,13 +66,13 @@ if ($opcion!=$op_alta){ <INPUT type=hidden name=grupoid value=<?php echo $grupoid?>> <INPUT type=hidden name=estado value=<?php echo $estado?>> <P align=center class=cabeceras><?php echo $TbMsg[4]?><BR> - <SPAN align=center class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> + <SPAN class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> <TABLE align=center border=0 cellPadding=1 cellSpacing=1 class=tabla_datos> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> <TH align=center> <?php echo $TbMsg[5]?> </TH> <?php if ($opcion==$op_eliminacion) - echo '<TD style="width:300">'.$descripcion.'</TD>'; + echo '<TD style="width:300px">'.$descripcion.'</TD>'; else echo '<TD><TEXTAREA class="formulariodatos" name=descripcion rows=3 cols=55">'.$descripcion.'</TEXTAREA></TD>';?> </TR> @@ -80,18 +80,18 @@ if ($opcion!=$op_alta){ <TR> <TH align=center> <?php echo $TbMsg[6]?> </TH> <?php if ($opcion==$op_eliminacion) - echo '<TD style="width:300">'.$solicitante.'</TD>'; + echo '<TD style="width:300px">'.$solicitante.'</TD>'; else - echo '<TD><INPUT class="formulariodatos" name=solicitante style="width:300" type=text value="'.$solicitante.'"></TD>'; + echo '<TD><INPUT class="formulariodatos" name=solicitante style="width:300px" type=text value="'.$solicitante.'"></TD>'; ?> </TR> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> <TH align=center> <?php echo $TbMsg[8]?> </TH> <?php if ($opcion==$op_eliminacion) - echo '<TD style="width:300">'.$email.'</TD>'; + echo '<TD style="width:300px">'.$email.'</TD>'; else - echo '<TD><INPUT class="formulariodatos" name=email style="width:300" type=text value="'.$email.'"></TD>'; + echo '<TD><INPUT class="formulariodatos" name=email style="width:300px" type=text value="'.$email.'"></TD>'; ?> </TR> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> @@ -153,7 +153,7 @@ if ($opcion!=$op_alta){ <TR> <TH align=center> <?php echo $TbMsg[16]?> </TH> <?php if ($opcion==$op_eliminacion) - echo '<TD style="width:300"><IMG src="'.$tbimg[$estado].'"> ('.$TbMsg[12+$estado].')</TD>'; + echo '<TD style="width:300px"><IMG src="'.$tbimg[$estado].'"> ('.$TbMsg[12+$estado].')</TD>'; else{ echo '<TD>'; echo '<INPUT name=xestado type=radio value="'.$RESERVA_CONFIRMADA.'"'; @@ -174,7 +174,7 @@ if ($opcion!=$op_alta){ </TR> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> - <TH align=center> <?php echo $TbMsg[7]?> </TD> + <TH align=center> <?php echo $TbMsg[7]?> </TH> <?php if ($opcion==$op_eliminacion) echo '<TD>'.$comentarios.'</TD>'; else @@ -184,6 +184,7 @@ if ($opcion!=$op_alta){ <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> </TABLE> </FORM> +</DIV> <?php //________________________________________________________________________________________________________ include_once("../includes/opcionesbotonesop.php"); @@ -232,4 +233,3 @@ function TomaPropiedades($cmd,$id){ else return(false); } -?> diff --git a/admin/WebConsole/propiedades/propiedades_tareas.php b/admin/WebConsole/propiedades/propiedades_tareas.php index 8926e69c..c95b6e46 100644 --- a/admin/WebConsole/propiedades/propiedades_tareas.php +++ b/admin/WebConsole/propiedades/propiedades_tareas.php @@ -43,8 +43,8 @@ if ($opcion!=$op_alta){ //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="../jscripts/propiedades_tareas.js"></SCRIPT> @@ -60,19 +60,19 @@ if ($opcion!=$op_alta){ <INPUT type=hidden name=grupoid value=<?php echo $grupoid?>> <INPUT type=hidden name=idambito value=<?php echo $idambito?>> <P align=center class=cabeceras><?php echo $TbMsg[4]?><BR> - <SPAN align=center class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> + <SPAN class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> <TABLE align=center border=0 cellPadding=1 cellSpacing=1 class=tabla_datos > <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> - <TH align=center> <?php echo $TbMsg[5]?> </TD> + <TH align=center> <?php echo $TbMsg[5]?> </TH> <?php if ($opcion==$op_eliminacion) - echo '<TD style="width:300">'.$descripcion.'</TD>'; + echo '<TD style="width:300px">'.$descripcion.'</TD>'; else - echo '<TD><INPUT class="formulariodatos" name=descripcion style="width:300" type=text value="'.$descripcion.'"></TD>';?> + echo '<TD><INPUT class="formulariodatos" name=descripcion style="width:300px" type=text value="'.$descripcion.'"></TD>';?> </TR> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> - <TH align=center> <?php echo $TbMsg[6]?> </TD> + <TH align=center> <?php echo $TbMsg[6]?> </TH> <?php if ($opcion==$op_eliminacion) echo '<TD>'.$comentarios.'</TD>'; else @@ -81,7 +81,7 @@ if ($opcion!=$op_alta){ </TR> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> - <TH align=center> <?php echo $TbMsg[7]?> </TD> + <TH align=center> <?php echo $TbMsg[7]?> </TH> <?php if ($opcion==$op_eliminacion){ $Mambitos[$AMBITO_CENTROS]=$TbMsg[10]; @@ -103,7 +103,7 @@ if ($opcion!=$op_alta){ </TR> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> - <TH align=center> <?php echo $TbMsg[8]?> </TD> + <TH align=center> <?php echo $TbMsg[8]?> </TH> <?php if ($opcion==$op_eliminacion){ tomaDescriAmbito($cmd,$ambito,$idambito,$textambito); @@ -117,6 +117,7 @@ if ($opcion!=$op_alta){ <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> </TABLE> </FORM> +</DIV> <?php //________________________________________________________________________________________________________ include_once("../includes/opcionesbotonesop.php"); @@ -152,4 +153,3 @@ function TomaPropiedades($cmd,$id){ else return(false); } -?> diff --git a/admin/WebConsole/propiedades/propiedades_tipohardwares.php b/admin/WebConsole/propiedades/propiedades_tipohardwares.php index ede51000..d5b08f5a 100644 --- a/admin/WebConsole/propiedades/propiedades_tipohardwares.php +++ b/admin/WebConsole/propiedades/propiedades_tipohardwares.php @@ -40,8 +40,8 @@ if ($opcion!=$op_alta){ //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="../jscripts/propiedades_tipohardwares.js"></SCRIPT> @@ -56,19 +56,19 @@ if ($opcion!=$op_alta){ <INPUT type=hidden name=idtipohardware value=<?php echo $idtipohardware?>> <INPUT type=hidden name=grupoid value=<?php echo $grupoid?>> <P align=center class=cabeceras><?php echo $TbMsg[4]?><BR> - <SPAN align=center class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> + <SPAN class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> <TABLE align=center border=0 cellPadding=1 cellSpacing=1 class=tabla_datos > <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> - <TH align=center> <?php echo $TbMsg[5]?> </TD> + <TH align=center> <?php echo $TbMsg[5]?> </TH> <?php if ($opcion==$op_eliminacion) - echo '<TD style="width:300">'.$descripcion.'</TD>'; + echo '<TD style="width:30px">'.$descripcion.'</TD>'; else - echo '<TD><INPUT class="formulariodatos" name=descripcion style="width:300" type=text value="'.$descripcion.'"></TD>';?> + echo '<TD><INPUT class="formulariodatos" name=descripcion style="width:300px" type=text value="'.$descripcion.'"></TD>';?> </TR> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> - <TH align=center> <?php echo $TbMsg[6]?> </TD> + <TH align=center> <?php echo $TbMsg[6]?> </TH> <?php if ($opcion==$op_eliminacion) echo '<TD colspan=3>'.TomaDato($cmd,0,'iconos',basename($urlimg),'urlicono','urlicono',0).'</TD>'; @@ -76,10 +76,10 @@ if ($opcion!=$op_alta){ echo '<TD colspan=3>'.HTMLSELECT($cmd,0,'iconos',basename($urlimg),'urlicono','descripcion',250,"","","idtipoicono=1").'</TD>'; ?> </TR> - </TR> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> </TABLE> </FORM> +</DIV> <?php //________________________________________________________________________________________________________ include_once("../includes/opcionesbotonesop.php"); @@ -111,4 +111,3 @@ function TomaPropiedades($cmd,$id){ else return(false); } -?> diff --git a/admin/WebConsole/propiedades/propiedades_universidades.php b/admin/WebConsole/propiedades/propiedades_universidades.php index 448f3cdc..07debf8d 100644 --- a/admin/WebConsole/propiedades/propiedades_universidades.php +++ b/admin/WebConsole/propiedades/propiedades_universidades.php @@ -41,8 +41,8 @@ else //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de universidades</TITLE> <HEAD> + <TITLE>Administración web de universidades</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="../jscripts/propiedades_universidades.js"></SCRIPT> @@ -55,16 +55,16 @@ else <INPUT type=hidden name=opcion value=<?php echo $opcion?>> <INPUT type=hidden name=iduniversidad value=<?php echo $iduniversidad?>> <P align=center class=cabeceras><?php echo $TbMsg[4]?><BR> - <SPAN align=center class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> + <SPAN class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> <TABLE align=center border=0 cellPadding=1 cellSpacing=1 class=tabla_datos> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> - <TH align=center ><?php echo $TbMsg[5]?> </TD> + <TH align=center ><?php echo $TbMsg[5]?> </TH> <?php echo '<TD colspan=3><INPUT class="formulariodatos" name=nombreuniversidad style="width:350" type=text value="'.$nombreuniversidad.'"></TD>';?> </TR> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> - <TH align=center> <?php echo $TbMsg[6]?> </TD> + <TH align=center> <?php echo $TbMsg[6]?> </TH> <?php if ($opcion==$op_eliminacion) echo '<TD>'.$comentarios.'</TD>'; else @@ -106,4 +106,3 @@ function TomaPropiedades($cmd,$id){ $rs->Cerrar(); return(true); } -?> diff --git a/admin/WebConsole/propiedades/propiedades_usuarios.php b/admin/WebConsole/propiedades/propiedades_usuarios.php index 05441502..8ea60d74 100644 --- a/admin/WebConsole/propiedades/propiedades_usuarios.php +++ b/admin/WebConsole/propiedades/propiedades_usuarios.php @@ -20,7 +20,8 @@ include_once("../idiomas/php/".$idioma."/propiedades_usuarios_".$idioma.".php"); $opcion=0; $opciones=array($TbMsg[0],$TbMsg[1],$TbMsg[2],$TbMsg[3]); //________________________________________________________________________________________________________ -$idusuario=0; +$litusu=""; +$idusuario=0; $usuario=""; $pasguor=""; $nombre=""; @@ -64,8 +65,8 @@ switch($idtipousuario){ //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="../jscripts/propiedades_usuarios.js"></SCRIPT> @@ -73,6 +74,7 @@ switch($idtipousuario){ <?php echo '<SCRIPT language="javascript" src="../idiomas/javascripts/'.$idioma.'/propiedades_usuarios_'.$idioma.'.js"></SCRIPT>'?> </HEAD> <BODY> +<div align="center"> <FORM name="fdatos" action="../gestores/gestor_usuarios.php" method="post"> <INPUT type=hidden name=opcion value=<?php echo $opcion?>> <INPUT type=hidden name=idusuario value=<?php echo $idusuario?>> @@ -80,15 +82,15 @@ switch($idtipousuario){ <INPUT type=hidden name=idambito value=<?php echo $idambito?>> <P align=center class=cabeceras><?php echo $TbMsg[4]." (".$litusu.")"?><BR> - <SPAN align=center class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> + <SPAN class=subcabeceras><?php echo $opciones[$opcion]?></SPAN></P> <TABLE align=center border=0 cellPadding=1 cellSpacing=1 class=tabla_datos> <!------------------------------------------------ NOMBRE USUARIO --------------------------------------------------------------------------------------------------> <TR> <TH> <?php echo $TbMsg[5]?> </TH> <?php if ($opcion==$op_eliminacion || $opcion==$op_modificacion && $idusuario==1){?> - <TD><INPUT type=hidden class=cajatexto name="usuario" style="width:100" value="<?php echo $usuario?>"></INPUT><?php echo $usuario?>  <IMG src="<?php echo $urlimg ?>"></TD> + <TD><INPUT type=hidden class=cajatexto name="usuario" style="width:100px" value="<?php echo $usuario?>"><?php echo $usuario?>  <IMG src="<?php echo $urlimg ?>"></TD> <?php }else{?> - <TD><INPUT type=text class=cajatexto name="usuario" style="width:100" value="<?php echo $usuario?>"> + <TD><INPUT type=text class=cajatexto name="usuario" style="width:100px" value="<?php echo $usuario?>"> <IMG src="<?php echo $urlimg ?>"> <?php }?> @@ -98,27 +100,27 @@ switch($idtipousuario){ <!-- disables autocomplete --><input type="password" style="display:none"> <TH> <?php echo $TbMsg[6]?> </TH> <?php if ($opcion==$op_eliminacion || $opcion==$op_modificacion && $idusuario==1){?> - <TD><INPUT type=hidden class=cajatexto name="pasguor" style="width:100" value=""></INPUT>****</TD> + <TD><INPUT type=hidden class=cajatexto name="pasguor" style="width:100px" value="">****</TD> <?php }else{?> - <TD><INPUT type=password class=cajatexto name="pasguor" style="width:100" value=""> + <TD><INPUT type=password class=cajatexto name="pasguor" style="width:100px" value=""> <?php }?> </TR> <!---------------------------------------------------- CONFIRMAR PASSWORD ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> <TH> <?php echo $TbMsg[18]?> </TH> <?php if ($opcion==$op_eliminacion || $opcion==$op_modificacion && $idusuario==1){?> - <TD><INPUT type=hidden class=cajatexto name="confirmarpasguor" style="width:100" value=""></INPUT>****</TD> + <TD><INPUT type=hidden class=cajatexto name="confirmarpasguor" style="width:100px" value="">****</TD> <?php }else{?> - <TD><INPUT type=password class=cajatexto name="confirmarpasguor" style="width:100" value=""> + <TD><INPUT type=password class=cajatexto name="confirmarpasguor" style="width:100px" value=""> <?php }?> </TR> <!--------------------------------------------------- NOMBRE COMPLETO -----------------------------------------------------------------------------------------------> <TR> <TH> <?php echo $TbMsg[7]?> </TH> <?php if ($opcion==$op_eliminacion || ($opcion==$op_modificacion && $idusuario==1)){?> - <TD><INPUT type=hidden class=cajatexto name="nombre" style="width:250" value="<?php echo $nombre?>"></INPUT><?php echo $nombre?></TD> + <TD><INPUT type=hidden class=cajatexto name="nombre" style="width:250px" value="<?php echo $nombre?>"><?php echo $nombre?></TD> <?php }else{?> - <TD><INPUT type=text class=cajatexto name="nombre" style="width:250" value="<?php echo $nombre?>"> + <TD><INPUT type=text class=cajatexto name="nombre" style="width:250px" value="<?php echo $nombre?>"> <?php }?> </TR> <!--------------------------------------------------------------------------------------------------------------------------------------------------> @@ -127,7 +129,7 @@ switch($idtipousuario){ <?php if ($opcion==$op_eliminacion){?> <TD><?php echo $email?></TD> <?php }else{?> - <TD><INPUT type=text class=cajatexto name="email" style="width:250" value="<?php echo $email?>"> + <TD><INPUT type=text class=cajatexto name="email" style="width:250px" value="<?php echo $email?>"> <?php }?> </TR> <!---------------------------------------------------------------------------------------------------------------------------------------------------> @@ -157,8 +159,7 @@ switch($idtipousuario){ </TABLE> </FORM> -</DIV> - +</div> <?php if ($idusuario==1){ ///* @@ -216,4 +217,3 @@ function TomaPropiedades($cmd,$id){ else return(false); } -?> diff --git a/admin/WebConsole/rest/common.php b/admin/WebConsole/rest/common.php index bc39ced9..d26acc4b 100644 --- a/admin/WebConsole/rest/common.php +++ b/admin/WebConsole/rest/common.php @@ -248,6 +248,7 @@ $app->hook('slim.after', function() use ($app) { * @return JSON object with basic server information (version, services, etc.) */ $app->get('/info', function() { + $hasOglive = false; $response = new \stdClass; // Reading version file. $data = json_decode(@file_get_contents(VERSION_FILE)); @@ -293,4 +294,4 @@ $app->get('/status', function() { jsonResponse(200, $response); } ); -?> + diff --git a/admin/WebConsole/rest/index.php b/admin/WebConsole/rest/index.php index 46957ab6..aa7cd483 100644 --- a/admin/WebConsole/rest/index.php +++ b/admin/WebConsole/rest/index.php @@ -72,4 +72,4 @@ $app->get('/', // Execute REST using Slim. $app->run(); -?> + diff --git a/admin/WebConsole/rest/ogagent.php b/admin/WebConsole/rest/ogagent.php index 6b87b098..be62a8d0 100644 --- a/admin/WebConsole/rest/ogagent.php +++ b/admin/WebConsole/rest/ogagent.php @@ -32,6 +32,7 @@ function writeLog($message = "") { $app->post('/ogagent/started', function() use ($app) { global $cmd; + $secret = ""; $osType = $osVersion = "none"; try { // Reading POST parameters in JSON format. @@ -131,6 +132,7 @@ $app->post('/ogagent/stopped', $app->post('/ogagent/loggedin', function() use ($app) { global $cmd; + $osType = $osVersion = "none"; $redirto = Array(); $result = Array(); @@ -269,4 +271,4 @@ EOD; } ); -?> + diff --git a/admin/WebConsole/rest/remotepc.php b/admin/WebConsole/rest/remotepc.php index 4bf7b6b5..a0d4ea10 100644 --- a/admin/WebConsole/rest/remotepc.php +++ b/admin/WebConsole/rest/remotepc.php @@ -41,6 +41,7 @@ $app->post('/ous/:ouid/images/:imageid/reserve(/)', 'validateApiKey', global $userid; $response = Array(); $ogagent = Array(); + $repo = Array(); if ($app->settings['debug']) writeRemotepcLog($app->request()->getResourceUri(). ": Init."); @@ -83,14 +84,15 @@ $app->post('/ous/:ouid/images/:imageid/reserve(/)', 'validateApiKey', $cmd->texto = <<<EOD SELECT adm.idusuario, entornos.ipserveradm, entornos.portserveradm, ordenadores.idordenador, ordenadores.nombreordenador, ordenadores.ip, - ordenadores.mac, ordenadores.agentkey, ordenadores_particiones.numdisk, - ordenadores_particiones.numpar, aulas.idaula, aulas.idcentro + ordenadores.mac, ordenadores.agentkey, par.numdisk, par.numpar, + aulas.idaula, aulas.idcentro, repo.ip AS repoip, repo.apikey AS repokey FROM entornos, ordenadores JOIN aulas USING(idaula) RIGHT JOIN administradores_centros AS adm USING(idcentro) RIGHT JOIN usuarios USING(idusuario) - RIGHT JOIN ordenadores_particiones USING(idordenador) + RIGHT JOIN ordenadores_particiones AS par USING(idordenador) RIGHT JOIN imagenes USING(idimagen) + RIGHT JOIN repositorios AS repo ON repo.idrepositorio = ordenadores.idrepositorio LEFT JOIN remotepc ON remotepc.id=ordenadores.idordenador WHERE adm.idusuario = '$userid' AND aulas.idcentro = '$ouid' AND aulas.idaula LIKE '$labid' AND aulas.inremotepc = 1 @@ -116,6 +118,8 @@ EOD; $part = $rs->campos["numpar"]; $labid = $rs->campos["idaula"]; $ouid = $rs->campos["idcentro"]; + $repoip = $rs->campos["repoip"]; + $repokey = $rs->campos["repokey"]; // Check client's status. $ogagent[$clntip]['url'] = "https://$clntip:8000/opengnsys/status"; if ($app->settings['debug']) @@ -132,6 +136,16 @@ EOD; if ($app->settings['debug']) writeRemotepcLog($app->request()->getResourceUri(). "Send Boot command to ogAdmClient, ido=$clntid,iph=$clntip,mac=$clntmac."); sendCommand($serverip, $serverport, $reqframe, $values); + // Send WOL command to client repository. + $repo[$repoip]['url'] = "https://$repoip/opengnsys/rest/repository/poweron"; + $repo[$repoip]['header'] = Array("Authorization: ".$repokey); + $repo[$repoip]['post'] = '{"macs": ["'.$clntmac.'"], "ips": ["'.$clntip.'"]}'; + if ($app->settings['debug']) + writeRemotepcLog($app->request()->getResourceUri(). "Send Boot command to repo: repo=$repoip, ip=$clntip,mac=$clntmac."); + $result = multiRequest($repo); + // ... (check response) + //if ($result[$repoip]['code'] != 200) { + // ... } else { // Client is on, send a rieboot command to its OGAgent. $ogagent[$clntip]['url'] = "https://$clntip:8000/opengnsys/reboot"; @@ -551,4 +565,4 @@ EOD; } ); -?> + diff --git a/admin/WebConsole/rest/repository.php b/admin/WebConsole/rest/repository.php index 7ac6e88e..736cc1c2 100644 --- a/admin/WebConsole/rest/repository.php +++ b/admin/WebConsole/rest/repository.php @@ -10,6 +10,7 @@ * @date 2016-04-06 */ + // Auxiliar functions. /** * @brief Validate API key included in "Authorization" HTTP header. @@ -23,8 +24,8 @@ function validateRepositoryApiKey() { @$apikey = htmlspecialchars(function_exists('apache_request_headers') ? apache_request_headers()['Authorization'] : $_SERVER['HTTP_AUTHORIZATION']); if (isset($apikey)) { // fetch repository token from ogAdmRepo.cfg configuration file. - @$confFile = parse_ini_file('../../etc/ogAdmRepo.cfg', 'r'); - if ($confFile) { + @$confFile = parse_ini_file(__DIR__ . '/../../etc/ogAdmRepo.cfg', 'r'); + if (isset($confFile)) { if(@strcmp($apikey, $confFile['ApiToken']) == 0) { // Credentials OK. return true; @@ -184,32 +185,26 @@ $app->get('/repository/image(/:ouname)/:imagename(/)', 'validateRepositoryApiKey */ $app->post('/repository/poweron', 'validateRepositoryApiKey', function() use($app) { - // Debe venir el parametro macs en el post (objeto JSON con array de MACs) + // The macs parameter must come in the post (JSON object with array of MACs) $data = json_decode($app->request()->getBody()); - if(empty($data->macs)){ + if (empty($data->macs)) { // Print error message. $response['message'] = 'Required param macs not found'; jsonResponse(400, $response); - } - else{ - $strMacs = ""; - foreach($data->macs as $mac){ - $strMacs .= " ".$mac; - } - // Ejecutar comando wakeonlan, debe estar disponible en el sistema operativo - if(commandExist("wakeonlan")){ - $response["output"] = "Executing wakeonlan ".trim($strMacs)."\n"; - $response["output"] .= shell_exec("wakeonlan ".trim($strMacs)); - // Comprobar si el comando se ejecutórrectamente - jsonResponse(200, $response); - } - else{ + } else { + // Execute local wakeonlan command (may be installed) + if(commandExist("wakeonlan")) { + $strMacs = trim(implode(' ', $data->macs)); + $response["output"] = "Executing wakeonlan ".$strMacs."\n"; + $response["output"] .= shell_exec("wakeonlan ".$strMacs); + jsonResponse(200, $response); + } else { // Print error message. $response['message'] = 'Wakeonlan command not found in this repository'; jsonResponse(404, $response); } } + $app->stop(); } ); -?> diff --git a/admin/WebConsole/validacion/access_controller.php b/admin/WebConsole/validacion/access_controller.php index f0babd8a..7ed6c3fc 100644 --- a/admin/WebConsole/validacion/access_controller.php +++ b/admin/WebConsole/validacion/access_controller.php @@ -95,5 +95,5 @@ switch($action){ } /**/ -?> + diff --git a/admin/WebConsole/validacion/functions.php b/admin/WebConsole/validacion/functions.php index a4780fd1..102f1577 100644 --- a/admin/WebConsole/validacion/functions.php +++ b/admin/WebConsole/validacion/functions.php @@ -79,7 +79,7 @@ function GeneraMenu($rs,$tipo,$iph){ global $ITEMS_PUBLICOS; global $ITEMS_PRIVADOS; global $UrlPaginaIconos; - + $lit=''; $titulo=$rs->campos["titulo"]; $modalidad=$rs->campos["modalidad"]; $smodalidad=$rs->campos["smodalidad"]; @@ -120,7 +120,7 @@ function GeneraMenu($rs,$tipo,$iph){ $codeHTML.='<TD align=center> <A href="ejecutaritem.php?iph='.$iph.'&idt='.$idaccionmenu.'"> <IMG border=0 src="http://'.$UrlPaginaIconos.'/'.$urlicono.'" width=64></A></TD>'; - $codeHTML.='<TD style="font-family:Arial;color: #a71026;FONT-SIZE:14"> + $codeHTML.='<TD style="font-family:Arial,sans-serif;color: #a71026;FONT-SIZE:14px"> <A style="text-decoration:none" href="ejecutaritem.php?iph='.$iph.'&idt='.$idaccionmenu.'"> <span style="FONT-FAMILY: Verdana,Arial, Helvetica, sans-serif;FONT-SIZE: 12px;COLOR:#999999">'.$descripitem.'</span></A></TD>'; if($mod>1){ @@ -163,5 +163,4 @@ function GeneraMenu($rs,$tipo,$iph){ return($codeHTML); } -?> diff --git a/admin/WebConsole/validacion/html/close.php b/admin/WebConsole/validacion/html/close.php index a6b197b6..6f8fb44a 100644 --- a/admin/WebConsole/validacion/html/close.php +++ b/admin/WebConsole/validacion/html/close.php @@ -1,5 +1,5 @@ <?php session_start(); $_SESSION["validated"] = false; -?> + diff --git a/admin/WebConsole/validacion/html/validacion_ldap.php b/admin/WebConsole/validacion/html/validacion_ldap.php index 1929402a..5e18e7e2 100644 --- a/admin/WebConsole/validacion/html/validacion_ldap.php +++ b/admin/WebConsole/validacion/html/validacion_ldap.php @@ -29,7 +29,7 @@ function validate_user($user,$password){ $thedata = $info[0]["dn"]; if ($r=@ldap_bind($ds,$thedata,$password)){ $result['validation'] = 1; - // A parte de la validacion, se podrían coger otros datos... + // A parte de la validacion, se podrÃan coger otros datos... /* $result['name'] = $info[0]["cn"][0]; $result['dni'] = $info[0]["uhuuserdni"][0]; @@ -50,7 +50,7 @@ function validate_user($user,$password){ } /** - * Sincroniza una base de datos externa con la de opengnsys. + * Sincroniza una base de datos externa con la de OpenGnsys. * No es necesaria su implementacion, puede dejarse en blanco */ function synchronize($validation){ @@ -71,5 +71,3 @@ function validate($VARS){ } return $result; } - -?> diff --git a/admin/WebConsole/validacion/html/validacion_prueba.php b/admin/WebConsole/validacion/html/validacion_prueba.php index 78ea208e..f98a1932 100644 --- a/admin/WebConsole/validacion/html/validacion_prueba.php +++ b/admin/WebConsole/validacion/html/validacion_prueba.php @@ -21,4 +21,4 @@ function validate($VARS){ return $result; } -?> + diff --git a/admin/WebConsole/validacion/html/validacion_template.php b/admin/WebConsole/validacion/html/validacion_template.php index 0ec37e30..171eb6d2 100644 --- a/admin/WebConsole/validacion/html/validacion_template.php +++ b/admin/WebConsole/validacion/html/validacion_template.php @@ -17,4 +17,4 @@ function validate($VARS){ return true; } -?> + diff --git a/admin/WebConsole/varios/acceso_operador.php b/admin/WebConsole/varios/acceso_operador.php index 79402878..c2c0cde4 100644 --- a/admin/WebConsole/varios/acceso_operador.php +++ b/admin/WebConsole/varios/acceso_operador.php @@ -8,7 +8,7 @@ // Descripción : Presenta la pantalla de login del operador // ************************************************************************************************************************************************* -session_start(); // Activa variables de sesi� +session_start(); // Activa variables de sesión $herror=0; @@ -31,11 +31,10 @@ $TbErr[2]="ERROR de conexión con el servidor de datos"; //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> - <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> - <LINK rel="stylesheet" type="text/css" href="estilos.css"> -</HEAD> +<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> +<TITLE>Administración web de aulas</TITLE> +<LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT LANGUAGE="JAVASCRIPT"> //________________________________________________________________________________________________________ function confirmar(){ @@ -44,12 +43,12 @@ function confirmar(){ } //________________________________________________________________________________________________________ function comprobar_datos(){ - if (document.fdatos.usu.value==""){ + if (document.fdatos.usu.value===""){ alert("Debe introducir un nombre de Usuario"); document.fdatos.usu.focus(); return(false) } - if (document.fdatos.pss.value==""){ + if (document.fdatos.pss.value===""){ alert("Debe introducir una contraseña"); document.fdatos.pss.focus(); return(false) @@ -67,20 +66,20 @@ function PulsaEnter(oEvento){ else return false; } - if (iAscii == 13) confirmar(); + if (iAscii === 13) confirmar(); return true; } //________________________________________________________________________________________________________ </SCRIPT> </HEAD> <BODY> -<DIV style="POSITION:absolute;top:20;left:150"> +<DIV style="POSITION:absolute;top:20px;left:150px"> <FORM action="accesoperadores.php" name="fdatos" method="post"> <DIV align="center"> <IMG src="../images/login_operador.png" width=500 > - <INPUT onkeypress="PulsaEnter(event)" name="usu" style="POSITION:absolute;top:125px;left:365px;width:90;height:20;COLOR: #999999; FONT-FAMILY: Verdana; FONT-SIZE: 12px;"> - <INPUT onkeypress="PulsaEnter(event)" name="pss" type="password" style="POSITION:absolute;top:160px;left:365;width:90;height:20;COLOR: #999999; FONT-FAMILY: Verdana; FONT-SIZE: 12px;"> - <IMG onclick="confirmar()" src="../images/botonok.png" style="POSITION:absolute;top:190;left:400;CURSOR: hand"> + <INPUT onkeypress="PulsaEnter(event)" name="usu" style="POSITION:absolute;top:125px;left:365px;width:90px;height:20px;COLOR: #999999; FONT-FAMILY: Verdana, sans-serif; FONT-SIZE: 12px;"> + <INPUT onkeypress="PulsaEnter(event)" name="pss" type="password" style="POSITION:absolute;top:160px;left:365px;width:90px;height:20px;COLOR: #999999; FONT-FAMILY: Verdana, sans-serif; FONT-SIZE: 12px;"> + <IMG onclick="confirmar()" src="../images/botonok.png" style="POSITION:absolute;top:190px;left:400px;CURSOR: hand"> </DIV> </FORM> </DIV> diff --git a/admin/WebConsole/varios/accionmenu.php b/admin/WebConsole/varios/accionmenu.php index fed455d0..3205350c 100644 --- a/admin/WebConsole/varios/accionmenu.php +++ b/admin/WebConsole/varios/accionmenu.php @@ -65,6 +65,7 @@ else{ // Viene de menus ?> <HTML> <HEAD> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="../jscripts/opciones.js"></SCRIPT> @@ -178,6 +179,7 @@ else function pintaMenus($cmd,$identificador,$tipoaccion,$op) { + global $pagerror; global $TbMsg; global $ITEM_PUBLICO; global $ITEM_PRIVADO; diff --git a/admin/WebConsole/varios/buscar.php b/admin/WebConsole/varios/buscar.php index 552e32b7..09c2e45c 100644 --- a/admin/WebConsole/varios/buscar.php +++ b/admin/WebConsole/varios/buscar.php @@ -142,8 +142,8 @@ if (!empty ($valor) or $criterio == "duplic" or $criterio == "profe" or $criteri //_________________________________ ?> <html> -<title>Administración web de aulas</title> <head> + <title>Administración web de aulas</title> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <link rel="stylesheet" type="text/css" href="../estilos.css"> <script languaje="javascript"> @@ -154,7 +154,7 @@ function confirmar(){ } //_________________________________ function comprobar_datos(){ - if (document.fdatos.valor.value=="" && document.fdatos.criterio.value!="duplic" && document.fdatos.criterio.value!="profe" && document.fdatos.criterio.value!="norepo") { + if (document.fdatos.valor.value==="" && document.fdatos.criterio.value!=="duplic" && document.fdatos.criterio.value!="profe" && document.fdatos.criterio.value!=="norepo") { alert("<?php echo $TbMsg["SEARCH_NOVALUE"] ?>"); document.fdatos.valor.focus(); return(false) @@ -172,7 +172,7 @@ function PulsaEnter(oEvento){ else return false; } - if (iAscii == 13) confirmar(); + if (iAscii === 13) confirmar(); return true; } </script> @@ -186,7 +186,7 @@ if (!empty ($valor) or $criterio == "duplic" or $criterio == "profe" or $criteri echo '<p class="subcabeceras" align="center">'.$TbMsg["SEARCH_NOMATCHES"].'</p>'; } else { ?> -<div align="center" style="margin:20;"> +<div align="center" style="margin: 20px;"> <table class="tabla_listados"> <caption><?php echo $TbMsg["SEARCH_RESULTS"];?></caption> <tr> @@ -210,10 +210,10 @@ if (!empty ($valor) or $criterio == "duplic" or $criterio == "profe" or $criteri <hr width="50%"> <?php } ?> -<div align="center" style="margin:20;"> +<div align="center" style="margin: 20px;"> <form action="#" class="formulariodatos" name="fdatos" method="post"> <?php echo $TbMsg["SEARCH_CRITERIA"] ?>: - <select name="criterio" id="criterio" onchange="if (document.fdatos.criterio.value=='duplic' || document.fdatos.criterio.value=='profe' || document.fdatos.criterio.value=='norepo') document.fdatos.valor.disabled=true; else document.fdatos.valor.disabled=false"> + <select name="criterio" id="criterio" onchange="document.fdatos.valor.disabled=document.fdatos.criterio.value==='duplic' || document.fdatos.criterio.value=='profe' || document.fdatos.criterio.value==='norepo';"> <option value="nombre"> <?php echo $TbMsg["SEARCH_NAME"] ?> </option> <option value="ip"> <?php echo $TbMsg["SEARCH_IP"] ?> </option> <option value="mac"> <?php echo $TbMsg["SEARCH_MAC"] ?> </option> @@ -223,10 +223,9 @@ if (!empty ($valor) or $criterio == "duplic" or $criterio == "profe" or $criteri </select> <input type="text" name="valor" id="valor" size="20" /> <div align="center"> - <img onclick="confirmar()" src="../images/botonok.png" style="margin:20;cursor: hand" /> + <img onclick="confirmar()" src="../images/botonok.png" style="margin: 20px; cursor: hand" /> </div> </form> </div> </body> </html> - diff --git a/admin/WebConsole/varios/calendario_ventana.php b/admin/WebConsole/varios/calendario_ventana.php index b91c4e1d..070e4874 100644 --- a/admin/WebConsole/varios/calendario_ventana.php +++ b/admin/WebConsole/varios/calendario_ventana.php @@ -31,10 +31,10 @@ if (isset($_POST["anno_elegido"])) $anno_elegido=$_POST["anno_elegido"]; //_________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> - <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> - <LINK rel="stylesheet" type="text/css" href="../estilos.css"> +<TITLE>Administración web de aulas</TITLE> +<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> +<LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="JavaScript"> var rojo="#cc3366"; @@ -103,7 +103,7 @@ function mes_anterior(){ } } var swbi=0; - if (wanno%4==0 && wmes==2) swbi=1; + if (wanno%4===0 && wmes===2) swbi=1; document.forms.fdatos.dia_elegido.value=dias_meses[wmes]+swbi; document.forms.fdatos.mes_elegido.value=wmes; @@ -162,8 +162,8 @@ $mialmanaque=new Almanaque("tabla_meses"); echo '<TABLE align="center">'; echo ' <TR>'; echo ' <TD align="left"><img SRC="../images/iconos/salir_on.gif" onclick="cerrar_ventana()"></TD>'; -echo '<TD style="COLOR: MediumBlue;FONT-FAMILY: Arial, Helvetica, sans-serif;FONT-SIZE:12"> Año: '; -echo '<SELECT name="despleanno" onchange="elige_anno()" style="width:60">'; +echo '<TD style="COLOR: MediumBlue;FONT-FAMILY: Arial, Helvetica, sans-serif;FONT-SIZE:12px"> Año: '; +echo '<SELECT name="despleanno" onchange="elige_anno()" style="width:60px">'; for($i=2010;$i<2015;$i++){ echo '<OPTION value='.$i; if($anno_elegido==$i) echo" selected "; @@ -175,8 +175,8 @@ echo '</TR>'; echo '<table align=center border=0>'; echo '<tr>'; -echo '<td onclick="mes_anterior();" style="cursor:pointer;COLOR: MediumBlue;FONT-FAMILY: Arial, Helvetica, sans-serif;FONT-SIZE:10" align=left><<</td>'; -echo '<td onclick="mes_siguiente();" style="cursor:pointer;COLOR: MediumBlue;FONT-FAMILY: Arial, Helvetica, sans-serif;FONT-SIZE:10" align=right>>></td>'; +echo '<td onclick="mes_anterior();" style="cursor:pointer;COLOR: MediumBlue;FONT-FAMILY: Arial, Helvetica, sans-serif;FONT-SIZE:10px" align="left"><<</td>'; +echo '<td onclick="mes_siguiente();" style="cursor:pointer;COLOR: MediumBlue;FONT-FAMILY: Arial, Helvetica, sans-serif;FONT-SIZE:10px" align="right">>></td>'; echo '</tr>'; echo '<tr>'; echo '<td colspan=2 valign=top width=100>'.$mialmanaque->MesAnno($mes_elegido,$anno_elegido).'</td>'; diff --git a/admin/WebConsole/varios/consulta_programaciones.php b/admin/WebConsole/varios/consulta_programaciones.php index 9fce6c69..127dde3e 100644 --- a/admin/WebConsole/varios/consulta_programaciones.php +++ b/admin/WebConsole/varios/consulta_programaciones.php @@ -29,4 +29,4 @@ if ($rs->Abrir()){ // Error al abrir recordset echo $cadena_campos; } $rs->Cerrar(); -?> + diff --git a/admin/WebConsole/varios/desplegablesambitos.php b/admin/WebConsole/varios/desplegablesambitos.php index 6a174f9b..91a639ce 100644 --- a/admin/WebConsole/varios/desplegablesambitos.php +++ b/admin/WebConsole/varios/desplegablesambitos.php @@ -25,4 +25,3 @@ $cmd=CreaComando($cadenaconexion); // Crea objeto comando if ($cmd){ echo tomaSelectAmbito($cmd,$ambito,0,$idcentro,250); } -?>
\ No newline at end of file diff --git a/admin/WebConsole/varios/ejecutaritem.php b/admin/WebConsole/varios/ejecutaritem.php index ad3dbe48..fa431d17 100644 --- a/admin/WebConsole/varios/ejecutaritem.php +++ b/admin/WebConsole/varios/ejecutaritem.php @@ -58,4 +58,4 @@ switch($tipoaccion){ break; } die("HA HABIDO ALGÚN ERROR AL PROCESAR EL ITEM"); -?> + diff --git a/admin/WebConsole/varios/incluiracciones.php b/admin/WebConsole/varios/incluiracciones.php index 43cf1abe..b4f27bff 100644 --- a/admin/WebConsole/varios/incluiracciones.php +++ b/admin/WebConsole/varios/incluiracciones.php @@ -62,7 +62,8 @@ else{ // Viene de menus ?> <HTML> <HEAD> - <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> + <TITLE>Administración web de aulas</TITLE> + <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="../jscripts/opciones.js"></SCRIPT> <SCRIPT language="javascript" src="../jscripts/accionmenu.js"></SCRIPT> @@ -184,6 +185,7 @@ function pintaMenus($cmd,$identificador,$tipoaccion,$op) global $descripcionaccion; global $EJECUCION_PROCEDIMIENTO; global $EJECUCION_TAREA; + $urlimg=""; // echo $cmd->texto; $idmenus=""; // Identificadores de menus para segunda consulta @@ -261,5 +263,3 @@ function pintaMenus($cmd,$identificador,$tipoaccion,$op) $rs->Cerrar(); return($idmenus); // retorna identificadores de menus implicados en la consulta } -?> - diff --git a/admin/WebConsole/varios/inclusionacciones.php b/admin/WebConsole/varios/inclusionacciones.php index 2f823445..6f7d9fab 100644 --- a/admin/WebConsole/varios/inclusionacciones.php +++ b/admin/WebConsole/varios/inclusionacciones.php @@ -1,282 +1,281 @@ -<?php
-//// ******************************************************************************************************
-// Aplicación WEB: ogAdmWebCon
-// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
-// Fecha Creación: Año 2009-2010
-// Fecha Última modificación: Agosto-2010
-// Nombre del fichero: inclusionacciones.php
-// Descripción :
-// Permite incorporar procedimientos y comandos a tareas y tareas ya existentes
-// *******************************************************************************************************
-include_once("../includes/ctrlacc.php");
-include_once("../clases/AdoPhp.php");
-include_once("../includes/CreaComando.php");
-include_once("../includes/constantes.php");
-include_once("../includes/comunes.php");
-include_once("../includes/TomaDato.php");
-include_once("../idiomas/php/".$idioma."/inclusionacciones_".$idioma.".php");
-//________________________________________________________________________________________________________
-
-$idtipoaccion=0;
-$tipoaccion=0;
-$descripcionaccion="";
-$ambito="";
-
-if (isset($_GET["idtipoaccion"])) $idtipoaccion=$_GET["idtipoaccion"];
-if (isset($_GET["tipoaccion"])) $tipoaccion=$_GET["tipoaccion"];
-if (isset($_GET["descripcionaccion"])) $descripcionaccion=$_GET["descripcionaccion"];
-if (isset($_GET["ambito"])) $ambito=$_GET["ambito"];
-
-//________________________________________________________________________________________________________
-
-$cmd=CreaComando($cadenaconexion); // Crea objeto comando
-if (!$cmd)
- Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D.
-
-$tbParametros=CreaTablaParametros($cmd); // Crea tabla en memmoria para acceder a detalles de comandos
-//________________________________________________________________________________________________________
-?>
-<HTML>
- <HEAD>
- <META http-equiv="Content-Type" content="text/html;charset=UTF-8">
- <LINK rel="stylesheet" type="text/css" href="../estilos.css">
- <SCRIPT language="javascript" src="../clases/jscripts/MenuContextual.js"></SCRIPT>
- <SCRIPT language="javascript" src="../jscripts/inclusionacciones.js"></SCRIPT>
- <SCRIPT language="javascript" src="../clases/jscripts/HttpLib.js"></SCRIPT>
- <SCRIPT language="javascript" src="../jscripts/comunes.js"></SCRIPT>
- <SCRIPT language="javascript" src="../idiomas/javascripts/<?php echo $idioma?>/inclusionacciones_<?php echo $idioma?>.js"></SCRIPT>
- </HEAD>
- <BODY>
- <?php
- switch($tipoaccion){
- case $AMBITO_PROCEDIMIENTOS:
- $urlimg="../images/iconos/procedimiento.gif";
- $literal=$TbMsg[0];
- $litcab=$TbMsg[2];
- break;
- case $AMBITO_TAREAS:
- $urlimg="../images/iconos/tareas.gif";
- $literal=$TbMsg[1];
- $litcab=$TbMsg[3];
- break;
- }
- ?>
- <P align=center class=cabeceras><IMG src="../images/iconos/acciones.gif"> <?php echo $literal?><BR>
- <SPAN align=center class=subcabeceras><?php echo $descripcionaccion?></SPAN> <IMG src="<?php echo $urlimg?>"></P>
-
- <TABLE align=center border=0>
- <TR>
- <?php
- $conTR=0; // Contador de lineas (Identificadores de las filas)
- switch($tipoaccion){
- case $AMBITO_PROCEDIMIENTOS:
- $litmsg=$TbMsg[5];
- listaProcedientos($cmd,$idtipoaccion);
- break;
- case $AMBITO_TAREAS:
- $litmsg=$TbMsg[6];
- listaTareas($cmd,$idtipoaccion,$ambito);
- break;
- }
- ?>
- </TR>
- </TABLE>
- <FORM name="fdatos">
- <INPUT type="hidden" name="conTR" value="<?php echo $conTR?>">
- <INPUT type="hidden" name="tipoaccion" value="<?php echo $tipoaccion?>">
- <INPUT type="hidden" name="idtipoaccion" value="<?php echo $idtipoaccion?>">
- </FORM>
- </BODY>
-</HTML>
-<?php
-// *************************************************************************************************************************************************
- function listaProcedientos($cmd,$idprocedimiento)
- {
- global $AMBITO_PROCEDIMIENTOS;
- global $TbMsg;
-
- $cmd->texto="SELECT procedimientos_acciones.idprocedimientoaccion AS identificador, procedimientos_acciones.orden,
- procedimientos_acciones.parametros, procedimientos_acciones.procedimientoid,
- comandos.idcomando, comandos.descripcion AS comando,
- procedimientostemp.descripcion AS procedimiento
- FROM procedimientos
- INNER JOIN procedimientos_acciones ON procedimientos_acciones.idprocedimiento=procedimientos.idprocedimiento
- LEFT OUTER JOIN comandos ON comandos.idcomando=procedimientos_acciones.idcomando
- LEFT OUTER JOIN procedimientos AS procedimientostemp
- ON procedimientostemp.idprocedimiento=procedimientos_acciones.procedimientoid
- WHERE procedimientos.idprocedimiento=".$idprocedimiento."
- ORDER BY procedimientos_acciones.orden";
-
- $idprocedimientos=escribeAcciones($cmd,$AMBITO_PROCEDIMIENTOS,true,7);
-
- $idprocedimientos=$idprocedimiento; // Excluye sólo a él para evitar dead-lock
- $cmd->texto="SELECT idprocedimiento AS identificador, 0 AS orden, 0 AS idcomando, descripcion AS procedimiento
- FROM procedimientos
- WHERE idprocedimiento NOT IN (".$idprocedimientos.")
- ORDER BY descripcion";
-
- escribeAcciones($cmd,$AMBITO_PROCEDIMIENTOS,false,8);
- }
-// *************************************************************************************************************************************************
- function listaTareas($cmd,$idtarea,$ambito)
- {
- global $AMBITO_PROCEDIMIENTOS;
- global $AMBITO_TAREAS;
- global $AMBITO_TAREAS;
- global $TbMsg;
-
- /* Contenido de tarea */
- $cmd->texto="SELECT tareas.ambito, tareas.idambito, tareas_acciones.idtareaaccion AS identificador,
- tareas_acciones.orden, tareas_acciones.tareaid, procedimientos.idprocedimiento,
- procedimientos.descripcion AS procedimiento, tareastemp.descripcion AS tarea
- FROM tareas
- INNER JOIN tareas_acciones ON tareas_acciones.idtarea=tareas.idtarea
- LEFT OUTER JOIN procedimientos ON procedimientos.idprocedimiento=tareas_acciones.idprocedimiento
- LEFT OUTER JOIN tareas AS tareastemp
- ON tareastemp.idtarea=tareas_acciones.tareaid
- WHERE tareas.idtarea=".$idtarea."
- ORDER BY tareas_acciones.orden";
-
- $idtareas=escribeAcciones($cmd,$AMBITO_TAREAS,true,7);
-
- /* Procedimientos disponibles */
- if(!empty($ambito)){
- $cmd->texto="SELECT idprocedimiento AS identificador, 0 AS orden, 0 AS idcomando, descripcion AS procedimiento
- FROM procedimientos
- ORDER BY descripcion";
-
- escribeAcciones($cmd,$AMBITO_PROCEDIMIENTOS,false,8);
- }
-
- /* Tareas disponibles */
- $idtareas=$idtarea; // Excluye sólo a ella para evitar dead-lock
- $cmd->texto="SELECT idtarea AS identificador, 0 AS orden, 0 AS idprocedimiento, descripcion AS tarea
- FROM tareas
- WHERE idtarea NOT IN (".$idtareas.")
- ORDER BY descripcion";
- escribeAcciones($cmd,$AMBITO_TAREAS,false,9);
- }
-//________________________________________________________________________________________________________
-
- function escribeAcciones($cmd,$tipoaccion,$sw,$imsg)
- {
- global $AMBITO_PROCEDIMIENTOS;
- global $AMBITO_TAREAS;
- global $AMBITO_COMANDOS;
- global $conTR;
- global $TbMsg;
-
- $rs=new Recordset;
- $rs->Comando=&$cmd;
- if (!$rs->Abrir()) return("");
-
- $idacciones="";
-
- echo '<TD valign=top>';
- if($rs->EOF && !$sw){
- echo '</P></TD>';
- return;
- }
-
- echo '<P align=center><SPAN class=presentaciones><B>'.$TbMsg[$imsg].'</B></SPAN></BR>';
- echo ' <TABLE align=center class="tabla_listados" cellspacing=1 cellpadding=0>';
- escribeCabecera();
- while (!$rs->EOF){
- echo '<TR id="TR-'.$conTR.'" value="'.$rs->campos["identificador"].'">';
- $conTR++;
- echo '<TD align=center><INPUT type=checkbox';
- if($sw)
- echo ' value="1" checked '; // Lo marca como seleccionado (1ª. ronda)
- else
- echo ' value="0"';
- echo '></TD>';
- echo '<TD align=center ><INPUT class="formulariodatos" style="WIDTH:30px"
- type="text" value="'.$rs->campos["orden"].'" id="'.$rs->campos["orden"].'"></TD>';
-
- // Descripcion de la acción
- switch($tipoaccion){
- case $AMBITO_PROCEDIMIENTOS:
- if(!empty($rs->campos["idcomando"])){
- $urlimg="../images/iconos/comandos.gif";
- $accion=$rs->campos["comando"];
- $value=$AMBITO_COMANDOS;
- }
- else{
- $urlimg="../images/iconos/procedimiento.gif";
- $accion=$rs->campos["procedimiento"];
- $value=$AMBITO_PROCEDIMIENTOS;
- }
- break;
- case $AMBITO_TAREAS:
- if(!empty($rs->campos["idprocedimiento"])){
- $urlimg="../images/iconos/procedimiento.gif";
- $accion=$rs->campos["procedimiento"];
- $value=$AMBITO_PROCEDIMIENTOS;
- }
- else{
- $urlimg="../images/iconos/tareas.gif";
- $accion=$rs->campos["tarea"];
- $value=$AMBITO_TAREAS;
- }
- break;
- }
- echo '<TD align=center><IMG style="cursor:pointer" src="'.$urlimg.'" value="'.$value.'"></TD>';
- echo '<TD>'.$accion.'</TD>';
- // Orden del item del item
- echo '</TR>';
-
- /* Muestra parámetros de los comandos (Se hace en Información)
- if($tipoaccion==$AMBITO_PROCEDIMIENTOS){
- if(!empty($rs->campos["idcomando"])){ // Se trata de un comando, se muestran parámetros)
- $htmlprm=escribeParametros($rs->campos["parametros"]);
- if(!empty($htmlprm)){
- echo '<TR>';
- echo '<TD> </TD>';
- echo '<TD colspan=3>'.escribeParametros($rs->campos["parametros"]).'</TD>';
- }
- }
- }
- */
- $rs->Siguiente();
- }
- echo '</TABLE>';
- if($sw) escribePie();
- echo '</P></TD>';
- $rs->Cerrar();
- $idacciones.="0"; // Para evitar el último ";"
- return($idacciones);
- }
-//________________________________________________________________________________________________________
-
- function escribeCabecera()
- {
- global $TbMsg;
- global $litcab;
-
- echo '<TR height=20>
- <TH> </TH>
- <TH> '.$TbMsg[4].' </TH>
- <TH>T</TH>
- <TH> '.$litcab.'</TH>
- </TR>';
- }
-//________________________________________________________________________________________________________
-
- function escribePie()
- {
- global $litmsg;
- global $op;
-
- echo '<BR><TABLE align=center>
- <TR>
- <TD><A href="#botones"><IMG border=0 src="../images/boton_confirmar.gif"
- onclick="confirmar('.$op.');"></A></TD>
- </TR>
- </TABLE>
- <BR>
- <DIV id="Layer_nota" align=center>
- <SPAN align=center class=notas><I>'.$litmsg.'</I></SPAN>
- </DIV>';
- }
-?>
-
+<?php +//// ****************************************************************************************************** +// Aplicación WEB: ogAdmWebCon +// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla +// Fecha Creación: Año 2009-2010 +// Fecha última modificación: Agosto-2010 +// Nombre del fichero: inclusionacciones.php +// Descripción: +// Permite incorporar procedimientos y comandos a tareas y tareas ya existentes +// ******************************************************************************************************* +include_once("../includes/ctrlacc.php"); +include_once("../clases/AdoPhp.php"); +include_once("../includes/CreaComando.php"); +include_once("../includes/constantes.php"); +include_once("../includes/comunes.php"); +include_once("../includes/TomaDato.php"); +include_once("../idiomas/php/".$idioma."/inclusionacciones_".$idioma.".php"); +//________________________________________________________________________________________________________ + +$idtipoaccion=0; +$tipoaccion=0; +$descripcionaccion=""; +$ambito=""; + +if (isset($_GET["idtipoaccion"])) $idtipoaccion=$_GET["idtipoaccion"]; +if (isset($_GET["tipoaccion"])) $tipoaccion=$_GET["tipoaccion"]; +if (isset($_GET["descripcionaccion"])) $descripcionaccion=$_GET["descripcionaccion"]; +if (isset($_GET["ambito"])) $ambito=$_GET["ambito"]; + +//________________________________________________________________________________________________________ + +$cmd=CreaComando($cadenaconexion); // Crea objeto comando +if (!$cmd) + Header('Location: '.$pagerror.'?herror=2'); // Error de conexi�n con servidor B.D. + +$tbParametros=CreaTablaParametros($cmd); // Crea tabla en memmoria para acceder a detalles de comandos +//________________________________________________________________________________________________________ +?> +<HTML> + <HEAD> + <TITLE>Administración web de aulas</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"> + <LINK rel="stylesheet" type="text/css" href="../estilos.css"> + <SCRIPT language="javascript" src="../clases/jscripts/MenuContextual.js"></SCRIPT> + <SCRIPT language="javascript" src="../jscripts/inclusionacciones.js"></SCRIPT> + <SCRIPT language="javascript" src="../clases/jscripts/HttpLib.js"></SCRIPT> + <SCRIPT language="javascript" src="../jscripts/comunes.js"></SCRIPT> + <SCRIPT language="javascript" src="../idiomas/javascripts/<?php echo $idioma?>/inclusionacciones_<?php echo $idioma?>.js"></SCRIPT> + </HEAD> + <BODY> + <?php + switch($tipoaccion){ + case $AMBITO_PROCEDIMIENTOS: + $urlimg="../images/iconos/procedimiento.gif"; + $literal=$TbMsg[0]; + $litcab=$TbMsg[2]; + break; + case $AMBITO_TAREAS: + $urlimg="../images/iconos/tareas.gif"; + $literal=$TbMsg[1]; + $litcab=$TbMsg[3]; + break; + } + ?> + <P align=center class=cabeceras><IMG src="../images/iconos/acciones.gif"> <?php echo $literal?><BR> + <SPAN class=subcabeceras><?php echo $descripcionaccion?></SPAN> <IMG src="<?php echo $urlimg?>"></P> + + <TABLE align=center border=0> + <TR> + <?php + $conTR=0; // Contador de lÃneas (Identificadores de las filas) + switch($tipoaccion){ + case $AMBITO_PROCEDIMIENTOS: + $litmsg=$TbMsg[5]; + listaProcedientos($cmd,$idtipoaccion); + break; + case $AMBITO_TAREAS: + $litmsg=$TbMsg[6]; + listaTareas($cmd,$idtipoaccion,$ambito); + break; + } + ?> + </TR> + </TABLE> + <FORM name="fdatos"> + <INPUT type="hidden" name="conTR" value="<?php echo $conTR?>"> + <INPUT type="hidden" name="tipoaccion" value="<?php echo $tipoaccion?>"> + <INPUT type="hidden" name="idtipoaccion" value="<?php echo $idtipoaccion?>"> + </FORM> + </BODY> +</HTML> +<?php +// ************************************************************************************************************************************************* + function listaProcedientos($cmd,$idprocedimiento) + { + global $AMBITO_PROCEDIMIENTOS; + global $TbMsg; + + $cmd->texto="SELECT procedimientos_acciones.idprocedimientoaccion AS identificador, procedimientos_acciones.orden, + procedimientos_acciones.parametros, procedimientos_acciones.procedimientoid, + comandos.idcomando, comandos.descripcion AS comando, + procedimientostemp.descripcion AS procedimiento + FROM procedimientos + INNER JOIN procedimientos_acciones ON procedimientos_acciones.idprocedimiento=procedimientos.idprocedimiento + LEFT OUTER JOIN comandos ON comandos.idcomando=procedimientos_acciones.idcomando + LEFT OUTER JOIN procedimientos AS procedimientostemp + ON procedimientostemp.idprocedimiento=procedimientos_acciones.procedimientoid + WHERE procedimientos.idprocedimiento=".$idprocedimiento." + ORDER BY procedimientos_acciones.orden"; + + $idprocedimientos=escribeAcciones($cmd,$AMBITO_PROCEDIMIENTOS,true,7); + + $idprocedimientos=$idprocedimiento; // Excluye sólo a él para evitar dead-lock + $cmd->texto="SELECT idprocedimiento AS identificador, 0 AS orden, 0 AS idcomando, descripcion AS procedimiento + FROM procedimientos + WHERE idprocedimiento NOT IN (".$idprocedimientos.") + ORDER BY descripcion"; + + escribeAcciones($cmd,$AMBITO_PROCEDIMIENTOS,false,8); + } +// ************************************************************************************************************************************************* + function listaTareas($cmd,$idtarea,$ambito) + { + global $AMBITO_PROCEDIMIENTOS; + global $AMBITO_TAREAS; + global $AMBITO_TAREAS; + global $TbMsg; + + /* Contenido de tarea */ + $cmd->texto="SELECT tareas.ambito, tareas.idambito, tareas_acciones.idtareaaccion AS identificador, + tareas_acciones.orden, tareas_acciones.tareaid, procedimientos.idprocedimiento, + procedimientos.descripcion AS procedimiento, tareastemp.descripcion AS tarea + FROM tareas + INNER JOIN tareas_acciones ON tareas_acciones.idtarea=tareas.idtarea + LEFT OUTER JOIN procedimientos ON procedimientos.idprocedimiento=tareas_acciones.idprocedimiento + LEFT OUTER JOIN tareas AS tareastemp + ON tareastemp.idtarea=tareas_acciones.tareaid + WHERE tareas.idtarea=".$idtarea." + ORDER BY tareas_acciones.orden"; + + $idtareas=escribeAcciones($cmd,$AMBITO_TAREAS,true,7); + + /* Procedimientos disponibles */ + if(!empty($ambito)){ + $cmd->texto="SELECT idprocedimiento AS identificador, 0 AS orden, 0 AS idcomando, descripcion AS procedimiento + FROM procedimientos + ORDER BY descripcion"; + + escribeAcciones($cmd,$AMBITO_PROCEDIMIENTOS,false,8); + } + + /* Tareas disponibles */ + $idtareas=$idtarea; // Excluye s�lo a ella para evitar dead-lock + $cmd->texto="SELECT idtarea AS identificador, 0 AS orden, 0 AS idprocedimiento, descripcion AS tarea + FROM tareas + WHERE idtarea NOT IN (".$idtareas.") + ORDER BY descripcion"; + escribeAcciones($cmd,$AMBITO_TAREAS,false,9); + } +//________________________________________________________________________________________________________ + + function escribeAcciones($cmd,$tipoaccion,$sw,$imsg) + { + global $AMBITO_PROCEDIMIENTOS; + global $AMBITO_TAREAS; + global $AMBITO_COMANDOS; + global $conTR; + global $TbMsg; + + $rs=new Recordset; + $rs->Comando=&$cmd; + if (!$rs->Abrir()) return(""); + + $idacciones=""; + + echo '<TD valign=top>'; + if($rs->EOF && !$sw){ + echo '</P></TD>'; + return; + } + + echo '<P align=center><SPAN class=presentaciones><B>'.$TbMsg[$imsg].'</B></SPAN></BR>'; + echo ' <TABLE align=center class="tabla_listados" cellspacing=1 cellpadding=0>'; + escribeCabecera(); + while (!$rs->EOF){ + echo '<TR id="TR-'.$conTR.'" value="'.$rs->campos["identificador"].'">'; + $conTR++; + echo '<TD align=center><INPUT type=checkbox'; + if($sw) + echo ' value="1" checked '; // Lo marca como seleccionado (1�. ronda) + else + echo ' value="0"'; + echo '></TD>'; + echo '<TD align=center ><INPUT class="formulariodatos" style="WIDTH:30px" + type="text" value="'.$rs->campos["orden"].'" id="'.$rs->campos["orden"].'"></TD>'; + + // Descripcion de la acci�n + switch($tipoaccion){ + case $AMBITO_PROCEDIMIENTOS: + if(!empty($rs->campos["idcomando"])){ + $urlimg="../images/iconos/comandos.gif"; + $accion=$rs->campos["comando"]; + $value=$AMBITO_COMANDOS; + } + else{ + $urlimg="../images/iconos/procedimiento.gif"; + $accion=$rs->campos["procedimiento"]; + $value=$AMBITO_PROCEDIMIENTOS; + } + break; + case $AMBITO_TAREAS: + if(!empty($rs->campos["idprocedimiento"])){ + $urlimg="../images/iconos/procedimiento.gif"; + $accion=$rs->campos["procedimiento"]; + $value=$AMBITO_PROCEDIMIENTOS; + } + else{ + $urlimg="../images/iconos/tareas.gif"; + $accion=$rs->campos["tarea"]; + $value=$AMBITO_TAREAS; + } + break; + } + echo '<TD align=center><IMG style="cursor:pointer" src="'.$urlimg.'" value="'.$value.'"></TD>'; + echo '<TD>'.$accion.'</TD>'; + // Orden del item del item + echo '</TR>'; + + /* Muestra parámetros de los comandos (Se hace en Información) + if($tipoaccion==$AMBITO_PROCEDIMIENTOS){ + if(!empty($rs->campos["idcomando"])){ // Se trata de un comando, se muestran par�metros) + $htmlprm=escribeParametros($rs->campos["parametros"]); + if(!empty($htmlprm)){ + echo '<TR>'; + echo '<TD> </TD>'; + echo '<TD colspan=3>'.escribeParametros($rs->campos["parametros"]).'</TD>'; + } + } + } + */ + $rs->Siguiente(); + } + echo '</TABLE>'; + if($sw) escribePie(); + echo '</P></TD>'; + $rs->Cerrar(); + $idacciones.="0"; // Para evitar el último ";" + return($idacciones); + } +//________________________________________________________________________________________________________ + + function escribeCabecera() + { + global $TbMsg; + global $litcab; + + echo '<TR height=20> + <TH> </TH> + <TH> '.$TbMsg[4].' </TH> + <TH>T</TH> + <TH> '.$litcab.'</TH> + </TR>'; + } +//________________________________________________________________________________________________________ + + function escribePie() + { + global $litmsg; + global $op; + + echo '<BR><TABLE align=center> + <TR> + <TD><A href="#botones"><IMG border=0 src="../images/boton_confirmar.gif" + onclick="confirmar('.$op.');"></A></TD> + </TR> + </TABLE> + <BR> + <DIV id="Layer_nota" align=center> + <SPAN align=center class=notas><I>'.$litmsg.'</I></SPAN> + </DIV>'; + } diff --git a/admin/WebConsole/varios/incorporaordenadores.php b/admin/WebConsole/varios/incorporaordenadores.php index 2615fbad..63caca6a 100644 --- a/admin/WebConsole/varios/incorporaordenadores.php +++ b/admin/WebConsole/varios/incorporaordenadores.php @@ -90,7 +90,7 @@ if(!empty($contenido)){ // Se ha introducido contenido en lugar de fichero <?php //________________________________________________________________________________________________________ // Mensaje con el resultado del proceso -echo '<SCRIPT LANGUAGE="javascript">'; +echo '<SCRIPT>'; if (!empty($resul)) echo " alert('".$TbMsg[$resul]."');"; if (!empty($ordDup)) @@ -193,8 +193,7 @@ function Inserta($cmd,$idaula,$nombre,$lamac,$laip) // Crear fichero de arranque PXE con plantilla por defecto. if ($resul) { - $idordenador=$cmd->Autonumerico(); - createBootMode ($cmd, "", $idordenador, $idioma); + createBootMode ($cmd, "", $nombreordenador, $idioma); } return($resul); } diff --git a/admin/WebConsole/varios/incrementalcomponente_soft.php b/admin/WebConsole/varios/incrementalcomponente_soft.php index bf3214da..cc6c4fed 100644 --- a/admin/WebConsole/varios/incrementalcomponente_soft.php +++ b/admin/WebConsole/varios/incrementalcomponente_soft.php @@ -25,7 +25,8 @@ if (!$cmd) ?> <HTML> <HEAD> - <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> +<TITLE>Administración web de aulas</TITLE> +<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="../jscripts/incrementalcomponente_soft.js"></SCRIPT> <SCRIPT language="javascript" src="../jscripts/opciones.js"></SCRIPT> @@ -36,10 +37,10 @@ if (!$cmd) <INPUT type=hidden value="<?php echo $idcentro?>" id=idcentro> <INPUT type=hidden value="<?php echo $idsoftincremental?>" id=idsoftincremental> <P align=center class=cabeceras><?php echo $TbMsg[0]?><BR> - <SPAN align=center class=subcabeceras><?php echo $TbMsg[1]?></SPAN> <IMG src="../images/iconos/confisoft.gif"></P> + <SPAN class=subcabeceras><?php echo $TbMsg[1]?></SPAN> <IMG src="../images/iconos/confisoft.gif"></P> <BR> <DIV align=center id="Layer_componentes"> - <SPAN align=center class=presentaciones><B><U><?php echo $TbMsg[2]?></U>: <?php echo $descripcionincremental?></B></SPAN></P> + <SPAN class=presentaciones><B><U><?php echo $TbMsg[2]?></U>: <?php echo $descripcionincremental?></B></SPAN></P> <TABLE width="100%" class="tabla_listados" cellspacing=1 cellpadding=0 > <TR> <TH> </TH> @@ -57,7 +58,7 @@ if (!$cmd) while (!$rs->EOF){ echo '<TR>'; echo '<TD align=center width="10%" ><INPUT type=checkbox onclick="gestion_componente('.$rs->campos["idsoftware"].',this)" checked ></INPUT></TD>'; - echo '<TD align=center width="10%" ><img alt="'. $rs->campos["hdescripcion"].'"src="'.$rs->campos["urlimg"].'"></TD>'; + echo '<TD align=center width="10%" ><img alt="'. $rs->campos["hdescripcion"].'" src="'.$rs->campos["urlimg"].'"></TD>'; echo '<TD width="80%" > '.$rs->campos["descripcion"].'</TD>'; echo '</TR>'; $strex.= $A_W."softwares.idsoftware<>".$rs->campos["idsoftware"]; diff --git a/admin/WebConsole/varios/informacion_imagenes.php b/admin/WebConsole/varios/informacion_imagenes.php index 8f43725a..0c3a52d4 100644 --- a/admin/WebConsole/varios/informacion_imagenes.php +++ b/admin/WebConsole/varios/informacion_imagenes.php @@ -49,12 +49,11 @@ $arbol=new ArbolVistaXml($arbolXML,0,$baseurlimg,$clasedefault,1,20,130,1,$titul </BODY> </HTML> <?php -/************************************************************************************************************************************************** - Devuelve una cadena con formato XML de toda la información de las imagenes - Parametros: - - cmd:Una comando ya operativo ( con conexiónabierta) - - idimagen: El identificador del perfil hardware -________________________________________________________________________________________________________*/ +/** + * @param Comando $cmd Comando ya operativo (con conexión abierta) + * @param integer $idimagen Identificador del perfil hardware + * @return string Cadena en formato XML con toda la información de las imágenes_____ + */ function CreaArbol($cmd,$idimagen){ $cadenaXML=SubarbolXML_Imagenes($cmd,$idimagen); return($cadenaXML); diff --git a/admin/WebConsole/varios/informacion_tareas.php b/admin/WebConsole/varios/informacion_tareas.php index 58b3c491..63adf78d 100644 --- a/admin/WebConsole/varios/informacion_tareas.php +++ b/admin/WebConsole/varios/informacion_tareas.php @@ -24,10 +24,10 @@ if (isset($_GET["descripciontarea"])) $descripciontarea=$_GET["descripciontarea" //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> - <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> - <LINK rel="stylesheet" type="text/css" href="../estilos.css"> +<TITLE>Administración web de aulas</TITLE> +<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> +<LINK rel="stylesheet" type="text/css" href="../estilos.css"> </HEAD> <BODY> <?php @@ -67,7 +67,7 @@ function pintacomandos($cmd,$idtareacomando){ $cmd->texto.=" INNER JOIN comandos ON comandos.idcomando=tareas_comandos.idcomando"; $cmd->texto.=" WHERE tareas_comandos.idtareacomando=".$idtareacomando; $rs->Comando=&$cmd; - if (!$rs->Abrir()) return($cadenaXML); // Error al abrir recordset + if (!$rs->Abrir()) return(""); // Error al abrir recordset if ($rs->EOF) return(""); $HTMLparametros='<TABLE class="tabla_parametros" align=center border=0 cellspacing=1 cellpadding=0 width="90%">'.chr(13); @@ -78,6 +78,7 @@ function pintacomandos($cmd,$idtareacomando){ $textambito=""; $urlimg=""; + $nombre=""; switch($rs->campos["ambito"]){ case $AMBITO_CENTROS : @@ -109,7 +110,7 @@ function pintacomandos($cmd,$idtareacomando){ $HTMLparametros.= '<TD> '.$TbMsg[3].' </TD>'.chr(13); $HTMLparametros.= '<TD> '.$textambito.' '; $HTMLparametros.= '<IMG src="'.$urlimg.'"> </TD>'.chr(13); - $HTMLparametros.= '</TR><TR>'; + $HTMLparametros.= '</TR><TR>'; $HTMLparametros.= '<TD> '.$TbMsg[4].' </TD>'.chr(13); $HTMLparametros.= '<TD> '.$nombre.' </TD>'.chr(13); $HTMLparametros.= '</TR>'; diff --git a/admin/WebConsole/varios/menubrowser.php b/admin/WebConsole/varios/menubrowser.php index c5878939..03465c64 100644 --- a/admin/WebConsole/varios/menubrowser.php +++ b/admin/WebConsole/varios/menubrowser.php @@ -16,12 +16,11 @@ if(!empty($iph)){ } ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> - <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> - <LINK rel="stylesheet" type="text/css" href="estilos.css"> -</HEAD> -<SCRIPT LANGUAGE="JAVASCRIPT"> + <TITLE>Administración web de aulas</TITLE> + <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> + <link rel="stylesheet" type="text/css" href="../estilos.css"> + <SCRIPT LANGUAGE="JAVASCRIPT"> //________________________________________________________________________________________________________ function confirmar(){ if (comprobar_datos()) @@ -29,12 +28,12 @@ function confirmar(){ } //________________________________________________________________________________________________________ function comprobar_datos(){ - if (document.fdatos.usu.value==""){ + if (document.fdatos.usu.value===""){ alert("Debe introducir un nombre de Usuario"); document.fdatos.usu.focus(); return(false) } - if (document.fdatos.pss.value==""){ + if (document.fdatos.pss.value===""){ alert("Debe introducir una contraseña"); document.fdatos.pss.focus(); return(false) @@ -52,15 +51,15 @@ function PulsaEnter(oEvento){ else return false; } - if (iAscii == 13) confirmar(); + if (iAscii === 13) confirmar(); return true; } //________________________________________________________________________________________________________ -</SCRIPT> + </SCRIPT> </HEAD> <BODY> -<DIV style="POSITION:absolute;top:20;left:150"> - <FORM action="controlacceso.php" name="fdatos" method="post"></FORM> +<DIV style="POSITION:absolute;top:20px;left:150px"> + <FORM action="../controlacceso.php" name="fdatos" method="post"></FORM> </DIV> </BODY> </HTML> @@ -81,4 +80,3 @@ function tomaIP(){ return($ipcliente); } -?> diff --git a/admin/WebConsole/varios/menucliente.php b/admin/WebConsole/varios/menucliente.php index 06cd6816..b1c07c94 100644 --- a/admin/WebConsole/varios/menucliente.php +++ b/admin/WebConsole/varios/menucliente.php @@ -45,6 +45,7 @@ else{ $UrlPagina=$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; // Url página $UrlPagina=dirname($UrlPagina); $UrlPaginaIconos=dirname($UrlPagina)."/images/iconos"; + $codeHtml=""; //________________________________________________________________________________________________________ //agp $nombre_archivo = "/opt/opengnsys/log/clients/".$iph.".cache.txt"; diff --git a/admin/WebConsole/varios/msgbrowser.php b/admin/WebConsole/varios/msgbrowser.php index 8a89757a..9add7b33 100644 --- a/admin/WebConsole/varios/msgbrowser.php +++ b/admin/WebConsole/varios/msgbrowser.php @@ -23,16 +23,13 @@ else $mensaje=$TbMsg[$idx]; ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> - <SCRIPT language="javascript"> - - </SCRIPT> <STYLE TYPE="text/css"> - .deepsea, .deepsea TD, .deepsea TH + .deepsea TD, .deepsea TH { background-color:#026afe; color:#FFFFFF; @@ -65,11 +62,11 @@ else <BODY> <?php if(empty($idx) && empty($msg)) { - // No hay operaciones realizandose + // No hay operaciones realizándose echo '<BR><BR><BR><BR><BR>'; echo '<TABLE cellspacing=0 cellpadding=2 align=center border=0>'; echo '<TR><TD align=center><IMG border=0 src="../images/iconos/logoopengnsys.png"></TD></TR>'; - echo '<TR><TD align=center><SPAN style="COLOR: #999999;FONT-FAMILY: Arial;FONT-SIZE: 12px;">Iniciando...</TD></TR>'; + echo '<TR><TD align=center><SPAN style="COLOR: #999999;FONT-FAMILY: Arial, sans-serif; FONT-SIZE: 12px;">Iniciando...</TD></TR>'; echo '</TR>'; echo '</TABLE>'; } @@ -79,7 +76,7 @@ else{ echo '<h1>' . $TbMsg[24] . ' </h1>'; echo '<BR><BR><BR>'; echo '<TABLE cellspacing=0 cellpadding=2 align=center border=0>'; - echo '<TR><TD align=center class="tdbarra">Opengnsys Browser Message</TD><TR>'; + echo '<TR><TD align=center class="tdbarra">OpenGnsys Browser Message</TD><TR>'; echo '<TR><TD class="tdclien" valign=center > '.$mensaje.' </TD></TR>'; echo '</TABLE>'; } diff --git a/admin/WebConsole/varios/perfilcomponente_hard.php b/admin/WebConsole/varios/perfilcomponente_hard.php index e1a8f4ae..82ea1d55 100644 --- a/admin/WebConsole/varios/perfilcomponente_hard.php +++ b/admin/WebConsole/varios/perfilcomponente_hard.php @@ -25,7 +25,8 @@ if (!$cmd) ?> <HTML> <HEAD> - <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> +<TITLE>Administración web de aulas</TITLE> +<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="../jscripts/perfilcomponente_hard.js"></SCRIPT> <SCRIPT language="javascript" src="../jscripts/opciones.js"></SCRIPT> diff --git a/admin/WebConsole/varios/perfilcomponente_soft.php b/admin/WebConsole/varios/perfilcomponente_soft.php index 58a90725..4b2c19ff 100644 --- a/admin/WebConsole/varios/perfilcomponente_soft.php +++ b/admin/WebConsole/varios/perfilcomponente_soft.php @@ -25,7 +25,8 @@ if (!$cmd) ?> <HTML> <HEAD> - <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> +<TITLE>Administración web de aulas</TITLE> +<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="../jscripts/perfilcomponente_soft.js"></SCRIPT> <SCRIPT language="javascript" src="../jscripts/opciones.js"></SCRIPT> @@ -40,7 +41,7 @@ if (!$cmd) <SPAN align=center class=subcabeceras><?php echo $TbMsg[1]?></SPAN> <IMG src="../images/iconos/confisoft.gif"></P> <BR> <DIV align=center id="Layer_componentes"> - <SPAN align=center class=presentaciones><B><U><?php echo $TbMsg[2]?></U>: <?php echo $descripcionperfil?></B></SPAN></P> + <P align=center><SPAN class=presentaciones><B><U><?php echo $TbMsg[2]?></U>: <?php echo $descripcionperfil?></B></SPAN></P> <TABLE width="100%" class="tabla_listados" cellspacing=1 cellpadding=0 > <TR> <TH> </TH> diff --git a/admin/WebConsole/varios/programaciones.php b/admin/WebConsole/varios/programaciones.php index 522614ca..2187345f 100644 --- a/admin/WebConsole/varios/programaciones.php +++ b/admin/WebConsole/varios/programaciones.php @@ -82,8 +82,8 @@ $mialmanaque= new Almanaque("tabla_meses"); //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> + <TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="../jscripts/constantes.js"></SCRIPT> @@ -96,7 +96,6 @@ $mialmanaque= new Almanaque("tabla_meses"); <IMG src=<?php echo $urlimg?>> <SPAN align=center class=subcabeceras><?php echo $descripcion?></SPAN> </p> <FORM name="fprogramaciones" method="post"> <INPUT type=hidden name=tipoaccion value="<?php echo $tipoaccion?>"> -<CENTER> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <!-- Tabla Tabla con los tiempos y los bloques de programación --> <TABLE align=center border=0 cellPadding=0 cellSpacing=0> @@ -199,7 +198,7 @@ $mialmanaque= new Almanaque("tabla_meses"); </TR> <TR> <TD><input type=text class="cajatexto" id="nombrebloque" - style="width: 350; height: 20" size="20" ></TD> + style="width: 350px; height: 20px" size="20" ></TD> </TR> </TABLE> </TD> @@ -209,7 +208,7 @@ $mialmanaque= new Almanaque("tabla_meses"); <?php $HTMLSELECT=""; $HTMLSELECT.='<SELECT onclick="consulta_programacion();" - class="estilodesple" id="lista_programaciones" size=2 style="height:100; width: 350">' ; + class="estilodesple" id="lista_programaciones" size=2 style="height:100px; width: 350px">' ; if ($numreg>0){ while (!$rs->EOF){ $HTMLSELECT.='<OPTION value="'.$rs->campos["idprogramacion"].'"'; @@ -241,7 +240,7 @@ $mialmanaque= new Almanaque("tabla_meses"); onmouseover="sobreboton(this)" onmouseout="fueraboton(this)" onclick="modifica_programacion(<?php echo $identificador?>,<?php echo $tipoaccion?>,<?php echo $sesion?>)" align=center height="17" width="83">Modificar</SPAN></TD> </TR> - + <TR> <TD align=center class=botonprogramacion > <SPAN id=bt_duplicar style="cursor:pointer;visibility:visible;color:#bbbcb9" onmouseover="sobreboton(this)" onmouseout="fueraboton(this)" diff --git a/admin/WebConsole/varios/toma_mes.php b/admin/WebConsole/varios/toma_mes.php index c76b2dff..eaf75871 100644 --- a/admin/WebConsole/varios/toma_mes.php +++ b/admin/WebConsole/varios/toma_mes.php @@ -23,4 +23,3 @@ if (isset($_POST["idanno"])) $pidanno=$_POST["idanno"]; $mialmanaque= new Almanaque("tabla_meses"); $retorno=$mialmanaque->MesAnno($pidmes,$pidanno); echo $retorno; -?>
\ No newline at end of file |