Skip to content
This repository has been archived by the owner. It is now read-only.
Permalink
Browse files

Initial import

  • Loading branch information...
andris9 committed Dec 3, 2015
0 parents commit 7c96cc83155d9d0a5587a6a9de428203bbedd960
Showing with 25,457 additions and 0 deletions.
  1. +5 −0 .gitignore
  2. +17 −0 .jshintrc
  3. +20 −0 Gruntfile.js
  4. +16 −0 LICENSE
  5. +31 −0 README.md
  6. +141 −0 config/default.js
  7. +9 −0 docs/info.md
  8. +8 −0 docs/tos.md
  9. +73 −0 docs/ui-tests.md
  10. +32 −0 index.js
  11. +15 −0 lib/account.json
  12. +293 −0 lib/auth.js
  13. +512 −0 lib/banklink.js
  14. +778 −0 lib/banks.json
  15. +796 −0 lib/banks/aab.js
  16. +799 −0 lib/banks/ec.js
  17. +1,494 −0 lib/banks/ipizza.js
  18. +723 −0 lib/banks/samlink.js
  19. +962 −0 lib/banks/solo.js
  20. +176 −0 lib/bodyparser.js
  21. +154 −0 lib/db.js
  22. +71 −0 lib/forcecharset.js
  23. +112 −0 lib/mail.js
  24. +2,173 −0 lib/routes.js
  25. +542 −0 lib/tools.js
  26. +51 −0 package.json
  27. +172 −0 server.js
  28. BIN www/static/assets/banklink-0.1.0.zip
  29. BIN www/static/assets/banklink-0.1.1.zip
  30. BIN www/static/assets/img/makse.png
  31. BIN www/static/assets/img/pangalink-1.png
  32. BIN www/static/assets/img/pangalink-2.png
  33. BIN www/static/assets/img/pangalink-3.png
  34. BIN www/static/assets/img/pangalink-4.png
  35. BIN www/static/assets/img/pangalink-5.png
  36. BIN www/static/assets/img/pangalink-6.png
  37. BIN www/static/assets/logos/danske-emu.png
  38. BIN www/static/assets/logos/danske.gif
  39. BIN www/static/assets/logos/ec-emu.png
  40. BIN www/static/assets/logos/eyp-emu.png
  41. BIN www/static/assets/logos/hp-emu.png
  42. BIN www/static/assets/logos/hp-lt-emu.png
  43. BIN www/static/assets/logos/hp-lv-emu.png
  44. BIN www/static/assets/logos/ipizza-emu.png
  45. BIN www/static/assets/logos/krediidipank.jpg
  46. BIN www/static/assets/logos/krep-emu.png
  47. BIN www/static/assets/logos/lhv-emu.png
  48. BIN www/static/assets/logos/lhv.png
  49. BIN www/static/assets/logos/nordea.gif
  50. BIN www/static/assets/logos/seb.gif
  51. BIN www/static/assets/logos/solo-emu.png
  52. BIN www/static/assets/logos/swedbank.gif
  53. +470 −0 www/static/bootstrap/css/bootstrap-theme.css
  54. +1 −0 www/static/bootstrap/css/bootstrap-theme.css.map
  55. +5 −0 www/static/bootstrap/css/bootstrap-theme.min.css
  56. +6,332 −0 www/static/bootstrap/css/bootstrap.css
  57. +1 −0 www/static/bootstrap/css/bootstrap.css.map
  58. +5 −0 www/static/bootstrap/css/bootstrap.min.css
  59. BIN www/static/bootstrap/fonts/glyphicons-halflings-regular.eot
  60. +229 −0 www/static/bootstrap/fonts/glyphicons-halflings-regular.svg
  61. BIN www/static/bootstrap/fonts/glyphicons-halflings-regular.ttf
  62. BIN www/static/bootstrap/fonts/glyphicons-halflings-regular.woff
  63. +2,320 −0 www/static/bootstrap/js/bootstrap.js
  64. +7 −0 www/static/bootstrap/js/bootstrap.min.js
  65. +13 −0 www/static/bootstrap/js/npm.js
  66. BIN www/static/favicon.ico
  67. +1 −0 www/static/googlebd2fdb4b4c1468a8.html
  68. BIN www/static/images/cog.png
  69. BIN www/static/images/danske-emu.png
  70. BIN www/static/images/ec-emu.png
  71. BIN www/static/images/eyp-emu.png
  72. BIN www/static/images/flags.png
  73. BIN www/static/images/follow.png
  74. BIN www/static/images/hover.gif
  75. BIN www/static/images/hp-emu.png
  76. BIN www/static/images/hp-lt-emu.png
  77. BIN www/static/images/hp-lv-emu.png
  78. BIN www/static/images/information.png
  79. BIN www/static/images/ipizza-emu.png
  80. BIN www/static/images/key.png
  81. BIN www/static/images/krep-emu.png
  82. BIN www/static/images/lhv-emu.png
  83. BIN www/static/images/node-logo.png
  84. BIN www/static/images/padlock_closed.png
  85. BIN www/static/images/pem_ico.png
  86. BIN www/static/images/quote.png
  87. BIN www/static/images/redis.png
  88. BIN www/static/images/sampo-emu.png
  89. BIN www/static/images/save.png
  90. BIN www/static/images/seperator.gif
  91. BIN www/static/images/solo-emu.png
  92. BIN www/static/images/step1.png
  93. BIN www/static/images/step2.png
  94. BIN www/static/images/step3.png
  95. BIN www/static/images/step4.png
  96. BIN www/static/images/tweet-glyph.png
  97. BIN www/static/images/zone.png
  98. +57 −0 www/static/javascript/effects.js
  99. +190 −0 www/static/javascript/prototype.js
  100. +5 −0 www/static/js/jquery-1.9.1.min.js
  101. BIN www/static/logo.png
  102. BIN www/static/pangalink.jpg
  103. +1 −0 www/static/robots.txt
  104. +372 −0 www/static/style.css
  105. +322 −0 www/static/style/custom.css
  106. +862 −0 www/static/style/docs.css
  107. BIN www/static/style/fonts/glyphicons-halflings-regular.eot
  108. +229 −0 www/static/style/fonts/glyphicons-halflings-regular.svg
  109. BIN www/static/style/fonts/glyphicons-halflings-regular.ttf
  110. BIN www/static/style/fonts/glyphicons-halflings-regular.woff
  111. +9 −0 www/static/style/generated/generated.css
  112. +7 −0 www/static/style/generated/theme.css
  113. +34 −0 www/views/add-project.ejs
  114. +34 −0 www/views/ads.ejs
  115. +323 −0 www/views/api.ejs
  116. +64 −0 www/views/banklink/autosubmit.ejs
  117. +119 −0 www/views/banklink/error.ejs
  118. +125 −0 www/views/banklink/final.ejs
  119. +31 −0 www/views/banklink/footer.ejs
  120. +101 −0 www/views/banklink/header.ejs
  121. +47 −0 www/views/banklink/info.ejs
  122. +266 −0 www/views/banklink/preview.ejs
  123. +1 −0 www/views/docs.ejs
  124. +43 −0 www/views/edit-project.ejs
  125. +1 −0 www/views/footer-text.ejs
  126. +80 −0 www/views/home.ejs
  127. +160 −0 www/views/index.ejs
  128. +73 −0 www/views/join.ejs
  129. +111 −0 www/views/keys.ejs
  130. +36 −0 www/views/login.ejs
  131. +99 −0 www/views/mail/template.ejs
  132. +26 −0 www/views/mainmenu.ejs
  133. +52 −0 www/views/pagination.ejs
  134. +87 −0 www/views/payment-list.ejs
  135. +296 −0 www/views/payment.ejs
  136. +66 −0 www/views/profile.ejs
  137. +200 −0 www/views/project-form.ejs
  138. +196 −0 www/views/project.ejs
  139. +68 −0 www/views/projects.ejs
  140. +19 −0 www/views/reset-link.ejs
  141. +12 −0 www/views/reset-password.ejs
  142. +55 −0 www/views/router.ejs
  143. +22 −0 www/views/scripts/form.pay.ejs
  144. +68 −0 www/views/scripts/pay.aab.ejs
  145. +112 −0 www/views/scripts/pay.ec.ejs
  146. +74 −0 www/views/scripts/pay.ipizza.ejs
  147. +68 −0 www/views/scripts/pay.samlink.ejs
  148. +68 −0 www/views/scripts/pay.solo.ejs
  149. +68 −0 www/views/scripts/receive.aab.ejs
  150. +99 −0 www/views/scripts/receive.ec.ejs
  151. +119 −0 www/views/scripts/receive.ipizza.ejs
  152. +68 −0 www/views/scripts/receive.samlink.ejs
  153. +68 −0 www/views/scripts/receive.solo.ejs
  154. +185 −0 www/views/scripts/rendered.pay.ejs
@@ -0,0 +1,5 @@
node_modules
.DS_Store
.node_env
npm-debug.log
config/production.js*
@@ -0,0 +1,17 @@
{
"indent": 4,
"node": true,
"globalstrict": true,
"evil": true,
"unused": true,
"undef": true,
"newcap": true,
"esnext": true,
"curly": true,
"eqeqeq": true,
"expr": true,
"trailing": true,

"predef": [
]
}
@@ -0,0 +1,20 @@
'use strict';

module.exports = function(grunt) {

// Project configuration.
grunt.initConfig({
jshint: {
all: ['lib/*.js', 'index.js', 'Gruntfile.js', 'server.js'],
options: {
jshintrc: '.jshintrc'
}
}
});

// Load the plugin(s)
grunt.loadNpmTasks('grunt-contrib-jshint');

// Tasks
grunt.registerTask('default', ['jshint']);
};
16 LICENSE
@@ -0,0 +1,16 @@
Copyright (c) 2011-2015 Andris Reinman

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
@@ -0,0 +1,31 @@
# Pangalink.net

## Eeldused

* [Node.js](http://nodejs.org/), vähemalt versioon 5.0.0
* [MongoDB](http://www.mongodb.org/)
* GIT (koodi alla laadimiseks ja uuendamiseks, pole otseselt vajalik)

## Install

git clone git://github.com/andris9/Pangalink.net.git
cd Pangalink.net
npm install

## Konfiguratsioon

Muuda faili `config/default.js` väärtusi või või lisa NODE_ENV väärtuse nimega täiendav fail. Lisakonfiguratsioonifailid täiendavad, mitte ei asenda vaikimisi seadeid.

Näiteks kui tahad, et konfiguratsioon laetaks failidest *default.js* + *production.js*, käivita rakendus järgmiselt:

NODE_ENV=production node index.js

## Käivitamine

node index.json

Juhul kui veebiliides kasutab porti 80 või 443, pead käivitama rakenduse juurkasutaja kasutaja õigustes.

## Litsents

**MIT**
@@ -0,0 +1,141 @@
'use strict';

module.exports = {

log: {
// npm log level
level: 'silly',

// See Connect logger middleware help for http logger options
interface: 'tiny'
},

// Domain name to be used all around the page,
hostname: 'localhost:3480',

// Protocol to be used (if behind proxy might not autodetect correctly),
proto: '',

// Name of the service,
title: 'Pangalink.net',

// HTTP/S server configuration,
web: {

// Which port to listen (anything below 1000 requires root user. 80 is HTTP and 443 HTTPS,
port: 3480,

// If behind proxy, then the protocol the user sees is not what pangalink.net actually uses.,
// Pangalink.net might be using HTTP internally but user should only use HTTPS addresses,

// forceProtocol: 'https:',
forceProtocol: false,

// Always redirect to this domain, if something else was used. Optional, might be left blank,

// forceDomain: 'pangalink.net',
forceDomain: false,

// If you want to enable HTTPS (if you are not behind HTTPS proxy):,
// ssl: {,
// key: abspath_to_private_key,,
// cert: abspath_to_server_certificate,,
// ca: [optional_root_ca1_path, optional_root_ca2_path, ...],
// }
},

// Express session configuration,
session: {
secret: 'some_random_value',
ttl: 3600
},

// SMTP configuration,
mail: {
// by default the app tries to send mail directly to recipients MX server
smtp: false,
/*
// alternatively, configure SMTP relay to use
smtp: {
service: 'SendGrid',
auth: {
user: 'username',
pass: 'password'
},
debug: false
},
*/

defaults: {
// Sender address
from: {
name: 'Pangalink.net',
address: 'pangalink@localhost'
}
}
},

// Mongodb configuration,
mongodb: {
url: 'mongodb://127.0.0.1:27017/pangalink',

indexes: [{
collection: 'user',
data: {
username: 1
}
}, {
collection: 'user',
data: {
token: 1
}
}, {
collection: 'project',
data: {
owner: 1
}
}, {
collection: 'project',
data: {
authorized: 1
}
}, {
collection: 'project',
data: {
name: 1
}
}, {
collection: 'project',
data: {
uid: 1
}
}, {
collection: 'project',
data: {
created: -1
}
}, {
collection: 'payment',
data: {
date: -1
}
}, {
collection: 'payment',
data: {
project: 1
}
}]
},

// How many rows in one page (transaction logs etc.),
pagingCount: 30,

// How many before and after links are shown in the paging section,
pagingRange: 5,

// Default bit size for certificates,
keyBitsize: 2048,

// Google Analytics ID,
googleAnalyticsID: false
};
@@ -0,0 +1,9 @@
<div class="page-header">
<h1>Pangalink.net Info</h1>
</div>

Siin peaks olema info pangalinkide kohta.

Salajase võtme koos sertifikaadipäringuga saad genereerida [siit](/keys).

<%= title %> lähtekood on saadaval [Githubis](https://github.com/andris9/Pangalink.net).
@@ -0,0 +1,8 @@
<div class="page-header">
<h1>Pangalink.net kasutustingimused</h1>
</div>

Pangalink.net lehekülje kasutaja peab nõustuma järgmiste kasutamistingimustega (edaspidi "Tingimused").

1. Tingimused kehtivad kõigi isikute (edaspidi: Kasutaja) ja lehekülje Pangalink.net (edaspidi "Lehekülg") omaniku OÜ Kreata (edaspidi "Pangalink.net") vahel pakutavate teenuste (edaspidi "Teenused") tekkivate õigussuhete kohta. Tingimustele lisaks reguleerivad suhteid Eesti Vabariigis kehtivad õigusnormid ja väljakujunenud head tavad. Tingimused hakkavad kehtima alates Kasutaja poolsele Tingimuste aktsepteerimisest.
2. Kasutaja kinnitab Tingimuste aktsepteerimisel, et kasutab Lehekülge täielikult omal vastutusel. Teenuse kasutamine kurjade eesmärkide nimel on rangelt keelatud. Lehekülg on mõeldud kasutamiseks põhimõttel "nagu on" ning Pangalink.net ei vastuta vähimalgi määral teenuse kasutamisest tekkinud kahjude eest. Reeglite rikkumisele järgneb genereeritud sertifikaadi enneaegne tühistamine.
@@ -0,0 +1,73 @@
<div class="page-header">
<h1>UI automaattestid</h1>
</div>

Pangalink.net on automaattestisõbralik, kõik olulisemad väärtused on kirjeldatud `data-*` atribuutidega. UI automaatteste on võimalik läbi viia näiteks [Seleniumi](http://docs.seleniumhq.org/) abil.

### Makse staatus

Makse staatuse leiab järgmisest väljast:

document.querySelector("[data-current-state]").dataset.paymentState

Võimalikud väärtused:

* **preview** – ees on maksekorralduse või autentimise eelvaade
* **payed** – maksekorraldus on aktsepteeritud ("tagasi kaupmehe juurde" leht)
* **rejected** – maksekorraldus on tehnilistel põhjustel tagasi lükatud ("tagasi kaupmehe juurde" leht)
* **cancelled** – maksekorraldus on kasutaja poolt katkestatud ("tagasi kaupmehe juurde" leht)
* **authenticated** – kasutaja on autenditud ("tagasi kaupmehe juurde" leht)
* **error** – makse andmeid ei aktsepteeritud, vt. ka `data-payment-error` välja

Juhul kui makse andmeid ei aktsepteeritud, leiab veateate kirjelduse teksti kujul järgmisest väljast:

document.querySelector("[data-payment-error]").dataset.paymentError

Näiteks juhul kui makse on õnnestunud, peaks "tagasi kaupmehe juurde" lehel leiduma järgmine element:

document.querySelector("[data-current-state=payed]")

### Makse nupud

Kõik nupud on märgistatud atribudiga `data-button`, mille väärtused on järgnevad:

* **accept** – makse kinnitamise nupp (makse eelvaate lehel)
* **cancel** – makse katkestamise nupp (makse eelvaate lehel)
* **reject** – makse tagasilükkamise nupp (makse eelvaate lehel)
* **return** – makse tagasilükkamise nupp ("tagasi kaupmehe juurde" leht)
* **auth** – kasutaja autentimise nupp (autentimisvormi lehel)

NB! Kuna HTML elemendid võivad olla erinevad (nii &lt;A&gt; kui ka &lt;button&gt;), siis selektoris ei tohiks elemendi tüüpi määrata ja kasutada vaid `data-button` atribuuti. Näiteks makse aktsepteerimiseks võib teha nii:

document.querySelector("[data-button=accept]").click()

### Makse väljad

Osadel juhtudel on võimalik muuta makse sooritaja nime ja kontonumbrit, need väljad leiab `data-input` atribuudi abil:

* **sender-name** maksja nimi (makse eelvaate lehel)
* **sender-account** maksja konto number (makse eelvaate lehel)
* **auth-user** kasutaja kokkuleppeline identifikaator (autentmisvormi lehel)
* **auth-user-name** kasutaja nimi (autentmisvormi lehel)
* **auth-user-id** kasutaja isikukood (autentmisvormi lehel)
* **auth-country** isikukoodi riik (autentmisvormi lehel)
* **auth-other** muu info kasutaja kohta (autentmisvormi lehel)
* **auth-token** autentimisvahend (autentmisvormi lehel)

Näide:

document.querySelector("[data-input=sender-name]").value = "Foo Bar"

### Sisend- ja väljundandmed

Kõik POST sisendparameetrid leiab makse eelvaate lehel `data-in-key` atribuutide abil, kus `data-in-key` väärtuseks on POST parameetri võti ning samas elemendis asuv `data-in-value` sisaldab selle parameetri väärtust.

Kõik väljundparameetrid leiab "tagasi kaupmehe juurde" lehelt `data-out-key` ja `data-out-value` atribuutide abil.

Näiteks `VK_MSG` väärtuse sisendamete hulgast leiab makse eelvaate lehel järgmise päringuga:

document.querySelector("[data-in-key=VK_MSG]").dataset.inValue

Sarnaselt leiab "tagasi kaupmehe juurde" lehelt väljuvate andmete väärtusi:

document.querySelector("[data-out-key=VK_MSG]").dataset.outValue
@@ -0,0 +1,32 @@
'use strict';

// This is the main file. Here we set globals as well

let config = require('config');
let log = require('npmlog');

log.level = config.log.level;

// Handle error conditions
process.on('SIGTERM', () => {
log.warn('PROCESS', 'Exited on SIGTERM');
process.exit(0);
});

process.on('SIGINT', () => {
log.warn('PROCESS', 'Exited on SIGINT');
process.exit(0);
});

process.on('uncaughtException', err => {
log.error('UNCAUGHT', err.stack);
});

process.on('uncaughtException', err => {
log.error('UNCAUGHT', err.stack);
process.exit(1);
});

// Start the server
log.info('WORKER', 'Starting worker ' + process.pid);
require('./server');
@@ -0,0 +1,15 @@
{
"free": {
"title": "Tasuta konto",
"description": "Tasuta konto on täisfunktsionaalne, kuid kasutajale võidakse kuvada reklaame",
"label": "warning",
"price": "0.00 €"
},

"pro": {
"title": "PRO-pakett",
"description": "PRO-pakett on reklaamivaba ning sobib professionaalseks kasutuseks",
"label": "success",
"price": "59 € aastas (ilma km.)"
}
}

0 comments on commit 7c96cc8

Please sign in to comment.
You can’t perform that action at this time.