Exemple #1
0
 public Form1()
 {
     InitializeComponent();
     var secret = GenerateRandomSecret();
     var mtprotoProxy = new MTProtoProxyServer(secret, 443);
     mtprotoProxy.StartAsync();
 }
Exemple #2
0
        public void st_Click(object sender, EventArgs e)
        {
            if (st.Text == "Start")
            {
                if (ip.Text == "")
                {
                    MetroFramework.MetroMessageBox.Show(Form.ActiveForm, "\nPlease enter IP to ip field\nFor Example:\n127.0.0.1\n51.254.164.54", "Error On Start");
                    return;
                }
                if (backlog.Text == "" || backlog.Text == "0")
                {
                    MetroFramework.MetroMessageBox.Show(Form.ActiveForm, "\nPlease enter Backlog to Backlog field\nFor Example:\n100\n255", "Error On Start");
                    return;
                }
                if (port.Text == "" || port.Text == "0")
                {
                    MetroFramework.MetroMessageBox.Show(Form.ActiveForm, "\nPlease enter Port Number to port field\nFor Example:\n4000\n8888", "Error On Start");
                    return;
                }
                if (secret.Text == "")
                {
                    MetroFramework.MetroMessageBox.Show(Form.ActiveForm, "\nPlease enter secret to secret field\nFor Example:\ndbd9a4f78fb145b7b513aaae49864b31\nor for generate new secret enter 0", "Error On Start");
                    return;
                }
                st.Text  = "Stop";
                pport    = int.Parse(port.Text);
                back_log = int.Parse(backlog.Text);
                if (secret.Text == "0")
                {
                    string n = GenerateRandomSecret();
                    this.secret.Text = n;
                    sesret           = n;
                }
                else
                {
                    sesret = secret.Text;
                }

                iip = ip.Text;
                var mtp = new MTProtoProxyServer(ref sesret, ref pport, ref iip);
                mtp.Start(ref back_log);
                // var mtprotoProxy = new MTProtoProxyServer("secret", port, "ip");
                // mtprotoProxy.Start(backlog);
                Console.WriteLine("Created By Soheil1234");
                Console.WriteLine("open source => https://github.com/Metal-Ghost/MTPProxy");
                st.Enabled = false;
            }
            else if (st.Text == "Stop")
            {
                MetroFramework.MetroMessageBox.Show(Form.ActiveForm, "\nOn MTPROTOPROXY stop code not released Can not stop you must restart the Application", "Error On Stop");
                st.Text = "Start";
                Application.Restart();
            }
        }
