Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/aliasadidev/sixlaborscaptcha
Generate captcha with SixLabors' libraries on .NET Core
https://github.com/aliasadidev/sixlaborscaptcha
asp-net-core aspnetcore captcha docker dotnet-standard linux-app windows-app
Last synced: 19 days ago
JSON representation
Generate captcha with SixLabors' libraries on .NET Core
- Host: GitHub
- URL: https://github.com/aliasadidev/sixlaborscaptcha
- Owner: aliasadidev
- License: apache-2.0
- Created: 2020-09-19T08:52:10.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2024-03-19T21:04:51.000Z (8 months ago)
- Last Synced: 2024-10-15T03:09:50.462Z (about 1 month ago)
- Topics: asp-net-core, aspnetcore, captcha, docker, dotnet-standard, linux-app, windows-app
- Language: C#
- Homepage: https://www.nuget.org/packages/SixLaborsCaptcha.Core
- Size: 110 KB
- Stars: 47
- Watchers: 3
- Forks: 8
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# SixLaborsCaptcha
SixLaborsCaptcha is a simple cross-platform NuGet package for generating image captcha.## Features
- Simple & Cross-Platform
- Compatible with Linux and Windows
- Compatible with Docker images based on Linux :)# What's New
## Version 1.0.0 - March 13, 2024
#### Update
* Upgrade SixLabors.ImageSharp.* packages
* Drop support of .net standard
* Support .net 8## Version 0.2.2 - Sep 26, 2022
#### Fix
* Fixed a bug in draw lines feature## Version 0.2.1 - Jul 22, 2022
#### Add
* Add BackgroundColor option
#### Fix
* Fixed a typo (`Extentions` renamed to Extensions)## Version 0.2.0 - Apr 22, 2022
#### Change
* Upgrade SixLabors.ImageSharp to 2.1.1
* **⚠ WARNING: This version incompatible with the previous version of SixLabors.ImageSharp 1.0.0+**
## Version 0.1.5 - Mar 30, 2022
#### Fix
* Update readme file
## Version 0.1.4 - Mar 30, 2022
#### Fix
* Use DrawLinesColor instead of TextColor in creating random lines (#2 by @NK201)## Version 0.1.3 - Oct 8, 2021
#### Add
* Add NoiseRateColor/NoiseRate options
* Add MinLineThickness/MaxLineThickness options
#### Change
* Improve the rendering speed
* Improve the captcha image security## Packages
| Package | Description |
| ------------------------- | --------------------------------------------------- |
| SixLaborsCaptcha.Core | Using for ConsoleApp, WebAPI, WinForms, and etc.. |
| SixLaborsCaptcha.Mvc.Core | Using for ASP.NET MVC Core and ASP.NET Web API Core |## SixLaborsCaptchaOptions
| Property | Description |
| ------------------ | ------------------------------------------------------------------------------------------------------------ |
| FontFamilies | Characters fonts, default is "Arial", "Verdana", "Times New Roman" |
| TextColor | Characters colors, default is { Color.Blue, Color.Black, Color.Black, Color.Brown, Color.Gray, Color.Green } |
| DrawLinesColor | Line colors, default is { Color.Blue, Color.Black, Color.Black, Color.Brown, Color.Gray, Color.Green } |
| Width | Width of image box, default is 180 |
| Height | Height of image box, default is 50 |
| FontSize | Font size, default is 29 |
| FontStyle | Font Style: Regular,Bold,Italic,BoldItalic |
| EncoderType | Result file formant: Jpeg,Png |
| DrawLines | Draw the random lines, default is 5 |
| MaxRotationDegrees | Rotation degrees, default is 5 |
| MinLineThickness | Min Line Thickness, default is 0.7f |
| MaxLineThickness | Max Line Thickness, default is 2.0f |
| NoiseRate | Noise Rate, default is 800 |
| NoiseRateColor | Noise colors, default is { Color.Gray } |
| BackgroundColor | Background colors, default is { Color.White } |**FontFamilies Option**:
`Notice: This default fonts working only on Windows, if you want to run it on Linux you have to use the Linux fonts`## Install via CLI
### To install SixLaborsCaptcha.Core, run the following command in the terminal: ###
```
> dotnet add package SixLaborsCaptcha.Core --version 1.0.0
```## Usage:
```csharp
using SixLaborsCaptcha.Core;
using SixLabors.ImageSharp;
using System.IO;namespace ConsoleAppSample
{
class Program
{
static void Main(string[] args)
{
var slc = new SixLaborsCaptchaModule(new SixLaborsCaptchaOptions
{
DrawLines = 7,
TextColor = new Color[] { Color.Blue, Color.Black },
});var key = Extensions.GetUniqueKey(6);
var result = slc.Generate(key);
File.WriteAllBytes($"six-labors-captcha.png", result);
}
}
}```
![result](https://raw.githubusercontent.com/aliasadidev/SixLaborsCaptcha/master/samples/images/six-labors-captcha-3.png?raw=true "six-labors-captcha")### To install SixLaborsCaptcha.Mvc.Core for ASP.NET Core MVC, run the following command in the Terminal: ###
```
> dotnet add package SixLaborsCaptcha.Mvc.Core --version 1.0.0
```
## Usage:
1. In the ConfigureServices method of Startup.cs, register the AddSixLabCaptcha generator```csharp
using SixLaborsCaptcha.Mvc.Core;
...
public void ConfigureServices(IServiceCollection services)
{
services.AddSixLabCaptcha(x =>
{
x.DrawLines = 4;
});
}
...
```
2. Create an action to generate image
```csharp
using SixLaborsCaptcha.Core;
...[HttpGet]
[Route("[action]")]
public FileResult GetCaptchaImage([FromServices] ISixLaborsCaptchaModule sixLaborsCaptcha)
{
string key = Extensions.GetUniqueKey(6);
var imgText = sixLaborsCaptcha.Generate(key);
return File(imgText, "Image/Png");
}...
```
3. Get the image from action
```html
Welcome to SixLaborsCaptcha
```
![result](https://raw.githubusercontent.com/aliasadidev/SixLaborsCaptcha/master/samples/images/six-labors-captcha-1.png?raw=true "six-labors-captcha")
![result](https://raw.githubusercontent.com/aliasadidev/SixLaborsCaptcha/master/samples/images/six-labors-captcha-2.png?raw=true "six-labors-captcha")
![result](https://raw.githubusercontent.com/aliasadidev/SixLaborsCaptcha/master/samples/images/six-labors-captcha-4.png?raw=true "six-labors-captcha")
![result](https://raw.githubusercontent.com/aliasadidev/SixLaborsCaptcha/master/samples/images/six-labors-captcha-5.png?raw=true "six-labors-captcha")### Run asp.net core mvc app on Linux os: ###
1. Download a font (also, you can use the system fonts and don't needs to do this step)
```
wget -O ~/Downloads/marlboro.zip https://www.1001freefonts.com/d/3761/marlboro.zip
unzip -p ~/Downloads/marlboro.zip Marlboro.ttf > ~/Downloads/Marlboro.ttf
rm ~/Downloads/marlboro.zip
cp ~/Downloads/Marlboro.ttf ~/.fonts/
# other paths
# ~/.fonts/ - for your own fonts.
# /usr/local/share/fonts/ - system-wide, user installed fonts.
# /usr/share/fonts/ - system's font location.
```
2. Config the serivce
```csharpservices.AddSixLabCaptcha(x => {
x.FontFamilies = new string[] { "Marlboro" };
});
```
![linux-result](https://raw.githubusercontent.com/aliasadidev/SixLaborsCaptcha/master/samples/images/six-labors-captcha-6.png?raw=true "six-labors-captcha-linux")