catalinux / Conn (public) (License: LGPLv2) (since 2016-03-01) (hash sha1)
Net library for easy building ipv4/ipv6 network daemons/clients
List of commits:
Subject Hash Author Date (UTC)
Notes goes under the title; title is nicer 8acce1da5bc4866b6a4bf7fb2af53750e6749a9a Catalin(ux) M. BOIE 2018-08-18 04:40:08
CSS fixes for showing source 1b96ffce7e3744972be0be246cd33d0b107a8553 Catalin(ux) M. BOIE 2018-08-17 03:42:45
Bump version to 1.0.39 9b34e52482191606aa7f92a781d5b5e33a5543c8 Catalin(ux) M. BOIE 2018-05-20 19:14:39
CSS fixes for wsdemo 7fed15a4b4a7ebc154f68a99eb413fea4726ec26 Catalin(ux) M. BOIE 2018-05-20 19:13:44
More compiler flags for security d33f9fdb57826353c755b86493c72993635b1053 Catalin(ux) M. BOIE 2018-05-20 18:56:42
grid1 is working now 0370e6808f8b89fb9ae43fc139195e76247ad6c5 Catalin(ux) M. BOIE 2018-05-12 15:31:00
Added pie2 demo (svg) e8df18b15deafdd0a810a09a251593ecd5fc608f Catalin(ux) M. BOIE 2018-04-17 21:46:02
wsdemo: added Source button 010d08897f99736b9a3f5440af71c2dc40544e68 Catalin(ux) M. BOIE 2018-04-17 17:54:53
More tweaks to wsdemo 56173807662daf36b36907d98bde751749c91075 Catalin(ux) M. BOIE 2018-04-16 18:08:18
Added a callback for worker start 32a05f401d5258f06af9db15a00a615859961cc2 Catalin(ux) M. BOIE 2018-04-16 18:07:55
wsdemo improvements 3eb3efd007fc9240ea39fabcdb4729d1367ebad2 Catalin(ux) M. BOIE 2018-04-13 22:47:24
wsdemo added 2baae01f2409496f990b6d673013b66286f0a5af Catalin(ux) M. BOIE 2018-04-02 21:41:40
Various small stuff 0c551268be734dd68a59426315abfc6ef776c60a Catalin(ux) M. BOIE 2018-04-02 21:40:49
More debugging for websocket parsing 66ccde632b280f1aa450610e6b671464b7e56451 Catalin(ux) M. BOIE 2018-04-02 21:39:23
Raise to 4096 to buffer for logging a59dee1fdfe087ff13e4c7012fe29f8da99ad75c Catalin(ux) M. BOIE 2018-04-02 21:38:11
Bump version 9b635cebfffdd6971eefef0ebad395e21684bb8a Catalin(ux) M. BOIE 2018-01-13 18:07:12
Added some more compile flags and websocket1 helper files. fce47295946106956fb70da77244d77ffca09423 Catalin(ux) M. BOIE 2018-01-13 18:03:46
Lots of changes everywhere 91b9113e8f92db07c079c005273683f2e868910c Catalin(ux) M. BOIE 2018-01-12 19:06:04
Require openssl (for websocket) b4b34eb88f38bfd421187da76611cc54476d7309 Catalin(ux) M. BOIE 2017-12-30 23:44:50
Very important fixes 01e33f06a5cdc52fb3795158fd838fcca7055dda Catalin(ux) M. BOIE 2017-12-30 23:39:17
Commit 8acce1da5bc4866b6a4bf7fb2af53750e6749a9a - Notes goes under the title; title is nicer
Author: Catalin(ux) M. BOIE
Author date (UTC): 2018-08-18 04:40
Committer name: Catalin(ux) M. BOIE
Committer date (UTC): 2018-08-18 04:40
Parent(s): 1b96ffce7e3744972be0be246cd33d0b107a8553
Signing key:
Tree: c9ec7143892dfb9ee12b8c0e3589f4f51651d173
File Lines added Lines deleted
examples/wsdemo.c 17 17
examples/wsdemo.data/index.html 1 0
examples/wsdemo.data/main.css 5 0
File examples/wsdemo.c changed (mode: 100644) (index 564d9bd..3594dac)
... ... static void trigger(struct Conn *C)
940 940
941 941 static const char main_screen[] = static const char main_screen[] =
942 942 "<div class=\"gem\" width=\"120px\">\n" "<div class=\"gem\" width=\"120px\">\n"
943 "Progress bar 1 (div)</br />\n"
943 "<div class=\"title\">Progress bar 1 (div)</div>\n"
944 944 "<div style=\"margin: 3px; height: 10px; width: 100px; background-color: #eeeeee; border: 1px solid\">\n" "<div style=\"margin: 3px; height: 10px; width: 100px; background-color: #eeeeee; border: 1px solid\">\n"
945 945 " <div id=\"per1\" style=\"height: 10px; width: 0px; background-color: red\"></div>\n" " <div id=\"per1\" style=\"height: 10px; width: 0px; background-color: red\"></div>\n"
946 946 "</div>\n" "</div>\n"
 
