Git Product home page Git Product logo

sbpp / sourcebans-pp Goto Github PK

View Code? Open in Web Editor NEW
321.0 30.0 173.0 46.52 MB

Admin, ban, and comms management system for the Source engine

Home Page: https://sbpp.github.io/

License: Creative Commons Attribution Share Alike 4.0 International

PHP 41.08% SourcePawn 12.80% CSS 1.76% JavaScript 22.42% HTML 4.09% Smarty 17.62% Hack 0.23%
source-engine sourcebans php sourcemod sourcepawn discord valve-servers valve sourcemod-plugin alliedmodders

sourcebans-pp's People

Contributors

50wliu avatar bara20 avatar borzaka avatar crazyhackgut avatar cripix avatar deniel00 avatar dependabot[bot] avatar frisasky avatar galexrt avatar geominorai avatar groruk avatar hackmastr avatar justinnobledev avatar keigel2001 avatar koteq avatar maxime1907 avatar peace-maker avatar psychonic avatar rumblefrog avatar rushaway avatar salasta avatar sapphonie avatar sarabveer avatar sneak-it avatar speciesx avatar stickz avatar sunstep avatar thebykotik avatar tiagoquix avatar wildcard65 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sourcebans-pp's Issues

SB cannot connect to server

sb_debug_connection.php log ->

