log.s=""
pas.s=""
vpi=1
vci=32
Enumeration
#Window_0
#console_2
#Font_console_2
EndEnumeration
InitNetwork()
Global Connect
Procedure.s SendModemData(Connect, Command.s) ; Процедура, передающая команду модему и получающая от него ответ
Result_SendModemData.s=""
Count=0
Command=Command+Chr(13)+Chr(10)
SendNetworkData(Connect, @Command, Len(Command)) ; Передача команды
Repeat ; В цикле ожидается ответ
Delay(20)
If NetworkClientEvent(Connect)=#PB_NetworkEvent_Data ; От модема получены данные
*mem=AllocateMemory(10000) ; Память под данные
If *mem
ReceiveNetworkData(Connect,*mem,10000) ; Считывание данных
In.s=PeekS(*mem)
FreeMemory(*mem)
Result_SendModemData=Result_SendModemData+In
EndIf
EndIf
Count+1
Until Count>=80
ProcedureReturn Result_SendModemData
EndProcedure
Procedure Modem_Open(IP_Address.s, Login.s, Password.s)
Protected Result=0
; >0 - Всё ОК. Результат это идентификатор связи
; 0 - Нет связи с модемом
; -1 - модем не ответил
; -2 - Неправильный логин или пароль
Connect=OpenNetworkConnection(IP_Address, 23) ; Установка связи с модемом
AddGadgetItem(#console_2,-1, "IP адрес модема: "+IP_Address.s+Chr(10)+Chr(10))
If Connect=0
AddGadgetItem(#console_2,-1, "Подключение потерпело неудачу"+Chr(10)+"--------------------------------------------"+Chr(10)+Chr(10))
EndIf
If Connect
Result=Connect
Delay(100)
res.s=SendModemData(Connect, Login) ; Логин доступа к модему
res=Mid(res, 22)+"admin"
;res=ReplaceString(res,Chr(10), Chr(10)+Chr(10),0)
AddGadgetItem(#console_2,-1,res)
SendModemData(Connect, Password) ; Пароль доступа к модему
Delay(400)
Out.s=SendModemData(Connect, "ping")
AddGadgetItem(#console_2,-1, Chr(10)+Chr(10)+Out)
If Out=""
CloseNetworkConnection(Connect)
AddGadgetItem(#console_2,-1, "модем не ответил"+Chr(10)+"--------------------------------------------"+Chr(10)+Chr(10))
Result=-1
ElseIf FindString(LCase(Out),"login",1) Or FindString(LCase(Out),"password",1)
AddGadgetItem(#console_2,-1, "Неправильный логин или пароль"+Chr(10)+"--------------------------------------------"+Chr(10)+Chr(10))
CloseNetworkConnection(Connect)
Result=-2
EndIf
EndIf
;------------прокручивание редактора------------------------------------
Range.CHARRANGE
Range\cpMin = -1
Range\cpMax = -1
SendMessage_(GadgetID(#console_2),#EM_EXSETSEL,0,Range)
ProcedureReturn Result
EndProcedure
Procedure Profile_Info(xx)
IP.s=GetGadgetText(3)
Connect=Modem_Open(IP, "admin", "admin")
If Connect<>0
Otvet.s=SendModemData(Connect,"wan show")
AddGadgetItem(#console_2,-1,Chr(10)+"*********************************************************************************************************************************"+Chr(10)+Otvet.s+Chr(10)+"*********************************************************************************************************************************"+Chr(10))
EndIf
DisableGadget(7,0)
DisableGadget(5,0)
DisableGadget(4,0)
EndProcedure
Procedure WAN_Add_Router_Inet(Connect, port, vpi, vci, Login.s, Pas.s)
Protected PVC.s, Command.s, Otvet.s
; Создание профиля формата "Роутер" для сети Интернет. При успешном создании профиля, результат 1, в протичном случае - 0
PVC=Str(port)+"."+Str(vpi)+"."+Str(vci)
Delay(400)
Command="wan config "+PVC+" --protocol pppoe --username "+Login+" --password "+Pas+" --pppipextension enable"+Chr(13)+Chr(10)
Otvet=SendModemData(Connect, Command)
Delay(400)
AddGadgetItem(#console_2,-1,Chr(10)+"*********************************************************************************************************************************"+Chr(10)+Otvet.s+Chr(10)+"*********************************************************************************************************************************"+Chr(10))
Command.s="save"
Otvet.s=SendModemData(Connect, Command)
AddGadgetItem(#console_2,-1,Chr(10)+"*********************"+Chr(10)+Otvet.s)
;Command.s="reboot"+Chr(13)+Chr(10)
;Otvet.s=SendModemData(Connect, Command)
;AddGadgetItem(#console_2,-1,Chr(10)+Otvet.s+Chr(10)+"*********************"+Chr(10))
;------------прокручивание редактора------------------------------------
Range.CHARRANGE
Range\cpMin = -1
Range\cpMax = -1
SendMessage_(GadgetID(#console_2),#EM_EXSETSEL,0,Range)
ProcedureReturn 1
EndProcedure
If OpenWindow(#Window_0,0,0, 606, 440, "Modem Connection", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
EditorGadget(#console_2, 3, 60, 600, 370)
SetGadgetFont(#console_2, LoadFont(#Font_console_2, "Lucida Console", 8, #PB_Font_HighQuality))
SetGadgetColor(#console_2, #PB_Gadget_FrontColor, $40FF00)
SetGadgetColor(#console_2, #PB_Gadget_BackColor, $0)
ButtonGadget(8, 10, 10, 150, 25, "Проверить соединение")
IPAddressGadget(3, 180, 12, 110, 20)
SetGadgetState(3,MakeIPAddress(192,168,1,1))
ButtonGadget(7, 310, 10, 70, 25, "Удалить"):DisableGadget(7,1)
ButtonGadget(5, 400, 10, 70, 25, "Создать"):DisableGadget(5,1)
ButtonGadget(4, 490, 10, 70, 25, "Справка"):DisableGadget(4,1)
EndIf
Repeat
Event = WaitWindowEvent()
Window = EventWindow()
Gadget = EventGadget()
Select Event
Case #PB_Event_CloseWindow
If Connect<>0
CloseNetworkConnection(Connect)
EndIf
Break
Case #PB_Event_Gadget
Select EventGadget()
Case 8
If Connect<>0
CloseNetworkConnection(Connect)
EndIf
Thread=CreateThread(@Profile_Info(),0)
Case 7 ; удалить
If Connect<>0
PVC.s="0.1.32"
Command.s="wan delete "+PVC ; удалить
Otvet.s=SendModemData(Connect,Command)
AddGadgetItem(#console_2,-1,Chr(10)+"*********************"+Chr(10)+Otvet.s)
Command.s="save"
Otvet.s=SendModemData(Connect, Command)
AddGadgetItem(#console_2,-1,Chr(10)+"*********************"+Chr(10)+Otvet.s)
;Command.s="reboot"+Chr(13)+Chr(10)
;Otvet.s=SendModemData(Connect, Command)
;AddGadgetItem(#console_2,-1,Chr(10)+Otvet.s+Chr(10)+"*********************"+Chr(10))
;------------прокручивание редактора------------------------------------
Range.CHARRANGE
Range\cpMin = -1
Range\cpMax = -1
SendMessage_(GadgetID(#console_2),#EM_EXSETSEL,0,Range)
EndIf
Case 5 ; создать профиль
If Connect<>0
WAN_Add_Router_Inet(Connect, 0, vpi, vci, log, pas)
EndIf
Case 4 ; помощь
If Connect<>0
Command.s="wan --help"
Otvet.s=SendModemData(Connect, Command)
AddGadgetItem(#console_2,-1,Chr(10)+"*********************"+Chr(10)+Otvet.s)
Range.CHARRANGE
Range\cpMin = -1
Range\cpMax = -1
SendMessage_(GadgetID(#console_2),#EM_EXSETSEL,0,Range)
EndIf
EndSelect
EndSelect
ForEver