enaess / network-manager-sstp Goto Github PK
View Code? Open in Web Editor NEWSecure Socket Tunneling Protocol Extention for Network Manager
Secure Socket Tunneling Protocol Extention for Network Manager
hi,
building the tool with
./configure --prefix=/usr --libexecdir=/usr/lib/NetworkManager --disable-static --with-pppd-plugin-dir=/usr/lib/pppd/2.4.5
but network manager when started does not detect the plugin. i don't know how to detect the cause. sstp-client itself is working fine! (i published arch package in aur https://aur.archlinux.org/packages/sstp-client/)
$ yaourt -Qi networkmanager | grep Version
Version : 0.9.6.4-1
$ yaourt -Qi sstp-client | grep Version
Version : 1.0.9-1
$ yaourt -Ql network-manager-sstp | grep -v /usr/share/locale/
network-manager-sstp /usr/
network-manager-sstp /usr/etc/
network-manager-sstp /usr/etc/NetworkManager/
network-manager-sstp /usr/etc/NetworkManager/VPN/
network-manager-sstp /usr/etc/NetworkManager/VPN/nm-sstp-service.name
network-manager-sstp /usr/etc/dbus-1/
network-manager-sstp /usr/etc/dbus-1/system.d/
network-manager-sstp /usr/etc/dbus-1/system.d/nm-sstp-service.conf
network-manager-sstp /usr/lib/
network-manager-sstp /usr/lib/NetworkManager/
network-manager-sstp /usr/lib/NetworkManager/libnm-sstp-properties.la
network-manager-sstp /usr/lib/NetworkManager/libnm-sstp-properties.so
network-manager-sstp /usr/lib/NetworkManager/nm-sstp-auth-dialog
network-manager-sstp /usr/lib/NetworkManager/nm-sstp-service
network-manager-sstp /usr/lib/pppd/
network-manager-sstp /usr/lib/pppd/2.4.5/
network-manager-sstp /usr/lib/pppd/2.4.5/nm-sstp-pppd-plugin.la
network-manager-sstp /usr/lib/pppd/2.4.5/nm-sstp-pppd-plugin.so
network-manager-sstp /usr/share/
network-manager-sstp /usr/share/gnome-vpn-properties/
network-manager-sstp /usr/share/gnome-vpn-properties/sstp/
network-manager-sstp /usr/share/gnome-vpn-properties/sstp/nm-sstp-dialog.ui
i had to make couple of edits in sources to build nm plugin with gtk3 because of some symbols were deprecated. when built with gtk2 it didn't work either
please advise
Any chance to get the PPA updated to support Ubuntu 17.04?
Thanks
Hi,
Is network-manager-sstp supposed to work with Ubuntu 18.04 LTS Bionic Beaver?
I have test machine with clean installation of that Ubuntu and it cannot be installed.
This is what I have:
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 61FF9694161CE595
Added below two lines into the following file: /etc/apt/sources.list.d/sstp-client.list
deb http://ppa.launchpad.net/eivnaes/network-manager-sstp/ubuntu bionic main
deb-src http://ppa.launchpad.net/eivnaes/network-manager-sstp/ubuntu bionic main
apt-get update
apt-get install network-manager-sstp sstp-client
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
network-manager-sstp : Depends: ppp (< 2.4.7-2~) but 2.4.7-2+2ubuntu1 is to be installed
sstp-client : Depends: libevent-2.0-5 (>= 2.0.10-stable) but it is not installable
Depends: ppp (< 2.4.7-2~) but 2.4.7-2+2ubuntu1 is to be installed
E: Unable to correct problems, you have held broken packages.
Any advice would be appreciated.
This affects the recent builds, eg 1.2.4-0ubuntu3
. When sstp-client
is not available, the VPN connection fails with
VPN connection: failed to connect: 'Could not find sstp client binary.'
in syslog
.
Installing sstp-client
manually of course solves this.
The Azure VPN Basic SKU only support certificate auth. Is it possible for sstp-client to support EAPTLS?
I currently do this with a pppd config like:
remotename xx-xx-xx.vpn.azure.com
linkname vpn
ipparam vpn
pty "sstpc --ipparam vpn --nolaunchpppd --ca-cert /etc/ppp/VpnServerRoot.pem xx-xx-xx.vpn.azure.com"
name nigel
plugin sstp-pppd-plugin.so
sstp-sock /var/run/sstpc/sstpc-vpn
usepeerdns
require-mppe
require-mschap-v2
refuse-pap
refuse-chap
refuse-mschap
nobsdcomp
nodeflate
noauth
ca /etc/ppp/VpnServerRoot.pem
cert /etc/ppp/usercert.pem
key /etc/ppp/userkey.pem
With this setup I need to have the userkey.pem decrypted, which is bad. I know the OpenVPN Network Manager setup allows the passphrase to be supplied, but I'm not sure of the details of how it uses this in the background.
In 1.2.6 the nm-sstp-dialog.ui
is not installed anymore in make install
. It seems to be related to [that commit] where mentioned line has no equivalent after change. It fails the build of a Fedora package. I checked the deb package for 1.2.6 and the file is missing (in comparison to 1.2.2).
I don't create UI in GTK/Gnome and there is a small chance that file is no longer needed.
Please help me to install network manage SSTP on centos7
Have Set DHCP Options to address only in nm-connection-editor
But the /etc/resolv.conf
still got Override with the contents of /etc/ppp/resolv.conf
apt policy *sstp*
sstp-client:
Installed: 1.0.12-0ubuntu1
Candidate: 1.0.12-0ubuntu1
Version table:
*** 1.0.12-0ubuntu1 100
100 /var/lib/dpkg/status
network-manager-sstp:
Installed: 1.2.6-0ubuntu0
Candidate: 1.2.6-0ubuntu0
Version table:
*** 1.2.6-0ubuntu0 100
100 /var/lib/dpkg/status
libsstp-api-0:
Installed: 1.0.12-0ubuntu1
Candidate: 1.0.12-0ubuntu1
Version table:
*** 1.0.12-0ubuntu1 100
100 /var/lib/dpkg/status
network-manager-sstp-gnome:
Installed: 1.2.6-0ubuntu0
Candidate: 1.2.6-0ubuntu0
Version table:
*** 1.2.6-0ubuntu0 100
100 /var/lib/dpkg/status
Is there a build rpm in a current Fedora-Repo? In the official repos it is not included as far as I can see.
Having previously ran sstp-client and network-manager-sstp successfully, I tried to install them on my laptop running Ubuntu MATE 16.04 (beta2).
First of all: This is a beta, so I don't expect everything to work.
The problem however, is that the debian package depends on an older version of PPP, this seems to also be hardcoded into the debian packages for sstp-client, making it more or less impossible to make it run.
I have downloaded the packages and changed dependencies to be able to install, but this hardcoding of versions in the debian package is what I would consider a bug.
Would it be possible to change this, so that sstp-client and network-manager-sstp don't have a hardcoded dependency to ppp 2.4.6?
e.g. Try the following to create a VPN entry. Should I use different APIs, or are these not implemented/exposed? Do you have any idea what would need to change in the C source to make them work as they are if it's a matter of them not being implemented? Would org.freedesktop.NetworkManager.Settings (at least .AddConnection()) need to be implemented explicitly?
The properties used are those in /etc/NetworkManager/system-connections/Example\ VPN (if created via the NM GUI), which are also listed at https://github.com/enaess/network-manager-sstp/blob/master/src/nm-sstp-service.c#L88
There's a direct mapping between the config file and the dbus settings for wifi connections. Is this untrue for the SSTP and PPTP plugins?
#!/usr/bin/env python3
import dbus
import os
import uuid
bus = dbus.SystemBus()
ssn = "org.freedesktop.NetworkManager"
sysproxy = bus.get_object(ssn, "/org/freedesktop/NetworkManager/Settings")
settings = dbus.Interface(sysproxy, ssn + ".Settings")
s_vpn = dbus.Dictionary({
'ca-cert' : '/usr/local/share/ca-certificates/my-cert-chain.pem',
'user' : 'username',
'refuse-eap': True,
'refuse-chap': True,
'gateway' : 'vpn.example.com',
'domain' : 'EXAMPLE',
'refuse-pap' : True,
'password-flags' : '0',
'proxy-password-flags' : '0',
'service-type' : 'org.freedesktop.NetworkManager.sstp'
})
# Only service-type is allowed, all others raise org.freedesktop.NetworkManager.Settings.Connection.InvalidProperty: vpn.xyz: unknown property
s_secs = dbus.Dictionary({
'password' : 'password',
})
# nmcli con modify 'Example SSTP' vpn.secrets 'password = xxx'
# works, this doesn't
s_con = dbus.Dictionary({
'id': 'Example SSTP',
'type': 'vpn',
'uuid': str(uuid.uuid4()),
'permissions': ['user:'+os.environ['USER']],
'autoconnect' : False,
})
s_ip4 = dbus.Dictionary({'method' : 'auto'})
s_ip6 = dbus.Dictionary({
'method' : 'ignore',
'ip6-privacy' : False,
'addr-gen-mode' : 1, # 'stable-privacy' ?
})
con = dbus.Dictionary({
'connection': s_con,
'vpn': s_vpn,
'ipv4': s_ip4,
'ipv6': s_ip6,
'vpn-secrets' : s_secs,
})
settings.AddConnection(con)
First off, many thanks for writing sstp-client and building the Debian/Ubuntu packages. (This is an amazingly great tool for everyone who has to deal with ancient MS VPNs!)
The NetworkManager/Gnome integration works well for me, but I am having trouble getting sstpc
+pppd
to work standalone from the command line (with pppd
). The motivation is that I'd like to be able to connect on a headless server without NetworkManager. I'm using:
When I run sstpc
and tell it to launch pppd
, everything works fine and I can send traffic to the VPN, such as this example of a simple DNS lookup:
$ sudo sstpc --user USERNAME --password PASSWORD --cert-warn VPN.CLIENT.COM require-mppe noauth
usepeerdns logfd 2
...
primary DNS address 192.168.123.0
...
# from another terminal, since sstpc stays in the foreground
$ sudo ip route add 192.168.123.0/24 dev ppp0
$ dig @192.168.123.1 SERVER.CLIENT.COM
... replies immediately ...
However, if I instead run pppd
and tell it to invoke sstpc
, I cannot receive any traffic from the VPN:
$ sudo pppd pty '/usr/sbin/sstpc VPN.CLIENT.COM --cert-warn --nolaunchpppd --ipparam sstp-CLIENT ' ipparam sstp-CLIENT usepeerdns require-mppe noauth user USERNAME password PASSWORD
<log file shows successful setup>
$ sudo ip route add 192.168.123.0/24 dev ppp0
$ dig @192.168.123.1 SERVER.CLIENT.COM
... no reply ...
When I add --log-level 4
to sstpc, I can see that the connection setup is going normally, but afterwards sstpc is never receiving packets from the peer, only sending them:
Sep 14 19:22:02 sstpc[14577]: SEND SSTP DATA PKT(84)
Sep 14 19:22:08 sstpc[14577]: SEND SSTP DATA PKT(84)
Sep 14 19:22:09 sstpc[14577]: SEND SSTP DATA PKT(76)
Sep 14 19:22:09 sstpc[14577]: SEND SSTP DATA PKT(76)
Do you have any idea why this might be happening?
I would prefer to have pppd call sstpc, rather than the other way around, since it seems to make it easier to set up a pidfile to check that the connection is still up.
This option enables TLS SNI - an extension that makes it possible to have multiple certificates on one IP.
This should be harmless, as the additional information won't be send if the server doesn't advertise support, but it makes for some cryptic disconnects when it's not there:
sty 22 20:24:39 ktosiek-laptop sstpc[28490]: Unrecoverable SSL error -1
sty 22 20:24:39 ktosiek-laptop sstpc[28490]: HTTP handshake with server failed
The above can be replicated by trying to connect to vpn.dcs.pl
, which requires SNI, with sstpc.
One can also check with openssl s_client -connect vpn.dcs.pl:443
- the client will get the server certificate, and then fail. But it works with openssl s_client -connect vpn.dcs.pl:443 -servername vpn.dcs.pl
.
I'm not sure if this is related to specific version of Windows or something else in our network, I'll talk to the people managing this server tomorrow.
We've got an error report in the Fedora Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1778519
The short version is:
In the simplest case, the WiFi connection CJM-5 is established and I try "sstpc --warn-cert terracina.tclc.org" and I see /var/log/messages says: ethtool: autonegotiation is unset or enabled, the speed and duplex are not writable.
@enaess Do you know what could a reason? More details are in the linked issue.
It does not builds on Arch because of deprication of gnome_keyring_memory_strdup, gnome_keyring_memory_free. If i force build it not start connection:
Dec 29 19:55:39 mini gnome-session[411]: Gjs-Message: JS LOG: Invalid VPN service type (cannot find authentication binary)
Dec 29 19:55:39 mini NetworkManager[15688]: [1419872139.919863] [vpn-manager/nm-vpn-connection.c:1778] get_secrets_cb(): Failed to request VPN secrets #2: (6) N
Line 493 should be...
if (!isalnum (*p) && (*p != '-') && (*p != '.') && (*p != ':'))
instead of
if (!isalnum (*p) && (*p != '-') && (*p != '.'))
Also the error message at line 535 should show the value instead of the key...
_("invalid gateway '%s'"),
value);
instead of
_("invalid gateway '%s'"),
key);
"Invalid gateway 'gateway'" isn't much help. :)
when attempting to setup a sstp client connection to a server using pap authentication method. The connection work for one time then stops working due to pap authentication method somehow becoming unchecked. If I recheck the pap authentication method and reconnect with will work but I have to recheck the pap authentication method every time. I have had a report from one of my senior colleges that the command line method of connecting works flawlessly.
Could you explain the reason of the version constraint on ppp
, namely ppp (<< 2.4.6)
? It compiles fine (and seems to run fine) without it.
The work to make network-manager-sstp natively available in Fedora is slowly moving forward. By the way a checked told me that:
[!]: Package should not use obsolete m4 macros
Note: Some obsoleted macros found, see the attachment.
AC_PROG_LIBTOOL found in: NetworkManager-sstp-0.9.10/configure.ac:17
It's not a blocker as I expect to have already generated configure
file available in a tarball, but by the way of the further changes you could think about replacing it with LT_INIT.
Is there anyway to change the connection port other than 443 on OpenWRT?
Hey,
when i want to configure VPN and choose in drop down menu of GUI SSTP and hit create i get this error:
Could not load editor VPN plugin for org.freedesktop.NetworkManager.sstp ( The resource at /org/freedesktop/network-manager-ppt/nm-sstp-dialog.ui does not exist.
Understand that GNOME Gui tool is not loading right file but unsure how to reinstall/fix it?
Installed on Solus OS following this:
https://solus-project.com/forums/viewtopic.php?f=9&t=9790
Thank you.
Hi,
I'm having issues installing sstp-client, network-manager-sstp and network-manager-sstp-gnome and its deps on Ubuntu 21.10 (Pop!Os): Among other things, it returns
The following packages have unmet dependencies:
sstp-client : Depends: ppp (< 2.4.7-3~) but 2.4.9-1+1ubuntu1 is to be installed
E: Unable to correct problems, you have held broken packages.
Hi, thank you for your work in this project.
The last Ubuntu LTS, 20.04, was just released (April 23, 2020). The ppa has only packages for eoan (19.10) and older, and that packages has broken dependencies in new 20.04 LTS.
*I already was able to install by generating new deb files from sstp-client source.
The community would be very greateful if you could make packages available for Ubuntu 20.04.
Firstly, got error at configure.ac:
configure.ac:62: error: possibly undefined macro: AM_GLIB_GNU_GETTEXT
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
Then, got errot at configure:
configure: error: cannot find install-sh, install.sh, or shtool in "." "./.." "./../.."
Please, update the INSTALLING docs.
The VPN tab of the connection editor takes username and password. If I leave blank, it requests user name and password when I try to connect. Once I have supplied the user name and password, it seems to remember it (doesn't ask again when I reconnect later).
I'd prefer that this behaved like the PPTP VPN connection editor, which has a Saved / Always Ask / Required selection in the UI, so I have the option to always manually enter the password when connecting. Screenshots attached for comparison.
I'm using the 0.9.8.8 release debs for ubuntu on Trusty.
I'm happy to work on this, with some guidance... there is code at sourceforge and at github, and it's not clear what commit was used for building for Trusty, before conversion to newer Network Manager. Ideally I'd like to have something that works for Trusty while also getting the task done for newer releases (Xenial is imminent) and other releases and distros using Network Manager.
Compiling on Fedora 20 leads to the same error as in #1:
[root@hostname ~] ./usr/local/libexec/nm-sstp-service --debug
** Message: nm-sstp-service (version 0.9.8) starting...
** (nm-sstp-service:2286): WARNING **: Failed to initialize VPN plugin: Connection ":1.285" is not allowed to own the service "org.freedesktop.NetworkManager.sstp" due to security policies in the configuration file
(nm-sstp-service:2286): GLib-GObject-CRITICAL **: Custom constructor for class NMSstpPlugin returned NULL (which is invalid). Unable to remove object from construction_objects list, so memory was probably just leaked. Please use GInitable instead.
Are there any recommended ./configure
parameters for Fedora 20, too?
There is a bug report of a Fedora user showing that the Gnome configuration dialog doesn't work in with Gnome (42) used in upcoming Fedora 36. I don't have F36 on hand, but it seems to be related to GTK4 also affecting a counterpart for OpenVPN and linked by the reporter. A related MR in that project: https://gitlab.gnome.org/GNOME/NetworkManager-openvpn/-/merge_requests/41/
I have no experience in making UI for Gnome, but it seems that network-manager-sstp(-gnome) would need to modified to work with Gnome 42.
Need the ability to use normal .cer files
Workaround:
Convert .cer file to .pem format
openssl x509 -inform der -in certificate.cer -out certificate.pem
In file included from /usr/include/string.h:519,
from /usr/include/glib-2.0/glib/gslice.h:26,
from /usr/include/glib-2.0/glib.h:79,
from /usr/include/glib-2.0/gobject/gbinding.h:28,
from /usr/include/glib-2.0/glib-object.h:22,
from /usr/include/glib-2.0/gio/gioenums.h:28,
from /usr/include/glib-2.0/gio/giotypes.h:28,
from /usr/include/glib-2.0/gio/gio.h:26,
from ./shared/nm-utils/nm-glib.h:24,
from ./shared/nm-default.h:48,
from src/nm-sstp-pppd-plugin.c:34:
In function ‘strncpy’,
inlined from ‘get_credentials’ at src/nm-sstp-pppd-plugin.c:551:3:
/usr/include/bits/string_fortified.h:106:10: error: ‘__builtin_strncpy’ specified bound depends on the length of the source argument [-Werror=stringop-overflow=]
106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/nm-sstp-pppd-plugin.c: In function ‘get_credentials’:
src/nm-sstp-pppd-plugin.c:548:9: note: length computed here
548 | len = strlen (my_username) + 1;
| ^~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/string.h:519,
from /usr/include/glib-2.0/glib/gslice.h:26,
from /usr/include/glib-2.0/glib.h:79,
from /usr/include/glib-2.0/gobject/gbinding.h:28,
from /usr/include/glib-2.0/glib-object.h:22,
from /usr/include/glib-2.0/gio/gioenums.h:28,
from /usr/include/glib-2.0/gio/giotypes.h:28,
from /usr/include/glib-2.0/gio/gio.h:26,
from ./shared/nm-utils/nm-glib.h:24,
from ./shared/nm-default.h:48,
from src/nm-sstp-pppd-plugin.c:34:
In function ‘strncpy’,
inlined from ‘get_credentials’ at src/nm-sstp-pppd-plugin.c:559:3:
/usr/include/bits/string_fortified.h:106:10: error: ‘__builtin_strncpy’ specified bound depends on the length of the source argument [-Werror=stringop-overflow=]
106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/nm-sstp-pppd-plugin.c: In function ‘get_credentials’:
src/nm-sstp-pppd-plugin.c:556:9: note: length computed here
556 | len = strlen (my_password) + 1;
| ^~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make[2]: *** [Makefile:1243: src/nm_sstp_pppd_plugin_la-nm-sstp-pppd-plugin.lo] Error 1
I had installed eoan packages from ppa. I could connect to my company VPN with that, but the option to not redirect all my Internet traffic to VPN is not working.
The "Use this connection only for resources on this network"* checkbox in VPN settings (gnome settings, network, VPN) doesn't works correctly. When that checkbox is marked:
1 - It's not using VPN's DNS, even when i try configure that manually in gnome with that server address, whether is Automatic DNS on or OFF (so i cannot resolve domain address from VPN network)
2- It only works when manually defining routes for the private ip ranges ("automatic" should works like in MS Windows, i guess it should try use VPN to reach ips in private ip range, like 10.x.x.x or 192.168.x.x).
$lsb_release -rd
Description: Ubuntu 19.10
Release: 19.10
$ apt-cache policy network-manager-sstp-gnome
network-manager-sstp-gnome:
Instalado: 1.2.6-0ubuntu3
Candidato: 1.2.6-0ubuntu3
Tabela de versão:
*** 1.2.6-0ubuntu3 500
500 http://ppa.launchpad.net/eivnaes/network-manager-sstp/ubuntu eoan/main amd64 Packages
100 /var/lib/dpkg/status
$ apt-cache policy network-manager-sstp
network-manager-sstp:
Instalado: 1.2.6-0ubuntu3
Candidato: 1.2.6-0ubuntu3
Tabela de versão:
*** 1.2.6-0ubuntu3 500
I'm running Ubuntu 17.10.
It looks like the PPA is only for earlier versions, so I tried building from source.
My problems may well just arise out of ignorance, but I cloned the git repo and then ran autogen.sh, but it gave the following error:
configure.ac:68: error: possibly undefined macro: AM_GLIB_GNU_GETTEXT
I'm guessing I'm just missing a dependency; I looked in the README (as well as several other files), but I haven't found a list of dependencies. Is there a list somewhere that I'm missing?
Thanks!
I have a Windows 2019 NPS Server and Mikrotik as a RADIUS client. Windows and ubuntu 20.04 SSTP clients are working like a charm. However, the ubuntu 22.04 SSTP client is not!
After successful authentication, Mikrotik shows below error codes and drops the connection:
sstp-ubuntu22: authenticated
sstp-ubuntu22: connected
sstp-ubuntu22: disconnected
sstp-ubuntu22: received unsupported protocol 0x80fd
sstp-ubuntu22: terminating...
.
.
.
Any clue will be appreciated.
Hello @enaess,
Could you make update the PPA for 19.10 (eoan)?
or maybe lend some insight in how I can get it working with the disco release.
I'm kind of new to this linux package thing, I tried adding the PPA from disco instead
deb http://ppa.launchpad.net/eivnaes/network-manager-sstp/ubuntu disco main
The following packages have unmet dependencies:
network-manager-sstp : Depends: libnm-glib-vpn1 (>= 0.7.999) but it is not installable
Depends: libnm-util2 (>= 0.8.998) but it is not installable
Depends: ppp (< 2.4.6) but 2.4.7-2+4.1ubuntu4 is to be installed
Thanks in advance!
Hi,
I was trying to install sstp-client
through the PPA, but get the error as titled. I'm running Kali Linux which is based on Debian testing under the hood. None of the PPA dists seem to work under Kali, I tried a few, all bailing out with libevent issues.
This is my libevent library package/version:
libevent-2.1-7/kali-rolling,now 2.1.11-stable-1 amd64 [installed,automatic]
Asynchronous event notification library
Is it the libevent version that Kali Linux rolling is shipping the issue? Just wondering if there's a quick way to resolve, or should I compile from source?
Thanks
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.