[+] Trying to establish UDP connection
[+] UDP connection successfull!
[+] Trying to write to the socket
[+] Successfully requested server info. (That doesn't mean anything on an UDP stream.) Reading...
[-] Error getting server info. Can't read from UDP stream. Port is possibly blocked.

[+] Trying to establish TCP connection
[+] TCP connection successfull!
[+] Trying to write to TCP socket and authenticate via rcon
[+] Successfully sent authentication request. Reading...
[+] Got an response!
[+] Password correct!

Sourcebans sits at -> Querying Server Data...

Im using the master repo

Blocked Connections on Ban Page (CS:GO Update Dec, 2015)

Sorry Sarabveer.
But can not correct the error of repeating the name of the players on ban list (Blocked Connections) this was after the update CS: GO.
I've read people who have this error and the problem was fixed with the update SourceMod but I already did the update and remains the same and the worst is that when I give ban on the player appears many messages in chat inside the server.
Can you help me?
Sorry to open another topic but I really need help.

OpenID Login bscub() Error

Hello, when i try login with OpenID i get
Fatal error: Call to undefined function bcsub() in /var/www/html/mysite/sourcebans/steamopenid.php on line 41

Unable to ban via server console (sm_addban)

I tried to ban using sm_addban via the server console. I got this:
"L 05/17/2015 - 13:30:55: [sb_bans.smx] Failed to insert the ID ban into the database: Column 'aid' cannot be null"
sm_ban works fine, this only happen on sm_addban.
Note: sm_addban still works if banned by an admin and not from the server console
Tested on a CS:S Server
SM Version: 1.7.1-dev+5165
Metamod Version: 1.10.5-dev

Mysqli error in logs

Details:

[256] mysqli error: [1231: Variable 'optimizer_switch' can't be set to the value of 'block_nested_loop=off'] in EXECUTE("set session optimizer_switch='block_nested_loop=off';") 
Fatal error on line 77 in file /xxx/includes/adodb/adodb-errorhandler.inc.php

Parent Function

/xxx/includes/adodb/adodb-errorhandler.inc.php - 77
/xxx/includes/adodb/adodb.inc.php - 1071
/xxx/includes/adodb/adodb.inc.php - 1046
/xxx/pages/page.banlist.php - 42

Query String

p=banlist&advSearch=STEAM_X:X:XXX&advType=steamid&Submit

IP X.X.X.X

ps: 'mysql Ver 15.1 Distrib 10.0.21-MariaDB'

Warning: Division by zero

I get this error when I look at the ban list : Warning: Division by zero in /home/go_free_servers/client_10/www/sourcebans/pages/page.banlist.php on line 678

$pages = ceil($BanCount/$BansPerPage);
if($pages > 1) {
$ban_nav .= ' '; for($i=1;$i<=$pages;$i++) { if(isset($_GET["page"]) && $i == $page) { $ban_nav .= '' . $i . ''; continue; } $ban_nav .= '' . $i . ''; } $ban_nav .= '';

[sourcebans.smx] Failed to retrieve admins from the database, Subquery returns more than 1 row (Duplicate #103)

I dont reveive any error , just this one:

[sourcebans.smx] Failed to retrieve admins from the database, Subquery returns more than 1 row

and you said that it is because i have multiple admins with the same steam id.

i dont understand how can i have multiple admins with the same steam id? if you try to put an admin with the same steam id it will give an error and wont let me do that, so i think thats imposible.

database is correct, everything is right, maybe i need to do something else?
on csgo server when i add from web interface it modifies the sb_admins.cfg and adds them but on css server it doesnt, please help me!

CServerRcon.php: expects parameter 1 to be resource, boolean given in

Hello
I have a big problem with SourceBans

[Server Specs]
Apache/2.4.12 (Ubuntu)
Database client version: libmysql - 5.6.27
PHP extension: mysqli Documentation
PHP version: 5.6.11-1ubuntu3.1
OS Ubuntu 15.10

I dont know why i have AJAX error when i want ban,kick someone from web panel
BTW SourceBans web rcon console doesnt work (Can't connect to the server)

I tried SourceBans 1.5.3 and 1.5.4 same problem

Error: the XML response that was returned from the server is invalid. Received:
Warning: stream_set_timeout() expects parameter 1 to be resource, boolean given in /var/www/html/sourcebans/includes/CServerRcon.php on line 50

Warning: fwrite() expects parameter 1 to be resource, boolean given in /var/www/html/sourcebans/includes/CServerRcon.php on line 71

Warning: fwrite() expects parameter 1 to be resource, boolean given in /var/www/html/sourcebans/includes/CServerRcon.php on line 71
$('dialog-control').setStyle('display', 'block');

on my web host . sourceban show a blank page

[29-Jul-2015 06:53:35 GMT] PHP Warning: include_once(/home/_/public_html/_
/ban/includes/adodb/adodb.inc.php): failed to open stream: No such file or directory in /home/
_/public_html//ban/init.php on line 112
[29-Jul-2015 06:53:35 GMT] PHP Warning: include_once(): Failed opening '/home/******
/public_html/_/ban/includes/adodb/adodb.inc.php' for inclusion (include_path='.:/php/includes:/home/_/public_html/_/ban/includes/adodb') in /home/_/public_html/_/ban/init.php on line 112
[29-Jul-2015 06:53:35 GMT] PHP Warning: include_once(/home/
_/public_html/_/ban/includes/adodb/adodb-errorhandler.inc.php): failed to open stream: No such file or directory in /home/_/public_html/_/ban/init.php on line 113
[29-Jul-2015 06:53:35 GMT] PHP Warning: include_once(): Failed opening '/home/
_/public_html/_/ban/includes/adodb/adodb-errorhandler.inc.php' for inclusion (include_path='.:/php/includes:/home/_/public_html/_/ban/includes/adodb') in /home/_/public_html/_/ban/init.php on line 113
[29-Jul-2015 06:53:35 GMT] PHP Fatal error: Call to undefined function ADONewConnection() in /home/
**_/public_html/_/ban/init.php on line 114

on my web host . sourceban show a blank page, I debugged and have the errors above how to fix ?

sourcecomms and sbchecker can't find sourcebans.cfg

Sourcecomms and sbchecker are looking for the sourcebans.cfg at addons/sourcemod/configs/sourcebans/sourcebans.cfg, but since the upgrade to the sourcebans plugin 1.5.0 beta the sourcebans.cfg shouldn't be there anymore. See also this error log:

L 04/28/2015 - 00:04:40: [SM] Plugin encountered error 25: Call was aborted
L 04/28/2015 - 00:04:40: [SM] Native "SetFailState" reported: FATAL *** ERROR *** can't find addons/sourcemod/configs/sourcebans/sourcebans.cfg
L 04/28/2015 - 00:04:40: [SM] Displaying call stack trace for plugin "sourcecomms.smx":
L 04/28/2015 - 00:04:40: [SM]   [0]  Line 2576, sourcecomms.sp::ReadConfig()
L 04/28/2015 - 00:04:40: [SM]   [1]  Line 239, sourcecomms.sp::OnMapStart()
L 04/28/2015 - 00:04:40: [SM] Plugin encountered error 25: Call was aborted
L 04/28/2015 - 00:04:40: [SM] Native "SetFailState" reported: FATAL *** ERROR *** can not find addons/sourcemod/configs/sourcebans/sourcebans.cfg
L 04/28/2015 - 00:04:40: [SM] Displaying call stack trace for plugin "sbchecker.smx":
L 04/28/2015 - 00:04:40: [SM]   [0]  Line 317, sbchecker.sp::ReadConfig()
L 04/28/2015 - 00:04:40: [SM]   [1]  Line 57, sbchecker.sp::OnMapStart()

Option to disable comms tab?

This is an enhancement suggestion. Some people use sourcebans for garrysmod, which doesn't have any publicly known comms plugins unfortunately, so the ability to disable the comms tab would be nice. Thanks!

[Feature] Steam Login OAuth

Steam OAuth login, to join using Steam account. Requires LightOpenID.
This is a standalone file. Change template to display the Sign in through Steam logo and ready to go!
Change the code as you need! 😄

<?php

// Steam Login by @duhowpi 2015
// Visit www.lmcservers.com for more fun! ;D

define('SB_HOST', 'sbans.mywebsite.com');
define('SB_URL', 'http://' .SB_HOST);

session_start();
include_once 'init.php';
include_once 'config.php';
require_once 'openid.php';

function steamOauth() {
    $openid = new LightOpenID(SB_HOST);
    if(!$openid->mode) {
        $openid->identity = 'http://steamcommunity.com/openid';
        header("Location: " .$openid->authUrl() );
        exit();
    }
    elseif($openid->mode == 'cancel') {
        // User canceled auth.
        return false;
    } else {
        if($openid->validate()) {
            $id = $openid->identity;
            $ptn = "/^http:\/\/steamcommunity\.com\/openid\/id\/(7[0-9]{15,25}+)$/";
            preg_match($ptn, $id, $matches);

            if(!empty($matches[1])){ return $matches[1]; }
            return null;
        } else {
            // Not valid
            return false;
        }
    }
}

function convert64to32($steam_cid){
    $id = array('STEAM_0');
    $id[1] = substr($steam_cid, -1, 1) % 2 == 0 ? 0 : 1;
    $id[2] = bcsub($steam_cid, '76561197960265728');
    if(bccomp($id[2], '0') != 1)
    {
        return false;
    }
    $id[2] = bcsub($id[2], $id[1]);
    list($id[2], ) = explode('.', bcdiv($id[2], 2), 2);
    return implode(':', $id);
}

if(isset($_COOKIE['aid'])){
    header("Location: " .SB_URL);
}

$data = steamOauth();

if($data !== false){
    $data = convert64to32($data);

    $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
    if(defined('DB_PREFIX')){ $prfx = DB_PREFIX ."_"; }else{ $prfx = ""; }

    echo "SELECT aid,password FROM " .$prfx ."admins WHERE authid = '" .$data ."'; ";

    $resultado = $mysqli->query("SELECT aid,password FROM " .$prfx ."admins WHERE authid = '" .$data ."'; ");
    if($resultado->num_rows == 1){
        while($row = $resultado->fetch_assoc()) {
            setcookie("aid", $row['aid'], time()+LOGIN_COOKIE_LIFETIME);
            setcookie("password", $row['password'], time()+LOGIN_COOKIE_LIFETIME);
        }
    }

    $mysqli->close();
}else{
    header("Location: " .SB_URL ."/index.php?p=login");
}

header("Location: " .SB_URL);

Ban List not displaying in Sourcebans

Hi I'm using SourceBans++ 1.5.3 with SourceBans Default Theme (next gen style), I clicked on the 'Bans' from Tab (with dashboard, servers...)
It shows empty on the page, I also switched theme and try again it doesn't display anything.

sv and var lag

My server goes up to the 30 spikes when 20 players or more are on. I removed sourcebans plugin and everything went back to normal. Is there anyway to stop this issue ?

IP Ban Evasion

Could you edit the IP ban evasion time or better make a cvar for it?
It banned a person who had accidentally the same IP as a ban 2 months ago.
The hoster uses dynamic IPs. I also checked the accounts. I think they aren't related (no mutual friends).

Unable to Ban due to DataPack failing

i don't know how, but it produces this error

L 03/20/2015 - 19:21:42: [SM] Native "ReadPackString" reported: DataPack operation is out of bounds.
L 03/20/2015 - 19:21:42: [SM] Displaying call stack trace for plugin "sourcebans.smx":
L 03/20/2015 - 19:21:42: [SM]   [0]  Line 1151, sourcebans.sp::VerifyInsert()

Error - Query_VerifyBlock failed

The logs are constantly gives an error .

L 01/17/2015 - 17:30:29: SourceMod error session started
L 01/17/2015 - 17:30:29: Info (map "de_dust2") (file "errors_20150117.log")
L 01/17/2015 - 17:30:29: [sourcecomms.smx] Lost connection to DB. Reconnect after delay.
L 01/17/2015 - 17:30:29: [sourcecomms.smx] Query_VerifyBlock failed: Lost connection to MySQL server at 'reading authorization packet', system error: 0
L 01/17/2015 - 18:35:51: Error log file session closed.

Small Visual Errors after Git 320

Sourcecomms plugin error

I am getting this error with the latest sourcecomms plugin.
"L 05/10/2015 - 14:00:36: [sourcecomms.smx] You must set valid ServerID value in sourcebans.cfg!"
I am using the sourcecomms plugins that comes with this sourcebans.

New action on bans page

Hello, may be add action with bans "Delete all" ?
(My english is very very bad, i use google translate)

SourceBans getting hacked really often

Once a month or so my SourceBans++ installation gets hacked, admins get added; logs get removed and I simply can't do anything to solve it because I have no idea what causes it or what to log in order to see what's causing it.

It's one group that does it to my CS:GO community and to some other Israeli one.

They add themselves as admins and massively ban people from inside the servers (I see the bans in the SourceMod log), then the logs get cleaned. Here's the screenshot of what's left in the system log: http://i.imgur.com/sohDWs1.png
Admin deleted is when our community admin deleted the hacker's account, nothing else before.

What I've attempted to do in order to fight them:
Edited log deletion to do that instead of clearing the logs -

//pages/admin.settings.php
//Log stuff
$logs = new CSystemLog();
$page = 1;
if (isset($_GET['page']) && $_GET['page'] > 0)
    $page = intval($_GET['page']);

if(isset($_GET['log_clear']) && $_GET['log_clear'] == "true")
{
    $log = new CSystemLog("w", "Log Clearing Attempt", $userbank->GetProperty('user') . " tried to clear the logs, but the feature is disabled.");
}

Made remote MySQL connections possible only from the web host. (So I can only access the database with a tool like phpmyadmin)
Scrambled the MySQL password for every user everytime we got hacked.

I'm not any expert in web stuff, I'd appreciate help, at least in knowing how they do it or how to fix it, thanks :)

[Enhancement] ip2nation

Instead of using IpToCountry, take a look at ip2nation, which is smaller and simple to use with PHP.

<?php

    $server   = ''; // MySQL hostname
    $username = ''; // MySQL username
    $password = ''; // MySQL password
    $dbname   = ''; // MySQL db name


    $db = mysql_connect($server, $username, $password) or die(mysql_error());
          mysql_select_db($dbname) or die(mysql_error());

    $sql = 'SELECT 
                c.country 
            FROM 
                ip2nationCountries c,
                ip2nation i 
            WHERE 
                i.ip < INET_ATON("'.$_SERVER['REMOTE_ADDR'].'") 
                AND 
                c.code = i.country 
            ORDER BY 
                i.ip DESC 
            LIMIT 0,1';

    list($countryName) = mysql_fetch_row(mysql_query($sql));

    // Output full country name
    echo $countryName;

?>

Add STEAM ID3 when adding admins

hi, can you please add steam id 3 support when adding admins? because it says invalid steam id, so how in the world am i going to add admins ?

Multigroup Support

I'd like to request an enhancement to allow users to belong to multiple groups.

Example. I have a group of GMOD servers and a group of CSGO servers. Users can be admin level 3 in csgo but only admin level 1 for gmod. Currently we have things like csgol3gmodl1 and it's quite a mess. Being able to add a user to multiple groups would allow us to keep this organized.

Ban/Comm Block Reason: Quotes (") showing up as &quot;

Hello,

i got some issues with quotes in reason insert by Web bans/Comms.

If i choose "Other" as reason and try to add something like

Wrote: "ashdkajshdkjasdkjad" in chat

The Web view will return/show

Wrote: &quot;ashdkajshdkjasdkjad&quot; in chat

If you need other examples just let me know

Blocked Ban List

After the latest version of CS:GO have a problem with the "blocked" on the ban list repeats several times the player's name.
I've done the update SourceMod, I have done update in the admin panel SourceBans.
How can I resolve the situation and delete these "blocked"?
I also have another problem I can not solve it gives me errors on servers with admins groups ([sb_admcfg.smx](line 7) Unknown group "Master")
And another problem with the plugin "sb_viewbans" it gives me this error: Unable to load plugin "sb_viewbans.smx": Native "SB_Connect" was not found.

I thank you all the help you can give.

Bans list is empty

After reading the FAQ and trying to remove the // and then disabling the setting in web panel my bans are still empty.

Assigned SteamID3 on ban IP and yet couple problem (git 321)

https://cloud.githubusercontent.com/assets/13346898/12136189/b5c70e18-b44d-11e5-97b5-e4d251153d35.jpg
https://cloud.githubusercontent.com/assets/13346898/12136190/b5dfbbb6-b44d-11e5-9824-eacdadc6a8f0.jpg
At bans on IP, in line "Steam3 ID" constantly writes SteamID (unclear from whence it is taken), can make to write "No Steam ID present" ? (green rectangle)
_
And necessary do this block of the same color before the end (red rectangle)
_
And can add style add ban/comms page style to edite ban/comms page?
_
And this link is no work (article on sourcebans site removed/moved)
https://cloud.githubusercontent.com/assets/13346898/12164741/a3700ad4-b520-11e5-977b-189d426ffae6.jpg

mysqli_real_connect library mismatch

Hey

Im getting this error, what to do?

Warning: mysqli_real_connect(): Headers and client library minor version mismatch. Headers:50544 Library:50625 in /var/www/sourcebans/includes/adodb/drivers/adodb-mysqli.inc.php on line 117

sv and var lag

My server goes up to the 30 spikes when 20 players or more are on. I removed sourcebans plugin and everything went back to normal. Is there anyway to stop this issue ?

sourcebans 1.5.3: error banlist

Hello, after installing sourcebans 1.5.3 not displayed page bans, writes the following error:

[256] mysqli error: [1231: Variable 'optimizer_switch' can't be set to the value of 'block_nested_loop=off'] in EXECUTE("set session optimizer_switch='block_nested_loop=off';")
Fatal error on line 77 in file /sourcebans/includes/adodb/adodb-errorhandler.inc.php
/sourcebans/includes/adodb/adodb-errorhandler.inc.php - 77
/sourcebans/includes/adodb/adodb.inc.php - 1071
/sourcebans/includes/adodb/adodb.inc.php - 1046
/sourcebans/pages/page.banlist.php - 42

how you can correct this error?

No running gag on the players with a specific nickname

L 01/31/2016 - 16:46:44: [sourcecomms.smx] Lost connection to DB. Reconnect after delay.
L 01/31/2016 - 16:46:44: [sourcecomms.smx] Query_AddBlockInsert failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '('STEAM_1:0:157837542', '-GeT_LoW-', UNIX_TIMESTAMP(), UNIX_TIMESTAMP() + 1800, ' at line 1
L 01/31/2016 - 16:46:44: [sourcecomms.smx] Ошибка запроса к базе данных (near "AM_1": syntax error)
L 02/01/2016 - 14:41:34: [sourcecomms.smx] Lost connection to DB. Reconnect after delay.
L 02/01/2016 - 14:41:34: [sourcecomms.smx] Query_AddBlockInsert failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '('STEAM_1:1:21443503', 'Nike Pro', UNIX_TIMESTAMP(), UNIX_TIMESTAMP() + 3600, 36' at line 1
L 02/01/2016 - 14:41:34: [sourcecomms.smx] Ошибка запроса к базе данных (near "(": syntax error)
L 02/03/2016 - 10:37:11: [sourcecomms.smx] Lost connection to DB. Reconnect after delay.
L 02/03/2016 - 10:37:11: [sourcecomms.smx] Query_AddBlockInsert failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '('STEAM_1:1:44680478', '♛ÃﮐM✪\\\\', UNIX_TIMESTAMP(), UNIX_TIMESTAMP() + ' at line 1
L 02/03/2016 - 10:37:11: [sourcecomms.smx] Ошибка запроса к базе данных (near "=": syntax error)
L 02/03/2016 - 12:36:34: [sourcecomms.smx] Lost connection to DB. Reconnect after delay.
L 02/03/2016 - 12:36:34: [sourcecomms.smx] Query_AddBlockInsert failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '('STEAM_1:1:124297957', 'PśÍх', UNIX_TIMESTAMP(), UNIX_TIMESTAMP() + 7200, 72' at line 1
L 02/03/2016 - 12:36:34: [sourcecomms.smx] Ошибка запроса к базе данных (near "'STEAM_1:0:50132250'": syntax error)

Ошибка запроса к базе данных = Failed to query the database

BoxToMask error

There is a small failure in BoxToMask function (sourcebans.js) on line 482.
The function checks the element with the id p29 for the right ADMIN_EDIT_GROUPS but the element p24 represents this right.

to fix this issue you must change the line to this:
if(document.getElementById('p24').get('checked'))

Steam Login not working

When i try to login through steam i'm getting redirected to our sourcebans website but i'm not logged in.
How can i fix this ? cant find any errors in apache logfile.

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.