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

Last change on this file since 40856 was 40856, checked in by obi, 3 years ago

update tithek

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