Exemple #3
0
        private async Task ReadGroupsFileAsync(/*CancellationToken ct*/ CancellationToken cancellationToken)
        {
            // CancellationToken ct = tokenSource2.Token;
            // Were we already canceled?
            //ct.ThrowIfCancellationRequested();

            //if (ct.IsCancellationRequested)
            //{
            //    Console.WriteLine("Операция прервана токеном");
            //    return;
            //}

            //Task task = null;
            //if (cancellationToken.IsCancellationRequested)
            //{
            //    throw new TaskCanceledException(task);

            //   // cancellationToken.ThrowIfCancellationRequested();
            //}

            f_start = true;

            var _api = new VkApi();

            //Авторизация
            _api.Authorize(new ApiAuthParams
            {
                Login       = vkLogin,
                Password    = vkPassword,
                AccessToken = Token
            });

            int y = 0;     //порядковый номер группы

            string[] lines      = File.ReadAllLines(groupsfilepath);
            var      last       = File.ReadAllLines(groupsfilepath).Last(); //последняя строка - группа
            var      linescount = File.ReadAllLines(groupsfilepath).Length; //число строк

            foreach (var K in lines)                                        //для каждой группы получаем список записей
            {
                long?         id2       = Convert.ToInt64(K);
                WallGetObject wallposts = _api.Wall.Get(new WallGetParams
                {
                    OwnerId = id2,        //Идентификатор пользователя или сообщества, со стены которого необходимо получить записи
                                          //(по умолчанию — текущий пользователь). Обратите внимание, идентификатор сообщества в параметре owner_id
                                          //необходимо указывать со знаком “-“ — например, owner_id=-1 соответствует идентификатору сообщества ВКонтакте API (club1) целое число
                                          // Domain = id,  //- Короткий адрес пользователя или сообщества. строка
                                          //Filter=,  //all
                                          // Offset=, // Смещение, необходимое для выборки определенного подмножества записей. положительное число
                    Count    = PostCount, //- Количество записей, которое необходимо получить (но не более 100).
                    Extended = true
                                          //Fields=Photo
                });
                var count = wallposts.TotalCount;
                Invoke(new Action(() =>
                {
                    textBox1.Text = "Количество постов в группе " + K + " = " + count;
                    //LB_Messages.Items.Add("Количество постов в группе " + K + " = " + count);
                }));
                Console.WriteLine("Количество постов в группе " + K + " = " + count);
                Console.ReadLine();

                var postelem = wallposts.WallPosts;  //Получили посты

                int j       = 0;                     //число постов
                int numphot = 0;                     //номер фото
                for (j = 0; j < (int)PostCount; j++) //пока не дошли до макс значения постов одной группы
                {
                    string groupidWOmin2 = K.Replace("-", "");
                    var    groups2       = _api.Groups.GetById(null, groupidWOmin2, null).FirstOrDefault();
                    string sourceLink2   = groups2.Name;  // + " @" + groups.Id;
                                                          //Отправка источника записи
                    string sourcelb = sourceLink2;
                    Invoke(new Action(() =>
                    {
                        LB_Source.Text = "Parsing: " + sourcelb;
                    }));

                    if (CHB_AddWOPhoto.Checked == true)
                    {
                        var atts = postelem[j].Attachments;
                        if ((postelem[j].MarkedAsAds != true) && (postelem[j].Text != null) && (atts == null))
                        {
                            //Удаление \n
                            string deleteenters = postelem[j].Text.Replace("\n", "");
                            //string deletespace = postelem[j].Text.Replace("\n", "");
                            MessageToAttach = deleteenters;

                            //Проверка на повторы
                            string s = File.ReadAllText(text_archive); //Открываем файл с историей
                            if (s.IndexOf(MessageToAttach) != -1)      //пока не дошли до конца ищем первое совпадение
                            {
                                //Нашли текст уже был опубликован, значит пропускаем
                                Console.WriteLine("Нашли повтор текста: " + s);
                                Console.ReadLine();
                                Invoke(new Action(() =>
                                {
                                    textBox1.Text = "Нашли повтор текста: " + s;
                                }));
                                continue;
                            }

                            else
                            {
                                //Запомнили что опубликовали такое сообщение
                                AddedFile(MessageToAttach, text_archive);

                                //Отправка сообщения поста
                                if (string.IsNullOrEmpty(MessageToAttach) == false)     //Если не пустое сообщение
                                {
                                    Invoke(new Action(() =>
                                    {
                                        LB_Messages.Items.Add(MessageToAttach);
                                    }));
                                    await sendMessage(chatId, MessageToAttach);
                                }
                            }
                        }
                    }
                    //текст

                    if (ChB_AddMessage.Checked == true)     //если хотим сообщения добавлять к картинкам
                    {
                        // var atts = postelem[j].Attachments;
                        //Проверить если есть фотки или только текст, постить
                        var att = postelem[j].Attachment;     //Получили первое вложение
                        if ((postelem[j].MarkedAsAds != true) && (postelem[j].Text != null) && (att != null) && (att.Type == typeof(Photo)) /*&&(postelem[j].PostType==post)*/)
                        {
                            //Удаление \n
                            string deleteenters = postelem[j].Text.Replace("\n", "");
                            //string deletespace = postelem[j].Text.Replace("\n", "");
                            MessageToAttach = deleteenters;

                            //Проверка на повторы
                            string s = File.ReadAllText(text_archive); //Открываем файл с историей
                            if (s.IndexOf(MessageToAttach) != -1)      //пока не дошли до конца ищем первое совпадение
                            {
                                //Нашли текст уже был опубликован, значит пропускаем
                                Console.WriteLine("Нашли повтор текста: " + s);
                                Console.ReadLine();
                                Invoke(new Action(() =>
                                {
                                    textBox1.Text = "Нашли повтор текста: " + s;
                                }));
                                continue;
                            }

                            else
                            {
                                //Запомнили что опубликовали такое сообщение
                                AddedFile(MessageToAttach, text_archive);

                                //Отправка сообщения поста
                                if (string.IsNullOrEmpty(MessageToAttach) == false)     //Если не пустое сообщение
                                {
                                    Invoke(new Action(() =>
                                    {
                                        LB_Messages.Items.Add(MessageToAttach);
                                    }));
                                    var secret       = GenerateRandomSecret();
                                    var mtprotoProxy = new MTProtoProxyServer(secret, 2256);
                                    mtprotoProxy.StartAsync();
                                    await sendMessage(chatId, MessageToAttach);
                                }
                            }
                        }
                    }

                    List <MediaAttachment> vk_attachments = new List <MediaAttachment>();

                    foreach (var i in postelem)            //Для каждого поста
                    {
                        if (numphot == (int)PostCount - 1) //если дошли числа постов, то обнуляем №фото, чтобы перезаписывать
                        {
                            numphot = 0;
                        }

                        //await SendMessageToChannelTest(MessageToAttach);
                        //Получить информацию о записи, первого вложения и текст
                        var atts      = postelem[j].Attachments;
                        int currphoto = 0;

                        foreach (var att in postelem[j].Attachments)     //для каждого вложения одного поста
                        {
                            //att.Type==typeof(Link)
                            if (att.Type == typeof(Photo) && att.Type != typeof(Link))     //если вложения = фото но не ссылка
                            {
                                Console.WriteLine("Ссылка на фото: " + GetUrlOfBigPhoto(att.Instance as Photo));
                                //получили ссылку на фотку
                                var url = GetUrlOfBigPhoto(att.Instance as Photo);
                                //Если ссылка уже есть в файле истории, continue, если нет, то идем дальше
                                string s = File.ReadAllText(filepath_archive); //Открываем файл с историей
                                if (s.IndexOf(url) != -1)                      //пока не дошли до конца ищем первое совпадение
                                {
                                    //Нашли фото уже был опубликован, значит пропускаем
                                    Console.WriteLine("Нашли повтор фото: " + s);
                                    Console.ReadLine();
                                    Invoke(new Action(() =>
                                    {
                                        textBox1.Text = "Нашли повтор фото: " + s;
                                    }));
                                    continue;
                                }

                                else
                                {
                                    //Запомнили что опубликовали такую фотку
                                    AddedFile(url, filepath_archive);
                                    //скачали на ПК
                                    numphot = DownloadTempPhoto(url, j);

                                    currphoto++;

                                    Console.WriteLine("Скачали и сохранили фото под № " + numphot);
                                    Console.ReadLine();
                                    Invoke(new Action(() =>
                                    {
                                        textBox1.Text = "Скачали и сохранили фото под № " + numphot;
                                    }));

                                    fullphotoname = photofilename + numphot + ".jpg";

                                    //Залили на стену
                                    //IReadOnlyCollection<Photo> photolist = SendOnServer(fullphotoname);
                                    //vk_attachments.AddRange(photolist);
                                    var secret       = GenerateRandomSecret();
                                    var mtprotoProxy = new MTProtoProxyServer(secret, 2256);
                                    mtprotoProxy.StartAsync();
                                    await SendPhoto(chatId, fullphotoname, apiToken);

                                    // continue;
                                    Console.WriteLine("Отправили в телегу");
                                    Invoke(new Action(() =>
                                    {
                                        textBox1.Text = "Отправили в телегу";
                                    }));

                                    ////Отправили ВК
                                    //var post = _api.Wall.Post(new WallPostParams
                                    //{
                                    //    OwnerId = groupid,
                                    //    FromGroup = true,
                                    //    Message = MessageToAttach,
                                    //    Attachments = vk_attachments

                                    //});

                                    //Delay
                                    Random rnd    = new Random();
                                    int    number = rnd.Next(mindelay, maxdelay);

                                    if (chb_addsource.Checked == true)
                                    {
                                        int photocount = postelem[j].Attachments.Count; //число вложений фото

                                        if (photocount == 1)                            //если вложение одно
                                        {
                                            string groupidWOmin = K.Replace("-", "");
                                            var    groups       = _api.Groups.GetById(null, groupidWOmin, null).FirstOrDefault();
                                            if (groups != null)
                                            {
                                                string sourceLink = groups.Name; // + " @" + groups.Id;
                                                                                 //Отправка источника записи
                                                string source = "Источник: " + sourceLink;

                                                await sendMessage(chatId, source);
                                            }
                                        }
                                        //если вложений несколько - один раз пишем источник в конце после последнего вложения
                                        if ((currphoto == photocount) && (photocount != 1))
                                        {
                                            //Получение ссылки на сообщество
                                            string groupidWOmin = K.Replace("-", "");
                                            var    groups       = _api.Groups.GetById(null, groupidWOmin, null).FirstOrDefault();
                                            if (groups != null)
                                            {
                                                string sourceLink = groups.Name; // + " @" + groups.Id;
                                                                                 //Отправка источника записи
                                                string source = "Источник: " + sourceLink;
                                                await sendMessage(chatId, source);
                                            }
                                        }
                                    }
                                    numphot++;
                                    Invoke(new Action(() =>
                                    {
                                        textBox1.Text = "Ждем  " + number / 1000 + " секунд";
                                    }));
                                    Console.WriteLine("Ждем  " + number / 1000 + " секунд");
                                    Console.ReadLine();
                                    await Task.Delay(number);
                                }
                            }

                            //если вложения не фотки другая функция отправки типа вложения
                        }

                        //j++;
                        Console.WriteLine("Обработали пост № " + j);
                        Console.ReadLine();
                        Invoke(new Action(() =>
                        {
                            textBox1.Text = "Обработали пост № " + j;
                        }));
                    }
                }
                y++;
                Console.WriteLine("Обработали строку № " + y + " Группа: " + id2);
                Console.ReadLine();
                Invoke(new Action(() =>
                {
                    textBox1.Text = "Обработали строку № " + y + " Группа: " + id2;
                }));
                //это если постоянно
                //if ((j == (int)PostCount - 1) && (y == linescount)) //последний пост последней группы в списке
                //    j = 0; //запускаем обратно цикл
            }

            MessageBox.Show("Обработаны все группы и посты!");
            f_postedall = true;
            return;
        }