⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 一起解剖灰鸽子vip1.2源码.txt

📁 一起解剖灰鸽子VIP1.2源码.txt 非原创
💻 TXT
📖 第 1 页 / 共 5 页
字号:
if FTPPass1.Text<>FTPPass2.Text then
  begin
    Label1.Caption :=Translate('String6','两次密码输入不一样!');
    FTPPass1.Text:='';
    FTPPass2.Text:='';
    Exit;
  end;
  //判断完后 没什么事情就进行上传贝,这个函数上面已经分析过了
Get_UserFile;
end;

//这个函数返回一个布尔值,比较两字符串,如果body中 包涵了UpdateS 就返回true 否则false
function TUpIpDate.Update(Body,UpdateS:String):Boolean;
var
i:integer;
begin
Result:=False;
i:=pos(UpdateS,Body);      //Update:='修改成功'
if i>=1 then  Result:=True;
end;

//
procedure ZhuIPtohttp;
var
username,pass,Temp:string;
ProxyStr: TProxyServerInf;
begin
try
    username:=UpIpDate.UserEdit.Text;

    pass:= UpIpDate.PassEdit1.Text;
    //看到了吧 GetDefaultProxyServer 作用上面介绍了,就是判断是否有代理,并且把代理信息赋值到 ProxyStr中
    if GetDefaultProxyServer(ProxyStr) then  {本地设置了代理服务器}
      begin
          if ProxyStr.httpName<>'' then
          begin
          //有代理的情况下IdHTTP1控件就要使用代理连接互联网咯
            UpIpDate.IdHTTP1.ProxyParams.ProxyServer:=ProxyStr.httpName;
            UpIpDate.IdHTTP1.ProxyParams.ProxyPort:=ProxyStr.httpport;
          end;
      end else
      begin
      //没代理的情况下赋值
        UpIpDate.IdHTTP1.ProxyParams.ProxyServer:='';
        UpIpDate.IdHTTP1.ProxyParams.ProxyPort:=0;
      end;
  //好 这时可以使用 IdHTTP1控件来注册域名并做判断了,
  //不过这个应该没什么用,my.126.com注册应该是很久以前的事吧现在还可以么?我没试过,哈哈不管它了,继续看代码
    if UpIpDate.ComboBox10.ItemIndex=0 then

      Temp:=UpIpDate.IdHTTP1.Get(' http://my.126.com/cgi-bin/register?username='+username+'&domain=126.com&passw ... 39;+pass+'&email='+UpIpDate.EmailEdit1.Text+
      '&url=http://huigezi'+UpIpDate.IPComboBox2.Text+'end')
    else
      Temp:=UpIpDate.IdHTTP1.Get(' http://my.yeah.net/cgi-bin/register?username='+username+'&domain=yeah.net&pass ... 39;+pass+'&email='+UpIpDate.EmailEdit1.Text+
      '&url=http://huigezi'+UpIpDate.IPComboBox2.Text+'end');

  //上面分析过了 Update实际上是一个字符串查找的函数,返回布尔值,所以作者用它来判断最终是否注册成功

    if UpIpDate.Update(Temp,UpIpDate.Translate('String7','注册成功')) then begin
    UpIpDate.Label1.Caption :=UpIpDate.Translate('String8','注册域名成功!');
    end
    else begin
    UpIpDate.Label1.Caption :=UpIpDate.Translate('String9','注册域名失败!此域名可能被另一用户注册过了!');
    end;
  Except
    UpIpDate.Label1.Caption :=UpIpDate.Translate('String10','注册域名错误!请检查网络!');
  end;
end;

//这个是准备要进行多线程编程了,这里定义一个线程类 TZhuCeThread,重载了一个函数 execute
type
  TZhuCeThread = class(TThread)
  public
      procedure  Execute; override;
end;
//这里是重载函数的定义,每个线程对象都要有一个 execute的方法,你要这个线程做的事,
//就放在这个方法里去实现,看到这里,你应该对多线程编程明白了一点点了吧,
//呵呵,不明白也不要紧,小乐我和你一样,也是慢慢领悟 ^^
procedure TZhuCeThread.Execute;
begin
//就是上面的函数,用来注册域名的那段
ZhuIPtohttp;
Terminate;  //结束线程这个方法,都要有的
end;


