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

Last change on this file since 38926 was 38926, checked in by obi, 7 years ago

tithek fix vivo

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