Commit 2686174d0477b4a2c4aa77e419833291fff69412

Authored by totoro
2 parents 2d17df23 c8072f8a

Merge branch 'release/ANUBIS_1_14' of ssh://gitlab.calexium.com:33022/calexium/c…

…alexium_lib into release/ANUBIS_1_14
web/CXM_multihost_http_server.anubis
... ... @@ -685,20 +685,20 @@ type EncodingType:
685 685 multipart_form_data.
686 686  
687 687  
688   -type BufferedConnection:
689   - buffered_connection(Connection conn,
  688 +public type HTTP_BufferedConnection:
  689 + http_buffered_connection(Connection conn,
690 690 Var(ByteArray) buffer,
691 691 Var(Int) read_pos,
692 692 Var(List(Word8)) unput_chars // for reading requests
693 693 ).
694 694  
695 695  
696   -define BufferedConnection
697   - buffered_connection
  696 +public define HTTP_BufferedConnection
  697 + http_buffered_connection
698 698 (
699 699 Connection conn
700 700 )=
701   - buffered_connection(conn, var(constant_byte_array(0, 0)), var(0), var([]))
  701 + http_buffered_connection(conn, var(constant_byte_array(0, 0)), var(0), var([]))
702 702 .
703 703  
704 704  
... ... @@ -777,7 +777,7 @@ define One
777 777 unput // unputting a character (add it in front of the list)
778 778 (
779 779 Word8 character,
780   - BufferedConnection s
  780 + HTTP_BufferedConnection s
781 781 ) =
782 782 s.unput_chars <- (List(Word8))[character . *(s.unput_chars)].
783 783  
... ... @@ -829,7 +829,7 @@ define One
829 829 define ReadResult
830 830 read_from_connexion
831 831 (
832   - BufferedConnection connection,
  832 + HTTP_BufferedConnection connection,
833 833 Int size,
834 834 Int time_out,
835 835 ByteArray result_buffer,
... ... @@ -881,7 +881,7 @@ define Result(Error,Word8)
881 881 next_char // reading a character (check the list first, and read on the connection
882 882 // only when the list is empty).
883 883 (
884   - BufferedConnection connection
  884 + HTTP_BufferedConnection connection
885 885 // Int dead_line,
886 886 // DenialOfService dos
887 887 ) =
... ... @@ -937,7 +937,7 @@ define Result(Error,Word8)
937 937 define ByteArray
938 938 get_and_erase_buffer
939 939 (
940   - BufferedConnection connection
  940 + HTTP_BufferedConnection connection
941 941 )=
942 942 with head = to_byte_array(implode(*connection.unput_chars)),
943 943 tail = extract(*connection.buffer, *connection.read_pos, length(*connection.buffer)),
... ... @@ -971,7 +971,7 @@ define ByteArray
971 971 define Result(Error,One)
972 972 read_and_ignore
973 973 (
974   - BufferedConnection connection, // to client
  974 + HTTP_BufferedConnection connection, // to client
975 975 Int number_of_characters // number of characters to read and ignore
976 976 ) =
977 977 if number_of_characters =< 0 then
... ... @@ -999,7 +999,7 @@ define Result(Error,One)
999 999 define Result(Error,String)
1000 1000 read_string
1001 1001 (
1002   - BufferedConnection connection, // connection with the client
  1002 + HTTP_BufferedConnection connection, // connection with the client
1003 1003 List(Word8) so_far // characters read so far (in reverse order)
1004 1004 ) =
1005 1005 if next_char(connection) is
... ... @@ -1297,34 +1297,36 @@ define Bool
1297 1297 Skipping HTTP blanks.
1298 1298  
1299 1299 define Result(Error,One)
1300   - skip_http_blanks
1301   - (
1302   - BufferedConnection connection
1303   - ) =
1304   - if next_char(connection) is
1305   - {
1306   - error(msg) then error(msg),
1307   - ok(c) then
1308   - if is_strict_blank(c)
1309   - then skip_http_blanks(connection)
1310   - else if c = 13
  1300 + skip_http_blanks
  1301 + (
  1302 + HTTP_BufferedConnection connection
  1303 + )
  1304 + =
  1305 + if next_char(connection) is
  1306 + {
  1307 + error(msg) then error(msg),
  1308 + ok(c) then
  1309 + if is_strict_blank(c)
  1310 + then skip_http_blanks(connection)
  1311 + else if c = 13
  1312 + then if next_char(connection) is
  1313 + {
  1314 + error(msg) then error(msg), // (unput(c); ok(unique)),
  1315 + ok(d) then
  1316 + if d = 10
1311 1317 then if next_char(connection) is
1312 1318 {
1313   - error(msg) then error(msg), // (unput(c); ok(unique)),
1314   - ok(d) then
1315   - if d = 10
1316   - then if next_char(connection) is
1317   - {
1318   - error(msg) then error(msg), // (unput(d); unput(c); ok(unique)),
1319   - ok(e) then
1320   - if is_strict_blank(e)
1321   - then skip_http_blanks(connection)
1322   - else (unput(e, connection); unput(d, connection); unput(c, connection); ok(unique))
1323   - }
1324   - else (unput(d, connection); unput(c, connection); ok(unique))
  1319 + error(msg) then error(msg), // (unput(d); unput(c); ok(unique)),
  1320 + ok(e) then
  1321 + if is_strict_blank(e)
  1322 + then skip_http_blanks(connection)
  1323 + else (unput(e, connection); unput(d, connection); unput(c, connection); ok(unique))
1325 1324 }
1326   - else (unput(c, connection); ok(unique))
1327   - }.
  1325 + else (unput(d, connection); unput(c, connection); ok(unique))
  1326 + }
  1327 + else (unput(c, connection); ok(unique))
  1328 + }
  1329 +.
1328 1330  
1329 1331  
1330 1332  
... ... @@ -1353,7 +1355,7 @@ define Result(Error,One)
1353 1355 public define Result(Error,One)
1354 1356 read_new_line
1355 1357 (
1356   - BufferedConnection connection
  1358 + HTTP_BufferedConnection connection
1357 1359 ) =
1358 1360 if skip_http_blanks(connection) is
1359 1361 {
... ... @@ -1384,7 +1386,7 @@ public define Result(Error,One)
1384 1386 public define Result(Error,One)
1385 1387 skip_line
1386 1388 (
1387   - BufferedConnection connection
  1389 + HTTP_BufferedConnection connection
1388 1390 ) =
1389 1391 if next_char(connection) is
1390 1392 {
... ... @@ -1423,7 +1425,7 @@ public define Result(Error,One)
1423 1425 define Result(Error,String)
1424 1426 read_word_aux
1425 1427 (
1426   - BufferedConnection connection,
  1428 + HTTP_BufferedConnection connection,
1427 1429 List(Word8) so_far
1428 1430 ) =
1429 1431 if next_char(connection) is
... ... @@ -1439,7 +1441,7 @@ define Result(Error,String)
1439 1441 define Result(Error,String)
1440 1442 read_word
1441 1443 (
1442   - BufferedConnection connection
  1444 + HTTP_BufferedConnection connection
1443 1445 ) =
1444 1446 if skip_http_blanks(connection) is
1445 1447 {
... ... @@ -1613,7 +1615,7 @@ define Result(Error,HTTP_RequestType)
1613 1615 public define Result(Error, HTTP_RequestLine)
1614 1616 read_request_line
1615 1617 (
1616   - BufferedConnection connection
  1618 + HTTP_BufferedConnection connection
1617 1619 ) =
1618 1620 if read_word(connection) is
1619 1621 {
... ... @@ -1664,7 +1666,7 @@ define Bool
1664 1666 define Result(Error,String)
1665 1667 read_header_name
1666 1668 (
1667   - BufferedConnection connection,
  1669 + HTTP_BufferedConnection connection,
1668 1670 List(Word8) so_far
1669 1671 ) =
1670 1672 if next_char(connection) is
... ... @@ -1679,7 +1681,7 @@ define Result(Error,String)
1679 1681 define Result(Error,One)
1680 1682 skip_colon
1681 1683 (
1682   - BufferedConnection connection
  1684 + HTTP_BufferedConnection connection
1683 1685 ) =
1684 1686 //Skip the blank char until ':'
1685 1687 if skip_http_blanks(connection) is
... ... @@ -1699,7 +1701,7 @@ define Result(Error,One)
1699 1701 define Result(Error,String)
1700 1702 read_header_value
1701 1703 (
1702   - BufferedConnection connection,
  1704 + HTTP_BufferedConnection connection,
1703 1705 List(Word8) so_far
1704 1706 ) =
1705 1707 if next_char(connection) is
... ... @@ -1731,7 +1733,7 @@ define Result(Error,String)
1731 1733 define Result(Error,Maybe(HTTP_header))
1732 1734 read_header
1733 1735 (
1734   - BufferedConnection connection
  1736 + HTTP_BufferedConnection connection
1735 1737 ) =
1736 1738 //Find the name
1737 1739 if read_header_name(connection, []) is
... ... @@ -1772,7 +1774,7 @@ define Result(Error,Maybe(HTTP_header))
1772 1774 public define Result(Error,List(HTTP_header))
1773 1775 read_http_headers
1774 1776 (
1775   - BufferedConnection connection
  1777 + HTTP_BufferedConnection connection
1776 1778 ) =
1777 1779 if read_header(connection) is
1778 1780 {
... ... @@ -1831,13 +1833,13 @@ public define Result(Error,Int)
1831 1833 make at most 10 retries, with a small sleeping time between any two of them.
1832 1834  
1833 1835 public define Result(Error, ByteArray)
1834   - read_http_body
1835   - (
1836   - BufferedConnection connection,
1837   - Int body_size,
1838   - ByteArray so_far, // when calling this function, 'so_far' is the empty byte array
1839   - Int retries // this function is called with retries = 10
1840   - ) =
  1836 + read_http_body
  1837 + (
  1838 + HTTP_BufferedConnection connection,
  1839 + Int body_size,
  1840 + ByteArray so_far, // when calling this function, 'so_far' is the empty byte array
  1841 + Int retries // this function is called with retries = 10
  1842 + )=
1841 1843 if body_size = 0 then ok(constant_byte_array(0,0)) else
1842 1844 if retries =< 0 then error(cannot_read_from_connection) else
1843 1845  
... ... @@ -3152,7 +3154,7 @@ define One
3152 3154 http_https_handler
3153 3155 (
3154 3156 List(Web_Site_Description) sites,
3155   - BufferedConnection connection,
  3157 + HTTP_BufferedConnection connection,
3156 3158 Bool is_https,
3157 3159 DenialOfService dos,
3158 3160 SState s,
... ... @@ -3300,7 +3302,7 @@ define Server -&gt; ((RWStream) -&gt; One)
3300 3302 if is_dubious_IP(addr,dos)
3301 3303 then print("Rejecting dubious IP address "+ip_addr_to_string(addr)+"\n")
3302 3304 else
3303   - with connection = buffered_connection(tcp(conn), var(constant_byte_array(0, 0)), var(0), var([])),
  3305 + with connection = http_buffered_connection(tcp(conn), var(constant_byte_array(0, 0)), var(0), var([])),
3304 3306 http_https_handler(sites, connection, false, dos, sstate(var(0),var(0)), shutdown_required).
3305 3307 public define One
3306 3308 http_direct_handler
... ... @@ -3314,7 +3316,7 @@ public define One
3314 3316 if is_dubious_IP(addr,dos)
3315 3317 then print("Rejecting dubious IP address "+ip_addr_to_string(addr)+"\n")
3316 3318 else
3317   - with connection = buffered_connection(tcp(conn), var(constant_byte_array(0, 0)), var(0), var([])),
  3319 + with connection = http_buffered_connection(tcp(conn), var(constant_byte_array(0, 0)), var(0), var([])),
3318 3320 http_https_handler(sites, connection, false, dos, sstate(var(0),var(0)), shutdown_required).
3319 3321  
3320 3322  
... ... @@ -3326,7 +3328,7 @@ define Server -&gt; (SSL_Connection -&gt; One)
3326 3328 (One) -> Bool shutdown_required
3327 3329 ) =
3328 3330 (Server server) |-> (SSL_Connection conn) |->
3329   - with connection = buffered_connection(ssl(conn), var(constant_byte_array(0, 0)), var(0), var([])),
  3331 + with connection = http_buffered_connection(ssl(conn), var(constant_byte_array(0, 0)), var(0), var([])),
3330 3332 http_https_handler(sites, connection, true, dos, sstate(var(0),var(0)), shutdown_required).
3331 3333  
3332 3334  
... ... @@ -3722,7 +3724,7 @@ define Server -&gt; ((RWStream) -&gt; One)
3722 3724 ) =
3723 3725 (Server server) |-> (RWStream conn) |->
3724 3726 with start_time = (Int)now,
3725   - connection = buffered_connection(tcp(conn), var(constant_byte_array(0, 0)), var(0), var([])),
  3727 + connection = http_buffered_connection(tcp(conn), var(constant_byte_array(0, 0)), var(0), var([])),
3726 3728 if read_request_line(connection) is
3727 3729 {
3728 3730 error(msg) then print(format(msg)),
... ...
web/CXM_xml_rpc.anubis
... ... @@ -304,7 +304,7 @@ define Maybe(XML_RPC_response)
304 304 )=
305 305 //TODO find the header and content-lenght to get full length of answer
306 306 //construct a buffered connection
307   - with b_con = buffered_connection(conn),
  307 + with b_con = http_buffered_connection(conn),
308 308 if skip_line(b_con) is
309 309 {
310 310 error(msg) then print(format(msg));failure,
... ...
web/widgets/left_menu.anubis
... ... @@ -43,6 +43,16 @@ public define Left_Menu_Entry
43 43 public define Left_Menu_Entry
44 44 left_menu_entry
45 45 (
  46 + String entry_id,
  47 + String action,
  48 + String text
  49 + )=
  50 + left_menu_entry(entry_id, [], action_name(action), text, [])
  51 + .
  52 +
  53 +public define Left_Menu_Entry
  54 + left_menu_entry
  55 + (
46 56 String entry_id, //it's also use as icon prefix
47 57 WEB_Action_Name action, //action (url to apply when click
48 58 String text, //text to show
... ... @@ -50,6 +60,17 @@ public define Left_Menu_Entry
50 60 )=
51 61 left_menu_entry(entry_id, [], action, text, extra)
52 62 .
  63 +
  64 +public define Left_Menu_Entry
  65 + left_menu_entry
  66 + (
  67 + String entry_id, //it's also use as icon prefix
  68 + String action, //action (url to apply when click
  69 + String text, //text to show
  70 + List((String, String)) extra //extra web arguments to send when click
  71 + )=
  72 + left_menu_entry(entry_id, [], action_name(action), text, extra)
  73 + .
53 74  
54 75 public define Left_Menu_Entry
55 76 title
... ...