source: admin/Services/includes/ogAdmLib.c @ fd11e20

918-git-images-111dconfigfileconfigure-oglivegit-imageslgromero-new-oglivemainmaint-cronmount-efivarfsmultivmmultivm-ogboot-installerogClonningEngineogboot-installer-jenkinsoglive-ipv6test-python-scriptsticket-301ticket-50ticket-50-oldticket-577ticket-585ticket-611ticket-612ticket-693ticket-700ubu24tplunification2use-local-agent-oglivevarios-instalacionwebconsole3
Last change on this file since fd11e20 was e021aa8, checked in by alonso <alonso@…>, 15 years ago

git-svn-id: https://opengnsys.es/svn/trunk@1074 a21b9725-9963-47de-94b9-378ad31fedc9

  • Property mode set to 100644
File size: 9.7 KB
Line 
1// ________________________________________________________________________________________________________
2// Función: INTROaFINCAD
3//
4//              Descripción:
5//                      Cambia INTROS por caracteres fin de cadena ('\0') en una cadena
6//              Parametros:
7//                              - parametros : La cadena a explorar
8// ________________________________________________________________________________________________________
9void INTROaFINCAD(char* parametros) {
10        int lon, i;
11        lon = strlen(parametros);
12        for (i = 0; i < lon; i++) {
13                if (parametros[i] == '\r')
14                        parametros[i] = '\0';
15        }
16}
17// ________________________________________________________________________________________________________
18// Funciónn: FINCADaINTRO
19//
20//              Descripciónn?:
21//                      Cambia caracteres fin de cadena ('\0') por INTROS en una cadena
22//              Parametros:
23//                              - parametros : La cadena a explorar
24// ________________________________________________________________________________________________________
25void FINCADaINTRO(char* a, char *b) {
26        char *i;
27        for (i = a; i < b; i++) { // Cambia los NULOS por INTROS
28                if (*i == '\0')
29                        *i = '\r';
30        }
31}
32
33// ________________________________________________________________________________________________________
34// Función: AbreConexion
35//
36//              Descripción:
37//                      Crea un socket y lo conecta a una interface de red. Devuelve el socket
38//              Parámetros:
39//                      - ips : La direccin IP con la que se comunicarnel socket
40//                      - port : Puerto para la  comunicacin
41// ________________________________________________________________________________________________________
42SOCKET AbreConexion(char *ips, int port) {
43        struct sockaddr_in server;
44        SOCKET s;
45
46        // Crea el socket y se intenta conectar
47        s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
48        if (s == SOCKET_ERROR) {
49                RegistraLog("Error en la creacin del socket. Modulo: AbreConexion()",
50                                true);
51                return INVALID_SOCKET;
52        }
53
54        server.sin_family = AF_INET;
55        server.sin_port = htons((short) port);
56        server.sin_addr.s_addr = inet_addr(ips);
57
58        if (connect(s, (struct sockaddr *) &server, sizeof(server)) == SOCKET_ERROR) {
59                RegistraLog("connect() fallo", true);
60                return INVALID_SOCKET;
61        }
62        return (s);
63
64}
65
66
67// ________________________________________________________________________________________________________
68// Función: cuenta_ipes
69//
70//              Descripción:
71//                      Cuenta las comas (caracter de separacion) de las cadenas de ipes
72//              Parámetros:
73//                      - parametros : La cadena a explorar
74// ________________________________________________________________________________________________________
75int cuenta_ipes(char* iph) {
76        int lon, i, cont = 1;
77        lon = strlen(iph);
78        for (i = 0; i < lon; i++) {
79                if (iph[i] == ';')
80                        cont++;
81        }
82        return (cont);
83}
84
85// ________________________________________________________________________________________________________
86// Función: IgualIP
87//
88//               Descripción:
89//                      Comprueba si una cadena con una ipe estnincluidad en otra que  contienen varias direcciones ipes separas por punto y coma
90//              Parámetros:
91//                      - cadenaiph: Cadena de IPes
92//                      - ipcliente: Cadena de la ip a buscar
93// ________________________________________________________________________________________________________
94BOOLEAN IgualIP(char *cadenaiph, char *ipcliente) {
95        char *posa, *posb;
96        int lon;
97
98        posa = strstr(cadenaiph, ipcliente);
99        if (posa == NULL)
100                return (FALSE); // No existe la IP en la cadena
101        posb = posa; // Iguala direcciones
102        while (TRUE) {
103                posb++;
104                if (*posb == ';')
105                        break;
106                if (*posb == '\0')
107                        break;
108                if (*posb == '\r')
109                        break;
110        }
111        lon = strlen(ipcliente);
112        if ((posb - posa) == lon)
113                return (TRUE); // IP encontrada !!!!
114
115        return (FALSE);
116}
117
118// ________________________________________________________________________________________________________
119// Función: RegistraLog
120//
121//              Descripción:
122//                      Esta funcin registra los evento de errores en un fichero log
123//              Parametros:
124//                      - msg : Mensage de error
125//                      - swerrno: Switch que indica que recupere literal de error del sistema
126// ________________________________________________________________________________________________________
127void RegistraLog(const char *msg, int swerrno) {
128        struct tm * timeinfo;
129        timeinfo = TomaHora();
130        FILE *FLog;
131
132        FLog = fopen(szPathFileLog, "at");
133        if (swerrno)
134                fprintf(FLog, "%02d/%02d/%d %02d:%02d ***%s:%s\n", timeinfo->tm_mday,
135                                timeinfo->tm_mon + 1, timeinfo->tm_year + 1900,
136                                timeinfo->tm_hour, timeinfo->tm_min, msg, strerror(errno));
137        else
138                fprintf(FLog, "%02d/%02d/%d %02d:%02d ***%s\n", timeinfo->tm_mday,
139                                timeinfo->tm_mon + 1, timeinfo->tm_year + 1900,
140                                timeinfo->tm_hour, timeinfo->tm_min, msg);
141        fclose(FLog);
142
143        // Lo muestra por consola
144        /*printf("%02d/%02d/%d %02d:%02d ***%s\n", timeinfo->tm_mday,
145                        timeinfo->tm_mon + 1,
146                        timeinfo->tm_year + 1900,
147                        timeinfo->tm_hour,
148                        timeinfo->tm_min,
149                        msg);
150        */
151}
152// ________________________________________________________________________________________________________
153// Función: TomaHora
154//
155//              Descripción:
156//                      Esta función toma la hora actual  del sistema y devuelve una estructura conlos datos
157// ________________________________________________________________________________________________________
158struct tm * TomaHora() {
159        time_t rawtime;
160        time(&rawtime);
161        return (localtime(&rawtime));
162}
163
164
165// ________________________________________________________________________________________________________
166// Funcinn: toma_parametro
167//
168//              Descripcinn?:
169//                      Esta funci? devuelve el valor de un parametro incluido en la trmInfo.
170//                      El formato del protocolo es: "nombre_parametro=valor_parametro"
171//              Par?etros:
172//                      - nombre_parametro: Es el nombre del par?etro a recuperar
173//                      - parametros: Es la matriz que contiene todos los par?etros
174// ________________________________________________________________________________________________________
175char * toma_parametro(const char* nombre_parametro,char *parametros)
176{
177        int i=0;
178        char* pos;
179
180        for(i=0;i<LONGITUD_PARAMETROS-4;i++){
181                if(parametros[i]==nombre_parametro[0]){
182                        if(parametros[i+1]==nombre_parametro[1]){
183                                if(parametros[i+2]==nombre_parametro[2]){
184                                        if(parametros[i+3]=='='){
185                                                pos=&parametros[i+4];
186                                                return(pos);
187                                        }
188                                }
189                        }
190                }
191        }
192        return(NULL);
193}
194//______________________________________________________________________________________________________
195// Función: copiaParametro
196//
197//      Descripción:
198//              Devuelve una copia del valor de un parámetro
199//      Parámetros:
200//              - ptrTrama: contenido del mensaje
201//              - parametro: Nombre del parámetro
202//      Devuelve:
203//              Un puntero a la cadena que contiene el valor del parámetro
204// ________________________________________________________________________________________________________
205char* copia_parametro(const char*nombre,char *parametros)
206{
207        int lon;
208        char *prm,*buffer;
209
210        prm=toma_parametro(nombre,parametros); // Toma parámetro
211        if(prm)
212                lon=strlen(prm);
213        else
214                return(NULL);
215
216        buffer = (char*) malloc(lon); // Toma memoria
217        if (buffer == NULL) { // No hay memoria suficiente para el buffer
218                return (NULL);
219        }
220        strcpy(buffer,prm);
221        return(buffer);
222}
223// ________________________________________________________________________________________________________
224// Función: split_parametros
225//
226//      Descripción:
227//                      Trocea una cadena según un carácter delimitador
228//      Parámetros:
229//                      - trozos: Array de punteros a cadenas
230//                      - cadena: Cadena a trocear
231//                      - chd: Carácter delimitador
232//      Devuelve:
233//              Número de trozos en que se divide la cadena
234// ________________________________________________________________________________________________________
235int split_parametros(char **trozos, char *cadena, char *ch)
236{
237        int w = 0;
238       
239        char chd = ch[0];
240        trozos[w++] = cadena;
241        if(cadena!=NULL){
242                while (*cadena != '\0') {
243                        if (*cadena == chd) {
244                                *cadena = '\0';
245                                if (*(cadena + 1) != '\0')
246                                        trozos[w++] = cadena + 1;
247                        }
248                        cadena++;
249                }
250        }
251        return (w); // Devuelve el número de trozos
252}
253
254//______________________________________________________________________________________________________
255// Función: recibe_tramas
256//
257//       Descripción:
258//              Recibe una trama por la red (TCP)
259//      Parámetros:
260//              s: socket TCP
261//              trama: contenido a  enviar
262//      Devuelve:
263//              true si el envío ha sido correcto o false en caso contrario
264//______________________________________________________________________________________________________
265int recibe_tramas(SOCKET s,TRAMA *trama)
266{
267        int ret;
268
269        ret = recv(s,(char*)trama,LONGITUD_TRAMA,0);
270        if (ret == 0) // Conexin cerrada por parte del cliente (Graceful close)
271                return (false);
272        else{
273                if (ret == SOCKET_ERROR){
274                        return (false);
275                }
276                else{ // Datos recibidos
277                        Desencriptar((char*)trama);
278                        return(true);
279                }
280        }
281}
282//__________________________________________________________________________________________________________
283//
284// Función: Encripta
285//
286//       Descripción:
287//              Esta función encripta una cadena y la devuelve como parametro
288//__________________________________________________________________________________________________________
289char * Encriptar(char *cadena)
290{
291        return(cadena); // vuelve sin encriptar
292       
293        int i,lon;
294        char clave;
295       
296        clave = 12 & 0xFFU; // La clave elegida entre 0-255, en este caso 12
297        lon=strlen(cadena);
298        for(i=0;i<lon;i++)
299      cadena[i]=((char)cadena[i] ^ clave) & 0xFF;
300        return(cadena);
301}
302//__________________________________________________________________________________________________________
303//
304// Funci�: Desencripta
305//
306//       Descripción:
307//              Esta funci� desencripta una cadena y la devuelve como parametro
308//__________________________________________________________________________________________________________
309char * Desencriptar(char *cadena)
310{
311        return(cadena);
312       
313        int i,lon;
314        char clave;
315       
316        clave = 12 & 0xFFU; // La clave elegida entre 0-255, en este caso 12
317        lon=strlen(cadena);
318        for(i=0;i<lon;i++)
319                cadena[i]=((char)cadena[i] ^ clave) & 0xFF;
320        return(cadena);
321}
322
Note: See TracBrowser for help on using the repository browser.