A quick way to get started contributing to this project is to check out our active issues in the issues tab of the master repository. Also take a look at our key features list and choose one that needs work, or start working on an unimplemented feature. Feel free to edit this document in your own fork and submit a pull request to add to, subtract from, or make minor adjustments to existing features on the list.
We follow all naming and style conventions that are officially put out by the developers of Go themselves. All of these rules and conventions can be found in their Effective Go tutorial as well as this Godoc on documenting Go Code.
As this project is open source we do encourage commenting wherever may be necessary and require comments for all function declarations. The reason this is important is because it will increase productivity to whoever wants to come along and either add to or improve your code later on.
Go has testing baked in the language and we would like there to be a test for nearly, if not all, functions that are in our program. If you don't write tests for your functions that you contribute, please note in the pull request that you did not.
// addTwoPositiveIntegers returns the sum of two positive integers.
// When the two integers are not positive, it returns the zero-value of an integer and an error.
// BUG(george-e-shaw-iv) This function cannot handle negative integers, this needs addressed
func addTwoPositiveIntegers(one int, two int) (int, error) {
var answer int
if one < 0 || two < 0 {
return answer, errors.New("One or both of the input integers are negative")
} else {
answer = one + two
return answer, nil
}
}
// A descriptive, custom data type for storing integers to be used in various time operations.
type Seconds int
// Variables don't always need comments, their name should give a good enough hint to what it does.
var cake string = "lie"
// These constants are used in various math and physics operations
const(
PI float32 = 3.14
TAO float32 = 6.28
)
Package names should always match their parent folder.
// Package networking contains various functions used to communicate between networks and
// draw data from the client network.
package networking
Feel free to edit this document in your own fork and submit a pull request to add to, subtract from, or make minor adjustments to existing features on the list.
Key: Implemented | Implemented, but needs work | Unimplemented | Removed | Section Heading
- gPanel Server (Uppermost Controller)
- Accessibility
- Using a special port:2082
- Authentication
- User system
- Clients
- Multi-client support
- Configuration of new clients
- Configuration of existing hosts
- Accessibility
- gPanel Account (Upper level of bundles)
- Accessibility
- Using ports defined during configuration
- Authentication
- User system
- Public Website Control
- Startup
- Graceful/forceful shutdown
- Maintenance mode
- IP Filtering
- Statistics
- Various graphs for usage, bandwidth, etc
- Click heat maps
- Diagnostics
- Error Logging
- Alert system for fatal errors
- Email alerts
- Text alerts
- Mail Servers
- Domains
- Configuration of domains
- Configuration of sub-domains
- TLS/SSL certificate support
- Using LetsEncrypt (autocert)
- Multi-domain support
- Remote Access
- SSH Access
- SFTP Access
- File Manager
- CRUD
- Inline Editor
- Managing Permissions
- CRON Jobs
- Interface to set an interval for file(s) to be executed automatically
- Accessibility
- Public (Lower level of bundles)
- Accessibility
- Using ports defined during configuration
- Serve Requests
- Concurrent Processing
- Supported content types
- All of the obvious ones (.jpg/.html/.css/etc)
- .go
- .php
- Accessibility
- General
- Deployment
- Binary
- Shell script to ensure/install required packages
- GUI Installation Helper
- Multi-infrastructure Support
Windows(No native solution for SSH/SFTP exists within Windows OS)- Linux
- Mac (This is possible, but OS detection and refactoring within the system package needs done)
- Amazon Web Services
- DigitalOcean
- Google Cloud Platform
- Deployment