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

Last change on this file since 37175 was 37175, checked in by obi, 8 years ago

fix localhoster

File size: 22.7 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
11        tmplink = ostrcat(url, NULL, 0, 0);
12        string_tolower(tmplink);
13
14        if(ostrstr(tmplink, "sockshare") != NULL)
15                streamurl = putlocker(url);
16        else if(ostrstr(tmplink, "putlocker") != NULL)
17                streamurl = firedrive(url);
18        else if(ostrstr(tmplink, "filenuke") != NULL)
19                streamurl = filenuke(url);
20        else if(ostrstr(tmplink, "streamcloud") != NULL)
21                streamurl = streamcloud(url);
22        else if(ostrstr(tmplink, "vidstream") != NULL)
23                streamurl = vidstream(url);
24        else if(ostrstr(tmplink, "flashx") != NULL)
25                streamurl = flashx(url);
26        else if(ostrstr(tmplink, "xvidstage") != NULL)
27                streamurl = xvidstage(url);
28        else if(ostrstr(tmplink, "nowvideo") != NULL)
29                streamurl = nowvideo(url);
30        else if(ostrstr(tmplink, "movshare") != NULL)
31                streamurl = movshare(url);
32        else if(ostrstr(tmplink, "movreel") != NULL)
33                streamurl = movreel(url);
34        else if(ostrstr(tmplink, "novamov") != NULL)
35                streamurl = novamov(url);
36        else if(ostrstr(tmplink, "divxstage") != NULL || ostrstr(tmplink, "cloudtime") != NULL)
37                streamurl = divxstage(url);
38        else if(ostrstr(tmplink, "primeshare") != NULL)
39                streamurl = primeshare(url);
40        else if(ostrstr(tmplink, "faststream") != NULL || ostrstr(tmplink, "fastvideo") != NULL)
41                streamurl = faststream(url);
42        else if(ostrstr(tmplink, "played") != NULL)
43                streamurl = played(url);
44        else if(ostrstr(tmplink, "videoweed") != NULL)
45                streamurl = videoweed(url);
46        else if(ostrstr(tmplink, "firedrive") != NULL)
47                streamurl = firedrive(url);
48        else if(ostrstr(tmplink, "shared") != NULL)
49                streamurl = shared(url);
50        else if(ostrstr(tmplink, "thefile") != NULL)
51                streamurl = thefile(url);
52        else if(ostrstr(tmplink, "youtu") != NULL)
53                streamurl = youtube(url);
54        else if(ostrstr(tmplink, "myvideo") != NULL)
55                streamurl = myvideo(url);
56        else if(ostrstr(tmplink, "promptfile") != NULL)
57                streamurl = promptfile(url);
58        else if(ostrstr(tmplink, "letwatch") != NULL || ostrstr(tmplink, "realvid") != NULL)
59                streamurl = letwatch(url);
60        else if(ostrstr(tmplink, "vidbull") != NULL)
61                streamurl = vidbull(url);
62        else if(ostrstr(tmplink, "vodlocker") != NULL)
63                streamurl = vodlocker(url);
64        else if(ostrstr(tmplink, "vidto") != NULL)
65                streamurl = vidto(url);
66        else if(ostrstr(tmplink, "amazon") != NULL)
67                streamurl = amazon(url);
68        else if(ostrstr(tmplink, "thevideo") != NULL)
69                streamurl = thevideo(url);
70        else if(ostrstr(tmplink, "mightyupload") != NULL)
71                streamurl = mightyupload(url);
72        else if(ostrstr(tmplink, "cloudzilla") != NULL)
73                streamurl = cloudzilla(url);
74        else if(ostrstr(tmplink, "vivo") != NULL)
75                streamurl = vivo(url);
76        else if(ostrstr(tmplink, "streamlive") != NULL)
77                streamurl = streamlive(url, -1);
78        else if(ostrstr(tmplink, "cricfree") != NULL)
79                streamurl = cricfree(url, 0);
80        else if(ostrstr(tmplink, "zerocast") != NULL)
81                streamurl = zerocast(url, 0);
82        else if(ostrstr(tmplink, "p2pcast") != NULL)
83                streamurl = p2pcast(url);
84        else
85        {
86                char* cmd = NULL;
87                cmd = ostrcat("/tmp/localhoster/hoster.sh get ", url, 0, 0);
88                streamurl = command(cmd);
89                streamurl = string_newline(streamurl);
90                free(cmd), cmd = NULL;
91                if(streamurl == NULL)
92                        textbox(_("Message"), _("The hoster is not yet supported !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 5, 0);
93        }
94
95        debug(99, "Streamurl1: %s", streamurl);
96
97        streamurl = string_replace_all("amp;", "", streamurl, 1);
98        debug(99, "Streamurl2: %s", streamurl);
99
100        free(tmplink), tmplink = NULL;
101        if(ostrncmp("http", streamurl, 4) && ostrncmp("rtmp", streamurl, 4) && ostrncmp("mms", streamurl, 3) && ostrncmp("rtsp", streamurl, 4))
102        {
103                printf("Streamurl3: not http*|rtmp*|mms*|rtsp* Streamurl: %s\n", streamurl);
104                free(streamurl),streamurl = NULL;
105        }
106
107        return streamurl;
108}
109
110struct MemoryStruct {
111  char *memory;
112  size_t size;
113};
114
115static size_t
116WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp)
117{
118  size_t realsize = size * nmemb;
119  struct MemoryStruct *mem = (struct MemoryStruct *)userp;
120 
121  mem->memory = realloc(mem->memory, mem->size + realsize + 1);
122  if(mem->memory == NULL) {
123    /* out of memory! */
124    printf("not enough memory (realloc returned NULL)\n");
125    return 0;
126  }
127 
128  memcpy(&(mem->memory[mem->size]), contents, realsize);
129  mem->size += realsize;
130  mem->memory[mem->size] = 0;
131 
132  return realsize;
133}
134
135// flag = 0 (without header in output)
136// flag = 1 (with header in output)
137char* gethttps(char* url, char* localfile, char* data, char* user, char* pass, char* referer, int flag)
138{
139        debug(99, "url: %s", url);
140
141        int debuglevel = getconfigint("debuglevel", NULL);
142
143        char* tmpstr = NULL;
144    FILE *fp;
145
146        CURL *curl_handle;
147        CURLcode res;
148       
149        struct MemoryStruct chunk;
150       
151        chunk.memory = malloc(1);  /* will be grown as needed by the realloc above */
152        chunk.size = 0;    /* no data at this point */
153       
154        curl_global_init(CURL_GLOBAL_ALL);
155
156        /* init the curl session */
157        curl_handle = curl_easy_init();
158        if(curl_handle)
159        {
160            if(localfile != NULL)
161                    fp = fopen(localfile,"wb");
162               
163                /* specify URL to get */
164                curl_easy_setopt(curl_handle, CURLOPT_URL, url);
165
166                if(user != NULL && pass != NULL)
167                {
168                        curl_easy_setopt(curl_handle, CURLOPT_USERNAME, user);
169                        curl_easy_setopt(curl_handle, CURLOPT_PASSWORD, pass);
170                        curl_easy_setopt(curl_handle, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
171                }
172                if(data == NULL)
173                        curl_easy_setopt(curl_handle, CURLOPT_HTTPGET, 1L);
174                else
175                        curl_easy_setopt(curl_handle, CURLOPT_POSTFIELDS, data);
176                if(flag == 1)
177                        curl_easy_setopt(curl_handle, CURLOPT_HEADER, 1L);
178                curl_easy_setopt(curl_handle, CURLOPT_CONNECTTIMEOUT, 5);
179                curl_easy_setopt(curl_handle, CURLOPT_TIMEOUT, 20);
180                /* send all data to this function  */
181            if(localfile == NULL)
182                        curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
183                else
184                        curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, NULL);
185
186                /* we pass our 'chunk' struct to the callback function */
187            if(localfile == NULL)
188                        curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)&chunk);
189                else
190                        curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, fp);
191
192                /* some servers don't like requests that are made without a user-agent field, so we provide one */
193                curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "libcurl-agent/1.0");
194//              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");
195
196                // This is occassionally required to stop CURL from verifying the peers certificate.
197                // CURLOPT_SSL_VERIFYHOST may also need to be TRUE or FALSE if
198                // CURLOPT_SSL_VERIFYPEER is disabled (it defaults to 2 - check the existence of a
199                // common name and also verify that it matches the hostname provided)
200#ifdef MIPSEL
201                curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYPEER, 1L);
202#else
203                curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYPEER, 0L);
204#endif
205
206                curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYHOST, 0L);
207                if(debuglevel == 99)
208                        curl_easy_setopt(curl_handle, CURLOPT_VERBOSE, 1);
209                curl_easy_setopt(curl_handle, CURLOPT_COOKIEFILE, "/mnt/network/cookies");
210                curl_easy_setopt(curl_handle, CURLOPT_COOKIEJAR, "/mnt/network/cookies");
211                curl_easy_setopt(curl_handle, CURLOPT_FOLLOWLOCATION, 1L);
212                if(referer == NULL)
213                        curl_easy_setopt(curl_handle, CURLOPT_AUTOREFERER, 1L);
214                else
215                        curl_easy_setopt(curl_handle, CURLOPT_REFERER, referer);
216
217                /* get it! */
218                res = curl_easy_perform(curl_handle);
219                /* check for errors */
220                if(res != CURLE_OK)
221                {
222                        err("failed: %s", curl_easy_strerror(res));
223                        printf("curl error\n");
224                }
225                else
226                {
227                        /*
228                         * Now, our chunk.memory points to a memory block that is chunk.size
229                         * bytes big and contains the remote file.
230                         *
231                         * Do something nice with it!
232                         */
233                        printf("%lu bytes retrieved\n", (long)chunk.size);
234                }
235               
236                /* cleanup curl stuff */
237                curl_easy_cleanup(curl_handle);
238                if(localfile != NULL)
239                        fclose(fp);
240        }
241
242        tmpstr = ostrcat(chunk.memory, NULL, 0, 0);
243        free(chunk.memory);
244        /* we're done with libcurl, so clean it up */
245        curl_global_cleanup();
246
247        if(localfile != NULL)
248                free(tmpstr), tmpstr = NULL;
249        return tmpstr;
250}
251
252char* string_decode3(char* input)
253{
254        if(input == NULL) return input;
255
256        input = string_replace_all("&#196;", "Ä", input, 1);
257        input = string_replace_all("&#228;", "ä", input, 1);
258        input = string_replace_all("&#201;", "É", input, 1);
259        input = string_replace_all("&#233;", "é", input, 1);
260        input = string_replace_all("&#214;", "Ö", input, 1);
261        input = string_replace_all("&#246;", "ö", input, 1);
262        input = string_replace_all("&#220;", "Ü", input, 1);
263        input = string_replace_all("&#252;", "ü", input, 1);
264        input = string_replace_all("&#223;", "ß", input, 1);
265        input = string_replace_all("&#38;", "&", input, 1);
266
267        input = string_replace_all("&Auml;", "Ä", input, 1);
268        input = string_replace_all("&auml;", "ä", input, 1);
269        input = string_replace_all("&Eacute;", "É", input, 1);
270        input = string_replace_all("&eacute;", "é", input, 1);
271        input = string_replace_all("&Ouml;", "Ö", input, 1);
272        input = string_replace_all("&ouml;", "ö", input, 1);
273        input = string_replace_all("&Uuml;", "Ü", input, 1);
274        input = string_replace_all("&uuml;", "ü", input, 1);
275        input = string_replace_all("&szlig;", "ß", input, 1);
276        input = string_replace_all("&amp;", "&", input, 1);
277
278        return input;
279}
280
281char* getfilekey(char* w, char* i, char* s, char* e)
282{
283        char* ret = NULL;
284
285        if(w == NULL || i == NULL || s == NULL || e == NULL)
286                return NULL;
287
288        int a = 0, b = 0, c = 0;
289        int a1 = 0, b1 = 0;
290
291        int lw = strlen(w);
292        int li = strlen(i);
293        int ls = strlen(s);
294       
295        if(lw < 5 || li < 5 || ls < 5)
296                return NULL;
297
298        char ca[lw + li + ls - 14];
299        char cb[16];
300
301        ca[lw + li + ls - 15] = '\0';
302        cb[15] = '\0';
303       
304        while(1)
305        {
306                if(a < 5)
307                {
308                        cb[b1] = w[a];
309                        b1++;
310                }
311                else if(a < lw)
312                {
313                        ca[a1] = w[a];
314                        a1++;
315                }
316                a++;
317               
318                if(b < 5)
319                {
320                        cb[b1] = i[b];
321                        b1++;
322                }
323                else if(b < li)
324                {
325                        ca[a1] = i[b];
326                        a1++;
327                }
328                b++;
329               
330                if(c < 5)
331                {
332                        cb[b1] = s[c];
333                        b1++;
334                }
335                else if(c < ls)
336                {
337                        ca[a1] = s[c];
338                        a1++;
339                }
340                c++;
341               
342                if(lw + li + ls == a1 + b1)
343                        break;
344        }
345
346        b = 0;
347        int d = 0;
348        char cc[a1 / 2 + 1];
349        char casub[3] = {'\0'};
350        cc[a1 / 2] = '\0';
351       
352        for(a = 0; a < a1; a += 2)
353        {
354                int c = -1;
355               
356                if(cb[b] % 2) c = 1;
357
358                casub[0] = ca[a];
359                casub[1] = ca[a + 1];
360
361                cc[d] = strtol(casub, '\0', 36) - c;
362                b++; d++;
363                if(b >= b1) b = 0;
364        }
365
366        char* r1 = NULL, *r2 = NULL, *r3 = NULL, *r4 = NULL;
367        char* pos = ostrstr(cc, ");}('");
368        if(pos != NULL)
369        {
370                r1 = string_resub(");}('", "'", pos, 0);
371                pos = ostrstr(pos + 5, ",'");
372                if(pos != NULL)
373                {
374                        r2 = string_resub(",'", "'", pos, 0);
375                        pos = ostrstr(pos + 2, ",'");
376                        if(pos != NULL)
377                        {
378                                r3 = string_resub(",'", "'", pos, 0);
379                                pos = ostrstr(pos + 2, ",'");
380                                if(pos != NULL)
381                                {
382                                        r4 = string_resub(",'", "'", pos, 0);
383                                        ret = getfilekey(r1, r2, r3, r4);
384                                }
385                        }
386                }
387        }
388        else
389        {
390                ret = string_resub("ll=\"", "\"", cc, 0);
391                if(ret == NULL)
392                        ret = string_resub("filekey=\"", "\"", cc, 0); 
393        }
394
395  free(r1); r1 = NULL;
396        free(r2); r2 = NULL;
397        free(r3); r3 = NULL;
398        free(r4); r4 = NULL;
399                                       
400        return ret;
401}
402
403int 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)
404{
405        char* tmpstr = NULL, *tmpstr1 = NULL, *tmpstr2 = NULL;
406
407        *oaktpage = listbox->aktpage;
408        *oaktline = listbox->aktline;
409        *ogridcol = listbox->gridcol;
410        tmpstr = ostrcat(((struct tithek*)listbox->select->handle)->link, NULL, 0, 0);
411
412        if(title != NULL)
413                tmpstr1 = ostrcat(title, " - ", 0, 0);
414        else
415                tmpstr1 = ostrcat(((struct tithek*)listbox->select->handle)->menutitle, " - ", 0, 0);   
416       
417        tmpstr2 = ostrcat(tmpstr1, ((struct tithek*)listbox->select->handle)->title, 1, 0);
418        screentithekplay(tmpstr, tmpstr2, flag);
419        free(tmpstr); tmpstr = NULL;
420        free(tmpstr2); tmpstr2 = NULL;
421
422        *pagecount = createtithekplay(titheklink, grid, listbox, countlabel, cflag);
423//      if(pagecount == 0 || tithekexit == 1) break;
424        if(*pagecount == 0 || *tithekexit == 1) return 0;
425       
426        listbox->aktpage = *oaktpage;
427        listbox->aktline = *oaktline;
428        listbox->gridcol = *ogridcol;
429        addscreenrc(grid, listbox);
430
431        return 1;
432}
433
434int all_search_local(struct skin* grid, struct skin* listbox, struct skin* countlabel, struct skin* load, char* link, char* title, char* searchstr, int flag)
435{
436        char* tmpstr = NULL, *tmpstr1 = NULL, *line = NULL, *menu = NULL, *search = NULL;
437        int ret = 1, count = 0, i = 0;
438
439        if(listbox == NULL || listbox->select == NULL || listbox->select->handle == NULL)
440                return ret;
441
442        if(searchstr == NULL)
443                search = textinputhist(_("Search"), " ", "searchhist");
444        else
445                search = textinputhist(_("Search"), searchstr, "searchhist");
446
447        if(search != NULL)
448        {
449                drawscreen(load, 0, 0);
450
451                strstrip(search);
452                string_tolower(search);
453
454                tmpstr = gethttp("atemio.dyndns.tv", "/mediathek/all/all-sorted.list", 80, NULL, HTTPAUTH, 5000, NULL, 0);
455
456                struct splitstr* ret1 = NULL;
457                ret1 = strsplit(tmpstr, "\n", &count);
458
459                if(ret1 != NULL)
460                {
461                        int max = count;
462                        for(i = 0; i < max; i++)
463                        {
464                       
465                                tmpstr1 = ostrcat(ret1[i].part, NULL, 0, 0);
466                                tmpstr1 = stringreplacecharonce(tmpstr1, '#', '\0');
467                                string_tolower(tmpstr1);
468
469                                if(ostrstr(tmpstr1, search) != NULL)
470                                {
471                                        printf("found: %s\n", ret1[i].part);
472                                        int rcret = waitrc(NULL, 10, 0);
473                                        if(rcret == getrcconfigint("rcexit", NULL)) break;
474
475                                        line = ostrcat(line, ret1[i].part, 1, 0);
476                                        line = ostrcat(line, "\n", 0, 0);
477                                }
478                                free(tmpstr1), tmpstr1 = NULL;                         
479                        }
480                        free(ret1), ret1 = NULL;
481
482                        if(line != NULL)
483                        {
484                                line = string_replace_all("http://atemio.dyndns.tv/", "http://imageshack.us/md/up/grd/", line, 1);
485                                menu = ostrcat("/tmp/tithek/all.search.list", NULL, 0, 0);
486                                writesys(menu, line, 0);
487                                struct tithek* tnode = (struct tithek*)listbox->select->handle;
488                                createtithek(tnode, tnode->title, menu, tnode->pic, tnode->localname, tnode->menutitle, tnode->flag);
489                                ret = 0;
490                        }
491                }
492                free(tmpstr), tmpstr = NULL;
493        }
494        free(search), search = NULL;
495        return ret;
496}
497
498char* jsunpack(char* input)
499{
500        int debuglevel = getconfigint("debuglevel", NULL);
501
502        if(input == NULL) return input;
503
504        char* b36code = NULL, *search = NULL, *charlist = NULL, *base = NULL, *tmpstr2 = NULL, *tmpstr3 = NULL, *tmpstr = NULL, *packed = NULL;
505
506        unlink("/tmp/jsunpack1_packed");
507        unlink("/tmp/jsunpack2_tmpstr");
508        unlink("/tmp/jsunpack3_b36code");
509        unlink("/tmp/jsunpack4_tmpstr_last");
510
511        while(ostrstr(input, "eval(function(p,a,c,k,e,d){") != NULL)
512        {
513                packed = string_resub("eval(function(p,a,c,k,e,d){", "))", input, 0);
514                titheklog(debuglevel, "/tmp/jsunpack1_packed", NULL, NULL, NULL, packed);       
515       
516//              tmpstr = string_resub(";return p}('", ");'", packed, 0);
517//              tmpstr = oregex(".*;return p}(.*)',[0-9]{2,2},[0-9]{2,2},'.*'.split.*", packed);
518                tmpstr = oregex(".*;return p}(.*)',[0-9]{1,3},[0-9]{1,3},'.*'.split.*", packed);
519
520                debug(99, "tmpstr: %s", tmpstr);
521                titheklog(debuglevel, "/tmp/jsunpack2_tmpstr", NULL, NULL, NULL, tmpstr);
522       
523//              b36code = oregex(".*;',[0-9]{2,2},[0-9]{2,2},'(.*)'.split.*", packed);
524                b36code = oregex(".*',[0-9]{1,3},[0-9]{1,3},'(.*)'.split.*", packed);
525               
526                b36code = string_replace_all("||", "| |", b36code, 1);
527                debug(99, "b36code: %s", b36code);
528                titheklog(debuglevel, "/tmp/jsunpack3_b36code", NULL, NULL, NULL, b36code);
529
530                if(!ostrncmp("|", b36code, 1))
531                        b36code = ostrcat(" ", b36code, 0, 1);
532
533                struct splitstr* ret1 = NULL;
534                int count = 0;
535                int i = 0;
536                ret1 = strsplit(b36code, "|", &count);
537       
538                charlist = ostrcat(charlist, "\"", 1, 0);
539                charlist = ostrcat(charlist, "|", 1, 0);
540                charlist = ostrcat(charlist, "'", 1, 0);
541                charlist = ostrcat(charlist, "|", 1, 0);
542                charlist = ostrcat(charlist, ".", 1, 0);
543                charlist = ostrcat(charlist, "|", 1, 0);
544                charlist = ostrcat(charlist, ";", 1, 0);
545                charlist = ostrcat(charlist, "|", 1, 0);
546                charlist = ostrcat(charlist, ":", 1, 0);
547                charlist = ostrcat(charlist, "|", 1, 0);
548                charlist = ostrcat(charlist, "=", 1, 0);
549                charlist = ostrcat(charlist, "|", 1, 0);
550                charlist = ostrcat(charlist, ",", 1, 0);
551                charlist = ostrcat(charlist, "|", 1, 0);
552                charlist = ostrcat(charlist, " ", 1, 0);
553                charlist = ostrcat(charlist, "|", 1, 0);
554                charlist = ostrcat(charlist, "\\", 1, 0);
555                charlist = ostrcat(charlist, "|", 1, 0);
556                charlist = ostrcat(charlist, "/", 1, 0);
557                charlist = ostrcat(charlist, "|", 1, 0);
558                charlist = ostrcat(charlist, "(", 1, 0);
559                charlist = ostrcat(charlist, "|", 1, 0);
560                charlist = ostrcat(charlist, ")", 1, 0);
561                charlist = ostrcat(charlist, "'", 1, 0);
562                charlist = ostrcat(charlist, "%", 1, 0);
563       
564                for(i = 0; i < count; i++)
565                {
566                        if(ostrstr((&ret1[i])->part, " ") != NULL)
567                        {
568                                printf("continue\n");
569                                continue;
570                        }
571                        char* x = oltostr(i, 36);
572       
573                        struct splitstr* ret2 = NULL;
574                        int count2 = 0;
575                        int i2 = 0;
576                        tmpstr2 = ostrcat(charlist, NULL, 0, 0);
577                        ret2 = strsplit(tmpstr2, "|", &count2);
578                        for(i2 = 0; i2 < count2; i2++)
579                        {
580                                struct splitstr* ret3 = NULL;
581                                int count3 = 0;
582                                int i3 = 0;
583                                tmpstr3 = ostrcat(charlist, NULL, 0, 0);
584                                ret3 = strsplit(tmpstr3, "|", &count3);
585                                for(i3 = 0; i3 < count3; i3++)
586                                {
587                                        debug(99, "-----------------------------------------------");
588                                        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);
589       
590                                        base = ostrcat(base, (&ret2[i2])->part, 1, 0);
591                                        base = ostrcat(base, x, 1, 0);
592                                        base = ostrcat(base, (&ret3[i3])->part, 1, 0);         
593                                        search = ostrcat(search, (&ret2[i2])->part, 1, 0);
594                                        search = ostrcat(search, (&ret1[i])->part, 1, 0);
595                                        search = ostrcat(search, (&ret3[i3])->part, 1, 0);
596                                        tmpstr = string_replace_all(base, search, tmpstr, 1);
597                                        free(base), base = NULL;
598                                        free(search), search = NULL;
599                                }
600                                free(ret3), ret3 = NULL;
601                                free(tmpstr3), tmpstr3 = NULL;
602                        }
603                        free(ret2), ret2 = NULL;
604                        free(tmpstr2), tmpstr2 = NULL;
605                        free(x);
606                }
607                free(ret1), ret1 = NULL;
608       
609                titheklog(debuglevel, "/tmp/jsunpack4_tmpstr_last", NULL, NULL, NULL, tmpstr);
610
611                if(tmpstr == NULL)
612                        input = string_replace("eval(function(p,a,c,k,e,d){", "eval(function(p,a,c,k,e,d-extracted-error){", input, 1);
613                else
614                {
615                        input = string_replace("eval(function(p,a,c,k,e,d){", "eval(function(p,a,c,k,e,d-extracted){", input, 1);
616                        input = string_replace(packed, tmpstr, input, 1);
617                }
618                free(tmpstr),tmpstr = NULL;
619                free(packed), packed = NULL;
620                free(b36code), b36code = NULL;
621                free(charlist), charlist = NULL;
622        }
623
624        return input;
625}
626
627void localparser_init(char* titheklink, char* tithekfile)
628{
629        char* tmpstr = NULL, *tmpstr1 = NULL, *tmpstr2 = NULL, *cmd = NULL, *line = NULL, *path = NULL;
630
631        if(ostrcmp("http://atemio.dyndns.tv/mediathek/mainmenu.list", titheklink) == 0)
632        {
633//              path = createpluginpath("/tithek", 0);
634//              path = ostrcat(path, "/parser", 1, 0);
635                path = ostrcat("/tmp/localparser", NULL, 0, 0);
636
637                if(!file_exist("/tmp/localhoster"))
638                        mkdir("/tmp/localhoster", 0777);
639                if(!file_exist("/mnt/parser"))
640                        mkdir("/mnt/parser", 0777);
641                if(!file_exist(path))
642                        mkdir(path, 0777);
643
644                unlink("/tmp/parser.tar");
645                gethttp("atemio.dyndns.tv", "/mediathek/parser_free.tar", 80, "/tmp/parser.tar", HTTPAUTH, 5000, NULL, 0);
646
647                cmd = ostrcat("tar -xvf /tmp/parser.tar -C ", path, 0, 0);
648                system(cmd);
649                free(cmd), cmd = NULL;
650
651                if(file_exist("/mnt/swapextensions/etc/.codecpack") || file_exist("/var/swap/etc/.codecpack") || file_exist("/var/etc/.codecpack"))
652                {
653                        unlink("/tmp/parser.tar");
654                        gethttp("atemio.dyndns.tv", "/mediathek/parser_secret.tar", 80, "/tmp/parser.tar", HTTPAUTH, 5000, NULL, 0);
655                        cmd = ostrcat("tar -xvf /tmp/parser.tar -C ", path, 0, 0);
656                        system(cmd);
657                        free(cmd), cmd = NULL;
658                }
659
660                unlink("/tmp/hoster.tar");
661                gethttp("atemio.dyndns.tv", "/mediathek/hoster.tar", 80, "/tmp/hoster.tar", HTTPAUTH, 5000, NULL, 0);
662                cmd = ostrcat("tar -xvf /tmp/hoster.tar -C ", "/tmp/localhoster", 0, 0);
663                system(cmd);
664                free(cmd), cmd = NULL;
665
666                cmd = ostrcat("chmod -R 755 ", path, 0, 0);
667                system(cmd);
668                free(cmd), cmd = NULL;
669
670                cmd = ostrcat("chmod -R 755 /mnt/parser", NULL, 0, 0);
671                system(cmd);
672                free(cmd), cmd = NULL;
673
674                cmd = ostrcat("chmod -R 755 /tmp/localhoster", NULL, 0, 0);
675                system(cmd);
676                free(cmd), cmd = NULL;
677
678                cmd = ostrcat("ls -1 ", path, 0, 0);
679                cmd = ostrcat(cmd, "/*.sh", 1, 0);
680
681                free(path), path = NULL;
682                tmpstr1 = command("ls -1 /mnt/parser/*.sh");
683                tmpstr2 = command(cmd);
684                free(cmd), cmd = NULL;
685                tmpstr = ostrcat(tmpstr1, "\n", 0, 0);
686                tmpstr = ostrcat(tmpstr, tmpstr2, 1, 0);
687
688                int count = 0, i = 0;
689                struct splitstr* ret1 = NULL;
690                ret1 = strsplit(tmpstr, "\n", &count);
691       
692                int max = count;
693                for(i = 0; i < max; i++)
694                {
695                        if(file_exist(ret1[i].part) && cmpfilenameext(ret1[i].part, ".sh") == 0)
696                        {
697                                cmd = ostrcat(ret1[i].part, " ", 0, 0);
698                                cmd = ostrcat(cmd, ret1[i].part, 1, 0);
699                                cmd = ostrcat(cmd, " init", 1, 0);
700                                line = command(cmd);
701                                printf("[tithek] add main menuentry: %s\n", line);
702                                debug(10, "add main menuentry: %s", line);
703                                writesys(tithekfile, line, 3);
704                                free(cmd), cmd = NULL;
705                                free(line), line = NULL;
706                        }
707                }
708                free(ret1), ret1 = NULL;
709                free(tmpstr), tmpstr = NULL;
710                free(tmpstr1), tmpstr1 = NULL;
711                free(tmpstr2), tmpstr2 = NULL;
712        }
713}
714
715char* localparser_hoster(char* link)
716{
717        debug(99, "link: %s", link);
718        int debuglevel = getconfigint("debuglevel", NULL);
719        int ret = 1;
720        char* tmpstr = NULL, *streamurl = NULL;
721
722        tmpstr = command(link);
723        tmpstr = string_newline(tmpstr);
724
725        if(ostrstr(link, ".sh play ") != NULL)
726                streamurl = ostrcat(tmpstr, NULL, 0, 0);
727        else if(ostrstr(link, ".sh hoster ") != NULL)
728                streamurl = hoster(tmpstr);
729
730        free(tmpstr), tmpstr = NULL;
731
732        return streamurl;
733}
734
735int localparser_search(struct skin* grid, struct skin* listbox, struct skin* countlabel, struct skin* load, char* link, char* title, char* searchstr, int flag)
736{
737        char* tmpstr = NULL, *tmpstr1 = NULL, *line = NULL, *menu = NULL, *search = NULL;
738        int ret = 1, count = 0, i = 0;
739
740        if(listbox == NULL || listbox->select == NULL || listbox->select->handle == NULL)
741                return ret;
742
743        if(searchstr == NULL)
744                search = textinputhist(_("Search"), " ", "searchhist");
745        else
746                search = textinputhist(_("Search"), searchstr, "searchhist");
747
748        if(search != NULL)
749        {
750                drawscreen(load, 0, 0);
751
752                strstrip(search);
753                string_tolower(search);
754
755                char* cmd = ostrcat(link, search, 0, 0);
756                char* filename = command(cmd);
757                filename = string_newline(filename);
758                tmpstr = readfiletomem(filename, 1);
759                free(cmd), cmd = NULL;
760
761                if(tmpstr != NULL)
762                {
763                        tmpstr = string_replace_all("http://atemio.dyndns.tv/", "http://imageshack.us/md/up/grd/", tmpstr, 1);
764                        menu = ostrcat(filename, NULL, 0, 0);
765//                      writesys(menu, tmpstr, 0);
766                        struct tithek* tnode = (struct tithek*)listbox->select->handle;
767                        createtithek(tnode, tnode->title, menu, tnode->pic, tnode->localname, tnode->menutitle, tnode->flag);
768                        ret = 0;
769                }
770
771                free(filename), filename = NULL;
772                free(tmpstr), tmpstr = NULL;
773        }
774        free(search), search = NULL;
775        return ret;
776}
777
778#endif
Note: See TracBrowser for help on using the repository browser.