... ... static const char main_screen[] =
949 949 "</div>\n" "</div>\n"
950 950 "\n" "\n"
951 951 "<div class=\"gem\" width=\"120px\">\n" "<div class=\"gem\" width=\"120px\">\n"
952 "Progress bar 2 (SVG)<br />\n"
952 "<div class=\"title\">Progress bar 2 (SVG)</div>\n"
953 953 "<svg height=\"20\" width=\"110\" style=\"border: 1px solid black\">\n" "<svg height=\"20\" width=\"110\" style=\"border: 1px solid black\">\n"
954 954 " <defs>\n" " <defs>\n"
955 955 " <linearGradient id=\"per2_gra1\" gradientTransform=\"rotate(90)\">\n" " <linearGradient id=\"per2_gra1\" gradientTransform=\"rotate(90)\">\n"
 
... ... static const char main_screen[] =
966 966 "</div>\n" "</div>\n"
967 967 "\n" "\n"
968 968 "<div class=\"gem\" width=\"120px\">\n" "<div class=\"gem\" width=\"120px\">\n"
969 "Server load (SVG)<br />\n"
969 "<div class=\"title\">Server load (SVG)</div>\n"
970 "<div class=\"note\" width=\"100px\">Note: the width of the SVG is scaled based on"
971 " available width, but no more than 100px; previous values are pushed by the server.</div>\n"
970 972 "<svg id=\"load1_container\" height=\"102\" width=\"102\" style=\"border: 1px solid green\">\n" "<svg id=\"load1_container\" height=\"102\" width=\"102\" style=\"border: 1px solid green\">\n"
971 973 " <g id=\"load1\"></g>\n" " <g id=\"load1\"></g>\n"
972 974 " <text id=\"load1_text\" x=\"2\" y=\"99\" style=\"font-size: 10px\">Load here</text>\n" " <text id=\"load1_text\" x=\"2\" y=\"99\" style=\"font-size: 10px\">Load here</text>\n"
973 975 "</svg><br />\n" "</svg><br />\n"
974 976 "<input type=\"button\" onclick=\"window.wsdemo.source('load1', ['load1_update']);\" value=\"Source\" />\n" "<input type=\"button\" onclick=\"window.wsdemo.source('load1', ['load1_update']);\" value=\"Source\" />\n"
975 977 "<div class=\"source\" id=\"load1_source\"></div>\n" "<div class=\"source\" id=\"load1_source\"></div>\n"
976 "<div class=\"note\" width=\"100px\">Note: the width of the SVG is scaled based on"
977 " available width, but no more than 100px; previous values are pushed by the server.</div>\n"
978 978 "</div>\n" "</div>\n"
979 979 "\n" "\n"
980 980 "<div class=\"gem\">\n" "<div class=\"gem\">\n"
981 "Bandwidth (SVG)<br />\n"
981 "<div class=\"title\">Bandwidth (SVG)</div>\n"
982 "<div class=\"note\" width=\"200px\">Note: the width of the SVG is"
983 " scaled based on available width, but no more than 200px.</div>\n"
982 984 "<svg id=\"band1_container\" height=\"102\" width=\"100\" style=\"border: 1px solid green\">\n" "<svg id=\"band1_container\" height=\"102\" width=\"100\" style=\"border: 1px solid green\">\n"
983 985 " <g id=\"band1\"></g>\n" " <g id=\"band1\"></g>\n"
984 986 " <line id=\"band1_line\" x1=\"0\" x2=\"100\" y1=\"50\" y2=\"50\" style=\"stroke: blue\" />\n" " <line id=\"band1_line\" x1=\"0\" x2=\"100\" y1=\"50\" y2=\"50\" style=\"stroke: blue\" />\n"
 
