Initial skeleton for the framework.
This commit is contained in:
parent
864c9dd9a0
commit
4610245b38
|
@ -0,0 +1,18 @@
|
||||||
|
import Dependencies._
|
||||||
|
|
||||||
|
lazy val root = (project in file(".")).
|
||||||
|
settings(
|
||||||
|
inThisBuild(List(
|
||||||
|
organization := "com.example",
|
||||||
|
scalaVersion := "2.12.3",
|
||||||
|
version := "0.1.0-SNAPSHOT")),
|
||||||
|
name := "LibreCaptcha",
|
||||||
|
libraryDependencies += scalaTest % Test,
|
||||||
|
|
||||||
|
libraryDependencies += "com.sksamuel.scrimage" %% "scrimage-core" % "2.1.8",
|
||||||
|
|
||||||
|
libraryDependencies += "com.sksamuel.scrimage" %% "scrimage-io-extra" % "2.1.8",
|
||||||
|
|
||||||
|
libraryDependencies += "com.sksamuel.scrimage" %% "scrimage-filters" % "2.1.8"
|
||||||
|
|
||||||
|
)
|
|
@ -0,0 +1,5 @@
|
||||||
|
import sbt._
|
||||||
|
|
||||||
|
object Dependencies {
|
||||||
|
lazy val scalaTest = "org.scalatest" %% "scalatest" % "3.0.3"
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
sbt.version=1.0.4
|
|
@ -0,0 +1,46 @@
|
||||||
|
import com.sksamuel.scrimage._
|
||||||
|
import java.io._
|
||||||
|
|
||||||
|
class CaptchaLibrary {
|
||||||
|
var tokenAnswer = scala.collection.mutable.Map[String, String]()
|
||||||
|
def init = {}
|
||||||
|
def shutdown = {}
|
||||||
|
def getChallenge(): Challenge = {
|
||||||
|
//choose a captcha provider randomly
|
||||||
|
val blurCaptcha = new BlurCaptcha
|
||||||
|
val (challenge, answer) = blurCaptcha.getChallenge()
|
||||||
|
tokenAnswer += challenge.token->answer
|
||||||
|
challenge
|
||||||
|
}
|
||||||
|
def checkAnswer(token: String, input: String): Boolean = {
|
||||||
|
if (tokenAnswer(token) == input) {
|
||||||
|
true
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
trait CaptchaProvider {
|
||||||
|
def getChallenge(): (Challenge, String)
|
||||||
|
}
|
||||||
|
|
||||||
|
class Challenge(val token: String, val image: Image)
|
||||||
|
|
||||||
|
class Answer(val token: String, val input: String)
|
||||||
|
|
||||||
|
class BlurCaptcha extends CaptchaProvider {
|
||||||
|
def getChallenge(): (Challenge, String) = {
|
||||||
|
val inFileName = "image2.png"
|
||||||
|
var image = Image.fromStream(new FileInputStream(inFileName))
|
||||||
|
image = image.filter(com.sksamuel.scrimage.filter.BlurFilter)
|
||||||
|
image.output(new File("blur.png"))
|
||||||
|
|
||||||
|
val r = scala.util.Random
|
||||||
|
val token = r.nextInt(1000).toString
|
||||||
|
val challenge = new Challenge(token, image)
|
||||||
|
val answer = "about"
|
||||||
|
(challenge, answer)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue