Porównaj commity

...

61 Commity

Autor SHA1 Wiadomość Data
Piero Toffanin 72202a93b5
Merge pull request #217 from sean-kenops/master
Update Dockerfile.gpu
2024-05-17 13:39:33 -04:00
sean-kenops 1b35d8b282 Update Dockerfile.gpu
Fix issue DensifyPointCloud: error while loading shared libraries: libcuda.so.1: cannot open shared object file: No such file or directory
2024-05-16 20:38:10 -10:00
Piero Toffanin baa619a9fd Bump version 2024-05-15 00:33:57 -04:00
Piero Toffanin 726e02ced5
Merge pull request #215 from Ooglely/master
Fix arguments to setTimeout for reattempting moving temp task files
2024-04-03 16:54:08 -04:00
Alen 2b5bfa048a
Fix arguments to setTimeout and add logging 2024-04-03 14:51:05 -05:00
Piero Toffanin 5cf8e65e56
Merge pull request #208 from smathermather/add_building
add howto on image builds
2023-11-08 22:40:27 -05:00
Stephen Mather 16149f08bd
show how to run 2023-11-08 21:16:08 -05:00
Stephen Mather d7acd252a2
addhowto on image builds 2023-11-08 21:12:28 -05:00
Piero Toffanin 5c1b4e38ae
Merge pull request #206 from pierotofy/cuteuc
Include cutline and DEM euclidean distance outputs
2023-11-01 12:45:27 -04:00
Piero Toffanin 7e24103991 Include cutline and DEM euclidean distance outputs 2023-11-01 12:44:48 -04:00
Piero Toffanin 26d10d990c
Merge pull request #204 from pierotofy/license
Fix License notices
2023-06-08 12:06:26 +02:00
Piero Toffanin ecf6b8f099 Fix License notices 2023-06-08 11:58:50 +02:00
Piero Toffanin 5e560fb635 Tabs --> spaces 2023-04-04 13:01:19 -04:00
Piero Toffanin 4c2868e228
Merge pull request #201 from terraframe/upstream-rebase
Support for not specifying an S3 object ACL.
2023-04-04 13:00:29 -04:00
Richard Rowlands c2c56e8500 Support for not specifying an S3 object ACL. 2023-04-03 16:49:08 -06:00
Piero Toffanin eb2ea1bbab
Merge pull request #198 from pierotofy/gltf
Add glTF test files
2023-01-28 11:29:02 -05:00
Piero Toffanin b9157e4b96 Add gltf test files 2023-01-28 11:28:28 -05:00
Piero Toffanin 5d4703a5b5
Merge pull request #197 from pierotofy/gltf
Automatically set --gltf when processing with WebODM
2023-01-28 11:21:56 -05:00
Piero Toffanin ca61927ef1 Automatically set --gltf when processing with WebODM 2023-01-28 11:18:05 -05:00
Stephen Mather d3ee44dfee
Merge pull request #196 from nghi01/apptainer-precaution
Add precautions when building apptainer container
2023-01-26 18:52:53 -05:00
nghi01 cb46646df3 Add precautions when building apptainer container 2023-01-26 15:22:52 -05:00
Stephen Mather 2a7c73c8cd
Merge pull request #195 from smathermather/add-singularity-directions
add directions on building apptainer.def
2023-01-25 14:48:44 -05:00
Stephen Mather c111b85f85
I am my own autocorrupt 2023-01-25 14:45:58 -05:00
Stephen Mather 15ea35c5f9
add directions on building apptainer.def 2023-01-25 13:35:31 -05:00
Piero Toffanin 2230593804
Merge pull request #194 from smathermather/fix-readme-order
Fix confusing order to readme on rootless
2023-01-25 13:25:29 -05:00
Stephen Mather e8fb0dfe3e
Fix confusing order to readme on rootless 2023-01-25 13:22:41 -05:00
Piero Toffanin 512079b3c9
Merge pull request #193 from smathermather/apptainer-tweaks
Rename singularity.def to apptainer.def
2023-01-25 13:16:32 -05:00
Stephen Mather 21c5697f97
Merge pull request #1 from smathermather/master
update apptainer.def and header for rootless in readme
2023-01-25 13:05:44 -05:00
Stephen Mather dd57c2c084
add header for rootless 2023-01-25 13:03:33 -05:00
Stephen Mather 64189e747e
Update name for apptainer.def 2023-01-25 13:01:42 -05:00
Stephen Mather 0f5a1f56cc
Rename singularity.def to apptainer.def 2023-01-25 13:00:30 -05:00
Piero Toffanin b8ce0b8ec7 Accept srt 2023-01-24 11:09:38 -05:00
Piero Toffanin c440dae0b2 Accept video files 2023-01-24 10:36:10 -05:00
Piero Toffanin f5b9866697
Merge pull request #191 from nghi01/apptainer-def
Create initial Apptainer definition file and some initial instructions on running Apptainer on HPC
2023-01-23 10:09:00 -05:00
nghi01 7e7c49f6a4 Revise unclear instruction 2023-01-23 08:07:05 -05:00
nghi01 798303a20b Update README 2023-01-23 08:04:42 -05:00
nghi01 78f05c3c24 Update initial README for apptainer instructions
We will use Apptainer to run NodeODM on HPC, together with ClusteRODM. This is the initial push for documentation.
2023-01-23 08:01:56 -05:00
nghi01 3a4a957874 Create definition file ported from Dockerfile 2023-01-23 07:45:53 -05:00
Piero Toffanin fc5c87e9c8 Fix alignment file search 2023-01-13 10:52:57 -05:00
Piero Toffanin 5d6c1e787b Update glob 2023-01-12 15:03:27 -05:00
Piero Toffanin dd38d81126 Update glob 2023-01-12 14:59:40 -05:00
Piero Toffanin f213090a6a Bump version 2023-01-12 14:51:39 -05:00
Piero Toffanin 6b4006abf7
Merge pull request #189 from pierotofy/codem
Support for alignment files
2022-12-14 02:01:36 -05:00
Piero Toffanin 0d1910247b Support for alignment files 2022-12-12 15:49:25 -05:00
Piero Toffanin d9c5fb4b8c
CUDA note 2022-08-11 00:19:21 -04:00
Piero Toffanin 8355086b30
Merge pull request #184 from Timic3/bugfix/import-logger
Import missing logger library
2022-08-02 10:15:18 -04:00
Timotej 790fe97570 Import missing logger library 2022-08-02 11:42:07 +02:00
Piero Toffanin eb0a38fd44 Add --s3_ignore_ssl, better S3 error messages 2022-08-01 11:27:27 -04:00
Piero Toffanin 98e30377e3 Revert "Optional S3 ACL setting"
This reverts commit 6676506c3f.
2022-07-04 12:51:33 -04:00
Piero Toffanin 6676506c3f Optional S3 ACL setting 2022-07-04 12:45:32 -04:00
Piero Toffanin 1ba438e80f Add test 3D tiles folders 2022-05-30 14:13:33 -04:00
Piero Toffanin 0178c664ca
Add 3D tiles folder 2022-05-26 14:23:55 -04:00
Piero Toffanin 6acd3726f6
Merge pull request #179 from mhupfauer/master
Update Dockerfile.gpu and provide docker-compose.yml examples
2022-02-17 22:19:56 -05:00
mhupfauer cd932e132a
Update config-default.json 2022-02-17 23:13:30 +01:00
mhupfauer c0b0818f56
Create docker-compose.cpu.yml 2022-02-17 23:12:56 +01:00
mhupfauer 8d85b8cbdd
Create README.md 2022-02-17 23:11:43 +01:00
mhupfauer 788a7e9715
Create config-default.json 2022-02-17 23:06:17 +01:00
mhupfauer 1e67a15a76
Create docker-compose.gpu.yml 2022-02-17 23:03:33 +01:00
mhupfauer d2be364842
Update Dockerfile.gpu
Updated nodejs version
2022-02-17 22:41:03 +01:00
Piero Toffanin b076c6f1b7
Merge pull request #178 from theoway/adding_no_retry_mechanism
`noRetry` in response body to stop retrying in case of non-recoverable failure.
2022-02-04 09:58:45 -05:00
Umang Kalra 36782b415d Adding noRetry in response to indicate a non-recoverable scenario 2022-02-03 22:36:05 +05:30
36 zmienionych plików z 318 dodań i 139 usunięć

