A Google Chat protocol plugin for libpurple/Pidgin/bitlbee/whatever

Overview

Google Chat Plugin for libpurple

A WORK IN PROGRESS replacement prpl for Google Chat in Pidgin/libpurple to support the proprietary protocol that Google uses for its "Google Chat" service.

This plugin is written by Eion Robb based on the old Hangouts plugin written by Eion Robb and Mike 'Maiku' Ruprecht.

Compiling

To compile, just do the standard make && sudo make install dance. You'll need development packages for libpurple, libjson-glib, glib and libprotobuf-c to be able to compile.

Debian/Ubuntu

Run the following commands from a terminal

#!sh
sudo apt-get install -y libpurple-dev libjson-glib-dev libglib2.0-dev libprotobuf-c-dev protobuf-c-compiler git make;
git clone https://github.com/EionRobb/purple-googlechat/ && cd purple-googlechat;
make && sudo make install

Fedora

json-glib-devel libpurple-devel glib2-devel libpurple-devel protobuf-c-devel protobuf-c-compiler-devel

Windows

Development builds of Windows dll's will live at https://eion.robbmob.com/libgooglechat.dll (you'll also need libprotobuf-c-1.dll and libjson-glib-1.0.dll in your Pidgin folder, included in the installer)

A Windows installer to make life easier is in progress.

Like this plugin?

Say "Thanks" by sending us $1

Comments
  • Image sending doesn't fully work

    Image sending doesn't fully work

    The recipient gets <IMG ID="30"> instead of the image. Receiving seems to work halfway decently however. (One of two images appeared, that I sent from the web client to another person)

    opened by zyphlar 9
  • Compilation error on Ubuntu 20.04

    Compilation error on Ubuntu 20.04

    $ make && sudo make install
    protoc-c --c_out=. googlechat.proto
    protoc-c -o googlechat.proto.desc googlechat.proto
    cc -fPIC -O2 -g -pipe -shared -o libgooglechat.so libgooglechat.c googlechat.pb-c.c googlechat_json.c googlechat_pblite.c googlechat_connection.c googlechat_auth.c googlechat_events.c googlechat_conversation.c purple2compat/http.c purple2compat/purple-socket.c  -lprotobuf-c `pkg-config purple glib-2.0 json-glib-1.0 zlib --libs --cflags` -ldl -I/usr/include/protobuf-c -Ipurple2compat -g -ggdb
    googlechat_conversation.c: In function ‘googlechat_set_status’:
    googlechat_conversation.c:1815:15: error: ‘SetDndDurationRequest’ {aka ‘struct _SetDndDurationRequest’} has no member named ‘has_dnd_expiry_timestamp_usec’; did you mean ‘dnd_expiry_timestamp_usec’?
     1815 |   dnd_request.has_dnd_expiry_timestamp_usec = TRUE;
          |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |               dnd_expiry_timestamp_usec
    googlechat_conversation.c:1820:15: error: ‘SetDndDurationRequest’ {aka ‘struct _SetDndDurationRequest’} has no member named ‘has_new_dnd_duration_usec’; did you mean ‘new_dnd_duration_usec’?
     1820 |   dnd_request.has_new_dnd_duration_usec = TRUE;
          |               ^~~~~~~~~~~~~~~~~~~~~~~~~
          |               new_dnd_duration_usec
    googlechat_conversation.c:1837:25: error: ‘SetCustomStatusRequest’ {aka ‘struct _SetCustomStatusRequest’} has no member named ‘has_custom_status_remaining_duration_usec’; did you mean ‘custom_status_remaining_duration_usec’?
     1837 |   custom_status_request.has_custom_status_remaining_duration_usec = TRUE;
          |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |                         custom_status_remaining_duration_usec
    googlechat_conversation.c:1852:1: error: invalid storage class for function ‘googlechat_roomlist_got_list’
     1852 | googlechat_roomlist_got_list(GoogleChatAccount *ha, PaginatedWorldResponse *response, gpointer user_data)
          | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
    googlechat_conversation.c:1958:1: error: expected declaration or statement at end of input
     1958 | }
          | ^
    make: *** [Makefile:101: libgooglechat.so] Error 1
    

    Thanks for this plugin! I look forward to using it to replace the Hangouts plugin.

    opened by rrthomas 9
  • Can Receive Messages but Cannot Send

    Can Receive Messages but Cannot Send

    I am able to receive messages, but am not able to send them. I am using the lastest Windows DLL from: https://eion.robbmob.com/libgooglechat.dll on Pidgin portable.

    The message seems to be sent without error, but the recipient never receives it. Looking at the debug log, it seems that the send action is encountering an error: "googlechat: Error from server: (Invalid HTTP response code (400))". I have attached a debug log of the send action: purple-debug.log

    Please let me know if I have a misconfiguration somewhere in my setup or help me understand what could be causing the issue that I am experiencing. Thanks.

    opened by fenderbender613 8
  • Feature: copy over hangouts account settings

    Feature: copy over hangouts account settings

    Add a check on first launch to ask whether to copy over the prpl-hangouts accounts to prpl-googlechat accounts. Just the password and buddy list, maybe migrate logs later?

    opened by EionRobb 8
  • Does not compile on OpenBSD.

    Does not compile on OpenBSD.

    I can't compile this on OpenBSD 7.1 with clang or gcc (egcc). The error are: ld: error: unable to find library -ldl

    What i can find on the internet are: "On OpenBSD, dlopen() and friends are in libc, and there is no libdl. "

    opened by mokkurkalve 7
  • Crashing on Windows with Pidgin 2.14.9

    Crashing on Windows with Pidgin 2.14.9

    I installed the purple-googlechat plugin yesterday following the Windows section of https://github.com/EionRobb/purple-googlechat/blob/master/README.md, have been seeing consistent crashes either:

    • immediately at startup
    • randomly within a few hours of starting pidgin

    Looking at the debug.log generated from pidgin.exe --debug 2>&1 > "%USERPROFILE%\debug.log", the last log lines are:

    (13:15:14) nss: Trusting CN=*.google.com
    (13:15:14) certificate: Successfully verified certificate for chat.google.com
    (13:15:14) http: Request 0874F000 performed successfully.
    (13:15:14) http: Request 0874F498 performed successfully.
    (13:15:14) googlechat: Received new other event 058E1C60
    (13:15:14) googlechat: {
    	"group_id" : null,
    	"type" : "SESSION_READY",
    	"body" : {
    		"group_viewed" : null,
    		"message_posted" : null,
    		"web_push_notification" : null,
    		"event_type" : "SESSION_READY",
    		"membership_changed" : null,
    		"trace_id" : null,
    		"user_status_updated_event" : null,
    		"typing_state_changed_event" : null,
    		"read_receipt_changed" : null
    	},
    	"user_id" : null,
    	"user_revision" : null,
    	"group_revision" : null,
    	"bodies" : [
    	]
    }
    (13:15:14) http: Request 0874E8C8 performed successfully.
    (13:15:14) http: Performing new request 0874F2A0 to chat.google.com.
    (13:15:14) http: Performing new request 0874ED60 to chat.google.com.
    

    The last few log lines look the same (always has that json body with nulls) for all crashes I've seen. Other notes:

    • Am running Pidgin 2.14.19 on up-to-date Windows 10 64-bit
    • No other plugins are installed or enabled besides the built-in "Release Notification" plugin
    • Was previously using pidgin with the same google account except through the built-in gtalk protocol, and wasn't experiencing crashes then
    • No other accounts are added in pidgin besides the one google account for gchat

    Let me know if any other info is useful, thanks!

    opened by nxths 7
  • When sending messages, don't force RetentionState to PERMANENT

    When sending messages, don't force RetentionState to PERMANENT

    This allows sending messages to conversations where history is off. Lightly tested with DMs with conversation history both on and off.

    Fixes #22, though I don't know if this is how you want to do this (as opposed to fetching the history setting for the conversation and setting RetentionState accordingly).

    opened by steven676 6
  • SIGSEGV in googlechat_longpoll_request

    SIGSEGV in googlechat_longpoll_request

    As usual, on reconnecting after resuming from sleep.

    (17:38:34) autorecon: done calling purple_account_connect
    (17:38:34) autorecon: do_signon called
    (17:38:34) autorecon: calling purple_account_connect
    (17:38:34) account: Connecting to account [email protected].
    (17:38:34) connection: Connecting. gc = 0x555557d248b0
    (17:38:34) dnsquery: Performing DNS lookup for chat.google.com
    (17:38:34) http: Performing new request 0x55555a0c6d00 to www.googleapis.com.
    (17:38:34) autorecon: done calling purple_account_connect
    (17:38:34) network: Got StateChange from NetworkManager: 40.
    (17:38:35) util: Writing file accounts.xml to directory /home/bodqhrohro/.purple
    (17:38:35) util: Writing file /home/bodqhrohro/.purple/accounts.xml
    (17:38:35) g_log: purple_http_request_set_cookie_jar: assertion 'cookie_jar != NULL' failed
    
    Thread 1 "pidgin" received signal SIGSEGV, Segmentation fault.
    purple_http_keepalive_pool_ref (pool=0x21) at purple2compat/http.c:2175
    2175		pool->ref_count++;
    @(gdb) bt
    #0  purple_http_keepalive_pool_ref (pool=0x21) at purple2compat/http.c:2175
    #1  0x00007fffec160e1e in purple_http_request_set_keepalive_pool (request=0x55555b2d24b0, pool=0x21) at purple2compat/http.c:2600
    #2  0x00007fffec157eb0 in googlechat_longpoll_request (ha=ha@entry=0x55555852ad20) at googlechat_connection.c:442
    #3  0x00007fffec157fac in channel_watchdog_check (data=<error reading variable: value has been optimized out>) at googlechat_connection.c:406
    #4  channel_watchdog_check (data=<error reading variable: value has been optimized out>) at googlechat_connection.c:389
    #5  0x00007ffff72f6744 in g_timeout_dispatch (source=0x555557ef2ea0, callback=<optimized out>, user_data=<optimized out>)
        at ../../../glib/gmain.c:4933
    #6  0x00007ffff72f5be4 in g_main_dispatch (context=0x5555556c8780) at ../../../glib/gmain.c:3381
    #7  g_main_context_dispatch (context=0x5555556c8780) at ../../../glib/gmain.c:4099
    #8  0x00007ffff72f5f88 in g_main_context_iterate (context=0x5555556c8780, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
        at ../../../glib/gmain.c:4175
    #9  0x00007ffff72f6273 in g_main_loop_run (loop=0x5555579ee6c0) at ../../../glib/gmain.c:4373
    #10 0x00007ffff79d8b2a in gtk_main () at /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
    #11 0x0000555555591d70 in main (argc=<optimized out>, argv=<optimized out>) at ././pidgin/gtkmain.c:947
    

    Revision: 13ae6b2941e5ea72f728b51e311873236b06e793

    opened by bodqhrohro 6
  • Manjaro/arch

    Manjaro/arch

    Hi, When trying to install the dependencies with pacman I encountered issues. Does this plugin support arch, and if so how would I go about installing it? Thanks!

    opened by Steven11q 5
  • Please explain how to input oauth token in bitlbee

    Please explain how to input oauth token in bitlbee

    The FAQ regarding bitlbee in the old hangouts plugin wiki was vague about how one actually did this. You can't store the oauth token as a password, evidently, but there is no other "popup" a la pidgin to input credentials by any other means using bitlbee.

    Is there some reason why the initial token cannot be stored as a password? I understand this will occasionally have to be reset; that's fine.

    opened by noahfriedman 4
  • Support app passwords

    Support app passwords

    For accounts with two-factor authentication enabled, Google offers what they call "app passwords" which can be generated for use with a particular application that doesn't support two-factor authentication. Supporting that feature is probably easier than fully supporting two-factor authentication.

    opened by jgiszczak 4
  • Group chat loses messages sent when I’m offline

    Group chat loses messages sent when I’m offline

    I shut down Pidgin. Someone else sends a message to a group chat (“space”). I start Pidgin. The message doesn’t appear. Given that the most recent commit was 29 days ago, I believe I am running the head of master as of time of writing (https://github.com/EionRobb/purple-googlechat/commit/b6b824a4764b51316f7be325492575684647e021).

    opened by Hawk777 0
  • Group chat usernames shown as numeric user IDs instead of human-readable names

    Group chat usernames shown as numeric user IDs instead of human-readable names

    In a group chat, only people with whom I also have an individual conversation ongoing show up as names. People with whom I do not have an individual conversation show up as numeric user IDs, even though in the web UI, their names are visible. Given that the most recent commit was 28 days ago, I believe I am running the head of master as of time of writing (b6b824a4764b51316f7be325492575684647e021).

    opened by Hawk777 1
  • Chat annotations (

    Chat annotations ("gif embeds") are blank

    Even as of commit b6b824a4764b51316f7be325492575684647e021, gif annotations (are there other types?) / gif-embeds within a google chat sequence are showing as a blank line in the chat.

    Debug log shows that the image URL within the annotations block is there: "annotations" : [ { "type" : "URL", "start_index" : 0, "length" : 0, "drive_metadata" : null, "user_mention_metadata" : null, "url_metadata" : { "title" : null, "snippet" : null, "image_url" : "https://lh6.googleusercontent.com/proxy/346Jq0h8qPxAVbA_qAO2-ndrpuNHCD6DRGj0cyUtYYhA43JHig5CJHvVBoNBgKbt21z-JzarIp500sWuNWPtKEdIiDQDnVOUqa2MzVBkVYy9dlmK", "image_height" : "498", "image_width" : "498", "url" : { "url" : "https://media.tenor.com/SvI_M9diCWcAAAAC/so-do-it-markiplier.gif" }, "domain" : "media.tenor.com", "should_not_render" : false, "int_image_height" : 498, "int_image_width" : 498, "mime_type" : "image/*", "gws_url" : { "url" : "https://www.google.com/url?q=https://media.tenor.com/SvI_M9diCWcAAAAC/so-do-it-markiplier.gif&source=chat&ust=1669152447408000&usg=AOvVaw0RMcyypxdGTRuSRoZVgZV9" }, "redirect_url" : { "url" : "https://chat.google.com/api/get_redirect_url?url_redirect_token=XXXXXXX" }, "gws_url_expiration_timestamp" : 1669152447409000 },

    it would be nice to at least see that URL, as a link, instead of a blank line, that way I can at least decided to click on it.

    opened by akhepcat 0
  • Never see chat.google.com after installing. Ubuntu 22.04

    Never see chat.google.com after installing. Ubuntu 22.04

    This may be long, as I tried three times, with different results each time.

    1. A friend of mine, running a different linux distro, told me about this. I was told that I should follow the instructions, and when I make a new account, I would see chat.google.com as a protocol option, which would lead me to a youtube video about how to proceed. I cut&Paste the instructions in the ReadMe. I got no errors. Unfortunately, I see no new options under the protocol dropdown when I go to make a new account, under Manage Accounts. This was a few weeks ago.
    2. Today, before making this report, I cut&paste the commands again. This time, I noticed that there was some odd character at the start, such that the #!sh wasn't processed, instead being seen as a call to shutdown which didn't happen due to incomplete command. However, it did tell me that everything was at the latest revision.
    3. I entered #!sh first, and then cut&paste the rest of the commands. I got a lot of information, and I don't know what may be errors. I still don't have anything new under the protocol options dropdown in the Manage Accounts pane. I'm not a programmer, tho I studied to be one back when Pascal was the language used for teaching. I'm comfortable following directions, and editing files, but am generally ignorant otherwise. These messages seem to be indicating problems in the code.

    Note: I'm trying to use the triple backticks to blockquote the messages. I don't know how to otherwise blockquote, and I didn't see it in the markdown info.

    sudo apt-get install -y libpurple-dev libjson-glib-dev libglib2.0-dev libprotobuf-c-dev protobuf-c-compiler git make;
    git clone https://github.com/EionRobb/purple-googlechat/ && cd purple-googlechat;
    make && sudo make install
    Reading package lists... Done
    Building dependency tree... Done
    Reading state information... Done
    libglib2.0-dev is already the newest version (2.72.1-1).
    libjson-glib-dev is already the newest version (1.6.6-1build1).
    make is already the newest version (4.3-4.1build1).
    libpurple-dev is already the newest version (1:2.14.8-1ubuntu2).
    git is already the newest version (1:2.34.1-1ubuntu1.5).
    libprotobuf-c-dev is already the newest version (1.3.3-1ubuntu2.1).
    protobuf-c-compiler is already the newest version (1.3.3-1ubuntu2.1).
    0 upgraded, 0 newly installed, 0 to remove and 26 not upgraded.
    Cloning into 'purple-googlechat'...
    remote: Enumerating objects: 1935, done.
    remote: Counting objects: 100% (404/404), done.
    remote: Compressing objects: 100% (154/154), done.
    remote: Total 1935 (delta 261), reused 382 (delta 249), pack-reused 1531
    Receiving objects: 100% (1935/1935), 4.35 MiB | 6.16 MiB/s, done.
    Resolving deltas: 100% (261/261), done.
    protoc-c --c_out=. googlechat.proto
    protoc-c -o googlechat.proto.desc googlechat.proto
    cc -fPIC -O2 -g -pipe -shared -o libgooglechat.so libgooglechat.c googlechat.pb-c.c googlechat_json.c googlechat_pblite.c googlechat_connection.c googlechat_auth.c googlechat_events.c googlechat_conversation.c purple2compat/http.c purple2compat/purple-socket.c  -lprotobuf-c `pkg-config purple glib-2.0 json-glib-1.0 zlib --libs --cflags` -I/usr/include/protobuf-c -ldl -Ipurple2compat -g -ggdb
    googlechat_auth.c: In function ‘googlechat_auth_get_dynamite_token_cb’:
    googlechat_auth.c:320:27: warning: argument 1 null where non-null expected [-Wnonnull]
      320 |         gint expires_in = atoi(json_object_get_string_member(obj, "expiresIn"));
          |                           ^~~~
    In file included from /usr/include/features.h:486,
                     from /usr/include/x86_64-linux-gnu/bits/libc-header-start.h:33,
                     from /usr/include/limits.h:26,
                     from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203,
                     from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7,
                     from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34,
                     from /usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h:11,
                     from /usr/include/glib-2.0/glib/gtypes.h:32,
                     from /usr/include/glib-2.0/glib/galloca.h:32,
                     from /usr/include/glib-2.0/glib.h:30,
                     from /usr/include/libpurple/purple.h:36,
                     from libgooglechat.h:25,
                     from googlechat_auth.h:23,
                     from googlechat_auth.c:19:
    /usr/include/stdlib.h:362:1: note: in a call to function ‘atoi’ declared ‘nonnull’
      362 | __NTH (atoi (const char *__nptr))
          | ^~~~~
    googlechat_events.c: In function ‘googlechat_got_http_image_for_conv’:
    googlechat_events.c:269:9: warning: ‘g_memdup’ is deprecated: Use 'g_memdup2' instead [-Wdeprecated-declarations]
      269 |         image = purple_image_new_from_data(g_memdup(response_data, response_size), response_size);
          |         ^~~~~
    In file included from /usr/include/glib-2.0/glib.h:82,
                     from /usr/include/libpurple/purple.h:36,
                     from libgooglechat.h:25,
                     from googlechat_events.h:23,
                     from googlechat_events.c:19:
    /usr/include/glib-2.0/glib/gstrfuncs.h:257:23: note: declared here
      257 | gpointer              g_memdup         (gconstpointer mem,
          |                       ^~~~~~~~
    googlechat_events.c:270:9: warning: ‘g_memdup’ is deprecated: Use 'g_memdup2' instead [-Wdeprecated-declarations]
      270 |         image_id = purple_image_store_add(image);
          |         ^~~~~~~~
    In file included from /usr/include/glib-2.0/glib.h:82,
                     from /usr/include/libpurple/purple.h:36,
                     from libgooglechat.h:25,
                     from googlechat_events.h:23,
                     from googlechat_events.c:19:
    /usr/include/glib-2.0/glib/gstrfuncs.h:257:23: note: declared here
      257 | gpointer              g_memdup         (gconstpointer mem,
          |                       ^~~~~~~~
    googlechat_conversation.c: In function ‘googlechat_got_buddy_photo’:
    googlechat_conversation.c:1079:9: warning: ‘g_memdup’ is deprecated: Use 'g_memdup2' instead [-Wdeprecated-declarations]
     1079 |         response_dup = g_memdup(response_str, response_len);
          |         ^~~~~~~~~~~~
    In file included from /usr/include/glib-2.0/glib.h:82,
                     from /usr/include/libpurple/purple.h:36,
                     from libgooglechat.h:25,
                     from googlechat_conversation.h:23,
                     from googlechat_conversation.c:19:
    /usr/include/glib-2.0/glib/gstrfuncs.h:257:23: note: declared here
      257 | gpointer              g_memdup         (gconstpointer mem,
          |                       ^~~~~~~~
    purple2compat/http.c: In function ‘purple_http_request_set_contents’:
    purple2compat/http.c:2637:9: warning: ‘g_memdup’ is deprecated: Use 'g_memdup2' instead [-Wdeprecated-declarations]
     2637 |         request->contents = g_memdup(contents, length);
          |         ^~~~~~~
    In file included from /usr/include/glib-2.0/glib.h:82,
                     from purple2compat/http.h:31,
                     from purple2compat/http.c:22:
    /usr/include/glib-2.0/glib/gstrfuncs.h:257:23: note: declared here
      257 | gpointer              g_memdup         (gconstpointer mem,
          |                       ^~~~~~~~
    mkdir -p `pkg-config --variable=datadir purple`/pixmaps/pidgin/protocols/16
    mkdir -p `pkg-config --variable=datadir purple`/pixmaps/pidgin/protocols/22
    mkdir -p `pkg-config --variable=datadir purple`/pixmaps/pidgin/protocols/48
    install googlechat16.png `pkg-config --variable=datadir purple`/pixmaps/pidgin/protocols/16/googlechat.png
    install googlechat22.png `pkg-config --variable=datadir purple`/pixmaps/pidgin/protocols/22/googlechat.png
    install googlechat48.png `pkg-config --variable=datadir purple`/pixmaps/pidgin/protocols/48/googlechat.png
    mkdir -p `pkg-config --variable=plugindir purple`
    install -p libgooglechat.so `pkg-config --variable=plugindir purple`
    
    opened by Barleduq 0
  • "Until there's some kind of helper/installer"

    I'm not a Windows user, so I can't test the result, but might I suggest Inno Setup? It's used for Visual Studio Code and Delphi, GOG.com uses a modified version of it, and it's by far the simplest, easiest way to build a professional-feeling, full-function Windows installer using open-source tools.

    As a starting point, here's an .iss project definition that I wrote for installing Godot games, and the help is quite comprehensive about the syntax of .iss files.

    (eg. the "Constants" page gives {reg:HKA\Software\My Program,Path|{autopf}\My Program} as an example that might be useful for looking up the Pidgin install directory to use as the value of DefaultDirName... {autopf} being "Whichever 'Program Files' path corresponds to the user/admin installation mode and 32/64-bitness the installer is running under", the latter of which is controlled by ArchitecturesInstallIn64BitMode and the former of which can be specified without auto-selection via things like {commonpf64} or {userpf} or with only partial selection via {commonpf}.)

    opened by ssokolow 0
Owner
Eion Robb
I like to write plugins for Pidgin. I like to hold turnips. I like to stare at things.
Eion Robb
The tiniest chat servers on earth!

yoctochat The tiniest chat servers on earth! Here will be a collection of the simplest possible TCP chat servers, to demonstrate how to write multiuse

Rob N ★ 53 Nov 16, 2022
A cross-platform SDK enabling developers to integrate real-time chat technology into their projects

4Players ODIN SDK ODIN is a cross-platform software development kit (SDK) that enables developers to integrate real-time chat technology into multipla

4Players 6 Dec 2, 2022
server secure chat

nem server api Register Login GetList Handshake Message Feed StatusOnline HandshakeKey HandshakeNotice FileAdd StorageFile GetFile Register { "type":

Dmitrii 6 Apr 3, 2022
Simple local P2P chat on UDP sockets

Local P2P Chat This is a fully decentralized chat. To communicate, simply run it on computers in a single local network (using one port). All messages

Anton Khalitov 18 Dec 8, 2022
Simple Tcp Chat Client / Server written in C++

What this TcpXat TcpXat Is A Simple Tcp Chat Setup TcpXat sudo apt install make;make client;make serv;echo "done by FuryM3m0ry"; How To Run TcpXat Ter

sami 1 Dec 28, 2021
Google IOT MQTT Sample

This is an adaptation of Zephyr's Google Cloud IoT Core MQTT sample samples/net/cloud/google_iot_mqtt for the nRF9160-DK, using modem features to offload certificate storage, TLS and JWT calculation.

Jeffrey Urban 5 Jan 27, 2022
Mongoose Embedded Web Server Library - a multi-protocol embedded networking library with TCP/UDP, HTTP, WebSocket, MQTT built-in protocols, async DNS resolver, and non-blocking API.

Mongoose - Embedded Web Server / Embedded Networking Library Mongoose is a networking library for C/C++. It implements event-driven non-blocking APIs

Cesanta Software 9k Jan 1, 2023
:zap: KCP - A Fast and Reliable ARQ Protocol

KCP - A Fast and Reliable ARQ Protocol README in English 简介 KCP是一个快速可靠协议,能以比 TCP 浪费 10%-20% 的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。纯算法实现,并不负责底层协议(如UDP

Linwei 12k Jan 4, 2023
FreeRDP is a free remote desktop protocol library and clients

FreeRDP is a free implementation of the Remote Desktop Protocol (RDP), released under the Apache license. Enjoy the freedom of using your software wherever you want, the way you want it, in a world where interoperability can finally liberate your computing experience.

null 7.7k Dec 31, 2022
Lightway Core is a modern VPN protocol by ExpressVPN, to deliver a VPN experience that’s faster, more secure, and more reliable.

Lightway Core NOTE: This is a preview snapshot of the Lightway repository used for both our client and server. We will be publishing a live, actively

ExpressVPN 22 Feb 17, 2022
owfuzz: a WiFi protocol fuzzing tool using openwifi.

Openwifi is an open-source WiFi protocol stack based on SDR that is fully compatible with Linux mac80211. It's driver takes advantage of the Linux kernel's supports (mac80211, cfg80211) for WiFi high MAC, so it can provide an interface to the application layer like a common WiFi USB dongle.

Alipay 146 Dec 29, 2022
Lightway Core is a modern VPN protocol by ExpressVPN, to deliver a VPN experience that’s faster, more secure, and more reliable.

Lightway Core is a modern VPN protocol by ExpressVPN, to deliver a VPN experience that’s faster, more secure, and more reliable.

ExpressVPN 390 Dec 28, 2022
An implementation of the Mobile Adapter GB protocol, to connect to custom game servers.

libmobile Library that implements the Mobile Adapter GB protocol, in a way that should be easy to integrate into a plethora of different emulators/har

REON Team 10 Nov 5, 2022
The implementation of the Domino Network protocol based program.

spacex The implementation of the Domino distributed storage network protocol for the Smart Ecology. With a fully featured and well documented that pro

DominoNetwork 4 Sep 26, 2021
Simple HTTP protocol implementation in C

C-SimpleHTTP A simple HTTP protocol implementation in C How do i run it? First of all, this project is made in c, then you will need GCC Compiler. The

Spar 8 May 25, 2022
Eclipse Paho C Client Library for the MQTT Protocol

Eclipse Paho C Client Library for the MQTT Protocol This repository contains the source code for the Eclipse Paho MQTT C client library. This code bui

null 2 Apr 27, 2022
This project is implementation of TFTP protocol from scratch

TFTP This project is implementation of TFTP protocol from scratch

Ali 4 Jul 23, 2022
A language server protocol implementation

A barebone LSP implementation Starting point for server implementations of the LSP protocol. Provides the infrastructure to easily hook in functionali

Henner Zeller 5 Jan 7, 2023
SoftEther VPN - Cross-platform multi-protocol VPN software.

SoftEther VPN - Cross-platform multi-protocol VPN software.

SoftEther 9.6k Jan 4, 2023