openseedbox / openseedbox Goto Github PK
View Code? Open in Web Editor NEWOpenSeedbox - Open Source Multi-User Bittorrent Web UI
Home Page: http://www.openseedbox.com
License: GNU General Public License v3.0
OpenSeedbox - Open Source Multi-User Bittorrent Web UI
Home Page: http://www.openseedbox.com
License: GNU General Public License v3.0
Current implementation of https backend communication is not fully Java7 compatible.
The resolution is easy as Using a custom truststore in java as well as the default one.
One would need a good HostnameVerifier
too!
Thankfully it's reproducible with Play! 1.4.4 only, it doesn't affect version 1.3.4!
Caused by: java.security.cert.CertificateException: No subject alternative names present
~ _ _
~ _ __ | | __ _ _ _| |
~ | '_ \| |/ _' | || |_|
~ | __/|_|\____|\__ (_)
~ |_| |__/
~
~ play! 1.4.4, https://www.playframework.com
~
~ Ctrl+C to stop
~
~ using java version "1.7.0_71"
$ $JAVA_HOME/bin/java -version
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
E. g.
11:17:37,705 ERROR ~ Error executing job
java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.net.ConnectException: General SSLEngine problem
at play.libs.ws.WSAsync$WSAsyncRequest.get(WSAsync.java:252)
at com.openseedbox.backend.node.NodeBackend.list(NodeBackend.java:242)
at com.openseedbox.backend.node.NodeBackend.listTorrents(NodeBackend.java:226)
at com.openseedbox.jobs.NodePollerJob$NodePollerWorker.doGenericJob(NodePollerJob.java:33)
at com.openseedbox.jobs.GenericJob.runJob(GenericJob.java:21)
at com.openseedbox.jobs.LoggedJob.runJob(LoggedJob.java:18)
at com.openseedbox.jobs.GenericJob.doJobWithResult(GenericJob.java:15)
at play.jobs.Job.call(Job.java:214)
at play.jobs.Job$1.call(Job.java:119)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.util.concurrent.ExecutionException: java.net.ConnectException: General SSLEngine problem
at com.ning.http.client.providers.netty.future.NettyResponseFuture.abort(NettyResponseFuture.java:231)
at com.ning.http.client.providers.netty.request.NettyConnectListener.onFutureFailure(NettyConnectListener.java:137)
at com.ning.http.client.providers.netty.request.NettyConnectListener.access$200(NettyConnectListener.java:37)
at com.ning.http.client.providers.netty.request.NettyConnectListener$1.operationComplete(NettyConnectListener.java:104)
at org.jboss.netty.channel.DefaultChannelFuture.notifyListener(DefaultChannelFuture.java:409)
at org.jboss.netty.channel.DefaultChannelFuture.notifyListeners(DefaultChannelFuture.java:395)
at org.jboss.netty.channel.DefaultChannelFuture.setFailure(DefaultChannelFuture.java:362)
at org.jboss.netty.handler.ssl.SslHandler.setHandshakeFailure(SslHandler.java:1461)
at org.jboss.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1315)
at org.jboss.netty.handler.ssl.SslHandler.decode(SslHandler.java:852)
at org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:425)
at org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:310)
at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268)
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255)
at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:108)
at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:337)
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89)
at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
... 3 more
Caused by: java.net.ConnectException: General SSLEngine problem
at com.ning.http.client.providers.netty.request.NettyConnectListener.onFutureFailure(NettyConnectListener.java:133)
... 25 more
Caused by: javax.net.ssl.SSLHandshakeException: General SSLEngine problem
at sun.security.ssl.Handshaker.checkThrown(Handshaker.java:1300)
at sun.security.ssl.SSLEngineImpl.checkTaskThrown(SSLEngineImpl.java:513)
at sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:790)
at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:758)
at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624)
at org.jboss.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1219)
... 18 more
Caused by: javax.net.ssl.SSLHandshakeException: General SSLEngine problem
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1683)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:278)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:270)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1439)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:209)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:878)
at sun.security.ssl.Handshaker$1.run(Handshaker.java:818)
at sun.security.ssl.Handshaker$1.run(Handshaker.java:816)
at java.security.AccessController.doPrivileged(Native Method)
at sun.security.ssl.Handshaker$DelegatedTask.run(Handshaker.java:1237)
at org.jboss.netty.handler.ssl.SslHandler.runDelegatedTasks(SslHandler.java:1393)
at org.jboss.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1256)
... 18 more
Caused by: java.security.cert.CertificateException: No subject alternative names present
at sun.security.util.HostnameChecker.matchIP(HostnameChecker.java:142)
at sun.security.util.HostnameChecker.match(HostnameChecker.java:91)
at sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:347)
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:255)
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:138)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1426)
... 26 more
Hi,
I'm getting the following error when I'm starting the backend:
The file /app/com/openseedbox/backend/transmission/TransmissionBackend.java could not be compiled. Error raised is : The method encodeBase64String(byte[]) is undefined for the type Base64
play.exceptions.CompilationException: The method encodeBase64String(byte[]) is undefined for the type Base64
at play.classloading.ApplicationCompiler$2.acceptResult(ApplicationCompiler.java:246)
at org.eclipse.jdt.internal.compiler.Compiler.handleInternalException(Compiler.java:676)
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:520)
at play.classloading.ApplicationCompiler.compile(ApplicationCompiler.java:282)
at play.classloading.ApplicationClassloader.getAllClasses(ApplicationClassloader.java:426)
at play.Play.preCompile(Play.java:600)
at play.Play.init(Play.java:304)
at play.server.Server.main(Server.java:162)
Are you able to help?
Since the last update of the Docker images mentioned in the readme 10 days ago they can´t be used anymore.
Both container images openseedbox/client as well as openseedbox/server will start but the Nginx in each case only delivers a 502 bad gateway message.
Reason: missing Siena modules
As you can see in the build details of the client and server:
WARNING:
These dependencies are missing, your application may not work properly (use --verbose for details),
~
~ play->siena 2.0.7
as well as the Docker logs:
09:40:35,929 INFO ~ Precompiling ...
09:40:37,766 ERROR ~
@73okj3kaa
Cannot start in PROD mode with errors
Compilation error (In /app/com/openseedbox/models/ModelBase.java around line 14)
The file /app/com/openseedbox/models/ModelBase.java could not be compiled. Error raised is : EnhancedModel cannot be resolved to a type
play.exceptions.CompilationException: EnhancedModel cannot be resolved to a type
at play.classloading.ApplicationCompiler$2.acceptResult(ApplicationCompiler.java:246)
at org.eclipse.jdt.internal.compiler.Compiler.handleInternalException(Compiler.java:676)
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:520)
at play.classloading.ApplicationCompiler.compile(ApplicationCompiler.java:282)
at play.classloading.ApplicationClassloader.getAllClasses(ApplicationClassloader.java:426)
at play.Play.preCompile(Play.java:603)
at play.Play.init(Play.java:307)
at play.server.Server.main(Server.java:162)
Older Play! Framework binaries can´t retrieve modules from the playContributedModules repository because the URL changed some time ago from http://www.playframework.org/modules to https://www.playframework.com/modules
Even if you correct the URL it still won´t work - also described here.
To work around the issue the Siena module needs to be downloaded and unzipped into the Play! Framework module directory.
As soon as it´s in place, dependencies will be resolved successfully again without any further changes.
Second bug in one of the container images (client to be more specific) is the one fixed with 02a23b9.
@xabolcs is it something only @erindru can fix or do you also have permission to push to the Docker Hub repo?
is there any way to hide the port and use it as domainname.com/auth ?
Aside of #49 I´ve also had an issue with the scheme setting. Currently you can only define http or https which will be used for both address:port values, the one for communication as well as downloads.
In my setup I actually would like to use http for node communication - no need for https because the docker network takes care of it - and https for downloads.
As I rewrite http to https via proxy for public access it´s not an issue, just wanted to address this as it could be useful for others too.
Hi erindru,
just curious to know if you are still working on this and if you've been using it on production environments?
disclaimer: I haven't tried it yet...
Thank you!
transmission config file on one of my node, got reset to default. I noticed my torrents got seeded over hundreds of GB and when I checked, the config files restored to default.
Is there any permanent way to change the config? rather than edit settings.json ?
I have a torrent downloaded and i can see it in the complete folder but when i choose download from the front end it downloads an empty file.
Where to from here?
Error: Backend base path '/media/openseedbox' isnt writable!
where this folder will be created iam not able to understsand plz help me to solve this issue
According to the README.md there are two values regarding email notification in case of an error:
openseedbox.errors.mailto - an email address. Errors will get sent here.
openseedbox.errors.mailfrom - the From address in the error emails
As there is no SMTP configured at all I doubt that it will do anything.
Older versions of the application.conf contain settings like this:
-%prod.mail.smtp.host=smtp.openseedbox.com
-%[email protected]
-%prod.mail.smtp.pass=pass
-%prod.mail.smtp.channel=ssl
-mail.debug=true
-%prod.mail.debug=false
If I stop the backend container and take a look at the node
table in the database it won´t set down
to true or report backendRunning
as false.
So from my understanding even if we have proper SMTP settings it still won´t send out emails in the current implementation.
Can you refer me somewhere on how to use api?
And, does billing working?
Some magnet link cant be added, but torrent url can.
But somehow, many torrent cant be added even via magnet or torrent url.
This is log for frontend
http://slexy.org/view/s20DntAe6E
when i try create a new account i get this information
"400. That’s an error.
OpenID auth request contains an unregistered domain: http://myserver:9000/auth/authenticate"
when i try with myopenid
"Error
Cannot verify your OpenID "
because of that, i cant enter on application
Ever tried to run the frontend against anything else than MySQL/MariaDB?
Since PostgreSQL doesn´t allow tables called 'user' I had to change the table name in the Users.java file to 'users'.
At the first start all tables and columns were created. During the login the new 'users' table got filled the same way than in MySQL but the login doesn´t work.
I end up again at the login button but there isn´t any error message at all.
I don't have plans to use more than a single server for this and I wonder if this will be supported too?
I guess it kinda is but since the frontend "requires" nginx too it would be a mess to use two nginx setups on a single box.
Memcached usually isn´t enabled by default. If you enable it you will notice, that in case you add OR remove a group it will have an effect only after you´ve logged out and logged in again.
Otherwise the new group won´t show up or the other why around it will still show up even if it was already removed.
Doesn´t happen while Memcached is disabled.
Hey even though i removed a file after downloading it doesn't delete that file from the source path . (gone from the panel but still available in the directory ) and in admin panel clean up directory it shows as Cleanup Job 0 s 0 false ,
How to fix this?
Tried to run clean up job manually by clicking run but same results
Your project perfectly. But I tried to install it and I get a problem with the backend 9001, when I tried http://127.0.0.1:9001 does not work
I will happy if you help me
Im trying to add a new backend. Can I use Nginx 1.9.0? Or should I stick with 1.2.6?
It is TL;DR
Move and slice up the content into /documentation/wiki
directory and the Wiki.
I want set some value in transmission config such as seed ratio, peer, speed lmit, etc
I would like to run OpenseedBox on my Raspberry Pi 3, as I'm sure many others will too; however the binaries do not run on ARM chips. If possible, can the binaries be compiled for ARM so that it can be run on devices such as the Raspberry Pi?
I think I am near to success installing openseedbox.
I got the error stated in the title above even I have set the backend base path to another path.
#Application
application.name=openseedbox-server
application.mode=dev
%prod.application.mode=prod
application.secret=olHnjc5fXP8EIUAiEdi5EyrnjFbf9mZxxKBqnNdcpJhfGFHP514T4P44gYrBgwGV
date.format=yyyy-MM-dd
#Http settings
http.port=9001
jpda.port=8001
# application.session.cookie=PLAY
# application.session.maxAge=1h
# application.session.secure=false
#Openseedbox Backend Settings
backend.base.api_key=vm1
backend.base.path=/root/openseedbox
backend.base.device=/dev/mapper/openseedbox
backend.base.path.encrypted=true
backend.class=com.openseedbox.backend.transmission.TransmissionBackend
backend.download.scheme=http
backend.download.xsendfile=true
backend.download.xsendfile.path=/protected
backend.download.xsendfile.header=X-Accel-Redirect
backend.download.ngxzip=true
backend.download.ngxzip.path=/protected
backend.download.ngxzip.manifestonly=true
backend.blocklist.url=http://list.iblocklist.com/?list=bt_level1&fileformat=p2p&archiveformat=gz
openseedbox.assets.prefix=https://s3.amazonaws.com/cdn.openseedbox.com
#Transmission backend settings
backend.transmission.port=1234
# Test settings
%test.application.mode=dev
%test.db.url=jdbc:h2:mem:play;MODE=MYSQL;LOCK_MODE=0
%test.jpa.ddl=create
%test.mail.smtp=mock
db=mem
in the backed tutorial.
I am believed that the correct command is
mv /src/openseedbox-server/conf/application.conf.default /src/openseedbox-server/conf/application.conf
If NodeHealthCheckJob marks a node as down, but fails to mark it as up again when it comes back up, the NodePollerJob will skip polling the node forever and no progress will be updated for any of the torrents running on the node.
Suggested fix: Make NodePollerJob make batch asynchronous requests to avoid blocking all the nodes if one is down, thereby allowing the check for n.isReachable() to be removed.
Im trying to stop bot from crawling my domain. Now, googlebot found my seedbox domain and appear on search engine.
I made robots.txt on /src/openseedbox/app/views/
but when I access domain.com/robots.txt
it cannot be found
Hi,
I´m running a setup since you´ve provided a solution to use Google´s OAuth without any issues so far since March or April this year.
Today I made a dist upgrade from my Ubuntu 15.04 installation to 15.10 and noticed afterwards that all of a sudden the 'Free Space' and 'Used Space' counter was telling me values like -9 and 0 at the nodes.html and somehow also the status column in the MySQL DB wasn´t updated anymore. The latter I think already a longer time, since it should contain the output of 'uptime' and the mentioned time there was not really near to when I did the upgrade.
After I´ve removed the only node I use so far and added it again the status column says only NULL now.
Anyway I figured out that the LVM device mapper showed up a with a different name after the upgrade. Fixed it in the application.conf from the backend and that issue was solved.
But still no change regarding the table column and the stats.html details which express how much space is used and available throughout all (active) nodes.
I simply set up another default installation (no firewall, no reverse proxy, all version requirements were met) with a brand new Ubuntu 16.04. instance and also a 14.04.3 instance and the result was always the same.
Everything works and shows proper information, only the stats.html says still 0 bytes for both 'Total space available across all nodes' and 'Total space used across all nodes' and also the MySQL DB still shows NULL at the node.status column.
Do you have any clue what could be the reason?
Thanks and keep up the good work.
Docker Hub and Docker Cloud are unable to build the multiarch Resin Base Images.
Looks like Travis CI has support for cross compiling those images.
Hi,
In the current version of the Docker images it looks like there is an issue with the ZIP functionality. A few seconds after I´ve clicked the ZIP link/button I end in a browser tab saying:
Not found
download.<ID> action not found
Happens with three different hosts with Centos, Ubuntu and Photon OS and also with different browsers and client operating systems so it must be an issue with the Docker container itself.
The container were created like described in your project.
Ideally we should comment out lines 70 to 80 in the app/views/main.html file:
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-32647401-2']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
unless someone really wants to use it.
Or at least substitute the GA account of Erin :)
Within the last days I split up the involved services and only run one per container. Meanwhile I have one for MySQL, one for the frontend, one for the backend, one Nginx (serves both - frontend and backend) and one for gathering logs.
So far everythings works, except one thing: I can´t download completed files using the web GUI.
The Nginx config of course still points to a local folder which doesn´t exist in my new Nginx container.
What needs to be done in order to achieve my goal? Working with proxy_pass I guess but had no luck yet.
Quick´n´dirty solution would be to simply RO mount the complete folder locally in the Nginx container but would be nice to get it done the right way.
Any suggestions are much appreciated.
default value is openseedbox.assets.prefix=https://s3.amazonaws.com/cdn.openseedbox.com
Can I know what it does actually?
I am using nginx config provided by you. But cant make it work.
I tried to googled and modified the config but at the end, it lead me to another problems and errors.
Can anyone share nginx config that actually work?
Yep, on port 9000 it works. But not on reverse proxy
Im using nginx 1.6.2 on Ubuntu 14/04
Got everything working but download files are empty configured reverse proxy in nginx still the same any help will be appreciated?
hey if a user add a download file that already in server it shows an error instead how to make the user download that file from the server because its already downloaded.
is it something to do with this file
https://github.com/erindru/openseedbox/blob/master/app/com/openseedbox/models/UserTorrent.java
When I try to download a file, I got File not found error in my browser
And when I try zip download, I got only text displayed in my browser.
here is my nginx config
events {
worker_connections 4096; ## Default: 1024
}
http {
server_tokens off;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
server {
listen 80;
server_name be1.domain.com;
gzip on;
gzip_types "text/plain" "text/xml" "application/json";
gzip_comp_level 9;
merge_slashes off;
proxy_method GET;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto http;
proxy_pass http://localhost:9001;
more_clear_headers "Set-Cookie" "X-Archive-Files";
}
location /protected {
internal;
alias /media/openseedbox/complete;
}
}
}
Hope you able to help because Im too close to install the script completely :)
I got this error in homepage for a user. Any way to remove or disable this message?
Got this error
~ _ __ | | __ _ _ _| |
~ | '_ \| |/ _' | || |_|
~ | __/|_|\____|\__ (_)
~ |_| |__/
~
~ play! 1.2.5, http://www.playframework.org
~ framework ID is prod
~
~ OK, /src/openseedbox-server is started
~ output is redirected to /src/openseedbox-server/logs/system.out
~ pid is 10834
~
root@seed-be-1:/src/openseedbox-server# Exception in thread "main" play.exceptions.UnexpectedException: SienaPlugin : not using GAE requires at least a db=xxx config
at play.modules.siena.SienaPlugin.dbSqlType(SienaPlugin.java:58)
at play.modules.siena.SienaPlugin.dbType(SienaPlugin.java:88)
at play.modules.siena.GoogleSqlDBPlugin.onLoad(GoogleSqlDBPlugin.java:63)
at play.plugins.PluginCollection.initializePlugin(PluginCollection.java:251)
at play.plugins.PluginCollection.loadPlugins(PluginCollection.java:185)
at play.Play.init(Play.java:294)
at play.server.Server.main(Server.java:159)
Your project is perfect. But I am trying to install it and I get this error:
Execution exception
NullPointerException occured : null
In /app/controllers/Client.java (around line 42)
38: @before(unless={"newUser"})
39: public static void checkPlan() {
40: User u = getCurrentUser();
41: //check that a plan has been purchased
42: if (u.getPlan() == null) {
43: newUser();
44: }
45: }
46:
47: @before(unless={"login","auth"})
48: public static void before() {
and the server not working.
I will happy if you help me out of there. Please make a video or something like that to help everyone install your application.
Big thanks.
I want to use api for managing the backend. Like adding, delete, status, of a torrent.. But I dont know what query need to be sent, can you list me all the api query available for backend?
Aside of #41 there is also an annoying bug which I came across.
As soon as you´ve downloaded one file using the web GUI the user session seems to get terminated and you have to log in again.
Attached you will find two screenshots. First one is the file I want to download. After I did it and click on the download link again the login button shows up at the very end.
If you don´t click the download button but let´s say another category after you´ve downloaded a file you simply get redirected directly to the login page.
I´ve tried different users, Google client IDs, container hosts and so on. It´s always the same behaviour.
Would be nice to get this fixed.
Today I´ve pulled the changes made a couple of days ago. I like the idea of having an internal communication between the UI and backend nodes and a public one only for user interaction like download.
After I´ve edited the settings of an existing node and left the value of the field Host / IP Address : Port For Downloads
empty I couldn´t download anything anymore because my browser pointed to a file location like
http://download/821735ee68379684c0aad5c1e30c07677429b928?name=debian-8.7.1-arm64-netinst.iso
The field description seems not quite correct at the moment:
optional, leave empty if it's the same
Currently it doesn´t really matter if it´s the same or not. In any case it will lead to an empty value regarding the ip address/hostname/FQDN which of course ends in a download URL which doesn´t exist.
For some torrents, using lowercase hash does not work.
Example:
http://node2.example.com/download/95292748a6ed6621a0f572d186c1c793db27af8d?name=xxxxxx%5Bxxxxx%5D%2Fxxxxx.nfo
but using uppercase hash is working
http://node2.example.com/download/95292748A6ED6621A0F572D186C1C793DB27AF8D?name=xxxxxx%5Bxxxxx%5D%2Fxxxxx.nfo
Is the any way so I can turn all hash into uppercase?
When trying to add a torrent it gives this error "Error
Your dedicated node is down. Please try again later." but in the node status it shows as "up"
any help?
I have 2 backend curerntly. I see that openseedbox filling my 1st backend and not touching 2nd backend. Is this how it is working? Or it should add the torrent randomly to both backend?
When downloading from softwares like idm users cant resume the downloads, they have to re download it if cancelled any solutions to this?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.