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

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

fix

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