Hey Liebe Leute,
Ich programmiere derzeit an einem Windows Daemon in Java, und dazue halt noch ein kleines Gameservermodul für Tekbase. (Unterstützt nur Windows)
Denn FTP-Server habe ich schon programmiert, fehlt nur noch denn Daemon und halt das Modul hätte weitere Leute Interesse an so einem Modul?
Das ganze wird via Java programmiert.
Bild von FTP-Server:
Liebe Grüsse Steekarlkani/Stefan.

Windows Daemon
- Steve Wonderz
- Thread is marked as Resolved.
Aktuell führen wir noch einige Anpassungen durch, das Forum wurde jedoch bereits live geschaltet.
-
-
Wenns kostenlos ist, würde mich schon intressieren
-
Quote from Tobichenx4
Wenns kostenlos ist, würde mich schon intressieren
Ja ich werde es kostenlos machen.Liebe Grüsse.
-
Hier noch ein paar Codeschnippsel von der Form und Ftp-Server (als Base wird Apache Mina genutzt):
Form.java:Java
Display Morepackage Forms; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.ScrollPaneConstants; import javax.swing.text.DefaultCaret; import Networking.FTPServer; public class Form { public int width; public int height; public Thread serverthread; public JFrame frame; public JPanel panel; public FlowLayout layout; public JTextArea logbox; public JScrollPane scrollpane; public JLabel ftpserverlabel; public JLabel ftpserverportlabel; public JLabel ftpserverusernamelabel; public JLabel ftpserverpasswordlabel; public JLabel ftpserverpfadlabel; public JTextField ftpserverusernamebox; public JTextField ftpserverportbox; public JTextField ftpserverbox; public JTextField ftpserverpasswordbox; public JTextField ftpserverpfadbox; public JButton start; public JButton stop; public JButton clear; public FTPServer ftpserver; public Form(int width, int height) throws IOException { this.width = width; this.height = height; this.Run(true); } public boolean Run(boolean bool) throws IOException { if(bool == true) { frame = new JFrame("[Ftp-Server-Debug]"); panel = new JPanel(); layout = new FlowLayout(); layout.setAlignment(0); ftpserverlabel = new JLabel("FTP-Serverip:"); ftpserverbox = new JTextField(); ftpserverbox.setPreferredSize(new Dimension(770, 25)); ftpserverportlabel = new JLabel("FTP-Serverport:"); ftpserverportbox = new JTextField(); ftpserverportbox.setPreferredSize(new Dimension(770, 25)); ftpserverusernamelabel = new JLabel("FTP-Username:"); ftpserverusernamebox = new JTextField(); ftpserverusernamebox.setPreferredSize(new Dimension(770, 25)); ftpserverpasswordlabel = new JLabel("FTP-Password:"); ftpserverpasswordbox = new JTextField(); ftpserverpasswordbox.setPreferredSize(new Dimension(770, 25)); ftpserverpfadlabel = new JLabel("FTP-Homeverzeichnis:"); ftpserverpfadbox = new JTextField(); ftpserverpfadbox.setPreferredSize(new Dimension(770, 25)); logbox = new JTextArea(); logbox.setPreferredSize(new Dimension(752, 200)); scrollpane = new JScrollPane(logbox); scrollpane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); scrollpane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); scrollpane.setViewportView(logbox); start = new JButton("FTP-Server starten"); stop = new JButton("FTP-Server stoppen"); clear = new JButton("Clear Form"); start.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent arg0) { if(ftpserverbox.getText().isEmpty() || ftpserverportbox.getText().isEmpty() || ftpserverusernamebox.getText().isEmpty() || ftpserverpasswordbox.getText().isEmpty() || ftpserverpfadbox.getText().isEmpty()) { JOptionPane.showMessageDialog(null, "Felder nicht ausgefühlt.", "Bitte alle Felder ausfühlen...", JOptionPane.OK_CANCEL_OPTION); } else { ftpserver = new FTPServer(ftpserverbox.getText(), ftpserverusernamebox.getText(), ftpserverpasswordbox.getText(), Integer.parseInt(ftpserverportbox.getText()), ftpserverpfadbox.getText(), logbox); serverthread = new Thread(ftpserver); serverthread.start(); } } }); stop.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent arg0) { try { ftpserver.destroyServer(); }catch(Exception ex){ ex.printStackTrace(); } } }); clear.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { logbox.setText(""); } }); panel.add(ftpserverlabel); panel.add(ftpserverbox); panel.add(ftpserverportlabel); panel.add(ftpserverportbox); panel.add(ftpserverusernamelabel); panel.add(ftpserverusernamebox); panel.add(ftpserverpasswordlabel); panel.add(ftpserverpasswordbox); panel.add(ftpserverpfadlabel); panel.add(ftpserverpfadbox); panel.add(scrollpane); panel.add(start); panel.add(stop); panel.add(clear); frame.getContentPane().add(panel); frame.setSize(new Dimension(width, height)); frame.setVisible(bool); panel.setLayout(layout); return true; } else { return false; } } }
FtpServer.java:Quote
<blockquote class="ipsBlockquote">Java
Display Morepackage Networking; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.swing.JTextArea; import org.apache.ftpserver.FtpServer; import org.apache.ftpserver.FtpServerFactory; import org.apache.ftpserver.ftplet.Authority; import org.apache.ftpserver.ftplet.FtpException; import org.apache.ftpserver.ftplet.FtpReply; import org.apache.ftpserver.ftplet.FtpRequest; import org.apache.ftpserver.ftplet.FtpSession; import org.apache.ftpserver.ftplet.Ftplet; import org.apache.ftpserver.ftplet.FtpletContext; import org.apache.ftpserver.ftplet.FtpletResult; import org.apache.ftpserver.ftplet.UserManager; import org.apache.ftpserver.listener.ListenerFactory; import org.apache.ftpserver.usermanager.PasswordEncryptor; import org.apache.ftpserver.usermanager.PropertiesUserManagerFactory; import org.apache.ftpserver.usermanager.impl.BaseUser; import org.apache.ftpserver.usermanager.impl.WritePermission; public class FTPServer implements Runnable { public String ip; public String username; public String password; public String pfad; public int port; public FtpServer server; public JTextArea logbox; public FTPServer(String ip, String username, String password, int port, String pfad, JTextArea logbox) { this.ip = ip; this.username = username; this.password = password; this.port = port; this.pfad = pfad; this.logbox = logbox; } @Override public void run() { try { FtpServerFactory factory = new FtpServerFactory(); ListenerFactory lfactory = new ListenerFactory(); lfactory.setPort(port); factory.addListener("default", lfactory.createListener()); PropertiesUserManagerFactory userManagerFactory = new PropertiesUserManagerFactory(); BaseUser user = new BaseUser(); user.setName(username); user.setPassword(password); user.setHomeDirectory(pfad); logbox.append("[FtpServer] > Erstelle Benutzer mit Username " + username+" und Password " + password+" mit dem Home-Verzeichnis " + pfad + ""); List<Authority> authorities = new ArrayList<Authority>(); authorities.add(new WritePermission()); user.setAuthorities(authorities); UserManager um = userManagerFactory.createUserManager(); um.save(user); factory.setUserManager(um); Map<String, Ftplet> m = new HashMap<String, Ftplet>(); m.put("miaFtplet", new Ftplet() { @Override public void init(FtpletContext arg0) throws FtpException { logbox.append("[FtpServer] > Herzlich Willkommen auf einem Privaten FTP-Server"); } @Override public FtpletResult afterCommand(FtpSession arg0,FtpRequest arg1, FtpReply arg2) throws FtpException, IOException { logbox.append("\n[FtpServer] > Command wurde ausgeführt " + arg1.getCommand()+" von der IP "+arg0.getClientAddress()+""); return null; } @Override public FtpletResult beforeCommand(FtpSession arg0, FtpRequest arg1) throws FtpException, IOException { logbox.append("\n[FtpServer] > Command wird ausgeführt " + arg1.getCommand()+" von der IP "+arg0.getClientAddress()+""); return null; } @Override public void destroy() { logbox.append("\n[FtpServer] > Verbindung getrennt"); } @Override public FtpletResult onConnect(FtpSession arg0) throws FtpException, IOException { logbox.append("\n[FtpServer] > Neue Verbindung mit IP "+arg0.getClientAddress()+" verbindet"); return null; } @Override public FtpletResult onDisconnect(FtpSession arg0) throws FtpException, IOException { logbox.append("\n[FtpServer] > Verbindung mit IP "+arg0.getClientAddress()+" getrennt"); return null; } }); factory.setFtplets(m); server = factory.createServer(); server.start(); logbox.append("\n[FtpServer] > Starte Ftp-Server auf IP " + ip +" und Port " + port+""); }catch(Exception ex){ ex.printStackTrace(); } } public FtpServer getServer() { return server; } public void destroyServer() { try { server.stop(); logbox.append("\n[FtpServer] > Der Ftp-Server wurde beendet"); }catch(Exception ex){ ex.printStackTrace(); } } }
</blockquote> -
Connection von PHP zum Daemon steht > Java zu PHP kommt noch
Kleines Bild vom Grundgerüst (Einbinden von Daemon ganz easy gemacht): -
sieht sehr gut aus? Funktioniert das Programm auch richtig (nicht so buggy wie der Teklab Daemon) - kann ich mit dem dann einen Gemauerter auf Windows verwalten? (Starten, Stoppen, Über das Webinterface Daten hochladen,.. usw....) ??
Wann wird die Software ungefähr rauskommen?
Noch eine Frage: Kann man den Daemon auch mit dem Teklab Rootserver Webinterface verbinden??
Vielen Dank für deine Antwort.. -
kann man den auch als "Dienst" laufen lassen normalerweise sollte ja nicht permanent ein administrator am server eingeloggt sein
Grüße, -
Das Projekt wurde gestoppt da das Rootserver Modul ein paar Macken hat muss Christian nochmals wegen der Daemon Verbindung schauen desweiteren habe ich nichts mehr von ihm gehört,
Keine Ahnung ob man Java Programme als Dienst laufen kann habs noch nie gebraucht deswegen würde ich sagen lieber so benutzen wie es jetzt ist.
Liebe Grüße Stefan
-
und macht CF sein Programm noch weiter oder hat er es auch gestoppt??
-
Quote from xXSpacyXx
und macht CF sein Programm noch weiter oder hat er es auch gestoppt??
Das weiß ich doch nicht
-
Guckt euch mal den neuen Preis für den Windows Daemon an.
Entweder kommt da jetzt der Ultimative Daemon oder er will einfach nur Kunden abschrecken den mit zu bestellen.
Für mich nicht ganz nachvollziehbar das bei diesem Thema absolut garnichts passiert und dann dort so ein Preis steht.
Wenn Christian wenigstens mal Stellung nehmen würde wie es nun weiter geht.
MfG Boedy
-
Quote from Boedy
Guckt euch mal den neuen Preis für den Windows Daemon an.
Entweder kommt da jetzt der Ultimative Daemon oder er will einfach nur Kunden abschrecken den mit zu bestellen.
Für mich nicht ganz nachvollziehbar das bei diesem Thema absolut garnichts passiert und dann dort so ein Preis steht.
Wenn Christian wenigstens mal Stellung nehmen würde wie es nun weiter geht.
MfG Boedy
Da bist du nicht der einzigste
Liebe Grüsse
-
Der kostet 149€ gewerblich war doch schon immer so oO
-
würde es begrüßen wenn CF sich mal äußert da wir momentan intensiv an einer Windows Server Landschaft arbeiten.
Grüße -
Quote from GenXRoad
Der kostet 149€ gewerblich war doch schon immer so oO
Nö, ich bezahle für den wesentlichen weniger. Nimm die erste Zahl wech und selbst dann noch weniger.
Und der Preis war auch noch vor einem Monat aktuell. Seit wieviel Tagen der neue Preis da steht kann ich jetzt nicht genau sagen. Aufgefallen ist es mir erst wieder als das neue Design online ging.
Aber da habe ich mir nur gedacht. Ok, wenn die Kunden wüssten die den mieten.
MfG Boedy
-
aber ich kappiere nicht ganz wie will der Daemon z.B. einen Arma 3 Server starten? Das ist ja ein Programm, aber wie "klickt" der die einzlnen Buttons in dem Programm, damit der Server dann zum Schluss auch richtig mit allen Einstellungen gestartet wird? (Also nicht Konsole) sonder Programme ?? Wie soll das gehen??
-
Quote from xXSpacyXx
aber ich kappiere nicht ganz wie will der Daemon z.B. einen Arma 3 Server starten? Das ist ja ein Programm, aber wie "klickt" der die einzlnen Buttons in dem Programm, damit der Server dann zum Schluss auch richtig mit allen Einstellungen gestartet wird? (Also nicht Konsole) sonder Programme ?? Wie soll das gehen??
Der Daemon ist ein reiner Socketserver der auf Verbindungen von Webinterface wartet und dann via Bash / CMD denn Server startet.
-
toll und wie starte ich dann zum Beispiel ein Programm über das Webinterface? Wo dann Knöpfe gedrückt werden müssen???....
-
über den startcript paramenter dort tragst du alles ein was das jeweilige programm braucht bzw. musst du dir dann halt ein batch file dafür bauen
ganz ohne Scripting kenntnisse geht es nun mal nicht -
das scripting ist nicht mein Problem
glaub mir ich kenne mich mit scripten sehr sehr gut aus .... aber ich wollte einfach nur fragen wie das Programm gehandelt wird..