Skip to content

Commit

Permalink
Merge pull request #444 from GDATASoftwareAG/ruby/add-detection-and-m…
Browse files Browse the repository at this point in the history
…ime-file-type

Ruby/add detection and mime file type
  • Loading branch information
lennartdohmann committed Apr 29, 2024
2 parents 374f0eb + 23c4122 commit f66ed83
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 23 deletions.
31 changes: 27 additions & 4 deletions .github/workflows/ci-ruby.yaml
Expand Up @@ -22,16 +22,17 @@ on:
options:
- production
- staging
- develop
default: "production"

env:
CLIENT_ID: ${{ secrets.CLIENT_ID }}
CLIENT_SECRET: ${{ (inputs.environment == 'production' || inputs.environment == null || startsWith(github.ref, 'refs/tags/rb')) && secrets.CLIENT_SECRET || secrets.STAGING_CLIENT_SECRET }}
VAAS_URL: ${{ (inputs.environment == 'production' || inputs.environment == null || startsWith(github.ref, 'refs/tags/rb')) && 'wss://gateway.production.vaas.gdatasecurity.de' || 'wss://gateway.staging.vaas.gdatasecurity.de' }}
TOKEN_URL: ${{ (inputs.environment == 'production' || inputs.environment == null || startsWith(github.ref, 'refs/tags/rb')) && 'https://account.gdata.de/realms/vaas-production/protocol/openid-connect/token' || 'https://account-staging.gdata.de/realms/vaas-staging/protocol/openid-connect/token' }}
CLIENT_SECRET: ${{secrets.CLIENT_SECRET}}
VAAS_URL: "wss://gateway.production.vaas.gdatasecurity.de"
TOKEN_URL: "https://account.gdata.de/realms/vaas-production/protocol/openid-connect/token"
VAAS_CLIENT_ID: ${{ secrets.VAAS_CLIENT_ID }}
VAAS_USER_NAME: ${{ secrets.VAAS_USER_NAME }}
VAAS_PASSWORD: ${{ (inputs.environment == 'production' || inputs.environment == null || startsWith(github.ref, 'refs/tags/rb')) && secrets.VAAS_PASSWORD || secrets.STAGING_VAAS_PASSWORD }}
VAAS_PASSWORD: ${{secrets.VAAS_PASSWORD}}

jobs:
build-ruby:
Expand All @@ -45,6 +46,28 @@ jobs:
ruby-version: "3.1" # Not needed with a .ruby-version file
bundler-cache: true # runs 'bundle install' and caches installed gems automatically

- name: set staging environment
if: (inputs.environment == 'staging' || (startsWith(github.ref, 'refs/tags/rb') && endsWith(github.ref, '-beta')))
run: |
echo "CLIENT_ID=${{ secrets.STAGING_CLIENT_ID }}" >> $GITHUB_ENV
echo "CLIENT_SECRET=${{ secrets.STAGING_CLIENT_SECRET }}" >> $GITHUB_ENV
echo "VAAS_URL=wss://gateway.staging.vaas.gdatasecurity.de" >> $GITHUB_ENV
echo "TOKEN_URL=https://account-staging.gdata.de/realms/vaas-staging/protocol/openid-connect/token" >> $GITHUB_ENV
echo "VAAS_CLIENT_ID=${{ secrets.STAGING_VAAS_CLIENT_ID }}" >> $GITHUB_ENV
echo "VAAS_USER_NAME=${{ secrets.STAGING_VAAS_USER_NAME }}" >> $GITHUB_ENV
echo "VAAS_PASSWORD=${{ secrets.STAGING_VAAS_PASSWORD }}" >> $GITHUB_ENV
- name: set develop environment
if: (inputs.environment == 'develop' || (startsWith(github.ref, 'refs/tags/rb') && endsWith(github.ref, '-alpha')))
run: |
echo "CLIENT_ID=${{ secrets.DEVELOP_CLIENT_ID }}" >> $GITHUB_ENV
echo "CLIENT_SECRET=${{ secrets.DEVELOP_CLIENT_SECRET }}" >> $GITHUB_ENV
echo "VAAS_URL=wss://gateway.develop.vaas.gdatasecurity.de" >> $GITHUB_ENV
echo "TOKEN_URL=https://account-staging.gdata.de/realms/vaas-develop/protocol/openid-connect/token" >> $GITHUB_ENV
echo "VAAS_CLIENT_ID=${{ secrets.DEVELOP_VAAS_CLIENT_ID }}" >> $GITHUB_ENV
echo "VAAS_USER_NAME=${{ secrets.DEVELOP_VAAS_USER_NAME }}" >> $GITHUB_ENV
echo "VAAS_PASSWORD=${{ secrets.DEVELOP_VAAS_PASSWORD }}" >> $GITHUB_ENV
- name: extract version
if: startsWith(github.ref, 'refs/tags/rb')
run: |
Expand Down
2 changes: 1 addition & 1 deletion ruby/examples/authentication.rb
Expand Up @@ -5,7 +5,7 @@


def main
client_id = "vaas-customer"
client_id = ENV.fetch("VAAS_CLIENT_ID")
client_secret = ENV.fetch("CLIENT_SECRET")
user_name = ENV.fetch("VAAS_USER_NAME")
password = ENV.fetch("VAAS_PASSWORD")
Expand Down
5 changes: 4 additions & 1 deletion ruby/lib/vaas/vaas_verdict.rb
@@ -1,12 +1,15 @@
module VAAS
class VaasVerdict

attr_reader :sha256, :verdict, :guid
attr_reader :sha256, :verdict, :guid, :detection, :mime_type, :file_type

def initialize(response)
@sha256 = response['sha256']
@verdict = response['verdict']
@guid = response['guid']
@detection = response.fetch("detection", "")
@mime_type = response.fetch("mime_type", "")
@file_type = response.fetch("file_type", "")
end

end
Expand Down
38 changes: 21 additions & 17 deletions ruby/test/vaas_test.rb
Expand Up @@ -9,16 +9,19 @@
# # test locally with .env file (comment this when push)
# require 'dotenv'
# Dotenv.load
# CLIENT_ID = ENV['CLIENT_ID']
# CLIENT_SECRET = ENV['CLIENT_SECRET']
# TOKEN_URL = ENV['TOKEN_URL']
# VAAS_URL = ENV['VAAS_URL']
# CLIENT_ID = ENV.fetch('CLIENT_ID')
# CLIENT_SECRET = ENV.fetch('CLIENT_SECRET')
# TOKEN_URL = ENV.fetch('TOKEN_URL')
# VAAS_URL = ENV.fetch('VAAS_URL')
# USER_NAME = ENV.fetch('VAAS_USER_NAME')
# PASSWORD = ENV.fetch('VAAS_PASSWORD')

# automatic test (need this when push)
CLIENT_ID = ENV.fetch('CLIENT_ID')
CLIENT_SECRET = ENV.fetch('CLIENT_SECRET')
TOKEN_URL = ENV.fetch('TOKEN_URL')
VAAS_URL = ENV.fetch('VAAS_URL')
VAAS_CLIENT_ID = ENV.fetch('VAAS_CLIENT_ID')
USER_NAME = ENV.fetch('VAAS_USER_NAME')
PASSWORD = ENV.fetch('VAAS_PASSWORD')

Expand All @@ -40,7 +43,7 @@ def create(token = nil, timeout = nil)

describe 'succeeds' do

specify 'for_sha356' do
specify 'for_sha256' do
vaas, token = create
Async do
vaas.connect(token)
Expand Down Expand Up @@ -75,24 +78,25 @@ def create(token = nil, timeout = nil)

result = vaas.for_url("https://secure.eicar.org/eicar.com.txt")
verdict = result.wait.verdict
assert_equal "Malicious", verdict
assert_equal "Malicious", result.wait.verdict
assert_empty result.wait.detection

vaas.close
end
end

# specify 'pup' do
# vaas, token = create
# Async do
# vaas.connect(token)
specify 'pup' do
vaas, token = create
Async do
vaas.connect(token)

# result = vaas.for_sha256("d6f6c6b9fde37694e12b12009ad11ab9ec8dd0f193e7319c523933bdad8a50ad")
# verdict = result.wait.verdict
# assert_equal "Pup", verdict
result = vaas.for_sha256("d6f6c6b9fde37694e12b12009ad11ab9ec8dd0f193e7319c523933bdad8a50ad")
verdict = result.wait.verdict
assert_equal "Pup", verdict

# vaas.close
# end
# end
vaas.close
end
end

specify 'for_big_file' do
skip
Expand All @@ -111,7 +115,7 @@ def create(token = nil, timeout = nil)

specify 'authenticate' do
authenticator = VAAS::ResourceOwnerPasswordGrantAuthenticator.new(
"vaas-customer",
VAAS_CLIENT_ID,
USER_NAME,
PASSWORD,
TOKEN_URL
Expand Down

0 comments on commit f66ed83

Please sign in to comment.