Wyświetl plik

@ -34,7 +34,7 @@ jobs:
if: startsWith(github.ref, 'refs/tags/')
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: dist\*.zip
file: dist/*.zip
file_glob: true
tag: ${{ github.ref }}
overwrite: true

Wyświetl plik

@ -5,12 +5,13 @@ EXPOSE 3000
USER root
RUN apt-get update && apt-get install -y curl gpg-agent ca-certificates
RUN curl --silent --location https://deb.nodesource.com/setup_10.x | bash -
RUN curl --silent --location https://deb.nodesource.com/setup_14.x | bash -
RUN apt-get install -y nodejs unzip p7zip-full && npm install -g nodemon && \
ln -s /code/SuperBuild/install/bin/untwine /usr/bin/untwine && \
ln -s /code/SuperBuild/install/bin/entwine /usr/bin/entwine && \
ln -s /code/SuperBuild/install/bin/pdal /usr/bin/pdal
RUN echo /usr/local/cuda-11.2/compat >> /etc/ld.so.conf.d/989_cuda-11.conf && ldconfig
RUN mkdir /var/www
@ -18,7 +19,7 @@ WORKDIR "/var/www"
RUN useradd -m -d "/home/odm" -s /bin/bash odm
COPY --chown=odm:odm . /var/www
RUN npm install && mkdir -p tmp
RUN npm install --production && mkdir -p tmp
RUN chown -R odm:odm /var/www
RUN chown -R odm:odm /code

Wyświetl plik

@ -30,6 +30,69 @@ Linux users can connect to 127.0.0.1.
If the computer running NodeODM is using an old or 32bit CPU, you need to compile OpenDroneMap from sources and setup NodeODM natively. You cannot use docker. Docker images work with CPUs with 64-bit extensions, MMX, SSE, SSE2, SSE3 and SSSE3 instruction set support or higher. Seeing a `Illegal instruction` error while processing images is an indication that your CPU is too old.
### Building docker image
If you need to test changes as a docker image, you can build easily as follows:
```
docker build -t my_nodeodm_image --no-cache .
```
Run as follows:
```
docker run -p 3000:3000 my_nodeodm_image &
```
### Testing alternative ODM images through NodeODM
In order to test alternative ODM docker images in NodeODM, you will need to change the dockerfile for NodeODM to point to your ODM image. For example if you built an alternate ODM image as follows:
```
docker build -t my_odm_image --no-cache .
```
Then modify NodeODM's Dockerfile to point to the new ODM image in the first line:
```
FROM my_odm_image
MAINTAINER Piero Toffanin <pt@masseranolabs.com>
EXPOSE 3000
...
```
Then build the NodeODM image:
```
docker build -t my_nodeodm_image --no-cache .
```
Finally run as follows:
```
docker run -p 3000:3000 my_nodeodm_image &
```
### Running rootless
* A rootless alternative to Docker is using [Apptainer](https://apptainer.org/). In order to run NodeODM together with ClusterODM in rootless environments, for example on HPC, we need a rootless alternative to Docker, and that's where Apptainer comes in to play. From the Linux command line, cd into the NodeODM folder and run the following commands to host a NodeODM instance:
```
apptainer build --sandbox node/ apptainer.def
apptainer run --writable node/
```
`apptainer build --sandbox` requires you to have root permission to build this apptainer container. Make sure someone with root permission build this for you. You will need to build this apptainer container if you want to work with ClusterODM on the HPC. Check for [ClusterODM](https://github.com/OpenDroneMap/ClusterODM) for more instructions on using SLURM to set it up.
An apptainer.def file can be built directly from the dockerfile as needed:
```
pip3 install spython
spython recipe Dockerfile &> apptainer.def
```
## API Docs
See the [API documentation page](https://github.com/OpenDroneMap/NodeODM/blob/master/docs/index.adoc).
@ -50,15 +113,15 @@ docker run -p 3000:3000 -v /mnt/external_hd:/var/www/data opendronemap/nodeodm
This can be also used to access the computation results directly from the file system.
## Using GPU Acceleration for SIFT processing inside NodeODM
Since the ODM has support [of GPU acceleration](https://github.com/OpenDroneMap/ODM#gpu-acceleration) you can use another base image for GPU processing.
## Using GPU Acceleration
Since ODM has support [for GPU acceleration](https://github.com/OpenDroneMap/ODM#gpu-acceleration) you can use another base image for GPU processing. You need to use the `opendronemap/nodeodm:gpu` docker image instead of `opendronemap/nodeodm` and you need to pass the `--gpus all` flag:
To use this feature, you need to use the `opendronemap/nodeodm:gpu` docker image instead of `opendronemap/nodeodm` and you need to pass the `--gpus all` flag:
```bash
docker run -p 3000:3000 --gpus all opendronemap/nodeodm:gpu
```
The SIFT GPU implementation is OpenCL-based, so should work with most graphics card (not just NVIDIA).
The GPU implementation is CUDA-based, so will only work on NVIDIA GPUs.
If you have an NVIDIA card, you can test that docker is recognizing the GPU by running:

34
apptainer.def 100644
Wyświetl plik

@ -0,0 +1,34 @@
Bootstrap: docker
From: opendronemap/odm:latest
Stage: spython-base
%files
. /var/www
%labels
MAINTAINER Piero Toffanin <pt@masseranolabs.com>
%post
# EXPOSE 3000
su - root # USER root
apt-get update && apt-get install -y curl gpg-agent
curl --silent --location https://deb.nodesource.com/setup_14.x | bash -
apt-get install -y nodejs unzip p7zip-full && npm install -g nodemon && \
ln -s /code/SuperBuild/install/bin/untwine /usr/bin/untwine && \
ln -s /code/SuperBuild/install/bin/entwine /usr/bin/entwine && \
ln -s /code/SuperBuild/install/bin/pdal /usr/bin/pdal
mkdir -p /var/www
mkdir -p "/var/www"
cd "/var/www"
npm install --production && mkdir -p tmp
%runscript
cd "/var/www"
exec /usr/bin/node /var/www/index.js "$@"
%startscript
cd "/var/www"
exec /usr/bin/node /var/www/index.js "$@"

Wyświetl plik

@ -1,9 +1,9 @@
/*
Node-OpenDroneMap Node.js App and REST API to access OpenDroneMap.
Copyright (C) 2016 Node-OpenDroneMap Contributors
NodeODM App and REST API to access ODM.
Copyright (C) 2016 NodeODM Contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
@ -12,7 +12,7 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
'use strict';
@ -30,13 +30,13 @@ Usage: node index.js [options]
Options:
--config <path> Path to the configuration file (default: config-default.json)
-p, --port <number> Port to bind the server to, or "auto" to automatically find an available port (default: 3000)
--odm_path <path> Path to OpenDroneMap's code (default: /code)
--odm_path <path> Path to ODM's code (default: /code)
--log_level <logLevel> Set log level verbosity (default: info)
-d, --daemon Set process to run as a deamon
-q, --parallel_queue_processing <number> Number of simultaneous processing tasks (default: 2)
--cleanup_tasks_after <number> Number of minutes that elapse before deleting finished and canceled tasks (default: 2880)
--cleanup_uploads_after <number> Number of minutes that elapse before deleting unfinished uploads. Set this value to the maximum time you expect a dataset to be uploaded. (default: 2880)
--test Enable test mode. In test mode, no commands are sent to OpenDroneMap. This can be useful during development or testing (default: false)
--test Enable test mode. In test mode, no commands are sent to ODM. This can be useful during development or testing (default: false)
--test_skip_orthophotos If test mode is enabled, skip orthophoto results when generating assets. (default: false)
--test_skip_dems If test mode is enabled, skip dems results when generating assets. (default: false)
--test_drop_uploads If test mode is enabled, drop /task/new/upload requests with 50% probability. (default: false)
@ -52,8 +52,9 @@ Options:
--s3_force_path_style Whether to force path style URLs for S3 objects. (default: false)
--s3_secret_key <secret> S3 secret key, required if --s3_endpoint is set. (default: none)
--s3_signature_version <version> S3 signature version. (default: 4)
--s3_acl <canned-acl> S3 object acl. (default: public-read)
--s3_acl <canned-acl> S3 object acl. Can specify "none" to skip. (default: public-read)
--s3_upload_everything Upload all task results to S3. (default: upload only all.zip archive)
--s3_ignore_ssl Whether to ignore SSL errors while connecting to S3. (default: false)
--max_concurrency <number> Place a cap on the max-concurrency option to use for each task. (default: no limit)
--max_runtime <number> Number of minutes (approximate) that a task is allowed to run before being forcibly canceled (timeout). (default: no limit)
Log Levels:
@ -68,7 +69,7 @@ const allOpts = ["slice","help","config","odm_path","log_level","port","p",
"test_skip_dems","test_drop_uploads","test_fail_tasks","test_seconds",
"powercycle","token","max_images","webhook","s3_endpoint","s3_bucket",
"s3_force_path_style","s3_access_key","s3_secret_key","s3_signature_version",
"s3_acl","s3_upload_everything","max_concurrency","max_runtime"];
"s3_acl","s3_upload_everything","s3_ignore_ssl","max_concurrency","max_runtime"];
// Support for "-" or "_" style params syntax
for (let k in argv){
@ -138,6 +139,7 @@ config.s3SecretKey = argv.s3_secret_key || fromConfigFile("s3SecretKey", process
config.s3SignatureVersion = argv.s3_signature_version || fromConfigFile("s3SignatureVersion", "4")
config.s3ACL = argv.s3_acl || fromConfigFile("s3_acl", "public-read")
config.s3UploadEverything = argv.s3_upload_everything || fromConfigFile("s3UploadEverything", false);
config.s3IgnoreSSL = argv.s3_ignore_ssl || fromConfigFile("s3IgnoreSSL", false);
config.maxConcurrency = parseInt(argv.max_concurrency || fromConfigFile("maxConcurrency", 0));
config.maxRuntime = parseInt(argv.max_runtime || fromConfigFile("maxRuntime", -1));

12
contrib/README.md 100644
Wyświetl plik

@ -0,0 +1,12 @@
# Run NodeODM thorugh docker-compose
To easily manage NodeODM with docker-compose take a look at these sample `docker-compose.yml` files
## Quickstart
Edit the `config-default.json` to match your required settings. Make sure you change the value for `token` to secure
your NodeODM instance if you plan on hosting the server publicly
## GPU acceleration
To utilize the GPU acceleration of NVIDA graphics cards run: `docker-compose -f docker-compose.gpu.yml up -d`
## CPU only operation
If there is no GPU acceleration available you can run NodeODM on CPU only with: `docker-compose -f docker-compose.cpu.yml up -d`

Wyświetl plik

@ -0,0 +1,22 @@
{
"instance": "YOUR-INSTANCENAME",
"odm_path": "/code",
"logger": {
"level": "error",
"maxFileSize": 104857600,
"maxFiles": 10,
"logDirectory": ""
},
"port": "3000",
"deamon": false,
"parallelQueueProcessing": 1,
"cleanupTasksAfter": 2880,
"test": false,
"testSkipOrthophotos": false,
"testSkipDems": false,
"token": "CHANGE-THIS-TOKEN-TO-YOUR-OWN-SECRET",
"authorizedIps": [],
"maxImages": ""
}

Wyświetl plik

@ -0,0 +1,9 @@
version: '3.8'
services:
node-odm:
image: opendronemap/nodeodm
ports:
- "3000:3000"
volumes:
- ./config-default.json:/var/www/config-default.json
restart: unless-stopped

Wyświetl plik

@ -0,0 +1,16 @@
version: '3.8'
services:
node-odm:
image: opendronemap/nodeodm:gpu
ports:
- "3000:3000"
volumes:
- ./config-default.json:/var/www/config-default.json
privileged: true
restart: unless-stopped
deploy:
resources:
reservations:
devices:
- driver: nvidia
capabilities: [gpu]

Wyświetl plik

@ -1,9 +1,9 @@
/*
Node-OpenDroneMap Node.js App and REST API to access OpenDroneMap.
Copyright (C) 2016 Node-OpenDroneMap Contributors
NodeODM App and REST API to access ODM.
Copyright (C) 2016 NodeODM Contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
@ -12,7 +12,7 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
"use strict";

Wyświetl plik

@ -8,7 +8,7 @@ REST API to access ODM
=== Version information
[%hardbreaks]
_Version_ : 2.1.4
_Version_ : 2.2.1
=== Contact information
@ -340,7 +340,7 @@ _optional_|Token required for authentication (when authentication is required).|
|*FormData*|*dateCreated* +
_optional_|An optional timestamp overriding the default creation date of the task.|integer|
|*FormData*|*images* +
_optional_|Images to process, plus optional files such as a GEO file (geo.txt), image groups file (image_groups.txt), GCP file (*.txt) or seed file (seed.zip). If included, the GCP file should have .txt extension. If included, the seed archive pre-polulates the task directory with its contents.|file|
_optional_|Images to process, plus optional files such as a GEO file (geo.txt), image groups file (image_groups.txt), GCP file (*.txt), seed file (seed.zip) or alignment files (align.las, align.laz, align.tif). If included, the GCP file should have .txt extension. If included, the seed archive pre-polulates the task directory with its contents.|file|
|*FormData*|*name* +
_optional_|An optional name to be associated with the task|string|
|*FormData*|*options* +
@ -503,7 +503,7 @@ _required_|UUID of the task|string|
|*Query*|*token* +
_optional_|Token required for authentication (when authentication is required).|string|
|*FormData*|*images* +
_required_|Images to process, plus optional files such as a GEO file (geo.txt), image groups file (image_groups.txt), GCP file (*.txt) or seed file (seed.zip). If included, the GCP file should have .txt extension. If included, the seed archive pre-polulates the task directory with its contents.|file|
_required_|Images to process, plus optional files such as a GEO file (geo.txt), image groups file (image_groups.txt), GCP file (*.txt), seed file (seed.zip) or alignment files (align.las, align.laz, align.tif). If included, the GCP file should have .txt extension. If included, the seed archive pre-polulates the task directory with its contents.|file|
|===

File diff suppressed because one or more lines are too long

Wyświetl plik

@ -1,10 +1,10 @@
#!/usr/bin/env python
'''
Node-OpenDroneMap Node.js App and REST API to access OpenDroneMap.
Copyright (C) 2016 Node-OpenDroneMap Contributors
NodeODM App and REST API to access ODM.
Copyright (C) 2016 NodeODM Contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
@ -13,7 +13,7 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
'''

Wyświetl plik

@ -1,9 +1,9 @@
/*
Node-OpenDroneMap Node.js App and REST API to access OpenDroneMap.
Copyright (C) 2016 Node-OpenDroneMap Contributors
NodeODM App and REST API to access ODM.
Copyright (C) 2016 NodeODM Contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
@ -12,7 +12,7 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
"use strict";
@ -142,7 +142,7 @@ app.post('/task/new/init', authCheck, taskNew.assignUUID, formDataParser, taskNe
* -
* name: images
* in: formData
* description: Images to process, plus optional files such as a GEO file (geo.txt), image groups file (image_groups.txt), GCP file (*.txt) or seed file (seed.zip). If included, the GCP file should have .txt extension. If included, the seed archive pre-polulates the task directory with its contents.
* description: Images to process, plus optional files such as a GEO file (geo.txt), image groups file (image_groups.txt), GCP file (*.txt), seed file (seed.zip) or alignment files (align.las, align.laz, align.tif). If included, the GCP file should have .txt extension. If included, the seed archive pre-polulates the task directory with its contents.
* required: true
* type: file
* -
@ -209,7 +209,7 @@ app.post('/task/new/commit/:uuid', authCheck, taskNew.getUUID, taskNew.handleCom
* -
* name: images
* in: formData
* description: Images to process, plus optional files such as a GEO file (geo.txt), image groups file (image_groups.txt), GCP file (*.txt) or seed file (seed.zip). If included, the GCP file should have .txt extension. If included, the seed archive pre-polulates the task directory with its contents.
* description: Images to process, plus optional files such as a GEO file (geo.txt), image groups file (image_groups.txt), GCP file (*.txt), seed file (seed.zip) or alignment files (align.las, align.laz, align.tif). If included, the GCP file should have .txt extension. If included, the seed archive pre-polulates the task directory with its contents.
* required: false
* type: file
* -

Wyświetl plik

@ -1,9 +1,9 @@
/*
Node-OpenDroneMap Node.js App and REST API to access OpenDroneMap.
Copyright (C) 2016 Node-OpenDroneMap Contributors
NodeODM App and REST API to access ODM.
Copyright (C) 2016 NodeODM Contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
@ -12,7 +12,7 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
"use strict";

Wyświetl plik

@ -1,9 +1,9 @@
/*
Node-OpenDroneMap Node.js App and REST API to access OpenDroneMap.
Copyright (C) 2016 Node-OpenDroneMap Contributors
NodeODM App and REST API to access ODM.
Copyright (C) 2016 NodeODM Contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
@ -12,7 +12,7 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
"use strict";

Wyświetl plik

@ -1,9 +1,9 @@
/*
Node-OpenDroneMap Node.js App and REST API to access OpenDroneMap.
Copyright (C) 2016 Node-OpenDroneMap Contributors
NodeODM App and REST API to access ODM.
Copyright (C) 2016 NodeODM Contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
@ -12,7 +12,7 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
"use strict";
@ -23,6 +23,7 @@ const glob = require('glob');
const path = require('path');
const logger = require('./logger');
const config = require('../config');
const https = require('https');
const si = require('systeminformation');
let s3 = null;
@ -34,8 +35,18 @@ module.exports = {
initialize: function(cb){
if (config.s3Endpoint && config.s3Bucket){
if (config.s3IgnoreSSL){
AWS.config.update({
httpOptions: {
agent: new https.Agent({
rejectUnauthorized: false
})
}
});
}
const spacesEndpoint = new AWS.Endpoint(config.s3Endpoint);
const s3Config = {
endpoint: spacesEndpoint,
signatureVersion: ('v' + config.s3SignatureVersion) || 'v4',
@ -62,7 +73,7 @@ module.exports = {
logger.info("Connected to S3");
cb();
}else{
cb(new Error("Cannot connect to S3. Check your S3 configuration: " + err.code));
cb(new Error(`Cannot connect to S3. Check your S3 configuration: ${err.message} (${err.code})`));
}
});
}else cb();
@ -107,15 +118,20 @@ module.exports = {
const filename = path.basename(file.dest);
progress[filename] = 0;
s3.upload({
let uploadCfg = {
Bucket: bucket,
Key: file.dest,
Body: fs.createReadStream(file.src),
ACL: config.s3ACL
}, {partSize, queueSize: concurrency}, err => {
Body: fs.createReadStream(file.src)
}
if (config.s3ACL != "none") {
uploadCfg.ACL = config.s3ACL;
}
s3.upload(uploadCfg, {partSize, queueSize: concurrency}, err => {
if (err){
logger.debug(err);
const msg = `Cannot upload file to S3: ${err.code}, retrying... ${file.retries}`;
const msg = `Cannot upload file to S3: ${err.message} (${err.code}), retrying... ${file.retries}`;
if (onOutput) onOutput(msg);
if (file.retries < MAX_RETRIES){
file.retries++;

Wyświetl plik

@ -1,9 +1,9 @@
/*
Node-OpenDroneMap Node.js App and REST API to access OpenDroneMap.
Copyright (C) 2016 Node-OpenDroneMap Contributors
NodeODM App and REST API to access ODM.
Copyright (C) 2016 NodeODM Contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
@ -12,7 +12,7 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
"use strict";
@ -50,6 +50,7 @@ module.exports = class Task{
this.options = options;
this.gcpFiles = [];
this.geoFiles = [];
this.alignFiles = [];
this.imageGroupsFiles = [];
this.output = [];
this.runningProcesses = [];
@ -88,11 +89,16 @@ module.exports = class Task{
this.imageGroupsFiles.push(file);
}else if (/\.txt$/gi.test(file)){
this.gcpFiles.push(file);
}else if (/^align\.(tif|laz|las)$/gi.test(file)){
this.alignFiles.push(file);
}
logger.debug(file);
});
logger.debug(`Found ${this.gcpFiles.length} GCP files (${this.gcpFiles.join(" ")}) for ${this.uuid}`);
logger.debug(`Found ${this.geoFiles.length} GEO files (${this.geoFiles.join(" ")}) for ${this.uuid}`);
logger.debug(`Found ${this.imageGroupsFiles.length} image groups files (${this.imageGroupsFiles.join(" ")}) for ${this.uuid}`);
logger.debug(`Found ${this.alignFiles.length} alignment files (${this.alignFiles.join(" ")}) for ${this.uuid}`);
cb(null);
}
});
@ -112,44 +118,32 @@ module.exports = class Task{
}
setPostProcessingOptsSteps(){
return [
cb => {
// If we need to post process results
// if pc-ept is supported (build entwine point cloud)
// we automatically add the pc-ept option to the task options by default
if (this.skipPostProcessing) cb();
else{
odmInfo.supportsOption("pc-ept", (err, supported) => {
if (err){
console.warn(`Cannot check for supported option pc-ept: ${err}`);
}else if (supported){
if (!this.options.find(opt => opt.name === "pc-ept")){
this.options.push({ name: 'pc-ept', value: true });
}
}
cb();
});
}
},
cb => {
const autoSet = (opt) => {
return cb => {
// If we need to post process results
// if cog is supported (build cloud optimized geotiffs)
// we automatically add the cog option to the task options by default
// if opt is supported
// we automatically add the opt to the task options by default
if (this.skipPostProcessing) cb();
else{
odmInfo.supportsOption("cog", (err, supported) => {
odmInfo.supportsOption(opt, (err, supported) => {
if (err){
console.warn(`Cannot check for supported option cog: ${err}`);
console.warn(`Cannot check for supported option ${opt}: ${err}`);
}else if (supported){
if (!this.options.find(opt => opt.name === "cog")){
this.options.push({ name: 'cog', value: true });
if (!this.options.find(o => o.name === opt)){
this.options.push({ name: opt, value: true });
}
}
cb();
});
}
}
};
return [
autoSet("pc-ept"),
autoSet("cog"),
autoSet("gltf")
];
}
@ -451,9 +445,12 @@ module.exports = class Task{
'odm_orthophoto/odm_orthophoto.png',
'odm_orthophoto/odm_orthophoto.mbtiles',
'odm_orthophoto/odm_orthophoto.kmz',
'odm_orthophoto/cutline.gpkg',
'odm_georeferencing', 'odm_texturing',
'odm_dem/dsm.tif', 'odm_dem/dtm.tif', 'dsm_tiles', 'dtm_tiles',
'odm_dem/dsm.euclideand.tif', 'odm_dem/dtm.euclideand.tif',
'orthophoto_tiles', 'potree_pointcloud', 'entwine_pointcloud',
'3d_tiles',
'images.json', 'cameras.json',
'task_output.txt', 'log.json',
'odm_report'];
@ -557,6 +554,9 @@ module.exports = class Task{
if (this.geoFiles.length > 0){
runnerOptions.geo = fs.realpathSync(path.join(this.getGcpFolderPath(), this.geoFiles[0]));
}
if (this.alignFiles.length > 0){
runnerOptions.align = fs.realpathSync(path.join(this.getGcpFolderPath(), this.alignFiles[0]));
}
if (this.imageGroupsFiles.length > 0){
runnerOptions["split-image-groups"] = fs.realpathSync(path.join(this.getGcpFolderPath(), this.imageGroupsFiles[0]));
}

Wyświetl plik

@ -1,9 +1,9 @@
/*
Node-OpenDroneMap Node.js App and REST API to access OpenDroneMap.
Copyright (C) 2016 Node-OpenDroneMap Contributors
NodeODM App and REST API to access ODM.
Copyright (C) 2016 NodeODM Contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
@ -12,7 +12,7 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
"use strict";

Wyświetl plik

@ -1,9 +1,9 @@
/*
Node-OpenDroneMap Node.js App and REST API to access OpenDroneMap.
Copyright (C) 2016 Node-OpenDroneMap Contributors
NodeODM App and REST API to access ODM.
Copyright (C) 2016 NodeODM Contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
@ -12,7 +12,7 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
const fs = require('fs');

Wyświetl plik

@ -1,9 +1,9 @@
/*
Node-OpenDroneMap Node.js App and REST API to access OpenDroneMap.
NodeODM App and REST API to access ODM.
Copyright (C) 2018 Node-OpenDroneMap Contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
@ -12,7 +12,7 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
const TokenAuthBase = require('./TokenAuthBase');

Wyświetl plik

@ -1,9 +1,9 @@
/*
Node-OpenDroneMap Node.js App and REST API to access OpenDroneMap.
NodeODM App and REST API to access ODM.
Copyright (C) 2018 Node-OpenDroneMap Contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
@ -12,7 +12,7 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
const TokenAuthBase = require('./TokenAuthBase');

Wyświetl plik

@ -1,9 +1,9 @@
/*
Node-OpenDroneMap Node.js App and REST API to access OpenDroneMap.
NodeODM App and REST API to access ODM.
Copyright (C) 2018 Node-OpenDroneMap Contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
@ -12,7 +12,7 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
let logger = require('../logger');

Wyświetl plik

@ -1,9 +1,9 @@
/*
Node-OpenDroneMap Node.js App and REST API to access OpenDroneMap.
NodeODM App and REST API to access ODM.
Copyright (C) 2018 Node-OpenDroneMap Contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
@ -12,7 +12,7 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
const TokenAuthBase = require("./TokenAuthBase");

Wyświetl plik

@ -1,9 +1,9 @@
/*
Node-OpenDroneMap Node.js App and REST API to access OpenDroneMap.
Copyright (C) 2016 Node-OpenDroneMap Contributors
NodeODM App and REST API to access ODM.
Copyright (C) 2016 NodeODM Contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
@ -12,7 +12,7 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
"use strict";

Wyświetl plik

@ -1,9 +1,9 @@
/*
Node-OpenDroneMap Node.js App and REST API to access OpenDroneMap.
Copyright (C) 2016 Node-OpenDroneMap Contributors
NodeODM App and REST API to access ODM.
Copyright (C) 2016 NodeODM Contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
@ -12,7 +12,7 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
"use strict";
@ -82,7 +82,7 @@ module.exports = {
// (num cores can be set programmatically, so can gcpFile, etc.)
if (["-h", "--project-path", "--cmvs-maxImages", "--time",
"--zip-results", "--pmvs-num-cores",
"--start-with", "--gcp", "--images", "--geo",
"--start-with", "--gcp", "--images", "--geo", "--align",
"--split-image-groups", "--copy-to",
"--rerun-all", "--rerun",
"--slam-config", "--video", "--version", "name"].indexOf(option) !== -1) continue;

Wyświetl plik

@ -1,9 +1,9 @@
/*
Node-OpenDroneMap Node.js App and REST API to access OpenDroneMap.
Copyright (C) 2016 Node-OpenDroneMap Contributors
NodeODM App and REST API to access ODM.
Copyright (C) 2016 NodeODM Contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
@ -12,7 +12,7 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
"use strict";

Wyświetl plik

@ -1,9 +1,9 @@
/*
Node-OpenDroneMap Node.js App and REST API to access OpenDroneMap.
Copyright (C) 2016 Node-OpenDroneMap Contributors
NodeODM App and REST API to access ODM.
Copyright (C) 2016 NodeODM Contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
@ -12,7 +12,7 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
"use strict";

Wyświetl plik

@ -1,9 +1,9 @@
/*
Node-OpenDroneMap Node.js App and REST API to access OpenDroneMap.
Copyright (C) 2016 Node-OpenDroneMap Contributors
NodeODM App and REST API to access ODM.
Copyright (C) 2016 NodeODM Contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
@ -12,7 +12,7 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
"use strict";

Wyświetl plik

@ -1,9 +1,9 @@
/*
Node-OpenDroneMap Node.js App and REST API to access OpenDroneMap.
Copyright (C) 2016 Node-OpenDroneMap Contributors
NodeODM App and REST API to access ODM.
Copyright (C) 2016 NodeODM Contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
@ -12,7 +12,7 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
@ -31,6 +31,7 @@ const odmInfo = require('./odmInfo');
const request = require('request');
const ziputils = require('./ziputils');
const statusCodes = require('./statusCodes');
const logger = require('./logger');
const download = function(uri, filename, callback) {
request.head(uri, function(err, res, body) {
@ -143,7 +144,7 @@ module.exports = {
if (req.files && req.files.length > 0){
res.json({success: true});
}else{
res.json({error: "Need at least 1 file."});
res.json({error: "Need at least 1 file.", noRetry: true});
}
},
@ -303,8 +304,11 @@ module.exports = {
else{
if (++retries < 20){
logger.warn(`Cannot move ${srcPath}, probably caused by antivirus software (please disable it or add an exception), retrying (${retries})...`);
setTimeout(2000, move);
}else cb(err);
setTimeout(move, 2000);
} else {
logger.error(`Unable to move temp images (${srcPath}) after 20 retries. Error: ${err}`);
cb(err);
}
}
});
}
@ -362,13 +366,13 @@ module.exports = {
},
cb => {
// Find any *.txt (GCP) file and move it to the data/<uuid>/gcp directory
// Find any *.txt (GCP) file or alignment file and move it to the data/<uuid>/gcp directory
// also remove any lingering zipurl.zip
fs.readdir(destImagesPath, (err, entries) => {
if (err) cb(err);
else {
async.eachSeries(entries, (entry, cb) => {
if (/\.txt$/gi.test(entry)) {
if (/\.txt$/gi.test(entry) || /^align\.(las|laz|tif)$/gi.test(entry)) {
mv(path.join(destImagesPath, entry), path.join(destGcpPath, entry), cb);
}else if (/\.zip$/gi.test(entry)){
fs.unlink(path.join(destImagesPath, entry), cb);

Wyświetl plik

@ -1,6 +1,6 @@
{
"name": "NodeODM",
"version": "2.2.0",
"version": "2.2.3",
"description": "REST API to access ODM",
"main": "index.js",
"scripts": {

Wyświetl plik

@ -1,9 +1,9 @@
/*
Node-OpenDroneMap Node.js App and REST API to access OpenDroneMap.
Copyright (C) 2016 Node-OpenDroneMap Contributors
NodeODM App and REST API to access ODM.
Copyright (C) 2016 NodeODM Contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
@ -12,7 +12,7 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
$(function() {
@ -119,7 +119,7 @@ $(function() {
url : "/task/new/upload/",
parallelUploads: 8, // http://blog.olamisan.com/max-parallel-http-connections-in-a-browser max parallel connections
uploadMultiple: false,
acceptedFiles: "image/*,text/*,application/*",
acceptedFiles: "image/*,text/*,application/*,.las,.laz,video/*,.srt",
autoProcessQueue: false,
createImageThumbnails: false,
previewTemplate: '<div style="display:none"></div>',

File diff suppressed because one or more lines are too long