source: titan/plugins/tithek/tithek_global.h @ 40406

Last change on this file since 40406 was 40406, checked in by obi, 6 years ago

test

File size: 37.0 KB
Line 
1#ifndef TITHEK_GLOBAL_H
2#define TITHEK_GLOBAL
3
4#include <curl/curl.h>
5
6char* hoster(char* url)
7{
8        debug(99, "url: %s", url);
9        char* streamurl = NULL, *tmplink = NULL;
10        struct skin* load = getscreen("loading");
11
12        tmplink = ostrcat(url, NULL, 0, 0);
13        string_tolower(tmplink);
14
15        char* cmd = NULL;
16        cmd = ostrcat("/tmp/localhoster/hoster.sh get \"", url, 0, 0);
17        cmd = ostrcat(cmd, "\"", 1, 0);
18        streamurl = command(cmd);
19        streamurl = string_newline(streamurl);
20        debug(99, "Streamurl1: %s", streamurl);
21
22        free(cmd), cmd = NULL;
23
24        if(streamurl == NULL)
25        {
26                if(ostrstr(tmplink, "streamcloud") != NULL)
27                        streamurl = streamcloud(url);
28/*
29                if(ostrstr(tmplink, "sockshare") != NULL)
30                        streamurl = putlocker(url);
31                else if(ostrstr(tmplink, "putlocker") != NULL)
32                        streamurl = firedrive(url);
33                else if(ostrstr(tmplink, "filenuke") != NULL)
34                        streamurl = filenuke(url);
35                else if(ostrstr(tmplink, "streamcloud") != NULL)
36                        streamurl = streamcloud(url);
37                else if(ostrstr(tmplink, "vidstream") != NULL)
38                        streamurl = vidstream(url);
39                else if(ostrstr(tmplink, "flashx_disable") != NULL)
40                        streamurl = flashx(url);
41                else if(ostrstr(tmplink, "xvidstage") != NULL)
42                        streamurl = xvidstage(url);
43                else if(ostrstr(tmplink, "nowvideo") != NULL)
44                        streamurl = nowvideo(url);
45                else if(ostrstr(tmplink, "movshare") != NULL || ostrstr(tmplink, "wholecloud") != NULL)
46                        streamurl = movshare(url);
47                else if(ostrstr(tmplink, "movreel") != NULL)
48                        streamurl = movreel(url);
49                else if(ostrstr(tmplink, "novamov") != NULL || ostrstr(tmplink, "auroravid") != NULL)
50                        streamurl = novamov(url);
51                else if(ostrstr(tmplink, "divxstage") != NULL || ostrstr(tmplink, "cloudtime") != NULL)
52                        streamurl = divxstage(url);
53                else if(ostrstr(tmplink, "primeshare") != NULL)
54                        streamurl = primeshare(url);
55                else if(ostrstr(tmplink, "faststream") != NULL || ostrstr(tmplink, "fastvideo") != NULL)
56                        streamurl = faststream(url);
57                else if(ostrstr(tmplink, "played") != NULL)
58                        streamurl = played(url);
59                else if(ostrstr(tmplink, "videoweed") != NULL)
60                        streamurl = videoweed(url);
61                else if(ostrstr(tmplink, "firedrive") != NULL)
62                        streamurl = firedrive(url);
63                else if(ostrstr(tmplink, "shared") != NULL)
64                        streamurl = shared(url);
65                else if(ostrstr(tmplink, "thefile") != NULL)
66                        streamurl = thefile(url);
67                else if(ostrstr(tmplink, "youtu_disable") != NULL)
68                        streamurl = youtube(url);
69                else if(ostrstr(tmplink, "myvideo") != NULL)
70                        streamurl = myvideo(url);
71                else if(ostrstr(tmplink, "promptfile") != NULL)
72                        streamurl = promptfile(url);
73                else if(ostrstr(tmplink, "letwatch") != NULL || ostrstr(tmplink, "realvid") != NULL)
74                        streamurl = letwatch(url);
75                else if(ostrstr(tmplink, "vidbull") != NULL)
76                        streamurl = vidbull(url);
77                else if(ostrstr(tmplink, "vodlocker") != NULL)
78                        streamurl = vodlocker(url);
79                else if(ostrstr(tmplink, "vidto") != NULL)
80                        streamurl = vidto(url);
81                else if(ostrstr(tmplink, "amazon") != NULL)
82                        streamurl = amazon(url);
83                else if(ostrstr(tmplink, "thevideo") != NULL)
84                        streamurl = thevideo(url);
85                else if(ostrstr(tmplink, "mightyupload") != NULL)
86                        streamurl = mightyupload(url);
87                else if(ostrstr(tmplink, "cloudzilla") != NULL)
88                        streamurl = cloudzilla(url);
89                else if(ostrstr(tmplink, "vivo") != NULL)
90                        streamurl = vivo(url);
91                else if(ostrstr(tmplink, "streamlive") != NULL)
92                        streamurl = streamlive(url, -1);
93                else if(ostrstr(tmplink, "cricfree") != NULL)
94                        streamurl = cricfree(url, 0);
95                else if(ostrstr(tmplink, "zerocast") != NULL)
96                        streamurl = zerocast(url, 0);
97                else if(ostrstr(tmplink, "p2pcast") != NULL)
98                        streamurl = p2pcast(url);
99                else if(ostrstr(tmplink, "vidzi") != NULL)
100                        streamurl = vidzi(url);
101                else if(ostrstr(tmplink, "vid.ag") != NULL)
102                        streamurl = vidag(url);
103*/
104                debug(99, "Streamurl2: %s", streamurl);
105        }
106
107
108        if(streamurl == NULL)
109        {
110                if(!file_exist("/tmp/localhoster"))
111                        localparser_init("http://atemio.dyndns.tv/mediathek/mainmenu.list", "mainmenu.local.list", 1);
112
113                drawscreen(load, 0, 0);
114
115                cmd = ostrcat("/tmp/localhoster/hoster.sh youtube_dl \"", url, 0, 0);
116                cmd = ostrcat(cmd, "\"", 1, 0);
117                streamurl = command(cmd);
118                streamurl = string_newline(streamurl);
119                debug(99, "Streamurl3: %s", streamurl);
120       
121                free(cmd), cmd = NULL;
122
123                clearscreen(load);
124
125////////////
126                if(streamurl == NULL)
127                {
128                        if(ostrstr(tmplink, "sockshare") != NULL)
129                                streamurl = putlocker(url);
130                        else if(ostrstr(tmplink, "putlocker") != NULL)
131                                streamurl = firedrive(url);
132                        else if(ostrstr(tmplink, "filenuke") != NULL)
133                                streamurl = filenuke(url);
134                        else if(ostrstr(tmplink, "streamcloud") != NULL)
135                                streamurl = streamcloud(url);
136                        else if(ostrstr(tmplink, "vidstream") != NULL)
137                                streamurl = vidstream(url);
138                        else if(ostrstr(tmplink, "flashx_disable") != NULL)
139                                streamurl = flashx(url);
140                        else if(ostrstr(tmplink, "xvidstage") != NULL)
141                                streamurl = xvidstage(url);
142                        else if(ostrstr(tmplink, "nowvideo") != NULL)
143                                streamurl = nowvideo(url);
144                        else if(ostrstr(tmplink, "movshare") != NULL || ostrstr(tmplink, "wholecloud") != NULL)
145                                streamurl = movshare(url);
146                        else if(ostrstr(tmplink, "movreel") != NULL)
147                                streamurl = movreel(url);
148                        else if(ostrstr(tmplink, "novamov") != NULL || ostrstr(tmplink, "auroravid") != NULL)
149                                streamurl = novamov(url);
150                        else if(ostrstr(tmplink, "divxstage") != NULL || ostrstr(tmplink, "cloudtime") != NULL)
151                                streamurl = divxstage(url);
152                        else if(ostrstr(tmplink, "primeshare") != NULL)
153                                streamurl = primeshare(url);
154                        else if(ostrstr(tmplink, "faststream") != NULL || ostrstr(tmplink, "fastvideo") != NULL)
155                                streamurl = faststream(url);
156                        else if(ostrstr(tmplink, "played") != NULL)
157                                streamurl = played(url);
158                        else if(ostrstr(tmplink, "videoweed") != NULL)
159                                streamurl = videoweed(url);
160                        else if(ostrstr(tmplink, "firedrive") != NULL)
161                                streamurl = firedrive(url);
162                        else if(ostrstr(tmplink, "shared") != NULL)
163                                streamurl = shared(url);
164                        else if(ostrstr(tmplink, "thefile") != NULL)
165                                streamurl = thefile(url);
166                        else if(ostrstr(tmplink, "youtu_disable") != NULL)
167                                streamurl = youtube(url);
168                        else if(ostrstr(tmplink, "myvideo") != NULL)
169                                streamurl = myvideo(url);
170                        else if(ostrstr(tmplink, "promptfile") != NULL)
171                                streamurl = promptfile(url);
172                        else if(ostrstr(tmplink, "letwatch") != NULL || ostrstr(tmplink, "realvid") != NULL)
173                                streamurl = letwatch(url);
174                        else if(ostrstr(tmplink, "vidbull") != NULL)
175                                streamurl = vidbull(url);
176                        else if(ostrstr(tmplink, "vodlocker") != NULL)
177                                streamurl = vodlocker(url);
178                        else if(ostrstr(tmplink, "vidto") != NULL)
179                                streamurl = vidto(url);
180                        else if(ostrstr(tmplink, "amazon") != NULL)
181                                streamurl = amazon(url);
182                        else if(ostrstr(tmplink, "thevideo") != NULL)
183                                streamurl = thevideo(url);
184                        else if(ostrstr(tmplink, "mightyupload") != NULL)
185                                streamurl = mightyupload(url);
186                        else if(ostrstr(tmplink, "cloudzilla") != NULL)
187                                streamurl = cloudzilla(url);
188                        else if(ostrstr(tmplink, "vivo") != NULL)
189                                streamurl = vivo(url);
190                        else if(ostrstr(tmplink, "streamlive") != NULL)
191                                streamurl = streamlive(url, -1);
192                        else if(ostrstr(tmplink, "cricfree") != NULL)
193                                streamurl = cricfree(url, 0);
194                        else if(ostrstr(tmplink, "zerocast") != NULL)
195                                streamurl = zerocast(url, 0);
196                        else if(ostrstr(tmplink, "p2pcast") != NULL)
197                                streamurl = p2pcast(url);
198                        else if(ostrstr(tmplink, "vidzi") != NULL)
199                                streamurl = vidzi(url);
200                        else if(ostrstr(tmplink, "vid.ag") != NULL)
201                                streamurl = vidag(url);
202                        debug(99, "Streamurl4: %s", streamurl);
203                }
204////////////
205
206                if(streamurl == NULL)
207                        textbox(_("Message"), _("The hoster is not yet supported !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 5, 0);
208
209        }
210
211        debug(99, "Streamurl1: %s", streamurl);
212
213        streamurl = string_replace_all("amp;", "", streamurl, 1);
214        debug(99, "Streamurl4: %s", streamurl);
215
216        free(tmplink), tmplink = NULL;
217/*
218        if(ostrncmp("http", streamurl, 4) && ostrncmp("rtmp", streamurl, 4) && ostrncmp("mms", streamurl, 3) && ostrncmp("rtsp", streamurl, 4))
219        {
220                printf("Streamurl3: not http*|rtmp*|mms*|rtsp* Streamurl: %s\n", streamurl);
221                free(streamurl),streamurl = NULL;
222        }
223*/
224        return streamurl;
225}
226
227struct MemoryStruct {
228  char *memory;
229  size_t size;
230};
231
232static size_t
233WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp)
234{
235  size_t realsize = size * nmemb;
236  struct MemoryStruct *mem = (struct MemoryStruct *)userp;
237 
238  mem->memory = realloc(mem->memory, mem->size + realsize + 1);
239  if(mem->memory == NULL) {
240    /* out of memory! */
241    printf("not enough memory (realloc returned NULL)\n");
242    return 0;
243  }
244 
245  memcpy(&(mem->memory[mem->size]), contents, realsize);
246  mem->size += realsize;
247  mem->memory[mem->size] = 0;
248 
249  return realsize;
250}
251
252// flag = 0 (without header in output)
253// flag = 1 (with header in output)
254char* gethttps(char* url, char* localfile, char* data, char* user, char* pass, char* referer, int flag)
255{
256        debug(99, "url: %s", url);
257
258        int debuglevel = getconfigint("debuglevel", NULL);
259
260        char* tmpstr = NULL;
261    FILE *fp;
262
263        CURL *curl_handle;
264        CURLcode res;
265       
266        struct MemoryStruct chunk;
267       
268        chunk.memory = malloc(1);  /* will be grown as needed by the realloc above */
269        chunk.size = 0;    /* no data at this point */
270       
271        curl_global_init(CURL_GLOBAL_ALL);
272
273        /* init the curl session */
274        curl_handle = curl_easy_init();
275        if(curl_handle)
276        {
277            if(localfile != NULL)
278                    fp = fopen(localfile,"wb");
279               
280                /* specify URL to get */
281                curl_easy_setopt(curl_handle, CURLOPT_URL, url);
282
283                if(user != NULL && pass != NULL)
284                {
285                        curl_easy_setopt(curl_handle, CURLOPT_USERNAME, user);
286                        curl_easy_setopt(curl_handle, CURLOPT_PASSWORD, pass);
287                        curl_easy_setopt(curl_handle, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
288                }
289                if(data == NULL)
290                        curl_easy_setopt(curl_handle, CURLOPT_HTTPGET, 1L);
291                else
292                {
293                        curl_easy_setopt(curl_handle, CURLOPT_POST, 1);
294                        curl_easy_setopt(curl_handle, CURLOPT_POSTFIELDS, data);
295
296                        /* example.com is redirected, so we tell libcurl to send POST on 301, 302 and
297                     303 HTTP response codes */
298                        curl_easy_setopt(curl_handle, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL);
299                }
300                if(flag == 1)
301                        curl_easy_setopt(curl_handle, CURLOPT_HEADER, 1L);
302                curl_easy_setopt(curl_handle, CURLOPT_CONNECTTIMEOUT, 5);
303                curl_easy_setopt(curl_handle, CURLOPT_TIMEOUT, 3);
304//              curl_easy_setopt(curl_handle, CURLOPT_RETURNTRANSFER, 1);
305
306                /* send all data to this function  */
307            if(localfile == NULL)
308                        curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
309                else
310                        curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, NULL);
311
312                /* we pass our 'chunk' struct to the callback function */
313            if(localfile == NULL)
314                        curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)&chunk);
315                else
316                        curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, fp);
317
318                /* some servers don't like requests that are made without a user-agent field, so we provide one */
319//              curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "libcurl-agent/1.0");
320                curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.7.3000 Chrome/30.0.1599.101 Safari/537.36");
321
322                // This is occassionally required to stop CURL from verifying the peers certificate.
323                // CURLOPT_SSL_VERIFYHOST may also need to be TRUE or FALSE if
324                // CURLOPT_SSL_VERIFYPEER is disabled (it defaults to 2 - check the existence of a
325                // common name and also verify that it matches the hostname provided)
326#ifdef MIPSEL
327                curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYPEER, 1L);
328#else
329                curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYPEER, 0L);
330#endif
331
332                curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYHOST, 0L);
333                if(debuglevel == 99)
334                        curl_easy_setopt(curl_handle, CURLOPT_VERBOSE, 1);
335                curl_easy_setopt(curl_handle, CURLOPT_COOKIEFILE, "/mnt/network/cookies");
336                curl_easy_setopt(curl_handle, CURLOPT_COOKIEJAR, "/mnt/network/cookies");
337                /* enable redirect following */
338                curl_easy_setopt(curl_handle, CURLOPT_FOLLOWLOCATION, 1L);
339                /* allow three redirects */
340                curl_easy_setopt(curl_handle, CURLOPT_MAXREDIRS, 3L);
341
342                /* enable all supported built-in compressions */
343                curl_easy_setopt(curl_handle, CURLOPT_ACCEPT_ENCODING, "");
344 
345                if(referer == NULL)
346                        curl_easy_setopt(curl_handle, CURLOPT_AUTOREFERER, 1L);
347                else
348                        curl_easy_setopt(curl_handle, CURLOPT_REFERER, referer);
349
350                /* get it! */
351                res = curl_easy_perform(curl_handle);
352                /* check for errors */
353                if(res != CURLE_OK)
354                {
355                        err("failed: %s", curl_easy_strerror(res));
356                        printf("curl error\n");
357                }
358                else
359                {
360                        /*
361                         * Now, our chunk.memory points to a memory block that is chunk.size
362                         * bytes big and contains the remote file.
363                         *
364                         * Do something nice with it!
365                         */
366                        printf("%lu bytes retrieved\n", (long)chunk.size);
367                }
368               
369                /* cleanup curl stuff */
370                curl_easy_cleanup(curl_handle);
371                if(localfile != NULL)
372                        fclose(fp);
373        }
374
375        tmpstr = ostrcat(chunk.memory, NULL, 0, 0);
376        free(chunk.memory);
377        /* we're done with libcurl, so clean it up */
378        curl_global_cleanup();
379
380        if(localfile != NULL)
381                free(tmpstr), tmpstr = NULL;
382        return tmpstr;
383}
384
385char* string_decode3(char* input)
386{
387        if(input == NULL) return input;
388
389        input = string_replace_all("&#196;", "Ä", input, 1);
390        input = string_replace_all("&#228;", "ä", input, 1);
391        input = string_replace_all("&#201;", "É", input, 1);
392        input = string_replace_all("&#233;", "é", input, 1);
393        input = string_replace_all("&#214;", "Ö", input, 1);
394        input = string_replace_all("&#246;", "ö", input, 1);
395        input = string_replace_all("&#220;", "Ü", input, 1);
396        input = string_replace_all("&#252;", "ü", input, 1);
397        input = string_replace_all("&#223;", "ß", input, 1);
398        input = string_replace_all("&#38;", "&", input, 1);
399
400        input = string_replace_all("&Auml;", "Ä", input, 1);
401        input = string_replace_all("&auml;", "ä", input, 1);
402        input = string_replace_all("&Eacute;", "É", input, 1);
403        input = string_replace_all("&eacute;", "é", input, 1);
404        input = string_replace_all("&Ouml;", "Ö", input, 1);
405        input = string_replace_all("&ouml;", "ö", input, 1);
406        input = string_replace_all("&Uuml;", "Ü", input, 1);
407        input = string_replace_all("&uuml;", "ü", input, 1);
408        input = string_replace_all("&szlig;", "ß", input, 1);
409        input = string_replace_all("&amp;", "&", input, 1);
410
411        return input;
412}
413
414char* getfilekey(char* w, char* i, char* s, char* e)
415{
416        char* ret = NULL;
417
418        if(w == NULL || i == NULL || s == NULL || e == NULL)
419                return NULL;
420
421        int a = 0, b = 0, c = 0;
422        int a1 = 0, b1 = 0;
423
424        int lw = strlen(w);
425        int li = strlen(i);
426        int ls = strlen(s);
427       
428        if(lw < 5 || li < 5 || ls < 5)
429                return NULL;
430
431        char ca[lw + li + ls - 14];
432        char cb[16];
433
434        ca[lw + li + ls - 15] = '\0';
435        cb[15] = '\0';
436       
437        while(1)
438        {
439                if(a < 5)
440                {
441                        cb[b1] = w[a];
442                        b1++;
443                }
444                else if(a < lw)
445                {
446                        ca[a1] = w[a];
447                        a1++;
448                }
449                a++;
450               
451                if(b < 5)
452                {
453                        cb[b1] = i[b];
454                        b1++;
455                }
456                else if(b < li)
457                {
458                        ca[a1] = i[b];
459                        a1++;
460                }
461                b++;
462               
463                if(c < 5)
464                {
465                        cb[b1] = s[c];
466                        b1++;
467                }
468                else if(c < ls)
469                {
470                        ca[a1] = s[c];
471                        a1++;
472                }
473                c++;
474               
475                if(lw + li + ls == a1 + b1)
476                        break;
477        }
478
479        b = 0;
480        int d = 0;
481        char cc[a1 / 2 + 1];
482        char casub[3] = {'\0'};
483        cc[a1 / 2] = '\0';
484       
485        for(a = 0; a < a1; a += 2)
486        {
487                int c = -1;
488               
489                if(cb[b] % 2) c = 1;
490
491                casub[0] = ca[a];
492                casub[1] = ca[a + 1];
493
494                cc[d] = strtol(casub, '\0', 36) - c;
495                b++; d++;
496                if(b >= b1) b = 0;
497        }
498
499        char* r1 = NULL, *r2 = NULL, *r3 = NULL, *r4 = NULL;
500        char* pos = ostrstr(cc, ");}('");
501        if(pos != NULL)
502        {
503                r1 = string_resub(");}('", "'", pos, 0);
504                pos = ostrstr(pos + 5, ",'");
505                if(pos != NULL)
506                {
507                        r2 = string_resub(",'", "'", pos, 0);
508                        pos = ostrstr(pos + 2, ",'");
509                        if(pos != NULL)
510                        {
511                                r3 = string_resub(",'", "'", pos, 0);
512                                pos = ostrstr(pos + 2, ",'");
513                                if(pos != NULL)
514                                {
515                                        r4 = string_resub(",'", "'", pos, 0);
516                                        ret = getfilekey(r1, r2, r3, r4);
517                                }
518                        }
519                }
520        }
521        else
522        {
523                ret = string_resub("ll=\"", "\"", cc, 0);
524                if(ret == NULL)
525                        ret = string_resub("filekey=\"", "\"", cc, 0); 
526        }
527
528  free(r1); r1 = NULL;
529        free(r2); r2 = NULL;
530        free(r3); r3 = NULL;
531        free(r4); r4 = NULL;
532                                       
533        return ret;
534}
535
536int screenlistbox(struct skin* grid, struct skin* listbox,struct skin* countlabel, char* title, char* titheklink, int* pagecount, int* tithekexit, int* oaktpage, int* oaktline, int* ogridcol, int flag, int cflag)
537{
538        char* tmpstr = NULL, *tmpstr1 = NULL, *tmpstr2 = NULL;
539
540        *oaktpage = listbox->aktpage;
541        *oaktline = listbox->aktline;
542        *ogridcol = listbox->gridcol;
543        tmpstr = ostrcat(((struct tithek*)listbox->select->handle)->link, NULL, 0, 0);
544
545        if(title != NULL)
546                tmpstr1 = ostrcat(title, " - ", 0, 0);
547        else
548                tmpstr1 = ostrcat(((struct tithek*)listbox->select->handle)->menutitle, " - ", 0, 0);   
549       
550        tmpstr2 = ostrcat(tmpstr1, ((struct tithek*)listbox->select->handle)->title, 1, 0);
551        screentithekplay(tmpstr, tmpstr2, flag);
552        free(tmpstr); tmpstr = NULL;
553        free(tmpstr2); tmpstr2 = NULL;
554
555        *pagecount = createtithekplay(titheklink, grid, listbox, countlabel, cflag);
556//      if(pagecount == 0 || tithekexit == 1) break;
557        if(*pagecount == 0 || *tithekexit == 1) return 0;
558       
559        listbox->aktpage = *oaktpage;
560        listbox->aktline = *oaktline;
561        listbox->gridcol = *ogridcol;
562        addscreenrc(grid, listbox);
563
564        return 1;
565}
566
567int all_search_local(struct skin* grid, struct skin* listbox, struct skin* countlabel, struct skin* load, char* link, char* title, char* searchstr, int flag)
568{
569        char* tmpstr = NULL, *tmpstr1 = NULL, *line = NULL, *menu = NULL, *search = NULL;
570        int ret = 1, count = 0, i = 0;
571
572        if(listbox == NULL || listbox->select == NULL || listbox->select->handle == NULL)
573                return ret;
574
575        if(searchstr == NULL)
576                search = textinputhist(_("Search"), " ", "searchhist");
577        else
578                search = textinputhist(_("Search"), searchstr, "searchhist");
579
580        if(search != NULL)
581        {
582                drawscreen(load, 0, 0);
583
584                strstrip(search);
585                string_tolower(search);
586
587                tmpstr = gethttp("atemio.dyndns.tv", "/mediathek/all/all-sorted.list", 80, NULL, HTTPAUTH, 5000, NULL, 0);
588
589                struct splitstr* ret1 = NULL;
590                ret1 = strsplit(tmpstr, "\n", &count);
591
592                if(ret1 != NULL)
593                {
594                        int max = count;
595                        for(i = 0; i < max; i++)
596                        {
597                       
598                                tmpstr1 = ostrcat(ret1[i].part, NULL, 0, 0);
599                                tmpstr1 = stringreplacecharonce(tmpstr1, '#', '\0');
600                                string_tolower(tmpstr1);
601
602                                if(ostrstr(tmpstr1, search) != NULL)
603                                {
604                                        printf("found: %s\n", ret1[i].part);
605                                        int rcret = waitrc(NULL, 10, 0);
606                                        if(rcret == getrcconfigint("rcexit", NULL)) break;
607
608                                        line = ostrcat(line, ret1[i].part, 1, 0);
609                                        line = ostrcat(line, "\n", 0, 0);
610                                }
611                                free(tmpstr1), tmpstr1 = NULL;                         
612                        }
613                        free(ret1), ret1 = NULL;
614
615                        if(line != NULL)
616                        {
617                                line = string_replace_all("http://atemio.dyndns.tv/", "http://imageshack.us/md/up/grd/", line, 1);
618                                menu = ostrcat("/tmp/tithek/all.search.list", NULL, 0, 0);
619                                writesys(menu, line, 0);
620                                struct tithek* tnode = (struct tithek*)listbox->select->handle;
621                                createtithek(tnode, tnode->title, menu, tnode->pic, tnode->localname, tnode->menutitle, tnode->flag);
622                                ret = 0;
623                        }
624                }
625                free(tmpstr), tmpstr = NULL;
626        }
627        free(search), search = NULL;
628        return ret;
629}
630
631char* jsunpack(char* input)
632{
633        int debuglevel = getconfigint("debuglevel", NULL);
634
635        if(input == NULL) return input;
636
637        char* b36code = NULL, *search = NULL, *charlist = NULL, *base = NULL, *tmpstr2 = NULL, *tmpstr3 = NULL, *tmpstr = NULL, *packed = NULL;
638
639        unlink("/tmp/jsunpack1_packed");
640        unlink("/tmp/jsunpack2_tmpstr");
641        unlink("/tmp/jsunpack3_b36code");
642        unlink("/tmp/jsunpack4_tmpstr_last");
643
644//eval(function(p,a,c,k,e,d){while(c--)if(k[c])p=p.replace(new RegExp('\\b'+c.toString(a)+'\\b','g'),k[c]);return p}('1k.1j(\'<c 13="1i"1h="1g:1f-1e-1d-1c-1b"u="t"s="r"1a="3://h.9.g/f/19.18"><2 1="y"0="x"/><2 1="w"0="v"/><2 1="a"0="3://8.7.6.5/i/q/p.o"/><2 1="l"0="4"><2 1="m"0="4"/><2 1="k"0="j"/><2 1="n"0="4"/><2 1="12"0="3://8.7.6.5:11/d/10/b.z"/><e 13="17"16="b/9"12="3://8.7.6.5:11/d/10/b.z"y="x"w="v"u="t"s="r"a="3://8.7.6.5/i/q/p.o"n="4"m="4"a=""l="4"k="j"15="3://h.9.g/f/14/"></e></c>\');',36,57,'value|name|param|http|false|240|30|56|185|divx|previewImage|video|object||embed|plugin|com|go||Play|previewMessage|allowContextMenu|bannerEnabled|autoPlay|jpg|rezh7ogkvg6b|00004|380|height|715|width|transparent|wmode|Stage6|custommode|mkv|s4umuuk7gii5uaadrm5a76s7fd4bjlcti2r3v6bsa5d6yryt4dawmiqg|182|src|id|download|pluginspage|type|np_vid|cab|DivXBrowserPlugin|codebase|CC0F21721616|9C46|41fa|D0AB|67DABFBF|clsid|classid|ie_vid|write|document'.split('|')))
645
646//eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--){d[c]=k[c]||c}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('3.2(\'<0 4\'.1(\'8="\'+\'/5\'.1(\'/\'+7+\'">\\6/0>\')))',9,9,'script|concat|write|document|s|jwv|x3C|mpri_Key|rc'.split('|'),0,{}))
647
648        while(ostrstr(input, "eval(function(p,a,c,k,e,d){") != NULL)
649        {
650                packed = string_resub("eval(function(p,a,c,k,e,d){", "}))", input, 0);
651                if(packed == NULL)
652                        packed = string_resub("eval(function(p,a,c,k,e,d){", "))", input, 0);
653
654                titheklog(debuglevel, "/tmp/jsunpack1_packed", NULL, NULL, NULL, packed);       
655       
656//              tmpstr = string_resub(";return p}('", ");'", packed, 0);
657//              tmpstr = oregex(".*;return p}(.*)',[0-9]{2,2},[0-9]{2,2},'.*'.split.*", packed);
658//              tmpstr = oregex(".*;return p}(.*)',[0-9]{1,3},[0-9]{1,3},'.*'.split.*", packed);
659                tmpstr = oregex(".*return p}(.*)',[0-9]{1,3},[0-9]{1,3},'.*'.split.*", packed);
660
661                debug(99, "tmpstr: %s", tmpstr);
662                titheklog(debuglevel, "/tmp/jsunpack2_packed_tmpstr", NULL, NULL, NULL, tmpstr);
663       
664//              b36code = oregex(".*;',[0-9]{2,2},[0-9]{2,2},'(.*)'.split.*", packed);
665                b36code = oregex(".*',[0-9]{1,3},[0-9]{1,3},'(.*)'.split.*", packed);
666               
667                b36code = string_replace_all("||", "| |", b36code, 1);
668                debug(99, "b36code: %s", b36code);
669                titheklog(debuglevel, "/tmp/jsunpack3_packed_b36code", NULL, NULL, NULL, b36code);
670
671                if(!ostrncmp("|", b36code, 1))
672                        b36code = ostrcat(" ", b36code, 0, 1);
673
674                struct splitstr* ret1 = NULL;
675                int count = 0;
676                int i = 0;
677                ret1 = strsplit(b36code, "|", &count);
678       
679                charlist = ostrcat(charlist, "\"", 1, 0);
680                charlist = ostrcat(charlist, "|", 1, 0);
681                charlist = ostrcat(charlist, "'", 1, 0);
682                charlist = ostrcat(charlist, "|", 1, 0);
683                charlist = ostrcat(charlist, ".", 1, 0);
684                charlist = ostrcat(charlist, "|", 1, 0);
685                charlist = ostrcat(charlist, ";", 1, 0);
686                charlist = ostrcat(charlist, "|", 1, 0);
687                charlist = ostrcat(charlist, ":", 1, 0);
688                charlist = ostrcat(charlist, "|", 1, 0);
689                charlist = ostrcat(charlist, "=", 1, 0);
690                charlist = ostrcat(charlist, "|", 1, 0);
691                charlist = ostrcat(charlist, ",", 1, 0);
692                charlist = ostrcat(charlist, "|", 1, 0);
693                charlist = ostrcat(charlist, " ", 1, 0);
694                charlist = ostrcat(charlist, "|", 1, 0);
695                charlist = ostrcat(charlist, "\\", 1, 0);
696                charlist = ostrcat(charlist, "|", 1, 0);
697                charlist = ostrcat(charlist, "/", 1, 0);
698                charlist = ostrcat(charlist, "|", 1, 0);
699                charlist = ostrcat(charlist, "(", 1, 0);
700                charlist = ostrcat(charlist, "|", 1, 0);
701                charlist = ostrcat(charlist, ")", 1, 0);
702                charlist = ostrcat(charlist, "'", 1, 0);
703                charlist = ostrcat(charlist, "%", 1, 0);
704       
705                for(i = 0; i < count; i++)
706                {
707                        if(ostrstr((&ret1[i])->part, " ") != NULL)
708                        {
709                                printf("continue\n");
710                                continue;
711                        }
712                        char* x = oltostr(i, 36);
713       
714                        struct splitstr* ret2 = NULL;
715                        int count2 = 0;
716                        int i2 = 0;
717                        tmpstr2 = ostrcat(charlist, NULL, 0, 0);
718                        ret2 = strsplit(tmpstr2, "|", &count2);
719                        for(i2 = 0; i2 < count2; i2++)
720                        {
721                                struct splitstr* ret3 = NULL;
722                                int count3 = 0;
723                                int i3 = 0;
724                                tmpstr3 = ostrcat(charlist, NULL, 0, 0);
725                                ret3 = strsplit(tmpstr3, "|", &count3);
726                                for(i3 = 0; i3 < count3; i3++)
727                                {
728                                        debug(99, "-----------------------------------------------");
729                                        debug(99, "replace %s%s%s <> %s%s%s",(&ret2[i2])->part, x, (&ret3[i3])->part, (&ret2[i2])->part, (&ret1[i])->part, (&ret3[i3])->part);
730       
731                                        base = ostrcat(base, (&ret2[i2])->part, 1, 0);
732                                        base = ostrcat(base, x, 1, 0);
733                                        base = ostrcat(base, (&ret3[i3])->part, 1, 0);         
734                                        search = ostrcat(search, (&ret2[i2])->part, 1, 0);
735                                        search = ostrcat(search, (&ret1[i])->part, 1, 0);
736                                        search = ostrcat(search, (&ret3[i3])->part, 1, 0);
737                                        tmpstr = string_replace_all(base, search, tmpstr, 1);
738                                        free(base), base = NULL;
739                                        free(search), search = NULL;
740                                }
741                                free(ret3), ret3 = NULL;
742                                free(tmpstr3), tmpstr3 = NULL;
743                        }
744                        free(ret2), ret2 = NULL;
745                        free(tmpstr2), tmpstr2 = NULL;
746                        free(x);
747                }
748                free(ret1), ret1 = NULL;
749       
750                titheklog(debuglevel, "/tmp/jsunpack4_packed_tmpstr_last", NULL, NULL, NULL, tmpstr);
751
752                if(tmpstr == NULL)
753                        input = string_replace("eval(function(p,a,c,k,e,d){", "eval(function(p,a,c,k,e,d-extracted-error){", input, 1);
754                else
755                {
756                        input = string_replace("eval(function(p,a,c,k,e,d){", "eval(function(p,a,c,k,e,d-extracted){", input, 1);
757                        input = string_replace(packed, tmpstr, input, 1);
758                }
759                free(tmpstr),tmpstr = NULL;
760                free(packed), packed = NULL;
761                free(b36code), b36code = NULL;
762                free(charlist), charlist = NULL;
763        }
764
765//eval(function(p,a,c,k,e,r){e=function(c){return c.toString(36)};if('0'.replace(0,e)==0){while(c--)r[e(c)]=k[c];k=[function(e){return r[e]||e}];e=function(){return'[2-9k-t]'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('k p(a){5 b="s=1",c="t=l";7(a&&a.8&&a.8.9>0)6(5 d=0;d<a.8.9;d++){5 e=a.8[d],f=["r","m"];6(5 g n f){5 h=f[g];7(e&&e[h])6(5 i=e[h],j=0;j<i.9;j++)i[j]&&i[j].2&&(i[j].2+=(-1==i[j].2.o("?")?"?":"&")+"4=3&"+b+"&"+c)}}q a}',[],30,'||file|false|direct|var|for|if|playlist|length|||||||||||function|g2wppbatyvegydjngpim4hp5rl6ammlhkneq3sdgfqh5woiym753qlis6o6737kceon73boksojlkppwz744cta5i2kpzwwdsh3hrjqq3eiwcysqmy6aerlaeszaptrregtvpdfsdaiy4idwqdlack4abotyacmth2a253x5lrvvul7dxs6kligge5dufn6eofjjxex7vzljmvrrv4dnb4xlbn3hvb67c2pgc7y|httpfallback|in|indexOf|jwConfig|return|sources|ua|vt'.split('|'),0,{}))
766
767        while(ostrstr(input, "eval(function(p,a,c,k,e,r){") != NULL)
768        {
769                packed = string_resub("eval(function(p,a,c,k,e,r){", "))", input, 0);
770                titheklog(debuglevel, "/tmp/jsunpack1_packed", NULL, NULL, NULL, packed);       
771       
772//              tmpstr = string_resub(";return p}('", ");'", packed, 0);
773//              tmpstr = oregex(".*;return p}(.*)',[0-9]{2,2},[0-9]{2,2},'.*'.split.*", packed);
774                tmpstr = oregex(".*;return p}(.*)',[0-9]{1,3},[0-9]{1,3},'.*'.split.*", packed);
775
776                debug(99, "tmpstr: %s", tmpstr);
777                titheklog(debuglevel, "/tmp/jsunpack2_packed_tmpstr", NULL, NULL, NULL, tmpstr);
778       
779//              b36code = oregex(".*;',[0-9]{2,2},[0-9]{2,2},'(.*)'.split.*", packed);
780                b36code = oregex(".*',[0-9]{1,3},[0-9]{1,3},'(.*)'.split.*", packed);
781               
782                b36code = string_replace_all("||", "| |", b36code, 1);
783                debug(99, "b36code: %s", b36code);
784                titheklog(debuglevel, "/tmp/jsunpack3_packed_b36code", NULL, NULL, NULL, b36code);
785
786                if(!ostrncmp("|", b36code, 1))
787                        b36code = ostrcat(" ", b36code, 0, 1);
788
789                struct splitstr* ret1 = NULL;
790                int count = 0;
791                int i = 0;
792                ret1 = strsplit(b36code, "|", &count);
793       
794                charlist = ostrcat(charlist, "\"", 1, 0);
795                charlist = ostrcat(charlist, "|", 1, 0);
796                charlist = ostrcat(charlist, "'", 1, 0);
797                charlist = ostrcat(charlist, "|", 1, 0);
798                charlist = ostrcat(charlist, ".", 1, 0);
799                charlist = ostrcat(charlist, "|", 1, 0);
800                charlist = ostrcat(charlist, ";", 1, 0);
801                charlist = ostrcat(charlist, "|", 1, 0);
802                charlist = ostrcat(charlist, ":", 1, 0);
803                charlist = ostrcat(charlist, "|", 1, 0);
804                charlist = ostrcat(charlist, "=", 1, 0);
805                charlist = ostrcat(charlist, "|", 1, 0);
806                charlist = ostrcat(charlist, ",", 1, 0);
807                charlist = ostrcat(charlist, "|", 1, 0);
808                charlist = ostrcat(charlist, " ", 1, 0);
809                charlist = ostrcat(charlist, "|", 1, 0);
810                charlist = ostrcat(charlist, "\\", 1, 0);
811                charlist = ostrcat(charlist, "|", 1, 0);
812                charlist = ostrcat(charlist, "/", 1, 0);
813                charlist = ostrcat(charlist, "|", 1, 0);
814                charlist = ostrcat(charlist, "(", 1, 0);
815                charlist = ostrcat(charlist, "|", 1, 0);
816                charlist = ostrcat(charlist, ")", 1, 0);
817                charlist = ostrcat(charlist, "'", 1, 0);
818                charlist = ostrcat(charlist, "%", 1, 0);
819       
820                for(i = 0; i < count; i++)
821                {
822                        if(ostrstr((&ret1[i])->part, " ") != NULL)
823                        {
824                                printf("continue\n");
825                                continue;
826                        }
827                        char* x = oltostr(i, 36);
828       
829                        struct splitstr* ret2 = NULL;
830                        int count2 = 0;
831                        int i2 = 0;
832                        tmpstr2 = ostrcat(charlist, NULL, 0, 0);
833                        ret2 = strsplit(tmpstr2, "|", &count2);
834                        for(i2 = 0; i2 < count2; i2++)
835                        {
836                                struct splitstr* ret3 = NULL;
837                                int count3 = 0;
838                                int i3 = 0;
839                                tmpstr3 = ostrcat(charlist, NULL, 0, 0);
840                                ret3 = strsplit(tmpstr3, "|", &count3);
841                                for(i3 = 0; i3 < count3; i3++)
842                                {
843                                        debug(99, "-----------------------------------------------");
844                                        debug(99, "replace %s%s%s <> %s%s%s",(&ret2[i2])->part, x, (&ret3[i3])->part, (&ret2[i2])->part, (&ret1[i])->part, (&ret3[i3])->part);
845       
846                                        base = ostrcat(base, (&ret2[i2])->part, 1, 0);
847                                        base = ostrcat(base, x, 1, 0);
848                                        base = ostrcat(base, (&ret3[i3])->part, 1, 0);         
849                                        search = ostrcat(search, (&ret2[i2])->part, 1, 0);
850                                        search = ostrcat(search, (&ret1[i])->part, 1, 0);
851                                        search = ostrcat(search, (&ret3[i3])->part, 1, 0);
852                                        tmpstr = string_replace_all(base, search, tmpstr, 1);
853                                        free(base), base = NULL;
854                                        free(search), search = NULL;
855                                }
856                                free(ret3), ret3 = NULL;
857                                free(tmpstr3), tmpstr3 = NULL;
858                        }
859                        free(ret2), ret2 = NULL;
860                        free(tmpstr2), tmpstr2 = NULL;
861                        free(x);
862                }
863                free(ret1), ret1 = NULL;
864       
865                titheklog(debuglevel, "/tmp/jsunpack4_packed_tmpstr_last", NULL, NULL, NULL, tmpstr);
866
867                if(tmpstr == NULL)
868                        input = string_replace("eval(function(p,a,c,k,e,d){", "eval(function(p,a,c,k,e,d-extracted-error){", input, 1);
869                else
870                {
871                        input = string_replace("eval(function(p,a,c,k,e,d){", "eval(function(p,a,c,k,e,d-extracted){", input, 1);
872                        input = string_replace(packed, tmpstr, input, 1);
873                }
874                free(tmpstr),tmpstr = NULL;
875                free(packed), packed = NULL;
876                free(b36code), b36code = NULL;
877                free(charlist), charlist = NULL;
878        }
879
880        return input;
881}
882
883void localparser_init(char* titheklink, char* tithekfile, int flag)
884{
885        char* tmpstr = NULL, *tmpstr1 = NULL, *tmpstr2 = NULL, *cmd = NULL, *line = NULL, *path = NULL;
886        struct skin* load = getscreen("loading");
887
888        if(ostrcmp("http://atemio.dyndns.tv/mediathek/mainmenu.list", titheklink) == 0)
889        {
890                path = ostrcat("/tmp/localparser", NULL, 0, 0);
891                drawscreen(load, 0, 0);
892
893                char* titheklocalfile = ostrcat("/tmp/tithek/mainmenu.local.list", NULL, 0, 0);
894
895                if(flag == 1)
896                {
897                        if(!file_exist("/tmp/localhoster"))
898                                mkdir("/tmp/localhoster", 0777);
899                        if(!file_exist("/mnt/parser"))
900                                mkdir("/mnt/parser", 0777);
901                        if(!file_exist(path))
902                                mkdir(path, 0777);
903       
904                        gethttp("atemio.dyndns.tv", "/mediathek/parser_free.tar", 80, "/tmp/parser.tar", HTTPAUTH, 5000, NULL, 0);
905       
906                        cmd = ostrcat("tar -xf /tmp/parser.tar -C ", path, 0, 0);
907                        printf("[tithek] start cmd: %s\n", cmd);
908                        system(cmd);
909                        printf("[tithek] ende cmd: %s\n", cmd);
910                        free(cmd), cmd = NULL;
911                        unlink("/tmp/parser.tar");
912                        printf("[tithek] remove: /tmp/parser.tar\n");
913       
914                        if(file_exist("/mnt/swapextensions/etc/.codecpack") || file_exist("/var/swap/etc/.codecpack") || file_exist("/var/etc/.codecpack"))
915                        {
916                                gethttp("atemio.dyndns.tv", "/mediathek/parser_secret.tar", 80, "/tmp/parser.tar", HTTPAUTH, 5000, NULL, 0);
917                                cmd = ostrcat("tar -xf /tmp/parser.tar -C ", path, 0, 0);
918                                printf("[tithek] start cmd: %s\n", cmd);
919                                system(cmd);
920                                printf("[tithek] ende cmd: %s\n", cmd);
921                                free(cmd), cmd = NULL;
922                                printf("[tithek] remove: /tmp/parser.tar\n");
923                                unlink("/tmp/parser.tar");
924                        }
925       
926                        gethttp("atemio.dyndns.tv", "/mediathek/hoster.tar", 80, "/tmp/hoster.tar", HTTPAUTH, 5000, NULL, 0);
927                        cmd = ostrcat("tar -xf /tmp/hoster.tar -C ", "/tmp/localhoster", 0, 0);
928                        printf("[tithek] start cmd: %s\n", cmd);
929                        system(cmd);
930                        printf("[tithek] ende cmd: %s\n", cmd);
931                        free(cmd), cmd = NULL;
932                        printf("[tithek] remove: /tmp/hoster.tar\n");
933                        unlink("/tmp/hoster.tar");
934
935                        //dnode is freed in thread
936                        struct download* dnode = calloc(1, sizeof(struct download));
937                        if(dnode != NULL)
938                        {
939                                dnode->host = ostrcat("atemio.dyndns.tv", NULL, 0, 0);
940                                dnode->page = ostrcat("/mediathek/python.tar", NULL, 0, 0);     
941                                dnode->port = 80;
942                                dnode->filename = ostrcat("/tmp/python.tar", NULL, 0, 0);
943
944                                printf("[tithek] getfreespace start\n");
945       
946                                if(getfreespace("/mnt") / 1024 > 102400) //100mb
947                                {
948                                        mkdir("/mnt/.tithek", 0777);
949                                        if(file_exist("/mnt/.tithek"))
950                                                dnode->filename = ostrcat("/mnt/.tithek/python.tar", NULL, 0, 0);
951                                        dnode->page = ostrcat("/mediathek/python_full.tar", NULL, 0, 0);
952                                        symlink("/mnt/.tithek/lib", "/tmp/localhoster/lib");
953                                }
954                                else if(file_exist("/media/hdd") && getfreespace("/media/hdd") / 1024 > 102400)
955                                {
956                                        mkdir("/media/hdd/.tithek", 0777);
957                                        if(file_exist("/media/hdd/.tithek"))
958                                                dnode->filename = ostrcat("/media/hdd/.tithek/python.tar", NULL, 0, 0);
959                                        dnode->page = ostrcat("/mediathek/python_full.tar", NULL, 0, 0);
960                                        symlink("/media/hdd/.tithek/lib", "/tmp/localhoster/lib");
961                                }
962                                else if(file_exist("/var/swap") && getfreespace("/var/swap") / 1024 > 102400)
963                                {
964                                        mkdir("/var/swap/.tithek", 0777);
965                                        if(file_exist("/var/swap/.tithek"))
966                                                dnode->filename = ostrcat("/var/swap/.tithek/python.tar", NULL, 0, 0);
967                                        dnode->page = ostrcat("/mediathek/python_full.tar", NULL, 0, 0);
968                                        symlink("/var/swap/.tithek/lib", "/tmp/localhoster/lib");
969                                }
970                                else if(getfreespace("/tmp") / 1024 > 102400)
971                                {
972                                        dnode->filename = ostrcat("/tmp/python.tar", NULL, 0, 0);
973                                        dnode->page = ostrcat("/mediathek/python_full.tar", NULL, 0, 0);                                                       
974                                }
975                                printf("[tithek] getfreespace end\n");
976
977//                              if(ostrcmp(dnode->page, "/tmp/python.tar") == 0 || getconfigint("tithek_autoupdate", NULL) == 1)
978                                if(getconfigint("tithek_autoupdate", NULL) == 1)
979                                {
980                                        if(file_exist(dnode->filename))
981                                        {
982                                                printf("[tithek] remove before download: %s\n", dnode->page);
983                                                unlink(dnode->filename);
984                                        }
985                                }
986                       
987                                dnode->auth = ostrcat(HTTPAUTH, NULL, 0, 0);
988                                dnode->connfd = -1;
989                                dnode->ret = -1;
990                                dnode->timeout = 10000;
991                                addtimer(&tithekdownloadthread, START, 100, 1, (void*)dnode, NULL, NULL);
992                        }
993
994                        cmd = ostrcat("chmod -R 755 ", path, 0, 0);
995                        system(cmd);
996                        free(cmd), cmd = NULL;
997       
998                        cmd = ostrcat("chmod -R 755 /mnt/parser", NULL, 0, 0);
999                        system(cmd);
1000                        free(cmd), cmd = NULL;
1001       
1002                        cmd = ostrcat("chmod -R 755 /tmp/localhoster", NULL, 0, 0);
1003                        system(cmd);
1004                        free(cmd), cmd = NULL;
1005//                      }
1006       
1007                        cmd = ostrcat("ls -1 ", path, 0, 0);
1008                        cmd = ostrcat(cmd, "/*.sh", 1, 0);
1009       
1010                        free(path), path = NULL;
1011                        tmpstr1 = command("ls -1 /mnt/parser/*.sh");
1012                        tmpstr2 = command(cmd);
1013                        free(cmd), cmd = NULL;
1014                        tmpstr = ostrcat(tmpstr1, "\n", 0, 0);
1015                        tmpstr = ostrcat(tmpstr, tmpstr2, 1, 0);
1016       
1017                        int count = 0, i = 0;
1018                        struct splitstr* ret1 = NULL;
1019                        ret1 = strsplit(tmpstr, "\n", &count);
1020               
1021                        int max = count;
1022                        for(i = 0; i < max; i++)
1023                        {
1024                                if(file_exist(ret1[i].part) && cmpfilenameext(ret1[i].part, ".sh") == 0)
1025                                {
1026                                        cmd = ostrcat(ret1[i].part, " ", 0, 0);
1027                                        cmd = ostrcat(cmd, ret1[i].part, 1, 0);
1028                                        cmd = ostrcat(cmd, " init", 1, 0);
1029                                        line = command(cmd);
1030                                        line = string_newline(line);
1031                                        printf("[tithek] cmd: %s\n", cmd);
1032                                        debug(99, "add main menuentry: %s", line);
1033                                        writesys(titheklocalfile, line, 3);
1034                                        free(cmd), cmd = NULL;
1035                                        free(line), line = NULL;
1036                                }
1037                        }
1038                        free(ret1), ret1 = NULL;
1039                        free(tmpstr), tmpstr = NULL;
1040                        free(tmpstr1), tmpstr1 = NULL;
1041                        free(tmpstr2), tmpstr2 = NULL;
1042                }
1043
1044                line = readfiletomem(titheklocalfile, 1);
1045                free(titheklocalfile), titheklocalfile = NULL;
1046                writesys(tithekfile, line, 3);
1047
1048                clearscreen(load);
1049        }
1050
1051}
1052
1053char* localparser_hoster(char* link)
1054{
1055        debug(99, "link: %s", link);
1056        int ret = 1;
1057        char* tmpstr = NULL, *streamurl = NULL;
1058
1059        tmpstr = command(link);
1060        tmpstr = string_newline(tmpstr);
1061        debug(99, "tmpstr: %s", tmpstr);
1062
1063        if(ostrstr(tmpstr, "gethoster2") != NULL)
1064        {
1065                tmpstr = string_replace_all("gethoster2 ", "", tmpstr, 1);
1066                streamurl = hoster(tmpstr);
1067        }
1068        else if(ostrstr(link, ".sh play ") != NULL)
1069                streamurl = ostrcat(tmpstr, NULL, 0, 0);
1070        else if(ostrstr(link, ".sh hoster ") != NULL)
1071                streamurl = hoster(tmpstr);
1072
1073        free(tmpstr), tmpstr = NULL;
1074
1075        debug(99, "streamurl: %s", streamurl);
1076
1077        return streamurl;
1078}
1079
1080int localparser_search(struct skin* grid, struct skin* listbox, struct skin* countlabel, struct skin* load, char* link, char* title, char* searchstr, int flag)
1081{
1082        char* tmpstr = NULL, *menu = NULL, *search = NULL, *cmd = NULL;
1083        int ret = 1;
1084
1085        if(listbox == NULL || listbox->select == NULL || listbox->select->handle == NULL)
1086                return ret;
1087
1088        if(searchstr == NULL)
1089                search = textinputhist(_("Search"), " ", "searchhist");
1090        else
1091                search = textinputhist(_("Search"), searchstr, "searchhist");
1092
1093        if(search != NULL)
1094        {
1095                drawscreen(load, 0, 0);
1096
1097                strstrip(search);
1098                string_tolower(search);
1099                search = stringreplacechar(search, ' ', '+');
1100
1101                cmd = ostrcat(link, NULL, 0, 0);
1102
1103                if(ostrstr(cmd, "%search%") != NULL)
1104                        cmd = string_replace_all("%search%", search, cmd, 1);
1105                else
1106                        cmd = ostrcat(link, search, 0, 0);
1107
1108                debug(99, "cmd: %s", cmd);
1109                char* filename = command(cmd);
1110                filename = string_newline(filename);
1111                tmpstr = readfiletomem(filename, 1);
1112                free(cmd), cmd = NULL;
1113
1114                if(tmpstr != NULL)
1115                {
1116                        tmpstr = string_replace_all("http://atemio.dyndns.tv/", "http://imageshack.us/md/up/grd/", tmpstr, 1);
1117                        menu = ostrcat(filename, NULL, 0, 0);
1118//                      writesys(menu, tmpstr, 0);
1119                        struct tithek* tnode = (struct tithek*)listbox->select->handle;
1120                        createtithek(tnode, tnode->title, menu, tnode->pic, tnode->localname, tnode->menutitle, tnode->flag);
1121                        ret = 0;
1122                }
1123
1124                free(filename), filename = NULL;
1125                free(tmpstr), tmpstr = NULL;
1126        }
1127        free(search), search = NULL;
1128        return ret;
1129}
1130
1131#endif
Note: See TracBrowser for help on using the repository browser.