source: admin/Services/includes/ogAdmLib.c @ 1a9dea4

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 1a9dea4 was 7540917, checked in by alonso <alonso@…>, 15 years ago

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

  • Property mode set to 100644
File size: 8.8 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// Función: TomaHora
153//
154//              Descripción:
155//                      Esta funcin toma la hora actual  del sistema y devuelve una estructura conlos datos
156// ________________________________________________________________________________________________________
157struct tm * TomaHora() {
158        time_t rawtime;
159        time(&rawtime);
160        return (gmtime(&rawtime));
161}
162
163
164// ________________________________________________________________________________________________________
165// Funcinn: toma_parametro
166//
167//              Descripcinn?:
168//                      Esta funci? devuelve el valor de un parametro incluido en la trmInfo.
169//                      El formato del protocolo es: "nombre_parametro=valor_parametro"
170//              Par?etros:
171//                      - nombre_parametro: Es el nombre del par?etro a recuperar
172//                      - parametros: Es la matriz que contiene todos los par?etros
173// ________________________________________________________________________________________________________
174char * toma_parametro(const char* nombre_parametro,char *parametros)
175{
176        int i=0;
177        char* pos;
178
179        for(i=0;i<LONGITUD_PARAMETROS-4;i++){
180                if(parametros[i]==nombre_parametro[0]){
181                        if(parametros[i+1]==nombre_parametro[1]){
182                                if(parametros[i+2]==nombre_parametro[2]){
183                                        if(parametros[i+3]=='='){
184                                                pos=&parametros[i+4];
185                                                return(pos);
186                                        }
187                                }
188                        }
189                }
190        }
191        return(NULL);
192}
193
194// ________________________________________________________________________________________________________
195// Función: split_parametros
196//
197//      Descripción:
198//                      Trocea una cadena según un carácter delimitador
199//      Parámetros:
200//                      - trozos: Array de punteros a cadenas
201//                      - cadena: Cadena a trocear
202//                      - chd: Carácter delimitador
203//      Devuelve:
204//              Número de trozos en que se divide la cadena
205// ________________________________________________________________________________________________________
206int split_parametros(char **trozos, char *cadena, char *ch)
207{
208        int w = 0;
209       
210        char chd = ch[0];
211        trozos[w++] = cadena;
212        if(cadena!=NULL){
213                while (*cadena != '\0') {
214                        if (*cadena == chd) {
215                                *cadena = '\0';
216                                if (*(cadena + 1) != '\0')
217                                        trozos[w++] = cadena + 1;
218                        }
219                        cadena++;
220                }
221        }
222        return (w); // Devuelve el número de trozos
223}
224
225//______________________________________________________________________________________________________
226// Función: recibe_tramas
227//
228//       Descripción:
229//              Recibe una trama por la red (TCP)
230//      Parámetros:
231//              s: socket TCP
232//              trama: contenido a  enviar
233//      Devuelve:
234//              true si el envío ha sido correcto o false en caso contrario
235//______________________________________________________________________________________________________
236int recibe_tramas(SOCKET s,TRAMA *trama)
237{
238        int ret;
239
240        ret = recv(s,(char*)trama,LONGITUD_TRAMA,0);
241        if (ret == 0) // Conexin cerrada por parte del cliente (Graceful close)
242                return (false);
243        else{
244                if (ret == SOCKET_ERROR){
245                        return (false);
246                }
247                else{ // Datos recibidos
248                        Desencriptar((char*)trama);
249                        return(true);
250                }
251        }
252}
253//__________________________________________________________________________________________________________
254//
255// Función: Encripta
256//
257//       Descripción:
258//              Esta función encripta una cadena y la devuelve como parametro
259//__________________________________________________________________________________________________________
260char * Encriptar(char *cadena)
261{
262        return(cadena); // vuelve sin encriptar
263       
264        int i,lon;
265        char clave;
266       
267        clave = 12 & 0xFFU; // La clave elegida entre 0-255, en este caso 12
268        lon=strlen(cadena);
269        for(i=0;i<lon;i++)
270      cadena[i]=((char)cadena[i] ^ clave) & 0xFF;
271        return(cadena);
272}
273//__________________________________________________________________________________________________________
274//
275// Funci�: Desencripta
276//
277//       Descripción:
278//              Esta funci� desencripta una cadena y la devuelve como parametro
279//__________________________________________________________________________________________________________
280char * Desencriptar(char *cadena)
281{
282        return(cadena);
283       
284        int i,lon;
285        char clave;
286       
287        clave = 12 & 0xFFU; // La clave elegida entre 0-255, en este caso 12
288        lon=strlen(cadena);
289        for(i=0;i<lon;i++)
290                cadena[i]=((char)cadena[i] ^ clave) & 0xFF;
291        return(cadena);
292}
293
Note: See TracBrowser for help on using the repository browser.