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

Last change on this file since 39566 was 39566, checked in by obi, 5 years ago

tithek add info button

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