source: admin/Services/includes/ogAdmLib.c @ 921cbfc

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 921cbfc was 231f87d, checked in by alonso <alonso@…>, 15 years ago

git-svn-id: https://opengnsys.es/svn/trunk@1002 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// ________________________________________________________________________________________________________
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// ________________________________________________________________________________________________________
196// Función: split_parametros
197//
198//      Descripción:
199//                      Trocea una cadena según un carácter delimitador
200//      Parámetros:
201//                      - trozos: Array de punteros a cadenas
202//                      - cadena: Cadena a trocear
203//                      - chd: Carácter delimitador
204//      Devuelve:
205//              Número de trozos en que se divide la cadena
206// ________________________________________________________________________________________________________
207int split_parametros(char **trozos, char *cadena, char *ch)
208{
209        int w = 0;
210       
211        char chd = ch[0];
212        trozos[w++] = cadena;
213        if(cadena!=NULL){
214                while (*cadena != '\0') {
215                        if (*cadena == chd) {
216                                *cadena = '\0';
217                                if (*(cadena + 1) != '\0')
218                                        trozos[w++] = cadena + 1;
219                        }
220                        cadena++;
221                }
222        }
223        return (w); // Devuelve el número de trozos
224}
225
226//______________________________________________________________________________________________________
227// Función: recibe_tramas
228//
229//       Descripción:
230//              Recibe una trama por la red (TCP)
231//      Parámetros:
232//              s: socket TCP
233//              trama: contenido a  enviar
234//      Devuelve:
235//              true si el envío ha sido correcto o false en caso contrario
236//______________________________________________________________________________________________________
237int recibe_tramas(SOCKET s,TRAMA *trama)
238{
239        int ret;
240
241        ret = recv(s,(char*)trama,LONGITUD_TRAMA,0);
242        if (ret == 0) // Conexin cerrada por parte del cliente (Graceful close)
243                return (false);
244        else{
245                if (ret == SOCKET_ERROR){
246                        return (false);
247                }
248                else{ // Datos recibidos
249                        Desencriptar((char*)trama);
250                        return(true);
251                }
252        }
253}
254//__________________________________________________________________________________________________________
255//
256// Función: Encripta
257//
258//       Descripción:
259//              Esta función encripta una cadena y la devuelve como parametro
260//__________________________________________________________________________________________________________
261char * Encriptar(char *cadena)
262{
263        return(cadena); // vuelve sin encriptar
264       
265        int i,lon;
266        char clave;
267       
268        clave = 12 & 0xFFU; // La clave elegida entre 0-255, en este caso 12
269        lon=strlen(cadena);
270        for(i=0;i<lon;i++)
271      cadena[i]=((char)cadena[i] ^ clave) & 0xFF;
272        return(cadena);
273}
274//__________________________________________________________________________________________________________
275//
276// Funci�: Desencripta
277//
278//       Descripción:
279//              Esta funci� desencripta una cadena y la devuelve como parametro
280//__________________________________________________________________________________________________________
281char * Desencriptar(char *cadena)
282{
283        return(cadena);
284       
285        int i,lon;
286        char clave;
287       
288        clave = 12 & 0xFFU; // La clave elegida entre 0-255, en este caso 12
289        lon=strlen(cadena);
290        for(i=0;i<lon;i++)
291                cadena[i]=((char)cadena[i] ^ clave) & 0xFF;
292        return(cadena);
293}
294
Note: See TracBrowser for help on using the repository browser.