source: titan/plugins/networkbrowser/networkbrowser.h @ 16471

Last change on this file since 16471 was 16471, checked in by nit, 8 years ago

[titan] change strstr to ostrstr

File size: 44.6 KB
Line 
1/**************************************************************************/
2/* Name :   networkbrowser.h                                              */
3/*                                                                        */
4/* Author:  obi                                                           */
5/*                                                                        */
6/* Licence: This file is subject to the terms and conditions of the       */
7/*          GNU General Public License version 2.                         */
8/**************************************************************************/   
9
10#ifndef NETWORKBROWSER_H
11#define NETWORKBROWSER_H
12
13extern struct inetwork* inetwork;
14
15struct networkbrowser
16{
17        //mode 0 = cifs
18        //mode 1 = nfs
19        //mode 2 = ftp
20        char* mode;
21        char* sharename;
22        char* ip;
23        char* sharedir;
24        char* username;
25        char* password;
26        char* rsize;
27        char* wsize;
28        char* protocol;
29        char* options;
30        char* ssl;
31        char* proxy;
32        char* proxyip;
33        char* proxyport;
34        char* proxyuser;
35        char* proxypass;
36        char* ftpport;
37        char* userauth;
38        char* proxyauth;
39        char* useproxy;
40        char* usessl;
41        struct networkbrowser* next;
42};
43
44struct networkbrowser *networkbrowser = NULL;
45
46char* readnetworkbrowser(char* filename, int flag);
47void screennetworkbrowser_addshare(struct networkbrowser* node, int newnode);
48
49void debugnetworkbrowser(struct networkbrowser* node)
50{
51        if(node == NULL) return;
52       
53        debug(70, "mode: %s", node->mode);
54        debug(70, "sharename: %s", node->sharename);
55        debug(70, "ip: %s", node->ip);
56        debug(70, "sharedir: %s", node->sharedir);
57        debug(70, "username: %s", node->username);
58        debug(70, "password: %s", node->password);
59        debug(70, "rsize: %s", node->rsize);
60        debug(70, "wsize: %s", node->wsize);
61        debug(70, "protocol: %s", node->protocol);
62        debug(70, "options: %s", node->options);
63        debug(70, "ssl: %s", node->ssl);
64        debug(70, "proxy: %s", node->proxy);
65        debug(70, "proxyip: %s", node->proxyip);
66        debug(70, "proxyport: %s", node->proxyport);
67        debug(70, "proxyuser: %s", node->proxyuser);
68        debug(70, "proxypass: %s", node->proxypass);
69        debug(70, "ftpport: %s", node->ftpport);
70        debug(70, "userauth: %s", node->userauth);
71        debug(70, "proxyauth: %s", node->proxyauth);
72        debug(70, "useproxy: %s", node->useproxy);
73        debug(70, "usessl: %s", node->usessl);
74}
75
76void delnetworkbrowsercontent(struct networkbrowser* node)
77{
78        if(node == NULL) return;
79       
80        free(node->mode); node->mode = NULL;
81        free(node->sharename); node->sharename = NULL;
82        free(node->ip); node->ip = NULL;
83        free(node->sharedir); node->sharedir = NULL;
84        free(node->username); node->username = NULL;
85        free(node->password); node->password = NULL;
86        free(node->rsize); node->rsize = NULL;
87        free(node->wsize); node->wsize = NULL;
88        free(node->protocol); node->protocol = NULL;
89        free(node->options); node->options = NULL;
90        free(node->ssl); node->ssl = NULL;
91        free(node->proxy); node->proxy = NULL;
92        free(node->proxyip); node->proxyip = NULL;
93        free(node->proxyport); node->proxyport = NULL;
94        free(node->proxyuser); node->proxyuser = NULL;
95        free(node->proxypass); node->proxypass = NULL;
96        free(node->ftpport); node->ftpport = NULL;
97        free(node->userauth); node->userauth = NULL;
98        free(node->proxyauth); node->proxyauth = NULL;
99        free(node->useproxy); node->useproxy = NULL;
100        free(node->usessl); node->usessl = NULL;
101}
102
103void delnetworkbrowser(struct networkbrowser* netnode)
104{
105        struct networkbrowser *node = networkbrowser, *prev = networkbrowser;
106
107        while(node != NULL)
108        {
109                if(node == netnode)
110                {
111                        if(node == networkbrowser)
112                                networkbrowser = node->next;
113                        else
114                                prev->next = node->next;
115
116                        delnetworkbrowsercontent(node);
117
118                        free(node);
119                        node = NULL;
120                        break;
121                }
122
123                prev = node;
124                node = node->next;
125        }
126}
127
128void freenetworkbrowser()
129{
130        struct networkbrowser *node = networkbrowser, *prev = networkbrowser;
131
132        while(node != NULL)
133        {
134                prev = node;
135                node = node->next;
136                if(prev != NULL)
137                        delnetworkbrowser(prev);
138        }
139}
140
141struct networkbrowser* addnetworkbrowser(char *line, int count, struct networkbrowser* last)
142{
143        struct networkbrowser *newnode = NULL, *prev = NULL, *node = networkbrowser;
144        int ret = 0, treffer = 0;
145        char* tmpstr = NULL;
146
147        newnode = (struct networkbrowser*)malloc(sizeof(struct networkbrowser));       
148        if(newnode == NULL)
149        {
150                err("no memory");
151                return NULL;
152        }
153        memset(newnode, 0, sizeof(struct networkbrowser));
154
155        if(line != NULL)
156        {
157                newnode->sharename = malloc(256);
158                if(newnode->sharename == NULL)
159                {
160                        err("no memory");
161                        delnetworkbrowsercontent(newnode);
162                        free(newnode);
163                        return NULL;
164                }
165                memset(newnode->sharename, 0, 256);
166
167                newnode->ip = malloc(256);
168                if(newnode->ip == NULL)
169                {
170                        err("no memory");
171                        delnetworkbrowsercontent(newnode);
172                        free(newnode);
173                        return NULL;
174                }
175                memset(newnode->ip, 0, 256);
176
177                newnode->sharedir = malloc(256);
178                if(newnode->sharedir == NULL)
179                {
180                        err("no memory");
181                        delnetworkbrowsercontent(newnode);
182                        free(newnode);
183                        return NULL;
184                }
185                memset(newnode->sharedir, 0, 256);
186
187                newnode->username = malloc(256);
188                if(newnode->username == NULL)
189                {
190                        err("no memory");
191                        delnetworkbrowsercontent(newnode);
192                        free(newnode);
193                        return NULL;
194                }
195                memset(newnode->username, 0, 256);
196
197                newnode->password = malloc(256);
198                if(newnode->password == NULL)
199                {
200                        err("no memory");
201                        delnetworkbrowsercontent(newnode);
202                        free(newnode);
203                        return NULL;
204                }
205                memset(newnode->password, 0, 256);
206
207                newnode->rsize = malloc(256);
208                if(newnode->rsize == NULL)
209                {
210                        err("no memory");
211                        delnetworkbrowsercontent(newnode);
212                        free(newnode);
213                        return NULL;
214                }
215                memset(newnode->rsize, 0, 256);
216
217                newnode->wsize = malloc(256);
218                if(newnode->wsize == NULL)
219                {
220                        err("no memory");
221                        delnetworkbrowsercontent(newnode);
222                        free(newnode);
223                        return NULL;
224                }
225                memset(newnode->wsize, 0, 256);
226
227                newnode->protocol = malloc(256);
228                if(newnode->protocol == NULL)
229                {
230                        err("no memory");
231                        delnetworkbrowsercontent(newnode);
232                        free(newnode);
233                        return NULL;
234                }
235                memset(newnode->protocol, 0, 256);
236
237                newnode->options = malloc(256);
238                if(newnode->options == NULL)
239                {
240                        err("no memory");
241                        delnetworkbrowsercontent(newnode);
242                        free(newnode);
243                        return NULL;
244                }
245                memset(newnode->options, 0, 256);
246
247                newnode->ssl = malloc(256);
248                if(newnode->ssl == NULL)
249                {
250                        err("no memory");
251                        delnetworkbrowsercontent(newnode);
252                        free(newnode);
253                        return NULL;
254                }
255                memset(newnode->ssl, 0, 256);
256
257                newnode->proxy = malloc(256);
258                if(newnode->proxy == NULL)
259                {
260                        err("no memory");
261                        delnetworkbrowsercontent(newnode);
262                        free(newnode);
263                        return NULL;
264                }
265                memset(newnode->proxy, 0, 256);
266
267                newnode->proxyip = malloc(256);
268                if(newnode->proxyip == NULL)
269                {
270                        err("no memory");
271                        delnetworkbrowsercontent(newnode);
272                        free(newnode);
273                        return NULL;
274                }
275                memset(newnode->proxyip, 0, 256);
276
277                newnode->proxyport = malloc(256);
278                if(newnode->proxyport == NULL)
279                {
280                        err("no memory");
281                        delnetworkbrowsercontent(newnode);
282                        free(newnode);
283                        return NULL;
284                }
285                memset(newnode->proxyport, 0, 256);
286
287                newnode->proxyuser = malloc(256);
288                if(newnode->proxyuser == NULL)
289                {
290                        err("no memory");
291                        delnetworkbrowsercontent(newnode);
292                        free(newnode);
293                        return NULL;
294                }
295                memset(newnode->proxyuser, 0, 256);
296
297                newnode->proxypass = malloc(256);
298                if(newnode->proxypass == NULL)
299                {
300                        err("no memory");
301                        delnetworkbrowsercontent(newnode);
302                        free(newnode);
303                        return NULL;
304                }
305                memset(newnode->proxypass, 0, 256);
306
307                newnode->ftpport = malloc(256);
308                if(newnode->ftpport == NULL)
309                {
310                        err("no memory");
311                        delnetworkbrowsercontent(newnode);
312                        free(newnode);
313                        return NULL;
314                }
315                memset(newnode->ftpport, 0, 256);
316
317                newnode->userauth = ostrcat(newnode->userauth, "0", 1, 0);
318                newnode->proxyauth = ostrcat(newnode->proxyauth, "0", 1, 0);
319                newnode->useproxy = ostrcat(newnode->useproxy, "0", 1, 0);
320                newnode->usessl = ostrcat(newnode->usessl, "0", 1, 0);
321
322                //nfs parse
323                if(ostrstr(line, "-fstype=nfs") != NULL)
324                {
325                        treffer = 1;
326                        newnode->mode = ostrcat("1", NULL, 0, 0);
327                        ret = sscanf(line, "%s\t-fstype=nfs,%[^,],%*[^,],rsize=%[^,],wsize=%[^,],%s\t%[^:]://%s", newnode->sharename, newnode->options, newnode->rsize, newnode->wsize, newnode->protocol, newnode->ip, newnode->sharedir);
328                        if(ret != 7)
329                        {
330                                if(count > 0)
331                                {
332                                        err("networkbrowser nfs line %d not ok", count);
333                                }
334                                else
335                                {
336                                        err("add networkbrowser nfs");
337                                }
338                                delnetworkbrowsercontent(newnode);
339                                free(newnode);
340                                return NULL;
341                        }
342                }
343
344                //cifs parse
345                if(ostrstr(line, "-fstype=cifs") != NULL)
346                {
347                        treffer = 1;
348                        newnode->mode = ostrcat("0", NULL, 0, 0);
349                        if(ostrstr(line, "user=,") != NULL)
350                        {
351                                treffer = 6;
352                                ret = sscanf(line, "%s\t-fstype=cifs,%[^,],rsize=%[^,],wsize=%[^,],%*s\t://%[^/]/%s", newnode->sharename, newnode->options, newnode->rsize, newnode->wsize, newnode->ip, newnode->sharedir);
353                        }
354                        else
355                        {
356                                treffer = 8;
357                                free(newnode->userauth); newnode->userauth = NULL;
358                                newnode->userauth = ostrcat(newnode->userauth, "1", 1, 0);
359                                ret = sscanf(line, "%s\t-fstype=cifs,%[^,],rsize=%[^,],wsize=%[^,],user=%[^,],pass=%s\t://%[^/]/%s", newnode->sharename, newnode->options, newnode->rsize, newnode->wsize, newnode->username, newnode->password, newnode->ip, newnode->sharedir);
360                        }
361                        if(ret != treffer)
362                        {
363                                if(count > 0)
364                                {
365                                        err("networkbrowser cifs line %d not ok", count);
366                                }
367                                else
368                                {
369                                        err("add networkbrowser cifs");
370                                }
371                                delnetworkbrowsercontent(newnode);
372                                free(newnode);
373                                return NULL;
374                        }
375                }
376
377                //ftpfs parse
378                if(ostrstr(line, "-fstype=ftpfs") != NULL)
379                {
380                        treffer = 1;
381                        newnode->mode = ostrcat("2", NULL, 0, 0);
382
383                        ret = sscanf(line, "%s\t-fstype=ftpfs,%[^,\t]", newnode->sharename, newnode->options);
384                        if(ret != 2) treffer = 0;
385
386                        tmpstr = ostrstr(line, "ssl");
387                        if(tmpstr != NULL)
388                        {
389                                free(newnode->usessl); newnode->usessl = NULL;
390                                newnode->usessl = ostrcat(newnode->usessl, "1", 1, 0);
391                                ret = sscanf(tmpstr, "%[^,\t]", newnode->ssl);
392                                if(ret != 1) treffer = 0;
393                        }
394
395                        tmpstr = ostrstr(line, "proxy=");
396                        if(tmpstr != NULL)
397                        {
398                                free(newnode->useproxy); newnode->useproxy = NULL;
399                                newnode->useproxy = ostrcat(newnode->useproxy, "1", 1, 0);
400                                ret = sscanf(tmpstr, "proxy=%[^\\]\\:%[^,],%[^,\t]", newnode->proxyip, newnode->proxyport, newnode->proxy);
401                                if(ret != 3) treffer = 0;
402
403                                tmpstr = ostrstr(line, "proxy_user=");
404                                if(tmpstr != NULL)
405                                {
406                                        free(newnode->proxyauth); newnode->proxyauth = NULL;
407                                        newnode->proxyauth = ostrcat(newnode->proxyauth, "1", 1, 0);
408                                        ret = sscanf(tmpstr, "proxy_user=%[^\\]\\:%[^,\t]", newnode->proxyuser, newnode->proxypass);
409                                        if(ret != 2) treffer = 0;
410                                }
411                        }
412
413                        tmpstr = ostrstr(line, ":ftp\\://");
414                        if(tmpstr != NULL)
415                        {
416                                if(ostrstr(line, "@") != NULL)
417                                {
418                                        free(newnode->userauth); newnode->userauth = NULL;
419                                        newnode->userauth = ostrcat(newnode->userauth, "1", 1, 0);
420                                        ret = sscanf(tmpstr, ":ftp\\://%[^\\]\\:%[^@]@%[^\\]\\:%s", newnode->username, newnode->password, newnode->ip, newnode->ftpport);
421                                        if(ret != 5) treffer = 0;
422                                }
423                                else
424                                {
425                                        ret = sscanf(tmpstr, ":ftp\\://%[^\\]\\:%s", newnode->ip, newnode->ftpport);
426                                        if(ret != 3) treffer = 0;
427                                }
428                        }
429                        else
430                                treffer = 0;
431       
432      if(newnode->ftpport != NULL)
433      {
434        tmpstr = ostrstr(newnode->ftpport, "/");
435        if(tmpstr != NULL)
436        {
437          tmpstr[0] = '\0';
438          free(newnode->sharedir);
439          newnode->sharedir = ostrcat(tmpstr + 1, NULL, 0, 0);               
440        }
441      }
442
443                        if(treffer == 0)
444                        {
445                                if(count > 0)
446                                {
447                                        err("networkbrowser ftpfs line %d not ok", count);
448                                }
449                                else
450                                {
451                                        err("add networkbrowser ftpfs");
452                                }
453                                delnetworkbrowsercontent(newnode);
454                                free(newnode);
455                                return NULL;
456                        }
457                }
458
459                if(treffer == 0)
460                {
461                        delnetworkbrowsercontent(newnode);
462                        free(newnode);
463                        return NULL;
464                }
465        }
466       
467        if(last == NULL)
468        {
469                while(node != NULL)
470                {
471                        prev = node;
472                        node = node->next;
473                }
474        }
475        else
476        {
477                prev = last;
478                node = last->next;
479        }
480
481        if(prev == NULL)
482                networkbrowser = newnode;
483        else
484                prev->next = newnode;
485
486        newnode->next = node;
487       
488        return newnode;
489}
490
491void setdefaultnetworkbrowser(struct networkbrowser* node)
492{
493        if(node == NULL) return;
494       
495        if(node->mode == NULL || node->mode[0] == '\0') node->mode = ostrcat(node->mode, "0", 1, 0);
496        if(node->sharename == NULL || node->sharename[0] == '\0') node->sharename = ostrcat(node->sharename, "SHARENAME", 1, 0);
497        if(node->ip == NULL || node->ip[0] == '\0') node->ip = ostrcat(node->ip, "192.168.178.1", 1, 0);
498        if(node->sharedir == NULL || node->sharedir[0] == '\0') node->sharedir = ostrcat(node->sharedir, "sharedir", 1, 0);
499        if(node->username == NULL || node->username[0] == '\0') node->username = ostrcat(node->username, "username", 1, 0);
500        if(node->password == NULL || node->password[0] == '\0') node->password = ostrcat(node->password, "password", 1, 0);
501        if(node->rsize == NULL || node->rsize[0] == '\0') node->rsize = ostrcat(node->rsize, "32768", 1, 0);
502        if(node->wsize == NULL || node->wsize[0] == '\0') node->wsize = ostrcat(node->wsize, "32768", 1, 0);
503        if(node->protocol == NULL || node->protocol[0] == '\0') node->protocol = ostrcat(node->protocol, "udp", 1, 0);
504        if(node->options == NULL || node->options[0] == '\0') node->options = ostrcat(node->options, "rw", 1, 0);
505        if(node->ssl == NULL || node->ssl[0] == '\0') node->ssl = ostrcat(node->ssl, "ssl_try", 1, 0);
506        if(node->proxy == NULL || node->proxy[0] == '\0') node->proxy = ostrcat(node->proxy, "socks5", 1, 0);
507        if(node->proxyip == NULL || node->proxyip[0] == '\0') node->proxyip = ostrcat(node->proxyip, "12.23.45.67", 1, 0);
508        if(node->proxyport == NULL || node->proxyport[0] == '\0') node->proxyport = ostrcat(node->proxyport, "8080", 1, 0);
509        if(node->proxyuser == NULL || node->proxyuser[0] == '\0') node->proxyuser = ostrcat(node->proxyuser, "proxyuser", 1, 0);
510        if(node->proxypass == NULL || node->proxypass[0] == '\0') node->proxypass = ostrcat(node->proxypass, "proxypass", 1, 0);
511        if(node->ftpport == NULL || node->ftpport[0] == '\0') node->ftpport = ostrcat(node->ftpport, "21", 1, 0);
512        if(node->userauth == NULL || node->userauth[0] == '\0') node->userauth = ostrcat(node->userauth, "0", 1, 0);
513        if(node->proxyauth == NULL || node->proxyauth[0] == '\0') node->proxyauth = ostrcat(node->proxyauth, "0", 1, 0);
514        if(node->useproxy == NULL || node->useproxy[0] == '\0') node->useproxy = ostrcat(node->useproxy, "0", 1, 0);
515        if(node->usessl == NULL || node->usessl[0] == '\0') node->usessl = ostrcat(node->usessl, "0", 1, 0);
516}
517
518void savenetworkbrowser(char* filename)
519{
520        struct networkbrowser* node = networkbrowser;
521        char* tmpstr = NULL, *savesettings = NULL;
522
523        if(filename == NULL) return;
524
525        savesettings = readnetworkbrowser("/var/etc/automount/auto.misc", 1);
526
527        while(node != NULL)
528        {
529                savesettings = ostrcat(savesettings, node->sharename, 1, 0);
530
531                if(ostrcmp(node->mode, "0") == 0)
532                {
533                        savesettings = ostrcat(savesettings, "\t-fstype=cifs,rw,rsize=", 1, 0);
534                        savesettings = ostrcat(savesettings, node->rsize, 1, 0);
535                        savesettings = ostrcat(savesettings, ",wsize=", 1, 0);
536                        savesettings = ostrcat(savesettings, node->wsize, 1, 0);
537                       
538                        if(ostrcmp(node->userauth, "1") == 0)
539                        {
540                                savesettings = ostrcat(savesettings, ",user=", 1, 0); 
541                                savesettings = ostrcat(savesettings, node->username, 1, 0);
542                                savesettings = ostrcat(savesettings, ",pass=", 1, 0);
543                                savesettings = ostrcat(savesettings, node->password, 1, 0);
544                        }
545                        else
546                                savesettings = ostrcat(savesettings, ",user=,pass=", 1, 0); 
547                       
548                        savesettings = ostrcat(savesettings, "\t://", 1, 0);
549                        tmpstr = fixip(node->ip, 1);
550                        savesettings = ostrcat(savesettings, tmpstr, 1, 0);
551                        free(tmpstr); tmpstr = NULL;
552                        savesettings = ostrcat(savesettings, "/", 1, 0);
553                        savesettings = ostrcat(savesettings, node->sharedir, 1, 0);
554                        savesettings = ostrcat(savesettings, "\n", 1, 0);
555                }
556                else if(ostrcmp(node->mode, "1") == 0)
557                {
558                        savesettings = ostrcat(savesettings, "\t-fstype=nfs,", 1, 0);
559                        savesettings = ostrcat(savesettings, node->options, 1, 0);
560                        savesettings = ostrcat(savesettings, ",nolock", 1, 0);
561                        savesettings = ostrcat(savesettings, ",rsize=", 1, 0);
562                        savesettings = ostrcat(savesettings, node->rsize, 1, 0);
563                        savesettings = ostrcat(savesettings, ",wsize=", 1, 0);
564                        savesettings = ostrcat(savesettings, node->wsize, 1, 0);
565                        savesettings = ostrcat(savesettings, ",", 1, 0); 
566                        savesettings = ostrcat(savesettings, node->protocol, 1, 0);
567                        savesettings = ostrcat(savesettings, "\t", 1, 0);
568                        tmpstr = fixip(node->ip, 1);
569                        savesettings = ostrcat(savesettings, fixip(node->ip, 1), 1, 0);
570                        free(tmpstr); tmpstr = NULL;
571                        savesettings = ostrcat(savesettings, "://", 1, 0);
572                        savesettings = ostrcat(savesettings, node->sharedir, 1, 0);
573                        savesettings = ostrcat(savesettings, "\n", 1, 0);
574                }
575                else if(ostrcmp(node->mode, "2") == 0)
576                {
577                        savesettings = ostrcat(savesettings, "\t-fstype=ftpfs,", 1, 0);
578                        savesettings = ostrcat(savesettings, node->options, 1, 0);
579                        savesettings = ostrcat(savesettings, ",nolock,allow_other,nonempty,nodev,noatime,kernel_cache,auto_cache,disable_epsv,skip_pasv_ip,no_verify_peer,no_verify_hostname", 1, 0);
580                        if(ostrcmp(node->usessl, "1") == 0)
581                        {
582                                savesettings = ostrcat(savesettings, ",", 1, 0);
583                                savesettings = ostrcat(savesettings, node->ssl, 1, 0);
584                        }
585
586                        if(ostrcmp(node->useproxy, "1") == 0)
587                        {
588                                savesettings = ostrcat(savesettings, ",proxy=", 1, 0);
589                                tmpstr = fixip(node->proxyip, 1);
590                                savesettings = ostrcat(savesettings, tmpstr, 1, 0);
591                                free(tmpstr); tmpstr = NULL;
592                                savesettings = ostrcat(savesettings, "\\:", 1, 0);
593                                savesettings = ostrcat(savesettings, node->proxyport, 1, 0);
594                        }
595                        if(ostrcmp(node->useproxy, "1") == 0)
596                        {
597                                savesettings = ostrcat(savesettings, ",", 1, 0);
598                                savesettings = ostrcat(savesettings, node->proxy, 1, 0);
599                        }
600
601                        if(ostrcmp(node->proxyauth, "1") == 0)
602                        {
603                                savesettings = ostrcat(savesettings, ",proxy_user=", 1, 0);
604                                savesettings = ostrcat(savesettings, node->proxyuser, 1, 0);
605                                savesettings = ostrcat(savesettings, "\\:", 1, 0);
606                                savesettings = ostrcat(savesettings, node->proxypass, 1, 0);
607                        }
608
609                        savesettings = ostrcat(savesettings, "\t:ftp\\://", 1, 0);
610                        if(ostrcmp(node->userauth, "1") == 0)
611                        {
612                                savesettings = ostrcat(savesettings, node->username, 1, 0);
613                                savesettings = ostrcat(savesettings, "\\:", 1, 0);
614                                savesettings = ostrcat(savesettings, node->password, 1, 0);
615                                savesettings = ostrcat(savesettings, "@", 1, 0);
616                        }
617
618                        tmpstr = fixip(node->ip, 1);
619                        savesettings = ostrcat(savesettings, fixip(tmpstr, 1), 1, 0);
620                        free(tmpstr); tmpstr = NULL;
621                        savesettings = ostrcat(savesettings, "\\:", 1, 0);
622                        savesettings = ostrcat(savesettings, node->ftpport, 1, 0);
623     
624      if(ostrcmp(node->sharedir, "sharedir") != 0)
625      {
626        savesettings = ostrcat(savesettings, "/", 1, 0);
627        savesettings = ostrcat(savesettings, node->sharedir, 1, 0);
628      }
629     
630                        savesettings = ostrcat(savesettings, "\n", 1, 0);
631                }
632               
633                node = node->next;
634        }
635
636        if(savesettings != NULL)
637        {
638                writesys("/var/etc/automount/auto.misc", savesettings, 0);
639                system("hotplug.sh first");
640                system("rm -rf /mnt/automount ; mkdir /mnt/automount; cp -a /var/etc/automount/* /mnt/automount");
641        }
642
643        debugnetworkbrowser(node);
644        debug(70, "savesettings: %s", savesettings);
645        debug(70, "--------------------");
646
647        free(savesettings); savesettings = NULL;
648}
649
650void copynetworkbrowser(struct networkbrowser* from, struct networkbrowser* to, char* sharename)
651{
652        if(from == NULL || to == NULL) return;
653
654        to->mode = ostrcat(from->mode, NULL, 0, 0);
655        to->sharename = ostrcat(sharename, NULL, 0, 0);
656        to->ip = ostrcat(from->ip, NULL, 0, 0);
657        to->sharedir = ostrcat(from->sharedir, NULL, 0, 0);
658        to->username = ostrcat(from->username, NULL, 0, 0);
659        to->password = ostrcat(from->password, NULL, 0, 0);
660        to->rsize = ostrcat(from->rsize, NULL, 0, 0);
661        to->wsize = ostrcat(from->wsize, NULL, 0, 0);
662        to->protocol = ostrcat(from->protocol, NULL, 0, 0);
663        to->options = ostrcat(from->options, NULL, 0, 0);
664        to->ssl = ostrcat(from->ssl, NULL, 0, 0);
665        to->proxy = ostrcat(from->proxy, NULL, 0, 0);
666        to->proxyip = ostrcat(from->proxyip, NULL, 0, 0);
667        to->proxyport = ostrcat(from->proxyport, NULL, 0, 0);
668        to->proxyuser = ostrcat(from->proxyuser, NULL, 0, 0);
669        to->proxypass = ostrcat(from->proxypass, NULL, 0, 0);
670        to->ftpport = ostrcat(from->ftpport, NULL, 0, 0);
671        to->userauth = ostrcat(from->userauth, NULL, 0, 0);
672        to->proxyauth = ostrcat(from->proxyauth, NULL, 0, 0);
673        to->useproxy = ostrcat(from->useproxy, NULL, 0, 0);
674        to->usessl = ostrcat(from->usessl, NULL, 0, 0);
675}
676
677//flag 0: read and add to struct
678//flag 1: read and build string
679char* readnetworkbrowser(char* filename, int flag)
680{
681        FILE *fd = NULL;
682        char *fileline = NULL, *tmpstr = NULL;
683        int linecount = 0;
684
685        fileline = malloc(MINMALLOC);
686        if(fileline == NULL)
687        {
688                err("no memory");
689                return NULL;
690        }
691
692        fd = fopen(filename, "r");
693        if(fd == NULL)
694        {
695                perr("can't open %s", filename);
696                free(fileline);
697                return NULL;
698        }
699
700        while(fgets(fileline, MINMALLOC, fd) != NULL)
701        {
702                if(flag == 0)
703                {
704                        if(fileline[0] == '#' || fileline[0] == '\n')
705                                continue;
706                        if(fileline[strlen(fileline) - 1] == '\n')
707                                fileline[strlen(fileline) - 1] = '\0';
708                        if(fileline[strlen(fileline) - 1] == '\r')
709                                fileline[strlen(fileline) - 1] = '\0';
710       
711                        linecount++;
712               
713                        if(fileline != NULL)
714                                addnetworkbrowser(fileline, linecount, NULL);
715                }
716                if(flag == 1)
717                {
718                        if(ostrstr(fileline, "-fstype=cifs") != NULL) continue;
719                        if(ostrstr(fileline, "-fstype=nfs") != NULL) continue;
720                        if(ostrstr(fileline, "-fstype=ftpfs") != NULL) continue;
721                        tmpstr = ostrcat(tmpstr, fileline, 1, 0);
722                }
723        }
724
725        free(fileline);
726        fclose(fd);
727        return tmpstr;
728}
729
730void getnetworkbrowser_dns(struct inetwork* net, struct menulist** mlist)
731{
732        int i = 0;
733        netinfo* nInfo;
734        char *tmpstr = NULL, *s = NULL;
735
736        if(net == NULL || mlist == NULL) return;
737
738        s = ostrcat(s, net->ip, 1, 0);
739        s = ostrcat(s, "/24", 1, 0);
740        debug(70, "start scanning: %s", s);
741       
742        nInfo = newNetInfo();
743        netzInfo(s, nInfo);
744       
745        for(i = 0; i < 256; i++)
746        {
747                if(nInfo[i].ip[0] == '\0')
748                        break;
749                else
750                {
751                        debug(70, "service: %s", nInfo[i].service);
752                        debug(70, "ip: %s", nInfo[i].ip);
753                        debug(70, "name: %s", nInfo[i].name);
754                        debug(70, "mac: %s", nInfo[i].mac);
755                        tmpstr = ostrcat(tmpstr , strstrip(nInfo[i].domain), 1, 0);
756                        tmpstr = ostrcat(tmpstr , " (", 1, 0);
757
758                        tmpstr = ostrcat(tmpstr , strstrip(nInfo[i].ip), 1, 0);
759                        tmpstr = ostrcat(tmpstr , ")", 1, 0);
760                        struct menulist* tmpmlist = addmenulist(mlist, tmpstr, NULL, "netbrowser_scanshares.png", 0, 0);
761                        changemenulistparam(tmpmlist, nInfo[i].ip, nInfo[i].name);
762                        free(tmpstr); tmpstr = NULL;
763
764                }
765        }
766
767        freeNetInfo(nInfo);
768        free(s); s = NULL;
769}
770
771void getnetworkbrowser_cifs(struct menulist** mlist, char* s, char* r, char* u, char* p)
772{
773        int i = 0;
774        char* tmpstr = NULL;
775        shareinfo* sInfo;
776
777        if(s == NULL || r == NULL || u == NULL || p == NULL || mlist == NULL) return;
778       
779        sInfo = newShareInfo();
780        smbInfo(s, r, u, p, sInfo);
781       
782        for (i = 0; i < 128; i++)
783        {
784                if(sInfo[i].sharename[0] == '\0'){
785                        break;
786                }
787                else
788                {
789                        debug(70, "sharename: %s", sInfo[i].sharename);
790                        debug(70, "type: %s", sInfo[i].typ);
791                        debug(70, "comment: %s", sInfo[i].comment);
792                        debug(70, "rech: %s", r);
793                        debug(70, "rechip: %s", s);
794                        tmpstr = ostrcat(tmpstr , "(cifs) ", 1, 0);
795                        tmpstr = ostrcat(tmpstr , strstrip(s), 1, 0);
796                        tmpstr = ostrcat(tmpstr , ": /", 1, 0);
797                        tmpstr = ostrcat(tmpstr , strstrip(sInfo[i].sharename), 1, 0);
798                        struct menulist* tmpmlist = addmenulist(mlist, tmpstr, NULL, "netbrowser_cifs.png", 0, 0);
799                        changemenulistparam(tmpmlist, sInfo[i].sharename, NULL);
800                        free(tmpstr); tmpstr = NULL;
801                }
802        }
803
804        freeShareInfo(sInfo);
805}
806
807void  getnetworkbrowser_nfs(struct menulist** mlist, char* s, char* r)
808{
809        char* tmpstr = NULL, *tmpstr1 = NULL;
810        nfsinfo* nfsInfo;
811        int i = 0, err = 0;
812
813        if(s == NULL || r == NULL || mlist == NULL) return;
814       
815        nfsInfo = newNfsInfo();
816        err = showNfsShare(s, nfsInfo);
817       
818        if (err == 0)
819        {
820                for (i = 0; i < 256; i++)
821                {
822                        if(nfsInfo[i].ip[0] == '\0') {
823                                break;
824                        }
825                        else
826                        {
827                                debug(70, "ip: %s", nfsInfo[i].ip);
828                                debug(70, "share: %s", nfsInfo[i].share);
829                                debug(70, "nfsShare: nfsShare");
830                                debug(70, "rech: %s", r);
831                                debug(70, "rechip: %s", s);
832                                tmpstr = ostrcat(tmpstr , "(nfs) ", 1, 0);
833                                tmpstr = ostrcat(tmpstr , strstrip(s), 1, 0);
834                                tmpstr = ostrcat(tmpstr , ": ", 1, 0);
835                                tmpstr = ostrcat(tmpstr , strstrip(nfsInfo[i].share), 1, 0);
836                                struct menulist* tmpmlist = addmenulist(mlist, tmpstr, NULL, "netbrowser_nfs.png", 0, 0);
837        tmpstr1 = nfsInfo[i].share;
838        if(tmpstr1 != NULL && strlen(tmpstr1) > 0) tmpstr1++;
839                                changemenulistparam(tmpmlist, tmpstr1, NULL);
840                                free(tmpstr); tmpstr = NULL;
841                        }
842                }
843        }
844
845        freeNfsInfo(nfsInfo);
846}
847
848void screennetworkbrowser_scan()
849{
850        struct menulist* mlist = NULL, *mbox = NULL;
851        struct menulist* mlist1 = NULL, *mbox1 = NULL;
852        struct skin* net_scan = getscreen("networkbrowser_scan");
853        struct skin* b1 = getscreennode(net_scan, "b1");
854        struct skin* b2 = getscreennode(net_scan, "b2");
855        struct inetwork *net = inetwork;
856       
857        status.hangtime = 99999;
858        changetitle(net_scan, _("Scanning Network Shares, please wait !!"));
859        b1->hidden = YES;
860        b2->hidden = YES;
861
862        net = inetwork;
863        drawscreen(net_scan, 0);
864
865        while(net != NULL)
866        {
867                if(net->flag == 1)
868                        getnetworkbrowser_dns(net, &mlist);
869                net = net->next;
870        }
871
872start:
873        b1->hidden = NO;
874        b2->hidden = NO;
875
876        mbox = menulistbox(mlist, "networkbrowser_scan", _("Networkbrowser - show scanned DNS-Shares"), "%pluginpath%/networkbrowser/skin/", NULL, 1, 0);
877
878        if(mbox != NULL)
879        {
880                getnetworkbrowser_cifs(&mlist1, mbox->param, mbox->param1, "user", "pass");
881                getnetworkbrowser_nfs(&mlist1, mbox->param, mbox->param1);
882start1:
883                mbox1 = menulistboxext(mlist1, "networkbrowser_scan", _("Networkbrowser - show scanned cifs/nfs-Shares"), "%pluginpath%/networkbrowser/skin/", NULL, 1, NULL, 0);
884                if(mbox1 != NULL && mbox->name != NULL)
885                {
886                        if(ostrstr(mbox1->name, "(cifs)") != NULL)
887                        {
888                                debug(70, "start addshare cifs");
889                                struct networkbrowser* node = addnetworkbrowser(NULL, 1, NULL);
890                                if(node != NULL)
891                                {
892                                        node->mode = ostrcat("0", NULL, 0, 0);
893                                        node->ip = ostrcat(mbox->param, NULL, 0, 0);
894                                        node->sharename = ostrcat(mbox1->param, NULL, 0, 0);
895                                        node->sharedir = ostrcat(mbox1->param, NULL, 0, 0);
896                                        screennetworkbrowser_addshare(node, 1);
897                                }
898                        }
899                        else if(ostrstr(mbox1->name, "(nfs)") != NULL)
900                        {
901                                debug(70, "start addshare nfs");
902                                struct networkbrowser* node = addnetworkbrowser(NULL, 1, NULL);
903                                if(node != NULL)
904                                {
905                                        node->mode = ostrcat("1", NULL, 0, 0);
906                                        node->ip = ostrcat(mbox->param, NULL, 0, 0);
907                                        node->sharename = ostrcat(mbox1->param, NULL, 0, 0);
908                                        node->sharedir = ostrcat(mbox1->param, NULL, 0, 0);
909                                        screennetworkbrowser_addshare(node, 1);
910                                }
911                        }
912                        goto start1;
913                }
914                freemenulist(mlist1, 1); mlist1 = NULL;
915                goto start;
916        }
917
918        freemenulist(mlist, 1); mlist = NULL;
919        freemenulist(mlist1, 1); mlist1 = NULL;
920        delownerrc(net_scan);
921        clearscreen(net_scan);
922        status.hangtime = getconfigint("hangtime", NULL);
923}
924
925void addhddreplacement(char* sharename)
926{
927        char* tmpstr = NULL;
928
929        if(sharename == NULL) return;
930        unlink("/media/hdd");
931
932        tmpstr = ostrcat("/media/net/", sharename, 0, 0);
933        symlink(tmpstr, "/media/hdd");
934        free(tmpstr); tmpstr = NULL;
935
936        writesys("/var/etc/automount/.recordshare", sharename, 0);
937        system("/sbin/hotplug.sh first &");
938}
939
940void delhddreplacement()
941{
942        unlink("/media/hdd");
943        unlink("/var/etc/automount/.recordshare");
944        system("/sbin/hotplug.sh first &");
945}
946
947int checkhddreplacement(char* sharename)
948{
949        char* recordshare = readfiletomem("/var/etc/automount/.recordshare", 0);
950
951        if(recordshare != NULL)
952        {
953                if(ostrcmp(sharename, recordshare) == 0)
954                {
955      free(recordshare); recordshare = NULL;
956                        return 1;
957                }
958  }
959
960  free(recordshare); recordshare = NULL;
961        return 0;
962}
963
964int checknetworkbrowserexist(struct networkbrowser* node)
965{
966        struct networkbrowser* tmpbrowser = networkbrowser;
967
968        if(node == NULL) return 0;
969
970        while(tmpbrowser != NULL)
971        {
972                if(tmpbrowser != node && ostrcmp(tmpbrowser->sharename, node->sharename) == 0)
973                        return 1;
974                tmpbrowser = tmpbrowser->next;
975        }
976
977        return 0;
978}
979
980void changemodenetworkbrowser(struct networkbrowser* node, struct skin* net_addshare, struct skin* skin_username, struct skin* skin_password, struct skin* skin_protocol, struct skin* skin_rsize, struct skin* skin_wsize, struct skin* skin_options, struct skin* skin_ssl, struct skin* skin_proxy, struct skin* skin_proxyip, struct skin* skin_proxyport, struct skin* skin_proxyuser, struct skin* skin_proxypass, struct skin* skin_ftpport, struct skin* skin_userauth, struct skin* skin_proxyauth, struct skin* skin_useproxy, struct skin* skin_usessl)
981{
982        char* tmpstr = NULL;
983        if(node == NULL) return;
984
985        if(ostrcmp(node->mode, "0") == 0)
986        {
987                tmpstr = ostrcat(tmpstr, _("Add Cifs Network Share"), 1, 0);
988                tmpstr = ostrcat(tmpstr, " (", 1, 0);
989                tmpstr = ostrcat(tmpstr, strstrip(node->sharename), 1, 0);
990                tmpstr = ostrcat(tmpstr, ")", 1, 0);
991                changetitle(net_addshare, tmpstr);
992                free(tmpstr); tmpstr = NULL;
993
994                skin_protocol->hidden = YES;
995                skin_rsize->hidden = NO;
996                skin_wsize->hidden = NO;
997                skin_options->hidden = YES;
998                skin_ssl->hidden = YES;
999                skin_proxy->hidden = YES;
1000                skin_proxyip->hidden = YES;
1001                skin_proxyport->hidden = YES;
1002                skin_proxyuser->hidden = YES;
1003                skin_proxypass->hidden = YES;
1004                skin_ftpport->hidden = YES;
1005                skin_userauth->hidden = NO;
1006                skin_proxyauth->hidden = YES;
1007                skin_useproxy->hidden = YES;
1008                skin_usessl->hidden = YES;
1009               
1010                if(ostrcmp(node->userauth, "0") == 0)
1011                {
1012                        skin_username->hidden = YES;
1013                        skin_password->hidden = YES;
1014                }
1015                else
1016                {
1017                        skin_username->hidden = NO;
1018                        skin_password->hidden = NO;
1019                }
1020        }
1021        else if(ostrcmp(node->mode, "1") == 0)
1022        {
1023                tmpstr = ostrcat(tmpstr, _("Add Nfs Network Share"), 1, 0);
1024                tmpstr = ostrcat(tmpstr, " (", 1, 0);
1025                tmpstr = ostrcat(tmpstr, strstrip(node->sharename), 1, 0);
1026                tmpstr = ostrcat(tmpstr, ")", 1, 0);
1027                changetitle(net_addshare, tmpstr);
1028                free(tmpstr); tmpstr = NULL;
1029
1030                skin_username->hidden = YES;
1031                skin_password->hidden = YES;
1032                skin_protocol->hidden = NO;
1033                skin_rsize->hidden = NO;
1034                skin_wsize->hidden = NO;
1035                skin_options->hidden = NO;
1036                skin_ssl->hidden = YES;
1037                skin_proxy->hidden = YES;
1038                skin_proxyip->hidden = YES;
1039                skin_proxyport->hidden = YES;
1040                skin_proxyuser->hidden = YES;
1041                skin_proxypass->hidden = YES;
1042                skin_ftpport->hidden = YES;
1043                skin_userauth->hidden = YES;
1044                skin_proxyauth->hidden = YES;
1045                skin_useproxy->hidden = YES;
1046                skin_usessl->hidden = YES;
1047        }
1048        else if(ostrcmp(node->mode, "2") == 0)
1049        {
1050                tmpstr = ostrcat(tmpstr, _("Add Ftpfs Network Share"), 1, 0);
1051                tmpstr = ostrcat(tmpstr, " (", 1, 0);
1052                tmpstr = ostrcat(tmpstr, strstrip(node->sharename), 1, 0);
1053                tmpstr = ostrcat(tmpstr, ")", 1, 0);
1054                changetitle(net_addshare, tmpstr);
1055                free(tmpstr); tmpstr = NULL;
1056               
1057                skin_protocol->hidden = YES;
1058                skin_rsize->hidden = YES;
1059                skin_wsize->hidden = YES;
1060                skin_options->hidden = YES;
1061                skin_userauth->hidden = NO;
1062                skin_usessl->hidden = NO;
1063                skin_useproxy->hidden = NO;
1064                skin_ftpport->hidden = NO;
1065               
1066                if(ostrcmp(node->userauth, "0") == 0)
1067                {
1068                        skin_username->hidden = YES;
1069                        skin_password->hidden = YES;
1070                }
1071                else
1072                {
1073                        skin_username->hidden = NO;
1074                        skin_password->hidden = NO;
1075                }
1076               
1077                if(ostrcmp(node->usessl, "0") == 0)
1078                        skin_ssl->hidden = YES;
1079                else
1080                        skin_ssl->hidden = NO;
1081
1082                if(ostrcmp(node->useproxy, "0") == 0)
1083                {
1084                        skin_proxy->hidden = YES;
1085                        skin_proxyip->hidden = YES;
1086                        skin_proxyport->hidden = YES;
1087                        skin_proxyuser->hidden = YES;
1088                        skin_proxypass->hidden = YES;
1089                        skin_proxyauth->hidden = YES;
1090                }
1091                else
1092                {
1093                        skin_proxy->hidden = NO;
1094                        skin_proxyip->hidden = NO;
1095                        skin_proxyport->hidden = NO;
1096                        skin_proxyauth->hidden = NO;
1097                        if(ostrcmp(node->proxyauth, "0") == 0)
1098                        {
1099                                skin_proxyuser->hidden = YES;
1100                                skin_proxypass->hidden = YES;
1101                        }
1102                        else
1103                        {
1104                                skin_proxyuser->hidden = NO;
1105                                skin_proxypass->hidden = NO;
1106                        }
1107                }
1108        }
1109}
1110
1111void screennetworkbrowser_addshare(struct networkbrowser* node, int newnode)
1112{
1113        int rcret = 0, save = 0;
1114        char* skinname = "networkbrowser_add_share";
1115        struct skin* net_addshare = getscreen(skinname);
1116        struct skin* listbox = getscreennode(net_addshare, "listbox");
1117        struct skin* tmp = NULL;
1118        struct skin* skin_sharename = getscreennode(net_addshare, "skin_sharename");
1119        struct skin* skin_ip = getscreennode(net_addshare, "skin_ipaddresse");
1120        struct skin* skin_sharedir = getscreennode(net_addshare, "skin_sharedir");
1121        struct skin* skin_username = getscreennode(net_addshare, "skin_username");
1122        struct skin* skin_password = getscreennode(net_addshare, "skin_password");
1123        struct skin* skin_wsize = getscreennode(net_addshare, "skin_wsize");
1124        struct skin* skin_rsize = getscreennode(net_addshare, "skin_rsize");
1125        struct skin* skin_hddreplacement = getscreennode(net_addshare, "skin_hddreplacement");
1126        struct skin* skin_protocol = getscreennode(net_addshare, "skin_protocol");
1127        struct skin* skin_options = getscreennode(net_addshare, "skin_options");
1128        struct skin* skin_ssl = getscreennode(net_addshare, "skin_ssl");
1129        struct skin* skin_proxy = getscreennode(net_addshare, "skin_proxy");
1130        struct skin* skin_proxyip = getscreennode(net_addshare, "skin_proxyip");
1131        struct skin* skin_proxyport = getscreennode(net_addshare, "skin_proxyport");
1132        struct skin* skin_proxyuser = getscreennode(net_addshare, "skin_proxyuser");
1133        struct skin* skin_proxypass = getscreennode(net_addshare, "skin_proxypass");
1134        struct skin* skin_ftpport = getscreennode(net_addshare, "skin_ftpport");
1135        struct skin* skin_useproxy = getscreennode(net_addshare, "skin_useproxy");
1136        struct skin* skin_usessl = getscreennode(net_addshare, "skin_usessl");
1137        struct skin* skin_userauth = getscreennode(net_addshare, "skin_userauth");
1138        struct skin* skin_proxyauth = getscreennode(net_addshare, "skin_proxyauth");
1139        struct skin* skin_mode = getscreennode(net_addshare, "skin_mode");
1140        struct skin* b3 = getscreennode(net_addshare, "b3");
1141        char* tmpstr = NULL;
1142
1143        listbox->aktline = 1;
1144        listbox->aktpage = 1;
1145
1146        if(node == NULL)
1147        {
1148                node = addnetworkbrowser(NULL, 1, NULL);
1149                newnode = 1;
1150        }
1151        if(node == NULL) return;
1152       
1153        if(newnode == 0)
1154                b3->hidden = NO;
1155        else
1156                b3->hidden = YES;
1157
1158        setdefaultnetworkbrowser(node);
1159        debug(70, "after set defaut");
1160        debugnetworkbrowser(node);
1161        debug(70, "--------------------");
1162       
1163        addchoicebox(skin_mode, "0", _("cifs"));
1164        addchoicebox(skin_mode, "1", _("nfs"));
1165        addchoicebox(skin_mode, "2", _("ftpfs"));
1166        setchoiceboxselection(skin_mode, node->mode);
1167
1168        changemask(skin_sharename, "abcdefghijklmnopqrstuvwxyz");
1169        changeinput(skin_sharename, node->sharename);
1170
1171        tmpstr = fixip(node->ip, 0);
1172        changemask(skin_ip, "000.000.000.000");
1173        changeinput(skin_ip, tmpstr);
1174        free(tmpstr); tmpstr = NULL;
1175
1176        changemask(skin_ftpport, "00000");
1177        changeinput(skin_ftpport, node->ftpport);
1178
1179        changemask(skin_sharedir, "abcdefghijklmnopqrstuvwxyz");
1180        changeinput(skin_sharedir, node->sharedir);
1181
1182        addchoicebox(skin_wsize, "32768", "32768");
1183        addchoicebox(skin_wsize, "49152", "49152");
1184        addchoicebox(skin_wsize, "65536", "65536");
1185        addchoicebox(skin_wsize, "4096", "4096");
1186        addchoicebox(skin_wsize, "8192", "8192");
1187        addchoicebox(skin_wsize, "16384", "16384");
1188        setchoiceboxselection(skin_wsize, node->wsize);
1189
1190        addchoicebox(skin_rsize, "32768", "32768");
1191        addchoicebox(skin_rsize, "49152", "49152");
1192        addchoicebox(skin_rsize, "65536", "65536");
1193        addchoicebox(skin_rsize, "4096", "4096");
1194        addchoicebox(skin_rsize, "8192", "8192");
1195        addchoicebox(skin_rsize, "16384", "16384");
1196        setchoiceboxselection(skin_rsize, node->rsize);
1197
1198        addchoicebox(skin_ssl, "ssl_try", _("ssl_try"));
1199        addchoicebox(skin_ssl, "ssl_control", _("ssl_control"));
1200        addchoicebox(skin_ssl, "ssl", _("ssl"));
1201        setchoiceboxselection(skin_ssl, node->ssl);
1202
1203        addchoicebox(skin_proxy, "socks5", _("socks5"));
1204        addchoicebox(skin_proxy, "socks4", _("socks4"));
1205        addchoicebox(skin_proxy, "html", _("html"));
1206        setchoiceboxselection(skin_proxy, node->proxy);
1207
1208        addchoicebox(skin_useproxy, "0", _("no"));
1209        addchoicebox(skin_useproxy, "1", _("yes"));
1210        setchoiceboxselection(skin_useproxy, node->useproxy);
1211
1212        addchoicebox(skin_usessl, "0", _("no"));
1213        addchoicebox(skin_usessl, "1", _("yes"));
1214        setchoiceboxselection(skin_usessl, node->usessl);
1215
1216        addchoicebox(skin_userauth, "0", _("no"));
1217        addchoicebox(skin_userauth, "1", _("yes"));
1218        setchoiceboxselection(skin_userauth, node->userauth);
1219
1220        addchoicebox(skin_proxyauth, "0", _("no"));
1221        addchoicebox(skin_proxyauth, "1", _("yes"));
1222        setchoiceboxselection(skin_proxyauth, node->proxyauth);
1223
1224        tmpstr = fixip(node->proxyip, 0);
1225        changemask(skin_proxyip, "000.000.000.000");
1226        changeinput(skin_proxyip, tmpstr);
1227        free(tmpstr); tmpstr = NULL;
1228
1229        changemask(skin_proxyport, "00000");
1230        changeinput(skin_proxyport, node->proxyport);
1231
1232        changemask(skin_proxyuser, "abcdefghijklmnopqrstuvwxyz");
1233        changeinput(skin_proxyuser, node->proxyuser);
1234
1235        changemask(skin_proxypass, "abcdefghijklmnopqrstuvwxyz");
1236        changeinput(skin_proxypass, node->proxypass);
1237
1238        changemask(skin_username, "abcdefghijklmnopqrstuvwxyz");
1239        changeinput(skin_username, node->username);
1240
1241        changemask(skin_password, "abcdefghijklmnopqrstuvwxyz");
1242        changeinput(skin_password, node->password);
1243
1244        if(newnode == 0 && checkhddreplacement(node->sharename) == 1)
1245                tmpstr = ostrcat(tmpstr, "1", 1, 0);
1246        addchoicebox(skin_hddreplacement, "0", _("no"));
1247        addchoicebox(skin_hddreplacement, "1", _("yes"));
1248        setchoiceboxselection(skin_hddreplacement, tmpstr);
1249        free(tmpstr); tmpstr = NULL;
1250
1251        addchoicebox(skin_protocol, "udp", _("udp"));
1252        addchoicebox(skin_protocol, "tcp", _("tcp"));
1253        setchoiceboxselection(skin_protocol, node->protocol);
1254
1255        addchoicebox(skin_options, "rw", _("rw"));
1256        addchoicebox(skin_options, "ro", _("ro"));
1257        setchoiceboxselection(skin_options, node->options);
1258
1259        changemodenetworkbrowser(node, net_addshare, skin_username, skin_password, skin_protocol, skin_rsize, skin_wsize, skin_options, skin_ssl, skin_proxy, skin_proxyip, skin_proxyport, skin_proxyuser, skin_proxypass, skin_ftpport, skin_userauth, skin_proxyauth, skin_useproxy, skin_usessl);
1260
1261        addscreenrc(net_addshare, listbox);
1262        drawscreen(net_addshare, 0);
1263
1264        tmp = listbox->select;
1265        while(1)
1266        {
1267                addscreenrc(net_addshare, tmp);
1268                rcret = waitrc(net_addshare, 0, 0);
1269                tmp = listbox->select;
1270
1271                free(node->mode); node->mode = ostrcat(skin_mode->ret, NULL, 0, 0);
1272                free(node->sharename); node->sharename = ostrcat(skin_sharename->ret, NULL, 0, 0);
1273                free(node->ip); node->ip = ostrcat(skin_ip->ret, NULL, 0, 0);
1274                free(node->ftpport); node->ftpport = ostrcat(skin_ftpport->ret, NULL, 0, 0);
1275                free(node->sharedir); node->sharedir = ostrcat(skin_sharedir->ret, NULL, 0, 0);
1276                free(node->wsize); node->wsize = ostrcat(skin_wsize->ret, NULL, 0, 0);
1277                free(node->rsize); node->rsize = ostrcat(skin_rsize->ret, NULL, 0, 0);
1278                free(node->ssl); node->ssl = ostrcat(skin_ssl->ret, NULL, 0, 0);
1279                free(node->proxy); node->proxy = ostrcat(skin_proxy->ret, NULL, 0, 0);
1280                free(node->useproxy); node->useproxy = ostrcat(skin_useproxy->ret, NULL, 0, 0);
1281                free(node->usessl); node->usessl = ostrcat(skin_usessl->ret, NULL, 0, 0);
1282                free(node->userauth); node->userauth = ostrcat(skin_userauth->ret, NULL, 0, 0);
1283                free(node->proxyauth); node->proxyauth = ostrcat(skin_proxyauth->ret, NULL, 0, 0);
1284                free(node->proxyip); node->proxyip = ostrcat(skin_proxyip->ret, NULL, 0, 0);
1285                free(node->proxyport); node->proxyport = ostrcat(skin_proxyport->ret, NULL, 0, 0);
1286                free(node->proxyuser); node->proxyuser = ostrcat(skin_proxyuser->ret, NULL, 0, 0);
1287                free(node->proxypass); node->proxypass = ostrcat(skin_proxypass->ret, NULL, 0, 0);
1288                free(node->username); node->username = ostrcat(skin_username->ret, NULL, 0, 0);
1289                free(node->password); node->password = ostrcat(skin_password->ret, NULL, 0, 0);
1290                free(node->protocol); node->protocol = ostrcat(skin_protocol->ret, NULL, 0, 0);
1291                free(node->options); node->options = ostrcat(skin_options->ret, NULL, 0, 0);
1292
1293                if(listbox->select != NULL)
1294                {
1295                        changemodenetworkbrowser(node, net_addshare, skin_username, skin_password, skin_protocol, skin_rsize, skin_wsize, skin_options, skin_ssl, skin_proxy, skin_proxyip, skin_proxyport, skin_proxyuser, skin_proxypass, skin_ftpport, skin_userauth, skin_proxyauth, skin_useproxy, skin_usessl);
1296                        drawscreen(net_addshare, 0);
1297                }
1298
1299                if(rcret == getrcconfigint("rcexit", NULL)) break;
1300               
1301                if(newnode == 0 && rcret == getrcconfigint("rcred", NULL) && checknetworkbrowserexist(node) == 0)
1302                {
1303                        struct networkbrowser* newshare = addnetworkbrowser(NULL, 1, NULL);
1304                        if(newshare != NULL)
1305                        {
1306                                tmpstr = textinput(NULL, "SHARENAME");
1307                                if(tmpstr != NULL && strlen(tmpstr) != 0)
1308                                {
1309                                        //set to default if field is empty
1310                                        setdefaultnetworkbrowser(node);
1311                                        copynetworkbrowser(node, newshare, tmpstr);
1312                                        newnode = 1;
1313                                        node = newshare;
1314                                        changeinput(skin_sharename, node->sharename);
1315                                        b3->hidden = YES;
1316                                        changemodenetworkbrowser(node, net_addshare, skin_username, skin_password, skin_protocol, skin_rsize, skin_wsize, skin_options, skin_ssl, skin_proxy, skin_proxyip, skin_proxyport, skin_proxyuser, skin_proxypass, skin_ftpport, skin_userauth, skin_proxyauth, skin_useproxy, skin_usessl);
1317                                }
1318                                else
1319                                        delnetworkbrowser(newshare);
1320                                free(tmpstr); tmpstr = NULL;
1321                                drawscreen(net_addshare, 0);
1322                        }
1323                        continue;
1324                }
1325
1326                if(rcret == getrcconfigint("rcok", NULL))
1327                {
1328                        if(node->sharename == NULL || strlen(node->sharename) == 0)
1329                        {
1330                                textbox(_("Message"), _("Sharename can't be empty!"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 800, 200, 0, 0);
1331                                drawscreen(net_addshare, 0);
1332                                continue;
1333                        }
1334
1335                        if(checknetworkbrowserexist(node) == 1)
1336                        {
1337                                textbox(_("Message"), _("A mount entry with this name already exists!"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 800, 200, 0, 0);
1338                                drawscreen(net_addshare, 0);
1339                                continue;
1340                        }
1341
1342                        if(textbox(_("Message"), _("Are you sure you want to save this network mount?"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 800, 200, 0, 0) == 1)
1343                        {
1344                                //set to default if field is empty
1345                                setdefaultnetworkbrowser(node);
1346                                if(ostrcmp(skin_hddreplacement->ret, "1") == 0)
1347                                        addhddreplacement(node->sharename);
1348                                else if(checkhddreplacement(node->sharename) == 1)
1349                                        delhddreplacement();
1350
1351                                savenetworkbrowser("/var/etc/automount/auto.misc");
1352                                save = 1;
1353                        }
1354                        break;
1355                }
1356        }
1357
1358        if(newnode == 1 && save == 0) delnetworkbrowser(node);
1359        delownerrc(net_addshare);
1360        clearscreen(net_addshare);
1361}
1362
1363void screennetworkbrowser()
1364{
1365        int rcret = 0;
1366        struct networkbrowser* node = NULL;
1367        struct menulist* mlist = NULL, *mbox = NULL;
1368        char* tmpstr = NULL, *tmppic = NULL;
1369       
1370        status.hangtime = 99999;
1371        system("cp -a /mnt/automount/* /var/etc/automount");
1372
1373start:
1374        freenetworkbrowser(); networkbrowser = NULL;
1375        readnetworkbrowser("/var/etc/automount/auto.misc", 0);
1376       
1377        node = networkbrowser;
1378        while(node != NULL)
1379        {
1380                if(ostrcmp(node->mode, "0") == 0)
1381    {
1382                        tmpstr = ostrcat(tmpstr, "(cifs) ", 1, 0);
1383      tmppic = ostrcat("netbrowser_cifs.png", NULL, 0, 0);
1384    }
1385                else if(ostrcmp(node->mode, "1") == 0)
1386    {
1387                        tmpstr = ostrcat(tmpstr, "(nfs) ", 1, 0);
1388      tmppic = ostrcat("netbrowser_nfs.png", NULL, 0, 0);
1389    }
1390                else if(ostrcmp(node->mode, "2") == 0)
1391    {
1392                        tmpstr = ostrcat(tmpstr, "(ftpfs) ", 1, 0);
1393      tmppic = ostrcat("netbrowser_ftpfs.png", NULL, 0, 0);
1394    }
1395
1396                tmpstr = ostrcat(tmpstr, node->sharename, 1, 0);
1397                tmpstr = ostrcat(tmpstr, " (", 1, 0);
1398                tmpstr = ostrcat(tmpstr, node->ip, 1, 0);
1399                tmpstr = ostrcat(tmpstr, ":", 1, 0);
1400                tmpstr = ostrcat(tmpstr, node->ftpport, 1, 0);
1401                tmpstr = ostrcat(tmpstr, "/", 1, 0);
1402                tmpstr = ostrcat(tmpstr, node->sharedir, 1, 0);
1403                tmpstr = ostrcat(tmpstr, ")", 1, 0);
1404   
1405                struct menulist* tmpmlist = addmenulist(&mlist, tmpstr, NULL, tmppic, 0, 0);
1406                if(tmpmlist != NULL) tmpmlist->param = (char*)node;
1407                free(tmpstr); tmpstr = NULL;
1408    free(tmppic); tmppic = NULL;
1409                node = node->next;
1410        }
1411       
1412        mbox = menulistboxext(mlist, "networkbrowser", "Networkbrowser - show Shares", "%pluginpath%/networkbrowser/skin/", NULL, 1, &rcret, 0);
1413
1414        if(rcret == getrcconfigint("rcred", NULL))
1415        {
1416                screennetworkbrowser_addshare(NULL, 1);
1417                freemenulist(mlist, 0); mlist = NULL;
1418                freenetworkbrowser(); networkbrowser = NULL;
1419                goto start;
1420        }
1421
1422        if(rcret == getrcconfigint("rcblue", NULL))
1423        {
1424                screennetworkbrowser_scan();
1425                freemenulist(mlist, 0); mlist = NULL;
1426                freenetworkbrowser(); networkbrowser = NULL;
1427                goto start;
1428        }
1429       
1430        if(mbox != NULL)
1431        {
1432                if(rcret == getrcconfigint("rcok", NULL) || rcret == getrcconfigint("rcgreen", NULL))
1433                        screennetworkbrowser_addshare((struct networkbrowser*)mbox->param, 0);
1434                if(rcret == getrcconfigint("rcyellow", NULL))
1435                {
1436                        if(textbox(_("Message"), _("Are you sure you want remove this share?"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 800, 200, 0, 0) == 1)
1437                        {
1438                                struct networkbrowser* delnode = (struct networkbrowser*)mbox->param;
1439                                if(delnode != NULL)
1440                                {
1441                                        if(checkhddreplacement(delnode->sharename) == 1)
1442                                                delhddreplacement();
1443
1444                                        delnetworkbrowser(delnode);
1445                                        savenetworkbrowser("/var/etc/automount/auto.misc");
1446                                }
1447                        }
1448                }
1449                freemenulist(mlist, 0); mlist = NULL;
1450                freenetworkbrowser(); networkbrowser = NULL;
1451                goto start;
1452        }
1453
1454        freemenulist(mlist, 0); mlist = NULL;
1455        freenetworkbrowser();
1456
1457        status.hangtime = getconfigint("hangtime", NULL);
1458}
1459
1460#endif
Note: See TracBrowser for help on using the repository browser.