... ... static const char main_screen[] =
987 989 "</svg><br />\n" "</svg><br />\n"
988 990 "<input type=\"button\" onclick=\"window.wsdemo.source('band1', ['band1_update']);\" value=\"Source\" />\n" "<input type=\"button\" onclick=\"window.wsdemo.source('band1', ['band1_update']);\" value=\"Source\" />\n"
989 991 "<div class=\"source\" id=\"band1_source\"></div>\n" "<div class=\"source\" id=\"band1_source\"></div>\n"
990 "<div class=\"note\" width=\"200px\">Note: the width of the SVG is"
991 " scaled based on available width, but no more than 200px.</div>\n"
992 992 "</div>\n" "</div>\n"
993 993 "\n" "\n"
994 994 "<div class=\"gem\" width=\"420px\">\n" "<div class=\"gem\" width=\"420px\">\n"
995 "Arc 1 (SVG arcs + div text)</br />\n"
995 "<div class=\"title\">Arc 1 (SVG arcs + div text)</div>\n"
996 996 "<svg height=\"100\" width=\"100\" style=\"border: 1px solid green\">\n" "<svg height=\"100\" width=\"100\" style=\"border: 1px solid green\">\n"
997 997 "<defs>\n" "<defs>\n"
998 998 " <filter id=\"ds1\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">\n" " <filter id=\"ds1\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">\n"
 
... ... static const char main_screen[] =
1021 1021 "</div>\n" "</div>\n"
1022 1022 "\n" "\n"
1023 1023 "<div class=\"gem\" width=\"420px\">\n" "<div class=\"gem\" width=\"420px\">\n"
1024 "Bar 1 (SVG lines + SVG text)<br />\n"
1024 "<div class=\"title\">Bar 1 (SVG lines + SVG text)</div>\n"
1025 1025 "<svg height=\"100\" width=\"100\" style=\"border: 1px solid green\">\n" "<svg height=\"100\" width=\"100\" style=\"border: 1px solid green\">\n"
1026 1026 " <line x1=\"0\" x2=\"100\" y1=\"85\" y2=\"85\" style=\"stroke: red; stroke-width: 0.2\" />\n" " <line x1=\"0\" x2=\"100\" y1=\"85\" y2=\"85\" style=\"stroke: red; stroke-width: 0.2\" />\n"
1027 1027 " <g id=\"bar1\"></g>\n" " <g id=\"bar1\"></g>\n"
 
... ... static const char main_screen[] =
1033 1033 "</div>\n" "</div>\n"
1034 1034 "\n" "\n"
1035 1035 "<div class=\"gem\">\n" "<div class=\"gem\">\n"
1036 "Cylinders (canvas, 2D)<br />\n"
1036 "<div class=\"title\">Cylinders (canvas, 2D)</div>\n"
1037 1037 "<canvas id=\"cyl1\" width=\"100px\" height=\"100px\">\n" "<canvas id=\"cyl1\" width=\"100px\" height=\"100px\">\n"
1038 1038 " Your browser does not support canvas.\n" " Your browser does not support canvas.\n"
1039 1039 "</canvas><br />\n" "</canvas><br />\n"
 
... ... static const char main_screen[] =
1042 1042 "</div>\n" "</div>\n"
1043 1043 "\n" "\n"
1044 1044 "<div class=\"gem\">\n" "<div class=\"gem\">\n"
1045 "Pie 1 (canvas, 2D)<br />\n"
1045 "<div class=\"title\">Pie 1 (canvas, 2D)</div>\n"
1046 1046 "<canvas id=\"pie1\" width=\"200px\" height=\"100px\">\n" "<canvas id=\"pie1\" width=\"200px\" height=\"100px\">\n"
1047 1047 " Your browser does not support canvas.\n" " Your browser does not support canvas.\n"
1048 1048 "</canvas><br />\n" "</canvas><br />\n"
 
... ... static const char main_screen[] =
1051 1051 "</div>\n" "</div>\n"
1052 1052 "\n" "\n"
1053 1053 "<div class=\"gem\">\n" "<div class=\"gem\">\n"
1054 "Pie 2 (SVG)<br />\n"
1054 "<div class=\"title\">Pie 2 (SVG)</div>\n"
1055 1055 "<svg height=\"100\" width=\"200\" style=\"border: 1px solid green\">\n" "<svg height=\"100\" width=\"200\" style=\"border: 1px solid green\">\n"
1056 1056 "<defs>\n" "<defs>\n"
1057 1057 " <filter id=\"pie2_ds1\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">\n" " <filter id=\"pie2_ds1\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">\n"
 
... ... static const char main_screen[] =
1068 1068 "</div>\n" "</div>\n"
1069 1069 "\n" "\n"
1070 1070 "<div class=\"gem\">\n" "<div class=\"gem\">\n"
1071 " Editable grid (HTML5 content editable)<br />\n"
1072 " <div id=\"grid1\"></div>\n"
1073 " <input type=\"button\" onclick=\"window.wsdemo.source('grid1', ['grid1_update', 'grid1_oninput', 'grid1_init']);\" value=\"Source\" />\n"
1074 " <div class=\"source\" id=\"grid1_source\"></div>\n"
1071 " <div class=\"title\">Editable grid (HTML5 content editable)</div>\n"
1075 1072 " <div class=\"note\" width=\"200px\">" " <div class=\"note\" width=\"200px\">"
1076 1073 " Note: please load this page on two different devices, then try" " Note: please load this page on two different devices, then try"
1077 1074 " to change the content of a cell and watch the other device to" " to change the content of a cell and watch the other device to"
1078 1075 " see how the value changes." " see how the value changes."
1079 1076 " </div>\n" " </div>\n"
1077 " <div id=\"grid1\"></div>\n"
1078 " <input type=\"button\" onclick=\"window.wsdemo.source('grid1', ['grid1_update', 'grid1_oninput', 'grid1_init']);\" value=\"Source\" />\n"
1079 " <div class=\"source\" id=\"grid1_source\"></div>\n"
1080 1080 "</div>\n" "</div>\n"
1081 1081 "\n" "\n"
1082 1082 "<div class=\"gem\">\n" "<div class=\"gem\">\n"
File examples/wsdemo.data/index.html changed (mode: 100644) (index 22f083e..c1b5661)
28 28 The server side is a C application dealing with the data push.<br /> The server side is a C application dealing with the data push.<br />
29 29 On the client side, there is the JS code dealing with websocket and a very small part On the client side, there is the JS code dealing with websocket and a very small part
30 30 to dispatch the data pushed. The whole JS code used here is around than 5KiB.<br /> to dispatch the data pushed. The whole JS code used here is around than 5KiB.<br />
31 If you did not paid attention above: no jQuery or any other framework was used to create this demo!<br />
31 32 Enjoy the demo and do not forget to send feedback to wsdemo@embedromix.ro!<br /> Enjoy the demo and do not forget to send feedback to wsdemo@embedromix.ro!<br />
32 33 </div> </div>
33 34
File examples/wsdemo.data/main.css changed (mode: 100644) (index d2ca30b..ac11f53)
... ... pre {
49 49 todo-flex-direction: column; todo-flex-direction: column;
50 50 } }
51 51
52 .title {
53 font-size: 10pt;
54 font-weight: bold;
55 }
56
52 57 .note { .note {
53 58 font-size: 8pt; font-size: 8pt;
54 59 } }
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/catalinux/Conn

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/catalinux/Conn

Clone this repository using git:
git clone git://git.rocketgit.com/user/catalinux/Conn

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main