//这个XWDns 负责的是做DNS部分的功能,后面类似与前面,方法定义好以后,放到多线程对象里
procedure XWDns;
var
username,pass,Temp:string;
tmphttp:string;
ProxyStr: TProxyServerInf;
begin
  try
    username:=UpIpDate.Xwuser.Text;
    pass:= UpIpDate.Xwpass.Text;

    if GetDefaultProxyServer(ProxyStr) then  {本地设置了代理服务器}
      begin
          if ProxyStr.httpName<>'' then
          begin
            UpIpDate.IdHTTP2.ProxyParams.ProxyServer:=ProxyStr.httpName;
            UpIpDate.IdHTTP2.ProxyParams.ProxyPort:=ProxyStr.httpport;
          end;
      end else
      begin
        UpIpDate.IdHTTP2.ProxyParams.ProxyServer:='';
        UpIpDate.IdHTTP2.ProxyParams.ProxyPort:=0;
      end;


    tmphttp:=' http://www.3322.org/dyndns/update?system=dyndns&hostname='+UpIpDate.XwEdit.Text+' ... Text+'&wildcard=OFF&mx=&backmx=NO';
    //这个是 IdHTTP的用法 ,估计是给访问这个地址的连接指定一个 用户名和密码,提交给页面的
    UpIpDate.IdHTTP2.Request.Username :=username;
    UpIpDate.IdHTTP2.Request.Password :=pass;
    //用上面的字符串来访问特定的提交信息地址,实现希网更新IP的功能
      Temp:=UpIpDate.IdHTTP2.Get(tmphttp);
    //断开连接
    try
      UpIpDate.IdHTTP2.Disconnect;
    except
    end;
    //通过Update获取提交信息是否成功更新
    if UpIpDate.Update(Temp,'good') then begin
      UpIpDate.Label1.Caption :=UpIpDate.Translate('String11','更新IP成功!请等待服务器上线!');
          if HgzVip.isSound then
            begin
              try
                sndplaysound('',snd_async);
                sndplaysound(Pchar(HgzVip.UpIPok),snd_async);
              except
              end;
            end;
    end
    else
    //失败提示:
    begin
    if pos('badauth',Temp)>0 then begin
    UpIpDate.Label1.Caption :=UpIpDate.Translate('String12','更新IP失败!用户名或密码不正确!');
    UpIpDate.XWButton.Enabled:=True;
    Exit;
    end;
    UpIpDate.Label1.Caption :=UpIpDate.Translate('String13','更新IP失败!请检查输入信息是否正确!')+Temp;
    end;
  Except
    UpIpDate.Label1.Caption :=UpIpDate.Translate('String14','更新IP错误!请检查网络!');
  end;
  UpIpDate.XWButton.Enabled:=True;
end;

type
  TXWDnsThread = class(TThread)
  public
      procedure  Execute; override;
  end;
//与上面的线程方法分析类似,不多说了
procedure TXWDnsThread.Execute;
begin
XWDns;
Terminate;
end;


    //靠,又来一个类似的东西,我不分析了,大家参照上面的分析,然后理解吧
    //应该是修改 my.126.com的域名解析的吧,看看就算了
procedure IPtohttp;
var
username,pass,Temp:string;
ProxyStr: TProxyServerInf;
begin
  try
    username:=UpIpDate.user126.Text;
    pass:= UpIpDate.pass126.Text;


    if GetDefaultProxyServer(ProxyStr) then  {本地设置了代理服务器}
      begin
          if ProxyStr.httpName<>'' then
          begin
            UpIpDate.IdHTTP1.ProxyParams.ProxyServer:=ProxyStr.httpName;
            UpIpDate.IdHTTP1.ProxyParams.ProxyPort:=ProxyStr.httpport;
          end;
      end else
      begin
            UpIpDate.IdHTTP1.ProxyParams.ProxyServer:='';
            UpIpDate.IdHTTP1.ProxyParams.ProxyPort:=0;
      end;

    if UpIpDate.YComboBox.ItemIndex=0 then
      Temp:=UpIpDate.IdHTTP1.Get(' http://my.126.com/cgi-bin/modify?username='+us ... in=126.com&password='+
          pass+'&url=http://huigezi'+UpIpDate.ComboBox1.Text+'end')
    else
      Temp:=UpIpDate.IdHTTP1.Get(' http://my.yeah.net/cgi-bin/modify?username='+use ... in=yeah.net&password='+
          pass+'&url=http://huigezi'+UpIpDate.ComboBox1.Text+'end');

    if UpIpDate.Update(Temp,UpIpDate.Translate('String15','修改成功')) then begin
      UpIpDate.Label1.Caption :=UpIpDate.Translate('String11','更新IP成功!请等待服务器上线!');
          if HgzVip.isSound then
            begin
              try
                sndplaysound('',snd_async);
                sndplaysound(Pchar(HgzVip.UpIPok),snd_async);
              except
              end;
            end;
    end
    else begin
    if pos(UpIpDate.Translate('String16','密码错误'),Temp)>0 then begin
      UpIpDate.Label1.Caption :=UpIpDate.Translate('String12','更新IP失败!密码不正确!');
      UpIpDate.URLButton.Enabled:=True;
    Exit;
    end;
    UpIpDate.Label1.Caption :=UpIpDate.Translate('String13','更新IP失败!请检查输入信息是否正确!');
    end;
  Except
    UpIpDate.Label1.Caption :=UpIpDate.Translate('String17','更新IP错误!请检查网络或域名服务商!');
  end;
    UpIpDate.URLButton.Enabled:=True;
end;

type
  THttpThread = class(TThread)
  public
      procedure  Execute; override;
  end;

procedure THttpThread.Execute;
begin
IPtohttp;
Terminate;
end;

// 这个是进行更新URL域名转发更新IP的一个模块,点击这个按钮激发事件进行
procedure TUpIpDate.URLButtonClick(Sender: TObject);
begin
if user126.Text='' then
  begin
    Label1.Caption:=Translate('String18','对不起!好像您没有填写域名噢!请您填上吧!');
    Exit;
  end;
if spSkinEdit2.Text<>pass126.Text then
  begin
    Label1.Caption:=Translate('String19','对不起!两次输入的密码不一致!请重新输入!');
    spSkinEdit2.Text:='';
    pass126.Text:='';
    Exit;
  end;
Label1.Caption:=Translate('String20','开始更新IP地址到域名...');
URLButton.Enabled:=False;
THttpThread.Create(false); //创建上面定义的多线程类对象,并执行
end;

procedure TUpIpDate.Button3Click(Sender: TObject);
{var
  username, pass, Shuzi: string;
  TempS: string;  }
begin
  if UserEdit.Text = '' then begin
    Label1.Caption := Translate('String18','用户名不能为空!');
    Exit;
  end;
  if PassEdit1.Text = '' then begin
    Label1.Caption := Translate('String21','密码不能为空,请重新填写!');
    Exit;
  end;
  if PassEdit1.Text <> PassEdit2.Text then begin
    Label1.Caption := Translate('String19','两次密码不一样,请重新填写!');
    PassEdit1.Text:='';
    PassEdit2.Text:='';
    Exit;
  end;
  if EmailEdit1.Text='' then
    begin
      Label1.Caption := Translate('String22','请填写你的E-Mail地址!');
      Exit;
    end;
