📄 upip.pas
字号:
unit UpIp;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, SkinTabs, DynamicSkinForm, ImgList, StdCtrls,
SkinBoxCtrls, SkinCtrls,mmsystem, Mask, Shellapi, DESCrypt , WinInet ,
IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, LangFrm,
Psock, NMFtp;
type // 本地代理服务器设置信息。
TProxyServerInf = record
httpName: string;
httpport: integer;
SocksName: string;
Socksport: integer;
end;
type
TUpIpDate = class(TLangForm)
spDynamicSkinForm1: TspDynamicSkinForm;
PageControl1: TspSkinPageControl;
TabSheet1: TspSkinTabSheet;
TabSheet2: TspSkinTabSheet;
ImageList1: TImageList;
Panel1: TspSkinPanel;
Label2: TspSkinStdLabel;
Label3: TspSkinStdLabel;
Label4: TspSkinStdLabel;
Label5: TspSkinStdLabel;
Label6: TspSkinStdLabel;
FTPAdder: TspSkinEdit;
FTPPort: TspSkinEdit;
FTPUser: TspSkinEdit;
Panel2: TspSkinPanel;
Label7: TspSkinStdLabel;
IpFileEdit: TspSkinEdit;
Label8: TspSkinStdLabel;
IPAddEdit: TspSkinComboBox;
RadioBox1: TspSkinCheckRadioBox;
FtpButton1: TspSkinButton;
Label1: TspSkinLabel;
Label10: TspSkinStdLabel;
user126: TspSkinEdit;
Label12: TspSkinStdLabel;
Label13: TspSkinStdLabel;
Label14: TspSkinStdLabel;
ComboBox1: TspSkinComboBox;
RadioBox2: TspSkinCheckRadioBox;
URLButton: TspSkinButton;
TabSheet4: TspSkinTabSheet;
Label20: TspSkinStdLabel;
UserEdit: TspSkinEdit;
Label21: TspSkinStdLabel;
Label22: TspSkinStdLabel;
IPComboBox2: TspSkinComboBox;
Button3: TspSkinButton;
IdHTTP1: TIdHTTP;
Label23: TspSkinStdLabel;
EmailEdit1: TspSkinEdit;
TabSheet3: TspSkinTabSheet;
Label15: TspSkinStdLabel;
XwEdit: TspSkinEdit;
Label17: TspSkinStdLabel;
Xwuser: TspSkinEdit;
Label18: TspSkinStdLabel;
Label19: TspSkinStdLabel;
XWComboBox: TspSkinComboBox;
CheckRadioBox1: TspSkinCheckRadioBox;
XWButton: TspSkinButton;
Label16: TLabel;
Label9: TspSkinStdLabel;
httpEdit: TspSkinEdit;
YComboBox: TspSkinComboBox;
Label11: TLabel;
ComboBox10: TspSkinComboBox;
Label24: TspSkinStdLabel;
IdHTTP2: TIdHTTP;
FTPPass1: TspSkinPasswordEdit;
FTPPass2: TspSkinPasswordEdit;
spSkinEdit2: TspSkinPasswordEdit;
pass126: TspSkinPasswordEdit;
Xwpass: TspSkinPasswordEdit;
PassEdit1: TspSkinPasswordEdit;
PassEdit2: TspSkinPasswordEdit;
NMFTP1: TNMFTP;
procedure Button3Click(Sender: TObject);
procedure AfterGetFile(Sender: TObject);
procedure FtpButton1Click(Sender: TObject);
procedure URLButtonClick(Sender: TObject);
procedure RadioBox1Click(Sender: TObject);
procedure RadioBox2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure XWButtonClick(Sender: TObject);
procedure Label16Click(Sender: TObject);
procedure CheckRadioBox1Click(Sender: TObject);
procedure Label11Click(Sender: TObject);
procedure user126Change(Sender: TObject);
procedure spSkinEdit2Change(Sender: TObject);
procedure YComboBoxClick(Sender: TObject);
procedure NMFTP1Success(Trans_Type: TCmdType);
procedure NMFTP1Connect(Sender: TObject);
procedure NMFTP1ConnectionFailed(Sender: TObject);
procedure NMFTP1Error(Sender: TComponent; Errno: Word; Errmsg: String);
procedure NMFTP1Status(Sender: TComponent; Status: String);
private
{ Private declarations }
public
{ Public declarations }
i: integer;
procedure Get_UserFile;
function Update(Body,UpdateS:String):Boolean;
end;
var
UpIpDate: TUpIpDate;
implementation
uses
Main;
{$R *.dfm}
function CenterStr(Src:String;Before,After:String):String;
{ 这个函数用来分离两个字符串中间的字符串,
例如 ..('DelphiBox.com','Delphi','.com')=>'Box'。 }
var
Pos1,Pos2:WORD;
Temp:String;
begin
Temp:=Src;
Pos1:=Pos(Before,Temp);
Delete(Temp,1,Pos1+Length(Before));
Pos2:=Pos(After,Temp);
if (Pos1=0) or (Pos2=0) then
begin
Result:='';
Exit;
end;
Pos1:=Pos1+Length(Before);
Result:=Copy(Src,Pos1,Pos2);
end;
function GetDefaultProxyServer(var ProxyStr: TProxyServerInf):Boolean;
var
ProxyInfo: PInternetProxyInfo;
Buffer: Pointer;
BUF_SIZE: DWORD;
Temp,Tmpip:String;
i:integer;
begin
Result := False;
try
BUF_SIZE:=1024;
GetMem(Buffer,BUF_SIZE);
ProxyStr.httpName :='';
ProxyStr.httpport :=0;
ProxyStr.SocksName :='';
ProxyStr.Socksport :=0;
if InternetQueryOption(nil,INTERNET_OPTION_PROXY,Buffer,BUF_SIZE) then
begin
ProxyInfo := Buffer;
if ProxyInfo^.lpszProxy<>'' then
begin
Temp:= ProxyInfo^.lpszProxy+' ';
//HgzFsbSVip.Memo1.Lines.Text:=Temp;
i:=pos('http=',Temp);
if i>0 then
begin
Tmpip:=CenterStr(Temp,'http=',' ');
i:=pos(':',Tmpip);
if i>0 then
begin
ProxyStr.httpName:=Copy(Tmpip,1,i-1);
ProxyStr.httpport:=Strtoint(Copy(Tmpip,i+1,Length(Tmpip)));
end;
end;
i:=pos('socks=',Temp);
if i>0 then
begin
Tmpip:=CenterStr(Temp,'socks=',' ');
i:=pos(':',Tmpip);
if i>0 then
begin
ProxyStr.SocksName :=Copy(Tmpip,1,i-1);
ProxyStr.Socksport:=Strtoint(Copy(Tmpip,i+1,Length(Tmpip)));
end;
end;
if (ProxyStr.httpName='') and (ProxyStr.SocksName='') then
begin
i:=pos(':',Temp);
if i>0 then
begin
Delete(Temp,Length(Temp),1);
ProxyStr.httpName :=Copy(Temp,1,i-1);
ProxyStr.httpport :=Strtoint(Copy(Temp,i+1,Length(Temp)));
end;
end;
//HgzFsbSVip.Memo1.Lines.Add('HTTP:'+ProxyStr.httpName);
//HgzFsbSVip.Memo1.Lines.Add('PORT:'+inttoStr(ProxyStr.httpport));
Result := True;
end else begin
Result := False;
end;
end Else begin
Result := False;
end;
finally
FreeMem(Buffer);
end;
end;
procedure TUpIpDate.Get_UserFile;
var
IPFile:String;
F: textfile;
begin
try
IPFile := ExtractFilePath(Paramstr(0)) + 'FTPIp.dat';
AssignFile(F,IPFile);
Rewrite(F);{F为TextFile类型}
WriteLn(F,'http://huigezi'+IPAddEdit.Text+'end');
CloseFile(F);
except
Label1.Caption:=Translate('String0','写FTP上传文件出错.');
Exit;
end;
with NMFTP1 do
begin
Host := FTPAdder.Text;
Port := Strtoint(FTPPort.Text);// Standardport
TimeOut := 20000; // 20 sek Versuch
UserID := FTPUser.Text;
Password := FTPPass1.Text;
Connect;
Mode(MODE_IMAGE);
Upload(IPFile,IpFileEdit.Text);
end;
{ GetThread := TFTPThreadEx.Create(True);
with GetThread do begin
LocalFile := IPFile;
RemoteFile := IpFileEdit.Text;
Host := FTPAdder.Text;
FtpPorts := Strtoint(FTPPort.Text);
UserName := FTPUser.Text;
Password := FTPPass1.Text;
FTPMode := FtpSend;
StatProc := FTPStatus;
OnTerminate := AfterGetFile;
NeedSave := DoSave;
end;
GetThread.Resume; }
end;
procedure TUpIpDate.AfterGetFile(Sender: TObject);
var
Temp:String;
begin
try
if httpEdit.Text<>'' then
begin
Temp:=IdHTTP1.Get(httpEdit.Text);
if pos(IPAddEdit.Text,Temp)>0 then
begin
Label1.Caption:=Translate('String1','FTP更新IP成功.');
if HgzVip.isSound then
begin
try
sndplaysound('',snd_async);
sndplaysound(Pchar(HgzVip.UpIPok),snd_async);
except
end;
end;
end else begin
Label1.Caption:=Translate('String2','FTP更新IP完成.但Http访问无效.');
end;
end else begin
Label1.Caption:=Translate('String1','FTP更新IP成功.');
if HgzVip.isSound then
begin
try
sndplaysound('',snd_async);
sndplaysound(Pchar(HgzVip.UpIPok),snd_async);
except
end;
end;
end;
except
Label1.Caption:=Translate('String3','FTP更新IP完成.但Http访问出错.');
end;
end;
function Replace(Str: String;Find:string;ToStr:String): string;
var
Text,A,B: String;
i,k: Integer;
begin
Text:=Str;
for k:=1 to Length(Str) do
begin
i:=pos(Find,Text);
if i>0 then
begin
Delete(Text,i,Length(Find));
A:=copy(Text,1,i-1);
B:= copy(Text,i,Length(Text));
Text:=A+ToStr+B;
end else break;
end;
Result := Text;
end;
procedure TUpIpDate.FtpButton1Click(Sender: TObject);
begin
if FTPAdder.Text='' then
begin
Label1.Caption :=Translate('String4','请输入FTP服务器地址!');
Exit;
end;
if FTPUser.Text='' then
begin
Label1.Caption :=Translate('String5','请输入FTP用户名!');
Exit;
end;
if FTPPass1.Text<>FTPPass2.Text then
begin
Label1.Caption :=Translate('String6','两次密码输入不一样!');
FTPPass1.Text:='';
FTPPass2.Text:='';
Exit;
end;
Get_UserFile;
end;
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;
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.ComboBox10.ItemIndex=0 then
Temp:=UpIpDate.IdHTTP1.Get('http://my.126.com/cgi-bin/register?username='+username+'&domain=126.com&password='+pass+'&password2='+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&password='+pass+'&password2='+pass+'&email='+UpIpDate.EmailEdit1.Text+
'&url=http://huigezi'+UpIpDate.IPComboBox2.Text+'end');
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;
type
TZhuCeThread = class(TThread)
public
procedure Execute; override;
end;
procedure TZhuCeThread.Execute;
begin
ZhuIPtohttp;
Terminate;
end;
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:='';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -