Giter Site home page Giter Site logo

gawindx / winnut-client Goto Github PK

View Code? Open in Web Editor NEW
380.0 17.0 70.0 21.09 MB

This is a NUT windows client for monitoring your ups hooked up to your favorite linux server.

License: GNU General Public License v3.0

C# 27.08% Visual Basic .NET 72.92%

winnut-client's Introduction

WinNUT-Client

Donate

Installation

To use it, please follow the following steps:

  1. Get the last available Releases
  2. Install WinNUT-Client using the "WinNUT-Setup.msi" file obtained previously
  3. If you were using an older version of WinNUT (v1.x), copy your "ups.ini" configuration file to the WinNUT-Client installation directory (by default "C:\Program Files(x86)\WinNUT-Client ") for an automatic import of your parameters during the first launch
  4. Start WinNUT V2 and modify the parameters according to your needs

Specific Configuration

For Synology NAS

If your NUT server is hosted on a Synology NAS, be sure to provide the following connection information (default): Login: upsmon Password: secret

It will probably be necessary to allow the WinNUT-Client IP to communicate with the NUT server. See issue 47 for more information, specifically this commentary.

Translation

WinNUT-Client V2 is natively multilingual, so it is no longer necessary to select your language from the software interface. Currently, WinNUT-Client supports:

  • English
  • German
  • French
  • Simplified Chinese
  • Russian

To add / correct a language

Method 1 (preferred)
  1. Fork this repository

  2. In the translation directory:

    For a new translation:

    1. Use the new_translation.csv file to translate the texts
    2. Save this file in xx-XX corresponding to the language code

    For a correction:

    1. Edit the wrong language file
    2. Make the necessary corrections
  3. Save it instead

  4. Create a pull request on this repository to take into account the translation.

Method 2
  1. Get the file new_translation.csv
  2. Perform the necessary translations
  3. Save this file in csv format (IMPORTANT)
  4. Create a gist via gist github and paste the contents of the previously created csv file
  5. Open a new issue and tell me: - the link of the gist - the language to create / correct

Your translation / correction will be added on a new version and will thus be available to the entire community.

Update WinNUT-Client

Since version 1.8.0.0, WinNUT-Client includes a process for checking for updates. This process can be started automatically on startup or manually on demand (and you can choose whether you want to update from the stable or development version)

During this update, the new installation file will be automatically downloaded and you can easily update your version of WinNUT-Client.

This process is fully integrated and no longer requires a second executable.

Third Party Components / Acknowledgments

WinNUT-Client uses:

License

WinNUT-Client is a NUT windows client for monitoring your ups hooked up to your favorite linux server. Copyright (C) 2019-2021 Gawindx (Decaux Nicolas)

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY

Donation

If you want to support this project or reward the work done, you can do so here:

paypal

winnut-client's People

Contributors

gawindx avatar jcsmook avatar nonpointer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

winnut-client's Issues

NUT protocol in .Net DLL/Library

I tried reaching out to you via email since I wasn't sure if this should be an issue, but I wanted to let you know that I've started working on core NUT functions in a .Net library here. I'd really appreciate your feedback!

Update loop between v2.0.7721.35955 and vv2.0.7710.35866

I have WinNUT set to use the "stable" channel for updates.
Version 7.7.1.0 suggested me an update to 2.0.7721. I installed it. The 2.0.7721 version tells me, there's an update, showing changelog for v2.0.7710.35866. If I accept it, the application crashes. Here's the report (cut down a bit):

WinNUT Bug Report
Os Version : 6.2.9200.0
WinNUT Version : 2.0.7721.35955

WinNUT Parameters : 
{
  "Delay": 120,
  "AutoReconnect": "True",
  "FrequencySupply": 0,
  "MinUPSLoad": 0,
  "MaxUPSLoad": 0,
  "MinimizeToTray": "False",
  "MinimizeOnStart": "False",
  "CloseToTray": "False",
  "StartWithWindows": "False",
  "UseLogFile": "True",
  "Log Level": 0,
  "ShutdownLimitBatteryCharge": 0,
  "ShutdownLimitUPSRemainTime": 0,
  "ImmediateStopAction": "False",
  "Follow_FSD": "False",
  "TypeOfStop": 1,
  "DelayToShutdown": 0,
  "AllowExtendedShutdownDelay": "False",
  "ExtendedShutdownDelay": 0,
  "VerifyUpdate": "True",
  "VerifyUpdateAtStart": "False",
  "DelayBetweenEachVerification": 2,
  "StableOrDevBranch": 0,
  [...]
}

Error Message : 
Exception type: System.ArgumentNullException
Exception message: Value cannot be null.
Parameter name: uriString
Exception stack trace: 
   at System.Uri..ctor(String uriString)
   at WinNUT_client.Update_Gui.Update_Btn_Click(Object sender, EventArgs e)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

There's nothing on the update in the events from the report.
I have the log file enabled, but it only shows "UPS_Network : Connection to Nut Host Established" entries.

Not responding to force shutdown FSD test command

The application is not responding to the upsmon FSD command sent from the server (upsmon -c fsd).
According to the log, the command is received but WinNUT just waits to get disconnected by the server.
WinNUT should initiate the forced shutdown of the host when this command is received from the NUT server.
Please find a log attached, search for: Process Result With ups.status : VAR UPS ups.status "FSD OL"
FSD OL and FSD OB should initiate a shutdown.
Thanks to have a look at it and I'm available if you need to test anything.
WinNUT-client_FSD_Fail.log

Two problems !

Hello,

I installed for the first time, WinNUT Client and :

  • after re-start of Windows, Winnut don't appears in the systray
  • when i click on the executable file, the icon appears in the systray and disappears immediately. Winnut don't open.

Thanks

Automatic startup

Now im having a bug that the application does not start up even enabled start up with windows. Its also visible in windows task managers start and its enabled. When I copy the link to start menus run folder it starts up normally. I also reinstalled and deleted all registry entries and folders before and no change.

I also suggest to remove tool tip Connected and leave only Energy status tool tips. Also suggest turning tool tips on and off option.

Request: Ability to run as a service

In order to use this on servers I need to be able to start this automatically and not in the context of an interactive user. I guess this would also mean splitting the GUI-parts from the application.

IPv6 support

Is it possible to have it support IPv6? Looks like it only supports IPv4 now. Thanks.

Test 2.0.0.0 beta

Hello,
I wanted to test the beta, so I put the ini file in the folder to transfer them. When I ran WinNut-client, I saw a message telling me that they have been imported, but the application does not launch. When I click on it I can see something launching in the task bar and in the notification bar but it stops immediately.

Settings Poll Delay Expressed In Milliseconds

Poll delay in settings is still expressed in milliseconds, which is counter-intuitive.
As discussed, this should be in seconds to reflect NUT server behavior and to harmonize documentation.
Can be treated as low priority.
On a personal note, this box should be renamed as "Poll Interval" to reflect NUT server internal variables in CONF files.
We are used to this already and may be less confusing for some users.
Thanks.

Round the value of watts

Hello,
It's me again. ๐Ÿ˜
Just a quick question, would it be possible to round the value "UPS load" in Watt to 2 digits max after the decimal point?
Sometimes, the value exceeds the frame (???, 333333333333333333333333333 or ???, 66666666666666666666666666666667).
Thank you.
Otherwise everything else is fine, good job! ๐Ÿ‘
exceeded characters

Version 2.0.7710 doesn't works

Hi,

I installed, without issues, the last version (2.0.7710) but impossible to launch it.
The icon appears in the systray and disppeared immediately.

For information, the previous version (v2.0.4.0) don't detected the lastest release and impossible to update manually.

Wi-fi support

Greetings,
I'd like to have the client connect to the server via wi-fi, and it doesn't work; it requires an Ethernet connection. Can that be done? Thanks.

[Feedback/Info for Freenas users]

Since I ran into this I thought I'd leave it here for others:
Set the Delay to 1, then it will actually connect, 0 doesn't work. Poking settings helps :D
It might be worth putting this into the wiki

I'd also like to request a shutdown timer in seconds to be added. Battery % is ok for longer durations, but most UPS's will report values all over the place until it drops below 90% or so and drops normally. Depending on load and UPS size it could take a while for it to get this far.

WinNUT client disconnects each night

I'm running WinNUT-Client for several days now but did not manage to keep it up and running for more than 24hrs. The Client disconnects from the server, process dies (or vice versa - can't tell so far).

Log says "Force Disconnect" - maybe... but that's not me (system itself does not go into hibernate or sleep state and I did NOT force the client to disconnect):

22.01.2021 16:41:24 44184 UPS_Network : Apply Fallback Value when retrieving output.voltage
22.01.2021 16:41:24 44184 UPS_Network : Apply Fallback Value when retrieving battery.capacity
22.01.2021 16:41:24 44184 UPS_Network : Apply Fallback Value when retrieving input.frequency
22.01.2021 16:41:24 44184 UPS_Network : Apply Fallback Value when retrieving output.voltage
22.01.2021 16:41:24 44184 UPS_Network : Deconnect from Nut Host
22.01.2021 16:41:24 44184 UPS_Network : Force Disconnect
22.01.2021 16:41:24 44184 UPS_Network : Deconnect from Nut Host
22.01.2021 16:41:24 44184 UPS_Network : Force Disconnect
23.01.2021 16:43:06 47408 UPS_Network : Connection to Nut Host Established
23.01.2021 16:43:06 47408 UPS_Network : Apply Fallback Value when retrieving battery.capacity

I have re-established connection manually by restarting the client. I have checkmarked "re-establish connection" in the options (just below the "credentials") but this doesn't work whick is an indicator that the process died before the connection was lost.

You can also see that timestamps in the log file do NOT change whilde the client is operating - timestamp show time of startup in every record (it's just by chance that the manual startup time today is the same as yesterday - just a quarter to five approx...)

For WinNUT-client is a nice tool to look into my (remote) UPS but at the time being I can't use it for serious monitoring purposes or emergency shutdown on powerfails. Have to lookout for something else in the meantime but would be more than happy if you could solve (or at least answer) this issue

best - Bernhard

Unable to update from 2.0.4.0

Version is not correctly detected and 2.0.4.0 is still unable to download the correct package.

As shown in the image below;
(The app downloads a zero byte msi package...)

image

GUI Not Indicating If Battery Is Charging

It may be a good add-on to have a visual indication if the battery is actually charging.
Something can be indicated below the battery level gauge or somewhere else but needs to be seen easily.
It's weird to just see Online, with a battery level of 93% for example and not to have a currently charging indicator.
Thanks.

NUT Server doesn't see client, but client sees NUT UPS Data

Just installed this. Awesome so far.

I am able to get the WinNUT-Client see the UPS data, however I am unable get the NUT Server to see the Windows machine via psc ups.

I want to confirm that the WinNUT-Client is able to proceed with shutdown parameters even if the Server doesn't see the client.

Opening the settings dialog crashes the program

Hi, like mentioned in the subject, it's not possible to adjust anything in the settings window, the program then crashes after a second or so. Fortunately I found out (just seen this program today for the first time, as the UPS I ordered for my NAS / switch / tinkerboard with home automation arrived also today) that the program writes and also uses a configuration text file, where I could enter the host name of my NUT server. Starting WinNUT then works and the program keeps running, until trying to enter the settings again...

bug ? and proposal

First of all, a big thank you for this application, it allows me to view on a remote PC the status of my UPS (BR1500G-FR) connected to my nas (DS218+).

Small problem: the output voltage remains at 0, a bug?

The following, I don't know if it's achievable but I still propose (you never know):
is it possible to just display in the "UPS load" part the wattage in addition to the percentage?
Is it possible to export the data to a file? (For example, at each updating, export the updated values in a TXT file or other.)

Again thank you for this interface.

PS: sorry for the mistakes, I'm not good at English.

Edit: I have version 3.7.1

WinNUT variables reporting incorrectly

Hello! I've got WinNUT set up to connect to a Synology DS918+ NAS which is attached to a CyberPower CP1500EPFCLCD UPS.

The NAS seems to be reading the UPS state correctly, and WinNUT used to as well, but it's recently started reporting the battery charge at 20% (the UPS is always online and at 100% and reading from the NAS shows this) and the UPS load at 100% (it fluctuates at around 10-30%). The UPS details show as Unknown, and the 'List UPS Variables' window is blank, even when I click 'Reload'. Disconnecting from the NAS and reconnecting does nothing.

upsnut

Any idea what might be causing this? Thanks in advance!

NUT client password in plain text and visible

In the configuration, the password of the nut account is visible in plain text.
This can be an issue on shared accounts. Passwords are always sensible...
The password should be entered and then replaced with dots when viewing the configuration.
Should also be encrypted in some way in the registry if possible:
Computer\HKEY_CURRENT_USER\Software\WinNUT\Connexion
NutPassword key is in plain text.

Thanks.

Full consideration of the Nut protocol

Currently, the implementation of the Nut protocol is incomplete and does not allow to respond to signals sent by the server.
This shortcoming can cause, among other things, the non-shutdown of the client station hosting WinNUT when the Nut server requests a forced shutdown of the client (s).
Other signals are also not supported and are not mentioned here.

WinNUT only shows "UPS on battery" but it is actually on line

Hi I am using an Eaton Elipse Eco UPS on synology and trying to deploy WinNUT on some Windows PCs which is connected in the same network as Synology. After configuration, it shows the parameter properly, but the status (left panel) always says that the UPS is battery, but actually it is on line and 100% charged...

Options

There is the possibility for sleep or hibernate??

Wrong information in the tray icon when plugged in

With mouse over the tray icon, the mention On Battery (xx%) is mentioned even if the UPS is on AC (at least in the French version, maybe only a translation mismatch).
The tray icon is well reacting when plugging / unplugging the UPS on / from AC, becoming green or red, but the indication still showing On Battery.
BTW, very good app!
Tray icon mouse over.docx

Ability To Run Scripts When UPS State Is Changing

It should be a good idea, on a future release, to add the ability to run scripts when the UPS state is changing.
On battery = Script1.script
Back Online = Script2.script
With this we would be able to stop power hungry processes to save the batteries and resume them when the utility power returns. This is possible on Linux and it's part of the NUT package.
This can be added from inside WinNUT-Client application or triggered from a system event with the Task Scheduler ( this approach is more easier to integrate at first). Actually WinNUT-client is not registering any system events when the UPS state is changing so it's not possible for now.

Thanks.

winnut does not connect to master

No firewall rules blocking client or server side

I have enabled log in debug mode and there is nothing there indicating why it is not connected.

Just this

02/10/2020 16:47:02 11188 WinNUT : Force Reconnect from menu
02/10/2020 16:47:02 11188 UPS_Network : Connect To Nut Server

I do use a username and password which is experimental?

Password Still Visible In Settings

NUT connection password is still visible in plain text in settings.
Registry is now encrypted and OK.

Capture3

Applying a "TextBox.PasswordChar Property" or similar to the entry box will solve this issue.
Seeing the standard bubble dots will add privacy to the application.
Username can be left visible.
This is not an issue for home users but if this app is installed on a server with remote desktop clients, this can be a security issue unless we hide and contain the app from being displayed and detected.

Running: v2.0.7710.35866

Re-establish connection automatically

Greetings, first thanks for this project, it is great and I will recommend it to my colleagues.
Although the "Re-establish connection" checkbox gets marked on the "Preferences --> Connection" menu, the connection does not get automatically re-established (and the checkbox mark disappears). This happens whether or not the program is run as an administrator on Windows 10.
Thanks for your project and attention.

wrong UPS load with APC Smart UPS 1000, DS218play

Hi,

with the windows client i got a max load on the "UPS Load" indicator of 125 W, the UPS is able to handle 700 W / 1000 VA.
I have windows 10 and the last version of Winnut (2.0.7710.35902)
DiskStation DS218play is Last firmware DSM 6.2.3-25426 Update 3
APC Smart UPS 1000 (model from 2010) firmware COM 02.1 UPS.05.I (no network card)
UPS

Thank You

Nice Software :)

WinNUT registering as a local UPS

I'm not sure if this is technically possible, but I'd like to make the request: could WinNUT (running as a service) register with Windows as a local UPS, so Windows thinks there is a UPS connected locally? WinNUT could then just pass on all the data it gets from the UPSmon server. This might be interesting as a long-term feature request.

Application crash when using "Disconnect" command

Version: 2.0.4.0 (on Windows Server 2012 R2)

I'm trying to troubleshoot an issue where the WinNUT client does not appear to connect to my NUT server. When I click the Disconnect menu option, the application immediately crashes. In the log, it repeats the line UPS_Network : Deconnect from Nut Host twice. In the Windows Event Application log, there are two errors from "FileLogWriter" which state Object reference not set to an instance of an object. Application shut down at (time). There doesn't seem to be any stack traces provided.

Windows can't shut down

Running WinNUT-Client v2.0.4.0, Windows 10.

Windows can't shut down when the specified threshold is reached (after the specified wait time) - it may be that the shutdown command is not being fed the "force" switch i.e. /f

See log and screenshot attached.
WinNUT.txt
Capture

V2.0.5.0 - not a valid msi-installer package

When trying to install new version 2.0.5.0 (from inside WinNUT client or by running the downloaded setup-xxx.msi file) on W7 the installation fails with an error message saying something like

"this does not seem like a valid msi-Package go back to ask the developer for a valid one"

Version 2.0.4.0 has installed properly and is running without problems on my system

bernhard

WinNUT disconnects when UPS running on battery

I have recently replaced my UPS with a different model and at the same time updated WinNUT to latest version so not sure what is causing this, but when playing around with the new UPS connected to my server I realized WinNUT looses connection to the nut-server when the UPS is running on battery. Turning on the power makes WinNUT to reconnect instantly. Other on a different computer are able to correctly report the UPS state even when running on battery. Also nut-server is running correctly during the battery operation.

Any idea what could be wrong?

Blocked by Antivirus Trojan

Hi,
my GDATA Antivirus is blocking the winnut-client.exe -> Trojan.GenericKD. This happens with the original project and with your fork.
I checked the file with virustotal to see if GDATA is the only one - is not. Please see the attached screenshots.
Is there a possibility to fix this? I hope this is a false positive message.
Thanks!

ps: i can not upload the screenshots here, don't know why. Here is a link to my dropbox...
https://www.dropbox.com/sh/iqmg2tk4gl9lov0/AAB30yzdNvLQ2PW5ioZNPicJa?dl=0

Connexion Perdue / Lost

Hello,

Since several days, I can't log me anymore on my NUT Server (192.168.1.254 default port 3493) with the old project winnutclient@sourceforge and same with your fork gawindx/WinNUT-Client.

But ... it's working correctly with a telnet command from the same Windows (and firewall is OK) ...
You can see a screenshot here : https://images.franceserv.fr/images/2019/10/29/5880b2f47cdfda1ea5f0015a11c1633f.png

Which could be the problem please ? Perhaps a "format" or a "Carriage return" problem ? I don't understand which could be problem and the package nut-client seem not be changed. I changed only the USB port and updated the device name into configuration file but all is working in local and in telnet in remote. But not form a nut-client GUI in remote.

On my "192.168.1.254" Debian Linux :
#dpkg -l | grep nut-client
ii nut-client 2.7.4-5 amd64 network UPS tools - clients

#telnet 127.0.0.1 3493
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
list ups
BEGIN LIST UPS
UPS trust "Web server"
END LIST UPS
list var trust
BEGIN LIST VAR trust
VAR trust battery.charge "100"
VAR trust battery.voltage "13.60"
VAR trust battery.voltage.high "13.00"
VAR trust battery.voltage.low "10.40"
VAR trust battery.voltage.nominal "12.0"
VAR trust device.type "ups"
VAR trust driver.name "blazer_usb"
VAR trust driver.parameter.pollinterval "20"
VAR trust driver.parameter.port "/dev/bus/usb/001/006"
VAR trust driver.parameter.synchronous "no"
VAR trust driver.version "2.7.4"
VAR trust driver.version.internal "0.12"
VAR trust input.current.nominal "4.0"
VAR trust input.frequency "49.9"
VAR trust input.frequency.nominal "50"
VAR trust input.voltage "232.9"
VAR trust input.voltage.fault "232.9"
VAR trust input.voltage.nominal "230"
VAR trust output.voltage "232.9"
VAR trust ups.beeper.status "enabled"
VAR trust ups.delay.shutdown "30"
VAR trust ups.delay.start "180"
VAR trust ups.load "31"
VAR trust ups.productid "0003"
VAR trust ups.status "OL"
VAR trust ups.temperature "25.0"
VAR trust ups.type "offline / line interactive"
VAR trust ups.vendorid "06da"
END LIST VAR trust
logout
OK Goodbye
Connection closed by foreign host.

#/bin/upsc trust
Init SSL without certificate database
battery.charge: 100
battery.voltage: 13.60
battery.voltage.high: 13.00
battery.voltage.low: 10.40
battery.voltage.nominal: 12.0
device.type: ups
driver.name: blazer_usb
driver.parameter.pollinterval: 20
driver.parameter.port: /dev/bus/usb/001/006
driver.parameter.synchronous: no
driver.version: 2.7.4
driver.version.internal: 0.12
input.current.nominal: 4.0
input.frequency: 49.9
input.frequency.nominal: 50
input.voltage: 232.9
input.voltage.fault: 232.9
input.voltage.nominal: 230
output.voltage: 232.9
ups.beeper.status: enabled
ups.delay.shutdown: 30
ups.delay.start: 180
ups.load: 32
ups.productid: 0003
ups.status: OL
ups.temperature: 25.0
ups.type: offline / line interactive
ups.vendorid: 06da

Thank you in advance ...
Elodie

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.