Label1.Caption:=Translate('String23','开始注册域名...');
TZhuCeThread.Create(false);  //创建上面定义的多线程类对象,并执行
{  Randomize;
  i := Random(100);
  if i = 0 then i := 01;
  if i = 100 then i := 99;
  username := UserEdit.Text;
  pass := PassEdit2.Text;
  Shuzi := SuiJiMa;

  try
    Button3.Enabled := False;
    Button3.Refresh;
    Label1.Caption := '正在身份验证...'; // http://8225.com/login/login.asp?yhm=1& ... shuzi=11&ipadd=nick
    temps := idHTTP1.Get(' http://www.8225.com/login/login.asp?yhm=' + username + '&mima=' + pass ... shuzi + '&ipadd=' + IPComboBox2.Text);
  except
    Button3.Enabled := True;
    Button3.Refresh;
    Label1.Caption := '验证出错,请检查网络.';
    Exit;
  end;

  while Pos(#13#10, TempS) <> 0 do
  begin
    Delete(TempS, Pos(#13#10, TempS), 2);
  end;

  if TempS = YanzhenMa then begin
    Label1.Caption := '验证通过,更新IP成功.';
  end else begin
    Label1.Caption := '验证失败.更新IP失败.';
  end;
  Button3.Enabled := True;
  Button3.Refresh;  }
  
end;

  //这个应该是把填写的信息自动保存到配置文件HgzVip.myinifile里 ,
  //myinifile是一个配置文件 在main单元里有定义和赋值,翻到main可以看到它对应的是文件Operate.ini

procedure TUpIpDate.RadioBox1Click(Sender: TObject);
begin
try
if RadioBox1.Checked then
  begin
    HgzVip.myinifile.writestring('FTP','AutoSave','1');
    HgzVip.myinifile.writestring('FTP','FTPServer',FTPAdder.text);
    HgzVip.myinifile.writestring('FTP','FTPport',FTPPort.text);
    HgzVip.myinifile.writestring('FTP','FTPUser',FTPUser.Text);
    HgzVip.myinifile.writestring('FTP','Password',EnCryptStr(FTPPass1.Text,'HUIGEZI'));
    HgzVip.myinifile.writestring('FTP','IpFile',IpFileEdit.Text);
    HgzVip.myinifile.writestring('FTP','Http',httpEdit.Text);
  end else begin
    HgzVip.myinifile.writestring('FTP','AutoSave','0');
    HgzVip.myinifile.writestring('FTP','FTPServer','');
    HgzVip.myinifile.writestring('FTP','FTPport','21');
    HgzVip.myinifile.writestring('FTP','FTPUser','');
    HgzVip.myinifile.writestring('FTP','Password','');
    HgzVip.myinifile.writestring('FTP','IpFile','ip.jpg');
    HgzVip.myinifile.writestring('FTP','Http','');
  end;
except
end;
end;
    //类似。。。。。上面的分析,
procedure TUpIpDate.RadioBox2Click(Sender: TObject);
begin
try
if RadioBox2.Checked then
  begin
    HgzVip.myinifile.writestring('Yuming','AutoSave','1');
    HgzVip.Myinifile.writestring(YComboBox.Text, 'UserName', user126.Text);
    HgzVip.Myinifile.writestring(YComboBox.Text, 'Passwd', EnCryptStr(spSkinEdit2.Text,'HUIGEZI'));
  end else begin
    HgzVip.myinifile.writestring('Yuming','AutoSave','0');
    HgzVip.Myinifile.writestring(YComboBox.Text, 'UserName', '');
    HgzVip.Myinifile.writestring(YComboBox.Text, 'Passwd', '');
  end;
except
end;
end;
  //在这个窗口关闭的时候,也要记得执行一下保存信息到配置文件里
procedure TUpIpDate.FormClose(Sender: TObject; var Action: TCloseAction);
begin
try
if RadioBox1.Checked then
  begin
    HgzVip.myinifile.writestring('FTP','AutoSave','1');
    HgzVip.myinifile.writestring('FTP','FTPServer',FTPAdder.text);
    HgzVip.myinifile.writestring('FTP','FTPport',FTPPort.text);
    HgzVip.myinifile.writestring('FTP','FTPUser',FTPUser.Text);
    HgzVip.myinifile.writestring('FTP','Password',EnCryptStr(FTPPass1.Text,'HUIGEZI'));
    HgzVip.myinifile.writestring('FTP','IpFile',IpFileEdit.Text);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -