Commit e69b3d60 authored by renjie's avatar renjie

生成3proxy配置文件

parent 1df4e61c
...@@ -29,6 +29,7 @@ public interface IpResourceRepository extends MongoRepository<IpResource, String ...@@ -29,6 +29,7 @@ public interface IpResourceRepository extends MongoRepository<IpResource, String
List<IpResource> findByIsDeletedAndShopIdInAndRegionCnLike(boolean isDeleted, List<String> shopIds, String regionCn); List<IpResource> findByIsDeletedAndShopIdInAndRegionCnLike(boolean isDeleted, List<String> shopIds, String regionCn);
List<IpResource> findByOwnerInAndSpecialLine(List<String> owners, boolean specialLine); List<IpResource> findByOwnerInAndSpecialLine(List<String> owners, boolean specialLine);
List<IpResource> findBySpecialLine(boolean specialLine);
List<IpResource> findByRegionIn(List<String> regions); List<IpResource> findByRegionIn(List<String> regions);
......
...@@ -9,6 +9,7 @@ import com.edgec.browserbackend.browser.repository.IpResourceRepository; ...@@ -9,6 +9,7 @@ import com.edgec.browserbackend.browser.repository.IpResourceRepository;
import com.edgec.browserbackend.browser.repository.SpecialLineRepository; import com.edgec.browserbackend.browser.repository.SpecialLineRepository;
import com.edgec.browserbackend.browser.service.Impl.IpResourceServiceImpl; import com.edgec.browserbackend.browser.service.Impl.IpResourceServiceImpl;
import com.edgec.browserbackend.common.commons.utils.RemoteShellExecutor; import com.edgec.browserbackend.common.commons.utils.RemoteShellExecutor;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -37,34 +38,36 @@ public class Set3proxyTask { ...@@ -37,34 +38,36 @@ public class Set3proxyTask {
@Autowired @Autowired
private SpecialLineRepository specialLineRepository; private SpecialLineRepository specialLineRepository;
@Scheduled(cron = "0 0/10 * * * ?") @Scheduled(cron = "0 0/1 * * * ?")
public void set3proxy() { public void set3proxy() {
long validTime = Instant.now().minusSeconds(43200).toEpochMilli(); long validTime = Instant.now().minusSeconds(43200).toEpochMilli();
List<String> tokenUsernames = mongoOAuth2AccessTokenRepository.findByCreatedAtGreaterThan(validTime).stream().map(MongoOAuth2AccessToken::getUsername).collect(Collectors.toList()); // List<String> tokenUsernames = mongoOAuth2AccessTokenRepository.findByCreatedAtGreaterThan(validTime).stream().map(MongoOAuth2AccessToken::getUsername).collect(Collectors.toList());
List<String> accountParents = accountRepository.findByNameIn(tokenUsernames).stream().map(x -> x.getParent() == null ? x.getName() : x.getParent()).distinct().collect(Collectors.toList()); // List<String> accountParents = accountRepository.findByNameIn(tokenUsernames).stream().map(x -> x.getParent() == null ? x.getName() : x.getParent()).distinct().collect(Collectors.toList());
List<IpResource> ipResources = ipResourceRepository.findByOwnerInAndSpecialLine(accountParents, true); List<IpResource> ipResources = ipResourceRepository.findBySpecialLine(true);
File file = new File("3proxy.cfg"); File file = new File("3proxy.cfg");
SpecialLine specialLine = specialLineRepository.findAll().get(0); SpecialLine specialLine = specialLineRepository.findAll().get(0);
StringBuilder stringBuilder = new StringBuilder();
try { try {
file.delete(); file.delete();
file.createNewFile(); file.createNewFile();
FileWriter fileWriter =new FileWriter(file, true); FileWriter fileWriter =new FileWriter(file, true);
BufferedWriter bw = new BufferedWriter(fileWriter); BufferedWriter bw = new BufferedWriter(fileWriter);
stringBuilder.append("daemon\nlog /var/log/3proxy.log D\nrotate 30\n"); bw.write("daemon\nlog /var/log/3proxy.log D\nrotate 30\n");
bw.write("config /root/3proxy.cfg\n");
bw.write("monitor /root/3proxy.cfg\n");
for (IpResource ipResource : ipResources) { for (IpResource ipResource : ipResources) {
stringBuilder.append("users \"" + ipResource.getProxyUsername() + ":CL:" + ipResource.getProxyPassword() + "\"\n"); if (StringUtils.isNotBlank(ipResource.getAddr()))
bw.write("users \"" + ipResource.getProxyUsername() + ":CL:" + ipResource.getProxyPassword() + "\"\n");
} }
stringBuilder.append("\nauth strong\n"); bw.write("\nauth strong\n");
for (IpResource ipResource : ipResources) { for (IpResource ipResource : ipResources) {
stringBuilder.append("allow " + ipResource.getProxyUsername() + "\n"); if (StringUtils.isNotBlank(ipResource.getAddr())) {
stringBuilder.append("parent 1000 " + specialLine.getProxyProtocol().get(0) + " " + ipResource.getAddr() + " " + ipResource.getPort().get(1) + " fangguanlianbrowser " + ipResource.getPassword() + "\n"); bw.write("allow " + ipResource.getProxyUsername() + "\n");
bw.write("parent 1000 " + specialLine.getProxyProtocol().get(0) + " " + ipResource.getAddr() + " " + ipResource.getPort().get(1) + " fangguanlianbrowser " + ipResource.getPassword() + "\n");
}
} }
stringBuilder.append("\nallow none\nproxy -p20004\nsocks-p20005"); bw.write("\nallow none\nproxy -p20004\nsocks-p20005");
bw.write(stringBuilder.toString());
bw.flush(); bw.flush();
bw.close(); bw.close();
log.info("成功写入文件"); log.info("成功写入文件");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment