ramccor / esmska

Automatically exported from code.google.com/p/esmska
0 stars 0 forks source link

poslatSMS - nova implementace #469

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Dobrý večer, píšu ohledně té pomoci s bránou. Jedná se o bránu 
poslatSMS. Už se tu o ní psalo a teď je opravdu spolehlivá.
Při posílání POST dat dojde k přesměrování (kód 302). SMS se mi vždy 
odešle. Dochází k chybě v kódu
content = EXEC.postURL("http://www.poslatsms.cz/Send", [], postData)

content ale potřebuju, protože pokud náhodou pošlu stejnému adresátovi 
více zpráv než 3, tak se brána na chvíli zablokuje a k přesměrování 
nedojde...

send metoda...

 // start page
    content = EXEC.getURL("http://www.poslatsms.cz/", [])
    // timestamp
    ts = 0
    re = /name="timestamp" value="(.+)"/
    match = re.exec(content)
    ts = match[1]
    // send message
    postData = ["timestamp", ts,
                "sendingProfile1", "13",
                "sendingProfile2", "23",
                "sendingProfile3", "33",
                "textsms", MESSAGE,
                "cislo-prijemce", NUMBER,
                "cislo-odesilatele", "",
                ]

    content = EXEC.postURL("http://www.poslatsms.cz/Send", [],postData)

výpis z logu...

FINER: SMS [recipient=Mizera František, gateway=[CZ]PoslatSMS.cz] has a new 
status: SENDING
29.9.2014 19:52:52 esmska.data.Log addRecord
FINER: A new log record added: [time=Mon Sep 29 19:52:52 CEST 2014]
29.9.2014 19:52:52 esmska.transfer.GatewayInterpreter sendMessage
FINE: Sending SMS to: [CZ]PoslatSMS.cz [version=2014-07-05]
29.9.2014 19:52:52 esmska.transfer.GatewayConnector setLanguage
FINER: Preferred language set: cs
29.9.2014 19:52:52 esmska.gui.GatewayMessageFrame formWindowClosing
FINER: Hiding GatewayMessageDialog, cancelling all requests
29.9.2014 19:52:52 esmska.transfer.GatewayConnector doGet
FINE: Getting url: http://www.poslatsms.cz/
29.9.2014 19:52:52 esmska.transfer.GatewayConnector doPost
FINE: Posting data to url: http://www.poslatsms.cz/Send
29.9.2014 19:52:52 esmska.transfer.GatewayConnector doPost
FINE: Following http redirect to: 
http://www.poslatsms.cz/Completed?id=41198766|25234e2a
29.9.2014 19:52:52 esmska.transfer.GatewayConnector doGet
FINE: Getting url: http://www.poslatsms.cz/Completed?id=41198766|25234e2a
29.9.2014 19:52:53 esmska.transfer.GatewayExecutor postURL
WARNING: Could not execute postURL
java.lang.IllegalArgumentException: Invalid uri 
'http://www.poslatsms.cz/Completed?id=41198766|25234e2a': Invalid query
    at org.apache.commons.httpclient.HttpMethodBase.<init>(HttpMethodBase.java:222)
    at org.apache.commons.httpclient.methods.GetMethod.<init>(GetMethod.java:89)
    at esmska.transfer.GatewayConnector.doGet(GatewayConnector.java:250)
    at esmska.transfer.GatewayConnector.doPost(GatewayConnector.java:389)
    at esmska.transfer.GatewayConnector.connect(GatewayConnector.java:213)
    at esmska.transfer.GatewayExecutor.postURL(GatewayExecutor.java:158)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:160)
    at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:243)
    at org.mozilla.javascript.optimizer.OptRuntime.callN(OptRuntime.java:86)
    at org.mozilla.javascript.gen.c462._c16(<Unknown source>:106)
    at org.mozilla.javascript.gen.c462.call(<Unknown source>)
    at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:401)
    at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3003)
    at org.mozilla.javascript.gen.c462.call(<Unknown source>)
    at com.sun.phobos.script.javascript.RhinoScriptEngine.invokeMethod(RhinoScriptEngine.java:245)
    at com.sun.phobos.script.javascript.RhinoScriptEngine.invokeFunction(RhinoScriptEngine.java:216)
    at esmska.transfer.GatewayInterpreter.sendMessage(GatewayInterpreter.java:88)
    at esmska.transfer.SMSSender$SMSWorker.doInBackground(SMSSender.java:131)
    at esmska.transfer.SMSSender$SMSWorker.doInBackground(SMSSender.java:105)
    at javax.swing.SwingWorker$1.call(Unknown Source)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at javax.swing.SwingWorker.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
29.9.2014 19:52:53 esmska.transfer.GatewayInterpreter sendMessage
SEVERE: Error executing gateway script file [CZ]PoslatSMS.cz 
[version=2014-07-05]
com.sun.phobos.script.util.ExtendedScriptException: 
org.mozilla.javascript.WrappedException: Wrapped 
java.lang.IllegalArgumentException: Invalid uri 
'http://www.poslatsms.cz/Completed?id=41198766|25234e2a': Invalid query 
(<Unknown source>#106) in <Unknown source> at line number 106
    at com.sun.phobos.script.javascript.RhinoScriptEngine.invokeMethod(RhinoScriptEngine.java:259)
    at com.sun.phobos.script.javascript.RhinoScriptEngine.invokeFunction(RhinoScriptEngine.java:216)
    at esmska.transfer.GatewayInterpreter.sendMessage(GatewayInterpreter.java:88)
    at esmska.transfer.SMSSender$SMSWorker.doInBackground(SMSSender.java:131)
    at esmska.transfer.SMSSender$SMSWorker.doInBackground(SMSSender.java:105)
    at javax.swing.SwingWorker$1.call(Unknown Source)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at javax.swing.SwingWorker.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: org.mozilla.javascript.WrappedException: Wrapped 
java.lang.IllegalArgumentException: Invalid uri 
'http://www.poslatsms.cz/Completed?id=41198766|25234e2a': Invalid query 
(<Unknown source>#106)
    at org.mozilla.javascript.Context.throwAsScriptRuntimeEx(Context.java:1654)
    at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:175)
    at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:243)
    at org.mozilla.javascript.optimizer.OptRuntime.callN(OptRuntime.java:86)
    at org.mozilla.javascript.gen.c462._c16(<Unknown source>:106)
    at org.mozilla.javascript.gen.c462.call(<Unknown source>)
    at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:401)
    at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3003)
    at org.mozilla.javascript.gen.c462.call(<Unknown source>)
    at com.sun.phobos.script.javascript.RhinoScriptEngine.invokeMethod(RhinoScriptEngine.java:245)
    ... 11 more
Caused by: java.lang.IllegalArgumentException: Invalid uri 
'http://www.poslatsms.cz/Completed?id=41198766|25234e2a': Invalid query
    at org.apache.commons.httpclient.HttpMethodBase.<init>(HttpMethodBase.java:222)
    at org.apache.commons.httpclient.methods.GetMethod.<init>(GetMethod.java:89)
    at esmska.transfer.GatewayConnector.doGet(GatewayConnector.java:250)
    at esmska.transfer.GatewayConnector.doPost(GatewayConnector.java:389)
    at esmska.transfer.GatewayConnector.connect(GatewayConnector.java:213)
    at esmska.transfer.GatewayExecutor.postURL(GatewayExecutor.java:158)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:160)
    ... 19 more
29.9.2014 19:52:53 esmska.transfer.GatewayExecutor logCrash

Nevím jak z toho ven...:) V logu se přesměrovaná stránka zobrazí. Dá se 
nějak získat a použít ve scriptu?
Děkuji za ochotu a radu.

František Mizera

PS:Nevím, jestli je pro Vás výhodnější, když Vám pošlu log jako celý 
soubor...

Original issue reported on code.google.com by mizerafr...@gmail.com on 29 Sep 2014 at 6:19

GoogleCodeExporter commented 9 years ago
Vypadá to, že problém je v tom, že formulář přesměrovává na stránku
http://www.poslatsms.cz/Completed?id=41198766|25234e2a
která obsahuje svislou čáru. A na tom padá ta knihovna (httpclient), co 
esmska používá. Vypadá to, že problém je to častější:

http://mail-archives.apache.org/mod_mbox/hc-httpclient-users/201206.mbox/%3C1582
8EDF-A874-4B24-BC11-92F1D2655F17@transpac.com%3E
http://stackoverflow.com/questions/21023856/nutch-crawling-illegalargumentexcept
ion-while-crawling-a-url-which-is-having-p
http://stackoverflow.com/questions/7194750/httpclient-and-non-ascii-url-characte
rs-%C3%A1-%C3%A9-%C3%AD-%C3%B3-%C3%BA

Nejsem si jistej, jestli s tím budu schopen něco udělat (a nerozbít zbytek 
bran). Vycházel jsi z původní verze brány, kterou jsme pak odebrali?
https://github.com/kparal/esmska/commit/98beb7289e21a03d0a8dbbe03329da6743b1236e
Jaktože to předtím fungovalo, od té doby se změnilo zpracování na 
serveru? Kdyžtak vyzkoušej ten původní přístup.

Zkusím něco málo poštelovat v esmsce, ale nevím nevím. Budu potřebovat 
abys přiložil aktuální verzi brány.

Original comment by kamil.paral on 30 Sep 2014 at 2:57

GoogleCodeExporter commented 9 years ago
Ano, vycházel jsem z bývalé brány....
Přikládám verzi brány. Je jednoduchá, končí tím odesláním, pak jsem 
jen něco zkoušel, ohledně potvrzení, zda je sms odeslána. To bych se 
pokusil dodělat eventuelně pak.

Díky.
 Franta Mizera

Original comment by mizerafr...@gmail.com on 30 Sep 2014 at 5:26

Attachments:

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
Tak teď jsem zkoušel ješte starý script. Změnil jsem u něj jen POST data 
a dělá to stejnou chybu, jako můj script. Nicméně sms přišly, jako u 
mého...
Můžu mít jeden odborný dotaz?
Jak je možné, že funguje odkaz http://m.poslatsms.cz a zároveň 
http://www.poslatsms.cz
a taky /?action=Send a /Send?
To je řešené nějak na serveru?
Děkuji.

Original comment by mizerafr...@gmail.com on 30 Sep 2014 at 9:03

GoogleCodeExporter commented 9 years ago
Vyzkoušej http://ripper.profitux.cz/esmska/beta/esmska-1.8.99_poslatsms.tar.gz 
, už by to mělo fungovat.

Co se týká dotazu na adresy, to všechno záleží na serveru. Různé adresy 
může přesměrovávat na různé akce, může mít víc různých adres pro 
stejnou akci, prostě libovolně. V tomto případě to funguje, samozřejmě 
jinde to pravděpodobně fungovat nebude.

Original comment by kamil.paral on 2 Oct 2014 at 1:22

GoogleCodeExporter commented 9 years ago
Díky za odpověď na mé dotazy i za opravu. Teď jsem rychle zkoušel a 
funguje. Pokusím se dodělat tu bránu do funkční podoby včetně kontroly a 
pošlu. 

Original comment by mizerafr...@gmail.com on 2 Oct 2014 at 2:23

GoogleCodeExporter commented 9 years ago
Dobrý den, posílám bránu poslasms. Zkoušel jsem ji ale jen na T-mobile a 
Vodafone, ostatní bohužel nemám možnost otestovat. Když bude fungovat, 
pokusím se udělat tuto bránu i pro registraci.

Original comment by mizerafr...@gmail.com on 3 Oct 2014 at 7:33

Attachments:

GoogleCodeExporter commented 9 years ago
Ahoj, trochu jsem bránu upravil a přiložil ji. Chtělo by to následující 
úpravy:

1. Můžeš prosímtě dát komentáře do angličtiny?

2. Může se stát, že brána bude na status čekat do nekonečna. To není 
asi dobrý nápad, uživatel nebude vědět, co se děje. Nevím jak dlouho to 
běžně trvá, ale asi by bylo dobré, kdyby brána vyhodila chybu, pokud se 
zpráva neodešle do minuty či dvou (koukni do brány T-mobile pro inspiraci 
jak pracovat se systémovým časem). V chybové zprávě by bylo popsané, o 
co jde, a bylo by tam i URL, kde si člověk může později zkontrovat, zda 
už zpráva odešla.

3. Refreshování stavu zprávy po sekundě je dost agresivní, dej to aspoň 
po třech sekundách, a po první půl minutě třeba po 5-10 sekundách.

4. Na řádku 129 používáš match[1], ale nezkontrolovals, jestli jsi to v 
textu opravdu našel. Takže pokud to tam nebude, tak to celé spadne. Lepší 
bude, když v tom případě (text se nenajde) zobrazíš obecnou hlášku že 
zprávy nebyly odeslány, ale důvod je neznámý (a můžeš třeba připojit 
URL pro ruční kontrolu).

Original comment by kamil.paral on 5 Oct 2014 at 4:42

Attachments:

GoogleCodeExporter commented 9 years ago
Díky za připomínky, budu na tom pracovat a zase pošlu. Jediné, co pro mne 
bude určitě problém, bude ten překlad do angličtiny....Učil jsem se 
němčinu...Pokud bych si ještě s něčím nevěděl rady, tak 
napíšu....Děkuji za pomoc, je to pro mne cenná zkušenost.

Original comment by mizerafr...@gmail.com on 5 Oct 2014 at 4:55

GoogleCodeExporter commented 9 years ago
V tom případě není potřeba řešit, je to lepší mít to v angličtině, 
ale úplně nutné to není. Nečekám, že by to případně opravoval někdo, 
kdo neumí česky.

Original comment by kamil.paral on 6 Oct 2014 at 7:36

GoogleCodeExporter commented 9 years ago
Dobrý večer, posílám opravenou bránu PoslatSMS.cz. Předělal jsem, co 
jsem uměl. Budu čekat na Vaše posouzení. Je testována na vodafone a 
t-mobile.
Možná bude fungovat i na nějaké virtuály....
PS:   getDelayBetweenMessages je nastaveno na 15 sekund, protože brána 
odešle na jedno číslo po sobě jen 3 SMS. S tímto nastavením však odešle 
vše.

Franta Mizera

Original comment by mizerafr...@gmail.com on 16 Oct 2014 at 8:18

Attachments:

GoogleCodeExporter commented 9 years ago
Kouknul jsem na to, vypadá to celkem rozumně. Oddělal jsem pár testů typu:

    if(match) {
          ts = match[1]
    } else {
          msg = "Stránka nenačtena. Zkuste zprávu odeslat znovu."
          EXEC.setProblem("GATEWAY_MESSAGE", msg)
          return false
    }

Protože občas je v pořádku, když brána prostě spadne - esmska vypíše 
rozumnou hlášku sama o sobě. Pokud se z toho neumíme zotavit nebo 
nepotřebujeme nějakou specifickou hlášku, není potřeba toto ošetřovat.

Jinak musel jsem celej soubor přeformátovat, protože se to nedalo číst. 
Nastav si prosím příště tabelátor na 4 mezery a zarovnávej závorky a 
obecně bloky kódu pod sebe. Však koukni jak vypadá novej soubor.

Jinak samozřejmě díky za práci. Bohužel to bude až v další verzi 
programu, protože to vyžadovalo změnu kódu. Zatím můžeš testovat zde:
http://ripper.profitux.cz/esmska/beta/esmska-1.8.99.1-poslatsms.tar.gz

Pokud by něco nefungovalo nebo jsi měl další úpravy, pošli. Když 
všechno bude fungovat, vydám novou verzi.

Original comment by kamil.paral on 20 Oct 2014 at 8:06

GoogleCodeExporter commented 9 years ago
Díky moc za pomoc a info o formátování, pokusím se nastavit a naučit.:)

Original comment by mizerafr...@gmail.com on 20 Oct 2014 at 8:54

GoogleCodeExporter commented 9 years ago
Začleněno do masteru:
https://github.com/kparal/esmska/commit/5258864bdb2abb56423f668b35ae278e2a3970e3

Vydám novou verzi a zároveň ukončuji vývoj. Pořád budu přijímat 
rozumné patche, ale sám na programu už dělat nebudu.

Original comment by kamil.paral on 29 Oct 2014 at 5:32