Skip to content

Commit

Permalink
Add support of allow free url config option with correspond modificat…
Browse files Browse the repository at this point in the history
…ions
  • Loading branch information
jackycute committed Dec 16, 2016
1 parent 4b7b902 commit 5bb3de2
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 2 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ Environment variables (will overwrite other server configs)
| HMD_URL_ADDPORT | `true` or `false` | set to add port on callback url (port 80 or 443 won't applied) (only applied when domain is set) |
| HMD_USECDN | `true` or `false` | set to use CDN resources or not (default is `true`) |
| HMD_ALLOW_ANONMYOUS | `true` or `false` | set to allow anonmyous usage (default is `true`) |
| HMD_ALLOW_FREEURL | `true` or `false` | set to allow new note by accessing not exist note url |
| HMD_FACEBOOK_CLIENTID | no example | Facebook API client id |
| HMD_FACEBOOK_CLIENTSECRET | no example | Facebook API client secret |
| HMD_TWITTER_CONSUMERKEY | no example | Twitter API consumer key |
Expand Down Expand Up @@ -155,6 +156,7 @@ Server settings `config.json`
| urladdport | `true` or `false` | set to add port on callback url (port 80 or 443 won't applied) (only applied when domain is set) |
| usecdn | `true` or `false` | set to use CDN resources or not (default is `true`) |
| allowanonmyous | `true` or `false` | set to allow anonmyous usage (default is `true`) |
| allowfreeurl | `true` or `false` | set to allow new note by accessing not exist note url |
| db | `{ "dialect": "sqlite", "storage": "./db.hackmd.sqlite" }` | set the db configs, [see more here](http://sequelize.readthedocs.org/en/latest/api/sequelize/) |
| sslkeypath | `./cert/client.key` | ssl key path (only need when you set usessl) |
| sslcertpath | `./cert/hackmd_io.crt` | ssl cert path (only need when you set usessl) |
Expand Down
3 changes: 3 additions & 0 deletions lib/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ var usecdn = process.env.HMD_USECDN ? (process.env.HMD_USECDN === 'true') : ((ty

var allowanonmyous = process.env.HMD_ALLOW_ANONMYOUS ? (process.env.HMD_ALLOW_ANONMYOUS === 'true') : ((typeof config.allowanonmyous === 'boolean') ? config.allowanonmyous : true);

var allowfreeurl = process.env.HMD_ALLOW_FREEURL ? (process.env.HMD_ALLOW_FREEURL === 'true') : !!config.allowfreeurl;

// db
var db = config.db || {
dialect: 'sqlite',
Expand Down Expand Up @@ -128,6 +130,7 @@ module.exports = {
serverurl: getserverurl(),
usecdn: usecdn,
allowanonmyous: allowanonmyous,
allowfreeurl: allowfreeurl,
db: db,
sslkeypath: path.join(cwd, sslkeypath),
sslcertpath: path.join(cwd, sslcertpath),
Expand Down
11 changes: 9 additions & 2 deletions lib/response.js
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,8 @@ function newNote(req, res, next) {
return response.errorForbidden(res);
}
models.Note.create({
ownerId: owner
ownerId: owner,
alias: req.alias ? req.alias : null
}).then(function (note) {
return res.redirect(config.serverurl + "/" + LZString.compressToBase64(note.id));
}).catch(function (err) {
Expand All @@ -133,6 +134,7 @@ function checkViewPermission(req, note) {
}

function findNote(req, res, callback, include) {
var noteId = req.params.noteId;
var id = req.params.noteId || req.params.shortid;
models.Note.parseNoteId(id, function (err, _id) {
models.Note.findOne({
Expand All @@ -142,7 +144,12 @@ function findNote(req, res, callback, include) {
include: include || null
}).then(function (note) {
if (!note) {
return response.errorNotFound(res);
if (config.allowfreeurl && noteId) {
req.alias = noteId;
return newNote(req, res);
} else {
return response.errorNotFound(res);
}
}
if (!checkViewPermission(req, note)) {
return response.errorForbidden(res);
Expand Down

4 comments on commit 5bb3de2

@almereyda
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Beautiful. Can it be expected to go live on hackmd.io?

@jackycute
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think so, at least not now, or everyone would rush or abuse on this.
This might go live when we have user space #166

@zeigerpuppy
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have just installed hackmd from the docker instructions. Is it possible to enable freeurls in the docker version?

@SISheogorath
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes @zeigerpuppy, simply set HMD_ALLOW_FREEURL to true.

Please sign in to comment.